diff --git a/iut-expo-starter/components/VilleCompopo.tsx b/iut-expo-starter/components/VilleCompopo.tsx
index 2963797d..4c0ebefe 100644
--- a/iut-expo-starter/components/VilleCompopo.tsx
+++ b/iut-expo-starter/components/VilleCompopo.tsx
@@ -1,5 +1,5 @@
import React from "react";
-import { View, StyleSheet, Text } from "react-native";
+import { View, StyleSheet, Text, Button, TouchableHighlight, Image } from "react-native";
import { City } from "../data/stub";
@@ -15,6 +15,9 @@ export function VilleCompopo(props: VilleProps){
{props.city.name}
{props.city.latitude} - {props.city.longitude}
+
+
+
@@ -48,5 +51,8 @@ const styles = StyleSheet.create({
bothtext: {
width: "80%",
margin: 10
+ },
+ button: {
+ color: "black"
}
});
\ No newline at end of file
diff --git a/iut-expo-starter/navigation/TabNavigation.tsx b/iut-expo-starter/navigation/TabNavigation.tsx
index 9387f569..806dacd4 100644
--- a/iut-expo-starter/navigation/TabNavigation.tsx
+++ b/iut-expo-starter/navigation/TabNavigation.tsx
@@ -1,6 +1,8 @@
+import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
+import { NavigationContainer } from "@react-navigation/native";
import React from "react";
-import CityList from "../CityList";
-/*
+import CityList from "../screens/CityList";
+
export default function Navigation() {
const BottomTabNavigator = createBottomTabNavigator();
return (
@@ -18,4 +20,3 @@ export default function Navigation() {
)
}
-*/
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/.bin/nanoid b/iut-expo-starter/node_modules/.bin/nanoid
new file mode 120000
index 00000000..e2be547b
--- /dev/null
+++ b/iut-expo-starter/node_modules/.bin/nanoid
@@ -0,0 +1 @@
+../nanoid/bin/nanoid.cjs
\ 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
index 49641c2f..c92ab0a7 100644
--- a/iut-expo-starter/node_modules/.package-lock.json
+++ b/iut-expo-starter/node_modules/.package-lock.json
@@ -5184,6 +5184,123 @@
"integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==",
"license": "MIT"
},
+ "node_modules/@react-navigation/bottom-tabs": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.4.tgz",
+ "integrity": "sha512-C2Tf+SsO9zc+p/MKUkILso8Dw4KTIscXPi7YhdepyZbM8ZYMGfnZKzffGjLFlLhQXtsFQQuHMelD8sIStTkgyQ==",
+ "dependencies": {
+ "@react-navigation/elements": "^1.3.14",
+ "color": "^4.2.3",
+ "warn-once": "^0.1.0"
+ },
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0",
+ "react-native-screens": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/bottom-tabs/node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
+ "node_modules/@react-navigation/bottom-tabs/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@react-navigation/core": {
+ "version": "6.4.6",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.6.tgz",
+ "integrity": "sha512-6zaAgUT5k4vhJlddUk2l52RZyMkMelHdrRv1cL57ALi2RZzERdgmbiMKhJerxFLn9S8E3PUe8vwxHzjHOZKG4w==",
+ "dependencies": {
+ "@react-navigation/routers": "^6.1.6",
+ "escape-string-regexp": "^4.0.0",
+ "nanoid": "^3.1.23",
+ "query-string": "^7.1.3",
+ "react-is": "^16.13.0",
+ "use-latest-callback": "^0.1.5"
+ },
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/@react-navigation/core/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-navigation/core/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
+ "node_modules/@react-navigation/elements": {
+ "version": "1.3.14",
+ "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.14.tgz",
+ "integrity": "sha512-RBbPhYq+KNFPAkWPaHB9gypq0jTGp/0fkMwRLToJ8jkLtWG4LV+JoQ/erFQnVARkR3Q807n0VnES15EYP4ITMQ==",
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0"
+ }
+ },
+ "node_modules/@react-navigation/native": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.3.tgz",
+ "integrity": "sha512-DB5FyG6aqGfcjjVozljF5NEkjWaSymIbQHfWwsjL0YrvC1gfc7E53QXDOjxZ/wfbCo8qZs8RIC/LAgclP2YK/w==",
+ "dependencies": {
+ "@react-navigation/core": "^6.4.6",
+ "escape-string-regexp": "^4.0.0",
+ "fast-deep-equal": "^3.1.3",
+ "nanoid": "^3.1.23"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/@react-navigation/native/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-navigation/routers": {
+ "version": "6.1.6",
+ "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.6.tgz",
+ "integrity": "sha512-Z5DeCW3pUvMafbU9Cjy1qJYC2Bvl8iy3+PfsB0DsAwQ6zZ3WAXW5FTMX4Gb9H+Jg6qHWGbMFFwlYpS3UJ3tlVQ==",
+ "dependencies": {
+ "nanoid": "^3.1.23"
+ }
+ },
"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",
@@ -10930,6 +11047,14 @@
"node": ">=0.10.0"
}
},
+ "node_modules/filter-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
+ "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/finalhandler": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
@@ -14829,6 +14954,17 @@
"license": "MIT",
"optional": true
},
+ "node_modules/nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
"node_modules/nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -16916,6 +17052,23 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/query-string": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz",
+ "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==",
+ "dependencies": {
+ "decode-uri-component": "^0.2.2",
+ "filter-obj": "^1.1.0",
+ "split-on-first": "^1.0.0",
+ "strict-uri-encode": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/querystring": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
@@ -17438,6 +17591,18 @@
"integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==",
"license": "MIT"
},
+ "node_modules/react-freeze": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz",
+ "integrity": "sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": ">=17.0.0"
+ }
+ },
"node_modules/react-is": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
@@ -17536,6 +17701,20 @@
"react-native": "*"
}
},
+ "node_modules/react-native-screens": {
+ "version": "3.19.0",
+ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.19.0.tgz",
+ "integrity": "sha512-Ehsmy7jr3H3j5pmN+/FqsAaIAD+k+xkcdePfLcg4rYRbN5X7fJPgaqhcmiCcZ0YxsU8ttsstP9IvRLNQuIkRRA==",
+ "peer": true,
+ "dependencies": {
+ "react-freeze": "^1.0.0",
+ "warn-once": "^0.1.0"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/react-native-web": {
"version": "0.18.11",
"resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.18.11.tgz",
@@ -18956,6 +19135,14 @@
"node": "*"
}
},
+ "node_modules/split-on-first": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
+ "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/split-string": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
@@ -19123,6 +19310,14 @@
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
"license": "MIT"
},
+ "node_modules/strict-uri-encode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
+ "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -20506,6 +20701,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/use-latest-callback": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.5.tgz",
+ "integrity": "sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ=="
+ },
"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",
@@ -20624,6 +20824,11 @@
"makeerror": "1.0.12"
}
},
+ "node_modules/warn-once": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz",
+ "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q=="
+ },
"node_modules/watchpack": {
"version": "1.7.5",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/LICENSE b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/LICENSE
new file mode 100644
index 00000000..9d268cb0
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 React Navigation Contributors
+
+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-navigation/bottom-tabs/README.md b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/README.md
new file mode 100644
index 00000000..e31eb02b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/README.md
@@ -0,0 +1,5 @@
+# `@react-navigation/bottom-tabs`
+
+Bottom tab navigator for React Navigation following iOS design guidelines.
+
+Installation instructions and documentation can be found on the [React Navigation website](https://reactnavigation.org/docs/bottom-tab-navigator/).
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/index.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/index.js
new file mode 100644
index 00000000..20357d10
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/index.js
@@ -0,0 +1,49 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "BottomTabBar", {
+ enumerable: true,
+ get: function () {
+ return _BottomTabBar.default;
+ }
+});
+Object.defineProperty(exports, "BottomTabBarHeightCallbackContext", {
+ enumerable: true,
+ get: function () {
+ return _BottomTabBarHeightCallbackContext.default;
+ }
+});
+Object.defineProperty(exports, "BottomTabBarHeightContext", {
+ enumerable: true,
+ get: function () {
+ return _BottomTabBarHeightContext.default;
+ }
+});
+Object.defineProperty(exports, "BottomTabView", {
+ enumerable: true,
+ get: function () {
+ return _BottomTabView.default;
+ }
+});
+Object.defineProperty(exports, "createBottomTabNavigator", {
+ enumerable: true,
+ get: function () {
+ return _createBottomTabNavigator.default;
+ }
+});
+Object.defineProperty(exports, "useBottomTabBarHeight", {
+ enumerable: true,
+ get: function () {
+ return _useBottomTabBarHeight.default;
+ }
+});
+var _createBottomTabNavigator = _interopRequireDefault(require("./navigators/createBottomTabNavigator"));
+var _BottomTabBar = _interopRequireDefault(require("./views/BottomTabBar"));
+var _BottomTabView = _interopRequireDefault(require("./views/BottomTabView"));
+var _BottomTabBarHeightCallbackContext = _interopRequireDefault(require("./utils/BottomTabBarHeightCallbackContext"));
+var _BottomTabBarHeightContext = _interopRequireDefault(require("./utils/BottomTabBarHeightContext"));
+var _useBottomTabBarHeight = _interopRequireDefault(require("./utils/useBottomTabBarHeight"));
+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-navigation/bottom-tabs/lib/commonjs/index.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/index.js.map
new file mode 100644
index 00000000..fdfc16f4
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AAKA;AACA;AAKA;AACA;AACA;AAAiF"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/navigators/createBottomTabNavigator.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/navigators/createBottomTabNavigator.js
new file mode 100644
index 00000000..ed090890
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/navigators/createBottomTabNavigator.js
@@ -0,0 +1,86 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _native = require("@react-navigation/native");
+var React = _interopRequireWildcard(require("react"));
+var _warnOnce = _interopRequireDefault(require("warn-once"));
+var _BottomTabView = _interopRequireDefault(require("../views/BottomTabView"));
+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); }
+function BottomTabNavigator(_ref) {
+ let {
+ id,
+ initialRouteName,
+ backBehavior,
+ children,
+ screenListeners,
+ screenOptions,
+ sceneContainerStyle,
+ ...restWithDeprecated
+ } = _ref;
+ const {
+ // @ts-expect-error: lazy is deprecated
+ lazy,
+ // @ts-expect-error: tabBarOptions is deprecated
+ tabBarOptions,
+ ...rest
+ } = restWithDeprecated;
+ let defaultScreenOptions = {};
+ if (tabBarOptions) {
+ Object.assign(defaultScreenOptions, {
+ tabBarHideOnKeyboard: tabBarOptions.keyboardHidesTabBar,
+ tabBarActiveTintColor: tabBarOptions.activeTintColor,
+ tabBarInactiveTintColor: tabBarOptions.inactiveTintColor,
+ tabBarActiveBackgroundColor: tabBarOptions.activeBackgroundColor,
+ tabBarInactiveBackgroundColor: tabBarOptions.inactiveBackgroundColor,
+ tabBarAllowFontScaling: tabBarOptions.allowFontScaling,
+ tabBarShowLabel: tabBarOptions.showLabel,
+ tabBarLabelStyle: tabBarOptions.labelStyle,
+ tabBarIconStyle: tabBarOptions.iconStyle,
+ tabBarItemStyle: tabBarOptions.tabStyle,
+ tabBarLabelPosition: tabBarOptions.labelPosition ?? (tabBarOptions.adaptive === false ? 'below-icon' : undefined),
+ tabBarStyle: [{
+ display: tabBarOptions.tabBarVisible ? 'none' : 'flex'
+ }, defaultScreenOptions.tabBarStyle]
+ });
+ Object.keys(defaultScreenOptions).forEach(key => {
+ if (defaultScreenOptions[key] === undefined) {
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete defaultScreenOptions[key];
+ }
+ });
+ (0, _warnOnce.default)(tabBarOptions, `Bottom Tab Navigator: 'tabBarOptions' is deprecated. Migrate the options to 'screenOptions' instead.\n\nPlace the following in 'screenOptions' in your code to keep current behavior:\n\n${JSON.stringify(defaultScreenOptions, null, 2)}\n\nSee https://reactnavigation.org/docs/bottom-tab-navigator#options for more details.`);
+ }
+ if (typeof lazy === 'boolean') {
+ defaultScreenOptions.lazy = lazy;
+ (0, _warnOnce.default)(true, `Bottom Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/bottom-tab-navigator/#lazy for more details.`);
+ }
+ const {
+ state,
+ descriptors,
+ navigation,
+ NavigationContent
+ } = (0, _native.useNavigationBuilder)(_native.TabRouter, {
+ id,
+ initialRouteName,
+ backBehavior,
+ children,
+ screenListeners,
+ screenOptions,
+ defaultScreenOptions
+ });
+ return /*#__PURE__*/React.createElement(NavigationContent, null, /*#__PURE__*/React.createElement(_BottomTabView.default, _extends({}, rest, {
+ state: state,
+ navigation: navigation,
+ descriptors: descriptors,
+ sceneContainerStyle: sceneContainerStyle
+ })));
+}
+var _default = (0, _native.createNavigatorFactory)(BottomTabNavigator);
+exports.default = _default;
+//# sourceMappingURL=createBottomTabNavigator.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/navigators/createBottomTabNavigator.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/navigators/createBottomTabNavigator.js.map
new file mode 100644
index 00000000..d08c9717
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/navigators/createBottomTabNavigator.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["BottomTabNavigator","id","initialRouteName","backBehavior","children","screenListeners","screenOptions","sceneContainerStyle","restWithDeprecated","lazy","tabBarOptions","rest","defaultScreenOptions","Object","assign","tabBarHideOnKeyboard","keyboardHidesTabBar","tabBarActiveTintColor","activeTintColor","tabBarInactiveTintColor","inactiveTintColor","tabBarActiveBackgroundColor","activeBackgroundColor","tabBarInactiveBackgroundColor","inactiveBackgroundColor","tabBarAllowFontScaling","allowFontScaling","tabBarShowLabel","showLabel","tabBarLabelStyle","labelStyle","tabBarIconStyle","iconStyle","tabBarItemStyle","tabStyle","tabBarLabelPosition","labelPosition","adaptive","undefined","tabBarStyle","display","tabBarVisible","keys","forEach","key","warnOnce","JSON","stringify","state","descriptors","navigation","NavigationContent","useNavigationBuilder","TabRouter","createNavigatorFactory"],"sourceRoot":"../../src","sources":["createBottomTabNavigator.tsx"],"mappings":";;;;;;AAAA;AAUA;AACA;AAOA;AAAmD;AAAA;AAAA;AAAA;AAWnD,SAASA,kBAAkB,OASjB;EAAA,IATkB;IAC1BC,EAAE;IACFC,gBAAgB;IAChBC,YAAY;IACZC,QAAQ;IACRC,eAAe;IACfC,aAAa;IACbC,mBAAmB;IACnB,GAAGC;EACE,CAAC;EACN,MAAM;IACJ;IACAC,IAAI;IACJ;IACAC,aAAa;IACb,GAAGC;EACL,CAAC,GAAGH,kBAAkB;EAEtB,IAAII,oBAAgD,GAAG,CAAC,CAAC;EAEzD,IAAIF,aAAa,EAAE;IACjBG,MAAM,CAACC,MAAM,CAACF,oBAAoB,EAAE;MAClCG,oBAAoB,EAAEL,aAAa,CAACM,mBAAmB;MACvDC,qBAAqB,EAAEP,aAAa,CAACQ,eAAe;MACpDC,uBAAuB,EAAET,aAAa,CAACU,iBAAiB;MACxDC,2BAA2B,EAAEX,aAAa,CAACY,qBAAqB;MAChEC,6BAA6B,EAAEb,aAAa,CAACc,uBAAuB;MACpEC,sBAAsB,EAAEf,aAAa,CAACgB,gBAAgB;MACtDC,eAAe,EAAEjB,aAAa,CAACkB,SAAS;MACxCC,gBAAgB,EAAEnB,aAAa,CAACoB,UAAU;MAC1CC,eAAe,EAAErB,aAAa,CAACsB,SAAS;MACxCC,eAAe,EAAEvB,aAAa,CAACwB,QAAQ;MACvCC,mBAAmB,EACjBzB,aAAa,CAAC0B,aAAa,KAC1B1B,aAAa,CAAC2B,QAAQ,KAAK,KAAK,GAAG,YAAY,GAAGC,SAAS,CAAC;MAC/DC,WAAW,EAAE,CACX;QAAEC,OAAO,EAAE9B,aAAa,CAAC+B,aAAa,GAAG,MAAM,GAAG;MAAO,CAAC,EAC1D7B,oBAAoB,CAAC2B,WAAW;IAEpC,CAAC,CAAC;IAGA1B,MAAM,CAAC6B,IAAI,CAAC9B,oBAAoB,CAAC,CACjC+B,OAAO,CAAEC,GAAG,IAAK;MACjB,IAAIhC,oBAAoB,CAACgC,GAAG,CAAC,KAAKN,SAAS,EAAE;QAC3C;QACA,OAAO1B,oBAAoB,CAACgC,GAAG,CAAC;MAClC;IACF,CAAC,CAAC;IAEF,IAAAC,iBAAQ,EACNnC,aAAa,EACZ,4LAA2LoC,IAAI,CAACC,SAAS,CACxMnC,oBAAoB,EACpB,IAAI,EACJ,CAAC,CACD,yFAAwF,CAC3F;EACH;EAEA,IAAI,OAAOH,IAAI,KAAK,SAAS,EAAE;IAC7BG,oBAAoB,CAACH,IAAI,GAAGA,IAAI;IAEhC,IAAAoC,iBAAQ,EACN,IAAI,EACH,+KAA8K,CAChL;EACH;EAEA,MAAM;IAAEG,KAAK;IAAEC,WAAW;IAAEC,UAAU;IAAEC;EAAkB,CAAC,GACzD,IAAAC,4BAAoB,EAMlBC,iBAAS,EAAE;IACXpD,EAAE;IACFC,gBAAgB;IAChBC,YAAY;IACZC,QAAQ;IACRC,eAAe;IACfC,aAAa;IACbM;EACF,CAAC,CAAC;EAEJ,oBACE,oBAAC,iBAAiB,qBAChB,oBAAC,sBAAa,eACRD,IAAI;IACR,KAAK,EAAEqC,KAAM;IACb,UAAU,EAAEE,UAAW;IACvB,WAAW,EAAED,WAAY;IACzB,mBAAmB,EAAE1C;EAAoB,GACzC,CACgB;AAExB;AAAC,eAEc,IAAA+C,8BAAsB,EAKnCtD,kBAAkB,CAAC;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/types.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/types.js
new file mode 100644
index 00000000..239667a3
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/types.js
@@ -0,0 +1,6 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/types.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/types.js.map
new file mode 100644
index 00000000..e7ae1280
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/types.js.map
@@ -0,0 +1 @@
+{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.tsx"],"mappings":""}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightCallbackContext.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightCallbackContext.js
new file mode 100644
index 00000000..79bab717
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightCallbackContext.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+var _default = /*#__PURE__*/React.createContext(undefined);
+exports.default = _default;
+//# sourceMappingURL=BottomTabBarHeightCallbackContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightCallbackContext.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightCallbackContext.js.map
new file mode 100644
index 00000000..aaf9ff65
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightCallbackContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","createContext","undefined"],"sourceRoot":"../../src","sources":["BottomTabBarHeightCallbackContext.tsx"],"mappings":";;;;;;AAAA;AAA+B;AAAA;AAAA,4BAEhBA,KAAK,CAACC,aAAa,CAChCC,SAAS,CACV;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightContext.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightContext.js
new file mode 100644
index 00000000..f7ec5273
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightContext.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+var _default = /*#__PURE__*/React.createContext(undefined);
+exports.default = _default;
+//# sourceMappingURL=BottomTabBarHeightContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightContext.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightContext.js.map
new file mode 100644
index 00000000..a4fd4dc5
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/BottomTabBarHeightContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","createContext","undefined"],"sourceRoot":"../../src","sources":["BottomTabBarHeightContext.tsx"],"mappings":";;;;;;AAAA;AAA+B;AAAA;AAAA,4BAEhBA,KAAK,CAACC,aAAa,CAAqBC,SAAS,CAAC;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useBottomTabBarHeight.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useBottomTabBarHeight.js
new file mode 100644
index 00000000..09c5a0a0
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useBottomTabBarHeight.js
@@ -0,0 +1,19 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useBottomTabBarHeight;
+var React = _interopRequireWildcard(require("react"));
+var _BottomTabBarHeightContext = _interopRequireDefault(require("./BottomTabBarHeightContext"));
+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 useBottomTabBarHeight() {
+ const height = React.useContext(_BottomTabBarHeightContext.default);
+ if (height === undefined) {
+ throw new Error("Couldn't find the bottom tab bar height. Are you inside a screen in Bottom Tab Navigator?");
+ }
+ return height;
+}
+//# sourceMappingURL=useBottomTabBarHeight.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useBottomTabBarHeight.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useBottomTabBarHeight.js.map
new file mode 100644
index 00000000..f2e81bd9
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useBottomTabBarHeight.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useBottomTabBarHeight","height","React","useContext","BottomTabBarHeightContext","undefined","Error"],"sourceRoot":"../../src","sources":["useBottomTabBarHeight.tsx"],"mappings":";;;;;;AAAA;AAEA;AAAoE;AAAA;AAAA;AAErD,SAASA,qBAAqB,GAAG;EAC9C,MAAMC,MAAM,GAAGC,KAAK,CAACC,UAAU,CAACC,kCAAyB,CAAC;EAE1D,IAAIH,MAAM,KAAKI,SAAS,EAAE;IACxB,MAAM,IAAIC,KAAK,CACb,2FAA2F,CAC5F;EACH;EAEA,OAAOL,MAAM;AACf"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useIsKeyboardShown.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useIsKeyboardShown.js
new file mode 100644
index 00000000..3d013bb3
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useIsKeyboardShown.js
@@ -0,0 +1,28 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useIsKeyboardShown;
+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 useIsKeyboardShown() {
+ const [isKeyboardShown, setIsKeyboardShown] = React.useState(false);
+ React.useEffect(() => {
+ const handleKeyboardShow = () => setIsKeyboardShown(true);
+ const handleKeyboardHide = () => setIsKeyboardShown(false);
+ let subscriptions;
+ if (_reactNative.Platform.OS === 'ios') {
+ subscriptions = [_reactNative.Keyboard.addListener('keyboardWillShow', handleKeyboardShow), _reactNative.Keyboard.addListener('keyboardWillHide', handleKeyboardHide)];
+ } else {
+ subscriptions = [_reactNative.Keyboard.addListener('keyboardDidShow', handleKeyboardShow), _reactNative.Keyboard.addListener('keyboardDidHide', handleKeyboardHide)];
+ }
+ return () => {
+ subscriptions.forEach(s => s.remove());
+ };
+ }, []);
+ return isKeyboardShown;
+}
+//# sourceMappingURL=useIsKeyboardShown.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useIsKeyboardShown.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useIsKeyboardShown.js.map
new file mode 100644
index 00000000..9b74ec9b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/utils/useIsKeyboardShown.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useIsKeyboardShown","isKeyboardShown","setIsKeyboardShown","React","useState","useEffect","handleKeyboardShow","handleKeyboardHide","subscriptions","Platform","OS","Keyboard","addListener","forEach","s","remove"],"sourceRoot":"../../src","sources":["useIsKeyboardShown.tsx"],"mappings":";;;;;;AAAA;AACA;AAAuE;AAAA;AAExD,SAASA,kBAAkB,GAAG;EAC3C,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAGC,KAAK,CAACC,QAAQ,CAAC,KAAK,CAAC;EAEnED,KAAK,CAACE,SAAS,CAAC,MAAM;IACpB,MAAMC,kBAAkB,GAAG,MAAMJ,kBAAkB,CAAC,IAAI,CAAC;IACzD,MAAMK,kBAAkB,GAAG,MAAML,kBAAkB,CAAC,KAAK,CAAC;IAE1D,IAAIM,aAAoC;IAExC,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;MACzBF,aAAa,GAAG,CACdG,qBAAQ,CAACC,WAAW,CAAC,kBAAkB,EAAEN,kBAAkB,CAAC,EAC5DK,qBAAQ,CAACC,WAAW,CAAC,kBAAkB,EAAEL,kBAAkB,CAAC,CAC7D;IACH,CAAC,MAAM;MACLC,aAAa,GAAG,CACdG,qBAAQ,CAACC,WAAW,CAAC,iBAAiB,EAAEN,kBAAkB,CAAC,EAC3DK,qBAAQ,CAACC,WAAW,CAAC,iBAAiB,EAAEL,kBAAkB,CAAC,CAC5D;IACH;IAEA,OAAO,MAAM;MACXC,aAAa,CAACK,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,EAAE,CAAC;IAC1C,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOd,eAAe;AACxB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/Badge.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/Badge.js
new file mode 100644
index 00000000..1f847a5d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/Badge.js
@@ -0,0 +1,88 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = Badge;
+var _native = require("@react-navigation/native");
+var _color = _interopRequireDefault(require("color"));
+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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+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); }
+function Badge(_ref) {
+ let {
+ children,
+ style,
+ visible = true,
+ size = 18,
+ ...rest
+ } = _ref;
+ const [opacity] = React.useState(() => new _reactNative.Animated.Value(visible ? 1 : 0));
+ const [rendered, setRendered] = React.useState(visible);
+ const theme = (0, _native.useTheme)();
+ React.useEffect(() => {
+ if (!rendered) {
+ return;
+ }
+ _reactNative.Animated.timing(opacity, {
+ toValue: visible ? 1 : 0,
+ duration: 150,
+ useNativeDriver: true
+ }).start(_ref2 => {
+ let {
+ finished
+ } = _ref2;
+ if (finished && !visible) {
+ setRendered(false);
+ }
+ });
+ return () => opacity.stopAnimation();
+ }, [opacity, rendered, visible]);
+ if (!rendered) {
+ if (visible) {
+ setRendered(true);
+ } else {
+ return null;
+ }
+ }
+
+ // @ts-expect-error: backgroundColor definitely exists
+ const {
+ backgroundColor = theme.colors.notification,
+ ...restStyle
+ } = _reactNative.StyleSheet.flatten(style) || {};
+ const textColor = (0, _color.default)(backgroundColor).isLight() ? 'black' : 'white';
+ const borderRadius = size / 2;
+ const fontSize = Math.floor(size * 3 / 4);
+ return /*#__PURE__*/React.createElement(_reactNative.Animated.Text, _extends({
+ numberOfLines: 1,
+ style: [{
+ transform: [{
+ scale: opacity.interpolate({
+ inputRange: [0, 1],
+ outputRange: [0.5, 1]
+ })
+ }],
+ color: textColor,
+ lineHeight: size - 1,
+ height: size,
+ minWidth: size,
+ opacity,
+ backgroundColor,
+ fontSize,
+ borderRadius
+ }, styles.container, restStyle]
+ }, rest), children);
+}
+const styles = _reactNative.StyleSheet.create({
+ container: {
+ alignSelf: 'flex-end',
+ textAlign: 'center',
+ paddingHorizontal: 4,
+ overflow: 'hidden'
+ }
+});
+//# sourceMappingURL=Badge.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/Badge.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/Badge.js.map
new file mode 100644
index 00000000..fdf29171
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/Badge.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["Badge","children","style","visible","size","rest","opacity","React","useState","Animated","Value","rendered","setRendered","theme","useTheme","useEffect","timing","toValue","duration","useNativeDriver","start","finished","stopAnimation","backgroundColor","colors","notification","restStyle","StyleSheet","flatten","textColor","color","isLight","borderRadius","fontSize","Math","floor","transform","scale","interpolate","inputRange","outputRange","lineHeight","height","minWidth","styles","container","create","alignSelf","textAlign","paddingHorizontal","overflow"],"sourceRoot":"../../src","sources":["Badge.tsx"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAA0E;AAAA;AAAA;AAAA;AAqB3D,SAASA,KAAK,OAMnB;EAAA,IANoB;IAC5BC,QAAQ;IACRC,KAAK;IACLC,OAAO,GAAG,IAAI;IACdC,IAAI,GAAG,EAAE;IACT,GAAGC;EACE,CAAC;EACN,MAAM,CAACC,OAAO,CAAC,GAAGC,KAAK,CAACC,QAAQ,CAAC,MAAM,IAAIC,qBAAQ,CAACC,KAAK,CAACP,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC3E,MAAM,CAACQ,QAAQ,EAAEC,WAAW,CAAC,GAAGL,KAAK,CAACC,QAAQ,CAACL,OAAO,CAAC;EAEvD,MAAMU,KAAK,GAAG,IAAAC,gBAAQ,GAAE;EAExBP,KAAK,CAACQ,SAAS,CAAC,MAAM;IACpB,IAAI,CAACJ,QAAQ,EAAE;MACb;IACF;IAEAF,qBAAQ,CAACO,MAAM,CAACV,OAAO,EAAE;MACvBW,OAAO,EAAEd,OAAO,GAAG,CAAC,GAAG,CAAC;MACxBe,QAAQ,EAAE,GAAG;MACbC,eAAe,EAAE;IACnB,CAAC,CAAC,CAACC,KAAK,CAAC,SAAkB;MAAA,IAAjB;QAAEC;MAAS,CAAC;MACpB,IAAIA,QAAQ,IAAI,CAAClB,OAAO,EAAE;QACxBS,WAAW,CAAC,KAAK,CAAC;MACpB;IACF,CAAC,CAAC;IAEF,OAAO,MAAMN,OAAO,CAACgB,aAAa,EAAE;EACtC,CAAC,EAAE,CAAChB,OAAO,EAAEK,QAAQ,EAAER,OAAO,CAAC,CAAC;EAEhC,IAAI,CAACQ,QAAQ,EAAE;IACb,IAAIR,OAAO,EAAE;MACXS,WAAW,CAAC,IAAI,CAAC;IACnB,CAAC,MAAM;MACL,OAAO,IAAI;IACb;EACF;;EAEA;EACA,MAAM;IAAEW,eAAe,GAAGV,KAAK,CAACW,MAAM,CAACC,YAAY;IAAE,GAAGC;EAAU,CAAC,GACjEC,uBAAU,CAACC,OAAO,CAAC1B,KAAK,CAAC,IAAI,CAAC,CAAC;EACjC,MAAM2B,SAAS,GAAG,IAAAC,cAAK,EAACP,eAAe,CAAC,CAACQ,OAAO,EAAE,GAAG,OAAO,GAAG,OAAO;EAEtE,MAAMC,YAAY,GAAG5B,IAAI,GAAG,CAAC;EAC7B,MAAM6B,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAAE/B,IAAI,GAAG,CAAC,GAAI,CAAC,CAAC;EAE3C,oBACE,oBAAC,qBAAQ,CAAC,IAAI;IACZ,aAAa,EAAE,CAAE;IACjB,KAAK,EAAE,CACL;MACEgC,SAAS,EAAE,CACT;QACEC,KAAK,EAAE/B,OAAO,CAACgC,WAAW,CAAC;UACzBC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;UAClBC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC;MACH,CAAC,CACF;MACDV,KAAK,EAAED,SAAS;MAChBY,UAAU,EAAErC,IAAI,GAAG,CAAC;MACpBsC,MAAM,EAAEtC,IAAI;MACZuC,QAAQ,EAAEvC,IAAI;MACdE,OAAO;MACPiB,eAAe;MACfU,QAAQ;MACRD;IACF,CAAC,EACDY,MAAM,CAACC,SAAS,EAChBnB,SAAS;EACT,GACErB,IAAI,GAEPJ,QAAQ,CACK;AAEpB;AAEA,MAAM2C,MAAM,GAAGjB,uBAAU,CAACmB,MAAM,CAAC;EAC/BD,SAAS,EAAE;IACTE,SAAS,EAAE,UAAU;IACrBC,SAAS,EAAE,QAAQ;IACnBC,iBAAiB,EAAE,CAAC;IACpBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabBar.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabBar.js
new file mode 100644
index 00000000..1360dc65
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabBar.js
@@ -0,0 +1,310 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = BottomTabBar;
+exports.getTabBarHeight = void 0;
+var _elements = require("@react-navigation/elements");
+var _native = require("@react-navigation/native");
+var _react = _interopRequireDefault(require("react"));
+var _reactNative = require("react-native");
+var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
+var _BottomTabBarHeightCallbackContext = _interopRequireDefault(require("../utils/BottomTabBarHeightCallbackContext"));
+var _useIsKeyboardShown = _interopRequireDefault(require("../utils/useIsKeyboardShown"));
+var _BottomTabItem = _interopRequireDefault(require("./BottomTabItem"));
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+const DEFAULT_TABBAR_HEIGHT = 49;
+const COMPACT_TABBAR_HEIGHT = 32;
+const DEFAULT_MAX_TAB_ITEM_WIDTH = 125;
+const useNativeDriver = _reactNative.Platform.OS !== 'web';
+const shouldUseHorizontalLabels = _ref => {
+ let {
+ state,
+ descriptors,
+ layout,
+ dimensions
+ } = _ref;
+ const {
+ tabBarLabelPosition
+ } = descriptors[state.routes[state.index].key].options;
+ if (tabBarLabelPosition) {
+ switch (tabBarLabelPosition) {
+ case 'beside-icon':
+ return true;
+ case 'below-icon':
+ return false;
+ }
+ }
+ if (layout.width >= 768) {
+ // Screen size matches a tablet
+ const maxTabWidth = state.routes.reduce((acc, route) => {
+ const {
+ tabBarItemStyle
+ } = descriptors[route.key].options;
+ const flattenedStyle = _reactNative.StyleSheet.flatten(tabBarItemStyle);
+ if (flattenedStyle) {
+ if (typeof flattenedStyle.width === 'number') {
+ return acc + flattenedStyle.width;
+ } else if (typeof flattenedStyle.maxWidth === 'number') {
+ return acc + flattenedStyle.maxWidth;
+ }
+ }
+ return acc + DEFAULT_MAX_TAB_ITEM_WIDTH;
+ }, 0);
+ return maxTabWidth <= layout.width;
+ } else {
+ return dimensions.width > dimensions.height;
+ }
+};
+const getPaddingBottom = insets => Math.max(insets.bottom - _reactNative.Platform.select({
+ ios: 4,
+ default: 0
+}), 0);
+const getTabBarHeight = _ref2 => {
+ var _StyleSheet$flatten;
+ let {
+ state,
+ descriptors,
+ dimensions,
+ insets,
+ style,
+ ...rest
+ } = _ref2;
+ // @ts-ignore
+ const customHeight = (_StyleSheet$flatten = _reactNative.StyleSheet.flatten(style)) === null || _StyleSheet$flatten === void 0 ? void 0 : _StyleSheet$flatten.height;
+ if (typeof customHeight === 'number') {
+ return customHeight;
+ }
+ const isLandscape = dimensions.width > dimensions.height;
+ const horizontalLabels = shouldUseHorizontalLabels({
+ state,
+ descriptors,
+ dimensions,
+ ...rest
+ });
+ const paddingBottom = getPaddingBottom(insets);
+ if (_reactNative.Platform.OS === 'ios' && !_reactNative.Platform.isPad && isLandscape && horizontalLabels) {
+ return COMPACT_TABBAR_HEIGHT + paddingBottom;
+ }
+ return DEFAULT_TABBAR_HEIGHT + paddingBottom;
+};
+exports.getTabBarHeight = getTabBarHeight;
+function BottomTabBar(_ref3) {
+ let {
+ state,
+ navigation,
+ descriptors,
+ insets,
+ style
+ } = _ref3;
+ const {
+ colors
+ } = (0, _native.useTheme)();
+ const buildLink = (0, _native.useLinkBuilder)();
+ const focusedRoute = state.routes[state.index];
+ const focusedDescriptor = descriptors[focusedRoute.key];
+ const focusedOptions = focusedDescriptor.options;
+ const {
+ tabBarShowLabel,
+ tabBarHideOnKeyboard = false,
+ tabBarVisibilityAnimationConfig,
+ tabBarStyle,
+ tabBarBackground,
+ tabBarActiveTintColor,
+ tabBarInactiveTintColor,
+ tabBarActiveBackgroundColor,
+ tabBarInactiveBackgroundColor
+ } = focusedOptions;
+ const dimensions = (0, _reactNativeSafeAreaContext.useSafeAreaFrame)();
+ const isKeyboardShown = (0, _useIsKeyboardShown.default)();
+ const onHeightChange = _react.default.useContext(_BottomTabBarHeightCallbackContext.default);
+ const shouldShowTabBar = !(tabBarHideOnKeyboard && isKeyboardShown);
+ const visibilityAnimationConfigRef = _react.default.useRef(tabBarVisibilityAnimationConfig);
+ _react.default.useEffect(() => {
+ visibilityAnimationConfigRef.current = tabBarVisibilityAnimationConfig;
+ });
+ const [isTabBarHidden, setIsTabBarHidden] = _react.default.useState(!shouldShowTabBar);
+ const [visible] = _react.default.useState(() => new _reactNative.Animated.Value(shouldShowTabBar ? 1 : 0));
+ _react.default.useEffect(() => {
+ const visibilityAnimationConfig = visibilityAnimationConfigRef.current;
+ if (shouldShowTabBar) {
+ var _visibilityAnimationC, _visibilityAnimationC2;
+ const animation = (visibilityAnimationConfig === null || visibilityAnimationConfig === void 0 ? void 0 : (_visibilityAnimationC = visibilityAnimationConfig.show) === null || _visibilityAnimationC === void 0 ? void 0 : _visibilityAnimationC.animation) === 'spring' ? _reactNative.Animated.spring : _reactNative.Animated.timing;
+ animation(visible, {
+ toValue: 1,
+ useNativeDriver,
+ duration: 250,
+ ...(visibilityAnimationConfig === null || visibilityAnimationConfig === void 0 ? void 0 : (_visibilityAnimationC2 = visibilityAnimationConfig.show) === null || _visibilityAnimationC2 === void 0 ? void 0 : _visibilityAnimationC2.config)
+ }).start(_ref4 => {
+ let {
+ finished
+ } = _ref4;
+ if (finished) {
+ setIsTabBarHidden(false);
+ }
+ });
+ } else {
+ var _visibilityAnimationC3, _visibilityAnimationC4;
+ setIsTabBarHidden(true);
+ const animation = (visibilityAnimationConfig === null || visibilityAnimationConfig === void 0 ? void 0 : (_visibilityAnimationC3 = visibilityAnimationConfig.hide) === null || _visibilityAnimationC3 === void 0 ? void 0 : _visibilityAnimationC3.animation) === 'spring' ? _reactNative.Animated.spring : _reactNative.Animated.timing;
+ animation(visible, {
+ toValue: 0,
+ useNativeDriver,
+ duration: 200,
+ ...(visibilityAnimationConfig === null || visibilityAnimationConfig === void 0 ? void 0 : (_visibilityAnimationC4 = visibilityAnimationConfig.hide) === null || _visibilityAnimationC4 === void 0 ? void 0 : _visibilityAnimationC4.config)
+ }).start();
+ }
+ return () => visible.stopAnimation();
+ }, [visible, shouldShowTabBar]);
+ const [layout, setLayout] = _react.default.useState({
+ height: 0,
+ width: dimensions.width
+ });
+ const handleLayout = e => {
+ const {
+ height,
+ width
+ } = e.nativeEvent.layout;
+ onHeightChange === null || onHeightChange === void 0 ? void 0 : onHeightChange(height);
+ setLayout(layout => {
+ if (height === layout.height && width === layout.width) {
+ return layout;
+ } else {
+ return {
+ height,
+ width
+ };
+ }
+ });
+ };
+ const {
+ routes
+ } = state;
+ const paddingBottom = getPaddingBottom(insets);
+ const tabBarHeight = getTabBarHeight({
+ state,
+ descriptors,
+ insets,
+ dimensions,
+ layout,
+ style: [tabBarStyle, style]
+ });
+ const hasHorizontalLabels = shouldUseHorizontalLabels({
+ state,
+ descriptors,
+ dimensions,
+ layout
+ });
+ const tabBarBackgroundElement = tabBarBackground === null || tabBarBackground === void 0 ? void 0 : tabBarBackground();
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Animated.View, {
+ style: [styles.tabBar, {
+ backgroundColor: tabBarBackgroundElement != null ? 'transparent' : colors.card,
+ borderTopColor: colors.border
+ }, {
+ transform: [{
+ translateY: visible.interpolate({
+ inputRange: [0, 1],
+ outputRange: [layout.height + paddingBottom + _reactNative.StyleSheet.hairlineWidth, 0]
+ })
+ }],
+ // Absolutely position the tab bar so that the content is below it
+ // This is needed to avoid gap at bottom when the tab bar is hidden
+ position: isTabBarHidden ? 'absolute' : null
+ }, {
+ height: tabBarHeight,
+ paddingBottom,
+ paddingHorizontal: Math.max(insets.left, insets.right)
+ }, tabBarStyle],
+ pointerEvents: isTabBarHidden ? 'none' : 'auto',
+ onLayout: handleLayout
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
+ pointerEvents: "none",
+ style: _reactNative.StyleSheet.absoluteFill
+ }, tabBarBackgroundElement), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
+ accessibilityRole: "tablist",
+ style: styles.content
+ }, routes.map((route, index) => {
+ const focused = index === state.index;
+ const {
+ options
+ } = descriptors[route.key];
+ const onPress = () => {
+ const event = navigation.emit({
+ type: 'tabPress',
+ target: route.key,
+ canPreventDefault: true
+ });
+ if (!focused && !event.defaultPrevented) {
+ navigation.dispatch({
+ ..._native.CommonActions.navigate({
+ name: route.name,
+ merge: true
+ }),
+ target: state.key
+ });
+ }
+ };
+ const onLongPress = () => {
+ navigation.emit({
+ type: 'tabLongPress',
+ target: route.key
+ });
+ };
+ const label = options.tabBarLabel !== undefined ? options.tabBarLabel : options.title !== undefined ? options.title : route.name;
+ const accessibilityLabel = options.tabBarAccessibilityLabel !== undefined ? options.tabBarAccessibilityLabel : typeof label === 'string' && _reactNative.Platform.OS === 'ios' ? `${label}, tab, ${index + 1} of ${routes.length}` : undefined;
+ return /*#__PURE__*/_react.default.createElement(_native.NavigationContext.Provider, {
+ key: route.key,
+ value: descriptors[route.key].navigation
+ }, /*#__PURE__*/_react.default.createElement(_native.NavigationRouteContext.Provider, {
+ value: route
+ }, /*#__PURE__*/_react.default.createElement(_BottomTabItem.default, {
+ route: route,
+ descriptor: descriptors[route.key],
+ focused: focused,
+ horizontal: hasHorizontalLabels,
+ onPress: onPress,
+ onLongPress: onLongPress,
+ accessibilityLabel: accessibilityLabel,
+ to: buildLink(route.name, route.params),
+ testID: options.tabBarTestID,
+ allowFontScaling: options.tabBarAllowFontScaling,
+ activeTintColor: tabBarActiveTintColor,
+ inactiveTintColor: tabBarInactiveTintColor,
+ activeBackgroundColor: tabBarActiveBackgroundColor,
+ inactiveBackgroundColor: tabBarInactiveBackgroundColor,
+ button: options.tabBarButton,
+ icon: options.tabBarIcon ?? (_ref5 => {
+ let {
+ color,
+ size
+ } = _ref5;
+ return /*#__PURE__*/_react.default.createElement(_elements.MissingIcon, {
+ color: color,
+ size: size
+ });
+ }),
+ badge: options.tabBarBadge,
+ badgeStyle: options.tabBarBadgeStyle,
+ label: label,
+ showLabel: tabBarShowLabel,
+ labelStyle: options.tabBarLabelStyle,
+ iconStyle: options.tabBarIconStyle,
+ style: options.tabBarItemStyle
+ })));
+ })));
+}
+const styles = _reactNative.StyleSheet.create({
+ tabBar: {
+ left: 0,
+ right: 0,
+ bottom: 0,
+ borderTopWidth: _reactNative.StyleSheet.hairlineWidth,
+ elevation: 8
+ },
+ content: {
+ flex: 1,
+ flexDirection: 'row'
+ }
+});
+//# sourceMappingURL=BottomTabBar.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabBar.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabBar.js.map
new file mode 100644
index 00000000..0fb60a39
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabBar.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["DEFAULT_TABBAR_HEIGHT","COMPACT_TABBAR_HEIGHT","DEFAULT_MAX_TAB_ITEM_WIDTH","useNativeDriver","Platform","OS","shouldUseHorizontalLabels","state","descriptors","layout","dimensions","tabBarLabelPosition","routes","index","key","options","width","maxTabWidth","reduce","acc","route","tabBarItemStyle","flattenedStyle","StyleSheet","flatten","maxWidth","height","getPaddingBottom","insets","Math","max","bottom","select","ios","default","getTabBarHeight","style","rest","customHeight","isLandscape","horizontalLabels","paddingBottom","isPad","BottomTabBar","navigation","colors","useTheme","buildLink","useLinkBuilder","focusedRoute","focusedDescriptor","focusedOptions","tabBarShowLabel","tabBarHideOnKeyboard","tabBarVisibilityAnimationConfig","tabBarStyle","tabBarBackground","tabBarActiveTintColor","tabBarInactiveTintColor","tabBarActiveBackgroundColor","tabBarInactiveBackgroundColor","useSafeAreaFrame","isKeyboardShown","useIsKeyboardShown","onHeightChange","React","useContext","BottomTabBarHeightCallbackContext","shouldShowTabBar","visibilityAnimationConfigRef","useRef","useEffect","current","isTabBarHidden","setIsTabBarHidden","useState","visible","Animated","Value","visibilityAnimationConfig","animation","show","spring","timing","toValue","duration","config","start","finished","hide","stopAnimation","setLayout","handleLayout","e","nativeEvent","tabBarHeight","hasHorizontalLabels","tabBarBackgroundElement","styles","tabBar","backgroundColor","card","borderTopColor","border","transform","translateY","interpolate","inputRange","outputRange","hairlineWidth","position","paddingHorizontal","left","right","absoluteFill","content","map","focused","onPress","event","emit","type","target","canPreventDefault","defaultPrevented","dispatch","CommonActions","navigate","name","merge","onLongPress","label","tabBarLabel","undefined","title","accessibilityLabel","tabBarAccessibilityLabel","length","params","tabBarTestID","tabBarAllowFontScaling","tabBarButton","tabBarIcon","color","size","tabBarBadge","tabBarBadgeStyle","tabBarLabelStyle","tabBarIconStyle","create","borderTopWidth","elevation","flex","flexDirection"],"sourceRoot":"../../src","sources":["BottomTabBar.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabItem.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabItem.js
new file mode 100644
index 00000000..2c64cfe1
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabItem.js
@@ -0,0 +1,183 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = BottomTabBarItem;
+var _native = require("@react-navigation/native");
+var _color = _interopRequireDefault(require("color"));
+var _react = _interopRequireDefault(require("react"));
+var _reactNative = require("react-native");
+var _TabBarIcon = _interopRequireDefault(require("./TabBarIcon"));
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+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); }
+function BottomTabBarItem(_ref) {
+ let {
+ focused,
+ route,
+ descriptor,
+ label,
+ icon,
+ badge,
+ badgeStyle,
+ to,
+ button = _ref2 => {
+ let {
+ children,
+ style,
+ onPress,
+ to,
+ accessibilityRole,
+ ...rest
+ } = _ref2;
+ if (_reactNative.Platform.OS === 'web' && to) {
+ // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.
+ // We need to use `onClick` to be able to prevent default browser handling of links.
+ return /*#__PURE__*/_react.default.createElement(_native.Link, _extends({}, rest, {
+ to: to,
+ style: [styles.button, style],
+ onPress: e => {
+ if (!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && (
+ // ignore clicks with modifier keys
+ e.button == null || e.button === 0) // ignore everything but left clicks
+ ) {
+ e.preventDefault();
+ onPress === null || onPress === void 0 ? void 0 : onPress(e);
+ }
+ }
+ }), children);
+ } else {
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, _extends({}, rest, {
+ accessibilityRole: accessibilityRole,
+ onPress: onPress,
+ style: style
+ }), children);
+ }
+ },
+ accessibilityLabel,
+ testID,
+ onPress,
+ onLongPress,
+ horizontal,
+ activeTintColor: customActiveTintColor,
+ inactiveTintColor: customInactiveTintColor,
+ activeBackgroundColor = 'transparent',
+ inactiveBackgroundColor = 'transparent',
+ showLabel = true,
+ allowFontScaling,
+ labelStyle,
+ iconStyle,
+ style
+ } = _ref;
+ const {
+ colors
+ } = (0, _native.useTheme)();
+ const activeTintColor = customActiveTintColor === undefined ? colors.primary : customActiveTintColor;
+ const inactiveTintColor = customInactiveTintColor === undefined ? (0, _color.default)(colors.text).mix((0, _color.default)(colors.card), 0.5).hex() : customInactiveTintColor;
+ const renderLabel = _ref3 => {
+ let {
+ focused
+ } = _ref3;
+ if (showLabel === false) {
+ return null;
+ }
+ const color = focused ? activeTintColor : inactiveTintColor;
+ if (typeof label === 'string') {
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
+ numberOfLines: 1,
+ style: [styles.label, {
+ color
+ }, horizontal ? styles.labelBeside : styles.labelBeneath, labelStyle],
+ allowFontScaling: allowFontScaling
+ }, label);
+ }
+ const {
+ options
+ } = descriptor;
+ const children = typeof options.tabBarLabel === 'string' ? options.tabBarLabel : options.title !== undefined ? options.title : route.name;
+ return label({
+ focused,
+ color,
+ position: horizontal ? 'beside-icon' : 'below-icon',
+ children
+ });
+ };
+ const renderIcon = _ref4 => {
+ let {
+ focused
+ } = _ref4;
+ if (icon === undefined) {
+ return null;
+ }
+ const activeOpacity = focused ? 1 : 0;
+ const inactiveOpacity = focused ? 0 : 1;
+ return /*#__PURE__*/_react.default.createElement(_TabBarIcon.default, {
+ route: route,
+ horizontal: horizontal,
+ badge: badge,
+ badgeStyle: badgeStyle,
+ activeOpacity: activeOpacity,
+ inactiveOpacity: inactiveOpacity,
+ activeTintColor: activeTintColor,
+ inactiveTintColor: inactiveTintColor,
+ renderIcon: icon,
+ style: iconStyle
+ });
+ };
+ const scene = {
+ route,
+ focused
+ };
+ const backgroundColor = focused ? activeBackgroundColor : inactiveBackgroundColor;
+ return button({
+ to,
+ onPress,
+ onLongPress,
+ testID,
+ accessibilityLabel,
+ // FIXME: accessibilityRole: 'tab' doesn't seem to work as expected on iOS
+ accessibilityRole: _reactNative.Platform.select({
+ ios: 'button',
+ default: 'tab'
+ }),
+ accessibilityState: {
+ selected: focused
+ },
+ // @ts-expect-error: keep for compatibility with older React Native versions
+ accessibilityStates: focused ? ['selected'] : [],
+ style: [styles.tab, {
+ backgroundColor
+ }, horizontal ? styles.tabLandscape : styles.tabPortrait, style],
+ children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderIcon(scene), renderLabel(scene))
+ });
+}
+const styles = _reactNative.StyleSheet.create({
+ tab: {
+ flex: 1,
+ alignItems: 'center'
+ },
+ tabPortrait: {
+ justifyContent: 'flex-end',
+ flexDirection: 'column'
+ },
+ tabLandscape: {
+ justifyContent: 'center',
+ flexDirection: 'row'
+ },
+ label: {
+ textAlign: 'center',
+ backgroundColor: 'transparent'
+ },
+ labelBeneath: {
+ fontSize: 10
+ },
+ labelBeside: {
+ fontSize: 13,
+ marginLeft: 20,
+ marginTop: 3
+ },
+ button: {
+ display: 'flex'
+ }
+});
+//# sourceMappingURL=BottomTabItem.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabItem.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabItem.js.map
new file mode 100644
index 00000000..6a9449fb
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabItem.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["BottomTabBarItem","focused","route","descriptor","label","icon","badge","badgeStyle","to","button","children","style","onPress","accessibilityRole","rest","Platform","OS","styles","e","metaKey","altKey","ctrlKey","shiftKey","preventDefault","accessibilityLabel","testID","onLongPress","horizontal","activeTintColor","customActiveTintColor","inactiveTintColor","customInactiveTintColor","activeBackgroundColor","inactiveBackgroundColor","showLabel","allowFontScaling","labelStyle","iconStyle","colors","useTheme","undefined","primary","Color","text","mix","card","hex","renderLabel","color","labelBeside","labelBeneath","options","tabBarLabel","title","name","position","renderIcon","activeOpacity","inactiveOpacity","scene","backgroundColor","select","ios","default","accessibilityState","selected","accessibilityStates","tab","tabLandscape","tabPortrait","StyleSheet","create","flex","alignItems","justifyContent","flexDirection","textAlign","fontSize","marginLeft","marginTop","display"],"sourceRoot":"../../src","sources":["BottomTabItem.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabView.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabView.js
new file mode 100644
index 00000000..55eccfb9
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabView.js
@@ -0,0 +1,134 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = BottomTabView;
+var _elements = require("@react-navigation/elements");
+var React = _interopRequireWildcard(require("react"));
+var _reactNative = require("react-native");
+var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
+var _BottomTabBarHeightCallbackContext = _interopRequireDefault(require("../utils/BottomTabBarHeightCallbackContext"));
+var _BottomTabBarHeightContext = _interopRequireDefault(require("../utils/BottomTabBarHeightContext"));
+var _BottomTabBar = _interopRequireWildcard(require("./BottomTabBar"));
+var _ScreenFallback = require("./ScreenFallback");
+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); }
+function BottomTabView(props) {
+ const {
+ tabBar = props => /*#__PURE__*/React.createElement(_BottomTabBar.default, props),
+ state,
+ navigation,
+ descriptors,
+ safeAreaInsets,
+ detachInactiveScreens = _reactNative.Platform.OS === 'web' || _reactNative.Platform.OS === 'android' || _reactNative.Platform.OS === 'ios',
+ sceneContainerStyle
+ } = props;
+ const focusedRouteKey = state.routes[state.index].key;
+ const [loaded, setLoaded] = React.useState([focusedRouteKey]);
+ if (!loaded.includes(focusedRouteKey)) {
+ setLoaded([...loaded, focusedRouteKey]);
+ }
+ const dimensions = _elements.SafeAreaProviderCompat.initialMetrics.frame;
+ const [tabBarHeight, setTabBarHeight] = React.useState(() => (0, _BottomTabBar.getTabBarHeight)({
+ state,
+ descriptors,
+ dimensions,
+ layout: {
+ width: dimensions.width,
+ height: 0
+ },
+ insets: {
+ ..._elements.SafeAreaProviderCompat.initialMetrics.insets,
+ ...props.safeAreaInsets
+ },
+ style: descriptors[state.routes[state.index].key].options.tabBarStyle
+ }));
+ const renderTabBar = () => {
+ return /*#__PURE__*/React.createElement(_reactNativeSafeAreaContext.SafeAreaInsetsContext.Consumer, null, insets => tabBar({
+ state: state,
+ descriptors: descriptors,
+ navigation: navigation,
+ insets: {
+ top: (safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.top) ?? (insets === null || insets === void 0 ? void 0 : insets.top) ?? 0,
+ right: (safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.right) ?? (insets === null || insets === void 0 ? void 0 : insets.right) ?? 0,
+ bottom: (safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.bottom) ?? (insets === null || insets === void 0 ? void 0 : insets.bottom) ?? 0,
+ left: (safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.left) ?? (insets === null || insets === void 0 ? void 0 : insets.left) ?? 0
+ }
+ }));
+ };
+ const {
+ routes
+ } = state;
+ return /*#__PURE__*/React.createElement(_elements.SafeAreaProviderCompat, null, /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreenContainer, {
+ enabled: detachInactiveScreens,
+ hasTwoStates: true,
+ style: styles.container
+ }, routes.map((route, index) => {
+ const descriptor = descriptors[route.key];
+ const {
+ lazy = true,
+ unmountOnBlur
+ } = descriptor.options;
+ const isFocused = state.index === index;
+ if (unmountOnBlur && !isFocused) {
+ return null;
+ }
+ if (lazy && !loaded.includes(route.key) && !isFocused) {
+ // Don't render a lazy screen if we've never navigated to it
+ return null;
+ }
+ const {
+ freezeOnBlur,
+ header = _ref => {
+ let {
+ layout,
+ options
+ } = _ref;
+ return /*#__PURE__*/React.createElement(_elements.Header, _extends({}, options, {
+ layout: layout,
+ title: (0, _elements.getHeaderTitle)(options, route.name)
+ }));
+ },
+ headerShown,
+ headerStatusBarHeight,
+ headerTransparent
+ } = descriptor.options;
+ return /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreen, {
+ key: route.key,
+ style: [_reactNative.StyleSheet.absoluteFill, {
+ zIndex: isFocused ? 0 : -1
+ }],
+ visible: isFocused,
+ enabled: detachInactiveScreens,
+ freezeOnBlur: freezeOnBlur
+ }, /*#__PURE__*/React.createElement(_BottomTabBarHeightContext.default.Provider, {
+ value: tabBarHeight
+ }, /*#__PURE__*/React.createElement(_elements.Screen, {
+ focused: isFocused,
+ route: descriptor.route,
+ navigation: descriptor.navigation,
+ headerShown: headerShown,
+ headerStatusBarHeight: headerStatusBarHeight,
+ headerTransparent: headerTransparent,
+ header: header({
+ layout: dimensions,
+ route: descriptor.route,
+ navigation: descriptor.navigation,
+ options: descriptor.options
+ }),
+ style: sceneContainerStyle
+ }, descriptor.render())));
+ })), /*#__PURE__*/React.createElement(_BottomTabBarHeightCallbackContext.default.Provider, {
+ value: setTabBarHeight
+ }, renderTabBar()));
+}
+const styles = _reactNative.StyleSheet.create({
+ container: {
+ flex: 1,
+ overflow: 'hidden'
+ }
+});
+//# sourceMappingURL=BottomTabView.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabView.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabView.js.map
new file mode 100644
index 00000000..c9608b47
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/BottomTabView.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","Platform","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","React","useState","includes","dimensions","SafeAreaProviderCompat","initialMetrics","frame","tabBarHeight","setTabBarHeight","getTabBarHeight","layout","width","height","insets","style","options","tabBarStyle","renderTabBar","top","right","bottom","left","styles","container","map","route","descriptor","lazy","unmountOnBlur","isFocused","freezeOnBlur","header","getHeaderTitle","name","headerShown","headerStatusBarHeight","headerTransparent","StyleSheet","absoluteFill","zIndex","render","create","flex","overflow"],"sourceRoot":"../../src","sources":["BottomTabView.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/ScreenFallback.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/ScreenFallback.js
new file mode 100644
index 00000000..7c9b4aef
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/ScreenFallback.js
@@ -0,0 +1,50 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.MaybeScreen = MaybeScreen;
+exports.MaybeScreenContainer = void 0;
+var _elements = require("@react-navigation/elements");
+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 _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); }
+let Screens;
+try {
+ Screens = require('react-native-screens');
+} catch (e) {
+ // Ignore
+}
+const MaybeScreenContainer = _ref => {
+ var _Screens, _Screens$screensEnabl;
+ let {
+ enabled,
+ ...rest
+ } = _ref;
+ if ((_Screens = Screens) !== null && _Screens !== void 0 && (_Screens$screensEnabl = _Screens.screensEnabled) !== null && _Screens$screensEnabl !== void 0 && _Screens$screensEnabl.call(_Screens)) {
+ return /*#__PURE__*/React.createElement(Screens.ScreenContainer, _extends({
+ enabled: enabled
+ }, rest));
+ }
+ return /*#__PURE__*/React.createElement(_reactNative.View, rest);
+};
+exports.MaybeScreenContainer = MaybeScreenContainer;
+function MaybeScreen(_ref2) {
+ var _Screens2, _Screens2$screensEnab;
+ let {
+ visible,
+ children,
+ ...rest
+ } = _ref2;
+ if ((_Screens2 = Screens) !== null && _Screens2 !== void 0 && (_Screens2$screensEnab = _Screens2.screensEnabled) !== null && _Screens2$screensEnab !== void 0 && _Screens2$screensEnab.call(_Screens2)) {
+ return /*#__PURE__*/React.createElement(Screens.Screen, _extends({
+ activityState: visible ? 2 : 0
+ }, rest), children);
+ }
+ return /*#__PURE__*/React.createElement(_elements.ResourceSavingView, _extends({
+ visible: visible
+ }, rest), children);
+}
+//# sourceMappingURL=ScreenFallback.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/ScreenFallback.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/ScreenFallback.js.map
new file mode 100644
index 00000000..db986467
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/ScreenFallback.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"sourceRoot":"../../src","sources":["ScreenFallback.tsx"],"mappings":";;;;;;;AAAA;AACA;AACA;AAAqE;AAAA;AAAA;AAUrE,IAAIA,OAA0D;AAE9D,IAAI;EACFA,OAAO,GAAGC,OAAO,CAAC,sBAAsB,CAAC;AAC3C,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV;AAAA;AAGK,MAAMC,oBAAoB,GAAG,QAO9B;EAAA;EAAA,IAP+B;IACnCC,OAAO;IACP,GAAGC;EAKL,CAAC;EACC,gBAAIL,OAAO,8DAAP,SAASM,cAAc,kDAAvB,oCAA2B,EAAE;IAC/B,oBAAO,oBAAC,OAAO,CAAC,eAAe;MAAC,OAAO,EAAEF;IAAQ,GAAKC,IAAI,EAAI;EAChE;EAEA,oBAAO,oBAAC,iBAAI,EAAKA,IAAI,CAAI;AAC3B,CAAC;AAAC;AAEK,SAASE,WAAW,QAAwC;EAAA;EAAA,IAAvC;IAAEC,OAAO;IAAEC,QAAQ;IAAE,GAAGJ;EAAY,CAAC;EAC/D,iBAAIL,OAAO,+DAAP,UAASM,cAAc,kDAAvB,qCAA2B,EAAE;IAC/B,oBACE,oBAAC,OAAO,CAAC,MAAM;MAAC,aAAa,EAAEE,OAAO,GAAG,CAAC,GAAG;IAAE,GAAKH,IAAI,GACrDI,QAAQ,CACM;EAErB;EAEA,oBACE,oBAAC,4BAAkB;IAAC,OAAO,EAAED;EAAQ,GAAKH,IAAI,GAC3CI,QAAQ,CACU;AAEzB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/TabBarIcon.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/TabBarIcon.js
new file mode 100644
index 00000000..80325baf
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/TabBarIcon.js
@@ -0,0 +1,84 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = TabBarIcon;
+var _react = _interopRequireDefault(require("react"));
+var _reactNative = require("react-native");
+var _Badge = _interopRequireDefault(require("./Badge"));
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function TabBarIcon(_ref) {
+ let {
+ route: _,
+ horizontal,
+ badge,
+ badgeStyle,
+ activeOpacity,
+ inactiveOpacity,
+ activeTintColor,
+ inactiveTintColor,
+ renderIcon,
+ style
+ } = _ref;
+ const size = 25;
+
+ // We render the icon twice at the same position on top of each other:
+ // active and inactive one, so we can fade between them.
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
+ style: [horizontal ? styles.iconHorizontal : styles.iconVertical, style]
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
+ style: [styles.icon, {
+ opacity: activeOpacity
+ }]
+ }, renderIcon({
+ focused: true,
+ size,
+ color: activeTintColor
+ })), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
+ style: [styles.icon, {
+ opacity: inactiveOpacity
+ }]
+ }, renderIcon({
+ focused: false,
+ size,
+ color: inactiveTintColor
+ })), /*#__PURE__*/_react.default.createElement(_Badge.default, {
+ visible: badge != null,
+ style: [styles.badge, horizontal ? styles.badgeHorizontal : styles.badgeVertical, badgeStyle],
+ size: size * 3 / 4
+ }, badge));
+}
+const styles = _reactNative.StyleSheet.create({
+ icon: {
+ // We render the icon twice at the same position on top of each other:
+ // active and inactive one, so we can fade between them:
+ // Cover the whole iconContainer:
+ position: 'absolute',
+ alignSelf: 'center',
+ alignItems: 'center',
+ justifyContent: 'center',
+ height: '100%',
+ width: '100%',
+ // Workaround for react-native >= 0.54 layout bug
+ minWidth: 25
+ },
+ iconVertical: {
+ flex: 1
+ },
+ iconHorizontal: {
+ height: '100%',
+ marginTop: 3
+ },
+ badge: {
+ position: 'absolute',
+ left: 3
+ },
+ badgeVertical: {
+ top: 3
+ },
+ badgeHorizontal: {
+ top: 7
+ }
+});
+//# sourceMappingURL=TabBarIcon.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/TabBarIcon.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/TabBarIcon.js.map
new file mode 100644
index 00000000..875af804
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/commonjs/views/TabBarIcon.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["TabBarIcon","route","_","horizontal","badge","badgeStyle","activeOpacity","inactiveOpacity","activeTintColor","inactiveTintColor","renderIcon","style","size","styles","iconHorizontal","iconVertical","icon","opacity","focused","color","badgeHorizontal","badgeVertical","StyleSheet","create","position","alignSelf","alignItems","justifyContent","height","width","minWidth","flex","marginTop","left","top"],"sourceRoot":"../../src","sources":["TabBarIcon.tsx"],"mappings":";;;;;;AACA;AACA;AAQA;AAA4B;AAmBb,SAASA,UAAU,OAWxB;EAAA,IAXyB;IACjCC,KAAK,EAAEC,CAAC;IACRC,UAAU;IACVC,KAAK;IACLC,UAAU;IACVC,aAAa;IACbC,eAAe;IACfC,eAAe;IACfC,iBAAiB;IACjBC,UAAU;IACVC;EACK,CAAC;EACN,MAAMC,IAAI,GAAG,EAAE;;EAEf;EACA;EACA,oBACE,6BAAC,iBAAI;IACH,KAAK,EAAE,CAACT,UAAU,GAAGU,MAAM,CAACC,cAAc,GAAGD,MAAM,CAACE,YAAY,EAAEJ,KAAK;EAAE,gBAEzE,6BAAC,iBAAI;IAAC,KAAK,EAAE,CAACE,MAAM,CAACG,IAAI,EAAE;MAAEC,OAAO,EAAEX;IAAc,CAAC;EAAE,GACpDI,UAAU,CAAC;IACVQ,OAAO,EAAE,IAAI;IACbN,IAAI;IACJO,KAAK,EAAEX;EACT,CAAC,CAAC,CACG,eACP,6BAAC,iBAAI;IAAC,KAAK,EAAE,CAACK,MAAM,CAACG,IAAI,EAAE;MAAEC,OAAO,EAAEV;IAAgB,CAAC;EAAE,GACtDG,UAAU,CAAC;IACVQ,OAAO,EAAE,KAAK;IACdN,IAAI;IACJO,KAAK,EAAEV;EACT,CAAC,CAAC,CACG,eACP,6BAAC,cAAK;IACJ,OAAO,EAAEL,KAAK,IAAI,IAAK;IACvB,KAAK,EAAE,CACLS,MAAM,CAACT,KAAK,EACZD,UAAU,GAAGU,MAAM,CAACO,eAAe,GAAGP,MAAM,CAACQ,aAAa,EAC1DhB,UAAU,CACV;IACF,IAAI,EAAGO,IAAI,GAAG,CAAC,GAAI;EAAE,GAEpBR,KAAK,CACA,CACH;AAEX;AAEA,MAAMS,MAAM,GAAGS,uBAAU,CAACC,MAAM,CAAC;EAC/BP,IAAI,EAAE;IACJ;IACA;IACA;IACAQ,QAAQ,EAAE,UAAU;IACpBC,SAAS,EAAE,QAAQ;IACnBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,MAAM,EAAE,MAAM;IACdC,KAAK,EAAE,MAAM;IACb;IACAC,QAAQ,EAAE;EACZ,CAAC;EACDf,YAAY,EAAE;IACZgB,IAAI,EAAE;EACR,CAAC;EACDjB,cAAc,EAAE;IACdc,MAAM,EAAE,MAAM;IACdI,SAAS,EAAE;EACb,CAAC;EACD5B,KAAK,EAAE;IACLoB,QAAQ,EAAE,UAAU;IACpBS,IAAI,EAAE;EACR,CAAC;EACDZ,aAAa,EAAE;IACba,GAAG,EAAE;EACP,CAAC;EACDd,eAAe,EAAE;IACfc,GAAG,EAAE;EACP;AACF,CAAC,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/index.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/index.js
new file mode 100644
index 00000000..314621c4
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/index.js
@@ -0,0 +1,22 @@
+/**
+ * Navigators
+ */
+export { default as createBottomTabNavigator } from './navigators/createBottomTabNavigator';
+
+/**
+ * Views
+ */
+export { default as BottomTabBar } from './views/BottomTabBar';
+export { default as BottomTabView } from './views/BottomTabView';
+
+/**
+ * Utilities
+ */
+export { default as BottomTabBarHeightCallbackContext } from './utils/BottomTabBarHeightCallbackContext';
+export { default as BottomTabBarHeightContext } from './utils/BottomTabBarHeightContext';
+export { default as useBottomTabBarHeight } from './utils/useBottomTabBarHeight';
+
+/**
+ * Types
+ */
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/index.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/index.js.map
new file mode 100644
index 00000000..d7f7e4b3
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["default","createBottomTabNavigator","BottomTabBar","BottomTabView","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","useBottomTabBarHeight"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,IAAIC,wBAAwB,QAAQ,uCAAuC;;AAE3F;AACA;AACA;AACA,SAASD,OAAO,IAAIE,YAAY,QAAQ,sBAAsB;AAC9D,SAASF,OAAO,IAAIG,aAAa,QAAQ,uBAAuB;;AAEhE;AACA;AACA;AACA,SAASH,OAAO,IAAII,iCAAiC,QAAQ,2CAA2C;AACxG,SAASJ,OAAO,IAAIK,yBAAyB,QAAQ,mCAAmC;AACxF,SAASL,OAAO,IAAIM,qBAAqB,QAAQ,+BAA+B;;AAEhF;AACA;AACA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/navigators/createBottomTabNavigator.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/navigators/createBottomTabNavigator.js
new file mode 100644
index 00000000..2184e0fb
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/navigators/createBottomTabNavigator.js
@@ -0,0 +1,76 @@
+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 { createNavigatorFactory, TabRouter, useNavigationBuilder } from '@react-navigation/native';
+import * as React from 'react';
+import warnOnce from 'warn-once';
+import BottomTabView from '../views/BottomTabView';
+function BottomTabNavigator(_ref) {
+ let {
+ id,
+ initialRouteName,
+ backBehavior,
+ children,
+ screenListeners,
+ screenOptions,
+ sceneContainerStyle,
+ ...restWithDeprecated
+ } = _ref;
+ const {
+ // @ts-expect-error: lazy is deprecated
+ lazy,
+ // @ts-expect-error: tabBarOptions is deprecated
+ tabBarOptions,
+ ...rest
+ } = restWithDeprecated;
+ let defaultScreenOptions = {};
+ if (tabBarOptions) {
+ Object.assign(defaultScreenOptions, {
+ tabBarHideOnKeyboard: tabBarOptions.keyboardHidesTabBar,
+ tabBarActiveTintColor: tabBarOptions.activeTintColor,
+ tabBarInactiveTintColor: tabBarOptions.inactiveTintColor,
+ tabBarActiveBackgroundColor: tabBarOptions.activeBackgroundColor,
+ tabBarInactiveBackgroundColor: tabBarOptions.inactiveBackgroundColor,
+ tabBarAllowFontScaling: tabBarOptions.allowFontScaling,
+ tabBarShowLabel: tabBarOptions.showLabel,
+ tabBarLabelStyle: tabBarOptions.labelStyle,
+ tabBarIconStyle: tabBarOptions.iconStyle,
+ tabBarItemStyle: tabBarOptions.tabStyle,
+ tabBarLabelPosition: tabBarOptions.labelPosition ?? (tabBarOptions.adaptive === false ? 'below-icon' : undefined),
+ tabBarStyle: [{
+ display: tabBarOptions.tabBarVisible ? 'none' : 'flex'
+ }, defaultScreenOptions.tabBarStyle]
+ });
+ Object.keys(defaultScreenOptions).forEach(key => {
+ if (defaultScreenOptions[key] === undefined) {
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete defaultScreenOptions[key];
+ }
+ });
+ warnOnce(tabBarOptions, `Bottom Tab Navigator: 'tabBarOptions' is deprecated. Migrate the options to 'screenOptions' instead.\n\nPlace the following in 'screenOptions' in your code to keep current behavior:\n\n${JSON.stringify(defaultScreenOptions, null, 2)}\n\nSee https://reactnavigation.org/docs/bottom-tab-navigator#options for more details.`);
+ }
+ if (typeof lazy === 'boolean') {
+ defaultScreenOptions.lazy = lazy;
+ warnOnce(true, `Bottom Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/bottom-tab-navigator/#lazy for more details.`);
+ }
+ const {
+ state,
+ descriptors,
+ navigation,
+ NavigationContent
+ } = useNavigationBuilder(TabRouter, {
+ id,
+ initialRouteName,
+ backBehavior,
+ children,
+ screenListeners,
+ screenOptions,
+ defaultScreenOptions
+ });
+ return /*#__PURE__*/React.createElement(NavigationContent, null, /*#__PURE__*/React.createElement(BottomTabView, _extends({}, rest, {
+ state: state,
+ navigation: navigation,
+ descriptors: descriptors,
+ sceneContainerStyle: sceneContainerStyle
+ })));
+}
+export default createNavigatorFactory(BottomTabNavigator);
+//# sourceMappingURL=createBottomTabNavigator.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/navigators/createBottomTabNavigator.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/navigators/createBottomTabNavigator.js.map
new file mode 100644
index 00000000..b31c2a08
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/navigators/createBottomTabNavigator.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["createNavigatorFactory","TabRouter","useNavigationBuilder","React","warnOnce","BottomTabView","BottomTabNavigator","id","initialRouteName","backBehavior","children","screenListeners","screenOptions","sceneContainerStyle","restWithDeprecated","lazy","tabBarOptions","rest","defaultScreenOptions","Object","assign","tabBarHideOnKeyboard","keyboardHidesTabBar","tabBarActiveTintColor","activeTintColor","tabBarInactiveTintColor","inactiveTintColor","tabBarActiveBackgroundColor","activeBackgroundColor","tabBarInactiveBackgroundColor","inactiveBackgroundColor","tabBarAllowFontScaling","allowFontScaling","tabBarShowLabel","showLabel","tabBarLabelStyle","labelStyle","tabBarIconStyle","iconStyle","tabBarItemStyle","tabStyle","tabBarLabelPosition","labelPosition","adaptive","undefined","tabBarStyle","display","tabBarVisible","keys","forEach","key","JSON","stringify","state","descriptors","navigation","NavigationContent"],"sourceRoot":"../../src","sources":["createBottomTabNavigator.tsx"],"mappings":";AAAA,SACEA,sBAAsB,EAKtBC,SAAS,EAETC,oBAAoB,QACf,0BAA0B;AACjC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,OAAOC,QAAQ,MAAM,WAAW;AAOhC,OAAOC,aAAa,MAAM,wBAAwB;AAWlD,SAASC,kBAAkB,OASjB;EAAA,IATkB;IAC1BC,EAAE;IACFC,gBAAgB;IAChBC,YAAY;IACZC,QAAQ;IACRC,eAAe;IACfC,aAAa;IACbC,mBAAmB;IACnB,GAAGC;EACE,CAAC;EACN,MAAM;IACJ;IACAC,IAAI;IACJ;IACAC,aAAa;IACb,GAAGC;EACL,CAAC,GAAGH,kBAAkB;EAEtB,IAAII,oBAAgD,GAAG,CAAC,CAAC;EAEzD,IAAIF,aAAa,EAAE;IACjBG,MAAM,CAACC,MAAM,CAACF,oBAAoB,EAAE;MAClCG,oBAAoB,EAAEL,aAAa,CAACM,mBAAmB;MACvDC,qBAAqB,EAAEP,aAAa,CAACQ,eAAe;MACpDC,uBAAuB,EAAET,aAAa,CAACU,iBAAiB;MACxDC,2BAA2B,EAAEX,aAAa,CAACY,qBAAqB;MAChEC,6BAA6B,EAAEb,aAAa,CAACc,uBAAuB;MACpEC,sBAAsB,EAAEf,aAAa,CAACgB,gBAAgB;MACtDC,eAAe,EAAEjB,aAAa,CAACkB,SAAS;MACxCC,gBAAgB,EAAEnB,aAAa,CAACoB,UAAU;MAC1CC,eAAe,EAAErB,aAAa,CAACsB,SAAS;MACxCC,eAAe,EAAEvB,aAAa,CAACwB,QAAQ;MACvCC,mBAAmB,EACjBzB,aAAa,CAAC0B,aAAa,KAC1B1B,aAAa,CAAC2B,QAAQ,KAAK,KAAK,GAAG,YAAY,GAAGC,SAAS,CAAC;MAC/DC,WAAW,EAAE,CACX;QAAEC,OAAO,EAAE9B,aAAa,CAAC+B,aAAa,GAAG,MAAM,GAAG;MAAO,CAAC,EAC1D7B,oBAAoB,CAAC2B,WAAW;IAEpC,CAAC,CAAC;IAGA1B,MAAM,CAAC6B,IAAI,CAAC9B,oBAAoB,CAAC,CACjC+B,OAAO,CAAEC,GAAG,IAAK;MACjB,IAAIhC,oBAAoB,CAACgC,GAAG,CAAC,KAAKN,SAAS,EAAE;QAC3C;QACA,OAAO1B,oBAAoB,CAACgC,GAAG,CAAC;MAClC;IACF,CAAC,CAAC;IAEF9C,QAAQ,CACNY,aAAa,EACZ,4LAA2LmC,IAAI,CAACC,SAAS,CACxMlC,oBAAoB,EACpB,IAAI,EACJ,CAAC,CACD,yFAAwF,CAC3F;EACH;EAEA,IAAI,OAAOH,IAAI,KAAK,SAAS,EAAE;IAC7BG,oBAAoB,CAACH,IAAI,GAAGA,IAAI;IAEhCX,QAAQ,CACN,IAAI,EACH,+KAA8K,CAChL;EACH;EAEA,MAAM;IAAEiD,KAAK;IAAEC,WAAW;IAAEC,UAAU;IAAEC;EAAkB,CAAC,GACzDtD,oBAAoB,CAMlBD,SAAS,EAAE;IACXM,EAAE;IACFC,gBAAgB;IAChBC,YAAY;IACZC,QAAQ;IACRC,eAAe;IACfC,aAAa;IACbM;EACF,CAAC,CAAC;EAEJ,oBACE,oBAAC,iBAAiB,qBAChB,oBAAC,aAAa,eACRD,IAAI;IACR,KAAK,EAAEoC,KAAM;IACb,UAAU,EAAEE,UAAW;IACvB,WAAW,EAAED,WAAY;IACzB,mBAAmB,EAAEzC;EAAoB,GACzC,CACgB;AAExB;AAEA,eAAeb,sBAAsB,CAKnCM,kBAAkB,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/types.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/types.js
new file mode 100644
index 00000000..718fd38a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/types.js
@@ -0,0 +1,2 @@
+export {};
+//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/types.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/types.js.map
new file mode 100644
index 00000000..e7ae1280
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/types.js.map
@@ -0,0 +1 @@
+{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.tsx"],"mappings":""}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightCallbackContext.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightCallbackContext.js
new file mode 100644
index 00000000..ca06ab40
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightCallbackContext.js
@@ -0,0 +1,3 @@
+import * as React from 'react';
+export default /*#__PURE__*/React.createContext(undefined);
+//# sourceMappingURL=BottomTabBarHeightCallbackContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightCallbackContext.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightCallbackContext.js.map
new file mode 100644
index 00000000..7441c9c5
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightCallbackContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","createContext","undefined"],"sourceRoot":"../../src","sources":["BottomTabBarHeightCallbackContext.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,4BAAeA,KAAK,CAACC,aAAa,CAChCC,SAAS,CACV"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightContext.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightContext.js
new file mode 100644
index 00000000..a82e3d13
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightContext.js
@@ -0,0 +1,3 @@
+import * as React from 'react';
+export default /*#__PURE__*/React.createContext(undefined);
+//# sourceMappingURL=BottomTabBarHeightContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightContext.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightContext.js.map
new file mode 100644
index 00000000..200a0877
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/BottomTabBarHeightContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","createContext","undefined"],"sourceRoot":"../../src","sources":["BottomTabBarHeightContext.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,4BAAeA,KAAK,CAACC,aAAa,CAAqBC,SAAS,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useBottomTabBarHeight.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useBottomTabBarHeight.js
new file mode 100644
index 00000000..6bbe1018
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useBottomTabBarHeight.js
@@ -0,0 +1,10 @@
+import * as React from 'react';
+import BottomTabBarHeightContext from './BottomTabBarHeightContext';
+export default function useBottomTabBarHeight() {
+ const height = React.useContext(BottomTabBarHeightContext);
+ if (height === undefined) {
+ throw new Error("Couldn't find the bottom tab bar height. Are you inside a screen in Bottom Tab Navigator?");
+ }
+ return height;
+}
+//# sourceMappingURL=useBottomTabBarHeight.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useBottomTabBarHeight.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useBottomTabBarHeight.js.map
new file mode 100644
index 00000000..83a947ab
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useBottomTabBarHeight.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","BottomTabBarHeightContext","useBottomTabBarHeight","height","useContext","undefined","Error"],"sourceRoot":"../../src","sources":["useBottomTabBarHeight.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,yBAAyB,MAAM,6BAA6B;AAEnE,eAAe,SAASC,qBAAqB,GAAG;EAC9C,MAAMC,MAAM,GAAGH,KAAK,CAACI,UAAU,CAACH,yBAAyB,CAAC;EAE1D,IAAIE,MAAM,KAAKE,SAAS,EAAE;IACxB,MAAM,IAAIC,KAAK,CACb,2FAA2F,CAC5F;EACH;EAEA,OAAOH,MAAM;AACf"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useIsKeyboardShown.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useIsKeyboardShown.js
new file mode 100644
index 00000000..0d7f97cc
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useIsKeyboardShown.js
@@ -0,0 +1,20 @@
+import * as React from 'react';
+import { Keyboard, Platform } from 'react-native';
+export default function useIsKeyboardShown() {
+ const [isKeyboardShown, setIsKeyboardShown] = React.useState(false);
+ React.useEffect(() => {
+ const handleKeyboardShow = () => setIsKeyboardShown(true);
+ const handleKeyboardHide = () => setIsKeyboardShown(false);
+ let subscriptions;
+ if (Platform.OS === 'ios') {
+ subscriptions = [Keyboard.addListener('keyboardWillShow', handleKeyboardShow), Keyboard.addListener('keyboardWillHide', handleKeyboardHide)];
+ } else {
+ subscriptions = [Keyboard.addListener('keyboardDidShow', handleKeyboardShow), Keyboard.addListener('keyboardDidHide', handleKeyboardHide)];
+ }
+ return () => {
+ subscriptions.forEach(s => s.remove());
+ };
+ }, []);
+ return isKeyboardShown;
+}
+//# sourceMappingURL=useIsKeyboardShown.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useIsKeyboardShown.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useIsKeyboardShown.js.map
new file mode 100644
index 00000000..04806cfe
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/utils/useIsKeyboardShown.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","Keyboard","Platform","useIsKeyboardShown","isKeyboardShown","setIsKeyboardShown","useState","useEffect","handleKeyboardShow","handleKeyboardHide","subscriptions","OS","addListener","forEach","s","remove"],"sourceRoot":"../../src","sources":["useIsKeyboardShown.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAA8BC,QAAQ,EAAEC,QAAQ,QAAQ,cAAc;AAEtE,eAAe,SAASC,kBAAkB,GAAG;EAC3C,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAGL,KAAK,CAACM,QAAQ,CAAC,KAAK,CAAC;EAEnEN,KAAK,CAACO,SAAS,CAAC,MAAM;IACpB,MAAMC,kBAAkB,GAAG,MAAMH,kBAAkB,CAAC,IAAI,CAAC;IACzD,MAAMI,kBAAkB,GAAG,MAAMJ,kBAAkB,CAAC,KAAK,CAAC;IAE1D,IAAIK,aAAoC;IAExC,IAAIR,QAAQ,CAACS,EAAE,KAAK,KAAK,EAAE;MACzBD,aAAa,GAAG,CACdT,QAAQ,CAACW,WAAW,CAAC,kBAAkB,EAAEJ,kBAAkB,CAAC,EAC5DP,QAAQ,CAACW,WAAW,CAAC,kBAAkB,EAAEH,kBAAkB,CAAC,CAC7D;IACH,CAAC,MAAM;MACLC,aAAa,GAAG,CACdT,QAAQ,CAACW,WAAW,CAAC,iBAAiB,EAAEJ,kBAAkB,CAAC,EAC3DP,QAAQ,CAACW,WAAW,CAAC,iBAAiB,EAAEH,kBAAkB,CAAC,CAC5D;IACH;IAEA,OAAO,MAAM;MACXC,aAAa,CAACG,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,EAAE,CAAC;IAC1C,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOX,eAAe;AACxB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/Badge.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/Badge.js
new file mode 100644
index 00000000..674f06f6
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/Badge.js
@@ -0,0 +1,79 @@
+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 { useTheme } from '@react-navigation/native';
+import color from 'color';
+import * as React from 'react';
+import { Animated, StyleSheet } from 'react-native';
+export default function Badge(_ref) {
+ let {
+ children,
+ style,
+ visible = true,
+ size = 18,
+ ...rest
+ } = _ref;
+ const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));
+ const [rendered, setRendered] = React.useState(visible);
+ const theme = useTheme();
+ React.useEffect(() => {
+ if (!rendered) {
+ return;
+ }
+ Animated.timing(opacity, {
+ toValue: visible ? 1 : 0,
+ duration: 150,
+ useNativeDriver: true
+ }).start(_ref2 => {
+ let {
+ finished
+ } = _ref2;
+ if (finished && !visible) {
+ setRendered(false);
+ }
+ });
+ return () => opacity.stopAnimation();
+ }, [opacity, rendered, visible]);
+ if (!rendered) {
+ if (visible) {
+ setRendered(true);
+ } else {
+ return null;
+ }
+ }
+
+ // @ts-expect-error: backgroundColor definitely exists
+ const {
+ backgroundColor = theme.colors.notification,
+ ...restStyle
+ } = StyleSheet.flatten(style) || {};
+ const textColor = color(backgroundColor).isLight() ? 'black' : 'white';
+ const borderRadius = size / 2;
+ const fontSize = Math.floor(size * 3 / 4);
+ return /*#__PURE__*/React.createElement(Animated.Text, _extends({
+ numberOfLines: 1,
+ style: [{
+ transform: [{
+ scale: opacity.interpolate({
+ inputRange: [0, 1],
+ outputRange: [0.5, 1]
+ })
+ }],
+ color: textColor,
+ lineHeight: size - 1,
+ height: size,
+ minWidth: size,
+ opacity,
+ backgroundColor,
+ fontSize,
+ borderRadius
+ }, styles.container, restStyle]
+ }, rest), children);
+}
+const styles = StyleSheet.create({
+ container: {
+ alignSelf: 'flex-end',
+ textAlign: 'center',
+ paddingHorizontal: 4,
+ overflow: 'hidden'
+ }
+});
+//# sourceMappingURL=Badge.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/Badge.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/Badge.js.map
new file mode 100644
index 00000000..fb55ccbc
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/Badge.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useTheme","color","React","Animated","StyleSheet","Badge","children","style","visible","size","rest","opacity","useState","Value","rendered","setRendered","theme","useEffect","timing","toValue","duration","useNativeDriver","start","finished","stopAnimation","backgroundColor","colors","notification","restStyle","flatten","textColor","isLight","borderRadius","fontSize","Math","floor","transform","scale","interpolate","inputRange","outputRange","lineHeight","height","minWidth","styles","container","create","alignSelf","textAlign","paddingHorizontal","overflow"],"sourceRoot":"../../src","sources":["Badge.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabBar.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabBar.js
new file mode 100644
index 00000000..dccff42b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabBar.js
@@ -0,0 +1,301 @@
+import { MissingIcon } from '@react-navigation/elements';
+import { CommonActions, NavigationContext, NavigationRouteContext, useLinkBuilder, useTheme } from '@react-navigation/native';
+import React from 'react';
+import { Animated, Platform, StyleSheet, View } from 'react-native';
+import { useSafeAreaFrame } from 'react-native-safe-area-context';
+import BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';
+import useIsKeyboardShown from '../utils/useIsKeyboardShown';
+import BottomTabItem from './BottomTabItem';
+const DEFAULT_TABBAR_HEIGHT = 49;
+const COMPACT_TABBAR_HEIGHT = 32;
+const DEFAULT_MAX_TAB_ITEM_WIDTH = 125;
+const useNativeDriver = Platform.OS !== 'web';
+const shouldUseHorizontalLabels = _ref => {
+ let {
+ state,
+ descriptors,
+ layout,
+ dimensions
+ } = _ref;
+ const {
+ tabBarLabelPosition
+ } = descriptors[state.routes[state.index].key].options;
+ if (tabBarLabelPosition) {
+ switch (tabBarLabelPosition) {
+ case 'beside-icon':
+ return true;
+ case 'below-icon':
+ return false;
+ }
+ }
+ if (layout.width >= 768) {
+ // Screen size matches a tablet
+ const maxTabWidth = state.routes.reduce((acc, route) => {
+ const {
+ tabBarItemStyle
+ } = descriptors[route.key].options;
+ const flattenedStyle = StyleSheet.flatten(tabBarItemStyle);
+ if (flattenedStyle) {
+ if (typeof flattenedStyle.width === 'number') {
+ return acc + flattenedStyle.width;
+ } else if (typeof flattenedStyle.maxWidth === 'number') {
+ return acc + flattenedStyle.maxWidth;
+ }
+ }
+ return acc + DEFAULT_MAX_TAB_ITEM_WIDTH;
+ }, 0);
+ return maxTabWidth <= layout.width;
+ } else {
+ return dimensions.width > dimensions.height;
+ }
+};
+const getPaddingBottom = insets => Math.max(insets.bottom - Platform.select({
+ ios: 4,
+ default: 0
+}), 0);
+export const getTabBarHeight = _ref2 => {
+ var _StyleSheet$flatten;
+ let {
+ state,
+ descriptors,
+ dimensions,
+ insets,
+ style,
+ ...rest
+ } = _ref2;
+ // @ts-ignore
+ const customHeight = (_StyleSheet$flatten = StyleSheet.flatten(style)) === null || _StyleSheet$flatten === void 0 ? void 0 : _StyleSheet$flatten.height;
+ if (typeof customHeight === 'number') {
+ return customHeight;
+ }
+ const isLandscape = dimensions.width > dimensions.height;
+ const horizontalLabels = shouldUseHorizontalLabels({
+ state,
+ descriptors,
+ dimensions,
+ ...rest
+ });
+ const paddingBottom = getPaddingBottom(insets);
+ if (Platform.OS === 'ios' && !Platform.isPad && isLandscape && horizontalLabels) {
+ return COMPACT_TABBAR_HEIGHT + paddingBottom;
+ }
+ return DEFAULT_TABBAR_HEIGHT + paddingBottom;
+};
+export default function BottomTabBar(_ref3) {
+ let {
+ state,
+ navigation,
+ descriptors,
+ insets,
+ style
+ } = _ref3;
+ const {
+ colors
+ } = useTheme();
+ const buildLink = useLinkBuilder();
+ const focusedRoute = state.routes[state.index];
+ const focusedDescriptor = descriptors[focusedRoute.key];
+ const focusedOptions = focusedDescriptor.options;
+ const {
+ tabBarShowLabel,
+ tabBarHideOnKeyboard = false,
+ tabBarVisibilityAnimationConfig,
+ tabBarStyle,
+ tabBarBackground,
+ tabBarActiveTintColor,
+ tabBarInactiveTintColor,
+ tabBarActiveBackgroundColor,
+ tabBarInactiveBackgroundColor
+ } = focusedOptions;
+ const dimensions = useSafeAreaFrame();
+ const isKeyboardShown = useIsKeyboardShown();
+ const onHeightChange = React.useContext(BottomTabBarHeightCallbackContext);
+ const shouldShowTabBar = !(tabBarHideOnKeyboard && isKeyboardShown);
+ const visibilityAnimationConfigRef = React.useRef(tabBarVisibilityAnimationConfig);
+ React.useEffect(() => {
+ visibilityAnimationConfigRef.current = tabBarVisibilityAnimationConfig;
+ });
+ const [isTabBarHidden, setIsTabBarHidden] = React.useState(!shouldShowTabBar);
+ const [visible] = React.useState(() => new Animated.Value(shouldShowTabBar ? 1 : 0));
+ React.useEffect(() => {
+ const visibilityAnimationConfig = visibilityAnimationConfigRef.current;
+ if (shouldShowTabBar) {
+ var _visibilityAnimationC, _visibilityAnimationC2;
+ const animation = (visibilityAnimationConfig === null || visibilityAnimationConfig === void 0 ? void 0 : (_visibilityAnimationC = visibilityAnimationConfig.show) === null || _visibilityAnimationC === void 0 ? void 0 : _visibilityAnimationC.animation) === 'spring' ? Animated.spring : Animated.timing;
+ animation(visible, {
+ toValue: 1,
+ useNativeDriver,
+ duration: 250,
+ ...(visibilityAnimationConfig === null || visibilityAnimationConfig === void 0 ? void 0 : (_visibilityAnimationC2 = visibilityAnimationConfig.show) === null || _visibilityAnimationC2 === void 0 ? void 0 : _visibilityAnimationC2.config)
+ }).start(_ref4 => {
+ let {
+ finished
+ } = _ref4;
+ if (finished) {
+ setIsTabBarHidden(false);
+ }
+ });
+ } else {
+ var _visibilityAnimationC3, _visibilityAnimationC4;
+ setIsTabBarHidden(true);
+ const animation = (visibilityAnimationConfig === null || visibilityAnimationConfig === void 0 ? void 0 : (_visibilityAnimationC3 = visibilityAnimationConfig.hide) === null || _visibilityAnimationC3 === void 0 ? void 0 : _visibilityAnimationC3.animation) === 'spring' ? Animated.spring : Animated.timing;
+ animation(visible, {
+ toValue: 0,
+ useNativeDriver,
+ duration: 200,
+ ...(visibilityAnimationConfig === null || visibilityAnimationConfig === void 0 ? void 0 : (_visibilityAnimationC4 = visibilityAnimationConfig.hide) === null || _visibilityAnimationC4 === void 0 ? void 0 : _visibilityAnimationC4.config)
+ }).start();
+ }
+ return () => visible.stopAnimation();
+ }, [visible, shouldShowTabBar]);
+ const [layout, setLayout] = React.useState({
+ height: 0,
+ width: dimensions.width
+ });
+ const handleLayout = e => {
+ const {
+ height,
+ width
+ } = e.nativeEvent.layout;
+ onHeightChange === null || onHeightChange === void 0 ? void 0 : onHeightChange(height);
+ setLayout(layout => {
+ if (height === layout.height && width === layout.width) {
+ return layout;
+ } else {
+ return {
+ height,
+ width
+ };
+ }
+ });
+ };
+ const {
+ routes
+ } = state;
+ const paddingBottom = getPaddingBottom(insets);
+ const tabBarHeight = getTabBarHeight({
+ state,
+ descriptors,
+ insets,
+ dimensions,
+ layout,
+ style: [tabBarStyle, style]
+ });
+ const hasHorizontalLabels = shouldUseHorizontalLabels({
+ state,
+ descriptors,
+ dimensions,
+ layout
+ });
+ const tabBarBackgroundElement = tabBarBackground === null || tabBarBackground === void 0 ? void 0 : tabBarBackground();
+ return /*#__PURE__*/React.createElement(Animated.View, {
+ style: [styles.tabBar, {
+ backgroundColor: tabBarBackgroundElement != null ? 'transparent' : colors.card,
+ borderTopColor: colors.border
+ }, {
+ transform: [{
+ translateY: visible.interpolate({
+ inputRange: [0, 1],
+ outputRange: [layout.height + paddingBottom + StyleSheet.hairlineWidth, 0]
+ })
+ }],
+ // Absolutely position the tab bar so that the content is below it
+ // This is needed to avoid gap at bottom when the tab bar is hidden
+ position: isTabBarHidden ? 'absolute' : null
+ }, {
+ height: tabBarHeight,
+ paddingBottom,
+ paddingHorizontal: Math.max(insets.left, insets.right)
+ }, tabBarStyle],
+ pointerEvents: isTabBarHidden ? 'none' : 'auto',
+ onLayout: handleLayout
+ }, /*#__PURE__*/React.createElement(View, {
+ pointerEvents: "none",
+ style: StyleSheet.absoluteFill
+ }, tabBarBackgroundElement), /*#__PURE__*/React.createElement(View, {
+ accessibilityRole: "tablist",
+ style: styles.content
+ }, routes.map((route, index) => {
+ const focused = index === state.index;
+ const {
+ options
+ } = descriptors[route.key];
+ const onPress = () => {
+ const event = navigation.emit({
+ type: 'tabPress',
+ target: route.key,
+ canPreventDefault: true
+ });
+ if (!focused && !event.defaultPrevented) {
+ navigation.dispatch({
+ ...CommonActions.navigate({
+ name: route.name,
+ merge: true
+ }),
+ target: state.key
+ });
+ }
+ };
+ const onLongPress = () => {
+ navigation.emit({
+ type: 'tabLongPress',
+ target: route.key
+ });
+ };
+ const label = options.tabBarLabel !== undefined ? options.tabBarLabel : options.title !== undefined ? options.title : route.name;
+ const accessibilityLabel = options.tabBarAccessibilityLabel !== undefined ? options.tabBarAccessibilityLabel : typeof label === 'string' && Platform.OS === 'ios' ? `${label}, tab, ${index + 1} of ${routes.length}` : undefined;
+ return /*#__PURE__*/React.createElement(NavigationContext.Provider, {
+ key: route.key,
+ value: descriptors[route.key].navigation
+ }, /*#__PURE__*/React.createElement(NavigationRouteContext.Provider, {
+ value: route
+ }, /*#__PURE__*/React.createElement(BottomTabItem, {
+ route: route,
+ descriptor: descriptors[route.key],
+ focused: focused,
+ horizontal: hasHorizontalLabels,
+ onPress: onPress,
+ onLongPress: onLongPress,
+ accessibilityLabel: accessibilityLabel,
+ to: buildLink(route.name, route.params),
+ testID: options.tabBarTestID,
+ allowFontScaling: options.tabBarAllowFontScaling,
+ activeTintColor: tabBarActiveTintColor,
+ inactiveTintColor: tabBarInactiveTintColor,
+ activeBackgroundColor: tabBarActiveBackgroundColor,
+ inactiveBackgroundColor: tabBarInactiveBackgroundColor,
+ button: options.tabBarButton,
+ icon: options.tabBarIcon ?? (_ref5 => {
+ let {
+ color,
+ size
+ } = _ref5;
+ return /*#__PURE__*/React.createElement(MissingIcon, {
+ color: color,
+ size: size
+ });
+ }),
+ badge: options.tabBarBadge,
+ badgeStyle: options.tabBarBadgeStyle,
+ label: label,
+ showLabel: tabBarShowLabel,
+ labelStyle: options.tabBarLabelStyle,
+ iconStyle: options.tabBarIconStyle,
+ style: options.tabBarItemStyle
+ })));
+ })));
+}
+const styles = StyleSheet.create({
+ tabBar: {
+ left: 0,
+ right: 0,
+ bottom: 0,
+ borderTopWidth: StyleSheet.hairlineWidth,
+ elevation: 8
+ },
+ content: {
+ flex: 1,
+ flexDirection: 'row'
+ }
+});
+//# sourceMappingURL=BottomTabBar.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabBar.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabBar.js.map
new file mode 100644
index 00000000..7e73972b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabBar.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["MissingIcon","CommonActions","NavigationContext","NavigationRouteContext","useLinkBuilder","useTheme","React","Animated","Platform","StyleSheet","View","useSafeAreaFrame","BottomTabBarHeightCallbackContext","useIsKeyboardShown","BottomTabItem","DEFAULT_TABBAR_HEIGHT","COMPACT_TABBAR_HEIGHT","DEFAULT_MAX_TAB_ITEM_WIDTH","useNativeDriver","OS","shouldUseHorizontalLabels","state","descriptors","layout","dimensions","tabBarLabelPosition","routes","index","key","options","width","maxTabWidth","reduce","acc","route","tabBarItemStyle","flattenedStyle","flatten","maxWidth","height","getPaddingBottom","insets","Math","max","bottom","select","ios","default","getTabBarHeight","style","rest","customHeight","isLandscape","horizontalLabels","paddingBottom","isPad","BottomTabBar","navigation","colors","buildLink","focusedRoute","focusedDescriptor","focusedOptions","tabBarShowLabel","tabBarHideOnKeyboard","tabBarVisibilityAnimationConfig","tabBarStyle","tabBarBackground","tabBarActiveTintColor","tabBarInactiveTintColor","tabBarActiveBackgroundColor","tabBarInactiveBackgroundColor","isKeyboardShown","onHeightChange","useContext","shouldShowTabBar","visibilityAnimationConfigRef","useRef","useEffect","current","isTabBarHidden","setIsTabBarHidden","useState","visible","Value","visibilityAnimationConfig","animation","show","spring","timing","toValue","duration","config","start","finished","hide","stopAnimation","setLayout","handleLayout","e","nativeEvent","tabBarHeight","hasHorizontalLabels","tabBarBackgroundElement","styles","tabBar","backgroundColor","card","borderTopColor","border","transform","translateY","interpolate","inputRange","outputRange","hairlineWidth","position","paddingHorizontal","left","right","absoluteFill","content","map","focused","onPress","event","emit","type","target","canPreventDefault","defaultPrevented","dispatch","navigate","name","merge","onLongPress","label","tabBarLabel","undefined","title","accessibilityLabel","tabBarAccessibilityLabel","length","params","tabBarTestID","tabBarAllowFontScaling","tabBarButton","tabBarIcon","color","size","tabBarBadge","tabBarBadgeStyle","tabBarLabelStyle","tabBarIconStyle","create","borderTopWidth","elevation","flex","flexDirection"],"sourceRoot":"../../src","sources":["BottomTabBar.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabItem.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabItem.js
new file mode 100644
index 00000000..60198d9f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabItem.js
@@ -0,0 +1,176 @@
+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 { Link, useTheme } from '@react-navigation/native';
+import Color from 'color';
+import React from 'react';
+import { Platform, Pressable, StyleSheet, Text } from 'react-native';
+import TabBarIcon from './TabBarIcon';
+export default function BottomTabBarItem(_ref) {
+ let {
+ focused,
+ route,
+ descriptor,
+ label,
+ icon,
+ badge,
+ badgeStyle,
+ to,
+ button = _ref2 => {
+ let {
+ children,
+ style,
+ onPress,
+ to,
+ accessibilityRole,
+ ...rest
+ } = _ref2;
+ if (Platform.OS === 'web' && to) {
+ // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.
+ // We need to use `onClick` to be able to prevent default browser handling of links.
+ return /*#__PURE__*/React.createElement(Link, _extends({}, rest, {
+ to: to,
+ style: [styles.button, style],
+ onPress: e => {
+ if (!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && (
+ // ignore clicks with modifier keys
+ e.button == null || e.button === 0) // ignore everything but left clicks
+ ) {
+ e.preventDefault();
+ onPress === null || onPress === void 0 ? void 0 : onPress(e);
+ }
+ }
+ }), children);
+ } else {
+ return /*#__PURE__*/React.createElement(Pressable, _extends({}, rest, {
+ accessibilityRole: accessibilityRole,
+ onPress: onPress,
+ style: style
+ }), children);
+ }
+ },
+ accessibilityLabel,
+ testID,
+ onPress,
+ onLongPress,
+ horizontal,
+ activeTintColor: customActiveTintColor,
+ inactiveTintColor: customInactiveTintColor,
+ activeBackgroundColor = 'transparent',
+ inactiveBackgroundColor = 'transparent',
+ showLabel = true,
+ allowFontScaling,
+ labelStyle,
+ iconStyle,
+ style
+ } = _ref;
+ const {
+ colors
+ } = useTheme();
+ const activeTintColor = customActiveTintColor === undefined ? colors.primary : customActiveTintColor;
+ const inactiveTintColor = customInactiveTintColor === undefined ? Color(colors.text).mix(Color(colors.card), 0.5).hex() : customInactiveTintColor;
+ const renderLabel = _ref3 => {
+ let {
+ focused
+ } = _ref3;
+ if (showLabel === false) {
+ return null;
+ }
+ const color = focused ? activeTintColor : inactiveTintColor;
+ if (typeof label === 'string') {
+ return /*#__PURE__*/React.createElement(Text, {
+ numberOfLines: 1,
+ style: [styles.label, {
+ color
+ }, horizontal ? styles.labelBeside : styles.labelBeneath, labelStyle],
+ allowFontScaling: allowFontScaling
+ }, label);
+ }
+ const {
+ options
+ } = descriptor;
+ const children = typeof options.tabBarLabel === 'string' ? options.tabBarLabel : options.title !== undefined ? options.title : route.name;
+ return label({
+ focused,
+ color,
+ position: horizontal ? 'beside-icon' : 'below-icon',
+ children
+ });
+ };
+ const renderIcon = _ref4 => {
+ let {
+ focused
+ } = _ref4;
+ if (icon === undefined) {
+ return null;
+ }
+ const activeOpacity = focused ? 1 : 0;
+ const inactiveOpacity = focused ? 0 : 1;
+ return /*#__PURE__*/React.createElement(TabBarIcon, {
+ route: route,
+ horizontal: horizontal,
+ badge: badge,
+ badgeStyle: badgeStyle,
+ activeOpacity: activeOpacity,
+ inactiveOpacity: inactiveOpacity,
+ activeTintColor: activeTintColor,
+ inactiveTintColor: inactiveTintColor,
+ renderIcon: icon,
+ style: iconStyle
+ });
+ };
+ const scene = {
+ route,
+ focused
+ };
+ const backgroundColor = focused ? activeBackgroundColor : inactiveBackgroundColor;
+ return button({
+ to,
+ onPress,
+ onLongPress,
+ testID,
+ accessibilityLabel,
+ // FIXME: accessibilityRole: 'tab' doesn't seem to work as expected on iOS
+ accessibilityRole: Platform.select({
+ ios: 'button',
+ default: 'tab'
+ }),
+ accessibilityState: {
+ selected: focused
+ },
+ // @ts-expect-error: keep for compatibility with older React Native versions
+ accessibilityStates: focused ? ['selected'] : [],
+ style: [styles.tab, {
+ backgroundColor
+ }, horizontal ? styles.tabLandscape : styles.tabPortrait, style],
+ children: /*#__PURE__*/React.createElement(React.Fragment, null, renderIcon(scene), renderLabel(scene))
+ });
+}
+const styles = StyleSheet.create({
+ tab: {
+ flex: 1,
+ alignItems: 'center'
+ },
+ tabPortrait: {
+ justifyContent: 'flex-end',
+ flexDirection: 'column'
+ },
+ tabLandscape: {
+ justifyContent: 'center',
+ flexDirection: 'row'
+ },
+ label: {
+ textAlign: 'center',
+ backgroundColor: 'transparent'
+ },
+ labelBeneath: {
+ fontSize: 10
+ },
+ labelBeside: {
+ fontSize: 13,
+ marginLeft: 20,
+ marginTop: 3
+ },
+ button: {
+ display: 'flex'
+ }
+});
+//# sourceMappingURL=BottomTabItem.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabItem.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabItem.js.map
new file mode 100644
index 00000000..f71681ef
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabItem.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["Link","useTheme","Color","React","Platform","Pressable","StyleSheet","Text","TabBarIcon","BottomTabBarItem","focused","route","descriptor","label","icon","badge","badgeStyle","to","button","children","style","onPress","accessibilityRole","rest","OS","styles","e","metaKey","altKey","ctrlKey","shiftKey","preventDefault","accessibilityLabel","testID","onLongPress","horizontal","activeTintColor","customActiveTintColor","inactiveTintColor","customInactiveTintColor","activeBackgroundColor","inactiveBackgroundColor","showLabel","allowFontScaling","labelStyle","iconStyle","colors","undefined","primary","text","mix","card","hex","renderLabel","color","labelBeside","labelBeneath","options","tabBarLabel","title","name","position","renderIcon","activeOpacity","inactiveOpacity","scene","backgroundColor","select","ios","default","accessibilityState","selected","accessibilityStates","tab","tabLandscape","tabPortrait","create","flex","alignItems","justifyContent","flexDirection","textAlign","fontSize","marginLeft","marginTop","display"],"sourceRoot":"../../src","sources":["BottomTabItem.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabView.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabView.js
new file mode 100644
index 00000000..2b0dc1ce
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabView.js
@@ -0,0 +1,125 @@
+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 { getHeaderTitle, Header, SafeAreaProviderCompat, Screen } from '@react-navigation/elements';
+import * as React from 'react';
+import { Platform, StyleSheet } from 'react-native';
+import { SafeAreaInsetsContext } from 'react-native-safe-area-context';
+import BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';
+import BottomTabBarHeightContext from '../utils/BottomTabBarHeightContext';
+import BottomTabBar, { getTabBarHeight } from './BottomTabBar';
+import { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';
+export default function BottomTabView(props) {
+ const {
+ tabBar = props => /*#__PURE__*/React.createElement(BottomTabBar, props),
+ state,
+ navigation,
+ descriptors,
+ safeAreaInsets,
+ detachInactiveScreens = Platform.OS === 'web' || Platform.OS === 'android' || Platform.OS === 'ios',
+ sceneContainerStyle
+ } = props;
+ const focusedRouteKey = state.routes[state.index].key;
+ const [loaded, setLoaded] = React.useState([focusedRouteKey]);
+ if (!loaded.includes(focusedRouteKey)) {
+ setLoaded([...loaded, focusedRouteKey]);
+ }
+ const dimensions = SafeAreaProviderCompat.initialMetrics.frame;
+ const [tabBarHeight, setTabBarHeight] = React.useState(() => getTabBarHeight({
+ state,
+ descriptors,
+ dimensions,
+ layout: {
+ width: dimensions.width,
+ height: 0
+ },
+ insets: {
+ ...SafeAreaProviderCompat.initialMetrics.insets,
+ ...props.safeAreaInsets
+ },
+ style: descriptors[state.routes[state.index].key].options.tabBarStyle
+ }));
+ const renderTabBar = () => {
+ return /*#__PURE__*/React.createElement(SafeAreaInsetsContext.Consumer, null, insets => tabBar({
+ state: state,
+ descriptors: descriptors,
+ navigation: navigation,
+ insets: {
+ top: (safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.top) ?? (insets === null || insets === void 0 ? void 0 : insets.top) ?? 0,
+ right: (safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.right) ?? (insets === null || insets === void 0 ? void 0 : insets.right) ?? 0,
+ bottom: (safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.bottom) ?? (insets === null || insets === void 0 ? void 0 : insets.bottom) ?? 0,
+ left: (safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.left) ?? (insets === null || insets === void 0 ? void 0 : insets.left) ?? 0
+ }
+ }));
+ };
+ const {
+ routes
+ } = state;
+ return /*#__PURE__*/React.createElement(SafeAreaProviderCompat, null, /*#__PURE__*/React.createElement(MaybeScreenContainer, {
+ enabled: detachInactiveScreens,
+ hasTwoStates: true,
+ style: styles.container
+ }, routes.map((route, index) => {
+ const descriptor = descriptors[route.key];
+ const {
+ lazy = true,
+ unmountOnBlur
+ } = descriptor.options;
+ const isFocused = state.index === index;
+ if (unmountOnBlur && !isFocused) {
+ return null;
+ }
+ if (lazy && !loaded.includes(route.key) && !isFocused) {
+ // Don't render a lazy screen if we've never navigated to it
+ return null;
+ }
+ const {
+ freezeOnBlur,
+ header = _ref => {
+ let {
+ layout,
+ options
+ } = _ref;
+ return /*#__PURE__*/React.createElement(Header, _extends({}, options, {
+ layout: layout,
+ title: getHeaderTitle(options, route.name)
+ }));
+ },
+ headerShown,
+ headerStatusBarHeight,
+ headerTransparent
+ } = descriptor.options;
+ return /*#__PURE__*/React.createElement(MaybeScreen, {
+ key: route.key,
+ style: [StyleSheet.absoluteFill, {
+ zIndex: isFocused ? 0 : -1
+ }],
+ visible: isFocused,
+ enabled: detachInactiveScreens,
+ freezeOnBlur: freezeOnBlur
+ }, /*#__PURE__*/React.createElement(BottomTabBarHeightContext.Provider, {
+ value: tabBarHeight
+ }, /*#__PURE__*/React.createElement(Screen, {
+ focused: isFocused,
+ route: descriptor.route,
+ navigation: descriptor.navigation,
+ headerShown: headerShown,
+ headerStatusBarHeight: headerStatusBarHeight,
+ headerTransparent: headerTransparent,
+ header: header({
+ layout: dimensions,
+ route: descriptor.route,
+ navigation: descriptor.navigation,
+ options: descriptor.options
+ }),
+ style: sceneContainerStyle
+ }, descriptor.render())));
+ })), /*#__PURE__*/React.createElement(BottomTabBarHeightCallbackContext.Provider, {
+ value: setTabBarHeight
+ }, renderTabBar()));
+}
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ overflow: 'hidden'
+ }
+});
+//# sourceMappingURL=BottomTabView.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabView.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabView.js.map
new file mode 100644
index 00000000..53fd069c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/BottomTabView.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["getHeaderTitle","Header","SafeAreaProviderCompat","Screen","React","Platform","StyleSheet","SafeAreaInsetsContext","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","BottomTabBar","getTabBarHeight","MaybeScreen","MaybeScreenContainer","BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","useState","includes","dimensions","initialMetrics","frame","tabBarHeight","setTabBarHeight","layout","width","height","insets","style","options","tabBarStyle","renderTabBar","top","right","bottom","left","styles","container","map","route","descriptor","lazy","unmountOnBlur","isFocused","freezeOnBlur","header","name","headerShown","headerStatusBarHeight","headerTransparent","absoluteFill","zIndex","render","create","flex","overflow"],"sourceRoot":"../../src","sources":["BottomTabView.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/ScreenFallback.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/ScreenFallback.js
new file mode 100644
index 00000000..1d94a8d1
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/ScreenFallback.js
@@ -0,0 +1,40 @@
+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 { ResourceSavingView } from '@react-navigation/elements';
+import * as React from 'react';
+import { View } from 'react-native';
+let Screens;
+try {
+ Screens = require('react-native-screens');
+} catch (e) {
+ // Ignore
+}
+export const MaybeScreenContainer = _ref => {
+ var _Screens, _Screens$screensEnabl;
+ let {
+ enabled,
+ ...rest
+ } = _ref;
+ if ((_Screens = Screens) !== null && _Screens !== void 0 && (_Screens$screensEnabl = _Screens.screensEnabled) !== null && _Screens$screensEnabl !== void 0 && _Screens$screensEnabl.call(_Screens)) {
+ return /*#__PURE__*/React.createElement(Screens.ScreenContainer, _extends({
+ enabled: enabled
+ }, rest));
+ }
+ return /*#__PURE__*/React.createElement(View, rest);
+};
+export function MaybeScreen(_ref2) {
+ var _Screens2, _Screens2$screensEnab;
+ let {
+ visible,
+ children,
+ ...rest
+ } = _ref2;
+ if ((_Screens2 = Screens) !== null && _Screens2 !== void 0 && (_Screens2$screensEnab = _Screens2.screensEnabled) !== null && _Screens2$screensEnab !== void 0 && _Screens2$screensEnab.call(_Screens2)) {
+ return /*#__PURE__*/React.createElement(Screens.Screen, _extends({
+ activityState: visible ? 2 : 0
+ }, rest), children);
+ }
+ return /*#__PURE__*/React.createElement(ResourceSavingView, _extends({
+ visible: visible
+ }, rest), children);
+}
+//# sourceMappingURL=ScreenFallback.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/ScreenFallback.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/ScreenFallback.js.map
new file mode 100644
index 00000000..4966bcfc
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/ScreenFallback.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["ResourceSavingView","React","View","Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"sourceRoot":"../../src","sources":["ScreenFallback.tsx"],"mappings":";AAAA,SAASA,kBAAkB,QAAQ,4BAA4B;AAC/D,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAAoBC,IAAI,QAA8B,cAAc;AAUpE,IAAIC,OAA0D;AAE9D,IAAI;EACFA,OAAO,GAAGC,OAAO,CAAC,sBAAsB,CAAC;AAC3C,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV;AAAA;AAGF,OAAO,MAAMC,oBAAoB,GAAG,QAO9B;EAAA;EAAA,IAP+B;IACnCC,OAAO;IACP,GAAGC;EAKL,CAAC;EACC,gBAAIL,OAAO,8DAAP,SAASM,cAAc,kDAAvB,oCAA2B,EAAE;IAC/B,oBAAO,oBAAC,OAAO,CAAC,eAAe;MAAC,OAAO,EAAEF;IAAQ,GAAKC,IAAI,EAAI;EAChE;EAEA,oBAAO,oBAAC,IAAI,EAAKA,IAAI,CAAI;AAC3B,CAAC;AAED,OAAO,SAASE,WAAW,QAAwC;EAAA;EAAA,IAAvC;IAAEC,OAAO;IAAEC,QAAQ;IAAE,GAAGJ;EAAY,CAAC;EAC/D,iBAAIL,OAAO,+DAAP,UAASM,cAAc,kDAAvB,qCAA2B,EAAE;IAC/B,oBACE,oBAAC,OAAO,CAAC,MAAM;MAAC,aAAa,EAAEE,OAAO,GAAG,CAAC,GAAG;IAAE,GAAKH,IAAI,GACrDI,QAAQ,CACM;EAErB;EAEA,oBACE,oBAAC,kBAAkB;IAAC,OAAO,EAAED;EAAQ,GAAKH,IAAI,GAC3CI,QAAQ,CACU;AAEzB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/TabBarIcon.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/TabBarIcon.js
new file mode 100644
index 00000000..84799100
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/TabBarIcon.js
@@ -0,0 +1,77 @@
+import React from 'react';
+import { StyleSheet, View } from 'react-native';
+import Badge from './Badge';
+export default function TabBarIcon(_ref) {
+ let {
+ route: _,
+ horizontal,
+ badge,
+ badgeStyle,
+ activeOpacity,
+ inactiveOpacity,
+ activeTintColor,
+ inactiveTintColor,
+ renderIcon,
+ style
+ } = _ref;
+ const size = 25;
+
+ // We render the icon twice at the same position on top of each other:
+ // active and inactive one, so we can fade between them.
+ return /*#__PURE__*/React.createElement(View, {
+ style: [horizontal ? styles.iconHorizontal : styles.iconVertical, style]
+ }, /*#__PURE__*/React.createElement(View, {
+ style: [styles.icon, {
+ opacity: activeOpacity
+ }]
+ }, renderIcon({
+ focused: true,
+ size,
+ color: activeTintColor
+ })), /*#__PURE__*/React.createElement(View, {
+ style: [styles.icon, {
+ opacity: inactiveOpacity
+ }]
+ }, renderIcon({
+ focused: false,
+ size,
+ color: inactiveTintColor
+ })), /*#__PURE__*/React.createElement(Badge, {
+ visible: badge != null,
+ style: [styles.badge, horizontal ? styles.badgeHorizontal : styles.badgeVertical, badgeStyle],
+ size: size * 3 / 4
+ }, badge));
+}
+const styles = StyleSheet.create({
+ icon: {
+ // We render the icon twice at the same position on top of each other:
+ // active and inactive one, so we can fade between them:
+ // Cover the whole iconContainer:
+ position: 'absolute',
+ alignSelf: 'center',
+ alignItems: 'center',
+ justifyContent: 'center',
+ height: '100%',
+ width: '100%',
+ // Workaround for react-native >= 0.54 layout bug
+ minWidth: 25
+ },
+ iconVertical: {
+ flex: 1
+ },
+ iconHorizontal: {
+ height: '100%',
+ marginTop: 3
+ },
+ badge: {
+ position: 'absolute',
+ left: 3
+ },
+ badgeVertical: {
+ top: 3
+ },
+ badgeHorizontal: {
+ top: 7
+ }
+});
+//# sourceMappingURL=TabBarIcon.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/TabBarIcon.js.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/TabBarIcon.js.map
new file mode 100644
index 00000000..0c790029
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/module/views/TabBarIcon.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","StyleSheet","View","Badge","TabBarIcon","route","_","horizontal","badge","badgeStyle","activeOpacity","inactiveOpacity","activeTintColor","inactiveTintColor","renderIcon","style","size","styles","iconHorizontal","iconVertical","icon","opacity","focused","color","badgeHorizontal","badgeVertical","create","position","alignSelf","alignItems","justifyContent","height","width","minWidth","flex","marginTop","left","top"],"sourceRoot":"../../src","sources":["TabBarIcon.tsx"],"mappings":"AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAEEC,UAAU,EAEVC,IAAI,QAEC,cAAc;AAErB,OAAOC,KAAK,MAAM,SAAS;AAmB3B,eAAe,SAASC,UAAU,OAWxB;EAAA,IAXyB;IACjCC,KAAK,EAAEC,CAAC;IACRC,UAAU;IACVC,KAAK;IACLC,UAAU;IACVC,aAAa;IACbC,eAAe;IACfC,eAAe;IACfC,iBAAiB;IACjBC,UAAU;IACVC;EACK,CAAC;EACN,MAAMC,IAAI,GAAG,EAAE;;EAEf;EACA;EACA,oBACE,oBAAC,IAAI;IACH,KAAK,EAAE,CAACT,UAAU,GAAGU,MAAM,CAACC,cAAc,GAAGD,MAAM,CAACE,YAAY,EAAEJ,KAAK;EAAE,gBAEzE,oBAAC,IAAI;IAAC,KAAK,EAAE,CAACE,MAAM,CAACG,IAAI,EAAE;MAAEC,OAAO,EAAEX;IAAc,CAAC;EAAE,GACpDI,UAAU,CAAC;IACVQ,OAAO,EAAE,IAAI;IACbN,IAAI;IACJO,KAAK,EAAEX;EACT,CAAC,CAAC,CACG,eACP,oBAAC,IAAI;IAAC,KAAK,EAAE,CAACK,MAAM,CAACG,IAAI,EAAE;MAAEC,OAAO,EAAEV;IAAgB,CAAC;EAAE,GACtDG,UAAU,CAAC;IACVQ,OAAO,EAAE,KAAK;IACdN,IAAI;IACJO,KAAK,EAAEV;EACT,CAAC,CAAC,CACG,eACP,oBAAC,KAAK;IACJ,OAAO,EAAEL,KAAK,IAAI,IAAK;IACvB,KAAK,EAAE,CACLS,MAAM,CAACT,KAAK,EACZD,UAAU,GAAGU,MAAM,CAACO,eAAe,GAAGP,MAAM,CAACQ,aAAa,EAC1DhB,UAAU,CACV;IACF,IAAI,EAAGO,IAAI,GAAG,CAAC,GAAI;EAAE,GAEpBR,KAAK,CACA,CACH;AAEX;AAEA,MAAMS,MAAM,GAAGhB,UAAU,CAACyB,MAAM,CAAC;EAC/BN,IAAI,EAAE;IACJ;IACA;IACA;IACAO,QAAQ,EAAE,UAAU;IACpBC,SAAS,EAAE,QAAQ;IACnBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,MAAM,EAAE,MAAM;IACdC,KAAK,EAAE,MAAM;IACb;IACAC,QAAQ,EAAE;EACZ,CAAC;EACDd,YAAY,EAAE;IACZe,IAAI,EAAE;EACR,CAAC;EACDhB,cAAc,EAAE;IACda,MAAM,EAAE,MAAM;IACdI,SAAS,EAAE;EACb,CAAC;EACD3B,KAAK,EAAE;IACLmB,QAAQ,EAAE,UAAU;IACpBS,IAAI,EAAE;EACR,CAAC;EACDX,aAAa,EAAE;IACbY,GAAG,EAAE;EACP,CAAC;EACDb,eAAe,EAAE;IACfa,GAAG,EAAE;EACP;AACF,CAAC,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/index.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/index.d.ts
new file mode 100644
index 00000000..e8b6b486
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/index.d.ts
@@ -0,0 +1,20 @@
+/**
+ * Navigators
+ */
+export { default as createBottomTabNavigator } from './navigators/createBottomTabNavigator';
+/**
+ * Views
+ */
+export { default as BottomTabBar } from './views/BottomTabBar';
+export { default as BottomTabView } from './views/BottomTabView';
+/**
+ * Utilities
+ */
+export { default as BottomTabBarHeightCallbackContext } from './utils/BottomTabBarHeightCallbackContext';
+export { default as BottomTabBarHeightContext } from './utils/BottomTabBarHeightContext';
+export { default as useBottomTabBarHeight } from './utils/useBottomTabBarHeight';
+/**
+ * Types
+ */
+export type { BottomTabBarButtonProps, BottomTabBarProps, BottomTabHeaderProps, BottomTabNavigationEventMap, BottomTabNavigationOptions, BottomTabNavigationProp, BottomTabScreenProps, } from './types';
+//# sourceMappingURL=index.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/index.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/index.d.ts.map
new file mode 100644
index 00000000..1ffcf00f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAE5F;;GAEG;AACH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEjE;;GAEG;AACH,OAAO,EAAE,OAAO,IAAI,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AACzG,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEjF;;GAEG;AACH,YAAY,EACV,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,SAAS,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/navigators/createBottomTabNavigator.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/navigators/createBottomTabNavigator.d.ts
new file mode 100644
index 00000000..82fe86b0
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/navigators/createBottomTabNavigator.d.ts
@@ -0,0 +1,8 @@
+///
+import { DefaultNavigatorOptions, ParamListBase, TabNavigationState, TabRouterOptions } from '@react-navigation/native';
+import type { BottomTabNavigationConfig, BottomTabNavigationEventMap, BottomTabNavigationOptions } from '../types';
+declare type Props = DefaultNavigatorOptions, BottomTabNavigationOptions, BottomTabNavigationEventMap> & TabRouterOptions & BottomTabNavigationConfig;
+declare function BottomTabNavigator({ id, initialRouteName, backBehavior, children, screenListeners, screenOptions, sceneContainerStyle, ...restWithDeprecated }: Props): JSX.Element;
+declare const _default: () => import("@react-navigation/native").TypedNavigator, BottomTabNavigationOptions, BottomTabNavigationEventMap, typeof BottomTabNavigator>;
+export default _default;
+//# sourceMappingURL=createBottomTabNavigator.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/navigators/createBottomTabNavigator.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/navigators/createBottomTabNavigator.d.ts.map
new file mode 100644
index 00000000..61ae3de5
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/navigators/createBottomTabNavigator.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"createBottomTabNavigator.d.ts","sourceRoot":"","sources":["../../../../src/navigators/createBottomTabNavigator.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,uBAAuB,EACvB,aAAa,EAEb,kBAAkB,EAElB,gBAAgB,EAEjB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,KAAK,EACV,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC3B,MAAM,UAAU,CAAC;AAGlB,aAAK,KAAK,GAAG,uBAAuB,CAClC,aAAa,EACb,kBAAkB,CAAC,aAAa,CAAC,EACjC,0BAA0B,EAC1B,2BAA2B,CAC5B,GACC,gBAAgB,GAChB,yBAAyB,CAAC;AAE5B,iBAAS,kBAAkB,CAAC,EAC1B,EAAE,EACF,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,GAAG,kBAAkB,EACtB,EAAE,KAAK,eAwFP;;AAED,wBAKsB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/types.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/types.d.ts
new file mode 100644
index 00000000..e583bdc6
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/types.d.ts
@@ -0,0 +1,242 @@
+import type { HeaderOptions } from '@react-navigation/elements';
+import type { Descriptor, NavigationHelpers, NavigationProp, ParamListBase, RouteProp, TabActionHelpers, TabNavigationState } from '@react-navigation/native';
+import type * as React from 'react';
+import type { Animated, GestureResponderEvent, StyleProp, TextStyle, TouchableWithoutFeedbackProps, ViewStyle } from 'react-native';
+import type { EdgeInsets } from 'react-native-safe-area-context';
+export declare type Layout = {
+ width: number;
+ height: number;
+};
+export declare type BottomTabNavigationEventMap = {
+ /**
+ * Event which fires on tapping on the tab in the tab bar.
+ */
+ tabPress: {
+ data: undefined;
+ canPreventDefault: true;
+ };
+ /**
+ * Event which fires on long press on the tab in the tab bar.
+ */
+ tabLongPress: {
+ data: undefined;
+ };
+};
+export declare type LabelPosition = 'beside-icon' | 'below-icon';
+export declare type BottomTabNavigationHelpers = NavigationHelpers & TabActionHelpers;
+export declare type BottomTabNavigationProp = NavigationProp, BottomTabNavigationOptions, BottomTabNavigationEventMap> & TabActionHelpers;
+export declare type BottomTabScreenProps = {
+ navigation: BottomTabNavigationProp;
+ route: RouteProp;
+};
+export declare type TimingKeyboardAnimationConfig = {
+ animation: 'timing';
+ config?: Omit, 'toValue' | 'useNativeDriver'>;
+};
+export declare type SpringKeyboardAnimationConfig = {
+ animation: 'spring';
+ config?: Omit, 'toValue' | 'useNativeDriver'>;
+};
+export declare type TabBarVisibilityAnimationConfig = TimingKeyboardAnimationConfig | SpringKeyboardAnimationConfig;
+export declare type BottomTabNavigationOptions = HeaderOptions & {
+ /**
+ * Title text for the screen.
+ */
+ title?: string;
+ /**
+ * Title string of a tab displayed in the tab bar
+ * or a function that given { focused: boolean, color: string, position: 'below-icon' | 'beside-icon', children: string } returns a React.Node to display in tab bar.
+ *
+ * When undefined, scene title is used. Use `tabBarShowLabel` to hide the label.
+ */
+ tabBarLabel?: string | ((props: {
+ focused: boolean;
+ color: string;
+ position: LabelPosition;
+ children: string;
+ }) => React.ReactNode);
+ /**
+ * Whether the tab label should be visible. Defaults to `true`.
+ */
+ tabBarShowLabel?: boolean;
+ /**
+ * Whether the label is shown below the icon or beside the icon.
+ *
+ * - `below-icon`: the label is shown below the icon (typical for iPhones)
+ * - `beside-icon` the label is shown next to the icon (typical for iPad)
+ *
+ * By default, the position is chosen automatically based on device width.
+ */
+ tabBarLabelPosition?: LabelPosition;
+ /**
+ * Style object for the tab label.
+ */
+ tabBarLabelStyle?: StyleProp;
+ /**
+ * Whether label font should scale to respect Text Size accessibility settings.
+ */
+ tabBarAllowFontScaling?: boolean;
+ /**
+ * A function that given { focused: boolean, color: string } returns a React.Node to display in the tab bar.
+ */
+ tabBarIcon?: (props: {
+ focused: boolean;
+ color: string;
+ size: number;
+ }) => React.ReactNode;
+ /**
+ * Style object for the tab icon.
+ */
+ tabBarIconStyle?: StyleProp;
+ /**
+ * Text to show in a badge on the tab icon.
+ */
+ tabBarBadge?: number | string;
+ /**
+ * Custom style for the tab bar badge.
+ * You can specify a background color or text color here.
+ */
+ tabBarBadgeStyle?: StyleProp;
+ /**
+ * Accessibility label for the tab button. This is read by the screen reader when the user taps the tab.
+ * It's recommended to set this if you don't have a label for the tab.
+ */
+ tabBarAccessibilityLabel?: string;
+ /**
+ * ID to locate this tab button in tests.
+ */
+ tabBarTestID?: string;
+ /**
+ * Function which returns a React element to render as the tab bar button.
+ * Renders `Pressable` by default.
+ */
+ tabBarButton?: (props: BottomTabBarButtonProps) => React.ReactNode;
+ /**
+ * Color for the icon and label in the active tab.
+ */
+ tabBarActiveTintColor?: string;
+ /**
+ * Color for the icon and label in the inactive tabs.
+ */
+ tabBarInactiveTintColor?: string;
+ /**
+ * Background color for the active tab.
+ */
+ tabBarActiveBackgroundColor?: string;
+ /**
+ * Background color for the inactive tabs.
+ */
+ tabBarInactiveBackgroundColor?: string;
+ /**
+ * Style object for the tab item container.
+ */
+ tabBarItemStyle?: StyleProp;
+ /**
+ * Whether the tab bar gets hidden when the keyboard is shown. Defaults to `false`.
+ */
+ tabBarHideOnKeyboard?: boolean;
+ /**
+ * Animation config for showing and hiding the tab bar when the keyboard is shown/hidden.
+ */
+ tabBarVisibilityAnimationConfig?: {
+ show?: TabBarVisibilityAnimationConfig;
+ hide?: TabBarVisibilityAnimationConfig;
+ };
+ /**
+ * Style object for the tab bar container.
+ */
+ tabBarStyle?: Animated.WithAnimatedValue>;
+ /**
+ * Function which returns a React Element to use as background for the tab bar.
+ * You could render an image, a gradient, blur view etc.
+ *
+ * When using `BlurView`, make sure to set `position: 'absolute'` in `tabBarStyle` as well.
+ * You'd also need to use `useBottomTabBarHeight()` to add a bottom padding to your content.
+ */
+ tabBarBackground?: () => React.ReactNode;
+ /**
+ * Whether this screens should render the first time it's accessed. Defaults to `true`.
+ * Set it to `false` if you want to render the screen on initial render.
+ */
+ lazy?: boolean;
+ /**
+ * Function that given returns a React Element to display as a header.
+ */
+ header?: (props: BottomTabHeaderProps) => React.ReactNode;
+ /**
+ * Whether to show the header. Setting this to `false` hides the header.
+ * Defaults to `true`.
+ */
+ headerShown?: boolean;
+ /**
+ * Whether this screen should be unmounted when navigating away from it.
+ * Defaults to `false`.
+ */
+ unmountOnBlur?: boolean;
+ /**
+ * Whether inactive screens should be suspended from re-rendering. Defaults to `false`.
+ * Defaults to `true` when `enableFreeze()` is run at the top of the application.
+ * Requires `react-native-screens` version >=3.16.0.
+ *
+ * Only supported on iOS and Android.
+ */
+ freezeOnBlur?: boolean;
+};
+export declare type BottomTabDescriptor = Descriptor, RouteProp>;
+export declare type BottomTabDescriptorMap = Record;
+export declare type BottomTabNavigationConfig = {
+ /**
+ * Function that returns a React element to display as the tab bar.
+ */
+ tabBar?: (props: BottomTabBarProps) => React.ReactNode;
+ /**
+ * Safe area insets for the tab bar. This is used to avoid elements like the navigation bar on Android and bottom safe area on iOS.
+ * By default, the device's safe area insets are automatically detected. You can override the behavior with this option.
+ */
+ safeAreaInsets?: {
+ top?: number;
+ right?: number;
+ bottom?: number;
+ left?: number;
+ };
+ /**
+ * Whether inactive screens should be detached from the view hierarchy to save memory.
+ * Make sure to call `enableScreens` from `react-native-screens` to make it work.
+ * Defaults to `true` on Android.
+ */
+ detachInactiveScreens?: boolean;
+ /**
+ * Style object for the component wrapping the screen content.
+ */
+ sceneContainerStyle?: StyleProp;
+};
+export declare type BottomTabHeaderProps = {
+ /**
+ * Layout of the screen.
+ */
+ layout: Layout;
+ /**
+ * Options for the current screen.
+ */
+ options: BottomTabNavigationOptions;
+ /**
+ * Route object for the current screen.
+ */
+ route: RouteProp;
+ /**
+ * Navigation prop for the header.
+ */
+ navigation: BottomTabNavigationProp;
+};
+export declare type BottomTabBarProps = {
+ state: TabNavigationState;
+ descriptors: BottomTabDescriptorMap;
+ navigation: NavigationHelpers;
+ insets: EdgeInsets;
+};
+export declare type BottomTabBarButtonProps = Omit & {
+ to?: string;
+ children: React.ReactNode;
+ onPress?: (e: React.MouseEvent | GestureResponderEvent) => void;
+};
+//# sourceMappingURL=types.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/types.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/types.d.ts.map
new file mode 100644
index 00000000..5c65f8ec
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/types.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EACV,QAAQ,EACR,qBAAqB,EACrB,SAAS,EACT,SAAS,EACT,6BAA6B,EAC7B,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE,oBAAY,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,oBAAY,2BAA2B,GAAG;IACxC;;OAEG;IACH,QAAQ,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,iBAAiB,EAAE,IAAI,CAAA;KAAE,CAAC;IACvD;;OAEG;IACH,YAAY,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CACnC,CAAC;AAEF,oBAAY,aAAa,GAAG,aAAa,GAAG,YAAY,CAAC;AAEzD,oBAAY,0BAA0B,GAAG,iBAAiB,CACxD,aAAa,EACb,2BAA2B,CAC5B,GACC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAElC,oBAAY,uBAAuB,CACjC,SAAS,SAAS,aAAa,EAC/B,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,EACnD,WAAW,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,IAChD,cAAc,CAChB,SAAS,EACT,SAAS,EACT,WAAW,EACX,kBAAkB,CAAC,SAAS,CAAC,EAC7B,0BAA0B,EAC1B,2BAA2B,CAC5B,GACC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAE9B,oBAAY,oBAAoB,CAC9B,SAAS,SAAS,aAAa,EAC/B,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,EACnD,WAAW,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,IAChD;IACF,UAAU,EAAE,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACvE,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CACxC,CAAC;AAEF,oBAAY,6BAA6B,GAAG;IAC1C,SAAS,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EACvC,SAAS,GAAG,iBAAiB,CAC9B,CAAC;CACH,CAAC;AAEF,oBAAY,6BAA6B,GAAG;IAC1C,SAAS,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CACX,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EACvC,SAAS,GAAG,iBAAiB,CAC9B,CAAC;CACH,CAAC;AAEF,oBAAY,+BAA+B,GACvC,6BAA6B,GAC7B,6BAA6B,CAAC;AAElC,oBAAY,0BAA0B,GAAG,aAAa,GAAG;IACvD;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,WAAW,CAAC,EACR,MAAM,GACN,CAAC,CAAC,KAAK,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,aAAa,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;KAClB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAE3B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,aAAa,CAAC;IAEpC;;OAEG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAExC;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,KAAK,CAAC,SAAS,CAAC;IAEtB;;OAEG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEvC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAExC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,KAAK,CAAC,SAAS,CAAC;IAEnE;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,6BAA6B,CAAC,EAAE,MAAM,CAAC;IAEvC;;OAEG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEvC;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,+BAA+B,CAAC,EAAE;QAChC,IAAI,CAAC,EAAE,+BAA+B,CAAC;QACvC,IAAI,CAAC,EAAE,+BAA+B,CAAC;KACxC,CAAC;IAEF;;OAEG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAE/D;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAEzC;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,KAAK,CAAC,SAAS,CAAC;IAE1D;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,oBAAY,mBAAmB,GAAG,UAAU,CAC1C,0BAA0B,EAC1B,uBAAuB,CAAC,aAAa,CAAC,EACtC,SAAS,CAAC,aAAa,CAAC,CACzB,CAAC;AAEF,oBAAY,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEzE,oBAAY,yBAAyB,GAAG;IACtC;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAC;IACvD;;;OAGG;IACH,cAAc,CAAC,EAAE;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC5C,CAAC;AAEF,oBAAY,oBAAoB,GAAG;IACjC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,0BAA0B,CAAC;IACpC;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAChC;;OAEG;IACH,UAAU,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;CACpD,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC9B,KAAK,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACzC,WAAW,EAAE,sBAAsB,CAAC;IACpC,UAAU,EAAE,iBAAiB,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;IAC1E,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,oBAAY,uBAAuB,GAAG,IAAI,CACxC,6BAA6B,EAC7B,SAAS,CACV,GAAG;IACF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,CACR,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,qBAAqB,KACvE,IAAI,CAAC;CACX,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightCallbackContext.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightCallbackContext.d.ts
new file mode 100644
index 00000000..cf890915
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightCallbackContext.d.ts
@@ -0,0 +1,4 @@
+import * as React from 'react';
+declare const _default: React.Context<((height: number) => void) | undefined>;
+export default _default;
+//# sourceMappingURL=BottomTabBarHeightCallbackContext.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightCallbackContext.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightCallbackContext.d.ts.map
new file mode 100644
index 00000000..90460f7f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightCallbackContext.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"BottomTabBarHeightCallbackContext.d.ts","sourceRoot":"","sources":["../../../../src/utils/BottomTabBarHeightCallbackContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;gDAEc,MAAM,KAAK,IAAI;AAA5D,wBAEE"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightContext.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightContext.d.ts
new file mode 100644
index 00000000..f8588f38
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightContext.d.ts
@@ -0,0 +1,4 @@
+import * as React from 'react';
+declare const _default: React.Context;
+export default _default;
+//# sourceMappingURL=BottomTabBarHeightContext.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightContext.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightContext.d.ts.map
new file mode 100644
index 00000000..fc3995d3
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/BottomTabBarHeightContext.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"BottomTabBarHeightContext.d.ts","sourceRoot":"","sources":["../../../../src/utils/BottomTabBarHeightContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;;AAE/B,wBAAkE"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useBottomTabBarHeight.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useBottomTabBarHeight.d.ts
new file mode 100644
index 00000000..4c12cd5e
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useBottomTabBarHeight.d.ts
@@ -0,0 +1,2 @@
+export default function useBottomTabBarHeight(): number;
+//# sourceMappingURL=useBottomTabBarHeight.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useBottomTabBarHeight.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useBottomTabBarHeight.d.ts.map
new file mode 100644
index 00000000..af533f45
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useBottomTabBarHeight.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"useBottomTabBarHeight.d.ts","sourceRoot":"","sources":["../../../../src/utils/useBottomTabBarHeight.tsx"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,qBAAqB,WAU5C"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useIsKeyboardShown.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useIsKeyboardShown.d.ts
new file mode 100644
index 00000000..09ce70aa
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useIsKeyboardShown.d.ts
@@ -0,0 +1,2 @@
+export default function useIsKeyboardShown(): boolean;
+//# sourceMappingURL=useIsKeyboardShown.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useIsKeyboardShown.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useIsKeyboardShown.d.ts.map
new file mode 100644
index 00000000..b214432b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/utils/useIsKeyboardShown.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"useIsKeyboardShown.d.ts","sourceRoot":"","sources":["../../../../src/utils/useIsKeyboardShown.tsx"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,kBAAkB,YA2BzC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/Badge.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/Badge.d.ts
new file mode 100644
index 00000000..67e27c35
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/Badge.d.ts
@@ -0,0 +1,23 @@
+///
+import { Animated, StyleProp, TextStyle } from 'react-native';
+declare type Props = {
+ /**
+ * Whether the badge is visible
+ */
+ visible: boolean;
+ /**
+ * Content of the `Badge`.
+ */
+ children?: string | number;
+ /**
+ * Size of the `Badge`.
+ */
+ size?: number;
+ /**
+ * Style object for the tab bar container.
+ */
+ style?: Animated.WithAnimatedValue>;
+};
+export default function Badge({ children, style, visible, size, ...rest }: Props): JSX.Element | null;
+export {};
+//# sourceMappingURL=Badge.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/Badge.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/Badge.d.ts.map
new file mode 100644
index 00000000..d2ecfeca
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/Badge.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../../src/views/Badge.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAc,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1E,aAAK,KAAK,GAAG;IACX;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,OAAc,EACd,IAAS,EACT,GAAG,IAAI,EACR,EAAE,KAAK,sBAsEP"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabBar.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabBar.d.ts
new file mode 100644
index 00000000..1b1452de
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabBar.d.ts
@@ -0,0 +1,27 @@
+///
+import { ParamListBase, TabNavigationState } from '@react-navigation/native';
+import { Animated, StyleProp, ViewStyle } from 'react-native';
+import { EdgeInsets } from 'react-native-safe-area-context';
+import type { BottomTabBarProps, BottomTabDescriptorMap } from '../types';
+declare type Props = BottomTabBarProps & {
+ style?: Animated.WithAnimatedValue>;
+};
+declare type Options = {
+ state: TabNavigationState;
+ descriptors: BottomTabDescriptorMap;
+ layout: {
+ height: number;
+ width: number;
+ };
+ dimensions: {
+ height: number;
+ width: number;
+ };
+};
+export declare const getTabBarHeight: ({ state, descriptors, dimensions, insets, style, ...rest }: Options & {
+ insets: EdgeInsets;
+ style: Animated.WithAnimatedValue> | undefined;
+}) => number;
+export default function BottomTabBar({ state, navigation, descriptors, insets, style, }: Props): JSX.Element;
+export {};
+//# sourceMappingURL=BottomTabBar.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabBar.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabBar.d.ts.map
new file mode 100644
index 00000000..c36a0b79
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabBar.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"BottomTabBar.d.ts","sourceRoot":"","sources":["../../../../src/views/BottomTabBar.tsx"],"names":[],"mappings":";AACA,OAAO,EAIL,aAAa,EACb,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,QAAQ,EAGR,SAAS,EAGT,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAoB,MAAM,gCAAgC,CAAC;AAE9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAK1E,aAAK,KAAK,GAAG,iBAAiB,GAAG;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;CAC1D,CAAC;AAQF,aAAK,OAAO,GAAG;IACb,KAAK,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACzC,WAAW,EAAE,sBAAsB,CAAC;IACpC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C,CAAC;AA8CF,eAAO,MAAM,eAAe;YAQlB,UAAU;WACX,SAAS,iBAAiB,CAAC,UAAU,SAAS,CAAC,CAAC,GAAG,SAAS;YA4BpE,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,KAAK,EACL,UAAU,EACV,WAAW,EACX,MAAM,EACN,KAAK,GACN,EAAE,KAAK,eAoPP"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabItem.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabItem.d.ts
new file mode 100644
index 00000000..2d0abf56
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabItem.d.ts
@@ -0,0 +1,111 @@
+import { Route } from '@react-navigation/native';
+import React from 'react';
+import { GestureResponderEvent, StyleProp, TextStyle, ViewStyle } from 'react-native';
+import type { BottomTabBarButtonProps, BottomTabDescriptor, LabelPosition } from '../types';
+declare type Props = {
+ /**
+ * Whether the tab is focused.
+ */
+ focused: boolean;
+ /**
+ * The route object which should be specified by the tab.
+ */
+ route: Route;
+ /**
+ * The descriptor object for the route.
+ */
+ descriptor: BottomTabDescriptor;
+ /**
+ * The label text of the tab.
+ */
+ label: string | ((props: {
+ focused: boolean;
+ color: string;
+ position: LabelPosition;
+ children: string;
+ }) => React.ReactNode);
+ /**
+ * Icon to display for the tab.
+ */
+ icon: (props: {
+ focused: boolean;
+ size: number;
+ color: string;
+ }) => React.ReactNode;
+ /**
+ * Text to show in a badge on the tab icon.
+ */
+ badge?: number | string;
+ /**
+ * Custom style for the badge.
+ */
+ badgeStyle?: StyleProp;
+ /**
+ * URL to use for the link to the tab.
+ */
+ to?: string;
+ /**
+ * The button for the tab. Uses a `TouchableWithoutFeedback` by default.
+ */
+ button?: (props: BottomTabBarButtonProps) => React.ReactNode;
+ /**
+ * The accessibility label for the tab.
+ */
+ accessibilityLabel?: string;
+ /**
+ * An unique ID for testing for the tab.
+ */
+ testID?: string;
+ /**
+ * Function to execute on press in React Native.
+ * On the web, this will use onClick.
+ */
+ onPress: (e: React.MouseEvent | GestureResponderEvent) => void;
+ /**
+ * Function to execute on long press.
+ */
+ onLongPress: (e: GestureResponderEvent) => void;
+ /**
+ * Whether the label should be aligned with the icon horizontally.
+ */
+ horizontal: boolean;
+ /**
+ * Color for the icon and label when the item is active.
+ */
+ activeTintColor?: string;
+ /**
+ * Color for the icon and label when the item is inactive.
+ */
+ inactiveTintColor?: string;
+ /**
+ * Background color for item when its active.
+ */
+ activeBackgroundColor?: string;
+ /**
+ * Background color for item when its inactive.
+ */
+ inactiveBackgroundColor?: string;
+ /**
+ * Whether to show the label text for the tab.
+ */
+ showLabel?: boolean;
+ /**
+ * Whether to allow scaling the font for the label for accessibility purposes.
+ */
+ allowFontScaling?: boolean;
+ /**
+ * Style object for the label element.
+ */
+ labelStyle?: StyleProp;
+ /**
+ * Style object for the icon element.
+ */
+ iconStyle?: StyleProp;
+ /**
+ * Style object for the wrapper element.
+ */
+ style?: StyleProp;
+};
+export default function BottomTabBarItem({ focused, route, descriptor, label, icon, badge, badgeStyle, to, button, accessibilityLabel, testID, onPress, onLongPress, horizontal, activeTintColor: customActiveTintColor, inactiveTintColor: customInactiveTintColor, activeBackgroundColor, inactiveBackgroundColor, showLabel, allowFontScaling, labelStyle, iconStyle, style, }: Props): React.ReactElement>;
+export {};
+//# sourceMappingURL=BottomTabItem.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabItem.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabItem.d.ts.map
new file mode 100644
index 00000000..588b8d89
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabItem.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"BottomTabItem.d.ts","sourceRoot":"","sources":["../../../../src/views/BottomTabItem.tsx"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabView.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabView.d.ts
new file mode 100644
index 00000000..1cc857aa
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabView.d.ts
@@ -0,0 +1,11 @@
+///
+import type { ParamListBase, TabNavigationState } from '@react-navigation/native';
+import type { BottomTabDescriptorMap, BottomTabNavigationConfig, BottomTabNavigationHelpers } from '../types';
+declare type Props = BottomTabNavigationConfig & {
+ state: TabNavigationState;
+ navigation: BottomTabNavigationHelpers;
+ descriptors: BottomTabDescriptorMap;
+};
+export default function BottomTabView(props: Props): JSX.Element;
+export {};
+//# sourceMappingURL=BottomTabView.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabView.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabView.d.ts.map
new file mode 100644
index 00000000..f3bf19e5
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/BottomTabView.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"BottomTabView.d.ts","sourceRoot":"","sources":["../../../../src/views/BottomTabView.tsx"],"names":[],"mappings":";AAMA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EAEV,sBAAsB,EAEtB,yBAAyB,EACzB,0BAA0B,EAE3B,MAAM,UAAU,CAAC;AAMlB,aAAK,KAAK,GAAG,yBAAyB,GAAG;IACvC,KAAK,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACzC,UAAU,EAAE,0BAA0B,CAAC;IACvC,WAAW,EAAE,sBAAsB,CAAC;CACrC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAAK,EAAE,KAAK,eAiIjD"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/ScreenFallback.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/ScreenFallback.d.ts
new file mode 100644
index 00000000..8810359c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/ScreenFallback.d.ts
@@ -0,0 +1,17 @@
+import * as React from 'react';
+import { StyleProp, ViewProps, ViewStyle } from 'react-native';
+declare type Props = {
+ visible: boolean;
+ children: React.ReactNode;
+ enabled: boolean;
+ freezeOnBlur?: boolean;
+ style?: StyleProp;
+};
+export declare const MaybeScreenContainer: ({ enabled, ...rest }: ViewProps & {
+ enabled: boolean;
+ hasTwoStates: boolean;
+ children: React.ReactNode;
+}) => JSX.Element;
+export declare function MaybeScreen({ visible, children, ...rest }: Props): JSX.Element;
+export {};
+//# sourceMappingURL=ScreenFallback.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/ScreenFallback.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/ScreenFallback.d.ts.map
new file mode 100644
index 00000000..4e5000b2
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/ScreenFallback.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ScreenFallback.d.ts","sourceRoot":"","sources":["../../../../src/views/ScreenFallback.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAQ,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAErE,aAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC;AAUF,eAAO,MAAM,oBAAoB;aAItB,OAAO;kBACF,OAAO;cACX,MAAM,SAAS;iBAO1B,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,eAchE"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/TabBarIcon.d.ts b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/TabBarIcon.d.ts
new file mode 100644
index 00000000..f8aef8e5
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/TabBarIcon.d.ts
@@ -0,0 +1,22 @@
+import type { Route } from '@react-navigation/native';
+import React from 'react';
+import { StyleProp, TextStyle, ViewStyle } from 'react-native';
+declare type Props = {
+ route: Route;
+ horizontal: boolean;
+ badge?: string | number;
+ badgeStyle?: StyleProp;
+ activeOpacity: number;
+ inactiveOpacity: number;
+ activeTintColor: string;
+ inactiveTintColor: string;
+ renderIcon: (props: {
+ focused: boolean;
+ color: string;
+ size: number;
+ }) => React.ReactNode;
+ style: StyleProp;
+};
+export default function TabBarIcon({ route: _, horizontal, badge, badgeStyle, activeOpacity, inactiveOpacity, activeTintColor, inactiveTintColor, renderIcon, style, }: Props): JSX.Element;
+export {};
+//# sourceMappingURL=TabBarIcon.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/TabBarIcon.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/TabBarIcon.d.ts.map
new file mode 100644
index 00000000..ea4f128b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/lib/typescript/src/views/TabBarIcon.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"TabBarIcon.d.ts","sourceRoot":"","sources":["../../../../src/views/TabBarIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,SAAS,EAET,SAAS,EAET,SAAS,EACV,MAAM,cAAc,CAAC;AAItB,aAAK,KAAK,GAAG;IACX,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,CAAC,KAAK,EAAE;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,KAAK,EAAE,CAAC,EACR,UAAU,EACV,KAAK,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,KAAK,GACN,EAAE,KAAK,eAoCP"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/CHANGELOG.md b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/CHANGELOG.md
new file mode 100644
index 00000000..0a7bce4f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/CHANGELOG.md
@@ -0,0 +1,54 @@
+# 1.0.0 - 2016-01-07
+
+- Removed: unused speed test
+- Added: Automatic routing between previously unsupported conversions
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Removed: `xxx2xxx()` and `xxx2xxxRaw()` functions
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Removed: `convert()` class
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Changed: all functions to lookup dictionary
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Changed: `ansi` to `ansi256`
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Fixed: argument grouping for functions requiring only one argument
+([#27](https://github.com/Qix-/color-convert/pull/27))
+
+# 0.6.0 - 2015-07-23
+
+- Added: methods to handle
+[ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) 16/256 colors:
+ - rgb2ansi16
+ - rgb2ansi
+ - hsl2ansi16
+ - hsl2ansi
+ - hsv2ansi16
+ - hsv2ansi
+ - hwb2ansi16
+ - hwb2ansi
+ - cmyk2ansi16
+ - cmyk2ansi
+ - keyword2ansi16
+ - keyword2ansi
+ - ansi162rgb
+ - ansi162hsl
+ - ansi162hsv
+ - ansi162hwb
+ - ansi162cmyk
+ - ansi162keyword
+ - ansi2rgb
+ - ansi2hsl
+ - ansi2hsv
+ - ansi2hwb
+ - ansi2cmyk
+ - ansi2keyword
+([#18](https://github.com/harthur/color-convert/pull/18))
+
+# 0.5.3 - 2015-06-02
+
+- Fixed: hsl2hsv does not return `NaN` anymore when using `[0,0,0]`
+([#15](https://github.com/harthur/color-convert/issues/15))
+
+---
+
+Check out commit logs for older releases
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/LICENSE b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/LICENSE
new file mode 100644
index 00000000..5b4c386f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/LICENSE
@@ -0,0 +1,21 @@
+Copyright (c) 2011-2016 Heather Arthur
+
+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-navigation/bottom-tabs/node_modules/color-convert/README.md b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/README.md
new file mode 100644
index 00000000..d4b08fc3
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/README.md
@@ -0,0 +1,68 @@
+# color-convert
+
+[](https://travis-ci.org/Qix-/color-convert)
+
+Color-convert is a color conversion library for JavaScript and node.
+It converts all ways between `rgb`, `hsl`, `hsv`, `hwb`, `cmyk`, `ansi`, `ansi16`, `hex` strings, and CSS `keyword`s (will round to closest):
+
+```js
+var convert = require('color-convert');
+
+convert.rgb.hsl(140, 200, 100); // [96, 48, 59]
+convert.keyword.rgb('blue'); // [0, 0, 255]
+
+var rgbChannels = convert.rgb.channels; // 3
+var cmykChannels = convert.cmyk.channels; // 4
+var ansiChannels = convert.ansi16.channels; // 1
+```
+
+# Install
+
+```console
+$ npm install color-convert
+```
+
+# API
+
+Simply get the property of the _from_ and _to_ conversion that you're looking for.
+
+All functions have a rounded and unrounded variant. By default, return values are rounded. To get the unrounded (raw) results, simply tack on `.raw` to the function.
+
+All 'from' functions have a hidden property called `.channels` that indicates the number of channels the function expects (not including alpha).
+
+```js
+var convert = require('color-convert');
+
+// Hex to LAB
+convert.hex.lab('DEADBF'); // [ 76, 21, -2 ]
+convert.hex.lab.raw('DEADBF'); // [ 75.56213190997677, 20.653827952644754, -2.290532499330533 ]
+
+// RGB to CMYK
+convert.rgb.cmyk(167, 255, 4); // [ 35, 0, 98, 0 ]
+convert.rgb.cmyk.raw(167, 255, 4); // [ 34.509803921568626, 0, 98.43137254901961, 0 ]
+```
+
+### Arrays
+All functions that accept multiple arguments also support passing an array.
+
+Note that this does **not** apply to functions that convert from a color that only requires one value (e.g. `keyword`, `ansi256`, `hex`, etc.)
+
+```js
+var convert = require('color-convert');
+
+convert.rgb.hex(123, 45, 67); // '7B2D43'
+convert.rgb.hex([123, 45, 67]); // '7B2D43'
+```
+
+## Routing
+
+Conversions that don't have an _explicitly_ defined conversion (in [conversions.js](conversions.js)), but can be converted by means of sub-conversions (e.g. XYZ -> **RGB** -> CMYK), are automatically routed together. This allows just about any color model supported by `color-convert` to be converted to any other model, so long as a sub-conversion path exists. This is also true for conversions requiring more than one step in between (e.g. LCH -> **LAB** -> **XYZ** -> **RGB** -> Hex).
+
+Keep in mind that extensive conversions _may_ result in a loss of precision, and exist only to be complete. For a list of "direct" (single-step) conversions, see [conversions.js](conversions.js).
+
+# Contribute
+
+If there is a new model you would like to support, or want to add a direct conversion between two existing models, please send us a pull request.
+
+# License
+Copyright © 2011-2016, Heather Arthur and Josh Junon. Licensed under the [MIT License](LICENSE).
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/conversions.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/conversions.js
new file mode 100644
index 00000000..2657f265
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/conversions.js
@@ -0,0 +1,839 @@
+/* MIT license */
+/* eslint-disable no-mixed-operators */
+const cssKeywords = require('color-name');
+
+// NOTE: conversions should only return primitive values (i.e. arrays, or
+// values that give correct `typeof` results).
+// do not use box values types (i.e. Number(), String(), etc.)
+
+const reverseKeywords = {};
+for (const key of Object.keys(cssKeywords)) {
+ reverseKeywords[cssKeywords[key]] = key;
+}
+
+const convert = {
+ rgb: {channels: 3, labels: 'rgb'},
+ hsl: {channels: 3, labels: 'hsl'},
+ hsv: {channels: 3, labels: 'hsv'},
+ hwb: {channels: 3, labels: 'hwb'},
+ cmyk: {channels: 4, labels: 'cmyk'},
+ xyz: {channels: 3, labels: 'xyz'},
+ lab: {channels: 3, labels: 'lab'},
+ lch: {channels: 3, labels: 'lch'},
+ hex: {channels: 1, labels: ['hex']},
+ keyword: {channels: 1, labels: ['keyword']},
+ ansi16: {channels: 1, labels: ['ansi16']},
+ ansi256: {channels: 1, labels: ['ansi256']},
+ hcg: {channels: 3, labels: ['h', 'c', 'g']},
+ apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
+ gray: {channels: 1, labels: ['gray']}
+};
+
+module.exports = convert;
+
+// Hide .channels and .labels properties
+for (const model of Object.keys(convert)) {
+ if (!('channels' in convert[model])) {
+ throw new Error('missing channels property: ' + model);
+ }
+
+ if (!('labels' in convert[model])) {
+ throw new Error('missing channel labels property: ' + model);
+ }
+
+ if (convert[model].labels.length !== convert[model].channels) {
+ throw new Error('channel and label counts mismatch: ' + model);
+ }
+
+ const {channels, labels} = convert[model];
+ delete convert[model].channels;
+ delete convert[model].labels;
+ Object.defineProperty(convert[model], 'channels', {value: channels});
+ Object.defineProperty(convert[model], 'labels', {value: labels});
+}
+
+convert.rgb.hsl = function (rgb) {
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
+ const min = Math.min(r, g, b);
+ const max = Math.max(r, g, b);
+ const delta = max - min;
+ let h;
+ let s;
+
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
+
+ h = Math.min(h * 60, 360);
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ const l = (min + max) / 2;
+
+ if (max === min) {
+ s = 0;
+ } else if (l <= 0.5) {
+ s = delta / (max + min);
+ } else {
+ s = delta / (2 - max - min);
+ }
+
+ return [h, s * 100, l * 100];
+};
+
+convert.rgb.hsv = function (rgb) {
+ let rdif;
+ let gdif;
+ let bdif;
+ let h;
+ let s;
+
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
+ const v = Math.max(r, g, b);
+ const diff = v - Math.min(r, g, b);
+ const diffc = function (c) {
+ return (v - c) / 6 / diff + 1 / 2;
+ };
+
+ if (diff === 0) {
+ h = 0;
+ s = 0;
+ } else {
+ s = diff / v;
+ rdif = diffc(r);
+ gdif = diffc(g);
+ bdif = diffc(b);
+
+ if (r === v) {
+ h = bdif - gdif;
+ } else if (g === v) {
+ h = (1 / 3) + rdif - bdif;
+ } else if (b === v) {
+ h = (2 / 3) + gdif - rdif;
+ }
+
+ if (h < 0) {
+ h += 1;
+ } else if (h > 1) {
+ h -= 1;
+ }
+ }
+
+ return [
+ h * 360,
+ s * 100,
+ v * 100
+ ];
+};
+
+convert.rgb.hwb = function (rgb) {
+ const r = rgb[0];
+ const g = rgb[1];
+ let b = rgb[2];
+ const h = convert.rgb.hsl(rgb)[0];
+ const w = 1 / 255 * Math.min(r, Math.min(g, b));
+
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
+
+ return [h, w * 100, b * 100];
+};
+
+convert.rgb.cmyk = function (rgb) {
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
+
+ const k = Math.min(1 - r, 1 - g, 1 - b);
+ const c = (1 - r - k) / (1 - k) || 0;
+ const m = (1 - g - k) / (1 - k) || 0;
+ const y = (1 - b - k) / (1 - k) || 0;
+
+ return [c * 100, m * 100, y * 100, k * 100];
+};
+
+function comparativeDistance(x, y) {
+ /*
+ See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
+ */
+ return (
+ ((x[0] - y[0]) ** 2) +
+ ((x[1] - y[1]) ** 2) +
+ ((x[2] - y[2]) ** 2)
+ );
+}
+
+convert.rgb.keyword = function (rgb) {
+ const reversed = reverseKeywords[rgb];
+ if (reversed) {
+ return reversed;
+ }
+
+ let currentClosestDistance = Infinity;
+ let currentClosestKeyword;
+
+ for (const keyword of Object.keys(cssKeywords)) {
+ const value = cssKeywords[keyword];
+
+ // Compute comparative distance
+ const distance = comparativeDistance(rgb, value);
+
+ // Check if its less, if so set as closest
+ if (distance < currentClosestDistance) {
+ currentClosestDistance = distance;
+ currentClosestKeyword = keyword;
+ }
+ }
+
+ return currentClosestKeyword;
+};
+
+convert.keyword.rgb = function (keyword) {
+ return cssKeywords[keyword];
+};
+
+convert.rgb.xyz = function (rgb) {
+ let r = rgb[0] / 255;
+ let g = rgb[1] / 255;
+ let b = rgb[2] / 255;
+
+ // Assume sRGB
+ r = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);
+ g = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);
+ b = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);
+
+ const x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
+ const y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
+ const z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
+
+ return [x * 100, y * 100, z * 100];
+};
+
+convert.rgb.lab = function (rgb) {
+ const xyz = convert.rgb.xyz(rgb);
+ let x = xyz[0];
+ let y = xyz[1];
+ let z = xyz[2];
+
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+
+ x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);
+ y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);
+ z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);
+
+ const l = (116 * y) - 16;
+ const a = 500 * (x - y);
+ const b = 200 * (y - z);
+
+ return [l, a, b];
+};
+
+convert.hsl.rgb = function (hsl) {
+ const h = hsl[0] / 360;
+ const s = hsl[1] / 100;
+ const l = hsl[2] / 100;
+ let t2;
+ let t3;
+ let val;
+
+ if (s === 0) {
+ val = l * 255;
+ return [val, val, val];
+ }
+
+ if (l < 0.5) {
+ t2 = l * (1 + s);
+ } else {
+ t2 = l + s - l * s;
+ }
+
+ const t1 = 2 * l - t2;
+
+ const rgb = [0, 0, 0];
+ for (let i = 0; i < 3; i++) {
+ t3 = h + 1 / 3 * -(i - 1);
+ if (t3 < 0) {
+ t3++;
+ }
+
+ if (t3 > 1) {
+ t3--;
+ }
+
+ if (6 * t3 < 1) {
+ val = t1 + (t2 - t1) * 6 * t3;
+ } else if (2 * t3 < 1) {
+ val = t2;
+ } else if (3 * t3 < 2) {
+ val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
+ } else {
+ val = t1;
+ }
+
+ rgb[i] = val * 255;
+ }
+
+ return rgb;
+};
+
+convert.hsl.hsv = function (hsl) {
+ const h = hsl[0];
+ let s = hsl[1] / 100;
+ let l = hsl[2] / 100;
+ let smin = s;
+ const lmin = Math.max(l, 0.01);
+
+ l *= 2;
+ s *= (l <= 1) ? l : 2 - l;
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
+ const v = (l + s) / 2;
+ const sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
+
+ return [h, sv * 100, v * 100];
+};
+
+convert.hsv.rgb = function (hsv) {
+ const h = hsv[0] / 60;
+ const s = hsv[1] / 100;
+ let v = hsv[2] / 100;
+ const hi = Math.floor(h) % 6;
+
+ const f = h - Math.floor(h);
+ const p = 255 * v * (1 - s);
+ const q = 255 * v * (1 - (s * f));
+ const t = 255 * v * (1 - (s * (1 - f)));
+ v *= 255;
+
+ switch (hi) {
+ case 0:
+ return [v, t, p];
+ case 1:
+ return [q, v, p];
+ case 2:
+ return [p, v, t];
+ case 3:
+ return [p, q, v];
+ case 4:
+ return [t, p, v];
+ case 5:
+ return [v, p, q];
+ }
+};
+
+convert.hsv.hsl = function (hsv) {
+ const h = hsv[0];
+ const s = hsv[1] / 100;
+ const v = hsv[2] / 100;
+ const vmin = Math.max(v, 0.01);
+ let sl;
+ let l;
+
+ l = (2 - s) * v;
+ const lmin = (2 - s) * vmin;
+ sl = s * vmin;
+ sl /= (lmin <= 1) ? lmin : 2 - lmin;
+ sl = sl || 0;
+ l /= 2;
+
+ return [h, sl * 100, l * 100];
+};
+
+// http://dev.w3.org/csswg/css-color/#hwb-to-rgb
+convert.hwb.rgb = function (hwb) {
+ const h = hwb[0] / 360;
+ let wh = hwb[1] / 100;
+ let bl = hwb[2] / 100;
+ const ratio = wh + bl;
+ let f;
+
+ // Wh + bl cant be > 1
+ if (ratio > 1) {
+ wh /= ratio;
+ bl /= ratio;
+ }
+
+ const i = Math.floor(6 * h);
+ const v = 1 - bl;
+ f = 6 * h - i;
+
+ if ((i & 0x01) !== 0) {
+ f = 1 - f;
+ }
+
+ const n = wh + f * (v - wh); // Linear interpolation
+
+ let r;
+ let g;
+ let b;
+ /* eslint-disable max-statements-per-line,no-multi-spaces */
+ switch (i) {
+ default:
+ case 6:
+ case 0: r = v; g = n; b = wh; break;
+ case 1: r = n; g = v; b = wh; break;
+ case 2: r = wh; g = v; b = n; break;
+ case 3: r = wh; g = n; b = v; break;
+ case 4: r = n; g = wh; b = v; break;
+ case 5: r = v; g = wh; b = n; break;
+ }
+ /* eslint-enable max-statements-per-line,no-multi-spaces */
+
+ return [r * 255, g * 255, b * 255];
+};
+
+convert.cmyk.rgb = function (cmyk) {
+ const c = cmyk[0] / 100;
+ const m = cmyk[1] / 100;
+ const y = cmyk[2] / 100;
+ const k = cmyk[3] / 100;
+
+ const r = 1 - Math.min(1, c * (1 - k) + k);
+ const g = 1 - Math.min(1, m * (1 - k) + k);
+ const b = 1 - Math.min(1, y * (1 - k) + k);
+
+ return [r * 255, g * 255, b * 255];
+};
+
+convert.xyz.rgb = function (xyz) {
+ const x = xyz[0] / 100;
+ const y = xyz[1] / 100;
+ const z = xyz[2] / 100;
+ let r;
+ let g;
+ let b;
+
+ r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
+ g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
+ b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
+
+ // Assume sRGB
+ r = r > 0.0031308
+ ? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)
+ : r * 12.92;
+
+ g = g > 0.0031308
+ ? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)
+ : g * 12.92;
+
+ b = b > 0.0031308
+ ? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)
+ : b * 12.92;
+
+ r = Math.min(Math.max(0, r), 1);
+ g = Math.min(Math.max(0, g), 1);
+ b = Math.min(Math.max(0, b), 1);
+
+ return [r * 255, g * 255, b * 255];
+};
+
+convert.xyz.lab = function (xyz) {
+ let x = xyz[0];
+ let y = xyz[1];
+ let z = xyz[2];
+
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+
+ x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);
+ y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);
+ z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);
+
+ const l = (116 * y) - 16;
+ const a = 500 * (x - y);
+ const b = 200 * (y - z);
+
+ return [l, a, b];
+};
+
+convert.lab.xyz = function (lab) {
+ const l = lab[0];
+ const a = lab[1];
+ const b = lab[2];
+ let x;
+ let y;
+ let z;
+
+ y = (l + 16) / 116;
+ x = a / 500 + y;
+ z = y - b / 200;
+
+ const y2 = y ** 3;
+ const x2 = x ** 3;
+ const z2 = z ** 3;
+ y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
+ x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
+ z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
+
+ x *= 95.047;
+ y *= 100;
+ z *= 108.883;
+
+ return [x, y, z];
+};
+
+convert.lab.lch = function (lab) {
+ const l = lab[0];
+ const a = lab[1];
+ const b = lab[2];
+ let h;
+
+ const hr = Math.atan2(b, a);
+ h = hr * 360 / 2 / Math.PI;
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ const c = Math.sqrt(a * a + b * b);
+
+ return [l, c, h];
+};
+
+convert.lch.lab = function (lch) {
+ const l = lch[0];
+ const c = lch[1];
+ const h = lch[2];
+
+ const hr = h / 360 * 2 * Math.PI;
+ const a = c * Math.cos(hr);
+ const b = c * Math.sin(hr);
+
+ return [l, a, b];
+};
+
+convert.rgb.ansi16 = function (args, saturation = null) {
+ const [r, g, b] = args;
+ let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization
+
+ value = Math.round(value / 50);
+
+ if (value === 0) {
+ return 30;
+ }
+
+ let ansi = 30
+ + ((Math.round(b / 255) << 2)
+ | (Math.round(g / 255) << 1)
+ | Math.round(r / 255));
+
+ if (value === 2) {
+ ansi += 60;
+ }
+
+ return ansi;
+};
+
+convert.hsv.ansi16 = function (args) {
+ // Optimization here; we already know the value and don't need to get
+ // it converted for us.
+ return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
+};
+
+convert.rgb.ansi256 = function (args) {
+ const r = args[0];
+ const g = args[1];
+ const b = args[2];
+
+ // We use the extended greyscale palette here, with the exception of
+ // black and white. normal palette only has 4 greyscale shades.
+ if (r === g && g === b) {
+ if (r < 8) {
+ return 16;
+ }
+
+ if (r > 248) {
+ return 231;
+ }
+
+ return Math.round(((r - 8) / 247) * 24) + 232;
+ }
+
+ const ansi = 16
+ + (36 * Math.round(r / 255 * 5))
+ + (6 * Math.round(g / 255 * 5))
+ + Math.round(b / 255 * 5);
+
+ return ansi;
+};
+
+convert.ansi16.rgb = function (args) {
+ let color = args % 10;
+
+ // Handle greyscale
+ if (color === 0 || color === 7) {
+ if (args > 50) {
+ color += 3.5;
+ }
+
+ color = color / 10.5 * 255;
+
+ return [color, color, color];
+ }
+
+ const mult = (~~(args > 50) + 1) * 0.5;
+ const r = ((color & 1) * mult) * 255;
+ const g = (((color >> 1) & 1) * mult) * 255;
+ const b = (((color >> 2) & 1) * mult) * 255;
+
+ return [r, g, b];
+};
+
+convert.ansi256.rgb = function (args) {
+ // Handle greyscale
+ if (args >= 232) {
+ const c = (args - 232) * 10 + 8;
+ return [c, c, c];
+ }
+
+ args -= 16;
+
+ let rem;
+ const r = Math.floor(args / 36) / 5 * 255;
+ const g = Math.floor((rem = args % 36) / 6) / 5 * 255;
+ const b = (rem % 6) / 5 * 255;
+
+ return [r, g, b];
+};
+
+convert.rgb.hex = function (args) {
+ const integer = ((Math.round(args[0]) & 0xFF) << 16)
+ + ((Math.round(args[1]) & 0xFF) << 8)
+ + (Math.round(args[2]) & 0xFF);
+
+ const string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+};
+
+convert.hex.rgb = function (args) {
+ const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
+ if (!match) {
+ return [0, 0, 0];
+ }
+
+ let colorString = match[0];
+
+ if (match[0].length === 3) {
+ colorString = colorString.split('').map(char => {
+ return char + char;
+ }).join('');
+ }
+
+ const integer = parseInt(colorString, 16);
+ const r = (integer >> 16) & 0xFF;
+ const g = (integer >> 8) & 0xFF;
+ const b = integer & 0xFF;
+
+ return [r, g, b];
+};
+
+convert.rgb.hcg = function (rgb) {
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
+ const max = Math.max(Math.max(r, g), b);
+ const min = Math.min(Math.min(r, g), b);
+ const chroma = (max - min);
+ let grayscale;
+ let hue;
+
+ if (chroma < 1) {
+ grayscale = min / (1 - chroma);
+ } else {
+ grayscale = 0;
+ }
+
+ if (chroma <= 0) {
+ hue = 0;
+ } else
+ if (max === r) {
+ hue = ((g - b) / chroma) % 6;
+ } else
+ if (max === g) {
+ hue = 2 + (b - r) / chroma;
+ } else {
+ hue = 4 + (r - g) / chroma;
+ }
+
+ hue /= 6;
+ hue %= 1;
+
+ return [hue * 360, chroma * 100, grayscale * 100];
+};
+
+convert.hsl.hcg = function (hsl) {
+ const s = hsl[1] / 100;
+ const l = hsl[2] / 100;
+
+ const c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));
+
+ let f = 0;
+ if (c < 1.0) {
+ f = (l - 0.5 * c) / (1.0 - c);
+ }
+
+ return [hsl[0], c * 100, f * 100];
+};
+
+convert.hsv.hcg = function (hsv) {
+ const s = hsv[1] / 100;
+ const v = hsv[2] / 100;
+
+ const c = s * v;
+ let f = 0;
+
+ if (c < 1.0) {
+ f = (v - c) / (1 - c);
+ }
+
+ return [hsv[0], c * 100, f * 100];
+};
+
+convert.hcg.rgb = function (hcg) {
+ const h = hcg[0] / 360;
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
+
+ if (c === 0.0) {
+ return [g * 255, g * 255, g * 255];
+ }
+
+ const pure = [0, 0, 0];
+ const hi = (h % 1) * 6;
+ const v = hi % 1;
+ const w = 1 - v;
+ let mg = 0;
+
+ /* eslint-disable max-statements-per-line */
+ switch (Math.floor(hi)) {
+ case 0:
+ pure[0] = 1; pure[1] = v; pure[2] = 0; break;
+ case 1:
+ pure[0] = w; pure[1] = 1; pure[2] = 0; break;
+ case 2:
+ pure[0] = 0; pure[1] = 1; pure[2] = v; break;
+ case 3:
+ pure[0] = 0; pure[1] = w; pure[2] = 1; break;
+ case 4:
+ pure[0] = v; pure[1] = 0; pure[2] = 1; break;
+ default:
+ pure[0] = 1; pure[1] = 0; pure[2] = w;
+ }
+ /* eslint-enable max-statements-per-line */
+
+ mg = (1.0 - c) * g;
+
+ return [
+ (c * pure[0] + mg) * 255,
+ (c * pure[1] + mg) * 255,
+ (c * pure[2] + mg) * 255
+ ];
+};
+
+convert.hcg.hsv = function (hcg) {
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
+
+ const v = c + g * (1.0 - c);
+ let f = 0;
+
+ if (v > 0.0) {
+ f = c / v;
+ }
+
+ return [hcg[0], f * 100, v * 100];
+};
+
+convert.hcg.hsl = function (hcg) {
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
+
+ const l = g * (1.0 - c) + 0.5 * c;
+ let s = 0;
+
+ if (l > 0.0 && l < 0.5) {
+ s = c / (2 * l);
+ } else
+ if (l >= 0.5 && l < 1.0) {
+ s = c / (2 * (1 - l));
+ }
+
+ return [hcg[0], s * 100, l * 100];
+};
+
+convert.hcg.hwb = function (hcg) {
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
+ const v = c + g * (1.0 - c);
+ return [hcg[0], (v - c) * 100, (1 - v) * 100];
+};
+
+convert.hwb.hcg = function (hwb) {
+ const w = hwb[1] / 100;
+ const b = hwb[2] / 100;
+ const v = 1 - b;
+ const c = v - w;
+ let g = 0;
+
+ if (c < 1) {
+ g = (v - c) / (1 - c);
+ }
+
+ return [hwb[0], c * 100, g * 100];
+};
+
+convert.apple.rgb = function (apple) {
+ return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
+};
+
+convert.rgb.apple = function (rgb) {
+ return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
+};
+
+convert.gray.rgb = function (args) {
+ return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
+};
+
+convert.gray.hsl = function (args) {
+ return [0, 0, args[0]];
+};
+
+convert.gray.hsv = convert.gray.hsl;
+
+convert.gray.hwb = function (gray) {
+ return [0, 100, gray[0]];
+};
+
+convert.gray.cmyk = function (gray) {
+ return [0, 0, 0, gray[0]];
+};
+
+convert.gray.lab = function (gray) {
+ return [gray[0], 0, 0];
+};
+
+convert.gray.hex = function (gray) {
+ const val = Math.round(gray[0] / 100 * 255) & 0xFF;
+ const integer = (val << 16) + (val << 8) + val;
+
+ const string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+};
+
+convert.rgb.gray = function (rgb) {
+ const val = (rgb[0] + rgb[1] + rgb[2]) / 3;
+ return [val / 255 * 100];
+};
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/index.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/index.js
new file mode 100644
index 00000000..b648e573
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/index.js
@@ -0,0 +1,81 @@
+const conversions = require('./conversions');
+const route = require('./route');
+
+const convert = {};
+
+const models = Object.keys(conversions);
+
+function wrapRaw(fn) {
+ const wrappedFn = function (...args) {
+ const arg0 = args[0];
+ if (arg0 === undefined || arg0 === null) {
+ return arg0;
+ }
+
+ if (arg0.length > 1) {
+ args = arg0;
+ }
+
+ return fn(args);
+ };
+
+ // Preserve .conversion property if there is one
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+}
+
+function wrapRounded(fn) {
+ const wrappedFn = function (...args) {
+ const arg0 = args[0];
+
+ if (arg0 === undefined || arg0 === null) {
+ return arg0;
+ }
+
+ if (arg0.length > 1) {
+ args = arg0;
+ }
+
+ const result = fn(args);
+
+ // We're assuming the result is an array here.
+ // see notice in conversions.js; don't use box types
+ // in conversion functions.
+ if (typeof result === 'object') {
+ for (let len = result.length, i = 0; i < len; i++) {
+ result[i] = Math.round(result[i]);
+ }
+ }
+
+ return result;
+ };
+
+ // Preserve .conversion property if there is one
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+}
+
+models.forEach(fromModel => {
+ convert[fromModel] = {};
+
+ Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
+ Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
+
+ const routes = route(fromModel);
+ const routeModels = Object.keys(routes);
+
+ routeModels.forEach(toModel => {
+ const fn = routes[toModel];
+
+ convert[fromModel][toModel] = wrapRounded(fn);
+ convert[fromModel][toModel].raw = wrapRaw(fn);
+ });
+});
+
+module.exports = convert;
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/package.json b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/package.json
new file mode 100644
index 00000000..6e48000c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "color-convert",
+ "description": "Plain color conversion functions",
+ "version": "2.0.1",
+ "author": "Heather Arthur ",
+ "license": "MIT",
+ "repository": "Qix-/color-convert",
+ "scripts": {
+ "pretest": "xo",
+ "test": "node test/basic.js"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ },
+ "keywords": [
+ "color",
+ "colour",
+ "convert",
+ "converter",
+ "conversion",
+ "rgb",
+ "hsl",
+ "hsv",
+ "hwb",
+ "cmyk",
+ "ansi",
+ "ansi16"
+ ],
+ "files": [
+ "index.js",
+ "conversions.js",
+ "route.js"
+ ],
+ "xo": {
+ "rules": {
+ "default-case": 0,
+ "no-inline-comments": 0,
+ "operator-linebreak": 0
+ }
+ },
+ "devDependencies": {
+ "chalk": "^2.4.2",
+ "xo": "^0.24.0"
+ },
+ "dependencies": {
+ "color-name": "~1.1.4"
+ }
+}
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/route.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/route.js
new file mode 100644
index 00000000..1a08521b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color-convert/route.js
@@ -0,0 +1,97 @@
+const conversions = require('./conversions');
+
+/*
+ This function routes a model to all other models.
+
+ all functions that are routed have a property `.conversion` attached
+ to the returned synthetic function. This property is an array
+ of strings, each with the steps in between the 'from' and 'to'
+ color models (inclusive).
+
+ conversions that are not possible simply are not included.
+*/
+
+function buildGraph() {
+ const graph = {};
+ // https://jsperf.com/object-keys-vs-for-in-with-closure/3
+ const models = Object.keys(conversions);
+
+ for (let len = models.length, i = 0; i < len; i++) {
+ graph[models[i]] = {
+ // http://jsperf.com/1-vs-infinity
+ // micro-opt, but this is simple.
+ distance: -1,
+ parent: null
+ };
+ }
+
+ return graph;
+}
+
+// https://en.wikipedia.org/wiki/Breadth-first_search
+function deriveBFS(fromModel) {
+ const graph = buildGraph();
+ const queue = [fromModel]; // Unshift -> queue -> pop
+
+ graph[fromModel].distance = 0;
+
+ while (queue.length) {
+ const current = queue.pop();
+ const adjacents = Object.keys(conversions[current]);
+
+ for (let len = adjacents.length, i = 0; i < len; i++) {
+ const adjacent = adjacents[i];
+ const node = graph[adjacent];
+
+ if (node.distance === -1) {
+ node.distance = graph[current].distance + 1;
+ node.parent = current;
+ queue.unshift(adjacent);
+ }
+ }
+ }
+
+ return graph;
+}
+
+function link(from, to) {
+ return function (args) {
+ return to(from(args));
+ };
+}
+
+function wrapConversion(toModel, graph) {
+ const path = [graph[toModel].parent, toModel];
+ let fn = conversions[graph[toModel].parent][toModel];
+
+ let cur = graph[toModel].parent;
+ while (graph[cur].parent) {
+ path.unshift(graph[cur].parent);
+ fn = link(conversions[graph[cur].parent][cur], fn);
+ cur = graph[cur].parent;
+ }
+
+ fn.conversion = path;
+ return fn;
+}
+
+module.exports = function (fromModel) {
+ const graph = deriveBFS(fromModel);
+ const conversion = {};
+
+ const models = Object.keys(graph);
+ for (let len = models.length, i = 0; i < len; i++) {
+ const toModel = models[i];
+ const node = graph[toModel];
+
+ if (node.parent === null) {
+ // No possible conversion, or this node is the source model.
+ continue;
+ }
+
+ conversion[toModel] = wrapConversion(toModel, graph);
+ }
+
+ return conversion;
+};
+
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color/LICENSE b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color/LICENSE
new file mode 100644
index 00000000..68c864ee
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color/LICENSE
@@ -0,0 +1,21 @@
+Copyright (c) 2012 Heather Arthur
+
+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-navigation/bottom-tabs/node_modules/color/README.md b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color/README.md
new file mode 100644
index 00000000..674a7318
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color/README.md
@@ -0,0 +1,123 @@
+# color
+
+> JavaScript library for immutable color conversion and manipulation with support for CSS color strings.
+
+```js
+const color = Color('#7743CE').alpha(0.5).lighten(0.5);
+console.log(color.hsl().string()); // 'hsla(262, 59%, 81%, 0.5)'
+
+console.log(color.cmyk().round().array()); // [ 16, 25, 0, 8, 0.5 ]
+
+console.log(color.ansi256().object()); // { ansi256: 183, alpha: 0.5 }
+```
+
+## Install
+```console
+$ npm install color
+```
+
+## Usage
+```js
+const Color = require('color');
+```
+
+### Constructors
+```js
+const color = Color('rgb(255, 255, 255)')
+const color = Color({r: 255, g: 255, b: 255})
+const color = Color.rgb(255, 255, 255)
+const color = Color.rgb([255, 255, 255])
+```
+
+Set the values for individual channels with `alpha`, `red`, `green`, `blue`, `hue`, `saturationl` (hsl), `saturationv` (hsv), `lightness`, `whiteness`, `blackness`, `cyan`, `magenta`, `yellow`, `black`
+
+String constructors are handled by [color-string](https://www.npmjs.com/package/color-string)
+
+### Getters
+```js
+color.hsl();
+```
+Convert a color to a different space (`hsl()`, `cmyk()`, etc.).
+
+```js
+color.object(); // {r: 255, g: 255, b: 255}
+```
+Get a hash of the color value. Reflects the color's current model (see above).
+
+```js
+color.rgb().array() // [255, 255, 255]
+```
+Get an array of the values with `array()`. Reflects the color's current model (see above).
+
+```js
+color.rgbNumber() // 16777215 (0xffffff)
+```
+Get the rgb number value.
+
+```js
+color.hex() // #ffffff
+```
+Get the hex value. (**NOTE:** `.hex()` does not return alpha values; use `.hexa()` for an RGBA representation)
+
+```js
+color.red() // 255
+```
+Get the value for an individual channel.
+
+### CSS Strings
+```js
+color.hsl().string() // 'hsl(320, 50%, 100%)'
+```
+
+Calling `.string()` with a number rounds the numbers to that decimal place. It defaults to 1.
+
+### Luminosity
+```js
+color.luminosity(); // 0.412
+```
+The [WCAG luminosity](http://www.w3.org/TR/WCAG20/#relativeluminancedef) of the color. 0 is black, 1 is white.
+
+```js
+color.contrast(Color("blue")) // 12
+```
+The [WCAG contrast ratio](http://www.w3.org/TR/WCAG20/#contrast-ratiodef) to another color, from 1 (same color) to 21 (contrast b/w white and black).
+
+```js
+color.isLight(); // true
+color.isDark(); // false
+```
+Get whether the color is "light" or "dark", useful for deciding text color.
+
+### Manipulation
+```js
+color.negate() // rgb(0, 100, 255) -> rgb(255, 155, 0)
+
+color.lighten(0.5) // hsl(100, 50%, 50%) -> hsl(100, 50%, 75%)
+color.lighten(0.5) // hsl(100, 50%, 0) -> hsl(100, 50%, 0)
+color.darken(0.5) // hsl(100, 50%, 50%) -> hsl(100, 50%, 25%)
+color.darken(0.5) // hsl(100, 50%, 0) -> hsl(100, 50%, 0)
+
+color.lightness(50) // hsl(100, 50%, 10%) -> hsl(100, 50%, 50%)
+
+color.saturate(0.5) // hsl(100, 50%, 50%) -> hsl(100, 75%, 50%)
+color.desaturate(0.5) // hsl(100, 50%, 50%) -> hsl(100, 25%, 50%)
+color.grayscale() // #5CBF54 -> #969696
+
+color.whiten(0.5) // hwb(100, 50%, 50%) -> hwb(100, 75%, 50%)
+color.blacken(0.5) // hwb(100, 50%, 50%) -> hwb(100, 50%, 75%)
+
+color.fade(0.5) // rgba(10, 10, 10, 0.8) -> rgba(10, 10, 10, 0.4)
+color.opaquer(0.5) // rgba(10, 10, 10, 0.8) -> rgba(10, 10, 10, 1.0)
+
+color.rotate(180) // hsl(60, 20%, 20%) -> hsl(240, 20%, 20%)
+color.rotate(-90) // hsl(60, 20%, 20%) -> hsl(330, 20%, 20%)
+
+color.mix(Color("yellow")) // cyan -> rgb(128, 255, 128)
+color.mix(Color("yellow"), 0.3) // cyan -> rgb(77, 255, 179)
+
+// chaining
+color.green(100).grayscale().lighten(0.6)
+```
+
+## Propers
+The API was inspired by [color-js](https://github.com/brehaut/color-js). Manipulation functions by CSS tools like Sass, LESS, and Stylus.
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color/index.js b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color/index.js
new file mode 100644
index 00000000..ddb0b5df
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color/index.js
@@ -0,0 +1,496 @@
+const colorString = require('color-string');
+const convert = require('color-convert');
+
+const skippedModels = [
+ // To be honest, I don't really feel like keyword belongs in color convert, but eh.
+ 'keyword',
+
+ // Gray conflicts with some method names, and has its own method defined.
+ 'gray',
+
+ // Shouldn't really be in color-convert either...
+ 'hex',
+];
+
+const hashedModelKeys = {};
+for (const model of Object.keys(convert)) {
+ hashedModelKeys[[...convert[model].labels].sort().join('')] = model;
+}
+
+const limiters = {};
+
+function Color(object, model) {
+ if (!(this instanceof Color)) {
+ return new Color(object, model);
+ }
+
+ if (model && model in skippedModels) {
+ model = null;
+ }
+
+ if (model && !(model in convert)) {
+ throw new Error('Unknown model: ' + model);
+ }
+
+ let i;
+ let channels;
+
+ if (object == null) { // eslint-disable-line no-eq-null,eqeqeq
+ this.model = 'rgb';
+ this.color = [0, 0, 0];
+ this.valpha = 1;
+ } else if (object instanceof Color) {
+ this.model = object.model;
+ this.color = [...object.color];
+ this.valpha = object.valpha;
+ } else if (typeof object === 'string') {
+ const result = colorString.get(object);
+ if (result === null) {
+ throw new Error('Unable to parse color from string: ' + object);
+ }
+
+ this.model = result.model;
+ channels = convert[this.model].channels;
+ this.color = result.value.slice(0, channels);
+ this.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;
+ } else if (object.length > 0) {
+ this.model = model || 'rgb';
+ channels = convert[this.model].channels;
+ const newArray = Array.prototype.slice.call(object, 0, channels);
+ this.color = zeroArray(newArray, channels);
+ this.valpha = typeof object[channels] === 'number' ? object[channels] : 1;
+ } else if (typeof object === 'number') {
+ // This is always RGB - can be converted later on.
+ this.model = 'rgb';
+ this.color = [
+ (object >> 16) & 0xFF,
+ (object >> 8) & 0xFF,
+ object & 0xFF,
+ ];
+ this.valpha = 1;
+ } else {
+ this.valpha = 1;
+
+ const keys = Object.keys(object);
+ if ('alpha' in object) {
+ keys.splice(keys.indexOf('alpha'), 1);
+ this.valpha = typeof object.alpha === 'number' ? object.alpha : 0;
+ }
+
+ const hashedKeys = keys.sort().join('');
+ if (!(hashedKeys in hashedModelKeys)) {
+ throw new Error('Unable to parse color from object: ' + JSON.stringify(object));
+ }
+
+ this.model = hashedModelKeys[hashedKeys];
+
+ const {labels} = convert[this.model];
+ const color = [];
+ for (i = 0; i < labels.length; i++) {
+ color.push(object[labels[i]]);
+ }
+
+ this.color = zeroArray(color);
+ }
+
+ // Perform limitations (clamping, etc.)
+ if (limiters[this.model]) {
+ channels = convert[this.model].channels;
+ for (i = 0; i < channels; i++) {
+ const limit = limiters[this.model][i];
+ if (limit) {
+ this.color[i] = limit(this.color[i]);
+ }
+ }
+ }
+
+ this.valpha = Math.max(0, Math.min(1, this.valpha));
+
+ if (Object.freeze) {
+ Object.freeze(this);
+ }
+}
+
+Color.prototype = {
+ toString() {
+ return this.string();
+ },
+
+ toJSON() {
+ return this[this.model]();
+ },
+
+ string(places) {
+ let self = this.model in colorString.to ? this : this.rgb();
+ self = self.round(typeof places === 'number' ? places : 1);
+ const args = self.valpha === 1 ? self.color : [...self.color, this.valpha];
+ return colorString.to[self.model](args);
+ },
+
+ percentString(places) {
+ const self = this.rgb().round(typeof places === 'number' ? places : 1);
+ const args = self.valpha === 1 ? self.color : [...self.color, this.valpha];
+ return colorString.to.rgb.percent(args);
+ },
+
+ array() {
+ return this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];
+ },
+
+ object() {
+ const result = {};
+ const {channels} = convert[this.model];
+ const {labels} = convert[this.model];
+
+ for (let i = 0; i < channels; i++) {
+ result[labels[i]] = this.color[i];
+ }
+
+ if (this.valpha !== 1) {
+ result.alpha = this.valpha;
+ }
+
+ return result;
+ },
+
+ unitArray() {
+ const rgb = this.rgb().color;
+ rgb[0] /= 255;
+ rgb[1] /= 255;
+ rgb[2] /= 255;
+
+ if (this.valpha !== 1) {
+ rgb.push(this.valpha);
+ }
+
+ return rgb;
+ },
+
+ unitObject() {
+ const rgb = this.rgb().object();
+ rgb.r /= 255;
+ rgb.g /= 255;
+ rgb.b /= 255;
+
+ if (this.valpha !== 1) {
+ rgb.alpha = this.valpha;
+ }
+
+ return rgb;
+ },
+
+ round(places) {
+ places = Math.max(places || 0, 0);
+ return new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);
+ },
+
+ alpha(value) {
+ if (value !== undefined) {
+ return new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);
+ }
+
+ return this.valpha;
+ },
+
+ // Rgb
+ red: getset('rgb', 0, maxfn(255)),
+ green: getset('rgb', 1, maxfn(255)),
+ blue: getset('rgb', 2, maxfn(255)),
+
+ hue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),
+
+ saturationl: getset('hsl', 1, maxfn(100)),
+ lightness: getset('hsl', 2, maxfn(100)),
+
+ saturationv: getset('hsv', 1, maxfn(100)),
+ value: getset('hsv', 2, maxfn(100)),
+
+ chroma: getset('hcg', 1, maxfn(100)),
+ gray: getset('hcg', 2, maxfn(100)),
+
+ white: getset('hwb', 1, maxfn(100)),
+ wblack: getset('hwb', 2, maxfn(100)),
+
+ cyan: getset('cmyk', 0, maxfn(100)),
+ magenta: getset('cmyk', 1, maxfn(100)),
+ yellow: getset('cmyk', 2, maxfn(100)),
+ black: getset('cmyk', 3, maxfn(100)),
+
+ x: getset('xyz', 0, maxfn(95.047)),
+ y: getset('xyz', 1, maxfn(100)),
+ z: getset('xyz', 2, maxfn(108.833)),
+
+ l: getset('lab', 0, maxfn(100)),
+ a: getset('lab', 1),
+ b: getset('lab', 2),
+
+ keyword(value) {
+ if (value !== undefined) {
+ return new Color(value);
+ }
+
+ return convert[this.model].keyword(this.color);
+ },
+
+ hex(value) {
+ if (value !== undefined) {
+ return new Color(value);
+ }
+
+ return colorString.to.hex(this.rgb().round().color);
+ },
+
+ hexa(value) {
+ if (value !== undefined) {
+ return new Color(value);
+ }
+
+ const rgbArray = this.rgb().round().color;
+
+ let alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();
+ if (alphaHex.length === 1) {
+ alphaHex = '0' + alphaHex;
+ }
+
+ return colorString.to.hex(rgbArray) + alphaHex;
+ },
+
+ rgbNumber() {
+ const rgb = this.rgb().color;
+ return ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);
+ },
+
+ luminosity() {
+ // http://www.w3.org/TR/WCAG20/#relativeluminancedef
+ const rgb = this.rgb().color;
+
+ const lum = [];
+ for (const [i, element] of rgb.entries()) {
+ const chan = element / 255;
+ lum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;
+ }
+
+ return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];
+ },
+
+ contrast(color2) {
+ // http://www.w3.org/TR/WCAG20/#contrast-ratiodef
+ const lum1 = this.luminosity();
+ const lum2 = color2.luminosity();
+
+ if (lum1 > lum2) {
+ return (lum1 + 0.05) / (lum2 + 0.05);
+ }
+
+ return (lum2 + 0.05) / (lum1 + 0.05);
+ },
+
+ level(color2) {
+ // https://www.w3.org/TR/WCAG/#contrast-enhanced
+ const contrastRatio = this.contrast(color2);
+ if (contrastRatio >= 7) {
+ return 'AAA';
+ }
+
+ return (contrastRatio >= 4.5) ? 'AA' : '';
+ },
+
+ isDark() {
+ // YIQ equation from http://24ways.org/2010/calculating-color-contrast
+ const rgb = this.rgb().color;
+ const yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;
+ return yiq < 128;
+ },
+
+ isLight() {
+ return !this.isDark();
+ },
+
+ negate() {
+ const rgb = this.rgb();
+ for (let i = 0; i < 3; i++) {
+ rgb.color[i] = 255 - rgb.color[i];
+ }
+
+ return rgb;
+ },
+
+ lighten(ratio) {
+ const hsl = this.hsl();
+ hsl.color[2] += hsl.color[2] * ratio;
+ return hsl;
+ },
+
+ darken(ratio) {
+ const hsl = this.hsl();
+ hsl.color[2] -= hsl.color[2] * ratio;
+ return hsl;
+ },
+
+ saturate(ratio) {
+ const hsl = this.hsl();
+ hsl.color[1] += hsl.color[1] * ratio;
+ return hsl;
+ },
+
+ desaturate(ratio) {
+ const hsl = this.hsl();
+ hsl.color[1] -= hsl.color[1] * ratio;
+ return hsl;
+ },
+
+ whiten(ratio) {
+ const hwb = this.hwb();
+ hwb.color[1] += hwb.color[1] * ratio;
+ return hwb;
+ },
+
+ blacken(ratio) {
+ const hwb = this.hwb();
+ hwb.color[2] += hwb.color[2] * ratio;
+ return hwb;
+ },
+
+ grayscale() {
+ // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale
+ const rgb = this.rgb().color;
+ const value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;
+ return Color.rgb(value, value, value);
+ },
+
+ fade(ratio) {
+ return this.alpha(this.valpha - (this.valpha * ratio));
+ },
+
+ opaquer(ratio) {
+ return this.alpha(this.valpha + (this.valpha * ratio));
+ },
+
+ rotate(degrees) {
+ const hsl = this.hsl();
+ let hue = hsl.color[0];
+ hue = (hue + degrees) % 360;
+ hue = hue < 0 ? 360 + hue : hue;
+ hsl.color[0] = hue;
+ return hsl;
+ },
+
+ mix(mixinColor, weight) {
+ // Ported from sass implementation in C
+ // https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209
+ if (!mixinColor || !mixinColor.rgb) {
+ throw new Error('Argument to "mix" was not a Color instance, but rather an instance of ' + typeof mixinColor);
+ }
+
+ const color1 = mixinColor.rgb();
+ const color2 = this.rgb();
+ const p = weight === undefined ? 0.5 : weight;
+
+ const w = 2 * p - 1;
+ const a = color1.alpha() - color2.alpha();
+
+ const w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;
+ const w2 = 1 - w1;
+
+ return Color.rgb(
+ w1 * color1.red() + w2 * color2.red(),
+ w1 * color1.green() + w2 * color2.green(),
+ w1 * color1.blue() + w2 * color2.blue(),
+ color1.alpha() * p + color2.alpha() * (1 - p));
+ },
+};
+
+// Model conversion methods and static constructors
+for (const model of Object.keys(convert)) {
+ if (skippedModels.includes(model)) {
+ continue;
+ }
+
+ const {channels} = convert[model];
+
+ // Conversion methods
+ Color.prototype[model] = function (...args) {
+ if (this.model === model) {
+ return new Color(this);
+ }
+
+ if (args.length > 0) {
+ return new Color(args, model);
+ }
+
+ return new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);
+ };
+
+ // 'static' construction methods
+ Color[model] = function (...args) {
+ let color = args[0];
+ if (typeof color === 'number') {
+ color = zeroArray(args, channels);
+ }
+
+ return new Color(color, model);
+ };
+}
+
+function roundTo(number, places) {
+ return Number(number.toFixed(places));
+}
+
+function roundToPlace(places) {
+ return function (number) {
+ return roundTo(number, places);
+ };
+}
+
+function getset(model, channel, modifier) {
+ model = Array.isArray(model) ? model : [model];
+
+ for (const m of model) {
+ (limiters[m] || (limiters[m] = []))[channel] = modifier;
+ }
+
+ model = model[0];
+
+ return function (value) {
+ let result;
+
+ if (value !== undefined) {
+ if (modifier) {
+ value = modifier(value);
+ }
+
+ result = this[model]();
+ result.color[channel] = value;
+ return result;
+ }
+
+ result = this[model]().color[channel];
+ if (modifier) {
+ result = modifier(result);
+ }
+
+ return result;
+ };
+}
+
+function maxfn(max) {
+ return function (v) {
+ return Math.max(0, Math.min(max, v));
+ };
+}
+
+function assertArray(value) {
+ return Array.isArray(value) ? value : [value];
+}
+
+function zeroArray(array, length) {
+ for (let i = 0; i < length; i++) {
+ if (typeof array[i] !== 'number') {
+ array[i] = 0;
+ }
+ }
+
+ return array;
+}
+
+module.exports = Color;
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color/package.json b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color/package.json
new file mode 100644
index 00000000..4cdb6e31
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/node_modules/color/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "color",
+ "version": "4.2.3",
+ "description": "Color conversion and manipulation with CSS string support",
+ "sideEffects": false,
+ "keywords": [
+ "color",
+ "colour",
+ "css"
+ ],
+ "authors": [
+ "Josh Junon ",
+ "Heather Arthur ",
+ "Maxime Thirouin"
+ ],
+ "license": "MIT",
+ "repository": "Qix-/color",
+ "xo": {
+ "rules": {
+ "no-cond-assign": 0,
+ "new-cap": 0,
+ "unicorn/prefer-module": 0,
+ "no-mixed-operators": 0,
+ "complexity": 0,
+ "unicorn/numeric-separators-style": 0
+ }
+ },
+ "files": [
+ "LICENSE",
+ "index.js"
+ ],
+ "scripts": {
+ "pretest": "xo",
+ "test": "mocha"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ },
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "devDependencies": {
+ "mocha": "9.0.2",
+ "xo": "0.42.0"
+ }
+}
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/package.json b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/package.json
new file mode 100644
index 00000000..a4033831
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/package.json
@@ -0,0 +1,79 @@
+{
+ "name": "@react-navigation/bottom-tabs",
+ "description": "Bottom tab navigator following iOS design guidelines",
+ "version": "6.5.4",
+ "keywords": [
+ "react-native-component",
+ "react-component",
+ "react-native",
+ "react-navigation",
+ "ios",
+ "android",
+ "tab"
+ ],
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/react-navigation/react-navigation.git",
+ "directory": "packages/bottom-tabs"
+ },
+ "main": "lib/commonjs/index.js",
+ "react-native": "src/index.tsx",
+ "source": "src/index.tsx",
+ "module": "lib/module/index.js",
+ "types": "lib/typescript/src/index.d.ts",
+ "files": [
+ "src",
+ "lib",
+ "!**/__tests__"
+ ],
+ "sideEffects": false,
+ "publishConfig": {
+ "access": "public"
+ },
+ "scripts": {
+ "prepack": "bob build",
+ "clean": "del lib"
+ },
+ "dependencies": {
+ "@react-navigation/elements": "^1.3.14",
+ "color": "^4.2.3",
+ "warn-once": "^0.1.0"
+ },
+ "devDependencies": {
+ "@react-navigation/native": "^6.1.3",
+ "@testing-library/react-native": "^11.5.0",
+ "@types/color": "^3.0.1",
+ "@types/react": "~18.0.0",
+ "@types/react-native": "~0.69.1",
+ "del-cli": "^3.0.1",
+ "react": "18.0.0",
+ "react-native": "0.69.5",
+ "react-native-builder-bob": "^0.20.3",
+ "react-native-safe-area-context": "4.3.1",
+ "react-native-screens": "~3.15.0",
+ "typescript": "^4.7.4"
+ },
+ "peerDependencies": {
+ "@react-navigation/native": "^6.0.0",
+ "react": "*",
+ "react-native": "*",
+ "react-native-safe-area-context": ">= 3.0.0",
+ "react-native-screens": ">= 3.0.0"
+ },
+ "react-native-builder-bob": {
+ "source": "src",
+ "output": "lib",
+ "targets": [
+ "commonjs",
+ "module",
+ [
+ "typescript",
+ {
+ "project": "tsconfig.build.json"
+ }
+ ]
+ ]
+ },
+ "gitHead": "ef3f7377ef1a5623bc38273b63663b0f7bd39815"
+}
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/index.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/index.tsx
new file mode 100644
index 00000000..510d1e79
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/index.tsx
@@ -0,0 +1,30 @@
+/**
+ * Navigators
+ */
+export { default as createBottomTabNavigator } from './navigators/createBottomTabNavigator';
+
+/**
+ * Views
+ */
+export { default as BottomTabBar } from './views/BottomTabBar';
+export { default as BottomTabView } from './views/BottomTabView';
+
+/**
+ * Utilities
+ */
+export { default as BottomTabBarHeightCallbackContext } from './utils/BottomTabBarHeightCallbackContext';
+export { default as BottomTabBarHeightContext } from './utils/BottomTabBarHeightContext';
+export { default as useBottomTabBarHeight } from './utils/useBottomTabBarHeight';
+
+/**
+ * Types
+ */
+export type {
+ BottomTabBarButtonProps,
+ BottomTabBarProps,
+ BottomTabHeaderProps,
+ BottomTabNavigationEventMap,
+ BottomTabNavigationOptions,
+ BottomTabNavigationProp,
+ BottomTabScreenProps,
+} from './types';
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/navigators/createBottomTabNavigator.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/navigators/createBottomTabNavigator.tsx
new file mode 100644
index 00000000..fe0054ed
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/navigators/createBottomTabNavigator.tsx
@@ -0,0 +1,134 @@
+import {
+ createNavigatorFactory,
+ DefaultNavigatorOptions,
+ ParamListBase,
+ TabActionHelpers,
+ TabNavigationState,
+ TabRouter,
+ TabRouterOptions,
+ useNavigationBuilder,
+} from '@react-navigation/native';
+import * as React from 'react';
+import warnOnce from 'warn-once';
+
+import type {
+ BottomTabNavigationConfig,
+ BottomTabNavigationEventMap,
+ BottomTabNavigationOptions,
+} from '../types';
+import BottomTabView from '../views/BottomTabView';
+
+type Props = DefaultNavigatorOptions<
+ ParamListBase,
+ TabNavigationState,
+ BottomTabNavigationOptions,
+ BottomTabNavigationEventMap
+> &
+ TabRouterOptions &
+ BottomTabNavigationConfig;
+
+function BottomTabNavigator({
+ id,
+ initialRouteName,
+ backBehavior,
+ children,
+ screenListeners,
+ screenOptions,
+ sceneContainerStyle,
+ ...restWithDeprecated
+}: Props) {
+ const {
+ // @ts-expect-error: lazy is deprecated
+ lazy,
+ // @ts-expect-error: tabBarOptions is deprecated
+ tabBarOptions,
+ ...rest
+ } = restWithDeprecated;
+
+ let defaultScreenOptions: BottomTabNavigationOptions = {};
+
+ if (tabBarOptions) {
+ Object.assign(defaultScreenOptions, {
+ tabBarHideOnKeyboard: tabBarOptions.keyboardHidesTabBar,
+ tabBarActiveTintColor: tabBarOptions.activeTintColor,
+ tabBarInactiveTintColor: tabBarOptions.inactiveTintColor,
+ tabBarActiveBackgroundColor: tabBarOptions.activeBackgroundColor,
+ tabBarInactiveBackgroundColor: tabBarOptions.inactiveBackgroundColor,
+ tabBarAllowFontScaling: tabBarOptions.allowFontScaling,
+ tabBarShowLabel: tabBarOptions.showLabel,
+ tabBarLabelStyle: tabBarOptions.labelStyle,
+ tabBarIconStyle: tabBarOptions.iconStyle,
+ tabBarItemStyle: tabBarOptions.tabStyle,
+ tabBarLabelPosition:
+ tabBarOptions.labelPosition ??
+ (tabBarOptions.adaptive === false ? 'below-icon' : undefined),
+ tabBarStyle: [
+ { display: tabBarOptions.tabBarVisible ? 'none' : 'flex' },
+ defaultScreenOptions.tabBarStyle,
+ ],
+ });
+
+ (
+ Object.keys(defaultScreenOptions) as (keyof BottomTabNavigationOptions)[]
+ ).forEach((key) => {
+ if (defaultScreenOptions[key] === undefined) {
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete defaultScreenOptions[key];
+ }
+ });
+
+ warnOnce(
+ tabBarOptions,
+ `Bottom Tab Navigator: 'tabBarOptions' is deprecated. Migrate the options to 'screenOptions' instead.\n\nPlace the following in 'screenOptions' in your code to keep current behavior:\n\n${JSON.stringify(
+ defaultScreenOptions,
+ null,
+ 2
+ )}\n\nSee https://reactnavigation.org/docs/bottom-tab-navigator#options for more details.`
+ );
+ }
+
+ if (typeof lazy === 'boolean') {
+ defaultScreenOptions.lazy = lazy;
+
+ warnOnce(
+ true,
+ `Bottom Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/bottom-tab-navigator/#lazy for more details.`
+ );
+ }
+
+ const { state, descriptors, navigation, NavigationContent } =
+ useNavigationBuilder<
+ TabNavigationState,
+ TabRouterOptions,
+ TabActionHelpers,
+ BottomTabNavigationOptions,
+ BottomTabNavigationEventMap
+ >(TabRouter, {
+ id,
+ initialRouteName,
+ backBehavior,
+ children,
+ screenListeners,
+ screenOptions,
+ defaultScreenOptions,
+ });
+
+ return (
+
+
+
+ );
+}
+
+export default createNavigatorFactory<
+ TabNavigationState,
+ BottomTabNavigationOptions,
+ BottomTabNavigationEventMap,
+ typeof BottomTabNavigator
+>(BottomTabNavigator);
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/types.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/types.tsx
new file mode 100644
index 00000000..03c34122
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/types.tsx
@@ -0,0 +1,329 @@
+import type { HeaderOptions } from '@react-navigation/elements';
+import type {
+ Descriptor,
+ NavigationHelpers,
+ NavigationProp,
+ ParamListBase,
+ RouteProp,
+ TabActionHelpers,
+ TabNavigationState,
+} from '@react-navigation/native';
+import type * as React from 'react';
+import type {
+ Animated,
+ GestureResponderEvent,
+ StyleProp,
+ TextStyle,
+ TouchableWithoutFeedbackProps,
+ ViewStyle,
+} from 'react-native';
+import type { EdgeInsets } from 'react-native-safe-area-context';
+
+export type Layout = { width: number; height: number };
+
+export type BottomTabNavigationEventMap = {
+ /**
+ * Event which fires on tapping on the tab in the tab bar.
+ */
+ tabPress: { data: undefined; canPreventDefault: true };
+ /**
+ * Event which fires on long press on the tab in the tab bar.
+ */
+ tabLongPress: { data: undefined };
+};
+
+export type LabelPosition = 'beside-icon' | 'below-icon';
+
+export type BottomTabNavigationHelpers = NavigationHelpers<
+ ParamListBase,
+ BottomTabNavigationEventMap
+> &
+ TabActionHelpers;
+
+export type BottomTabNavigationProp<
+ ParamList extends ParamListBase,
+ RouteName extends keyof ParamList = keyof ParamList,
+ NavigatorID extends string | undefined = undefined
+> = NavigationProp<
+ ParamList,
+ RouteName,
+ NavigatorID,
+ TabNavigationState,
+ BottomTabNavigationOptions,
+ BottomTabNavigationEventMap
+> &
+ TabActionHelpers;
+
+export type BottomTabScreenProps<
+ ParamList extends ParamListBase,
+ RouteName extends keyof ParamList = keyof ParamList,
+ NavigatorID extends string | undefined = undefined
+> = {
+ navigation: BottomTabNavigationProp;
+ route: RouteProp;
+};
+
+export type TimingKeyboardAnimationConfig = {
+ animation: 'timing';
+ config?: Omit<
+ Partial,
+ 'toValue' | 'useNativeDriver'
+ >;
+};
+
+export type SpringKeyboardAnimationConfig = {
+ animation: 'spring';
+ config?: Omit<
+ Partial,
+ 'toValue' | 'useNativeDriver'
+ >;
+};
+
+export type TabBarVisibilityAnimationConfig =
+ | TimingKeyboardAnimationConfig
+ | SpringKeyboardAnimationConfig;
+
+export type BottomTabNavigationOptions = HeaderOptions & {
+ /**
+ * Title text for the screen.
+ */
+ title?: string;
+
+ /**
+ * Title string of a tab displayed in the tab bar
+ * or a function that given { focused: boolean, color: string, position: 'below-icon' | 'beside-icon', children: string } returns a React.Node to display in tab bar.
+ *
+ * When undefined, scene title is used. Use `tabBarShowLabel` to hide the label.
+ */
+ tabBarLabel?:
+ | string
+ | ((props: {
+ focused: boolean;
+ color: string;
+ position: LabelPosition;
+ children: string;
+ }) => React.ReactNode);
+
+ /**
+ * Whether the tab label should be visible. Defaults to `true`.
+ */
+ tabBarShowLabel?: boolean;
+
+ /**
+ * Whether the label is shown below the icon or beside the icon.
+ *
+ * - `below-icon`: the label is shown below the icon (typical for iPhones)
+ * - `beside-icon` the label is shown next to the icon (typical for iPad)
+ *
+ * By default, the position is chosen automatically based on device width.
+ */
+ tabBarLabelPosition?: LabelPosition;
+
+ /**
+ * Style object for the tab label.
+ */
+ tabBarLabelStyle?: StyleProp;
+
+ /**
+ * Whether label font should scale to respect Text Size accessibility settings.
+ */
+ tabBarAllowFontScaling?: boolean;
+
+ /**
+ * A function that given { focused: boolean, color: string } returns a React.Node to display in the tab bar.
+ */
+ tabBarIcon?: (props: {
+ focused: boolean;
+ color: string;
+ size: number;
+ }) => React.ReactNode;
+
+ /**
+ * Style object for the tab icon.
+ */
+ tabBarIconStyle?: StyleProp;
+
+ /**
+ * Text to show in a badge on the tab icon.
+ */
+ tabBarBadge?: number | string;
+
+ /**
+ * Custom style for the tab bar badge.
+ * You can specify a background color or text color here.
+ */
+ tabBarBadgeStyle?: StyleProp;
+
+ /**
+ * Accessibility label for the tab button. This is read by the screen reader when the user taps the tab.
+ * It's recommended to set this if you don't have a label for the tab.
+ */
+ tabBarAccessibilityLabel?: string;
+
+ /**
+ * ID to locate this tab button in tests.
+ */
+ tabBarTestID?: string;
+
+ /**
+ * Function which returns a React element to render as the tab bar button.
+ * Renders `Pressable` by default.
+ */
+ tabBarButton?: (props: BottomTabBarButtonProps) => React.ReactNode;
+
+ /**
+ * Color for the icon and label in the active tab.
+ */
+ tabBarActiveTintColor?: string;
+
+ /**
+ * Color for the icon and label in the inactive tabs.
+ */
+ tabBarInactiveTintColor?: string;
+
+ /**
+ * Background color for the active tab.
+ */
+ tabBarActiveBackgroundColor?: string;
+
+ /**
+ * Background color for the inactive tabs.
+ */
+ tabBarInactiveBackgroundColor?: string;
+
+ /**
+ * Style object for the tab item container.
+ */
+ tabBarItemStyle?: StyleProp;
+
+ /**
+ * Whether the tab bar gets hidden when the keyboard is shown. Defaults to `false`.
+ */
+ tabBarHideOnKeyboard?: boolean;
+
+ /**
+ * Animation config for showing and hiding the tab bar when the keyboard is shown/hidden.
+ */
+ tabBarVisibilityAnimationConfig?: {
+ show?: TabBarVisibilityAnimationConfig;
+ hide?: TabBarVisibilityAnimationConfig;
+ };
+
+ /**
+ * Style object for the tab bar container.
+ */
+ tabBarStyle?: Animated.WithAnimatedValue>;
+
+ /**
+ * Function which returns a React Element to use as background for the tab bar.
+ * You could render an image, a gradient, blur view etc.
+ *
+ * When using `BlurView`, make sure to set `position: 'absolute'` in `tabBarStyle` as well.
+ * You'd also need to use `useBottomTabBarHeight()` to add a bottom padding to your content.
+ */
+ tabBarBackground?: () => React.ReactNode;
+
+ /**
+ * Whether this screens should render the first time it's accessed. Defaults to `true`.
+ * Set it to `false` if you want to render the screen on initial render.
+ */
+ lazy?: boolean;
+
+ /**
+ * Function that given returns a React Element to display as a header.
+ */
+ header?: (props: BottomTabHeaderProps) => React.ReactNode;
+
+ /**
+ * Whether to show the header. Setting this to `false` hides the header.
+ * Defaults to `true`.
+ */
+ headerShown?: boolean;
+
+ /**
+ * Whether this screen should be unmounted when navigating away from it.
+ * Defaults to `false`.
+ */
+ unmountOnBlur?: boolean;
+
+ /**
+ * Whether inactive screens should be suspended from re-rendering. Defaults to `false`.
+ * Defaults to `true` when `enableFreeze()` is run at the top of the application.
+ * Requires `react-native-screens` version >=3.16.0.
+ *
+ * Only supported on iOS and Android.
+ */
+ freezeOnBlur?: boolean;
+};
+
+export type BottomTabDescriptor = Descriptor<
+ BottomTabNavigationOptions,
+ BottomTabNavigationProp,
+ RouteProp
+>;
+
+export type BottomTabDescriptorMap = Record;
+
+export type BottomTabNavigationConfig = {
+ /**
+ * Function that returns a React element to display as the tab bar.
+ */
+ tabBar?: (props: BottomTabBarProps) => React.ReactNode;
+ /**
+ * Safe area insets for the tab bar. This is used to avoid elements like the navigation bar on Android and bottom safe area on iOS.
+ * By default, the device's safe area insets are automatically detected. You can override the behavior with this option.
+ */
+ safeAreaInsets?: {
+ top?: number;
+ right?: number;
+ bottom?: number;
+ left?: number;
+ };
+ /**
+ * Whether inactive screens should be detached from the view hierarchy to save memory.
+ * Make sure to call `enableScreens` from `react-native-screens` to make it work.
+ * Defaults to `true` on Android.
+ */
+ detachInactiveScreens?: boolean;
+ /**
+ * Style object for the component wrapping the screen content.
+ */
+ sceneContainerStyle?: StyleProp;
+};
+
+export type BottomTabHeaderProps = {
+ /**
+ * Layout of the screen.
+ */
+ layout: Layout;
+ /**
+ * Options for the current screen.
+ */
+ options: BottomTabNavigationOptions;
+ /**
+ * Route object for the current screen.
+ */
+ route: RouteProp;
+ /**
+ * Navigation prop for the header.
+ */
+ navigation: BottomTabNavigationProp;
+};
+
+export type BottomTabBarProps = {
+ state: TabNavigationState;
+ descriptors: BottomTabDescriptorMap;
+ navigation: NavigationHelpers;
+ insets: EdgeInsets;
+};
+
+export type BottomTabBarButtonProps = Omit<
+ TouchableWithoutFeedbackProps,
+ 'onPress'
+> & {
+ to?: string;
+ children: React.ReactNode;
+ onPress?: (
+ e: React.MouseEvent | GestureResponderEvent
+ ) => void;
+};
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/BottomTabBarHeightCallbackContext.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/BottomTabBarHeightCallbackContext.tsx
new file mode 100644
index 00000000..03b3ef32
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/BottomTabBarHeightCallbackContext.tsx
@@ -0,0 +1,5 @@
+import * as React from 'react';
+
+export default React.createContext<((height: number) => void) | undefined>(
+ undefined
+);
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/BottomTabBarHeightContext.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/BottomTabBarHeightContext.tsx
new file mode 100644
index 00000000..e61d0446
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/BottomTabBarHeightContext.tsx
@@ -0,0 +1,3 @@
+import * as React from 'react';
+
+export default React.createContext(undefined);
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/useBottomTabBarHeight.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/useBottomTabBarHeight.tsx
new file mode 100644
index 00000000..8a559a7a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/useBottomTabBarHeight.tsx
@@ -0,0 +1,15 @@
+import * as React from 'react';
+
+import BottomTabBarHeightContext from './BottomTabBarHeightContext';
+
+export default function useBottomTabBarHeight() {
+ const height = React.useContext(BottomTabBarHeightContext);
+
+ if (height === undefined) {
+ throw new Error(
+ "Couldn't find the bottom tab bar height. Are you inside a screen in Bottom Tab Navigator?"
+ );
+ }
+
+ return height;
+}
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/useIsKeyboardShown.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/useIsKeyboardShown.tsx
new file mode 100644
index 00000000..2b3f356d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/utils/useIsKeyboardShown.tsx
@@ -0,0 +1,31 @@
+import * as React from 'react';
+import { EmitterSubscription, Keyboard, Platform } from 'react-native';
+
+export default function useIsKeyboardShown() {
+ const [isKeyboardShown, setIsKeyboardShown] = React.useState(false);
+
+ React.useEffect(() => {
+ const handleKeyboardShow = () => setIsKeyboardShown(true);
+ const handleKeyboardHide = () => setIsKeyboardShown(false);
+
+ let subscriptions: EmitterSubscription[];
+
+ if (Platform.OS === 'ios') {
+ subscriptions = [
+ Keyboard.addListener('keyboardWillShow', handleKeyboardShow),
+ Keyboard.addListener('keyboardWillHide', handleKeyboardHide),
+ ];
+ } else {
+ subscriptions = [
+ Keyboard.addListener('keyboardDidShow', handleKeyboardShow),
+ Keyboard.addListener('keyboardDidHide', handleKeyboardHide),
+ ];
+ }
+
+ return () => {
+ subscriptions.forEach((s) => s.remove());
+ };
+ }, []);
+
+ return isKeyboardShown;
+}
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/Badge.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/Badge.tsx
new file mode 100644
index 00000000..a9baa37f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/Badge.tsx
@@ -0,0 +1,110 @@
+import { useTheme } from '@react-navigation/native';
+import color from 'color';
+import * as React from 'react';
+import { Animated, StyleProp, StyleSheet, TextStyle } from 'react-native';
+
+type Props = {
+ /**
+ * Whether the badge is visible
+ */
+ visible: boolean;
+ /**
+ * Content of the `Badge`.
+ */
+ children?: string | number;
+ /**
+ * Size of the `Badge`.
+ */
+ size?: number;
+ /**
+ * Style object for the tab bar container.
+ */
+ style?: Animated.WithAnimatedValue>;
+};
+
+export default function Badge({
+ children,
+ style,
+ visible = true,
+ size = 18,
+ ...rest
+}: Props) {
+ const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));
+ const [rendered, setRendered] = React.useState(visible);
+
+ const theme = useTheme();
+
+ React.useEffect(() => {
+ if (!rendered) {
+ return;
+ }
+
+ Animated.timing(opacity, {
+ toValue: visible ? 1 : 0,
+ duration: 150,
+ useNativeDriver: true,
+ }).start(({ finished }) => {
+ if (finished && !visible) {
+ setRendered(false);
+ }
+ });
+
+ return () => opacity.stopAnimation();
+ }, [opacity, rendered, visible]);
+
+ if (!rendered) {
+ if (visible) {
+ setRendered(true);
+ } else {
+ return null;
+ }
+ }
+
+ // @ts-expect-error: backgroundColor definitely exists
+ const { backgroundColor = theme.colors.notification, ...restStyle } =
+ StyleSheet.flatten(style) || {};
+ const textColor = color(backgroundColor).isLight() ? 'black' : 'white';
+
+ const borderRadius = size / 2;
+ const fontSize = Math.floor((size * 3) / 4);
+
+ return (
+
+ {children}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ alignSelf: 'flex-end',
+ textAlign: 'center',
+ paddingHorizontal: 4,
+ overflow: 'hidden',
+ },
+});
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabBar.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabBar.tsx
new file mode 100644
index 00000000..96469a29
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabBar.tsx
@@ -0,0 +1,392 @@
+import { MissingIcon } from '@react-navigation/elements';
+import {
+ CommonActions,
+ NavigationContext,
+ NavigationRouteContext,
+ ParamListBase,
+ TabNavigationState,
+ useLinkBuilder,
+ useTheme,
+} from '@react-navigation/native';
+import React from 'react';
+import {
+ Animated,
+ LayoutChangeEvent,
+ Platform,
+ StyleProp,
+ StyleSheet,
+ View,
+ ViewStyle,
+} from 'react-native';
+import { EdgeInsets, useSafeAreaFrame } from 'react-native-safe-area-context';
+
+import type { BottomTabBarProps, BottomTabDescriptorMap } from '../types';
+import BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';
+import useIsKeyboardShown from '../utils/useIsKeyboardShown';
+import BottomTabItem from './BottomTabItem';
+
+type Props = BottomTabBarProps & {
+ style?: Animated.WithAnimatedValue>;
+};
+
+const DEFAULT_TABBAR_HEIGHT = 49;
+const COMPACT_TABBAR_HEIGHT = 32;
+const DEFAULT_MAX_TAB_ITEM_WIDTH = 125;
+
+const useNativeDriver = Platform.OS !== 'web';
+
+type Options = {
+ state: TabNavigationState;
+ descriptors: BottomTabDescriptorMap;
+ layout: { height: number; width: number };
+ dimensions: { height: number; width: number };
+};
+
+const shouldUseHorizontalLabels = ({
+ state,
+ descriptors,
+ layout,
+ dimensions,
+}: Options) => {
+ const { tabBarLabelPosition } =
+ descriptors[state.routes[state.index].key].options;
+
+ if (tabBarLabelPosition) {
+ switch (tabBarLabelPosition) {
+ case 'beside-icon':
+ return true;
+ case 'below-icon':
+ return false;
+ }
+ }
+
+ if (layout.width >= 768) {
+ // Screen size matches a tablet
+ const maxTabWidth = state.routes.reduce((acc, route) => {
+ const { tabBarItemStyle } = descriptors[route.key].options;
+ const flattenedStyle = StyleSheet.flatten(tabBarItemStyle);
+
+ if (flattenedStyle) {
+ if (typeof flattenedStyle.width === 'number') {
+ return acc + flattenedStyle.width;
+ } else if (typeof flattenedStyle.maxWidth === 'number') {
+ return acc + flattenedStyle.maxWidth;
+ }
+ }
+
+ return acc + DEFAULT_MAX_TAB_ITEM_WIDTH;
+ }, 0);
+
+ return maxTabWidth <= layout.width;
+ } else {
+ return dimensions.width > dimensions.height;
+ }
+};
+
+const getPaddingBottom = (insets: EdgeInsets) =>
+ Math.max(insets.bottom - Platform.select({ ios: 4, default: 0 }), 0);
+
+export const getTabBarHeight = ({
+ state,
+ descriptors,
+ dimensions,
+ insets,
+ style,
+ ...rest
+}: Options & {
+ insets: EdgeInsets;
+ style: Animated.WithAnimatedValue> | undefined;
+}) => {
+ // @ts-ignore
+ const customHeight = StyleSheet.flatten(style)?.height;
+
+ if (typeof customHeight === 'number') {
+ return customHeight;
+ }
+
+ const isLandscape = dimensions.width > dimensions.height;
+ const horizontalLabels = shouldUseHorizontalLabels({
+ state,
+ descriptors,
+ dimensions,
+ ...rest,
+ });
+ const paddingBottom = getPaddingBottom(insets);
+
+ if (
+ Platform.OS === 'ios' &&
+ !Platform.isPad &&
+ isLandscape &&
+ horizontalLabels
+ ) {
+ return COMPACT_TABBAR_HEIGHT + paddingBottom;
+ }
+
+ return DEFAULT_TABBAR_HEIGHT + paddingBottom;
+};
+
+export default function BottomTabBar({
+ state,
+ navigation,
+ descriptors,
+ insets,
+ style,
+}: Props) {
+ const { colors } = useTheme();
+ const buildLink = useLinkBuilder();
+
+ const focusedRoute = state.routes[state.index];
+ const focusedDescriptor = descriptors[focusedRoute.key];
+ const focusedOptions = focusedDescriptor.options;
+
+ const {
+ tabBarShowLabel,
+ tabBarHideOnKeyboard = false,
+ tabBarVisibilityAnimationConfig,
+ tabBarStyle,
+ tabBarBackground,
+ tabBarActiveTintColor,
+ tabBarInactiveTintColor,
+ tabBarActiveBackgroundColor,
+ tabBarInactiveBackgroundColor,
+ } = focusedOptions;
+
+ const dimensions = useSafeAreaFrame();
+ const isKeyboardShown = useIsKeyboardShown();
+
+ const onHeightChange = React.useContext(BottomTabBarHeightCallbackContext);
+
+ const shouldShowTabBar = !(tabBarHideOnKeyboard && isKeyboardShown);
+
+ const visibilityAnimationConfigRef = React.useRef(
+ tabBarVisibilityAnimationConfig
+ );
+
+ React.useEffect(() => {
+ visibilityAnimationConfigRef.current = tabBarVisibilityAnimationConfig;
+ });
+
+ const [isTabBarHidden, setIsTabBarHidden] = React.useState(!shouldShowTabBar);
+
+ const [visible] = React.useState(
+ () => new Animated.Value(shouldShowTabBar ? 1 : 0)
+ );
+
+ React.useEffect(() => {
+ const visibilityAnimationConfig = visibilityAnimationConfigRef.current;
+
+ if (shouldShowTabBar) {
+ const animation =
+ visibilityAnimationConfig?.show?.animation === 'spring'
+ ? Animated.spring
+ : Animated.timing;
+
+ animation(visible, {
+ toValue: 1,
+ useNativeDriver,
+ duration: 250,
+ ...visibilityAnimationConfig?.show?.config,
+ }).start(({ finished }) => {
+ if (finished) {
+ setIsTabBarHidden(false);
+ }
+ });
+ } else {
+ setIsTabBarHidden(true);
+
+ const animation =
+ visibilityAnimationConfig?.hide?.animation === 'spring'
+ ? Animated.spring
+ : Animated.timing;
+
+ animation(visible, {
+ toValue: 0,
+ useNativeDriver,
+ duration: 200,
+ ...visibilityAnimationConfig?.hide?.config,
+ }).start();
+ }
+
+ return () => visible.stopAnimation();
+ }, [visible, shouldShowTabBar]);
+
+ const [layout, setLayout] = React.useState({
+ height: 0,
+ width: dimensions.width,
+ });
+
+ const handleLayout = (e: LayoutChangeEvent) => {
+ const { height, width } = e.nativeEvent.layout;
+
+ onHeightChange?.(height);
+
+ setLayout((layout) => {
+ if (height === layout.height && width === layout.width) {
+ return layout;
+ } else {
+ return {
+ height,
+ width,
+ };
+ }
+ });
+ };
+
+ const { routes } = state;
+
+ const paddingBottom = getPaddingBottom(insets);
+ const tabBarHeight = getTabBarHeight({
+ state,
+ descriptors,
+ insets,
+ dimensions,
+ layout,
+ style: [tabBarStyle, style],
+ });
+
+ const hasHorizontalLabels = shouldUseHorizontalLabels({
+ state,
+ descriptors,
+ dimensions,
+ layout,
+ });
+
+ const tabBarBackgroundElement = tabBarBackground?.();
+
+ return (
+
+
+ {tabBarBackgroundElement}
+
+
+ {routes.map((route, index) => {
+ const focused = index === state.index;
+ const { options } = descriptors[route.key];
+
+ const onPress = () => {
+ const event = navigation.emit({
+ type: 'tabPress',
+ target: route.key,
+ canPreventDefault: true,
+ });
+
+ if (!focused && !event.defaultPrevented) {
+ navigation.dispatch({
+ ...CommonActions.navigate({ name: route.name, merge: true }),
+ target: state.key,
+ });
+ }
+ };
+
+ const onLongPress = () => {
+ navigation.emit({
+ type: 'tabLongPress',
+ target: route.key,
+ });
+ };
+
+ const label =
+ options.tabBarLabel !== undefined
+ ? options.tabBarLabel
+ : options.title !== undefined
+ ? options.title
+ : route.name;
+
+ const accessibilityLabel =
+ options.tabBarAccessibilityLabel !== undefined
+ ? options.tabBarAccessibilityLabel
+ : typeof label === 'string' && Platform.OS === 'ios'
+ ? `${label}, tab, ${index + 1} of ${routes.length}`
+ : undefined;
+
+ return (
+
+
+ (
+
+ ))
+ }
+ badge={options.tabBarBadge}
+ badgeStyle={options.tabBarBadgeStyle}
+ label={label}
+ showLabel={tabBarShowLabel}
+ labelStyle={options.tabBarLabelStyle}
+ iconStyle={options.tabBarIconStyle}
+ style={options.tabBarItemStyle}
+ />
+
+
+ );
+ })}
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ tabBar: {
+ left: 0,
+ right: 0,
+ bottom: 0,
+ borderTopWidth: StyleSheet.hairlineWidth,
+ elevation: 8,
+ },
+ content: {
+ flex: 1,
+ flexDirection: 'row',
+ },
+});
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabItem.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabItem.tsx
new file mode 100644
index 00000000..9b5975af
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabItem.tsx
@@ -0,0 +1,333 @@
+import { Link, Route, useTheme } from '@react-navigation/native';
+import Color from 'color';
+import React from 'react';
+import {
+ GestureResponderEvent,
+ Platform,
+ Pressable,
+ StyleProp,
+ StyleSheet,
+ Text,
+ TextStyle,
+ ViewStyle,
+} from 'react-native';
+
+import type {
+ BottomTabBarButtonProps,
+ BottomTabDescriptor,
+ LabelPosition,
+} from '../types';
+import TabBarIcon from './TabBarIcon';
+
+type Props = {
+ /**
+ * Whether the tab is focused.
+ */
+ focused: boolean;
+ /**
+ * The route object which should be specified by the tab.
+ */
+ route: Route;
+ /**
+ * The descriptor object for the route.
+ */
+ descriptor: BottomTabDescriptor;
+ /**
+ * The label text of the tab.
+ */
+ label:
+ | string
+ | ((props: {
+ focused: boolean;
+ color: string;
+ position: LabelPosition;
+ children: string;
+ }) => React.ReactNode);
+ /**
+ * Icon to display for the tab.
+ */
+ icon: (props: {
+ focused: boolean;
+ size: number;
+ color: string;
+ }) => React.ReactNode;
+ /**
+ * Text to show in a badge on the tab icon.
+ */
+ badge?: number | string;
+ /**
+ * Custom style for the badge.
+ */
+ badgeStyle?: StyleProp;
+ /**
+ * URL to use for the link to the tab.
+ */
+ to?: string;
+ /**
+ * The button for the tab. Uses a `TouchableWithoutFeedback` by default.
+ */
+ button?: (props: BottomTabBarButtonProps) => React.ReactNode;
+ /**
+ * The accessibility label for the tab.
+ */
+ accessibilityLabel?: string;
+ /**
+ * An unique ID for testing for the tab.
+ */
+ testID?: string;
+ /**
+ * Function to execute on press in React Native.
+ * On the web, this will use onClick.
+ */
+ onPress: (
+ e: React.MouseEvent | GestureResponderEvent
+ ) => void;
+ /**
+ * Function to execute on long press.
+ */
+ onLongPress: (e: GestureResponderEvent) => void;
+ /**
+ * Whether the label should be aligned with the icon horizontally.
+ */
+ horizontal: boolean;
+ /**
+ * Color for the icon and label when the item is active.
+ */
+ activeTintColor?: string;
+ /**
+ * Color for the icon and label when the item is inactive.
+ */
+ inactiveTintColor?: string;
+ /**
+ * Background color for item when its active.
+ */
+ activeBackgroundColor?: string;
+ /**
+ * Background color for item when its inactive.
+ */
+ inactiveBackgroundColor?: string;
+ /**
+ * Whether to show the label text for the tab.
+ */
+ showLabel?: boolean;
+ /**
+ * Whether to allow scaling the font for the label for accessibility purposes.
+ */
+ allowFontScaling?: boolean;
+ /**
+ * Style object for the label element.
+ */
+ labelStyle?: StyleProp;
+ /**
+ * Style object for the icon element.
+ */
+ iconStyle?: StyleProp;
+ /**
+ * Style object for the wrapper element.
+ */
+ style?: StyleProp;
+};
+
+export default function BottomTabBarItem({
+ focused,
+ route,
+ descriptor,
+ label,
+ icon,
+ badge,
+ badgeStyle,
+ to,
+ button = ({
+ children,
+ style,
+ onPress,
+ to,
+ accessibilityRole,
+ ...rest
+ }: BottomTabBarButtonProps) => {
+ if (Platform.OS === 'web' && to) {
+ // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.
+ // We need to use `onClick` to be able to prevent default browser handling of links.
+ return (
+ {
+ if (
+ !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && // ignore clicks with modifier keys
+ (e.button == null || e.button === 0) // ignore everything but left clicks
+ ) {
+ e.preventDefault();
+ onPress?.(e);
+ }
+ }}
+ >
+ {children}
+
+ );
+ } else {
+ return (
+
+ {children}
+
+ );
+ }
+ },
+ accessibilityLabel,
+ testID,
+ onPress,
+ onLongPress,
+ horizontal,
+ activeTintColor: customActiveTintColor,
+ inactiveTintColor: customInactiveTintColor,
+ activeBackgroundColor = 'transparent',
+ inactiveBackgroundColor = 'transparent',
+ showLabel = true,
+ allowFontScaling,
+ labelStyle,
+ iconStyle,
+ style,
+}: Props) {
+ const { colors } = useTheme();
+
+ const activeTintColor =
+ customActiveTintColor === undefined
+ ? colors.primary
+ : customActiveTintColor;
+
+ const inactiveTintColor =
+ customInactiveTintColor === undefined
+ ? Color(colors.text).mix(Color(colors.card), 0.5).hex()
+ : customInactiveTintColor;
+
+ const renderLabel = ({ focused }: { focused: boolean }) => {
+ if (showLabel === false) {
+ return null;
+ }
+
+ const color = focused ? activeTintColor : inactiveTintColor;
+
+ if (typeof label === 'string') {
+ return (
+
+ {label}
+
+ );
+ }
+
+ const { options } = descriptor;
+ const children =
+ typeof options.tabBarLabel === 'string'
+ ? options.tabBarLabel
+ : options.title !== undefined
+ ? options.title
+ : route.name;
+
+ return label({
+ focused,
+ color,
+ position: horizontal ? 'beside-icon' : 'below-icon',
+ children,
+ });
+ };
+
+ const renderIcon = ({ focused }: { focused: boolean }) => {
+ if (icon === undefined) {
+ return null;
+ }
+
+ const activeOpacity = focused ? 1 : 0;
+ const inactiveOpacity = focused ? 0 : 1;
+
+ return (
+
+ );
+ };
+
+ const scene = { route, focused };
+
+ const backgroundColor = focused
+ ? activeBackgroundColor
+ : inactiveBackgroundColor;
+
+ return button({
+ to,
+ onPress,
+ onLongPress,
+ testID,
+ accessibilityLabel,
+ // FIXME: accessibilityRole: 'tab' doesn't seem to work as expected on iOS
+ accessibilityRole: Platform.select({ ios: 'button', default: 'tab' }),
+ accessibilityState: { selected: focused },
+ // @ts-expect-error: keep for compatibility with older React Native versions
+ accessibilityStates: focused ? ['selected'] : [],
+ style: [
+ styles.tab,
+ { backgroundColor },
+ horizontal ? styles.tabLandscape : styles.tabPortrait,
+ style,
+ ],
+ children: (
+
+ {renderIcon(scene)}
+ {renderLabel(scene)}
+
+ ),
+ }) as React.ReactElement;
+}
+
+const styles = StyleSheet.create({
+ tab: {
+ flex: 1,
+ alignItems: 'center',
+ },
+ tabPortrait: {
+ justifyContent: 'flex-end',
+ flexDirection: 'column',
+ },
+ tabLandscape: {
+ justifyContent: 'center',
+ flexDirection: 'row',
+ },
+ label: {
+ textAlign: 'center',
+ backgroundColor: 'transparent',
+ },
+ labelBeneath: {
+ fontSize: 10,
+ },
+ labelBeside: {
+ fontSize: 13,
+ marginLeft: 20,
+ marginTop: 3,
+ },
+ button: {
+ display: 'flex',
+ },
+});
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabView.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabView.tsx
new file mode 100644
index 00000000..f50d37a6
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabView.tsx
@@ -0,0 +1,170 @@
+import {
+ getHeaderTitle,
+ Header,
+ SafeAreaProviderCompat,
+ Screen,
+} from '@react-navigation/elements';
+import type {
+ ParamListBase,
+ TabNavigationState,
+} from '@react-navigation/native';
+import * as React from 'react';
+import { Platform, StyleSheet } from 'react-native';
+import { SafeAreaInsetsContext } from 'react-native-safe-area-context';
+
+import type {
+ BottomTabBarProps,
+ BottomTabDescriptorMap,
+ BottomTabHeaderProps,
+ BottomTabNavigationConfig,
+ BottomTabNavigationHelpers,
+ BottomTabNavigationProp,
+} from '../types';
+import BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';
+import BottomTabBarHeightContext from '../utils/BottomTabBarHeightContext';
+import BottomTabBar, { getTabBarHeight } from './BottomTabBar';
+import { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';
+
+type Props = BottomTabNavigationConfig & {
+ state: TabNavigationState;
+ navigation: BottomTabNavigationHelpers;
+ descriptors: BottomTabDescriptorMap;
+};
+
+export default function BottomTabView(props: Props) {
+ const {
+ tabBar = (props: BottomTabBarProps) => ,
+ state,
+ navigation,
+ descriptors,
+ safeAreaInsets,
+ detachInactiveScreens = Platform.OS === 'web' ||
+ Platform.OS === 'android' ||
+ Platform.OS === 'ios',
+ sceneContainerStyle,
+ } = props;
+
+ const focusedRouteKey = state.routes[state.index].key;
+ const [loaded, setLoaded] = React.useState([focusedRouteKey]);
+
+ if (!loaded.includes(focusedRouteKey)) {
+ setLoaded([...loaded, focusedRouteKey]);
+ }
+
+ const dimensions = SafeAreaProviderCompat.initialMetrics.frame;
+ const [tabBarHeight, setTabBarHeight] = React.useState(() =>
+ getTabBarHeight({
+ state,
+ descriptors,
+ dimensions,
+ layout: { width: dimensions.width, height: 0 },
+ insets: {
+ ...SafeAreaProviderCompat.initialMetrics.insets,
+ ...props.safeAreaInsets,
+ },
+ style: descriptors[state.routes[state.index].key].options.tabBarStyle,
+ })
+ );
+
+ const renderTabBar = () => {
+ return (
+
+ {(insets) =>
+ tabBar({
+ state: state,
+ descriptors: descriptors,
+ navigation: navigation,
+ insets: {
+ top: safeAreaInsets?.top ?? insets?.top ?? 0,
+ right: safeAreaInsets?.right ?? insets?.right ?? 0,
+ bottom: safeAreaInsets?.bottom ?? insets?.bottom ?? 0,
+ left: safeAreaInsets?.left ?? insets?.left ?? 0,
+ },
+ })
+ }
+
+ );
+ };
+
+ const { routes } = state;
+
+ return (
+
+
+ {routes.map((route, index) => {
+ const descriptor = descriptors[route.key];
+ const { lazy = true, unmountOnBlur } = descriptor.options;
+ const isFocused = state.index === index;
+
+ if (unmountOnBlur && !isFocused) {
+ return null;
+ }
+
+ if (lazy && !loaded.includes(route.key) && !isFocused) {
+ // Don't render a lazy screen if we've never navigated to it
+ return null;
+ }
+
+ const {
+ freezeOnBlur,
+ header = ({ layout, options }: BottomTabHeaderProps) => (
+
+ ),
+ headerShown,
+ headerStatusBarHeight,
+ headerTransparent,
+ } = descriptor.options;
+
+ return (
+
+
+ ,
+ options: descriptor.options,
+ })}
+ style={sceneContainerStyle}
+ >
+ {descriptor.render()}
+
+
+
+ );
+ })}
+
+
+ {renderTabBar()}
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ overflow: 'hidden',
+ },
+});
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/ScreenFallback.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/ScreenFallback.tsx
new file mode 100644
index 00000000..9b7580db
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/ScreenFallback.tsx
@@ -0,0 +1,50 @@
+import { ResourceSavingView } from '@react-navigation/elements';
+import * as React from 'react';
+import { StyleProp, View, ViewProps, ViewStyle } from 'react-native';
+
+type Props = {
+ visible: boolean;
+ children: React.ReactNode;
+ enabled: boolean;
+ freezeOnBlur?: boolean;
+ style?: StyleProp;
+};
+
+let Screens: typeof import('react-native-screens') | undefined;
+
+try {
+ Screens = require('react-native-screens');
+} catch (e) {
+ // Ignore
+}
+
+export const MaybeScreenContainer = ({
+ enabled,
+ ...rest
+}: ViewProps & {
+ enabled: boolean;
+ hasTwoStates: boolean;
+ children: React.ReactNode;
+}) => {
+ if (Screens?.screensEnabled?.()) {
+ return ;
+ }
+
+ return ;
+};
+
+export function MaybeScreen({ visible, children, ...rest }: Props) {
+ if (Screens?.screensEnabled?.()) {
+ return (
+
+ {children}
+
+ );
+ }
+
+ return (
+
+ {children}
+
+ );
+}
diff --git a/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/TabBarIcon.tsx b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/TabBarIcon.tsx
new file mode 100644
index 00000000..de3c07b8
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/bottom-tabs/src/views/TabBarIcon.tsx
@@ -0,0 +1,110 @@
+import type { Route } from '@react-navigation/native';
+import React from 'react';
+import {
+ StyleProp,
+ StyleSheet,
+ TextStyle,
+ View,
+ ViewStyle,
+} from 'react-native';
+
+import Badge from './Badge';
+
+type Props = {
+ route: Route;
+ horizontal: boolean;
+ badge?: string | number;
+ badgeStyle?: StyleProp;
+ activeOpacity: number;
+ inactiveOpacity: number;
+ activeTintColor: string;
+ inactiveTintColor: string;
+ renderIcon: (props: {
+ focused: boolean;
+ color: string;
+ size: number;
+ }) => React.ReactNode;
+ style: StyleProp;
+};
+
+export default function TabBarIcon({
+ route: _,
+ horizontal,
+ badge,
+ badgeStyle,
+ activeOpacity,
+ inactiveOpacity,
+ activeTintColor,
+ inactiveTintColor,
+ renderIcon,
+ style,
+}: Props) {
+ const size = 25;
+
+ // We render the icon twice at the same position on top of each other:
+ // active and inactive one, so we can fade between them.
+ return (
+
+
+ {renderIcon({
+ focused: true,
+ size,
+ color: activeTintColor,
+ })}
+
+
+ {renderIcon({
+ focused: false,
+ size,
+ color: inactiveTintColor,
+ })}
+
+
+ {badge}
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ icon: {
+ // We render the icon twice at the same position on top of each other:
+ // active and inactive one, so we can fade between them:
+ // Cover the whole iconContainer:
+ position: 'absolute',
+ alignSelf: 'center',
+ alignItems: 'center',
+ justifyContent: 'center',
+ height: '100%',
+ width: '100%',
+ // Workaround for react-native >= 0.54 layout bug
+ minWidth: 25,
+ },
+ iconVertical: {
+ flex: 1,
+ },
+ iconHorizontal: {
+ height: '100%',
+ marginTop: 3,
+ },
+ badge: {
+ position: 'absolute',
+ left: 3,
+ },
+ badgeVertical: {
+ top: 3,
+ },
+ badgeHorizontal: {
+ top: 7,
+ },
+});
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/LICENSE b/iut-expo-starter/node_modules/@react-navigation/core/LICENSE
new file mode 100644
index 00000000..9d268cb0
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 React Navigation Contributors
+
+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-navigation/core/README.md b/iut-expo-starter/node_modules/@react-navigation/core/README.md
new file mode 100644
index 00000000..f5ff3f30
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/README.md
@@ -0,0 +1,44 @@
+# `@react-navigation/core`
+
+Core utilities for building navigators independent of the platform.
+
+## Installation
+
+Open a Terminal in your project's folder and run,
+
+```sh
+yarn add @react-navigation/core
+```
+
+## Usage
+
+A basic custom navigator bundling a router and a view looks like this:
+
+```js
+import {
+ createNavigatorFactory,
+ useNavigationBuilder,
+} from '@react-navigation/core';
+import { StackRouter } from '@react-navigation/routers';
+
+function StackNavigator({ initialRouteName, children, ...rest }) {
+ const { state, navigation, descriptors, NavigationContent } =
+ useNavigationBuilder(StackRouter, {
+ initialRouteName,
+ children,
+ });
+
+ return (
+
+
+
+ );
+}
+
+export default createNavigatorFactory(StackNavigator);
+```
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/BaseNavigationContainer.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/BaseNavigationContainer.js
new file mode 100644
index 00000000..7b51331b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/BaseNavigationContainer.js
@@ -0,0 +1,345 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _routers = require("@react-navigation/routers");
+var React = _interopRequireWildcard(require("react"));
+var _checkDuplicateRouteNames = _interopRequireDefault(require("./checkDuplicateRouteNames"));
+var _checkSerializable = _interopRequireDefault(require("./checkSerializable"));
+var _createNavigationContainerRef = require("./createNavigationContainerRef");
+var _EnsureSingleNavigator = _interopRequireDefault(require("./EnsureSingleNavigator"));
+var _findFocusedRoute = _interopRequireDefault(require("./findFocusedRoute"));
+var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
+var _NavigationContainerRefContext = _interopRequireDefault(require("./NavigationContainerRefContext"));
+var _NavigationContext = _interopRequireDefault(require("./NavigationContext"));
+var _NavigationRouteContext = _interopRequireDefault(require("./NavigationRouteContext"));
+var _NavigationStateContext = _interopRequireDefault(require("./NavigationStateContext"));
+var _UnhandledActionContext = _interopRequireDefault(require("./UnhandledActionContext"));
+var _useChildListeners = _interopRequireDefault(require("./useChildListeners"));
+var _useEventEmitter = _interopRequireDefault(require("./useEventEmitter"));
+var _useKeyedChildListeners = _interopRequireDefault(require("./useKeyedChildListeners"));
+var _useOptionsGetters = _interopRequireDefault(require("./useOptionsGetters"));
+var _useScheduleUpdate = require("./useScheduleUpdate");
+var _useSyncState = _interopRequireDefault(require("./useSyncState"));
+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; }
+const serializableWarnings = [];
+const duplicateNameWarnings = [];
+
+/**
+ * Remove `key` and `routeNames` from the state objects recursively to get partial state.
+ *
+ * @param state Initial state object.
+ */
+const getPartialState = state => {
+ if (state === undefined) {
+ return;
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const {
+ key,
+ routeNames,
+ ...partialState
+ } = state;
+ return {
+ ...partialState,
+ stale: true,
+ routes: state.routes.map(route => {
+ if (route.state === undefined) {
+ return route;
+ }
+ return {
+ ...route,
+ state: getPartialState(route.state)
+ };
+ })
+ };
+};
+
+/**
+ * Container component which holds the navigation state.
+ * This should be rendered at the root wrapping the whole app.
+ *
+ * @param props.initialState Initial state object for the navigation tree.
+ * @param props.onStateChange Callback which is called with the latest navigation state when it changes.
+ * @param props.children Child elements to render the content.
+ * @param props.ref Ref object which refers to the navigation object containing helper methods.
+ */
+const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function BaseNavigationContainer(_ref, ref) {
+ let {
+ initialState,
+ onStateChange,
+ onUnhandledAction,
+ independent,
+ children
+ } = _ref;
+ const parent = React.useContext(_NavigationStateContext.default);
+ if (!parent.isDefault && !independent) {
+ throw new Error("Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional, pass 'independent={true}' explicitly. Note that this will make the child navigators disconnected from the parent and you won't be able to navigate between them.");
+ }
+ const [state, getState, setState, scheduleUpdate, flushUpdates] = (0, _useSyncState.default)(() => getPartialState(initialState == null ? undefined : initialState));
+ const isFirstMountRef = React.useRef(true);
+ const navigatorKeyRef = React.useRef();
+ const getKey = React.useCallback(() => navigatorKeyRef.current, []);
+ const setKey = React.useCallback(key => {
+ navigatorKeyRef.current = key;
+ }, []);
+ const {
+ listeners,
+ addListener
+ } = (0, _useChildListeners.default)();
+ const {
+ keyedListeners,
+ addKeyedListener
+ } = (0, _useKeyedChildListeners.default)();
+ const dispatch = React.useCallback(action => {
+ if (listeners.focus[0] == null) {
+ console.error(_createNavigationContainerRef.NOT_INITIALIZED_ERROR);
+ } else {
+ listeners.focus[0](navigation => navigation.dispatch(action));
+ }
+ }, [listeners.focus]);
+ const canGoBack = React.useCallback(() => {
+ if (listeners.focus[0] == null) {
+ return false;
+ }
+ const {
+ result,
+ handled
+ } = listeners.focus[0](navigation => navigation.canGoBack());
+ if (handled) {
+ return result;
+ } else {
+ return false;
+ }
+ }, [listeners.focus]);
+ const resetRoot = React.useCallback(state => {
+ var _keyedListeners$getSt, _keyedListeners$getSt2;
+ const target = (state === null || state === void 0 ? void 0 : state.key) ?? ((_keyedListeners$getSt = (_keyedListeners$getSt2 = keyedListeners.getState).root) === null || _keyedListeners$getSt === void 0 ? void 0 : _keyedListeners$getSt.call(_keyedListeners$getSt2).key);
+ if (target == null) {
+ console.error(_createNavigationContainerRef.NOT_INITIALIZED_ERROR);
+ } else {
+ listeners.focus[0](navigation => navigation.dispatch({
+ ..._routers.CommonActions.reset(state),
+ target
+ }));
+ }
+ }, [keyedListeners.getState, listeners.focus]);
+ const getRootState = React.useCallback(() => {
+ var _keyedListeners$getSt3, _keyedListeners$getSt4;
+ return (_keyedListeners$getSt3 = (_keyedListeners$getSt4 = keyedListeners.getState).root) === null || _keyedListeners$getSt3 === void 0 ? void 0 : _keyedListeners$getSt3.call(_keyedListeners$getSt4);
+ }, [keyedListeners.getState]);
+ const getCurrentRoute = React.useCallback(() => {
+ const state = getRootState();
+ if (state == null) {
+ return undefined;
+ }
+ const route = (0, _findFocusedRoute.default)(state);
+ return route;
+ }, [getRootState]);
+ const emitter = (0, _useEventEmitter.default)();
+ const {
+ addOptionsGetter,
+ getCurrentOptions
+ } = (0, _useOptionsGetters.default)({});
+ const navigation = React.useMemo(() => ({
+ ...Object.keys(_routers.CommonActions).reduce((acc, name) => {
+ acc[name] = function () {
+ return (
+ // @ts-expect-error: this is ok
+ dispatch(_routers.CommonActions[name](...arguments))
+ );
+ };
+ return acc;
+ }, {}),
+ ...emitter.create('root'),
+ dispatch,
+ resetRoot,
+ isFocused: () => true,
+ canGoBack,
+ getParent: () => undefined,
+ getState: () => stateRef.current,
+ getRootState,
+ getCurrentRoute,
+ getCurrentOptions,
+ isReady: () => listeners.focus[0] != null
+ }), [canGoBack, dispatch, emitter, getCurrentOptions, getCurrentRoute, getRootState, listeners.focus, resetRoot]);
+ React.useImperativeHandle(ref, () => navigation, [navigation]);
+ const onDispatchAction = React.useCallback((action, noop) => {
+ emitter.emit({
+ type: '__unsafe_action__',
+ data: {
+ action,
+ noop,
+ stack: stackRef.current
+ }
+ });
+ }, [emitter]);
+ const lastEmittedOptionsRef = React.useRef();
+ const onOptionsChange = React.useCallback(options => {
+ if (lastEmittedOptionsRef.current === options) {
+ return;
+ }
+ lastEmittedOptionsRef.current = options;
+ emitter.emit({
+ type: 'options',
+ data: {
+ options
+ }
+ });
+ }, [emitter]);
+ const stackRef = React.useRef();
+ const builderContext = React.useMemo(() => ({
+ addListener,
+ addKeyedListener,
+ onDispatchAction,
+ onOptionsChange,
+ stackRef
+ }), [addListener, addKeyedListener, onDispatchAction, onOptionsChange]);
+ const scheduleContext = React.useMemo(() => ({
+ scheduleUpdate,
+ flushUpdates
+ }), [scheduleUpdate, flushUpdates]);
+ const isInitialRef = React.useRef(true);
+ const getIsInitial = React.useCallback(() => isInitialRef.current, []);
+ const context = React.useMemo(() => ({
+ state,
+ getState,
+ setState,
+ getKey,
+ setKey,
+ getIsInitial,
+ addOptionsGetter
+ }), [state, getState, setState, getKey, setKey, getIsInitial, addOptionsGetter]);
+ const onStateChangeRef = React.useRef(onStateChange);
+ const stateRef = React.useRef(state);
+ React.useEffect(() => {
+ isInitialRef.current = false;
+ onStateChangeRef.current = onStateChange;
+ stateRef.current = state;
+ });
+ React.useEffect(() => {
+ const hydratedState = getRootState();
+ if (process.env.NODE_ENV !== 'production') {
+ if (hydratedState !== undefined) {
+ const serializableResult = (0, _checkSerializable.default)(hydratedState);
+ if (!serializableResult.serializable) {
+ const {
+ location,
+ reason
+ } = serializableResult;
+ let path = '';
+ let pointer = hydratedState;
+ let params = false;
+ for (let i = 0; i < location.length; i++) {
+ const curr = location[i];
+ const prev = location[i - 1];
+ pointer = pointer[curr];
+ if (!params && curr === 'state') {
+ continue;
+ } else if (!params && curr === 'routes') {
+ if (path) {
+ path += ' > ';
+ }
+ } else if (!params && typeof curr === 'number' && prev === 'routes') {
+ var _pointer;
+ path += (_pointer = pointer) === null || _pointer === void 0 ? void 0 : _pointer.name;
+ } else if (!params) {
+ path += ` > ${curr}`;
+ params = true;
+ } else {
+ if (typeof curr === 'number' || /^[0-9]+$/.test(curr)) {
+ path += `[${curr}]`;
+ } else if (/^[a-z$_]+$/i.test(curr)) {
+ path += `.${curr}`;
+ } else {
+ path += `[${JSON.stringify(curr)}]`;
+ }
+ }
+ }
+ const message = `Non-serializable values were found in the navigation state. Check:\n\n${path} (${reason})\n\nThis can break usage such as persisting and restoring state. This might happen if you passed non-serializable values such as function, class instances etc. in params. If you need to use components with callbacks in your options, you can use 'navigation.setOptions' instead. See https://reactnavigation.org/docs/troubleshooting#i-get-the-warning-non-serializable-values-were-found-in-the-navigation-state for more details.`;
+ if (!serializableWarnings.includes(message)) {
+ serializableWarnings.push(message);
+ console.warn(message);
+ }
+ }
+ const duplicateRouteNamesResult = (0, _checkDuplicateRouteNames.default)(hydratedState);
+ if (duplicateRouteNamesResult.length) {
+ const message = `Found screens with the same name nested inside one another. Check:\n${duplicateRouteNamesResult.map(locations => `\n${locations.join(', ')}`)}\n\nThis can cause confusing behavior during navigation. Consider using unique names for each screen instead.`;
+ if (!duplicateNameWarnings.includes(message)) {
+ duplicateNameWarnings.push(message);
+ console.warn(message);
+ }
+ }
+ }
+ }
+ emitter.emit({
+ type: 'state',
+ data: {
+ state
+ }
+ });
+ if (!isFirstMountRef.current && onStateChangeRef.current) {
+ onStateChangeRef.current(hydratedState);
+ }
+ isFirstMountRef.current = false;
+ }, [getRootState, emitter, state]);
+ const defaultOnUnhandledAction = React.useCallback(action => {
+ if (process.env.NODE_ENV === 'production') {
+ return;
+ }
+ const payload = action.payload;
+ let message = `The action '${action.type}'${payload ? ` with payload ${JSON.stringify(action.payload)}` : ''} was not handled by any navigator.`;
+ switch (action.type) {
+ case 'NAVIGATE':
+ case 'PUSH':
+ case 'REPLACE':
+ case 'JUMP_TO':
+ if (payload !== null && payload !== void 0 && payload.name) {
+ message += `\n\nDo you have a screen named '${payload.name}'?\n\nIf you're trying to navigate to a screen in a nested navigator, see https://reactnavigation.org/docs/nesting-navigators#navigating-to-a-screen-in-a-nested-navigator.`;
+ } else {
+ message += `\n\nYou need to pass the name of the screen to navigate to.\n\nSee https://reactnavigation.org/docs/navigation-actions for usage.`;
+ }
+ break;
+ case 'GO_BACK':
+ case 'POP':
+ case 'POP_TO_TOP':
+ message += `\n\nIs there any screen to go back to?`;
+ break;
+ case 'OPEN_DRAWER':
+ case 'CLOSE_DRAWER':
+ case 'TOGGLE_DRAWER':
+ message += `\n\nIs your screen inside a Drawer navigator?`;
+ break;
+ }
+ message += `\n\nThis is a development-only warning and won't be shown in production.`;
+ console.error(message);
+ }, []);
+ let element = /*#__PURE__*/React.createElement(_NavigationContainerRefContext.default.Provider, {
+ value: navigation
+ }, /*#__PURE__*/React.createElement(_useScheduleUpdate.ScheduleUpdateContext.Provider, {
+ value: scheduleContext
+ }, /*#__PURE__*/React.createElement(_NavigationBuilderContext.default.Provider, {
+ value: builderContext
+ }, /*#__PURE__*/React.createElement(_NavigationStateContext.default.Provider, {
+ value: context
+ }, /*#__PURE__*/React.createElement(_UnhandledActionContext.default.Provider, {
+ value: onUnhandledAction ?? defaultOnUnhandledAction
+ }, /*#__PURE__*/React.createElement(_EnsureSingleNavigator.default, null, children))))));
+ if (independent) {
+ // We need to clear any existing contexts for nested independent container to work correctly
+ element = /*#__PURE__*/React.createElement(_NavigationRouteContext.default.Provider, {
+ value: undefined
+ }, /*#__PURE__*/React.createElement(_NavigationContext.default.Provider, {
+ value: undefined
+ }, element));
+ }
+ return element;
+});
+var _default = BaseNavigationContainer;
+exports.default = _default;
+//# sourceMappingURL=BaseNavigationContainer.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/BaseNavigationContainer.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/BaseNavigationContainer.js.map
new file mode 100644
index 00000000..66c681b6
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/BaseNavigationContainer.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["serializableWarnings","duplicateNameWarnings","getPartialState","state","undefined","key","routeNames","partialState","stale","routes","map","route","BaseNavigationContainer","React","forwardRef","ref","initialState","onStateChange","onUnhandledAction","independent","children","parent","useContext","NavigationStateContext","isDefault","Error","getState","setState","scheduleUpdate","flushUpdates","useSyncState","isFirstMountRef","useRef","navigatorKeyRef","getKey","useCallback","current","setKey","listeners","addListener","useChildListeners","keyedListeners","addKeyedListener","useKeyedChildListeners","dispatch","action","focus","console","error","NOT_INITIALIZED_ERROR","navigation","canGoBack","result","handled","resetRoot","target","root","CommonActions","reset","getRootState","getCurrentRoute","findFocusedRoute","emitter","useEventEmitter","addOptionsGetter","getCurrentOptions","useOptionsGetters","useMemo","Object","keys","reduce","acc","name","create","isFocused","getParent","stateRef","isReady","useImperativeHandle","onDispatchAction","noop","emit","type","data","stack","stackRef","lastEmittedOptionsRef","onOptionsChange","options","builderContext","scheduleContext","isInitialRef","getIsInitial","context","onStateChangeRef","useEffect","hydratedState","process","env","NODE_ENV","serializableResult","checkSerializable","serializable","location","reason","path","pointer","params","i","length","curr","prev","test","JSON","stringify","message","includes","push","warn","duplicateRouteNamesResult","checkDuplicateRouteNames","locations","join","defaultOnUnhandledAction","payload","element"],"sourceRoot":"../../src","sources":["BaseNavigationContainer.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/CurrentRenderContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/CurrentRenderContext.js
new file mode 100644
index 00000000..96fa3db4
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/CurrentRenderContext.js
@@ -0,0 +1,17 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+/**
+ * Context which holds the values for the current navigation tree.
+ * Intended for use in SSR. This is not safe to use on the client.
+ */
+const CurrentRenderContext = /*#__PURE__*/React.createContext(undefined);
+var _default = CurrentRenderContext;
+exports.default = _default;
+//# sourceMappingURL=CurrentRenderContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/CurrentRenderContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/CurrentRenderContext.js.map
new file mode 100644
index 00000000..0318b68d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/CurrentRenderContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["CurrentRenderContext","React","createContext","undefined"],"sourceRoot":"../../src","sources":["CurrentRenderContext.tsx"],"mappings":";;;;;;AAAA;AAA+B;AAAA;AAE/B;AACA;AACA;AACA;AACA,MAAMA,oBAAoB,gBAAGC,KAAK,CAACC,aAAa,CAE9CC,SAAS,CAAC;AAAC,eAEEH,oBAAoB;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/EnsureSingleNavigator.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/EnsureSingleNavigator.js
new file mode 100644
index 00000000..f06a663a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/EnsureSingleNavigator.js
@@ -0,0 +1,43 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.SingleNavigatorContext = void 0;
+exports.default = EnsureSingleNavigator;
+var React = _interopRequireWildcard(require("react"));
+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; }
+const MULTIPLE_NAVIGATOR_ERROR = `Another navigator is already registered for this container. You likely have multiple navigators under a single "NavigationContainer" or "Screen". Make sure each navigator is under a separate "Screen" container. See https://reactnavigation.org/docs/nesting-navigators for a guide on nesting.`;
+const SingleNavigatorContext = /*#__PURE__*/React.createContext(undefined);
+
+/**
+ * Component which ensures that there's only one navigator nested under it.
+ */
+exports.SingleNavigatorContext = SingleNavigatorContext;
+function EnsureSingleNavigator(_ref) {
+ let {
+ children
+ } = _ref;
+ const navigatorKeyRef = React.useRef();
+ const value = React.useMemo(() => ({
+ register(key) {
+ const currentKey = navigatorKeyRef.current;
+ if (currentKey !== undefined && key !== currentKey) {
+ throw new Error(MULTIPLE_NAVIGATOR_ERROR);
+ }
+ navigatorKeyRef.current = key;
+ },
+ unregister(key) {
+ const currentKey = navigatorKeyRef.current;
+ if (key !== currentKey) {
+ return;
+ }
+ navigatorKeyRef.current = undefined;
+ }
+ }), []);
+ return /*#__PURE__*/React.createElement(SingleNavigatorContext.Provider, {
+ value: value
+ }, children);
+}
+//# sourceMappingURL=EnsureSingleNavigator.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/EnsureSingleNavigator.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/EnsureSingleNavigator.js.map
new file mode 100644
index 00000000..20d8e906
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/EnsureSingleNavigator.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["MULTIPLE_NAVIGATOR_ERROR","SingleNavigatorContext","React","createContext","undefined","EnsureSingleNavigator","children","navigatorKeyRef","useRef","value","useMemo","register","key","currentKey","current","Error","unregister"],"sourceRoot":"../../src","sources":["EnsureSingleNavigator.tsx"],"mappings":";;;;;;;AAAA;AAA+B;AAAA;AAM/B,MAAMA,wBAAwB,GAAI,oSAAmS;AAE9T,MAAMC,sBAAsB,gBAAGC,KAAK,CAACC,aAAa,CAMvDC,SAAS,CAAC;;AAEZ;AACA;AACA;AAFA;AAGe,SAASC,qBAAqB,OAAsB;EAAA,IAArB;IAAEC;EAAgB,CAAC;EAC/D,MAAMC,eAAe,GAAGL,KAAK,CAACM,MAAM,EAAsB;EAE1D,MAAMC,KAAK,GAAGP,KAAK,CAACQ,OAAO,CACzB,OAAO;IACLC,QAAQ,CAACC,GAAW,EAAE;MACpB,MAAMC,UAAU,GAAGN,eAAe,CAACO,OAAO;MAE1C,IAAID,UAAU,KAAKT,SAAS,IAAIQ,GAAG,KAAKC,UAAU,EAAE;QAClD,MAAM,IAAIE,KAAK,CAACf,wBAAwB,CAAC;MAC3C;MAEAO,eAAe,CAACO,OAAO,GAAGF,GAAG;IAC/B,CAAC;IACDI,UAAU,CAACJ,GAAW,EAAE;MACtB,MAAMC,UAAU,GAAGN,eAAe,CAACO,OAAO;MAE1C,IAAIF,GAAG,KAAKC,UAAU,EAAE;QACtB;MACF;MAEAN,eAAe,CAACO,OAAO,GAAGV,SAAS;IACrC;EACF,CAAC,CAAC,EACF,EAAE,CACH;EAED,oBACE,oBAAC,sBAAsB,CAAC,QAAQ;IAAC,KAAK,EAAEK;EAAM,GAC3CH,QAAQ,CACuB;AAEtC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Group.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Group.js
new file mode 100644
index 00000000..1798639b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Group.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = Group;
+/**
+ * Empty component used for grouping screen configs.
+ */
+function Group(_) {
+ /* istanbul ignore next */
+ return null;
+}
+//# sourceMappingURL=Group.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Group.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Group.js.map
new file mode 100644
index 00000000..50eb0772
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Group.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["Group","_"],"sourceRoot":"../../src","sources":["Group.tsx"],"mappings":";;;;;;AAIA;AACA;AACA;AACe,SAASA,KAAK,CAG3BC,CAA6C,EAAE;EAC/C;EACA,OAAO,IAAI;AACb"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationBuilderContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationBuilderContext.js
new file mode 100644
index 00000000..4f78e9b1
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationBuilderContext.js
@@ -0,0 +1,19 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+/**
+ * Context which holds the required helpers needed to build nested navigators.
+ */
+const NavigationBuilderContext = /*#__PURE__*/React.createContext({
+ onDispatchAction: () => undefined,
+ onOptionsChange: () => undefined
+});
+var _default = NavigationBuilderContext;
+exports.default = _default;
+//# sourceMappingURL=NavigationBuilderContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationBuilderContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationBuilderContext.js.map
new file mode 100644
index 00000000..a7a6a98a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationBuilderContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["NavigationBuilderContext","React","createContext","onDispatchAction","undefined","onOptionsChange"],"sourceRoot":"../../src","sources":["NavigationBuilderContext.tsx"],"mappings":";;;;;;AAKA;AAA+B;AAAA;AA6C/B;AACA;AACA;AACA,MAAMA,wBAAwB,gBAAGC,KAAK,CAACC,aAAa,CAWjD;EACDC,gBAAgB,EAAE,MAAMC,SAAS;EACjCC,eAAe,EAAE,MAAMD;AACzB,CAAC,CAAC;AAAC,eAEYJ,wBAAwB;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContainerRefContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContainerRefContext.js
new file mode 100644
index 00000000..ed337885
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContainerRefContext.js
@@ -0,0 +1,16 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+/**
+ * Context which holds the route prop for a screen.
+ */
+const NavigationContainerRefContext = /*#__PURE__*/React.createContext(undefined);
+var _default = NavigationContainerRefContext;
+exports.default = _default;
+//# sourceMappingURL=NavigationContainerRefContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContainerRefContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContainerRefContext.js.map
new file mode 100644
index 00000000..d945f211
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContainerRefContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["NavigationContainerRefContext","React","createContext","undefined"],"sourceRoot":"../../src","sources":["NavigationContainerRefContext.tsx"],"mappings":";;;;;;AACA;AAA+B;AAAA;AAI/B;AACA;AACA;AACA,MAAMA,6BAA6B,gBAAGC,KAAK,CAACC,aAAa,CAEvDC,SAAS,CAAC;AAAC,eAEEH,6BAA6B;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContext.js
new file mode 100644
index 00000000..72ab1911
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContext.js
@@ -0,0 +1,16 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+/**
+ * Context which holds the navigation prop for a screen.
+ */
+const NavigationContext = /*#__PURE__*/React.createContext(undefined);
+var _default = NavigationContext;
+exports.default = _default;
+//# sourceMappingURL=NavigationContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContext.js.map
new file mode 100644
index 00000000..4901fa29
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["NavigationContext","React","createContext","undefined"],"sourceRoot":"../../src","sources":["NavigationContext.tsx"],"mappings":";;;;;;AACA;AAA+B;AAAA;AAI/B;AACA;AACA;AACA,MAAMA,iBAAiB,gBAAGC,KAAK,CAACC,aAAa,CAE3CC,SAAS,CAAC;AAAC,eAEEH,iBAAiB;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationHelpersContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationHelpersContext.js
new file mode 100644
index 00000000..9d2f645b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationHelpersContext.js
@@ -0,0 +1,17 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+/**
+ * Context which holds the navigation helpers of the parent navigator.
+ * Navigators should use this context in their view component.
+ */
+const NavigationHelpersContext = /*#__PURE__*/React.createContext(undefined);
+var _default = NavigationHelpersContext;
+exports.default = _default;
+//# sourceMappingURL=NavigationHelpersContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationHelpersContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationHelpersContext.js.map
new file mode 100644
index 00000000..0a9a38f2
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationHelpersContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["NavigationHelpersContext","React","createContext","undefined"],"sourceRoot":"../../src","sources":["NavigationHelpersContext.tsx"],"mappings":";;;;;;AACA;AAA+B;AAAA;AAI/B;AACA;AACA;AACA;AACA,MAAMA,wBAAwB,gBAAGC,KAAK,CAACC,aAAa,CAElDC,SAAS,CAAC;AAAC,eAEEH,wBAAwB;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationRouteContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationRouteContext.js
new file mode 100644
index 00000000..9341dd74
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationRouteContext.js
@@ -0,0 +1,16 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+/**
+ * Context which holds the route prop for a screen.
+ */
+const NavigationRouteContext = /*#__PURE__*/React.createContext(undefined);
+var _default = NavigationRouteContext;
+exports.default = _default;
+//# sourceMappingURL=NavigationRouteContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationRouteContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationRouteContext.js.map
new file mode 100644
index 00000000..b18215e9
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationRouteContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["NavigationRouteContext","React","createContext","undefined"],"sourceRoot":"../../src","sources":["NavigationRouteContext.tsx"],"mappings":";;;;;;AACA;AAA+B;AAAA;AAE/B;AACA;AACA;AACA,MAAMA,sBAAsB,gBAAGC,KAAK,CAACC,aAAa,CAChDC,SAAS,CACV;AAAC,eAEaH,sBAAsB;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationStateContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationStateContext.js
new file mode 100644
index 00000000..16228796
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationStateContext.js
@@ -0,0 +1,30 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+const MISSING_CONTEXT_ERROR = "Couldn't find a navigation context. Have you wrapped your app with 'NavigationContainer'? See https://reactnavigation.org/docs/getting-started for setup instructions.";
+var _default = /*#__PURE__*/React.createContext({
+ isDefault: true,
+ get getKey() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ },
+ get setKey() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ },
+ get getState() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ },
+ get setState() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ },
+ get getIsInitial() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ }
+});
+exports.default = _default;
+//# sourceMappingURL=NavigationStateContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationStateContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationStateContext.js.map
new file mode 100644
index 00000000..4044b9b2
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/NavigationStateContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["MISSING_CONTEXT_ERROR","React","createContext","isDefault","getKey","Error","setKey","getState","setState","getIsInitial"],"sourceRoot":"../../src","sources":["NavigationStateContext.tsx"],"mappings":";;;;;;AACA;AAA+B;AAAA;AAE/B,MAAMA,qBAAqB,GACzB,wKAAwK;AAAC,4BAE5JC,KAAK,CAACC,aAAa,CAc/B;EACDC,SAAS,EAAE,IAAI;EAEf,IAAIC,MAAM,GAAQ;IAChB,MAAM,IAAIC,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIM,MAAM,GAAQ;IAChB,MAAM,IAAID,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIO,QAAQ,GAAQ;IAClB,MAAM,IAAIF,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIQ,QAAQ,GAAQ;IAClB,MAAM,IAAIH,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIS,YAAY,GAAQ;IACtB,MAAM,IAAIJ,KAAK,CAACL,qBAAqB,CAAC;EACxC;AACF,CAAC,CAAC;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveContext.js
new file mode 100644
index 00000000..55ae5318
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveContext.js
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+const PreventRemoveContext = /*#__PURE__*/React.createContext(undefined);
+var _default = PreventRemoveContext;
+exports.default = _default;
+//# sourceMappingURL=PreventRemoveContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveContext.js.map
new file mode 100644
index 00000000..34756b84
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["PreventRemoveContext","React","createContext","undefined"],"sourceRoot":"../../src","sources":["PreventRemoveContext.tsx"],"mappings":";;;;;;AAAA;AAA+B;AAAA;AAQ/B,MAAMA,oBAAoB,gBAAGC,KAAK,CAACC,aAAa,CAU9CC,SAAS,CAAC;AAAC,eAEEH,oBAAoB;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveProvider.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveProvider.js
new file mode 100644
index 00000000..77db1d60
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveProvider.js
@@ -0,0 +1,96 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = PreventRemoveProvider;
+var _nonSecure = require("nanoid/non-secure");
+var React = _interopRequireWildcard(require("react"));
+var _useLatestCallback = _interopRequireDefault(require("use-latest-callback"));
+var _NavigationHelpersContext = _interopRequireDefault(require("./NavigationHelpersContext"));
+var _NavigationRouteContext = _interopRequireDefault(require("./NavigationRouteContext"));
+var _PreventRemoveContext = _interopRequireDefault(require("./PreventRemoveContext"));
+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; }
+/**
+ * Util function to transform map of prevented routes to a simpler object.
+ */
+const transformPreventedRoutes = preventedRoutesMap => {
+ const preventedRoutesToTransform = [...preventedRoutesMap.values()];
+ const preventedRoutes = preventedRoutesToTransform.reduce((acc, _ref) => {
+ var _acc$routeKey;
+ let {
+ routeKey,
+ preventRemove
+ } = _ref;
+ acc[routeKey] = {
+ preventRemove: ((_acc$routeKey = acc[routeKey]) === null || _acc$routeKey === void 0 ? void 0 : _acc$routeKey.preventRemove) || preventRemove
+ };
+ return acc;
+ }, {});
+ return preventedRoutes;
+};
+
+/**
+ * Component used for managing which routes have to be prevented from removal in native-stack.
+ */
+function PreventRemoveProvider(_ref2) {
+ let {
+ children
+ } = _ref2;
+ const [parentId] = React.useState(() => (0, _nonSecure.nanoid)());
+ const [preventedRoutesMap, setPreventedRoutesMap] = React.useState(new Map());
+ const navigation = React.useContext(_NavigationHelpersContext.default);
+ const route = React.useContext(_NavigationRouteContext.default);
+ const preventRemoveContextValue = React.useContext(_PreventRemoveContext.default);
+ // take `setPreventRemove` from parent context - if exist it means we're in a nested context
+ const setParentPrevented = preventRemoveContextValue === null || preventRemoveContextValue === void 0 ? void 0 : preventRemoveContextValue.setPreventRemove;
+ const setPreventRemove = (0, _useLatestCallback.default)((id, routeKey, preventRemove) => {
+ if (preventRemove && (navigation == null || navigation !== null && navigation !== void 0 && navigation.getState().routes.every(route => route.key !== routeKey))) {
+ throw new Error(`Couldn't find a route with the key ${routeKey}. Is your component inside NavigationContent?`);
+ }
+ setPreventedRoutesMap(prevPrevented => {
+ var _prevPrevented$get, _prevPrevented$get2;
+ // values haven't changed - do nothing
+ if (routeKey === ((_prevPrevented$get = prevPrevented.get(id)) === null || _prevPrevented$get === void 0 ? void 0 : _prevPrevented$get.routeKey) && preventRemove === ((_prevPrevented$get2 = prevPrevented.get(id)) === null || _prevPrevented$get2 === void 0 ? void 0 : _prevPrevented$get2.preventRemove)) {
+ return prevPrevented;
+ }
+ const nextPrevented = new Map(prevPrevented);
+ if (preventRemove) {
+ nextPrevented.set(id, {
+ routeKey,
+ preventRemove
+ });
+ } else {
+ nextPrevented.delete(id);
+ }
+ return nextPrevented;
+ });
+ });
+ const isPrevented = [...preventedRoutesMap.values()].some(_ref3 => {
+ let {
+ preventRemove
+ } = _ref3;
+ return preventRemove;
+ });
+ React.useEffect(() => {
+ if ((route === null || route === void 0 ? void 0 : route.key) !== undefined && setParentPrevented !== undefined) {
+ // when route is defined (and setParentPrevented) it means we're in a nested stack
+ // route.key then will be the route key of parent
+ setParentPrevented(parentId, route.key, isPrevented);
+ return () => {
+ setParentPrevented(parentId, route.key, false);
+ };
+ }
+ return;
+ }, [parentId, isPrevented, route === null || route === void 0 ? void 0 : route.key, setParentPrevented]);
+ const value = React.useMemo(() => ({
+ setPreventRemove,
+ preventedRoutes: transformPreventedRoutes(preventedRoutesMap)
+ }), [setPreventRemove, preventedRoutesMap]);
+ return /*#__PURE__*/React.createElement(_PreventRemoveContext.default.Provider, {
+ value: value
+ }, children);
+}
+//# sourceMappingURL=PreventRemoveProvider.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveProvider.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveProvider.js.map
new file mode 100644
index 00000000..5183a74d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/PreventRemoveProvider.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["transformPreventedRoutes","preventedRoutesMap","preventedRoutesToTransform","values","preventedRoutes","reduce","acc","routeKey","preventRemove","PreventRemoveProvider","children","parentId","React","useState","nanoid","setPreventedRoutesMap","Map","navigation","useContext","NavigationHelpersContext","route","NavigationRouteContext","preventRemoveContextValue","PreventRemoveContext","setParentPrevented","setPreventRemove","useLatestCallback","id","getState","routes","every","key","Error","prevPrevented","get","nextPrevented","set","delete","isPrevented","some","useEffect","undefined","value","useMemo"],"sourceRoot":"../../src","sources":["PreventRemoveProvider.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/SceneView.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/SceneView.js
new file mode 100644
index 00000000..b7dfca99
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/SceneView.js
@@ -0,0 +1,93 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = SceneView;
+var React = _interopRequireWildcard(require("react"));
+var _EnsureSingleNavigator = _interopRequireDefault(require("./EnsureSingleNavigator"));
+var _NavigationStateContext = _interopRequireDefault(require("./NavigationStateContext"));
+var _StaticContainer = _interopRequireDefault(require("./StaticContainer"));
+var _useOptionsGetters = _interopRequireDefault(require("./useOptionsGetters"));
+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; }
+/**
+ * Component which takes care of rendering the screen for a route.
+ * It provides all required contexts and applies optimizations when applicable.
+ */
+function SceneView(_ref) {
+ let {
+ screen,
+ route,
+ navigation,
+ routeState,
+ getState,
+ setState,
+ options,
+ clearOptions
+ } = _ref;
+ const navigatorKeyRef = React.useRef();
+ const getKey = React.useCallback(() => navigatorKeyRef.current, []);
+ const {
+ addOptionsGetter
+ } = (0, _useOptionsGetters.default)({
+ key: route.key,
+ options,
+ navigation
+ });
+ const setKey = React.useCallback(key => {
+ navigatorKeyRef.current = key;
+ }, []);
+ const getCurrentState = React.useCallback(() => {
+ const state = getState();
+ const currentRoute = state.routes.find(r => r.key === route.key);
+ return currentRoute ? currentRoute.state : undefined;
+ }, [getState, route.key]);
+ const setCurrentState = React.useCallback(child => {
+ const state = getState();
+ setState({
+ ...state,
+ routes: state.routes.map(r => r.key === route.key ? {
+ ...r,
+ state: child
+ } : r)
+ });
+ }, [getState, route.key, setState]);
+ const isInitialRef = React.useRef(true);
+ React.useEffect(() => {
+ isInitialRef.current = false;
+ });
+
+ // Clear options set by this screen when it is unmounted
+ React.useEffect(() => {
+ return clearOptions;
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
+ const getIsInitial = React.useCallback(() => isInitialRef.current, []);
+ const context = React.useMemo(() => ({
+ state: routeState,
+ getState: getCurrentState,
+ setState: setCurrentState,
+ getKey,
+ setKey,
+ getIsInitial,
+ addOptionsGetter
+ }), [routeState, getCurrentState, setCurrentState, getKey, setKey, getIsInitial, addOptionsGetter]);
+ const ScreenComponent = screen.getComponent ? screen.getComponent() : screen.component;
+ return /*#__PURE__*/React.createElement(_NavigationStateContext.default.Provider, {
+ value: context
+ }, /*#__PURE__*/React.createElement(_EnsureSingleNavigator.default, null, /*#__PURE__*/React.createElement(_StaticContainer.default, {
+ name: screen.name,
+ render: ScreenComponent || screen.children,
+ navigation: navigation,
+ route: route
+ }, ScreenComponent !== undefined ? /*#__PURE__*/React.createElement(ScreenComponent, {
+ navigation: navigation,
+ route: route
+ }) : screen.children !== undefined ? screen.children({
+ navigation,
+ route
+ }) : null)));
+}
+//# sourceMappingURL=SceneView.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/SceneView.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/SceneView.js.map
new file mode 100644
index 00000000..8c991d94
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/SceneView.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["SceneView","screen","route","navigation","routeState","getState","setState","options","clearOptions","navigatorKeyRef","React","useRef","getKey","useCallback","current","addOptionsGetter","useOptionsGetters","key","setKey","getCurrentState","state","currentRoute","routes","find","r","undefined","setCurrentState","child","map","isInitialRef","useEffect","getIsInitial","context","useMemo","ScreenComponent","getComponent","component","name","children"],"sourceRoot":"../../src","sources":["SceneView.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Screen.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Screen.js
new file mode 100644
index 00000000..2670ba0a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Screen.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = Screen;
+/**
+ * Empty component used for specifying route configuration.
+ */
+function Screen(_) {
+ /* istanbul ignore next */
+ return null;
+}
+//# sourceMappingURL=Screen.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Screen.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Screen.js.map
new file mode 100644
index 00000000..756464bf
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/Screen.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["Screen","_"],"sourceRoot":"../../src","sources":["Screen.tsx"],"mappings":";;;;;;AAIA;AACA;AACA;AACe,SAASA,MAAM,CAM5BC,CAAoE,EAAE;EACtE;EACA,OAAO,IAAI;AACb"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/StaticContainer.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/StaticContainer.js
new file mode 100644
index 00000000..ddbf2311
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/StaticContainer.js
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+/**
+ * Component which prevents updates for children if no props changed
+ */
+function StaticContainer(props) {
+ return props.children;
+}
+var _default = /*#__PURE__*/React.memo(StaticContainer, (prevProps, nextProps) => {
+ const prevPropKeys = Object.keys(prevProps);
+ const nextPropKeys = Object.keys(nextProps);
+ if (prevPropKeys.length !== nextPropKeys.length) {
+ return false;
+ }
+ for (const key of prevPropKeys) {
+ if (key === 'children') {
+ continue;
+ }
+ if (prevProps[key] !== nextProps[key]) {
+ return false;
+ }
+ }
+ return true;
+});
+exports.default = _default;
+//# sourceMappingURL=StaticContainer.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/StaticContainer.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/StaticContainer.js.map
new file mode 100644
index 00000000..8e082272
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/StaticContainer.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["StaticContainer","props","children","React","memo","prevProps","nextProps","prevPropKeys","Object","keys","nextPropKeys","length","key"],"sourceRoot":"../../src","sources":["StaticContainer.tsx"],"mappings":";;;;;;AAAA;AAA+B;AAAA;AAE/B;AACA;AACA;AACA,SAASA,eAAe,CAACC,KAAU,EAAE;EACnC,OAAOA,KAAK,CAACC,QAAQ;AACvB;AAAC,4BAEcC,KAAK,CAACC,IAAI,CAACJ,eAAe,EAAE,CAACK,SAAc,EAAEC,SAAc,KAAK;EAC7E,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAI,CAACJ,SAAS,CAAC;EAC3C,MAAMK,YAAY,GAAGF,MAAM,CAACC,IAAI,CAACH,SAAS,CAAC;EAE3C,IAAIC,YAAY,CAACI,MAAM,KAAKD,YAAY,CAACC,MAAM,EAAE;IAC/C,OAAO,KAAK;EACd;EAEA,KAAK,MAAMC,GAAG,IAAIL,YAAY,EAAE;IAC9B,IAAIK,GAAG,KAAK,UAAU,EAAE;MACtB;IACF;IAEA,IAAIP,SAAS,CAACO,GAAG,CAAC,KAAKN,SAAS,CAACM,GAAG,CAAC,EAAE;MACrC,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb,CAAC,CAAC;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/UnhandledActionContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/UnhandledActionContext.js
new file mode 100644
index 00000000..5e8a8634
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/UnhandledActionContext.js
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var React = _interopRequireWildcard(require("react"));
+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; }
+const UnhandledActionContext = /*#__PURE__*/React.createContext(undefined);
+var _default = UnhandledActionContext;
+exports.default = _default;
+//# sourceMappingURL=UnhandledActionContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/UnhandledActionContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/UnhandledActionContext.js.map
new file mode 100644
index 00000000..a45874b0
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/UnhandledActionContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["UnhandledActionContext","React","createContext","undefined"],"sourceRoot":"../../src","sources":["UnhandledActionContext.tsx"],"mappings":";;;;;;AACA;AAA+B;AAAA;AAE/B,MAAMA,sBAAsB,gBAAGC,KAAK,CAACC,aAAa,CAEhDC,SAAS,CAAC;AAAC,eAEEH,sBAAsB;AAAA"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkDuplicateRouteNames.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkDuplicateRouteNames.js
new file mode 100644
index 00000000..8d35138b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkDuplicateRouteNames.js
@@ -0,0 +1,26 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = checkDuplicateRouteNames;
+function checkDuplicateRouteNames(state) {
+ const duplicates = [];
+ const getRouteNames = (location, state) => {
+ state.routes.forEach(route => {
+ var _route$state, _route$state$routeNam;
+ const currentLocation = location ? `${location} > ${route.name}` : route.name;
+ (_route$state = route.state) === null || _route$state === void 0 ? void 0 : (_route$state$routeNam = _route$state.routeNames) === null || _route$state$routeNam === void 0 ? void 0 : _route$state$routeNam.forEach(routeName => {
+ if (routeName === route.name) {
+ duplicates.push([currentLocation, `${currentLocation} > ${route.name}`]);
+ }
+ });
+ if (route.state) {
+ getRouteNames(currentLocation, route.state);
+ }
+ });
+ };
+ getRouteNames('', state);
+ return duplicates;
+}
+//# sourceMappingURL=checkDuplicateRouteNames.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkDuplicateRouteNames.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkDuplicateRouteNames.js.map
new file mode 100644
index 00000000..f3e10f7a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkDuplicateRouteNames.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["checkDuplicateRouteNames","state","duplicates","getRouteNames","location","routes","forEach","route","currentLocation","name","routeNames","routeName","push"],"sourceRoot":"../../src","sources":["checkDuplicateRouteNames.tsx"],"mappings":";;;;;;AAEe,SAASA,wBAAwB,CAACC,KAAsB,EAAE;EACvE,MAAMC,UAAsB,GAAG,EAAE;EAEjC,MAAMC,aAAa,GAAG,CACpBC,QAAgB,EAChBH,KAAsD,KACnD;IACHA,KAAK,CAACI,MAAM,CAACC,OAAO,CAAEC,KAA6B,IAAK;MAAA;MACtD,MAAMC,eAAe,GAAGJ,QAAQ,GAC3B,GAAEA,QAAS,MAAKG,KAAK,CAACE,IAAK,EAAC,GAC7BF,KAAK,CAACE,IAAI;MAEd,gBAAAF,KAAK,CAACN,KAAK,0EAAX,aAAaS,UAAU,0DAAvB,sBAAyBJ,OAAO,CAAEK,SAAS,IAAK;QAC9C,IAAIA,SAAS,KAAKJ,KAAK,CAACE,IAAI,EAAE;UAC5BP,UAAU,CAACU,IAAI,CAAC,CACdJ,eAAe,EACd,GAAEA,eAAgB,MAAKD,KAAK,CAACE,IAAK,EAAC,CACrC,CAAC;QACJ;MACF,CAAC,CAAC;MAEF,IAAIF,KAAK,CAACN,KAAK,EAAE;QACfE,aAAa,CAACK,eAAe,EAAED,KAAK,CAACN,KAAK,CAAC;MAC7C;IACF,CAAC,CAAC;EACJ,CAAC;EAEDE,aAAa,CAAC,EAAE,EAAEF,KAAK,CAAC;EAExB,OAAOC,UAAU;AACnB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkSerializable.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkSerializable.js
new file mode 100644
index 00000000..968031ce
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkSerializable.js
@@ -0,0 +1,50 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = checkSerializable;
+const checkSerializableWithoutCircularReference = (o, seen, location) => {
+ if (o === undefined || o === null || typeof o === 'boolean' || typeof o === 'number' || typeof o === 'string') {
+ return {
+ serializable: true
+ };
+ }
+ if (Object.prototype.toString.call(o) !== '[object Object]' && !Array.isArray(o)) {
+ return {
+ serializable: false,
+ location,
+ reason: typeof o === 'function' ? 'Function' : String(o)
+ };
+ }
+ if (seen.has(o)) {
+ return {
+ serializable: false,
+ reason: 'Circular reference',
+ location
+ };
+ }
+ seen.add(o);
+ if (Array.isArray(o)) {
+ for (let i = 0; i < o.length; i++) {
+ const childResult = checkSerializableWithoutCircularReference(o[i], new Set(seen), [...location, i]);
+ if (!childResult.serializable) {
+ return childResult;
+ }
+ }
+ } else {
+ for (const key in o) {
+ const childResult = checkSerializableWithoutCircularReference(o[key], new Set(seen), [...location, key]);
+ if (!childResult.serializable) {
+ return childResult;
+ }
+ }
+ }
+ return {
+ serializable: true
+ };
+};
+function checkSerializable(o) {
+ return checkSerializableWithoutCircularReference(o, new Set(), []);
+}
+//# sourceMappingURL=checkSerializable.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkSerializable.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkSerializable.js.map
new file mode 100644
index 00000000..ec36c269
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/checkSerializable.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["checkSerializableWithoutCircularReference","o","seen","location","undefined","serializable","Object","prototype","toString","call","Array","isArray","reason","String","has","add","i","length","childResult","Set","key","checkSerializable"],"sourceRoot":"../../src","sources":["checkSerializable.tsx"],"mappings":";;;;;;AAAA,MAAMA,yCAAyC,GAAG,CAChDC,CAAyB,EACzBC,IAAc,EACdC,QAA6B,KAOtB;EACP,IACEF,CAAC,KAAKG,SAAS,IACfH,CAAC,KAAK,IAAI,IACV,OAAOA,CAAC,KAAK,SAAS,IACtB,OAAOA,CAAC,KAAK,QAAQ,IACrB,OAAOA,CAAC,KAAK,QAAQ,EACrB;IACA,OAAO;MAAEI,YAAY,EAAE;IAAK,CAAC;EAC/B;EAEA,IACEC,MAAM,CAACC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACR,CAAC,CAAC,KAAK,iBAAiB,IACvD,CAACS,KAAK,CAACC,OAAO,CAACV,CAAC,CAAC,EACjB;IACA,OAAO;MACLI,YAAY,EAAE,KAAK;MACnBF,QAAQ;MACRS,MAAM,EAAE,OAAOX,CAAC,KAAK,UAAU,GAAG,UAAU,GAAGY,MAAM,CAACZ,CAAC;IACzD,CAAC;EACH;EAEA,IAAIC,IAAI,CAACY,GAAG,CAACb,CAAC,CAAC,EAAE;IACf,OAAO;MACLI,YAAY,EAAE,KAAK;MACnBO,MAAM,EAAE,oBAAoB;MAC5BT;IACF,CAAC;EACH;EAEAD,IAAI,CAACa,GAAG,CAACd,CAAC,CAAC;EAEX,IAAIS,KAAK,CAACC,OAAO,CAACV,CAAC,CAAC,EAAE;IACpB,KAAK,IAAIe,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGf,CAAC,CAACgB,MAAM,EAAED,CAAC,EAAE,EAAE;MACjC,MAAME,WAAW,GAAGlB,yCAAyC,CAC3DC,CAAC,CAACe,CAAC,CAAC,EACJ,IAAIG,GAAG,CAAMjB,IAAI,CAAC,EAClB,CAAC,GAAGC,QAAQ,EAAEa,CAAC,CAAC,CACjB;MAED,IAAI,CAACE,WAAW,CAACb,YAAY,EAAE;QAC7B,OAAOa,WAAW;MACpB;IACF;EACF,CAAC,MAAM;IACL,KAAK,MAAME,GAAG,IAAInB,CAAC,EAAE;MACnB,MAAMiB,WAAW,GAAGlB,yCAAyC,CAC3DC,CAAC,CAACmB,GAAG,CAAC,EACN,IAAID,GAAG,CAAMjB,IAAI,CAAC,EAClB,CAAC,GAAGC,QAAQ,EAAEiB,GAAG,CAAC,CACnB;MAED,IAAI,CAACF,WAAW,CAACb,YAAY,EAAE;QAC7B,OAAOa,WAAW;MACpB;IACF;EACF;EAEA,OAAO;IAAEb,YAAY,EAAE;EAAK,CAAC;AAC/B,CAAC;AAEc,SAASgB,iBAAiB,CAACpB,CAAyB,EAAE;EACnE,OAAOD,yCAAyC,CAACC,CAAC,EAAE,IAAIkB,GAAG,EAAO,EAAE,EAAE,CAAC;AACzE"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigationContainerRef.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigationContainerRef.js
new file mode 100644
index 00000000..a31cde78
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigationContainerRef.js
@@ -0,0 +1,74 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.NOT_INITIALIZED_ERROR = void 0;
+exports.default = createNavigationContainerRef;
+var _routers = require("@react-navigation/routers");
+const NOT_INITIALIZED_ERROR = "The 'navigation' object hasn't been initialized yet. This might happen if you don't have a navigator mounted, or if the navigator hasn't finished mounting. See https://reactnavigation.org/docs/navigating-without-navigation-prop#handling-initialization for more details.";
+exports.NOT_INITIALIZED_ERROR = NOT_INITIALIZED_ERROR;
+function createNavigationContainerRef() {
+ const methods = [...Object.keys(_routers.CommonActions), 'addListener', 'removeListener', 'resetRoot', 'dispatch', 'isFocused', 'canGoBack', 'getRootState', 'getState', 'getParent', 'getCurrentRoute', 'getCurrentOptions'];
+ const listeners = {};
+ const removeListener = (event, callback) => {
+ if (listeners[event]) {
+ listeners[event] = listeners[event].filter(cb => cb !== callback);
+ }
+ };
+ let current = null;
+ const ref = {
+ get current() {
+ return current;
+ },
+ set current(value) {
+ current = value;
+ if (value != null) {
+ Object.entries(listeners).forEach(_ref => {
+ let [event, callbacks] = _ref;
+ callbacks.forEach(callback => {
+ value.addListener(event, callback);
+ });
+ });
+ }
+ },
+ isReady: () => {
+ if (current == null) {
+ return false;
+ }
+ return current.isReady();
+ },
+ ...methods.reduce((acc, name) => {
+ acc[name] = function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ if (current == null) {
+ switch (name) {
+ case 'addListener':
+ {
+ const [event, callback] = args;
+ listeners[event] = listeners[event] || [];
+ listeners[event].push(callback);
+ return () => removeListener(event, callback);
+ }
+ case 'removeListener':
+ {
+ const [event, callback] = args;
+ removeListener(event, callback);
+ break;
+ }
+ default:
+ console.error(NOT_INITIALIZED_ERROR);
+ }
+ } else {
+ // @ts-expect-error: this is ok
+ return current[name](...args);
+ }
+ };
+ return acc;
+ }, {})
+ };
+ return ref;
+}
+//# sourceMappingURL=createNavigationContainerRef.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigationContainerRef.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigationContainerRef.js.map
new file mode 100644
index 00000000..e3a1bc9d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigationContainerRef.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["NOT_INITIALIZED_ERROR","createNavigationContainerRef","methods","Object","keys","CommonActions","listeners","removeListener","event","callback","filter","cb","current","ref","value","entries","forEach","callbacks","addListener","isReady","reduce","acc","name","args","push","console","error"],"sourceRoot":"../../src","sources":["createNavigationContainerRef.tsx"],"mappings":";;;;;;;AAAA;AAQO,MAAMA,qBAAqB,GAChC,+QAA+Q;AAAC;AAEnQ,SAASC,4BAA4B,GAEF;EAChD,MAAMC,OAAO,GAAG,CACd,GAAGC,MAAM,CAACC,IAAI,CAACC,sBAAa,CAAC,EAC7B,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,mBAAmB,CACX;EAEV,MAAMC,SAAuD,GAAG,CAAC,CAAC;EAElE,MAAMC,cAAc,GAAG,CACrBC,KAAa,EACbC,QAAkC,KAC/B;IACH,IAAIH,SAAS,CAACE,KAAK,CAAC,EAAE;MACpBF,SAAS,CAACE,KAAK,CAAC,GAAGF,SAAS,CAACE,KAAK,CAAC,CAACE,MAAM,CAAEC,EAAE,IAAKA,EAAE,KAAKF,QAAQ,CAAC;IACrE;EACF,CAAC;EAED,IAAIG,OAAiD,GAAG,IAAI;EAE5D,MAAMC,GAAiD,GAAG;IACxD,IAAID,OAAO,GAAG;MACZ,OAAOA,OAAO;IAChB,CAAC;IACD,IAAIA,OAAO,CAACE,KAA+C,EAAE;MAC3DF,OAAO,GAAGE,KAAK;MAEf,IAAIA,KAAK,IAAI,IAAI,EAAE;QACjBX,MAAM,CAACY,OAAO,CAACT,SAAS,CAAC,CAACU,OAAO,CAAC,QAAwB;UAAA,IAAvB,CAACR,KAAK,EAAES,SAAS,CAAC;UACnDA,SAAS,CAACD,OAAO,CAAEP,QAAQ,IAAK;YAC9BK,KAAK,CAACI,WAAW,CACfV,KAAK,EACLC,QAAQ,CACT;UACH,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ;IACF,CAAC;IACDU,OAAO,EAAE,MAAM;MACb,IAAIP,OAAO,IAAI,IAAI,EAAE;QACnB,OAAO,KAAK;MACd;MAEA,OAAOA,OAAO,CAACO,OAAO,EAAE;IAC1B,CAAC;IACD,GAAGjB,OAAO,CAACkB,MAAM,CAAM,CAACC,GAAG,EAAEC,IAAI,KAAK;MACpCD,GAAG,CAACC,IAAI,CAAC,GAAG,YAAoB;QAAA,kCAAhBC,IAAI;UAAJA,IAAI;QAAA;QAClB,IAAIX,OAAO,IAAI,IAAI,EAAE;UACnB,QAAQU,IAAI;YACV,KAAK,aAAa;cAAE;gBAClB,MAAM,CAACd,KAAK,EAAEC,QAAQ,CAAC,GAAGc,IAAI;gBAE9BjB,SAAS,CAACE,KAAK,CAAC,GAAGF,SAAS,CAACE,KAAK,CAAC,IAAI,EAAE;gBACzCF,SAAS,CAACE,KAAK,CAAC,CAACgB,IAAI,CAACf,QAAQ,CAAC;gBAE/B,OAAO,MAAMF,cAAc,CAACC,KAAK,EAAEC,QAAQ,CAAC;cAC9C;YACA,KAAK,gBAAgB;cAAE;gBACrB,MAAM,CAACD,KAAK,EAAEC,QAAQ,CAAC,GAAGc,IAAI;gBAE9BhB,cAAc,CAACC,KAAK,EAAEC,QAAQ,CAAC;gBAC/B;cACF;YACA;cACEgB,OAAO,CAACC,KAAK,CAAC1B,qBAAqB,CAAC;UAAC;QAE3C,CAAC,MAAM;UACL;UACA,OAAOY,OAAO,CAACU,IAAI,CAAC,CAAC,GAAGC,IAAI,CAAC;QAC/B;MACF,CAAC;MACD,OAAOF,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC;EACP,CAAC;EAED,OAAOR,GAAG;AACZ"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigatorFactory.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigatorFactory.js
new file mode 100644
index 00000000..e73a338c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigatorFactory.js
@@ -0,0 +1,29 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = createNavigatorFactory;
+var _Group = _interopRequireDefault(require("./Group"));
+var _Screen = _interopRequireDefault(require("./Screen"));
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+/**
+ * Higher order component to create a `Navigator` and `Screen` pair.
+ * Custom navigators should wrap the navigator component in `createNavigator` before exporting.
+ *
+ * @param Navigator The navigtor component to wrap.
+ * @returns Factory method to create a `Navigator` and `Screen` pair.
+ */
+function createNavigatorFactory(Navigator) {
+ return function () {
+ if (arguments[0] !== undefined) {
+ throw new Error("Creating a navigator doesn't take an argument. Maybe you are trying to use React Navigation 4 API? See https://reactnavigation.org/docs/hello-react-navigation for the latest API and guides.");
+ }
+ return {
+ Navigator,
+ Group: _Group.default,
+ Screen: _Screen.default
+ };
+ };
+}
+//# sourceMappingURL=createNavigatorFactory.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigatorFactory.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigatorFactory.js.map
new file mode 100644
index 00000000..e5c26f67
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/createNavigatorFactory.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["createNavigatorFactory","Navigator","arguments","undefined","Error","Group","Screen"],"sourceRoot":"../../src","sources":["createNavigatorFactory.tsx"],"mappings":";;;;;;AAGA;AACA;AAA8B;AAG9B;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,sBAAsB,CAK5CC,SAA6B,EAAE;EAC/B,OAAO,YAML;IACA,IAAIC,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,EAAE;MAC9B,MAAM,IAAIC,KAAK,CACb,+LAA+L,CAChM;IACH;IAEA,OAAO;MACLH,SAAS;MACTI,KAAK,EAALA,cAAK;MACLC,MAAM,EAANA;IACF,CAAC;EACH,CAAC;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/findFocusedRoute.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/findFocusedRoute.js
new file mode 100644
index 00000000..e3a6d33f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/findFocusedRoute.js
@@ -0,0 +1,17 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = findFocusedRoute;
+function findFocusedRoute(state) {
+ var _current2, _current3;
+ let current = state;
+ while (((_current = current) === null || _current === void 0 ? void 0 : _current.routes[current.index ?? 0].state) != null) {
+ var _current;
+ current = current.routes[current.index ?? 0].state;
+ }
+ const route = (_current2 = current) === null || _current2 === void 0 ? void 0 : _current2.routes[((_current3 = current) === null || _current3 === void 0 ? void 0 : _current3.index) ?? 0];
+ return route;
+}
+//# sourceMappingURL=findFocusedRoute.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/findFocusedRoute.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/findFocusedRoute.js.map
new file mode 100644
index 00000000..1584bc7a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/findFocusedRoute.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["findFocusedRoute","state","current","routes","index","route"],"sourceRoot":"../../src","sources":["findFocusedRoute.tsx"],"mappings":";;;;;;AAEe,SAASA,gBAAgB,CAACC,KAAmB,EAAE;EAAA;EAC5D,IAAIC,OAAiC,GAAGD,KAAK;EAE7C,OAAO,aAAAC,OAAO,6CAAP,SAASC,MAAM,CAACD,OAAO,CAACE,KAAK,IAAI,CAAC,CAAC,CAACH,KAAK,KAAI,IAAI,EAAE;IAAA;IACxDC,OAAO,GAAGA,OAAO,CAACC,MAAM,CAACD,OAAO,CAACE,KAAK,IAAI,CAAC,CAAC,CAACH,KAAK;EACpD;EAEA,MAAMI,KAAK,gBAAGH,OAAO,8CAAP,UAASC,MAAM,CAAC,cAAAD,OAAO,8CAAP,UAASE,KAAK,KAAI,CAAC,CAAC;EAElD,OAAOC,KAAK;AACd"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/fromEntries.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/fromEntries.js
new file mode 100644
index 00000000..d370567f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/fromEntries.js
@@ -0,0 +1,18 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = fromEntries;
+// Object.fromEntries is not available in older iOS versions
+function fromEntries(entries) {
+ return entries.reduce((acc, _ref) => {
+ let [k, v] = _ref;
+ if (acc.hasOwnProperty(k)) {
+ throw new Error(`A value for key '${k}' already exists in the object.`);
+ }
+ acc[k] = v;
+ return acc;
+ }, {});
+}
+//# sourceMappingURL=fromEntries.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/fromEntries.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/fromEntries.js.map
new file mode 100644
index 00000000..aa30384b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/fromEntries.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["fromEntries","entries","reduce","acc","k","v","hasOwnProperty","Error"],"sourceRoot":"../../src","sources":["fromEntries.tsx"],"mappings":";;;;;;AAAA;AACe,SAASA,WAAW,CACjCC,OAA4B,EAC5B;EACA,OAAOA,OAAO,CAACC,MAAM,CAAC,CAACC,GAAG,WAAa;IAAA,IAAX,CAACC,CAAC,EAAEC,CAAC,CAAC;IAChC,IAAIF,GAAG,CAACG,cAAc,CAACF,CAAC,CAAC,EAAE;MACzB,MAAM,IAAIG,KAAK,CAAE,oBAAmBH,CAAE,iCAAgC,CAAC;IACzE;IAEAD,GAAG,CAACC,CAAC,CAAC,GAAGC,CAAC;IACV,OAAOF,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAiB;AACxB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getActionFromState.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getActionFromState.js
new file mode 100644
index 00000000..5f25c245
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getActionFromState.js
@@ -0,0 +1,89 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getActionFromState;
+function getActionFromState(state, options) {
+ var _normalizedConfig$scr;
+ // Create a normalized configs object which will be easier to use
+ const normalizedConfig = options ? createNormalizedConfigItem(options) : {};
+ const routes = state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;
+ if (routes.length === 0) {
+ return undefined;
+ }
+ if (!(routes.length === 1 && routes[0].key === undefined || routes.length === 2 && routes[0].key === undefined && routes[0].name === (normalizedConfig === null || normalizedConfig === void 0 ? void 0 : normalizedConfig.initialRouteName) && routes[1].key === undefined)) {
+ return {
+ type: 'RESET',
+ payload: state
+ };
+ }
+ const route = state.routes[state.index ?? state.routes.length - 1];
+ let current = route === null || route === void 0 ? void 0 : route.state;
+ let config = normalizedConfig === null || normalizedConfig === void 0 ? void 0 : (_normalizedConfig$scr = normalizedConfig.screens) === null || _normalizedConfig$scr === void 0 ? void 0 : _normalizedConfig$scr[route === null || route === void 0 ? void 0 : route.name];
+ let params = {
+ ...route.params
+ };
+ let payload = route ? {
+ name: route.name,
+ path: route.path,
+ params
+ } : undefined;
+ while (current) {
+ var _config, _config2, _config2$screens;
+ if (current.routes.length === 0) {
+ return undefined;
+ }
+ const routes = current.index != null ? current.routes.slice(0, current.index + 1) : current.routes;
+ const route = routes[routes.length - 1];
+
+ // Explicitly set to override existing value when merging params
+ Object.assign(params, {
+ initial: undefined,
+ screen: undefined,
+ params: undefined,
+ state: undefined
+ });
+ if (routes.length === 1 && routes[0].key === undefined) {
+ params.initial = true;
+ params.screen = route.name;
+ } else if (routes.length === 2 && routes[0].key === undefined && routes[0].name === ((_config = config) === null || _config === void 0 ? void 0 : _config.initialRouteName) && routes[1].key === undefined) {
+ params.initial = false;
+ params.screen = route.name;
+ } else {
+ params.state = current;
+ break;
+ }
+ if (route.state) {
+ params.params = {
+ ...route.params
+ };
+ params = params.params;
+ } else {
+ params.path = route.path;
+ params.params = route.params;
+ }
+ current = route.state;
+ config = (_config2 = config) === null || _config2 === void 0 ? void 0 : (_config2$screens = _config2.screens) === null || _config2$screens === void 0 ? void 0 : _config2$screens[route.name];
+ }
+ if (!payload) {
+ return;
+ }
+
+ // Try to construct payload for a `NAVIGATE` action from the state
+ // This lets us preserve the navigation state and not lose it
+ return {
+ type: 'NAVIGATE',
+ payload
+ };
+}
+const createNormalizedConfigItem = config => typeof config === 'object' && config != null ? {
+ initialRouteName: config.initialRouteName,
+ screens: config.screens != null ? createNormalizedConfigs(config.screens) : undefined
+} : {};
+const createNormalizedConfigs = options => Object.entries(options).reduce((acc, _ref) => {
+ let [k, v] = _ref;
+ acc[k] = createNormalizedConfigItem(v);
+ return acc;
+}, {});
+//# sourceMappingURL=getActionFromState.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getActionFromState.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getActionFromState.js.map
new file mode 100644
index 00000000..d7fb1e97
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getActionFromState.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["getActionFromState","state","options","normalizedConfig","createNormalizedConfigItem","routes","index","slice","length","undefined","key","name","initialRouteName","type","payload","route","current","config","screens","params","path","Object","assign","initial","screen","createNormalizedConfigs","entries","reduce","acc","k","v"],"sourceRoot":"../../src","sources":["getActionFromState.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getFocusedRouteNameFromRoute.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getFocusedRouteNameFromRoute.js
new file mode 100644
index 00000000..dc34a799
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getFocusedRouteNameFromRoute.js
@@ -0,0 +1,22 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getFocusedRouteNameFromRoute;
+var _useRouteCache = require("./useRouteCache");
+function getFocusedRouteNameFromRoute(route) {
+ // @ts-expect-error: this isn't in type definitions coz we want this private
+ const state = route[_useRouteCache.CHILD_STATE] ?? route.state;
+ const params = route.params;
+ const routeName = state ?
+ // Get the currently active route name in the nested navigator
+ state.routes[
+ // If we have a partial state without index, for tab/drawer, first screen will be focused one, and last for stack
+ // The type property will only exist for rehydrated state and not for state from deep link
+ state.index ?? (typeof state.type === 'string' && state.type !== 'stack' ? 0 : state.routes.length - 1)].name :
+ // If state doesn't exist, we need to default to `screen` param if available
+ typeof (params === null || params === void 0 ? void 0 : params.screen) === 'string' ? params.screen : undefined;
+ return routeName;
+}
+//# sourceMappingURL=getFocusedRouteNameFromRoute.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getFocusedRouteNameFromRoute.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getFocusedRouteNameFromRoute.js.map
new file mode 100644
index 00000000..df2f939e
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getFocusedRouteNameFromRoute.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["getFocusedRouteNameFromRoute","route","state","CHILD_STATE","params","routeName","routes","index","type","length","name","screen","undefined"],"sourceRoot":"../../src","sources":["getFocusedRouteNameFromRoute.tsx"],"mappings":";;;;;;AAEA;AAEe,SAASA,4BAA4B,CAClDC,KAA6B,EACT;EACpB;EACA,MAAMC,KAAK,GAAGD,KAAK,CAACE,0BAAW,CAAC,IAAIF,KAAK,CAACC,KAAK;EAC/C,MAAME,MAAM,GAAGH,KAAK,CAACG,MAA0C;EAE/D,MAAMC,SAAS,GAAGH,KAAK;EACnB;EACAA,KAAK,CAACI,MAAM;EACV;EACA;EACAJ,KAAK,CAACK,KAAK,KACR,OAAOL,KAAK,CAACM,IAAI,KAAK,QAAQ,IAAIN,KAAK,CAACM,IAAI,KAAK,OAAO,GACrD,CAAC,GACDN,KAAK,CAACI,MAAM,CAACG,MAAM,GAAG,CAAC,CAAC,CAC/B,CAACC,IAAI;EACN;EACF,QAAON,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEO,MAAM,MAAK,QAAQ,GAChCP,MAAM,CAACO,MAAM,GACbC,SAAS;EAEb,OAAOP,SAAS;AAClB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getPathFromState.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getPathFromState.js
new file mode 100644
index 00000000..dbed7e2c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getPathFromState.js
@@ -0,0 +1,218 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getPathFromState;
+var queryString = _interopRequireWildcard(require("query-string"));
+var _fromEntries = _interopRequireDefault(require("./fromEntries"));
+var _validatePathConfig = _interopRequireDefault(require("./validatePathConfig"));
+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; }
+const getActiveRoute = state => {
+ const route = typeof state.index === 'number' ? state.routes[state.index] : state.routes[state.routes.length - 1];
+ if (route.state) {
+ return getActiveRoute(route.state);
+ }
+ return route;
+};
+
+/**
+ * Utility to serialize a navigation state object to a path string.
+ *
+ * @example
+ * ```js
+ * getPathFromState(
+ * {
+ * routes: [
+ * {
+ * name: 'Chat',
+ * params: { author: 'Jane', id: 42 },
+ * },
+ * ],
+ * },
+ * {
+ * screens: {
+ * Chat: {
+ * path: 'chat/:author/:id',
+ * stringify: { author: author => author.toLowerCase() }
+ * }
+ * }
+ * }
+ * )
+ * ```
+ *
+ * @param state Navigation state to serialize.
+ * @param options Extra options to fine-tune how to serialize the path.
+ * @returns Path representing the state, e.g. /foo/bar?count=42.
+ */
+function getPathFromState(state, options) {
+ if (state == null) {
+ throw Error("Got 'undefined' for the navigation state. You must pass a valid state object.");
+ }
+ if (options) {
+ (0, _validatePathConfig.default)(options);
+ }
+
+ // Create a normalized configs object which will be easier to use
+ const configs = options !== null && options !== void 0 && options.screens ? createNormalizedConfigs(options === null || options === void 0 ? void 0 : options.screens) : {};
+ let path = '/';
+ let current = state;
+ const allParams = {};
+ while (current) {
+ let index = typeof current.index === 'number' ? current.index : 0;
+ let route = current.routes[index];
+ let pattern;
+ let focusedParams;
+ let focusedRoute = getActiveRoute(state);
+ let currentOptions = configs;
+
+ // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined
+ let nestedRouteNames = [];
+ let hasNext = true;
+ while (route.name in currentOptions && hasNext) {
+ pattern = currentOptions[route.name].pattern;
+ nestedRouteNames.push(route.name);
+ if (route.params) {
+ var _currentOptions$route;
+ const stringify = (_currentOptions$route = currentOptions[route.name]) === null || _currentOptions$route === void 0 ? void 0 : _currentOptions$route.stringify;
+ const currentParams = (0, _fromEntries.default)(Object.entries(route.params).map(_ref => {
+ let [key, value] = _ref;
+ return [key, stringify !== null && stringify !== void 0 && stringify[key] ? stringify[key](value) : String(value)];
+ }));
+ if (pattern) {
+ Object.assign(allParams, currentParams);
+ }
+ if (focusedRoute === route) {
+ var _pattern;
+ // If this is the focused route, keep the params for later use
+ // We save it here since it's been stringified already
+ focusedParams = {
+ ...currentParams
+ };
+ (_pattern = pattern) === null || _pattern === void 0 ? void 0 : _pattern.split('/').filter(p => p.startsWith(':'))
+ // eslint-disable-next-line no-loop-func
+ .forEach(p => {
+ const name = getParamName(p);
+
+ // Remove the params present in the pattern since we'll only use the rest for query string
+ if (focusedParams) {
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete focusedParams[name];
+ }
+ });
+ }
+ }
+
+ // If there is no `screens` property or no nested state, we return pattern
+ if (!currentOptions[route.name].screens || route.state === undefined) {
+ hasNext = false;
+ } else {
+ index = typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;
+ const nextRoute = route.state.routes[index];
+ const nestedConfig = currentOptions[route.name].screens;
+
+ // if there is config for next route name, we go deeper
+ if (nestedConfig && nextRoute.name in nestedConfig) {
+ route = nextRoute;
+ currentOptions = nestedConfig;
+ } else {
+ // If not, there is no sense in going deeper in config
+ hasNext = false;
+ }
+ }
+ }
+ if (pattern === undefined) {
+ pattern = nestedRouteNames.join('/');
+ }
+ if (currentOptions[route.name] !== undefined) {
+ path += pattern.split('/').map(p => {
+ const name = getParamName(p);
+
+ // We don't know what to show for wildcard patterns
+ // Showing the route name seems ok, though whatever we show here will be incorrect
+ // Since the page doesn't actually exist
+ if (p === '*') {
+ return route.name;
+ }
+
+ // If the path has a pattern for a param, put the param in the path
+ if (p.startsWith(':')) {
+ const value = allParams[name];
+ if (value === undefined && p.endsWith('?')) {
+ // Optional params without value assigned in route.params should be ignored
+ return '';
+ }
+ return encodeURIComponent(value);
+ }
+ return encodeURIComponent(p);
+ }).join('/');
+ } else {
+ path += encodeURIComponent(route.name);
+ }
+ if (!focusedParams) {
+ focusedParams = focusedRoute.params;
+ }
+ if (route.state) {
+ path += '/';
+ } else if (focusedParams) {
+ for (let param in focusedParams) {
+ if (focusedParams[param] === 'undefined') {
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete focusedParams[param];
+ }
+ }
+ const query = queryString.stringify(focusedParams, {
+ sort: false
+ });
+ if (query) {
+ path += `?${query}`;
+ }
+ }
+ current = route.state;
+ }
+
+ // Remove multiple as well as trailing slashes
+ path = path.replace(/\/+/g, '/');
+ path = path.length > 1 ? path.replace(/\/$/, '') : path;
+ return path;
+}
+const getParamName = pattern => pattern.replace(/^:/, '').replace(/\?$/, '');
+const joinPaths = function () {
+ for (var _len = arguments.length, paths = new Array(_len), _key = 0; _key < _len; _key++) {
+ paths[_key] = arguments[_key];
+ }
+ return [].concat(...paths.map(p => p.split('/'))).filter(Boolean).join('/');
+};
+const createConfigItem = (config, parentPattern) => {
+ var _pattern2;
+ if (typeof config === 'string') {
+ // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern
+ const pattern = parentPattern ? joinPaths(parentPattern, config) : config;
+ return {
+ pattern
+ };
+ }
+
+ // If an object is specified as the value (e.g. Foo: { ... }),
+ // It can have `path` property and `screens` prop which has nested configs
+ let pattern;
+ if (config.exact && config.path === undefined) {
+ throw new Error("A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.");
+ }
+ pattern = config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';
+ const screens = config.screens ? createNormalizedConfigs(config.screens, pattern) : undefined;
+ return {
+ // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.
+ pattern: (_pattern2 = pattern) === null || _pattern2 === void 0 ? void 0 : _pattern2.split('/').filter(Boolean).join('/'),
+ stringify: config.stringify,
+ screens
+ };
+};
+const createNormalizedConfigs = (options, pattern) => (0, _fromEntries.default)(Object.entries(options).map(_ref2 => {
+ let [name, c] = _ref2;
+ const result = createConfigItem(c, pattern);
+ return [name, result];
+}));
+//# sourceMappingURL=getPathFromState.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getPathFromState.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getPathFromState.js.map
new file mode 100644
index 00000000..f576e368
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getPathFromState.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["getActiveRoute","state","route","index","routes","length","getPathFromState","options","Error","validatePathConfig","configs","screens","createNormalizedConfigs","path","current","allParams","pattern","focusedParams","focusedRoute","currentOptions","nestedRouteNames","hasNext","name","push","params","stringify","currentParams","fromEntries","Object","entries","map","key","value","String","assign","split","filter","p","startsWith","forEach","getParamName","undefined","nextRoute","nestedConfig","join","endsWith","encodeURIComponent","param","query","queryString","sort","replace","joinPaths","paths","concat","Boolean","createConfigItem","config","parentPattern","exact","c","result"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getStateFromPath.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getStateFromPath.js
new file mode 100644
index 00000000..88246e24
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getStateFromPath.js
@@ -0,0 +1,403 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getStateFromPath;
+var _escapeStringRegexp = _interopRequireDefault(require("escape-string-regexp"));
+var queryString = _interopRequireWildcard(require("query-string"));
+var _findFocusedRoute = _interopRequireDefault(require("./findFocusedRoute"));
+var _validatePathConfig = _interopRequireDefault(require("./validatePathConfig"));
+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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+/**
+ * Utility to parse a path string to initial state object accepted by the container.
+ * This is useful for deep linking when we need to handle the incoming URL.
+ *
+ * @example
+ * ```js
+ * getStateFromPath(
+ * '/chat/jane/42',
+ * {
+ * screens: {
+ * Chat: {
+ * path: 'chat/:author/:id',
+ * parse: { id: Number }
+ * }
+ * }
+ * }
+ * )
+ * ```
+ * @param path Path string to parse and convert, e.g. /foo/bar?count=42.
+ * @param options Extra options to fine-tune how to parse the path.
+ */
+function getStateFromPath(path, options) {
+ if (options) {
+ (0, _validatePathConfig.default)(options);
+ }
+ let initialRoutes = [];
+ if (options !== null && options !== void 0 && options.initialRouteName) {
+ initialRoutes.push({
+ initialRouteName: options.initialRouteName,
+ parentScreens: []
+ });
+ }
+ const screens = options === null || options === void 0 ? void 0 : options.screens;
+ let remaining = path.replace(/\/+/g, '/') // Replace multiple slash (//) with single ones
+ .replace(/^\//, '') // Remove extra leading slash
+ .replace(/\?.*$/, ''); // Remove query params which we will handle later
+
+ // Make sure there is a trailing slash
+ remaining = remaining.endsWith('/') ? remaining : `${remaining}/`;
+ if (screens === undefined) {
+ // When no config is specified, use the path segments as route names
+ const routes = remaining.split('/').filter(Boolean).map(segment => {
+ const name = decodeURIComponent(segment);
+ return {
+ name
+ };
+ });
+ if (routes.length) {
+ return createNestedStateObject(path, routes, initialRoutes);
+ }
+ return undefined;
+ }
+
+ // Create a normalized configs array which will be easier to use
+ const configs = [].concat(...Object.keys(screens).map(key => createNormalizedConfigs(key, screens, [], initialRoutes, []))).sort((a, b) => {
+ // Sort config so that:
+ // - the most exhaustive ones are always at the beginning
+ // - patterns with wildcard are always at the end
+
+ // If 2 patterns are same, move the one with less route names up
+ // This is an error state, so it's only useful for consistent error messages
+ if (a.pattern === b.pattern) {
+ return b.routeNames.join('>').localeCompare(a.routeNames.join('>'));
+ }
+
+ // If one of the patterns starts with the other, it's more exhaustive
+ // So move it up
+ if (a.pattern.startsWith(b.pattern)) {
+ return -1;
+ }
+ if (b.pattern.startsWith(a.pattern)) {
+ return 1;
+ }
+ const aParts = a.pattern.split('/');
+ const bParts = b.pattern.split('/');
+ for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
+ // if b is longer, b get higher priority
+ if (aParts[i] == null) {
+ return 1;
+ }
+ // if a is longer, a get higher priority
+ if (bParts[i] == null) {
+ return -1;
+ }
+ const aWildCard = aParts[i] === '*' || aParts[i].startsWith(':');
+ const bWildCard = bParts[i] === '*' || bParts[i].startsWith(':');
+ // if both are wildcard we compare next component
+ if (aWildCard && bWildCard) {
+ continue;
+ }
+ // if only a is wild card, b get higher priority
+ if (aWildCard) {
+ return 1;
+ }
+ // if only b is wild card, a get higher priority
+ if (bWildCard) {
+ return -1;
+ }
+ }
+ return bParts.length - aParts.length;
+ });
+
+ // Check for duplicate patterns in the config
+ configs.reduce((acc, config) => {
+ if (acc[config.pattern]) {
+ const a = acc[config.pattern].routeNames;
+ const b = config.routeNames;
+
+ // It's not a problem if the path string omitted from a inner most screen
+ // For example, it's ok if a path resolves to `A > B > C` or `A > B`
+ const intersects = a.length > b.length ? b.every((it, i) => a[i] === it) : a.every((it, i) => b[i] === it);
+ if (!intersects) {
+ throw new Error(`Found conflicting screens with the same pattern. The pattern '${config.pattern}' resolves to both '${a.join(' > ')}' and '${b.join(' > ')}'. Patterns must be unique and cannot resolve to more than one screen.`);
+ }
+ }
+ return Object.assign(acc, {
+ [config.pattern]: config
+ });
+ }, {});
+ if (remaining === '/') {
+ // We need to add special handling of empty path so navigation to empty path also works
+ // When handling empty path, we should only look at the root level config
+ const match = configs.find(config => config.path === '' && config.routeNames.every(
+ // Make sure that none of the parent configs have a non-empty path defined
+ name => {
+ var _configs$find;
+ return !((_configs$find = configs.find(c => c.screen === name)) !== null && _configs$find !== void 0 && _configs$find.path);
+ }));
+ if (match) {
+ return createNestedStateObject(path, match.routeNames.map(name => ({
+ name
+ })), initialRoutes, configs);
+ }
+ return undefined;
+ }
+ let result;
+ let current;
+
+ // We match the whole path against the regex instead of segments
+ // This makes sure matches such as wildcard will catch any unmatched routes, even if nested
+ const {
+ routes,
+ remainingPath
+ } = matchAgainstConfigs(remaining, configs.map(c => ({
+ ...c,
+ // Add `$` to the regex to make sure it matches till end of the path and not just beginning
+ regex: c.regex ? new RegExp(c.regex.source + '$') : undefined
+ })));
+ if (routes !== undefined) {
+ // This will always be empty if full path matched
+ current = createNestedStateObject(path, routes, initialRoutes, configs);
+ remaining = remainingPath;
+ result = current;
+ }
+ if (current == null || result == null) {
+ return undefined;
+ }
+ return result;
+}
+const joinPaths = function () {
+ for (var _len = arguments.length, paths = new Array(_len), _key = 0; _key < _len; _key++) {
+ paths[_key] = arguments[_key];
+ }
+ return [].concat(...paths.map(p => p.split('/'))).filter(Boolean).join('/');
+};
+const matchAgainstConfigs = (remaining, configs) => {
+ let routes;
+ let remainingPath = remaining;
+
+ // Go through all configs, and see if the next path segment matches our regex
+ for (const config of configs) {
+ if (!config.regex) {
+ continue;
+ }
+ const match = remainingPath.match(config.regex);
+
+ // If our regex matches, we need to extract params from the path
+ if (match) {
+ var _config$pattern;
+ const matchedParams = (_config$pattern = config.pattern) === null || _config$pattern === void 0 ? void 0 : _config$pattern.split('/').filter(p => p.startsWith(':')).reduce((acc, p, i) => Object.assign(acc, {
+ // The param segments appear every second item starting from 2 in the regex match result
+ [p]: match[(i + 1) * 2].replace(/\//, '')
+ }), {});
+ routes = config.routeNames.map(name => {
+ var _config$path;
+ const config = configs.find(c => c.screen === name);
+ const params = config === null || config === void 0 ? void 0 : (_config$path = config.path) === null || _config$path === void 0 ? void 0 : _config$path.split('/').filter(p => p.startsWith(':')).reduce((acc, p) => {
+ const value = matchedParams[p];
+ if (value) {
+ var _config$parse;
+ const key = p.replace(/^:/, '').replace(/\?$/, '');
+ acc[key] = (_config$parse = config.parse) !== null && _config$parse !== void 0 && _config$parse[key] ? config.parse[key](value) : value;
+ }
+ return acc;
+ }, {});
+ if (params && Object.keys(params).length) {
+ return {
+ name,
+ params
+ };
+ }
+ return {
+ name
+ };
+ });
+ remainingPath = remainingPath.replace(match[1], '');
+ break;
+ }
+ }
+ return {
+ routes,
+ remainingPath
+ };
+};
+const createNormalizedConfigs = function (screen, routeConfig) {
+ let routeNames = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
+ let initials = arguments.length > 3 ? arguments[3] : undefined;
+ let parentScreens = arguments.length > 4 ? arguments[4] : undefined;
+ let parentPattern = arguments.length > 5 ? arguments[5] : undefined;
+ const configs = [];
+ routeNames.push(screen);
+ parentScreens.push(screen);
+
+ // @ts-expect-error: we can't strongly typecheck this for now
+ const config = routeConfig[screen];
+ if (typeof config === 'string') {
+ // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern
+ const pattern = parentPattern ? joinPaths(parentPattern, config) : config;
+ configs.push(createConfigItem(screen, routeNames, pattern, config));
+ } else if (typeof config === 'object') {
+ let pattern;
+
+ // if an object is specified as the value (e.g. Foo: { ... }),
+ // it can have `path` property and
+ // it could have `screens` prop which has nested configs
+ if (typeof config.path === 'string') {
+ if (config.exact && config.path === undefined) {
+ throw new Error("A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.");
+ }
+ pattern = config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';
+ configs.push(createConfigItem(screen, routeNames, pattern, config.path, config.parse));
+ }
+ if (config.screens) {
+ // property `initialRouteName` without `screens` has no purpose
+ if (config.initialRouteName) {
+ initials.push({
+ initialRouteName: config.initialRouteName,
+ parentScreens
+ });
+ }
+ Object.keys(config.screens).forEach(nestedConfig => {
+ const result = createNormalizedConfigs(nestedConfig, config.screens, routeNames, initials, [...parentScreens], pattern ?? parentPattern);
+ configs.push(...result);
+ });
+ }
+ }
+ routeNames.pop();
+ return configs;
+};
+const createConfigItem = (screen, routeNames, pattern, path, parse) => {
+ // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.
+ pattern = pattern.split('/').filter(Boolean).join('/');
+ const regex = pattern ? new RegExp(`^(${pattern.split('/').map(it => {
+ if (it.startsWith(':')) {
+ return `(([^/]+\\/)${it.endsWith('?') ? '?' : ''})`;
+ }
+ return `${it === '*' ? '.*' : (0, _escapeStringRegexp.default)(it)}\\/`;
+ }).join('')})`) : undefined;
+ return {
+ screen,
+ regex,
+ pattern,
+ path,
+ // The routeNames array is mutated, so copy it to keep the current state
+ routeNames: [...routeNames],
+ parse
+ };
+};
+const findParseConfigForRoute = (routeName, flatConfig) => {
+ for (const config of flatConfig) {
+ if (routeName === config.routeNames[config.routeNames.length - 1]) {
+ return config.parse;
+ }
+ }
+ return undefined;
+};
+
+// Try to find an initial route connected with the one passed
+const findInitialRoute = (routeName, parentScreens, initialRoutes) => {
+ for (const config of initialRoutes) {
+ if (parentScreens.length === config.parentScreens.length) {
+ let sameParents = true;
+ for (let i = 0; i < parentScreens.length; i++) {
+ if (parentScreens[i].localeCompare(config.parentScreens[i]) !== 0) {
+ sameParents = false;
+ break;
+ }
+ }
+ if (sameParents) {
+ return routeName !== config.initialRouteName ? config.initialRouteName : undefined;
+ }
+ }
+ }
+ return undefined;
+};
+
+// returns state object with values depending on whether
+// it is the end of state and if there is initialRoute for this level
+const createStateObject = (initialRoute, route, isEmpty) => {
+ if (isEmpty) {
+ if (initialRoute) {
+ return {
+ index: 1,
+ routes: [{
+ name: initialRoute
+ }, route]
+ };
+ } else {
+ return {
+ routes: [route]
+ };
+ }
+ } else {
+ if (initialRoute) {
+ return {
+ index: 1,
+ routes: [{
+ name: initialRoute
+ }, {
+ ...route,
+ state: {
+ routes: []
+ }
+ }]
+ };
+ } else {
+ return {
+ routes: [{
+ ...route,
+ state: {
+ routes: []
+ }
+ }]
+ };
+ }
+ }
+};
+const createNestedStateObject = (path, routes, initialRoutes, flatConfig) => {
+ let state;
+ let route = routes.shift();
+ const parentScreens = [];
+ let initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);
+ parentScreens.push(route.name);
+ state = createStateObject(initialRoute, route, routes.length === 0);
+ if (routes.length > 0) {
+ let nestedState = state;
+ while (route = routes.shift()) {
+ initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);
+ const nestedStateIndex = nestedState.index || nestedState.routes.length - 1;
+ nestedState.routes[nestedStateIndex].state = createStateObject(initialRoute, route, routes.length === 0);
+ if (routes.length > 0) {
+ nestedState = nestedState.routes[nestedStateIndex].state;
+ }
+ parentScreens.push(route.name);
+ }
+ }
+ route = (0, _findFocusedRoute.default)(state);
+ route.path = path;
+ const params = parseQueryParams(path, flatConfig ? findParseConfigForRoute(route.name, flatConfig) : undefined);
+ if (params) {
+ route.params = {
+ ...route.params,
+ ...params
+ };
+ }
+ return state;
+};
+const parseQueryParams = (path, parseConfig) => {
+ const query = path.split('?')[1];
+ const params = queryString.parse(query);
+ if (parseConfig) {
+ Object.keys(params).forEach(name => {
+ if (Object.hasOwnProperty.call(parseConfig, name) && typeof params[name] === 'string') {
+ params[name] = parseConfig[name](params[name]);
+ }
+ });
+ }
+ return Object.keys(params).length ? params : undefined;
+};
+//# sourceMappingURL=getStateFromPath.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getStateFromPath.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getStateFromPath.js.map
new file mode 100644
index 00000000..e31c9e98
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/getStateFromPath.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["getStateFromPath","path","options","validatePathConfig","initialRoutes","initialRouteName","push","parentScreens","screens","remaining","replace","endsWith","undefined","routes","split","filter","Boolean","map","segment","name","decodeURIComponent","length","createNestedStateObject","configs","concat","Object","keys","key","createNormalizedConfigs","sort","a","b","pattern","routeNames","join","localeCompare","startsWith","aParts","bParts","i","Math","max","aWildCard","bWildCard","reduce","acc","config","intersects","every","it","Error","assign","match","find","c","screen","result","current","remainingPath","matchAgainstConfigs","regex","RegExp","source","joinPaths","paths","p","matchedParams","params","value","parse","routeConfig","initials","parentPattern","createConfigItem","exact","forEach","nestedConfig","pop","escape","findParseConfigForRoute","routeName","flatConfig","findInitialRoute","sameParents","createStateObject","initialRoute","route","isEmpty","index","state","shift","nestedState","nestedStateIndex","findFocusedRoute","parseQueryParams","parseConfig","query","queryString","hasOwnProperty","call"],"sourceRoot":"../../src","sources":["getStateFromPath.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/index.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/index.js
new file mode 100644
index 00000000..d1ea4eb5
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/index.js
@@ -0,0 +1,233 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+var _exportNames = {
+ BaseNavigationContainer: true,
+ createNavigationContainerRef: true,
+ createNavigatorFactory: true,
+ CurrentRenderContext: true,
+ findFocusedRoute: true,
+ getActionFromState: true,
+ getFocusedRouteNameFromRoute: true,
+ getPathFromState: true,
+ getStateFromPath: true,
+ NavigationContainerRefContext: true,
+ NavigationContext: true,
+ NavigationHelpersContext: true,
+ NavigationRouteContext: true,
+ PreventRemoveContext: true,
+ PreventRemoveProvider: true,
+ useFocusEffect: true,
+ useIsFocused: true,
+ useNavigation: true,
+ useNavigationBuilder: true,
+ useNavigationContainerRef: true,
+ useNavigationState: true,
+ UNSTABLE_usePreventRemove: true,
+ usePreventRemoveContext: true,
+ useRoute: true,
+ validatePathConfig: true
+};
+Object.defineProperty(exports, "BaseNavigationContainer", {
+ enumerable: true,
+ get: function () {
+ return _BaseNavigationContainer.default;
+ }
+});
+Object.defineProperty(exports, "CurrentRenderContext", {
+ enumerable: true,
+ get: function () {
+ return _CurrentRenderContext.default;
+ }
+});
+Object.defineProperty(exports, "NavigationContainerRefContext", {
+ enumerable: true,
+ get: function () {
+ return _NavigationContainerRefContext.default;
+ }
+});
+Object.defineProperty(exports, "NavigationContext", {
+ enumerable: true,
+ get: function () {
+ return _NavigationContext.default;
+ }
+});
+Object.defineProperty(exports, "NavigationHelpersContext", {
+ enumerable: true,
+ get: function () {
+ return _NavigationHelpersContext.default;
+ }
+});
+Object.defineProperty(exports, "NavigationRouteContext", {
+ enumerable: true,
+ get: function () {
+ return _NavigationRouteContext.default;
+ }
+});
+Object.defineProperty(exports, "PreventRemoveContext", {
+ enumerable: true,
+ get: function () {
+ return _PreventRemoveContext.default;
+ }
+});
+Object.defineProperty(exports, "PreventRemoveProvider", {
+ enumerable: true,
+ get: function () {
+ return _PreventRemoveProvider.default;
+ }
+});
+Object.defineProperty(exports, "UNSTABLE_usePreventRemove", {
+ enumerable: true,
+ get: function () {
+ return _usePreventRemove.default;
+ }
+});
+Object.defineProperty(exports, "createNavigationContainerRef", {
+ enumerable: true,
+ get: function () {
+ return _createNavigationContainerRef.default;
+ }
+});
+Object.defineProperty(exports, "createNavigatorFactory", {
+ enumerable: true,
+ get: function () {
+ return _createNavigatorFactory.default;
+ }
+});
+Object.defineProperty(exports, "findFocusedRoute", {
+ enumerable: true,
+ get: function () {
+ return _findFocusedRoute.default;
+ }
+});
+Object.defineProperty(exports, "getActionFromState", {
+ enumerable: true,
+ get: function () {
+ return _getActionFromState.default;
+ }
+});
+Object.defineProperty(exports, "getFocusedRouteNameFromRoute", {
+ enumerable: true,
+ get: function () {
+ return _getFocusedRouteNameFromRoute.default;
+ }
+});
+Object.defineProperty(exports, "getPathFromState", {
+ enumerable: true,
+ get: function () {
+ return _getPathFromState.default;
+ }
+});
+Object.defineProperty(exports, "getStateFromPath", {
+ enumerable: true,
+ get: function () {
+ return _getStateFromPath.default;
+ }
+});
+Object.defineProperty(exports, "useFocusEffect", {
+ enumerable: true,
+ get: function () {
+ return _useFocusEffect.default;
+ }
+});
+Object.defineProperty(exports, "useIsFocused", {
+ enumerable: true,
+ get: function () {
+ return _useIsFocused.default;
+ }
+});
+Object.defineProperty(exports, "useNavigation", {
+ enumerable: true,
+ get: function () {
+ return _useNavigation.default;
+ }
+});
+Object.defineProperty(exports, "useNavigationBuilder", {
+ enumerable: true,
+ get: function () {
+ return _useNavigationBuilder.default;
+ }
+});
+Object.defineProperty(exports, "useNavigationContainerRef", {
+ enumerable: true,
+ get: function () {
+ return _useNavigationContainerRef.default;
+ }
+});
+Object.defineProperty(exports, "useNavigationState", {
+ enumerable: true,
+ get: function () {
+ return _useNavigationState.default;
+ }
+});
+Object.defineProperty(exports, "usePreventRemoveContext", {
+ enumerable: true,
+ get: function () {
+ return _usePreventRemoveContext.default;
+ }
+});
+Object.defineProperty(exports, "useRoute", {
+ enumerable: true,
+ get: function () {
+ return _useRoute.default;
+ }
+});
+Object.defineProperty(exports, "validatePathConfig", {
+ enumerable: true,
+ get: function () {
+ return _validatePathConfig.default;
+ }
+});
+var _BaseNavigationContainer = _interopRequireDefault(require("./BaseNavigationContainer"));
+var _createNavigationContainerRef = _interopRequireDefault(require("./createNavigationContainerRef"));
+var _createNavigatorFactory = _interopRequireDefault(require("./createNavigatorFactory"));
+var _CurrentRenderContext = _interopRequireDefault(require("./CurrentRenderContext"));
+var _findFocusedRoute = _interopRequireDefault(require("./findFocusedRoute"));
+var _getActionFromState = _interopRequireDefault(require("./getActionFromState"));
+var _getFocusedRouteNameFromRoute = _interopRequireDefault(require("./getFocusedRouteNameFromRoute"));
+var _getPathFromState = _interopRequireDefault(require("./getPathFromState"));
+var _getStateFromPath = _interopRequireDefault(require("./getStateFromPath"));
+var _NavigationContainerRefContext = _interopRequireDefault(require("./NavigationContainerRefContext"));
+var _NavigationContext = _interopRequireDefault(require("./NavigationContext"));
+var _NavigationHelpersContext = _interopRequireDefault(require("./NavigationHelpersContext"));
+var _NavigationRouteContext = _interopRequireDefault(require("./NavigationRouteContext"));
+var _PreventRemoveContext = _interopRequireDefault(require("./PreventRemoveContext"));
+var _PreventRemoveProvider = _interopRequireDefault(require("./PreventRemoveProvider"));
+var _types = require("./types");
+Object.keys(_types).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _types[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _types[key];
+ }
+ });
+});
+var _useFocusEffect = _interopRequireDefault(require("./useFocusEffect"));
+var _useIsFocused = _interopRequireDefault(require("./useIsFocused"));
+var _useNavigation = _interopRequireDefault(require("./useNavigation"));
+var _useNavigationBuilder = _interopRequireDefault(require("./useNavigationBuilder"));
+var _useNavigationContainerRef = _interopRequireDefault(require("./useNavigationContainerRef"));
+var _useNavigationState = _interopRequireDefault(require("./useNavigationState"));
+var _usePreventRemove = _interopRequireDefault(require("./usePreventRemove"));
+var _usePreventRemoveContext = _interopRequireDefault(require("./usePreventRemoveContext"));
+var _useRoute = _interopRequireDefault(require("./useRoute"));
+var _validatePathConfig = _interopRequireDefault(require("./validatePathConfig"));
+var _routers = require("@react-navigation/routers");
+Object.keys(_routers).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _routers[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _routers[key];
+ }
+ });
+});
+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-navigation/core/lib/commonjs/index.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/index.js.map
new file mode 100644
index 00000000..f531070c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAA0C"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isArrayEqual.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isArrayEqual.js
new file mode 100644
index 00000000..d5e036bf
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isArrayEqual.js
@@ -0,0 +1,20 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isArrayEqual;
+/**
+ * Compare two arrays with primitive values as the content.
+ * We need to make sure that both values and order match.
+ */
+function isArrayEqual(a, b) {
+ if (a === b) {
+ return true;
+ }
+ if (a.length !== b.length) {
+ return false;
+ }
+ return a.every((it, index) => it === b[index]);
+}
+//# sourceMappingURL=isArrayEqual.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isArrayEqual.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isArrayEqual.js.map
new file mode 100644
index 00000000..29e754bb
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isArrayEqual.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["isArrayEqual","a","b","length","every","it","index"],"sourceRoot":"../../src","sources":["isArrayEqual.tsx"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACe,SAASA,YAAY,CAACC,CAAQ,EAAEC,CAAQ,EAAE;EACvD,IAAID,CAAC,KAAKC,CAAC,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAID,CAAC,CAACE,MAAM,KAAKD,CAAC,CAACC,MAAM,EAAE;IACzB,OAAO,KAAK;EACd;EAEA,OAAOF,CAAC,CAACG,KAAK,CAAC,CAACC,EAAE,EAAEC,KAAK,KAAKD,EAAE,KAAKH,CAAC,CAACI,KAAK,CAAC,CAAC;AAChD"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isRecordEqual.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isRecordEqual.js
new file mode 100644
index 00000000..aa723a90
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isRecordEqual.js
@@ -0,0 +1,21 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isRecordEqual;
+/**
+ * Compare two records with primitive values as the content.
+ */
+function isRecordEqual(a, b) {
+ if (a === b) {
+ return true;
+ }
+ const aKeys = Object.keys(a);
+ const bKeys = Object.keys(b);
+ if (aKeys.length !== bKeys.length) {
+ return false;
+ }
+ return aKeys.every(key => a[key] === b[key]);
+}
+//# sourceMappingURL=isRecordEqual.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isRecordEqual.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isRecordEqual.js.map
new file mode 100644
index 00000000..2c77e087
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/isRecordEqual.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["isRecordEqual","a","b","aKeys","Object","keys","bKeys","length","every","key"],"sourceRoot":"../../src","sources":["isRecordEqual.tsx"],"mappings":";;;;;;AAAA;AACA;AACA;AACe,SAASA,aAAa,CACnCC,CAAsB,EACtBC,CAAsB,EACtB;EACA,IAAID,CAAC,KAAKC,CAAC,EAAE;IACX,OAAO,IAAI;EACb;EAEA,MAAMC,KAAK,GAAGC,MAAM,CAACC,IAAI,CAACJ,CAAC,CAAC;EAC5B,MAAMK,KAAK,GAAGF,MAAM,CAACC,IAAI,CAACH,CAAC,CAAC;EAE5B,IAAIC,KAAK,CAACI,MAAM,KAAKD,KAAK,CAACC,MAAM,EAAE;IACjC,OAAO,KAAK;EACd;EAEA,OAAOJ,KAAK,CAACK,KAAK,CAAEC,GAAG,IAAKR,CAAC,CAACQ,GAAG,CAAC,KAAKP,CAAC,CAACO,GAAG,CAAC,CAAC;AAChD"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/types.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/types.js
new file mode 100644
index 00000000..5cc99b6a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/types.js
@@ -0,0 +1,16 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.PrivateValueStore = void 0;
+function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
+function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
+class PrivateValueStore {
+ constructor() {
+ _defineProperty(this, '', void 0);
+ }
+}
+exports.PrivateValueStore = PrivateValueStore;
+//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/types.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/types.js.map
new file mode 100644
index 00000000..fcc5a0a8
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/types.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["PrivateValueStore"],"sourceRoot":"../../src","sources":["types.tsx"],"mappings":";;;;;;;;;AAoJO,MAAMA,iBAAiB,CAA4B;EAAA;IAAA,sBAW9C,EAAE;EAAA;AACd;AAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useChildListeners.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useChildListeners.js
new file mode 100644
index 00000000..ca8cf89d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useChildListeners.js
@@ -0,0 +1,36 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useChildListeners;
+var React = _interopRequireWildcard(require("react"));
+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; }
+/**
+ * Hook which lets child navigators add action listeners.
+ */
+function useChildListeners() {
+ const {
+ current: listeners
+ } = React.useRef({
+ action: [],
+ focus: []
+ });
+ const addListener = React.useCallback((type, listener) => {
+ listeners[type].push(listener);
+ let removed = false;
+ return () => {
+ const index = listeners[type].indexOf(listener);
+ if (!removed && index > -1) {
+ removed = true;
+ listeners[type].splice(index, 1);
+ }
+ };
+ }, [listeners]);
+ return {
+ listeners,
+ addListener
+ };
+}
+//# sourceMappingURL=useChildListeners.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useChildListeners.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useChildListeners.js.map
new file mode 100644
index 00000000..cd4f9d13
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useChildListeners.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useChildListeners","current","listeners","React","useRef","action","focus","addListener","useCallback","type","listener","push","removed","index","indexOf","splice"],"sourceRoot":"../../src","sources":["useChildListeners.tsx"],"mappings":";;;;;;AAAA;AAA+B;AAAA;AAI/B;AACA;AACA;AACe,SAASA,iBAAiB,GAAG;EAC1C,MAAM;IAAEC,OAAO,EAAEC;EAAU,CAAC,GAAGC,KAAK,CAACC,MAAM,CAExC;IACDC,MAAM,EAAE,EAAE;IACVC,KAAK,EAAE;EACT,CAAC,CAAC;EAEF,MAAMC,WAAW,GAAGJ,KAAK,CAACK,WAAW,CACnC,CAA8BC,IAAO,EAAEC,QAAwB,KAAK;IAClER,SAAS,CAACO,IAAI,CAAC,CAACE,IAAI,CAACD,QAAQ,CAAC;IAE9B,IAAIE,OAAO,GAAG,KAAK;IACnB,OAAO,MAAM;MACX,MAAMC,KAAK,GAAGX,SAAS,CAACO,IAAI,CAAC,CAACK,OAAO,CAACJ,QAAQ,CAAC;MAE/C,IAAI,CAACE,OAAO,IAAIC,KAAK,GAAG,CAAC,CAAC,EAAE;QAC1BD,OAAO,GAAG,IAAI;QACdV,SAAS,CAACO,IAAI,CAAC,CAACM,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;MAClC;IACF,CAAC;EACH,CAAC,EACD,CAACX,SAAS,CAAC,CACZ;EAED,OAAO;IACLA,SAAS;IACTK;EACF,CAAC;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useComponent.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useComponent.js
new file mode 100644
index 00000000..b1091588
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useComponent.js
@@ -0,0 +1,40 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useComponent;
+var React = _interopRequireWildcard(require("react"));
+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; }
+const NavigationContent = _ref => {
+ let {
+ render,
+ children
+ } = _ref;
+ return render(children);
+};
+function useComponent(render) {
+ const renderRef = React.useRef(render);
+
+ // Normally refs shouldn't be mutated in render
+ // But we return a component which will be rendered
+ // So it's just for immediate consumption
+ renderRef.current = render;
+ React.useEffect(() => {
+ renderRef.current = null;
+ });
+ return React.useRef(_ref2 => {
+ let {
+ children
+ } = _ref2;
+ const render = renderRef.current;
+ if (render === null) {
+ throw new Error('The returned component must be rendered in the same render phase as the hook.');
+ }
+ return /*#__PURE__*/React.createElement(NavigationContent, {
+ render: render
+ }, children);
+ }).current;
+}
+//# sourceMappingURL=useComponent.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useComponent.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useComponent.js.map
new file mode 100644
index 00000000..6d0f7d7b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useComponent.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["NavigationContent","render","children","useComponent","renderRef","React","useRef","current","useEffect","Error"],"sourceRoot":"../../src","sources":["useComponent.tsx"],"mappings":";;;;;;AAAA;AAA+B;AAAA;AAS/B,MAAMA,iBAAiB,GAAG,QAAiC;EAAA,IAAhC;IAAEC,MAAM;IAAEC;EAAgB,CAAC;EACpD,OAAOD,MAAM,CAACC,QAAQ,CAAC;AACzB,CAAC;AAEc,SAASC,YAAY,CAACF,MAAc,EAAE;EACnD,MAAMG,SAAS,GAAGC,KAAK,CAACC,MAAM,CAAgBL,MAAM,CAAC;;EAErD;EACA;EACA;EACAG,SAAS,CAACG,OAAO,GAAGN,MAAM;EAE1BI,KAAK,CAACG,SAAS,CAAC,MAAM;IACpBJ,SAAS,CAACG,OAAO,GAAG,IAAI;EAC1B,CAAC,CAAC;EAEF,OAAOF,KAAK,CAACC,MAAM,CAAC,SAAiD;IAAA,IAAhD;MAAEJ;IAAwC,CAAC;IAC9D,MAAMD,MAAM,GAAGG,SAAS,CAACG,OAAO;IAEhC,IAAIN,MAAM,KAAK,IAAI,EAAE;MACnB,MAAM,IAAIQ,KAAK,CACb,+EAA+E,CAChF;IACH;IAEA,oBAAO,oBAAC,iBAAiB;MAAC,MAAM,EAAER;IAAO,GAAEC,QAAQ,CAAqB;EAC1E,CAAC,CAAC,CAACK,OAAO;AACZ"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useCurrentRender.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useCurrentRender.js
new file mode 100644
index 00000000..7e33b649
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useCurrentRender.js
@@ -0,0 +1,27 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useCurrentRender;
+var React = _interopRequireWildcard(require("react"));
+var _CurrentRenderContext = _interopRequireDefault(require("./CurrentRenderContext"));
+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; }
+/**
+ * Write the current options, so that server renderer can get current values
+ * Mutating values like this is not safe in async mode, but it doesn't apply to SSR
+ */
+function useCurrentRender(_ref) {
+ let {
+ state,
+ navigation,
+ descriptors
+ } = _ref;
+ const current = React.useContext(_CurrentRenderContext.default);
+ if (current && navigation.isFocused()) {
+ current.options = descriptors[state.routes[state.index].key].options;
+ }
+}
+//# sourceMappingURL=useCurrentRender.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useCurrentRender.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useCurrentRender.js.map
new file mode 100644
index 00000000..24fd39d6
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useCurrentRender.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useCurrentRender","state","navigation","descriptors","current","React","useContext","CurrentRenderContext","isFocused","options","routes","index","key"],"sourceRoot":"../../src","sources":["useCurrentRender.tsx"],"mappings":";;;;;;AACA;AAEA;AAA0D;AAAA;AAAA;AAiB1D;AACA;AACA;AACA;AACe,SAASA,gBAAgB,OAI5B;EAAA,IAJ6B;IACvCC,KAAK;IACLC,UAAU;IACVC;EACO,CAAC;EACR,MAAMC,OAAO,GAAGC,KAAK,CAACC,UAAU,CAACC,6BAAoB,CAAC;EAEtD,IAAIH,OAAO,IAAIF,UAAU,CAACM,SAAS,EAAE,EAAE;IACrCJ,OAAO,CAACK,OAAO,GAAGN,WAAW,CAACF,KAAK,CAACS,MAAM,CAACT,KAAK,CAACU,KAAK,CAAC,CAACC,GAAG,CAAC,CAACH,OAAO;EACtE;AACF"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useDescriptors.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useDescriptors.js
new file mode 100644
index 00000000..d756da5a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useDescriptors.js
@@ -0,0 +1,132 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useDescriptors;
+var React = _interopRequireWildcard(require("react"));
+var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
+var _NavigationContext = _interopRequireDefault(require("./NavigationContext"));
+var _NavigationRouteContext = _interopRequireDefault(require("./NavigationRouteContext"));
+var _SceneView = _interopRequireDefault(require("./SceneView"));
+var _useNavigationCache = _interopRequireDefault(require("./useNavigationCache"));
+var _useRouteCache = _interopRequireDefault(require("./useRouteCache"));
+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; }
+/**
+ * Hook to create descriptor objects for the child routes.
+ *
+ * A descriptor object provides 3 things:
+ * - Helper method to render a screen
+ * - Options specified by the screen for the navigator
+ * - Navigation object intended for the route
+ */
+function useDescriptors(_ref) {
+ let {
+ state,
+ screens,
+ navigation,
+ screenOptions,
+ defaultScreenOptions,
+ onAction,
+ getState,
+ setState,
+ addListener,
+ addKeyedListener,
+ onRouteFocus,
+ router,
+ emitter
+ } = _ref;
+ const [options, setOptions] = React.useState({});
+ const {
+ onDispatchAction,
+ onOptionsChange,
+ stackRef
+ } = React.useContext(_NavigationBuilderContext.default);
+ const context = React.useMemo(() => ({
+ navigation,
+ onAction,
+ addListener,
+ addKeyedListener,
+ onRouteFocus,
+ onDispatchAction,
+ onOptionsChange,
+ stackRef
+ }), [navigation, onAction, addListener, addKeyedListener, onRouteFocus, onDispatchAction, onOptionsChange, stackRef]);
+ const navigations = (0, _useNavigationCache.default)({
+ state,
+ getState,
+ navigation,
+ setOptions,
+ router,
+ emitter
+ });
+ const routes = (0, _useRouteCache.default)(state.routes);
+ return routes.reduce((acc, route, i) => {
+ const config = screens[route.name];
+ const screen = config.props;
+ const navigation = navigations[route.key];
+ const optionsList = [
+ // The default `screenOptions` passed to the navigator
+ screenOptions,
+ // The `screenOptions` props passed to `Group` elements
+ ...(config.options ? config.options.filter(Boolean) : []),
+ // The `options` prop passed to `Screen` elements,
+ screen.options,
+ // The options set via `navigation.setOptions`
+ options[route.key]];
+ const customOptions = optionsList.reduce((acc, curr) => Object.assign(acc, typeof curr !== 'function' ? curr : curr({
+ route,
+ navigation
+ })), {});
+ const mergedOptions = {
+ ...(typeof defaultScreenOptions === 'function' ?
+ // @ts-expect-error: ts gives incorrect error here
+ defaultScreenOptions({
+ route,
+ navigation,
+ options: customOptions
+ }) : defaultScreenOptions),
+ ...customOptions
+ };
+ const clearOptions = () => setOptions(o => {
+ if (route.key in o) {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const {
+ [route.key]: _,
+ ...rest
+ } = o;
+ return rest;
+ }
+ return o;
+ });
+ acc[route.key] = {
+ route,
+ // @ts-expect-error: it's missing action helpers, fix later
+ navigation,
+ render() {
+ return /*#__PURE__*/React.createElement(_NavigationBuilderContext.default.Provider, {
+ key: route.key,
+ value: context
+ }, /*#__PURE__*/React.createElement(_NavigationContext.default.Provider, {
+ value: navigation
+ }, /*#__PURE__*/React.createElement(_NavigationRouteContext.default.Provider, {
+ value: route
+ }, /*#__PURE__*/React.createElement(_SceneView.default, {
+ navigation: navigation,
+ route: route,
+ screen: screen,
+ routeState: state.routes[i].state,
+ getState: getState,
+ setState: setState,
+ options: mergedOptions,
+ clearOptions: clearOptions
+ }))));
+ },
+ options: mergedOptions
+ };
+ return acc;
+ }, {});
+}
+//# sourceMappingURL=useDescriptors.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useDescriptors.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useDescriptors.js.map
new file mode 100644
index 00000000..194260ab
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useDescriptors.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useDescriptors","state","screens","navigation","screenOptions","defaultScreenOptions","onAction","getState","setState","addListener","addKeyedListener","onRouteFocus","router","emitter","options","setOptions","React","useState","onDispatchAction","onOptionsChange","stackRef","useContext","NavigationBuilderContext","context","useMemo","navigations","useNavigationCache","routes","useRouteCache","reduce","acc","route","i","config","name","screen","props","key","optionsList","filter","Boolean","customOptions","curr","Object","assign","mergedOptions","clearOptions","o","_","rest","render"],"sourceRoot":"../../src","sources":["useDescriptors.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useEventEmitter.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useEventEmitter.js
new file mode 100644
index 00000000..53080dfe
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useEventEmitter.js
@@ -0,0 +1,107 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useEventEmitter;
+var React = _interopRequireWildcard(require("react"));
+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; }
+/**
+ * Hook to manage the event system used by the navigator to notify screens of various events.
+ */
+function useEventEmitter(listen) {
+ const listenRef = React.useRef(listen);
+ React.useEffect(() => {
+ listenRef.current = listen;
+ });
+ const listeners = React.useRef(Object.create(null));
+ const create = React.useCallback(target => {
+ const removeListener = (type, callback) => {
+ const callbacks = listeners.current[type] ? listeners.current[type][target] : undefined;
+ if (!callbacks) {
+ return;
+ }
+ const index = callbacks.indexOf(callback);
+ if (index > -1) {
+ callbacks.splice(index, 1);
+ }
+ };
+ const addListener = (type, callback) => {
+ listeners.current[type] = listeners.current[type] || {};
+ listeners.current[type][target] = listeners.current[type][target] || [];
+ listeners.current[type][target].push(callback);
+ let removed = false;
+ return () => {
+ // Prevent removing other listeners when unsubscribing same listener multiple times
+ if (!removed) {
+ removed = true;
+ removeListener(type, callback);
+ }
+ };
+ };
+ return {
+ addListener,
+ removeListener
+ };
+ }, []);
+ const emit = React.useCallback(_ref => {
+ var _items$target, _listenRef$current;
+ let {
+ type,
+ data,
+ target,
+ canPreventDefault
+ } = _ref;
+ const items = listeners.current[type] || {};
+
+ // Copy the current list of callbacks in case they are mutated during execution
+ const callbacks = target !== undefined ? (_items$target = items[target]) === null || _items$target === void 0 ? void 0 : _items$target.slice() : [].concat(...Object.keys(items).map(t => items[t])).filter((cb, i, self) => self.lastIndexOf(cb) === i);
+ const event = {
+ get type() {
+ return type;
+ }
+ };
+ if (target !== undefined) {
+ Object.defineProperty(event, 'target', {
+ enumerable: true,
+ get() {
+ return target;
+ }
+ });
+ }
+ if (data !== undefined) {
+ Object.defineProperty(event, 'data', {
+ enumerable: true,
+ get() {
+ return data;
+ }
+ });
+ }
+ if (canPreventDefault) {
+ let defaultPrevented = false;
+ Object.defineProperties(event, {
+ defaultPrevented: {
+ enumerable: true,
+ get() {
+ return defaultPrevented;
+ }
+ },
+ preventDefault: {
+ enumerable: true,
+ value() {
+ defaultPrevented = true;
+ }
+ }
+ });
+ }
+ (_listenRef$current = listenRef.current) === null || _listenRef$current === void 0 ? void 0 : _listenRef$current.call(listenRef, event);
+ callbacks === null || callbacks === void 0 ? void 0 : callbacks.forEach(cb => cb(event));
+ return event;
+ }, []);
+ return React.useMemo(() => ({
+ create,
+ emit
+ }), [create, emit]);
+}
+//# sourceMappingURL=useEventEmitter.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useEventEmitter.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useEventEmitter.js.map
new file mode 100644
index 00000000..9c4291d3
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useEventEmitter.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useEventEmitter","listen","listenRef","React","useRef","useEffect","current","listeners","Object","create","useCallback","target","removeListener","type","callback","callbacks","undefined","index","indexOf","splice","addListener","push","removed","emit","data","canPreventDefault","items","slice","concat","keys","map","t","filter","cb","i","self","lastIndexOf","event","defineProperty","enumerable","get","defaultPrevented","defineProperties","preventDefault","value","forEach","useMemo"],"sourceRoot":"../../src","sources":["useEventEmitter.tsx"],"mappings":";;;;;;AAAA;AAA+B;AAAA;AAW/B;AACA;AACA;AACe,SAASA,eAAe,CACrCC,MAAyB,EACE;EAC3B,MAAMC,SAAS,GAAGC,KAAK,CAACC,MAAM,CAACH,MAAM,CAAC;EAEtCE,KAAK,CAACE,SAAS,CAAC,MAAM;IACpBH,SAAS,CAACI,OAAO,GAAGL,MAAM;EAC5B,CAAC,CAAC;EAEF,MAAMM,SAAS,GAAGJ,KAAK,CAACC,MAAM,CAC5BI,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC,CACpB;EAED,MAAMA,MAAM,GAAGN,KAAK,CAACO,WAAW,CAAEC,MAAc,IAAK;IACnD,MAAMC,cAAc,GAAG,CAACC,IAAY,EAAEC,QAA6B,KAAK;MACtE,MAAMC,SAAS,GAAGR,SAAS,CAACD,OAAO,CAACO,IAAI,CAAC,GACrCN,SAAS,CAACD,OAAO,CAACO,IAAI,CAAC,CAACF,MAAM,CAAC,GAC/BK,SAAS;MAEb,IAAI,CAACD,SAAS,EAAE;QACd;MACF;MAEA,MAAME,KAAK,GAAGF,SAAS,CAACG,OAAO,CAACJ,QAAQ,CAAC;MAEzC,IAAIG,KAAK,GAAG,CAAC,CAAC,EAAE;QACdF,SAAS,CAACI,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;MAC5B;IACF,CAAC;IAED,MAAMG,WAAW,GAAG,CAACP,IAAY,EAAEC,QAA6B,KAAK;MACnEP,SAAS,CAACD,OAAO,CAACO,IAAI,CAAC,GAAGN,SAAS,CAACD,OAAO,CAACO,IAAI,CAAC,IAAI,CAAC,CAAC;MACvDN,SAAS,CAACD,OAAO,CAACO,IAAI,CAAC,CAACF,MAAM,CAAC,GAAGJ,SAAS,CAACD,OAAO,CAACO,IAAI,CAAC,CAACF,MAAM,CAAC,IAAI,EAAE;MACvEJ,SAAS,CAACD,OAAO,CAACO,IAAI,CAAC,CAACF,MAAM,CAAC,CAACU,IAAI,CAACP,QAAQ,CAAC;MAE9C,IAAIQ,OAAO,GAAG,KAAK;MACnB,OAAO,MAAM;QACX;QACA,IAAI,CAACA,OAAO,EAAE;UACZA,OAAO,GAAG,IAAI;UACdV,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC;QAChC;MACF,CAAC;IACH,CAAC;IAED,OAAO;MACLM,WAAW;MACXR;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMW,IAAI,GAAGpB,KAAK,CAACO,WAAW,CAC5B,QAUM;IAAA;IAAA,IAVL;MACCG,IAAI;MACJW,IAAI;MACJb,MAAM;MACNc;IAMF,CAAC;IACC,MAAMC,KAAK,GAAGnB,SAAS,CAACD,OAAO,CAACO,IAAI,CAAC,IAAI,CAAC,CAAC;;IAE3C;IACA,MAAME,SAAS,GACbJ,MAAM,KAAKK,SAAS,oBAChBU,KAAK,CAACf,MAAM,CAAC,kDAAb,cAAegB,KAAK,EAAE,GACrB,EAAE,CACAC,MAAM,CAAC,GAAGpB,MAAM,CAACqB,IAAI,CAACH,KAAK,CAAC,CAACI,GAAG,CAAEC,CAAC,IAAKL,KAAK,CAACK,CAAC,CAAC,CAAC,CAAC,CAClDC,MAAM,CAAC,CAACC,EAAE,EAAEC,CAAC,EAAEC,IAAI,KAAKA,IAAI,CAACC,WAAW,CAACH,EAAE,CAAC,KAAKC,CAAC,CAAC;IAE5D,MAAMG,KAA8B,GAAG;MACrC,IAAIxB,IAAI,GAAG;QACT,OAAOA,IAAI;MACb;IACF,CAAC;IAED,IAAIF,MAAM,KAAKK,SAAS,EAAE;MACxBR,MAAM,CAAC8B,cAAc,CAACD,KAAK,EAAE,QAAQ,EAAE;QACrCE,UAAU,EAAE,IAAI;QAChBC,GAAG,GAAG;UACJ,OAAO7B,MAAM;QACf;MACF,CAAC,CAAC;IACJ;IAEA,IAAIa,IAAI,KAAKR,SAAS,EAAE;MACtBR,MAAM,CAAC8B,cAAc,CAACD,KAAK,EAAE,MAAM,EAAE;QACnCE,UAAU,EAAE,IAAI;QAChBC,GAAG,GAAG;UACJ,OAAOhB,IAAI;QACb;MACF,CAAC,CAAC;IACJ;IAEA,IAAIC,iBAAiB,EAAE;MACrB,IAAIgB,gBAAgB,GAAG,KAAK;MAE5BjC,MAAM,CAACkC,gBAAgB,CAACL,KAAK,EAAE;QAC7BI,gBAAgB,EAAE;UAChBF,UAAU,EAAE,IAAI;UAChBC,GAAG,GAAG;YACJ,OAAOC,gBAAgB;UACzB;QACF,CAAC;QACDE,cAAc,EAAE;UACdJ,UAAU,EAAE,IAAI;UAChBK,KAAK,GAAG;YACNH,gBAAgB,GAAG,IAAI;UACzB;QACF;MACF,CAAC,CAAC;IACJ;IAEA,sBAAAvC,SAAS,CAACI,OAAO,uDAAjB,wBAAAJ,SAAS,EAAWmC,KAAK,CAAC;IAE1BtB,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAE8B,OAAO,CAAEZ,EAAE,IAAKA,EAAE,CAACI,KAAK,CAAC,CAAC;IAErC,OAAOA,KAAK;EACd,CAAC,EACD,EAAE,CACH;EAED,OAAOlC,KAAK,CAAC2C,OAAO,CAAC,OAAO;IAAErC,MAAM;IAAEc;EAAK,CAAC,CAAC,EAAE,CAACd,MAAM,EAAEc,IAAI,CAAC,CAAC;AAChE"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEffect.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEffect.js
new file mode 100644
index 00000000..c96044b7
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEffect.js
@@ -0,0 +1,79 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useFocusEffect;
+var React = _interopRequireWildcard(require("react"));
+var _useNavigation = _interopRequireDefault(require("./useNavigation"));
+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; }
+/**
+ * Hook to run an effect in a focused screen, similar to `React.useEffect`.
+ * This can be used to perform side-effects such as fetching data or subscribing to events.
+ * The passed callback should be wrapped in `React.useCallback` to avoid running the effect too often.
+ *
+ * @param callback Memoized callback containing the effect, should optionally return a cleanup function.
+ */
+function useFocusEffect(effect) {
+ const navigation = (0, _useNavigation.default)();
+ if (arguments[1] !== undefined) {
+ const message = "You passed a second argument to 'useFocusEffect', but it only accepts one argument. " + "If you want to pass a dependency array, you can use 'React.useCallback':\n\n" + 'useFocusEffect(\n' + ' React.useCallback(() => {\n' + ' // Your code here\n' + ' }, [depA, depB])\n' + ');\n\n' + 'See usage guide: https://reactnavigation.org/docs/use-focus-effect';
+ console.error(message);
+ }
+ React.useEffect(() => {
+ let isFocused = false;
+ let cleanup;
+ const callback = () => {
+ const destroy = effect();
+ if (destroy === undefined || typeof destroy === 'function') {
+ return destroy;
+ }
+ if (process.env.NODE_ENV !== 'production') {
+ let message = 'An effect function must not return anything besides a function, which is used for clean-up.';
+ if (destroy === null) {
+ message += " You returned 'null'. If your effect does not require clean-up, return 'undefined' (or nothing).";
+ } else if (typeof destroy.then === 'function') {
+ message += "\n\nIt looks like you wrote 'useFocusEffect(async () => ...)' or returned a Promise. " + 'Instead, write the async function inside your effect ' + 'and call it immediately:\n\n' + 'useFocusEffect(\n' + ' React.useCallback(() => {\n' + ' async function fetchData() {\n' + ' // You can await here\n' + ' const response = await MyAPI.getData(someId);\n' + ' // ...\n' + ' }\n\n' + ' fetchData();\n' + ' }, [someId])\n' + ');\n\n' + 'See usage guide: https://reactnavigation.org/docs/use-focus-effect';
+ } else {
+ message += ` You returned '${JSON.stringify(destroy)}'.`;
+ }
+ console.error(message);
+ }
+ };
+
+ // We need to run the effect on intial render/dep changes if the screen is focused
+ if (navigation.isFocused()) {
+ cleanup = callback();
+ isFocused = true;
+ }
+ const unsubscribeFocus = navigation.addListener('focus', () => {
+ // If callback was already called for focus, avoid calling it again
+ // The focus event may also fire on intial render, so we guard against runing the effect twice
+ if (isFocused) {
+ return;
+ }
+ if (cleanup !== undefined) {
+ cleanup();
+ }
+ cleanup = callback();
+ isFocused = true;
+ });
+ const unsubscribeBlur = navigation.addListener('blur', () => {
+ if (cleanup !== undefined) {
+ cleanup();
+ }
+ cleanup = undefined;
+ isFocused = false;
+ });
+ return () => {
+ if (cleanup !== undefined) {
+ cleanup();
+ }
+ unsubscribeFocus();
+ unsubscribeBlur();
+ };
+ }, [effect, navigation]);
+}
+//# sourceMappingURL=useFocusEffect.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEffect.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEffect.js.map
new file mode 100644
index 00000000..0463e612
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEffect.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useFocusEffect","effect","navigation","useNavigation","arguments","undefined","message","console","error","React","useEffect","isFocused","cleanup","callback","destroy","process","env","NODE_ENV","then","JSON","stringify","unsubscribeFocus","addListener","unsubscribeBlur"],"sourceRoot":"../../src","sources":["useFocusEffect.tsx"],"mappings":";;;;;;AAAA;AAEA;AAA4C;AAAA;AAAA;AAI5C;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,cAAc,CAACC,MAAsB,EAAE;EAC7D,MAAMC,UAAU,GAAG,IAAAC,sBAAa,GAAE;EAElC,IAAIC,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,EAAE;IAC9B,MAAMC,OAAO,GACX,sFAAsF,GACtF,8EAA8E,GAC9E,mBAAmB,GACnB,+BAA+B,GAC/B,yBAAyB,GACzB,sBAAsB,GACtB,QAAQ,GACR,oEAAoE;IAEtEC,OAAO,CAACC,KAAK,CAACF,OAAO,CAAC;EACxB;EAEAG,KAAK,CAACC,SAAS,CAAC,MAAM;IACpB,IAAIC,SAAS,GAAG,KAAK;IACrB,IAAIC,OAAwC;IAE5C,MAAMC,QAAQ,GAAG,MAAM;MACrB,MAAMC,OAAO,GAAGb,MAAM,EAAE;MAExB,IAAIa,OAAO,KAAKT,SAAS,IAAI,OAAOS,OAAO,KAAK,UAAU,EAAE;QAC1D,OAAOA,OAAO;MAChB;MAEA,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACzC,IAAIX,OAAO,GACT,6FAA6F;QAE/F,IAAIQ,OAAO,KAAK,IAAI,EAAE;UACpBR,OAAO,IACL,kGAAkG;QACtG,CAAC,MAAM,IAAI,OAAQQ,OAAO,CAASI,IAAI,KAAK,UAAU,EAAE;UACtDZ,OAAO,IACL,uFAAuF,GACvF,uDAAuD,GACvD,8BAA8B,GAC9B,mBAAmB,GACnB,+BAA+B,GAC/B,oCAAoC,GACpC,+BAA+B,GAC/B,uDAAuD,GACvD,gBAAgB,GAChB,WAAW,GACX,oBAAoB,GACpB,kBAAkB,GAClB,QAAQ,GACR,oEAAoE;QACxE,CAAC,MAAM;UACLA,OAAO,IAAK,kBAAiBa,IAAI,CAACC,SAAS,CAACN,OAAO,CAAE,IAAG;QAC1D;QAEAP,OAAO,CAACC,KAAK,CAACF,OAAO,CAAC;MACxB;IACF,CAAC;;IAED;IACA,IAAIJ,UAAU,CAACS,SAAS,EAAE,EAAE;MAC1BC,OAAO,GAAGC,QAAQ,EAAE;MACpBF,SAAS,GAAG,IAAI;IAClB;IAEA,MAAMU,gBAAgB,GAAGnB,UAAU,CAACoB,WAAW,CAAC,OAAO,EAAE,MAAM;MAC7D;MACA;MACA,IAAIX,SAAS,EAAE;QACb;MACF;MAEA,IAAIC,OAAO,KAAKP,SAAS,EAAE;QACzBO,OAAO,EAAE;MACX;MAEAA,OAAO,GAAGC,QAAQ,EAAE;MACpBF,SAAS,GAAG,IAAI;IAClB,CAAC,CAAC;IAEF,MAAMY,eAAe,GAAGrB,UAAU,CAACoB,WAAW,CAAC,MAAM,EAAE,MAAM;MAC3D,IAAIV,OAAO,KAAKP,SAAS,EAAE;QACzBO,OAAO,EAAE;MACX;MAEAA,OAAO,GAAGP,SAAS;MACnBM,SAAS,GAAG,KAAK;IACnB,CAAC,CAAC;IAEF,OAAO,MAAM;MACX,IAAIC,OAAO,KAAKP,SAAS,EAAE;QACzBO,OAAO,EAAE;MACX;MAEAS,gBAAgB,EAAE;MAClBE,eAAe,EAAE;IACnB,CAAC;EACH,CAAC,EAAE,CAACtB,MAAM,EAAEC,UAAU,CAAC,CAAC;AAC1B"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEvents.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEvents.js
new file mode 100644
index 00000000..67606aaa
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEvents.js
@@ -0,0 +1,72 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useFocusEvents;
+var React = _interopRequireWildcard(require("react"));
+var _NavigationContext = _interopRequireDefault(require("./NavigationContext"));
+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; }
+/**
+ * Hook to take care of emitting `focus` and `blur` events.
+ */
+function useFocusEvents(_ref) {
+ let {
+ state,
+ emitter
+ } = _ref;
+ const navigation = React.useContext(_NavigationContext.default);
+ const lastFocusedKeyRef = React.useRef();
+ const currentFocusedKey = state.routes[state.index].key;
+
+ // When the parent screen changes its focus state, we also need to change child's focus
+ // Coz the child screen can't be focused if the parent screen is out of focus
+ React.useEffect(() => navigation === null || navigation === void 0 ? void 0 : navigation.addListener('focus', () => {
+ lastFocusedKeyRef.current = currentFocusedKey;
+ emitter.emit({
+ type: 'focus',
+ target: currentFocusedKey
+ });
+ }), [currentFocusedKey, emitter, navigation]);
+ React.useEffect(() => navigation === null || navigation === void 0 ? void 0 : navigation.addListener('blur', () => {
+ lastFocusedKeyRef.current = undefined;
+ emitter.emit({
+ type: 'blur',
+ target: currentFocusedKey
+ });
+ }), [currentFocusedKey, emitter, navigation]);
+ React.useEffect(() => {
+ const lastFocusedKey = lastFocusedKeyRef.current;
+ lastFocusedKeyRef.current = currentFocusedKey;
+
+ // We wouldn't have `lastFocusedKey` on initial mount
+ // Fire focus event for the current route on mount if there's no parent navigator
+ if (lastFocusedKey === undefined && !navigation) {
+ emitter.emit({
+ type: 'focus',
+ target: currentFocusedKey
+ });
+ }
+
+ // We should only emit events when the focused key changed and navigator is focused
+ // When navigator is not focused, screens inside shouldn't receive focused status either
+ if (lastFocusedKey === currentFocusedKey || !(navigation ? navigation.isFocused() : true)) {
+ return;
+ }
+ if (lastFocusedKey === undefined) {
+ // Only fire events after initial mount
+ return;
+ }
+ emitter.emit({
+ type: 'blur',
+ target: lastFocusedKey
+ });
+ emitter.emit({
+ type: 'focus',
+ target: currentFocusedKey
+ });
+ }, [currentFocusedKey, emitter, navigation]);
+}
+//# sourceMappingURL=useFocusEvents.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEvents.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEvents.js.map
new file mode 100644
index 00000000..2caf6e70
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusEvents.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useFocusEvents","state","emitter","navigation","React","useContext","NavigationContext","lastFocusedKeyRef","useRef","currentFocusedKey","routes","index","key","useEffect","addListener","current","emit","type","target","undefined","lastFocusedKey","isFocused"],"sourceRoot":"../../src","sources":["useFocusEvents.tsx"],"mappings":";;;;;;AACA;AAEA;AAAoD;AAAA;AAAA;AASpD;AACA;AACA;AACe,SAASA,cAAc,OAGnB;EAAA,IAHmD;IACpEC,KAAK;IACLC;EACc,CAAC;EACf,MAAMC,UAAU,GAAGC,KAAK,CAACC,UAAU,CAACC,0BAAiB,CAAC;EACtD,MAAMC,iBAAiB,GAAGH,KAAK,CAACI,MAAM,EAAsB;EAE5D,MAAMC,iBAAiB,GAAGR,KAAK,CAACS,MAAM,CAACT,KAAK,CAACU,KAAK,CAAC,CAACC,GAAG;;EAEvD;EACA;EACAR,KAAK,CAACS,SAAS,CACb,MACEV,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEW,WAAW,CAAC,OAAO,EAAE,MAAM;IACrCP,iBAAiB,CAACQ,OAAO,GAAGN,iBAAiB;IAC7CP,OAAO,CAACc,IAAI,CAAC;MAAEC,IAAI,EAAE,OAAO;MAAEC,MAAM,EAAET;IAAkB,CAAC,CAAC;EAC5D,CAAC,CAAC,EACJ,CAACA,iBAAiB,EAAEP,OAAO,EAAEC,UAAU,CAAC,CACzC;EAEDC,KAAK,CAACS,SAAS,CACb,MACEV,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEW,WAAW,CAAC,MAAM,EAAE,MAAM;IACpCP,iBAAiB,CAACQ,OAAO,GAAGI,SAAS;IACrCjB,OAAO,CAACc,IAAI,CAAC;MAAEC,IAAI,EAAE,MAAM;MAAEC,MAAM,EAAET;IAAkB,CAAC,CAAC;EAC3D,CAAC,CAAC,EACJ,CAACA,iBAAiB,EAAEP,OAAO,EAAEC,UAAU,CAAC,CACzC;EAEDC,KAAK,CAACS,SAAS,CAAC,MAAM;IACpB,MAAMO,cAAc,GAAGb,iBAAiB,CAACQ,OAAO;IAEhDR,iBAAiB,CAACQ,OAAO,GAAGN,iBAAiB;;IAE7C;IACA;IACA,IAAIW,cAAc,KAAKD,SAAS,IAAI,CAAChB,UAAU,EAAE;MAC/CD,OAAO,CAACc,IAAI,CAAC;QAAEC,IAAI,EAAE,OAAO;QAAEC,MAAM,EAAET;MAAkB,CAAC,CAAC;IAC5D;;IAEA;IACA;IACA,IACEW,cAAc,KAAKX,iBAAiB,IACpC,EAAEN,UAAU,GAAGA,UAAU,CAACkB,SAAS,EAAE,GAAG,IAAI,CAAC,EAC7C;MACA;IACF;IAEA,IAAID,cAAc,KAAKD,SAAS,EAAE;MAChC;MACA;IACF;IAEAjB,OAAO,CAACc,IAAI,CAAC;MAAEC,IAAI,EAAE,MAAM;MAAEC,MAAM,EAAEE;IAAe,CAAC,CAAC;IACtDlB,OAAO,CAACc,IAAI,CAAC;MAAEC,IAAI,EAAE,OAAO;MAAEC,MAAM,EAAET;IAAkB,CAAC,CAAC;EAC5D,CAAC,EAAE,CAACA,iBAAiB,EAAEP,OAAO,EAAEC,UAAU,CAAC,CAAC;AAC9C"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusedListenersChildrenAdapter.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusedListenersChildrenAdapter.js
new file mode 100644
index 00000000..108c45a7
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusedListenersChildrenAdapter.js
@@ -0,0 +1,50 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useFocusedListenersChildrenAdapter;
+var React = _interopRequireWildcard(require("react"));
+var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
+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; }
+/**
+ * Hook for passing focus callback to children
+ */
+function useFocusedListenersChildrenAdapter(_ref) {
+ let {
+ navigation,
+ focusedListeners
+ } = _ref;
+ const {
+ addListener
+ } = React.useContext(_NavigationBuilderContext.default);
+ const listener = React.useCallback(callback => {
+ if (navigation.isFocused()) {
+ for (const listener of focusedListeners) {
+ const {
+ handled,
+ result
+ } = listener(callback);
+ if (handled) {
+ return {
+ handled,
+ result
+ };
+ }
+ }
+ return {
+ handled: true,
+ result: callback(navigation)
+ };
+ } else {
+ return {
+ handled: false,
+ result: null
+ };
+ }
+ }, [focusedListeners, navigation]);
+ React.useEffect(() => addListener === null || addListener === void 0 ? void 0 : addListener('focus', listener), [addListener, listener]);
+}
+//# sourceMappingURL=useFocusedListenersChildrenAdapter.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusedListenersChildrenAdapter.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusedListenersChildrenAdapter.js.map
new file mode 100644
index 00000000..46dedc56
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useFocusedListenersChildrenAdapter.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useFocusedListenersChildrenAdapter","navigation","focusedListeners","addListener","React","useContext","NavigationBuilderContext","listener","useCallback","callback","isFocused","handled","result","useEffect"],"sourceRoot":"../../src","sources":["useFocusedListenersChildrenAdapter.tsx"],"mappings":";;;;;;AACA;AAEA;AAGoC;AAAA;AAAA;AAQpC;AACA;AACA;AACe,SAASA,kCAAkC,OAG9C;EAAA,IAH+C;IACzDC,UAAU;IACVC;EACO,CAAC;EACR,MAAM;IAAEC;EAAY,CAAC,GAAGC,KAAK,CAACC,UAAU,CAACC,iCAAwB,CAAC;EAElE,MAAMC,QAAQ,GAAGH,KAAK,CAACI,WAAW,CAC/BC,QAAwC,IAAK;IAC5C,IAAIR,UAAU,CAACS,SAAS,EAAE,EAAE;MAC1B,KAAK,MAAMH,QAAQ,IAAIL,gBAAgB,EAAE;QACvC,MAAM;UAAES,OAAO;UAAEC;QAAO,CAAC,GAAGL,QAAQ,CAACE,QAAQ,CAAC;QAE9C,IAAIE,OAAO,EAAE;UACX,OAAO;YAAEA,OAAO;YAAEC;UAAO,CAAC;QAC5B;MACF;MAEA,OAAO;QAAED,OAAO,EAAE,IAAI;QAAEC,MAAM,EAAEH,QAAQ,CAACR,UAAU;MAAE,CAAC;IACxD,CAAC,MAAM;MACL,OAAO;QAAEU,OAAO,EAAE,KAAK;QAAEC,MAAM,EAAE;MAAK,CAAC;IACzC;EACF,CAAC,EACD,CAACV,gBAAgB,EAAED,UAAU,CAAC,CAC/B;EAEDG,KAAK,CAACS,SAAS,CACb,MAAMV,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAG,OAAO,EAAEI,QAAQ,CAAC,EACtC,CAACJ,WAAW,EAAEI,QAAQ,CAAC,CACxB;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useIsFocused.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useIsFocused.js
new file mode 100644
index 00000000..33536bd4
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useIsFocused.js
@@ -0,0 +1,39 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useIsFocused;
+var React = _interopRequireWildcard(require("react"));
+var _useNavigation = _interopRequireDefault(require("./useNavigation"));
+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; }
+/**
+ * Hook to get the current focus state of the screen. Returns a `true` if screen is focused, otherwise `false`.
+ * This can be used if a component needs to render something based on the focus state.
+ */
+function useIsFocused() {
+ const navigation = (0, _useNavigation.default)();
+ const [isFocused, setIsFocused] = (0, React.useState)(navigation.isFocused);
+ const valueToReturn = navigation.isFocused();
+ if (isFocused !== valueToReturn) {
+ // If the value has changed since the last render, we need to update it.
+ // This could happen if we missed an update from the event listeners during re-render.
+ // React will process this update immediately, so the old subscription value won't be committed.
+ // It is still nice to avoid returning a mismatched value though, so let's override the return value.
+ // This is the same logic as in https://github.com/facebook/react/tree/master/packages/use-subscription
+ setIsFocused(valueToReturn);
+ }
+ React.useEffect(() => {
+ const unsubscribeFocus = navigation.addListener('focus', () => setIsFocused(true));
+ const unsubscribeBlur = navigation.addListener('blur', () => setIsFocused(false));
+ return () => {
+ unsubscribeFocus();
+ unsubscribeBlur();
+ };
+ }, [navigation]);
+ React.useDebugValue(valueToReturn);
+ return valueToReturn;
+}
+//# sourceMappingURL=useIsFocused.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useIsFocused.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useIsFocused.js.map
new file mode 100644
index 00000000..eab0c76d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useIsFocused.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useIsFocused","navigation","useNavigation","isFocused","setIsFocused","useState","valueToReturn","React","useEffect","unsubscribeFocus","addListener","unsubscribeBlur","useDebugValue"],"sourceRoot":"../../src","sources":["useIsFocused.tsx"],"mappings":";;;;;;AAAA;AAGA;AAA4C;AAAA;AAAA;AAE5C;AACA;AACA;AACA;AACe,SAASA,YAAY,GAAY;EAC9C,MAAMC,UAAU,GAAG,IAAAC,sBAAa,GAAE;EAClC,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAC,cAAQ,EAACJ,UAAU,CAACE,SAAS,CAAC;EAEhE,MAAMG,aAAa,GAAGL,UAAU,CAACE,SAAS,EAAE;EAE5C,IAAIA,SAAS,KAAKG,aAAa,EAAE;IAC/B;IACA;IACA;IACA;IACA;IACAF,YAAY,CAACE,aAAa,CAAC;EAC7B;EAEAC,KAAK,CAACC,SAAS,CAAC,MAAM;IACpB,MAAMC,gBAAgB,GAAGR,UAAU,CAACS,WAAW,CAAC,OAAO,EAAE,MACvDN,YAAY,CAAC,IAAI,CAAC,CACnB;IAED,MAAMO,eAAe,GAAGV,UAAU,CAACS,WAAW,CAAC,MAAM,EAAE,MACrDN,YAAY,CAAC,KAAK,CAAC,CACpB;IAED,OAAO,MAAM;MACXK,gBAAgB,EAAE;MAClBE,eAAe,EAAE;IACnB,CAAC;EACH,CAAC,EAAE,CAACV,UAAU,CAAC,CAAC;EAEhBM,KAAK,CAACK,aAAa,CAACN,aAAa,CAAC;EAElC,OAAOA,aAAa;AACtB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useKeyedChildListeners.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useKeyedChildListeners.js
new file mode 100644
index 00000000..793332ea
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useKeyedChildListeners.js
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useKeyedChildListeners;
+var React = _interopRequireWildcard(require("react"));
+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; }
+/**
+ * Hook which lets child navigators add getters to be called for obtaining rehydrated state.
+ */
+function useKeyedChildListeners() {
+ const {
+ current: keyedListeners
+ } = React.useRef(Object.assign(Object.create(null), {
+ getState: {},
+ beforeRemove: {}
+ }));
+ const addKeyedListener = React.useCallback((type, key, listener) => {
+ // @ts-expect-error: according to ref stated above you can use `key` to index type
+ keyedListeners[type][key] = listener;
+ return () => {
+ // @ts-expect-error: according to ref stated above you can use `key` to index type
+ keyedListeners[type][key] = undefined;
+ };
+ }, [keyedListeners]);
+ return {
+ keyedListeners,
+ addKeyedListener
+ };
+}
+//# sourceMappingURL=useKeyedChildListeners.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useKeyedChildListeners.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useKeyedChildListeners.js.map
new file mode 100644
index 00000000..0fac73b3
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useKeyedChildListeners.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useKeyedChildListeners","current","keyedListeners","React","useRef","Object","assign","create","getState","beforeRemove","addKeyedListener","useCallback","type","key","listener","undefined"],"sourceRoot":"../../src","sources":["useKeyedChildListeners.tsx"],"mappings":";;;;;;AAAA;AAA+B;AAAA;AAI/B;AACA;AACA;AACe,SAASA,sBAAsB,GAAG;EAC/C,MAAM;IAAEC,OAAO,EAAEC;EAAe,CAAC,GAAGC,KAAK,CAACC,MAAM,CAM9CC,MAAM,CAACC,MAAM,CAACD,MAAM,CAACE,MAAM,CAAC,IAAI,CAAC,EAAE;IACjCC,QAAQ,EAAE,CAAC,CAAC;IACZC,YAAY,EAAE,CAAC;EACjB,CAAC,CAAC,CACH;EAED,MAAMC,gBAAgB,GAAGP,KAAK,CAACQ,WAAW,CACxC,CACEC,IAAO,EACPC,GAAW,EACXC,QAA6B,KAC1B;IACH;IACAZ,cAAc,CAACU,IAAI,CAAC,CAACC,GAAG,CAAC,GAAGC,QAAQ;IAEpC,OAAO,MAAM;MACX;MACAZ,cAAc,CAACU,IAAI,CAAC,CAACC,GAAG,CAAC,GAAGE,SAAS;IACvC,CAAC;EACH,CAAC,EACD,CAACb,cAAc,CAAC,CACjB;EAED,OAAO;IACLA,cAAc;IACdQ;EACF,CAAC;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigation.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigation.js
new file mode 100644
index 00000000..cea1f6af
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigation.js
@@ -0,0 +1,28 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useNavigation;
+var React = _interopRequireWildcard(require("react"));
+var _NavigationContainerRefContext = _interopRequireDefault(require("./NavigationContainerRefContext"));
+var _NavigationContext = _interopRequireDefault(require("./NavigationContext"));
+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; }
+/**
+ * Hook to access the navigation prop of the parent screen anywhere.
+ *
+ * @returns Navigation prop of the parent screen.
+ */
+function useNavigation() {
+ const root = React.useContext(_NavigationContainerRefContext.default);
+ const navigation = React.useContext(_NavigationContext.default);
+ if (navigation === undefined && root === undefined) {
+ throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?");
+ }
+
+ // FIXME: Figure out a better way to do this
+ return navigation ?? root;
+}
+//# sourceMappingURL=useNavigation.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigation.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigation.js.map
new file mode 100644
index 00000000..c7439d40
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigation.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useNavigation","root","React","useContext","NavigationContainerRefContext","navigation","NavigationContext","undefined","Error"],"sourceRoot":"../../src","sources":["useNavigation.tsx"],"mappings":";;;;;;AAAA;AAEA;AACA;AAAoD;AAAA;AAAA;AAGpD;AACA;AACA;AACA;AACA;AACe,SAASA,aAAa,GAE9B;EACL,MAAMC,IAAI,GAAGC,KAAK,CAACC,UAAU,CAACC,sCAA6B,CAAC;EAC5D,MAAMC,UAAU,GAAGH,KAAK,CAACC,UAAU,CAACG,0BAAiB,CAAC;EAEtD,IAAID,UAAU,KAAKE,SAAS,IAAIN,IAAI,KAAKM,SAAS,EAAE;IAClD,MAAM,IAAIC,KAAK,CACb,kFAAkF,CACnF;EACH;;EAEA;EACA,OAAQH,UAAU,IAAIJ,IAAI;AAC5B"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationBuilder.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationBuilder.js
new file mode 100644
index 00000000..524ea0b0
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationBuilder.js
@@ -0,0 +1,457 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useNavigationBuilder;
+var _routers = require("@react-navigation/routers");
+var React = _interopRequireWildcard(require("react"));
+var _reactIs = require("react-is");
+var _Group = _interopRequireDefault(require("./Group"));
+var _isArrayEqual = _interopRequireDefault(require("./isArrayEqual"));
+var _isRecordEqual = _interopRequireDefault(require("./isRecordEqual"));
+var _NavigationHelpersContext = _interopRequireDefault(require("./NavigationHelpersContext"));
+var _NavigationRouteContext = _interopRequireDefault(require("./NavigationRouteContext"));
+var _NavigationStateContext = _interopRequireDefault(require("./NavigationStateContext"));
+var _PreventRemoveProvider = _interopRequireDefault(require("./PreventRemoveProvider"));
+var _Screen = _interopRequireDefault(require("./Screen"));
+var _types = require("./types");
+var _useChildListeners = _interopRequireDefault(require("./useChildListeners"));
+var _useComponent = _interopRequireDefault(require("./useComponent"));
+var _useCurrentRender = _interopRequireDefault(require("./useCurrentRender"));
+var _useDescriptors = _interopRequireDefault(require("./useDescriptors"));
+var _useEventEmitter = _interopRequireDefault(require("./useEventEmitter"));
+var _useFocusedListenersChildrenAdapter = _interopRequireDefault(require("./useFocusedListenersChildrenAdapter"));
+var _useFocusEvents = _interopRequireDefault(require("./useFocusEvents"));
+var _useKeyedChildListeners = _interopRequireDefault(require("./useKeyedChildListeners"));
+var _useNavigationHelpers = _interopRequireDefault(require("./useNavigationHelpers"));
+var _useOnAction = _interopRequireDefault(require("./useOnAction"));
+var _useOnGetState = _interopRequireDefault(require("./useOnGetState"));
+var _useOnRouteFocus = _interopRequireDefault(require("./useOnRouteFocus"));
+var _useRegisterNavigator = _interopRequireDefault(require("./useRegisterNavigator"));
+var _useScheduleUpdate = _interopRequireDefault(require("./useScheduleUpdate"));
+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; }
+// This is to make TypeScript compiler happy
+// eslint-disable-next-line babel/no-unused-expressions
+_types.PrivateValueStore;
+const isValidKey = key => key === undefined || typeof key === 'string' && key !== '';
+
+/**
+ * Extract route config object from React children elements.
+ *
+ * @param children React Elements to extract the config from.
+ */
+const getRouteConfigsFromChildren = (children, groupKey, groupOptions) => {
+ const configs = React.Children.toArray(children).reduce((acc, child) => {
+ var _child$type, _child$props;
+ if ( /*#__PURE__*/React.isValidElement(child)) {
+ if (child.type === _Screen.default) {
+ // We can only extract the config from `Screen` elements
+ // If something else was rendered, it's probably a bug
+
+ if (!isValidKey(child.props.navigationKey)) {
+ throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(child.props.navigationKey)}) for the screen '${child.props.name}'. It must be a non-empty string or 'undefined'.`);
+ }
+ acc.push({
+ keys: [groupKey, child.props.navigationKey],
+ options: groupOptions,
+ props: child.props
+ });
+ return acc;
+ }
+ if (child.type === React.Fragment || child.type === _Group.default) {
+ if (!isValidKey(child.props.navigationKey)) {
+ throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(child.props.navigationKey)}) for the group. It must be a non-empty string or 'undefined'.`);
+ }
+
+ // When we encounter a fragment or group, we need to dive into its children to extract the configs
+ // This is handy to conditionally define a group of screens
+ acc.push(...getRouteConfigsFromChildren(child.props.children, child.props.navigationKey, child.type !== _Group.default ? groupOptions : groupOptions != null ? [...groupOptions, child.props.screenOptions] : [child.props.screenOptions]));
+ return acc;
+ }
+ }
+ throw new Error(`A navigator can only contain 'Screen', 'Group' or 'React.Fragment' as its direct children (found ${/*#__PURE__*/React.isValidElement(child) ? `'${typeof child.type === 'string' ? child.type : (_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.name}'${(_child$props = child.props) !== null && _child$props !== void 0 && _child$props.name ? ` for the screen '${child.props.name}'` : ''}` : typeof child === 'object' ? JSON.stringify(child) : `'${String(child)}'`}). To render this component in the navigator, pass it in the 'component' prop to 'Screen'.`);
+ }, []);
+ if (process.env.NODE_ENV !== 'production') {
+ configs.forEach(config => {
+ const {
+ name,
+ children,
+ component,
+ getComponent
+ } = config.props;
+ if (typeof name !== 'string' || !name) {
+ throw new Error(`Got an invalid name (${JSON.stringify(name)}) for the screen. It must be a non-empty string.`);
+ }
+ if (children != null || component !== undefined || getComponent !== undefined) {
+ if (children != null && component !== undefined) {
+ throw new Error(`Got both 'component' and 'children' props for the screen '${name}'. You must pass only one of them.`);
+ }
+ if (children != null && getComponent !== undefined) {
+ throw new Error(`Got both 'getComponent' and 'children' props for the screen '${name}'. You must pass only one of them.`);
+ }
+ if (component !== undefined && getComponent !== undefined) {
+ throw new Error(`Got both 'component' and 'getComponent' props for the screen '${name}'. You must pass only one of them.`);
+ }
+ if (children != null && typeof children !== 'function') {
+ throw new Error(`Got an invalid value for 'children' prop for the screen '${name}'. It must be a function returning a React Element.`);
+ }
+ if (component !== undefined && !(0, _reactIs.isValidElementType)(component)) {
+ throw new Error(`Got an invalid value for 'component' prop for the screen '${name}'. It must be a valid React Component.`);
+ }
+ if (getComponent !== undefined && typeof getComponent !== 'function') {
+ throw new Error(`Got an invalid value for 'getComponent' prop for the screen '${name}'. It must be a function returning a React Component.`);
+ }
+ if (typeof component === 'function') {
+ if (component.name === 'component') {
+ // Inline anonymous functions passed in the `component` prop will have the name of the prop
+ // It's relatively safe to assume that it's not a component since it should also have PascalCase name
+ // We won't catch all scenarios here, but this should catch a good chunk of incorrect use.
+ console.warn(`Looks like you're passing an inline function for 'component' prop for the screen '${name}' (e.g. component={() => }). Passing an inline function will cause the component state to be lost on re-render and cause perf issues since it's re-created every render. You can pass the function as children to 'Screen' instead to achieve the desired behaviour.`);
+ } else if (/^[a-z]/.test(component.name)) {
+ console.warn(`Got a component with the name '${component.name}' for the screen '${name}'. React Components must start with an uppercase letter. If you're passing a regular function and not a component, pass it as children to 'Screen' instead. Otherwise capitalize your component's name.`);
+ }
+ }
+ } else {
+ throw new Error(`Couldn't find a 'component', 'getComponent' or 'children' prop for the screen '${name}'. This can happen if you passed 'undefined'. You likely forgot to export your component from the file it's defined in, or mixed up default import and named import when importing.`);
+ }
+ });
+ }
+ return configs;
+};
+
+/**
+ * Hook for building navigators.
+ *
+ * @param createRouter Factory method which returns router object.
+ * @param options Options object containing `children` and additional options for the router.
+ * @returns An object containing `state`, `navigation`, `descriptors` objects.
+ */
+function useNavigationBuilder(createRouter, options) {
+ const navigatorKey = (0, _useRegisterNavigator.default)();
+ const route = React.useContext(_NavigationRouteContext.default);
+ const {
+ children,
+ screenListeners,
+ ...rest
+ } = options;
+ const {
+ current: router
+ } = React.useRef(createRouter({
+ ...rest,
+ ...(route !== null && route !== void 0 && route.params && route.params.state == null && route.params.initial !== false && typeof route.params.screen === 'string' ? {
+ initialRouteName: route.params.screen
+ } : null)
+ }));
+ const routeConfigs = getRouteConfigsFromChildren(children);
+ const screens = routeConfigs.reduce((acc, config) => {
+ if (config.props.name in acc) {
+ throw new Error(`A navigator cannot contain multiple 'Screen' components with the same name (found duplicate screen named '${config.props.name}')`);
+ }
+ acc[config.props.name] = config;
+ return acc;
+ }, {});
+ const routeNames = routeConfigs.map(config => config.props.name);
+ const routeKeyList = routeNames.reduce((acc, curr) => {
+ acc[curr] = screens[curr].keys.map(key => key ?? '').join(':');
+ return acc;
+ }, {});
+ const routeParamList = routeNames.reduce((acc, curr) => {
+ const {
+ initialParams
+ } = screens[curr].props;
+ acc[curr] = initialParams;
+ return acc;
+ }, {});
+ const routeGetIdList = routeNames.reduce((acc, curr) => Object.assign(acc, {
+ [curr]: screens[curr].props.getId
+ }), {});
+ if (!routeNames.length) {
+ throw new Error("Couldn't find any screens for the navigator. Have you defined any screens as its children?");
+ }
+ const isStateValid = React.useCallback(state => state.type === undefined || state.type === router.type, [router.type]);
+ const isStateInitialized = React.useCallback(state => state !== undefined && state.stale === false && isStateValid(state), [isStateValid]);
+ const {
+ state: currentState,
+ getState: getCurrentState,
+ setState: setCurrentState,
+ setKey,
+ getKey,
+ getIsInitial
+ } = React.useContext(_NavigationStateContext.default);
+ const stateCleanedUp = React.useRef(false);
+ const cleanUpState = React.useCallback(() => {
+ setCurrentState(undefined);
+ stateCleanedUp.current = true;
+ }, [setCurrentState]);
+ const setState = React.useCallback(state => {
+ if (stateCleanedUp.current) {
+ // State might have been already cleaned up due to unmount
+ // We do not want to expose API allowing to override this
+ // This would lead to old data preservation on main navigator unmount
+ return;
+ }
+ setCurrentState(state);
+ }, [setCurrentState]);
+ const [initializedState, isFirstStateInitialization] = React.useMemo(() => {
+ var _route$params4;
+ const initialRouteParamList = routeNames.reduce((acc, curr) => {
+ var _route$params, _route$params2, _route$params3;
+ const {
+ initialParams
+ } = screens[curr].props;
+ const initialParamsFromParams = (route === null || route === void 0 ? void 0 : (_route$params = route.params) === null || _route$params === void 0 ? void 0 : _route$params.state) == null && (route === null || route === void 0 ? void 0 : (_route$params2 = route.params) === null || _route$params2 === void 0 ? void 0 : _route$params2.initial) !== false && (route === null || route === void 0 ? void 0 : (_route$params3 = route.params) === null || _route$params3 === void 0 ? void 0 : _route$params3.screen) === curr ? route.params.params : undefined;
+ acc[curr] = initialParams !== undefined || initialParamsFromParams !== undefined ? {
+ ...initialParams,
+ ...initialParamsFromParams
+ } : undefined;
+ return acc;
+ }, {});
+
+ // If the current state isn't initialized on first render, we initialize it
+ // We also need to re-initialize it if the state passed from parent was changed (maybe due to reset)
+ // Otherwise assume that the state was provided as initial state
+ // So we need to rehydrate it to make it usable
+ if ((currentState === undefined || !isStateValid(currentState)) && (route === null || route === void 0 ? void 0 : (_route$params4 = route.params) === null || _route$params4 === void 0 ? void 0 : _route$params4.state) == null) {
+ return [router.getInitialState({
+ routeNames,
+ routeParamList: initialRouteParamList,
+ routeGetIdList
+ }), true];
+ } else {
+ var _route$params5;
+ return [router.getRehydratedState((route === null || route === void 0 ? void 0 : (_route$params5 = route.params) === null || _route$params5 === void 0 ? void 0 : _route$params5.state) ?? currentState, {
+ routeNames,
+ routeParamList: initialRouteParamList,
+ routeGetIdList
+ }), false];
+ }
+ // We explicitly don't include routeNames, route.params etc. in the dep list
+ // below. We want to avoid forcing a new state to be calculated in those cases
+ // Instead, we handle changes to these in the nextState code below. Note
+ // that some changes to routeConfigs are explicitly ignored, such as changes
+ // to initialParams
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [currentState, router, isStateValid]);
+ const previousRouteKeyListRef = React.useRef(routeKeyList);
+ React.useEffect(() => {
+ previousRouteKeyListRef.current = routeKeyList;
+ });
+ const previousRouteKeyList = previousRouteKeyListRef.current;
+ let state =
+ // If the state isn't initialized, or stale, use the state we initialized instead
+ // The state won't update until there's a change needed in the state we have initalized locally
+ // So it'll be `undefined` or stale until the first navigation event happens
+ isStateInitialized(currentState) ? currentState : initializedState;
+ let nextState = state;
+ if (!(0, _isArrayEqual.default)(state.routeNames, routeNames) || !(0, _isRecordEqual.default)(routeKeyList, previousRouteKeyList)) {
+ // When the list of route names change, the router should handle it to remove invalid routes
+ nextState = router.getStateForRouteNamesChange(state, {
+ routeNames,
+ routeParamList,
+ routeGetIdList,
+ routeKeyChanges: Object.keys(routeKeyList).filter(name => previousRouteKeyList.hasOwnProperty(name) && routeKeyList[name] !== previousRouteKeyList[name])
+ });
+ }
+ const previousNestedParamsRef = React.useRef(route === null || route === void 0 ? void 0 : route.params);
+ React.useEffect(() => {
+ previousNestedParamsRef.current = route === null || route === void 0 ? void 0 : route.params;
+ }, [route === null || route === void 0 ? void 0 : route.params]);
+ if (route !== null && route !== void 0 && route.params) {
+ const previousParams = previousNestedParamsRef.current;
+ let action;
+ if (typeof route.params.state === 'object' && route.params.state != null && route.params !== previousParams) {
+ // If the route was updated with new state, we should reset to it
+ action = _routers.CommonActions.reset(route.params.state);
+ } else if (typeof route.params.screen === 'string' && (route.params.initial === false && isFirstStateInitialization || route.params !== previousParams)) {
+ // If the route was updated with new screen name and/or params, we should navigate there
+ action = _routers.CommonActions.navigate({
+ name: route.params.screen,
+ params: route.params.params,
+ path: route.params.path
+ });
+ }
+
+ // The update should be limited to current navigator only, so we call the router manually
+ const updatedState = action ? router.getStateForAction(nextState, action, {
+ routeNames,
+ routeParamList,
+ routeGetIdList
+ }) : null;
+ nextState = updatedState !== null ? router.getRehydratedState(updatedState, {
+ routeNames,
+ routeParamList,
+ routeGetIdList
+ }) : nextState;
+ }
+ const shouldUpdate = state !== nextState;
+ (0, _useScheduleUpdate.default)(() => {
+ if (shouldUpdate) {
+ // If the state needs to be updated, we'll schedule an update
+ setState(nextState);
+ }
+ });
+
+ // The up-to-date state will come in next render, but we don't need to wait for it
+ // We can't use the outdated state since the screens have changed, which will cause error due to mismatched config
+ // So we override the state object we return to use the latest state as soon as possible
+ state = nextState;
+ React.useEffect(() => {
+ setKey(navigatorKey);
+ if (!getIsInitial()) {
+ // If it's not initial render, we need to update the state
+ // This will make sure that our container gets notifier of state changes due to new mounts
+ // This is necessary for proper screen tracking, URL updates etc.
+ setState(nextState);
+ }
+ return () => {
+ // We need to clean up state for this navigator on unmount
+ // We do it in a timeout because we need to detect if another navigator mounted in the meantime
+ // For example, if another navigator has started rendering, we should skip cleanup
+ // Otherwise, our cleanup step will cleanup state for the other navigator and re-initialize it
+ setTimeout(() => {
+ if (getCurrentState() !== undefined && getKey() === navigatorKey) {
+ cleanUpState();
+ }
+ }, 0);
+ };
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
+
+ // We initialize this ref here to avoid a new getState getting initialized
+ // whenever initializedState changes. We want getState to have access to the
+ // latest initializedState, but don't need it to change when that happens
+ const initializedStateRef = React.useRef();
+ initializedStateRef.current = initializedState;
+ const getState = React.useCallback(() => {
+ const currentState = getCurrentState();
+ return isStateInitialized(currentState) ? currentState : initializedStateRef.current;
+ }, [getCurrentState, isStateInitialized]);
+ const emitter = (0, _useEventEmitter.default)(e => {
+ let routeNames = [];
+ let route;
+ if (e.target) {
+ var _route;
+ route = state.routes.find(route => route.key === e.target);
+ if ((_route = route) !== null && _route !== void 0 && _route.name) {
+ routeNames.push(route.name);
+ }
+ } else {
+ route = state.routes[state.index];
+ routeNames.push(...Object.keys(screens).filter(name => {
+ var _route2;
+ return ((_route2 = route) === null || _route2 === void 0 ? void 0 : _route2.name) === name;
+ }));
+ }
+ if (route == null) {
+ return;
+ }
+ const navigation = descriptors[route.key].navigation;
+ const listeners = [].concat(
+ // Get an array of listeners for all screens + common listeners on navigator
+ ...[screenListeners, ...routeNames.map(name => {
+ const {
+ listeners
+ } = screens[name].props;
+ return listeners;
+ })].map(listeners => {
+ const map = typeof listeners === 'function' ? listeners({
+ route: route,
+ navigation
+ }) : listeners;
+ return map ? Object.keys(map).filter(type => type === e.type).map(type => map === null || map === void 0 ? void 0 : map[type]) : undefined;
+ }))
+ // We don't want same listener to be called multiple times for same event
+ // So we remove any duplicate functions from the array
+ .filter((cb, i, self) => cb && self.lastIndexOf(cb) === i);
+ listeners.forEach(listener => listener === null || listener === void 0 ? void 0 : listener(e));
+ });
+ (0, _useFocusEvents.default)({
+ state,
+ emitter
+ });
+ React.useEffect(() => {
+ emitter.emit({
+ type: 'state',
+ data: {
+ state
+ }
+ });
+ }, [emitter, state]);
+ const {
+ listeners: childListeners,
+ addListener
+ } = (0, _useChildListeners.default)();
+ const {
+ keyedListeners,
+ addKeyedListener
+ } = (0, _useKeyedChildListeners.default)();
+ const onAction = (0, _useOnAction.default)({
+ router,
+ getState,
+ setState,
+ key: route === null || route === void 0 ? void 0 : route.key,
+ actionListeners: childListeners.action,
+ beforeRemoveListeners: keyedListeners.beforeRemove,
+ routerConfigOptions: {
+ routeNames,
+ routeParamList,
+ routeGetIdList
+ },
+ emitter
+ });
+ const onRouteFocus = (0, _useOnRouteFocus.default)({
+ router,
+ key: route === null || route === void 0 ? void 0 : route.key,
+ getState,
+ setState
+ });
+ const navigation = (0, _useNavigationHelpers.default)({
+ id: options.id,
+ onAction,
+ getState,
+ emitter,
+ router
+ });
+ (0, _useFocusedListenersChildrenAdapter.default)({
+ navigation,
+ focusedListeners: childListeners.focus
+ });
+ (0, _useOnGetState.default)({
+ getState,
+ getStateListeners: keyedListeners.getState
+ });
+ const descriptors = (0, _useDescriptors.default)({
+ state,
+ screens,
+ navigation,
+ screenOptions: options.screenOptions,
+ defaultScreenOptions: options.defaultScreenOptions,
+ onAction,
+ getState,
+ setState,
+ onRouteFocus,
+ addListener,
+ addKeyedListener,
+ router,
+ // @ts-expect-error: this should have both core and custom events, but too much work right now
+ emitter
+ });
+ (0, _useCurrentRender.default)({
+ state,
+ navigation,
+ descriptors
+ });
+ const NavigationContent = (0, _useComponent.default)(children => /*#__PURE__*/React.createElement(_NavigationHelpersContext.default.Provider, {
+ value: navigation
+ }, /*#__PURE__*/React.createElement(_PreventRemoveProvider.default, null, children)));
+ return {
+ state,
+ navigation,
+ descriptors,
+ NavigationContent
+ };
+}
+//# sourceMappingURL=useNavigationBuilder.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationBuilder.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationBuilder.js.map
new file mode 100644
index 00000000..44726e57
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationBuilder.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["PrivateValueStore","isValidKey","key","undefined","getRouteConfigsFromChildren","children","groupKey","groupOptions","configs","React","Children","toArray","reduce","acc","child","isValidElement","type","Screen","props","navigationKey","Error","JSON","stringify","name","push","keys","options","Fragment","Group","screenOptions","String","process","env","NODE_ENV","forEach","config","component","getComponent","isValidElementType","console","warn","test","useNavigationBuilder","createRouter","navigatorKey","useRegisterNavigator","route","useContext","NavigationRouteContext","screenListeners","rest","current","router","useRef","params","state","initial","screen","initialRouteName","routeConfigs","screens","routeNames","map","routeKeyList","curr","join","routeParamList","initialParams","routeGetIdList","Object","assign","getId","length","isStateValid","useCallback","isStateInitialized","stale","currentState","getState","getCurrentState","setState","setCurrentState","setKey","getKey","getIsInitial","NavigationStateContext","stateCleanedUp","cleanUpState","initializedState","isFirstStateInitialization","useMemo","initialRouteParamList","initialParamsFromParams","getInitialState","getRehydratedState","previousRouteKeyListRef","useEffect","previousRouteKeyList","nextState","isArrayEqual","isRecordEqual","getStateForRouteNamesChange","routeKeyChanges","filter","hasOwnProperty","previousNestedParamsRef","previousParams","action","CommonActions","reset","navigate","path","updatedState","getStateForAction","shouldUpdate","useScheduleUpdate","setTimeout","initializedStateRef","emitter","useEventEmitter","e","target","routes","find","index","navigation","descriptors","listeners","concat","cb","i","self","lastIndexOf","listener","useFocusEvents","emit","data","childListeners","addListener","useChildListeners","keyedListeners","addKeyedListener","useKeyedChildListeners","onAction","useOnAction","actionListeners","beforeRemoveListeners","beforeRemove","routerConfigOptions","onRouteFocus","useOnRouteFocus","useNavigationHelpers","id","useFocusedListenersChildrenAdapter","focusedListeners","focus","useOnGetState","getStateListeners","useDescriptors","defaultScreenOptions","useCurrentRender","NavigationContent","useComponent"],"sourceRoot":"../../src","sources":["useNavigationBuilder.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationCache.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationCache.js
new file mode 100644
index 00000000..c7f1df6f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationCache.js
@@ -0,0 +1,126 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useNavigationCache;
+var _routers = require("@react-navigation/routers");
+var React = _interopRequireWildcard(require("react"));
+var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
+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; }
+/**
+ * Hook to cache navigation objects for each screen in the navigator.
+ * It's important to cache them to make sure navigation objects don't change between renders.
+ * This lets us apply optimizations like `React.memo` to minimize re-rendering screens.
+ */
+function useNavigationCache(_ref) {
+ let {
+ state,
+ getState,
+ navigation,
+ setOptions,
+ router,
+ emitter
+ } = _ref;
+ const {
+ stackRef
+ } = React.useContext(_NavigationBuilderContext.default);
+
+ // Cache object which holds navigation objects for each screen
+ // We use `React.useMemo` instead of `React.useRef` coz we want to invalidate it when deps change
+ // In reality, these deps will rarely change, if ever
+ const cache = React.useMemo(() => ({
+ current: {}
+ }),
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ [getState, navigation, setOptions, router, emitter]);
+ const actions = {
+ ...router.actionCreators,
+ ..._routers.CommonActions
+ };
+ cache.current = state.routes.reduce((acc, route) => {
+ const previous = cache.current[route.key];
+ if (previous) {
+ // If a cached navigation object already exists, reuse it
+ acc[route.key] = previous;
+ } else {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const {
+ emit,
+ ...rest
+ } = navigation;
+ const dispatch = thunk => {
+ const action = typeof thunk === 'function' ? thunk(getState()) : thunk;
+ if (action != null) {
+ navigation.dispatch({
+ source: route.key,
+ ...action
+ });
+ }
+ };
+ const withStack = callback => {
+ let isStackSet = false;
+ try {
+ if (process.env.NODE_ENV !== 'production' && stackRef && !stackRef.current) {
+ // Capture the stack trace for devtools
+ stackRef.current = new Error().stack;
+ isStackSet = true;
+ }
+ callback();
+ } finally {
+ if (isStackSet && stackRef) {
+ stackRef.current = undefined;
+ }
+ }
+ };
+ const helpers = Object.keys(actions).reduce((acc, name) => {
+ acc[name] = function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ return withStack(() =>
+ // @ts-expect-error: name is a valid key, but TypeScript is dumb
+ dispatch(actions[name](...args)));
+ };
+ return acc;
+ }, {});
+ acc[route.key] = {
+ ...rest,
+ ...helpers,
+ // FIXME: too much work to fix the types for now
+ ...emitter.create(route.key),
+ dispatch: thunk => withStack(() => dispatch(thunk)),
+ getParent: id => {
+ if (id !== undefined && id === rest.getId()) {
+ // If the passed id is the same as the current navigation id,
+ // we return the cached navigation object for the relevant route
+ return acc[route.key];
+ }
+ return rest.getParent(id);
+ },
+ setOptions: options => setOptions(o => ({
+ ...o,
+ [route.key]: {
+ ...o[route.key],
+ ...options
+ }
+ })),
+ isFocused: () => {
+ const state = getState();
+ if (state.routes[state.index].key !== route.key) {
+ return false;
+ }
+
+ // If the current screen is focused, we also need to check if parent navigator is focused
+ // This makes sure that we return the focus state in the whole tree, not just this navigator
+ return navigation ? navigation.isFocused() : true;
+ }
+ };
+ }
+ return acc;
+ }, {});
+ return cache.current;
+}
+//# sourceMappingURL=useNavigationCache.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationCache.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationCache.js.map
new file mode 100644
index 00000000..680ddf70
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationCache.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useNavigationCache","state","getState","navigation","setOptions","router","emitter","stackRef","React","useContext","NavigationBuilderContext","cache","useMemo","current","actions","actionCreators","CommonActions","routes","reduce","acc","route","previous","key","emit","rest","dispatch","thunk","action","source","withStack","callback","isStackSet","process","env","NODE_ENV","Error","stack","undefined","helpers","Object","keys","name","args","create","getParent","id","getId","options","o","isFocused","index"],"sourceRoot":"../../src","sources":["useNavigationCache.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationContainerRef.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationContainerRef.js
new file mode 100644
index 00000000..6b5f15db
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationContainerRef.js
@@ -0,0 +1,19 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useNavigationContainerRef;
+var React = _interopRequireWildcard(require("react"));
+var _createNavigationContainerRef = _interopRequireDefault(require("./createNavigationContainerRef"));
+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 useNavigationContainerRef() {
+ const navigation = React.useRef(null);
+ if (navigation.current == null) {
+ navigation.current = (0, _createNavigationContainerRef.default)();
+ }
+ return navigation.current;
+}
+//# sourceMappingURL=useNavigationContainerRef.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationContainerRef.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationContainerRef.js.map
new file mode 100644
index 00000000..92054e9f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationContainerRef.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useNavigationContainerRef","navigation","React","useRef","current","createNavigationContainerRef"],"sourceRoot":"../../src","sources":["useNavigationContainerRef.tsx"],"mappings":";;;;;;AAAA;AAEA;AAA0E;AAAA;AAAA;AAG3D,SAASA,yBAAyB,GAEC;EAChD,MAAMC,UAAU,GACdC,KAAK,CAACC,MAAM,CAAsD,IAAI,CAAC;EAEzE,IAAIF,UAAU,CAACG,OAAO,IAAI,IAAI,EAAE;IAC9BH,UAAU,CAACG,OAAO,GAAG,IAAAC,qCAA4B,GAAa;EAChE;EAEA,OAAOJ,UAAU,CAACG,OAAO;AAC3B"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationHelpers.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationHelpers.js
new file mode 100644
index 00000000..07de42d4
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationHelpers.js
@@ -0,0 +1,81 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useNavigationHelpers;
+var _routers = require("@react-navigation/routers");
+var React = _interopRequireWildcard(require("react"));
+var _NavigationContext = _interopRequireDefault(require("./NavigationContext"));
+var _types = require("./types");
+var _UnhandledActionContext = _interopRequireDefault(require("./UnhandledActionContext"));
+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; }
+// This is to make TypeScript compiler happy
+// eslint-disable-next-line babel/no-unused-expressions
+_types.PrivateValueStore;
+/**
+ * Navigation object with helper methods to be used by a navigator.
+ * This object includes methods for common actions as well as methods the parent screen's navigation object.
+ */
+function useNavigationHelpers(_ref) {
+ let {
+ id: navigatorId,
+ onAction,
+ getState,
+ emitter,
+ router
+ } = _ref;
+ const onUnhandledAction = React.useContext(_UnhandledActionContext.default);
+ const parentNavigationHelpers = React.useContext(_NavigationContext.default);
+ return React.useMemo(() => {
+ const dispatch = op => {
+ const action = typeof op === 'function' ? op(getState()) : op;
+ const handled = onAction(action);
+ if (!handled) {
+ onUnhandledAction === null || onUnhandledAction === void 0 ? void 0 : onUnhandledAction(action);
+ }
+ };
+ const actions = {
+ ...router.actionCreators,
+ ..._routers.CommonActions
+ };
+ const helpers = Object.keys(actions).reduce((acc, name) => {
+ // @ts-expect-error: name is a valid key, but TypeScript is dumb
+ acc[name] = function () {
+ return dispatch(actions[name](...arguments));
+ };
+ return acc;
+ }, {});
+ const navigationHelpers = {
+ ...parentNavigationHelpers,
+ ...helpers,
+ dispatch,
+ emit: emitter.emit,
+ isFocused: parentNavigationHelpers ? parentNavigationHelpers.isFocused : () => true,
+ canGoBack: () => {
+ const state = getState();
+ return router.getStateForAction(state, _routers.CommonActions.goBack(), {
+ routeNames: state.routeNames,
+ routeParamList: {},
+ routeGetIdList: {}
+ }) !== null || (parentNavigationHelpers === null || parentNavigationHelpers === void 0 ? void 0 : parentNavigationHelpers.canGoBack()) || false;
+ },
+ getId: () => navigatorId,
+ getParent: id => {
+ if (id !== undefined) {
+ let current = navigationHelpers;
+ while (current && id !== current.getId()) {
+ current = current.getParent();
+ }
+ return current;
+ }
+ return parentNavigationHelpers;
+ },
+ getState
+ };
+ return navigationHelpers;
+ }, [navigatorId, emitter.emit, getState, onAction, onUnhandledAction, parentNavigationHelpers, router]);
+}
+//# sourceMappingURL=useNavigationHelpers.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationHelpers.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationHelpers.js.map
new file mode 100644
index 00000000..fa6da44f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationHelpers.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["PrivateValueStore","useNavigationHelpers","id","navigatorId","onAction","getState","emitter","router","onUnhandledAction","React","useContext","UnhandledActionContext","parentNavigationHelpers","NavigationContext","useMemo","dispatch","op","action","handled","actions","actionCreators","CommonActions","helpers","Object","keys","reduce","acc","name","navigationHelpers","emit","isFocused","canGoBack","state","getStateForAction","goBack","routeNames","routeParamList","routeGetIdList","getId","getParent","undefined","current"],"sourceRoot":"../../src","sources":["useNavigationHelpers.tsx"],"mappings":";;;;;;AAAA;AAOA;AAEA;AACA;AACA;AAA8D;AAAA;AAAA;AAG9D;AACA;AACAA,wBAAiB;AAUjB;AACA;AACA;AACA;AACe,SAASC,oBAAoB,OAWjB;EAAA,IANzB;IACAC,EAAE,EAAEC,WAAW;IACfC,QAAQ;IACRC,QAAQ;IACRC,OAAO;IACPC;EACsB,CAAC;EACvB,MAAMC,iBAAiB,GAAGC,KAAK,CAACC,UAAU,CAACC,+BAAsB,CAAC;EAClE,MAAMC,uBAAuB,GAAGH,KAAK,CAACC,UAAU,CAACG,0BAAiB,CAAC;EAEnE,OAAOJ,KAAK,CAACK,OAAO,CAAC,MAAM;IACzB,MAAMC,QAAQ,GAAIC,EAAuC,IAAK;MAC5D,MAAMC,MAAM,GAAG,OAAOD,EAAE,KAAK,UAAU,GAAGA,EAAE,CAACX,QAAQ,EAAE,CAAC,GAAGW,EAAE;MAE7D,MAAME,OAAO,GAAGd,QAAQ,CAACa,MAAM,CAAC;MAEhC,IAAI,CAACC,OAAO,EAAE;QACZV,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAGS,MAAM,CAAC;MAC7B;IACF,CAAC;IAED,MAAME,OAAO,GAAG;MACd,GAAGZ,MAAM,CAACa,cAAc;MACxB,GAAGC;IACL,CAAC;IAED,MAAMC,OAAO,GAAGC,MAAM,CAACC,IAAI,CAACL,OAAO,CAAC,CAACM,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAK;MACzD;MACAD,GAAG,CAACC,IAAI,CAAC,GAAG;QAAA,OAAkBZ,QAAQ,CAACI,OAAO,CAACQ,IAAI,CAAC,CAAC,YAAO,CAAC,CAAC;MAAA;MAC9D,OAAOD,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAkB;IAEvB,MAAME,iBAAiB,GAAG;MACxB,GAAGhB,uBAAuB;MAC1B,GAAGU,OAAO;MACVP,QAAQ;MACRc,IAAI,EAAEvB,OAAO,CAACuB,IAAI;MAClBC,SAAS,EAAElB,uBAAuB,GAC9BA,uBAAuB,CAACkB,SAAS,GACjC,MAAM,IAAI;MACdC,SAAS,EAAE,MAAM;QACf,MAAMC,KAAK,GAAG3B,QAAQ,EAAE;QAExB,OACEE,MAAM,CAAC0B,iBAAiB,CAACD,KAAK,EAAEX,sBAAa,CAACa,MAAM,EAAE,EAAY;UAChEC,UAAU,EAAEH,KAAK,CAACG,UAAU;UAC5BC,cAAc,EAAE,CAAC,CAAC;UAClBC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,KAAK,IAAI,KACXzB,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAEmB,SAAS,EAAE,KACpC,KAAK;MAET,CAAC;MACDO,KAAK,EAAE,MAAMnC,WAAW;MACxBoC,SAAS,EAAGrC,EAAW,IAAK;QAC1B,IAAIA,EAAE,KAAKsC,SAAS,EAAE;UACpB,IAAIC,OAAO,GAAGb,iBAAiB;UAE/B,OAAOa,OAAO,IAAIvC,EAAE,KAAKuC,OAAO,CAACH,KAAK,EAAE,EAAE;YACxCG,OAAO,GAAGA,OAAO,CAACF,SAAS,EAAE;UAC/B;UAEA,OAAOE,OAAO;QAChB;QAEA,OAAO7B,uBAAuB;MAChC,CAAC;MACDP;IACF,CAA+D;IAE/D,OAAOuB,iBAAiB;EAC1B,CAAC,EAAE,CACDzB,WAAW,EACXG,OAAO,CAACuB,IAAI,EACZxB,QAAQ,EACRD,QAAQ,EACRI,iBAAiB,EACjBI,uBAAuB,EACvBL,MAAM,CACP,CAAC;AACJ"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationState.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationState.js
new file mode 100644
index 00000000..edbebff1
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationState.js
@@ -0,0 +1,37 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useNavigationState;
+var React = _interopRequireWildcard(require("react"));
+var _useNavigation = _interopRequireDefault(require("./useNavigation"));
+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; }
+/**
+ * Hook to get a value from the current navigation state using a selector.
+ *
+ * @param selector Selector function to get a value from the state.
+ */
+function useNavigationState(selector) {
+ const navigation = (0, _useNavigation.default)();
+
+ // We don't care about the state value, we run the selector again at the end
+ // The state is only to make sure that there's a re-render when we have a new value
+ const [, setResult] = React.useState(() => selector(navigation.getState()));
+
+ // We store the selector in a ref to avoid re-subscribing listeners every render
+ const selectorRef = React.useRef(selector);
+ React.useEffect(() => {
+ selectorRef.current = selector;
+ });
+ React.useEffect(() => {
+ const unsubscribe = navigation.addListener('state', e => {
+ setResult(selectorRef.current(e.data.state));
+ });
+ return unsubscribe;
+ }, [navigation]);
+ return selector(navigation.getState());
+}
+//# sourceMappingURL=useNavigationState.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationState.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationState.js.map
new file mode 100644
index 00000000..c2048191
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useNavigationState.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useNavigationState","selector","navigation","useNavigation","setResult","React","useState","getState","selectorRef","useRef","useEffect","current","unsubscribe","addListener","e","data","state"],"sourceRoot":"../../src","sources":["useNavigationState.tsx"],"mappings":";;;;;;AACA;AAGA;AAA4C;AAAA;AAAA;AAM5C;AACA;AACA;AACA;AACA;AACe,SAASA,kBAAkB,CACxCC,QAAgC,EAC7B;EACH,MAAMC,UAAU,GAAG,IAAAC,sBAAa,GAA6B;;EAE7D;EACA;EACA,MAAM,GAAGC,SAAS,CAAC,GAAGC,KAAK,CAACC,QAAQ,CAAC,MAAML,QAAQ,CAACC,UAAU,CAACK,QAAQ,EAAE,CAAC,CAAC;;EAE3E;EACA,MAAMC,WAAW,GAAGH,KAAK,CAACI,MAAM,CAACR,QAAQ,CAAC;EAE1CI,KAAK,CAACK,SAAS,CAAC,MAAM;IACpBF,WAAW,CAACG,OAAO,GAAGV,QAAQ;EAChC,CAAC,CAAC;EAEFI,KAAK,CAACK,SAAS,CAAC,MAAM;IACpB,MAAME,WAAW,GAAGV,UAAU,CAACW,WAAW,CAAC,OAAO,EAAGC,CAAC,IAAK;MACzDV,SAAS,CAACI,WAAW,CAACG,OAAO,CAACG,CAAC,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAOJ,WAAW;EACpB,CAAC,EAAE,CAACV,UAAU,CAAC,CAAC;EAEhB,OAAOD,QAAQ,CAACC,UAAU,CAACK,QAAQ,EAAE,CAAC;AACxC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnAction.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnAction.js
new file mode 100644
index 00000000..958b6ca2
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnAction.js
@@ -0,0 +1,103 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useOnAction;
+var React = _interopRequireWildcard(require("react"));
+var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
+var _useOnPreventRemove = _interopRequireWildcard(require("./useOnPreventRemove"));
+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; }
+/**
+ * Hook to handle actions for a navigator, including state updates and bubbling.
+ *
+ * Bubbling an action is achieved in 2 ways:
+ * 1. To bubble action to parent, we expose the action handler in context and then access the parent context
+ * 2. To bubble action to child, child adds event listeners subscribing to actions from parent
+ *
+ * When the action handler handles as action, it returns `true`, otherwise `false`.
+ */
+function useOnAction(_ref) {
+ let {
+ router,
+ getState,
+ setState,
+ key,
+ actionListeners,
+ beforeRemoveListeners,
+ routerConfigOptions,
+ emitter
+ } = _ref;
+ const {
+ onAction: onActionParent,
+ onRouteFocus: onRouteFocusParent,
+ addListener: addListenerParent,
+ onDispatchAction
+ } = React.useContext(_NavigationBuilderContext.default);
+ const routerConfigOptionsRef = React.useRef(routerConfigOptions);
+ React.useEffect(() => {
+ routerConfigOptionsRef.current = routerConfigOptions;
+ });
+ const onAction = React.useCallback(function (action) {
+ let visitedNavigators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();
+ const state = getState();
+
+ // Since actions can bubble both up and down, they could come to the same navigator again
+ // We keep track of navigators which have already tried to handle the action and return if it's already visited
+ if (visitedNavigators.has(state.key)) {
+ return false;
+ }
+ visitedNavigators.add(state.key);
+ if (typeof action.target !== 'string' || action.target === state.key) {
+ let result = router.getStateForAction(state, action, routerConfigOptionsRef.current);
+
+ // If a target is specified and set to current navigator, the action shouldn't bubble
+ // So instead of `null`, we use the state object for such cases to signal that action was handled
+ result = result === null && action.target === state.key ? state : result;
+ if (result !== null) {
+ onDispatchAction(action, state === result);
+ if (state !== result) {
+ const isPrevented = (0, _useOnPreventRemove.shouldPreventRemove)(emitter, beforeRemoveListeners, state.routes, result.routes, action);
+ if (isPrevented) {
+ return true;
+ }
+ setState(result);
+ }
+ if (onRouteFocusParent !== undefined) {
+ // Some actions such as `NAVIGATE` also want to bring the navigated route to focus in the whole tree
+ // This means we need to focus all of the parent navigators of this navigator as well
+ const shouldFocus = router.shouldActionChangeFocus(action);
+ if (shouldFocus && key !== undefined) {
+ onRouteFocusParent(key);
+ }
+ }
+ return true;
+ }
+ }
+ if (onActionParent !== undefined) {
+ // Bubble action to the parent if the current navigator didn't handle it
+ if (onActionParent(action, visitedNavigators)) {
+ return true;
+ }
+ }
+
+ // If the action wasn't handled by current navigator or a parent navigator, let children handle it
+ for (let i = actionListeners.length - 1; i >= 0; i--) {
+ const listener = actionListeners[i];
+ if (listener(action, visitedNavigators)) {
+ return true;
+ }
+ }
+ return false;
+ }, [actionListeners, beforeRemoveListeners, emitter, getState, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState]);
+ (0, _useOnPreventRemove.default)({
+ getState,
+ emitter,
+ beforeRemoveListeners
+ });
+ React.useEffect(() => addListenerParent === null || addListenerParent === void 0 ? void 0 : addListenerParent('action', onAction), [addListenerParent, onAction]);
+ return onAction;
+}
+//# sourceMappingURL=useOnAction.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnAction.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnAction.js.map
new file mode 100644
index 00000000..8dc3f129
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnAction.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","React","useContext","NavigationBuilderContext","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","shouldPreventRemove","routes","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener","useOnPreventRemove"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":";;;;;;AAOA;AAEA;AAMA;AAA+E;AAAA;AAAA;AAa/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,WAAW,OASvB;EAAA,IATwB;IAClCC,MAAM;IACNC,QAAQ;IACRC,QAAQ;IACRC,GAAG;IACHC,eAAe;IACfC,qBAAqB;IACrBC,mBAAmB;IACnBC;EACO,CAAC;EACR,MAAM;IACJC,QAAQ,EAAEC,cAAc;IACxBC,YAAY,EAAEC,kBAAkB;IAChCC,WAAW,EAAEC,iBAAiB;IAC9BC;EACF,CAAC,GAAGC,KAAK,CAACC,UAAU,CAACC,iCAAwB,CAAC;EAE9C,MAAMC,sBAAsB,GAC1BH,KAAK,CAACI,MAAM,CAAsBb,mBAAmB,CAAC;EAExDS,KAAK,CAACK,SAAS,CAAC,MAAM;IACpBF,sBAAsB,CAACG,OAAO,GAAGf,mBAAmB;EACtD,CAAC,CAAC;EAEF,MAAME,QAAQ,GAAGO,KAAK,CAACO,WAAW,CAChC,UACEC,MAAwB,EAErB;IAAA,IADHC,iBAA8B,uEAAG,IAAIC,GAAG,EAAU;IAElD,MAAMC,KAAK,GAAGzB,QAAQ,EAAE;;IAExB;IACA;IACA,IAAIuB,iBAAiB,CAACG,GAAG,CAACD,KAAK,CAACvB,GAAG,CAAC,EAAE;MACpC,OAAO,KAAK;IACd;IAEAqB,iBAAiB,CAACI,GAAG,CAACF,KAAK,CAACvB,GAAG,CAAC;IAEhC,IAAI,OAAOoB,MAAM,CAACM,MAAM,KAAK,QAAQ,IAAIN,MAAM,CAACM,MAAM,KAAKH,KAAK,CAACvB,GAAG,EAAE;MACpE,IAAI2B,MAAM,GAAG9B,MAAM,CAAC+B,iBAAiB,CACnCL,KAAK,EACLH,MAAM,EACNL,sBAAsB,CAACG,OAAO,CAC/B;;MAED;MACA;MACAS,MAAM,GACJA,MAAM,KAAK,IAAI,IAAIP,MAAM,CAACM,MAAM,KAAKH,KAAK,CAACvB,GAAG,GAAGuB,KAAK,GAAGI,MAAM;MAEjE,IAAIA,MAAM,KAAK,IAAI,EAAE;QACnBhB,gBAAgB,CAACS,MAAM,EAAEG,KAAK,KAAKI,MAAM,CAAC;QAE1C,IAAIJ,KAAK,KAAKI,MAAM,EAAE;UACpB,MAAME,WAAW,GAAG,IAAAC,uCAAmB,EACrC1B,OAAO,EACPF,qBAAqB,EACrBqB,KAAK,CAACQ,MAAM,EACZJ,MAAM,CAACI,MAAM,EACbX,MAAM,CACP;UAED,IAAIS,WAAW,EAAE;YACf,OAAO,IAAI;UACb;UAEA9B,QAAQ,CAAC4B,MAAM,CAAC;QAClB;QAEA,IAAInB,kBAAkB,KAAKwB,SAAS,EAAE;UACpC;UACA;UACA,MAAMC,WAAW,GAAGpC,MAAM,CAACqC,uBAAuB,CAACd,MAAM,CAAC;UAE1D,IAAIa,WAAW,IAAIjC,GAAG,KAAKgC,SAAS,EAAE;YACpCxB,kBAAkB,CAACR,GAAG,CAAC;UACzB;QACF;QAEA,OAAO,IAAI;MACb;IACF;IAEA,IAAIM,cAAc,KAAK0B,SAAS,EAAE;MAChC;MACA,IAAI1B,cAAc,CAACc,MAAM,EAAEC,iBAAiB,CAAC,EAAE;QAC7C,OAAO,IAAI;MACb;IACF;;IAEA;IACA,KAAK,IAAIc,CAAC,GAAGlC,eAAe,CAACmC,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACpD,MAAME,QAAQ,GAAGpC,eAAe,CAACkC,CAAC,CAAC;MAEnC,IAAIE,QAAQ,CAACjB,MAAM,EAAEC,iBAAiB,CAAC,EAAE;QACvC,OAAO,IAAI;MACb;IACF;IAEA,OAAO,KAAK;EACd,CAAC,EACD,CACEpB,eAAe,EACfC,qBAAqB,EACrBE,OAAO,EACPN,QAAQ,EACRE,GAAG,EACHM,cAAc,EACdK,gBAAgB,EAChBH,kBAAkB,EAClBX,MAAM,EACNE,QAAQ,CACT,CACF;EAED,IAAAuC,2BAAkB,EAAC;IACjBxC,QAAQ;IACRM,OAAO;IACPF;EACF,CAAC,CAAC;EAEFU,KAAK,CAACK,SAAS,CACb,MAAMP,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAG,QAAQ,EAAEL,QAAQ,CAAC,EAC7C,CAACK,iBAAiB,EAAEL,QAAQ,CAAC,CAC9B;EAED,OAAOA,QAAQ;AACjB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnGetState.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnGetState.js
new file mode 100644
index 00000000..294fc8ab
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnGetState.js
@@ -0,0 +1,51 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useOnGetState;
+var React = _interopRequireWildcard(require("react"));
+var _isArrayEqual = _interopRequireDefault(require("./isArrayEqual"));
+var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
+var _NavigationRouteContext = _interopRequireDefault(require("./NavigationRouteContext"));
+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 useOnGetState(_ref) {
+ let {
+ getState,
+ getStateListeners
+ } = _ref;
+ const {
+ addKeyedListener
+ } = React.useContext(_NavigationBuilderContext.default);
+ const route = React.useContext(_NavigationRouteContext.default);
+ const key = route ? route.key : 'root';
+ const getRehydratedState = React.useCallback(() => {
+ const state = getState();
+
+ // Avoid returning new route objects if we don't need to
+ const routes = state.routes.map(route => {
+ var _getStateListeners$ro;
+ const childState = (_getStateListeners$ro = getStateListeners[route.key]) === null || _getStateListeners$ro === void 0 ? void 0 : _getStateListeners$ro.call(getStateListeners);
+ if (route.state === childState) {
+ return route;
+ }
+ return {
+ ...route,
+ state: childState
+ };
+ });
+ if ((0, _isArrayEqual.default)(state.routes, routes)) {
+ return state;
+ }
+ return {
+ ...state,
+ routes
+ };
+ }, [getState, getStateListeners]);
+ React.useEffect(() => {
+ return addKeyedListener === null || addKeyedListener === void 0 ? void 0 : addKeyedListener('getState', key, getRehydratedState);
+ }, [addKeyedListener, getRehydratedState, key]);
+}
+//# sourceMappingURL=useOnGetState.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnGetState.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnGetState.js.map
new file mode 100644
index 00000000..eba24edc
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnGetState.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useOnGetState","getState","getStateListeners","addKeyedListener","React","useContext","NavigationBuilderContext","route","NavigationRouteContext","key","getRehydratedState","useCallback","state","routes","map","childState","isArrayEqual","useEffect"],"sourceRoot":"../../src","sources":["useOnGetState.tsx"],"mappings":";;;;;;AACA;AAEA;AACA;AAGA;AAA8D;AAAA;AAAA;AAO/C,SAASA,aAAa,OAGzB;EAAA,IAH0B;IACpCC,QAAQ;IACRC;EACO,CAAC;EACR,MAAM;IAAEC;EAAiB,CAAC,GAAGC,KAAK,CAACC,UAAU,CAACC,iCAAwB,CAAC;EACvE,MAAMC,KAAK,GAAGH,KAAK,CAACC,UAAU,CAACG,+BAAsB,CAAC;EACtD,MAAMC,GAAG,GAAGF,KAAK,GAAGA,KAAK,CAACE,GAAG,GAAG,MAAM;EAEtC,MAAMC,kBAAkB,GAAGN,KAAK,CAACO,WAAW,CAAC,MAAM;IACjD,MAAMC,KAAK,GAAGX,QAAQ,EAAE;;IAExB;IACA,MAAMY,MAAM,GAAGD,KAAK,CAACC,MAAM,CAACC,GAAG,CAAEP,KAAK,IAAK;MAAA;MACzC,MAAMQ,UAAU,4BAAGb,iBAAiB,CAACK,KAAK,CAACE,GAAG,CAAC,0DAA5B,2BAAAP,iBAAiB,CAAe;MAEnD,IAAIK,KAAK,CAACK,KAAK,KAAKG,UAAU,EAAE;QAC9B,OAAOR,KAAK;MACd;MAEA,OAAO;QAAE,GAAGA,KAAK;QAAEK,KAAK,EAAEG;MAAW,CAAC;IACxC,CAAC,CAAC;IAEF,IAAI,IAAAC,qBAAY,EAACJ,KAAK,CAACC,MAAM,EAAEA,MAAM,CAAC,EAAE;MACtC,OAAOD,KAAK;IACd;IAEA,OAAO;MAAE,GAAGA,KAAK;MAAEC;IAAO,CAAC;EAC7B,CAAC,EAAE,CAACZ,QAAQ,EAAEC,iBAAiB,CAAC,CAAC;EAEjCE,KAAK,CAACa,SAAS,CAAC,MAAM;IACpB,OAAOd,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,UAAU,EAAEM,GAAG,EAAEC,kBAAkB,CAAC;EAChE,CAAC,EAAE,CAACP,gBAAgB,EAAEO,kBAAkB,EAAED,GAAG,CAAC,CAAC;AACjD"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnPreventRemove.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnPreventRemove.js
new file mode 100644
index 00000000..cdeee69c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnPreventRemove.js
@@ -0,0 +1,75 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useOnPreventRemove;
+exports.shouldPreventRemove = void 0;
+var React = _interopRequireWildcard(require("react"));
+var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
+var _NavigationRouteContext = _interopRequireDefault(require("./NavigationRouteContext"));
+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; }
+const VISITED_ROUTE_KEYS = Symbol('VISITED_ROUTE_KEYS');
+const shouldPreventRemove = (emitter, beforeRemoveListeners, currentRoutes, nextRoutes, action) => {
+ const nextRouteKeys = nextRoutes.map(route => route.key);
+
+ // Call these in reverse order so last screens handle the event first
+ const removedRoutes = currentRoutes.filter(route => !nextRouteKeys.includes(route.key)).reverse();
+ const visitedRouteKeys =
+ // @ts-expect-error: add this property to mark that we've already emitted this action
+ action[VISITED_ROUTE_KEYS] ?? new Set();
+ const beforeRemoveAction = {
+ ...action,
+ [VISITED_ROUTE_KEYS]: visitedRouteKeys
+ };
+ for (const route of removedRoutes) {
+ var _beforeRemoveListener;
+ if (visitedRouteKeys.has(route.key)) {
+ // Skip if we've already emitted this action for this screen
+ continue;
+ }
+
+ // First, we need to check if any child screens want to prevent it
+ const isPrevented = (_beforeRemoveListener = beforeRemoveListeners[route.key]) === null || _beforeRemoveListener === void 0 ? void 0 : _beforeRemoveListener.call(beforeRemoveListeners, beforeRemoveAction);
+ if (isPrevented) {
+ return true;
+ }
+ visitedRouteKeys.add(route.key);
+ const event = emitter.emit({
+ type: 'beforeRemove',
+ target: route.key,
+ data: {
+ action: beforeRemoveAction
+ },
+ canPreventDefault: true
+ });
+ if (event.defaultPrevented) {
+ return true;
+ }
+ }
+ return false;
+};
+exports.shouldPreventRemove = shouldPreventRemove;
+function useOnPreventRemove(_ref) {
+ let {
+ getState,
+ emitter,
+ beforeRemoveListeners
+ } = _ref;
+ const {
+ addKeyedListener
+ } = React.useContext(_NavigationBuilderContext.default);
+ const route = React.useContext(_NavigationRouteContext.default);
+ const routeKey = route === null || route === void 0 ? void 0 : route.key;
+ React.useEffect(() => {
+ if (routeKey) {
+ return addKeyedListener === null || addKeyedListener === void 0 ? void 0 : addKeyedListener('beforeRemove', routeKey, action => {
+ const state = getState();
+ return shouldPreventRemove(emitter, beforeRemoveListeners, state.routes, [], action);
+ });
+ }
+ }, [addKeyedListener, beforeRemoveListeners, emitter, getState, routeKey]);
+}
+//# sourceMappingURL=useOnPreventRemove.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnPreventRemove.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnPreventRemove.js.map
new file mode 100644
index 00000000..04048959
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnPreventRemove.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","nextRouteKeys","map","route","key","removedRoutes","filter","includes","reverse","visitedRouteKeys","Set","beforeRemoveAction","has","isPrevented","add","event","emit","type","target","data","canPreventDefault","defaultPrevented","useOnPreventRemove","getState","addKeyedListener","React","useContext","NavigationBuilderContext","NavigationRouteContext","routeKey","useEffect","state","routes"],"sourceRoot":"../../src","sources":["useOnPreventRemove.tsx"],"mappings":";;;;;;;AAIA;AAEA;AAGA;AAA8D;AAAA;AAAA;AAU9D,MAAMA,kBAAkB,GAAGC,MAAM,CAAC,oBAAoB,CAAC;AAEhD,MAAMC,mBAAmB,GAAG,CACjCC,OAAkD,EAClDC,qBAA4E,EAC5EC,aAAgC,EAChCC,UAA0C,EAC1CC,MAAwB,KACrB;EACH,MAAMC,aAAa,GAAGF,UAAU,CAACG,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACC,GAAG,CAAC;;EAE1D;EACA,MAAMC,aAAa,GAAGP,aAAa,CAChCQ,MAAM,CAAEH,KAAK,IAAK,CAACF,aAAa,CAACM,QAAQ,CAACJ,KAAK,CAACC,GAAG,CAAC,CAAC,CACrDI,OAAO,EAAE;EAEZ,MAAMC,gBAA6B;EACjC;EACAT,MAAM,CAACP,kBAAkB,CAAC,IAAI,IAAIiB,GAAG,EAAU;EAEjD,MAAMC,kBAAkB,GAAG;IACzB,GAAGX,MAAM;IACT,CAACP,kBAAkB,GAAGgB;EACxB,CAAC;EAED,KAAK,MAAMN,KAAK,IAAIE,aAAa,EAAE;IAAA;IACjC,IAAII,gBAAgB,CAACG,GAAG,CAACT,KAAK,CAACC,GAAG,CAAC,EAAE;MACnC;MACA;IACF;;IAEA;IACA,MAAMS,WAAW,4BAAGhB,qBAAqB,CAACM,KAAK,CAACC,GAAG,CAAC,0DAAhC,2BAAAP,qBAAqB,EAAcc,kBAAkB,CAAC;IAE1E,IAAIE,WAAW,EAAE;MACf,OAAO,IAAI;IACb;IAEAJ,gBAAgB,CAACK,GAAG,CAACX,KAAK,CAACC,GAAG,CAAC;IAE/B,MAAMW,KAAK,GAAGnB,OAAO,CAACoB,IAAI,CAAC;MACzBC,IAAI,EAAE,cAAc;MACpBC,MAAM,EAAEf,KAAK,CAACC,GAAG;MACjBe,IAAI,EAAE;QAAEnB,MAAM,EAAEW;MAAmB,CAAC;MACpCS,iBAAiB,EAAE;IACrB,CAAC,CAAC;IAEF,IAAIL,KAAK,CAACM,gBAAgB,EAAE;MAC1B,OAAO,IAAI;IACb;EACF;EAEA,OAAO,KAAK;AACd,CAAC;AAAC;AAEa,SAASC,kBAAkB,OAI9B;EAAA,IAJ+B;IACzCC,QAAQ;IACR3B,OAAO;IACPC;EACO,CAAC;EACR,MAAM;IAAE2B;EAAiB,CAAC,GAAGC,KAAK,CAACC,UAAU,CAACC,iCAAwB,CAAC;EACvE,MAAMxB,KAAK,GAAGsB,KAAK,CAACC,UAAU,CAACE,+BAAsB,CAAC;EACtD,MAAMC,QAAQ,GAAG1B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,GAAG;EAE3BqB,KAAK,CAACK,SAAS,CAAC,MAAM;IACpB,IAAID,QAAQ,EAAE;MACZ,OAAOL,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,cAAc,EAAEK,QAAQ,EAAG7B,MAAM,IAAK;QAC9D,MAAM+B,KAAK,GAAGR,QAAQ,EAAE;QAExB,OAAO5B,mBAAmB,CACxBC,OAAO,EACPC,qBAAqB,EACrBkC,KAAK,CAACC,MAAM,EACZ,EAAE,EACFhC,MAAM,CACP;MACH,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACwB,gBAAgB,EAAE3B,qBAAqB,EAAED,OAAO,EAAE2B,QAAQ,EAAEM,QAAQ,CAAC,CAAC;AAC5E"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnRouteFocus.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnRouteFocus.js
new file mode 100644
index 00000000..dfa5db70
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnRouteFocus.js
@@ -0,0 +1,38 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useOnRouteFocus;
+var React = _interopRequireWildcard(require("react"));
+var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
+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; }
+/**
+ * Hook to handle focus actions for a route.
+ * Focus action needs to be treated specially, coz when a nested route is focused,
+ * the parent navigators also needs to be focused.
+ */
+function useOnRouteFocus(_ref) {
+ let {
+ router,
+ getState,
+ key: sourceRouteKey,
+ setState
+ } = _ref;
+ const {
+ onRouteFocus: onRouteFocusParent
+ } = React.useContext(_NavigationBuilderContext.default);
+ return React.useCallback(key => {
+ const state = getState();
+ const result = router.getStateForRouteFocus(state, key);
+ if (result !== state) {
+ setState(result);
+ }
+ if (onRouteFocusParent !== undefined && sourceRouteKey !== undefined) {
+ onRouteFocusParent(sourceRouteKey);
+ }
+ }, [getState, onRouteFocusParent, router, setState, sourceRouteKey]);
+}
+//# sourceMappingURL=useOnRouteFocus.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnRouteFocus.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnRouteFocus.js.map
new file mode 100644
index 00000000..713e4964
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOnRouteFocus.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useOnRouteFocus","router","getState","key","sourceRouteKey","setState","onRouteFocus","onRouteFocusParent","React","useContext","NavigationBuilderContext","useCallback","state","result","getStateForRouteFocus","undefined"],"sourceRoot":"../../src","sources":["useOnRouteFocus.tsx"],"mappings":";;;;;;AAKA;AAEA;AAAkE;AAAA;AAAA;AASlE;AACA;AACA;AACA;AACA;AACe,SAASA,eAAe,OAKnB;EAAA,IALqD;IACvEC,MAAM;IACNC,QAAQ;IACRC,GAAG,EAAEC,cAAc;IACnBC;EACe,CAAC;EAChB,MAAM;IAAEC,YAAY,EAAEC;EAAmB,CAAC,GAAGC,KAAK,CAACC,UAAU,CAC3DC,iCAAwB,CACzB;EAED,OAAOF,KAAK,CAACG,WAAW,CACrBR,GAAW,IAAK;IACf,MAAMS,KAAK,GAAGV,QAAQ,EAAE;IACxB,MAAMW,MAAM,GAAGZ,MAAM,CAACa,qBAAqB,CAACF,KAAK,EAAET,GAAG,CAAC;IAEvD,IAAIU,MAAM,KAAKD,KAAK,EAAE;MACpBP,QAAQ,CAACQ,MAAM,CAAC;IAClB;IAEA,IAAIN,kBAAkB,KAAKQ,SAAS,IAAIX,cAAc,KAAKW,SAAS,EAAE;MACpER,kBAAkB,CAACH,cAAc,CAAC;IACpC;EACF,CAAC,EACD,CAACF,QAAQ,EAAEK,kBAAkB,EAAEN,MAAM,EAAEI,QAAQ,EAAED,cAAc,CAAC,CACjE;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOptionsGetters.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOptionsGetters.js
new file mode 100644
index 00000000..3de27475
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOptionsGetters.js
@@ -0,0 +1,81 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useOptionsGetters;
+var React = _interopRequireWildcard(require("react"));
+var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
+var _NavigationStateContext = _interopRequireDefault(require("./NavigationStateContext"));
+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 useOptionsGetters(_ref) {
+ let {
+ key,
+ options,
+ navigation
+ } = _ref;
+ const optionsRef = React.useRef(options);
+ const optionsGettersFromChildRef = React.useRef({});
+ const {
+ onOptionsChange
+ } = React.useContext(_NavigationBuilderContext.default);
+ const {
+ addOptionsGetter: parentAddOptionsGetter
+ } = React.useContext(_NavigationStateContext.default);
+ const optionsChangeListener = React.useCallback(() => {
+ const isFocused = (navigation === null || navigation === void 0 ? void 0 : navigation.isFocused()) ?? true;
+ const hasChildren = Object.keys(optionsGettersFromChildRef.current).length;
+ if (isFocused && !hasChildren) {
+ onOptionsChange(optionsRef.current ?? {});
+ }
+ }, [navigation, onOptionsChange]);
+ React.useEffect(() => {
+ optionsRef.current = options;
+ optionsChangeListener();
+ return navigation === null || navigation === void 0 ? void 0 : navigation.addListener('focus', optionsChangeListener);
+ }, [navigation, options, optionsChangeListener]);
+ const getOptionsFromListener = React.useCallback(() => {
+ for (let key in optionsGettersFromChildRef.current) {
+ if (optionsGettersFromChildRef.current.hasOwnProperty(key)) {
+ var _optionsGettersFromCh, _optionsGettersFromCh2;
+ const result = (_optionsGettersFromCh = (_optionsGettersFromCh2 = optionsGettersFromChildRef.current)[key]) === null || _optionsGettersFromCh === void 0 ? void 0 : _optionsGettersFromCh.call(_optionsGettersFromCh2);
+
+ // null means unfocused route
+ if (result !== null) {
+ return result;
+ }
+ }
+ }
+ return null;
+ }, []);
+ const getCurrentOptions = React.useCallback(() => {
+ const isFocused = (navigation === null || navigation === void 0 ? void 0 : navigation.isFocused()) ?? true;
+ if (!isFocused) {
+ return null;
+ }
+ const optionsFromListener = getOptionsFromListener();
+ if (optionsFromListener !== null) {
+ return optionsFromListener;
+ }
+ return optionsRef.current;
+ }, [navigation, getOptionsFromListener]);
+ React.useEffect(() => {
+ return parentAddOptionsGetter === null || parentAddOptionsGetter === void 0 ? void 0 : parentAddOptionsGetter(key, getCurrentOptions);
+ }, [getCurrentOptions, parentAddOptionsGetter, key]);
+ const addOptionsGetter = React.useCallback((key, getter) => {
+ optionsGettersFromChildRef.current[key] = getter;
+ optionsChangeListener();
+ return () => {
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete optionsGettersFromChildRef.current[key];
+ optionsChangeListener();
+ };
+ }, [optionsChangeListener]);
+ return {
+ addOptionsGetter,
+ getCurrentOptions
+ };
+}
+//# sourceMappingURL=useOptionsGetters.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOptionsGetters.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOptionsGetters.js.map
new file mode 100644
index 00000000..5657b6e8
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useOptionsGetters.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useOptionsGetters","key","options","navigation","optionsRef","React","useRef","optionsGettersFromChildRef","onOptionsChange","useContext","NavigationBuilderContext","addOptionsGetter","parentAddOptionsGetter","NavigationStateContext","optionsChangeListener","useCallback","isFocused","hasChildren","Object","keys","current","length","useEffect","addListener","getOptionsFromListener","hasOwnProperty","result","getCurrentOptions","optionsFromListener","getter"],"sourceRoot":"../../src","sources":["useOptionsGetters.tsx"],"mappings":";;;;;;AACA;AAEA;AACA;AAA8D;AAAA;AAAA;AAS/C,SAASA,iBAAiB,OAI7B;EAAA,IAJ8B;IACxCC,GAAG;IACHC,OAAO;IACPC;EACO,CAAC;EACR,MAAMC,UAAU,GAAGC,KAAK,CAACC,MAAM,CAAqBJ,OAAO,CAAC;EAC5D,MAAMK,0BAA0B,GAAGF,KAAK,CAACC,MAAM,CAE7C,CAAC,CAAC,CAAC;EAEL,MAAM;IAAEE;EAAgB,CAAC,GAAGH,KAAK,CAACI,UAAU,CAACC,iCAAwB,CAAC;EACtE,MAAM;IAAEC,gBAAgB,EAAEC;EAAuB,CAAC,GAAGP,KAAK,CAACI,UAAU,CACnEI,+BAAsB,CACvB;EAED,MAAMC,qBAAqB,GAAGT,KAAK,CAACU,WAAW,CAAC,MAAM;IACpD,MAAMC,SAAS,GAAG,CAAAb,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEa,SAAS,EAAE,KAAI,IAAI;IACjD,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAI,CAACZ,0BAA0B,CAACa,OAAO,CAAC,CAACC,MAAM;IAE1E,IAAIL,SAAS,IAAI,CAACC,WAAW,EAAE;MAC7BT,eAAe,CAACJ,UAAU,CAACgB,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3C;EACF,CAAC,EAAE,CAACjB,UAAU,EAAEK,eAAe,CAAC,CAAC;EAEjCH,KAAK,CAACiB,SAAS,CAAC,MAAM;IACpBlB,UAAU,CAACgB,OAAO,GAAGlB,OAAO;IAC5BY,qBAAqB,EAAE;IAEvB,OAAOX,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEoB,WAAW,CAAC,OAAO,EAAET,qBAAqB,CAAC;EAChE,CAAC,EAAE,CAACX,UAAU,EAAED,OAAO,EAAEY,qBAAqB,CAAC,CAAC;EAEhD,MAAMU,sBAAsB,GAAGnB,KAAK,CAACU,WAAW,CAAC,MAAM;IACrD,KAAK,IAAId,GAAG,IAAIM,0BAA0B,CAACa,OAAO,EAAE;MAClD,IAAIb,0BAA0B,CAACa,OAAO,CAACK,cAAc,CAACxB,GAAG,CAAC,EAAE;QAAA;QAC1D,MAAMyB,MAAM,4BAAG,0BAAAnB,0BAA0B,CAACa,OAAO,EAACnB,GAAG,CAAC,0DAAvC,kDAA2C;;QAE1D;QACA,IAAIyB,MAAM,KAAK,IAAI,EAAE;UACnB,OAAOA,MAAM;QACf;MACF;IACF;IAEA,OAAO,IAAI;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,iBAAiB,GAAGtB,KAAK,CAACU,WAAW,CAAC,MAAM;IAChD,MAAMC,SAAS,GAAG,CAAAb,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEa,SAAS,EAAE,KAAI,IAAI;IAEjD,IAAI,CAACA,SAAS,EAAE;MACd,OAAO,IAAI;IACb;IAEA,MAAMY,mBAAmB,GAAGJ,sBAAsB,EAAE;IAEpD,IAAII,mBAAmB,KAAK,IAAI,EAAE;MAChC,OAAOA,mBAAmB;IAC5B;IAEA,OAAOxB,UAAU,CAACgB,OAAO;EAC3B,CAAC,EAAE,CAACjB,UAAU,EAAEqB,sBAAsB,CAAC,CAAC;EAExCnB,KAAK,CAACiB,SAAS,CAAC,MAAM;IACpB,OAAOV,sBAAsB,aAAtBA,sBAAsB,uBAAtBA,sBAAsB,CAAGX,GAAG,EAAG0B,iBAAiB,CAAC;EAC1D,CAAC,EAAE,CAACA,iBAAiB,EAAEf,sBAAsB,EAAEX,GAAG,CAAC,CAAC;EAEpD,MAAMU,gBAAgB,GAAGN,KAAK,CAACU,WAAW,CACxC,CAACd,GAAW,EAAE4B,MAAuC,KAAK;IACxDtB,0BAA0B,CAACa,OAAO,CAACnB,GAAG,CAAC,GAAG4B,MAAM;IAChDf,qBAAqB,EAAE;IAEvB,OAAO,MAAM;MACX;MACA,OAAOP,0BAA0B,CAACa,OAAO,CAACnB,GAAG,CAAC;MAC9Ca,qBAAqB,EAAE;IACzB,CAAC;EACH,CAAC,EACD,CAACA,qBAAqB,CAAC,CACxB;EAED,OAAO;IACLH,gBAAgB;IAChBgB;EACF,CAAC;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemove.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemove.js
new file mode 100644
index 00000000..c8e9a8eb
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemove.js
@@ -0,0 +1,48 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = usePreventRemove;
+var _nonSecure = require("nanoid/non-secure");
+var React = _interopRequireWildcard(require("react"));
+var _useLatestCallback = _interopRequireDefault(require("use-latest-callback"));
+var _useNavigation = _interopRequireDefault(require("./useNavigation"));
+var _usePreventRemoveContext = _interopRequireDefault(require("./usePreventRemoveContext"));
+var _useRoute = _interopRequireDefault(require("./useRoute"));
+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; }
+/**
+ * Hook to prevent screen from being removed. Can be used to prevent users from leaving the screen.
+ *
+ * @param preventRemove Boolean indicating whether to prevent screen from being removed.
+ * @param callback Function which is executed when screen was prevented from being removed.
+ */
+function usePreventRemove(preventRemove, callback) {
+ const [id] = React.useState(() => (0, _nonSecure.nanoid)());
+ const navigation = (0, _useNavigation.default)();
+ const {
+ key: routeKey
+ } = (0, _useRoute.default)();
+ const {
+ setPreventRemove
+ } = (0, _usePreventRemoveContext.default)();
+ React.useEffect(() => {
+ setPreventRemove(id, routeKey, preventRemove);
+ return () => {
+ setPreventRemove(id, routeKey, false);
+ };
+ }, [setPreventRemove, id, routeKey, preventRemove]);
+ const beforeRemoveListener = (0, _useLatestCallback.default)(e => {
+ if (!preventRemove) {
+ return;
+ }
+ e.preventDefault();
+ callback({
+ data: e.data
+ });
+ });
+ React.useEffect(() => navigation === null || navigation === void 0 ? void 0 : navigation.addListener('beforeRemove', beforeRemoveListener), [navigation, beforeRemoveListener]);
+}
+//# sourceMappingURL=usePreventRemove.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemove.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemove.js.map
new file mode 100644
index 00000000..552c4630
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemove.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["usePreventRemove","preventRemove","callback","id","React","useState","nanoid","navigation","useNavigation","key","routeKey","useRoute","setPreventRemove","usePreventRemoveContext","useEffect","beforeRemoveListener","useLatestCallback","e","preventDefault","data","addListener"],"sourceRoot":"../../src","sources":["usePreventRemove.tsx"],"mappings":";;;;;;AACA;AACA;AACA;AAGA;AACA;AACA;AAAkC;AAAA;AAAA;AAElC;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,gBAAgB,CACtCC,aAAsB,EACtBC,QAAmE,EACnE;EACA,MAAM,CAACC,EAAE,CAAC,GAAGC,KAAK,CAACC,QAAQ,CAAC,MAAM,IAAAC,iBAAM,GAAE,CAAC;EAE3C,MAAMC,UAAU,GAAG,IAAAC,sBAAa,GAAE;EAClC,MAAM;IAAEC,GAAG,EAAEC;EAAS,CAAC,GAAG,IAAAC,iBAAQ,GAAE;EAEpC,MAAM;IAAEC;EAAiB,CAAC,GAAG,IAAAC,gCAAuB,GAAE;EAEtDT,KAAK,CAACU,SAAS,CAAC,MAAM;IACpBF,gBAAgB,CAACT,EAAE,EAAEO,QAAQ,EAAET,aAAa,CAAC;IAC7C,OAAO,MAAM;MACXW,gBAAgB,CAACT,EAAE,EAAEO,QAAQ,EAAE,KAAK,CAAC;IACvC,CAAC;EACH,CAAC,EAAE,CAACE,gBAAgB,EAAET,EAAE,EAAEO,QAAQ,EAAET,aAAa,CAAC,CAAC;EAEnD,MAAMc,oBAAoB,GAAG,IAAAC,0BAAiB,EAE3CC,CAAC,IAAK;IACP,IAAI,CAAChB,aAAa,EAAE;MAClB;IACF;IAEAgB,CAAC,CAACC,cAAc,EAAE;IAElBhB,QAAQ,CAAC;MAAEiB,IAAI,EAAEF,CAAC,CAACE;IAAK,CAAC,CAAC;EAC5B,CAAC,CAAC;EAEFf,KAAK,CAACU,SAAS,CACb,MAAMP,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEa,WAAW,CAAC,cAAc,EAAEL,oBAAoB,CAAC,EACnE,CAACR,UAAU,EAAEQ,oBAAoB,CAAC,CACnC;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemoveContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemoveContext.js
new file mode 100644
index 00000000..d38073ff
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemoveContext.js
@@ -0,0 +1,19 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = usePreventRemoveContext;
+var React = _interopRequireWildcard(require("react"));
+var _PreventRemoveContext = _interopRequireDefault(require("./PreventRemoveContext"));
+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 usePreventRemoveContext() {
+ const value = React.useContext(_PreventRemoveContext.default);
+ if (value == null) {
+ throw new Error("Couldn't find the prevent remove context. Is your component inside NavigationContent?");
+ }
+ return value;
+}
+//# sourceMappingURL=usePreventRemoveContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemoveContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemoveContext.js.map
new file mode 100644
index 00000000..f650aeea
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/usePreventRemoveContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["usePreventRemoveContext","value","React","useContext","PreventRemoveContext","Error"],"sourceRoot":"../../src","sources":["usePreventRemoveContext.tsx"],"mappings":";;;;;;AAAA;AAEA;AAA0D;AAAA;AAAA;AAE3C,SAASA,uBAAuB,GAAG;EAChD,MAAMC,KAAK,GAAGC,KAAK,CAACC,UAAU,CAACC,6BAAoB,CAAC;EAEpD,IAAIH,KAAK,IAAI,IAAI,EAAE;IACjB,MAAM,IAAII,KAAK,CACb,uFAAuF,CACxF;EACH;EAEA,OAAOJ,KAAK;AACd"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRegisterNavigator.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRegisterNavigator.js
new file mode 100644
index 00000000..f557b8a8
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRegisterNavigator.js
@@ -0,0 +1,32 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useRegisterNavigator;
+var _nonSecure = require("nanoid/non-secure");
+var React = _interopRequireWildcard(require("react"));
+var _EnsureSingleNavigator = require("./EnsureSingleNavigator");
+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; }
+/**
+ * Register a navigator in the parent context (either a navigation container or a screen).
+ * This is used to prevent multiple navigators under a single container or screen.
+ */
+function useRegisterNavigator() {
+ const [key] = React.useState(() => (0, _nonSecure.nanoid)());
+ const container = React.useContext(_EnsureSingleNavigator.SingleNavigatorContext);
+ if (container === undefined) {
+ throw new Error("Couldn't register the navigator. Have you wrapped your app with 'NavigationContainer'?\n\nThis can also happen if there are multiple copies of '@react-navigation' packages installed.");
+ }
+ React.useEffect(() => {
+ const {
+ register,
+ unregister
+ } = container;
+ register(key);
+ return () => unregister(key);
+ }, [container, key]);
+ return key;
+}
+//# sourceMappingURL=useRegisterNavigator.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRegisterNavigator.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRegisterNavigator.js.map
new file mode 100644
index 00000000..c9fff077
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRegisterNavigator.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useRegisterNavigator","key","React","useState","nanoid","container","useContext","SingleNavigatorContext","undefined","Error","useEffect","register","unregister"],"sourceRoot":"../../src","sources":["useRegisterNavigator.tsx"],"mappings":";;;;;;AAAA;AACA;AAEA;AAAiE;AAAA;AAEjE;AACA;AACA;AACA;AACe,SAASA,oBAAoB,GAAG;EAC7C,MAAM,CAACC,GAAG,CAAC,GAAGC,KAAK,CAACC,QAAQ,CAAC,MAAM,IAAAC,iBAAM,GAAE,CAAC;EAC5C,MAAMC,SAAS,GAAGH,KAAK,CAACI,UAAU,CAACC,6CAAsB,CAAC;EAE1D,IAAIF,SAAS,KAAKG,SAAS,EAAE;IAC3B,MAAM,IAAIC,KAAK,CACb,wLAAwL,CACzL;EACH;EAEAP,KAAK,CAACQ,SAAS,CAAC,MAAM;IACpB,MAAM;MAAEC,QAAQ;MAAEC;IAAW,CAAC,GAAGP,SAAS;IAE1CM,QAAQ,CAACV,GAAG,CAAC;IAEb,OAAO,MAAMW,UAAU,CAACX,GAAG,CAAC;EAC9B,CAAC,EAAE,CAACI,SAAS,EAAEJ,GAAG,CAAC,CAAC;EAEpB,OAAOA,GAAG;AACZ"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRoute.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRoute.js
new file mode 100644
index 00000000..fc5bd092
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRoute.js
@@ -0,0 +1,24 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useRoute;
+var React = _interopRequireWildcard(require("react"));
+var _NavigationRouteContext = _interopRequireDefault(require("./NavigationRouteContext"));
+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; }
+/**
+ * Hook to access the route prop of the parent screen anywhere.
+ *
+ * @returns Route prop of the parent screen.
+ */
+function useRoute() {
+ const route = React.useContext(_NavigationRouteContext.default);
+ if (route === undefined) {
+ throw new Error("Couldn't find a route object. Is your component inside a screen in a navigator?");
+ }
+ return route;
+}
+//# sourceMappingURL=useRoute.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRoute.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRoute.js.map
new file mode 100644
index 00000000..c9bf1061
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRoute.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["useRoute","route","React","useContext","NavigationRouteContext","undefined","Error"],"sourceRoot":"../../src","sources":["useRoute.tsx"],"mappings":";;;;;;AACA;AAEA;AAA8D;AAAA;AAAA;AAG9D;AACA;AACA;AACA;AACA;AACe,SAASA,QAAQ,GAA0C;EACxE,MAAMC,KAAK,GAAGC,KAAK,CAACC,UAAU,CAACC,+BAAsB,CAAC;EAEtD,IAAIH,KAAK,KAAKI,SAAS,EAAE;IACvB,MAAM,IAAIC,KAAK,CACb,iFAAiF,CAClF;EACH;EAEA,OAAOL,KAAK;AACd"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRouteCache.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRouteCache.js
new file mode 100644
index 00000000..752ee14d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRouteCache.js
@@ -0,0 +1,52 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.CHILD_STATE = void 0;
+exports.default = useRouteCache;
+var React = _interopRequireWildcard(require("react"));
+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; }
+/**
+ * Utilites such as `getFocusedRouteNameFromRoute` need to access state.
+ * So we need a way to suppress the warning for those use cases.
+ * This is fine since they are internal utilities and this is not public API.
+ */
+const CHILD_STATE = Symbol('CHILD_STATE');
+
+/**
+ * Hook to cache route props for each screen in the navigator.
+ * This lets add warnings and modifications to the route object but keep references between renders.
+ */
+exports.CHILD_STATE = CHILD_STATE;
+function useRouteCache(routes) {
+ // Cache object which holds route objects for each screen
+ const cache = React.useMemo(() => ({
+ current: new Map()
+ }), []);
+ if (process.env.NODE_ENV === 'production') {
+ // We don't want the overhead of creating extra maps every render in prod
+ return routes;
+ }
+ cache.current = routes.reduce((acc, route) => {
+ const previous = cache.current.get(route);
+ if (previous) {
+ // If a cached route object already exists, reuse it
+ acc.set(route, previous);
+ } else {
+ const {
+ state,
+ ...proxy
+ } = route;
+ Object.defineProperty(proxy, CHILD_STATE, {
+ enumerable: false,
+ value: state
+ });
+ acc.set(route, proxy);
+ }
+ return acc;
+ }, new Map());
+ return Array.from(cache.current.values());
+}
+//# sourceMappingURL=useRouteCache.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRouteCache.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRouteCache.js.map
new file mode 100644
index 00000000..f747f8ca
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useRouteCache.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["CHILD_STATE","Symbol","useRouteCache","routes","cache","React","useMemo","current","Map","process","env","NODE_ENV","reduce","acc","route","previous","get","set","state","proxy","Object","defineProperty","enumerable","value","Array","from","values"],"sourceRoot":"../../src","sources":["useRouteCache.tsx"],"mappings":";;;;;;;AAKA;AAA+B;AAAA;AAM/B;AACA;AACA;AACA;AACA;AACO,MAAMA,WAAW,GAAGC,MAAM,CAAC,aAAa,CAAC;;AAEhD;AACA;AACA;AACA;AAHA;AAIe,SAASC,aAAa,CACnCC,MAAuB,EACvB;EACA;EACA,MAAMC,KAAK,GAAGC,KAAK,CAACC,OAAO,CAAC,OAAO;IAAEC,OAAO,EAAE,IAAIC,GAAG;EAAiB,CAAC,CAAC,EAAE,EAAE,CAAC;EAE7E,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACzC;IACA,OAAOR,MAAM;EACf;EAEAC,KAAK,CAACG,OAAO,GAAGJ,MAAM,CAACS,MAAM,CAAC,CAACC,GAAG,EAAEC,KAAK,KAAK;IAC5C,MAAMC,QAAQ,GAAGX,KAAK,CAACG,OAAO,CAACS,GAAG,CAACF,KAAK,CAAC;IAEzC,IAAIC,QAAQ,EAAE;MACZ;MACAF,GAAG,CAACI,GAAG,CAACH,KAAK,EAAEC,QAAQ,CAAC;IAC1B,CAAC,MAAM;MACL,MAAM;QAAEG,KAAK;QAAE,GAAGC;MAAM,CAAC,GAAGL,KAAK;MAEjCM,MAAM,CAACC,cAAc,CAACF,KAAK,EAAEnB,WAAW,EAAE;QACxCsB,UAAU,EAAE,KAAK;QACjBC,KAAK,EAAEL;MACT,CAAC,CAAC;MAEFL,GAAG,CAACI,GAAG,CAACH,KAAK,EAAEK,KAAK,CAAC;IACvB;IAEA,OAAON,GAAG;EACZ,CAAC,EAAE,IAAIL,GAAG,EAAE,CAAe;EAE3B,OAAOgB,KAAK,CAACC,IAAI,CAACrB,KAAK,CAACG,OAAO,CAACmB,MAAM,EAAE,CAAC;AAC3C"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useScheduleUpdate.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useScheduleUpdate.js
new file mode 100644
index 00000000..93310e68
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useScheduleUpdate.js
@@ -0,0 +1,37 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ScheduleUpdateContext = void 0;
+exports.default = useScheduleUpdate;
+var React = _interopRequireWildcard(require("react"));
+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; }
+const MISSING_CONTEXT_ERROR = "Couldn't find a schedule context.";
+const ScheduleUpdateContext = /*#__PURE__*/React.createContext({
+ scheduleUpdate() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ },
+ flushUpdates() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ }
+});
+
+/**
+ * When screen config changes, we want to update the navigator in the same update phase.
+ * However, navigation state is in the root component and React won't let us update it from a child.
+ * This is a workaround for that, the scheduled update is stored in the ref without actually calling setState.
+ * It lets all subsequent updates access the latest state so it stays correct.
+ * Then we call setState during after the component updates.
+ */
+exports.ScheduleUpdateContext = ScheduleUpdateContext;
+function useScheduleUpdate(callback) {
+ const {
+ scheduleUpdate,
+ flushUpdates
+ } = React.useContext(ScheduleUpdateContext);
+ scheduleUpdate(callback);
+ React.useEffect(flushUpdates);
+}
+//# sourceMappingURL=useScheduleUpdate.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useScheduleUpdate.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useScheduleUpdate.js.map
new file mode 100644
index 00000000..7c5fd13e
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useScheduleUpdate.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["MISSING_CONTEXT_ERROR","ScheduleUpdateContext","React","createContext","scheduleUpdate","Error","flushUpdates","useScheduleUpdate","callback","useContext","useEffect"],"sourceRoot":"../../src","sources":["useScheduleUpdate.tsx"],"mappings":";;;;;;;AAAA;AAA+B;AAAA;AAE/B,MAAMA,qBAAqB,GAAG,mCAAmC;AAE1D,MAAMC,qBAAqB,gBAAGC,KAAK,CAACC,aAAa,CAGrD;EACDC,cAAc,GAAG;IACf,MAAM,IAAIC,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACDM,YAAY,GAAG;IACb,MAAM,IAAID,KAAK,CAACL,qBAAqB,CAAC;EACxC;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAOe,SAASO,iBAAiB,CAACC,QAAoB,EAAE;EAC9D,MAAM;IAAEJ,cAAc;IAAEE;EAAa,CAAC,GAAGJ,KAAK,CAACO,UAAU,CACvDR,qBAAqB,CACtB;EAEDG,cAAc,CAACI,QAAQ,CAAC;EAExBN,KAAK,CAACQ,SAAS,CAACJ,YAAY,CAAC;AAC/B"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useSyncState.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useSyncState.js
new file mode 100644
index 00000000..1b87d4fa
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useSyncState.js
@@ -0,0 +1,68 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = useSyncState;
+var React = _interopRequireWildcard(require("react"));
+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; }
+const UNINTIALIZED_STATE = {};
+
+/**
+ * This is definitely not compatible with concurrent mode, but we don't have a solution for sync state yet.
+ */
+function useSyncState(initialState) {
+ const stateRef = React.useRef(UNINTIALIZED_STATE);
+ const isSchedulingRef = React.useRef(false);
+ const isMountedRef = React.useRef(true);
+ React.useEffect(() => {
+ isMountedRef.current = true;
+ return () => {
+ isMountedRef.current = false;
+ };
+ }, []);
+ if (stateRef.current === UNINTIALIZED_STATE) {
+ stateRef.current =
+ // @ts-expect-error: initialState is a function, but TypeScript doesn't think so
+ typeof initialState === 'function' ? initialState() : initialState;
+ }
+ const [trackingState, setTrackingState] = React.useState(stateRef.current);
+ const getState = React.useCallback(() => stateRef.current, []);
+ const setState = React.useCallback(state => {
+ if (state === stateRef.current || !isMountedRef.current) {
+ return;
+ }
+ stateRef.current = state;
+ if (!isSchedulingRef.current) {
+ setTrackingState(state);
+ }
+ }, []);
+ const scheduleUpdate = React.useCallback(callback => {
+ isSchedulingRef.current = true;
+ try {
+ callback();
+ } finally {
+ isSchedulingRef.current = false;
+ }
+ }, []);
+ const flushUpdates = React.useCallback(() => {
+ if (!isMountedRef.current) {
+ return;
+ }
+
+ // Make sure that the tracking state is up-to-date.
+ // We call it unconditionally, but React should skip the update if state is unchanged.
+ setTrackingState(stateRef.current);
+ }, []);
+
+ // If we're rendering and the tracking state is out of date, update it immediately
+ // This will make sure that our updates are applied as early as possible.
+ if (trackingState !== stateRef.current) {
+ setTrackingState(stateRef.current);
+ }
+ const state = stateRef.current;
+ React.useDebugValue(state);
+ return [state, getState, setState, scheduleUpdate, flushUpdates];
+}
+//# sourceMappingURL=useSyncState.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useSyncState.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useSyncState.js.map
new file mode 100644
index 00000000..66236a7c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/useSyncState.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["UNINTIALIZED_STATE","useSyncState","initialState","stateRef","React","useRef","isSchedulingRef","isMountedRef","useEffect","current","trackingState","setTrackingState","useState","getState","useCallback","setState","state","scheduleUpdate","callback","flushUpdates","useDebugValue"],"sourceRoot":"../../src","sources":["useSyncState.tsx"],"mappings":";;;;;;AAAA;AAA+B;AAAA;AAE/B,MAAMA,kBAAkB,GAAG,CAAC,CAAC;;AAE7B;AACA;AACA;AACe,SAASC,YAAY,CAAIC,YAA4B,EAAE;EACpE,MAAMC,QAAQ,GAAGC,KAAK,CAACC,MAAM,CAAIL,kBAAkB,CAAQ;EAC3D,MAAMM,eAAe,GAAGF,KAAK,CAACC,MAAM,CAAC,KAAK,CAAC;EAC3C,MAAME,YAAY,GAAGH,KAAK,CAACC,MAAM,CAAC,IAAI,CAAC;EAEvCD,KAAK,CAACI,SAAS,CAAC,MAAM;IACpBD,YAAY,CAACE,OAAO,GAAG,IAAI;IAE3B,OAAO,MAAM;MACXF,YAAY,CAACE,OAAO,GAAG,KAAK;IAC9B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,IAAIN,QAAQ,CAACM,OAAO,KAAKT,kBAAkB,EAAE;IAC3CG,QAAQ,CAACM,OAAO;IACd;IACA,OAAOP,YAAY,KAAK,UAAU,GAAGA,YAAY,EAAE,GAAGA,YAAY;EACtE;EAEA,MAAM,CAACQ,aAAa,EAAEC,gBAAgB,CAAC,GAAGP,KAAK,CAACQ,QAAQ,CAACT,QAAQ,CAACM,OAAO,CAAC;EAE1E,MAAMI,QAAQ,GAAGT,KAAK,CAACU,WAAW,CAAC,MAAMX,QAAQ,CAACM,OAAO,EAAE,EAAE,CAAC;EAE9D,MAAMM,QAAQ,GAAGX,KAAK,CAACU,WAAW,CAAEE,KAAQ,IAAK;IAC/C,IAAIA,KAAK,KAAKb,QAAQ,CAACM,OAAO,IAAI,CAACF,YAAY,CAACE,OAAO,EAAE;MACvD;IACF;IAEAN,QAAQ,CAACM,OAAO,GAAGO,KAAK;IAExB,IAAI,CAACV,eAAe,CAACG,OAAO,EAAE;MAC5BE,gBAAgB,CAACK,KAAK,CAAC;IACzB;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,cAAc,GAAGb,KAAK,CAACU,WAAW,CAAEI,QAAoB,IAAK;IACjEZ,eAAe,CAACG,OAAO,GAAG,IAAI;IAE9B,IAAI;MACFS,QAAQ,EAAE;IACZ,CAAC,SAAS;MACRZ,eAAe,CAACG,OAAO,GAAG,KAAK;IACjC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMU,YAAY,GAAGf,KAAK,CAACU,WAAW,CAAC,MAAM;IAC3C,IAAI,CAACP,YAAY,CAACE,OAAO,EAAE;MACzB;IACF;;IAEA;IACA;IACAE,gBAAgB,CAACR,QAAQ,CAACM,OAAO,CAAC;EACpC,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA;EACA,IAAIC,aAAa,KAAKP,QAAQ,CAACM,OAAO,EAAE;IACtCE,gBAAgB,CAACR,QAAQ,CAACM,OAAO,CAAC;EACpC;EAEA,MAAMO,KAAK,GAAGb,QAAQ,CAACM,OAAO;EAE9BL,KAAK,CAACgB,aAAa,CAACJ,KAAK,CAAC;EAE1B,OAAO,CAACA,KAAK,EAAEH,QAAQ,EAAEE,QAAQ,EAAEE,cAAc,EAAEE,YAAY,CAAC;AAClE"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/validatePathConfig.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/validatePathConfig.js
new file mode 100644
index 00000000..717fb808
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/validatePathConfig.js
@@ -0,0 +1,27 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = validatePathConfig;
+const formatToList = items => items.map(key => `- ${key}`).join('\n');
+function validatePathConfig(config) {
+ let root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+ const validKeys = ['initialRouteName', 'screens'];
+ if (!root) {
+ validKeys.push('path', 'exact', 'stringify', 'parse');
+ }
+ const invalidKeys = Object.keys(config).filter(key => !validKeys.includes(key));
+ if (invalidKeys.length) {
+ throw new Error(`Found invalid properties in the configuration:\n${formatToList(invalidKeys)}\n\nDid you forget to specify them under a 'screens' property?\n\nYou can only specify the following properties:\n${formatToList(validKeys)}\n\nSee https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.`);
+ }
+ if (config.screens) {
+ Object.entries(config.screens).forEach(_ref => {
+ let [_, value] = _ref;
+ if (typeof value !== 'string') {
+ validatePathConfig(value, false);
+ }
+ });
+ }
+}
+//# sourceMappingURL=validatePathConfig.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/validatePathConfig.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/validatePathConfig.js.map
new file mode 100644
index 00000000..5c66eb5b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/commonjs/validatePathConfig.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["formatToList","items","map","key","join","validatePathConfig","config","root","validKeys","push","invalidKeys","Object","keys","filter","includes","length","Error","screens","entries","forEach","_","value"],"sourceRoot":"../../src","sources":["validatePathConfig.tsx"],"mappings":";;;;;;AAAA,MAAMA,YAAY,GAAIC,KAAe,IACnCA,KAAK,CAACC,GAAG,CAAEC,GAAG,IAAM,KAAIA,GAAI,EAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AAE5B,SAASC,kBAAkB,CAACC,MAAW,EAAe;EAAA,IAAbC,IAAI,uEAAG,IAAI;EACjE,MAAMC,SAAS,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC;EAEjD,IAAI,CAACD,IAAI,EAAE;IACTC,SAAS,CAACC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;EACvD;EAEA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAI,CAACN,MAAM,CAAC,CAACO,MAAM,CAC3CV,GAAG,IAAK,CAACK,SAAS,CAACM,QAAQ,CAACX,GAAG,CAAC,CAClC;EAED,IAAIO,WAAW,CAACK,MAAM,EAAE;IACtB,MAAM,IAAIC,KAAK,CACZ,mDAAkDhB,YAAY,CAC7DU,WAAW,CACX,qHAAoHV,YAAY,CAChIQ,SAAS,CACT,wHAAuH,CAC1H;EACH;EAEA,IAAIF,MAAM,CAACW,OAAO,EAAE;IAClBN,MAAM,CAACO,OAAO,CAACZ,MAAM,CAACW,OAAO,CAAC,CAACE,OAAO,CAAC,QAAgB;MAAA,IAAf,CAACC,CAAC,EAAEC,KAAK,CAAC;MAChD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QAC7BhB,kBAAkB,CAACgB,KAAK,EAAE,KAAK,CAAC;MAClC;IACF,CAAC,CAAC;EACJ;AACF"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/BaseNavigationContainer.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/BaseNavigationContainer.js
new file mode 100644
index 00000000..9d2bda18
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/BaseNavigationContainer.js
@@ -0,0 +1,335 @@
+import { CommonActions } from '@react-navigation/routers';
+import * as React from 'react';
+import checkDuplicateRouteNames from './checkDuplicateRouteNames';
+import checkSerializable from './checkSerializable';
+import { NOT_INITIALIZED_ERROR } from './createNavigationContainerRef';
+import EnsureSingleNavigator from './EnsureSingleNavigator';
+import findFocusedRoute from './findFocusedRoute';
+import NavigationBuilderContext from './NavigationBuilderContext';
+import NavigationContainerRefContext from './NavigationContainerRefContext';
+import NavigationContext from './NavigationContext';
+import NavigationRouteContext from './NavigationRouteContext';
+import NavigationStateContext from './NavigationStateContext';
+import UnhandledActionContext from './UnhandledActionContext';
+import useChildListeners from './useChildListeners';
+import useEventEmitter from './useEventEmitter';
+import useKeyedChildListeners from './useKeyedChildListeners';
+import useOptionsGetters from './useOptionsGetters';
+import { ScheduleUpdateContext } from './useScheduleUpdate';
+import useSyncState from './useSyncState';
+const serializableWarnings = [];
+const duplicateNameWarnings = [];
+
+/**
+ * Remove `key` and `routeNames` from the state objects recursively to get partial state.
+ *
+ * @param state Initial state object.
+ */
+const getPartialState = state => {
+ if (state === undefined) {
+ return;
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const {
+ key,
+ routeNames,
+ ...partialState
+ } = state;
+ return {
+ ...partialState,
+ stale: true,
+ routes: state.routes.map(route => {
+ if (route.state === undefined) {
+ return route;
+ }
+ return {
+ ...route,
+ state: getPartialState(route.state)
+ };
+ })
+ };
+};
+
+/**
+ * Container component which holds the navigation state.
+ * This should be rendered at the root wrapping the whole app.
+ *
+ * @param props.initialState Initial state object for the navigation tree.
+ * @param props.onStateChange Callback which is called with the latest navigation state when it changes.
+ * @param props.children Child elements to render the content.
+ * @param props.ref Ref object which refers to the navigation object containing helper methods.
+ */
+const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function BaseNavigationContainer(_ref, ref) {
+ let {
+ initialState,
+ onStateChange,
+ onUnhandledAction,
+ independent,
+ children
+ } = _ref;
+ const parent = React.useContext(NavigationStateContext);
+ if (!parent.isDefault && !independent) {
+ throw new Error("Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional, pass 'independent={true}' explicitly. Note that this will make the child navigators disconnected from the parent and you won't be able to navigate between them.");
+ }
+ const [state, getState, setState, scheduleUpdate, flushUpdates] = useSyncState(() => getPartialState(initialState == null ? undefined : initialState));
+ const isFirstMountRef = React.useRef(true);
+ const navigatorKeyRef = React.useRef();
+ const getKey = React.useCallback(() => navigatorKeyRef.current, []);
+ const setKey = React.useCallback(key => {
+ navigatorKeyRef.current = key;
+ }, []);
+ const {
+ listeners,
+ addListener
+ } = useChildListeners();
+ const {
+ keyedListeners,
+ addKeyedListener
+ } = useKeyedChildListeners();
+ const dispatch = React.useCallback(action => {
+ if (listeners.focus[0] == null) {
+ console.error(NOT_INITIALIZED_ERROR);
+ } else {
+ listeners.focus[0](navigation => navigation.dispatch(action));
+ }
+ }, [listeners.focus]);
+ const canGoBack = React.useCallback(() => {
+ if (listeners.focus[0] == null) {
+ return false;
+ }
+ const {
+ result,
+ handled
+ } = listeners.focus[0](navigation => navigation.canGoBack());
+ if (handled) {
+ return result;
+ } else {
+ return false;
+ }
+ }, [listeners.focus]);
+ const resetRoot = React.useCallback(state => {
+ var _keyedListeners$getSt, _keyedListeners$getSt2;
+ const target = (state === null || state === void 0 ? void 0 : state.key) ?? ((_keyedListeners$getSt = (_keyedListeners$getSt2 = keyedListeners.getState).root) === null || _keyedListeners$getSt === void 0 ? void 0 : _keyedListeners$getSt.call(_keyedListeners$getSt2).key);
+ if (target == null) {
+ console.error(NOT_INITIALIZED_ERROR);
+ } else {
+ listeners.focus[0](navigation => navigation.dispatch({
+ ...CommonActions.reset(state),
+ target
+ }));
+ }
+ }, [keyedListeners.getState, listeners.focus]);
+ const getRootState = React.useCallback(() => {
+ var _keyedListeners$getSt3, _keyedListeners$getSt4;
+ return (_keyedListeners$getSt3 = (_keyedListeners$getSt4 = keyedListeners.getState).root) === null || _keyedListeners$getSt3 === void 0 ? void 0 : _keyedListeners$getSt3.call(_keyedListeners$getSt4);
+ }, [keyedListeners.getState]);
+ const getCurrentRoute = React.useCallback(() => {
+ const state = getRootState();
+ if (state == null) {
+ return undefined;
+ }
+ const route = findFocusedRoute(state);
+ return route;
+ }, [getRootState]);
+ const emitter = useEventEmitter();
+ const {
+ addOptionsGetter,
+ getCurrentOptions
+ } = useOptionsGetters({});
+ const navigation = React.useMemo(() => ({
+ ...Object.keys(CommonActions).reduce((acc, name) => {
+ acc[name] = function () {
+ return (
+ // @ts-expect-error: this is ok
+ dispatch(CommonActions[name](...arguments))
+ );
+ };
+ return acc;
+ }, {}),
+ ...emitter.create('root'),
+ dispatch,
+ resetRoot,
+ isFocused: () => true,
+ canGoBack,
+ getParent: () => undefined,
+ getState: () => stateRef.current,
+ getRootState,
+ getCurrentRoute,
+ getCurrentOptions,
+ isReady: () => listeners.focus[0] != null
+ }), [canGoBack, dispatch, emitter, getCurrentOptions, getCurrentRoute, getRootState, listeners.focus, resetRoot]);
+ React.useImperativeHandle(ref, () => navigation, [navigation]);
+ const onDispatchAction = React.useCallback((action, noop) => {
+ emitter.emit({
+ type: '__unsafe_action__',
+ data: {
+ action,
+ noop,
+ stack: stackRef.current
+ }
+ });
+ }, [emitter]);
+ const lastEmittedOptionsRef = React.useRef();
+ const onOptionsChange = React.useCallback(options => {
+ if (lastEmittedOptionsRef.current === options) {
+ return;
+ }
+ lastEmittedOptionsRef.current = options;
+ emitter.emit({
+ type: 'options',
+ data: {
+ options
+ }
+ });
+ }, [emitter]);
+ const stackRef = React.useRef();
+ const builderContext = React.useMemo(() => ({
+ addListener,
+ addKeyedListener,
+ onDispatchAction,
+ onOptionsChange,
+ stackRef
+ }), [addListener, addKeyedListener, onDispatchAction, onOptionsChange]);
+ const scheduleContext = React.useMemo(() => ({
+ scheduleUpdate,
+ flushUpdates
+ }), [scheduleUpdate, flushUpdates]);
+ const isInitialRef = React.useRef(true);
+ const getIsInitial = React.useCallback(() => isInitialRef.current, []);
+ const context = React.useMemo(() => ({
+ state,
+ getState,
+ setState,
+ getKey,
+ setKey,
+ getIsInitial,
+ addOptionsGetter
+ }), [state, getState, setState, getKey, setKey, getIsInitial, addOptionsGetter]);
+ const onStateChangeRef = React.useRef(onStateChange);
+ const stateRef = React.useRef(state);
+ React.useEffect(() => {
+ isInitialRef.current = false;
+ onStateChangeRef.current = onStateChange;
+ stateRef.current = state;
+ });
+ React.useEffect(() => {
+ const hydratedState = getRootState();
+ if (process.env.NODE_ENV !== 'production') {
+ if (hydratedState !== undefined) {
+ const serializableResult = checkSerializable(hydratedState);
+ if (!serializableResult.serializable) {
+ const {
+ location,
+ reason
+ } = serializableResult;
+ let path = '';
+ let pointer = hydratedState;
+ let params = false;
+ for (let i = 0; i < location.length; i++) {
+ const curr = location[i];
+ const prev = location[i - 1];
+ pointer = pointer[curr];
+ if (!params && curr === 'state') {
+ continue;
+ } else if (!params && curr === 'routes') {
+ if (path) {
+ path += ' > ';
+ }
+ } else if (!params && typeof curr === 'number' && prev === 'routes') {
+ var _pointer;
+ path += (_pointer = pointer) === null || _pointer === void 0 ? void 0 : _pointer.name;
+ } else if (!params) {
+ path += ` > ${curr}`;
+ params = true;
+ } else {
+ if (typeof curr === 'number' || /^[0-9]+$/.test(curr)) {
+ path += `[${curr}]`;
+ } else if (/^[a-z$_]+$/i.test(curr)) {
+ path += `.${curr}`;
+ } else {
+ path += `[${JSON.stringify(curr)}]`;
+ }
+ }
+ }
+ const message = `Non-serializable values were found in the navigation state. Check:\n\n${path} (${reason})\n\nThis can break usage such as persisting and restoring state. This might happen if you passed non-serializable values such as function, class instances etc. in params. If you need to use components with callbacks in your options, you can use 'navigation.setOptions' instead. See https://reactnavigation.org/docs/troubleshooting#i-get-the-warning-non-serializable-values-were-found-in-the-navigation-state for more details.`;
+ if (!serializableWarnings.includes(message)) {
+ serializableWarnings.push(message);
+ console.warn(message);
+ }
+ }
+ const duplicateRouteNamesResult = checkDuplicateRouteNames(hydratedState);
+ if (duplicateRouteNamesResult.length) {
+ const message = `Found screens with the same name nested inside one another. Check:\n${duplicateRouteNamesResult.map(locations => `\n${locations.join(', ')}`)}\n\nThis can cause confusing behavior during navigation. Consider using unique names for each screen instead.`;
+ if (!duplicateNameWarnings.includes(message)) {
+ duplicateNameWarnings.push(message);
+ console.warn(message);
+ }
+ }
+ }
+ }
+ emitter.emit({
+ type: 'state',
+ data: {
+ state
+ }
+ });
+ if (!isFirstMountRef.current && onStateChangeRef.current) {
+ onStateChangeRef.current(hydratedState);
+ }
+ isFirstMountRef.current = false;
+ }, [getRootState, emitter, state]);
+ const defaultOnUnhandledAction = React.useCallback(action => {
+ if (process.env.NODE_ENV === 'production') {
+ return;
+ }
+ const payload = action.payload;
+ let message = `The action '${action.type}'${payload ? ` with payload ${JSON.stringify(action.payload)}` : ''} was not handled by any navigator.`;
+ switch (action.type) {
+ case 'NAVIGATE':
+ case 'PUSH':
+ case 'REPLACE':
+ case 'JUMP_TO':
+ if (payload !== null && payload !== void 0 && payload.name) {
+ message += `\n\nDo you have a screen named '${payload.name}'?\n\nIf you're trying to navigate to a screen in a nested navigator, see https://reactnavigation.org/docs/nesting-navigators#navigating-to-a-screen-in-a-nested-navigator.`;
+ } else {
+ message += `\n\nYou need to pass the name of the screen to navigate to.\n\nSee https://reactnavigation.org/docs/navigation-actions for usage.`;
+ }
+ break;
+ case 'GO_BACK':
+ case 'POP':
+ case 'POP_TO_TOP':
+ message += `\n\nIs there any screen to go back to?`;
+ break;
+ case 'OPEN_DRAWER':
+ case 'CLOSE_DRAWER':
+ case 'TOGGLE_DRAWER':
+ message += `\n\nIs your screen inside a Drawer navigator?`;
+ break;
+ }
+ message += `\n\nThis is a development-only warning and won't be shown in production.`;
+ console.error(message);
+ }, []);
+ let element = /*#__PURE__*/React.createElement(NavigationContainerRefContext.Provider, {
+ value: navigation
+ }, /*#__PURE__*/React.createElement(ScheduleUpdateContext.Provider, {
+ value: scheduleContext
+ }, /*#__PURE__*/React.createElement(NavigationBuilderContext.Provider, {
+ value: builderContext
+ }, /*#__PURE__*/React.createElement(NavigationStateContext.Provider, {
+ value: context
+ }, /*#__PURE__*/React.createElement(UnhandledActionContext.Provider, {
+ value: onUnhandledAction ?? defaultOnUnhandledAction
+ }, /*#__PURE__*/React.createElement(EnsureSingleNavigator, null, children))))));
+ if (independent) {
+ // We need to clear any existing contexts for nested independent container to work correctly
+ element = /*#__PURE__*/React.createElement(NavigationRouteContext.Provider, {
+ value: undefined
+ }, /*#__PURE__*/React.createElement(NavigationContext.Provider, {
+ value: undefined
+ }, element));
+ }
+ return element;
+});
+export default BaseNavigationContainer;
+//# sourceMappingURL=BaseNavigationContainer.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/BaseNavigationContainer.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/BaseNavigationContainer.js.map
new file mode 100644
index 00000000..e19a0b4a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/BaseNavigationContainer.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["CommonActions","React","checkDuplicateRouteNames","checkSerializable","NOT_INITIALIZED_ERROR","EnsureSingleNavigator","findFocusedRoute","NavigationBuilderContext","NavigationContainerRefContext","NavigationContext","NavigationRouteContext","NavigationStateContext","UnhandledActionContext","useChildListeners","useEventEmitter","useKeyedChildListeners","useOptionsGetters","ScheduleUpdateContext","useSyncState","serializableWarnings","duplicateNameWarnings","getPartialState","state","undefined","key","routeNames","partialState","stale","routes","map","route","BaseNavigationContainer","forwardRef","ref","initialState","onStateChange","onUnhandledAction","independent","children","parent","useContext","isDefault","Error","getState","setState","scheduleUpdate","flushUpdates","isFirstMountRef","useRef","navigatorKeyRef","getKey","useCallback","current","setKey","listeners","addListener","keyedListeners","addKeyedListener","dispatch","action","focus","console","error","navigation","canGoBack","result","handled","resetRoot","target","root","reset","getRootState","getCurrentRoute","emitter","addOptionsGetter","getCurrentOptions","useMemo","Object","keys","reduce","acc","name","create","isFocused","getParent","stateRef","isReady","useImperativeHandle","onDispatchAction","noop","emit","type","data","stack","stackRef","lastEmittedOptionsRef","onOptionsChange","options","builderContext","scheduleContext","isInitialRef","getIsInitial","context","onStateChangeRef","useEffect","hydratedState","process","env","NODE_ENV","serializableResult","serializable","location","reason","path","pointer","params","i","length","curr","prev","test","JSON","stringify","message","includes","push","warn","duplicateRouteNamesResult","locations","join","defaultOnUnhandledAction","payload","element"],"sourceRoot":"../../src","sources":["BaseNavigationContainer.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/CurrentRenderContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/CurrentRenderContext.js
new file mode 100644
index 00000000..18e5ac3f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/CurrentRenderContext.js
@@ -0,0 +1,9 @@
+import * as React from 'react';
+
+/**
+ * Context which holds the values for the current navigation tree.
+ * Intended for use in SSR. This is not safe to use on the client.
+ */
+const CurrentRenderContext = /*#__PURE__*/React.createContext(undefined);
+export default CurrentRenderContext;
+//# sourceMappingURL=CurrentRenderContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/CurrentRenderContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/CurrentRenderContext.js.map
new file mode 100644
index 00000000..909c4c89
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/CurrentRenderContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","CurrentRenderContext","createContext","undefined"],"sourceRoot":"../../src","sources":["CurrentRenderContext.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;;AAE9B;AACA;AACA;AACA;AACA,MAAMC,oBAAoB,gBAAGD,KAAK,CAACE,aAAa,CAE9CC,SAAS,CAAC;AAEZ,eAAeF,oBAAoB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/EnsureSingleNavigator.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/EnsureSingleNavigator.js
new file mode 100644
index 00000000..d2aa3041
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/EnsureSingleNavigator.js
@@ -0,0 +1,33 @@
+import * as React from 'react';
+const MULTIPLE_NAVIGATOR_ERROR = `Another navigator is already registered for this container. You likely have multiple navigators under a single "NavigationContainer" or "Screen". Make sure each navigator is under a separate "Screen" container. See https://reactnavigation.org/docs/nesting-navigators for a guide on nesting.`;
+export const SingleNavigatorContext = /*#__PURE__*/React.createContext(undefined);
+
+/**
+ * Component which ensures that there's only one navigator nested under it.
+ */
+export default function EnsureSingleNavigator(_ref) {
+ let {
+ children
+ } = _ref;
+ const navigatorKeyRef = React.useRef();
+ const value = React.useMemo(() => ({
+ register(key) {
+ const currentKey = navigatorKeyRef.current;
+ if (currentKey !== undefined && key !== currentKey) {
+ throw new Error(MULTIPLE_NAVIGATOR_ERROR);
+ }
+ navigatorKeyRef.current = key;
+ },
+ unregister(key) {
+ const currentKey = navigatorKeyRef.current;
+ if (key !== currentKey) {
+ return;
+ }
+ navigatorKeyRef.current = undefined;
+ }
+ }), []);
+ return /*#__PURE__*/React.createElement(SingleNavigatorContext.Provider, {
+ value: value
+ }, children);
+}
+//# sourceMappingURL=EnsureSingleNavigator.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/EnsureSingleNavigator.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/EnsureSingleNavigator.js.map
new file mode 100644
index 00000000..8bfb71ea
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/EnsureSingleNavigator.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","MULTIPLE_NAVIGATOR_ERROR","SingleNavigatorContext","createContext","undefined","EnsureSingleNavigator","children","navigatorKeyRef","useRef","value","useMemo","register","key","currentKey","current","Error","unregister"],"sourceRoot":"../../src","sources":["EnsureSingleNavigator.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAM9B,MAAMC,wBAAwB,GAAI,oSAAmS;AAErU,OAAO,MAAMC,sBAAsB,gBAAGF,KAAK,CAACG,aAAa,CAMvDC,SAAS,CAAC;;AAEZ;AACA;AACA;AACA,eAAe,SAASC,qBAAqB,OAAsB;EAAA,IAArB;IAAEC;EAAgB,CAAC;EAC/D,MAAMC,eAAe,GAAGP,KAAK,CAACQ,MAAM,EAAsB;EAE1D,MAAMC,KAAK,GAAGT,KAAK,CAACU,OAAO,CACzB,OAAO;IACLC,QAAQ,CAACC,GAAW,EAAE;MACpB,MAAMC,UAAU,GAAGN,eAAe,CAACO,OAAO;MAE1C,IAAID,UAAU,KAAKT,SAAS,IAAIQ,GAAG,KAAKC,UAAU,EAAE;QAClD,MAAM,IAAIE,KAAK,CAACd,wBAAwB,CAAC;MAC3C;MAEAM,eAAe,CAACO,OAAO,GAAGF,GAAG;IAC/B,CAAC;IACDI,UAAU,CAACJ,GAAW,EAAE;MACtB,MAAMC,UAAU,GAAGN,eAAe,CAACO,OAAO;MAE1C,IAAIF,GAAG,KAAKC,UAAU,EAAE;QACtB;MACF;MAEAN,eAAe,CAACO,OAAO,GAAGV,SAAS;IACrC;EACF,CAAC,CAAC,EACF,EAAE,CACH;EAED,oBACE,oBAAC,sBAAsB,CAAC,QAAQ;IAAC,KAAK,EAAEK;EAAM,GAC3CH,QAAQ,CACuB;AAEtC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Group.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Group.js
new file mode 100644
index 00000000..b4f0c5e1
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Group.js
@@ -0,0 +1,8 @@
+/**
+ * Empty component used for grouping screen configs.
+ */
+export default function Group(_) {
+ /* istanbul ignore next */
+ return null;
+}
+//# sourceMappingURL=Group.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Group.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Group.js.map
new file mode 100644
index 00000000..488ab11c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Group.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["Group","_"],"sourceRoot":"../../src","sources":["Group.tsx"],"mappings":"AAIA;AACA;AACA;AACA,eAAe,SAASA,KAAK,CAG3BC,CAA6C,EAAE;EAC/C;EACA,OAAO,IAAI;AACb"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationBuilderContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationBuilderContext.js
new file mode 100644
index 00000000..614d486f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationBuilderContext.js
@@ -0,0 +1,10 @@
+import * as React from 'react';
+/**
+ * Context which holds the required helpers needed to build nested navigators.
+ */
+const NavigationBuilderContext = /*#__PURE__*/React.createContext({
+ onDispatchAction: () => undefined,
+ onOptionsChange: () => undefined
+});
+export default NavigationBuilderContext;
+//# sourceMappingURL=NavigationBuilderContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationBuilderContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationBuilderContext.js.map
new file mode 100644
index 00000000..21629d49
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationBuilderContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationBuilderContext","createContext","onDispatchAction","undefined","onOptionsChange"],"sourceRoot":"../../src","sources":["NavigationBuilderContext.tsx"],"mappings":"AAKA,OAAO,KAAKA,KAAK,MAAM,OAAO;AA6C9B;AACA;AACA;AACA,MAAMC,wBAAwB,gBAAGD,KAAK,CAACE,aAAa,CAWjD;EACDC,gBAAgB,EAAE,MAAMC,SAAS;EACjCC,eAAe,EAAE,MAAMD;AACzB,CAAC,CAAC;AAEF,eAAeH,wBAAwB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContainerRefContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContainerRefContext.js
new file mode 100644
index 00000000..1d45614e
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContainerRefContext.js
@@ -0,0 +1,7 @@
+import * as React from 'react';
+/**
+ * Context which holds the route prop for a screen.
+ */
+const NavigationContainerRefContext = /*#__PURE__*/React.createContext(undefined);
+export default NavigationContainerRefContext;
+//# sourceMappingURL=NavigationContainerRefContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContainerRefContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContainerRefContext.js.map
new file mode 100644
index 00000000..e486a43e
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContainerRefContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationContainerRefContext","createContext","undefined"],"sourceRoot":"../../src","sources":["NavigationContainerRefContext.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAI9B;AACA;AACA;AACA,MAAMC,6BAA6B,gBAAGD,KAAK,CAACE,aAAa,CAEvDC,SAAS,CAAC;AAEZ,eAAeF,6BAA6B"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContext.js
new file mode 100644
index 00000000..3139efce
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContext.js
@@ -0,0 +1,7 @@
+import * as React from 'react';
+/**
+ * Context which holds the navigation prop for a screen.
+ */
+const NavigationContext = /*#__PURE__*/React.createContext(undefined);
+export default NavigationContext;
+//# sourceMappingURL=NavigationContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContext.js.map
new file mode 100644
index 00000000..9a5622ce
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationContext","createContext","undefined"],"sourceRoot":"../../src","sources":["NavigationContext.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAI9B;AACA;AACA;AACA,MAAMC,iBAAiB,gBAAGD,KAAK,CAACE,aAAa,CAE3CC,SAAS,CAAC;AAEZ,eAAeF,iBAAiB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationHelpersContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationHelpersContext.js
new file mode 100644
index 00000000..0b1ce4fa
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationHelpersContext.js
@@ -0,0 +1,8 @@
+import * as React from 'react';
+/**
+ * Context which holds the navigation helpers of the parent navigator.
+ * Navigators should use this context in their view component.
+ */
+const NavigationHelpersContext = /*#__PURE__*/React.createContext(undefined);
+export default NavigationHelpersContext;
+//# sourceMappingURL=NavigationHelpersContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationHelpersContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationHelpersContext.js.map
new file mode 100644
index 00000000..90d25eda
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationHelpersContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationHelpersContext","createContext","undefined"],"sourceRoot":"../../src","sources":["NavigationHelpersContext.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAI9B;AACA;AACA;AACA;AACA,MAAMC,wBAAwB,gBAAGD,KAAK,CAACE,aAAa,CAElDC,SAAS,CAAC;AAEZ,eAAeF,wBAAwB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationRouteContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationRouteContext.js
new file mode 100644
index 00000000..58cb81e2
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationRouteContext.js
@@ -0,0 +1,8 @@
+import * as React from 'react';
+
+/**
+ * Context which holds the route prop for a screen.
+ */
+const NavigationRouteContext = /*#__PURE__*/React.createContext(undefined);
+export default NavigationRouteContext;
+//# sourceMappingURL=NavigationRouteContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationRouteContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationRouteContext.js.map
new file mode 100644
index 00000000..2eae33d3
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationRouteContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationRouteContext","createContext","undefined"],"sourceRoot":"../../src","sources":["NavigationRouteContext.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;;AAE9B;AACA;AACA;AACA,MAAMC,sBAAsB,gBAAGD,KAAK,CAACE,aAAa,CAChDC,SAAS,CACV;AAED,eAAeF,sBAAsB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationStateContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationStateContext.js
new file mode 100644
index 00000000..c65d9558
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationStateContext.js
@@ -0,0 +1,21 @@
+import * as React from 'react';
+const MISSING_CONTEXT_ERROR = "Couldn't find a navigation context. Have you wrapped your app with 'NavigationContainer'? See https://reactnavigation.org/docs/getting-started for setup instructions.";
+export default /*#__PURE__*/React.createContext({
+ isDefault: true,
+ get getKey() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ },
+ get setKey() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ },
+ get getState() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ },
+ get setState() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ },
+ get getIsInitial() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ }
+});
+//# sourceMappingURL=NavigationStateContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationStateContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationStateContext.js.map
new file mode 100644
index 00000000..8c975383
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/NavigationStateContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","MISSING_CONTEXT_ERROR","createContext","isDefault","getKey","Error","setKey","getState","setState","getIsInitial"],"sourceRoot":"../../src","sources":["NavigationStateContext.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,MAAMC,qBAAqB,GACzB,wKAAwK;AAE1K,4BAAeD,KAAK,CAACE,aAAa,CAc/B;EACDC,SAAS,EAAE,IAAI;EAEf,IAAIC,MAAM,GAAQ;IAChB,MAAM,IAAIC,KAAK,CAACJ,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIK,MAAM,GAAQ;IAChB,MAAM,IAAID,KAAK,CAACJ,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIM,QAAQ,GAAQ;IAClB,MAAM,IAAIF,KAAK,CAACJ,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIO,QAAQ,GAAQ;IAClB,MAAM,IAAIH,KAAK,CAACJ,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIQ,YAAY,GAAQ;IACtB,MAAM,IAAIJ,KAAK,CAACJ,qBAAqB,CAAC;EACxC;AACF,CAAC,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveContext.js
new file mode 100644
index 00000000..cc89be79
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveContext.js
@@ -0,0 +1,10 @@
+import * as React from 'react';
+
+/**
+ * A type of an object that have a route key as an object key
+ * and a value whether to prevent that route.
+ */
+
+const PreventRemoveContext = /*#__PURE__*/React.createContext(undefined);
+export default PreventRemoveContext;
+//# sourceMappingURL=PreventRemoveContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveContext.js.map
new file mode 100644
index 00000000..c6b4b9f8
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","PreventRemoveContext","createContext","undefined"],"sourceRoot":"../../src","sources":["PreventRemoveContext.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;;AAE9B;AACA;AACA;AACA;;AAGA,MAAMC,oBAAoB,gBAAGD,KAAK,CAACE,aAAa,CAU9CC,SAAS,CAAC;AAEZ,eAAeF,oBAAoB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveProvider.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveProvider.js
new file mode 100644
index 00000000..ff40379d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveProvider.js
@@ -0,0 +1,87 @@
+import { nanoid } from 'nanoid/non-secure';
+import * as React from 'react';
+import useLatestCallback from 'use-latest-callback';
+import NavigationHelpersContext from './NavigationHelpersContext';
+import NavigationRouteContext from './NavigationRouteContext';
+import PreventRemoveContext from './PreventRemoveContext';
+/**
+ * Util function to transform map of prevented routes to a simpler object.
+ */
+const transformPreventedRoutes = preventedRoutesMap => {
+ const preventedRoutesToTransform = [...preventedRoutesMap.values()];
+ const preventedRoutes = preventedRoutesToTransform.reduce((acc, _ref) => {
+ var _acc$routeKey;
+ let {
+ routeKey,
+ preventRemove
+ } = _ref;
+ acc[routeKey] = {
+ preventRemove: ((_acc$routeKey = acc[routeKey]) === null || _acc$routeKey === void 0 ? void 0 : _acc$routeKey.preventRemove) || preventRemove
+ };
+ return acc;
+ }, {});
+ return preventedRoutes;
+};
+
+/**
+ * Component used for managing which routes have to be prevented from removal in native-stack.
+ */
+export default function PreventRemoveProvider(_ref2) {
+ let {
+ children
+ } = _ref2;
+ const [parentId] = React.useState(() => nanoid());
+ const [preventedRoutesMap, setPreventedRoutesMap] = React.useState(new Map());
+ const navigation = React.useContext(NavigationHelpersContext);
+ const route = React.useContext(NavigationRouteContext);
+ const preventRemoveContextValue = React.useContext(PreventRemoveContext);
+ // take `setPreventRemove` from parent context - if exist it means we're in a nested context
+ const setParentPrevented = preventRemoveContextValue === null || preventRemoveContextValue === void 0 ? void 0 : preventRemoveContextValue.setPreventRemove;
+ const setPreventRemove = useLatestCallback((id, routeKey, preventRemove) => {
+ if (preventRemove && (navigation == null || navigation !== null && navigation !== void 0 && navigation.getState().routes.every(route => route.key !== routeKey))) {
+ throw new Error(`Couldn't find a route with the key ${routeKey}. Is your component inside NavigationContent?`);
+ }
+ setPreventedRoutesMap(prevPrevented => {
+ var _prevPrevented$get, _prevPrevented$get2;
+ // values haven't changed - do nothing
+ if (routeKey === ((_prevPrevented$get = prevPrevented.get(id)) === null || _prevPrevented$get === void 0 ? void 0 : _prevPrevented$get.routeKey) && preventRemove === ((_prevPrevented$get2 = prevPrevented.get(id)) === null || _prevPrevented$get2 === void 0 ? void 0 : _prevPrevented$get2.preventRemove)) {
+ return prevPrevented;
+ }
+ const nextPrevented = new Map(prevPrevented);
+ if (preventRemove) {
+ nextPrevented.set(id, {
+ routeKey,
+ preventRemove
+ });
+ } else {
+ nextPrevented.delete(id);
+ }
+ return nextPrevented;
+ });
+ });
+ const isPrevented = [...preventedRoutesMap.values()].some(_ref3 => {
+ let {
+ preventRemove
+ } = _ref3;
+ return preventRemove;
+ });
+ React.useEffect(() => {
+ if ((route === null || route === void 0 ? void 0 : route.key) !== undefined && setParentPrevented !== undefined) {
+ // when route is defined (and setParentPrevented) it means we're in a nested stack
+ // route.key then will be the route key of parent
+ setParentPrevented(parentId, route.key, isPrevented);
+ return () => {
+ setParentPrevented(parentId, route.key, false);
+ };
+ }
+ return;
+ }, [parentId, isPrevented, route === null || route === void 0 ? void 0 : route.key, setParentPrevented]);
+ const value = React.useMemo(() => ({
+ setPreventRemove,
+ preventedRoutes: transformPreventedRoutes(preventedRoutesMap)
+ }), [setPreventRemove, preventedRoutesMap]);
+ return /*#__PURE__*/React.createElement(PreventRemoveContext.Provider, {
+ value: value
+ }, children);
+}
+//# sourceMappingURL=PreventRemoveProvider.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveProvider.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveProvider.js.map
new file mode 100644
index 00000000..3f09cade
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/PreventRemoveProvider.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["nanoid","React","useLatestCallback","NavigationHelpersContext","NavigationRouteContext","PreventRemoveContext","transformPreventedRoutes","preventedRoutesMap","preventedRoutesToTransform","values","preventedRoutes","reduce","acc","routeKey","preventRemove","PreventRemoveProvider","children","parentId","useState","setPreventedRoutesMap","Map","navigation","useContext","route","preventRemoveContextValue","setParentPrevented","setPreventRemove","id","getState","routes","every","key","Error","prevPrevented","get","nextPrevented","set","delete","isPrevented","some","useEffect","undefined","value","useMemo"],"sourceRoot":"../../src","sources":["PreventRemoveProvider.tsx"],"mappings":"AAAA,SAASA,MAAM,QAAQ,mBAAmB;AAC1C,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,OAAOC,iBAAiB,MAAM,qBAAqB;AAEnD,OAAOC,wBAAwB,MAAM,4BAA4B;AACjE,OAAOC,sBAAsB,MAAM,0BAA0B;AAC7D,OAAOC,oBAAoB,MAA2B,wBAAwB;AAc9E;AACA;AACA;AACA,MAAMC,wBAAwB,GAC5BC,kBAAsC,IAClB;EACpB,MAAMC,0BAA0B,GAAG,CAAC,GAAGD,kBAAkB,CAACE,MAAM,EAAE,CAAC;EAEnE,MAAMC,eAAe,GAAGF,0BAA0B,CAACG,MAAM,CACvD,CAACC,GAAG,WAAkC;IAAA;IAAA,IAAhC;MAAEC,QAAQ;MAAEC;IAAc,CAAC;IAC/BF,GAAG,CAACC,QAAQ,CAAC,GAAG;MACdC,aAAa,EAAE,kBAAAF,GAAG,CAACC,QAAQ,CAAC,kDAAb,cAAeC,aAAa,KAAIA;IACjD,CAAC;IACD,OAAOF,GAAG;EACZ,CAAC,EACD,CAAC,CAAC,CACH;EAED,OAAOF,eAAe;AACxB,CAAC;;AAED;AACA;AACA;AACA,eAAe,SAASK,qBAAqB,QAAsB;EAAA,IAArB;IAAEC;EAAgB,CAAC;EAC/D,MAAM,CAACC,QAAQ,CAAC,GAAGhB,KAAK,CAACiB,QAAQ,CAAC,MAAMlB,MAAM,EAAE,CAAC;EACjD,MAAM,CAACO,kBAAkB,EAAEY,qBAAqB,CAAC,GAC/ClB,KAAK,CAACiB,QAAQ,CAAqB,IAAIE,GAAG,EAAE,CAAC;EAE/C,MAAMC,UAAU,GAAGpB,KAAK,CAACqB,UAAU,CAACnB,wBAAwB,CAAC;EAC7D,MAAMoB,KAAK,GAAGtB,KAAK,CAACqB,UAAU,CAAClB,sBAAsB,CAAC;EAEtD,MAAMoB,yBAAyB,GAAGvB,KAAK,CAACqB,UAAU,CAACjB,oBAAoB,CAAC;EACxE;EACA,MAAMoB,kBAAkB,GAAGD,yBAAyB,aAAzBA,yBAAyB,uBAAzBA,yBAAyB,CAAEE,gBAAgB;EAEtE,MAAMA,gBAAgB,GAAGxB,iBAAiB,CACxC,CAACyB,EAAU,EAAEd,QAAgB,EAAEC,aAAsB,KAAW;IAC9D,IACEA,aAAa,KACZO,UAAU,IAAI,IAAI,IACjBA,UAAU,aAAVA,UAAU,eAAVA,UAAU,CACNO,QAAQ,EAAE,CACXC,MAAM,CAACC,KAAK,CAAEP,KAAK,IAAKA,KAAK,CAACQ,GAAG,KAAKlB,QAAQ,CAAC,CAAC,EACrD;MACA,MAAM,IAAImB,KAAK,CACZ,sCAAqCnB,QAAS,+CAA8C,CAC9F;IACH;IAEAM,qBAAqB,CAAEc,aAAa,IAAK;MAAA;MACvC;MACA,IACEpB,QAAQ,4BAAKoB,aAAa,CAACC,GAAG,CAACP,EAAE,CAAC,uDAArB,mBAAuBd,QAAQ,KAC5CC,aAAa,6BAAKmB,aAAa,CAACC,GAAG,CAACP,EAAE,CAAC,wDAArB,oBAAuBb,aAAa,GACtD;QACA,OAAOmB,aAAa;MACtB;MAEA,MAAME,aAAa,GAAG,IAAIf,GAAG,CAACa,aAAa,CAAC;MAE5C,IAAInB,aAAa,EAAE;QACjBqB,aAAa,CAACC,GAAG,CAACT,EAAE,EAAE;UACpBd,QAAQ;UACRC;QACF,CAAC,CAAC;MACJ,CAAC,MAAM;QACLqB,aAAa,CAACE,MAAM,CAACV,EAAE,CAAC;MAC1B;MAEA,OAAOQ,aAAa;IACtB,CAAC,CAAC;EACJ,CAAC,CACF;EAED,MAAMG,WAAW,GAAG,CAAC,GAAG/B,kBAAkB,CAACE,MAAM,EAAE,CAAC,CAAC8B,IAAI,CACvD;IAAA,IAAC;MAAEzB;IAAc,CAAC;IAAA,OAAKA,aAAa;EAAA,EACrC;EAEDb,KAAK,CAACuC,SAAS,CAAC,MAAM;IACpB,IAAI,CAAAjB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEQ,GAAG,MAAKU,SAAS,IAAIhB,kBAAkB,KAAKgB,SAAS,EAAE;MAChE;MACA;MACAhB,kBAAkB,CAACR,QAAQ,EAAEM,KAAK,CAACQ,GAAG,EAAEO,WAAW,CAAC;MACpD,OAAO,MAAM;QACXb,kBAAkB,CAACR,QAAQ,EAAEM,KAAK,CAACQ,GAAG,EAAE,KAAK,CAAC;MAChD,CAAC;IACH;IAEA;EACF,CAAC,EAAE,CAACd,QAAQ,EAAEqB,WAAW,EAAEf,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEQ,GAAG,EAAEN,kBAAkB,CAAC,CAAC;EAE3D,MAAMiB,KAAK,GAAGzC,KAAK,CAAC0C,OAAO,CACzB,OAAO;IACLjB,gBAAgB;IAChBhB,eAAe,EAAEJ,wBAAwB,CAACC,kBAAkB;EAC9D,CAAC,CAAC,EACF,CAACmB,gBAAgB,EAAEnB,kBAAkB,CAAC,CACvC;EAED,oBACE,oBAAC,oBAAoB,CAAC,QAAQ;IAAC,KAAK,EAAEmC;EAAM,GACzC1B,QAAQ,CACqB;AAEpC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/SceneView.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/SceneView.js
new file mode 100644
index 00000000..5f0e344c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/SceneView.js
@@ -0,0 +1,84 @@
+import * as React from 'react';
+import EnsureSingleNavigator from './EnsureSingleNavigator';
+import NavigationStateContext from './NavigationStateContext';
+import StaticContainer from './StaticContainer';
+import useOptionsGetters from './useOptionsGetters';
+/**
+ * Component which takes care of rendering the screen for a route.
+ * It provides all required contexts and applies optimizations when applicable.
+ */
+export default function SceneView(_ref) {
+ let {
+ screen,
+ route,
+ navigation,
+ routeState,
+ getState,
+ setState,
+ options,
+ clearOptions
+ } = _ref;
+ const navigatorKeyRef = React.useRef();
+ const getKey = React.useCallback(() => navigatorKeyRef.current, []);
+ const {
+ addOptionsGetter
+ } = useOptionsGetters({
+ key: route.key,
+ options,
+ navigation
+ });
+ const setKey = React.useCallback(key => {
+ navigatorKeyRef.current = key;
+ }, []);
+ const getCurrentState = React.useCallback(() => {
+ const state = getState();
+ const currentRoute = state.routes.find(r => r.key === route.key);
+ return currentRoute ? currentRoute.state : undefined;
+ }, [getState, route.key]);
+ const setCurrentState = React.useCallback(child => {
+ const state = getState();
+ setState({
+ ...state,
+ routes: state.routes.map(r => r.key === route.key ? {
+ ...r,
+ state: child
+ } : r)
+ });
+ }, [getState, route.key, setState]);
+ const isInitialRef = React.useRef(true);
+ React.useEffect(() => {
+ isInitialRef.current = false;
+ });
+
+ // Clear options set by this screen when it is unmounted
+ React.useEffect(() => {
+ return clearOptions;
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
+ const getIsInitial = React.useCallback(() => isInitialRef.current, []);
+ const context = React.useMemo(() => ({
+ state: routeState,
+ getState: getCurrentState,
+ setState: setCurrentState,
+ getKey,
+ setKey,
+ getIsInitial,
+ addOptionsGetter
+ }), [routeState, getCurrentState, setCurrentState, getKey, setKey, getIsInitial, addOptionsGetter]);
+ const ScreenComponent = screen.getComponent ? screen.getComponent() : screen.component;
+ return /*#__PURE__*/React.createElement(NavigationStateContext.Provider, {
+ value: context
+ }, /*#__PURE__*/React.createElement(EnsureSingleNavigator, null, /*#__PURE__*/React.createElement(StaticContainer, {
+ name: screen.name,
+ render: ScreenComponent || screen.children,
+ navigation: navigation,
+ route: route
+ }, ScreenComponent !== undefined ? /*#__PURE__*/React.createElement(ScreenComponent, {
+ navigation: navigation,
+ route: route
+ }) : screen.children !== undefined ? screen.children({
+ navigation,
+ route
+ }) : null)));
+}
+//# sourceMappingURL=SceneView.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/SceneView.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/SceneView.js.map
new file mode 100644
index 00000000..82a528fe
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/SceneView.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","EnsureSingleNavigator","NavigationStateContext","StaticContainer","useOptionsGetters","SceneView","screen","route","navigation","routeState","getState","setState","options","clearOptions","navigatorKeyRef","useRef","getKey","useCallback","current","addOptionsGetter","key","setKey","getCurrentState","state","currentRoute","routes","find","r","undefined","setCurrentState","child","map","isInitialRef","useEffect","getIsInitial","context","useMemo","ScreenComponent","getComponent","component","name","children"],"sourceRoot":"../../src","sources":["SceneView.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Screen.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Screen.js
new file mode 100644
index 00000000..4993f9ae
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Screen.js
@@ -0,0 +1,8 @@
+/**
+ * Empty component used for specifying route configuration.
+ */
+export default function Screen(_) {
+ /* istanbul ignore next */
+ return null;
+}
+//# sourceMappingURL=Screen.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Screen.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Screen.js.map
new file mode 100644
index 00000000..13959b35
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/Screen.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["Screen","_"],"sourceRoot":"../../src","sources":["Screen.tsx"],"mappings":"AAIA;AACA;AACA;AACA,eAAe,SAASA,MAAM,CAM5BC,CAAoE,EAAE;EACtE;EACA,OAAO,IAAI;AACb"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/StaticContainer.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/StaticContainer.js
new file mode 100644
index 00000000..b8a26fec
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/StaticContainer.js
@@ -0,0 +1,25 @@
+import * as React from 'react';
+
+/**
+ * Component which prevents updates for children if no props changed
+ */
+function StaticContainer(props) {
+ return props.children;
+}
+export default /*#__PURE__*/React.memo(StaticContainer, (prevProps, nextProps) => {
+ const prevPropKeys = Object.keys(prevProps);
+ const nextPropKeys = Object.keys(nextProps);
+ if (prevPropKeys.length !== nextPropKeys.length) {
+ return false;
+ }
+ for (const key of prevPropKeys) {
+ if (key === 'children') {
+ continue;
+ }
+ if (prevProps[key] !== nextProps[key]) {
+ return false;
+ }
+ }
+ return true;
+});
+//# sourceMappingURL=StaticContainer.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/StaticContainer.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/StaticContainer.js.map
new file mode 100644
index 00000000..f8291652
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/StaticContainer.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","StaticContainer","props","children","memo","prevProps","nextProps","prevPropKeys","Object","keys","nextPropKeys","length","key"],"sourceRoot":"../../src","sources":["StaticContainer.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;;AAE9B;AACA;AACA;AACA,SAASC,eAAe,CAACC,KAAU,EAAE;EACnC,OAAOA,KAAK,CAACC,QAAQ;AACvB;AAEA,4BAAeH,KAAK,CAACI,IAAI,CAACH,eAAe,EAAE,CAACI,SAAc,EAAEC,SAAc,KAAK;EAC7E,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAI,CAACJ,SAAS,CAAC;EAC3C,MAAMK,YAAY,GAAGF,MAAM,CAACC,IAAI,CAACH,SAAS,CAAC;EAE3C,IAAIC,YAAY,CAACI,MAAM,KAAKD,YAAY,CAACC,MAAM,EAAE;IAC/C,OAAO,KAAK;EACd;EAEA,KAAK,MAAMC,GAAG,IAAIL,YAAY,EAAE;IAC9B,IAAIK,GAAG,KAAK,UAAU,EAAE;MACtB;IACF;IAEA,IAAIP,SAAS,CAACO,GAAG,CAAC,KAAKN,SAAS,CAACM,GAAG,CAAC,EAAE;MACrC,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb,CAAC,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/UnhandledActionContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/UnhandledActionContext.js
new file mode 100644
index 00000000..27a70bd1
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/UnhandledActionContext.js
@@ -0,0 +1,4 @@
+import * as React from 'react';
+const UnhandledActionContext = /*#__PURE__*/React.createContext(undefined);
+export default UnhandledActionContext;
+//# sourceMappingURL=UnhandledActionContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/UnhandledActionContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/UnhandledActionContext.js.map
new file mode 100644
index 00000000..9214643c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/UnhandledActionContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","UnhandledActionContext","createContext","undefined"],"sourceRoot":"../../src","sources":["UnhandledActionContext.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,MAAMC,sBAAsB,gBAAGD,KAAK,CAACE,aAAa,CAEhDC,SAAS,CAAC;AAEZ,eAAeF,sBAAsB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkDuplicateRouteNames.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkDuplicateRouteNames.js
new file mode 100644
index 00000000..cfd3f0b1
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkDuplicateRouteNames.js
@@ -0,0 +1,20 @@
+export default function checkDuplicateRouteNames(state) {
+ const duplicates = [];
+ const getRouteNames = (location, state) => {
+ state.routes.forEach(route => {
+ var _route$state, _route$state$routeNam;
+ const currentLocation = location ? `${location} > ${route.name}` : route.name;
+ (_route$state = route.state) === null || _route$state === void 0 ? void 0 : (_route$state$routeNam = _route$state.routeNames) === null || _route$state$routeNam === void 0 ? void 0 : _route$state$routeNam.forEach(routeName => {
+ if (routeName === route.name) {
+ duplicates.push([currentLocation, `${currentLocation} > ${route.name}`]);
+ }
+ });
+ if (route.state) {
+ getRouteNames(currentLocation, route.state);
+ }
+ });
+ };
+ getRouteNames('', state);
+ return duplicates;
+}
+//# sourceMappingURL=checkDuplicateRouteNames.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkDuplicateRouteNames.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkDuplicateRouteNames.js.map
new file mode 100644
index 00000000..4904d8f4
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkDuplicateRouteNames.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["checkDuplicateRouteNames","state","duplicates","getRouteNames","location","routes","forEach","route","currentLocation","name","routeNames","routeName","push"],"sourceRoot":"../../src","sources":["checkDuplicateRouteNames.tsx"],"mappings":"AAEA,eAAe,SAASA,wBAAwB,CAACC,KAAsB,EAAE;EACvE,MAAMC,UAAsB,GAAG,EAAE;EAEjC,MAAMC,aAAa,GAAG,CACpBC,QAAgB,EAChBH,KAAsD,KACnD;IACHA,KAAK,CAACI,MAAM,CAACC,OAAO,CAAEC,KAA6B,IAAK;MAAA;MACtD,MAAMC,eAAe,GAAGJ,QAAQ,GAC3B,GAAEA,QAAS,MAAKG,KAAK,CAACE,IAAK,EAAC,GAC7BF,KAAK,CAACE,IAAI;MAEd,gBAAAF,KAAK,CAACN,KAAK,0EAAX,aAAaS,UAAU,0DAAvB,sBAAyBJ,OAAO,CAAEK,SAAS,IAAK;QAC9C,IAAIA,SAAS,KAAKJ,KAAK,CAACE,IAAI,EAAE;UAC5BP,UAAU,CAACU,IAAI,CAAC,CACdJ,eAAe,EACd,GAAEA,eAAgB,MAAKD,KAAK,CAACE,IAAK,EAAC,CACrC,CAAC;QACJ;MACF,CAAC,CAAC;MAEF,IAAIF,KAAK,CAACN,KAAK,EAAE;QACfE,aAAa,CAACK,eAAe,EAAED,KAAK,CAACN,KAAK,CAAC;MAC7C;IACF,CAAC,CAAC;EACJ,CAAC;EAEDE,aAAa,CAAC,EAAE,EAAEF,KAAK,CAAC;EAExB,OAAOC,UAAU;AACnB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkSerializable.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkSerializable.js
new file mode 100644
index 00000000..4e765fae
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkSerializable.js
@@ -0,0 +1,44 @@
+const checkSerializableWithoutCircularReference = (o, seen, location) => {
+ if (o === undefined || o === null || typeof o === 'boolean' || typeof o === 'number' || typeof o === 'string') {
+ return {
+ serializable: true
+ };
+ }
+ if (Object.prototype.toString.call(o) !== '[object Object]' && !Array.isArray(o)) {
+ return {
+ serializable: false,
+ location,
+ reason: typeof o === 'function' ? 'Function' : String(o)
+ };
+ }
+ if (seen.has(o)) {
+ return {
+ serializable: false,
+ reason: 'Circular reference',
+ location
+ };
+ }
+ seen.add(o);
+ if (Array.isArray(o)) {
+ for (let i = 0; i < o.length; i++) {
+ const childResult = checkSerializableWithoutCircularReference(o[i], new Set(seen), [...location, i]);
+ if (!childResult.serializable) {
+ return childResult;
+ }
+ }
+ } else {
+ for (const key in o) {
+ const childResult = checkSerializableWithoutCircularReference(o[key], new Set(seen), [...location, key]);
+ if (!childResult.serializable) {
+ return childResult;
+ }
+ }
+ }
+ return {
+ serializable: true
+ };
+};
+export default function checkSerializable(o) {
+ return checkSerializableWithoutCircularReference(o, new Set(), []);
+}
+//# sourceMappingURL=checkSerializable.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkSerializable.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkSerializable.js.map
new file mode 100644
index 00000000..85c695fe
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/checkSerializable.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["checkSerializableWithoutCircularReference","o","seen","location","undefined","serializable","Object","prototype","toString","call","Array","isArray","reason","String","has","add","i","length","childResult","Set","key","checkSerializable"],"sourceRoot":"../../src","sources":["checkSerializable.tsx"],"mappings":"AAAA,MAAMA,yCAAyC,GAAG,CAChDC,CAAyB,EACzBC,IAAc,EACdC,QAA6B,KAOtB;EACP,IACEF,CAAC,KAAKG,SAAS,IACfH,CAAC,KAAK,IAAI,IACV,OAAOA,CAAC,KAAK,SAAS,IACtB,OAAOA,CAAC,KAAK,QAAQ,IACrB,OAAOA,CAAC,KAAK,QAAQ,EACrB;IACA,OAAO;MAAEI,YAAY,EAAE;IAAK,CAAC;EAC/B;EAEA,IACEC,MAAM,CAACC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACR,CAAC,CAAC,KAAK,iBAAiB,IACvD,CAACS,KAAK,CAACC,OAAO,CAACV,CAAC,CAAC,EACjB;IACA,OAAO;MACLI,YAAY,EAAE,KAAK;MACnBF,QAAQ;MACRS,MAAM,EAAE,OAAOX,CAAC,KAAK,UAAU,GAAG,UAAU,GAAGY,MAAM,CAACZ,CAAC;IACzD,CAAC;EACH;EAEA,IAAIC,IAAI,CAACY,GAAG,CAACb,CAAC,CAAC,EAAE;IACf,OAAO;MACLI,YAAY,EAAE,KAAK;MACnBO,MAAM,EAAE,oBAAoB;MAC5BT;IACF,CAAC;EACH;EAEAD,IAAI,CAACa,GAAG,CAACd,CAAC,CAAC;EAEX,IAAIS,KAAK,CAACC,OAAO,CAACV,CAAC,CAAC,EAAE;IACpB,KAAK,IAAIe,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGf,CAAC,CAACgB,MAAM,EAAED,CAAC,EAAE,EAAE;MACjC,MAAME,WAAW,GAAGlB,yCAAyC,CAC3DC,CAAC,CAACe,CAAC,CAAC,EACJ,IAAIG,GAAG,CAAMjB,IAAI,CAAC,EAClB,CAAC,GAAGC,QAAQ,EAAEa,CAAC,CAAC,CACjB;MAED,IAAI,CAACE,WAAW,CAACb,YAAY,EAAE;QAC7B,OAAOa,WAAW;MACpB;IACF;EACF,CAAC,MAAM;IACL,KAAK,MAAME,GAAG,IAAInB,CAAC,EAAE;MACnB,MAAMiB,WAAW,GAAGlB,yCAAyC,CAC3DC,CAAC,CAACmB,GAAG,CAAC,EACN,IAAID,GAAG,CAAMjB,IAAI,CAAC,EAClB,CAAC,GAAGC,QAAQ,EAAEiB,GAAG,CAAC,CACnB;MAED,IAAI,CAACF,WAAW,CAACb,YAAY,EAAE;QAC7B,OAAOa,WAAW;MACpB;IACF;EACF;EAEA,OAAO;IAAEb,YAAY,EAAE;EAAK,CAAC;AAC/B,CAAC;AAED,eAAe,SAASgB,iBAAiB,CAACpB,CAAyB,EAAE;EACnE,OAAOD,yCAAyC,CAACC,CAAC,EAAE,IAAIkB,GAAG,EAAO,EAAE,EAAE,CAAC;AACzE"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigationContainerRef.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigationContainerRef.js
new file mode 100644
index 00000000..e4fe04e3
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigationContainerRef.js
@@ -0,0 +1,66 @@
+import { CommonActions } from '@react-navigation/routers';
+export const NOT_INITIALIZED_ERROR = "The 'navigation' object hasn't been initialized yet. This might happen if you don't have a navigator mounted, or if the navigator hasn't finished mounting. See https://reactnavigation.org/docs/navigating-without-navigation-prop#handling-initialization for more details.";
+export default function createNavigationContainerRef() {
+ const methods = [...Object.keys(CommonActions), 'addListener', 'removeListener', 'resetRoot', 'dispatch', 'isFocused', 'canGoBack', 'getRootState', 'getState', 'getParent', 'getCurrentRoute', 'getCurrentOptions'];
+ const listeners = {};
+ const removeListener = (event, callback) => {
+ if (listeners[event]) {
+ listeners[event] = listeners[event].filter(cb => cb !== callback);
+ }
+ };
+ let current = null;
+ const ref = {
+ get current() {
+ return current;
+ },
+ set current(value) {
+ current = value;
+ if (value != null) {
+ Object.entries(listeners).forEach(_ref => {
+ let [event, callbacks] = _ref;
+ callbacks.forEach(callback => {
+ value.addListener(event, callback);
+ });
+ });
+ }
+ },
+ isReady: () => {
+ if (current == null) {
+ return false;
+ }
+ return current.isReady();
+ },
+ ...methods.reduce((acc, name) => {
+ acc[name] = function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ if (current == null) {
+ switch (name) {
+ case 'addListener':
+ {
+ const [event, callback] = args;
+ listeners[event] = listeners[event] || [];
+ listeners[event].push(callback);
+ return () => removeListener(event, callback);
+ }
+ case 'removeListener':
+ {
+ const [event, callback] = args;
+ removeListener(event, callback);
+ break;
+ }
+ default:
+ console.error(NOT_INITIALIZED_ERROR);
+ }
+ } else {
+ // @ts-expect-error: this is ok
+ return current[name](...args);
+ }
+ };
+ return acc;
+ }, {})
+ };
+ return ref;
+}
+//# sourceMappingURL=createNavigationContainerRef.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigationContainerRef.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigationContainerRef.js.map
new file mode 100644
index 00000000..9f6a7439
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigationContainerRef.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["CommonActions","NOT_INITIALIZED_ERROR","createNavigationContainerRef","methods","Object","keys","listeners","removeListener","event","callback","filter","cb","current","ref","value","entries","forEach","callbacks","addListener","isReady","reduce","acc","name","args","push","console","error"],"sourceRoot":"../../src","sources":["createNavigationContainerRef.tsx"],"mappings":"AAAA,SAASA,aAAa,QAAQ,2BAA2B;AAQzD,OAAO,MAAMC,qBAAqB,GAChC,+QAA+Q;AAEjR,eAAe,SAASC,4BAA4B,GAEF;EAChD,MAAMC,OAAO,GAAG,CACd,GAAGC,MAAM,CAACC,IAAI,CAACL,aAAa,CAAC,EAC7B,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,mBAAmB,CACX;EAEV,MAAMM,SAAuD,GAAG,CAAC,CAAC;EAElE,MAAMC,cAAc,GAAG,CACrBC,KAAa,EACbC,QAAkC,KAC/B;IACH,IAAIH,SAAS,CAACE,KAAK,CAAC,EAAE;MACpBF,SAAS,CAACE,KAAK,CAAC,GAAGF,SAAS,CAACE,KAAK,CAAC,CAACE,MAAM,CAAEC,EAAE,IAAKA,EAAE,KAAKF,QAAQ,CAAC;IACrE;EACF,CAAC;EAED,IAAIG,OAAiD,GAAG,IAAI;EAE5D,MAAMC,GAAiD,GAAG;IACxD,IAAID,OAAO,GAAG;MACZ,OAAOA,OAAO;IAChB,CAAC;IACD,IAAIA,OAAO,CAACE,KAA+C,EAAE;MAC3DF,OAAO,GAAGE,KAAK;MAEf,IAAIA,KAAK,IAAI,IAAI,EAAE;QACjBV,MAAM,CAACW,OAAO,CAACT,SAAS,CAAC,CAACU,OAAO,CAAC,QAAwB;UAAA,IAAvB,CAACR,KAAK,EAAES,SAAS,CAAC;UACnDA,SAAS,CAACD,OAAO,CAAEP,QAAQ,IAAK;YAC9BK,KAAK,CAACI,WAAW,CACfV,KAAK,EACLC,QAAQ,CACT;UACH,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ;IACF,CAAC;IACDU,OAAO,EAAE,MAAM;MACb,IAAIP,OAAO,IAAI,IAAI,EAAE;QACnB,OAAO,KAAK;MACd;MAEA,OAAOA,OAAO,CAACO,OAAO,EAAE;IAC1B,CAAC;IACD,GAAGhB,OAAO,CAACiB,MAAM,CAAM,CAACC,GAAG,EAAEC,IAAI,KAAK;MACpCD,GAAG,CAACC,IAAI,CAAC,GAAG,YAAoB;QAAA,kCAAhBC,IAAI;UAAJA,IAAI;QAAA;QAClB,IAAIX,OAAO,IAAI,IAAI,EAAE;UACnB,QAAQU,IAAI;YACV,KAAK,aAAa;cAAE;gBAClB,MAAM,CAACd,KAAK,EAAEC,QAAQ,CAAC,GAAGc,IAAI;gBAE9BjB,SAAS,CAACE,KAAK,CAAC,GAAGF,SAAS,CAACE,KAAK,CAAC,IAAI,EAAE;gBACzCF,SAAS,CAACE,KAAK,CAAC,CAACgB,IAAI,CAACf,QAAQ,CAAC;gBAE/B,OAAO,MAAMF,cAAc,CAACC,KAAK,EAAEC,QAAQ,CAAC;cAC9C;YACA,KAAK,gBAAgB;cAAE;gBACrB,MAAM,CAACD,KAAK,EAAEC,QAAQ,CAAC,GAAGc,IAAI;gBAE9BhB,cAAc,CAACC,KAAK,EAAEC,QAAQ,CAAC;gBAC/B;cACF;YACA;cACEgB,OAAO,CAACC,KAAK,CAACzB,qBAAqB,CAAC;UAAC;QAE3C,CAAC,MAAM;UACL;UACA,OAAOW,OAAO,CAACU,IAAI,CAAC,CAAC,GAAGC,IAAI,CAAC;QAC/B;MACF,CAAC;MACD,OAAOF,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC;EACP,CAAC;EAED,OAAOR,GAAG;AACZ"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigatorFactory.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigatorFactory.js
new file mode 100644
index 00000000..f6f02cae
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigatorFactory.js
@@ -0,0 +1,22 @@
+import Group from './Group';
+import Screen from './Screen';
+/**
+ * Higher order component to create a `Navigator` and `Screen` pair.
+ * Custom navigators should wrap the navigator component in `createNavigator` before exporting.
+ *
+ * @param Navigator The navigtor component to wrap.
+ * @returns Factory method to create a `Navigator` and `Screen` pair.
+ */
+export default function createNavigatorFactory(Navigator) {
+ return function () {
+ if (arguments[0] !== undefined) {
+ throw new Error("Creating a navigator doesn't take an argument. Maybe you are trying to use React Navigation 4 API? See https://reactnavigation.org/docs/hello-react-navigation for the latest API and guides.");
+ }
+ return {
+ Navigator,
+ Group,
+ Screen
+ };
+ };
+}
+//# sourceMappingURL=createNavigatorFactory.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigatorFactory.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigatorFactory.js.map
new file mode 100644
index 00000000..0054bc4f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/createNavigatorFactory.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["Group","Screen","createNavigatorFactory","Navigator","arguments","undefined","Error"],"sourceRoot":"../../src","sources":["createNavigatorFactory.tsx"],"mappings":"AAGA,OAAOA,KAAK,MAAM,SAAS;AAC3B,OAAOC,MAAM,MAAM,UAAU;AAG7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,sBAAsB,CAK5CC,SAA6B,EAAE;EAC/B,OAAO,YAML;IACA,IAAIC,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,EAAE;MAC9B,MAAM,IAAIC,KAAK,CACb,+LAA+L,CAChM;IACH;IAEA,OAAO;MACLH,SAAS;MACTH,KAAK;MACLC;IACF,CAAC;EACH,CAAC;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/findFocusedRoute.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/findFocusedRoute.js
new file mode 100644
index 00000000..ff7e7f61
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/findFocusedRoute.js
@@ -0,0 +1,11 @@
+export default function findFocusedRoute(state) {
+ var _current2, _current3;
+ let current = state;
+ while (((_current = current) === null || _current === void 0 ? void 0 : _current.routes[current.index ?? 0].state) != null) {
+ var _current;
+ current = current.routes[current.index ?? 0].state;
+ }
+ const route = (_current2 = current) === null || _current2 === void 0 ? void 0 : _current2.routes[((_current3 = current) === null || _current3 === void 0 ? void 0 : _current3.index) ?? 0];
+ return route;
+}
+//# sourceMappingURL=findFocusedRoute.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/findFocusedRoute.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/findFocusedRoute.js.map
new file mode 100644
index 00000000..de4fbb8c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/findFocusedRoute.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["findFocusedRoute","state","current","routes","index","route"],"sourceRoot":"../../src","sources":["findFocusedRoute.tsx"],"mappings":"AAEA,eAAe,SAASA,gBAAgB,CAACC,KAAmB,EAAE;EAAA;EAC5D,IAAIC,OAAiC,GAAGD,KAAK;EAE7C,OAAO,aAAAC,OAAO,6CAAP,SAASC,MAAM,CAACD,OAAO,CAACE,KAAK,IAAI,CAAC,CAAC,CAACH,KAAK,KAAI,IAAI,EAAE;IAAA;IACxDC,OAAO,GAAGA,OAAO,CAACC,MAAM,CAACD,OAAO,CAACE,KAAK,IAAI,CAAC,CAAC,CAACH,KAAK;EACpD;EAEA,MAAMI,KAAK,gBAAGH,OAAO,8CAAP,UAASC,MAAM,CAAC,cAAAD,OAAO,8CAAP,UAASE,KAAK,KAAI,CAAC,CAAC;EAElD,OAAOC,KAAK;AACd"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/fromEntries.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/fromEntries.js
new file mode 100644
index 00000000..e1a3670b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/fromEntries.js
@@ -0,0 +1,12 @@
+// Object.fromEntries is not available in older iOS versions
+export default function fromEntries(entries) {
+ return entries.reduce((acc, _ref) => {
+ let [k, v] = _ref;
+ if (acc.hasOwnProperty(k)) {
+ throw new Error(`A value for key '${k}' already exists in the object.`);
+ }
+ acc[k] = v;
+ return acc;
+ }, {});
+}
+//# sourceMappingURL=fromEntries.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/fromEntries.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/fromEntries.js.map
new file mode 100644
index 00000000..99c61500
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/fromEntries.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["fromEntries","entries","reduce","acc","k","v","hasOwnProperty","Error"],"sourceRoot":"../../src","sources":["fromEntries.tsx"],"mappings":"AAAA;AACA,eAAe,SAASA,WAAW,CACjCC,OAA4B,EAC5B;EACA,OAAOA,OAAO,CAACC,MAAM,CAAC,CAACC,GAAG,WAAa;IAAA,IAAX,CAACC,CAAC,EAAEC,CAAC,CAAC;IAChC,IAAIF,GAAG,CAACG,cAAc,CAACF,CAAC,CAAC,EAAE;MACzB,MAAM,IAAIG,KAAK,CAAE,oBAAmBH,CAAE,iCAAgC,CAAC;IACzE;IAEAD,GAAG,CAACC,CAAC,CAAC,GAAGC,CAAC;IACV,OAAOF,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAiB;AACxB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getActionFromState.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getActionFromState.js
new file mode 100644
index 00000000..07a9e4d0
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getActionFromState.js
@@ -0,0 +1,83 @@
+export default function getActionFromState(state, options) {
+ var _normalizedConfig$scr;
+ // Create a normalized configs object which will be easier to use
+ const normalizedConfig = options ? createNormalizedConfigItem(options) : {};
+ const routes = state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;
+ if (routes.length === 0) {
+ return undefined;
+ }
+ if (!(routes.length === 1 && routes[0].key === undefined || routes.length === 2 && routes[0].key === undefined && routes[0].name === (normalizedConfig === null || normalizedConfig === void 0 ? void 0 : normalizedConfig.initialRouteName) && routes[1].key === undefined)) {
+ return {
+ type: 'RESET',
+ payload: state
+ };
+ }
+ const route = state.routes[state.index ?? state.routes.length - 1];
+ let current = route === null || route === void 0 ? void 0 : route.state;
+ let config = normalizedConfig === null || normalizedConfig === void 0 ? void 0 : (_normalizedConfig$scr = normalizedConfig.screens) === null || _normalizedConfig$scr === void 0 ? void 0 : _normalizedConfig$scr[route === null || route === void 0 ? void 0 : route.name];
+ let params = {
+ ...route.params
+ };
+ let payload = route ? {
+ name: route.name,
+ path: route.path,
+ params
+ } : undefined;
+ while (current) {
+ var _config, _config2, _config2$screens;
+ if (current.routes.length === 0) {
+ return undefined;
+ }
+ const routes = current.index != null ? current.routes.slice(0, current.index + 1) : current.routes;
+ const route = routes[routes.length - 1];
+
+ // Explicitly set to override existing value when merging params
+ Object.assign(params, {
+ initial: undefined,
+ screen: undefined,
+ params: undefined,
+ state: undefined
+ });
+ if (routes.length === 1 && routes[0].key === undefined) {
+ params.initial = true;
+ params.screen = route.name;
+ } else if (routes.length === 2 && routes[0].key === undefined && routes[0].name === ((_config = config) === null || _config === void 0 ? void 0 : _config.initialRouteName) && routes[1].key === undefined) {
+ params.initial = false;
+ params.screen = route.name;
+ } else {
+ params.state = current;
+ break;
+ }
+ if (route.state) {
+ params.params = {
+ ...route.params
+ };
+ params = params.params;
+ } else {
+ params.path = route.path;
+ params.params = route.params;
+ }
+ current = route.state;
+ config = (_config2 = config) === null || _config2 === void 0 ? void 0 : (_config2$screens = _config2.screens) === null || _config2$screens === void 0 ? void 0 : _config2$screens[route.name];
+ }
+ if (!payload) {
+ return;
+ }
+
+ // Try to construct payload for a `NAVIGATE` action from the state
+ // This lets us preserve the navigation state and not lose it
+ return {
+ type: 'NAVIGATE',
+ payload
+ };
+}
+const createNormalizedConfigItem = config => typeof config === 'object' && config != null ? {
+ initialRouteName: config.initialRouteName,
+ screens: config.screens != null ? createNormalizedConfigs(config.screens) : undefined
+} : {};
+const createNormalizedConfigs = options => Object.entries(options).reduce((acc, _ref) => {
+ let [k, v] = _ref;
+ acc[k] = createNormalizedConfigItem(v);
+ return acc;
+}, {});
+//# sourceMappingURL=getActionFromState.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getActionFromState.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getActionFromState.js.map
new file mode 100644
index 00000000..dde83a0d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getActionFromState.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["getActionFromState","state","options","normalizedConfig","createNormalizedConfigItem","routes","index","slice","length","undefined","key","name","initialRouteName","type","payload","route","current","config","screens","params","path","Object","assign","initial","screen","createNormalizedConfigs","entries","reduce","acc","k","v"],"sourceRoot":"../../src","sources":["getActionFromState.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getFocusedRouteNameFromRoute.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getFocusedRouteNameFromRoute.js
new file mode 100644
index 00000000..d60444b0
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getFocusedRouteNameFromRoute.js
@@ -0,0 +1,16 @@
+import { CHILD_STATE } from './useRouteCache';
+export default function getFocusedRouteNameFromRoute(route) {
+ // @ts-expect-error: this isn't in type definitions coz we want this private
+ const state = route[CHILD_STATE] ?? route.state;
+ const params = route.params;
+ const routeName = state ?
+ // Get the currently active route name in the nested navigator
+ state.routes[
+ // If we have a partial state without index, for tab/drawer, first screen will be focused one, and last for stack
+ // The type property will only exist for rehydrated state and not for state from deep link
+ state.index ?? (typeof state.type === 'string' && state.type !== 'stack' ? 0 : state.routes.length - 1)].name :
+ // If state doesn't exist, we need to default to `screen` param if available
+ typeof (params === null || params === void 0 ? void 0 : params.screen) === 'string' ? params.screen : undefined;
+ return routeName;
+}
+//# sourceMappingURL=getFocusedRouteNameFromRoute.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getFocusedRouteNameFromRoute.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getFocusedRouteNameFromRoute.js.map
new file mode 100644
index 00000000..69cd6714
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getFocusedRouteNameFromRoute.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["CHILD_STATE","getFocusedRouteNameFromRoute","route","state","params","routeName","routes","index","type","length","name","screen","undefined"],"sourceRoot":"../../src","sources":["getFocusedRouteNameFromRoute.tsx"],"mappings":"AAEA,SAASA,WAAW,QAAQ,iBAAiB;AAE7C,eAAe,SAASC,4BAA4B,CAClDC,KAA6B,EACT;EACpB;EACA,MAAMC,KAAK,GAAGD,KAAK,CAACF,WAAW,CAAC,IAAIE,KAAK,CAACC,KAAK;EAC/C,MAAMC,MAAM,GAAGF,KAAK,CAACE,MAA0C;EAE/D,MAAMC,SAAS,GAAGF,KAAK;EACnB;EACAA,KAAK,CAACG,MAAM;EACV;EACA;EACAH,KAAK,CAACI,KAAK,KACR,OAAOJ,KAAK,CAACK,IAAI,KAAK,QAAQ,IAAIL,KAAK,CAACK,IAAI,KAAK,OAAO,GACrD,CAAC,GACDL,KAAK,CAACG,MAAM,CAACG,MAAM,GAAG,CAAC,CAAC,CAC/B,CAACC,IAAI;EACN;EACF,QAAON,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEO,MAAM,MAAK,QAAQ,GAChCP,MAAM,CAACO,MAAM,GACbC,SAAS;EAEb,OAAOP,SAAS;AAClB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getPathFromState.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getPathFromState.js
new file mode 100644
index 00000000..1cf84f27
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getPathFromState.js
@@ -0,0 +1,209 @@
+import * as queryString from 'query-string';
+import fromEntries from './fromEntries';
+import validatePathConfig from './validatePathConfig';
+const getActiveRoute = state => {
+ const route = typeof state.index === 'number' ? state.routes[state.index] : state.routes[state.routes.length - 1];
+ if (route.state) {
+ return getActiveRoute(route.state);
+ }
+ return route;
+};
+
+/**
+ * Utility to serialize a navigation state object to a path string.
+ *
+ * @example
+ * ```js
+ * getPathFromState(
+ * {
+ * routes: [
+ * {
+ * name: 'Chat',
+ * params: { author: 'Jane', id: 42 },
+ * },
+ * ],
+ * },
+ * {
+ * screens: {
+ * Chat: {
+ * path: 'chat/:author/:id',
+ * stringify: { author: author => author.toLowerCase() }
+ * }
+ * }
+ * }
+ * )
+ * ```
+ *
+ * @param state Navigation state to serialize.
+ * @param options Extra options to fine-tune how to serialize the path.
+ * @returns Path representing the state, e.g. /foo/bar?count=42.
+ */
+export default function getPathFromState(state, options) {
+ if (state == null) {
+ throw Error("Got 'undefined' for the navigation state. You must pass a valid state object.");
+ }
+ if (options) {
+ validatePathConfig(options);
+ }
+
+ // Create a normalized configs object which will be easier to use
+ const configs = options !== null && options !== void 0 && options.screens ? createNormalizedConfigs(options === null || options === void 0 ? void 0 : options.screens) : {};
+ let path = '/';
+ let current = state;
+ const allParams = {};
+ while (current) {
+ let index = typeof current.index === 'number' ? current.index : 0;
+ let route = current.routes[index];
+ let pattern;
+ let focusedParams;
+ let focusedRoute = getActiveRoute(state);
+ let currentOptions = configs;
+
+ // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined
+ let nestedRouteNames = [];
+ let hasNext = true;
+ while (route.name in currentOptions && hasNext) {
+ pattern = currentOptions[route.name].pattern;
+ nestedRouteNames.push(route.name);
+ if (route.params) {
+ var _currentOptions$route;
+ const stringify = (_currentOptions$route = currentOptions[route.name]) === null || _currentOptions$route === void 0 ? void 0 : _currentOptions$route.stringify;
+ const currentParams = fromEntries(Object.entries(route.params).map(_ref => {
+ let [key, value] = _ref;
+ return [key, stringify !== null && stringify !== void 0 && stringify[key] ? stringify[key](value) : String(value)];
+ }));
+ if (pattern) {
+ Object.assign(allParams, currentParams);
+ }
+ if (focusedRoute === route) {
+ var _pattern;
+ // If this is the focused route, keep the params for later use
+ // We save it here since it's been stringified already
+ focusedParams = {
+ ...currentParams
+ };
+ (_pattern = pattern) === null || _pattern === void 0 ? void 0 : _pattern.split('/').filter(p => p.startsWith(':'))
+ // eslint-disable-next-line no-loop-func
+ .forEach(p => {
+ const name = getParamName(p);
+
+ // Remove the params present in the pattern since we'll only use the rest for query string
+ if (focusedParams) {
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete focusedParams[name];
+ }
+ });
+ }
+ }
+
+ // If there is no `screens` property or no nested state, we return pattern
+ if (!currentOptions[route.name].screens || route.state === undefined) {
+ hasNext = false;
+ } else {
+ index = typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;
+ const nextRoute = route.state.routes[index];
+ const nestedConfig = currentOptions[route.name].screens;
+
+ // if there is config for next route name, we go deeper
+ if (nestedConfig && nextRoute.name in nestedConfig) {
+ route = nextRoute;
+ currentOptions = nestedConfig;
+ } else {
+ // If not, there is no sense in going deeper in config
+ hasNext = false;
+ }
+ }
+ }
+ if (pattern === undefined) {
+ pattern = nestedRouteNames.join('/');
+ }
+ if (currentOptions[route.name] !== undefined) {
+ path += pattern.split('/').map(p => {
+ const name = getParamName(p);
+
+ // We don't know what to show for wildcard patterns
+ // Showing the route name seems ok, though whatever we show here will be incorrect
+ // Since the page doesn't actually exist
+ if (p === '*') {
+ return route.name;
+ }
+
+ // If the path has a pattern for a param, put the param in the path
+ if (p.startsWith(':')) {
+ const value = allParams[name];
+ if (value === undefined && p.endsWith('?')) {
+ // Optional params without value assigned in route.params should be ignored
+ return '';
+ }
+ return encodeURIComponent(value);
+ }
+ return encodeURIComponent(p);
+ }).join('/');
+ } else {
+ path += encodeURIComponent(route.name);
+ }
+ if (!focusedParams) {
+ focusedParams = focusedRoute.params;
+ }
+ if (route.state) {
+ path += '/';
+ } else if (focusedParams) {
+ for (let param in focusedParams) {
+ if (focusedParams[param] === 'undefined') {
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete focusedParams[param];
+ }
+ }
+ const query = queryString.stringify(focusedParams, {
+ sort: false
+ });
+ if (query) {
+ path += `?${query}`;
+ }
+ }
+ current = route.state;
+ }
+
+ // Remove multiple as well as trailing slashes
+ path = path.replace(/\/+/g, '/');
+ path = path.length > 1 ? path.replace(/\/$/, '') : path;
+ return path;
+}
+const getParamName = pattern => pattern.replace(/^:/, '').replace(/\?$/, '');
+const joinPaths = function () {
+ for (var _len = arguments.length, paths = new Array(_len), _key = 0; _key < _len; _key++) {
+ paths[_key] = arguments[_key];
+ }
+ return [].concat(...paths.map(p => p.split('/'))).filter(Boolean).join('/');
+};
+const createConfigItem = (config, parentPattern) => {
+ var _pattern2;
+ if (typeof config === 'string') {
+ // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern
+ const pattern = parentPattern ? joinPaths(parentPattern, config) : config;
+ return {
+ pattern
+ };
+ }
+
+ // If an object is specified as the value (e.g. Foo: { ... }),
+ // It can have `path` property and `screens` prop which has nested configs
+ let pattern;
+ if (config.exact && config.path === undefined) {
+ throw new Error("A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.");
+ }
+ pattern = config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';
+ const screens = config.screens ? createNormalizedConfigs(config.screens, pattern) : undefined;
+ return {
+ // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.
+ pattern: (_pattern2 = pattern) === null || _pattern2 === void 0 ? void 0 : _pattern2.split('/').filter(Boolean).join('/'),
+ stringify: config.stringify,
+ screens
+ };
+};
+const createNormalizedConfigs = (options, pattern) => fromEntries(Object.entries(options).map(_ref2 => {
+ let [name, c] = _ref2;
+ const result = createConfigItem(c, pattern);
+ return [name, result];
+}));
+//# sourceMappingURL=getPathFromState.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getPathFromState.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getPathFromState.js.map
new file mode 100644
index 00000000..978bc0c3
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getPathFromState.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["queryString","fromEntries","validatePathConfig","getActiveRoute","state","route","index","routes","length","getPathFromState","options","Error","configs","screens","createNormalizedConfigs","path","current","allParams","pattern","focusedParams","focusedRoute","currentOptions","nestedRouteNames","hasNext","name","push","params","stringify","currentParams","Object","entries","map","key","value","String","assign","split","filter","p","startsWith","forEach","getParamName","undefined","nextRoute","nestedConfig","join","endsWith","encodeURIComponent","param","query","sort","replace","joinPaths","paths","concat","Boolean","createConfigItem","config","parentPattern","exact","c","result"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getStateFromPath.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getStateFromPath.js
new file mode 100644
index 00000000..ea96342c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getStateFromPath.js
@@ -0,0 +1,394 @@
+import escape from 'escape-string-regexp';
+import * as queryString from 'query-string';
+import findFocusedRoute from './findFocusedRoute';
+import validatePathConfig from './validatePathConfig';
+/**
+ * Utility to parse a path string to initial state object accepted by the container.
+ * This is useful for deep linking when we need to handle the incoming URL.
+ *
+ * @example
+ * ```js
+ * getStateFromPath(
+ * '/chat/jane/42',
+ * {
+ * screens: {
+ * Chat: {
+ * path: 'chat/:author/:id',
+ * parse: { id: Number }
+ * }
+ * }
+ * }
+ * )
+ * ```
+ * @param path Path string to parse and convert, e.g. /foo/bar?count=42.
+ * @param options Extra options to fine-tune how to parse the path.
+ */
+export default function getStateFromPath(path, options) {
+ if (options) {
+ validatePathConfig(options);
+ }
+ let initialRoutes = [];
+ if (options !== null && options !== void 0 && options.initialRouteName) {
+ initialRoutes.push({
+ initialRouteName: options.initialRouteName,
+ parentScreens: []
+ });
+ }
+ const screens = options === null || options === void 0 ? void 0 : options.screens;
+ let remaining = path.replace(/\/+/g, '/') // Replace multiple slash (//) with single ones
+ .replace(/^\//, '') // Remove extra leading slash
+ .replace(/\?.*$/, ''); // Remove query params which we will handle later
+
+ // Make sure there is a trailing slash
+ remaining = remaining.endsWith('/') ? remaining : `${remaining}/`;
+ if (screens === undefined) {
+ // When no config is specified, use the path segments as route names
+ const routes = remaining.split('/').filter(Boolean).map(segment => {
+ const name = decodeURIComponent(segment);
+ return {
+ name
+ };
+ });
+ if (routes.length) {
+ return createNestedStateObject(path, routes, initialRoutes);
+ }
+ return undefined;
+ }
+
+ // Create a normalized configs array which will be easier to use
+ const configs = [].concat(...Object.keys(screens).map(key => createNormalizedConfigs(key, screens, [], initialRoutes, []))).sort((a, b) => {
+ // Sort config so that:
+ // - the most exhaustive ones are always at the beginning
+ // - patterns with wildcard are always at the end
+
+ // If 2 patterns are same, move the one with less route names up
+ // This is an error state, so it's only useful for consistent error messages
+ if (a.pattern === b.pattern) {
+ return b.routeNames.join('>').localeCompare(a.routeNames.join('>'));
+ }
+
+ // If one of the patterns starts with the other, it's more exhaustive
+ // So move it up
+ if (a.pattern.startsWith(b.pattern)) {
+ return -1;
+ }
+ if (b.pattern.startsWith(a.pattern)) {
+ return 1;
+ }
+ const aParts = a.pattern.split('/');
+ const bParts = b.pattern.split('/');
+ for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
+ // if b is longer, b get higher priority
+ if (aParts[i] == null) {
+ return 1;
+ }
+ // if a is longer, a get higher priority
+ if (bParts[i] == null) {
+ return -1;
+ }
+ const aWildCard = aParts[i] === '*' || aParts[i].startsWith(':');
+ const bWildCard = bParts[i] === '*' || bParts[i].startsWith(':');
+ // if both are wildcard we compare next component
+ if (aWildCard && bWildCard) {
+ continue;
+ }
+ // if only a is wild card, b get higher priority
+ if (aWildCard) {
+ return 1;
+ }
+ // if only b is wild card, a get higher priority
+ if (bWildCard) {
+ return -1;
+ }
+ }
+ return bParts.length - aParts.length;
+ });
+
+ // Check for duplicate patterns in the config
+ configs.reduce((acc, config) => {
+ if (acc[config.pattern]) {
+ const a = acc[config.pattern].routeNames;
+ const b = config.routeNames;
+
+ // It's not a problem if the path string omitted from a inner most screen
+ // For example, it's ok if a path resolves to `A > B > C` or `A > B`
+ const intersects = a.length > b.length ? b.every((it, i) => a[i] === it) : a.every((it, i) => b[i] === it);
+ if (!intersects) {
+ throw new Error(`Found conflicting screens with the same pattern. The pattern '${config.pattern}' resolves to both '${a.join(' > ')}' and '${b.join(' > ')}'. Patterns must be unique and cannot resolve to more than one screen.`);
+ }
+ }
+ return Object.assign(acc, {
+ [config.pattern]: config
+ });
+ }, {});
+ if (remaining === '/') {
+ // We need to add special handling of empty path so navigation to empty path also works
+ // When handling empty path, we should only look at the root level config
+ const match = configs.find(config => config.path === '' && config.routeNames.every(
+ // Make sure that none of the parent configs have a non-empty path defined
+ name => {
+ var _configs$find;
+ return !((_configs$find = configs.find(c => c.screen === name)) !== null && _configs$find !== void 0 && _configs$find.path);
+ }));
+ if (match) {
+ return createNestedStateObject(path, match.routeNames.map(name => ({
+ name
+ })), initialRoutes, configs);
+ }
+ return undefined;
+ }
+ let result;
+ let current;
+
+ // We match the whole path against the regex instead of segments
+ // This makes sure matches such as wildcard will catch any unmatched routes, even if nested
+ const {
+ routes,
+ remainingPath
+ } = matchAgainstConfigs(remaining, configs.map(c => ({
+ ...c,
+ // Add `$` to the regex to make sure it matches till end of the path and not just beginning
+ regex: c.regex ? new RegExp(c.regex.source + '$') : undefined
+ })));
+ if (routes !== undefined) {
+ // This will always be empty if full path matched
+ current = createNestedStateObject(path, routes, initialRoutes, configs);
+ remaining = remainingPath;
+ result = current;
+ }
+ if (current == null || result == null) {
+ return undefined;
+ }
+ return result;
+}
+const joinPaths = function () {
+ for (var _len = arguments.length, paths = new Array(_len), _key = 0; _key < _len; _key++) {
+ paths[_key] = arguments[_key];
+ }
+ return [].concat(...paths.map(p => p.split('/'))).filter(Boolean).join('/');
+};
+const matchAgainstConfigs = (remaining, configs) => {
+ let routes;
+ let remainingPath = remaining;
+
+ // Go through all configs, and see if the next path segment matches our regex
+ for (const config of configs) {
+ if (!config.regex) {
+ continue;
+ }
+ const match = remainingPath.match(config.regex);
+
+ // If our regex matches, we need to extract params from the path
+ if (match) {
+ var _config$pattern;
+ const matchedParams = (_config$pattern = config.pattern) === null || _config$pattern === void 0 ? void 0 : _config$pattern.split('/').filter(p => p.startsWith(':')).reduce((acc, p, i) => Object.assign(acc, {
+ // The param segments appear every second item starting from 2 in the regex match result
+ [p]: match[(i + 1) * 2].replace(/\//, '')
+ }), {});
+ routes = config.routeNames.map(name => {
+ var _config$path;
+ const config = configs.find(c => c.screen === name);
+ const params = config === null || config === void 0 ? void 0 : (_config$path = config.path) === null || _config$path === void 0 ? void 0 : _config$path.split('/').filter(p => p.startsWith(':')).reduce((acc, p) => {
+ const value = matchedParams[p];
+ if (value) {
+ var _config$parse;
+ const key = p.replace(/^:/, '').replace(/\?$/, '');
+ acc[key] = (_config$parse = config.parse) !== null && _config$parse !== void 0 && _config$parse[key] ? config.parse[key](value) : value;
+ }
+ return acc;
+ }, {});
+ if (params && Object.keys(params).length) {
+ return {
+ name,
+ params
+ };
+ }
+ return {
+ name
+ };
+ });
+ remainingPath = remainingPath.replace(match[1], '');
+ break;
+ }
+ }
+ return {
+ routes,
+ remainingPath
+ };
+};
+const createNormalizedConfigs = function (screen, routeConfig) {
+ let routeNames = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
+ let initials = arguments.length > 3 ? arguments[3] : undefined;
+ let parentScreens = arguments.length > 4 ? arguments[4] : undefined;
+ let parentPattern = arguments.length > 5 ? arguments[5] : undefined;
+ const configs = [];
+ routeNames.push(screen);
+ parentScreens.push(screen);
+
+ // @ts-expect-error: we can't strongly typecheck this for now
+ const config = routeConfig[screen];
+ if (typeof config === 'string') {
+ // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern
+ const pattern = parentPattern ? joinPaths(parentPattern, config) : config;
+ configs.push(createConfigItem(screen, routeNames, pattern, config));
+ } else if (typeof config === 'object') {
+ let pattern;
+
+ // if an object is specified as the value (e.g. Foo: { ... }),
+ // it can have `path` property and
+ // it could have `screens` prop which has nested configs
+ if (typeof config.path === 'string') {
+ if (config.exact && config.path === undefined) {
+ throw new Error("A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.");
+ }
+ pattern = config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';
+ configs.push(createConfigItem(screen, routeNames, pattern, config.path, config.parse));
+ }
+ if (config.screens) {
+ // property `initialRouteName` without `screens` has no purpose
+ if (config.initialRouteName) {
+ initials.push({
+ initialRouteName: config.initialRouteName,
+ parentScreens
+ });
+ }
+ Object.keys(config.screens).forEach(nestedConfig => {
+ const result = createNormalizedConfigs(nestedConfig, config.screens, routeNames, initials, [...parentScreens], pattern ?? parentPattern);
+ configs.push(...result);
+ });
+ }
+ }
+ routeNames.pop();
+ return configs;
+};
+const createConfigItem = (screen, routeNames, pattern, path, parse) => {
+ // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.
+ pattern = pattern.split('/').filter(Boolean).join('/');
+ const regex = pattern ? new RegExp(`^(${pattern.split('/').map(it => {
+ if (it.startsWith(':')) {
+ return `(([^/]+\\/)${it.endsWith('?') ? '?' : ''})`;
+ }
+ return `${it === '*' ? '.*' : escape(it)}\\/`;
+ }).join('')})`) : undefined;
+ return {
+ screen,
+ regex,
+ pattern,
+ path,
+ // The routeNames array is mutated, so copy it to keep the current state
+ routeNames: [...routeNames],
+ parse
+ };
+};
+const findParseConfigForRoute = (routeName, flatConfig) => {
+ for (const config of flatConfig) {
+ if (routeName === config.routeNames[config.routeNames.length - 1]) {
+ return config.parse;
+ }
+ }
+ return undefined;
+};
+
+// Try to find an initial route connected with the one passed
+const findInitialRoute = (routeName, parentScreens, initialRoutes) => {
+ for (const config of initialRoutes) {
+ if (parentScreens.length === config.parentScreens.length) {
+ let sameParents = true;
+ for (let i = 0; i < parentScreens.length; i++) {
+ if (parentScreens[i].localeCompare(config.parentScreens[i]) !== 0) {
+ sameParents = false;
+ break;
+ }
+ }
+ if (sameParents) {
+ return routeName !== config.initialRouteName ? config.initialRouteName : undefined;
+ }
+ }
+ }
+ return undefined;
+};
+
+// returns state object with values depending on whether
+// it is the end of state and if there is initialRoute for this level
+const createStateObject = (initialRoute, route, isEmpty) => {
+ if (isEmpty) {
+ if (initialRoute) {
+ return {
+ index: 1,
+ routes: [{
+ name: initialRoute
+ }, route]
+ };
+ } else {
+ return {
+ routes: [route]
+ };
+ }
+ } else {
+ if (initialRoute) {
+ return {
+ index: 1,
+ routes: [{
+ name: initialRoute
+ }, {
+ ...route,
+ state: {
+ routes: []
+ }
+ }]
+ };
+ } else {
+ return {
+ routes: [{
+ ...route,
+ state: {
+ routes: []
+ }
+ }]
+ };
+ }
+ }
+};
+const createNestedStateObject = (path, routes, initialRoutes, flatConfig) => {
+ let state;
+ let route = routes.shift();
+ const parentScreens = [];
+ let initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);
+ parentScreens.push(route.name);
+ state = createStateObject(initialRoute, route, routes.length === 0);
+ if (routes.length > 0) {
+ let nestedState = state;
+ while (route = routes.shift()) {
+ initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);
+ const nestedStateIndex = nestedState.index || nestedState.routes.length - 1;
+ nestedState.routes[nestedStateIndex].state = createStateObject(initialRoute, route, routes.length === 0);
+ if (routes.length > 0) {
+ nestedState = nestedState.routes[nestedStateIndex].state;
+ }
+ parentScreens.push(route.name);
+ }
+ }
+ route = findFocusedRoute(state);
+ route.path = path;
+ const params = parseQueryParams(path, flatConfig ? findParseConfigForRoute(route.name, flatConfig) : undefined);
+ if (params) {
+ route.params = {
+ ...route.params,
+ ...params
+ };
+ }
+ return state;
+};
+const parseQueryParams = (path, parseConfig) => {
+ const query = path.split('?')[1];
+ const params = queryString.parse(query);
+ if (parseConfig) {
+ Object.keys(params).forEach(name => {
+ if (Object.hasOwnProperty.call(parseConfig, name) && typeof params[name] === 'string') {
+ params[name] = parseConfig[name](params[name]);
+ }
+ });
+ }
+ return Object.keys(params).length ? params : undefined;
+};
+//# sourceMappingURL=getStateFromPath.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getStateFromPath.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getStateFromPath.js.map
new file mode 100644
index 00000000..8f719754
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/getStateFromPath.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["escape","queryString","findFocusedRoute","validatePathConfig","getStateFromPath","path","options","initialRoutes","initialRouteName","push","parentScreens","screens","remaining","replace","endsWith","undefined","routes","split","filter","Boolean","map","segment","name","decodeURIComponent","length","createNestedStateObject","configs","concat","Object","keys","key","createNormalizedConfigs","sort","a","b","pattern","routeNames","join","localeCompare","startsWith","aParts","bParts","i","Math","max","aWildCard","bWildCard","reduce","acc","config","intersects","every","it","Error","assign","match","find","c","screen","result","current","remainingPath","matchAgainstConfigs","regex","RegExp","source","joinPaths","paths","p","matchedParams","params","value","parse","routeConfig","initials","parentPattern","createConfigItem","exact","forEach","nestedConfig","pop","findParseConfigForRoute","routeName","flatConfig","findInitialRoute","sameParents","createStateObject","initialRoute","route","isEmpty","index","state","shift","nestedState","nestedStateIndex","parseQueryParams","parseConfig","query","hasOwnProperty","call"],"sourceRoot":"../../src","sources":["getStateFromPath.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/index.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/index.js
new file mode 100644
index 00000000..1d42c3aa
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/index.js
@@ -0,0 +1,28 @@
+export { default as BaseNavigationContainer } from './BaseNavigationContainer';
+export { default as createNavigationContainerRef } from './createNavigationContainerRef';
+export { default as createNavigatorFactory } from './createNavigatorFactory';
+export { default as CurrentRenderContext } from './CurrentRenderContext';
+export { default as findFocusedRoute } from './findFocusedRoute';
+export { default as getActionFromState } from './getActionFromState';
+export { default as getFocusedRouteNameFromRoute } from './getFocusedRouteNameFromRoute';
+export { default as getPathFromState } from './getPathFromState';
+export { default as getStateFromPath } from './getStateFromPath';
+export { default as NavigationContainerRefContext } from './NavigationContainerRefContext';
+export { default as NavigationContext } from './NavigationContext';
+export { default as NavigationHelpersContext } from './NavigationHelpersContext';
+export { default as NavigationRouteContext } from './NavigationRouteContext';
+export { default as PreventRemoveContext } from './PreventRemoveContext';
+export { default as PreventRemoveProvider } from './PreventRemoveProvider';
+export * from './types';
+export { default as useFocusEffect } from './useFocusEffect';
+export { default as useIsFocused } from './useIsFocused';
+export { default as useNavigation } from './useNavigation';
+export { default as useNavigationBuilder } from './useNavigationBuilder';
+export { default as useNavigationContainerRef } from './useNavigationContainerRef';
+export { default as useNavigationState } from './useNavigationState';
+export { default as UNSTABLE_usePreventRemove } from './usePreventRemove';
+export { default as usePreventRemoveContext } from './usePreventRemoveContext';
+export { default as useRoute } from './useRoute';
+export { default as validatePathConfig } from './validatePathConfig';
+export * from '@react-navigation/routers';
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/index.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/index.js.map
new file mode 100644
index 00000000..ed01400a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/index.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["default","BaseNavigationContainer","createNavigationContainerRef","createNavigatorFactory","CurrentRenderContext","findFocusedRoute","getActionFromState","getFocusedRouteNameFromRoute","getPathFromState","getStateFromPath","NavigationContainerRefContext","NavigationContext","NavigationHelpersContext","NavigationRouteContext","PreventRemoveContext","PreventRemoveProvider","useFocusEffect","useIsFocused","useNavigation","useNavigationBuilder","useNavigationContainerRef","useNavigationState","UNSTABLE_usePreventRemove","usePreventRemoveContext","useRoute","validatePathConfig"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,OAAO,IAAIC,uBAAuB,QAAQ,2BAA2B;AAC9E,SAASD,OAAO,IAAIE,4BAA4B,QAAQ,gCAAgC;AACxF,SAASF,OAAO,IAAIG,sBAAsB,QAAQ,0BAA0B;AAC5E,SAASH,OAAO,IAAII,oBAAoB,QAAQ,wBAAwB;AACxE,SAASJ,OAAO,IAAIK,gBAAgB,QAAQ,oBAAoB;AAChE,SAASL,OAAO,IAAIM,kBAAkB,QAAQ,sBAAsB;AACpE,SAASN,OAAO,IAAIO,4BAA4B,QAAQ,gCAAgC;AACxF,SAASP,OAAO,IAAIQ,gBAAgB,QAAQ,oBAAoB;AAChE,SAASR,OAAO,IAAIS,gBAAgB,QAAQ,oBAAoB;AAChE,SAAST,OAAO,IAAIU,6BAA6B,QAAQ,iCAAiC;AAC1F,SAASV,OAAO,IAAIW,iBAAiB,QAAQ,qBAAqB;AAClE,SAASX,OAAO,IAAIY,wBAAwB,QAAQ,4BAA4B;AAChF,SAASZ,OAAO,IAAIa,sBAAsB,QAAQ,0BAA0B;AAC5E,SAASb,OAAO,IAAIc,oBAAoB,QAAQ,wBAAwB;AACxE,SAASd,OAAO,IAAIe,qBAAqB,QAAQ,yBAAyB;AAC1E,cAAc,SAAS;AACvB,SAASf,OAAO,IAAIgB,cAAc,QAAQ,kBAAkB;AAC5D,SAAShB,OAAO,IAAIiB,YAAY,QAAQ,gBAAgB;AACxD,SAASjB,OAAO,IAAIkB,aAAa,QAAQ,iBAAiB;AAC1D,SAASlB,OAAO,IAAImB,oBAAoB,QAAQ,wBAAwB;AACxE,SAASnB,OAAO,IAAIoB,yBAAyB,QAAQ,6BAA6B;AAClF,SAASpB,OAAO,IAAIqB,kBAAkB,QAAQ,sBAAsB;AACpE,SAASrB,OAAO,IAAIsB,yBAAyB,QAAQ,oBAAoB;AACzE,SAAStB,OAAO,IAAIuB,uBAAuB,QAAQ,2BAA2B;AAC9E,SAASvB,OAAO,IAAIwB,QAAQ,QAAQ,YAAY;AAChD,SAASxB,OAAO,IAAIyB,kBAAkB,QAAQ,sBAAsB;AACpE,cAAc,2BAA2B"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isArrayEqual.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isArrayEqual.js
new file mode 100644
index 00000000..93b3911a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isArrayEqual.js
@@ -0,0 +1,14 @@
+/**
+ * Compare two arrays with primitive values as the content.
+ * We need to make sure that both values and order match.
+ */
+export default function isArrayEqual(a, b) {
+ if (a === b) {
+ return true;
+ }
+ if (a.length !== b.length) {
+ return false;
+ }
+ return a.every((it, index) => it === b[index]);
+}
+//# sourceMappingURL=isArrayEqual.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isArrayEqual.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isArrayEqual.js.map
new file mode 100644
index 00000000..721cede1
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isArrayEqual.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["isArrayEqual","a","b","length","every","it","index"],"sourceRoot":"../../src","sources":["isArrayEqual.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA,eAAe,SAASA,YAAY,CAACC,CAAQ,EAAEC,CAAQ,EAAE;EACvD,IAAID,CAAC,KAAKC,CAAC,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAID,CAAC,CAACE,MAAM,KAAKD,CAAC,CAACC,MAAM,EAAE;IACzB,OAAO,KAAK;EACd;EAEA,OAAOF,CAAC,CAACG,KAAK,CAAC,CAACC,EAAE,EAAEC,KAAK,KAAKD,EAAE,KAAKH,CAAC,CAACI,KAAK,CAAC,CAAC;AAChD"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isRecordEqual.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isRecordEqual.js
new file mode 100644
index 00000000..a356cac6
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isRecordEqual.js
@@ -0,0 +1,15 @@
+/**
+ * Compare two records with primitive values as the content.
+ */
+export default function isRecordEqual(a, b) {
+ if (a === b) {
+ return true;
+ }
+ const aKeys = Object.keys(a);
+ const bKeys = Object.keys(b);
+ if (aKeys.length !== bKeys.length) {
+ return false;
+ }
+ return aKeys.every(key => a[key] === b[key]);
+}
+//# sourceMappingURL=isRecordEqual.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isRecordEqual.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isRecordEqual.js.map
new file mode 100644
index 00000000..f30b86f4
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/isRecordEqual.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["isRecordEqual","a","b","aKeys","Object","keys","bKeys","length","every","key"],"sourceRoot":"../../src","sources":["isRecordEqual.tsx"],"mappings":"AAAA;AACA;AACA;AACA,eAAe,SAASA,aAAa,CACnCC,CAAsB,EACtBC,CAAsB,EACtB;EACA,IAAID,CAAC,KAAKC,CAAC,EAAE;IACX,OAAO,IAAI;EACb;EAEA,MAAMC,KAAK,GAAGC,MAAM,CAACC,IAAI,CAACJ,CAAC,CAAC;EAC5B,MAAMK,KAAK,GAAGF,MAAM,CAACC,IAAI,CAACH,CAAC,CAAC;EAE5B,IAAIC,KAAK,CAACI,MAAM,KAAKD,KAAK,CAACC,MAAM,EAAE;IACjC,OAAO,KAAK;EACd;EAEA,OAAOJ,KAAK,CAACK,KAAK,CAAEC,GAAG,IAAKR,CAAC,CAACQ,GAAG,CAAC,KAAKP,CAAC,CAACO,GAAG,CAAC,CAAC;AAChD"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/types.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/types.js
new file mode 100644
index 00000000..faa62a67
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/types.js
@@ -0,0 +1,9 @@
+function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
+function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
+export class PrivateValueStore {
+ constructor() {
+ _defineProperty(this, '', void 0);
+ }
+}
+//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/types.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/types.js.map
new file mode 100644
index 00000000..caf37994
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/types.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["PrivateValueStore"],"sourceRoot":"../../src","sources":["types.tsx"],"mappings":";;;AAoJA,OAAO,MAAMA,iBAAiB,CAA4B;EAAA;IAAA,sBAW9C,EAAE;EAAA;AACd"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useChildListeners.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useChildListeners.js
new file mode 100644
index 00000000..a4e65ccc
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useChildListeners.js
@@ -0,0 +1,28 @@
+import * as React from 'react';
+/**
+ * Hook which lets child navigators add action listeners.
+ */
+export default function useChildListeners() {
+ const {
+ current: listeners
+ } = React.useRef({
+ action: [],
+ focus: []
+ });
+ const addListener = React.useCallback((type, listener) => {
+ listeners[type].push(listener);
+ let removed = false;
+ return () => {
+ const index = listeners[type].indexOf(listener);
+ if (!removed && index > -1) {
+ removed = true;
+ listeners[type].splice(index, 1);
+ }
+ };
+ }, [listeners]);
+ return {
+ listeners,
+ addListener
+ };
+}
+//# sourceMappingURL=useChildListeners.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useChildListeners.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useChildListeners.js.map
new file mode 100644
index 00000000..3e1f0485
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useChildListeners.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","useChildListeners","current","listeners","useRef","action","focus","addListener","useCallback","type","listener","push","removed","index","indexOf","splice"],"sourceRoot":"../../src","sources":["useChildListeners.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAI9B;AACA;AACA;AACA,eAAe,SAASC,iBAAiB,GAAG;EAC1C,MAAM;IAAEC,OAAO,EAAEC;EAAU,CAAC,GAAGH,KAAK,CAACI,MAAM,CAExC;IACDC,MAAM,EAAE,EAAE;IACVC,KAAK,EAAE;EACT,CAAC,CAAC;EAEF,MAAMC,WAAW,GAAGP,KAAK,CAACQ,WAAW,CACnC,CAA8BC,IAAO,EAAEC,QAAwB,KAAK;IAClEP,SAAS,CAACM,IAAI,CAAC,CAACE,IAAI,CAACD,QAAQ,CAAC;IAE9B,IAAIE,OAAO,GAAG,KAAK;IACnB,OAAO,MAAM;MACX,MAAMC,KAAK,GAAGV,SAAS,CAACM,IAAI,CAAC,CAACK,OAAO,CAACJ,QAAQ,CAAC;MAE/C,IAAI,CAACE,OAAO,IAAIC,KAAK,GAAG,CAAC,CAAC,EAAE;QAC1BD,OAAO,GAAG,IAAI;QACdT,SAAS,CAACM,IAAI,CAAC,CAACM,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;MAClC;IACF,CAAC;EACH,CAAC,EACD,CAACV,SAAS,CAAC,CACZ;EAED,OAAO;IACLA,SAAS;IACTI;EACF,CAAC;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useComponent.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useComponent.js
new file mode 100644
index 00000000..047a89c8
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useComponent.js
@@ -0,0 +1,32 @@
+import * as React from 'react';
+const NavigationContent = _ref => {
+ let {
+ render,
+ children
+ } = _ref;
+ return render(children);
+};
+export default function useComponent(render) {
+ const renderRef = React.useRef(render);
+
+ // Normally refs shouldn't be mutated in render
+ // But we return a component which will be rendered
+ // So it's just for immediate consumption
+ renderRef.current = render;
+ React.useEffect(() => {
+ renderRef.current = null;
+ });
+ return React.useRef(_ref2 => {
+ let {
+ children
+ } = _ref2;
+ const render = renderRef.current;
+ if (render === null) {
+ throw new Error('The returned component must be rendered in the same render phase as the hook.');
+ }
+ return /*#__PURE__*/React.createElement(NavigationContent, {
+ render: render
+ }, children);
+ }).current;
+}
+//# sourceMappingURL=useComponent.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useComponent.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useComponent.js.map
new file mode 100644
index 00000000..52a9ef35
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useComponent.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationContent","render","children","useComponent","renderRef","useRef","current","useEffect","Error"],"sourceRoot":"../../src","sources":["useComponent.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAS9B,MAAMC,iBAAiB,GAAG,QAAiC;EAAA,IAAhC;IAAEC,MAAM;IAAEC;EAAgB,CAAC;EACpD,OAAOD,MAAM,CAACC,QAAQ,CAAC;AACzB,CAAC;AAED,eAAe,SAASC,YAAY,CAACF,MAAc,EAAE;EACnD,MAAMG,SAAS,GAAGL,KAAK,CAACM,MAAM,CAAgBJ,MAAM,CAAC;;EAErD;EACA;EACA;EACAG,SAAS,CAACE,OAAO,GAAGL,MAAM;EAE1BF,KAAK,CAACQ,SAAS,CAAC,MAAM;IACpBH,SAAS,CAACE,OAAO,GAAG,IAAI;EAC1B,CAAC,CAAC;EAEF,OAAOP,KAAK,CAACM,MAAM,CAAC,SAAiD;IAAA,IAAhD;MAAEH;IAAwC,CAAC;IAC9D,MAAMD,MAAM,GAAGG,SAAS,CAACE,OAAO;IAEhC,IAAIL,MAAM,KAAK,IAAI,EAAE;MACnB,MAAM,IAAIO,KAAK,CACb,+EAA+E,CAChF;IACH;IAEA,oBAAO,oBAAC,iBAAiB;MAAC,MAAM,EAAEP;IAAO,GAAEC,QAAQ,CAAqB;EAC1E,CAAC,CAAC,CAACI,OAAO;AACZ"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useCurrentRender.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useCurrentRender.js
new file mode 100644
index 00000000..8d6f23fb
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useCurrentRender.js
@@ -0,0 +1,18 @@
+import * as React from 'react';
+import CurrentRenderContext from './CurrentRenderContext';
+/**
+ * Write the current options, so that server renderer can get current values
+ * Mutating values like this is not safe in async mode, but it doesn't apply to SSR
+ */
+export default function useCurrentRender(_ref) {
+ let {
+ state,
+ navigation,
+ descriptors
+ } = _ref;
+ const current = React.useContext(CurrentRenderContext);
+ if (current && navigation.isFocused()) {
+ current.options = descriptors[state.routes[state.index].key].options;
+ }
+}
+//# sourceMappingURL=useCurrentRender.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useCurrentRender.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useCurrentRender.js.map
new file mode 100644
index 00000000..134b5f28
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useCurrentRender.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","CurrentRenderContext","useCurrentRender","state","navigation","descriptors","current","useContext","isFocused","options","routes","index","key"],"sourceRoot":"../../src","sources":["useCurrentRender.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,oBAAoB,MAAM,wBAAwB;AAiBzD;AACA;AACA;AACA;AACA,eAAe,SAASC,gBAAgB,OAI5B;EAAA,IAJ6B;IACvCC,KAAK;IACLC,UAAU;IACVC;EACO,CAAC;EACR,MAAMC,OAAO,GAAGN,KAAK,CAACO,UAAU,CAACN,oBAAoB,CAAC;EAEtD,IAAIK,OAAO,IAAIF,UAAU,CAACI,SAAS,EAAE,EAAE;IACrCF,OAAO,CAACG,OAAO,GAAGJ,WAAW,CAACF,KAAK,CAACO,MAAM,CAACP,KAAK,CAACQ,KAAK,CAAC,CAACC,GAAG,CAAC,CAACH,OAAO;EACtE;AACF"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useDescriptors.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useDescriptors.js
new file mode 100644
index 00000000..9af6e439
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useDescriptors.js
@@ -0,0 +1,123 @@
+import * as React from 'react';
+import NavigationBuilderContext from './NavigationBuilderContext';
+import NavigationContext from './NavigationContext';
+import NavigationRouteContext from './NavigationRouteContext';
+import SceneView from './SceneView';
+import useNavigationCache from './useNavigationCache';
+import useRouteCache from './useRouteCache';
+/**
+ * Hook to create descriptor objects for the child routes.
+ *
+ * A descriptor object provides 3 things:
+ * - Helper method to render a screen
+ * - Options specified by the screen for the navigator
+ * - Navigation object intended for the route
+ */
+export default function useDescriptors(_ref) {
+ let {
+ state,
+ screens,
+ navigation,
+ screenOptions,
+ defaultScreenOptions,
+ onAction,
+ getState,
+ setState,
+ addListener,
+ addKeyedListener,
+ onRouteFocus,
+ router,
+ emitter
+ } = _ref;
+ const [options, setOptions] = React.useState({});
+ const {
+ onDispatchAction,
+ onOptionsChange,
+ stackRef
+ } = React.useContext(NavigationBuilderContext);
+ const context = React.useMemo(() => ({
+ navigation,
+ onAction,
+ addListener,
+ addKeyedListener,
+ onRouteFocus,
+ onDispatchAction,
+ onOptionsChange,
+ stackRef
+ }), [navigation, onAction, addListener, addKeyedListener, onRouteFocus, onDispatchAction, onOptionsChange, stackRef]);
+ const navigations = useNavigationCache({
+ state,
+ getState,
+ navigation,
+ setOptions,
+ router,
+ emitter
+ });
+ const routes = useRouteCache(state.routes);
+ return routes.reduce((acc, route, i) => {
+ const config = screens[route.name];
+ const screen = config.props;
+ const navigation = navigations[route.key];
+ const optionsList = [
+ // The default `screenOptions` passed to the navigator
+ screenOptions,
+ // The `screenOptions` props passed to `Group` elements
+ ...(config.options ? config.options.filter(Boolean) : []),
+ // The `options` prop passed to `Screen` elements,
+ screen.options,
+ // The options set via `navigation.setOptions`
+ options[route.key]];
+ const customOptions = optionsList.reduce((acc, curr) => Object.assign(acc, typeof curr !== 'function' ? curr : curr({
+ route,
+ navigation
+ })), {});
+ const mergedOptions = {
+ ...(typeof defaultScreenOptions === 'function' ?
+ // @ts-expect-error: ts gives incorrect error here
+ defaultScreenOptions({
+ route,
+ navigation,
+ options: customOptions
+ }) : defaultScreenOptions),
+ ...customOptions
+ };
+ const clearOptions = () => setOptions(o => {
+ if (route.key in o) {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const {
+ [route.key]: _,
+ ...rest
+ } = o;
+ return rest;
+ }
+ return o;
+ });
+ acc[route.key] = {
+ route,
+ // @ts-expect-error: it's missing action helpers, fix later
+ navigation,
+ render() {
+ return /*#__PURE__*/React.createElement(NavigationBuilderContext.Provider, {
+ key: route.key,
+ value: context
+ }, /*#__PURE__*/React.createElement(NavigationContext.Provider, {
+ value: navigation
+ }, /*#__PURE__*/React.createElement(NavigationRouteContext.Provider, {
+ value: route
+ }, /*#__PURE__*/React.createElement(SceneView, {
+ navigation: navigation,
+ route: route,
+ screen: screen,
+ routeState: state.routes[i].state,
+ getState: getState,
+ setState: setState,
+ options: mergedOptions,
+ clearOptions: clearOptions
+ }))));
+ },
+ options: mergedOptions
+ };
+ return acc;
+ }, {});
+}
+//# sourceMappingURL=useDescriptors.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useDescriptors.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useDescriptors.js.map
new file mode 100644
index 00000000..c577aebc
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useDescriptors.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationBuilderContext","NavigationContext","NavigationRouteContext","SceneView","useNavigationCache","useRouteCache","useDescriptors","state","screens","navigation","screenOptions","defaultScreenOptions","onAction","getState","setState","addListener","addKeyedListener","onRouteFocus","router","emitter","options","setOptions","useState","onDispatchAction","onOptionsChange","stackRef","useContext","context","useMemo","navigations","routes","reduce","acc","route","i","config","name","screen","props","key","optionsList","filter","Boolean","customOptions","curr","Object","assign","mergedOptions","clearOptions","o","_","rest","render"],"sourceRoot":"../../src","sources":["useDescriptors.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useEventEmitter.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useEventEmitter.js
new file mode 100644
index 00000000..bd6c33bb
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useEventEmitter.js
@@ -0,0 +1,99 @@
+import * as React from 'react';
+/**
+ * Hook to manage the event system used by the navigator to notify screens of various events.
+ */
+export default function useEventEmitter(listen) {
+ const listenRef = React.useRef(listen);
+ React.useEffect(() => {
+ listenRef.current = listen;
+ });
+ const listeners = React.useRef(Object.create(null));
+ const create = React.useCallback(target => {
+ const removeListener = (type, callback) => {
+ const callbacks = listeners.current[type] ? listeners.current[type][target] : undefined;
+ if (!callbacks) {
+ return;
+ }
+ const index = callbacks.indexOf(callback);
+ if (index > -1) {
+ callbacks.splice(index, 1);
+ }
+ };
+ const addListener = (type, callback) => {
+ listeners.current[type] = listeners.current[type] || {};
+ listeners.current[type][target] = listeners.current[type][target] || [];
+ listeners.current[type][target].push(callback);
+ let removed = false;
+ return () => {
+ // Prevent removing other listeners when unsubscribing same listener multiple times
+ if (!removed) {
+ removed = true;
+ removeListener(type, callback);
+ }
+ };
+ };
+ return {
+ addListener,
+ removeListener
+ };
+ }, []);
+ const emit = React.useCallback(_ref => {
+ var _items$target, _listenRef$current;
+ let {
+ type,
+ data,
+ target,
+ canPreventDefault
+ } = _ref;
+ const items = listeners.current[type] || {};
+
+ // Copy the current list of callbacks in case they are mutated during execution
+ const callbacks = target !== undefined ? (_items$target = items[target]) === null || _items$target === void 0 ? void 0 : _items$target.slice() : [].concat(...Object.keys(items).map(t => items[t])).filter((cb, i, self) => self.lastIndexOf(cb) === i);
+ const event = {
+ get type() {
+ return type;
+ }
+ };
+ if (target !== undefined) {
+ Object.defineProperty(event, 'target', {
+ enumerable: true,
+ get() {
+ return target;
+ }
+ });
+ }
+ if (data !== undefined) {
+ Object.defineProperty(event, 'data', {
+ enumerable: true,
+ get() {
+ return data;
+ }
+ });
+ }
+ if (canPreventDefault) {
+ let defaultPrevented = false;
+ Object.defineProperties(event, {
+ defaultPrevented: {
+ enumerable: true,
+ get() {
+ return defaultPrevented;
+ }
+ },
+ preventDefault: {
+ enumerable: true,
+ value() {
+ defaultPrevented = true;
+ }
+ }
+ });
+ }
+ (_listenRef$current = listenRef.current) === null || _listenRef$current === void 0 ? void 0 : _listenRef$current.call(listenRef, event);
+ callbacks === null || callbacks === void 0 ? void 0 : callbacks.forEach(cb => cb(event));
+ return event;
+ }, []);
+ return React.useMemo(() => ({
+ create,
+ emit
+ }), [create, emit]);
+}
+//# sourceMappingURL=useEventEmitter.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useEventEmitter.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useEventEmitter.js.map
new file mode 100644
index 00000000..2a0698df
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useEventEmitter.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","useEventEmitter","listen","listenRef","useRef","useEffect","current","listeners","Object","create","useCallback","target","removeListener","type","callback","callbacks","undefined","index","indexOf","splice","addListener","push","removed","emit","data","canPreventDefault","items","slice","concat","keys","map","t","filter","cb","i","self","lastIndexOf","event","defineProperty","enumerable","get","defaultPrevented","defineProperties","preventDefault","value","forEach","useMemo"],"sourceRoot":"../../src","sources":["useEventEmitter.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEffect.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEffect.js
new file mode 100644
index 00000000..8bb72477
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEffect.js
@@ -0,0 +1,70 @@
+import * as React from 'react';
+import useNavigation from './useNavigation';
+/**
+ * Hook to run an effect in a focused screen, similar to `React.useEffect`.
+ * This can be used to perform side-effects such as fetching data or subscribing to events.
+ * The passed callback should be wrapped in `React.useCallback` to avoid running the effect too often.
+ *
+ * @param callback Memoized callback containing the effect, should optionally return a cleanup function.
+ */
+export default function useFocusEffect(effect) {
+ const navigation = useNavigation();
+ if (arguments[1] !== undefined) {
+ const message = "You passed a second argument to 'useFocusEffect', but it only accepts one argument. " + "If you want to pass a dependency array, you can use 'React.useCallback':\n\n" + 'useFocusEffect(\n' + ' React.useCallback(() => {\n' + ' // Your code here\n' + ' }, [depA, depB])\n' + ');\n\n' + 'See usage guide: https://reactnavigation.org/docs/use-focus-effect';
+ console.error(message);
+ }
+ React.useEffect(() => {
+ let isFocused = false;
+ let cleanup;
+ const callback = () => {
+ const destroy = effect();
+ if (destroy === undefined || typeof destroy === 'function') {
+ return destroy;
+ }
+ if (process.env.NODE_ENV !== 'production') {
+ let message = 'An effect function must not return anything besides a function, which is used for clean-up.';
+ if (destroy === null) {
+ message += " You returned 'null'. If your effect does not require clean-up, return 'undefined' (or nothing).";
+ } else if (typeof destroy.then === 'function') {
+ message += "\n\nIt looks like you wrote 'useFocusEffect(async () => ...)' or returned a Promise. " + 'Instead, write the async function inside your effect ' + 'and call it immediately:\n\n' + 'useFocusEffect(\n' + ' React.useCallback(() => {\n' + ' async function fetchData() {\n' + ' // You can await here\n' + ' const response = await MyAPI.getData(someId);\n' + ' // ...\n' + ' }\n\n' + ' fetchData();\n' + ' }, [someId])\n' + ');\n\n' + 'See usage guide: https://reactnavigation.org/docs/use-focus-effect';
+ } else {
+ message += ` You returned '${JSON.stringify(destroy)}'.`;
+ }
+ console.error(message);
+ }
+ };
+
+ // We need to run the effect on intial render/dep changes if the screen is focused
+ if (navigation.isFocused()) {
+ cleanup = callback();
+ isFocused = true;
+ }
+ const unsubscribeFocus = navigation.addListener('focus', () => {
+ // If callback was already called for focus, avoid calling it again
+ // The focus event may also fire on intial render, so we guard against runing the effect twice
+ if (isFocused) {
+ return;
+ }
+ if (cleanup !== undefined) {
+ cleanup();
+ }
+ cleanup = callback();
+ isFocused = true;
+ });
+ const unsubscribeBlur = navigation.addListener('blur', () => {
+ if (cleanup !== undefined) {
+ cleanup();
+ }
+ cleanup = undefined;
+ isFocused = false;
+ });
+ return () => {
+ if (cleanup !== undefined) {
+ cleanup();
+ }
+ unsubscribeFocus();
+ unsubscribeBlur();
+ };
+ }, [effect, navigation]);
+}
+//# sourceMappingURL=useFocusEffect.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEffect.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEffect.js.map
new file mode 100644
index 00000000..512a7c3c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEffect.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","useNavigation","useFocusEffect","effect","navigation","arguments","undefined","message","console","error","useEffect","isFocused","cleanup","callback","destroy","process","env","NODE_ENV","then","JSON","stringify","unsubscribeFocus","addListener","unsubscribeBlur"],"sourceRoot":"../../src","sources":["useFocusEffect.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,aAAa,MAAM,iBAAiB;AAI3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,cAAc,CAACC,MAAsB,EAAE;EAC7D,MAAMC,UAAU,GAAGH,aAAa,EAAE;EAElC,IAAII,SAAS,CAAC,CAAC,CAAC,KAAKC,SAAS,EAAE;IAC9B,MAAMC,OAAO,GACX,sFAAsF,GACtF,8EAA8E,GAC9E,mBAAmB,GACnB,+BAA+B,GAC/B,yBAAyB,GACzB,sBAAsB,GACtB,QAAQ,GACR,oEAAoE;IAEtEC,OAAO,CAACC,KAAK,CAACF,OAAO,CAAC;EACxB;EAEAP,KAAK,CAACU,SAAS,CAAC,MAAM;IACpB,IAAIC,SAAS,GAAG,KAAK;IACrB,IAAIC,OAAwC;IAE5C,MAAMC,QAAQ,GAAG,MAAM;MACrB,MAAMC,OAAO,GAAGX,MAAM,EAAE;MAExB,IAAIW,OAAO,KAAKR,SAAS,IAAI,OAAOQ,OAAO,KAAK,UAAU,EAAE;QAC1D,OAAOA,OAAO;MAChB;MAEA,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACzC,IAAIV,OAAO,GACT,6FAA6F;QAE/F,IAAIO,OAAO,KAAK,IAAI,EAAE;UACpBP,OAAO,IACL,kGAAkG;QACtG,CAAC,MAAM,IAAI,OAAQO,OAAO,CAASI,IAAI,KAAK,UAAU,EAAE;UACtDX,OAAO,IACL,uFAAuF,GACvF,uDAAuD,GACvD,8BAA8B,GAC9B,mBAAmB,GACnB,+BAA+B,GAC/B,oCAAoC,GACpC,+BAA+B,GAC/B,uDAAuD,GACvD,gBAAgB,GAChB,WAAW,GACX,oBAAoB,GACpB,kBAAkB,GAClB,QAAQ,GACR,oEAAoE;QACxE,CAAC,MAAM;UACLA,OAAO,IAAK,kBAAiBY,IAAI,CAACC,SAAS,CAACN,OAAO,CAAE,IAAG;QAC1D;QAEAN,OAAO,CAACC,KAAK,CAACF,OAAO,CAAC;MACxB;IACF,CAAC;;IAED;IACA,IAAIH,UAAU,CAACO,SAAS,EAAE,EAAE;MAC1BC,OAAO,GAAGC,QAAQ,EAAE;MACpBF,SAAS,GAAG,IAAI;IAClB;IAEA,MAAMU,gBAAgB,GAAGjB,UAAU,CAACkB,WAAW,CAAC,OAAO,EAAE,MAAM;MAC7D;MACA;MACA,IAAIX,SAAS,EAAE;QACb;MACF;MAEA,IAAIC,OAAO,KAAKN,SAAS,EAAE;QACzBM,OAAO,EAAE;MACX;MAEAA,OAAO,GAAGC,QAAQ,EAAE;MACpBF,SAAS,GAAG,IAAI;IAClB,CAAC,CAAC;IAEF,MAAMY,eAAe,GAAGnB,UAAU,CAACkB,WAAW,CAAC,MAAM,EAAE,MAAM;MAC3D,IAAIV,OAAO,KAAKN,SAAS,EAAE;QACzBM,OAAO,EAAE;MACX;MAEAA,OAAO,GAAGN,SAAS;MACnBK,SAAS,GAAG,KAAK;IACnB,CAAC,CAAC;IAEF,OAAO,MAAM;MACX,IAAIC,OAAO,KAAKN,SAAS,EAAE;QACzBM,OAAO,EAAE;MACX;MAEAS,gBAAgB,EAAE;MAClBE,eAAe,EAAE;IACnB,CAAC;EACH,CAAC,EAAE,CAACpB,MAAM,EAAEC,UAAU,CAAC,CAAC;AAC1B"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEvents.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEvents.js
new file mode 100644
index 00000000..2634f07f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEvents.js
@@ -0,0 +1,63 @@
+import * as React from 'react';
+import NavigationContext from './NavigationContext';
+/**
+ * Hook to take care of emitting `focus` and `blur` events.
+ */
+export default function useFocusEvents(_ref) {
+ let {
+ state,
+ emitter
+ } = _ref;
+ const navigation = React.useContext(NavigationContext);
+ const lastFocusedKeyRef = React.useRef();
+ const currentFocusedKey = state.routes[state.index].key;
+
+ // When the parent screen changes its focus state, we also need to change child's focus
+ // Coz the child screen can't be focused if the parent screen is out of focus
+ React.useEffect(() => navigation === null || navigation === void 0 ? void 0 : navigation.addListener('focus', () => {
+ lastFocusedKeyRef.current = currentFocusedKey;
+ emitter.emit({
+ type: 'focus',
+ target: currentFocusedKey
+ });
+ }), [currentFocusedKey, emitter, navigation]);
+ React.useEffect(() => navigation === null || navigation === void 0 ? void 0 : navigation.addListener('blur', () => {
+ lastFocusedKeyRef.current = undefined;
+ emitter.emit({
+ type: 'blur',
+ target: currentFocusedKey
+ });
+ }), [currentFocusedKey, emitter, navigation]);
+ React.useEffect(() => {
+ const lastFocusedKey = lastFocusedKeyRef.current;
+ lastFocusedKeyRef.current = currentFocusedKey;
+
+ // We wouldn't have `lastFocusedKey` on initial mount
+ // Fire focus event for the current route on mount if there's no parent navigator
+ if (lastFocusedKey === undefined && !navigation) {
+ emitter.emit({
+ type: 'focus',
+ target: currentFocusedKey
+ });
+ }
+
+ // We should only emit events when the focused key changed and navigator is focused
+ // When navigator is not focused, screens inside shouldn't receive focused status either
+ if (lastFocusedKey === currentFocusedKey || !(navigation ? navigation.isFocused() : true)) {
+ return;
+ }
+ if (lastFocusedKey === undefined) {
+ // Only fire events after initial mount
+ return;
+ }
+ emitter.emit({
+ type: 'blur',
+ target: lastFocusedKey
+ });
+ emitter.emit({
+ type: 'focus',
+ target: currentFocusedKey
+ });
+ }, [currentFocusedKey, emitter, navigation]);
+}
+//# sourceMappingURL=useFocusEvents.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEvents.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEvents.js.map
new file mode 100644
index 00000000..bbbe3671
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusEvents.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationContext","useFocusEvents","state","emitter","navigation","useContext","lastFocusedKeyRef","useRef","currentFocusedKey","routes","index","key","useEffect","addListener","current","emit","type","target","undefined","lastFocusedKey","isFocused"],"sourceRoot":"../../src","sources":["useFocusEvents.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,iBAAiB,MAAM,qBAAqB;AASnD;AACA;AACA;AACA,eAAe,SAASC,cAAc,OAGnB;EAAA,IAHmD;IACpEC,KAAK;IACLC;EACc,CAAC;EACf,MAAMC,UAAU,GAAGL,KAAK,CAACM,UAAU,CAACL,iBAAiB,CAAC;EACtD,MAAMM,iBAAiB,GAAGP,KAAK,CAACQ,MAAM,EAAsB;EAE5D,MAAMC,iBAAiB,GAAGN,KAAK,CAACO,MAAM,CAACP,KAAK,CAACQ,KAAK,CAAC,CAACC,GAAG;;EAEvD;EACA;EACAZ,KAAK,CAACa,SAAS,CACb,MACER,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAES,WAAW,CAAC,OAAO,EAAE,MAAM;IACrCP,iBAAiB,CAACQ,OAAO,GAAGN,iBAAiB;IAC7CL,OAAO,CAACY,IAAI,CAAC;MAAEC,IAAI,EAAE,OAAO;MAAEC,MAAM,EAAET;IAAkB,CAAC,CAAC;EAC5D,CAAC,CAAC,EACJ,CAACA,iBAAiB,EAAEL,OAAO,EAAEC,UAAU,CAAC,CACzC;EAEDL,KAAK,CAACa,SAAS,CACb,MACER,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAES,WAAW,CAAC,MAAM,EAAE,MAAM;IACpCP,iBAAiB,CAACQ,OAAO,GAAGI,SAAS;IACrCf,OAAO,CAACY,IAAI,CAAC;MAAEC,IAAI,EAAE,MAAM;MAAEC,MAAM,EAAET;IAAkB,CAAC,CAAC;EAC3D,CAAC,CAAC,EACJ,CAACA,iBAAiB,EAAEL,OAAO,EAAEC,UAAU,CAAC,CACzC;EAEDL,KAAK,CAACa,SAAS,CAAC,MAAM;IACpB,MAAMO,cAAc,GAAGb,iBAAiB,CAACQ,OAAO;IAEhDR,iBAAiB,CAACQ,OAAO,GAAGN,iBAAiB;;IAE7C;IACA;IACA,IAAIW,cAAc,KAAKD,SAAS,IAAI,CAACd,UAAU,EAAE;MAC/CD,OAAO,CAACY,IAAI,CAAC;QAAEC,IAAI,EAAE,OAAO;QAAEC,MAAM,EAAET;MAAkB,CAAC,CAAC;IAC5D;;IAEA;IACA;IACA,IACEW,cAAc,KAAKX,iBAAiB,IACpC,EAAEJ,UAAU,GAAGA,UAAU,CAACgB,SAAS,EAAE,GAAG,IAAI,CAAC,EAC7C;MACA;IACF;IAEA,IAAID,cAAc,KAAKD,SAAS,EAAE;MAChC;MACA;IACF;IAEAf,OAAO,CAACY,IAAI,CAAC;MAAEC,IAAI,EAAE,MAAM;MAAEC,MAAM,EAAEE;IAAe,CAAC,CAAC;IACtDhB,OAAO,CAACY,IAAI,CAAC;MAAEC,IAAI,EAAE,OAAO;MAAEC,MAAM,EAAET;IAAkB,CAAC,CAAC;EAC5D,CAAC,EAAE,CAACA,iBAAiB,EAAEL,OAAO,EAAEC,UAAU,CAAC,CAAC;AAC9C"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusedListenersChildrenAdapter.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusedListenersChildrenAdapter.js
new file mode 100644
index 00000000..470f51eb
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusedListenersChildrenAdapter.js
@@ -0,0 +1,41 @@
+import * as React from 'react';
+import NavigationBuilderContext from './NavigationBuilderContext';
+/**
+ * Hook for passing focus callback to children
+ */
+export default function useFocusedListenersChildrenAdapter(_ref) {
+ let {
+ navigation,
+ focusedListeners
+ } = _ref;
+ const {
+ addListener
+ } = React.useContext(NavigationBuilderContext);
+ const listener = React.useCallback(callback => {
+ if (navigation.isFocused()) {
+ for (const listener of focusedListeners) {
+ const {
+ handled,
+ result
+ } = listener(callback);
+ if (handled) {
+ return {
+ handled,
+ result
+ };
+ }
+ }
+ return {
+ handled: true,
+ result: callback(navigation)
+ };
+ } else {
+ return {
+ handled: false,
+ result: null
+ };
+ }
+ }, [focusedListeners, navigation]);
+ React.useEffect(() => addListener === null || addListener === void 0 ? void 0 : addListener('focus', listener), [addListener, listener]);
+}
+//# sourceMappingURL=useFocusedListenersChildrenAdapter.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusedListenersChildrenAdapter.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusedListenersChildrenAdapter.js.map
new file mode 100644
index 00000000..4e6f4c57
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useFocusedListenersChildrenAdapter.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationBuilderContext","useFocusedListenersChildrenAdapter","navigation","focusedListeners","addListener","useContext","listener","useCallback","callback","isFocused","handled","result","useEffect"],"sourceRoot":"../../src","sources":["useFocusedListenersChildrenAdapter.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,wBAAwB,MAGxB,4BAA4B;AAQnC;AACA;AACA;AACA,eAAe,SAASC,kCAAkC,OAG9C;EAAA,IAH+C;IACzDC,UAAU;IACVC;EACO,CAAC;EACR,MAAM;IAAEC;EAAY,CAAC,GAAGL,KAAK,CAACM,UAAU,CAACL,wBAAwB,CAAC;EAElE,MAAMM,QAAQ,GAAGP,KAAK,CAACQ,WAAW,CAC/BC,QAAwC,IAAK;IAC5C,IAAIN,UAAU,CAACO,SAAS,EAAE,EAAE;MAC1B,KAAK,MAAMH,QAAQ,IAAIH,gBAAgB,EAAE;QACvC,MAAM;UAAEO,OAAO;UAAEC;QAAO,CAAC,GAAGL,QAAQ,CAACE,QAAQ,CAAC;QAE9C,IAAIE,OAAO,EAAE;UACX,OAAO;YAAEA,OAAO;YAAEC;UAAO,CAAC;QAC5B;MACF;MAEA,OAAO;QAAED,OAAO,EAAE,IAAI;QAAEC,MAAM,EAAEH,QAAQ,CAACN,UAAU;MAAE,CAAC;IACxD,CAAC,MAAM;MACL,OAAO;QAAEQ,OAAO,EAAE,KAAK;QAAEC,MAAM,EAAE;MAAK,CAAC;IACzC;EACF,CAAC,EACD,CAACR,gBAAgB,EAAED,UAAU,CAAC,CAC/B;EAEDH,KAAK,CAACa,SAAS,CACb,MAAMR,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAG,OAAO,EAAEE,QAAQ,CAAC,EACtC,CAACF,WAAW,EAAEE,QAAQ,CAAC,CACxB;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useIsFocused.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useIsFocused.js
new file mode 100644
index 00000000..df834cef
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useIsFocused.js
@@ -0,0 +1,32 @@
+import * as React from 'react';
+import { useState } from 'react';
+import useNavigation from './useNavigation';
+
+/**
+ * Hook to get the current focus state of the screen. Returns a `true` if screen is focused, otherwise `false`.
+ * This can be used if a component needs to render something based on the focus state.
+ */
+export default function useIsFocused() {
+ const navigation = useNavigation();
+ const [isFocused, setIsFocused] = useState(navigation.isFocused);
+ const valueToReturn = navigation.isFocused();
+ if (isFocused !== valueToReturn) {
+ // If the value has changed since the last render, we need to update it.
+ // This could happen if we missed an update from the event listeners during re-render.
+ // React will process this update immediately, so the old subscription value won't be committed.
+ // It is still nice to avoid returning a mismatched value though, so let's override the return value.
+ // This is the same logic as in https://github.com/facebook/react/tree/master/packages/use-subscription
+ setIsFocused(valueToReturn);
+ }
+ React.useEffect(() => {
+ const unsubscribeFocus = navigation.addListener('focus', () => setIsFocused(true));
+ const unsubscribeBlur = navigation.addListener('blur', () => setIsFocused(false));
+ return () => {
+ unsubscribeFocus();
+ unsubscribeBlur();
+ };
+ }, [navigation]);
+ React.useDebugValue(valueToReturn);
+ return valueToReturn;
+}
+//# sourceMappingURL=useIsFocused.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useIsFocused.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useIsFocused.js.map
new file mode 100644
index 00000000..2ec306a0
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useIsFocused.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","useState","useNavigation","useIsFocused","navigation","isFocused","setIsFocused","valueToReturn","useEffect","unsubscribeFocus","addListener","unsubscribeBlur","useDebugValue"],"sourceRoot":"../../src","sources":["useIsFocused.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAQ,OAAO;AAEhC,OAAOC,aAAa,MAAM,iBAAiB;;AAE3C;AACA;AACA;AACA;AACA,eAAe,SAASC,YAAY,GAAY;EAC9C,MAAMC,UAAU,GAAGF,aAAa,EAAE;EAClC,MAAM,CAACG,SAAS,EAAEC,YAAY,CAAC,GAAGL,QAAQ,CAACG,UAAU,CAACC,SAAS,CAAC;EAEhE,MAAME,aAAa,GAAGH,UAAU,CAACC,SAAS,EAAE;EAE5C,IAAIA,SAAS,KAAKE,aAAa,EAAE;IAC/B;IACA;IACA;IACA;IACA;IACAD,YAAY,CAACC,aAAa,CAAC;EAC7B;EAEAP,KAAK,CAACQ,SAAS,CAAC,MAAM;IACpB,MAAMC,gBAAgB,GAAGL,UAAU,CAACM,WAAW,CAAC,OAAO,EAAE,MACvDJ,YAAY,CAAC,IAAI,CAAC,CACnB;IAED,MAAMK,eAAe,GAAGP,UAAU,CAACM,WAAW,CAAC,MAAM,EAAE,MACrDJ,YAAY,CAAC,KAAK,CAAC,CACpB;IAED,OAAO,MAAM;MACXG,gBAAgB,EAAE;MAClBE,eAAe,EAAE;IACnB,CAAC;EACH,CAAC,EAAE,CAACP,UAAU,CAAC,CAAC;EAEhBJ,KAAK,CAACY,aAAa,CAACL,aAAa,CAAC;EAElC,OAAOA,aAAa;AACtB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useKeyedChildListeners.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useKeyedChildListeners.js
new file mode 100644
index 00000000..d8d417fe
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useKeyedChildListeners.js
@@ -0,0 +1,25 @@
+import * as React from 'react';
+/**
+ * Hook which lets child navigators add getters to be called for obtaining rehydrated state.
+ */
+export default function useKeyedChildListeners() {
+ const {
+ current: keyedListeners
+ } = React.useRef(Object.assign(Object.create(null), {
+ getState: {},
+ beforeRemove: {}
+ }));
+ const addKeyedListener = React.useCallback((type, key, listener) => {
+ // @ts-expect-error: according to ref stated above you can use `key` to index type
+ keyedListeners[type][key] = listener;
+ return () => {
+ // @ts-expect-error: according to ref stated above you can use `key` to index type
+ keyedListeners[type][key] = undefined;
+ };
+ }, [keyedListeners]);
+ return {
+ keyedListeners,
+ addKeyedListener
+ };
+}
+//# sourceMappingURL=useKeyedChildListeners.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useKeyedChildListeners.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useKeyedChildListeners.js.map
new file mode 100644
index 00000000..3613f10d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useKeyedChildListeners.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","useKeyedChildListeners","current","keyedListeners","useRef","Object","assign","create","getState","beforeRemove","addKeyedListener","useCallback","type","key","listener","undefined"],"sourceRoot":"../../src","sources":["useKeyedChildListeners.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAI9B;AACA;AACA;AACA,eAAe,SAASC,sBAAsB,GAAG;EAC/C,MAAM;IAAEC,OAAO,EAAEC;EAAe,CAAC,GAAGH,KAAK,CAACI,MAAM,CAM9CC,MAAM,CAACC,MAAM,CAACD,MAAM,CAACE,MAAM,CAAC,IAAI,CAAC,EAAE;IACjCC,QAAQ,EAAE,CAAC,CAAC;IACZC,YAAY,EAAE,CAAC;EACjB,CAAC,CAAC,CACH;EAED,MAAMC,gBAAgB,GAAGV,KAAK,CAACW,WAAW,CACxC,CACEC,IAAO,EACPC,GAAW,EACXC,QAA6B,KAC1B;IACH;IACAX,cAAc,CAACS,IAAI,CAAC,CAACC,GAAG,CAAC,GAAGC,QAAQ;IAEpC,OAAO,MAAM;MACX;MACAX,cAAc,CAACS,IAAI,CAAC,CAACC,GAAG,CAAC,GAAGE,SAAS;IACvC,CAAC;EACH,CAAC,EACD,CAACZ,cAAc,CAAC,CACjB;EAED,OAAO;IACLA,cAAc;IACdO;EACF,CAAC;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigation.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigation.js
new file mode 100644
index 00000000..c86bbecc
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigation.js
@@ -0,0 +1,19 @@
+import * as React from 'react';
+import NavigationContainerRefContext from './NavigationContainerRefContext';
+import NavigationContext from './NavigationContext';
+/**
+ * Hook to access the navigation prop of the parent screen anywhere.
+ *
+ * @returns Navigation prop of the parent screen.
+ */
+export default function useNavigation() {
+ const root = React.useContext(NavigationContainerRefContext);
+ const navigation = React.useContext(NavigationContext);
+ if (navigation === undefined && root === undefined) {
+ throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?");
+ }
+
+ // FIXME: Figure out a better way to do this
+ return navigation ?? root;
+}
+//# sourceMappingURL=useNavigation.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigation.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigation.js.map
new file mode 100644
index 00000000..434709f0
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigation.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationContainerRefContext","NavigationContext","useNavigation","root","useContext","navigation","undefined","Error"],"sourceRoot":"../../src","sources":["useNavigation.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,6BAA6B,MAAM,iCAAiC;AAC3E,OAAOC,iBAAiB,MAAM,qBAAqB;AAGnD;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,aAAa,GAE9B;EACL,MAAMC,IAAI,GAAGJ,KAAK,CAACK,UAAU,CAACJ,6BAA6B,CAAC;EAC5D,MAAMK,UAAU,GAAGN,KAAK,CAACK,UAAU,CAACH,iBAAiB,CAAC;EAEtD,IAAII,UAAU,KAAKC,SAAS,IAAIH,IAAI,KAAKG,SAAS,EAAE;IAClD,MAAM,IAAIC,KAAK,CACb,kFAAkF,CACnF;EACH;;EAEA;EACA,OAAQF,UAAU,IAAIF,IAAI;AAC5B"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationBuilder.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationBuilder.js
new file mode 100644
index 00000000..276ec9f0
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationBuilder.js
@@ -0,0 +1,449 @@
+import { CommonActions } from '@react-navigation/routers';
+import * as React from 'react';
+import { isValidElementType } from 'react-is';
+import Group from './Group';
+import isArrayEqual from './isArrayEqual';
+import isRecordEqual from './isRecordEqual';
+import NavigationHelpersContext from './NavigationHelpersContext';
+import NavigationRouteContext from './NavigationRouteContext';
+import NavigationStateContext from './NavigationStateContext';
+import PreventRemoveProvider from './PreventRemoveProvider';
+import Screen from './Screen';
+import { PrivateValueStore } from './types';
+import useChildListeners from './useChildListeners';
+import useComponent from './useComponent';
+import useCurrentRender from './useCurrentRender';
+import useDescriptors from './useDescriptors';
+import useEventEmitter from './useEventEmitter';
+import useFocusedListenersChildrenAdapter from './useFocusedListenersChildrenAdapter';
+import useFocusEvents from './useFocusEvents';
+import useKeyedChildListeners from './useKeyedChildListeners';
+import useNavigationHelpers from './useNavigationHelpers';
+import useOnAction from './useOnAction';
+import useOnGetState from './useOnGetState';
+import useOnRouteFocus from './useOnRouteFocus';
+import useRegisterNavigator from './useRegisterNavigator';
+import useScheduleUpdate from './useScheduleUpdate';
+
+// This is to make TypeScript compiler happy
+// eslint-disable-next-line babel/no-unused-expressions
+PrivateValueStore;
+const isValidKey = key => key === undefined || typeof key === 'string' && key !== '';
+
+/**
+ * Extract route config object from React children elements.
+ *
+ * @param children React Elements to extract the config from.
+ */
+const getRouteConfigsFromChildren = (children, groupKey, groupOptions) => {
+ const configs = React.Children.toArray(children).reduce((acc, child) => {
+ var _child$type, _child$props;
+ if ( /*#__PURE__*/React.isValidElement(child)) {
+ if (child.type === Screen) {
+ // We can only extract the config from `Screen` elements
+ // If something else was rendered, it's probably a bug
+
+ if (!isValidKey(child.props.navigationKey)) {
+ throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(child.props.navigationKey)}) for the screen '${child.props.name}'. It must be a non-empty string or 'undefined'.`);
+ }
+ acc.push({
+ keys: [groupKey, child.props.navigationKey],
+ options: groupOptions,
+ props: child.props
+ });
+ return acc;
+ }
+ if (child.type === React.Fragment || child.type === Group) {
+ if (!isValidKey(child.props.navigationKey)) {
+ throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(child.props.navigationKey)}) for the group. It must be a non-empty string or 'undefined'.`);
+ }
+
+ // When we encounter a fragment or group, we need to dive into its children to extract the configs
+ // This is handy to conditionally define a group of screens
+ acc.push(...getRouteConfigsFromChildren(child.props.children, child.props.navigationKey, child.type !== Group ? groupOptions : groupOptions != null ? [...groupOptions, child.props.screenOptions] : [child.props.screenOptions]));
+ return acc;
+ }
+ }
+ throw new Error(`A navigator can only contain 'Screen', 'Group' or 'React.Fragment' as its direct children (found ${/*#__PURE__*/React.isValidElement(child) ? `'${typeof child.type === 'string' ? child.type : (_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.name}'${(_child$props = child.props) !== null && _child$props !== void 0 && _child$props.name ? ` for the screen '${child.props.name}'` : ''}` : typeof child === 'object' ? JSON.stringify(child) : `'${String(child)}'`}). To render this component in the navigator, pass it in the 'component' prop to 'Screen'.`);
+ }, []);
+ if (process.env.NODE_ENV !== 'production') {
+ configs.forEach(config => {
+ const {
+ name,
+ children,
+ component,
+ getComponent
+ } = config.props;
+ if (typeof name !== 'string' || !name) {
+ throw new Error(`Got an invalid name (${JSON.stringify(name)}) for the screen. It must be a non-empty string.`);
+ }
+ if (children != null || component !== undefined || getComponent !== undefined) {
+ if (children != null && component !== undefined) {
+ throw new Error(`Got both 'component' and 'children' props for the screen '${name}'. You must pass only one of them.`);
+ }
+ if (children != null && getComponent !== undefined) {
+ throw new Error(`Got both 'getComponent' and 'children' props for the screen '${name}'. You must pass only one of them.`);
+ }
+ if (component !== undefined && getComponent !== undefined) {
+ throw new Error(`Got both 'component' and 'getComponent' props for the screen '${name}'. You must pass only one of them.`);
+ }
+ if (children != null && typeof children !== 'function') {
+ throw new Error(`Got an invalid value for 'children' prop for the screen '${name}'. It must be a function returning a React Element.`);
+ }
+ if (component !== undefined && !isValidElementType(component)) {
+ throw new Error(`Got an invalid value for 'component' prop for the screen '${name}'. It must be a valid React Component.`);
+ }
+ if (getComponent !== undefined && typeof getComponent !== 'function') {
+ throw new Error(`Got an invalid value for 'getComponent' prop for the screen '${name}'. It must be a function returning a React Component.`);
+ }
+ if (typeof component === 'function') {
+ if (component.name === 'component') {
+ // Inline anonymous functions passed in the `component` prop will have the name of the prop
+ // It's relatively safe to assume that it's not a component since it should also have PascalCase name
+ // We won't catch all scenarios here, but this should catch a good chunk of incorrect use.
+ console.warn(`Looks like you're passing an inline function for 'component' prop for the screen '${name}' (e.g. component={() => }). Passing an inline function will cause the component state to be lost on re-render and cause perf issues since it's re-created every render. You can pass the function as children to 'Screen' instead to achieve the desired behaviour.`);
+ } else if (/^[a-z]/.test(component.name)) {
+ console.warn(`Got a component with the name '${component.name}' for the screen '${name}'. React Components must start with an uppercase letter. If you're passing a regular function and not a component, pass it as children to 'Screen' instead. Otherwise capitalize your component's name.`);
+ }
+ }
+ } else {
+ throw new Error(`Couldn't find a 'component', 'getComponent' or 'children' prop for the screen '${name}'. This can happen if you passed 'undefined'. You likely forgot to export your component from the file it's defined in, or mixed up default import and named import when importing.`);
+ }
+ });
+ }
+ return configs;
+};
+
+/**
+ * Hook for building navigators.
+ *
+ * @param createRouter Factory method which returns router object.
+ * @param options Options object containing `children` and additional options for the router.
+ * @returns An object containing `state`, `navigation`, `descriptors` objects.
+ */
+export default function useNavigationBuilder(createRouter, options) {
+ const navigatorKey = useRegisterNavigator();
+ const route = React.useContext(NavigationRouteContext);
+ const {
+ children,
+ screenListeners,
+ ...rest
+ } = options;
+ const {
+ current: router
+ } = React.useRef(createRouter({
+ ...rest,
+ ...(route !== null && route !== void 0 && route.params && route.params.state == null && route.params.initial !== false && typeof route.params.screen === 'string' ? {
+ initialRouteName: route.params.screen
+ } : null)
+ }));
+ const routeConfigs = getRouteConfigsFromChildren(children);
+ const screens = routeConfigs.reduce((acc, config) => {
+ if (config.props.name in acc) {
+ throw new Error(`A navigator cannot contain multiple 'Screen' components with the same name (found duplicate screen named '${config.props.name}')`);
+ }
+ acc[config.props.name] = config;
+ return acc;
+ }, {});
+ const routeNames = routeConfigs.map(config => config.props.name);
+ const routeKeyList = routeNames.reduce((acc, curr) => {
+ acc[curr] = screens[curr].keys.map(key => key ?? '').join(':');
+ return acc;
+ }, {});
+ const routeParamList = routeNames.reduce((acc, curr) => {
+ const {
+ initialParams
+ } = screens[curr].props;
+ acc[curr] = initialParams;
+ return acc;
+ }, {});
+ const routeGetIdList = routeNames.reduce((acc, curr) => Object.assign(acc, {
+ [curr]: screens[curr].props.getId
+ }), {});
+ if (!routeNames.length) {
+ throw new Error("Couldn't find any screens for the navigator. Have you defined any screens as its children?");
+ }
+ const isStateValid = React.useCallback(state => state.type === undefined || state.type === router.type, [router.type]);
+ const isStateInitialized = React.useCallback(state => state !== undefined && state.stale === false && isStateValid(state), [isStateValid]);
+ const {
+ state: currentState,
+ getState: getCurrentState,
+ setState: setCurrentState,
+ setKey,
+ getKey,
+ getIsInitial
+ } = React.useContext(NavigationStateContext);
+ const stateCleanedUp = React.useRef(false);
+ const cleanUpState = React.useCallback(() => {
+ setCurrentState(undefined);
+ stateCleanedUp.current = true;
+ }, [setCurrentState]);
+ const setState = React.useCallback(state => {
+ if (stateCleanedUp.current) {
+ // State might have been already cleaned up due to unmount
+ // We do not want to expose API allowing to override this
+ // This would lead to old data preservation on main navigator unmount
+ return;
+ }
+ setCurrentState(state);
+ }, [setCurrentState]);
+ const [initializedState, isFirstStateInitialization] = React.useMemo(() => {
+ var _route$params4;
+ const initialRouteParamList = routeNames.reduce((acc, curr) => {
+ var _route$params, _route$params2, _route$params3;
+ const {
+ initialParams
+ } = screens[curr].props;
+ const initialParamsFromParams = (route === null || route === void 0 ? void 0 : (_route$params = route.params) === null || _route$params === void 0 ? void 0 : _route$params.state) == null && (route === null || route === void 0 ? void 0 : (_route$params2 = route.params) === null || _route$params2 === void 0 ? void 0 : _route$params2.initial) !== false && (route === null || route === void 0 ? void 0 : (_route$params3 = route.params) === null || _route$params3 === void 0 ? void 0 : _route$params3.screen) === curr ? route.params.params : undefined;
+ acc[curr] = initialParams !== undefined || initialParamsFromParams !== undefined ? {
+ ...initialParams,
+ ...initialParamsFromParams
+ } : undefined;
+ return acc;
+ }, {});
+
+ // If the current state isn't initialized on first render, we initialize it
+ // We also need to re-initialize it if the state passed from parent was changed (maybe due to reset)
+ // Otherwise assume that the state was provided as initial state
+ // So we need to rehydrate it to make it usable
+ if ((currentState === undefined || !isStateValid(currentState)) && (route === null || route === void 0 ? void 0 : (_route$params4 = route.params) === null || _route$params4 === void 0 ? void 0 : _route$params4.state) == null) {
+ return [router.getInitialState({
+ routeNames,
+ routeParamList: initialRouteParamList,
+ routeGetIdList
+ }), true];
+ } else {
+ var _route$params5;
+ return [router.getRehydratedState((route === null || route === void 0 ? void 0 : (_route$params5 = route.params) === null || _route$params5 === void 0 ? void 0 : _route$params5.state) ?? currentState, {
+ routeNames,
+ routeParamList: initialRouteParamList,
+ routeGetIdList
+ }), false];
+ }
+ // We explicitly don't include routeNames, route.params etc. in the dep list
+ // below. We want to avoid forcing a new state to be calculated in those cases
+ // Instead, we handle changes to these in the nextState code below. Note
+ // that some changes to routeConfigs are explicitly ignored, such as changes
+ // to initialParams
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [currentState, router, isStateValid]);
+ const previousRouteKeyListRef = React.useRef(routeKeyList);
+ React.useEffect(() => {
+ previousRouteKeyListRef.current = routeKeyList;
+ });
+ const previousRouteKeyList = previousRouteKeyListRef.current;
+ let state =
+ // If the state isn't initialized, or stale, use the state we initialized instead
+ // The state won't update until there's a change needed in the state we have initalized locally
+ // So it'll be `undefined` or stale until the first navigation event happens
+ isStateInitialized(currentState) ? currentState : initializedState;
+ let nextState = state;
+ if (!isArrayEqual(state.routeNames, routeNames) || !isRecordEqual(routeKeyList, previousRouteKeyList)) {
+ // When the list of route names change, the router should handle it to remove invalid routes
+ nextState = router.getStateForRouteNamesChange(state, {
+ routeNames,
+ routeParamList,
+ routeGetIdList,
+ routeKeyChanges: Object.keys(routeKeyList).filter(name => previousRouteKeyList.hasOwnProperty(name) && routeKeyList[name] !== previousRouteKeyList[name])
+ });
+ }
+ const previousNestedParamsRef = React.useRef(route === null || route === void 0 ? void 0 : route.params);
+ React.useEffect(() => {
+ previousNestedParamsRef.current = route === null || route === void 0 ? void 0 : route.params;
+ }, [route === null || route === void 0 ? void 0 : route.params]);
+ if (route !== null && route !== void 0 && route.params) {
+ const previousParams = previousNestedParamsRef.current;
+ let action;
+ if (typeof route.params.state === 'object' && route.params.state != null && route.params !== previousParams) {
+ // If the route was updated with new state, we should reset to it
+ action = CommonActions.reset(route.params.state);
+ } else if (typeof route.params.screen === 'string' && (route.params.initial === false && isFirstStateInitialization || route.params !== previousParams)) {
+ // If the route was updated with new screen name and/or params, we should navigate there
+ action = CommonActions.navigate({
+ name: route.params.screen,
+ params: route.params.params,
+ path: route.params.path
+ });
+ }
+
+ // The update should be limited to current navigator only, so we call the router manually
+ const updatedState = action ? router.getStateForAction(nextState, action, {
+ routeNames,
+ routeParamList,
+ routeGetIdList
+ }) : null;
+ nextState = updatedState !== null ? router.getRehydratedState(updatedState, {
+ routeNames,
+ routeParamList,
+ routeGetIdList
+ }) : nextState;
+ }
+ const shouldUpdate = state !== nextState;
+ useScheduleUpdate(() => {
+ if (shouldUpdate) {
+ // If the state needs to be updated, we'll schedule an update
+ setState(nextState);
+ }
+ });
+
+ // The up-to-date state will come in next render, but we don't need to wait for it
+ // We can't use the outdated state since the screens have changed, which will cause error due to mismatched config
+ // So we override the state object we return to use the latest state as soon as possible
+ state = nextState;
+ React.useEffect(() => {
+ setKey(navigatorKey);
+ if (!getIsInitial()) {
+ // If it's not initial render, we need to update the state
+ // This will make sure that our container gets notifier of state changes due to new mounts
+ // This is necessary for proper screen tracking, URL updates etc.
+ setState(nextState);
+ }
+ return () => {
+ // We need to clean up state for this navigator on unmount
+ // We do it in a timeout because we need to detect if another navigator mounted in the meantime
+ // For example, if another navigator has started rendering, we should skip cleanup
+ // Otherwise, our cleanup step will cleanup state for the other navigator and re-initialize it
+ setTimeout(() => {
+ if (getCurrentState() !== undefined && getKey() === navigatorKey) {
+ cleanUpState();
+ }
+ }, 0);
+ };
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
+
+ // We initialize this ref here to avoid a new getState getting initialized
+ // whenever initializedState changes. We want getState to have access to the
+ // latest initializedState, but don't need it to change when that happens
+ const initializedStateRef = React.useRef();
+ initializedStateRef.current = initializedState;
+ const getState = React.useCallback(() => {
+ const currentState = getCurrentState();
+ return isStateInitialized(currentState) ? currentState : initializedStateRef.current;
+ }, [getCurrentState, isStateInitialized]);
+ const emitter = useEventEmitter(e => {
+ let routeNames = [];
+ let route;
+ if (e.target) {
+ var _route;
+ route = state.routes.find(route => route.key === e.target);
+ if ((_route = route) !== null && _route !== void 0 && _route.name) {
+ routeNames.push(route.name);
+ }
+ } else {
+ route = state.routes[state.index];
+ routeNames.push(...Object.keys(screens).filter(name => {
+ var _route2;
+ return ((_route2 = route) === null || _route2 === void 0 ? void 0 : _route2.name) === name;
+ }));
+ }
+ if (route == null) {
+ return;
+ }
+ const navigation = descriptors[route.key].navigation;
+ const listeners = [].concat(
+ // Get an array of listeners for all screens + common listeners on navigator
+ ...[screenListeners, ...routeNames.map(name => {
+ const {
+ listeners
+ } = screens[name].props;
+ return listeners;
+ })].map(listeners => {
+ const map = typeof listeners === 'function' ? listeners({
+ route: route,
+ navigation
+ }) : listeners;
+ return map ? Object.keys(map).filter(type => type === e.type).map(type => map === null || map === void 0 ? void 0 : map[type]) : undefined;
+ }))
+ // We don't want same listener to be called multiple times for same event
+ // So we remove any duplicate functions from the array
+ .filter((cb, i, self) => cb && self.lastIndexOf(cb) === i);
+ listeners.forEach(listener => listener === null || listener === void 0 ? void 0 : listener(e));
+ });
+ useFocusEvents({
+ state,
+ emitter
+ });
+ React.useEffect(() => {
+ emitter.emit({
+ type: 'state',
+ data: {
+ state
+ }
+ });
+ }, [emitter, state]);
+ const {
+ listeners: childListeners,
+ addListener
+ } = useChildListeners();
+ const {
+ keyedListeners,
+ addKeyedListener
+ } = useKeyedChildListeners();
+ const onAction = useOnAction({
+ router,
+ getState,
+ setState,
+ key: route === null || route === void 0 ? void 0 : route.key,
+ actionListeners: childListeners.action,
+ beforeRemoveListeners: keyedListeners.beforeRemove,
+ routerConfigOptions: {
+ routeNames,
+ routeParamList,
+ routeGetIdList
+ },
+ emitter
+ });
+ const onRouteFocus = useOnRouteFocus({
+ router,
+ key: route === null || route === void 0 ? void 0 : route.key,
+ getState,
+ setState
+ });
+ const navigation = useNavigationHelpers({
+ id: options.id,
+ onAction,
+ getState,
+ emitter,
+ router
+ });
+ useFocusedListenersChildrenAdapter({
+ navigation,
+ focusedListeners: childListeners.focus
+ });
+ useOnGetState({
+ getState,
+ getStateListeners: keyedListeners.getState
+ });
+ const descriptors = useDescriptors({
+ state,
+ screens,
+ navigation,
+ screenOptions: options.screenOptions,
+ defaultScreenOptions: options.defaultScreenOptions,
+ onAction,
+ getState,
+ setState,
+ onRouteFocus,
+ addListener,
+ addKeyedListener,
+ router,
+ // @ts-expect-error: this should have both core and custom events, but too much work right now
+ emitter
+ });
+ useCurrentRender({
+ state,
+ navigation,
+ descriptors
+ });
+ const NavigationContent = useComponent(children => /*#__PURE__*/React.createElement(NavigationHelpersContext.Provider, {
+ value: navigation
+ }, /*#__PURE__*/React.createElement(PreventRemoveProvider, null, children)));
+ return {
+ state,
+ navigation,
+ descriptors,
+ NavigationContent
+ };
+}
+//# sourceMappingURL=useNavigationBuilder.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationBuilder.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationBuilder.js.map
new file mode 100644
index 00000000..e153eb12
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationBuilder.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["CommonActions","React","isValidElementType","Group","isArrayEqual","isRecordEqual","NavigationHelpersContext","NavigationRouteContext","NavigationStateContext","PreventRemoveProvider","Screen","PrivateValueStore","useChildListeners","useComponent","useCurrentRender","useDescriptors","useEventEmitter","useFocusedListenersChildrenAdapter","useFocusEvents","useKeyedChildListeners","useNavigationHelpers","useOnAction","useOnGetState","useOnRouteFocus","useRegisterNavigator","useScheduleUpdate","isValidKey","key","undefined","getRouteConfigsFromChildren","children","groupKey","groupOptions","configs","Children","toArray","reduce","acc","child","isValidElement","type","props","navigationKey","Error","JSON","stringify","name","push","keys","options","Fragment","screenOptions","String","process","env","NODE_ENV","forEach","config","component","getComponent","console","warn","test","useNavigationBuilder","createRouter","navigatorKey","route","useContext","screenListeners","rest","current","router","useRef","params","state","initial","screen","initialRouteName","routeConfigs","screens","routeNames","map","routeKeyList","curr","join","routeParamList","initialParams","routeGetIdList","Object","assign","getId","length","isStateValid","useCallback","isStateInitialized","stale","currentState","getState","getCurrentState","setState","setCurrentState","setKey","getKey","getIsInitial","stateCleanedUp","cleanUpState","initializedState","isFirstStateInitialization","useMemo","initialRouteParamList","initialParamsFromParams","getInitialState","getRehydratedState","previousRouteKeyListRef","useEffect","previousRouteKeyList","nextState","getStateForRouteNamesChange","routeKeyChanges","filter","hasOwnProperty","previousNestedParamsRef","previousParams","action","reset","navigate","path","updatedState","getStateForAction","shouldUpdate","setTimeout","initializedStateRef","emitter","e","target","routes","find","index","navigation","descriptors","listeners","concat","cb","i","self","lastIndexOf","listener","emit","data","childListeners","addListener","keyedListeners","addKeyedListener","onAction","actionListeners","beforeRemoveListeners","beforeRemove","routerConfigOptions","onRouteFocus","id","focusedListeners","focus","getStateListeners","defaultScreenOptions","NavigationContent"],"sourceRoot":"../../src","sources":["useNavigationBuilder.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationCache.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationCache.js
new file mode 100644
index 00000000..c4d65c65
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationCache.js
@@ -0,0 +1,117 @@
+import { CommonActions } from '@react-navigation/routers';
+import * as React from 'react';
+import NavigationBuilderContext from './NavigationBuilderContext';
+/**
+ * Hook to cache navigation objects for each screen in the navigator.
+ * It's important to cache them to make sure navigation objects don't change between renders.
+ * This lets us apply optimizations like `React.memo` to minimize re-rendering screens.
+ */
+export default function useNavigationCache(_ref) {
+ let {
+ state,
+ getState,
+ navigation,
+ setOptions,
+ router,
+ emitter
+ } = _ref;
+ const {
+ stackRef
+ } = React.useContext(NavigationBuilderContext);
+
+ // Cache object which holds navigation objects for each screen
+ // We use `React.useMemo` instead of `React.useRef` coz we want to invalidate it when deps change
+ // In reality, these deps will rarely change, if ever
+ const cache = React.useMemo(() => ({
+ current: {}
+ }),
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ [getState, navigation, setOptions, router, emitter]);
+ const actions = {
+ ...router.actionCreators,
+ ...CommonActions
+ };
+ cache.current = state.routes.reduce((acc, route) => {
+ const previous = cache.current[route.key];
+ if (previous) {
+ // If a cached navigation object already exists, reuse it
+ acc[route.key] = previous;
+ } else {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const {
+ emit,
+ ...rest
+ } = navigation;
+ const dispatch = thunk => {
+ const action = typeof thunk === 'function' ? thunk(getState()) : thunk;
+ if (action != null) {
+ navigation.dispatch({
+ source: route.key,
+ ...action
+ });
+ }
+ };
+ const withStack = callback => {
+ let isStackSet = false;
+ try {
+ if (process.env.NODE_ENV !== 'production' && stackRef && !stackRef.current) {
+ // Capture the stack trace for devtools
+ stackRef.current = new Error().stack;
+ isStackSet = true;
+ }
+ callback();
+ } finally {
+ if (isStackSet && stackRef) {
+ stackRef.current = undefined;
+ }
+ }
+ };
+ const helpers = Object.keys(actions).reduce((acc, name) => {
+ acc[name] = function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ return withStack(() =>
+ // @ts-expect-error: name is a valid key, but TypeScript is dumb
+ dispatch(actions[name](...args)));
+ };
+ return acc;
+ }, {});
+ acc[route.key] = {
+ ...rest,
+ ...helpers,
+ // FIXME: too much work to fix the types for now
+ ...emitter.create(route.key),
+ dispatch: thunk => withStack(() => dispatch(thunk)),
+ getParent: id => {
+ if (id !== undefined && id === rest.getId()) {
+ // If the passed id is the same as the current navigation id,
+ // we return the cached navigation object for the relevant route
+ return acc[route.key];
+ }
+ return rest.getParent(id);
+ },
+ setOptions: options => setOptions(o => ({
+ ...o,
+ [route.key]: {
+ ...o[route.key],
+ ...options
+ }
+ })),
+ isFocused: () => {
+ const state = getState();
+ if (state.routes[state.index].key !== route.key) {
+ return false;
+ }
+
+ // If the current screen is focused, we also need to check if parent navigator is focused
+ // This makes sure that we return the focus state in the whole tree, not just this navigator
+ return navigation ? navigation.isFocused() : true;
+ }
+ };
+ }
+ return acc;
+ }, {});
+ return cache.current;
+}
+//# sourceMappingURL=useNavigationCache.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationCache.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationCache.js.map
new file mode 100644
index 00000000..7c986301
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationCache.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["CommonActions","React","NavigationBuilderContext","useNavigationCache","state","getState","navigation","setOptions","router","emitter","stackRef","useContext","cache","useMemo","current","actions","actionCreators","routes","reduce","acc","route","previous","key","emit","rest","dispatch","thunk","action","source","withStack","callback","isStackSet","process","env","NODE_ENV","Error","stack","undefined","helpers","Object","keys","name","args","create","getParent","id","getId","options","o","isFocused","index"],"sourceRoot":"../../src","sources":["useNavigationCache.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationContainerRef.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationContainerRef.js
new file mode 100644
index 00000000..82b8aa1e
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationContainerRef.js
@@ -0,0 +1,10 @@
+import * as React from 'react';
+import createNavigationContainerRef from './createNavigationContainerRef';
+export default function useNavigationContainerRef() {
+ const navigation = React.useRef(null);
+ if (navigation.current == null) {
+ navigation.current = createNavigationContainerRef();
+ }
+ return navigation.current;
+}
+//# sourceMappingURL=useNavigationContainerRef.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationContainerRef.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationContainerRef.js.map
new file mode 100644
index 00000000..9bb4ea0f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationContainerRef.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","createNavigationContainerRef","useNavigationContainerRef","navigation","useRef","current"],"sourceRoot":"../../src","sources":["useNavigationContainerRef.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,4BAA4B,MAAM,gCAAgC;AAGzE,eAAe,SAASC,yBAAyB,GAEC;EAChD,MAAMC,UAAU,GACdH,KAAK,CAACI,MAAM,CAAsD,IAAI,CAAC;EAEzE,IAAID,UAAU,CAACE,OAAO,IAAI,IAAI,EAAE;IAC9BF,UAAU,CAACE,OAAO,GAAGJ,4BAA4B,EAAa;EAChE;EAEA,OAAOE,UAAU,CAACE,OAAO;AAC3B"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationHelpers.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationHelpers.js
new file mode 100644
index 00000000..946f49dd
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationHelpers.js
@@ -0,0 +1,72 @@
+import { CommonActions } from '@react-navigation/routers';
+import * as React from 'react';
+import NavigationContext from './NavigationContext';
+import { PrivateValueStore } from './types';
+import UnhandledActionContext from './UnhandledActionContext';
+// This is to make TypeScript compiler happy
+// eslint-disable-next-line babel/no-unused-expressions
+PrivateValueStore;
+/**
+ * Navigation object with helper methods to be used by a navigator.
+ * This object includes methods for common actions as well as methods the parent screen's navigation object.
+ */
+export default function useNavigationHelpers(_ref) {
+ let {
+ id: navigatorId,
+ onAction,
+ getState,
+ emitter,
+ router
+ } = _ref;
+ const onUnhandledAction = React.useContext(UnhandledActionContext);
+ const parentNavigationHelpers = React.useContext(NavigationContext);
+ return React.useMemo(() => {
+ const dispatch = op => {
+ const action = typeof op === 'function' ? op(getState()) : op;
+ const handled = onAction(action);
+ if (!handled) {
+ onUnhandledAction === null || onUnhandledAction === void 0 ? void 0 : onUnhandledAction(action);
+ }
+ };
+ const actions = {
+ ...router.actionCreators,
+ ...CommonActions
+ };
+ const helpers = Object.keys(actions).reduce((acc, name) => {
+ // @ts-expect-error: name is a valid key, but TypeScript is dumb
+ acc[name] = function () {
+ return dispatch(actions[name](...arguments));
+ };
+ return acc;
+ }, {});
+ const navigationHelpers = {
+ ...parentNavigationHelpers,
+ ...helpers,
+ dispatch,
+ emit: emitter.emit,
+ isFocused: parentNavigationHelpers ? parentNavigationHelpers.isFocused : () => true,
+ canGoBack: () => {
+ const state = getState();
+ return router.getStateForAction(state, CommonActions.goBack(), {
+ routeNames: state.routeNames,
+ routeParamList: {},
+ routeGetIdList: {}
+ }) !== null || (parentNavigationHelpers === null || parentNavigationHelpers === void 0 ? void 0 : parentNavigationHelpers.canGoBack()) || false;
+ },
+ getId: () => navigatorId,
+ getParent: id => {
+ if (id !== undefined) {
+ let current = navigationHelpers;
+ while (current && id !== current.getId()) {
+ current = current.getParent();
+ }
+ return current;
+ }
+ return parentNavigationHelpers;
+ },
+ getState
+ };
+ return navigationHelpers;
+ }, [navigatorId, emitter.emit, getState, onAction, onUnhandledAction, parentNavigationHelpers, router]);
+}
+//# sourceMappingURL=useNavigationHelpers.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationHelpers.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationHelpers.js.map
new file mode 100644
index 00000000..26cdaa30
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationHelpers.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["CommonActions","React","NavigationContext","PrivateValueStore","UnhandledActionContext","useNavigationHelpers","id","navigatorId","onAction","getState","emitter","router","onUnhandledAction","useContext","parentNavigationHelpers","useMemo","dispatch","op","action","handled","actions","actionCreators","helpers","Object","keys","reduce","acc","name","navigationHelpers","emit","isFocused","canGoBack","state","getStateForAction","goBack","routeNames","routeParamList","routeGetIdList","getId","getParent","undefined","current"],"sourceRoot":"../../src","sources":["useNavigationHelpers.tsx"],"mappings":"AAAA,SACEA,aAAa,QAKR,2BAA2B;AAClC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,SAA4BC,iBAAiB,QAAQ,SAAS;AAC9D,OAAOC,sBAAsB,MAAM,0BAA0B;AAG7D;AACA;AACAD,iBAAiB;AAUjB;AACA;AACA;AACA;AACA,eAAe,SAASE,oBAAoB,OAWjB;EAAA,IANzB;IACAC,EAAE,EAAEC,WAAW;IACfC,QAAQ;IACRC,QAAQ;IACRC,OAAO;IACPC;EACsB,CAAC;EACvB,MAAMC,iBAAiB,GAAGX,KAAK,CAACY,UAAU,CAACT,sBAAsB,CAAC;EAClE,MAAMU,uBAAuB,GAAGb,KAAK,CAACY,UAAU,CAACX,iBAAiB,CAAC;EAEnE,OAAOD,KAAK,CAACc,OAAO,CAAC,MAAM;IACzB,MAAMC,QAAQ,GAAIC,EAAuC,IAAK;MAC5D,MAAMC,MAAM,GAAG,OAAOD,EAAE,KAAK,UAAU,GAAGA,EAAE,CAACR,QAAQ,EAAE,CAAC,GAAGQ,EAAE;MAE7D,MAAME,OAAO,GAAGX,QAAQ,CAACU,MAAM,CAAC;MAEhC,IAAI,CAACC,OAAO,EAAE;QACZP,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAGM,MAAM,CAAC;MAC7B;IACF,CAAC;IAED,MAAME,OAAO,GAAG;MACd,GAAGT,MAAM,CAACU,cAAc;MACxB,GAAGrB;IACL,CAAC;IAED,MAAMsB,OAAO,GAAGC,MAAM,CAACC,IAAI,CAACJ,OAAO,CAAC,CAACK,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAK;MACzD;MACAD,GAAG,CAACC,IAAI,CAAC,GAAG;QAAA,OAAkBX,QAAQ,CAACI,OAAO,CAACO,IAAI,CAAC,CAAC,YAAO,CAAC,CAAC;MAAA;MAC9D,OAAOD,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAkB;IAEvB,MAAME,iBAAiB,GAAG;MACxB,GAAGd,uBAAuB;MAC1B,GAAGQ,OAAO;MACVN,QAAQ;MACRa,IAAI,EAAEnB,OAAO,CAACmB,IAAI;MAClBC,SAAS,EAAEhB,uBAAuB,GAC9BA,uBAAuB,CAACgB,SAAS,GACjC,MAAM,IAAI;MACdC,SAAS,EAAE,MAAM;QACf,MAAMC,KAAK,GAAGvB,QAAQ,EAAE;QAExB,OACEE,MAAM,CAACsB,iBAAiB,CAACD,KAAK,EAAEhC,aAAa,CAACkC,MAAM,EAAE,EAAY;UAChEC,UAAU,EAAEH,KAAK,CAACG,UAAU;UAC5BC,cAAc,EAAE,CAAC,CAAC;UAClBC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,KAAK,IAAI,KACXvB,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAEiB,SAAS,EAAE,KACpC,KAAK;MAET,CAAC;MACDO,KAAK,EAAE,MAAM/B,WAAW;MACxBgC,SAAS,EAAGjC,EAAW,IAAK;QAC1B,IAAIA,EAAE,KAAKkC,SAAS,EAAE;UACpB,IAAIC,OAAO,GAAGb,iBAAiB;UAE/B,OAAOa,OAAO,IAAInC,EAAE,KAAKmC,OAAO,CAACH,KAAK,EAAE,EAAE;YACxCG,OAAO,GAAGA,OAAO,CAACF,SAAS,EAAE;UAC/B;UAEA,OAAOE,OAAO;QAChB;QAEA,OAAO3B,uBAAuB;MAChC,CAAC;MACDL;IACF,CAA+D;IAE/D,OAAOmB,iBAAiB;EAC1B,CAAC,EAAE,CACDrB,WAAW,EACXG,OAAO,CAACmB,IAAI,EACZpB,QAAQ,EACRD,QAAQ,EACRI,iBAAiB,EACjBE,uBAAuB,EACvBH,MAAM,CACP,CAAC;AACJ"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationState.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationState.js
new file mode 100644
index 00000000..d9f71472
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationState.js
@@ -0,0 +1,28 @@
+import * as React from 'react';
+import useNavigation from './useNavigation';
+/**
+ * Hook to get a value from the current navigation state using a selector.
+ *
+ * @param selector Selector function to get a value from the state.
+ */
+export default function useNavigationState(selector) {
+ const navigation = useNavigation();
+
+ // We don't care about the state value, we run the selector again at the end
+ // The state is only to make sure that there's a re-render when we have a new value
+ const [, setResult] = React.useState(() => selector(navigation.getState()));
+
+ // We store the selector in a ref to avoid re-subscribing listeners every render
+ const selectorRef = React.useRef(selector);
+ React.useEffect(() => {
+ selectorRef.current = selector;
+ });
+ React.useEffect(() => {
+ const unsubscribe = navigation.addListener('state', e => {
+ setResult(selectorRef.current(e.data.state));
+ });
+ return unsubscribe;
+ }, [navigation]);
+ return selector(navigation.getState());
+}
+//# sourceMappingURL=useNavigationState.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationState.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationState.js.map
new file mode 100644
index 00000000..5244baa1
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useNavigationState.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","useNavigation","useNavigationState","selector","navigation","setResult","useState","getState","selectorRef","useRef","useEffect","current","unsubscribe","addListener","e","data","state"],"sourceRoot":"../../src","sources":["useNavigationState.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAG9B,OAAOC,aAAa,MAAM,iBAAiB;AAM3C;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,kBAAkB,CACxCC,QAAgC,EAC7B;EACH,MAAMC,UAAU,GAAGH,aAAa,EAA6B;;EAE7D;EACA;EACA,MAAM,GAAGI,SAAS,CAAC,GAAGL,KAAK,CAACM,QAAQ,CAAC,MAAMH,QAAQ,CAACC,UAAU,CAACG,QAAQ,EAAE,CAAC,CAAC;;EAE3E;EACA,MAAMC,WAAW,GAAGR,KAAK,CAACS,MAAM,CAACN,QAAQ,CAAC;EAE1CH,KAAK,CAACU,SAAS,CAAC,MAAM;IACpBF,WAAW,CAACG,OAAO,GAAGR,QAAQ;EAChC,CAAC,CAAC;EAEFH,KAAK,CAACU,SAAS,CAAC,MAAM;IACpB,MAAME,WAAW,GAAGR,UAAU,CAACS,WAAW,CAAC,OAAO,EAAGC,CAAC,IAAK;MACzDT,SAAS,CAACG,WAAW,CAACG,OAAO,CAACG,CAAC,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAOJ,WAAW;EACpB,CAAC,EAAE,CAACR,UAAU,CAAC,CAAC;EAEhB,OAAOD,QAAQ,CAACC,UAAU,CAACG,QAAQ,EAAE,CAAC;AACxC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnAction.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnAction.js
new file mode 100644
index 00000000..1ac00789
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnAction.js
@@ -0,0 +1,94 @@
+import * as React from 'react';
+import NavigationBuilderContext from './NavigationBuilderContext';
+import useOnPreventRemove, { shouldPreventRemove } from './useOnPreventRemove';
+/**
+ * Hook to handle actions for a navigator, including state updates and bubbling.
+ *
+ * Bubbling an action is achieved in 2 ways:
+ * 1. To bubble action to parent, we expose the action handler in context and then access the parent context
+ * 2. To bubble action to child, child adds event listeners subscribing to actions from parent
+ *
+ * When the action handler handles as action, it returns `true`, otherwise `false`.
+ */
+export default function useOnAction(_ref) {
+ let {
+ router,
+ getState,
+ setState,
+ key,
+ actionListeners,
+ beforeRemoveListeners,
+ routerConfigOptions,
+ emitter
+ } = _ref;
+ const {
+ onAction: onActionParent,
+ onRouteFocus: onRouteFocusParent,
+ addListener: addListenerParent,
+ onDispatchAction
+ } = React.useContext(NavigationBuilderContext);
+ const routerConfigOptionsRef = React.useRef(routerConfigOptions);
+ React.useEffect(() => {
+ routerConfigOptionsRef.current = routerConfigOptions;
+ });
+ const onAction = React.useCallback(function (action) {
+ let visitedNavigators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();
+ const state = getState();
+
+ // Since actions can bubble both up and down, they could come to the same navigator again
+ // We keep track of navigators which have already tried to handle the action and return if it's already visited
+ if (visitedNavigators.has(state.key)) {
+ return false;
+ }
+ visitedNavigators.add(state.key);
+ if (typeof action.target !== 'string' || action.target === state.key) {
+ let result = router.getStateForAction(state, action, routerConfigOptionsRef.current);
+
+ // If a target is specified and set to current navigator, the action shouldn't bubble
+ // So instead of `null`, we use the state object for such cases to signal that action was handled
+ result = result === null && action.target === state.key ? state : result;
+ if (result !== null) {
+ onDispatchAction(action, state === result);
+ if (state !== result) {
+ const isPrevented = shouldPreventRemove(emitter, beforeRemoveListeners, state.routes, result.routes, action);
+ if (isPrevented) {
+ return true;
+ }
+ setState(result);
+ }
+ if (onRouteFocusParent !== undefined) {
+ // Some actions such as `NAVIGATE` also want to bring the navigated route to focus in the whole tree
+ // This means we need to focus all of the parent navigators of this navigator as well
+ const shouldFocus = router.shouldActionChangeFocus(action);
+ if (shouldFocus && key !== undefined) {
+ onRouteFocusParent(key);
+ }
+ }
+ return true;
+ }
+ }
+ if (onActionParent !== undefined) {
+ // Bubble action to the parent if the current navigator didn't handle it
+ if (onActionParent(action, visitedNavigators)) {
+ return true;
+ }
+ }
+
+ // If the action wasn't handled by current navigator or a parent navigator, let children handle it
+ for (let i = actionListeners.length - 1; i >= 0; i--) {
+ const listener = actionListeners[i];
+ if (listener(action, visitedNavigators)) {
+ return true;
+ }
+ }
+ return false;
+ }, [actionListeners, beforeRemoveListeners, emitter, getState, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState]);
+ useOnPreventRemove({
+ getState,
+ emitter,
+ beforeRemoveListeners
+ });
+ React.useEffect(() => addListenerParent === null || addListenerParent === void 0 ? void 0 : addListenerParent('action', onAction), [addListenerParent, onAction]);
+ return onAction;
+}
+//# sourceMappingURL=useOnAction.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnAction.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnAction.js.map
new file mode 100644
index 00000000..af6c308b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnAction.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationBuilderContext","useOnPreventRemove","shouldPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","useContext","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":"AAOA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,wBAAwB,MAGxB,4BAA4B;AAGnC,OAAOC,kBAAkB,IAAIC,mBAAmB,QAAQ,sBAAsB;AAa9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,WAAW,OASvB;EAAA,IATwB;IAClCC,MAAM;IACNC,QAAQ;IACRC,QAAQ;IACRC,GAAG;IACHC,eAAe;IACfC,qBAAqB;IACrBC,mBAAmB;IACnBC;EACO,CAAC;EACR,MAAM;IACJC,QAAQ,EAAEC,cAAc;IACxBC,YAAY,EAAEC,kBAAkB;IAChCC,WAAW,EAAEC,iBAAiB;IAC9BC;EACF,CAAC,GAAGnB,KAAK,CAACoB,UAAU,CAACnB,wBAAwB,CAAC;EAE9C,MAAMoB,sBAAsB,GAC1BrB,KAAK,CAACsB,MAAM,CAAsBX,mBAAmB,CAAC;EAExDX,KAAK,CAACuB,SAAS,CAAC,MAAM;IACpBF,sBAAsB,CAACG,OAAO,GAAGb,mBAAmB;EACtD,CAAC,CAAC;EAEF,MAAME,QAAQ,GAAGb,KAAK,CAACyB,WAAW,CAChC,UACEC,MAAwB,EAErB;IAAA,IADHC,iBAA8B,uEAAG,IAAIC,GAAG,EAAU;IAElD,MAAMC,KAAK,GAAGvB,QAAQ,EAAE;;IAExB;IACA;IACA,IAAIqB,iBAAiB,CAACG,GAAG,CAACD,KAAK,CAACrB,GAAG,CAAC,EAAE;MACpC,OAAO,KAAK;IACd;IAEAmB,iBAAiB,CAACI,GAAG,CAACF,KAAK,CAACrB,GAAG,CAAC;IAEhC,IAAI,OAAOkB,MAAM,CAACM,MAAM,KAAK,QAAQ,IAAIN,MAAM,CAACM,MAAM,KAAKH,KAAK,CAACrB,GAAG,EAAE;MACpE,IAAIyB,MAAM,GAAG5B,MAAM,CAAC6B,iBAAiB,CACnCL,KAAK,EACLH,MAAM,EACNL,sBAAsB,CAACG,OAAO,CAC/B;;MAED;MACA;MACAS,MAAM,GACJA,MAAM,KAAK,IAAI,IAAIP,MAAM,CAACM,MAAM,KAAKH,KAAK,CAACrB,GAAG,GAAGqB,KAAK,GAAGI,MAAM;MAEjE,IAAIA,MAAM,KAAK,IAAI,EAAE;QACnBd,gBAAgB,CAACO,MAAM,EAAEG,KAAK,KAAKI,MAAM,CAAC;QAE1C,IAAIJ,KAAK,KAAKI,MAAM,EAAE;UACpB,MAAME,WAAW,GAAGhC,mBAAmB,CACrCS,OAAO,EACPF,qBAAqB,EACrBmB,KAAK,CAACO,MAAM,EACZH,MAAM,CAACG,MAAM,EACbV,MAAM,CACP;UAED,IAAIS,WAAW,EAAE;YACf,OAAO,IAAI;UACb;UAEA5B,QAAQ,CAAC0B,MAAM,CAAC;QAClB;QAEA,IAAIjB,kBAAkB,KAAKqB,SAAS,EAAE;UACpC;UACA;UACA,MAAMC,WAAW,GAAGjC,MAAM,CAACkC,uBAAuB,CAACb,MAAM,CAAC;UAE1D,IAAIY,WAAW,IAAI9B,GAAG,KAAK6B,SAAS,EAAE;YACpCrB,kBAAkB,CAACR,GAAG,CAAC;UACzB;QACF;QAEA,OAAO,IAAI;MACb;IACF;IAEA,IAAIM,cAAc,KAAKuB,SAAS,EAAE;MAChC;MACA,IAAIvB,cAAc,CAACY,MAAM,EAAEC,iBAAiB,CAAC,EAAE;QAC7C,OAAO,IAAI;MACb;IACF;;IAEA;IACA,KAAK,IAAIa,CAAC,GAAG/B,eAAe,CAACgC,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACpD,MAAME,QAAQ,GAAGjC,eAAe,CAAC+B,CAAC,CAAC;MAEnC,IAAIE,QAAQ,CAAChB,MAAM,EAAEC,iBAAiB,CAAC,EAAE;QACvC,OAAO,IAAI;MACb;IACF;IAEA,OAAO,KAAK;EACd,CAAC,EACD,CACElB,eAAe,EACfC,qBAAqB,EACrBE,OAAO,EACPN,QAAQ,EACRE,GAAG,EACHM,cAAc,EACdK,gBAAgB,EAChBH,kBAAkB,EAClBX,MAAM,EACNE,QAAQ,CACT,CACF;EAEDL,kBAAkB,CAAC;IACjBI,QAAQ;IACRM,OAAO;IACPF;EACF,CAAC,CAAC;EAEFV,KAAK,CAACuB,SAAS,CACb,MAAML,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAG,QAAQ,EAAEL,QAAQ,CAAC,EAC7C,CAACK,iBAAiB,EAAEL,QAAQ,CAAC,CAC9B;EAED,OAAOA,QAAQ;AACjB"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnGetState.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnGetState.js
new file mode 100644
index 00000000..d58ef798
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnGetState.js
@@ -0,0 +1,42 @@
+import * as React from 'react';
+import isArrayEqual from './isArrayEqual';
+import NavigationBuilderContext from './NavigationBuilderContext';
+import NavigationRouteContext from './NavigationRouteContext';
+export default function useOnGetState(_ref) {
+ let {
+ getState,
+ getStateListeners
+ } = _ref;
+ const {
+ addKeyedListener
+ } = React.useContext(NavigationBuilderContext);
+ const route = React.useContext(NavigationRouteContext);
+ const key = route ? route.key : 'root';
+ const getRehydratedState = React.useCallback(() => {
+ const state = getState();
+
+ // Avoid returning new route objects if we don't need to
+ const routes = state.routes.map(route => {
+ var _getStateListeners$ro;
+ const childState = (_getStateListeners$ro = getStateListeners[route.key]) === null || _getStateListeners$ro === void 0 ? void 0 : _getStateListeners$ro.call(getStateListeners);
+ if (route.state === childState) {
+ return route;
+ }
+ return {
+ ...route,
+ state: childState
+ };
+ });
+ if (isArrayEqual(state.routes, routes)) {
+ return state;
+ }
+ return {
+ ...state,
+ routes
+ };
+ }, [getState, getStateListeners]);
+ React.useEffect(() => {
+ return addKeyedListener === null || addKeyedListener === void 0 ? void 0 : addKeyedListener('getState', key, getRehydratedState);
+ }, [addKeyedListener, getRehydratedState, key]);
+}
+//# sourceMappingURL=useOnGetState.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnGetState.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnGetState.js.map
new file mode 100644
index 00000000..3f155ed6
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnGetState.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","isArrayEqual","NavigationBuilderContext","NavigationRouteContext","useOnGetState","getState","getStateListeners","addKeyedListener","useContext","route","key","getRehydratedState","useCallback","state","routes","map","childState","useEffect"],"sourceRoot":"../../src","sources":["useOnGetState.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,YAAY,MAAM,gBAAgB;AACzC,OAAOC,wBAAwB,MAExB,4BAA4B;AACnC,OAAOC,sBAAsB,MAAM,0BAA0B;AAO7D,eAAe,SAASC,aAAa,OAGzB;EAAA,IAH0B;IACpCC,QAAQ;IACRC;EACO,CAAC;EACR,MAAM;IAAEC;EAAiB,CAAC,GAAGP,KAAK,CAACQ,UAAU,CAACN,wBAAwB,CAAC;EACvE,MAAMO,KAAK,GAAGT,KAAK,CAACQ,UAAU,CAACL,sBAAsB,CAAC;EACtD,MAAMO,GAAG,GAAGD,KAAK,GAAGA,KAAK,CAACC,GAAG,GAAG,MAAM;EAEtC,MAAMC,kBAAkB,GAAGX,KAAK,CAACY,WAAW,CAAC,MAAM;IACjD,MAAMC,KAAK,GAAGR,QAAQ,EAAE;;IAExB;IACA,MAAMS,MAAM,GAAGD,KAAK,CAACC,MAAM,CAACC,GAAG,CAAEN,KAAK,IAAK;MAAA;MACzC,MAAMO,UAAU,4BAAGV,iBAAiB,CAACG,KAAK,CAACC,GAAG,CAAC,0DAA5B,2BAAAJ,iBAAiB,CAAe;MAEnD,IAAIG,KAAK,CAACI,KAAK,KAAKG,UAAU,EAAE;QAC9B,OAAOP,KAAK;MACd;MAEA,OAAO;QAAE,GAAGA,KAAK;QAAEI,KAAK,EAAEG;MAAW,CAAC;IACxC,CAAC,CAAC;IAEF,IAAIf,YAAY,CAACY,KAAK,CAACC,MAAM,EAAEA,MAAM,CAAC,EAAE;MACtC,OAAOD,KAAK;IACd;IAEA,OAAO;MAAE,GAAGA,KAAK;MAAEC;IAAO,CAAC;EAC7B,CAAC,EAAE,CAACT,QAAQ,EAAEC,iBAAiB,CAAC,CAAC;EAEjCN,KAAK,CAACiB,SAAS,CAAC,MAAM;IACpB,OAAOV,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,UAAU,EAAEG,GAAG,EAAEC,kBAAkB,CAAC;EAChE,CAAC,EAAE,CAACJ,gBAAgB,EAAEI,kBAAkB,EAAED,GAAG,CAAC,CAAC;AACjD"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnPreventRemove.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnPreventRemove.js
new file mode 100644
index 00000000..cd379488
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnPreventRemove.js
@@ -0,0 +1,64 @@
+import * as React from 'react';
+import NavigationBuilderContext from './NavigationBuilderContext';
+import NavigationRouteContext from './NavigationRouteContext';
+const VISITED_ROUTE_KEYS = Symbol('VISITED_ROUTE_KEYS');
+export const shouldPreventRemove = (emitter, beforeRemoveListeners, currentRoutes, nextRoutes, action) => {
+ const nextRouteKeys = nextRoutes.map(route => route.key);
+
+ // Call these in reverse order so last screens handle the event first
+ const removedRoutes = currentRoutes.filter(route => !nextRouteKeys.includes(route.key)).reverse();
+ const visitedRouteKeys =
+ // @ts-expect-error: add this property to mark that we've already emitted this action
+ action[VISITED_ROUTE_KEYS] ?? new Set();
+ const beforeRemoveAction = {
+ ...action,
+ [VISITED_ROUTE_KEYS]: visitedRouteKeys
+ };
+ for (const route of removedRoutes) {
+ var _beforeRemoveListener;
+ if (visitedRouteKeys.has(route.key)) {
+ // Skip if we've already emitted this action for this screen
+ continue;
+ }
+
+ // First, we need to check if any child screens want to prevent it
+ const isPrevented = (_beforeRemoveListener = beforeRemoveListeners[route.key]) === null || _beforeRemoveListener === void 0 ? void 0 : _beforeRemoveListener.call(beforeRemoveListeners, beforeRemoveAction);
+ if (isPrevented) {
+ return true;
+ }
+ visitedRouteKeys.add(route.key);
+ const event = emitter.emit({
+ type: 'beforeRemove',
+ target: route.key,
+ data: {
+ action: beforeRemoveAction
+ },
+ canPreventDefault: true
+ });
+ if (event.defaultPrevented) {
+ return true;
+ }
+ }
+ return false;
+};
+export default function useOnPreventRemove(_ref) {
+ let {
+ getState,
+ emitter,
+ beforeRemoveListeners
+ } = _ref;
+ const {
+ addKeyedListener
+ } = React.useContext(NavigationBuilderContext);
+ const route = React.useContext(NavigationRouteContext);
+ const routeKey = route === null || route === void 0 ? void 0 : route.key;
+ React.useEffect(() => {
+ if (routeKey) {
+ return addKeyedListener === null || addKeyedListener === void 0 ? void 0 : addKeyedListener('beforeRemove', routeKey, action => {
+ const state = getState();
+ return shouldPreventRemove(emitter, beforeRemoveListeners, state.routes, [], action);
+ });
+ }
+ }, [addKeyedListener, beforeRemoveListeners, emitter, getState, routeKey]);
+}
+//# sourceMappingURL=useOnPreventRemove.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnPreventRemove.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnPreventRemove.js.map
new file mode 100644
index 00000000..3df8a03a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnPreventRemove.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationBuilderContext","NavigationRouteContext","VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","nextRouteKeys","map","route","key","removedRoutes","filter","includes","reverse","visitedRouteKeys","Set","beforeRemoveAction","has","isPrevented","add","event","emit","type","target","data","canPreventDefault","defaultPrevented","useOnPreventRemove","getState","addKeyedListener","useContext","routeKey","useEffect","state","routes"],"sourceRoot":"../../src","sources":["useOnPreventRemove.tsx"],"mappings":"AAIA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,wBAAwB,MAExB,4BAA4B;AACnC,OAAOC,sBAAsB,MAAM,0BAA0B;AAU7D,MAAMC,kBAAkB,GAAGC,MAAM,CAAC,oBAAoB,CAAC;AAEvD,OAAO,MAAMC,mBAAmB,GAAG,CACjCC,OAAkD,EAClDC,qBAA4E,EAC5EC,aAAgC,EAChCC,UAA0C,EAC1CC,MAAwB,KACrB;EACH,MAAMC,aAAa,GAAGF,UAAU,CAACG,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACC,GAAG,CAAC;;EAE1D;EACA,MAAMC,aAAa,GAAGP,aAAa,CAChCQ,MAAM,CAAEH,KAAK,IAAK,CAACF,aAAa,CAACM,QAAQ,CAACJ,KAAK,CAACC,GAAG,CAAC,CAAC,CACrDI,OAAO,EAAE;EAEZ,MAAMC,gBAA6B;EACjC;EACAT,MAAM,CAACP,kBAAkB,CAAC,IAAI,IAAIiB,GAAG,EAAU;EAEjD,MAAMC,kBAAkB,GAAG;IACzB,GAAGX,MAAM;IACT,CAACP,kBAAkB,GAAGgB;EACxB,CAAC;EAED,KAAK,MAAMN,KAAK,IAAIE,aAAa,EAAE;IAAA;IACjC,IAAII,gBAAgB,CAACG,GAAG,CAACT,KAAK,CAACC,GAAG,CAAC,EAAE;MACnC;MACA;IACF;;IAEA;IACA,MAAMS,WAAW,4BAAGhB,qBAAqB,CAACM,KAAK,CAACC,GAAG,CAAC,0DAAhC,2BAAAP,qBAAqB,EAAcc,kBAAkB,CAAC;IAE1E,IAAIE,WAAW,EAAE;MACf,OAAO,IAAI;IACb;IAEAJ,gBAAgB,CAACK,GAAG,CAACX,KAAK,CAACC,GAAG,CAAC;IAE/B,MAAMW,KAAK,GAAGnB,OAAO,CAACoB,IAAI,CAAC;MACzBC,IAAI,EAAE,cAAc;MACpBC,MAAM,EAAEf,KAAK,CAACC,GAAG;MACjBe,IAAI,EAAE;QAAEnB,MAAM,EAAEW;MAAmB,CAAC;MACpCS,iBAAiB,EAAE;IACrB,CAAC,CAAC;IAEF,IAAIL,KAAK,CAACM,gBAAgB,EAAE;MAC1B,OAAO,IAAI;IACb;EACF;EAEA,OAAO,KAAK;AACd,CAAC;AAED,eAAe,SAASC,kBAAkB,OAI9B;EAAA,IAJ+B;IACzCC,QAAQ;IACR3B,OAAO;IACPC;EACO,CAAC;EACR,MAAM;IAAE2B;EAAiB,CAAC,GAAGlC,KAAK,CAACmC,UAAU,CAAClC,wBAAwB,CAAC;EACvE,MAAMY,KAAK,GAAGb,KAAK,CAACmC,UAAU,CAACjC,sBAAsB,CAAC;EACtD,MAAMkC,QAAQ,GAAGvB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,GAAG;EAE3Bd,KAAK,CAACqC,SAAS,CAAC,MAAM;IACpB,IAAID,QAAQ,EAAE;MACZ,OAAOF,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,cAAc,EAAEE,QAAQ,EAAG1B,MAAM,IAAK;QAC9D,MAAM4B,KAAK,GAAGL,QAAQ,EAAE;QAExB,OAAO5B,mBAAmB,CACxBC,OAAO,EACPC,qBAAqB,EACrB+B,KAAK,CAACC,MAAM,EACZ,EAAE,EACF7B,MAAM,CACP;MACH,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACwB,gBAAgB,EAAE3B,qBAAqB,EAAED,OAAO,EAAE2B,QAAQ,EAAEG,QAAQ,CAAC,CAAC;AAC5E"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnRouteFocus.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnRouteFocus.js
new file mode 100644
index 00000000..8fc807f5
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnRouteFocus.js
@@ -0,0 +1,29 @@
+import * as React from 'react';
+import NavigationBuilderContext from './NavigationBuilderContext';
+/**
+ * Hook to handle focus actions for a route.
+ * Focus action needs to be treated specially, coz when a nested route is focused,
+ * the parent navigators also needs to be focused.
+ */
+export default function useOnRouteFocus(_ref) {
+ let {
+ router,
+ getState,
+ key: sourceRouteKey,
+ setState
+ } = _ref;
+ const {
+ onRouteFocus: onRouteFocusParent
+ } = React.useContext(NavigationBuilderContext);
+ return React.useCallback(key => {
+ const state = getState();
+ const result = router.getStateForRouteFocus(state, key);
+ if (result !== state) {
+ setState(result);
+ }
+ if (onRouteFocusParent !== undefined && sourceRouteKey !== undefined) {
+ onRouteFocusParent(sourceRouteKey);
+ }
+ }, [getState, onRouteFocusParent, router, setState, sourceRouteKey]);
+}
+//# sourceMappingURL=useOnRouteFocus.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnRouteFocus.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnRouteFocus.js.map
new file mode 100644
index 00000000..b1445267
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOnRouteFocus.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationBuilderContext","useOnRouteFocus","router","getState","key","sourceRouteKey","setState","onRouteFocus","onRouteFocusParent","useContext","useCallback","state","result","getStateForRouteFocus","undefined"],"sourceRoot":"../../src","sources":["useOnRouteFocus.tsx"],"mappings":"AAKA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,wBAAwB,MAAM,4BAA4B;AASjE;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,eAAe,OAKnB;EAAA,IALqD;IACvEC,MAAM;IACNC,QAAQ;IACRC,GAAG,EAAEC,cAAc;IACnBC;EACe,CAAC;EAChB,MAAM;IAAEC,YAAY,EAAEC;EAAmB,CAAC,GAAGT,KAAK,CAACU,UAAU,CAC3DT,wBAAwB,CACzB;EAED,OAAOD,KAAK,CAACW,WAAW,CACrBN,GAAW,IAAK;IACf,MAAMO,KAAK,GAAGR,QAAQ,EAAE;IACxB,MAAMS,MAAM,GAAGV,MAAM,CAACW,qBAAqB,CAACF,KAAK,EAAEP,GAAG,CAAC;IAEvD,IAAIQ,MAAM,KAAKD,KAAK,EAAE;MACpBL,QAAQ,CAACM,MAAM,CAAC;IAClB;IAEA,IAAIJ,kBAAkB,KAAKM,SAAS,IAAIT,cAAc,KAAKS,SAAS,EAAE;MACpEN,kBAAkB,CAACH,cAAc,CAAC;IACpC;EACF,CAAC,EACD,CAACF,QAAQ,EAAEK,kBAAkB,EAAEN,MAAM,EAAEI,QAAQ,EAAED,cAAc,CAAC,CACjE;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOptionsGetters.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOptionsGetters.js
new file mode 100644
index 00000000..76414f00
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOptionsGetters.js
@@ -0,0 +1,72 @@
+import * as React from 'react';
+import NavigationBuilderContext from './NavigationBuilderContext';
+import NavigationStateContext from './NavigationStateContext';
+export default function useOptionsGetters(_ref) {
+ let {
+ key,
+ options,
+ navigation
+ } = _ref;
+ const optionsRef = React.useRef(options);
+ const optionsGettersFromChildRef = React.useRef({});
+ const {
+ onOptionsChange
+ } = React.useContext(NavigationBuilderContext);
+ const {
+ addOptionsGetter: parentAddOptionsGetter
+ } = React.useContext(NavigationStateContext);
+ const optionsChangeListener = React.useCallback(() => {
+ const isFocused = (navigation === null || navigation === void 0 ? void 0 : navigation.isFocused()) ?? true;
+ const hasChildren = Object.keys(optionsGettersFromChildRef.current).length;
+ if (isFocused && !hasChildren) {
+ onOptionsChange(optionsRef.current ?? {});
+ }
+ }, [navigation, onOptionsChange]);
+ React.useEffect(() => {
+ optionsRef.current = options;
+ optionsChangeListener();
+ return navigation === null || navigation === void 0 ? void 0 : navigation.addListener('focus', optionsChangeListener);
+ }, [navigation, options, optionsChangeListener]);
+ const getOptionsFromListener = React.useCallback(() => {
+ for (let key in optionsGettersFromChildRef.current) {
+ if (optionsGettersFromChildRef.current.hasOwnProperty(key)) {
+ var _optionsGettersFromCh, _optionsGettersFromCh2;
+ const result = (_optionsGettersFromCh = (_optionsGettersFromCh2 = optionsGettersFromChildRef.current)[key]) === null || _optionsGettersFromCh === void 0 ? void 0 : _optionsGettersFromCh.call(_optionsGettersFromCh2);
+
+ // null means unfocused route
+ if (result !== null) {
+ return result;
+ }
+ }
+ }
+ return null;
+ }, []);
+ const getCurrentOptions = React.useCallback(() => {
+ const isFocused = (navigation === null || navigation === void 0 ? void 0 : navigation.isFocused()) ?? true;
+ if (!isFocused) {
+ return null;
+ }
+ const optionsFromListener = getOptionsFromListener();
+ if (optionsFromListener !== null) {
+ return optionsFromListener;
+ }
+ return optionsRef.current;
+ }, [navigation, getOptionsFromListener]);
+ React.useEffect(() => {
+ return parentAddOptionsGetter === null || parentAddOptionsGetter === void 0 ? void 0 : parentAddOptionsGetter(key, getCurrentOptions);
+ }, [getCurrentOptions, parentAddOptionsGetter, key]);
+ const addOptionsGetter = React.useCallback((key, getter) => {
+ optionsGettersFromChildRef.current[key] = getter;
+ optionsChangeListener();
+ return () => {
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
+ delete optionsGettersFromChildRef.current[key];
+ optionsChangeListener();
+ };
+ }, [optionsChangeListener]);
+ return {
+ addOptionsGetter,
+ getCurrentOptions
+ };
+}
+//# sourceMappingURL=useOptionsGetters.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOptionsGetters.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOptionsGetters.js.map
new file mode 100644
index 00000000..198a4c5b
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useOptionsGetters.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationBuilderContext","NavigationStateContext","useOptionsGetters","key","options","navigation","optionsRef","useRef","optionsGettersFromChildRef","onOptionsChange","useContext","addOptionsGetter","parentAddOptionsGetter","optionsChangeListener","useCallback","isFocused","hasChildren","Object","keys","current","length","useEffect","addListener","getOptionsFromListener","hasOwnProperty","result","getCurrentOptions","optionsFromListener","getter"],"sourceRoot":"../../src","sources":["useOptionsGetters.tsx"],"mappings":"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"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemove.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemove.js
new file mode 100644
index 00000000..18d1bbcf
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemove.js
@@ -0,0 +1,40 @@
+import { nanoid } from 'nanoid/non-secure';
+import * as React from 'react';
+import useLatestCallback from 'use-latest-callback';
+import useNavigation from './useNavigation';
+import usePreventRemoveContext from './usePreventRemoveContext';
+import useRoute from './useRoute';
+
+/**
+ * Hook to prevent screen from being removed. Can be used to prevent users from leaving the screen.
+ *
+ * @param preventRemove Boolean indicating whether to prevent screen from being removed.
+ * @param callback Function which is executed when screen was prevented from being removed.
+ */
+export default function usePreventRemove(preventRemove, callback) {
+ const [id] = React.useState(() => nanoid());
+ const navigation = useNavigation();
+ const {
+ key: routeKey
+ } = useRoute();
+ const {
+ setPreventRemove
+ } = usePreventRemoveContext();
+ React.useEffect(() => {
+ setPreventRemove(id, routeKey, preventRemove);
+ return () => {
+ setPreventRemove(id, routeKey, false);
+ };
+ }, [setPreventRemove, id, routeKey, preventRemove]);
+ const beforeRemoveListener = useLatestCallback(e => {
+ if (!preventRemove) {
+ return;
+ }
+ e.preventDefault();
+ callback({
+ data: e.data
+ });
+ });
+ React.useEffect(() => navigation === null || navigation === void 0 ? void 0 : navigation.addListener('beforeRemove', beforeRemoveListener), [navigation, beforeRemoveListener]);
+}
+//# sourceMappingURL=usePreventRemove.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemove.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemove.js.map
new file mode 100644
index 00000000..4cca437a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemove.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["nanoid","React","useLatestCallback","useNavigation","usePreventRemoveContext","useRoute","usePreventRemove","preventRemove","callback","id","useState","navigation","key","routeKey","setPreventRemove","useEffect","beforeRemoveListener","e","preventDefault","data","addListener"],"sourceRoot":"../../src","sources":["usePreventRemove.tsx"],"mappings":"AACA,SAASA,MAAM,QAAQ,mBAAmB;AAC1C,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,OAAOC,iBAAiB,MAAM,qBAAqB;AAGnD,OAAOC,aAAa,MAAM,iBAAiB;AAC3C,OAAOC,uBAAuB,MAAM,2BAA2B;AAC/D,OAAOC,QAAQ,MAAM,YAAY;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,gBAAgB,CACtCC,aAAsB,EACtBC,QAAmE,EACnE;EACA,MAAM,CAACC,EAAE,CAAC,GAAGR,KAAK,CAACS,QAAQ,CAAC,MAAMV,MAAM,EAAE,CAAC;EAE3C,MAAMW,UAAU,GAAGR,aAAa,EAAE;EAClC,MAAM;IAAES,GAAG,EAAEC;EAAS,CAAC,GAAGR,QAAQ,EAAE;EAEpC,MAAM;IAAES;EAAiB,CAAC,GAAGV,uBAAuB,EAAE;EAEtDH,KAAK,CAACc,SAAS,CAAC,MAAM;IACpBD,gBAAgB,CAACL,EAAE,EAAEI,QAAQ,EAAEN,aAAa,CAAC;IAC7C,OAAO,MAAM;MACXO,gBAAgB,CAACL,EAAE,EAAEI,QAAQ,EAAE,KAAK,CAAC;IACvC,CAAC;EACH,CAAC,EAAE,CAACC,gBAAgB,EAAEL,EAAE,EAAEI,QAAQ,EAAEN,aAAa,CAAC,CAAC;EAEnD,MAAMS,oBAAoB,GAAGd,iBAAiB,CAE3Ce,CAAC,IAAK;IACP,IAAI,CAACV,aAAa,EAAE;MAClB;IACF;IAEAU,CAAC,CAACC,cAAc,EAAE;IAElBV,QAAQ,CAAC;MAAEW,IAAI,EAAEF,CAAC,CAACE;IAAK,CAAC,CAAC;EAC5B,CAAC,CAAC;EAEFlB,KAAK,CAACc,SAAS,CACb,MAAMJ,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAES,WAAW,CAAC,cAAc,EAAEJ,oBAAoB,CAAC,EACnE,CAACL,UAAU,EAAEK,oBAAoB,CAAC,CACnC;AACH"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemoveContext.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemoveContext.js
new file mode 100644
index 00000000..c20aaea1
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemoveContext.js
@@ -0,0 +1,10 @@
+import * as React from 'react';
+import PreventRemoveContext from './PreventRemoveContext';
+export default function usePreventRemoveContext() {
+ const value = React.useContext(PreventRemoveContext);
+ if (value == null) {
+ throw new Error("Couldn't find the prevent remove context. Is your component inside NavigationContent?");
+ }
+ return value;
+}
+//# sourceMappingURL=usePreventRemoveContext.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemoveContext.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemoveContext.js.map
new file mode 100644
index 00000000..561bde2a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/usePreventRemoveContext.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","PreventRemoveContext","usePreventRemoveContext","value","useContext","Error"],"sourceRoot":"../../src","sources":["usePreventRemoveContext.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,oBAAoB,MAAM,wBAAwB;AAEzD,eAAe,SAASC,uBAAuB,GAAG;EAChD,MAAMC,KAAK,GAAGH,KAAK,CAACI,UAAU,CAACH,oBAAoB,CAAC;EAEpD,IAAIE,KAAK,IAAI,IAAI,EAAE;IACjB,MAAM,IAAIE,KAAK,CACb,uFAAuF,CACxF;EACH;EAEA,OAAOF,KAAK;AACd"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRegisterNavigator.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRegisterNavigator.js
new file mode 100644
index 00000000..0659ebb5
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRegisterNavigator.js
@@ -0,0 +1,25 @@
+import { nanoid } from 'nanoid/non-secure';
+import * as React from 'react';
+import { SingleNavigatorContext } from './EnsureSingleNavigator';
+
+/**
+ * Register a navigator in the parent context (either a navigation container or a screen).
+ * This is used to prevent multiple navigators under a single container or screen.
+ */
+export default function useRegisterNavigator() {
+ const [key] = React.useState(() => nanoid());
+ const container = React.useContext(SingleNavigatorContext);
+ if (container === undefined) {
+ throw new Error("Couldn't register the navigator. Have you wrapped your app with 'NavigationContainer'?\n\nThis can also happen if there are multiple copies of '@react-navigation' packages installed.");
+ }
+ React.useEffect(() => {
+ const {
+ register,
+ unregister
+ } = container;
+ register(key);
+ return () => unregister(key);
+ }, [container, key]);
+ return key;
+}
+//# sourceMappingURL=useRegisterNavigator.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRegisterNavigator.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRegisterNavigator.js.map
new file mode 100644
index 00000000..4b4cb85a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRegisterNavigator.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["nanoid","React","SingleNavigatorContext","useRegisterNavigator","key","useState","container","useContext","undefined","Error","useEffect","register","unregister"],"sourceRoot":"../../src","sources":["useRegisterNavigator.tsx"],"mappings":"AAAA,SAASA,MAAM,QAAQ,mBAAmB;AAC1C,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,sBAAsB,QAAQ,yBAAyB;;AAEhE;AACA;AACA;AACA;AACA,eAAe,SAASC,oBAAoB,GAAG;EAC7C,MAAM,CAACC,GAAG,CAAC,GAAGH,KAAK,CAACI,QAAQ,CAAC,MAAML,MAAM,EAAE,CAAC;EAC5C,MAAMM,SAAS,GAAGL,KAAK,CAACM,UAAU,CAACL,sBAAsB,CAAC;EAE1D,IAAII,SAAS,KAAKE,SAAS,EAAE;IAC3B,MAAM,IAAIC,KAAK,CACb,wLAAwL,CACzL;EACH;EAEAR,KAAK,CAACS,SAAS,CAAC,MAAM;IACpB,MAAM;MAAEC,QAAQ;MAAEC;IAAW,CAAC,GAAGN,SAAS;IAE1CK,QAAQ,CAACP,GAAG,CAAC;IAEb,OAAO,MAAMQ,UAAU,CAACR,GAAG,CAAC;EAC9B,CAAC,EAAE,CAACE,SAAS,EAAEF,GAAG,CAAC,CAAC;EAEpB,OAAOA,GAAG;AACZ"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRoute.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRoute.js
new file mode 100644
index 00000000..3a6499b6
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRoute.js
@@ -0,0 +1,15 @@
+import * as React from 'react';
+import NavigationRouteContext from './NavigationRouteContext';
+/**
+ * Hook to access the route prop of the parent screen anywhere.
+ *
+ * @returns Route prop of the parent screen.
+ */
+export default function useRoute() {
+ const route = React.useContext(NavigationRouteContext);
+ if (route === undefined) {
+ throw new Error("Couldn't find a route object. Is your component inside a screen in a navigator?");
+ }
+ return route;
+}
+//# sourceMappingURL=useRoute.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRoute.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRoute.js.map
new file mode 100644
index 00000000..9995b4c1
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRoute.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","NavigationRouteContext","useRoute","route","useContext","undefined","Error"],"sourceRoot":"../../src","sources":["useRoute.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,sBAAsB,MAAM,0BAA0B;AAG7D;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,QAAQ,GAA0C;EACxE,MAAMC,KAAK,GAAGH,KAAK,CAACI,UAAU,CAACH,sBAAsB,CAAC;EAEtD,IAAIE,KAAK,KAAKE,SAAS,EAAE;IACvB,MAAM,IAAIC,KAAK,CACb,iFAAiF,CAClF;EACH;EAEA,OAAOH,KAAK;AACd"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRouteCache.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRouteCache.js
new file mode 100644
index 00000000..51638b44
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRouteCache.js
@@ -0,0 +1,42 @@
+import * as React from 'react';
+/**
+ * Utilites such as `getFocusedRouteNameFromRoute` need to access state.
+ * So we need a way to suppress the warning for those use cases.
+ * This is fine since they are internal utilities and this is not public API.
+ */
+export const CHILD_STATE = Symbol('CHILD_STATE');
+
+/**
+ * Hook to cache route props for each screen in the navigator.
+ * This lets add warnings and modifications to the route object but keep references between renders.
+ */
+export default function useRouteCache(routes) {
+ // Cache object which holds route objects for each screen
+ const cache = React.useMemo(() => ({
+ current: new Map()
+ }), []);
+ if (process.env.NODE_ENV === 'production') {
+ // We don't want the overhead of creating extra maps every render in prod
+ return routes;
+ }
+ cache.current = routes.reduce((acc, route) => {
+ const previous = cache.current.get(route);
+ if (previous) {
+ // If a cached route object already exists, reuse it
+ acc.set(route, previous);
+ } else {
+ const {
+ state,
+ ...proxy
+ } = route;
+ Object.defineProperty(proxy, CHILD_STATE, {
+ enumerable: false,
+ value: state
+ });
+ acc.set(route, proxy);
+ }
+ return acc;
+ }, new Map());
+ return Array.from(cache.current.values());
+}
+//# sourceMappingURL=useRouteCache.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRouteCache.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRouteCache.js.map
new file mode 100644
index 00000000..571e5568
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useRouteCache.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","CHILD_STATE","Symbol","useRouteCache","routes","cache","useMemo","current","Map","process","env","NODE_ENV","reduce","acc","route","previous","get","set","state","proxy","Object","defineProperty","enumerable","value","Array","from","values"],"sourceRoot":"../../src","sources":["useRouteCache.tsx"],"mappings":"AAKA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAM9B;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAGC,MAAM,CAAC,aAAa,CAAC;;AAEhD;AACA;AACA;AACA;AACA,eAAe,SAASC,aAAa,CACnCC,MAAuB,EACvB;EACA;EACA,MAAMC,KAAK,GAAGL,KAAK,CAACM,OAAO,CAAC,OAAO;IAAEC,OAAO,EAAE,IAAIC,GAAG;EAAiB,CAAC,CAAC,EAAE,EAAE,CAAC;EAE7E,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACzC;IACA,OAAOP,MAAM;EACf;EAEAC,KAAK,CAACE,OAAO,GAAGH,MAAM,CAACQ,MAAM,CAAC,CAACC,GAAG,EAAEC,KAAK,KAAK;IAC5C,MAAMC,QAAQ,GAAGV,KAAK,CAACE,OAAO,CAACS,GAAG,CAACF,KAAK,CAAC;IAEzC,IAAIC,QAAQ,EAAE;MACZ;MACAF,GAAG,CAACI,GAAG,CAACH,KAAK,EAAEC,QAAQ,CAAC;IAC1B,CAAC,MAAM;MACL,MAAM;QAAEG,KAAK;QAAE,GAAGC;MAAM,CAAC,GAAGL,KAAK;MAEjCM,MAAM,CAACC,cAAc,CAACF,KAAK,EAAElB,WAAW,EAAE;QACxCqB,UAAU,EAAE,KAAK;QACjBC,KAAK,EAAEL;MACT,CAAC,CAAC;MAEFL,GAAG,CAACI,GAAG,CAACH,KAAK,EAAEK,KAAK,CAAC;IACvB;IAEA,OAAON,GAAG;EACZ,CAAC,EAAE,IAAIL,GAAG,EAAE,CAAe;EAE3B,OAAOgB,KAAK,CAACC,IAAI,CAACpB,KAAK,CAACE,OAAO,CAACmB,MAAM,EAAE,CAAC;AAC3C"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useScheduleUpdate.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useScheduleUpdate.js
new file mode 100644
index 00000000..13a66774
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useScheduleUpdate.js
@@ -0,0 +1,27 @@
+import * as React from 'react';
+const MISSING_CONTEXT_ERROR = "Couldn't find a schedule context.";
+export const ScheduleUpdateContext = /*#__PURE__*/React.createContext({
+ scheduleUpdate() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ },
+ flushUpdates() {
+ throw new Error(MISSING_CONTEXT_ERROR);
+ }
+});
+
+/**
+ * When screen config changes, we want to update the navigator in the same update phase.
+ * However, navigation state is in the root component and React won't let us update it from a child.
+ * This is a workaround for that, the scheduled update is stored in the ref without actually calling setState.
+ * It lets all subsequent updates access the latest state so it stays correct.
+ * Then we call setState during after the component updates.
+ */
+export default function useScheduleUpdate(callback) {
+ const {
+ scheduleUpdate,
+ flushUpdates
+ } = React.useContext(ScheduleUpdateContext);
+ scheduleUpdate(callback);
+ React.useEffect(flushUpdates);
+}
+//# sourceMappingURL=useScheduleUpdate.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useScheduleUpdate.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useScheduleUpdate.js.map
new file mode 100644
index 00000000..88129709
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useScheduleUpdate.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","MISSING_CONTEXT_ERROR","ScheduleUpdateContext","createContext","scheduleUpdate","Error","flushUpdates","useScheduleUpdate","callback","useContext","useEffect"],"sourceRoot":"../../src","sources":["useScheduleUpdate.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,MAAMC,qBAAqB,GAAG,mCAAmC;AAEjE,OAAO,MAAMC,qBAAqB,gBAAGF,KAAK,CAACG,aAAa,CAGrD;EACDC,cAAc,GAAG;IACf,MAAM,IAAIC,KAAK,CAACJ,qBAAqB,CAAC;EACxC,CAAC;EACDK,YAAY,GAAG;IACb,MAAM,IAAID,KAAK,CAACJ,qBAAqB,CAAC;EACxC;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASM,iBAAiB,CAACC,QAAoB,EAAE;EAC9D,MAAM;IAAEJ,cAAc;IAAEE;EAAa,CAAC,GAAGN,KAAK,CAACS,UAAU,CACvDP,qBAAqB,CACtB;EAEDE,cAAc,CAACI,QAAQ,CAAC;EAExBR,KAAK,CAACU,SAAS,CAACJ,YAAY,CAAC;AAC/B"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useSyncState.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useSyncState.js
new file mode 100644
index 00000000..71f7f3ef
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useSyncState.js
@@ -0,0 +1,60 @@
+import * as React from 'react';
+const UNINTIALIZED_STATE = {};
+
+/**
+ * This is definitely not compatible with concurrent mode, but we don't have a solution for sync state yet.
+ */
+export default function useSyncState(initialState) {
+ const stateRef = React.useRef(UNINTIALIZED_STATE);
+ const isSchedulingRef = React.useRef(false);
+ const isMountedRef = React.useRef(true);
+ React.useEffect(() => {
+ isMountedRef.current = true;
+ return () => {
+ isMountedRef.current = false;
+ };
+ }, []);
+ if (stateRef.current === UNINTIALIZED_STATE) {
+ stateRef.current =
+ // @ts-expect-error: initialState is a function, but TypeScript doesn't think so
+ typeof initialState === 'function' ? initialState() : initialState;
+ }
+ const [trackingState, setTrackingState] = React.useState(stateRef.current);
+ const getState = React.useCallback(() => stateRef.current, []);
+ const setState = React.useCallback(state => {
+ if (state === stateRef.current || !isMountedRef.current) {
+ return;
+ }
+ stateRef.current = state;
+ if (!isSchedulingRef.current) {
+ setTrackingState(state);
+ }
+ }, []);
+ const scheduleUpdate = React.useCallback(callback => {
+ isSchedulingRef.current = true;
+ try {
+ callback();
+ } finally {
+ isSchedulingRef.current = false;
+ }
+ }, []);
+ const flushUpdates = React.useCallback(() => {
+ if (!isMountedRef.current) {
+ return;
+ }
+
+ // Make sure that the tracking state is up-to-date.
+ // We call it unconditionally, but React should skip the update if state is unchanged.
+ setTrackingState(stateRef.current);
+ }, []);
+
+ // If we're rendering and the tracking state is out of date, update it immediately
+ // This will make sure that our updates are applied as early as possible.
+ if (trackingState !== stateRef.current) {
+ setTrackingState(stateRef.current);
+ }
+ const state = stateRef.current;
+ React.useDebugValue(state);
+ return [state, getState, setState, scheduleUpdate, flushUpdates];
+}
+//# sourceMappingURL=useSyncState.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useSyncState.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useSyncState.js.map
new file mode 100644
index 00000000..875e977e
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/useSyncState.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["React","UNINTIALIZED_STATE","useSyncState","initialState","stateRef","useRef","isSchedulingRef","isMountedRef","useEffect","current","trackingState","setTrackingState","useState","getState","useCallback","setState","state","scheduleUpdate","callback","flushUpdates","useDebugValue"],"sourceRoot":"../../src","sources":["useSyncState.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,MAAMC,kBAAkB,GAAG,CAAC,CAAC;;AAE7B;AACA;AACA;AACA,eAAe,SAASC,YAAY,CAAIC,YAA4B,EAAE;EACpE,MAAMC,QAAQ,GAAGJ,KAAK,CAACK,MAAM,CAAIJ,kBAAkB,CAAQ;EAC3D,MAAMK,eAAe,GAAGN,KAAK,CAACK,MAAM,CAAC,KAAK,CAAC;EAC3C,MAAME,YAAY,GAAGP,KAAK,CAACK,MAAM,CAAC,IAAI,CAAC;EAEvCL,KAAK,CAACQ,SAAS,CAAC,MAAM;IACpBD,YAAY,CAACE,OAAO,GAAG,IAAI;IAE3B,OAAO,MAAM;MACXF,YAAY,CAACE,OAAO,GAAG,KAAK;IAC9B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,IAAIL,QAAQ,CAACK,OAAO,KAAKR,kBAAkB,EAAE;IAC3CG,QAAQ,CAACK,OAAO;IACd;IACA,OAAON,YAAY,KAAK,UAAU,GAAGA,YAAY,EAAE,GAAGA,YAAY;EACtE;EAEA,MAAM,CAACO,aAAa,EAAEC,gBAAgB,CAAC,GAAGX,KAAK,CAACY,QAAQ,CAACR,QAAQ,CAACK,OAAO,CAAC;EAE1E,MAAMI,QAAQ,GAAGb,KAAK,CAACc,WAAW,CAAC,MAAMV,QAAQ,CAACK,OAAO,EAAE,EAAE,CAAC;EAE9D,MAAMM,QAAQ,GAAGf,KAAK,CAACc,WAAW,CAAEE,KAAQ,IAAK;IAC/C,IAAIA,KAAK,KAAKZ,QAAQ,CAACK,OAAO,IAAI,CAACF,YAAY,CAACE,OAAO,EAAE;MACvD;IACF;IAEAL,QAAQ,CAACK,OAAO,GAAGO,KAAK;IAExB,IAAI,CAACV,eAAe,CAACG,OAAO,EAAE;MAC5BE,gBAAgB,CAACK,KAAK,CAAC;IACzB;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,cAAc,GAAGjB,KAAK,CAACc,WAAW,CAAEI,QAAoB,IAAK;IACjEZ,eAAe,CAACG,OAAO,GAAG,IAAI;IAE9B,IAAI;MACFS,QAAQ,EAAE;IACZ,CAAC,SAAS;MACRZ,eAAe,CAACG,OAAO,GAAG,KAAK;IACjC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMU,YAAY,GAAGnB,KAAK,CAACc,WAAW,CAAC,MAAM;IAC3C,IAAI,CAACP,YAAY,CAACE,OAAO,EAAE;MACzB;IACF;;IAEA;IACA;IACAE,gBAAgB,CAACP,QAAQ,CAACK,OAAO,CAAC;EACpC,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA;EACA,IAAIC,aAAa,KAAKN,QAAQ,CAACK,OAAO,EAAE;IACtCE,gBAAgB,CAACP,QAAQ,CAACK,OAAO,CAAC;EACpC;EAEA,MAAMO,KAAK,GAAGZ,QAAQ,CAACK,OAAO;EAE9BT,KAAK,CAACoB,aAAa,CAACJ,KAAK,CAAC;EAE1B,OAAO,CAACA,KAAK,EAAEH,QAAQ,EAAEE,QAAQ,EAAEE,cAAc,EAAEE,YAAY,CAAC;AAClE"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/validatePathConfig.js b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/validatePathConfig.js
new file mode 100644
index 00000000..02d7ba31
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/validatePathConfig.js
@@ -0,0 +1,21 @@
+const formatToList = items => items.map(key => `- ${key}`).join('\n');
+export default function validatePathConfig(config) {
+ let root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+ const validKeys = ['initialRouteName', 'screens'];
+ if (!root) {
+ validKeys.push('path', 'exact', 'stringify', 'parse');
+ }
+ const invalidKeys = Object.keys(config).filter(key => !validKeys.includes(key));
+ if (invalidKeys.length) {
+ throw new Error(`Found invalid properties in the configuration:\n${formatToList(invalidKeys)}\n\nDid you forget to specify them under a 'screens' property?\n\nYou can only specify the following properties:\n${formatToList(validKeys)}\n\nSee https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.`);
+ }
+ if (config.screens) {
+ Object.entries(config.screens).forEach(_ref => {
+ let [_, value] = _ref;
+ if (typeof value !== 'string') {
+ validatePathConfig(value, false);
+ }
+ });
+ }
+}
+//# sourceMappingURL=validatePathConfig.js.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/module/validatePathConfig.js.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/validatePathConfig.js.map
new file mode 100644
index 00000000..b2c6076c
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/module/validatePathConfig.js.map
@@ -0,0 +1 @@
+{"version":3,"names":["formatToList","items","map","key","join","validatePathConfig","config","root","validKeys","push","invalidKeys","Object","keys","filter","includes","length","Error","screens","entries","forEach","_","value"],"sourceRoot":"../../src","sources":["validatePathConfig.tsx"],"mappings":"AAAA,MAAMA,YAAY,GAAIC,KAAe,IACnCA,KAAK,CAACC,GAAG,CAAEC,GAAG,IAAM,KAAIA,GAAI,EAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AAE3C,eAAe,SAASC,kBAAkB,CAACC,MAAW,EAAe;EAAA,IAAbC,IAAI,uEAAG,IAAI;EACjE,MAAMC,SAAS,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC;EAEjD,IAAI,CAACD,IAAI,EAAE;IACTC,SAAS,CAACC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;EACvD;EAEA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAI,CAACN,MAAM,CAAC,CAACO,MAAM,CAC3CV,GAAG,IAAK,CAACK,SAAS,CAACM,QAAQ,CAACX,GAAG,CAAC,CAClC;EAED,IAAIO,WAAW,CAACK,MAAM,EAAE;IACtB,MAAM,IAAIC,KAAK,CACZ,mDAAkDhB,YAAY,CAC7DU,WAAW,CACX,qHAAoHV,YAAY,CAChIQ,SAAS,CACT,wHAAuH,CAC1H;EACH;EAEA,IAAIF,MAAM,CAACW,OAAO,EAAE;IAClBN,MAAM,CAACO,OAAO,CAACZ,MAAM,CAACW,OAAO,CAAC,CAACE,OAAO,CAAC,QAAgB;MAAA,IAAf,CAACC,CAAC,EAAEC,KAAK,CAAC;MAChD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QAC7BhB,kBAAkB,CAACgB,KAAK,EAAE,KAAK,CAAC;MAClC;IACF,CAAC,CAAC;EACJ;AACF"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/BaseNavigationContainer.d.ts b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/BaseNavigationContainer.d.ts
new file mode 100644
index 00000000..dfa3f199
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/BaseNavigationContainer.d.ts
@@ -0,0 +1,15 @@
+import { ParamListBase } from '@react-navigation/routers';
+import * as React from 'react';
+import type { NavigationContainerProps, NavigationContainerRef } from './types';
+/**
+ * Container component which holds the navigation state.
+ * This should be rendered at the root wrapping the whole app.
+ *
+ * @param props.initialState Initial state object for the navigation tree.
+ * @param props.onStateChange Callback which is called with the latest navigation state when it changes.
+ * @param props.children Child elements to render the content.
+ * @param props.ref Ref object which refers to the navigation object containing helper methods.
+ */
+declare const BaseNavigationContainer: React.ForwardRefExoticComponent>>;
+export default BaseNavigationContainer;
+//# sourceMappingURL=BaseNavigationContainer.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/BaseNavigationContainer.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/BaseNavigationContainer.d.ts.map
new file mode 100644
index 00000000..7bd52202
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/BaseNavigationContainer.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"BaseNavigationContainer.d.ts","sourceRoot":"","sources":["../../../src/BaseNavigationContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,aAAa,EAGd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,KAAK,EAEV,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AA4CjB;;;;;;;;GAQG;AACH,QAAA,MAAM,uBAAuB,wHAoX5B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/CurrentRenderContext.d.ts b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/CurrentRenderContext.d.ts
new file mode 100644
index 00000000..4c87fe21
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/CurrentRenderContext.d.ts
@@ -0,0 +1,10 @@
+import * as React from 'react';
+/**
+ * Context which holds the values for the current navigation tree.
+ * Intended for use in SSR. This is not safe to use on the client.
+ */
+declare const CurrentRenderContext: React.Context<{
+ options?: object | undefined;
+} | undefined>;
+export default CurrentRenderContext;
+//# sourceMappingURL=CurrentRenderContext.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/CurrentRenderContext.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/CurrentRenderContext.d.ts.map
new file mode 100644
index 00000000..11c98c4f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/CurrentRenderContext.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"CurrentRenderContext.d.ts","sourceRoot":"","sources":["../../../src/CurrentRenderContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;GAGG;AACH,QAAA,MAAM,oBAAoB;;cAEd,CAAC;AAEb,eAAe,oBAAoB,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/EnsureSingleNavigator.d.ts b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/EnsureSingleNavigator.d.ts
new file mode 100644
index 00000000..f5d857fa
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/EnsureSingleNavigator.d.ts
@@ -0,0 +1,14 @@
+import * as React from 'react';
+declare type Props = {
+ children: React.ReactNode;
+};
+export declare const SingleNavigatorContext: React.Context<{
+ register(key: string): void;
+ unregister(key: string): void;
+} | undefined>;
+/**
+ * Component which ensures that there's only one navigator nested under it.
+ */
+export default function EnsureSingleNavigator({ children }: Props): JSX.Element;
+export {};
+//# sourceMappingURL=EnsureSingleNavigator.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/EnsureSingleNavigator.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/EnsureSingleNavigator.d.ts.map
new file mode 100644
index 00000000..50a5044a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/EnsureSingleNavigator.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"EnsureSingleNavigator.d.ts","sourceRoot":"","sources":["../../../src/EnsureSingleNavigator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,aAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAIF,eAAO,MAAM,sBAAsB;kBAEf,MAAM,GAAG,IAAI;oBACX,MAAM,GAAG,IAAI;cAGvB,CAAC;AAEb;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,eAgChE"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/Group.d.ts b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/Group.d.ts
new file mode 100644
index 00000000..ae3a8173
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/Group.d.ts
@@ -0,0 +1,7 @@
+import type { ParamListBase } from '@react-navigation/routers';
+import type { RouteGroupConfig } from './types';
+/**
+ * Empty component used for grouping screen configs.
+ */
+export default function Group(_: RouteGroupConfig): null;
+//# sourceMappingURL=Group.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/Group.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/Group.d.ts.map
new file mode 100644
index 00000000..f13a6762
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/Group.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"Group.d.ts","sourceRoot":"","sources":["../../../src/Group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAC3B,SAAS,SAAS,aAAa,EAC/B,aAAa,SAAS,EAAE,EACxB,CAAC,EAAE,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,QAG9C"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationBuilderContext.d.ts b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationBuilderContext.d.ts
new file mode 100644
index 00000000..819509d7
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationBuilderContext.d.ts
@@ -0,0 +1,35 @@
+import type { NavigationAction, NavigationState, ParamListBase } from '@react-navigation/routers';
+import * as React from 'react';
+import type { NavigationHelpers } from './types';
+export declare type ListenerMap = {
+ action: ChildActionListener;
+ focus: FocusedNavigationListener;
+};
+export declare type KeyedListenerMap = {
+ getState: GetStateListener;
+ beforeRemove: ChildBeforeRemoveListener;
+};
+export declare type AddListener = (type: T, listener: ListenerMap[T]) => void;
+export declare type AddKeyedListener = (type: T, key: string, listener: KeyedListenerMap[T]) => void;
+export declare type ChildActionListener = (action: NavigationAction, visitedNavigators?: Set) => boolean;
+export declare type FocusedNavigationCallback = (navigation: NavigationHelpers) => T;
+export declare type FocusedNavigationListener = (callback: FocusedNavigationCallback) => {
+ handled: boolean;
+ result: T;
+};
+export declare type GetStateListener = () => NavigationState;
+export declare type ChildBeforeRemoveListener = (action: NavigationAction) => boolean;
+/**
+ * Context which holds the required helpers needed to build nested navigators.
+ */
+declare const NavigationBuilderContext: React.Context<{
+ onAction?: ((action: NavigationAction, visitedNavigators?: Set) => boolean) | undefined;
+ addListener?: AddListener | undefined;
+ addKeyedListener?: AddKeyedListener | undefined;
+ onRouteFocus?: ((key: string) => void) | undefined;
+ onDispatchAction: (action: NavigationAction, noop: boolean) => void;
+ onOptionsChange: (options: object) => void;
+ stackRef?: React.MutableRefObject | undefined;
+}>;
+export default NavigationBuilderContext;
+//# sourceMappingURL=NavigationBuilderContext.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationBuilderContext.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationBuilderContext.d.ts.map
new file mode 100644
index 00000000..1ecf526d
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationBuilderContext.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"NavigationBuilderContext.d.ts","sourceRoot":"","sources":["../../../src/NavigationBuilderContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,oBAAY,WAAW,GAAG;IACxB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,yBAAyB,CAAC;CAClC,CAAC;AAEF,oBAAY,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,YAAY,EAAE,yBAAyB,CAAC;CACzC,CAAC;AAEF,oBAAY,WAAW,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EACpD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,KACrB,IAAI,CAAC;AAEV,oBAAY,gBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAC9D,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAC1B,IAAI,CAAC;AAEV,oBAAY,mBAAmB,GAAG,CAChC,MAAM,EAAE,gBAAgB,EACxB,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAC5B,OAAO,CAAC;AAEb,oBAAY,yBAAyB,CAAC,CAAC,IAAI,CACzC,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,KACzC,CAAC,CAAC;AAEP,oBAAY,yBAAyB,GAAG,CAAC,CAAC,EACxC,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,KACnC;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,oBAAY,gBAAgB,GAAG,MAAM,eAAe,CAAC;AAErD,oBAAY,yBAAyB,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC;AAE9E;;GAEG;AACH,QAAA,MAAM,wBAAwB;yBAElB,gBAAgB,sBACJ,IAAI,MAAM,CAAC,KAC5B,OAAO;;;0BAGS,MAAM,KAAK,IAAI;+BACT,gBAAgB,QAAQ,OAAO,KAAK,IAAI;+BACxC,MAAM,KAAK,IAAI;;EAK1C,CAAC;AAEH,eAAe,wBAAwB,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationContainerRefContext.d.ts b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationContainerRefContext.d.ts
new file mode 100644
index 00000000..9523258f
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationContainerRefContext.d.ts
@@ -0,0 +1,9 @@
+import type { ParamListBase } from '@react-navigation/routers';
+import * as React from 'react';
+import type { NavigationContainerRef } from './types';
+/**
+ * Context which holds the route prop for a screen.
+ */
+declare const NavigationContainerRefContext: React.Context | undefined>;
+export default NavigationContainerRefContext;
+//# sourceMappingURL=NavigationContainerRefContext.d.ts.map
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationContainerRefContext.d.ts.map b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationContainerRefContext.d.ts.map
new file mode 100644
index 00000000..7f3dc90a
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationContainerRefContext.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"NavigationContainerRefContext.d.ts","sourceRoot":"","sources":["../../../src/NavigationContainerRefContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD;;GAEG;AACH,QAAA,MAAM,6BAA6B,kEAEvB,CAAC;AAEb,eAAe,6BAA6B,CAAC"}
\ No newline at end of file
diff --git a/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationContext.d.ts b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationContext.d.ts
new file mode 100644
index 00000000..0e070ae7
--- /dev/null
+++ b/iut-expo-starter/node_modules/@react-navigation/core/lib/typescript/src/NavigationContext.d.ts
@@ -0,0 +1,25 @@
+import type { ParamListBase } from '@react-navigation/routers';
+import * as React from 'react';
+import type { NavigationProp } from './types';
+/**
+ * Context which holds the navigation prop for a screen.
+ */
+declare const NavigationContext: React.Context & Readonly<{
+ params?: Readonly