diff options
| author | Ben Woodward <ben@bdw.to> | 2021-08-05 12:12:17 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-05 12:12:17 -0700 |
| commit | 093f025de3e97339750dc3df5be626a0315507dc (patch) | |
| tree | 9b740790ae1f4fb6f5ad2b675c01f37acd2f0914 | |
| parent | 5a03a61de7ac4e8f58060ae19a309dd40eea13bc (diff) | |
Style and code refactor (#166)
* Move all settings below card
* refactor components; lifting state up
* background color
* Evergreen components for everything
* password error
* Tighten card size
* Simply hide password to basic toggle, never disable
* Hide password label, too
* Maximize mobile portrait width
* Make wifi tip smaller
* Small style tweaks
* Copy: update password length error text to include helpful instructions
This will need a backfill for other translations
* Remove unused css
* Use empty string for EncryptionMode=None value
* Remove light.min.css
* Include logo on wificard
* Cleanup after rebase
* Clean-up comments on state
* Padding for mobile
| -rw-r--r-- | package.json | 5 | ||||
| -rw-r--r-- | public/index.html | 1 | ||||
| -rw-r--r-- | public/light.min.css | 2 | ||||
| -rw-r--r-- | src/App.js | 173 | ||||
| -rw-r--r-- | src/components/Card.js | 225 | ||||
| -rw-r--r-- | src/components/Settings.js | 77 | ||||
| -rw-r--r-- | src/components/WifiCard.js | 148 | ||||
| -rw-r--r-- | src/components/style.css | 46 | ||||
| -rw-r--r-- | src/i18n.js | 33 | ||||
| -rw-r--r-- | src/style.css | 7 | ||||
| -rw-r--r-- | yarn.lock | 280 |
11 files changed, 669 insertions, 328 deletions
diff --git a/package.json b/package.json index 9cec5bc..682d3bf 100644 --- a/package.json +++ b/package.json | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | "@testing-library/jest-dom": "^5.14.1", | 6 | "@testing-library/jest-dom": "^5.14.1", |
| 7 | "@testing-library/react": "^12.0.0", | 7 | "@testing-library/react": "^12.0.0", |
| 8 | "@testing-library/user-event": "^13.2.1", | 8 | "@testing-library/user-event": "^13.2.1", |
| 9 | "evergreen-ui": "^6.3.0", | ||
| 9 | "i18next": "^20.3.5", | 10 | "i18next": "^20.3.5", |
| 10 | "i18next-browser-languagedetector": "^6.1.2", | 11 | "i18next-browser-languagedetector": "^6.1.2", |
| 11 | "qrcode.react": "^1.0.1", | 12 | "qrcode.react": "^1.0.1", |
| @@ -15,8 +16,8 @@ | |||
| 15 | "react-scripts": "^4.0.3" | 16 | "react-scripts": "^4.0.3" |
| 16 | }, | 17 | }, |
| 17 | "devDependencies": { | 18 | "devDependencies": { |
| 18 | "prettier": "2.3.2", | 19 | "husky": "^7.0.1", |
| 19 | "husky": "^7.0.1" | 20 | "prettier": "2.3.2" |
| 20 | }, | 21 | }, |
| 21 | "scripts": { | 22 | "scripts": { |
| 22 | "start": "react-scripts start", | 23 | "start": "react-scripts start", |
diff --git a/public/index.html b/public/index.html index 4882353..4b04eb7 100644 --- a/public/index.html +++ b/public/index.html | |||
| @@ -9,7 +9,6 @@ | |||
| 9 | content="Print a simple card with your WiFi login details. Tape it to the fridge, keep it in your wallet, etc." | 9 | content="Print a simple card with your WiFi login details. Tape it to the fridge, keep it in your wallet, etc." |
| 10 | /> | 10 | /> |
| 11 | <link rel="icon" href="./images/wifi.ico" /> | 11 | <link rel="icon" href="./images/wifi.ico" /> |
| 12 | <link rel="stylesheet" href="./light.min.css" /> | ||
| 13 | <!-- | 12 | <!-- |
| 14 | manifest.json provides metadata used when your web app is installed on a | 13 | manifest.json provides metadata used when your web app is installed on a |
| 15 | user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ | 14 | user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ |
diff --git a/public/light.min.css b/public/light.min.css deleted file mode 100644 index 8ce73eb..0000000 --- a/public/light.min.css +++ /dev/null | |||
| @@ -1,2 +0,0 @@ | |||
| 1 | @charset "UTF-8";body{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.4;max-width:800px;margin:20px auto;padding:0 10px;color:#363636;background:#fff;text-rendering:optimizeLegibility}button,input,textarea{transition:background-color .1s linear,border-color .1s linear,color .1s linear,box-shadow .1s linear,transform .1s ease}h1{font-size:2.2em;margin-top:0}h1,h2,h3,h4,h5,h6{margin-bottom:12px}h1,h2,h3,h4,h5,h6,strong{color:#000}b,h1,h2,h3,h4,h5,h6,strong,th{font-weight:600}blockquote{border-left:4px solid rgba(0,150,191,.67);margin:1.5em 0;padding:.5em 1em;font-style:italic}blockquote>footer{margin-top:10px;font-style:normal}address,blockquote cite{font-style:normal}a[href^=mailto]:before{content:"📧 "}a[href^=tel]:before{content:"📞 "}a[href^=sms]:before{content:"💬 "}button,input[type=button],input[type=checkbox],input[type=submit]{cursor:pointer}input:not([type=checkbox]):not([type=radio]),select{display:block}button,input,select,textarea{color:#000;background-color:#efefef;font-family:inherit;font-size:inherit;margin-right:6px;margin-bottom:6px;padding:10px;border:none;border-radius:6px;outline:none}button,input:not([type=checkbox]):not([type=radio]),select,textarea{-webkit-appearance:none}textarea{margin-right:0;width:100%;box-sizing:border-box;resize:vertical}button,input[type=button],input[type=submit]{padding-right:30px;padding-left:30px}button:hover,input[type=button]:hover,input[type=submit]:hover{background:#ddd}button:focus,input:focus,select:focus,textarea:focus{box-shadow:0 0 0 2px rgba(0,150,191,.67)}button:active,input[type=button]:active,input[type=checkbox]:active,input[type=radio]:active,input[type=submit]:active{transform:translateY(2px)}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.5}::-webkit-input-placeholder{color:#949494}:-ms-input-placeholder{color:#949494}::-ms-input-placeholder{color:#949494}::placeholder{color:#949494}a{text-decoration:none;color:#0076d1}a:hover{text-decoration:underline}code,kbd{background:#efefef;color:#000;padding:5px;border-radius:6px}pre>code{padding:10px;display:block;overflow-x:auto}img{max-width:100%}hr{border:none;border-top:1px solid #dbdbdb}table{border-collapse:collapse;margin-bottom:10px;width:100%}td,th{padding:6px;text-align:left}th{border-bottom:1px solid #dbdbdb}tbody tr:nth-child(2n){background-color:#efefef}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:#efefef;border-radius:6px}::-webkit-scrollbar-thumb{background:#d5d5d5;border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#c4c4c4} | ||
| 2 | /*# sourceMappingURL=light.min.css.map */ | ||
| @@ -1,7 +1,9 @@ | |||
| 1 | import React from 'react'; | 1 | import { Button, Heading, Link, Pane, Paragraph } from 'evergreen-ui'; |
| 2 | import React, { useEffect, useRef, useState } from 'react'; | ||
| 2 | import { useTranslation } from 'react-i18next'; | 3 | import { useTranslation } from 'react-i18next'; |
| 3 | import logo from '../src/images/wifi.png'; | 4 | import logo from '../src/images/wifi.png'; |
| 4 | import { Card } from './components/Card'; | 5 | import { Settings } from './components/Settings'; |
| 6 | import { WifiCard } from './components/WifiCard'; | ||
| 5 | import './style.css'; | 7 | import './style.css'; |
| 6 | 8 | ||
| 7 | /* List of languages that require RTL direction (alphabetic order). */ | 9 | /* List of languages that require RTL direction (alphabetic order). */ |
| @@ -10,65 +12,138 @@ const RTL_LANGUAGES = ['ar', 'fa-IR']; | |||
| 10 | function App() { | 12 | function App() { |
| 11 | const html = document.querySelector('html'); | 13 | const html = document.querySelector('html'); |
| 12 | const { t, i18n } = useTranslation(); | 14 | const { t, i18n } = useTranslation(); |
| 15 | const firstLoad = useRef(true); | ||
| 16 | const [settings, setSettings] = useState({ | ||
| 17 | // Network SSID name | ||
| 18 | ssid: '', | ||
| 19 | // Network password | ||
| 20 | password: '', | ||
| 21 | // Settings: Network encryption mode | ||
| 22 | encryptionMode: 'WPA', | ||
| 23 | // Settings: Hide password on the printed card | ||
| 24 | hidePassword: false, | ||
| 25 | // Settings: Portrait orientation | ||
| 26 | portrait: false, | ||
| 27 | }); | ||
| 28 | const [errors, setErrors] = useState({ | ||
| 29 | ssidError: '', | ||
| 30 | passwordError: '', | ||
| 31 | }); | ||
| 13 | 32 | ||
| 14 | const changeLanguage = (language) => { | 33 | const onChangeLanguage = (language) => { |
| 15 | html.style.direction = RTL_LANGUAGES.includes(language) ? 'rtl' : 'ltr'; | 34 | html.style.direction = RTL_LANGUAGES.includes(language) ? 'rtl' : 'ltr'; |
| 16 | i18n.changeLanguage(language); | 35 | i18n.changeLanguage(language); |
| 17 | }; | 36 | }; |
| 18 | 37 | ||
| 19 | /* handle the edge case of the initial render requiring RTL direction */ | 38 | const onPrint = () => { |
| 20 | if (RTL_LANGUAGES.includes(i18n.language)) { | 39 | if (!settings.ssid.length) { |
| 21 | html.style.direction = 'rtl'; | 40 | setErrors({ |
| 22 | } | 41 | ...errors, |
| 42 | ssidError: t('wifi.alert.name'), | ||
| 43 | }); | ||
| 44 | return; | ||
| 45 | } | ||
| 46 | |||
| 47 | if (settings.ssid.length > 0) { | ||
| 48 | if (settings.password.length < 8 && settings.encryptionMode === 'WPA') { | ||
| 49 | setErrors({ | ||
| 50 | ...errors, | ||
| 51 | passwordError: t('wifi.alert.password.length.8'), | ||
| 52 | }); | ||
| 53 | } else if ( | ||
| 54 | settings.password.length < 5 && | ||
| 55 | settings.encryptionMode === 'WEP' | ||
| 56 | ) { | ||
| 57 | setErrors({ | ||
| 58 | ...errors, | ||
| 59 | passwordError: t('wifi.alert.password.length.5'), | ||
| 60 | }); | ||
| 61 | } else { | ||
| 62 | document.title = 'WiFi Card - ' + settings.ssid; | ||
| 63 | window.print(); | ||
| 64 | } | ||
| 65 | } | ||
| 66 | }; | ||
| 67 | |||
| 68 | const onSSIDChange = (ssid) => { | ||
| 69 | setErrors({ ...errors, ssidError: '' }); | ||
| 70 | setSettings({ ...settings, ssid }); | ||
| 71 | }; | ||
| 72 | const onPasswordChange = (password) => { | ||
| 73 | setErrors({ ...errors, passwordError: '' }); | ||
| 74 | setSettings({ ...settings, password }); | ||
| 75 | }; | ||
| 76 | const onEncryptionModeChange = (encryptionMode) => { | ||
| 77 | setErrors({ ...errors, passwordError: '' }); | ||
| 78 | setSettings({ ...settings, encryptionMode }); | ||
| 79 | }; | ||
| 80 | const onOrientationChange = (portrait) => { | ||
| 81 | setSettings({ ...settings, portrait }); | ||
| 82 | }; | ||
| 83 | const onHidePasswordChange = (hidePassword) => { | ||
| 84 | setSettings({ ...settings, hidePassword }); | ||
| 85 | }; | ||
| 86 | const onFirstLoad = () => { | ||
| 87 | firstLoad.current = false; | ||
| 88 | }; | ||
| 89 | |||
| 90 | useEffect(() => { | ||
| 91 | /* handle the edge case of the initial render requiring RTL direction */ | ||
| 92 | if (RTL_LANGUAGES.includes(i18n.language)) { | ||
| 93 | html.style.direction = 'rtl'; | ||
| 94 | } | ||
| 95 | }); | ||
| 23 | 96 | ||
| 24 | return ( | 97 | return ( |
| 25 | <div className="App"> | 98 | <Pane> |
| 26 | <h1> | 99 | <Pane display="flex"> |
| 27 | <img alt="icon" src={logo} width="32" height="32" /> | 100 | <img alt="icon" src={logo} width="32" height="32" /> |
| 28 | {t('title')} | 101 | <Heading size={900} paddingLeft={16}> |
| 29 | </h1> | 102 | {t('title')} |
| 103 | </Heading> | ||
| 104 | </Pane> | ||
| 105 | |||
| 106 | <Pane> | ||
| 107 | <Paragraph marginTop={12}>{t('desc.use')}</Paragraph> | ||
| 30 | 108 | ||
| 31 | <div> | 109 | <Paragraph marginTop={12}> |
| 32 | <label>{t('select')}</label> | 110 | {t('desc.privacy')}{' '} |
| 33 | <select | 111 | <Link href="https://github.com/bndw/wifi-card"> |
| 34 | value={i18n.language} | 112 | {t('desc.source')} |
| 35 | onChange={(e) => changeLanguage(e.target.value)} | 113 | </Link> |
| 36 | > | 114 | . |
| 37 | <option value="en-US">English</option> | 115 | </Paragraph> |
| 38 | <option value="ar">Arabic - العربية</option> | 116 | </Pane> |
| 39 | <option value="ca">Catalan - Català</option> | ||
| 40 | <option value="zh-HK">Chinese Hong Kong - 简体中文</option> | ||
| 41 | <option value="zh-CN">Chinese Simplified - 简体中文</option> | ||
| 42 | <option value="nl-NL">Dutch - Nederlands</option> | ||
| 43 | <option value="fr-FR">French - Français</option> | ||
| 44 | <option value="de-DE">German - Deutsch</option> | ||
| 45 | <option value="hi-IN">Hindi - हिन्दी</option> | ||
| 46 | <option value="id-ID">Indonesian</option> | ||
| 47 | <option value="it-IT">Italian</option> | ||
| 48 | <option value="ja">Japanese - 日本語</option> | ||
| 49 | <option value="ko">Korean - 한국어</option> | ||
| 50 | <option value="no-NB">Norwegian - Norsk</option> | ||
| 51 | <option value="oc">Occitan</option> | ||
| 52 | <option value="fa-IR">Persian Iran - فارسی</option> | ||
| 53 | <option value="pl-PL">Polish - Polski</option> | ||
| 54 | <option value="pt">Portuguese - Português</option> | ||
| 55 | <option value="pt-BR">Portuguese - Português brasileiro</option> | ||
| 56 | <option value="ru-RU">Russian - Русский</option> | ||
| 57 | <option value="es">Spanish - Español</option> | ||
| 58 | <option value="tr-TR">Turkish - Türkçe</option> | ||
| 59 | <option value="uk-UA">Ukrainian - Українська</option> | ||
| 60 | </select> | ||
| 61 | </div> | ||
| 62 | 117 | ||
| 63 | <p className="tag">{t('desc.use')}</p> | 118 | <WifiCard |
| 119 | direction={RTL_LANGUAGES.includes(i18n.language) ? 'rtl' : 'ltr'} | ||
| 120 | settings={settings} | ||
| 121 | ssidError={errors.ssidError} | ||
| 122 | passwordError={errors.passwordError} | ||
| 123 | onSSIDChange={onSSIDChange} | ||
| 124 | onPasswordChange={onPasswordChange} | ||
| 125 | /> | ||
| 64 | 126 | ||
| 65 | <p className="tag"> | 127 | <Settings |
| 66 | {t('desc.privacy')}{' '} | 128 | settings={settings} |
| 67 | <a href="https://github.com/bndw/wifi-card">{t('desc.source')}</a>. | 129 | firstLoad={firstLoad} |
| 68 | </p> | 130 | onFirstLoad={onFirstLoad} |
| 131 | onLanguageChange={onChangeLanguage} | ||
| 132 | onEncryptionModeChange={onEncryptionModeChange} | ||
| 133 | onOrientationChange={onOrientationChange} | ||
| 134 | onHidePasswordChange={onHidePasswordChange} | ||
| 135 | /> | ||
| 69 | 136 | ||
| 70 | <Card direction={RTL_LANGUAGES.includes(i18n.language) ? 'rtl' : 'ltr'} /> | 137 | <Button |
| 71 | </div> | 138 | id="print" |
| 139 | appearance="primary" | ||
| 140 | height={40} | ||
| 141 | marginRight={16} | ||
| 142 | onClick={onPrint} | ||
| 143 | > | ||
| 144 | {t('button.print')} | ||
| 145 | </Button> | ||
| 146 | </Pane> | ||
| 72 | ); | 147 | ); |
| 73 | } | 148 | } |
| 74 | 149 | ||
diff --git a/src/components/Card.js b/src/components/Card.js deleted file mode 100644 index 601b760..0000000 --- a/src/components/Card.js +++ /dev/null | |||
| @@ -1,225 +0,0 @@ | |||
| 1 | import QRCode from 'qrcode.react'; | ||
| 2 | import { useEffect, useRef, useState } from 'react'; | ||
| 3 | import { useTranslation } from 'react-i18next'; | ||
| 4 | import './style.css'; | ||
| 5 | |||
| 6 | export const Card = ({ direction = 'ltr' }) => { | ||
| 7 | const firstLoad = useRef(true); | ||
| 8 | const [qrvalue, setQrvalue] = useState(''); | ||
| 9 | const [network, setNetwork] = useState({ | ||
| 10 | ssid: '', | ||
| 11 | encryptionMode: 'WPA', | ||
| 12 | password: '', | ||
| 13 | hidePassword: false, | ||
| 14 | }); | ||
| 15 | const [portrait, setPortrait] = useState(false); | ||
| 16 | const { t } = useTranslation(); | ||
| 17 | const escape = (v) => { | ||
| 18 | const needsEscape = ['"', ';', ',', ':', '\\']; | ||
| 19 | |||
| 20 | let escaped = ''; | ||
| 21 | for (const c of v) { | ||
| 22 | if (needsEscape.includes(c)) { | ||
| 23 | escaped += `\\${c}`; | ||
| 24 | } else { | ||
| 25 | escaped += c; | ||
| 26 | } | ||
| 27 | } | ||
| 28 | return escaped; | ||
| 29 | }; | ||
| 30 | |||
| 31 | const onPrint = () => { | ||
| 32 | if (network.ssid.length > 0) { | ||
| 33 | if (network.password.length < 8 && network.encryptionMode === 'WPA') { | ||
| 34 | alert(t('wifi.alert.password.length.8')); | ||
| 35 | } else if ( | ||
| 36 | network.password.length < 5 && | ||
| 37 | network.encryptionMode === 'WEP' | ||
| 38 | ) { | ||
| 39 | alert(t('wifi.alert.password.length.5')); | ||
| 40 | } else { | ||
| 41 | document.title = 'WiFi Card - ' + network.ssid; | ||
| 42 | window.print(); | ||
| 43 | } | ||
| 44 | } else { | ||
| 45 | alert(t('wifi.alert.name')); | ||
| 46 | } | ||
| 47 | }; | ||
| 48 | |||
| 49 | const disableHidePassword = () => { | ||
| 50 | const isWEPWithPasswordLengthShorterThat5Characters = () => { | ||
| 51 | return network.encryptionMode === 'WEP' && network.password.length < 5 | ||
| 52 | ? true | ||
| 53 | : false; | ||
| 54 | }; | ||
| 55 | |||
| 56 | return network.encryptionMode === 'WPA' && network.password.length < 8 | ||
| 57 | ? true | ||
| 58 | : isWEPWithPasswordLengthShorterThat5Characters(); | ||
| 59 | }; | ||
| 60 | |||
| 61 | useEffect(() => { | ||
| 62 | if (firstLoad.current && window.innerWidth < 500) { | ||
| 63 | firstLoad.current = false; | ||
| 64 | setPortrait(true); | ||
| 65 | } | ||
| 66 | |||
| 67 | const ssid = escape(network.ssid); | ||
| 68 | const password = | ||
| 69 | network.encryptionMode === 'nopass' ? '' : escape(network.password); | ||
| 70 | setQrvalue(`WIFI:T:${network.encryptionMode};S:${ssid};P:${password};;`); | ||
| 71 | }, [network]); | ||
| 72 | |||
| 73 | const setEncryptionMode = (e) => | ||
| 74 | setNetwork({ | ||
| 75 | ...network, | ||
| 76 | encryptionMode: e.target.value, | ||
| 77 | }); | ||
| 78 | |||
| 79 | const checkDirectionAndSetPadding = | ||
| 80 | direction === 'ltr' ? { paddingRight: '1em' } : { paddingLeft: '1em' }; | ||
| 81 | |||
| 82 | return ( | ||
| 83 | <div> | ||
| 84 | <fieldset | ||
| 85 | id="print-area" | ||
| 86 | style={{ maxWidth: portrait ? '350px' : '100%' }} | ||
| 87 | > | ||
| 88 | <h1 style={{ textAlign: portrait ? 'center' : 'unset' }}> | ||
| 89 | {t('wifi.login')} | ||
| 90 | </h1> | ||
| 91 | |||
| 92 | <div | ||
| 93 | className="details" | ||
| 94 | style={{ flexDirection: portrait ? 'column' : 'row' }} | ||
| 95 | > | ||
| 96 | <QRCode | ||
| 97 | className="qrcode" | ||
| 98 | style={!portrait && checkDirectionAndSetPadding} | ||
| 99 | value={qrvalue} | ||
| 100 | size={175} | ||
| 101 | /> | ||
| 102 | |||
| 103 | <div className="inputs"> | ||
| 104 | <label>{t('wifi.name')}</label> | ||
| 105 | <textarea | ||
| 106 | id="ssid" | ||
| 107 | type="text" | ||
| 108 | maxLength="32" | ||
| 109 | placeholder={t('wifi.name.placeholder')} | ||
| 110 | autoComplete="off" | ||
| 111 | autoCorrect="off" | ||
| 112 | autoCapitalize="none" | ||
| 113 | spellCheck="false" | ||
| 114 | value={network.ssid} | ||
| 115 | onChange={(e) => setNetwork({ ...network, ssid: e.target.value })} | ||
| 116 | /> | ||
| 117 | <label | ||
| 118 | className={` | ||
| 119 | ${network.hidePassword && 'no-print hidden'} | ||
| 120 | ${network.encryptionMode === 'nopass' && 'hidden'} | ||
| 121 | `} | ||
| 122 | > | ||
| 123 | {t('wifi.password')} | ||
| 124 | </label> | ||
| 125 | <textarea | ||
| 126 | id="password" | ||
| 127 | type="text" | ||
| 128 | className={` | ||
| 129 | ${network.hidePassword && 'no-print hidden'} | ||
| 130 | ${network.encryptionMode === 'nopass' && 'hidden'} | ||
| 131 | `} | ||
| 132 | style={{ | ||
| 133 | height: | ||
| 134 | portrait && network.password.length > 40 ? '5em' : 'auto', | ||
| 135 | }} | ||
| 136 | maxLength="63" | ||
| 137 | placeholder={t('wifi.password.placeholder')} | ||
| 138 | autoComplete="off" | ||
| 139 | autoCorrect="off" | ||
| 140 | autoCapitalize="none" | ||
| 141 | spellCheck="false" | ||
| 142 | value={network.password} | ||
| 143 | onChange={(e) => { | ||
| 144 | setNetwork({ ...network, password: e.target.value }); | ||
| 145 | }} | ||
| 146 | /> | ||
| 147 | |||
| 148 | <div className="no-print"> | ||
| 149 | <input | ||
| 150 | type="checkbox" | ||
| 151 | id="hide-password-checkbox" | ||
| 152 | checked={network.hidePassword} | ||
| 153 | disabled={disableHidePassword()} | ||
| 154 | className={network.encryptionMode === 'nopass' ? 'hidden' : ''} | ||
| 155 | onChange={() => | ||
| 156 | setNetwork({ | ||
| 157 | ...network, | ||
| 158 | hidePassword: !network.hidePassword, | ||
| 159 | }) | ||
| 160 | } | ||
| 161 | /> | ||
| 162 | <label | ||
| 163 | htmlFor="hide-password-checkbox" | ||
| 164 | className={network.encryptionMode === 'nopass' ? 'hidden' : ''} | ||
| 165 | > | ||
| 166 | {t('wifi.password.hide')} | ||
| 167 | </label> | ||
| 168 | </div> | ||
| 169 | |||
| 170 | <div className="no-print"> | ||
| 171 | <label> | ||
| 172 | {t('wifi.password.encryption')}:{direction === 'rtl' ? ' ' : ''} | ||
| 173 | </label> | ||
| 174 | <span dir="ltr"> | ||
| 175 | <input | ||
| 176 | type="radio" | ||
| 177 | name="encrypt-select" | ||
| 178 | id="encrypt-none" | ||
| 179 | value="nopass" | ||
| 180 | onChange={setEncryptionMode} | ||
| 181 | /> | ||
| 182 | <label htmlFor="encrypt-none"> | ||
| 183 | {t('wifi.password.encryption.none')} | ||
| 184 | </label> | ||
| 185 | <input | ||
| 186 | type="radio" | ||
| 187 | name="encrypt-select" | ||
| 188 | id="encrypt-wpa-wpa2-wpa3" | ||
| 189 | value="WPA" | ||
| 190 | onChange={setEncryptionMode} | ||
| 191 | defaultChecked | ||
| 192 | /> | ||
| 193 | <label htmlFor="encrypt-wpa-wpa2-wpa3">WPA/WPA2/WPA3</label> | ||
| 194 | <input | ||
| 195 | type="radio" | ||
| 196 | name="encrypt-select" | ||
| 197 | id="encrypt-wep" | ||
| 198 | value="WEP" | ||
| 199 | onChange={setEncryptionMode} | ||
| 200 | /> | ||
| 201 | <label htmlFor="encrypt-wep">WEP</label> | ||
| 202 | </span> | ||
| 203 | </div> | ||
| 204 | </div> | ||
| 205 | </div> | ||
| 206 | <hr /> | ||
| 207 | <p> | ||
| 208 | <span role="img" aria-label="mobile-phone"> | ||
| 209 | 📸📱 | ||
| 210 | </span> | ||
| 211 | {t('wifi.tip')} | ||
| 212 | </p> | ||
| 213 | </fieldset> | ||
| 214 | |||
| 215 | <div className="buttons"> | ||
| 216 | <button id="rotate" onClick={() => setPortrait(!portrait)}> | ||
| 217 | {t('button.rotate')} | ||
| 218 | </button> | ||
| 219 | <button id="print" onClick={onPrint}> | ||
| 220 | {t('button.print')} | ||
| 221 | </button> | ||
| 222 | </div> | ||
| 223 | </div> | ||
| 224 | ); | ||
| 225 | }; | ||
diff --git a/src/components/Settings.js b/src/components/Settings.js new file mode 100644 index 0000000..1c28dab --- /dev/null +++ b/src/components/Settings.js | |||
| @@ -0,0 +1,77 @@ | |||
| 1 | import { Checkbox, Pane, RadioGroup, SelectField } from 'evergreen-ui'; | ||
| 2 | import { useEffect, useState } from 'react'; | ||
| 3 | import { useTranslation } from 'react-i18next'; | ||
| 4 | import i18n from '../i18n'; | ||
| 5 | import './style.css'; | ||
| 6 | |||
| 7 | export const Settings = (props) => { | ||
| 8 | const { t } = useTranslation(); | ||
| 9 | const [encryptionModes] = useState([ | ||
| 10 | { label: 'None', value: '' }, | ||
| 11 | { label: 'WPA/WPA2/WPA3', value: 'WPA' }, | ||
| 12 | { label: 'WEP', value: 'WEP' }, | ||
| 13 | ]); | ||
| 14 | |||
| 15 | useEffect(() => { | ||
| 16 | if (props.firstLoad.current && window.innerWidth < 500) { | ||
| 17 | props.onFirstLoad(); | ||
| 18 | props.onOrientationChange(true); | ||
| 19 | } | ||
| 20 | }); | ||
| 21 | |||
| 22 | return ( | ||
| 23 | <Pane id="settings" maxWidth={props.settings.portrait ? '350px' : '100%'}> | ||
| 24 | <SelectField | ||
| 25 | width={300} | ||
| 26 | inputHeight={38} | ||
| 27 | label={t('select')} | ||
| 28 | selected={i18n.language} | ||
| 29 | onChange={(e) => props.onLanguageChange(e.target.value)} | ||
| 30 | > | ||
| 31 | <option value="en-US">English</option> | ||
| 32 | <option value="ar">Arabic - العربية</option> | ||
| 33 | <option value="ca">Catalan - Català</option> | ||
| 34 | <option value="zh-HK">Chinese Hong Kong - 简体中文</option> | ||
| 35 | <option value="zh-CN">Chinese Simplified - 简体中文</option> | ||
| 36 | <option value="nl-NL">Dutch - Nederlands</option> | ||
| 37 | <option value="fr-FR">French - Français</option> | ||
| 38 | <option value="de-DE">German - Deutsch</option> | ||
| 39 | <option value="hi-IN">Hindi - हिन्दी</option> | ||
| 40 | <option value="id-ID">Indonesian</option> | ||
| 41 | <option value="it-IT">Italian</option> | ||
| 42 | <option value="ja">Japanese - 日本語</option> | ||
| 43 | <option value="ko">Korean - 한국어</option> | ||
| 44 | <option value="no-NB">Norwegian - Norsk</option> | ||
| 45 | <option value="oc">Occitan</option> | ||
| 46 | <option value="fa-IR">Persian Iran - فارسی</option> | ||
| 47 | <option value="pl-PL">Polish - Polski</option> | ||
| 48 | <option value="pt">Portuguese - Português</option> | ||
| 49 | <option value="pt-BR">Portuguese - Português brasileiro</option> | ||
| 50 | <option value="ru-RU">Russian - Русский</option> | ||
| 51 | <option value="es">Spanish - Español</option> | ||
| 52 | <option value="tr-TR">Turkish - Türkçe</option> | ||
| 53 | <option value="uk-UA">Ukrainian - Українська</option> | ||
| 54 | </SelectField> | ||
| 55 | |||
| 56 | <Checkbox | ||
| 57 | label={t('button.rotate')} | ||
| 58 | checked={props.settings.portrait} | ||
| 59 | onChange={() => props.onOrientationChange(!props.settings.portrait)} | ||
| 60 | /> | ||
| 61 | <Checkbox | ||
| 62 | label={t('wifi.password.hide')} | ||
| 63 | checked={props.settings.hidePassword} | ||
| 64 | onChange={() => | ||
| 65 | props.onHidePasswordChange(!props.settings.hidePassword) | ||
| 66 | } | ||
| 67 | /> | ||
| 68 | <RadioGroup | ||
| 69 | label={t('wifi.password.encryption')} | ||
| 70 | size={16} | ||
| 71 | value={props.settings.encryptionMode} | ||
| 72 | options={encryptionModes} | ||
| 73 | onChange={(e) => props.onEncryptionModeChange(e.target.value)} | ||
| 74 | /> | ||
| 75 | </Pane> | ||
| 76 | ); | ||
| 77 | }; | ||
diff --git a/src/components/WifiCard.js b/src/components/WifiCard.js new file mode 100644 index 0000000..645dfa1 --- /dev/null +++ b/src/components/WifiCard.js | |||
| @@ -0,0 +1,148 @@ | |||
| 1 | import { | ||
| 2 | CameraIcon, | ||
| 3 | Card, | ||
| 4 | Heading, | ||
| 5 | MobilePhoneIcon, | ||
| 6 | Pane, | ||
| 7 | Paragraph, | ||
| 8 | Text, | ||
| 9 | TextareaField, | ||
| 10 | } from 'evergreen-ui'; | ||
| 11 | import QRCode from 'qrcode.react'; | ||
| 12 | import { useEffect, useState } from 'react'; | ||
| 13 | import { useTranslation } from 'react-i18next'; | ||
| 14 | import logo from '../../src/images/wifi.png'; | ||
| 15 | import './style.css'; | ||
| 16 | |||
| 17 | export const WifiCard = (props) => { | ||
| 18 | const { t } = useTranslation(); | ||
| 19 | const [qrvalue, setQrvalue] = useState(''); | ||
| 20 | |||
| 21 | const escape = (v) => { | ||
| 22 | const needsEscape = ['"', ';', ',', ':', '\\']; | ||
| 23 | |||
| 24 | let escaped = ''; | ||
| 25 | for (const c of v) { | ||
| 26 | if (needsEscape.includes(c)) { | ||
| 27 | escaped += `\\${c}`; | ||
| 28 | } else { | ||
| 29 | escaped += c; | ||
| 30 | } | ||
| 31 | } | ||
| 32 | return escaped; | ||
| 33 | }; | ||
| 34 | |||
| 35 | useEffect(() => { | ||
| 36 | const ssid = escape(props.settings.ssid); | ||
| 37 | const password = !props.settings.encryptionMode | ||
| 38 | ? '' | ||
| 39 | : escape(props.settings.password); | ||
| 40 | setQrvalue( | ||
| 41 | `WIFI:T:${props.settings.encryptionMode};S:${ssid};P:${password};;` | ||
| 42 | ); | ||
| 43 | }, [props.settings]); | ||
| 44 | |||
| 45 | const portraitWidth = () => { | ||
| 46 | const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); | ||
| 47 | return isMobile ? '100%' : '280px'; | ||
| 48 | }; | ||
| 49 | |||
| 50 | const passwordFieldLabel = () => { | ||
| 51 | const hiddenPassword = | ||
| 52 | props.settings.hidePassword || !props.settings.encryptionMode; | ||
| 53 | return hiddenPassword ? '' : t('wifi.password'); | ||
| 54 | }; | ||
| 55 | |||
| 56 | return ( | ||
| 57 | <Pane> | ||
| 58 | <Card | ||
| 59 | id="print-area" | ||
| 60 | elevation={3} | ||
| 61 | style={{ maxWidth: props.settings.portrait ? portraitWidth() : '100%' }} | ||
| 62 | > | ||
| 63 | <Pane display="flex" paddingBottom={12}> | ||
| 64 | <img alt="icon" src={logo} width="24" height="24" /> | ||
| 65 | <Heading | ||
| 66 | paddingLeft={10} | ||
| 67 | size={700} | ||
| 68 | textAlign={props.settings.portrait ? 'center' : 'unset'} | ||
| 69 | > | ||
| 70 | {t('wifi.login')} | ||
| 71 | </Heading> | ||
| 72 | </Pane> | ||
| 73 | |||
| 74 | <Pane | ||
| 75 | className="details" | ||
| 76 | style={{ flexDirection: props.settings.portrait ? 'column' : 'row' }} | ||
| 77 | > | ||
| 78 | <QRCode | ||
| 79 | className="qrcode" | ||
| 80 | style={ | ||
| 81 | !props.settings.portrait | ||
| 82 | ? props.direction === 'ltr' | ||
| 83 | ? { paddingRight: '1em' } | ||
| 84 | : { paddingLeft: '1em' } | ||
| 85 | : {} | ||
| 86 | } | ||
| 87 | value={qrvalue} | ||
| 88 | size={150} | ||
| 89 | /> | ||
| 90 | |||
| 91 | <Pane width={'100%'}> | ||
| 92 | <TextareaField | ||
| 93 | id="ssid" | ||
| 94 | type="text" | ||
| 95 | marginBottom={5} | ||
| 96 | autoComplete="off" | ||
| 97 | autoCorrect="off" | ||
| 98 | autoCapitalize="none" | ||
| 99 | spellCheck={false} | ||
| 100 | maxLength="32" | ||
| 101 | label={t('wifi.name')} | ||
| 102 | placeholder={t('wifi.name.placeholder')} | ||
| 103 | value={props.settings.ssid} | ||
| 104 | onChange={(e) => props.onSSIDChange(e.target.value)} | ||
| 105 | isInvalid={!!props.ssidError} | ||
| 106 | validationMessage={!!props.ssidError && props.ssidError} | ||
| 107 | /> | ||
| 108 | <TextareaField | ||
| 109 | id="password" | ||
| 110 | type="text" | ||
| 111 | maxLength="63" | ||
| 112 | autoComplete="off" | ||
| 113 | autoCorrect="off" | ||
| 114 | autoCapitalize="none" | ||
| 115 | spellCheck={false} | ||
| 116 | className={` | ||
| 117 | ${ | ||
| 118 | (props.settings.hidePassword || | ||
| 119 | !props.settings.encryptionMode) && | ||
| 120 | 'hidden' | ||
| 121 | } | ||
| 122 | `} | ||
| 123 | height={ | ||
| 124 | props.settings.portrait && props.settings.password.length > 40 | ||
| 125 | ? '5em' | ||
| 126 | : 'auto' | ||
| 127 | } | ||
| 128 | label={passwordFieldLabel()} | ||
| 129 | placeholder={t('wifi.password.placeholder')} | ||
| 130 | value={props.settings.password} | ||
| 131 | onChange={(e) => props.onPasswordChange(e.target.value)} | ||
| 132 | isInvalid={!!props.passwordError} | ||
| 133 | validationMessage={!!props.passwordError && props.passwordError} | ||
| 134 | /> | ||
| 135 | </Pane> | ||
| 136 | </Pane> | ||
| 137 | <hr /> | ||
| 138 | <Paragraph> | ||
| 139 | <CameraIcon /> | ||
| 140 | <MobilePhoneIcon /> | ||
| 141 | <Text size={300} paddingLeft={8}> | ||
| 142 | {t('wifi.tip')} | ||
| 143 | </Text> | ||
| 144 | </Paragraph> | ||
| 145 | </Card> | ||
| 146 | </Pane> | ||
| 147 | ); | ||
| 148 | }; | ||
diff --git a/src/components/style.css b/src/components/style.css index c9dbb54..fa931bb 100644 --- a/src/components/style.css +++ b/src/components/style.css | |||
| @@ -2,8 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | #print-area { | 3 | #print-area { |
| 4 | border-color: #aaa; | 4 | border-color: #aaa; |
| 5 | border-style: dashed; | 5 | margin-bottom: 1em; |
| 6 | margin-bottom: 2em; | ||
| 7 | margin-top: 2em; | 6 | margin-top: 2em; |
| 8 | padding: 1em; | 7 | padding: 1em; |
| 9 | } | 8 | } |
| @@ -16,39 +15,39 @@ | |||
| 16 | .qrcode { | 15 | .qrcode { |
| 17 | margin-bottom: 1em; | 16 | margin-bottom: 1em; |
| 18 | max-width: 175px; | 17 | max-width: 175px; |
| 19 | min-width: 175px; | ||
| 20 | } | 18 | } |
| 21 | 19 | ||
| 22 | .hidden { | 20 | .hidden { |
| 23 | display: none; | 21 | display: none; |
| 24 | } | 22 | } |
| 25 | |||
| 26 | textarea { | 23 | textarea { |
| 27 | background-color: #fff; | 24 | background-color: #fff; |
| 28 | border: solid 1px #ddd; | 25 | border: solid 1px #ddd; |
| 29 | font-family: 'Source Code Pro', serif; | 26 | font-family: 'Source Code Pro', serif !important; |
| 30 | font-size: 1.3em; | 27 | font-size: 1em !important; |
| 31 | font-weight: bold; | 28 | font-weight: bold !important; |
| 32 | height: 3em; | 29 | margin-bottom: 0; |
| 30 | height: 40px !important; | ||
| 31 | min-height: 0px !important; | ||
| 33 | overflow: hidden; | 32 | overflow: hidden; |
| 34 | resize: none; | 33 | resize: none; |
| 35 | } | 34 | } |
| 35 | textarea#password { | ||
| 36 | height: 60px !important; | ||
| 37 | } | ||
| 38 | |||
| 39 | hr { | ||
| 40 | margin-top: 0; | ||
| 41 | } | ||
| 36 | 42 | ||
| 37 | button { | 43 | button { |
| 38 | height: 50px; | 44 | height: 50px; |
| 39 | width: 180px; | 45 | width: 180px; |
| 40 | } | 46 | } |
| 41 | 47 | ||
| 42 | button#print { | 48 | #settings { |
| 43 | color: #fff; | 49 | margin-bottom: 1em; |
| 44 | background-color: #0074d9; | 50 | padding: 1em; |
| 45 | border-color: #0074d9; | ||
| 46 | } | ||
| 47 | |||
| 48 | button#rotate { | ||
| 49 | color: #fff; | ||
| 50 | background-color: #6c757d; | ||
| 51 | border-color: #6c757d; | ||
| 52 | } | 51 | } |
| 53 | 52 | ||
| 54 | @media print { | 53 | @media print { |
| @@ -59,19 +58,16 @@ button#rotate { | |||
| 59 | #print-area * { | 58 | #print-area * { |
| 60 | visibility: visible; | 59 | visibility: visible; |
| 61 | } | 60 | } |
| 61 | #print-area { | ||
| 62 | border-style: dashed; | ||
| 63 | box-shadow: none; | ||
| 64 | } | ||
| 62 | #print-area textarea { | 65 | #print-area textarea { |
| 63 | border: none; | 66 | border: none; |
| 64 | } | 67 | } |
| 65 | .no-print { | ||
| 66 | display: none; | ||
| 67 | } | ||
| 68 | #print-area { | 68 | #print-area { |
| 69 | position: absolute; | 69 | position: absolute; |
| 70 | left: 0; | 70 | left: 0; |
| 71 | top: 0; | 71 | top: 0; |
| 72 | } | 72 | } |
| 73 | } | 73 | } |
| 74 | |||
| 75 | hr { | ||
| 76 | margin-top: 25px; | ||
| 77 | } | ||
diff --git a/src/i18n.js b/src/i18n.js index 452bf23..891e291 100644 --- a/src/i18n.js +++ b/src/i18n.js | |||
| @@ -16,16 +16,19 @@ const resources = { | |||
| 16 | 'wifi.name.placeholder': 'WiFi Network name', | 16 | 'wifi.name.placeholder': 'WiFi Network name', |
| 17 | 'wifi.password': 'Password', | 17 | 'wifi.password': 'Password', |
| 18 | 'wifi.password.placeholder': 'Password', | 18 | 'wifi.password.placeholder': 'Password', |
| 19 | 'wifi.password.hide': 'Hide password field before printing', | 19 | 'wifi.password.hide': 'Hide password', |
| 20 | 'wifi.password.encryption': 'Encryption', | 20 | 'wifi.password.encryption': 'Encryption', |
| 21 | 'wifi.password.encryption.none': 'None', | 21 | 'wifi.password.encryption.none': 'None', |
| 22 | 'wifi.tip': | 22 | 'wifi.tip': |
| 23 | "Point your phone's camera at the QR Code to connect automatically", | 23 | "Point your phone's camera at the QR Code to connect automatically", |
| 24 | 'wifi.alert.name': 'Network name cannot be empty', | 24 | 'wifi.alert.name': 'Network name cannot be empty', |
| 25 | 'wifi.alert.password.length.5': 'Password must be at least 5 characters', | 25 | 'wifi.alert.password.length.5': |
| 26 | 'wifi.alert.password.length.8': 'Password must be at least 8 characters', | 26 | 'Password must be at least 5 characters, or change the encryption to "None"', |
| 27 | 'wifi.alert.password.length.8': | ||
| 28 | 'Password must be at least 8 characters, or change the encryption to "None"', | ||
| 27 | 'button.rotate': 'Rotate', | 29 | 'button.rotate': 'Rotate', |
| 28 | 'button.print': 'Print', | 30 | 'button.print': 'Print', |
| 31 | 'button.settings': 'Settings', | ||
| 29 | select: 'Select Language', | 32 | select: 'Select Language', |
| 30 | }, | 33 | }, |
| 31 | }, | 34 | }, |
| @@ -80,6 +83,7 @@ const resources = { | |||
| 80 | 'Wachtwoord moet ten minste 8 tekens bevatten', | 83 | 'Wachtwoord moet ten minste 8 tekens bevatten', |
| 81 | 'button.rotate': 'Draai', | 84 | 'button.rotate': 'Draai', |
| 82 | 'button.print': 'Print', | 85 | 'button.print': 'Print', |
| 86 | 'button.settings': 'Instellingen', | ||
| 83 | select: 'Selecteer Taal', | 87 | select: 'Selecteer Taal', |
| 84 | }, | 88 | }, |
| 85 | }, | 89 | }, |
| @@ -105,6 +109,7 @@ const resources = { | |||
| 105 | 'wifi.alert.password.length.8': '密码至少 8 个字符', | 109 | 'wifi.alert.password.length.8': '密码至少 8 个字符', |
| 106 | 'button.rotate': '翻转', | 110 | 'button.rotate': '翻转', |
| 107 | 'button.print': '打印', | 111 | 'button.print': '打印', |
| 112 | 'button.settings': '设置', | ||
| 108 | select: '选择语言', | 113 | select: '选择语言', |
| 109 | }, | 114 | }, |
| 110 | }, | 115 | }, |
| @@ -130,6 +135,7 @@ const resources = { | |||
| 130 | 'wifi.alert.password.8': '密碼至少要有 8 個字符 ', | 135 | 'wifi.alert.password.8': '密碼至少要有 8 個字符 ', |
| 131 | 'button.rotate': '翻轉', | 136 | 'button.rotate': '翻轉', |
| 132 | 'button.print': '打印', | 137 | 'button.print': '打印', |
| 138 | 'button.settings': '设置', | ||
| 133 | select: '選擇語言', | 139 | select: '選擇語言', |
| 134 | }, | 140 | }, |
| 135 | }, | 141 | }, |
| @@ -159,6 +165,7 @@ const resources = { | |||
| 159 | 'La contraseña debe tener al menos 8 caracteres', | 165 | 'La contraseña debe tener al menos 8 caracteres', |
| 160 | 'button.rotate': 'Girar', | 166 | 'button.rotate': 'Girar', |
| 161 | 'button.print': 'Imprimir', | 167 | 'button.print': 'Imprimir', |
| 168 | 'button.settings': 'Ajustes', | ||
| 162 | select: 'Seleccionar idioma', | 169 | select: 'Seleccionar idioma', |
| 163 | }, | 170 | }, |
| 164 | }, | 171 | }, |
| @@ -185,6 +192,7 @@ const resources = { | |||
| 185 | 'wifi.alert.password.length.8': 'A senha precisa ter no mínimo 8 dígtos', | 192 | 'wifi.alert.password.length.8': 'A senha precisa ter no mínimo 8 dígtos', |
| 186 | 'button.rotate': 'Girar', | 193 | 'button.rotate': 'Girar', |
| 187 | 'button.print': 'Imprimir', | 194 | 'button.print': 'Imprimir', |
| 195 | 'button.settings': 'Definições', | ||
| 188 | select: 'Selecionar Idioma', | 196 | select: 'Selecionar Idioma', |
| 189 | }, | 197 | }, |
| 190 | }, | 198 | }, |
| @@ -212,6 +220,7 @@ const resources = { | |||
| 212 | 'パスワードは8文字以上でなければなりません', | 220 | 'パスワードは8文字以上でなければなりません', |
| 213 | 'button.rotate': '回転する', | 221 | 'button.rotate': '回転する', |
| 214 | 'button.print': '印刷する', | 222 | 'button.print': '印刷する', |
| 223 | 'button.settings': '設定', | ||
| 215 | select: '言語を選択', | 224 | select: '言語を選択', |
| 216 | }, | 225 | }, |
| 217 | }, | 226 | }, |
| @@ -240,6 +249,7 @@ const resources = { | |||
| 240 | 'Пароль должен состоять не менее чем из 8 символов', | 249 | 'Пароль должен состоять не менее чем из 8 символов', |
| 241 | 'button.rotate': 'Повернуть', | 250 | 'button.rotate': 'Повернуть', |
| 242 | 'button.print': 'Распечатать', | 251 | 'button.print': 'Распечатать', |
| 252 | 'button.settings': 'настройки', | ||
| 243 | select: 'Выбор языка', | 253 | select: 'Выбор языка', |
| 244 | }, | 254 | }, |
| 245 | }, | 255 | }, |
| @@ -266,6 +276,7 @@ const resources = { | |||
| 266 | 'wifi.alert.password.8': 'رمزعبور باید حداقل ۸ حرف داشته باشد.', | 276 | 'wifi.alert.password.8': 'رمزعبور باید حداقل ۸ حرف داشته باشد.', |
| 267 | 'button.rotate': 'چرخاندن', | 277 | 'button.rotate': 'چرخاندن', |
| 268 | 'button.print': 'چاپ', | 278 | 'button.print': 'چاپ', |
| 279 | 'button.settings': 'تنظیمات', | ||
| 269 | select: 'انتخاب زبان', | 280 | select: 'انتخاب زبان', |
| 270 | }, | 281 | }, |
| 271 | }, | 282 | }, |
| @@ -294,6 +305,7 @@ const resources = { | |||
| 294 | 'Пароль повинен містити принаймні 8 символів', | 305 | 'Пароль повинен містити принаймні 8 символів', |
| 295 | 'button.rotate': 'Повернути', | 306 | 'button.rotate': 'Повернути', |
| 296 | 'button.print': 'Друкувати', | 307 | 'button.print': 'Друкувати', |
| 308 | 'button.settings': 'налаштування', | ||
| 297 | select: 'Вибір мови', | 309 | select: 'Вибір мови', |
| 298 | }, | 310 | }, |
| 299 | }, | 311 | }, |
| @@ -322,6 +334,7 @@ const resources = { | |||
| 322 | 'Das Passwort muss mindestends 8 Zeichen lang sein', | 334 | 'Das Passwort muss mindestends 8 Zeichen lang sein', |
| 323 | 'button.rotate': 'Drehen', | 335 | 'button.rotate': 'Drehen', |
| 324 | 'button.print': 'Drucken', | 336 | 'button.print': 'Drucken', |
| 337 | 'button.settings': 'Einstellungen', | ||
| 325 | select: 'Sprache auswählen', | 338 | select: 'Sprache auswählen', |
| 326 | }, | 339 | }, |
| 327 | }, | 340 | }, |
| @@ -352,6 +365,7 @@ const resources = { | |||
| 352 | 'wifi.alert.password.8': 'Hasło musi mieć co najmniej 8 znaków', | 365 | 'wifi.alert.password.8': 'Hasło musi mieć co najmniej 8 znaków', |
| 353 | 'button.rotate': 'Obróć', | 366 | 'button.rotate': 'Obróć', |
| 354 | 'button.print': 'Drukuj', | 367 | 'button.print': 'Drukuj', |
| 368 | 'button.settings': 'Ustawienia', | ||
| 355 | select: 'Wybierz język', | 369 | select: 'Wybierz język', |
| 356 | }, | 370 | }, |
| 357 | }, | 371 | }, |
| @@ -380,6 +394,7 @@ const resources = { | |||
| 380 | 'Le mot de passe doit au moins faire 8 caractères', | 394 | 'Le mot de passe doit au moins faire 8 caractères', |
| 381 | 'button.rotate': 'Pivoter', | 395 | 'button.rotate': 'Pivoter', |
| 382 | 'button.print': 'Imprimer', | 396 | 'button.print': 'Imprimer', |
| 397 | 'button.settings': 'Paramètres', | ||
| 383 | select: 'Choisir la langue', | 398 | select: 'Choisir la langue', |
| 384 | }, | 399 | }, |
| 385 | }, | 400 | }, |
| @@ -407,6 +422,7 @@ const resources = { | |||
| 407 | 'wifi.alert.password.8': 'Lo senhal deu conténer almens 8 caractèrs', | 422 | 'wifi.alert.password.8': 'Lo senhal deu conténer almens 8 caractèrs', |
| 408 | 'button.rotate': 'Pivotar', | 423 | 'button.rotate': 'Pivotar', |
| 409 | 'button.print': 'Imprimir', | 424 | 'button.print': 'Imprimir', |
| 425 | 'button.settings': 'Paramètres', | ||
| 410 | select: 'Causir la lenga', | 426 | select: 'Causir la lenga', |
| 411 | }, | 427 | }, |
| 412 | }, | 428 | }, |
| @@ -434,6 +450,7 @@ const resources = { | |||
| 434 | 'wifi.alert.password.8': 'A Senha deve ter pelo menos 8 caracteres', | 450 | 'wifi.alert.password.8': 'A Senha deve ter pelo menos 8 caracteres', |
| 435 | 'button.rotate': 'Rotacionar', | 451 | 'button.rotate': 'Rotacionar', |
| 436 | 'button.print': 'Imprimir', | 452 | 'button.print': 'Imprimir', |
| 453 | 'button.settings': 'Definições', | ||
| 437 | select: 'Escolha o idioma', | 454 | select: 'Escolha o idioma', |
| 438 | }, | 455 | }, |
| 439 | }, | 456 | }, |
| @@ -462,6 +479,7 @@ const resources = { | |||
| 462 | 'La password deve contenere almeno 8 caratteri', | 479 | 'La password deve contenere almeno 8 caratteri', |
| 463 | 'button.rotate': 'Ruota', | 480 | 'button.rotate': 'Ruota', |
| 464 | 'button.print': 'Stampa', | 481 | 'button.print': 'Stampa', |
| 482 | 'button.settings': 'Impostazioni', | ||
| 465 | select: 'Seleziona una lingua', | 483 | select: 'Seleziona una lingua', |
| 466 | }, | 484 | }, |
| 467 | }, | 485 | }, |
| @@ -488,6 +506,7 @@ const resources = { | |||
| 488 | 'wifi.alert.password.length.8': 'Parola en az 8 karakter olmalıdır', | 506 | 'wifi.alert.password.length.8': 'Parola en az 8 karakter olmalıdır', |
| 489 | 'button.rotate': 'Döndür', | 507 | 'button.rotate': 'Döndür', |
| 490 | 'button.print': 'Yazdır', | 508 | 'button.print': 'Yazdır', |
| 509 | 'button.settings': 'Ayarlar', | ||
| 491 | select: 'Dil Seçin', | 510 | select: 'Dil Seçin', |
| 492 | }, | 511 | }, |
| 493 | }, | 512 | }, |
| @@ -516,6 +535,7 @@ const resources = { | |||
| 516 | 'يجب أن تكون كلمة المرور مكونة من ٨ أحرف على الأقل', | 535 | 'يجب أن تكون كلمة المرور مكونة من ٨ أحرف على الأقل', |
| 517 | 'button.rotate': 'تدوير', | 536 | 'button.rotate': 'تدوير', |
| 518 | 'button.print': 'طباعة', | 537 | 'button.print': 'طباعة', |
| 538 | 'button.settings': 'إعدادات', | ||
| 519 | select: 'اختر لغة', | 539 | select: 'اختر لغة', |
| 520 | }, | 540 | }, |
| 521 | }, | 541 | }, |
| @@ -544,6 +564,7 @@ const resources = { | |||
| 544 | 'पासवर्ड कम से कम 8 अक्षरों का होना चाहिए', | 564 | 'पासवर्ड कम से कम 8 अक्षरों का होना चाहिए', |
| 545 | 'button.rotate': 'घुमाएँ', | 565 | 'button.rotate': 'घुमाएँ', |
| 546 | 'button.print': 'प्रिंट करे', | 566 | 'button.print': 'प्रिंट करे', |
| 567 | 'button.settings': 'समायोजन', | ||
| 547 | select: 'भाषा चुने', | 568 | select: 'भाषा चुने', |
| 548 | }, | 569 | }, |
| 549 | }, | 570 | }, |
| @@ -568,10 +589,11 @@ const resources = { | |||
| 568 | 'wifi.alert.name': 'El nom de la xarxa no pot estar buit', | 589 | 'wifi.alert.name': 'El nom de la xarxa no pot estar buit', |
| 569 | 'wifi.alert.password.length.5': | 590 | 'wifi.alert.password.length.5': |
| 570 | 'La contrasenya ha de tenir com a mínim 5 caràcters', | 591 | 'La contrasenya ha de tenir com a mínim 5 caràcters', |
| 571 | 'wifi.alert.password.8': | 592 | 'wifi.alert.password.length.8': |
| 572 | 'La contrasenya ha de tenir com a mínim 8 caràcters', | 593 | 'La contrasenya ha de tenir com a mínim 8 caràcters', |
| 573 | 'button.rotate': 'Gira', | 594 | 'button.rotate': 'Gira', |
| 574 | 'button.print': 'Imprimeix', | 595 | 'button.print': 'Imprimeix', |
| 596 | 'button.settings': 'Configuració', | ||
| 575 | select: 'Escolliu l’idioma', | 597 | select: 'Escolliu l’idioma', |
| 576 | }, | 598 | }, |
| 577 | }, | 599 | }, |
| @@ -595,9 +617,10 @@ const resources = { | |||
| 595 | 'Arahkan kamera ponsel anda ke Kode QR untuk terhubung ke WiFi secara otomatis', | 617 | 'Arahkan kamera ponsel anda ke Kode QR untuk terhubung ke WiFi secara otomatis', |
| 596 | 'wifi.alert.name': 'Nama jaringan tidak boleh kosong', | 618 | 'wifi.alert.name': 'Nama jaringan tidak boleh kosong', |
| 597 | 'wifi.alert.password.length.5': 'Kata sandi minimal harus 5 karakter', | 619 | 'wifi.alert.password.length.5': 'Kata sandi minimal harus 5 karakter', |
| 598 | 'wifi.alert.password.8': 'Kata sandi minimal harus 8 karakter', | 620 | 'wifi.alert.password.length.8': 'Kata sandi minimal harus 8 karakter', |
| 599 | 'button.rotate': 'Putar', | 621 | 'button.rotate': 'Putar', |
| 600 | 'button.print': 'Cetak', | 622 | 'button.print': 'Cetak', |
| 623 | 'button.settings': 'Pengaturan', | ||
| 601 | select: 'Pilih Bahasa', | 624 | select: 'Pilih Bahasa', |
| 602 | }, | 625 | }, |
| 603 | }, | 626 | }, |
diff --git a/src/style.css b/src/style.css index f29d097..cc43310 100644 --- a/src/style.css +++ b/src/style.css | |||
| @@ -1,6 +1,5 @@ | |||
| 1 | body { | 1 | body { |
| 2 | max-width: 680px; | 2 | margin: 0 auto; |
| 3 | } | 3 | max-width: 500px; |
| 4 | .tag { | 4 | padding: 1em; |
| 5 | line-height: 1.6; | ||
| 6 | } | 5 | } |
| @@ -1157,6 +1157,13 @@ | |||
| 1157 | dependencies: | 1157 | dependencies: |
| 1158 | regenerator-runtime "^0.13.4" | 1158 | regenerator-runtime "^0.13.4" |
| 1159 | 1159 | ||
| 1160 | "@babel/runtime@^7.1.2", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": | ||
| 1161 | version "7.14.8" | ||
| 1162 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446" | ||
| 1163 | integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg== | ||
| 1164 | dependencies: | ||
| 1165 | regenerator-runtime "^0.13.4" | ||
| 1166 | |||
| 1160 | "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": | 1167 | "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": |
| 1161 | version "7.14.6" | 1168 | version "7.14.6" |
| 1162 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d" | 1169 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d" |
| @@ -1164,13 +1171,6 @@ | |||
| 1164 | dependencies: | 1171 | dependencies: |
| 1165 | regenerator-runtime "^0.13.4" | 1172 | regenerator-runtime "^0.13.4" |
| 1166 | 1173 | ||
| 1167 | "@babel/runtime@^7.9.2": | ||
| 1168 | version "7.14.8" | ||
| 1169 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446" | ||
| 1170 | integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg== | ||
| 1171 | dependencies: | ||
| 1172 | regenerator-runtime "^0.13.4" | ||
| 1173 | |||
| 1174 | "@babel/template@^7.10.4", "@babel/template@^7.14.5", "@babel/template@^7.3.3": | 1174 | "@babel/template@^7.10.4", "@babel/template@^7.14.5", "@babel/template@^7.3.3": |
| 1175 | version "7.14.5" | 1175 | version "7.14.5" |
| 1176 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" | 1176 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" |
| @@ -1226,6 +1226,11 @@ | |||
| 1226 | resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" | 1226 | resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" |
| 1227 | integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== | 1227 | integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== |
| 1228 | 1228 | ||
| 1229 | "@emotion/hash@^0.7.1": | ||
| 1230 | version "0.7.4" | ||
| 1231 | resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.4.tgz#f14932887422c9056b15a8d222a9074a7dfa2831" | ||
| 1232 | integrity sha512-fxfMSBMX3tlIbKUdtGKxqB1fyrH6gVrX39Gsv3y8lRYKUqlgDt3UMqQyGnR1bQMa2B8aGnhLZokZgg8vT0Le+A== | ||
| 1233 | |||
| 1229 | "@eslint/eslintrc@^0.4.2": | 1234 | "@eslint/eslintrc@^0.4.2": |
| 1230 | version "0.4.2" | 1235 | version "0.4.2" |
| 1231 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" | 1236 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" |
| @@ -1540,6 +1545,13 @@ | |||
| 1540 | estree-walker "^1.0.1" | 1545 | estree-walker "^1.0.1" |
| 1541 | picomatch "^2.2.2" | 1546 | picomatch "^2.2.2" |
| 1542 | 1547 | ||
| 1548 | "@segment/react-tiny-virtual-list@^2.2.1": | ||
| 1549 | version "2.2.1" | ||
| 1550 | resolved "https://registry.yarnpkg.com/@segment/react-tiny-virtual-list/-/react-tiny-virtual-list-2.2.1.tgz#658da8a93cfb83537235c89307818d6f1741aeb3" | ||
| 1551 | integrity sha512-G01b9DrsQLF+8yFRyyJeZBZkzbFuqILG9C7SFFS+GtTFbjdprkHt0CL0riCPOZfe1ZXiT8z8MaKoWfNhrfUjhQ== | ||
| 1552 | dependencies: | ||
| 1553 | prop-types "^15.5.7" | ||
| 1554 | |||
| 1543 | "@sinonjs/commons@^1.7.0": | 1555 | "@sinonjs/commons@^1.7.0": |
| 1544 | version "1.8.3" | 1556 | version "1.8.3" |
| 1545 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" | 1557 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" |
| @@ -1852,11 +1864,41 @@ | |||
| 1852 | resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.0.tgz#2e8332cc7363f887d32ec5496b207d26ba8052bb" | 1864 | resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.0.tgz#2e8332cc7363f887d32ec5496b207d26ba8052bb" |
| 1853 | integrity sha512-hkc1DATxFLQo4VxPDpMH1gCkPpBbpOoJ/4nhuXw4n63/0R6bCpQECj4+K226UJ4JO/eJQz+1mC2I7JsWanAdQw== | 1865 | integrity sha512-hkc1DATxFLQo4VxPDpMH1gCkPpBbpOoJ/4nhuXw4n63/0R6bCpQECj4+K226UJ4JO/eJQz+1mC2I7JsWanAdQw== |
| 1854 | 1866 | ||
| 1867 | "@types/prop-types@*": | ||
| 1868 | version "15.7.4" | ||
| 1869 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" | ||
| 1870 | integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== | ||
| 1871 | |||
| 1855 | "@types/q@^1.5.1": | 1872 | "@types/q@^1.5.1": |
| 1856 | version "1.5.4" | 1873 | version "1.5.4" |
| 1857 | resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" | 1874 | resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" |
| 1858 | integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== | 1875 | integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== |
| 1859 | 1876 | ||
| 1877 | "@types/react-transition-group@^4.4.0": | ||
| 1878 | version "4.4.2" | ||
| 1879 | resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.2.tgz#38890fd9db68bf1f2252b99a942998dc7877c5b3" | ||
| 1880 | integrity sha512-KibDWL6nshuOJ0fu8ll7QnV/LVTo3PzQ9aCPnRUYPfX7eZohHwLIdNHj7pftanREzHNP4/nJa8oeM73uSiavMQ== | ||
| 1881 | dependencies: | ||
| 1882 | "@types/react" "*" | ||
| 1883 | |||
| 1884 | "@types/react@*": | ||
| 1885 | version "17.0.15" | ||
| 1886 | resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.15.tgz#c7533dc38025677e312606502df7656a6ea626d0" | ||
| 1887 | integrity sha512-uTKHDK9STXFHLaKv6IMnwp52fm0hwU+N89w/p9grdUqcFA6WuqDyPhaWopbNyE1k/VhgzmHl8pu1L4wITtmlLw== | ||
| 1888 | dependencies: | ||
| 1889 | "@types/prop-types" "*" | ||
| 1890 | "@types/scheduler" "*" | ||
| 1891 | csstype "^3.0.2" | ||
| 1892 | |||
| 1893 | "@types/react@^16.9.5": | ||
| 1894 | version "16.14.11" | ||
| 1895 | resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.11.tgz#992a0cd4b66b9f27315042b5d96e976717368f04" | ||
| 1896 | integrity sha512-Don0MtsZZ3fjwTJ2BsoqkyOy7e176KplEAKOpr/4XDdzinlyJBn9yfsKn5mcSgn4kh1B22+3tBnzBC1z63ybtQ== | ||
| 1897 | dependencies: | ||
| 1898 | "@types/prop-types" "*" | ||
| 1899 | "@types/scheduler" "*" | ||
| 1900 | csstype "^3.0.2" | ||
| 1901 | |||
| 1860 | "@types/resolve@0.0.8": | 1902 | "@types/resolve@0.0.8": |
| 1861 | version "0.0.8" | 1903 | version "0.0.8" |
| 1862 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" | 1904 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" |
| @@ -1864,6 +1906,11 @@ | |||
| 1864 | dependencies: | 1906 | dependencies: |
| 1865 | "@types/node" "*" | 1907 | "@types/node" "*" |
| 1866 | 1908 | ||
| 1909 | "@types/scheduler@*": | ||
| 1910 | version "0.16.2" | ||
| 1911 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" | ||
| 1912 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== | ||
| 1913 | |||
| 1867 | "@types/source-list-map@*": | 1914 | "@types/source-list-map@*": |
| 1868 | version "0.1.2" | 1915 | version "0.1.2" |
| 1869 | resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" | 1916 | resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" |
| @@ -2477,12 +2524,17 @@ array.prototype.flatmap@^1.2.4: | |||
| 2477 | es-abstract "^1.18.0-next.1" | 2524 | es-abstract "^1.18.0-next.1" |
| 2478 | function-bind "^1.1.1" | 2525 | function-bind "^1.1.1" |
| 2479 | 2526 | ||
| 2527 | arrify@^1.0.1: | ||
| 2528 | version "1.0.1" | ||
| 2529 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" | ||
| 2530 | integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= | ||
| 2531 | |||
| 2480 | arrify@^2.0.1: | 2532 | arrify@^2.0.1: |
| 2481 | version "2.0.1" | 2533 | version "2.0.1" |
| 2482 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" | 2534 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" |
| 2483 | integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== | 2535 | integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== |
| 2484 | 2536 | ||
| 2485 | asap@~2.0.6: | 2537 | asap@~2.0.3, asap@~2.0.6: |
| 2486 | version "2.0.6" | 2538 | version "2.0.6" |
| 2487 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" | 2539 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" |
| 2488 | integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= | 2540 | integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= |
| @@ -2871,6 +2923,11 @@ boolbase@^1.0.0, boolbase@~1.0.0: | |||
| 2871 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" | 2923 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" |
| 2872 | integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= | 2924 | integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= |
| 2873 | 2925 | ||
| 2926 | bowser@^1.7.3: | ||
| 2927 | version "1.9.4" | ||
| 2928 | resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a" | ||
| 2929 | integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== | ||
| 2930 | |||
| 2874 | brace-expansion@^1.1.7: | 2931 | brace-expansion@^1.1.7: |
| 2875 | version "1.1.11" | 2932 | version "1.1.11" |
| 2876 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" | 2933 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" |
| @@ -3293,6 +3350,11 @@ class-utils@^0.3.5: | |||
| 3293 | isobject "^3.0.0" | 3350 | isobject "^3.0.0" |
| 3294 | static-extend "^0.1.1" | 3351 | static-extend "^0.1.1" |
| 3295 | 3352 | ||
| 3353 | classnames@^2.2.6: | ||
| 3354 | version "2.3.1" | ||
| 3355 | resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" | ||
| 3356 | integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== | ||
| 3357 | |||
| 3296 | clean-css@^4.2.3: | 3358 | clean-css@^4.2.3: |
| 3297 | version "4.2.3" | 3359 | version "4.2.3" |
| 3298 | resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" | 3360 | resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" |
| @@ -3454,6 +3516,11 @@ compression@^1.7.4: | |||
| 3454 | safe-buffer "5.1.2" | 3516 | safe-buffer "5.1.2" |
| 3455 | vary "~1.1.2" | 3517 | vary "~1.1.2" |
| 3456 | 3518 | ||
| 3519 | compute-scroll-into-view@^1.0.14: | ||
| 3520 | version "1.0.17" | ||
| 3521 | resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" | ||
| 3522 | integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== | ||
| 3523 | |||
| 3457 | concat-map@0.0.1: | 3524 | concat-map@0.0.1: |
| 3458 | version "0.0.1" | 3525 | version "0.0.1" |
| 3459 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" | 3526 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" |
| @@ -3560,6 +3627,11 @@ core-js-pure@^3.15.0: | |||
| 3560 | resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.15.0.tgz#c19349ae0be197b8bcf304acf4d91c5e29ae2091" | 3627 | resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.15.0.tgz#c19349ae0be197b8bcf304acf4d91c5e29ae2091" |
| 3561 | integrity sha512-RO+LFAso8DB6OeBX9BAcEGvyth36QtxYon1OyVsITNVtSKr/Hos0BXZwnsOJ7o+O6KHtK+O+cJIEj9NGg6VwFA== | 3628 | integrity sha512-RO+LFAso8DB6OeBX9BAcEGvyth36QtxYon1OyVsITNVtSKr/Hos0BXZwnsOJ7o+O6KHtK+O+cJIEj9NGg6VwFA== |
| 3562 | 3629 | ||
| 3630 | core-js@^1.0.0: | ||
| 3631 | version "1.2.7" | ||
| 3632 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" | ||
| 3633 | integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= | ||
| 3634 | |||
| 3563 | core-js@^2.4.0: | 3635 | core-js@^2.4.0: |
| 3564 | version "2.6.12" | 3636 | version "2.6.12" |
| 3565 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" | 3637 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" |
| @@ -3708,6 +3780,14 @@ css-has-pseudo@^0.10.0: | |||
| 3708 | postcss "^7.0.6" | 3780 | postcss "^7.0.6" |
| 3709 | postcss-selector-parser "^5.0.0-rc.4" | 3781 | postcss-selector-parser "^5.0.0-rc.4" |
| 3710 | 3782 | ||
| 3783 | css-in-js-utils@^2.0.0: | ||
| 3784 | version "2.0.1" | ||
| 3785 | resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" | ||
| 3786 | integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== | ||
| 3787 | dependencies: | ||
| 3788 | hyphenate-style-name "^1.0.2" | ||
| 3789 | isobject "^3.0.1" | ||
| 3790 | |||
| 3711 | css-loader@4.3.0: | 3791 | css-loader@4.3.0: |
| 3712 | version "4.3.0" | 3792 | version "4.3.0" |
| 3713 | resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" | 3793 | resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" |
| @@ -3916,6 +3996,11 @@ cssstyle@^2.3.0: | |||
| 3916 | dependencies: | 3996 | dependencies: |
| 3917 | cssom "~0.3.6" | 3997 | cssom "~0.3.6" |
| 3918 | 3998 | ||
| 3999 | csstype@^3.0.2: | ||
| 4000 | version "3.0.8" | ||
| 4001 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" | ||
| 4002 | integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== | ||
| 4003 | |||
| 3919 | cyclist@^1.0.1: | 4004 | cyclist@^1.0.1: |
| 3920 | version "1.0.1" | 4005 | version "1.0.1" |
| 3921 | resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" | 4006 | resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" |
| @@ -4164,6 +4249,14 @@ dom-converter@^0.2.0: | |||
| 4164 | dependencies: | 4249 | dependencies: |
| 4165 | utila "~0.4" | 4250 | utila "~0.4" |
| 4166 | 4251 | ||
| 4252 | dom-helpers@^5.0.1: | ||
| 4253 | version "5.2.1" | ||
| 4254 | resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" | ||
| 4255 | integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== | ||
| 4256 | dependencies: | ||
| 4257 | "@babel/runtime" "^7.8.7" | ||
| 4258 | csstype "^3.0.2" | ||
| 4259 | |||
| 4167 | dom-serializer@0: | 4260 | dom-serializer@0: |
| 4168 | version "0.2.2" | 4261 | version "0.2.2" |
| 4169 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" | 4262 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" |
| @@ -4252,6 +4345,16 @@ dotenv@8.2.0: | |||
| 4252 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" | 4345 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" |
| 4253 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== | 4346 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== |
| 4254 | 4347 | ||
| 4348 | downshift@^5.2.0: | ||
| 4349 | version "5.4.7" | ||
| 4350 | resolved "https://registry.yarnpkg.com/downshift/-/downshift-5.4.7.tgz#2ab7b0512cad33011ee6f29630f9a7bb74dff2b5" | ||
| 4351 | integrity sha512-xaH0RNqwJ5pAsyk9qBmR9XJWmg1OOWMfrhzYv0NH2NjJxn77S3zBcfClw341UfhGyKg5v+qVqg/CQzvAgBNCXQ== | ||
| 4352 | dependencies: | ||
| 4353 | "@babel/runtime" "^7.10.2" | ||
| 4354 | compute-scroll-into-view "^1.0.14" | ||
| 4355 | prop-types "^15.7.2" | ||
| 4356 | react-is "^16.13.1" | ||
| 4357 | |||
| 4255 | duplexer@^0.1.1: | 4358 | duplexer@^0.1.1: |
| 4256 | version "0.1.2" | 4359 | version "0.1.2" |
| 4257 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" | 4360 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" |
| @@ -4330,6 +4433,13 @@ encodeurl@~1.0.2: | |||
| 4330 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" | 4433 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" |
| 4331 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= | 4434 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= |
| 4332 | 4435 | ||
| 4436 | encoding@^0.1.11: | ||
| 4437 | version "0.1.13" | ||
| 4438 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" | ||
| 4439 | integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== | ||
| 4440 | dependencies: | ||
| 4441 | iconv-lite "^0.6.2" | ||
| 4442 | |||
| 4333 | end-of-stream@^1.0.0, end-of-stream@^1.1.0: | 4443 | end-of-stream@^1.0.0, end-of-stream@^1.1.0: |
| 4334 | version "1.4.4" | 4444 | version "1.4.4" |
| 4335 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" | 4445 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" |
| @@ -4751,6 +4861,28 @@ eventsource@^1.0.7: | |||
| 4751 | dependencies: | 4861 | dependencies: |
| 4752 | original "^1.0.0" | 4862 | original "^1.0.0" |
| 4753 | 4863 | ||
| 4864 | evergreen-ui@^6.3.0: | ||
| 4865 | version "6.3.0" | ||
| 4866 | resolved "https://registry.yarnpkg.com/evergreen-ui/-/evergreen-ui-6.3.0.tgz#a47a5c0a926a82b3b59bc6ca1d71591507426b70" | ||
| 4867 | integrity sha512-r6JmbEwiIP+AIDcfUP5t+fiw9zcNQqOFJLVMz7syhpr31Cty7nODR1vHlwJ7BA9OcZLcho3xOMgO6atdu2zCVw== | ||
| 4868 | dependencies: | ||
| 4869 | "@babel/runtime" "^7.1.2" | ||
| 4870 | "@segment/react-tiny-virtual-list" "^2.2.1" | ||
| 4871 | "@types/react" "^16.9.5" | ||
| 4872 | "@types/react-transition-group" "^4.4.0" | ||
| 4873 | arrify "^1.0.1" | ||
| 4874 | classnames "^2.2.6" | ||
| 4875 | downshift "^5.2.0" | ||
| 4876 | fuzzaldrin-plus "^0.6.0" | ||
| 4877 | glamor "^2.20.40" | ||
| 4878 | lodash.debounce "^4.0.8" | ||
| 4879 | lodash.merge "^4.6.2" | ||
| 4880 | prop-types "^15.6.2" | ||
| 4881 | react-fast-compare "^3.2.0" | ||
| 4882 | react-transition-group "^4.4.1" | ||
| 4883 | tinycolor2 "^1.4.1" | ||
| 4884 | ui-box "^5.0.0" | ||
| 4885 | |||
| 4754 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: | 4886 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: |
| 4755 | version "1.0.3" | 4887 | version "1.0.3" |
| 4756 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" | 4888 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" |
| @@ -4942,6 +5074,19 @@ fb-watchman@^2.0.0: | |||
| 4942 | dependencies: | 5074 | dependencies: |
| 4943 | bser "2.1.1" | 5075 | bser "2.1.1" |
| 4944 | 5076 | ||
| 5077 | fbjs@^0.8.12: | ||
| 5078 | version "0.8.17" | ||
| 5079 | resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" | ||
| 5080 | integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= | ||
| 5081 | dependencies: | ||
| 5082 | core-js "^1.0.0" | ||
| 5083 | isomorphic-fetch "^2.1.1" | ||
| 5084 | loose-envify "^1.0.0" | ||
| 5085 | object-assign "^4.1.0" | ||
| 5086 | promise "^7.1.1" | ||
| 5087 | setimmediate "^1.0.5" | ||
| 5088 | ua-parser-js "^0.7.18" | ||
| 5089 | |||
| 4945 | figgy-pudding@^3.5.1: | 5090 | figgy-pudding@^3.5.1: |
| 4946 | version "3.5.2" | 5091 | version "3.5.2" |
| 4947 | resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" | 5092 | resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" |
| @@ -5198,6 +5343,11 @@ functional-red-black-tree@^1.0.1: | |||
| 5198 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" | 5343 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" |
| 5199 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= | 5344 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= |
| 5200 | 5345 | ||
| 5346 | fuzzaldrin-plus@^0.6.0: | ||
| 5347 | version "0.6.0" | ||
| 5348 | resolved "https://registry.yarnpkg.com/fuzzaldrin-plus/-/fuzzaldrin-plus-0.6.0.tgz#832f6489fbe876769459599c914a670ec22947ee" | ||
| 5349 | integrity sha1-gy9kifvodnaUWVmckUpnDsIpR+4= | ||
| 5350 | |||
| 5201 | gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: | 5351 | gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: |
| 5202 | version "1.0.0-beta.2" | 5352 | version "1.0.0-beta.2" |
| 5203 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" | 5353 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" |
| @@ -5246,6 +5396,17 @@ get-value@^2.0.3, get-value@^2.0.6: | |||
| 5246 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" | 5396 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" |
| 5247 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= | 5397 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= |
| 5248 | 5398 | ||
| 5399 | glamor@^2.20.40: | ||
| 5400 | version "2.20.40" | ||
| 5401 | resolved "https://registry.yarnpkg.com/glamor/-/glamor-2.20.40.tgz#f606660357b7cf18dface731ad1a2cfa93817f05" | ||
| 5402 | integrity sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA== | ||
| 5403 | dependencies: | ||
| 5404 | fbjs "^0.8.12" | ||
| 5405 | inline-style-prefixer "^3.0.6" | ||
| 5406 | object-assign "^4.1.1" | ||
| 5407 | prop-types "^15.5.10" | ||
| 5408 | through "^2.3.8" | ||
| 5409 | |||
| 5249 | glob-parent@^3.1.0: | 5410 | glob-parent@^3.1.0: |
| 5250 | version "3.1.0" | 5411 | version "3.1.0" |
| 5251 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" | 5412 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" |
| @@ -5643,6 +5804,11 @@ husky@^7.0.1: | |||
| 5643 | resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.1.tgz#579f4180b5da4520263e8713cc832942b48e1f1c" | 5804 | resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.1.tgz#579f4180b5da4520263e8713cc832942b48e1f1c" |
| 5644 | integrity sha512-gceRaITVZ+cJH9sNHqx5tFwbzlLCVxtVZcusME8JYQ8Edy5mpGDOqD8QBCdMhpyo9a+JXddnujQ4rpY2Ff9SJA== | 5805 | integrity sha512-gceRaITVZ+cJH9sNHqx5tFwbzlLCVxtVZcusME8JYQ8Edy5mpGDOqD8QBCdMhpyo9a+JXddnujQ4rpY2Ff9SJA== |
| 5645 | 5806 | ||
| 5807 | hyphenate-style-name@^1.0.2: | ||
| 5808 | version "1.0.4" | ||
| 5809 | resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" | ||
| 5810 | integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== | ||
| 5811 | |||
| 5646 | i18next-browser-languagedetector@^6.1.2: | 5812 | i18next-browser-languagedetector@^6.1.2: |
| 5647 | version "6.1.2" | 5813 | version "6.1.2" |
| 5648 | resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.2.tgz#68565a28b929cbc98ab6a56826ef2faf0e927ff8" | 5814 | resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.2.tgz#68565a28b929cbc98ab6a56826ef2faf0e927ff8" |
| @@ -5664,6 +5830,13 @@ iconv-lite@0.4.24: | |||
| 5664 | dependencies: | 5830 | dependencies: |
| 5665 | safer-buffer ">= 2.1.2 < 3" | 5831 | safer-buffer ">= 2.1.2 < 3" |
| 5666 | 5832 | ||
| 5833 | iconv-lite@^0.6.2: | ||
| 5834 | version "0.6.3" | ||
| 5835 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" | ||
| 5836 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== | ||
| 5837 | dependencies: | ||
| 5838 | safer-buffer ">= 2.1.2 < 3.0.0" | ||
| 5839 | |||
| 5667 | icss-utils@^4.0.0, icss-utils@^4.1.1: | 5840 | icss-utils@^4.0.0, icss-utils@^4.1.1: |
| 5668 | version "4.1.1" | 5841 | version "4.1.1" |
| 5669 | resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" | 5842 | resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" |
| @@ -5797,6 +5970,21 @@ ini@^1.3.5: | |||
| 5797 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" | 5970 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" |
| 5798 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== | 5971 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== |
| 5799 | 5972 | ||
| 5973 | inline-style-prefixer@^3.0.6: | ||
| 5974 | version "3.0.8" | ||
| 5975 | resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz#8551b8e5b4d573244e66a34b04f7d32076a2b534" | ||
| 5976 | integrity sha1-hVG45bTVcyROZqNLBPfTIHaitTQ= | ||
| 5977 | dependencies: | ||
| 5978 | bowser "^1.7.3" | ||
| 5979 | css-in-js-utils "^2.0.0" | ||
| 5980 | |||
| 5981 | inline-style-prefixer@^5.0.4: | ||
| 5982 | version "5.1.2" | ||
| 5983 | resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-5.1.2.tgz#e5a5a3515e25600e016b71e39138971228486c33" | ||
| 5984 | integrity sha512-PYUF+94gDfhy+LsQxM0g3d6Hge4l1pAqOSOiZuHWzMvQEGsbRQ/ck2WioLqrY2ZkHyPgVUXxn+hrkF7D6QUGbA== | ||
| 5985 | dependencies: | ||
| 5986 | css-in-js-utils "^2.0.0" | ||
| 5987 | |||
| 5800 | internal-ip@^4.3.0: | 5988 | internal-ip@^4.3.0: |
| 5801 | version "4.3.0" | 5989 | version "4.3.0" |
| 5802 | resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" | 5990 | resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" |
| @@ -6121,7 +6309,7 @@ is-root@2.1.0: | |||
| 6121 | resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" | 6309 | resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" |
| 6122 | integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== | 6310 | integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== |
| 6123 | 6311 | ||
| 6124 | is-stream@^1.1.0: | 6312 | is-stream@^1.0.1, is-stream@^1.1.0: |
| 6125 | version "1.1.0" | 6313 | version "1.1.0" |
| 6126 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" | 6314 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" |
| 6127 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= | 6315 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= |
| @@ -6187,6 +6375,14 @@ isobject@^3.0.0, isobject@^3.0.1: | |||
| 6187 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" | 6375 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" |
| 6188 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= | 6376 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= |
| 6189 | 6377 | ||
| 6378 | isomorphic-fetch@^2.1.1: | ||
| 6379 | version "2.2.1" | ||
| 6380 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" | ||
| 6381 | integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= | ||
| 6382 | dependencies: | ||
| 6383 | node-fetch "^1.0.1" | ||
| 6384 | whatwg-fetch ">=0.10.0" | ||
| 6385 | |||
| 6190 | istanbul-lib-coverage@^3.0.0: | 6386 | istanbul-lib-coverage@^3.0.0: |
| 6191 | version "3.0.0" | 6387 | version "3.0.0" |
| 6192 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" | 6388 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" |
| @@ -6997,7 +7193,7 @@ loglevel@^1.6.8: | |||
| 6997 | resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" | 7193 | resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" |
| 6998 | integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== | 7194 | integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== |
| 6999 | 7195 | ||
| 7000 | loose-envify@^1.1.0, loose-envify@^1.4.0: | 7196 | loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: |
| 7001 | version "1.4.0" | 7197 | version "1.4.0" |
| 7002 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" | 7198 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" |
| 7003 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== | 7199 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== |
| @@ -7419,6 +7615,14 @@ no-case@^3.0.4: | |||
| 7419 | lower-case "^2.0.2" | 7615 | lower-case "^2.0.2" |
| 7420 | tslib "^2.0.3" | 7616 | tslib "^2.0.3" |
| 7421 | 7617 | ||
| 7618 | node-fetch@^1.0.1: | ||
| 7619 | version "1.7.3" | ||
| 7620 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" | ||
| 7621 | integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== | ||
| 7622 | dependencies: | ||
| 7623 | encoding "^0.1.11" | ||
| 7624 | is-stream "^1.0.1" | ||
| 7625 | |||
| 7422 | node-forge@^0.10.0: | 7626 | node-forge@^0.10.0: |
| 7423 | version "0.10.0" | 7627 | version "0.10.0" |
| 7424 | resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" | 7628 | resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" |
| @@ -8809,6 +9013,13 @@ promise-inflight@^1.0.1: | |||
| 8809 | resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" | 9013 | resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" |
| 8810 | integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= | 9014 | integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= |
| 8811 | 9015 | ||
| 9016 | promise@^7.1.1: | ||
| 9017 | version "7.3.1" | ||
| 9018 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" | ||
| 9019 | integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== | ||
| 9020 | dependencies: | ||
| 9021 | asap "~2.0.3" | ||
| 9022 | |||
| 8812 | promise@^8.1.0: | 9023 | promise@^8.1.0: |
| 8813 | version "8.1.0" | 9024 | version "8.1.0" |
| 8814 | resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" | 9025 | resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" |
| @@ -8832,7 +9043,7 @@ prompts@^2.0.1: | |||
| 8832 | kleur "^3.0.3" | 9043 | kleur "^3.0.3" |
| 8833 | sisteransi "^1.0.5" | 9044 | sisteransi "^1.0.5" |
| 8834 | 9045 | ||
| 8835 | prop-types@^15.6.0, prop-types@^15.7.2: | 9046 | prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: |
| 8836 | version "15.7.2" | 9047 | version "15.7.2" |
| 8837 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" | 9048 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" |
| 8838 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== | 9049 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== |
| @@ -9061,6 +9272,11 @@ react-error-overlay@^6.0.9: | |||
| 9061 | resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" | 9272 | resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" |
| 9062 | integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== | 9273 | integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== |
| 9063 | 9274 | ||
| 9275 | react-fast-compare@^3.2.0: | ||
| 9276 | version "3.2.0" | ||
| 9277 | resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" | ||
| 9278 | integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== | ||
| 9279 | |||
| 9064 | react-i18next@^11.11.4: | 9280 | react-i18next@^11.11.4: |
| 9065 | version "11.11.4" | 9281 | version "11.11.4" |
| 9066 | resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.11.4.tgz#f6f9a1c827e7a5271377de2bf14db04cb1c9e5ce" | 9282 | resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.11.4.tgz#f6f9a1c827e7a5271377de2bf14db04cb1c9e5ce" |
| @@ -9069,7 +9285,7 @@ react-i18next@^11.11.4: | |||
| 9069 | "@babel/runtime" "^7.14.5" | 9285 | "@babel/runtime" "^7.14.5" |
| 9070 | html-parse-stringify "^3.0.1" | 9286 | html-parse-stringify "^3.0.1" |
| 9071 | 9287 | ||
| 9072 | react-is@^16.8.1: | 9288 | react-is@^16.13.1, react-is@^16.8.1: |
| 9073 | version "16.13.1" | 9289 | version "16.13.1" |
| 9074 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" | 9290 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" |
| 9075 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== | 9291 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== |
| @@ -9150,6 +9366,16 @@ react-scripts@^4.0.3: | |||
| 9150 | optionalDependencies: | 9366 | optionalDependencies: |
| 9151 | fsevents "^2.1.3" | 9367 | fsevents "^2.1.3" |
| 9152 | 9368 | ||
| 9369 | react-transition-group@^4.4.1: | ||
| 9370 | version "4.4.2" | ||
| 9371 | resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" | ||
| 9372 | integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== | ||
| 9373 | dependencies: | ||
| 9374 | "@babel/runtime" "^7.5.5" | ||
| 9375 | dom-helpers "^5.0.1" | ||
| 9376 | loose-envify "^1.4.0" | ||
| 9377 | prop-types "^15.6.2" | ||
| 9378 | |||
| 9153 | react@^17.0.2: | 9379 | react@^17.0.2: |
| 9154 | version "17.0.2" | 9380 | version "17.0.2" |
| 9155 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" | 9381 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" |
| @@ -9582,7 +9808,7 @@ safe-regex@^1.1.0: | |||
| 9582 | dependencies: | 9808 | dependencies: |
| 9583 | ret "~0.1.10" | 9809 | ret "~0.1.10" |
| 9584 | 9810 | ||
| 9585 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: | 9811 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: |
| 9586 | version "2.1.2" | 9812 | version "2.1.2" |
| 9587 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" | 9813 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" |
| 9588 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== | 9814 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== |
| @@ -9775,7 +10001,7 @@ set-value@^2.0.0, set-value@^2.0.1: | |||
| 9775 | is-plain-object "^2.0.3" | 10001 | is-plain-object "^2.0.3" |
| 9776 | split-string "^3.0.1" | 10002 | split-string "^3.0.1" |
| 9777 | 10003 | ||
| 9778 | setimmediate@^1.0.4: | 10004 | setimmediate@^1.0.4, setimmediate@^1.0.5: |
| 9779 | version "1.0.5" | 10005 | version "1.0.5" |
| 9780 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" | 10006 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" |
| 9781 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= | 10007 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= |
| @@ -10480,6 +10706,11 @@ through2@^2.0.0: | |||
| 10480 | readable-stream "~2.3.6" | 10706 | readable-stream "~2.3.6" |
| 10481 | xtend "~4.0.1" | 10707 | xtend "~4.0.1" |
| 10482 | 10708 | ||
| 10709 | through@^2.3.8: | ||
| 10710 | version "2.3.8" | ||
| 10711 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" | ||
| 10712 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= | ||
| 10713 | |||
| 10483 | thunky@^1.0.2: | 10714 | thunky@^1.0.2: |
| 10484 | version "1.1.0" | 10715 | version "1.1.0" |
| 10485 | resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" | 10716 | resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" |
| @@ -10497,6 +10728,11 @@ timsort@^0.3.0: | |||
| 10497 | resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" | 10728 | resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" |
| 10498 | integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= | 10729 | integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= |
| 10499 | 10730 | ||
| 10731 | tinycolor2@^1.4.1: | ||
| 10732 | version "1.4.2" | ||
| 10733 | resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" | ||
| 10734 | integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== | ||
| 10735 | |||
| 10500 | tmpl@1.0.x: | 10736 | tmpl@1.0.x: |
| 10501 | version "1.0.4" | 10737 | version "1.0.4" |
| 10502 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" | 10738 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" |
| @@ -10681,6 +10917,20 @@ typedarray@^0.0.6: | |||
| 10681 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" | 10917 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" |
| 10682 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= | 10918 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= |
| 10683 | 10919 | ||
| 10920 | ua-parser-js@^0.7.18: | ||
| 10921 | version "0.7.28" | ||
| 10922 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" | ||
| 10923 | integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== | ||
| 10924 | |||
| 10925 | ui-box@^5.0.0: | ||
| 10926 | version "5.0.0" | ||
| 10927 | resolved "https://registry.yarnpkg.com/ui-box/-/ui-box-5.0.0.tgz#8b73e81cc7a50cf53749b969d411e8f56a93af48" | ||
| 10928 | integrity sha512-DJZZKe8UoB1e6hNenNniO3ror9ER57EG5k+fOUm17vrLnU2T4vhoTnWGoStewXJzQ4Ur9ox9Xk4kljVKFpXlzQ== | ||
| 10929 | dependencies: | ||
| 10930 | "@emotion/hash" "^0.7.1" | ||
| 10931 | inline-style-prefixer "^5.0.4" | ||
| 10932 | prop-types "^15.7.2" | ||
| 10933 | |||
| 10684 | unbox-primitive@^1.0.1: | 10934 | unbox-primitive@^1.0.1: |
| 10685 | version "1.0.1" | 10935 | version "1.0.1" |
| 10686 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" | 10936 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" |
| @@ -11111,7 +11361,7 @@ whatwg-encoding@^1.0.5: | |||
| 11111 | dependencies: | 11361 | dependencies: |
| 11112 | iconv-lite "0.4.24" | 11362 | iconv-lite "0.4.24" |
| 11113 | 11363 | ||
| 11114 | whatwg-fetch@^3.4.1: | 11364 | whatwg-fetch@>=0.10.0, whatwg-fetch@^3.4.1: |
| 11115 | version "3.6.2" | 11365 | version "3.6.2" |
| 11116 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" | 11366 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" |
| 11117 | integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== | 11367 | integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== |
