diff --git a/babel.config.js b/babel.config.js
index a691a46..cdd1c9c 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -1,13 +1,16 @@
-module.exports = {
- presets: ['module:metro-react-native-babel-preset'],
- plugins: [
- [
- 'module-resolver',
- {
- alias: {
- '@caj': './src/caj',
+module.exports = function (api) {
+ api.cache(true);
+ return {
+ presets: ['module:metro-react-native-babel-preset'],
+ plugins: [
+ [
+ 'module-resolver',
+ {
+ alias: {
+ '@caj': './src/caj',
+ },
},
- },
+ ],
],
- ],
+ };
};
diff --git a/package-lock.json b/package-lock.json
index af7bbf7..53aed4f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,23 +8,35 @@
"name": "ClickAndJoinApp",
"version": "0.0.1",
"dependencies": {
- "@react-navigation/native": "^6.1.0",
- "@react-navigation/native-stack": "^6.9.5",
+ "@react-navigation/bottom-tabs": "^6.5.2",
+ "@react-navigation/native": "^6.1.1",
+ "@react-navigation/native-stack": "^6.9.7",
+ "@react-spring/native": "^9.6.1",
+ "@react-spring/web": "^9.6.1",
+ "@reduxjs/toolkit": "^1.9.1",
+ "babel-preset-es2015": "^6.24.1",
"babel-preset-esnext": "^1.1.3",
"babel-preset-react": "^6.24.1",
"native-base": "^3.4.23",
"react": "^18.1.0",
"react-dom": "18.1.0",
"react-native": "0.70.6",
+ "react-native-encrypted-storage": "^4.0.3",
+ "react-native-gesture-handler": "^2.8.0",
+ "react-native-reanimated": "^2.13.0",
"react-native-safe-area-context": "^4.4.1",
"react-native-screens": "^3.18.2",
- "react-native-web": "^0.18.10"
+ "react-native-web": "^0.18.10",
+ "react-redux": "^8.0.5"
},
"devDependencies": {
"@babel/core": "^7.12.9",
- "@babel/runtime": "^7.12.5",
+ "@babel/preset-react": "^7.18.6",
+ "@babel/runtime": "^7.20.6",
"@react-native-community/eslint-config": "^2.0.0",
"@types/node": "^18.11.10",
+ "@types/react": "^18.0.26",
+ "@types/react-dom": "^18.0.9",
"@types/webpack": "^5.28.0",
"babel-jest": "^26.6.3",
"babel-loader": "^9.1.0",
@@ -1375,6 +1387,20 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-transform-object-assign": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.18.6.tgz",
+ "integrity": "sha512-mQisZ3JfqWh2gVXvfqYCAAyRs6+7oev+myBsTwW5RnPhYXOTuCEw2oe3YgxlXMViXUS53lG8koulI7mJ+8JE+A==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-transform-object-super": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
@@ -1450,6 +1476,21 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz",
+ "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-transform-react-jsx": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-transform-react-jsx-self": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
@@ -1478,6 +1519,22 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz",
+ "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-transform-regenerator": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz",
@@ -1776,6 +1833,26 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/preset-react": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz",
+ "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/helper-validator-option": "^7.18.6",
+ "@babel/plugin-transform-react-display-name": "^7.18.6",
+ "@babel/plugin-transform-react-jsx": "^7.18.6",
+ "@babel/plugin-transform-react-jsx-development": "^7.18.6",
+ "@babel/plugin-transform-react-pure-annotations": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/preset-typescript": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz",
@@ -2006,6 +2083,17 @@
"node": ">=10.0.0"
}
},
+ "node_modules/@egjs/hammerjs": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz",
+ "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==",
+ "dependencies": {
+ "@types/hammerjs": "^2.0.36"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/@eslint/eslintrc": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
@@ -4891,12 +4979,29 @@
"resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz",
"integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ=="
},
- "node_modules/@react-navigation/core": {
- "version": "6.4.4",
- "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.4.tgz",
- "integrity": "sha512-skdTzr6sOceEusEDG+e58zaSpgy1Yz7eZGFtmkmdYAFkZDy5nkIY/0nYuXP0waUYarNXg6lNEVkF995/kZXHZg==",
+ "node_modules/@react-navigation/bottom-tabs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.2.tgz",
+ "integrity": "sha512-iN3B1cgXdo64lqXdsTsCjN7n+5ILYKRexAu0VtW6EO8E6Z/0obK5JcCEropSiimRqVRs0kyuYj3F94Oth+hMrw==",
"dependencies": {
- "@react-navigation/routers": "^6.1.5",
+ "@react-navigation/elements": "^1.3.12",
+ "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/core": {
+ "version": "6.4.5",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.5.tgz",
+ "integrity": "sha512-wcde35HeOM5r2P25EwLQZyJ1yhXDGKuWpnKfsSI1xrgYIvWdYi3j/yGnwgNGDelCmtUt1Fyk2pmOv8sEku9KkA==",
+ "dependencies": {
+ "@react-navigation/routers": "^6.1.6",
"escape-string-regexp": "^4.0.0",
"nanoid": "^3.1.23",
"query-string": "^7.1.3",
@@ -4924,9 +5029,9 @@
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/@react-navigation/elements": {
- "version": "1.3.10",
- "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.10.tgz",
- "integrity": "sha512-JFaoZG9S+Zz291CvAMeGw8kNl/g2AaY9Pbo+VcYO+JM6UF/E5Obq9ga2ydxDrn3an7wzdl6flA/4lWhqG82Vqw==",
+ "version": "1.3.12",
+ "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.12.tgz",
+ "integrity": "sha512-iVcLIYg/XJk1p6X1rSFhNhCjAJ3ORqNT2/bJqw7I/liujeJAoz1oZ5JDoEcZaA0wMDts1txxLuqAYJmhCgU2aA==",
"peerDependencies": {
"@react-navigation/native": "^6.0.0",
"react": "*",
@@ -4935,11 +5040,11 @@
}
},
"node_modules/@react-navigation/native": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.0.tgz",
- "integrity": "sha512-CdjOmbE4c/UczczqeP7ZrFXJcjnXOCwY1PDNjX51Ph1b2tHXpQ41/089k3R49dc5i2sFLk6jKaryFU2dcLr8jw==",
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.1.tgz",
+ "integrity": "sha512-iIozx9c66EjSFyzKrZPixnk6vBuivYXp0jmbKCJXNIa7MY+8OLx9CXj/+1py/l/OGlXDhI6jiUWWetOfOtMaBQ==",
"dependencies": {
- "@react-navigation/core": "^6.4.4",
+ "@react-navigation/core": "^6.4.5",
"escape-string-regexp": "^4.0.0",
"fast-deep-equal": "^3.1.3",
"nanoid": "^3.1.23"
@@ -4950,11 +5055,11 @@
}
},
"node_modules/@react-navigation/native-stack": {
- "version": "6.9.5",
- "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.9.5.tgz",
- "integrity": "sha512-1ZIrla+b4gB8KDC6QewtZ/1yOS23bQctwR4Pf6ECA0stEH8ibbxh70iiI/LluL5CtWxrWfgOrl1jpQsVvtKY+Q==",
+ "version": "6.9.7",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.9.7.tgz",
+ "integrity": "sha512-YsBv4LldFErwQbqLCI/aWWDTpMf9SFS4IW3Qcefm+TZli9Ee7XpZMmFdotiZTz4KoYHbqhO1fuExjl2O7ZHrAQ==",
"dependencies": {
- "@react-navigation/elements": "^1.3.10",
+ "@react-navigation/elements": "^1.3.12",
"warn-once": "^0.1.0"
},
"peerDependencies": {
@@ -4977,13 +5082,95 @@
}
},
"node_modules/@react-navigation/routers": {
- "version": "6.1.5",
- "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.5.tgz",
- "integrity": "sha512-JzMRiRRu8J0yUMC7BV8wOVzevjkHnIPONbpCTL/vH5yceTm+dSH/U3esIObgk8wYYbov+jYlVhwUQNGRb2to6g==",
+ "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/@react-spring/animated": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.6.1.tgz",
+ "integrity": "sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==",
+ "dependencies": {
+ "@react-spring/shared": "~9.6.1",
+ "@react-spring/types": "~9.6.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@react-spring/core": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.6.1.tgz",
+ "integrity": "sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==",
+ "dependencies": {
+ "@react-spring/animated": "~9.6.1",
+ "@react-spring/rafz": "~9.6.1",
+ "@react-spring/shared": "~9.6.1",
+ "@react-spring/types": "~9.6.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/react-spring/donate"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@react-spring/native": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/native/-/native-9.6.1.tgz",
+ "integrity": "sha512-ZIfSytxFGLw4gYOb8gsmwG0+JZYxuM/Y1XPCXCkhuoMn+RmOYrr0kQ4gLczbmf+TRxth7OT1c8vBYz0+SCGcIQ==",
+ "dependencies": {
+ "@react-spring/animated": "~9.6.1",
+ "@react-spring/core": "~9.6.1",
+ "@react-spring/shared": "~9.6.1",
+ "@react-spring/types": "~9.6.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || >=17.0.0 || >=18.0.0",
+ "react-native": ">=0.58"
+ }
+ },
+ "node_modules/@react-spring/rafz": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.6.1.tgz",
+ "integrity": "sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ=="
+ },
+ "node_modules/@react-spring/shared": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.6.1.tgz",
+ "integrity": "sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==",
+ "dependencies": {
+ "@react-spring/rafz": "~9.6.1",
+ "@react-spring/types": "~9.6.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@react-spring/types": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.6.1.tgz",
+ "integrity": "sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q=="
+ },
+ "node_modules/@react-spring/web": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.6.1.tgz",
+ "integrity": "sha512-X2zR6q2Z+FjsWfGAmAXlQaoUHbPmfuCaXpuM6TcwXPpLE1ZD4A1eys/wpXboFQmDkjnrlTmKvpVna1MjWpZ5Hw==",
+ "dependencies": {
+ "@react-spring/animated": "~9.6.1",
+ "@react-spring/core": "~9.6.1",
+ "@react-spring/shared": "~9.6.1",
+ "@react-spring/types": "~9.6.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/@react-stately/checkbox": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.3.1.tgz",
@@ -5366,6 +5553,29 @@
"react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0"
}
},
+ "node_modules/@reduxjs/toolkit": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.1.tgz",
+ "integrity": "sha512-HikrdY+IDgRfRYlCTGUQaiCxxDDgM1mQrRbZ6S1HFZX5ZYuJ4o8EstNmhTwHdPl2rTmLxzwSu0b3AyeyTlR+RA==",
+ "dependencies": {
+ "immer": "^9.0.16",
+ "redux": "^4.2.0",
+ "redux-thunk": "^2.4.2",
+ "reselect": "^4.1.7"
+ },
+ "peerDependencies": {
+ "react": "^16.9.0 || ^17.0.0 || ^18",
+ "react-redux": "^7.2.1 || ^8.0.2"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-redux": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@sideway/address": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
@@ -5578,6 +5788,20 @@
"@types/node": "*"
}
},
+ "node_modules/@types/hammerjs": {
+ "version": "2.0.41",
+ "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz",
+ "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA=="
+ },
+ "node_modules/@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "dependencies": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"node_modules/@types/http-proxy": {
"version": "1.17.9",
"resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz",
@@ -5587,6 +5811,11 @@
"@types/node": "*"
}
},
+ "node_modules/@types/invariant": {
+ "version": "2.2.35",
+ "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz",
+ "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg=="
+ },
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
@@ -5640,8 +5869,7 @@
"node_modules/@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "peer": true
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"node_modules/@types/qs": {
"version": "6.9.7",
@@ -5656,16 +5884,24 @@
"dev": true
},
"node_modules/@types/react": {
- "version": "18.0.25",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz",
- "integrity": "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==",
- "peer": true,
+ "version": "18.0.26",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz",
+ "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==",
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
+ "node_modules/@types/react-dom": {
+ "version": "18.0.9",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz",
+ "integrity": "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==",
+ "devOptional": true,
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/@types/react-native": {
"version": "0.70.7",
"resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.7.tgz",
@@ -5684,8 +5920,7 @@
"node_modules/@types/scheduler": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "peer": true
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
},
"node_modules/@types/serve-index": {
"version": "1.9.1",
@@ -5721,6 +5956,11 @@
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
"dev": true
},
+ "node_modules/@types/use-sync-external-store": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
+ "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
+ },
"node_modules/@types/webpack": {
"version": "5.28.0",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-5.28.0.tgz",
@@ -7440,35 +7680,35 @@
}
},
"node_modules/babel-preset-es2015": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.14.0.tgz",
- "integrity": "sha512-ogjLirrzjxgkMizNwNaTFslRhpKykJ3cboykPoBRyY1vwMAUVtu4F7jdISs9aTQlPYX2OLj5I4302vaYJ70Ohw==",
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz",
+ "integrity": "sha512-XfwUqG1Ry6R43m4Wfob+vHbIVBIqTg/TJY4Snku1iIzeH7mUnwHA8Vagmv+ZQbPwhS8HgsdQvy28Py3k5zpoFQ==",
"deprecated": "🙌 Thanks for using Babel: we recommend using babel-preset-env now: please read https://babeljs.io/env to update!",
"dependencies": {
- "babel-plugin-check-es2015-constants": "^6.3.13",
- "babel-plugin-transform-es2015-arrow-functions": "^6.3.13",
- "babel-plugin-transform-es2015-block-scoped-functions": "^6.3.13",
- "babel-plugin-transform-es2015-block-scoping": "^6.14.0",
- "babel-plugin-transform-es2015-classes": "^6.14.0",
- "babel-plugin-transform-es2015-computed-properties": "^6.3.13",
- "babel-plugin-transform-es2015-destructuring": "^6.9.0",
- "babel-plugin-transform-es2015-duplicate-keys": "^6.6.0",
- "babel-plugin-transform-es2015-for-of": "^6.6.0",
- "babel-plugin-transform-es2015-function-name": "^6.9.0",
- "babel-plugin-transform-es2015-literals": "^6.3.13",
- "babel-plugin-transform-es2015-modules-amd": "^6.8.0",
- "babel-plugin-transform-es2015-modules-commonjs": "^6.14.0",
- "babel-plugin-transform-es2015-modules-systemjs": "^6.14.0",
- "babel-plugin-transform-es2015-modules-umd": "^6.12.0",
- "babel-plugin-transform-es2015-object-super": "^6.3.13",
- "babel-plugin-transform-es2015-parameters": "^6.9.0",
- "babel-plugin-transform-es2015-shorthand-properties": "^6.3.13",
- "babel-plugin-transform-es2015-spread": "^6.3.13",
- "babel-plugin-transform-es2015-sticky-regex": "^6.3.13",
- "babel-plugin-transform-es2015-template-literals": "^6.6.0",
- "babel-plugin-transform-es2015-typeof-symbol": "^6.6.0",
- "babel-plugin-transform-es2015-unicode-regex": "^6.3.13",
- "babel-plugin-transform-regenerator": "^6.14.0"
+ "babel-plugin-check-es2015-constants": "^6.22.0",
+ "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
+ "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0",
+ "babel-plugin-transform-es2015-block-scoping": "^6.24.1",
+ "babel-plugin-transform-es2015-classes": "^6.24.1",
+ "babel-plugin-transform-es2015-computed-properties": "^6.24.1",
+ "babel-plugin-transform-es2015-destructuring": "^6.22.0",
+ "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1",
+ "babel-plugin-transform-es2015-for-of": "^6.22.0",
+ "babel-plugin-transform-es2015-function-name": "^6.24.1",
+ "babel-plugin-transform-es2015-literals": "^6.22.0",
+ "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
+ "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1",
+ "babel-plugin-transform-es2015-modules-umd": "^6.24.1",
+ "babel-plugin-transform-es2015-object-super": "^6.24.1",
+ "babel-plugin-transform-es2015-parameters": "^6.24.1",
+ "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1",
+ "babel-plugin-transform-es2015-spread": "^6.22.0",
+ "babel-plugin-transform-es2015-sticky-regex": "^6.24.1",
+ "babel-plugin-transform-es2015-template-literals": "^6.22.0",
+ "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0",
+ "babel-plugin-transform-es2015-unicode-regex": "^6.24.1",
+ "babel-plugin-transform-regenerator": "^6.24.1"
}
},
"node_modules/babel-preset-es2016": {
@@ -7512,6 +7752,38 @@
"modify-babel-preset": "3.2.0"
}
},
+ "node_modules/babel-preset-esnext/node_modules/babel-preset-es2015": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.14.0.tgz",
+ "integrity": "sha512-ogjLirrzjxgkMizNwNaTFslRhpKykJ3cboykPoBRyY1vwMAUVtu4F7jdISs9aTQlPYX2OLj5I4302vaYJ70Ohw==",
+ "deprecated": "🙌 Thanks for using Babel: we recommend using babel-preset-env now: please read https://babeljs.io/env to update!",
+ "dependencies": {
+ "babel-plugin-check-es2015-constants": "^6.3.13",
+ "babel-plugin-transform-es2015-arrow-functions": "^6.3.13",
+ "babel-plugin-transform-es2015-block-scoped-functions": "^6.3.13",
+ "babel-plugin-transform-es2015-block-scoping": "^6.14.0",
+ "babel-plugin-transform-es2015-classes": "^6.14.0",
+ "babel-plugin-transform-es2015-computed-properties": "^6.3.13",
+ "babel-plugin-transform-es2015-destructuring": "^6.9.0",
+ "babel-plugin-transform-es2015-duplicate-keys": "^6.6.0",
+ "babel-plugin-transform-es2015-for-of": "^6.6.0",
+ "babel-plugin-transform-es2015-function-name": "^6.9.0",
+ "babel-plugin-transform-es2015-literals": "^6.3.13",
+ "babel-plugin-transform-es2015-modules-amd": "^6.8.0",
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.14.0",
+ "babel-plugin-transform-es2015-modules-systemjs": "^6.14.0",
+ "babel-plugin-transform-es2015-modules-umd": "^6.12.0",
+ "babel-plugin-transform-es2015-object-super": "^6.3.13",
+ "babel-plugin-transform-es2015-parameters": "^6.9.0",
+ "babel-plugin-transform-es2015-shorthand-properties": "^6.3.13",
+ "babel-plugin-transform-es2015-spread": "^6.3.13",
+ "babel-plugin-transform-es2015-sticky-regex": "^6.3.13",
+ "babel-plugin-transform-es2015-template-literals": "^6.6.0",
+ "babel-plugin-transform-es2015-typeof-symbol": "^6.6.0",
+ "babel-plugin-transform-es2015-unicode-regex": "^6.3.13",
+ "babel-plugin-transform-regenerator": "^6.14.0"
+ }
+ },
"node_modules/babel-preset-fbjs": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz",
@@ -8335,6 +8607,18 @@
"node": ">=0.10.0"
}
},
+ "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/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -8348,6 +8632,31 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
},
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/color/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/color/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
"node_modules/colorette": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
@@ -10991,6 +11300,19 @@
"node": ">= 8"
}
},
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hoist-non-react-statics/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/hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
@@ -11222,6 +11544,15 @@
"node": ">=4.0"
}
},
+ "node_modules/immer": {
+ "version": "9.0.16",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz",
+ "integrity": "sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/immer"
+ }
+ },
"node_modules/import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -16203,7 +16534,6 @@
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dev": true,
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
@@ -16213,8 +16543,7 @@
"node_modules/prop-types/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==",
- "dev": true
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/proxy-addr": {
"version": "2.0.7",
@@ -16445,11 +16774,55 @@
"nullthrows": "^1.1.1"
}
},
+ "node_modules/react-native-encrypted-storage": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/react-native-encrypted-storage/-/react-native-encrypted-storage-4.0.3.tgz",
+ "integrity": "sha512-0pJA4Aj2S1PIJEbU7pN/Qvf7JIJx3hFywx+i+bLHtgK0/6Zryf1V2xVsWcrD50dfiu3jY1eN2gesQ5osGxE7jA==",
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-gesture-handler": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.8.0.tgz",
+ "integrity": "sha512-poOSfz/w0IyD6Qwq7aaIRRfEaVTl1ecQFoyiIbpOpfNTjm2B1niY2FLrdVQIOtIOe+K9nH55Qal04nr4jGkHdQ==",
+ "dependencies": {
+ "@egjs/hammerjs": "^2.0.17",
+ "hoist-non-react-statics": "^3.3.0",
+ "invariant": "^2.2.4",
+ "lodash": "^4.17.21",
+ "prop-types": "^15.7.2"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/react-native-gradle-plugin": {
"version": "0.70.3",
"resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz",
"integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A=="
},
+ "node_modules/react-native-reanimated": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.13.0.tgz",
+ "integrity": "sha512-yUHyYVIegWWIza4+nVyS3CSmI/Mc8kLFVHw2c6gnSHaYhYA4LeEjH/jBkoMzHk9Xd0Ra3cwtjYKAMG8OTp6JVg==",
+ "dependencies": {
+ "@babel/plugin-transform-object-assign": "^7.16.7",
+ "@babel/preset-typescript": "^7.16.7",
+ "@types/invariant": "^2.2.35",
+ "invariant": "^2.2.4",
+ "lodash.isequal": "^4.5.0",
+ "setimmediate": "^1.0.5",
+ "string-hash-64": "^1.0.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0",
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/react-native-safe-area-context": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.4.1.tgz",
@@ -16522,6 +16895,49 @@
"react-deep-force-update": "^1.0.0"
}
},
+ "node_modules/react-redux": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz",
+ "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.1",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/use-sync-external-store": "^0.0.3",
+ "hoist-non-react-statics": "^3.3.2",
+ "react-is": "^18.0.0",
+ "use-sync-external-store": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8 || ^17.0 || ^18.0",
+ "@types/react-dom": "^16.8 || ^17.0 || ^18.0",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0",
+ "react-native": ">=0.59",
+ "redux": "^4"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ },
+ "redux": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-redux/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ },
"node_modules/react-refresh": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
@@ -16696,6 +17112,22 @@
"node": ">= 10.13.0"
}
},
+ "node_modules/redux": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz",
+ "integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==",
+ "dependencies": {
+ "@babel/runtime": "^7.9.2"
+ }
+ },
+ "node_modules/redux-thunk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz",
+ "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==",
+ "peerDependencies": {
+ "redux": "^4"
+ }
+ },
"node_modules/regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -16860,8 +17292,7 @@
"node_modules/reselect": {
"version": "4.1.7",
"resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz",
- "integrity": "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==",
- "dev": true
+ "integrity": "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A=="
},
"node_modules/resolve": {
"version": "1.22.1",
@@ -17670,6 +18101,19 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/simple-swizzle/node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ },
"node_modules/sisteransi": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
@@ -18190,6 +18634,11 @@
}
]
},
+ "node_modules/string-hash-64": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string-hash-64/-/string-hash-64-1.0.3.tgz",
+ "integrity": "sha512-D5OKWKvDhyVWWn2x5Y9b+37NUllks34q1dCDhk/vYcso9fmhs+Tl3KR/gE4v5UNj2UA35cnX4KdVVGkG1deKqw=="
+ },
"node_modules/string-length": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
@@ -20912,6 +21361,14 @@
"@babel/helper-plugin-utils": "^7.18.6"
}
},
+ "@babel/plugin-transform-object-assign": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.18.6.tgz",
+ "integrity": "sha512-mQisZ3JfqWh2gVXvfqYCAAyRs6+7oev+myBsTwW5RnPhYXOTuCEw2oe3YgxlXMViXUS53lG8koulI7mJ+8JE+A==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.18.6"
+ }
+ },
"@babel/plugin-transform-object-super": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
@@ -20957,6 +21414,15 @@
"@babel/types": "^7.19.0"
}
},
+ "@babel/plugin-transform-react-jsx-development": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz",
+ "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-transform-react-jsx": "^7.18.6"
+ }
+ },
"@babel/plugin-transform-react-jsx-self": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
@@ -20973,6 +21439,16 @@
"@babel/helper-plugin-utils": "^7.19.0"
}
},
+ "@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz",
+ "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ }
+ },
"@babel/plugin-transform-regenerator": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz",
@@ -21192,6 +21668,20 @@
"esutils": "^2.0.2"
}
},
+ "@babel/preset-react": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz",
+ "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/helper-validator-option": "^7.18.6",
+ "@babel/plugin-transform-react-display-name": "^7.18.6",
+ "@babel/plugin-transform-react-jsx": "^7.18.6",
+ "@babel/plugin-transform-react-jsx-development": "^7.18.6",
+ "@babel/plugin-transform-react-pure-annotations": "^7.18.6"
+ }
+ },
"@babel/preset-typescript": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz",
@@ -21366,6 +21856,14 @@
"integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
"dev": true
},
+ "@egjs/hammerjs": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz",
+ "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==",
+ "requires": {
+ "@types/hammerjs": "^2.0.36"
+ }
+ },
"@eslint/eslintrc": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
@@ -23626,12 +24124,22 @@
"resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz",
"integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ=="
},
- "@react-navigation/core": {
- "version": "6.4.4",
- "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.4.tgz",
- "integrity": "sha512-skdTzr6sOceEusEDG+e58zaSpgy1Yz7eZGFtmkmdYAFkZDy5nkIY/0nYuXP0waUYarNXg6lNEVkF995/kZXHZg==",
+ "@react-navigation/bottom-tabs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.2.tgz",
+ "integrity": "sha512-iN3B1cgXdo64lqXdsTsCjN7n+5ILYKRexAu0VtW6EO8E6Z/0obK5JcCEropSiimRqVRs0kyuYj3F94Oth+hMrw==",
"requires": {
- "@react-navigation/routers": "^6.1.5",
+ "@react-navigation/elements": "^1.3.12",
+ "color": "^4.2.3",
+ "warn-once": "^0.1.0"
+ }
+ },
+ "@react-navigation/core": {
+ "version": "6.4.5",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.5.tgz",
+ "integrity": "sha512-wcde35HeOM5r2P25EwLQZyJ1yhXDGKuWpnKfsSI1xrgYIvWdYi3j/yGnwgNGDelCmtUt1Fyk2pmOv8sEku9KkA==",
+ "requires": {
+ "@react-navigation/routers": "^6.1.6",
"escape-string-regexp": "^4.0.0",
"nanoid": "^3.1.23",
"query-string": "^7.1.3",
@@ -23652,17 +24160,17 @@
}
},
"@react-navigation/elements": {
- "version": "1.3.10",
- "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.10.tgz",
- "integrity": "sha512-JFaoZG9S+Zz291CvAMeGw8kNl/g2AaY9Pbo+VcYO+JM6UF/E5Obq9ga2ydxDrn3an7wzdl6flA/4lWhqG82Vqw==",
+ "version": "1.3.12",
+ "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.12.tgz",
+ "integrity": "sha512-iVcLIYg/XJk1p6X1rSFhNhCjAJ3ORqNT2/bJqw7I/liujeJAoz1oZ5JDoEcZaA0wMDts1txxLuqAYJmhCgU2aA==",
"requires": {}
},
"@react-navigation/native": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.0.tgz",
- "integrity": "sha512-CdjOmbE4c/UczczqeP7ZrFXJcjnXOCwY1PDNjX51Ph1b2tHXpQ41/089k3R49dc5i2sFLk6jKaryFU2dcLr8jw==",
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.1.tgz",
+ "integrity": "sha512-iIozx9c66EjSFyzKrZPixnk6vBuivYXp0jmbKCJXNIa7MY+8OLx9CXj/+1py/l/OGlXDhI6jiUWWetOfOtMaBQ==",
"requires": {
- "@react-navigation/core": "^6.4.4",
+ "@react-navigation/core": "^6.4.5",
"escape-string-regexp": "^4.0.0",
"fast-deep-equal": "^3.1.3",
"nanoid": "^3.1.23"
@@ -23676,22 +24184,83 @@
}
},
"@react-navigation/native-stack": {
- "version": "6.9.5",
- "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.9.5.tgz",
- "integrity": "sha512-1ZIrla+b4gB8KDC6QewtZ/1yOS23bQctwR4Pf6ECA0stEH8ibbxh70iiI/LluL5CtWxrWfgOrl1jpQsVvtKY+Q==",
+ "version": "6.9.7",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.9.7.tgz",
+ "integrity": "sha512-YsBv4LldFErwQbqLCI/aWWDTpMf9SFS4IW3Qcefm+TZli9Ee7XpZMmFdotiZTz4KoYHbqhO1fuExjl2O7ZHrAQ==",
"requires": {
- "@react-navigation/elements": "^1.3.10",
+ "@react-navigation/elements": "^1.3.12",
"warn-once": "^0.1.0"
}
},
"@react-navigation/routers": {
- "version": "6.1.5",
- "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.5.tgz",
- "integrity": "sha512-JzMRiRRu8J0yUMC7BV8wOVzevjkHnIPONbpCTL/vH5yceTm+dSH/U3esIObgk8wYYbov+jYlVhwUQNGRb2to6g==",
+ "version": "6.1.6",
+ "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.6.tgz",
+ "integrity": "sha512-Z5DeCW3pUvMafbU9Cjy1qJYC2Bvl8iy3+PfsB0DsAwQ6zZ3WAXW5FTMX4Gb9H+Jg6qHWGbMFFwlYpS3UJ3tlVQ==",
"requires": {
"nanoid": "^3.1.23"
}
},
+ "@react-spring/animated": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.6.1.tgz",
+ "integrity": "sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==",
+ "requires": {
+ "@react-spring/shared": "~9.6.1",
+ "@react-spring/types": "~9.6.1"
+ }
+ },
+ "@react-spring/core": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.6.1.tgz",
+ "integrity": "sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==",
+ "requires": {
+ "@react-spring/animated": "~9.6.1",
+ "@react-spring/rafz": "~9.6.1",
+ "@react-spring/shared": "~9.6.1",
+ "@react-spring/types": "~9.6.1"
+ }
+ },
+ "@react-spring/native": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/native/-/native-9.6.1.tgz",
+ "integrity": "sha512-ZIfSytxFGLw4gYOb8gsmwG0+JZYxuM/Y1XPCXCkhuoMn+RmOYrr0kQ4gLczbmf+TRxth7OT1c8vBYz0+SCGcIQ==",
+ "requires": {
+ "@react-spring/animated": "~9.6.1",
+ "@react-spring/core": "~9.6.1",
+ "@react-spring/shared": "~9.6.1",
+ "@react-spring/types": "~9.6.1"
+ }
+ },
+ "@react-spring/rafz": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.6.1.tgz",
+ "integrity": "sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ=="
+ },
+ "@react-spring/shared": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.6.1.tgz",
+ "integrity": "sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==",
+ "requires": {
+ "@react-spring/rafz": "~9.6.1",
+ "@react-spring/types": "~9.6.1"
+ }
+ },
+ "@react-spring/types": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.6.1.tgz",
+ "integrity": "sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q=="
+ },
+ "@react-spring/web": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.6.1.tgz",
+ "integrity": "sha512-X2zR6q2Z+FjsWfGAmAXlQaoUHbPmfuCaXpuM6TcwXPpLE1ZD4A1eys/wpXboFQmDkjnrlTmKvpVna1MjWpZ5Hw==",
+ "requires": {
+ "@react-spring/animated": "~9.6.1",
+ "@react-spring/core": "~9.6.1",
+ "@react-spring/shared": "~9.6.1",
+ "@react-spring/types": "~9.6.1"
+ }
+ },
"@react-stately/checkbox": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.3.1.tgz",
@@ -23985,6 +24554,17 @@
"@react-types/shared": "^3.16.0"
}
},
+ "@reduxjs/toolkit": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.1.tgz",
+ "integrity": "sha512-HikrdY+IDgRfRYlCTGUQaiCxxDDgM1mQrRbZ6S1HFZX5ZYuJ4o8EstNmhTwHdPl2rTmLxzwSu0b3AyeyTlR+RA==",
+ "requires": {
+ "immer": "^9.0.16",
+ "redux": "^4.2.0",
+ "redux-thunk": "^2.4.2",
+ "reselect": "^4.1.7"
+ }
+ },
"@sideway/address": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
@@ -24194,6 +24774,20 @@
"@types/node": "*"
}
},
+ "@types/hammerjs": {
+ "version": "2.0.41",
+ "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz",
+ "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA=="
+ },
+ "@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "requires": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"@types/http-proxy": {
"version": "1.17.9",
"resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz",
@@ -24203,6 +24797,11 @@
"@types/node": "*"
}
},
+ "@types/invariant": {
+ "version": "2.2.35",
+ "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz",
+ "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg=="
+ },
"@types/istanbul-lib-coverage": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
@@ -24256,8 +24855,7 @@
"@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "peer": true
+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"@types/qs": {
"version": "6.9.7",
@@ -24272,16 +24870,24 @@
"dev": true
},
"@types/react": {
- "version": "18.0.25",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz",
- "integrity": "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==",
- "peer": true,
+ "version": "18.0.26",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz",
+ "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==",
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
+ "@types/react-dom": {
+ "version": "18.0.9",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz",
+ "integrity": "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==",
+ "devOptional": true,
+ "requires": {
+ "@types/react": "*"
+ }
+ },
"@types/react-native": {
"version": "0.70.7",
"resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.7.tgz",
@@ -24300,8 +24906,7 @@
"@types/scheduler": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "peer": true
+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
},
"@types/serve-index": {
"version": "1.9.1",
@@ -24337,6 +24942,11 @@
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
"dev": true
},
+ "@types/use-sync-external-store": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
+ "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
+ },
"@types/webpack": {
"version": "5.28.0",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-5.28.0.tgz",
@@ -25780,34 +26390,34 @@
}
},
"babel-preset-es2015": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.14.0.tgz",
- "integrity": "sha512-ogjLirrzjxgkMizNwNaTFslRhpKykJ3cboykPoBRyY1vwMAUVtu4F7jdISs9aTQlPYX2OLj5I4302vaYJ70Ohw==",
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz",
+ "integrity": "sha512-XfwUqG1Ry6R43m4Wfob+vHbIVBIqTg/TJY4Snku1iIzeH7mUnwHA8Vagmv+ZQbPwhS8HgsdQvy28Py3k5zpoFQ==",
"requires": {
- "babel-plugin-check-es2015-constants": "^6.3.13",
- "babel-plugin-transform-es2015-arrow-functions": "^6.3.13",
- "babel-plugin-transform-es2015-block-scoped-functions": "^6.3.13",
- "babel-plugin-transform-es2015-block-scoping": "^6.14.0",
- "babel-plugin-transform-es2015-classes": "^6.14.0",
- "babel-plugin-transform-es2015-computed-properties": "^6.3.13",
- "babel-plugin-transform-es2015-destructuring": "^6.9.0",
- "babel-plugin-transform-es2015-duplicate-keys": "^6.6.0",
- "babel-plugin-transform-es2015-for-of": "^6.6.0",
- "babel-plugin-transform-es2015-function-name": "^6.9.0",
- "babel-plugin-transform-es2015-literals": "^6.3.13",
- "babel-plugin-transform-es2015-modules-amd": "^6.8.0",
- "babel-plugin-transform-es2015-modules-commonjs": "^6.14.0",
- "babel-plugin-transform-es2015-modules-systemjs": "^6.14.0",
- "babel-plugin-transform-es2015-modules-umd": "^6.12.0",
- "babel-plugin-transform-es2015-object-super": "^6.3.13",
- "babel-plugin-transform-es2015-parameters": "^6.9.0",
- "babel-plugin-transform-es2015-shorthand-properties": "^6.3.13",
- "babel-plugin-transform-es2015-spread": "^6.3.13",
- "babel-plugin-transform-es2015-sticky-regex": "^6.3.13",
- "babel-plugin-transform-es2015-template-literals": "^6.6.0",
- "babel-plugin-transform-es2015-typeof-symbol": "^6.6.0",
- "babel-plugin-transform-es2015-unicode-regex": "^6.3.13",
- "babel-plugin-transform-regenerator": "^6.14.0"
+ "babel-plugin-check-es2015-constants": "^6.22.0",
+ "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
+ "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0",
+ "babel-plugin-transform-es2015-block-scoping": "^6.24.1",
+ "babel-plugin-transform-es2015-classes": "^6.24.1",
+ "babel-plugin-transform-es2015-computed-properties": "^6.24.1",
+ "babel-plugin-transform-es2015-destructuring": "^6.22.0",
+ "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1",
+ "babel-plugin-transform-es2015-for-of": "^6.22.0",
+ "babel-plugin-transform-es2015-function-name": "^6.24.1",
+ "babel-plugin-transform-es2015-literals": "^6.22.0",
+ "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
+ "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1",
+ "babel-plugin-transform-es2015-modules-umd": "^6.24.1",
+ "babel-plugin-transform-es2015-object-super": "^6.24.1",
+ "babel-plugin-transform-es2015-parameters": "^6.24.1",
+ "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1",
+ "babel-plugin-transform-es2015-spread": "^6.22.0",
+ "babel-plugin-transform-es2015-sticky-regex": "^6.24.1",
+ "babel-plugin-transform-es2015-template-literals": "^6.22.0",
+ "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0",
+ "babel-plugin-transform-es2015-unicode-regex": "^6.24.1",
+ "babel-plugin-transform-regenerator": "^6.24.1"
}
},
"babel-preset-es2016": {
@@ -25847,6 +26457,39 @@
"babel-preset-es2017": "6.14.0",
"co": "4.6.0",
"modify-babel-preset": "3.2.0"
+ },
+ "dependencies": {
+ "babel-preset-es2015": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.14.0.tgz",
+ "integrity": "sha512-ogjLirrzjxgkMizNwNaTFslRhpKykJ3cboykPoBRyY1vwMAUVtu4F7jdISs9aTQlPYX2OLj5I4302vaYJ70Ohw==",
+ "requires": {
+ "babel-plugin-check-es2015-constants": "^6.3.13",
+ "babel-plugin-transform-es2015-arrow-functions": "^6.3.13",
+ "babel-plugin-transform-es2015-block-scoped-functions": "^6.3.13",
+ "babel-plugin-transform-es2015-block-scoping": "^6.14.0",
+ "babel-plugin-transform-es2015-classes": "^6.14.0",
+ "babel-plugin-transform-es2015-computed-properties": "^6.3.13",
+ "babel-plugin-transform-es2015-destructuring": "^6.9.0",
+ "babel-plugin-transform-es2015-duplicate-keys": "^6.6.0",
+ "babel-plugin-transform-es2015-for-of": "^6.6.0",
+ "babel-plugin-transform-es2015-function-name": "^6.9.0",
+ "babel-plugin-transform-es2015-literals": "^6.3.13",
+ "babel-plugin-transform-es2015-modules-amd": "^6.8.0",
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.14.0",
+ "babel-plugin-transform-es2015-modules-systemjs": "^6.14.0",
+ "babel-plugin-transform-es2015-modules-umd": "^6.12.0",
+ "babel-plugin-transform-es2015-object-super": "^6.3.13",
+ "babel-plugin-transform-es2015-parameters": "^6.9.0",
+ "babel-plugin-transform-es2015-shorthand-properties": "^6.3.13",
+ "babel-plugin-transform-es2015-spread": "^6.3.13",
+ "babel-plugin-transform-es2015-sticky-regex": "^6.3.13",
+ "babel-plugin-transform-es2015-template-literals": "^6.6.0",
+ "babel-plugin-transform-es2015-typeof-symbol": "^6.6.0",
+ "babel-plugin-transform-es2015-unicode-regex": "^6.3.13",
+ "babel-plugin-transform-regenerator": "^6.14.0"
+ }
+ }
}
},
"babel-preset-fbjs": {
@@ -26499,6 +27142,30 @@
"object-visit": "^1.0.0"
}
},
+ "color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "requires": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "dependencies": {
+ "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==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ }
+ }
+ },
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -26512,6 +27179,15 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
},
+ "color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
"colorette": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
@@ -28517,6 +29193,21 @@
}
}
},
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ },
+ "dependencies": {
+ "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=="
+ }
+ }
+ },
"hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
@@ -28694,6 +29385,11 @@
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz",
"integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA=="
},
+ "immer": {
+ "version": "9.0.16",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz",
+ "integrity": "sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ=="
+ },
"import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -32514,7 +33210,6 @@
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dev": true,
"requires": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
@@ -32524,8 +33219,7 @@
"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==",
- "dev": true
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
}
}
},
@@ -32723,11 +33417,43 @@
"nullthrows": "^1.1.1"
}
},
+ "react-native-encrypted-storage": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/react-native-encrypted-storage/-/react-native-encrypted-storage-4.0.3.tgz",
+ "integrity": "sha512-0pJA4Aj2S1PIJEbU7pN/Qvf7JIJx3hFywx+i+bLHtgK0/6Zryf1V2xVsWcrD50dfiu3jY1eN2gesQ5osGxE7jA==",
+ "requires": {}
+ },
+ "react-native-gesture-handler": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.8.0.tgz",
+ "integrity": "sha512-poOSfz/w0IyD6Qwq7aaIRRfEaVTl1ecQFoyiIbpOpfNTjm2B1niY2FLrdVQIOtIOe+K9nH55Qal04nr4jGkHdQ==",
+ "requires": {
+ "@egjs/hammerjs": "^2.0.17",
+ "hoist-non-react-statics": "^3.3.0",
+ "invariant": "^2.2.4",
+ "lodash": "^4.17.21",
+ "prop-types": "^15.7.2"
+ }
+ },
"react-native-gradle-plugin": {
"version": "0.70.3",
"resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz",
"integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A=="
},
+ "react-native-reanimated": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.13.0.tgz",
+ "integrity": "sha512-yUHyYVIegWWIza4+nVyS3CSmI/Mc8kLFVHw2c6gnSHaYhYA4LeEjH/jBkoMzHk9Xd0Ra3cwtjYKAMG8OTp6JVg==",
+ "requires": {
+ "@babel/plugin-transform-object-assign": "^7.16.7",
+ "@babel/preset-typescript": "^7.16.7",
+ "@types/invariant": "^2.2.35",
+ "invariant": "^2.2.4",
+ "lodash.isequal": "^4.5.0",
+ "setimmediate": "^1.0.5",
+ "string-hash-64": "^1.0.3"
+ }
+ },
"react-native-safe-area-context": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.4.1.tgz",
@@ -32777,6 +33503,26 @@
"react-deep-force-update": "^1.0.0"
}
},
+ "react-redux": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz",
+ "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==",
+ "requires": {
+ "@babel/runtime": "^7.12.1",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/use-sync-external-store": "^0.0.3",
+ "hoist-non-react-statics": "^3.3.2",
+ "react-is": "^18.0.0",
+ "use-sync-external-store": "^1.0.0"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ }
+ }
+ },
"react-refresh": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
@@ -32915,6 +33661,20 @@
"resolve": "^1.20.0"
}
},
+ "redux": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz",
+ "integrity": "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==",
+ "requires": {
+ "@babel/runtime": "^7.9.2"
+ }
+ },
+ "redux-thunk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz",
+ "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==",
+ "requires": {}
+ },
"regenerate": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -33045,8 +33805,7 @@
"reselect": {
"version": "4.1.7",
"resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz",
- "integrity": "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==",
- "dev": true
+ "integrity": "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A=="
},
"resolve": {
"version": "1.22.1",
@@ -33695,6 +34454,21 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "requires": {
+ "is-arrayish": "^0.3.1"
+ },
+ "dependencies": {
+ "is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ }
+ }
+ },
"sisteransi": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
@@ -34116,6 +34890,11 @@
}
}
},
+ "string-hash-64": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string-hash-64/-/string-hash-64-1.0.3.tgz",
+ "integrity": "sha512-D5OKWKvDhyVWWn2x5Y9b+37NUllks34q1dCDhk/vYcso9fmhs+Tl3KR/gE4v5UNj2UA35cnX4KdVVGkG1deKqw=="
+ },
"string-length": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
diff --git a/package.json b/package.json
index 4d248d8..b68f8c1 100644
--- a/package.json
+++ b/package.json
@@ -12,23 +12,35 @@
"lint": "eslint ."
},
"dependencies": {
- "@react-navigation/native": "^6.1.0",
- "@react-navigation/native-stack": "^6.9.5",
+ "@react-navigation/bottom-tabs": "^6.5.2",
+ "@react-navigation/native": "^6.1.1",
+ "@react-navigation/native-stack": "^6.9.7",
+ "@react-spring/native": "^9.6.1",
+ "@react-spring/web": "^9.6.1",
+ "@reduxjs/toolkit": "^1.9.1",
+ "babel-preset-es2015": "^6.24.1",
"babel-preset-esnext": "^1.1.3",
"babel-preset-react": "^6.24.1",
"native-base": "^3.4.23",
"react": "^18.1.0",
"react-dom": "18.1.0",
"react-native": "0.70.6",
+ "react-native-encrypted-storage": "^4.0.3",
+ "react-native-gesture-handler": "^2.8.0",
+ "react-native-reanimated": "^2.13.0",
"react-native-safe-area-context": "^4.4.1",
"react-native-screens": "^3.18.2",
- "react-native-web": "^0.18.10"
+ "react-native-web": "^0.18.10",
+ "react-redux": "^8.0.5"
},
"devDependencies": {
"@babel/core": "^7.12.9",
- "@babel/runtime": "^7.12.5",
+ "@babel/preset-react": "^7.18.6",
+ "@babel/runtime": "^7.20.6",
"@react-native-community/eslint-config": "^2.0.0",
"@types/node": "^18.11.10",
+ "@types/react": "^18.0.26",
+ "@types/react-dom": "^18.0.9",
"@types/webpack": "^5.28.0",
"babel-jest": "^26.6.3",
"babel-loader": "^9.1.0",
diff --git a/src/App copy.tsx b/src/App copy.tsx
new file mode 100644
index 0000000..6f05eef
--- /dev/null
+++ b/src/App copy.tsx
@@ -0,0 +1,143 @@
+import React, {useState, useEffect} from 'react';
+
+import {StyleSheet, Appearance} from 'react-native';
+import {
+ NativeBaseProvider,
+ Box,
+ Input,
+ Text,
+ Button,
+ useColorMode,
+ useColorModeValue,
+ StatusBar,
+ VStack,
+ Center,
+ Avatar,
+} from 'native-base';
+import {NavigationContainer} from '@react-navigation/native';
+import {SafeAreaProvider, SafeAreaView} from 'react-native-safe-area-context';
+
+import {theme} from '@caj/configs/colors';
+
+import imgSrc from '@caj/img/maimg.png';
+
+interface User {
+ name: string;
+ id: number;
+}
+
+const user: User = {
+ name: 'Hayes',
+ id: 0,
+};
+
+function TestContent() {
+ const {colorMode, toggleColorMode, setColorMode} = useColorMode();
+
+ //var bg = useColorModeValue('dark', 'coolGray.800');
+
+ const [curTheme, setTheme] = useState(1);
+ var bg = '#222';
+
+ if (curTheme !== 1) bg = curTheme === 0 ? '#000' : '#fff';
+
+ console.log(colorMode);
+ const toggleSwitch = () => {
+ console.log('switch');
+ toggleColorMode();
+ };
+
+ return (
+
+
+
+
+
+
+ ma boyy :--)))
+
+
+ EM
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+const Bar = () => {
+ const {colorMode, toggleColorMode} = useColorMode();
+
+ return (
+
+ );
+};
+
+const App = () => {
+ useEffect(() => {
+ // this code will run once
+ }, [])
+
+ return (
+
+
+
+
+
+
+ );
+};
+
+const styles = StyleSheet.create({
+ container: {
+ height: '100%',
+ flex: 1,
+ },
+});
+/*
+const styles = StyleSheet.create({
+ baseText: {
+ fontFamily: 'Cochin',
+ },
+ titleText: {
+ fontSize: 20,
+ fontWeight: 'bold',
+ },
+ image: {
+ width: 500,
+ height: 500,
+ borderWidth: 1,
+ },
+});*/
+
+export default App;
diff --git a/src/App.tsx b/src/App.tsx
index 755e072..a2a366e 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,143 +1,69 @@
-import React, {useState} from 'react';
+import React, {useState, useEffect, Fragment} from 'react';
-import {StyleSheet, Appearance} from 'react-native';
-import {
- NativeBaseProvider,
- Box,
- Input,
- Text,
- Button,
- useColorMode,
- useColorModeValue,
- StatusBar,
- VStack,
- Center,
- Avatar,
-} from 'native-base';
+import {NativeBaseProvider} from 'native-base';
import {NavigationContainer} from '@react-navigation/native';
-import {SafeAreaProvider, SafeAreaView} from 'react-native-safe-area-context';
-import {theme} from '@caj/configs/colors';
+import {getBackgroundColor, theme, ThemeSwitcher} from '@caj/configs/colors';
-import imgSrc from '@caj/img/maimg.png';
+import StatusBar from './StatusBar';
+import Navigation, {linking} from './Navigation';
-interface User {
- name: string;
- id: number;
-}
-
-const user: User = {
- name: 'Hayes',
- id: 0,
-};
-
-function TestContent() {
- const {colorMode, toggleColorMode, setColorMode} = useColorMode();
-
- //var bg = useColorModeValue('dark', 'coolGray.800');
-
- const [curTheme, setTheme] = useState(1);
- var bg = '#222';
-
- if (curTheme !== 1) bg = curTheme === 0 ? '#000' : '#fff';
-
- console.log(colorMode);
- const toggleSwitch = () => {
- console.log('switch');
- toggleColorMode();
- };
-
- return (
-
-
-
-
-
-
- ma boyy :--)))
-
-
- EM
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-const Bar = () => {
- const {colorMode, toggleColorMode} = useColorMode();
-
- return (
-
- );
-};
+import {Provider, useSelector} from 'react-redux';
+import {RootState, store} from '@caj/redux/store';
+import StartHelper from './appStart/StartHelper';
+import {appStatus} from '@caj/configs/appNonSaveVar';
+import {ThemeMode} from '@caj/configs/appVar';
const App = () => {
useEffect(() => {
- // this code will run once
- }, [])
+ console.log('App opened.');
+ }, []);
return (
-
+
+
+
+ );
+};
+
+const OtherProviders = () => {
+ const globalTheme = useSelector(
+ (state: RootState) => state.appVariables.preferences.theme,
+ );
+
+ const navigationTheme = {
+ dark: globalTheme !== ThemeMode.Light,
+ colors: {
+ primary: '#ff7d4f',
+ background: getBackgroundColor(globalTheme),
+ card: '#222',
+ text: '#fff',
+ border: '#ff7d4f',
+ notification: '#fff',
+ },
+ };
+
+ return (
+
-
-
+
);
};
-const styles = StyleSheet.create({
- container: {
- height: '100%',
- flex: 1,
- },
-});
-/*
-const styles = StyleSheet.create({
- baseText: {
- fontFamily: 'Cochin',
- },
- titleText: {
- fontSize: 20,
- fontWeight: 'bold',
- },
- image: {
- width: 500,
- height: 500,
- borderWidth: 1,
- },
-});*/
+const MainComponent = () => {
+ const currentAppStatus = useSelector(
+ (state: RootState) => state.nonSaveVariables.appStatus,
+ );
+ return (
+
+
+
+
+ {currentAppStatus === appStatus.APP_RUNNING ? : null}
+
+ );
+};
export default App;
diff --git a/src/Navigation copy.tsx b/src/Navigation copy.tsx
new file mode 100644
index 0000000..1671609
--- /dev/null
+++ b/src/Navigation copy.tsx
@@ -0,0 +1,105 @@
+import React, {useState, useEffect} from 'react';
+
+import {StyleSheet, Appearance} from 'react-native';
+import {Box, Input, Text, Button, VStack, Center, Avatar} from 'native-base';
+import {NavigationContainer} from '@react-navigation/native';
+import {SafeAreaProvider, SafeAreaView} from 'react-native-safe-area-context';
+
+import {useSelector, useDispatch} from 'react-redux';
+import {RootState} from '@caj/redux/store';
+import {appVarActions} from '@caj/configs/appVarReducer';
+
+import imgSrc from '@caj/img/maimg.png';
+import {placeholder} from '@caj/lang/default';
+import {getBackgroundColor} from '@caj/configs/colors';
+import {saveVarChanges} from '@caj/helper/appData';
+
+function CounterNum() {
+ const lang = useSelector((state: RootState) => state.appVariables.lang);
+ const version = useSelector(
+ (state: RootState) => state.appVariables.preferences.version,
+ );
+
+ return {placeholder(lang.curVersion, {version})};
+}
+
+export default function Navigation() {
+ const theme = useSelector(
+ (state: RootState) => state.appVariables.preferences.theme,
+ );
+
+ const dispatch = useDispatch();
+
+ //const {colorMode, toggleColorMode, setColorMode} = useColorMode();
+
+ //var bg = useColorModeValue('dark', 'coolGray.800');
+
+ //const [curTheme, setTheme] = useState(1);
+
+ return (
+
+
+
+
+
+
+
+
+
+ EM
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ height: '100%',
+ flex: 1,
+ },
+});
diff --git a/src/Navigation.tsx b/src/Navigation.tsx
new file mode 100644
index 0000000..8e68491
--- /dev/null
+++ b/src/Navigation.tsx
@@ -0,0 +1,139 @@
+import React, {useState, useEffect} from 'react';
+
+import {StyleSheet, Appearance} from 'react-native';
+import {SafeAreaProvider, SafeAreaView} from 'react-native-safe-area-context';
+
+import {useSelector, useDispatch} from 'react-redux';
+import {RootState} from '@caj/redux/store';
+import {appVarActions} from '@caj/configs/appVarReducer';
+
+import imgSrc from '@caj/img/maimg.png';
+import {placeholder} from '@caj/lang/default';
+import {getBackgroundColor} from '@caj/configs/colors';
+import {saveVarChanges} from '@caj/helper/appData';
+
+import {Box, Input, VStack, Center, Avatar, Text, Button} from 'native-base';
+import {View} from 'react-native';
+
+import {
+ LinkingOptions,
+ NavigationContainer,
+ useNavigation,
+} from '@react-navigation/native';
+import {
+ createNativeStackNavigator,
+ NativeStackNavigationProp,
+} from '@react-navigation/native-stack';
+import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
+
+const styles = StyleSheet.create({
+ container: {
+ height: '100%',
+ flex: 1,
+ },
+});
+
+export const linking: LinkingOptions<{
+ Auth: string;
+ Home: string;
+ Table: string;
+ Loading: string;
+}> = {
+ prefixes: ['http://'],
+ config: {
+ initialRouteName: 'Loading',
+ screens: {
+ Auth: 'auth',
+ Home: 'home',
+ Table: 'table',
+ Loading: 'loading',
+ },
+ },
+};
+
+export type HomeStackNavigatorParamList = {
+ Home: undefined;
+ Maps: undefined;
+ Chat: undefined;
+ Test: undefined;
+ Settings: undefined;
+};
+
+export type HomeScreenNavigationProp =
+ NativeStackNavigationProp;
+
+export default function Navigation() {
+ const theme = useSelector(
+ (state: RootState) => state.appVariables.preferences.theme,
+ );
+
+ const dispatch = useDispatch();
+
+ return (
+
+
+
+
+
+ );
+}
+
+function ChatScreen() {
+ return (
+
+ Chat!
+
+ );
+}
+
+function HomeScreen() {
+ const navigation = useNavigation();
+ return (
+
+ Home screen
+
+
+ );
+}
+
+function SettingsScreen() {
+ const navigation = useNavigation();
+ return (
+
+ Settings screen
+
+
+ );
+}
+
+const HomeStack = createNativeStackNavigator();
+
+function HomeStackScreen() {
+ return (
+
+
+
+
+ );
+}
+
+const SettingsStack = createNativeStackNavigator();
+
+function SettingsStackScreen() {
+ return (
+
+
+
+
+ );
+}
+
+const Tab = createBottomTabNavigator();
diff --git a/src/StatusBar.tsx b/src/StatusBar.tsx
new file mode 100644
index 0000000..5ac5f46
--- /dev/null
+++ b/src/StatusBar.tsx
@@ -0,0 +1,15 @@
+import {useColorMode} from 'native-base';
+
+import {StatusBar as NBStatusBar} from 'native-base';
+
+export default function StatusBar() {
+ const {colorMode} = useColorMode();
+
+ return (
+
+ );
+}
diff --git a/src/appStart/StartHelper.tsx b/src/appStart/StartHelper.tsx
new file mode 100644
index 0000000..acb37fa
--- /dev/null
+++ b/src/appStart/StartHelper.tsx
@@ -0,0 +1,104 @@
+import {Platform, StyleSheet, View, ScrollView} from 'react-native';
+
+import {Center, Heading, Text, Spinner, HStack} from 'native-base';
+import {animated, useSpring} from '@react-spring/native';
+
+import {SafeAreaView} from 'react-native-safe-area-context';
+
+import {useSelector, useDispatch} from 'react-redux';
+import {RootState, store} from '@caj/redux/store';
+
+import imgSrc from '@caj/img/maimg.png';
+import {placeholder} from '@caj/lang/default';
+import {getBackgroundColor} from '@caj/configs/colors';
+import {useEffect} from 'react';
+import {initAppData} from '@caj/helper/appData';
+import {appStatus} from '@caj/configs/appNonSaveVar';
+import {appNonSaveVarActions} from '@caj/configs/appNonSaveVarReducer';
+
+const AnimationView = animated(View);
+
+function onAppStart() {
+ initAppData().then(() => {
+ console.log('finish');
+ setTimeout(() => {
+ store.dispatch(appNonSaveVarActions.setAppStatus(appStatus.APP_RUNNING));
+ }, 500);
+ //store.dispatch(actions.loadPreferences(appVar));
+ });
+}
+
+function StartHelper() {
+ const currentAppStatus = useSelector(
+ (state: RootState) => state.nonSaveVariables.appStatus,
+ );
+
+ const lang = useSelector((state: RootState) => state.appVariables.lang);
+ const theme = useSelector(
+ (state: RootState) => state.appVariables.preferences.theme,
+ );
+
+ const [motionProps, api] = useSpring(
+ () => ({
+ from: {
+ translateX: -150,
+ width: 4,
+ opacity: 1,
+ },
+ }),
+ [],
+ );
+
+ useEffect(() => {
+ api.start({
+ to: [
+ {
+ translateX: 150,
+ width: 4,
+ opacity: 1,
+ },
+ {
+ translateX: -150,
+ width: 4,
+ opacity: 1,
+ },
+ ],
+ loop: true,
+ });
+ }, []);
+
+ useEffect(onAppStart, []);
+
+ if (currentAppStatus === appStatus.APP_RUNNING) return null;
+
+ return (
+
+
+
+ {lang.appName}
+
+
+
+
+ {lang.startHelper1}
+
+
+
+
+ );
+}
+
+export default StartHelper;
diff --git a/src/caj/configs/appData.ts b/src/caj/configs/appData.ts
deleted file mode 100644
index 6c83f01..0000000
--- a/src/caj/configs/appData.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-export function initAppData() {
-
-}
\ No newline at end of file
diff --git a/src/caj/configs/appNonSaveVar.ts b/src/caj/configs/appNonSaveVar.ts
new file mode 100644
index 0000000..a9737dd
--- /dev/null
+++ b/src/caj/configs/appNonSaveVar.ts
@@ -0,0 +1,30 @@
+//these variables should not changed by the user and will not be saved in storage
+
+import {getVersionByNum, VersionType} from '@caj/helper/version';
+
+export const APP_VERSION = getVersionByNum(2);
+export const AppVarMaxBackups: number = 10;
+
+export enum appStatus {
+ IS_LOADING,
+ APP_RUNNING,
+}
+
+export enum connectionStatus {
+ UNKNOWN,
+ OFFLINE,
+ ONLINE,
+ RECONNECTING,
+}
+
+export interface NON_SAVE_VARS {
+ currentAppVersion: VersionType;
+ appStatus: appStatus;
+ connectionStatus: connectionStatus;
+}
+
+export const non_save_vars: NON_SAVE_VARS = {
+ currentAppVersion: APP_VERSION,
+ appStatus: appStatus.IS_LOADING,
+ connectionStatus: connectionStatus.UNKNOWN,
+};
diff --git a/src/caj/configs/appNonSaveVarReducer.ts b/src/caj/configs/appNonSaveVarReducer.ts
new file mode 100644
index 0000000..4f5cd0e
--- /dev/null
+++ b/src/caj/configs/appNonSaveVarReducer.ts
@@ -0,0 +1,20 @@
+import {createSlice} from '@reduxjs/toolkit';
+import type {PayloadAction} from '@reduxjs/toolkit';
+
+import {appStatus, non_save_vars} from './appNonSaveVar';
+
+export const appNonSaveVariablesSlice = createSlice({
+ name: 'non_save_vars',
+ initialState: non_save_vars,
+ reducers: {
+ setAppStatus: (state, action: PayloadAction) => {
+ state.appStatus = action.payload;
+ },
+ },
+});
+
+// Action creators are generated for each case reducer function
+const {actions} = appNonSaveVariablesSlice;
+export const appNonSaveVarActions = actions;
+
+export default appNonSaveVariablesSlice.reducer;
diff --git a/src/caj/configs/appVar.ts b/src/caj/configs/appVar.ts
new file mode 100644
index 0000000..5572010
--- /dev/null
+++ b/src/caj/configs/appVar.ts
@@ -0,0 +1,55 @@
+import {VersionType} from '@caj/helper/version';
+import {APP_VERSION} from './appNonSaveVar';
+
+export enum ThemeMode {
+ Darkest = 0,
+ Dark = 1,
+ Light = 2,
+}
+
+export function applyUpdateChanges(appVar: any): Promise {
+ return new Promise(function (resolve, reject) {
+ appVar.version += 1;
+
+ console.log(appVar.version);
+
+ function finish() {
+ resolve();
+ }
+
+ switch (appVar.version) {
+ case 3: {
+ let appVarF = appVar as PREFERENCES_VARS;
+
+ appVar = appVarF;
+ finish();
+ break;
+ }
+
+ case 2: {
+ let appVarF = appVar;
+
+ appVar = appVarF;
+ finish();
+ break;
+ }
+
+ default: {
+ finish();
+ break;
+ }
+ }
+ });
+}
+
+//these variables may be changed by the user and will be saved in storage
+
+export interface PREFERENCES_VARS {
+ version: VersionType;
+ theme: ThemeMode;
+}
+
+export const preferences_vars_default: PREFERENCES_VARS = {
+ version: APP_VERSION, //version of datatypes in storage
+ theme: ThemeMode.Dark,
+};
diff --git a/src/caj/configs/appVarReducer.ts b/src/caj/configs/appVarReducer.ts
new file mode 100644
index 0000000..c2dc1a5
--- /dev/null
+++ b/src/caj/configs/appVarReducer.ts
@@ -0,0 +1,39 @@
+import {createSlice} from '@reduxjs/toolkit';
+import type {PayloadAction} from '@reduxjs/toolkit';
+
+import {PREFERENCES_VARS, preferences_vars_default, ThemeMode} from './appVar';
+import {non_save_vars, NON_SAVE_VARS} from './appNonSaveVar';
+import LangFormat from '@caj/lang/default';
+import {lang as defaultLang} from '@caj/lang/en';
+
+export interface appVariablesState {
+ preferences: PREFERENCES_VARS;
+ lang: LangFormat;
+}
+
+const initialState: appVariablesState = {
+ preferences: preferences_vars_default,
+ lang: defaultLang,
+};
+
+export const appVariablesSlice = createSlice({
+ name: 'appVariables',
+ initialState,
+ reducers: {
+ setTheme: (state, action: PayloadAction) => {
+ state.preferences.theme = action.payload;
+ },
+ setLang: (state, action: PayloadAction) => {
+ state.lang = action.payload;
+ },
+ loadPreferences: (state, action: PayloadAction) => {
+ state.preferences = action.payload;
+ },
+ },
+});
+
+// Action creators are generated for each case reducer function
+const {actions} = appVariablesSlice;
+export const appVarActions = actions;
+
+export default appVariablesSlice.reducer;
diff --git a/src/caj/configs/colors.ts b/src/caj/configs/colors.ts
index 16d26d3..c9e17dc 100644
--- a/src/caj/configs/colors.ts
+++ b/src/caj/configs/colors.ts
@@ -1,4 +1,10 @@
-import { extendTheme } from 'native-base';
+import {Platform} from 'react-native';
+import {extendTheme, useColorMode} from 'native-base';
+import {ThemeMode} from './appVar';
+
+import {useSelector} from 'react-redux';
+import {RootState} from '@caj/redux/store';
+import {useEffect} from 'react';
export const theme = extendTheme({
config: {
@@ -18,23 +24,18 @@ export const theme = extendTheme({
300: '#292929',
800: '#181725',
},
- green: {
- 300: '#53B175',
- },
+
primary: {
- 50: '#E3F2F9',
- 100: '#C5E4F3',
- 200: '#A2D4EC',
- 300: '#7AC1E4',
- 400: '#47A9DA',
- 500: '#0088CC',
- 600: '#007AB8',
- 700: '#006BA1',
- 800: '#005885',
- 900: '#003F5E',
- },
- amber: {
- 400: '#d97706',
+ 50: '#fff4f1',
+ 100: '#ffd6c9',
+ 200: '#ffb9a1',
+ 300: '#ff9b79',
+ 400: '#ff7d50',
+ 500: '#f96e40',
+ 600: '#f26030',
+ 700: '#e95321',
+ 800: '#d54b1d',
+ 900: '#ba4721',
},
},
components: {
@@ -76,4 +77,43 @@ export const theme = extendTheme({
},
},
},
-});
\ No newline at end of file
+});
+
+export function getBackgroundColor(tm: ThemeMode): string {
+ switch (tm) {
+ case ThemeMode.Light:
+ return '#fff';
+ case ThemeMode.Darkest:
+ return '#000';
+ default:
+ return '#282f34';
+ }
+}
+
+export function isThemeDark(tm: ThemeMode): boolean {
+ return tm <= 1;
+}
+
+export function ThemeSwitcher() {
+ const myTheme = useSelector(
+ (state: RootState) => state.appVariables.preferences.theme,
+ );
+ const {setColorMode} = useColorMode();
+
+ useEffect(() => {
+ if (myTheme === ThemeMode.Darkest || myTheme === ThemeMode.Dark)
+ setColorMode('dark');
+ else setColorMode('light');
+
+ if (Platform.OS === 'web') {
+ document.body.setAttribute(
+ 'style',
+ 'background: ' + getBackgroundColor(myTheme) + ';',
+ );
+ }
+
+ console.log('refreshed');
+ }, [myTheme]);
+
+ return null;
+}
diff --git a/src/caj/configs/storage/appData.android.ts b/src/caj/configs/storage/appData.android.ts
deleted file mode 100644
index 019cf4f..0000000
--- a/src/caj/configs/storage/appData.android.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-export const testt = { data: "hellow :33 liebe diese Android"};
\ No newline at end of file
diff --git a/src/caj/configs/storage/appData.ios.ts b/src/caj/configs/storage/appData.ios.ts
deleted file mode 100644
index 2145b8c..0000000
--- a/src/caj/configs/storage/appData.ios.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-export const testt = { data: "hellow :33 liebe diese ios"};
\ No newline at end of file
diff --git a/src/caj/configs/storage/appData.web.ts b/src/caj/configs/storage/appData.web.ts
deleted file mode 100644
index c0a20e9..0000000
--- a/src/caj/configs/storage/appData.web.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-export const testt = { data: "hellow :33 liebe diese WEB"};
\ No newline at end of file
diff --git a/src/caj/helper/animator.ts b/src/caj/helper/animator.ts
new file mode 100644
index 0000000..9de6338
--- /dev/null
+++ b/src/caj/helper/animator.ts
@@ -0,0 +1 @@
+export {animated, useSpring} from '@react-spring/native';
diff --git a/src/caj/helper/animator.web.ts b/src/caj/helper/animator.web.ts
new file mode 100644
index 0000000..5336fd8
--- /dev/null
+++ b/src/caj/helper/animator.web.ts
@@ -0,0 +1 @@
+export {animated, useSpring} from '@react-spring/web';
diff --git a/src/caj/helper/appData.ts b/src/caj/helper/appData.ts
new file mode 100644
index 0000000..0bdad38
--- /dev/null
+++ b/src/caj/helper/appData.ts
@@ -0,0 +1,198 @@
+import {
+ applyUpdateChanges,
+ PREFERENCES_VARS,
+ preferences_vars_default,
+} from '@caj/configs/appVar';
+import {AppVarMaxBackups, APP_VERSION} from '@caj/configs/appNonSaveVar';
+import {appVarActions} from '@caj/configs/appVarReducer';
+import {store} from '@caj/redux/store';
+import {getData, setData} from './storage/appData';
+import {getVersionByType, stepUpVersionCalc} from './version';
+
+const APP_CHANGE_BACKUP = 'appVerChangeBackup';
+
+function setAppVar(appVar: PREFERENCES_VARS) {
+ store.dispatch(appVarActions.loadPreferences(appVar));
+}
+
+function makeBackup(key: string, version: number): Promise {
+ return new Promise(function (resolve, reject) {
+ getData('appVar').then(value => {
+ if (value !== null) {
+ setData(key + '#' + version, value).then(() => {
+ resolve();
+ });
+ } else {
+ resolve();
+ }
+ });
+ });
+}
+
+function refreshVersion(from: number, to: number): Promise {
+ return new Promise(function (resolve, reject) {
+ if (from < to) {
+ // app upgrade
+ console.log('app upgrade detected!');
+ finish();
+ } else if (from > to) {
+ // app downgrade
+ console.log('app downgrade detected!');
+ finish();
+ } else {
+ // app version not changed
+ finish();
+ }
+
+ function finish() {
+ setData('appVersion', APP_VERSION.toString()).then(() => {
+ resolve();
+ });
+ }
+ });
+}
+
+export function initAppData(): Promise {
+ return new Promise(function (resolve, reject) {
+ let appVer: number = -1;
+
+ getData('appVersion').then(_ver => {
+ appVer = typeof _ver === 'string' ? Number.parseInt(_ver) : -1;
+
+ if (appVer === -1) {
+ // no version found in storage
+ setData('appVersion', APP_VERSION.toString()).then(() => {
+ appVer = APP_VERSION;
+ preferencesPull();
+ });
+
+ return;
+ } else if (appVer < APP_VERSION) {
+ // found outdated version: make backup; and upgrade
+ makeBackup(APP_CHANGE_BACKUP, appVer).then(() => {
+ refreshVersion(appVer, APP_VERSION).then(() => {
+ preferencesPull();
+ });
+ });
+ } else if (appVer > APP_VERSION) {
+ // version is too high: make backup; and "downgrade"
+ makeBackup(APP_CHANGE_BACKUP, appVer).then(() => {
+ refreshVersion(appVer, APP_VERSION).then(() => {
+ preferencesPull();
+ });
+ });
+ }
+ preferencesPull();
+ });
+
+ function resetPreferences() {
+ let appVar = preferences_vars_default;
+
+ setData('appVar', JSON.stringify(appVar)).then(() => {
+ setAppVar(appVar);
+ resolve();
+ });
+ }
+
+ function tryToApplyPreferences(
+ appVar: PREFERENCES_VARS,
+ didUpdate = false,
+ ) {
+ if (appVar.version < APP_VERSION) {
+ {
+ console.log('ver', appVar.version);
+ console.log('config update needed until', APP_VERSION, appVar);
+ applyUpdateChanges(appVar).then(() => {
+ tryToApplyPreferences(appVar, true);
+ });
+ return;
+ }
+ }
+
+ const changed = checkForUndefined(preferences_vars_default, appVar);
+
+ if (didUpdate === true || changed === true) {
+ setData('appVar', JSON.stringify(appVar)).then(() => {
+ setAppVar(appVar);
+ resolve();
+ });
+ } else {
+ setAppVar(appVar);
+ resolve();
+ }
+ }
+
+ function preferencesPull() {
+ getData('appVar').then(value => {
+ if (value === null) {
+ resetPreferences();
+ } else {
+ let appVarRaw = null;
+ let isNoJSON = false;
+ try {
+ appVarRaw = JSON.parse(value);
+ } catch (error) {
+ console.error('corrupt appVar! :(');
+ isNoJSON = true;
+ }
+
+ if (isNoJSON) {
+ getData('appVarBackupIndex').then(_index => {
+ let index: number =
+ typeof _index === 'string'
+ ? Number.parseInt(_index)
+ : AppVarMaxBackups;
+ index--;
+ if (index < 0) index = AppVarMaxBackups - 1;
+
+ setData('appVarBackup' + index, value).then(() => {
+ setData('appVarBackupIndex', index.toString()).then(() => {
+ resetPreferences();
+ });
+ });
+ });
+ } else {
+ let appVar: PREFERENCES_VARS = appVarRaw;
+
+ tryToApplyPreferences(appVar);
+ }
+ }
+ });
+ }
+ });
+}
+
+export function saveVarChanges() {
+ let appVar = store.getState().appVariables.preferences;
+ setData('appVar', JSON.stringify(appVar)).then(() => {
+ console.log('saved!');
+ });
+}
+
+export function checkForUndefined(objDef: any, objReal: any): boolean {
+ let changed = false;
+
+ function checkObj(objDef: any, objReal: any) {
+ for (const key in objDef) {
+ const defValue = objDef[key];
+ let realValue = objReal[key];
+
+ if (typeof defValue === 'undefined') continue;
+
+ if (typeof realValue === 'undefined' || realValue === null) {
+ objReal[key] = defValue;
+
+ changed = true;
+ console.log(key);
+ } else if (
+ typeof defValue === 'object' &&
+ typeof realValue === 'object'
+ ) {
+ checkObj(defValue, realValue);
+ }
+ }
+ }
+
+ checkObj(objDef, objReal);
+ return changed;
+}
diff --git a/src/caj/helper/storage/appData.ts b/src/caj/helper/storage/appData.ts
new file mode 100644
index 0000000..18a451a
--- /dev/null
+++ b/src/caj/helper/storage/appData.ts
@@ -0,0 +1,9 @@
+import EncryptedStorage from 'react-native-encrypted-storage';
+
+export async function getData(key: string): Promise {
+ return EncryptedStorage.getItem(key);
+}
+
+export async function setData(key: string, value: string): Promise {
+ return EncryptedStorage.setItem(key, value);
+}
diff --git a/src/caj/helper/storage/appData.web.ts b/src/caj/helper/storage/appData.web.ts
new file mode 100644
index 0000000..ddeac7c
--- /dev/null
+++ b/src/caj/helper/storage/appData.web.ts
@@ -0,0 +1,13 @@
+export async function getData(key: string): Promise {
+ return new Promise(resolve => {
+ const data = localStorage.getItem(key);
+ resolve(data);
+ });
+}
+
+export async function setData(key: string, value: string): Promise {
+ return new Promise(resolve => {
+ localStorage.setItem(key, value);
+ resolve();
+ });
+}
diff --git a/src/caj/helper/version.ts b/src/caj/helper/version.ts
new file mode 100644
index 0000000..a6ceabf
--- /dev/null
+++ b/src/caj/helper/version.ts
@@ -0,0 +1,39 @@
+export enum VersionType {}
+
+export function getVersionByNum(ver: number): VersionType {
+ return ver;
+}
+
+export function getVersionByType(ver: VersionType): number {
+ return ver;
+}
+
+export function stepUpVersionCalc(
+ ver: VersionType,
+ steps: number,
+): VersionType {
+ return ver + steps;
+}
+
+/*const VersionFactor = 1;
+
+export function getVersionByNum(ver: number): VersionType {
+ let verObj: VersionType;
+ verObj = ver * VersionFactor;
+
+ return verObj;
+}
+
+export function getVersionByType(ver: VersionType): number {
+ let verObj: number;
+ verObj = Math.floor(ver / VersionFactor);
+
+ return verObj;
+}
+
+export function stepUpVersionCalc(
+ ver: VersionType,
+ steps: number,
+): VersionType {
+ return ver + steps * VersionFactor;
+}*/
diff --git a/src/caj/lang/default.ts b/src/caj/lang/default.ts
new file mode 100644
index 0000000..7b8c58f
--- /dev/null
+++ b/src/caj/lang/default.ts
@@ -0,0 +1,47 @@
+import {type} from 'os';
+
+interface LangDetails {
+ langCode: string;
+ langName: string;
+}
+
+export default interface LangFormat {
+ details: LangDetails;
+ curVersion: string;
+ appName: string;
+ startHelper1: string;
+}
+
+interface LangPlaceholderKeys {
+ version?: number;
+ appName?: string;
+}
+
+export function placeholder(text: string, data: LangPlaceholderKeys): string {
+ let out = text;
+
+ for (const key in data) {
+ const rawValue = data[key as keyof LangPlaceholderKeys];
+
+ let _value: any =
+ typeof rawValue === 'number' ? rawValue.toString() : rawValue;
+
+ if (typeof rawValue === 'undefined') _value = 'undefined';
+ let value: string = _value;
+
+ out = out.replaceAll('${' + key + '}', value);
+ }
+
+ return out;
+}
+
+/*
+var str = 'Good ${timeOfTheDay}, ${name}. I am from ${city}, ${age} years old';
+
+var parts = str.split(/(\$\{\w+?})/g).map(function(v) {
+ var replaced = v.replace(/\$\{(\w+?)}/g, '$1');
+ return content[replaced] || v;
+});
+
+console.log(parts.join(''));
+ */
diff --git a/src/caj/lang/en.ts b/src/caj/lang/en.ts
new file mode 100644
index 0000000..4076eaf
--- /dev/null
+++ b/src/caj/lang/en.ts
@@ -0,0 +1,12 @@
+import StartHelper from 'src/appStart/StartHelper';
+import LangFormat from './default';
+
+export const lang: LangFormat = {
+ details: {
+ langCode: 'en',
+ langName: 'English',
+ },
+ curVersion: 'Your current version is v${version}.',
+ appName: 'Click And Join',
+ startHelper1: 'Your data will be loaded :)',
+};
diff --git a/src/caj/redux/store.ts b/src/caj/redux/store.ts
new file mode 100644
index 0000000..bb84ec5
--- /dev/null
+++ b/src/caj/redux/store.ts
@@ -0,0 +1,16 @@
+import appNonSaveVarReducer from '@caj/configs/appNonSaveVarReducer';
+import {configureStore} from '@reduxjs/toolkit';
+
+import appVariablesReducer from '../configs/appVarReducer';
+
+export const store = configureStore({
+ reducer: {
+ appVariables: appVariablesReducer,
+ nonSaveVariables: appNonSaveVarReducer,
+ },
+});
+
+// Infer the `RootState` and `AppDispatch` types from the store itself
+export type RootState = ReturnType;
+// Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}
+export type AppDispatch = typeof store.dispatch;
diff --git a/tsconfig.json b/tsconfig.json
index af6979d..d28fb39 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -7,8 +7,8 @@
"target": "ESNext",
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
- "jsx": "react-native"
-
+ "jsx": "react-native",
+ "strict": true,
},
"include": ["**/*.ts", "**/*.tsx", "./src/caj/img/*.png"],
"exclude": [
diff --git a/web/public/fonts/Outfit-Black.ttf b/web/public/fonts/Outfit-Black.ttf
new file mode 100644
index 0000000..e004397
Binary files /dev/null and b/web/public/fonts/Outfit-Black.ttf differ
diff --git a/web/public/fonts/Outfit-Bold.ttf b/web/public/fonts/Outfit-Bold.ttf
new file mode 100644
index 0000000..8a520ab
Binary files /dev/null and b/web/public/fonts/Outfit-Bold.ttf differ
diff --git a/web/public/fonts/Outfit-ExtraBold.ttf b/web/public/fonts/Outfit-ExtraBold.ttf
new file mode 100644
index 0000000..6897216
Binary files /dev/null and b/web/public/fonts/Outfit-ExtraBold.ttf differ
diff --git a/web/public/fonts/Outfit-ExtraLight.ttf b/web/public/fonts/Outfit-ExtraLight.ttf
new file mode 100644
index 0000000..a3f3703
Binary files /dev/null and b/web/public/fonts/Outfit-ExtraLight.ttf differ
diff --git a/web/public/fonts/Outfit-Light.ttf b/web/public/fonts/Outfit-Light.ttf
new file mode 100644
index 0000000..d11dbce
Binary files /dev/null and b/web/public/fonts/Outfit-Light.ttf differ
diff --git a/web/public/fonts/Outfit-Medium.ttf b/web/public/fonts/Outfit-Medium.ttf
new file mode 100644
index 0000000..672f975
Binary files /dev/null and b/web/public/fonts/Outfit-Medium.ttf differ
diff --git a/web/public/fonts/Outfit-Regular.ttf b/web/public/fonts/Outfit-Regular.ttf
new file mode 100644
index 0000000..6c7aa16
Binary files /dev/null and b/web/public/fonts/Outfit-Regular.ttf differ
diff --git a/web/public/fonts/Outfit-SemiBold.ttf b/web/public/fonts/Outfit-SemiBold.ttf
new file mode 100644
index 0000000..54d208e
Binary files /dev/null and b/web/public/fonts/Outfit-SemiBold.ttf differ
diff --git a/web/public/fonts/Outfit-Thin.ttf b/web/public/fonts/Outfit-Thin.ttf
new file mode 100644
index 0000000..ed6e71e
Binary files /dev/null and b/web/public/fonts/Outfit-Thin.ttf differ
diff --git a/web/public/fonts/Outfit.ttf b/web/public/fonts/Outfit.ttf
new file mode 100644
index 0000000..d58aab1
Binary files /dev/null and b/web/public/fonts/Outfit.ttf differ
diff --git a/web/public/index.html b/web/public/index.html
index 0e85f3f..2dce563 100644
--- a/web/public/index.html
+++ b/web/public/index.html
@@ -6,6 +6,74 @@
Click and Join Web
+
+
@@ -13,6 +81,13 @@
diff --git a/web/webpack.config.js b/web/webpack.config.js
index ff085d9..32ba0d9 100644
--- a/web/webpack.config.js
+++ b/web/webpack.config.js
@@ -16,10 +16,8 @@ const babelLoaderConfiguration = {
include: [
path.resolve(appDirectory, 'index.web.tsx'),
path.resolve(appDirectory, 'src'),
- path.resolve(appDirectory, 'node_modules'),
- path.resolve(appDirectory, 'node_modules/react-native-uncompiled'),
- path.resolve(appDirectory, 'node_modules/react-native-sdk'),
],
+ exclude: [path.resolve(appDirectory, 'node_modules')],
use: {
loader: 'babel-loader',
options: {
@@ -29,15 +27,15 @@ const babelLoaderConfiguration = {
// presets: ['react-native'],
presets: [require.resolve('babel-preset-react-native')],
// Re-write paths to import only the modules needed by the app
- plugins: ['react-native-web',],
+ plugins: ['react-native-web'],
presets: ['react-native'],
presets: ['module:metro-react-native-babel-preset'],
- // plugins: [
- // // needed to support async/await
- // '@babel/plugin-transform-runtime'
- // ]
+ plugins: [
+ // needed to support async/await
+ '@babel/plugin-transform-runtime',
+ ],
},
- }
+ },
};
// This is needed for webpack to import static images in JavaScript files.
@@ -46,44 +44,42 @@ const imageLoaderConfiguration = {
use: {
loader: 'url-loader',
options: {
- name: '[name].[ext]'
- }
- }
+ name: '[name].[ext]',
+ },
+ },
};
module.exports = {
mode: 'development',
+ target: 'web',
entry: [
// load any web API polyfills
// path.resolve(appDirectory, 'polyfills-web.js'),
+ //'babel-polyfill',
// your web-specific entry file
- path.resolve(appDirectory, 'index.web.tsx')
+ path.resolve(appDirectory, 'index.web.tsx'),
],
// configures where the build ends up
output: {
filename: 'bundle.web.js',
- path: path.resolve(appDirectory, 'dist')
+ path: path.resolve(appDirectory, 'dist'),
},
-
// ...the rest of your config
module: {
- rules: [
- babelLoaderConfiguration,
- imageLoaderConfiguration
- ]
+ rules: [babelLoaderConfiguration, imageLoaderConfiguration],
},
resolve: {
// This will only alias the exact import "react-native"
alias: {
'react-native$': 'react-native-web',
- '@caj': path.resolve(appDirectory, 'src/caj')
+ '@caj': path.resolve(appDirectory, 'src/caj'),
},
// If you're working on a multi-platform React Native app, web-specific
// module implementations should be written in files using the extension
// `.web.js`.
- extensions: ['.web.js', '.js','.web.ts', '.ts','.web.tsx', '.tsx']
- }
-}
\ No newline at end of file
+ extensions: ['.web.js', '.js', '.web.ts', '.ts', '.web.tsx', '.tsx'],
+ },
+};