From a234a2fb6fff99f9fcb6bcd427ca219a22d1dbe0 Mon Sep 17 00:00:00 2001 From: Lani Jung Date: Wed, 4 Aug 2021 00:54:33 +0900 Subject: [PATCH 1/6] g --- App/FollowApp/App.js | 7 ++++--- App/FollowApp/__tests__/App-test.js | 2 +- App/FollowApp/src/navigations/LoginStack.js | 9 ++++++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/App/FollowApp/App.js b/App/FollowApp/App.js index 25f7a64..555b87a 100644 --- a/App/FollowApp/App.js +++ b/App/FollowApp/App.js @@ -7,19 +7,20 @@ */ import React from 'react'; -import {SafeAreaView, StatusBar} from 'react-native'; +import {StatusBar} from 'react-native'; import {ThemeProvider} from 'styled-components'; import {theme} from './src/theme'; import Navigation from './src/navigations/navigation'; +import {SafeAreaProvider} from 'react-native-safe-area-context'; const App = () => { return ( - + - + ); }; diff --git a/App/FollowApp/__tests__/App-test.js b/App/FollowApp/__tests__/App-test.js index 1784766..090aefa 100644 --- a/App/FollowApp/__tests__/App-test.js +++ b/App/FollowApp/__tests__/App-test.js @@ -10,5 +10,5 @@ import App from '../App'; import renderer from 'react-test-renderer'; it('renders correctly', () => { - renderer.create(); + renderer.create(); }); diff --git a/App/FollowApp/src/navigations/LoginStack.js b/App/FollowApp/src/navigations/LoginStack.js index e10e64c..628ab45 100644 --- a/App/FollowApp/src/navigations/LoginStack.js +++ b/App/FollowApp/src/navigations/LoginStack.js @@ -2,6 +2,7 @@ import React from 'react'; import {createStackNavigator} from '@react-navigation/stack'; import styled from 'styled-components/native'; import {Text} from 'react-native'; +import LongButton from '../components/buttons/Button'; const Stack = createStackNavigator(); @@ -9,12 +10,17 @@ const Container = styled.View` flex: 1; justify-content: center; align-items: center; + color: black; `; const LoginScreen = () => { + const props = { + title: 'hi', + onPress: () => {}, + }; return ( - Hi This is Login Page + Hi This is Login Page😃 ); }; @@ -22,6 +28,7 @@ const LoginScreen = () => { const LoginStack = () => { return ( From a807dbd64eaa0cf63cda223f89a13f9a145d37f5 Mon Sep 17 00:00:00 2001 From: Lani Jung Date: Wed, 4 Aug 2021 09:05:34 +0900 Subject: [PATCH 2/6] install flow --- App/FollowApp/package-lock.json | 1021 ++++++++++++++++++++++++++++++- App/FollowApp/package.json | 5 +- 2 files changed, 993 insertions(+), 33 deletions(-) diff --git a/App/FollowApp/package-lock.json b/App/FollowApp/package-lock.json index d6893f3..4017ce0 100644 --- a/App/FollowApp/package-lock.json +++ b/App/FollowApp/package-lock.json @@ -21,18 +21,90 @@ "styled-components": "^5.3.0" }, "devDependencies": { - "@babel/core": "^7.12.9", + "@babel/cli": "^7.14.8", + "@babel/core": "^7.14.8", + "@babel/preset-flow": "^7.14.5", "@babel/runtime": "^7.12.5", "@react-native-community/eslint-config": "^2.0.0", "babel-jest": "^26.6.3", "eslint": "7.14.0", "eslint-plugin-prettier": "^3.4.0", + "flow-bin": "^0.156.0", "jest": "^26.6.3", "metro-react-native-babel-preset": "^0.64.0", "prettier": "^2.3.2", "react-test-renderer": "17.0.1" } }, + "node_modules/@babel/cli": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.14.8.tgz", + "integrity": "sha512-lcy6Lymft9Rpfqmrqdd4oTDdUx9ZwaAhAfywVrHG4771Pa6PPT0danJ1kDHBXYqh4HHSmIdA+nlmfxfxSDPtBg==", + "dev": true, + "dependencies": { + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "bin": { + "babel": "bin/babel.js", + "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "optionalDependencies": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.2", + "chokidar": "^3.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/cli/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@babel/cli/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/cli/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/cli/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/@babel/code-frame": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", @@ -2012,6 +2084,189 @@ "node": ">=8" } }, + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.2", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.2.tgz", + "integrity": "sha512-Fb8WxUFOBQVl+CX4MWet5o7eCc6Pj04rXIwVKZ6h1NnqTo45eOQW6aWyhG25NIODvWFwTDMwBsYxrQ3imxpetg==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^5.1.2", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@react-native-community/cli": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-5.0.1.tgz", @@ -3532,6 +3787,13 @@ "lodash": "^4.17.14" } }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true, + "optional": true + }, "node_modules/async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -3910,6 +4172,16 @@ "node": ">=0.6" } }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/bplist-creator": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", @@ -4123,6 +4395,64 @@ "node": ">=10" } }, + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -6051,10 +6381,22 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "node_modules/flow-parser": { - "version": "0.121.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", - "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==", + "node_modules/flow-bin": { + "version": "0.156.0", + "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.156.0.tgz", + "integrity": "sha512-KEEsKV7/bePZM3Ja7rYlAaSx8GPiTGr7pt0IJcX5S3GSEIZ2ieayF6JWNjbyLiu7ZUJuWe4ITDnPvyqimUpYww==", + "dev": true, + "bin": { + "flow": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flow-parser": { + "version": "0.121.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", + "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==", "engines": { "node": ">=0.4.0" } @@ -6113,6 +6455,12 @@ "node": ">=6 <7 || >=8" } }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -6627,6 +6975,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-boolean-object": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", @@ -10761,6 +11122,160 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/readdirp/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/recast": { "version": "0.20.5", "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", @@ -12714,6 +13229,17 @@ "node": ">=0.10.0" } }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -13208,6 +13734,53 @@ } }, "dependencies": { + "@babel/cli": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.14.8.tgz", + "integrity": "sha512-lcy6Lymft9Rpfqmrqdd4oTDdUx9ZwaAhAfywVrHG4771Pa6PPT0danJ1kDHBXYqh4HHSmIdA+nlmfxfxSDPtBg==", + "dev": true, + "requires": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.2", + "chokidar": "^3.4.0", + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, "@babel/code-frame": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", @@ -14566,42 +15139,205 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "color-convert": "^2.0.1" + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.2", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.2.tgz", + "integrity": "sha512-Fb8WxUFOBQVl+CX4MWet5o7eCc6Pj04rXIwVKZ6h1NnqTo45eOQW6aWyhG25NIODvWFwTDMwBsYxrQ3imxpetg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^5.1.2", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "optional": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "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==", + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, "requires": { - "color-name": "~1.1.4" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, - "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==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "optional": true, "requires": { - "has-flag": "^4.0.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } } } @@ -15777,6 +16513,13 @@ "lodash": "^4.17.14" } }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true, + "optional": true + }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -16064,6 +16807,13 @@ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, "bplist-creator": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", @@ -16226,6 +16976,52 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "optional": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + } + } + }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -17731,6 +18527,12 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, + "flow-bin": { + "version": "0.156.0", + "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.156.0.tgz", + "integrity": "sha512-KEEsKV7/bePZM3Ja7rYlAaSx8GPiTGr7pt0IJcX5S3GSEIZ2ieayF6JWNjbyLiu7ZUJuWe4ITDnPvyqimUpYww==", + "dev": true + }, "flow-parser": { "version": "0.121.0", "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", @@ -17775,6 +18577,12 @@ "universalify": "^0.1.0" } }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -18163,6 +18971,16 @@ "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", "dev": true }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, "is-boolean-object": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", @@ -21334,6 +22152,138 @@ "util-deprecate": "~1.0.1" } }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "optional": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, "recast": { "version": "0.20.5", "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", @@ -22871,6 +23821,13 @@ } } }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", diff --git a/App/FollowApp/package.json b/App/FollowApp/package.json index e25b7f7..1280779 100644 --- a/App/FollowApp/package.json +++ b/App/FollowApp/package.json @@ -23,12 +23,15 @@ "styled-components": "^5.3.0" }, "devDependencies": { - "@babel/core": "^7.12.9", + "@babel/cli": "^7.14.8", + "@babel/core": "^7.14.8", + "@babel/preset-flow": "^7.14.5", "@babel/runtime": "^7.12.5", "@react-native-community/eslint-config": "^2.0.0", "babel-jest": "^26.6.3", "eslint": "7.14.0", "eslint-plugin-prettier": "^3.4.0", + "flow-bin": "^0.156.0", "jest": "^26.6.3", "metro-react-native-babel-preset": "^0.64.0", "prettier": "^2.3.2", From bf053bf7ac69591abddd282bb3e458f5723eafd3 Mon Sep 17 00:00:00 2001 From: pengm2ng Date: Wed, 4 Aug 2021 15:46:47 +0900 Subject: [PATCH 3/6] tryOn frame --- .../src/screens/MyCloset/TryOnScreen.js | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/App/FollowApp/src/screens/MyCloset/TryOnScreen.js b/App/FollowApp/src/screens/MyCloset/TryOnScreen.js index df63d90..7635408 100644 --- a/App/FollowApp/src/screens/MyCloset/TryOnScreen.js +++ b/App/FollowApp/src/screens/MyCloset/TryOnScreen.js @@ -1,5 +1,26 @@ +import React from 'react'; +import styled from 'styled-components/native'; +import Button from '../../components/buttons/Button'; + +const Container = styled.SafeAreaView` + flex: 1; + align-items: center; + justify-content: center; +`; +const AvatarView = styled.View` + flex: 1; + align-items: center; + justify-content: center; + border: 1px; +`; + const TryOnScreen = () => { - return null; + return ( + + + + + ); }; export default TryOnScreen; From 5074250d8690d19d63d7aef5e65f74eb6659aad4 Mon Sep 17 00:00:00 2001 From: pengm2ng Date: Wed, 4 Aug 2021 16:46:14 +0900 Subject: [PATCH 4/6] add bottom sheet modal on tryon --- App/FollowApp/package.json | 1 + .../bottomSheet/MyClothesButtomSheet.js | 105 ++++++++++++++++++ .../bottomSheet/MyLooksButtomSheet.js | 105 ++++++++++++++++++ .../src/screens/MyCloset/TryOnScreen.js | 40 +++++-- 4 files changed, 244 insertions(+), 7 deletions(-) create mode 100644 App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js create mode 100644 App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js diff --git a/App/FollowApp/package.json b/App/FollowApp/package.json index e25b7f7..57b31ff 100644 --- a/App/FollowApp/package.json +++ b/App/FollowApp/package.json @@ -20,6 +20,7 @@ "react-native-keyboard-aware-scroll-view": "^0.9.4", "react-native-safe-area-context": "^3.2.0", "react-native-screens": "^3.4.0", + "reanimated-bottom-sheet": "^1.0.0-alpha.22", "styled-components": "^5.3.0" }, "devDependencies": { diff --git a/App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js b/App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js new file mode 100644 index 0000000..9192a76 --- /dev/null +++ b/App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js @@ -0,0 +1,105 @@ +import React, {useEffect, useRef} from 'react'; +import { + View, + StyleSheet, + Text, + Modal, + Animated, + TouchableWithoutFeedback, + Dimensions, + PanResponder, +} from 'react-native'; + +const BottomSheet = props => { + const {modalVisible, setModalVisible} = props; + const screenHeight = Dimensions.get('screen').height; + const panY = useRef(new Animated.Value(screenHeight)).current; + const translateY = panY.interpolate({ + inputRange: [-1, 0, 1], + outputRange: [0, 0, 1], + }); + + const resetBottomSheet = Animated.timing(panY, { + toValue: 0, + duration: 300, + useNativeDriver: true, + }); + + const closeBottomSheet = Animated.timing(panY, { + toValue: screenHeight, + duration: 300, + useNativeDriver: true, + }); + + const panResponders = useRef( + PanResponder.create({ + onStartShouldSetPanResponder: () => true, + onMoveShouldSetPanResponder: () => false, + onPanResponderMove: (event, gestureState) => { + panY.setValue(gestureState.dy); + }, + onPanResponderRelease: (event, gestureState) => { + if (gestureState.dy > 0 && gestureState.vy > 1.5) { + closeModal(); + } else { + resetBottomSheet.start(); + } + }, + }), + ).current; + + useEffect(() => { + if (props.modalVisible) { + resetBottomSheet.start(); + } + }, [props.modalVisible, resetBottomSheet]); + + const closeModal = () => { + closeBottomSheet.start(() => { + setModalVisible(false); + }); + }; + + return ( + + + + + + + This is myclothes + + + + ); +}; + +const styles = StyleSheet.create({ + overlay: { + flex: 1, + justifyContent: 'flex-end', + backgroundColor: 'rgba(0, 0, 0, 0.4)', + }, + background: { + flex: 1, + }, + bottomSheetContainer: { + height: 300, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: 'white', + borderTopLeftRadius: 10, + borderTopRightRadius: 10, + }, +}); + +export default BottomSheet; diff --git a/App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js b/App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js new file mode 100644 index 0000000..c1cc452 --- /dev/null +++ b/App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js @@ -0,0 +1,105 @@ +import React, {useEffect, useRef} from 'react'; +import { + View, + StyleSheet, + Text, + Modal, + Animated, + TouchableWithoutFeedback, + Dimensions, + PanResponder, +} from 'react-native'; + +const BottomSheet = props => { + const {modalVisible, setModalVisible} = props; + const screenHeight = Dimensions.get('screen').height; + const panY = useRef(new Animated.Value(screenHeight)).current; + const translateY = panY.interpolate({ + inputRange: [-1, 0, 1], + outputRange: [0, 0, 1], + }); + + const resetBottomSheet = Animated.timing(panY, { + toValue: 0, + duration: 300, + useNativeDriver: true, + }); + + const closeBottomSheet = Animated.timing(panY, { + toValue: screenHeight, + duration: 300, + useNativeDriver: true, + }); + + const panResponders = useRef( + PanResponder.create({ + onStartShouldSetPanResponder: () => true, + onMoveShouldSetPanResponder: () => false, + onPanResponderMove: (event, gestureState) => { + panY.setValue(gestureState.dy); + }, + onPanResponderRelease: (event, gestureState) => { + if (gestureState.dy > 0 && gestureState.vy > 1.5) { + closeModal(); + } else { + resetBottomSheet.start(); + } + }, + }), + ).current; + + useEffect(() => { + if (props.modalVisible) { + resetBottomSheet.start(); + } + }, [props.modalVisible, resetBottomSheet]); + + const closeModal = () => { + closeBottomSheet.start(() => { + setModalVisible(false); + }); + }; + + return ( + + + + + + + This is myLooks + + + + ); +}; + +const styles = StyleSheet.create({ + overlay: { + flex: 1, + justifyContent: 'flex-end', + backgroundColor: 'rgba(0, 0, 0, 0.4)', + }, + background: { + flex: 1, + }, + bottomSheetContainer: { + height: 300, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: 'white', + borderTopLeftRadius: 10, + borderTopRightRadius: 10, + }, +}); + +export default BottomSheet; diff --git a/App/FollowApp/src/screens/MyCloset/TryOnScreen.js b/App/FollowApp/src/screens/MyCloset/TryOnScreen.js index 7635408..5ef8a60 100644 --- a/App/FollowApp/src/screens/MyCloset/TryOnScreen.js +++ b/App/FollowApp/src/screens/MyCloset/TryOnScreen.js @@ -1,24 +1,50 @@ -import React from 'react'; +import React, {useState} from 'react'; +import {Dimensions} from 'react-native'; import styled from 'styled-components/native'; -import Button from '../../components/buttons/Button'; +import Buttons from '../../components/buttons/Button'; +import MyClothesBottomSheet from '../../components/bottomSheet/MyClothesButtomSheet'; +import MyLooksBottomSheet from '../../components/bottomSheet/MyLooksButtomSheet'; const Container = styled.SafeAreaView` flex: 1; align-items: center; - justify-content: center; `; const AvatarView = styled.View` - flex: 1; + border-radius: 20px; align-items: center; justify-content: center; + width: 90%; + height: 50%; border: 1px; + margin-bottom: 20%; + margin-top: 10%; `; -const TryOnScreen = () => { +const TryOnScreen = ({props}) => { + const [modalOneVisible, setModalOneVisible] = useState(false); + const [modalTwoVisible, setModalTwoVisible] = useState(false); + const pressMyClothesButton = () => { + setModalOneVisible(true); + }; + const pressMyLooksButton = () => { + setModalTwoVisible(true); + }; return ( - - + + + + + ); }; From 85eddc3d87e640be875ab6b699928c7c6c096fa6 Mon Sep 17 00:00:00 2001 From: pengm2ng Date: Wed, 4 Aug 2021 23:24:42 +0900 Subject: [PATCH 5/6] =?UTF-8?q?clothes=20bottom=20sheet=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20&=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=82=AC?= =?UTF-8?q?=EC=A7=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/FollowApp/asset/test/TryOn/Clothes/1.png | Bin 0 -> 3908 bytes App/FollowApp/asset/test/TryOn/Clothes/10.png | Bin 0 -> 5406 bytes App/FollowApp/asset/test/TryOn/Clothes/2.png | Bin 0 -> 2886 bytes App/FollowApp/asset/test/TryOn/Clothes/3.png | Bin 0 -> 4949 bytes App/FollowApp/asset/test/TryOn/Clothes/4.png | Bin 0 -> 5341 bytes App/FollowApp/asset/test/TryOn/Clothes/5.png | Bin 0 -> 3674 bytes App/FollowApp/asset/test/TryOn/Clothes/6.png | Bin 0 -> 4728 bytes App/FollowApp/asset/test/TryOn/Clothes/7.png | Bin 0 -> 6260 bytes App/FollowApp/asset/test/TryOn/Clothes/8.png | Bin 0 -> 4455 bytes App/FollowApp/asset/test/TryOn/Clothes/9.png | Bin 0 -> 6073 bytes .../bottomSheet/MyClothesButtomSheet.js | 73 +++++++++++++++++- .../bottomSheet/MyLooksButtomSheet.js | 2 +- 12 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 App/FollowApp/asset/test/TryOn/Clothes/1.png create mode 100644 App/FollowApp/asset/test/TryOn/Clothes/10.png create mode 100644 App/FollowApp/asset/test/TryOn/Clothes/2.png create mode 100644 App/FollowApp/asset/test/TryOn/Clothes/3.png create mode 100644 App/FollowApp/asset/test/TryOn/Clothes/4.png create mode 100644 App/FollowApp/asset/test/TryOn/Clothes/5.png create mode 100644 App/FollowApp/asset/test/TryOn/Clothes/6.png create mode 100644 App/FollowApp/asset/test/TryOn/Clothes/7.png create mode 100644 App/FollowApp/asset/test/TryOn/Clothes/8.png create mode 100644 App/FollowApp/asset/test/TryOn/Clothes/9.png diff --git a/App/FollowApp/asset/test/TryOn/Clothes/1.png b/App/FollowApp/asset/test/TryOn/Clothes/1.png new file mode 100644 index 0000000000000000000000000000000000000000..1bdeab265eece6031b0578cb02c9c47c98443a54 GIT binary patch literal 3908 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 literal 0 HcmV?d00001 diff --git a/App/FollowApp/asset/test/TryOn/Clothes/2.png b/App/FollowApp/asset/test/TryOn/Clothes/2.png new file mode 100644 index 0000000000000000000000000000000000000000..2905348a69e7dd2800f2f08c5c8db09e73b7ba1c GIT binary patch literal 2886 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 literal 0 HcmV?d00001 diff --git a/App/FollowApp/asset/test/TryOn/Clothes/6.png b/App/FollowApp/asset/test/TryOn/Clothes/6.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1044f12888d4411e5e2c9302cd6122ea7687b6 GIT binary patch literal 4728 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 gUlaU2!p#0>mtD==;9C@77HxF zEx3o5^Xi^^&%6I#PgU2{d^0`WQ}cCI_rv_dDu7s7;iUoq4GjQ5`!fI!i+~RR94sI< z5DNzzh>eSjgGT@&BEZKdpe3gu20f-{VtP!^$jI_kkeh`K%+AQjBf$d}5)l&S05lBrM;MQ=fSA}Af9?5e^CJ>W(kEaUO*1SqCKmy%p!hE} zK=K#nT@!1}&tAL!q5!c7$_D4vT675M$+{VwG*23E)iVB^zmr-pGb zoVt<4g)3!LjCpXkASuxzHFTE1&cbl(Mp3KXjfeH7@a52GJ*T4CnXOC|8J+JeWAFhb z@XUs%?D)AlNa6Sx(<`bm^3EbE#etKFX(H|KSpE~$pP6dt6=r!U0>>pb=1YHcxY^It zFSWi%T9xe8*;p2&P5?7t5;7V1bP82cO9|P^8uJT}icFG!lN`ueH#jpxYDXv2{!)M6 z9%pwuXJzC>pD(!}XikmG!ogW*Z~juNP2duOUfIt2U1LJJ57fX<(98>~Pm|3@Q0w;v zbVIE?KTDkhd{fQ4bsqpZ^5(iv%0efGIyax|2G>-AhmTwR&Xc-EK+8r&t=O<~=f<@Y z7eDriz^xet^Hw(@v-Ki9T`w<>@2t=&SQtS?m29cV5@$^G5Yn{@*Y#Tx+g){*iZ0CLH8RgQ`ydUkT520 zZ{d)IMNDM&*;9+0G z_aYGp*m+-0L-Ri4*MkCIoAROSuu2OL0?18rLvqk4&sIxjf~Q7v>?$;E^jWjP9*xf~ zhmwOyHu%D@p>D=yOikxSHGlPz08&LQl$LMDLqsKrhp(7POQy<)2)*@JLQ8 zh=iDg1npmnLcb?{B<}sOcopAXF4Ry~|D`a%UI!m}3W>6wU21+hv;)?^-i>3!{JC`p zS@I*i=HnRMOe+ZQ{0(hvx2zorpjw#d1hliu#hJE=mxerUH%5alBpQXquBha0~!(=F|qN`8)vBq+HH6qC)4$UY@-tOiuIJ-8Q*m9Cg~h)eD}9;k-?K_qCC= zz12^r$OR5*GU0OZrRDR|#9>Mg)@8Abma>a|lvmcImx$O>m&xaZzBa;A}~^8wygoqj@4@6koC@% z@9au-(O#5pek~yIywWj9<23_72-1p8Y)6b~pMy02Wi(f!>QMIIb+8rC1ds0+}7hi*|@7F*Vebfj( zl97L!mcd#7L{i1>@b(?NqYuV#i&(h8jh~)pUgmOb(fi@zUz^#%-xx=YqvQLG$PKxR zeIYU6aw_(l^Dbs&+&dI5p(^g2(Z_F5uT|E&A^iHqK5EE*2P;Yi#%4b&+OiRdl45O2 zMl!oKW0pi)msn?dXoz*n0AgZGa`QaxmHNvBZtGrGCjEy5pjPsvrrP9i*zWI``#{V9 z#fIlgm!D`RT-7m)3f+p6&-oZQ2==`R(O_H!0}Wl)QIF43^Q~4JeXQh@OV6@%{Wpxu z6$BYk!4e3)NEF;<1icJJBmevOgp)6PVIONBnD??qQ=?UoKmz3Uj`fkou5t}^GiM#G zk&4>ev~w+P9xJan`flWIgPjx#h-whgFV4I#i*Sw%>R;FjdH|Ga>I~Lq2oK}s`??7& zkc{xqtJ0Gvs})i3l5Tj$)ePYfLaLhPj0jQ|Ns@ZxnZr!gQk~WZW#sn7%xAj|(g3U7 zj%pdS^kd=KLmVk>iZY@1MhAS{@#&ejr%lxz?JMUFpv0zb2NoKu;=p_5pvsaEa(uug zso@zakVnjCk#I_Eo>dm>WFsQ5xvL{GaS-Nwfo*GNac<@ifTpYfJL6*F$z99U9V|y< zv;xKW!98sfyLvgcWtx0r@5qJpfoOYNVEiv70u{n>d;%q!je@J^tm=Ba1#z|9kOx3H zE1tmcTb^#sOXuy4B3@Ku`@ zLnitK_6h$Z1pkf|TV9wZfd)-DUaic)ZwFQN1$%D?gYb3yn@}@RX`f%u&mdBjP(35# zxx@gGh6z&%@ly1UD>&h0+Sp^sal44hzJkM5Thuj%BEqq-sf6&hL7&_3@~V(URT4z0 zsG|~%N;X^4*Y72 ziddy&K358(nVjE7R>svN4YgWe5x?ga(d|!~l zFaFJHfpcQYd;PxRbwegdNr>=%Q2g0pP_=m3jAGjX10(UmQ|r&aD;Wj9@l>h`C(sHe zuM>39b)R1hDawD4jZBH0;ThQsny_K+b?m6-OovVP&LEa6>r3LEZt|-hXfU(gb>#<- zV-%I+`9yeaHruED8}BATx7neTN1adJq-595=I6yt;8Kr$n|VeQe3vX%JU`FHK|O_k zl6rzP!fodg=;N+<#2`N3%y^_gly&BDzi%y)@-i9D;}$f%)Bc^mr7^i85zuYV=9jSc zi?VHbY}i~ms-y5(x(PX^vmA*i`FT{`vc06x`@HXHP;p40F~OG}O0$E< z`sS4*kMCCq|2EFL6U|8np}Y+yq=zxv$5EGqnobSnr^a^gdBtn^0PrbYT+yzdP-Ter zH9x`#t^a0lmnw^F-rF-vC@1A61s{HliD|H7AXPUCkf-eDK?*L@CuwB$v$CFP%HD2; zT9<&uBZBCr1zk2xZ-@HW_=quP@x&CcYBv;-5FgF*{0K)O&Vg~x*|tWMdYA6II`XCc zrVm6v*G_AB2FtWvYMhNh^j=F%%rFbJ|Dyq3du7&Z&4#t8mQY{yT_Sw}SCIP4}cI}TT&H*pZc ztP50huXGB73E#hTVgFgwnVu4pEn|ON_W8nrAdkIwC_Gq<;2WXA2y42Xo>?*G6rYo0 zv1;-G!wpgc*j_SasuNi%Ag6{KB%|PYC2VW?ka_a$n&!x zt*C!hu^^d{SSsB<$-BKJ=wG7ldLymKO*UChu$keM4nPqO+I(p|nlD~`qNLircH ze*0@I_WGGV-^gJBEKzykAG|W*yixt)A!3_fNl@pZS@+{eMD|zhP1%-sVCVzD&ePSk zZ!_cb#qpxsTP0t3Y37ni>>fK&_<#Tb6h-E_>_#P*+cz^l(JHPk)VHtQ$0Tts-nYDJ zcgj_j@1*QWDC2ex#?ePxy=d~q{V{Y*PC)0)!*4SX2A5@tiFPxf(xvJIwS3Gvkj?hA zU%)Id3oNKanxfiAP4nFvwZcPm#4&?IgLj<^EZFm4@${6n?^rDe2Ut*TuIJ|3KukJ| zi%DPd)Cp5;qQrs6lb%szCHW;Ele)!I5>Us!K0M4d5QUNy$J7&mx+60 z)iv$tY2dt)cBK zJrWbZ2tE7-Zt@@n)doHAoCfKi*TNcR--i-AZZPRYrO0^iJ!K$B_KDS_6Ky<&(mHU~ z>x&kDR+1TjjTps@eAoG+f+wTDW0F%xQS3a2b%(z2`t*v|cdv?}K)W~UcNMQQ0HenV zYVxXxb$Yz%(85k~^uZ&3DPG$)6S9;Ru?)a-wP-)7J%AcU&T18F~@`+9qXQ~H#aQl z+3#?>dd$3WuI|wzkNv>`fCpsAaA9P4Ex+L~@$SSz6w8k`sve4c+g3)?OnJ%BxAwYc zPrNC8B~`Eg1$4PUw2>wR;XVpu&443yo^f!;DHIqIGy$Y|CrygsD6l8CHM{?eYAadp#ZPFJ%jcs_sNK z-p1yyzF3-U`b2J27S-CntU+rA!(bIY4_ye{rA%U1E6?Grg_o{8t+6pmSJ>#}D+w|M zKK=%ah@R0tj%yUOSXrfN&2hm+qJ|i5-b&xf-_p8a zeeyQmOXMiq?>iJp5@m}yo16#Ijj-o1_Mi%S$}I~kZ$jm}q*{4FBVs(Sh{=?H4-hEh{sSJUmU6D3t$gX2}gtHt> zAOgg!pnQ>QA+r@90!R2tvxctI<0Sb)-6(1ptxdnBK-(Cgek&3G-4poP`dVSu++_xI zWf{BZ|K&!{qg-b}=~bF{e6Drq+Re%0F|NQd_>|iycG4M#Ky2|nw3Jh>l3G1{Kl!`4 zcg{u1;{|)Kl}Jj%#d}3U_FpG0i)QYJ19V8kaqs$;yIHC7lLI)UBgBVr*3C7sb0^Te z8F{tt1hI*|9x+;c0HkV3vZG3;Ci^hE+>S}q!J^z%lok*pwOMJj#p8eR1m(99@yTLue#-h~QRZ7(|Waqk+-cZY39oIX! zvrHxlZkhef3%(!VPG7~{CWsKCTZDdKnlE=XfHVE)xue8hcuLN0TA>_3SHLD{gvE)qB_ISGm6t20jV}BCH8yYJKP)esqm{A(T-0MQPzJNnEz?V zaI<|(?7p&cvWDpOeMOyghgai7m3kyCCf)c#L^7$v)-;~X-so8x%=Xq=YorcuB z3E?4UkWQ%fC9iv>Gq=ZhA{}mLhcyO*^%n|MPV>?c^iwzz%g0pIAGe5K87kHrILs@U z%HNc8mSGw*KKt2INU|m3M~c_aZX8}>z{xN@1&nZc`a@QD&S#Wbg8mu_^C+~5UzXv1 zl^$9PhQDPhPa&-osF_!|Q0}~1nycQWn{xL5Vrc=iI_(Od(G+j*=CUgCDx33GPebZQ z)q5WRq!y^$J!KkUY8{c8XMKqyX9&CA9e>W0ZMv+ zwu2wBM8982O3&8-PM?j{>zKCpcu9SLK)W(TokQq-mj{)q961$+y*&dh{qV;vc#2_b z!809g9VLNpHd~Fn*&D_NQq+{FRL?T6_A!YtWp@Woi;nom0bDyN4N)6oaeL1Z_yl6Z zuc=qi7iw zeNIMtP4ABt8IY?wlCq^Q8%v~n6azDy)*vBG5C`xxfoaxd7$SQIsqGcTA!whg%}Oic zqwPE@-L$3oXfARYEU8>z%=N2T3u~t+6uJ&dX_&Bpuov?{UO53bb9-H=ia$A*yu&Kbl&jdB=&XUDf;SV|o?qP{jMq-|)$6bM8 zoYldRMthILHD^`)STC4#-IcR&?ta5e^;uy_G91~0iAY}dT8l%}>@U4Ao}4r>J`&8{ o%o+8^aW;w-=|88HJN|{&E=J26OMUEmYVsHBUi`&6q6g&v0KZ$U*#H0l literal 0 HcmV?d00001 diff --git a/App/FollowApp/asset/test/TryOn/Clothes/8.png b/App/FollowApp/asset/test/TryOn/Clothes/8.png new file mode 100644 index 0000000000000000000000000000000000000000..d57bb1c1c15d029dddf4e0b05fb35b49714135d0 GIT binary patch literal 4455 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 z zfyKevj}L7y^N5A5S$6SI*eXOT?$*JBdm|IAfQIq}_??O;FM-9715Ajl+}s9_bYbfy zua8%@^GCr*kyeW{HQI}^BH!DQ^#jAdd}JvavW+t(BBKQ8*RJnw|;TPzzdN}y(Z*=~C z)x`1%{D55&A5~Dj(|Y_kLo$4jug83%D%X{0Ot06J?%x=a{9D4{pENf;H&f$!eZFE3 z!F{r1o#qOYj2^E>r?UJMhXi~5&nb0AiW6P^WMmM^Tsaldj{1poVJ~4}%Z#@RI`l>9 z3l;~^-v?pNmuGB>i)E0fb%8{|_PYLiPXv literal 0 HcmV?d00001 diff --git a/App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js b/App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js index 9192a76..8ae3d6a 100644 --- a/App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js +++ b/App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js @@ -8,6 +8,10 @@ import { TouchableWithoutFeedback, Dimensions, PanResponder, + TouchableOpacity, + ScrollView, + Image, + FlatList, } from 'react-native'; const BottomSheet = props => { @@ -76,7 +80,29 @@ const BottomSheet = props => { transform: [{translateY: translateY}], }} {...panResponders.panHandlers}> - This is myclothes + + ( + + + + + + )} + keyExtractor={(item, index) => index} + // eslint-disable-next-line react-native/no-inline-styles + numColumns={3} + horizontal={false} + /> + @@ -93,7 +119,7 @@ const styles = StyleSheet.create({ flex: 1, }, bottomSheetContainer: { - height: 300, + height: 350, justifyContent: 'center', alignItems: 'center', backgroundColor: 'white', @@ -102,4 +128,47 @@ const styles = StyleSheet.create({ }, }); +const ClothesList = [ + { + id: '1', + src: require('../../../asset/test/TryOn/Clothes/1.png'), + }, + { + id: '2', + src: require('../../../asset/test/TryOn/Clothes/2.png'), + }, + { + id: '3', + src: require('../../../asset/test/TryOn/Clothes/3.png'), + }, + { + id: '4', + src: require('../../../asset/test/TryOn/Clothes/4.png'), + }, + { + id: '5', + src: require('../../../asset/test/TryOn/Clothes/5.png'), + }, + { + id: '6', + src: require('../../../asset/test/TryOn/Clothes/6.png'), + }, + { + id: '7', + src: require('../../../asset/test/TryOn/Clothes/7.png'), + }, + { + id: '8', + src: require('../../../asset/test/TryOn/Clothes/8.png'), + }, + { + id: '9', + src: require('../../../asset/test/TryOn/Clothes/9.png'), + }, + { + id: '10', + src: require('../../../asset/test/TryOn/Clothes/10.png'), + }, +]; + export default BottomSheet; diff --git a/App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js b/App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js index c1cc452..4a83dd5 100644 --- a/App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js +++ b/App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js @@ -93,7 +93,7 @@ const styles = StyleSheet.create({ flex: 1, }, bottomSheetContainer: { - height: 300, + height: 350, justifyContent: 'center', alignItems: 'center', backgroundColor: 'white', From 99b0dacbfcc40dfa4b9be18a3849fb321492c0b9 Mon Sep 17 00:00:00 2001 From: pengm2ng Date: Thu, 5 Aug 2021 15:18:59 +0900 Subject: [PATCH 6/6] =?UTF-8?q?tryon=20page=20=EC=99=84=EB=A3=8C=20->=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=ED=95=B4=EB=B3=B4=EB=A0=A4=EB=A9=B4?= =?UTF-8?q?=20=ED=95=A9=EC=84=B1=20=EC=9E=90=EB=A3=8C=20=ED=95=84=EC=9A=94?= =?UTF-8?q?,,,=20=EC=9A=B0=EC=84=A0=20pull=20request=20=ED=95=A8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bottomSheet/MyClothesButtomSheet.js | 105 +++++++++--------- .../bottomSheet/MyLooksButtomSheet.js | 82 +++++++++++++- App/FollowApp/src/context/MyClosetContext.js | 44 +++++++- .../src/screens/MyCloset/TryOnScreen.js | 21 +++- 4 files changed, 195 insertions(+), 57 deletions(-) diff --git a/App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js b/App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js index 8ae3d6a..9cd087a 100644 --- a/App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js +++ b/App/FollowApp/src/components/bottomSheet/MyClothesButtomSheet.js @@ -1,18 +1,18 @@ -import React, {useEffect, useRef} from 'react'; +import React, {useEffect, useRef, useContext} from 'react'; import { View, StyleSheet, - Text, Modal, + Text, Animated, TouchableWithoutFeedback, Dimensions, PanResponder, TouchableOpacity, - ScrollView, Image, FlatList, } from 'react-native'; +import {MyClosetContext} from '../../context/MyClosetContext'; const BottomSheet = props => { const {modalVisible, setModalVisible} = props; @@ -63,6 +63,8 @@ const BottomSheet = props => { setModalVisible(false); }); }; + const clothesList = useContext(MyClosetContext); + console.log({clothesList}.clothesList); return ( { {...panResponders.panHandlers}> ( + // eslint-disable-next-line react-native/no-inline-styles + style={{flex: 1, margin: 15}} + onPress={() => props.getData(item)}> + borderRadius: 20, + }} + /> )} keyExtractor={(item, index) => index} - // eslint-disable-next-line react-native/no-inline-styles numColumns={3} horizontal={false} /> @@ -119,7 +124,7 @@ const styles = StyleSheet.create({ flex: 1, }, bottomSheetContainer: { - height: 350, + height: 300, justifyContent: 'center', alignItems: 'center', backgroundColor: 'white', @@ -128,47 +133,47 @@ const styles = StyleSheet.create({ }, }); -const ClothesList = [ - { - id: '1', - src: require('../../../asset/test/TryOn/Clothes/1.png'), - }, - { - id: '2', - src: require('../../../asset/test/TryOn/Clothes/2.png'), - }, - { - id: '3', - src: require('../../../asset/test/TryOn/Clothes/3.png'), - }, - { - id: '4', - src: require('../../../asset/test/TryOn/Clothes/4.png'), - }, - { - id: '5', - src: require('../../../asset/test/TryOn/Clothes/5.png'), - }, - { - id: '6', - src: require('../../../asset/test/TryOn/Clothes/6.png'), - }, - { - id: '7', - src: require('../../../asset/test/TryOn/Clothes/7.png'), - }, - { - id: '8', - src: require('../../../asset/test/TryOn/Clothes/8.png'), - }, - { - id: '9', - src: require('../../../asset/test/TryOn/Clothes/9.png'), - }, - { - id: '10', - src: require('../../../asset/test/TryOn/Clothes/10.png'), - }, -]; +// const ClothesList = [ +// { +// id: '1', +// src: require('../../../asset/test/TryOn/Clothes/1.png'), +// }, +// { +// id: '2', +// src: require('../../../asset/test/TryOn/Clothes/2.png'), +// }, +// { +// id: '3', +// src: require('../../../asset/test/TryOn/Clothes/3.png'), +// }, +// { +// id: '4', +// src: require('../../../asset/test/TryOn/Clothes/4.png'), +// }, +// { +// id: '5', +// src: require('../../../asset/test/TryOn/Clothes/5.png'), +// }, +// { +// id: '6', +// src: require('../../../asset/test/TryOn/Clothes/6.png'), +// }, +// { +// id: '7', +// src: require('../../../asset/test/TryOn/Clothes/7.png'), +// }, +// { +// id: '8', +// src: require('../../../asset/test/TryOn/Clothes/8.png'), +// }, +// { +// id: '9', +// src: require('../../../asset/test/TryOn/Clothes/9.png'), +// }, +// { +// id: '10', +// src: require('../../../asset/test/TryOn/Clothes/10.png'), +// }, +// ]; export default BottomSheet; diff --git a/App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js b/App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js index 4a83dd5..9cd087a 100644 --- a/App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js +++ b/App/FollowApp/src/components/bottomSheet/MyLooksButtomSheet.js @@ -1,14 +1,18 @@ -import React, {useEffect, useRef} from 'react'; +import React, {useEffect, useRef, useContext} from 'react'; import { View, StyleSheet, - Text, Modal, + Text, Animated, TouchableWithoutFeedback, Dimensions, PanResponder, + TouchableOpacity, + Image, + FlatList, } from 'react-native'; +import {MyClosetContext} from '../../context/MyClosetContext'; const BottomSheet = props => { const {modalVisible, setModalVisible} = props; @@ -59,6 +63,8 @@ const BottomSheet = props => { setModalVisible(false); }); }; + const clothesList = useContext(MyClosetContext); + console.log({clothesList}.clothesList); return ( { transform: [{translateY: translateY}], }} {...panResponders.panHandlers}> - This is myLooks + + ( + + props.getData(item)}> + + + + )} + keyExtractor={(item, index) => index} + numColumns={3} + horizontal={false} + /> + @@ -93,7 +124,7 @@ const styles = StyleSheet.create({ flex: 1, }, bottomSheetContainer: { - height: 350, + height: 300, justifyContent: 'center', alignItems: 'center', backgroundColor: 'white', @@ -102,4 +133,47 @@ const styles = StyleSheet.create({ }, }); +// const ClothesList = [ +// { +// id: '1', +// src: require('../../../asset/test/TryOn/Clothes/1.png'), +// }, +// { +// id: '2', +// src: require('../../../asset/test/TryOn/Clothes/2.png'), +// }, +// { +// id: '3', +// src: require('../../../asset/test/TryOn/Clothes/3.png'), +// }, +// { +// id: '4', +// src: require('../../../asset/test/TryOn/Clothes/4.png'), +// }, +// { +// id: '5', +// src: require('../../../asset/test/TryOn/Clothes/5.png'), +// }, +// { +// id: '6', +// src: require('../../../asset/test/TryOn/Clothes/6.png'), +// }, +// { +// id: '7', +// src: require('../../../asset/test/TryOn/Clothes/7.png'), +// }, +// { +// id: '8', +// src: require('../../../asset/test/TryOn/Clothes/8.png'), +// }, +// { +// id: '9', +// src: require('../../../asset/test/TryOn/Clothes/9.png'), +// }, +// { +// id: '10', +// src: require('../../../asset/test/TryOn/Clothes/10.png'), +// }, +// ]; + export default BottomSheet; diff --git a/App/FollowApp/src/context/MyClosetContext.js b/App/FollowApp/src/context/MyClosetContext.js index 0a54e98..ea43c7a 100644 --- a/App/FollowApp/src/context/MyClosetContext.js +++ b/App/FollowApp/src/context/MyClosetContext.js @@ -1,7 +1,49 @@ import React, {useState, createContext} from 'react'; + const MyClosetContext = createContext({ - myClothList: [], + myClothList: [ + { + id: '1', + src: require('../../asset/test/TryOn/Clothes/1.png'), + }, + { + id: '2', + src: require('../../asset/test/TryOn/Clothes/2.png'), + }, + { + id: '3', + src: require('../../asset/test/TryOn/Clothes/3.png'), + }, + { + id: '4', + src: require('../../asset/test/TryOn/Clothes/4.png'), + }, + { + id: '5', + src: require('../../asset/test/TryOn/Clothes/5.png'), + }, + { + id: '6', + src: require('../../asset/test/TryOn/Clothes/6.png'), + }, + { + id: '7', + src: require('../../asset/test/TryOn/Clothes/7.png'), + }, + { + id: '8', + src: require('../../asset/test/TryOn/Clothes/8.png'), + }, + { + id: '9', + src: require('../../asset/test/TryOn/Clothes/9.png'), + }, + { + id: '10', + src: require('../../asset/test/TryOn/Clothes/10.png'), + }, + ], dispatch: undefined, }); diff --git a/App/FollowApp/src/screens/MyCloset/TryOnScreen.js b/App/FollowApp/src/screens/MyCloset/TryOnScreen.js index 5ef8a60..8394853 100644 --- a/App/FollowApp/src/screens/MyCloset/TryOnScreen.js +++ b/App/FollowApp/src/screens/MyCloset/TryOnScreen.js @@ -1,5 +1,5 @@ import React, {useState} from 'react'; -import {Dimensions} from 'react-native'; +import {Image, Text} from 'react-native'; import styled from 'styled-components/native'; import Buttons from '../../components/buttons/Button'; import MyClothesBottomSheet from '../../components/bottomSheet/MyClothesButtomSheet'; @@ -29,9 +29,24 @@ const TryOnScreen = ({props}) => { const pressMyLooksButton = () => { setModalTwoVisible(true); }; + const [imgData, setImgData] = useState(''); + const getData = data => { + setImgData(data); + }; + return ( - + + + { );