├── .babelrc ├── .gitignore ├── example └── basic-usage │ ├── .eslintrc.json │ ├── .npmignore │ ├── .npmrc │ ├── components │ └── Header.js │ ├── license │ ├── package.json │ ├── pages │ ├── _app.js │ ├── group.js │ ├── index.js │ └── place.js │ ├── public │ ├── bg1.jpg │ ├── bg2.jpg │ ├── bg3.jpg │ ├── honolulu.jpg │ ├── img1.jpg │ ├── img2.jpg │ ├── peru.jpg │ ├── profile1.jpg │ ├── santorini.jpg │ ├── wf1.jpg │ ├── wf2.jpg │ ├── wf3.jpg │ └── wf4.jpg │ └── yarn.lock ├── lib ├── MorphTransition.js ├── index.js └── irrelon-morph.js ├── package-lock.json ├── package.json ├── readme.md └── src ├── MorphTransition.js ├── index.js └── irrelon-morph.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env", 4 | "@babel/preset-react" 5 | ], 6 | "plugins": [ 7 | "@babel/plugin-proposal-class-properties", 8 | "@babel/plugin-proposal-object-rest-spread" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | 25 | # Android/IntelliJ 26 | # 27 | .idea 28 | .gradle 29 | local.properties 30 | *.iml 31 | 32 | # node.js 33 | # 34 | node_modules/ 35 | npm-debug.log 36 | yarn-error.log 37 | 38 | # BUCK 39 | buck-out/ 40 | \.buckd/ 41 | *.keystore 42 | 43 | # fastlane 44 | # 45 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 46 | # screenshots whenever they are needed. 47 | # For more information about the recommended setup visit: 48 | # https://docs.fastlane.tools/best-practices/source-control/ 49 | 50 | */fastlane/report.xml 51 | */fastlane/Preview.html 52 | */fastlane/screenshots 53 | 54 | .next -------------------------------------------------------------------------------- /example/basic-usage/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /example/basic-usage/.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .next 3 | -------------------------------------------------------------------------------- /example/basic-usage/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /example/basic-usage/components/Header.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Link from "next/link"; 3 | 4 | function Header(props) { 5 | return ( 6 |
7 |
8 |
9 | 10 | Home 11 | 12 | 13 | My Places 14 | 15 | 16 | My Group 17 | 18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | 116 |
117 | ); 118 | } 119 | 120 | export default Header; -------------------------------------------------------------------------------- /example/basic-usage/license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Irrelon 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /example/basic-usage/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "basic-usage", 3 | "description": "Basic morphing example", 4 | "author": { 5 | "name": "Rob Evans - Irrelon Software Limited", 6 | "email": "rob@irrelon.com" 7 | }, 8 | "scripts": { 9 | "dev": "next dev", 10 | "build": "next build", 11 | "start": "next start", 12 | "lint": "next lint", 13 | "eslint": "eslint components/** pages/** *.js", 14 | "eslint-fix": "eslint components/** pages/** *.js --fix" 15 | }, 16 | "dependencies": { 17 | "eslint": "^8.9.0", 18 | "next": "12.1.0", 19 | "nextjs-morph-page": "^2.1.1", 20 | "react": "17.0.2", 21 | "react-dom": "17.0.2" 22 | }, 23 | "devDependencies": { 24 | "eslint-config-next": "12.1.0" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /example/basic-usage/pages/_app.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import MorphTransition from 'nextjs-morph-page'; 3 | import Header from "../components/Header"; 4 | 5 | function MyApp({Component, pageProps, router}) { 6 | return ( 7 | <> 8 | 9 | <> 10 |
11 | 12 | 13 | 14 | 65 | 66 | ); 67 | } 68 | 69 | export default MyApp; -------------------------------------------------------------------------------- /example/basic-usage/pages/group.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | function Group() { 4 | return ( 5 |
6 |
7 |
8 |
9 |
10 | 11 |
12 |
13 |
14 |
15 | 16 |
17 |
18 |
19 |
20 | 21 |
22 |
23 |
24 |
25 | 26 |
27 |
28 |
29 |
30 | 59 |
60 | ); 61 | } 62 | 63 | export default Group; -------------------------------------------------------------------------------- /example/basic-usage/pages/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | function Index() { 4 | return ( 5 |
6 |
7 |
8 |
9 |
10 |
11 | 12 |
13 |
14 |
15 |
16 | 17 |
18 |
19 |
20 |
21 | 22 |
23 |
24 |
25 |
26 | 27 |
28 |
29 |
30 |
31 |
32 |

Home

33 |
34 |
35 |

This is the home page. Here we have some really 36 | interested stuff about the user and whotnot.

37 |
38 |
39 |
40 |
41 | 59 |
60 | ); 61 | } 62 | 63 | export default Index; -------------------------------------------------------------------------------- /example/basic-usage/pages/place.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | function Place() { 4 | return ( 5 |
6 |
7 |
8 |
9 |
10 | 11 |
12 |
13 |
14 |
15 | 16 |
17 |
18 |
19 |
20 | 21 |
22 |
23 |
24 |
25 | 26 |
27 |
28 |
29 |
30 |
31 |
32 |

Places

33 |
34 |
35 |

Place page with some other text.

36 |
37 |
38 |
39 |
40 | 60 |
61 | ); 62 | } 63 | 64 | export default Place; -------------------------------------------------------------------------------- /example/basic-usage/public/bg1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/bg1.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/bg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/bg2.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/bg3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/bg3.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/honolulu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/honolulu.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/img1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/img1.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/img2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/img2.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/peru.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/peru.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/profile1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/profile1.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/santorini.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/santorini.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/wf1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/wf1.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/wf2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/wf2.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/wf3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/wf3.jpg -------------------------------------------------------------------------------- /example/basic-usage/public/wf4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Irrelon/nextjs-morph-page/d5aa2d8d209c7b0ce3c997edf1da822796da60b5/example/basic-usage/public/wf4.jpg -------------------------------------------------------------------------------- /example/basic-usage/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/runtime-corejs3@^7.10.2": 6 | version "7.17.2" 7 | resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz#fdca2cd05fba63388babe85d349b6801b008fd13" 8 | integrity sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg== 9 | dependencies: 10 | core-js-pure "^3.20.2" 11 | regenerator-runtime "^0.13.4" 12 | 13 | "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3": 14 | version "7.17.2" 15 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" 16 | integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== 17 | dependencies: 18 | regenerator-runtime "^0.13.4" 19 | 20 | "@eslint/eslintrc@^1.1.0": 21 | version "1.1.0" 22 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.1.0.tgz#583d12dbec5d4f22f333f9669f7d0b7c7815b4d3" 23 | integrity sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg== 24 | dependencies: 25 | ajv "^6.12.4" 26 | debug "^4.3.2" 27 | espree "^9.3.1" 28 | globals "^13.9.0" 29 | ignore "^4.0.6" 30 | import-fresh "^3.2.1" 31 | js-yaml "^4.1.0" 32 | minimatch "^3.0.4" 33 | strip-json-comments "^3.1.1" 34 | 35 | "@humanwhocodes/config-array@^0.9.2": 36 | version "0.9.5" 37 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" 38 | integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== 39 | dependencies: 40 | "@humanwhocodes/object-schema" "^1.2.1" 41 | debug "^4.1.1" 42 | minimatch "^3.0.4" 43 | 44 | "@humanwhocodes/object-schema@^1.2.1": 45 | version "1.2.1" 46 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 47 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 48 | 49 | "@next/env@12.1.0": 50 | version "12.1.0" 51 | resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.0.tgz#73713399399b34aa5a01771fb73272b55b22c314" 52 | integrity sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ== 53 | 54 | "@next/eslint-plugin-next@12.1.0": 55 | version "12.1.0" 56 | resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.0.tgz#32586a11378b3ffa5a93ac40a3c44ad99d70e95a" 57 | integrity sha512-WFiyvSM2G5cQmh32t/SiQuJ+I2O+FHVlK/RFw5b1565O2kEM/36EXncjt88Pa+X5oSc+1SS+tWxowWJd1lqI+g== 58 | dependencies: 59 | glob "7.1.7" 60 | 61 | "@next/swc-android-arm64@12.1.0": 62 | version "12.1.0" 63 | resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.0.tgz#865ba3a9afc204ff2bdeea49dd64d58705007a39" 64 | integrity sha512-/280MLdZe0W03stA69iL+v6I+J1ascrQ6FrXBlXGCsGzrfMaGr7fskMa0T5AhQIVQD4nA/46QQWxG//DYuFBcA== 65 | 66 | "@next/swc-darwin-arm64@12.1.0": 67 | version "12.1.0" 68 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.0.tgz#08e8b411b8accd095009ed12efbc2f1d4d547135" 69 | integrity sha512-R8vcXE2/iONJ1Unf5Ptqjk6LRW3bggH+8drNkkzH4FLEQkHtELhvcmJwkXcuipyQCsIakldAXhRbZmm3YN1vXg== 70 | 71 | "@next/swc-darwin-x64@12.1.0": 72 | version "12.1.0" 73 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.0.tgz#fcd684497a76e8feaca88db3c394480ff0b007cd" 74 | integrity sha512-ieAz0/J0PhmbZBB8+EA/JGdhRHBogF8BWaeqR7hwveb6SYEIJaDNQy0I+ZN8gF8hLj63bEDxJAs/cEhdnTq+ug== 75 | 76 | "@next/swc-linux-arm-gnueabihf@12.1.0": 77 | version "12.1.0" 78 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.0.tgz#9ec6380a27938a5799aaa6035c205b3c478468a7" 79 | integrity sha512-njUd9hpl6o6A5d08dC0cKAgXKCzm5fFtgGe6i0eko8IAdtAPbtHxtpre3VeSxdZvuGFh+hb0REySQP9T1ttkog== 80 | 81 | "@next/swc-linux-arm64-gnu@12.1.0": 82 | version "12.1.0" 83 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.0.tgz#7f4196dff1049cea479607c75b81033ae2dbd093" 84 | integrity sha512-OqangJLkRxVxMhDtcb7Qn1xjzFA3s50EIxY7mljbSCLybU+sByPaWAHY4px97ieOlr2y4S0xdPKkQ3BCAwyo6Q== 85 | 86 | "@next/swc-linux-arm64-musl@12.1.0": 87 | version "12.1.0" 88 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.0.tgz#b445f767569cdc2dddee785ca495e1a88c025566" 89 | integrity sha512-hB8cLSt4GdmOpcwRe2UzI5UWn6HHO/vLkr5OTuNvCJ5xGDwpPXelVkYW/0+C3g5axbDW2Tym4S+MQCkkH9QfWA== 90 | 91 | "@next/swc-linux-x64-gnu@12.1.0": 92 | version "12.1.0" 93 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.0.tgz#67610e9be4fbc987de7535f1bcb17e45fe12f90e" 94 | integrity sha512-OKO4R/digvrVuweSw/uBM4nSdyzsBV5EwkUeeG4KVpkIZEe64ZwRpnFB65bC6hGwxIBnTv5NMSnJ+0K/WmG78A== 95 | 96 | "@next/swc-linux-x64-musl@12.1.0": 97 | version "12.1.0" 98 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.0.tgz#ea19a23db08a9f2e34ac30401f774cf7d1669d31" 99 | integrity sha512-JohhgAHZvOD3rQY7tlp7NlmvtvYHBYgY0x5ZCecUT6eCCcl9lv6iV3nfu82ErkxNk1H893fqH0FUpznZ/H3pSw== 100 | 101 | "@next/swc-win32-arm64-msvc@12.1.0": 102 | version "12.1.0" 103 | resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.0.tgz#eadf054fc412085659b98e145435bbba200b5283" 104 | integrity sha512-T/3gIE6QEfKIJ4dmJk75v9hhNiYZhQYAoYm4iVo1TgcsuaKLFa+zMPh4056AHiG6n9tn2UQ1CFE8EoybEsqsSw== 105 | 106 | "@next/swc-win32-ia32-msvc@12.1.0": 107 | version "12.1.0" 108 | resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.0.tgz#68faeae10c89f698bf9d28759172b74c9c21bda1" 109 | integrity sha512-iwnKgHJdqhIW19H9PRPM9j55V6RdcOo6rX+5imx832BCWzkDbyomWnlzBfr6ByUYfhohb8QuH4hSGEikpPqI0Q== 110 | 111 | "@next/swc-win32-x64-msvc@12.1.0": 112 | version "12.1.0" 113 | resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.0.tgz#d27e7e76c87a460a4da99c5bfdb1618dcd6cd064" 114 | integrity sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg== 115 | 116 | "@nodelib/fs.scandir@2.1.5": 117 | version "2.1.5" 118 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 119 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 120 | dependencies: 121 | "@nodelib/fs.stat" "2.0.5" 122 | run-parallel "^1.1.9" 123 | 124 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 125 | version "2.0.5" 126 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 127 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 128 | 129 | "@nodelib/fs.walk@^1.2.3": 130 | version "1.2.8" 131 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 132 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 133 | dependencies: 134 | "@nodelib/fs.scandir" "2.1.5" 135 | fastq "^1.6.0" 136 | 137 | "@rushstack/eslint-patch@^1.0.8": 138 | version "1.1.0" 139 | resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.0.tgz#7f698254aadf921e48dda8c0a6b304026b8a9323" 140 | integrity sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A== 141 | 142 | "@types/json5@^0.0.29": 143 | version "0.0.29" 144 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" 145 | integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= 146 | 147 | "@typescript-eslint/parser@^5.0.0": 148 | version "5.12.1" 149 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.12.1.tgz#b090289b553b8aa0899740d799d0f96e6f49771b" 150 | integrity sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw== 151 | dependencies: 152 | "@typescript-eslint/scope-manager" "5.12.1" 153 | "@typescript-eslint/types" "5.12.1" 154 | "@typescript-eslint/typescript-estree" "5.12.1" 155 | debug "^4.3.2" 156 | 157 | "@typescript-eslint/scope-manager@5.12.1": 158 | version "5.12.1" 159 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz#58734fd45d2d1dec49641aacc075fba5f0968817" 160 | integrity sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ== 161 | dependencies: 162 | "@typescript-eslint/types" "5.12.1" 163 | "@typescript-eslint/visitor-keys" "5.12.1" 164 | 165 | "@typescript-eslint/types@5.12.1": 166 | version "5.12.1" 167 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.12.1.tgz#46a36a28ff4d946821b58fe5a73c81dc2e12aa89" 168 | integrity sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA== 169 | 170 | "@typescript-eslint/typescript-estree@5.12.1": 171 | version "5.12.1" 172 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz#6a9425b9c305bcbc38e2d1d9a24c08e15e02b722" 173 | integrity sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw== 174 | dependencies: 175 | "@typescript-eslint/types" "5.12.1" 176 | "@typescript-eslint/visitor-keys" "5.12.1" 177 | debug "^4.3.2" 178 | globby "^11.0.4" 179 | is-glob "^4.0.3" 180 | semver "^7.3.5" 181 | tsutils "^3.21.0" 182 | 183 | "@typescript-eslint/visitor-keys@5.12.1": 184 | version "5.12.1" 185 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz#f722da106c8f9695ae5640574225e45af3e52ec3" 186 | integrity sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A== 187 | dependencies: 188 | "@typescript-eslint/types" "5.12.1" 189 | eslint-visitor-keys "^3.0.0" 190 | 191 | acorn-jsx@^5.3.1: 192 | version "5.3.2" 193 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 194 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 195 | 196 | acorn@^8.7.0: 197 | version "8.7.0" 198 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" 199 | integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== 200 | 201 | ajv@^6.10.0, ajv@^6.12.4: 202 | version "6.12.6" 203 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 204 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 205 | dependencies: 206 | fast-deep-equal "^3.1.1" 207 | fast-json-stable-stringify "^2.0.0" 208 | json-schema-traverse "^0.4.1" 209 | uri-js "^4.2.2" 210 | 211 | ansi-regex@^5.0.1: 212 | version "5.0.1" 213 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 214 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 215 | 216 | ansi-styles@^4.1.0: 217 | version "4.3.0" 218 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 219 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 220 | dependencies: 221 | color-convert "^2.0.1" 222 | 223 | argparse@^2.0.1: 224 | version "2.0.1" 225 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 226 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 227 | 228 | aria-query@^4.2.2: 229 | version "4.2.2" 230 | resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" 231 | integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== 232 | dependencies: 233 | "@babel/runtime" "^7.10.2" 234 | "@babel/runtime-corejs3" "^7.10.2" 235 | 236 | array-includes@^3.1.3, array-includes@^3.1.4: 237 | version "3.1.4" 238 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" 239 | integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== 240 | dependencies: 241 | call-bind "^1.0.2" 242 | define-properties "^1.1.3" 243 | es-abstract "^1.19.1" 244 | get-intrinsic "^1.1.1" 245 | is-string "^1.0.7" 246 | 247 | array-union@^2.1.0: 248 | version "2.1.0" 249 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 250 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 251 | 252 | array.prototype.flat@^1.2.5: 253 | version "1.2.5" 254 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" 255 | integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== 256 | dependencies: 257 | call-bind "^1.0.2" 258 | define-properties "^1.1.3" 259 | es-abstract "^1.19.0" 260 | 261 | array.prototype.flatmap@^1.2.5: 262 | version "1.2.5" 263 | resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" 264 | integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== 265 | dependencies: 266 | call-bind "^1.0.0" 267 | define-properties "^1.1.3" 268 | es-abstract "^1.19.0" 269 | 270 | ast-types-flow@^0.0.7: 271 | version "0.0.7" 272 | resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" 273 | integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= 274 | 275 | axe-core@^4.3.5: 276 | version "4.4.1" 277 | resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" 278 | integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== 279 | 280 | axobject-query@^2.2.0: 281 | version "2.2.0" 282 | resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" 283 | integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== 284 | 285 | balanced-match@^1.0.0: 286 | version "1.0.2" 287 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 288 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 289 | 290 | brace-expansion@^1.1.7: 291 | version "1.1.11" 292 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 293 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 294 | dependencies: 295 | balanced-match "^1.0.0" 296 | concat-map "0.0.1" 297 | 298 | braces@^3.0.1: 299 | version "3.0.2" 300 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 301 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 302 | dependencies: 303 | fill-range "^7.0.1" 304 | 305 | call-bind@^1.0.0, call-bind@^1.0.2: 306 | version "1.0.2" 307 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 308 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 309 | dependencies: 310 | function-bind "^1.1.1" 311 | get-intrinsic "^1.0.2" 312 | 313 | callsites@^3.0.0: 314 | version "3.1.0" 315 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 316 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 317 | 318 | caniuse-lite@^1.0.30001283: 319 | version "1.0.30001312" 320 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" 321 | integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== 322 | 323 | chalk@^4.0.0: 324 | version "4.1.2" 325 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 326 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 327 | dependencies: 328 | ansi-styles "^4.1.0" 329 | supports-color "^7.1.0" 330 | 331 | color-convert@^2.0.1: 332 | version "2.0.1" 333 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 334 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 335 | dependencies: 336 | color-name "~1.1.4" 337 | 338 | color-name@~1.1.4: 339 | version "1.1.4" 340 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 341 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 342 | 343 | concat-map@0.0.1: 344 | version "0.0.1" 345 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 346 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 347 | 348 | core-js-pure@^3.20.2: 349 | version "3.21.1" 350 | resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" 351 | integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== 352 | 353 | cross-spawn@^7.0.2: 354 | version "7.0.3" 355 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 356 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 357 | dependencies: 358 | path-key "^3.1.0" 359 | shebang-command "^2.0.0" 360 | which "^2.0.1" 361 | 362 | damerau-levenshtein@^1.0.7: 363 | version "1.0.8" 364 | resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" 365 | integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== 366 | 367 | debug@^2.6.9: 368 | version "2.6.9" 369 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 370 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 371 | dependencies: 372 | ms "2.0.0" 373 | 374 | debug@^3.2.7: 375 | version "3.2.7" 376 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 377 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 378 | dependencies: 379 | ms "^2.1.1" 380 | 381 | debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: 382 | version "4.3.3" 383 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" 384 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 385 | dependencies: 386 | ms "2.1.2" 387 | 388 | deep-is@^0.1.3: 389 | version "0.1.4" 390 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 391 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 392 | 393 | define-properties@^1.1.3: 394 | version "1.1.3" 395 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 396 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 397 | dependencies: 398 | object-keys "^1.0.12" 399 | 400 | dir-glob@^3.0.1: 401 | version "3.0.1" 402 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 403 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 404 | dependencies: 405 | path-type "^4.0.0" 406 | 407 | doctrine@^2.1.0: 408 | version "2.1.0" 409 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 410 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 411 | dependencies: 412 | esutils "^2.0.2" 413 | 414 | doctrine@^3.0.0: 415 | version "3.0.0" 416 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 417 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 418 | dependencies: 419 | esutils "^2.0.2" 420 | 421 | dom-helpers@^3.4.0: 422 | version "3.4.0" 423 | resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" 424 | integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== 425 | dependencies: 426 | "@babel/runtime" "^7.1.2" 427 | 428 | emoji-regex@^9.2.2: 429 | version "9.2.2" 430 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 431 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 432 | 433 | es-abstract@^1.19.0, es-abstract@^1.19.1: 434 | version "1.19.1" 435 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" 436 | integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== 437 | dependencies: 438 | call-bind "^1.0.2" 439 | es-to-primitive "^1.2.1" 440 | function-bind "^1.1.1" 441 | get-intrinsic "^1.1.1" 442 | get-symbol-description "^1.0.0" 443 | has "^1.0.3" 444 | has-symbols "^1.0.2" 445 | internal-slot "^1.0.3" 446 | is-callable "^1.2.4" 447 | is-negative-zero "^2.0.1" 448 | is-regex "^1.1.4" 449 | is-shared-array-buffer "^1.0.1" 450 | is-string "^1.0.7" 451 | is-weakref "^1.0.1" 452 | object-inspect "^1.11.0" 453 | object-keys "^1.1.1" 454 | object.assign "^4.1.2" 455 | string.prototype.trimend "^1.0.4" 456 | string.prototype.trimstart "^1.0.4" 457 | unbox-primitive "^1.0.1" 458 | 459 | es-to-primitive@^1.2.1: 460 | version "1.2.1" 461 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 462 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 463 | dependencies: 464 | is-callable "^1.1.4" 465 | is-date-object "^1.0.1" 466 | is-symbol "^1.0.2" 467 | 468 | escape-string-regexp@^4.0.0: 469 | version "4.0.0" 470 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 471 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 472 | 473 | eslint-config-next@12.1.0: 474 | version "12.1.0" 475 | resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.0.tgz#8ace680dc5207e6ab6c915f3989adec122f582e7" 476 | integrity sha512-tBhuUgoDITcdcM7xFvensi9I5WTI4dnvH4ETGRg1U8ZKpXrZsWQFdOKIDzR3RLP5HR3xXrLviaMM4c3zVoE/pA== 477 | dependencies: 478 | "@next/eslint-plugin-next" "12.1.0" 479 | "@rushstack/eslint-patch" "^1.0.8" 480 | "@typescript-eslint/parser" "^5.0.0" 481 | eslint-import-resolver-node "^0.3.4" 482 | eslint-import-resolver-typescript "^2.4.0" 483 | eslint-plugin-import "^2.25.2" 484 | eslint-plugin-jsx-a11y "^6.5.1" 485 | eslint-plugin-react "^7.27.0" 486 | eslint-plugin-react-hooks "^4.3.0" 487 | 488 | eslint-import-resolver-node@^0.3.4, eslint-import-resolver-node@^0.3.6: 489 | version "0.3.6" 490 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" 491 | integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== 492 | dependencies: 493 | debug "^3.2.7" 494 | resolve "^1.20.0" 495 | 496 | eslint-import-resolver-typescript@^2.4.0: 497 | version "2.5.0" 498 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.5.0.tgz#07661966b272d14ba97f597b51e1a588f9722f0a" 499 | integrity sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ== 500 | dependencies: 501 | debug "^4.3.1" 502 | glob "^7.1.7" 503 | is-glob "^4.0.1" 504 | resolve "^1.20.0" 505 | tsconfig-paths "^3.9.0" 506 | 507 | eslint-module-utils@^2.7.2: 508 | version "2.7.3" 509 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" 510 | integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== 511 | dependencies: 512 | debug "^3.2.7" 513 | find-up "^2.1.0" 514 | 515 | eslint-plugin-import@^2.25.2: 516 | version "2.25.4" 517 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" 518 | integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== 519 | dependencies: 520 | array-includes "^3.1.4" 521 | array.prototype.flat "^1.2.5" 522 | debug "^2.6.9" 523 | doctrine "^2.1.0" 524 | eslint-import-resolver-node "^0.3.6" 525 | eslint-module-utils "^2.7.2" 526 | has "^1.0.3" 527 | is-core-module "^2.8.0" 528 | is-glob "^4.0.3" 529 | minimatch "^3.0.4" 530 | object.values "^1.1.5" 531 | resolve "^1.20.0" 532 | tsconfig-paths "^3.12.0" 533 | 534 | eslint-plugin-jsx-a11y@^6.5.1: 535 | version "6.5.1" 536 | resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" 537 | integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== 538 | dependencies: 539 | "@babel/runtime" "^7.16.3" 540 | aria-query "^4.2.2" 541 | array-includes "^3.1.4" 542 | ast-types-flow "^0.0.7" 543 | axe-core "^4.3.5" 544 | axobject-query "^2.2.0" 545 | damerau-levenshtein "^1.0.7" 546 | emoji-regex "^9.2.2" 547 | has "^1.0.3" 548 | jsx-ast-utils "^3.2.1" 549 | language-tags "^1.0.5" 550 | minimatch "^3.0.4" 551 | 552 | eslint-plugin-react-hooks@^4.3.0: 553 | version "4.3.0" 554 | resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172" 555 | integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== 556 | 557 | eslint-plugin-react@^7.27.0: 558 | version "7.28.0" 559 | resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz#8f3ff450677571a659ce76efc6d80b6a525adbdf" 560 | integrity sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw== 561 | dependencies: 562 | array-includes "^3.1.4" 563 | array.prototype.flatmap "^1.2.5" 564 | doctrine "^2.1.0" 565 | estraverse "^5.3.0" 566 | jsx-ast-utils "^2.4.1 || ^3.0.0" 567 | minimatch "^3.0.4" 568 | object.entries "^1.1.5" 569 | object.fromentries "^2.0.5" 570 | object.hasown "^1.1.0" 571 | object.values "^1.1.5" 572 | prop-types "^15.7.2" 573 | resolve "^2.0.0-next.3" 574 | semver "^6.3.0" 575 | string.prototype.matchall "^4.0.6" 576 | 577 | eslint-scope@^7.1.1: 578 | version "7.1.1" 579 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" 580 | integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== 581 | dependencies: 582 | esrecurse "^4.3.0" 583 | estraverse "^5.2.0" 584 | 585 | eslint-utils@^3.0.0: 586 | version "3.0.0" 587 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 588 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 589 | dependencies: 590 | eslint-visitor-keys "^2.0.0" 591 | 592 | eslint-visitor-keys@^2.0.0: 593 | version "2.1.0" 594 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 595 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 596 | 597 | eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: 598 | version "3.3.0" 599 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" 600 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== 601 | 602 | eslint@^8.9.0: 603 | version "8.9.0" 604 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.9.0.tgz#a2a8227a99599adc4342fd9b854cb8d8d6412fdb" 605 | integrity sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q== 606 | dependencies: 607 | "@eslint/eslintrc" "^1.1.0" 608 | "@humanwhocodes/config-array" "^0.9.2" 609 | ajv "^6.10.0" 610 | chalk "^4.0.0" 611 | cross-spawn "^7.0.2" 612 | debug "^4.3.2" 613 | doctrine "^3.0.0" 614 | escape-string-regexp "^4.0.0" 615 | eslint-scope "^7.1.1" 616 | eslint-utils "^3.0.0" 617 | eslint-visitor-keys "^3.3.0" 618 | espree "^9.3.1" 619 | esquery "^1.4.0" 620 | esutils "^2.0.2" 621 | fast-deep-equal "^3.1.3" 622 | file-entry-cache "^6.0.1" 623 | functional-red-black-tree "^1.0.1" 624 | glob-parent "^6.0.1" 625 | globals "^13.6.0" 626 | ignore "^5.2.0" 627 | import-fresh "^3.0.0" 628 | imurmurhash "^0.1.4" 629 | is-glob "^4.0.0" 630 | js-yaml "^4.1.0" 631 | json-stable-stringify-without-jsonify "^1.0.1" 632 | levn "^0.4.1" 633 | lodash.merge "^4.6.2" 634 | minimatch "^3.0.4" 635 | natural-compare "^1.4.0" 636 | optionator "^0.9.1" 637 | regexpp "^3.2.0" 638 | strip-ansi "^6.0.1" 639 | strip-json-comments "^3.1.0" 640 | text-table "^0.2.0" 641 | v8-compile-cache "^2.0.3" 642 | 643 | espree@^9.3.1: 644 | version "9.3.1" 645 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" 646 | integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== 647 | dependencies: 648 | acorn "^8.7.0" 649 | acorn-jsx "^5.3.1" 650 | eslint-visitor-keys "^3.3.0" 651 | 652 | esquery@^1.4.0: 653 | version "1.4.0" 654 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 655 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 656 | dependencies: 657 | estraverse "^5.1.0" 658 | 659 | esrecurse@^4.3.0: 660 | version "4.3.0" 661 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 662 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 663 | dependencies: 664 | estraverse "^5.2.0" 665 | 666 | estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: 667 | version "5.3.0" 668 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 669 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 670 | 671 | esutils@^2.0.2: 672 | version "2.0.3" 673 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 674 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 675 | 676 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 677 | version "3.1.3" 678 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 679 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 680 | 681 | fast-glob@^3.2.9: 682 | version "3.2.11" 683 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 684 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 685 | dependencies: 686 | "@nodelib/fs.stat" "^2.0.2" 687 | "@nodelib/fs.walk" "^1.2.3" 688 | glob-parent "^5.1.2" 689 | merge2 "^1.3.0" 690 | micromatch "^4.0.4" 691 | 692 | fast-json-stable-stringify@^2.0.0: 693 | version "2.1.0" 694 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 695 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 696 | 697 | fast-levenshtein@^2.0.6: 698 | version "2.0.6" 699 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 700 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 701 | 702 | fastq@^1.6.0: 703 | version "1.13.0" 704 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 705 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 706 | dependencies: 707 | reusify "^1.0.4" 708 | 709 | file-entry-cache@^6.0.1: 710 | version "6.0.1" 711 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 712 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 713 | dependencies: 714 | flat-cache "^3.0.4" 715 | 716 | fill-range@^7.0.1: 717 | version "7.0.1" 718 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 719 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 720 | dependencies: 721 | to-regex-range "^5.0.1" 722 | 723 | find-up@^2.1.0: 724 | version "2.1.0" 725 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 726 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 727 | dependencies: 728 | locate-path "^2.0.0" 729 | 730 | flat-cache@^3.0.4: 731 | version "3.0.4" 732 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 733 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 734 | dependencies: 735 | flatted "^3.1.0" 736 | rimraf "^3.0.2" 737 | 738 | flatted@^3.1.0: 739 | version "3.2.5" 740 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" 741 | integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== 742 | 743 | fs.realpath@^1.0.0: 744 | version "1.0.0" 745 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 746 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 747 | 748 | function-bind@^1.1.1: 749 | version "1.1.1" 750 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 751 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 752 | 753 | functional-red-black-tree@^1.0.1: 754 | version "1.0.1" 755 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 756 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 757 | 758 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: 759 | version "1.1.1" 760 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 761 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 762 | dependencies: 763 | function-bind "^1.1.1" 764 | has "^1.0.3" 765 | has-symbols "^1.0.1" 766 | 767 | get-symbol-description@^1.0.0: 768 | version "1.0.0" 769 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" 770 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== 771 | dependencies: 772 | call-bind "^1.0.2" 773 | get-intrinsic "^1.1.1" 774 | 775 | glob-parent@^5.1.2: 776 | version "5.1.2" 777 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 778 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 779 | dependencies: 780 | is-glob "^4.0.1" 781 | 782 | glob-parent@^6.0.1: 783 | version "6.0.2" 784 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 785 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 786 | dependencies: 787 | is-glob "^4.0.3" 788 | 789 | glob@7.1.7: 790 | version "7.1.7" 791 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 792 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 793 | dependencies: 794 | fs.realpath "^1.0.0" 795 | inflight "^1.0.4" 796 | inherits "2" 797 | minimatch "^3.0.4" 798 | once "^1.3.0" 799 | path-is-absolute "^1.0.0" 800 | 801 | glob@^7.1.3, glob@^7.1.7: 802 | version "7.2.0" 803 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 804 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 805 | dependencies: 806 | fs.realpath "^1.0.0" 807 | inflight "^1.0.4" 808 | inherits "2" 809 | minimatch "^3.0.4" 810 | once "^1.3.0" 811 | path-is-absolute "^1.0.0" 812 | 813 | globals@^13.6.0, globals@^13.9.0: 814 | version "13.12.1" 815 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" 816 | integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== 817 | dependencies: 818 | type-fest "^0.20.2" 819 | 820 | globby@^11.0.4: 821 | version "11.1.0" 822 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 823 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 824 | dependencies: 825 | array-union "^2.1.0" 826 | dir-glob "^3.0.1" 827 | fast-glob "^3.2.9" 828 | ignore "^5.2.0" 829 | merge2 "^1.4.1" 830 | slash "^3.0.0" 831 | 832 | has-bigints@^1.0.1: 833 | version "1.0.1" 834 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" 835 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== 836 | 837 | has-flag@^4.0.0: 838 | version "4.0.0" 839 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 840 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 841 | 842 | has-symbols@^1.0.1, has-symbols@^1.0.2: 843 | version "1.0.2" 844 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 845 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 846 | 847 | has-tostringtag@^1.0.0: 848 | version "1.0.0" 849 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 850 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 851 | dependencies: 852 | has-symbols "^1.0.2" 853 | 854 | has@^1.0.3: 855 | version "1.0.3" 856 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 857 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 858 | dependencies: 859 | function-bind "^1.1.1" 860 | 861 | ignore@^4.0.6: 862 | version "4.0.6" 863 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 864 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 865 | 866 | ignore@^5.2.0: 867 | version "5.2.0" 868 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 869 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 870 | 871 | import-fresh@^3.0.0, import-fresh@^3.2.1: 872 | version "3.3.0" 873 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 874 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 875 | dependencies: 876 | parent-module "^1.0.0" 877 | resolve-from "^4.0.0" 878 | 879 | imurmurhash@^0.1.4: 880 | version "0.1.4" 881 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 882 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 883 | 884 | inflight@^1.0.4: 885 | version "1.0.6" 886 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 887 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 888 | dependencies: 889 | once "^1.3.0" 890 | wrappy "1" 891 | 892 | inherits@2: 893 | version "2.0.4" 894 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 895 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 896 | 897 | internal-slot@^1.0.3: 898 | version "1.0.3" 899 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" 900 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== 901 | dependencies: 902 | get-intrinsic "^1.1.0" 903 | has "^1.0.3" 904 | side-channel "^1.0.4" 905 | 906 | is-bigint@^1.0.1: 907 | version "1.0.4" 908 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 909 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 910 | dependencies: 911 | has-bigints "^1.0.1" 912 | 913 | is-boolean-object@^1.1.0: 914 | version "1.1.2" 915 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 916 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 917 | dependencies: 918 | call-bind "^1.0.2" 919 | has-tostringtag "^1.0.0" 920 | 921 | is-callable@^1.1.4, is-callable@^1.2.4: 922 | version "1.2.4" 923 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" 924 | integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== 925 | 926 | is-core-module@^2.2.0, is-core-module@^2.8.0, is-core-module@^2.8.1: 927 | version "2.8.1" 928 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" 929 | integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== 930 | dependencies: 931 | has "^1.0.3" 932 | 933 | is-date-object@^1.0.1: 934 | version "1.0.5" 935 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 936 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 937 | dependencies: 938 | has-tostringtag "^1.0.0" 939 | 940 | is-extglob@^2.1.1: 941 | version "2.1.1" 942 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 943 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 944 | 945 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 946 | version "4.0.3" 947 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 948 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 949 | dependencies: 950 | is-extglob "^2.1.1" 951 | 952 | is-negative-zero@^2.0.1: 953 | version "2.0.2" 954 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" 955 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== 956 | 957 | is-number-object@^1.0.4: 958 | version "1.0.6" 959 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" 960 | integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== 961 | dependencies: 962 | has-tostringtag "^1.0.0" 963 | 964 | is-number@^7.0.0: 965 | version "7.0.0" 966 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 967 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 968 | 969 | is-regex@^1.1.4: 970 | version "1.1.4" 971 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 972 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 973 | dependencies: 974 | call-bind "^1.0.2" 975 | has-tostringtag "^1.0.0" 976 | 977 | is-shared-array-buffer@^1.0.1: 978 | version "1.0.1" 979 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" 980 | integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== 981 | 982 | is-string@^1.0.5, is-string@^1.0.7: 983 | version "1.0.7" 984 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 985 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 986 | dependencies: 987 | has-tostringtag "^1.0.0" 988 | 989 | is-symbol@^1.0.2, is-symbol@^1.0.3: 990 | version "1.0.4" 991 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 992 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 993 | dependencies: 994 | has-symbols "^1.0.2" 995 | 996 | is-weakref@^1.0.1: 997 | version "1.0.2" 998 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" 999 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== 1000 | dependencies: 1001 | call-bind "^1.0.2" 1002 | 1003 | isexe@^2.0.0: 1004 | version "2.0.0" 1005 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1006 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1007 | 1008 | "js-tokens@^3.0.0 || ^4.0.0": 1009 | version "4.0.0" 1010 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1011 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1012 | 1013 | js-yaml@^4.1.0: 1014 | version "4.1.0" 1015 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1016 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1017 | dependencies: 1018 | argparse "^2.0.1" 1019 | 1020 | json-schema-traverse@^0.4.1: 1021 | version "0.4.1" 1022 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1023 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1024 | 1025 | json-stable-stringify-without-jsonify@^1.0.1: 1026 | version "1.0.1" 1027 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1028 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1029 | 1030 | json5@^1.0.1: 1031 | version "1.0.1" 1032 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" 1033 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== 1034 | dependencies: 1035 | minimist "^1.2.0" 1036 | 1037 | "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: 1038 | version "3.2.1" 1039 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" 1040 | integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== 1041 | dependencies: 1042 | array-includes "^3.1.3" 1043 | object.assign "^4.1.2" 1044 | 1045 | language-subtag-registry@~0.3.2: 1046 | version "0.3.21" 1047 | resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" 1048 | integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== 1049 | 1050 | language-tags@^1.0.5: 1051 | version "1.0.5" 1052 | resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" 1053 | integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= 1054 | dependencies: 1055 | language-subtag-registry "~0.3.2" 1056 | 1057 | levn@^0.4.1: 1058 | version "0.4.1" 1059 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1060 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1061 | dependencies: 1062 | prelude-ls "^1.2.1" 1063 | type-check "~0.4.0" 1064 | 1065 | locate-path@^2.0.0: 1066 | version "2.0.0" 1067 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1068 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 1069 | dependencies: 1070 | p-locate "^2.0.0" 1071 | path-exists "^3.0.0" 1072 | 1073 | lodash.merge@^4.6.2: 1074 | version "4.6.2" 1075 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1076 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1077 | 1078 | loose-envify@^1.1.0, loose-envify@^1.4.0: 1079 | version "1.4.0" 1080 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1081 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1082 | dependencies: 1083 | js-tokens "^3.0.0 || ^4.0.0" 1084 | 1085 | lru-cache@^6.0.0: 1086 | version "6.0.0" 1087 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1088 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1089 | dependencies: 1090 | yallist "^4.0.0" 1091 | 1092 | merge2@^1.3.0, merge2@^1.4.1: 1093 | version "1.4.1" 1094 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1095 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1096 | 1097 | micromatch@^4.0.4: 1098 | version "4.0.4" 1099 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 1100 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 1101 | dependencies: 1102 | braces "^3.0.1" 1103 | picomatch "^2.2.3" 1104 | 1105 | minimatch@^3.0.4: 1106 | version "3.1.2" 1107 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1108 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1109 | dependencies: 1110 | brace-expansion "^1.1.7" 1111 | 1112 | minimist@^1.2.0: 1113 | version "1.2.5" 1114 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1115 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1116 | 1117 | ms@2.0.0: 1118 | version "2.0.0" 1119 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1120 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1121 | 1122 | ms@2.1.2: 1123 | version "2.1.2" 1124 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1125 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1126 | 1127 | ms@^2.1.1: 1128 | version "2.1.3" 1129 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1130 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1131 | 1132 | nanoid@^3.1.30: 1133 | version "3.3.1" 1134 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" 1135 | integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== 1136 | 1137 | natural-compare@^1.4.0: 1138 | version "1.4.0" 1139 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1140 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1141 | 1142 | next@12.1.0: 1143 | version "12.1.0" 1144 | resolved "https://registry.yarnpkg.com/next/-/next-12.1.0.tgz#c33d753b644be92fc58e06e5a214f143da61dd5d" 1145 | integrity sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q== 1146 | dependencies: 1147 | "@next/env" "12.1.0" 1148 | caniuse-lite "^1.0.30001283" 1149 | postcss "8.4.5" 1150 | styled-jsx "5.0.0" 1151 | use-subscription "1.5.1" 1152 | optionalDependencies: 1153 | "@next/swc-android-arm64" "12.1.0" 1154 | "@next/swc-darwin-arm64" "12.1.0" 1155 | "@next/swc-darwin-x64" "12.1.0" 1156 | "@next/swc-linux-arm-gnueabihf" "12.1.0" 1157 | "@next/swc-linux-arm64-gnu" "12.1.0" 1158 | "@next/swc-linux-arm64-musl" "12.1.0" 1159 | "@next/swc-linux-x64-gnu" "12.1.0" 1160 | "@next/swc-linux-x64-musl" "12.1.0" 1161 | "@next/swc-win32-arm64-msvc" "12.1.0" 1162 | "@next/swc-win32-ia32-msvc" "12.1.0" 1163 | "@next/swc-win32-x64-msvc" "12.1.0" 1164 | 1165 | nextjs-morph-page@^2.0.2: 1166 | version "2.0.3" 1167 | resolved "https://registry.yarnpkg.com/nextjs-morph-page/-/nextjs-morph-page-2.0.3.tgz#ffa8a6b468a0bc22f2cf13d8dc08fb37dd9ca165" 1168 | integrity sha512-pR//aLv3wIlSOmhTVpGiADh2RtJGalIIMtCYFXyJfTFuU/DIyzF8pz+x30pswgdnUBNcTw49oxJXHJ2+2cbQOQ== 1169 | dependencies: 1170 | prop-types "^15.6.2" 1171 | react "^16.6.3" 1172 | react-transition-group "^2.5.0" 1173 | 1174 | object-assign@^4.1.1: 1175 | version "4.1.1" 1176 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1177 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1178 | 1179 | object-inspect@^1.11.0, object-inspect@^1.9.0: 1180 | version "1.12.0" 1181 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" 1182 | integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== 1183 | 1184 | object-keys@^1.0.12, object-keys@^1.1.1: 1185 | version "1.1.1" 1186 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1187 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1188 | 1189 | object.assign@^4.1.2: 1190 | version "4.1.2" 1191 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 1192 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 1193 | dependencies: 1194 | call-bind "^1.0.0" 1195 | define-properties "^1.1.3" 1196 | has-symbols "^1.0.1" 1197 | object-keys "^1.1.1" 1198 | 1199 | object.entries@^1.1.5: 1200 | version "1.1.5" 1201 | resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" 1202 | integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== 1203 | dependencies: 1204 | call-bind "^1.0.2" 1205 | define-properties "^1.1.3" 1206 | es-abstract "^1.19.1" 1207 | 1208 | object.fromentries@^2.0.5: 1209 | version "2.0.5" 1210 | resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" 1211 | integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== 1212 | dependencies: 1213 | call-bind "^1.0.2" 1214 | define-properties "^1.1.3" 1215 | es-abstract "^1.19.1" 1216 | 1217 | object.hasown@^1.1.0: 1218 | version "1.1.0" 1219 | resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" 1220 | integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== 1221 | dependencies: 1222 | define-properties "^1.1.3" 1223 | es-abstract "^1.19.1" 1224 | 1225 | object.values@^1.1.5: 1226 | version "1.1.5" 1227 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" 1228 | integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== 1229 | dependencies: 1230 | call-bind "^1.0.2" 1231 | define-properties "^1.1.3" 1232 | es-abstract "^1.19.1" 1233 | 1234 | once@^1.3.0: 1235 | version "1.4.0" 1236 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1237 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1238 | dependencies: 1239 | wrappy "1" 1240 | 1241 | optionator@^0.9.1: 1242 | version "0.9.1" 1243 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1244 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1245 | dependencies: 1246 | deep-is "^0.1.3" 1247 | fast-levenshtein "^2.0.6" 1248 | levn "^0.4.1" 1249 | prelude-ls "^1.2.1" 1250 | type-check "^0.4.0" 1251 | word-wrap "^1.2.3" 1252 | 1253 | p-limit@^1.1.0: 1254 | version "1.3.0" 1255 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 1256 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 1257 | dependencies: 1258 | p-try "^1.0.0" 1259 | 1260 | p-locate@^2.0.0: 1261 | version "2.0.0" 1262 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1263 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 1264 | dependencies: 1265 | p-limit "^1.1.0" 1266 | 1267 | p-try@^1.0.0: 1268 | version "1.0.0" 1269 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1270 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 1271 | 1272 | parent-module@^1.0.0: 1273 | version "1.0.1" 1274 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1275 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1276 | dependencies: 1277 | callsites "^3.0.0" 1278 | 1279 | path-exists@^3.0.0: 1280 | version "3.0.0" 1281 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1282 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1283 | 1284 | path-is-absolute@^1.0.0: 1285 | version "1.0.1" 1286 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1287 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1288 | 1289 | path-key@^3.1.0: 1290 | version "3.1.1" 1291 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1292 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1293 | 1294 | path-parse@^1.0.6, path-parse@^1.0.7: 1295 | version "1.0.7" 1296 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1297 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1298 | 1299 | path-type@^4.0.0: 1300 | version "4.0.0" 1301 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1302 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1303 | 1304 | picocolors@^1.0.0: 1305 | version "1.0.0" 1306 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1307 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1308 | 1309 | picomatch@^2.2.3: 1310 | version "2.3.1" 1311 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1312 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1313 | 1314 | postcss@8.4.5: 1315 | version "8.4.5" 1316 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" 1317 | integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== 1318 | dependencies: 1319 | nanoid "^3.1.30" 1320 | picocolors "^1.0.0" 1321 | source-map-js "^1.0.1" 1322 | 1323 | prelude-ls@^1.2.1: 1324 | version "1.2.1" 1325 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1326 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1327 | 1328 | prop-types@^15.6.2, prop-types@^15.7.2: 1329 | version "15.8.1" 1330 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" 1331 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== 1332 | dependencies: 1333 | loose-envify "^1.4.0" 1334 | object-assign "^4.1.1" 1335 | react-is "^16.13.1" 1336 | 1337 | punycode@^2.1.0: 1338 | version "2.1.1" 1339 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1340 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1341 | 1342 | queue-microtask@^1.2.2: 1343 | version "1.2.3" 1344 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1345 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1346 | 1347 | react-dom@17.0.2: 1348 | version "17.0.2" 1349 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" 1350 | integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== 1351 | dependencies: 1352 | loose-envify "^1.1.0" 1353 | object-assign "^4.1.1" 1354 | scheduler "^0.20.2" 1355 | 1356 | react-is@^16.13.1: 1357 | version "16.13.1" 1358 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1359 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1360 | 1361 | react-lifecycles-compat@^3.0.4: 1362 | version "3.0.4" 1363 | resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" 1364 | integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== 1365 | 1366 | react-transition-group@^2.5.0: 1367 | version "2.9.0" 1368 | resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d" 1369 | integrity sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg== 1370 | dependencies: 1371 | dom-helpers "^3.4.0" 1372 | loose-envify "^1.4.0" 1373 | prop-types "^15.6.2" 1374 | react-lifecycles-compat "^3.0.4" 1375 | 1376 | react@17.0.2: 1377 | version "17.0.2" 1378 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" 1379 | integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== 1380 | dependencies: 1381 | loose-envify "^1.1.0" 1382 | object-assign "^4.1.1" 1383 | 1384 | react@^16.6.3: 1385 | version "16.14.0" 1386 | resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" 1387 | integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== 1388 | dependencies: 1389 | loose-envify "^1.1.0" 1390 | object-assign "^4.1.1" 1391 | prop-types "^15.6.2" 1392 | 1393 | regenerator-runtime@^0.13.4: 1394 | version "0.13.9" 1395 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" 1396 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== 1397 | 1398 | regexp.prototype.flags@^1.3.1: 1399 | version "1.4.1" 1400 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" 1401 | integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== 1402 | dependencies: 1403 | call-bind "^1.0.2" 1404 | define-properties "^1.1.3" 1405 | 1406 | regexpp@^3.2.0: 1407 | version "3.2.0" 1408 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1409 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1410 | 1411 | resolve-from@^4.0.0: 1412 | version "4.0.0" 1413 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1414 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1415 | 1416 | resolve@^1.20.0: 1417 | version "1.22.0" 1418 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 1419 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 1420 | dependencies: 1421 | is-core-module "^2.8.1" 1422 | path-parse "^1.0.7" 1423 | supports-preserve-symlinks-flag "^1.0.0" 1424 | 1425 | resolve@^2.0.0-next.3: 1426 | version "2.0.0-next.3" 1427 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" 1428 | integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== 1429 | dependencies: 1430 | is-core-module "^2.2.0" 1431 | path-parse "^1.0.6" 1432 | 1433 | reusify@^1.0.4: 1434 | version "1.0.4" 1435 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1436 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1437 | 1438 | rimraf@^3.0.2: 1439 | version "3.0.2" 1440 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1441 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1442 | dependencies: 1443 | glob "^7.1.3" 1444 | 1445 | run-parallel@^1.1.9: 1446 | version "1.2.0" 1447 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1448 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1449 | dependencies: 1450 | queue-microtask "^1.2.2" 1451 | 1452 | scheduler@^0.20.2: 1453 | version "0.20.2" 1454 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" 1455 | integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== 1456 | dependencies: 1457 | loose-envify "^1.1.0" 1458 | object-assign "^4.1.1" 1459 | 1460 | semver@^6.3.0: 1461 | version "6.3.0" 1462 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1463 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1464 | 1465 | semver@^7.3.5: 1466 | version "7.3.5" 1467 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 1468 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 1469 | dependencies: 1470 | lru-cache "^6.0.0" 1471 | 1472 | shebang-command@^2.0.0: 1473 | version "2.0.0" 1474 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1475 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1476 | dependencies: 1477 | shebang-regex "^3.0.0" 1478 | 1479 | shebang-regex@^3.0.0: 1480 | version "3.0.0" 1481 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1482 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1483 | 1484 | side-channel@^1.0.4: 1485 | version "1.0.4" 1486 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1487 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1488 | dependencies: 1489 | call-bind "^1.0.0" 1490 | get-intrinsic "^1.0.2" 1491 | object-inspect "^1.9.0" 1492 | 1493 | slash@^3.0.0: 1494 | version "3.0.0" 1495 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1496 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1497 | 1498 | source-map-js@^1.0.1: 1499 | version "1.0.2" 1500 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1501 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1502 | 1503 | string.prototype.matchall@^4.0.6: 1504 | version "4.0.6" 1505 | resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" 1506 | integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== 1507 | dependencies: 1508 | call-bind "^1.0.2" 1509 | define-properties "^1.1.3" 1510 | es-abstract "^1.19.1" 1511 | get-intrinsic "^1.1.1" 1512 | has-symbols "^1.0.2" 1513 | internal-slot "^1.0.3" 1514 | regexp.prototype.flags "^1.3.1" 1515 | side-channel "^1.0.4" 1516 | 1517 | string.prototype.trimend@^1.0.4: 1518 | version "1.0.4" 1519 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" 1520 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 1521 | dependencies: 1522 | call-bind "^1.0.2" 1523 | define-properties "^1.1.3" 1524 | 1525 | string.prototype.trimstart@^1.0.4: 1526 | version "1.0.4" 1527 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" 1528 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 1529 | dependencies: 1530 | call-bind "^1.0.2" 1531 | define-properties "^1.1.3" 1532 | 1533 | strip-ansi@^6.0.1: 1534 | version "6.0.1" 1535 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1536 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1537 | dependencies: 1538 | ansi-regex "^5.0.1" 1539 | 1540 | strip-bom@^3.0.0: 1541 | version "3.0.0" 1542 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1543 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 1544 | 1545 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1546 | version "3.1.1" 1547 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1548 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1549 | 1550 | styled-jsx@5.0.0: 1551 | version "5.0.0" 1552 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.0.tgz#816b4b92e07b1786c6b7111821750e0ba4d26e77" 1553 | integrity sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA== 1554 | 1555 | supports-color@^7.1.0: 1556 | version "7.2.0" 1557 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1558 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1559 | dependencies: 1560 | has-flag "^4.0.0" 1561 | 1562 | supports-preserve-symlinks-flag@^1.0.0: 1563 | version "1.0.0" 1564 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1565 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1566 | 1567 | text-table@^0.2.0: 1568 | version "0.2.0" 1569 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1570 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1571 | 1572 | to-regex-range@^5.0.1: 1573 | version "5.0.1" 1574 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1575 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1576 | dependencies: 1577 | is-number "^7.0.0" 1578 | 1579 | tsconfig-paths@^3.12.0, tsconfig-paths@^3.9.0: 1580 | version "3.12.0" 1581 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" 1582 | integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== 1583 | dependencies: 1584 | "@types/json5" "^0.0.29" 1585 | json5 "^1.0.1" 1586 | minimist "^1.2.0" 1587 | strip-bom "^3.0.0" 1588 | 1589 | tslib@^1.8.1: 1590 | version "1.14.1" 1591 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1592 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1593 | 1594 | tsutils@^3.21.0: 1595 | version "3.21.0" 1596 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 1597 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 1598 | dependencies: 1599 | tslib "^1.8.1" 1600 | 1601 | type-check@^0.4.0, type-check@~0.4.0: 1602 | version "0.4.0" 1603 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1604 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1605 | dependencies: 1606 | prelude-ls "^1.2.1" 1607 | 1608 | type-fest@^0.20.2: 1609 | version "0.20.2" 1610 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1611 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1612 | 1613 | unbox-primitive@^1.0.1: 1614 | version "1.0.1" 1615 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" 1616 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== 1617 | dependencies: 1618 | function-bind "^1.1.1" 1619 | has-bigints "^1.0.1" 1620 | has-symbols "^1.0.2" 1621 | which-boxed-primitive "^1.0.2" 1622 | 1623 | uri-js@^4.2.2: 1624 | version "4.4.1" 1625 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1626 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1627 | dependencies: 1628 | punycode "^2.1.0" 1629 | 1630 | use-subscription@1.5.1: 1631 | version "1.5.1" 1632 | resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" 1633 | integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== 1634 | dependencies: 1635 | object-assign "^4.1.1" 1636 | 1637 | v8-compile-cache@^2.0.3: 1638 | version "2.3.0" 1639 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1640 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1641 | 1642 | which-boxed-primitive@^1.0.2: 1643 | version "1.0.2" 1644 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 1645 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 1646 | dependencies: 1647 | is-bigint "^1.0.1" 1648 | is-boolean-object "^1.1.0" 1649 | is-number-object "^1.0.4" 1650 | is-string "^1.0.5" 1651 | is-symbol "^1.0.3" 1652 | 1653 | which@^2.0.1: 1654 | version "2.0.2" 1655 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1656 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1657 | dependencies: 1658 | isexe "^2.0.0" 1659 | 1660 | word-wrap@^1.2.3: 1661 | version "1.2.3" 1662 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1663 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1664 | 1665 | wrappy@1: 1666 | version "1.0.2" 1667 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1668 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1669 | 1670 | yallist@^4.0.0: 1671 | version "4.0.0" 1672 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1673 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1674 | -------------------------------------------------------------------------------- /lib/MorphTransition.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = void 0; 7 | 8 | var _react = _interopRequireDefault(require("react")); 9 | 10 | var _propTypes = _interopRequireDefault(require("prop-types")); 11 | 12 | var _Transition = _interopRequireDefault(require("react-transition-group/Transition")); 13 | 14 | var _PropTypes = require("react-transition-group/utils/PropTypes"); 15 | 16 | var _irrelonMorph = _interopRequireWildcard(require("./irrelon-morph")); 17 | 18 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } 19 | 20 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 21 | 22 | function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 23 | 24 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 25 | 26 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 27 | 28 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 29 | 30 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 31 | 32 | function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 33 | 34 | function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 35 | 36 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } 37 | 38 | function areChildrenDifferent(oldChildren, newChildren) { 39 | if (oldChildren === newChildren) { 40 | return false; 41 | } 42 | 43 | return !(_react.default.isValidElement(oldChildren) && _react.default.isValidElement(newChildren) && oldChildren.key != null && oldChildren.key === newChildren.key); 44 | } 45 | 46 | function buildClassName(className, state) { 47 | switch (state) { 48 | case 'enter': 49 | return "".concat(className, " enter"); 50 | 51 | case 'entering': 52 | return "".concat(className, " enter ").concat(className, " enter active"); 53 | 54 | case 'entered': 55 | return "".concat(className, " enter.done"); 56 | 57 | case 'exit': 58 | return "".concat(className, " exit"); 59 | 60 | case 'exiting': 61 | return "".concat(className, " exit ").concat(className, " exit active"); 62 | 63 | case 'exited': 64 | return "".concat(className, " exit done"); 65 | 66 | default: 67 | return ''; 68 | } 69 | } 70 | 71 | function shouldDelayEnter(children) { 72 | return _react.default.isValidElement(children) && children.type.pageTransitionDelayEnter; 73 | } 74 | 75 | var MorphTransition = 76 | /*#__PURE__*/ 77 | function (_React$Component) { 78 | _inherits(MorphTransition, _React$Component); 79 | 80 | function MorphTransition(props) { 81 | var _this; 82 | 83 | _classCallCheck(this, MorphTransition); 84 | 85 | _this = _possibleConstructorReturn(this, (MorphTransition.__proto__ || Object.getPrototypeOf(MorphTransition)).call(this, props)); 86 | var children = props.children; 87 | _this.state = { 88 | state: 'enter', 89 | isIn: !shouldDelayEnter(children), 90 | currentChildren: children, 91 | nextChildren: null, 92 | renderedChildren: children, 93 | showLoading: false 94 | }; 95 | return _this; 96 | } 97 | 98 | _createClass(MorphTransition, [{ 99 | key: "componentDidMount", 100 | value: function componentDidMount() { 101 | if (shouldDelayEnter(this.props.children)) { 102 | this.setState({ 103 | timeoutId: this.startEnterTimer() 104 | }); 105 | } 106 | } 107 | }, { 108 | key: "componentDidUpdate", 109 | value: function componentDidUpdate(prevProps, prevState) { 110 | var _state = this.state, 111 | currentChildren = _state.currentChildren, 112 | renderedChildren = _state.renderedChildren, 113 | nextChildren = _state.nextChildren, 114 | isIn = _state.isIn, 115 | state = _state.state; 116 | var children = this.props.children; 117 | var hasNewChildren = areChildrenDifferent(currentChildren, children); 118 | var needsTransition = areChildrenDifferent(renderedChildren, children); 119 | 120 | if (hasNewChildren) { 121 | // We got a new set of children while we were transitioning some in 122 | // Immediately start transitioning out this component and update the next 123 | // component 124 | this.setState({ 125 | isIn: false, 126 | nextChildren: children, 127 | currentChildren: children 128 | }); 129 | 130 | if (this.state.timeoutId) { 131 | clearTimeout(this.state.timeoutId); 132 | } //console.log('New DOM changes'); 133 | 134 | } else if (needsTransition && !isIn && state === 'exited') { 135 | if (shouldDelayEnter(nextChildren)) { 136 | // Wait for the ready callback to actually transition in, but still 137 | // mount the component to allow it to start loading things 138 | this.setState({ 139 | renderedChildren: nextChildren, 140 | nextChildren: null 141 | }); 142 | } else { 143 | // No need to wait, mount immediately 144 | this.setState({ 145 | isIn: true, 146 | renderedChildren: nextChildren, 147 | nextChildren: null, 148 | timeoutId: this.startEnterTimer() 149 | }); 150 | } 151 | } else if (prevState.showLoading && !this.state.showLoading) { 152 | // We hid the loading indicator; now that that change has been flushed to 153 | // the DOM, we can now bring in the next component! 154 | this.setState({ 155 | isIn: true 156 | }); 157 | } 158 | } 159 | }, { 160 | key: "componentWillUnmount", 161 | value: function componentWillUnmount() { 162 | if (this.state.timeoutId) { 163 | clearTimeout(this.state.timeoutId); 164 | } 165 | } 166 | }, { 167 | key: "onEnter", 168 | value: function onEnter(pageElem) { 169 | var _this2 = this; 170 | 171 | //console.log('onEnter'); 172 | // It's safe to reenable scrolling now 173 | this.disableScrolling = false; 174 | this.setState({ 175 | state: 'enter', 176 | showLoading: false 177 | }); 178 | 179 | if (!this._sourceMorphElements) { 180 | return; 181 | } // Find the source and target pairs 182 | 183 | 184 | var promiseArr = []; 185 | 186 | this._sourceMorphElements.forEach(function (sourceItem) { 187 | var sourceNode = sourceItem.node; 188 | var customTargetSelector = sourceNode.getAttribute("data-morph-target"); 189 | var targetSelector; 190 | var selectorType; 191 | 192 | if (customTargetSelector) { 193 | selectorType = "querySelector"; 194 | targetSelector = customTargetSelector; 195 | } else { 196 | selectorType = "getElementById"; 197 | targetSelector = sourceItem.node.id; 198 | } 199 | 200 | promiseArr.push(new Promise(function (resolve) { 201 | var target; 202 | 203 | if (selectorType === "getElementById") { 204 | target = document.getElementById(targetSelector); 205 | } else { 206 | target = pageElem.querySelector(targetSelector); 207 | } 208 | 209 | if (target) { 210 | (0, _irrelonMorph.default)(sourceItem, target, parseInt(sourceNode.getAttribute('data-morph-ms'), 10) || 600).then(function (morphData) { 211 | (0, _irrelonMorph.endMorph)(morphData); 212 | resolve(); 213 | }); 214 | } else { 215 | resolve(); 216 | } 217 | })); 218 | }); 219 | 220 | Promise.all(promiseArr).then(function () { 221 | _this2.onMorphComplete(pageElem); 222 | }); 223 | } 224 | }, { 225 | key: "onEntering", 226 | value: function onEntering() { 227 | //console.log('onEntering'); 228 | this.setState({ 229 | state: 'entering' 230 | }); 231 | } 232 | }, { 233 | key: "scanDomForMorphElements", 234 | value: function scanDomForMorphElements(pageElem) { 235 | var morphElems = pageElem.querySelectorAll('[data-morph-ms]'); 236 | var sourceSnapshot = []; 237 | 238 | if (morphElems && morphElems.length) { 239 | for (var i = 0; i < morphElems.length; i++) { 240 | sourceSnapshot.push(new _irrelonMorph.ScannedNode(morphElems[i])); 241 | } 242 | } 243 | 244 | return sourceSnapshot; 245 | } 246 | }, { 247 | key: "onEntered", 248 | value: function onEntered(pageElem) { 249 | var _this3 = this; 250 | 251 | //console.log('onEntered'); 252 | this.setState({ 253 | state: 'entered' 254 | }); 255 | setTimeout(function () { 256 | _this3._sourceMorphElements = _this3.scanDomForMorphElements(pageElem); //console.log('On entered detected ' + this._sourceMorphElements.length + ' new source elements'); 257 | }, 1); 258 | } 259 | }, { 260 | key: "onMorphComplete", 261 | value: function onMorphComplete(pageElem) { 262 | this._sourceMorphElements = this.scanDomForMorphElements(pageElem); //console.log('On entered detected ' + this._sourceMorphElements.length + ' new source elements'); 263 | } 264 | }, { 265 | key: "onExit", 266 | value: function onExit() { 267 | //console.log('onExit'); 268 | // Disable scrolling until this component has unmounted 269 | this.disableScrolling = true; 270 | this.setState({ 271 | state: 'exit' 272 | }); 273 | (0, _irrelonMorph.cancelAllMorphs)(); 274 | } 275 | }, { 276 | key: "onExiting", 277 | value: function onExiting() { 278 | //console.log('onExiting'); 279 | this.setState({ 280 | state: 'exiting' 281 | }); 282 | } 283 | }, { 284 | key: "onExited", 285 | value: function onExited() { 286 | //console.log('onExited'); 287 | this.setState({ 288 | state: 'exited', 289 | renderedChildren: null 290 | }); 291 | } 292 | }, { 293 | key: "onChildLoaded", 294 | value: function onChildLoaded() { 295 | //console.log('Child loaded'); 296 | if (this.state.timeoutId) { 297 | clearTimeout(this.state.timeoutId); 298 | } 299 | 300 | this.setState({ 301 | isIn: true 302 | }); 303 | } 304 | }, { 305 | key: "startEnterTimer", 306 | value: function startEnterTimer() { 307 | var _this4 = this; 308 | 309 | return setTimeout(function () { 310 | _this4.setState({ 311 | showLoading: true 312 | }); 313 | }, this.props.loadingDelay); 314 | } 315 | }, { 316 | key: "render", 317 | value: function render() { 318 | var _this5 = this; 319 | 320 | var _props = this.props, 321 | timeout = _props.timeout, 322 | loadingCallbackName = _props.loadingCallbackName; 323 | var _state2 = this.state, 324 | children = _state2.renderedChildren, 325 | state = _state2.state; 326 | 327 | if (['entering', 'exiting', 'exited'].indexOf(state) !== -1) { 328 | // Need to reflow! 329 | // eslint-disable-next-line no-unused-expressions 330 | if (document.body) { 331 | document.body.scrollTop; 332 | } 333 | } 334 | 335 | var containerClassName = buildClassName(this.props.classNames, state); 336 | return _react.default.createElement(_Transition.default, { 337 | timeout: timeout, 338 | "in": this.state.isIn, 339 | appear: true, 340 | onEnter: function onEnter() { 341 | return _this5.onEnter.apply(_this5, arguments); 342 | }, 343 | onEntering: function onEntering() { 344 | return _this5.onEntering.apply(_this5, arguments); 345 | }, 346 | onEntered: function onEntered() { 347 | return _this5.onEntered.apply(_this5, arguments); 348 | }, 349 | onExit: function onExit() { 350 | return _this5.onExit.apply(_this5, arguments); 351 | }, 352 | onExiting: function onExiting() { 353 | return _this5.onExiting.apply(_this5, arguments); 354 | }, 355 | onExited: function onExited() { 356 | return _this5.onExited.apply(_this5, arguments); 357 | } 358 | }, _react.default.createElement("div", { 359 | className: containerClassName 360 | }, children && _react.default.cloneElement(children, _defineProperty({}, loadingCallbackName, function () { 361 | return _this5.onChildLoaded(); 362 | })))); 363 | } 364 | }]); 365 | 366 | return MorphTransition; 367 | }(_react.default.Component); 368 | 369 | MorphTransition.propTypes = { 370 | children: _propTypes.default.node.isRequired, 371 | classNames: _propTypes.default.string.isRequired, 372 | timeout: _propTypes.default.number.isRequired, 373 | loadingComponent: _propTypes.default.element, 374 | loadingDelay: _propTypes.default.number, 375 | loadingCallbackName: _propTypes.default.string, 376 | 377 | /* eslint-disable react/require-default-props */ 378 | loadingTimeout: function loadingTimeout(props) { 379 | var pt = _PropTypes.timeoutsShape; 380 | 381 | if (props.loadingComponent) { 382 | pt = pt.isRequired; 383 | } 384 | 385 | for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 386 | args[_key - 1] = arguments[_key]; 387 | } 388 | 389 | return pt.apply(void 0, [props].concat(args)); 390 | }, 391 | loadingClassNames: function loadingClassNames(props) { 392 | var pt = _propTypes.default.string; 393 | 394 | if (props.loadingTimeout) { 395 | pt = pt.isRequired; 396 | } 397 | 398 | for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { 399 | args[_key2 - 1] = arguments[_key2]; 400 | } 401 | 402 | return pt.apply(void 0, [props].concat(args)); 403 | }, 404 | 405 | /* eslint-enable react/require-default-props */ 406 | monkeyPatchScrolling: _propTypes.default.bool 407 | }; 408 | MorphTransition.defaultProps = { 409 | loadingComponent: null, 410 | loadingCallbackName: 'pageTransitionReadyToEnter', 411 | loadingDelay: 500, 412 | monkeyPatchScrolling: false 413 | }; 414 | var _default = MorphTransition; 415 | exports.default = _default; -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = void 0; 7 | 8 | var _MorphTransition = _interopRequireDefault(require("./MorphTransition")); 9 | 10 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 11 | 12 | var _default = _MorphTransition.default; 13 | exports.default = _default; -------------------------------------------------------------------------------- /lib/irrelon-morph.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.cancelAllMorphs = exports.cancelMorph = exports.endMorph = exports.trackProps = exports.ScannedNode = exports.default = void 0; 7 | 8 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 9 | 10 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 11 | 12 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 13 | 14 | var activeMorphs = []; 15 | var trackProps = [{ 16 | name: 'top', 17 | units: 'px' 18 | }, { 19 | name: 'left', 20 | units: 'px' 21 | }, { 22 | name: 'width' 23 | }, { 24 | name: 'height' 25 | }, { 26 | name: 'backgroundColor' 27 | }, { 28 | name: 'backgroundImage' 29 | }, { 30 | name: 'borderBottomLeftRadius' 31 | }, { 32 | name: 'borderBottomRightRadius' 33 | }, { 34 | name: 'borderTopLeftRadius' 35 | }, { 36 | name: 'borderTopRightRadius' 37 | }, { 38 | name: 'position', 39 | applyVal: false 40 | }, { 41 | name: 'marginTop', 42 | applyVal: false 43 | }, { 44 | name: 'marginLeft', 45 | applyVal: false 46 | }, { 47 | name: 'marginBottom', 48 | applyVal: false 49 | }, { 50 | name: 'marginRight', 51 | applyVal: false 52 | }, { 53 | name: 'paddingTop', 54 | applyVal: false 55 | }, { 56 | name: 'paddingLeft', 57 | applyVal: false 58 | }, { 59 | name: 'paddingBottom', 60 | applyVal: false 61 | }, { 62 | name: 'paddingRight', 63 | applyVal: false 64 | }, { 65 | name: 'borderTopWidth' 66 | }, { 67 | name: 'borderLeftWidth' 68 | }, { 69 | name: 'borderRightWidth' 70 | }, { 71 | name: 'borderBottomWidth' 72 | }, { 73 | name: 'borderTopColor' 74 | }, { 75 | name: 'borderLeftColor' 76 | }, { 77 | name: 'borderRightColor' 78 | }, { 79 | name: 'borderBottomColor' 80 | }]; 81 | exports.trackProps = trackProps; 82 | 83 | var ScannedNode = 84 | /*#__PURE__*/ 85 | function () { 86 | function ScannedNode(node) { 87 | _classCallCheck(this, ScannedNode); 88 | 89 | this.node = node; 90 | this.style = {}; 91 | this.scanNode(node); 92 | } 93 | 94 | _createClass(ScannedNode, [{ 95 | key: "scanNode", 96 | value: function scanNode(node) { 97 | var _this = this; 98 | 99 | var styles = window.getComputedStyle(node); 100 | var bounds = node.getBoundingClientRect(); 101 | this.parentNode = node.parentNode; 102 | this.nextSibling = node.nextSibling; 103 | trackProps.forEach(function (prop) { 104 | _this.style[prop.name] = styles[prop.name]; 105 | }); 106 | this.style.top = bounds.top; 107 | this.style.left = bounds.left; 108 | } 109 | }]); 110 | 111 | return ScannedNode; 112 | }(); 113 | 114 | exports.ScannedNode = ScannedNode; 115 | 116 | var registerMorph = function registerMorph(morphData) { 117 | activeMorphs.push(morphData); 118 | }; 119 | 120 | var removeMorph = function removeMorph(morphData) { 121 | var index = activeMorphs.indexOf(morphData); 122 | 123 | if (index === -1) { 124 | return; 125 | } 126 | 127 | activeMorphs.splice(index, 1); 128 | }; 129 | 130 | var applyStyles = function applyStyles(targetElem, targetData) { 131 | var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 132 | var modifier = options.modifier, 133 | overrides = options.overrides; 134 | trackProps.forEach(function (prop) { 135 | var applyVal = prop.applyVal !== false; 136 | 137 | if (overrides && overrides[prop.name] && overrides[prop.name].applyVal !== undefined) { 138 | applyVal = overrides[prop.name].applyVal; 139 | } 140 | 141 | if (!applyVal) return; 142 | var modifierVal; 143 | 144 | if (modifier) { 145 | modifierVal = modifier(prop); 146 | } 147 | 148 | if (modifierVal !== undefined) { 149 | targetElem.style[prop.name] = targetData.style[prop.name] + modifierVal + (prop.units ? prop.units : ''); 150 | } else { 151 | targetElem.style[prop.name] = targetData.style[prop.name] + (prop.units ? prop.units : ''); 152 | } 153 | }); 154 | }; 155 | 156 | var morphElement = function morphElement(sourceData, targetData, duration, options) { 157 | options = options || {}; 158 | return new Promise(function (resolve) { 159 | if (!(sourceData instanceof ScannedNode)) { 160 | // We have to scan the source node 161 | sourceData = new ScannedNode(sourceData); 162 | } 163 | 164 | var source = sourceData.node; // Hide the source 165 | 166 | source.style.display = 'none'; // Read css from target 167 | 168 | if (!(targetData instanceof ScannedNode)) { 169 | // We have to scan the source node 170 | targetData = new ScannedNode(targetData); 171 | } 172 | 173 | var target = targetData.node; 174 | var targetPlaceholder; 175 | 176 | if (!target.getAttribute('data-morph-in-place')) { 177 | // Create a placeholder at the target location to maintain scrolling 178 | targetPlaceholder = document.createElement(target.tagName); //console.log('------- Placeholder'); 179 | 180 | applyStyles(targetPlaceholder, targetData, { 181 | modifier: function modifier(prop) { 182 | switch (prop.name) { 183 | case 'top': 184 | return document.body.scrollTop; 185 | 186 | case 'left': 187 | return document.body.scrollLeft; 188 | } 189 | }, 190 | overrides: { 191 | marginTop: { 192 | applyVal: true 193 | }, 194 | marginLeft: { 195 | applyVal: true 196 | }, 197 | marginRight: { 198 | applyVal: true 199 | }, 200 | marginBottom: { 201 | applyVal: true 202 | }, 203 | backgroundImage: { 204 | applyVal: false 205 | }, 206 | backgroundColor: { 207 | applyVal: false 208 | } 209 | } 210 | }); 211 | 212 | if (options.paintTarget) { 213 | targetPlaceholder.style.backgroundColor = '#ff0000'; 214 | } 215 | 216 | targetData.parentNode.insertBefore(targetPlaceholder, targetData.nextSibling); 217 | } // Apply source css to target 218 | //console.log('------- Target move to source'); 219 | 220 | 221 | applyStyles(target, sourceData); 222 | 223 | if (!target.getAttribute('data-morph-in-place')) { 224 | target.style.margin = '0px'; 225 | target.style.position = 'absolute'; 226 | document.body.appendChild(target); 227 | } 228 | 229 | setTimeout(function () { 230 | target.style.transition = "all ".concat(duration, "ms"); // Apply target css to target 231 | //console.log('------- Target move to target'); 232 | 233 | applyStyles(target, targetData, { 234 | modifier: function modifier(prop) { 235 | switch (prop.name) { 236 | case 'top': 237 | return document.body.scrollTop; 238 | 239 | case 'left': 240 | return document.body.scrollLeft; 241 | } 242 | } 243 | }); 244 | }, 1); 245 | var morphData = { 246 | target: target, 247 | targetData: targetData, 248 | targetPlaceholder: targetPlaceholder 249 | }; 250 | morphData.timeoutId = setTimeout(function () { 251 | resolve(morphData); 252 | }, duration); 253 | registerMorph(morphData); 254 | }); 255 | }; 256 | 257 | var endMorph = function endMorph(morphData) { 258 | removeMorph(morphData); // Check that our DOM is still viable and not changed since we started this animation 259 | 260 | morphData.targetData.parentNode.insertBefore(morphData.target, morphData.targetData.nextSibling); 261 | 262 | if (!morphData.target.getAttribute('data-morph-in-place')) { 263 | morphData.targetPlaceholder.parentNode.removeChild(morphData.targetPlaceholder); 264 | } 265 | 266 | morphData.target.removeAttribute('style'); 267 | }; 268 | 269 | exports.endMorph = endMorph; 270 | 271 | var cancelAllMorphs = function cancelAllMorphs() { 272 | //console.log('Cancelling all morphs'); 273 | // Cancel all morph functions 274 | for (var i = activeMorphs.length - 1; i >= 0; i--) { 275 | cancelMorph(activeMorphs[i]); 276 | } // Clear the canceller array 277 | 278 | 279 | activeMorphs.length = 0; 280 | }; 281 | 282 | exports.cancelAllMorphs = cancelAllMorphs; 283 | 284 | var cancelMorph = function cancelMorph(morphData) { 285 | // Cancel single morph 286 | clearTimeout(morphData.timeoutId); // Return the target to its original settings 287 | 288 | endMorph(morphData); 289 | }; 290 | 291 | exports.cancelMorph = cancelMorph; 292 | var _default = morphElement; 293 | exports.default = _default; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nextjs-morph-page", 3 | "version": "2.1.1", 4 | "description": "A next.js page transition component that allows you to morph individual elements from one page to another, identified by their element id attribute.", 5 | "main": "lib/index.js", 6 | "files": [ 7 | "lib/" 8 | ], 9 | "scripts": { 10 | "build": "rimraf lib && babel src --out-dir lib", 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | }, 13 | "author": "Rob Evans - Irrelon Software Limited", 14 | "license": "MIT", 15 | "dependencies": { 16 | "prop-types": "^15.6.2", 17 | "react": "17.0.2", 18 | "react-transition-group": "^2.5.0" 19 | }, 20 | "devDependencies": { 21 | "@babel/cli": "7.0.0-beta.42", 22 | "@babel/core": "7.0.0-beta.42", 23 | "@babel/plugin-proposal-class-properties": "7.0.0-beta.42", 24 | "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.42", 25 | "@babel/preset-env": "7.0.0-beta.42", 26 | "@babel/preset-react": "7.0.0-beta.42", 27 | "react": "17.0.2", 28 | "react-dom": "17.0.2", 29 | "rimraf": "^2.6.2" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Next.js Page Transitions with Element Morphing 2 | 3 | This is a fork of the original work done here https://github.com/illinois/next-page-transitions and adds new functionality to morph pages at an element-level. 4 | 5 | ## Demo 6 | 7 | You can see a basic demo of this library in action here: https://basic-usage-uwkrojwfad.now.sh/ 8 | 9 | > The demo is hosted on now.js. Start-up times on the now.js containers can take a long time if they haven't been used for a while. Just click the link and be patient :) 10 | 11 | ## Install 12 | 13 | ```bash 14 | npm i nextjs-morph-page --save 15 | ``` 16 | 17 | ## Usage 18 | > If you have browser dev tools enabled and you disable network cache, images may appear to morph incorrectly. If you are seeing weird morphing on images, close your dev tools or re-enable network cache while testing morphs on images. 19 | 20 | Make sure that your app has a custom App component; if not, [follow the example](https://github.com/zeit/next.js#custom-app) on the Next.js readme to create one. Then, in your App's render method, wrap the page Component in a MorphTransition component. 21 | 22 | ```js 23 | import App, { Container } from 'next/app' 24 | import React from 'react' 25 | import MorphTransition from 'nextjs-morph-page' 26 | 27 | export default class MyApp extends App { 28 | static async getInitialProps({ Component, router, ctx }) { 29 | let pageProps = {} 30 | 31 | if (Component.getInitialProps) { 32 | pageProps = await Component.getInitialProps(ctx) 33 | } 34 | 35 | return { pageProps } 36 | } 37 | 38 | render() { 39 | const { Component, pageProps } = this.props; 40 | return ( 41 | 42 | 43 | 44 | 45 | 61 | 62 | ) 63 | } 64 | } 65 | ``` 66 | 67 | ## Whole-Page Based Transitions 68 | 69 | When you move to a new page, the `Component` will change, and the 70 | `MorphTransition` component will detect that. Instead of immediately unmounting 71 | the page, it will apply the `morph.exit` class to a wrapper around 72 | the page to initialize the "exit" transition, and will then apply the 73 | `morph.exit.active` class as well to begin the transition. This is 74 | very similar to how the 75 | [react-transition-group](https://github.com/reactjs/react-transition-group) 76 | library does things. After the previous page has been animated out, 77 | the new page is mounted and a similar pair of `.morph.enter` and 78 | `morph.enter.active` classes will be applied. This process repeats 79 | every time a new page is navigated to. 80 | 81 | ## Element-Based Transitions 82 | 83 | As you move from one page to another the individual elements on the page can 84 | also be "morphed" from the source / current page to the target / destination 85 | page. To indicate an element to be morphed you must provide the element with 86 | an id that is the SAME ON BOTH PAGES as well as a `data-morph-ms` attribute 87 | indicating the number of milliseconds the element's morph should take. 88 | 89 | > There is a new experimental way to set the target of a morph operation from the 90 | source element, via the `data-morph-target` attribute. This attribute takes a CSS 91 | selector that is compatible with document.querySelector() and attempts to find 92 | the target to morph to using that selector. Make sure the selector only returns 93 | a single element as only the first matching element will be used as a target. 94 | e.g. \
...\
can be targeted by '.foo[bar="true"]'. 95 | ID selectors cannot start with a number when using `document.querySelector()`. 96 | 97 | The `data-morph-ms` attribute only needs to exist on the source page. If you want 98 | transitions to occur on that element when the user navigates back from page 2 99 | to page 1, as well as from page 1 to page 2, put a `data-morph-ms` on the element 100 | on page 2 as well as page 1. 101 | 102 | E.g: 103 | 104 | #### Page 1 105 | 106 | ```html 107 | 108 | ``` 109 | 110 | #### Page 2 111 | 112 | ```html 113 | 114 | ``` 115 | 116 | Any css applied to the page 2 element "test1" will be applied as the morph transitions. 117 | 118 | # Gotchas and Errors 119 | > VERY IMPORTANT: The plugin does not currently support having style attributes on an 120 | element. If you apply styles directly on an element via the style="" attribute they will 121 | be wiped out when a morph is applied. Use css classes only. 122 | 123 | ## IDs Starting With Numbers 124 | ``` 125 | Uncaught SyntaxError: Failed to execute 'querySelector' on 'Element': '#1' is not a valid selector. 126 | ``` 127 | 128 | This is because the ID applied to an element with a `data-morph-ms` attribute starts with 129 | a number. This is a problem because the querySelector() function doesn't allow an ID query 130 | where the ID starts with a number. This is a restriction of that function, not of this 131 | library. Either change your IDs to start with a letter or do not use the `data-morph-target` 132 | attribute. Previous versions of this library before 2.1.0 would throw this error even if you 133 | were not using the `data-morph-target`. Newer versions (2.1.0 and up) will attempt to use 134 | getElementById() instead of querySelector() if `data-morph-target` is not used. -------------------------------------------------------------------------------- /src/MorphTransition.js: -------------------------------------------------------------------------------- 1 | /* eslint-env browser */ 2 | // We (supposedly) know what we're doing 3 | /* eslint-disable react/no-did-update-set-state */ 4 | /* eslint-disable react/no-did-mount-set-state */ 5 | import React from 'react'; 6 | import PropTypes from 'prop-types'; 7 | import Transition from 'react-transition-group/Transition'; 8 | import {timeoutsShape} from 'react-transition-group/utils/PropTypes'; 9 | import morphElement, {ScannedNode, cancelAllMorphs, endMorph} from './irrelon-morph'; 10 | 11 | function areChildrenDifferent (oldChildren, newChildren) { 12 | if (oldChildren === newChildren) { 13 | return false; 14 | } 15 | 16 | return !(React.isValidElement(oldChildren) && 17 | React.isValidElement(newChildren) && 18 | oldChildren.key != null && 19 | oldChildren.key === newChildren.key); 20 | } 21 | 22 | function buildClassName (className, state) { 23 | switch (state) { 24 | case 'enter': 25 | return `${className} enter`; 26 | case 'entering': 27 | return `${className} enter ${className} enter active`; 28 | case 'entered': 29 | return `${className} enter.done`; 30 | case 'exit': 31 | return `${className} exit`; 32 | case 'exiting': 33 | return `${className} exit ${className} exit active`; 34 | case 'exited': 35 | return `${className} exit done`; 36 | default: 37 | return '' 38 | } 39 | } 40 | 41 | function shouldDelayEnter (children) { 42 | return React.isValidElement(children) && children.type.pageTransitionDelayEnter; 43 | } 44 | 45 | class MorphTransition extends React.Component { 46 | constructor (props) { 47 | super(props); 48 | 49 | const {children} = props; 50 | this.state = { 51 | state: 'enter', 52 | isIn: !shouldDelayEnter(children), 53 | currentChildren: children, 54 | nextChildren: null, 55 | renderedChildren: children, 56 | showLoading: false, 57 | }; 58 | } 59 | 60 | componentDidMount () { 61 | if (shouldDelayEnter(this.props.children)) { 62 | this.setState({ 63 | timeoutId: this.startEnterTimer() 64 | }); 65 | } 66 | } 67 | 68 | componentDidUpdate (prevProps, prevState) { 69 | const { 70 | currentChildren, 71 | renderedChildren, 72 | nextChildren, 73 | isIn, 74 | state, 75 | } = this.state; 76 | const {children} = this.props; 77 | const hasNewChildren = areChildrenDifferent(currentChildren, children); 78 | const needsTransition = areChildrenDifferent(renderedChildren, children); 79 | 80 | if (hasNewChildren) { 81 | // We got a new set of children while we were transitioning some in 82 | // Immediately start transitioning out this component and update the next 83 | // component 84 | this.setState({ 85 | isIn: false, 86 | nextChildren: children, 87 | currentChildren: children, 88 | }); 89 | if (this.state.timeoutId) { 90 | clearTimeout(this.state.timeoutId) 91 | } 92 | //console.log('New DOM changes'); 93 | } else if (needsTransition && !isIn && state === 'exited') { 94 | if (shouldDelayEnter(nextChildren)) { 95 | // Wait for the ready callback to actually transition in, but still 96 | // mount the component to allow it to start loading things 97 | this.setState({ 98 | renderedChildren: nextChildren, 99 | nextChildren: null 100 | }) 101 | } else { 102 | // No need to wait, mount immediately 103 | this.setState({ 104 | isIn: true, 105 | renderedChildren: nextChildren, 106 | nextChildren: null, 107 | timeoutId: this.startEnterTimer() 108 | }) 109 | } 110 | } else if (prevState.showLoading && !this.state.showLoading) { 111 | // We hid the loading indicator; now that that change has been flushed to 112 | // the DOM, we can now bring in the next component! 113 | this.setState({ 114 | isIn: true, 115 | }) 116 | } 117 | } 118 | 119 | componentWillUnmount () { 120 | if (this.state.timeoutId) { 121 | clearTimeout(this.state.timeoutId); 122 | } 123 | } 124 | 125 | onEnter (pageElem) { 126 | //console.log('onEnter'); 127 | // It's safe to reenable scrolling now 128 | this.disableScrolling = false; 129 | this.setState({ 130 | state: 'enter', 131 | showLoading: false 132 | }); 133 | 134 | if (!this._sourceMorphElements) { 135 | return; 136 | } 137 | 138 | // Find the source and target pairs 139 | const promiseArr = []; 140 | 141 | this._sourceMorphElements.forEach((sourceItem) => { 142 | const sourceNode = sourceItem.node; 143 | const customTargetSelector = sourceNode.getAttribute("data-morph-target"); 144 | let targetSelector; 145 | let selectorType; 146 | 147 | if (customTargetSelector) { 148 | selectorType = "querySelector"; 149 | targetSelector = customTargetSelector; 150 | } else { 151 | selectorType = "getElementById"; 152 | targetSelector = sourceItem.node.id; 153 | } 154 | 155 | promiseArr.push(new Promise((resolve) => { 156 | let target; 157 | 158 | if (selectorType === "getElementById") { 159 | target = document.getElementById(targetSelector); 160 | } else { 161 | target = pageElem.querySelector(targetSelector); 162 | } 163 | 164 | if (target) { 165 | morphElement(sourceItem, target, parseInt(sourceNode.getAttribute('data-morph-ms'), 10) || 600).then((morphData) => { 166 | endMorph(morphData); 167 | resolve(); 168 | }); 169 | } else { 170 | resolve(); 171 | } 172 | })); 173 | }); 174 | 175 | Promise.all(promiseArr).then(() => { 176 | this.onMorphComplete(pageElem); 177 | }); 178 | } 179 | 180 | onEntering () { 181 | //console.log('onEntering'); 182 | this.setState({ 183 | state: 'entering', 184 | }) 185 | } 186 | 187 | scanDomForMorphElements (pageElem) { 188 | const morphElems = pageElem.querySelectorAll('[data-morph-ms]'); 189 | const sourceSnapshot = []; 190 | 191 | if (morphElems && morphElems.length) { 192 | for (let i = 0; i < morphElems.length; i++) { 193 | sourceSnapshot.push(new ScannedNode(morphElems[i])); 194 | } 195 | } 196 | 197 | return sourceSnapshot; 198 | } 199 | 200 | onEntered (pageElem) { 201 | //console.log('onEntered'); 202 | this.setState({ 203 | state: 'entered', 204 | }); 205 | 206 | setTimeout(() => { 207 | this._sourceMorphElements = this.scanDomForMorphElements(pageElem); 208 | //console.log('On entered detected ' + this._sourceMorphElements.length + ' new source elements'); 209 | }, 1); 210 | } 211 | 212 | onMorphComplete (pageElem) { 213 | this._sourceMorphElements = this.scanDomForMorphElements(pageElem); 214 | //console.log('On entered detected ' + this._sourceMorphElements.length + ' new source elements'); 215 | } 216 | 217 | onExit () { 218 | //console.log('onExit'); 219 | // Disable scrolling until this component has unmounted 220 | this.disableScrolling = true; 221 | this.setState({ 222 | state: 'exit', 223 | }); 224 | 225 | cancelAllMorphs(); 226 | } 227 | 228 | onExiting () { 229 | //console.log('onExiting'); 230 | this.setState({ 231 | state: 'exiting', 232 | }); 233 | } 234 | 235 | onExited () { 236 | //console.log('onExited'); 237 | this.setState({ 238 | state: 'exited', 239 | renderedChildren: null 240 | }); 241 | } 242 | 243 | onChildLoaded () { 244 | //console.log('Child loaded'); 245 | if (this.state.timeoutId) { 246 | clearTimeout(this.state.timeoutId) 247 | } 248 | 249 | this.setState({ 250 | isIn: true, 251 | }); 252 | } 253 | 254 | startEnterTimer () { 255 | return setTimeout(() => { 256 | this.setState({ 257 | showLoading: true, 258 | }) 259 | }, this.props.loadingDelay) 260 | } 261 | 262 | render () { 263 | const {timeout, loadingCallbackName} = this.props; 264 | const {renderedChildren: children, state} = this.state; 265 | 266 | if (['entering', 'exiting', 'exited'].indexOf(state) !== -1) { 267 | // Need to reflow! 268 | // eslint-disable-next-line no-unused-expressions 269 | if (document.body) { 270 | document.body.scrollTop 271 | } 272 | } 273 | 274 | const containerClassName = buildClassName(this.props.classNames, state); 275 | 276 | return ( 277 | this.onEnter(...args)} 282 | onEntering={(...args) => this.onEntering(...args)} 283 | onEntered={(...args) => this.onEntered(...args)} 284 | onExit={(...args) => this.onExit(...args)} 285 | onExiting={(...args) => this.onExiting(...args)} 286 | onExited={(...args) => this.onExited(...args)} 287 | > 288 |
289 | {children && 290 | React.cloneElement(children, { 291 | [loadingCallbackName]: () => this.onChildLoaded(), 292 | })} 293 |
294 |
295 | ) 296 | } 297 | } 298 | 299 | MorphTransition.propTypes = { 300 | children: PropTypes.node.isRequired, 301 | classNames: PropTypes.string.isRequired, 302 | timeout: PropTypes.number.isRequired, 303 | loadingComponent: PropTypes.element, 304 | loadingDelay: PropTypes.number, 305 | loadingCallbackName: PropTypes.string, 306 | /* eslint-disable react/require-default-props */ 307 | loadingTimeout: (props, ...args) => { 308 | let pt = timeoutsShape; 309 | if (props.loadingComponent) { 310 | pt = pt.isRequired 311 | } 312 | return pt(props, ...args) 313 | }, 314 | loadingClassNames: (props, ...args) => { 315 | let pt = PropTypes.string; 316 | if (props.loadingTimeout) { 317 | pt = pt.isRequired 318 | } 319 | return pt(props, ...args) 320 | }, 321 | /* eslint-enable react/require-default-props */ 322 | monkeyPatchScrolling: PropTypes.bool, 323 | }; 324 | 325 | MorphTransition.defaultProps = { 326 | loadingComponent: null, 327 | loadingCallbackName: 'pageTransitionReadyToEnter', 328 | loadingDelay: 500, 329 | monkeyPatchScrolling: false, 330 | }; 331 | 332 | export default MorphTransition 333 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import MorphTransition from './MorphTransition'; 2 | export default MorphTransition; -------------------------------------------------------------------------------- /src/irrelon-morph.js: -------------------------------------------------------------------------------- 1 | const activeMorphs = []; 2 | 3 | const trackProps = [ 4 | {name: 'top', units: 'px'}, 5 | {name: 'left', units: 'px'}, 6 | {name: 'width'}, 7 | {name: 'height'}, 8 | {name: 'backgroundColor'}, 9 | {name: 'backgroundImage'}, 10 | {name: 'borderBottomLeftRadius'}, 11 | {name: 'borderBottomRightRadius'}, 12 | {name: 'borderTopLeftRadius'}, 13 | {name: 'borderTopRightRadius'}, 14 | {name: 'position', applyVal: false}, 15 | {name: 'marginTop', applyVal: false}, 16 | {name: 'marginLeft', applyVal: false}, 17 | {name: 'marginBottom', applyVal: false}, 18 | {name: 'marginRight', applyVal: false}, 19 | {name: 'paddingTop', applyVal: false}, 20 | {name: 'paddingLeft', applyVal: false}, 21 | {name: 'paddingBottom', applyVal: false}, 22 | {name: 'paddingRight', applyVal: false}, 23 | {name: 'borderTopWidth'}, 24 | {name: 'borderLeftWidth'}, 25 | {name: 'borderRightWidth'}, 26 | {name: 'borderBottomWidth'}, 27 | {name: 'borderTopColor'}, 28 | {name: 'borderLeftColor'}, 29 | {name: 'borderRightColor'}, 30 | {name: 'borderBottomColor'} 31 | ]; 32 | 33 | class ScannedNode { 34 | constructor (node) { 35 | this.node = node; 36 | this.style = {}; 37 | 38 | this.scanNode(node); 39 | } 40 | 41 | scanNode (node) { 42 | const styles = window.getComputedStyle(node); 43 | const bounds = node.getBoundingClientRect(); 44 | 45 | this.parentNode = node.parentNode; 46 | this.nextSibling = node.nextSibling; 47 | 48 | trackProps.forEach((prop) => { 49 | this.style[prop.name] = styles[prop.name]; 50 | }); 51 | 52 | this.style.top = bounds.top; 53 | this.style.left = bounds.left; 54 | } 55 | } 56 | 57 | const registerMorph = (morphData) => { 58 | activeMorphs.push(morphData); 59 | }; 60 | 61 | const removeMorph = (morphData) => { 62 | const index = activeMorphs.indexOf(morphData); 63 | if (index === -1) { 64 | return; 65 | } 66 | 67 | activeMorphs.splice(index, 1); 68 | }; 69 | 70 | const applyStyles = (targetElem, targetData, options = {}) => { 71 | const {modifier, overrides} = options; 72 | 73 | trackProps.forEach((prop) => { 74 | let applyVal = prop.applyVal !== false; 75 | if (overrides && overrides[prop.name] && overrides[prop.name].applyVal !== undefined) { 76 | applyVal = overrides[prop.name].applyVal; 77 | } 78 | 79 | if (!applyVal) return; 80 | 81 | let modifierVal; 82 | if (modifier) { 83 | modifierVal = modifier(prop); 84 | } 85 | 86 | if (modifierVal !== undefined) { 87 | targetElem.style[prop.name] = targetData.style[prop.name] + modifierVal + (prop.units ? prop.units : ''); 88 | } else { 89 | targetElem.style[prop.name] = targetData.style[prop.name] + (prop.units ? prop.units : ''); 90 | } 91 | }); 92 | }; 93 | 94 | const morphElement = (sourceData, targetData, duration, options) => { 95 | options = options || {}; 96 | 97 | return new Promise((resolve) => { 98 | if (!(sourceData instanceof ScannedNode)) { 99 | // We have to scan the source node 100 | sourceData = new ScannedNode(sourceData); 101 | } 102 | 103 | const source = sourceData.node; 104 | 105 | // Hide the source 106 | source.style.display = 'none'; 107 | 108 | // Read css from target 109 | if (!(targetData instanceof ScannedNode)) { 110 | // We have to scan the source node 111 | targetData = new ScannedNode(targetData); 112 | } 113 | 114 | const target = targetData.node; 115 | let targetPlaceholder; 116 | 117 | if (!target.getAttribute('data-morph-in-place')) { 118 | // Create a placeholder at the target location to maintain scrolling 119 | targetPlaceholder = document.createElement(target.tagName); 120 | 121 | //console.log('------- Placeholder'); 122 | applyStyles(targetPlaceholder, targetData, { 123 | modifier: (prop) => { 124 | switch (prop.name) { 125 | case 'top': 126 | return document.body.scrollTop; 127 | 128 | case 'left': 129 | return document.body.scrollLeft; 130 | } 131 | }, 132 | overrides: { 133 | marginTop: { 134 | applyVal: true 135 | }, 136 | marginLeft: { 137 | applyVal: true 138 | }, 139 | marginRight: { 140 | applyVal: true 141 | }, 142 | marginBottom: { 143 | applyVal: true 144 | }, 145 | backgroundImage: { 146 | applyVal: false 147 | }, 148 | backgroundColor: { 149 | applyVal: false 150 | } 151 | } 152 | }); 153 | 154 | if (options.paintTarget) { 155 | targetPlaceholder.style.backgroundColor = '#ff0000'; 156 | } 157 | targetData.parentNode.insertBefore(targetPlaceholder, targetData.nextSibling); 158 | } 159 | 160 | // Apply source css to target 161 | //console.log('------- Target move to source'); 162 | applyStyles(target, sourceData); 163 | 164 | if (!target.getAttribute('data-morph-in-place')) { 165 | target.style.margin = '0px'; 166 | target.style.position = 'absolute'; 167 | document.body.appendChild(target); 168 | } 169 | 170 | setTimeout(() => { 171 | target.style.transition = `all ${duration}ms`; 172 | 173 | // Apply target css to target 174 | //console.log('------- Target move to target'); 175 | applyStyles(target, targetData, { 176 | modifier: (prop) => { 177 | switch (prop.name) { 178 | case 'top': 179 | return document.body.scrollTop; 180 | 181 | case 'left': 182 | return document.body.scrollLeft; 183 | } 184 | } 185 | }); 186 | }, 1); 187 | 188 | const morphData = { 189 | target, 190 | targetData, 191 | targetPlaceholder 192 | }; 193 | 194 | morphData.timeoutId = setTimeout(() => { 195 | resolve(morphData); 196 | }, duration); 197 | 198 | registerMorph(morphData); 199 | }); 200 | }; 201 | 202 | const endMorph = (morphData) => { 203 | removeMorph(morphData); 204 | 205 | // Check that our DOM is still viable and not changed since we started this animation 206 | morphData.targetData.parentNode.insertBefore(morphData.target, morphData.targetData.nextSibling); 207 | 208 | if (!morphData.target.getAttribute('data-morph-in-place')) { 209 | morphData.targetPlaceholder.parentNode.removeChild(morphData.targetPlaceholder); 210 | } 211 | 212 | morphData.target.removeAttribute('style'); 213 | }; 214 | 215 | const cancelAllMorphs = () => { 216 | //console.log('Cancelling all morphs'); 217 | 218 | // Cancel all morph functions 219 | for (let i = activeMorphs.length - 1; i >= 0; i--) { 220 | cancelMorph(activeMorphs[i]); 221 | } 222 | 223 | // Clear the canceller array 224 | activeMorphs.length = 0; 225 | }; 226 | 227 | const cancelMorph = (morphData) => { 228 | // Cancel single morph 229 | clearTimeout(morphData.timeoutId); 230 | 231 | // Return the target to its original settings 232 | endMorph(morphData); 233 | }; 234 | 235 | export default morphElement; 236 | 237 | export { 238 | ScannedNode, 239 | trackProps, 240 | endMorph, 241 | cancelMorph, 242 | cancelAllMorphs 243 | } --------------------------------------------------------------------------------