├── src
├── routers
│ └── index.ts
├── html-entry.js
└── index.tsx
├── .gitignore
├── .vscode
└── settings.json
├── child-app0
├── src
│ ├── list.tsx
│ ├── item.tsx
│ ├── entry.tsx
│ └── index.tsx
├── dist
│ ├── index.html
│ ├── main.js.LICENSE.txt
│ └── main.js
├── .babelrc
├── public
│ └── index.html
├── package.json
└── webpack.config.js
├── child-app1
├── src
│ ├── list.tsx
│ ├── item.tsx
│ ├── entry.tsx
│ └── index.tsx
├── public
│ └── index.html
├── .babelrc
├── package.json
└── webpack.config.js
├── child-app.config.js
├── dist
└── index.html
├── public
└── index.html
├── .babelrc
├── webpack.config.js
├── package.json
└── README.md
/src/routers/index.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "git.ignoreLimitWarning": true
3 | }
--------------------------------------------------------------------------------
/child-app0/src/list.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const List = () => {
4 | return
List
5 | }
6 |
7 | export default List;
8 |
9 |
--------------------------------------------------------------------------------
/child-app1/src/list.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const List = () => {
4 | return List
5 | }
6 |
7 | export default List;
8 |
9 |
--------------------------------------------------------------------------------
/child-app0/dist/index.html:
--------------------------------------------------------------------------------
1 | Document
--------------------------------------------------------------------------------
/child-app0/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "@babel/preset-react",
4 | "@babel/preset-typescript"
5 | ],
6 | "plugins": [
7 | [
8 | "@babel/plugin-transform-runtime",
9 | {
10 | "regenerator": true,
11 | "corejs": 3
12 | }
13 | ]
14 | ]
15 | }
--------------------------------------------------------------------------------
/child-app1/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/child-app.config.js:
--------------------------------------------------------------------------------
1 | export const apps = [
2 | {
3 | name: 'app0',
4 | entry: '//localhost:7000',
5 | container: '#micro-app',
6 | activeRule: '/app0',
7 | },
8 | {
9 | name: 'app1',
10 | entry: '//localhost:3000',
11 | container: '#micro-app',
12 | activeRule: '/app1',
13 | },
14 | ]
--------------------------------------------------------------------------------
/src/html-entry.js:
--------------------------------------------------------------------------------
1 |
2 | import importHTML from 'import-html-entry';
3 |
4 | importHTML('//localhost:7700')
5 | .then(res => {
6 | console.log(res.template);
7 |
8 | res.execScripts().then(exports => {
9 | const mount = exports;
10 | console.log(mount, 'exports===');
11 | // console.log(exports, 'exports===');
12 | })
13 | });
--------------------------------------------------------------------------------
/child-app1/src/item.tsx:
--------------------------------------------------------------------------------
1 | import React, {useState} from 'react';
2 |
3 | const Item = () => {
4 | const [count, setCount] = useState(0);
5 |
6 | function handleClick() {
7 | setCount(count + 1);
8 | }
9 |
10 | return (
11 | <>
12 | click me to amend state in app0-item
13 | Item State: {count}
14 | >
15 | )
16 | }
17 |
18 | export default Item;
19 |
20 |
--------------------------------------------------------------------------------
/child-app0/src/item.tsx:
--------------------------------------------------------------------------------
1 | import React, {useState, useEffect} from 'react';
2 |
3 | const Item = () => {
4 | const [count, setCount] = useState(0);
5 |
6 | function handleClick() {
7 | setCount(count + 1);
8 | }
9 |
10 | return (
11 | <>
12 | click me to amend state in app0-item
13 | Item State: {count}
14 | >
15 | )
16 | }
17 |
18 | export default Item;
19 |
20 |
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/child-app0/src/entry.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {useHistory} from 'react-router-dom';
3 |
4 | const List = () => {
5 | const history = useHistory();
6 |
7 | function handleClick(e: React.MouseEvent) {
8 | const targetRoute = e.currentTarget.getAttribute('data-target-route');
9 | history.push(targetRoute);
10 | }
11 |
12 | return (
13 | <>
14 | 点我切换到app0的list路由
15 | 点我切换到app0的item路由
16 | >
17 | )
18 | }
19 |
20 | export default List;
--------------------------------------------------------------------------------
/child-app1/src/entry.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {useHistory} from 'react-router-dom';
3 |
4 | const List = () => {
5 | const history = useHistory();
6 |
7 | function handleClick(e: React.MouseEvent) {
8 | const targetRoute = e.currentTarget.getAttribute('data-target-route');
9 | history.push(targetRoute);
10 | }
11 |
12 | return (
13 | <>
14 | 点我切换到app1的list路由
15 | 点我切换到app1的item路由
16 | >
17 | )
18 | }
19 |
20 | export default List;
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/preset-env",
5 | {
6 | "modules": false, // 对ES6的模块文件不做转化,以便使用tree shaking、sideEffects等
7 | "useBuiltIns": "entry", // browserslist环境不支持的所有垫片都导入
8 | // https://babeljs.io/docs/en/babel-preset-env#usebuiltins
9 | // https://github.com/zloirock/core-js/blob/master/docs/2019-03-19-core-js-3-babel-and-a-look-into-the-future.md
10 | "corejs": {
11 | "version": 3, // 使用core-js@3
12 | "proposals": true
13 | }
14 | }
15 | ],
16 | "@babel/preset-react",
17 | "@babel/preset-typescript"
18 | ],
19 | "plugins": []
20 | }
--------------------------------------------------------------------------------
/child-app1/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/preset-env",
5 | {
6 | "modules": false, // 对ES6的模块文件不做转化,以便使用tree shaking、sideEffects等
7 | "useBuiltIns": "entry", // browserslist环境不支持的所有垫片都导入
8 | // https://babeljs.io/docs/en/babel-preset-env#usebuiltins
9 | // https://github.com/zloirock/core-js/blob/master/docs/2019-03-19-core-js-3-babel-and-a-look-into-the-future.md
10 | "corejs": {
11 | "version": 3, // 使用core-js@3
12 | "proposals": true
13 | }
14 | }
15 | ],
16 | "@babel/preset-react",
17 | "@babel/preset-typescript"
18 | ],
19 | "plugins": []
20 | }
--------------------------------------------------------------------------------
/child-app0/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require("html-webpack-plugin");
2 | // const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
3 | const path = require("path");
4 |
5 | module.exports = {
6 | entry: "./src/index",
7 | // entry: "./src/html-entry",
8 | mode: "development",
9 | devServer: {
10 | // contentBase: path.join(__dirname, "app0"),
11 | port: 3001,
12 | historyApiFallback: true,
13 | },
14 | output: {
15 | publicPath: "/",
16 | },
17 | resolve: {
18 | extensions: ['.ts', '.tsx', '.js', '.jsx'],
19 | },
20 | module: {
21 | rules: [
22 | {
23 | test: /\.(ts|tsx)}?$/,
24 | loader: "babel-loader",
25 | exclude: /node_modules/,
26 | },
27 | ],
28 | },
29 | plugins: [
30 | new HtmlWebpackPlugin({
31 | template: "./public/index.html",
32 | }),
33 | // new BundleAnalyzerPlugin()
34 | ],
35 | externals: {
36 | 'react': 'React',
37 | 'react-dom': 'ReactDOM',
38 | 'react-router-dom': 'ReactRouterDOM'
39 | }
40 | };
--------------------------------------------------------------------------------
/child-app1/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "child-app0",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "webpack serve",
8 | "build": "webpack --watch"
9 | },
10 | "keywords": [],
11 | "author": "",
12 | "license": "ISC",
13 | "dependencies": {
14 | "@babel/runtime-corejs3": "^7.13.17",
15 | "qiankun": "^2.4.0",
16 | "react": "^17.0.2",
17 | "react-dom": "^17.0.2",
18 | "react-router-cache-route": "^1.11.0",
19 | "react-router-dom": "^5.2.0"
20 | },
21 | "devDependencies": {
22 | "@babel/core": "^7.13.16",
23 | "@babel/plugin-transform-runtime": "^7.13.15",
24 | "@babel/preset-env": "^7.13.15",
25 | "@babel/preset-react": "^7.13.13",
26 | "@babel/preset-typescript": "^7.13.0",
27 | "@types/node": "^14.14.41",
28 | "@types/react-dom": "^17.0.3",
29 | "@types/react-router-dom": "^5.1.7",
30 | "babel-loader": "^8.2.2",
31 | "html-webpack-plugin": "^5.3.1",
32 | "webpack": "^5.35.1",
33 | "webpack-cli": "^4.6.0",
34 | "webpack-dev-server": "^3.11.2"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/child-app1/src/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import {BrowserRouter, Route} from 'react-router-dom';
4 | import CacheRoute, {CacheSwitch} from 'react-router-cache-route';
5 |
6 | import List from './list';
7 | import Item from './item';
8 | import Entry from './entry';
9 |
10 | const App = () => (
11 | <>
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | >
20 | );
21 |
22 | interface IQiankunProps {
23 | container: HTMLElement;
24 | }
25 |
26 | // ReactDOM.render(, document.querySelector('#root'));
27 |
28 | export async function bootstrap() {
29 | console.log('react app bootstraped');
30 | }
31 |
32 | export async function mount(props: IQiankunProps) {
33 | ReactDOM.render(, props.container.querySelector('#root'));
34 | }
35 |
36 | export async function unmount(params: IQiankunProps) {
37 | // do nothing
38 | }
39 |
40 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "micro-frontend-playground",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "webpack-cli serve",
8 | "build": "webpack --mode development"
9 | },
10 | "keywords": [],
11 | "author": "",
12 | "license": "ISC",
13 | "dependencies": {
14 | "@babel/runtime-corejs3": "^7.13.17",
15 | "qiankun": "^2.4.0",
16 | "react": "^17.0.2",
17 | "react-dom": "^17.0.2",
18 | "react-router-cache-route": "^1.11.0",
19 | "react-router-dom": "^5.2.0"
20 | },
21 | "devDependencies": {
22 | "@babel/core": "^7.13.16",
23 | "@babel/plugin-transform-runtime": "^7.13.15",
24 | "@babel/preset-env": "^7.13.15",
25 | "@babel/preset-react": "^7.13.13",
26 | "@babel/preset-typescript": "^7.13.0",
27 | "@types/node": "^14.14.41",
28 | "@types/react-dom": "^17.0.3",
29 | "@types/react-router-dom": "^5.1.7",
30 | "babel-loader": "^8.2.2",
31 | "html-webpack-plugin": "^5.3.1",
32 | "webpack": "^5.35.0",
33 | "webpack-cli": "^4.6.0",
34 | "webpack-dev-server": "^3.11.2"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/child-app0/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "child-app0",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "webpack serve",
8 | "build": "webpack --watch"
9 | },
10 | "keywords": [],
11 | "author": "",
12 | "license": "ISC",
13 | "dependencies": {
14 | "@babel/runtime": "^7.13.17",
15 | "@babel/runtime-corejs3": "^7.13.17",
16 | "qiankun": "^2.4.0",
17 | "react": "^17.0.2",
18 | "react-dom": "^17.0.2",
19 | "react-router-cache-route": "^1.11.0",
20 | "react-router-dom": "^5.2.0"
21 | },
22 | "devDependencies": {
23 | "@babel/core": "^7.13.16",
24 | "@babel/plugin-transform-runtime": "^7.13.15",
25 | "@babel/preset-env": "^7.13.15",
26 | "@babel/preset-react": "^7.13.13",
27 | "@babel/preset-typescript": "^7.13.0",
28 | "@types/node": "^14.14.41",
29 | "@types/react-dom": "^17.0.3",
30 | "@types/react-router-dom": "^5.1.7",
31 | "babel-loader": "^8.2.2",
32 | "html-webpack-plugin": "^5.3.1",
33 | "webpack": "^5.35.1",
34 | "webpack-cli": "^4.6.0",
35 | "webpack-dev-server": "^3.11.2"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/child-app0/dist/main.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /*
2 | object-assign
3 | (c) Sindre Sorhus
4 | @license MIT
5 | */
6 |
7 | /** @license React v0.20.2
8 | * scheduler.production.min.js
9 | *
10 | * Copyright (c) Facebook, Inc. and its affiliates.
11 | *
12 | * This source code is licensed under the MIT license found in the
13 | * LICENSE file in the root directory of this source tree.
14 | */
15 |
16 | /** @license React v16.13.1
17 | * react-is.production.min.js
18 | *
19 | * Copyright (c) Facebook, Inc. and its affiliates.
20 | *
21 | * This source code is licensed under the MIT license found in the
22 | * LICENSE file in the root directory of this source tree.
23 | */
24 |
25 | /** @license React v17.0.2
26 | * react-dom.production.min.js
27 | *
28 | * Copyright (c) Facebook, Inc. and its affiliates.
29 | *
30 | * This source code is licensed under the MIT license found in the
31 | * LICENSE file in the root directory of this source tree.
32 | */
33 |
34 | /** @license React v17.0.2
35 | * react.production.min.js
36 | *
37 | * Copyright (c) Facebook, Inc. and its affiliates.
38 | *
39 | * This source code is licensed under the MIT license found in the
40 | * LICENSE file in the root directory of this source tree.
41 | */
42 |
--------------------------------------------------------------------------------
/child-app0/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require("html-webpack-plugin");
2 | // const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
3 | const path = require("path");
4 |
5 | module.exports = {
6 | entry: "./src/index",
7 | mode: "development",
8 | devServer: {
9 | contentBase: path.join(__dirname, "dist"),
10 | port: 7700,
11 | historyApiFallback: true,
12 | injectClient: false,
13 | headers: {
14 | 'Access-Control-Allow-Origin': '*',
15 | },
16 | },
17 | output: {
18 | publicPath: "/",
19 | library: 'app0',
20 | libraryTarget: 'umd',
21 | chunkLoadingGlobal: 'app0GlobalFunc',
22 | },
23 | resolve: {
24 | extensions: ['.ts', '.tsx', '.js', '.jsx'],
25 | },
26 | module: {
27 | rules: [
28 | {
29 | test: /\.(ts|tsx)}?$/,
30 | loader: "babel-loader",
31 | exclude: /node_modules/,
32 | },
33 | ],
34 | },
35 | plugins: [
36 | new HtmlWebpackPlugin({
37 | template: "./public/index.html",
38 | }),
39 | // new BundleAnalyzerPlugin()
40 | ],
41 | externals: {
42 | 'react': 'React',
43 | 'react-dom': 'ReactDOM',
44 | 'react-router-dom': 'ReactRouterDOM'
45 | }
46 | };
--------------------------------------------------------------------------------
/child-app1/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require("html-webpack-plugin");
2 | // const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
3 | const path = require("path");
4 |
5 | module.exports = {
6 | entry: "./src/index",
7 | mode: "development",
8 | devServer: {
9 | contentBase: path.join(__dirname, "dist"),
10 | port: 7701,
11 | historyApiFallback: true,
12 | injectClient: false,
13 | headers: {
14 | 'Access-Control-Allow-Origin': '*',
15 | },
16 | },
17 | output: {
18 | publicPath: "auto",
19 | library: 'app1',
20 | libraryTarget: 'umd',
21 | chunkLoadingGlobal: 'app1GlobalFunc',
22 | },
23 | resolve: {
24 | extensions: ['.ts', '.tsx', '.js', '.jsx'],
25 | },
26 | module: {
27 | rules: [
28 | {
29 | test: /\.(ts|tsx)}?$/,
30 | loader: "babel-loader",
31 | exclude: /node_modules/,
32 | },
33 | ],
34 | },
35 | plugins: [
36 | new HtmlWebpackPlugin({
37 | template: "./public/index.html",
38 | }),
39 | // new BundleAnalyzerPlugin()
40 | ],
41 | externals: {
42 | 'react': 'React',
43 | 'react-dom': 'ReactDOM',
44 | 'react-router-dom': 'ReactRouterDOM'
45 | }
46 | };
--------------------------------------------------------------------------------
/child-app0/src/index.tsx:
--------------------------------------------------------------------------------
1 | import React, {useEffect} from 'react';
2 | import ReactDOM from 'react-dom';
3 | import {BrowserRouter, useLocation, useHistory} from 'react-router-dom';
4 | import CacheRoute, {CacheSwitch} from 'react-router-cache-route';
5 |
6 | import List from './list';
7 | import Item from './item';
8 | import Entry from './entry';
9 |
10 | const App = () => {
11 | // console.log('app render');
12 |
13 | const {pathname} = useLocation();
14 | const history = useHistory();
15 |
16 | useEffect(() => {
17 | if (pathname === '/') {
18 | history.push('/item');
19 | }
20 | }, [pathname]);
21 |
22 | return (
23 | <>
24 |
25 |
26 |
27 |
28 |
29 | >
30 | );
31 | }
32 |
33 | const App1 = () => (
34 | App1
35 | )
36 |
37 | interface IQiankunProps {
38 | container: HTMLElement;
39 | }
40 |
41 | // ReactDOM.render(, document.querySelector('#root'));
42 |
43 | export async function bootstrap() {
44 | console.log('react app bootstraped');
45 | }
46 |
47 | export async function mount(props: IQiankunProps) {
48 | // console.log('app0 mount', props.container);
49 | ReactDOM.render(
50 |
51 |
52 | ,
53 | props.container.querySelector('#root')
54 | );
55 | }
56 |
57 | export async function unmount(params: IQiankunProps) {
58 | console.log('app unmount');
59 | }
60 |
61 |
--------------------------------------------------------------------------------
/src/index.tsx:
--------------------------------------------------------------------------------
1 | import React, {useState, useRef, useEffect} from 'react';
2 | import ReactDOM from 'react-dom';
3 | import {registerMicroApps, start, loadMicroApp} from 'qiankun';
4 | import {BrowserRouter} from 'react-router-dom';
5 | import {useHistory, useLocation, Redirect, Link} from 'react-router-dom';
6 |
7 | const apps = [
8 | {name: 'app0', activeRule: '/app0', entry: '//localhost:7700', container: '#micro-app'},
9 | {name: 'app1', activeRule: '/app1', entry: '//localhost:7701', container: '#micro-app'}
10 | ];
11 |
12 | const Aside = () => {
13 | const {pathname} = useLocation();
14 | const activeAppPath = pathname.match(/(\w+)/) ? pathname.match(/(\w+)/)[0] : null;
15 |
16 | useEffect(() => {
17 | if (activeAppPath) {
18 | const aciveApp = apps.filter(app => app.name === activeAppPath)[0];
19 | loadMicroApp(aciveApp);
20 | }
21 | }, [activeAppPath]);
22 |
23 | // useEffect(() => {
24 | // registerMicroApps(apps);
25 | // start();
26 | // }, []);
27 |
28 | return (
29 | <>
30 | 菜单栏
31 |
32 | {apps.map(app => ({app.name}))}
33 |
34 | >
35 | )
36 | };
37 |
38 | const Content = () => {
39 | return (
40 | <>
41 | 挂载点:
42 |
43 | >
44 | )
45 | }
46 |
47 | const App = () => {
48 | return (
49 |
50 |
51 |
52 |
53 |
54 | )
55 | }
56 |
57 | ReactDOM.render(
58 | ,
59 | document.querySelector('#root')
60 | );
61 |
62 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # qiankun下子应用keep-alive的方案与原理
2 |
3 | 先说下keep-alive的效果,首次在某个容器内渲染一个子应用,然后路由切换,容器渲染其他子应用。路由再次切回,容器渲染之前的子应用并且保留之前子应用的状态。
4 |
5 | 
6 |
7 | 这种听起来很简单就能实现,Vue中用内置的keep-alive就好,React的话react-router-cache-route这个库也可以实现同样的功能。原理其实也很简单,不用管具体细节,反正路由切换不销毁重新并创建组件实例就可以了。
8 |
9 | 但是实际上在qiankun中,仅仅keep-alive整个子应用也是无法实现这个效果的。[Why??](https://www.notion.so/qiankun-keep-alive-4f8d90f938d041f7a98d37c1bb277e9e)
10 |
11 | qiankun有两种运作模式:
12 |
13 | 1.使用registerMicroApps+start,这是挂自动档,路由改变,重新load子应用.
14 |
15 | 2.使用loadMicroApp,每次路由匹配上,手动load子应用.
16 |
17 | 自动档下,是这样运作的:
18 |
19 | 1.首次load应用,创建子应用实例,渲染。
20 |
21 | 2.切到其他子应用后切回,会重新创建新的子应用实例并渲染。是的,之前的子应用实例qiankun直接不要了,即使你没有手动销毁实例。所以说,采用这种模式的话一定要在子应用暴露的unmount钩子里手动销毁实例,不然就内存泄漏了。
22 |
23 | qiankun并没有提供配置项来修正这种行为,旧的实例直接被弃置不用了,而你keep-alive的仅仅是子应用下的某个组件实例,而整个子应用实例都被弃之不用了,keep-alive某个组件自然是没有任何用处的。
24 |
25 | 而loadMicroApp则不然,loadMicroApp的策略是每个子应用都有一个唯一的实例ID,reload时会复用之前的实例。剔除我们不关心的细节,抽象出来的代码是这样的:
26 |
27 | [https://codesandbox.io/s/great-leakey-rv03i?file=/src/index.js](https://codesandbox.io/s/great-leakey-rv03i?file=/src/index.js)
28 |
29 | 当然这个例子中没有路由切换,所以可以没有keep-alive也成功存住状态了。
30 |
31 | 看这段代码要关注的是ReactDOM.render的行为,现在是往wrapper0里render了两次App0,这种case下App0的状态是保留了首次的。
32 |
33 | 但是如果往wrapper里render null或者其他App之后再次render App0,那么App0第一次渲染时的状态是不会被保留的。
34 |
35 | 而我阅读了qiankun的源码,得出的结论是qiankun中的行为就是我例子中这样的,所以App0的状态可以被保留。
36 |
37 | 那么有人会问,子应用很可能是Vue的啊,那么情况是什么样的呢?如果有这个疑问,说明可能这对你而言是一个很好的动手机会,真实的用qiankun作为基座,切换子应用时keep-alive的代码已经在这个仓库了,你可以自行增加一个Vue子应用
38 |
39 | 下面总结下最简实现子应用keep-alive的操作,其实只需两步:
40 |
41 | 1.基座中监听路由变化,变化后通过loadMicroApp加载对应子应用
42 |
43 | 2.子应用中keep-alive
44 |
45 | React中可以这样来keep-alive:
46 |
47 | ```tsx
48 | import CacheRoute, {CacheSwitch} from 'react-router-cache-route';
49 |
50 | // 在路由配置处使用CacheRoute缓存希望keep-alive的组件,注意when要配置为always
51 |
52 |
53 |
54 |
55 | ```
56 |
57 | 更进一步
58 |
59 | 我们的基座中展示子应用和浏览器展示标签页是的表现是一样的、但是最简方案下,关闭标签页也没有卸载子应用实例,仍然占据着内存,并且下次重新打开也不是全新的子应用,这理论上是不符合预期的行为。
60 |
61 | 所以我们的解决方案是:
62 |
63 | 1.在子应用暴露的unmount钩子中写好卸载子应用的逻辑,如调用ReactDOM.unmountComponentAtNode
64 |
65 | 2.在基座中,关闭标签页时,手动调用app的unmount钩子
66 |
--------------------------------------------------------------------------------
/child-app0/dist/main.js:
--------------------------------------------------------------------------------
1 | /*! For license information please see main.js.LICENSE.txt */
2 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.app0=t():e.app0=t()}(self,(function(){return(()=>{var e={122:(e,t,n)=>{"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;tr})},552:(e,t,n)=>{"use strict";function r(e,t){return(r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>o})},756:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}n.d(t,{Z:()=>r})},71:(e,t,n)=>{"use strict";n.d(t,{lX:()=>E,q_:()=>O,ob:()=>h,PP:()=>N,Ep:()=>p,Hp:()=>m});var r=n(122);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=0;d--){var p=l[d];"."===p?a(l,d):".."===p?(a(l,d),f++):f&&(a(l,d),f--)}if(!c)for(;f--;f)l.unshift("..");!c||""===l[0]||l[0]&&o(l[0])||l.unshift("");var h=l.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h}(i.pathname,l.pathname)):i.pathname=l.pathname:i.pathname||(i.pathname="/"),i}function m(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&i(e.state,t.state)}function v(){var e=null,t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),f({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=h(e,t,d(),w.location);s.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,f({action:r,location:o}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},l={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},i={};function u(e){return r.isMemo(e)?l:i[e.$$typeof]||o}i[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},i[r.Memo]=l;var c=Object.defineProperty,s=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=p(n);o&&o!==h&&e(t,o,r)}var l=s(n);f&&(l=l.concat(f(n)));for(var i=u(t),m=u(n),v=0;v{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},523:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>s});var r=n(294),o=n(552),a=n(697),l=n.n(a),i=1073741823,u="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};function c(e){var t=[];return{on:function(e){t.push(e)},off:function(e){t=t.filter((function(t){return t!==e}))},get:function(){return e},set:function(n,r){e=n,t.forEach((function(t){return t(e,r)}))}}}const s=r.createContext||function(e,t){var n,a,s="__create-react-context-"+(u["__global_unique_id__"]=(u.__global_unique_id__||0)+1)+"__",f=function(e){function n(){var t;return(t=e.apply(this,arguments)||this).emitter=c(t.props.value),t}(0,o.Z)(n,e);var r=n.prototype;return r.getChildContext=function(){var e;return(e={})[s]=this.emitter,e},r.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((a=r)===(l=o)?0!==a||1/a==1/l:a!=a&&l!=l)?n=0:(n="function"==typeof t?t(r,o):i,0!=(n|=0)&&this.emitter.set(e.value,n))}var a,l},r.render=function(){return this.props.children},n}(r.Component);f.childContextTypes=((n={})[s]=l().object.isRequired,n);var d=function(t){function n(){var e;return(e=t.apply(this,arguments)||this).state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,o.Z)(n,t);var r=n.prototype;return r.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?i:t},r.componentDidMount=function(){this.context[s]&&this.context[s].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?i:e},r.componentWillUnmount=function(){this.context[s]&&this.context[s].off(this.onUpdate)},r.getValue=function(){return this.context[s]?this.context[s].get():e},r.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(r.Component);return d.contextTypes=((a={})[s]=l().object,a),{Provider:f,Consumer:d}}},418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,a){for(var l,i,u=o(e),c=1;c{var r=n(826);e.exports=function e(t,n,o){return r(n)||(o=n||o,n=[]),o=o||{},t instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,l){if(l!==r){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},448:(e,t,n)=>{"use strict";var r=n(294),o=n(418),a=n(840);function l(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nt}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!p.call(m,e)||!p.call(h,e)&&(d.test(e)?m[e]=!0:(h[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(g,b);y[t]=new v(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(g,b);y[t]=new v(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(g,b);y[t]=new v(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){y[e]=new v(e,1,!1,e.toLowerCase(),null,!1,!1)})),y.xlinkHref=new v("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){y[e]=new v(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=60103,S=60106,x=60107,_=60108,C=60114,P=60109,O=60110,T=60112,N=60113,L=60120,R=60115,M=60116,z=60121,j=60128,A=60129,F=60130,D=60131;if("function"==typeof Symbol&&Symbol.for){var U=Symbol.for;E=U("react.element"),S=U("react.portal"),x=U("react.fragment"),_=U("react.strict_mode"),C=U("react.profiler"),P=U("react.provider"),O=U("react.context"),T=U("react.forward_ref"),N=U("react.suspense"),L=U("react.suspense_list"),R=U("react.memo"),M=U("react.lazy"),z=U("react.block"),U("react.scope"),j=U("react.opaque.id"),A=U("react.debug_trace_mode"),F=U("react.offscreen"),D=U("react.legacy_hidden")}var I,$="function"==typeof Symbol&&Symbol.iterator;function B(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=$&&e[$]||e["@@iterator"])?e:null}function V(e){if(void 0===I)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);I=t&&t[1]||""}return"\n"+I+e}var H=!1;function W(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var r=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){r=e}e.call(t.prototype)}else{try{throw Error()}catch(e){r=e}e()}}catch(e){if(e&&r&&"string"==typeof e.stack){for(var o=e.stack.split("\n"),a=r.stack.split("\n"),l=o.length-1,i=a.length-1;1<=l&&0<=i&&o[l]!==a[i];)i--;for(;1<=l&&0<=i;l--,i--)if(o[l]!==a[i]){if(1!==l||1!==i)do{if(l--,0>--i||o[l]!==a[i])return"\n"+o[l].replace(" at new "," at ")}while(1<=l&&0<=i);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?V(e):""}function Q(e){switch(e.tag){case 5:return V(e.type);case 16:return V("Lazy");case 13:return V("Suspense");case 19:return V("SuspenseList");case 0:case 2:case 15:return W(e.type,!1);case 11:return W(e.type.render,!1);case 22:return W(e.type._render,!1);case 1:return W(e.type,!0);default:return""}}function q(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case S:return"Portal";case C:return"Profiler";case _:return"StrictMode";case N:return"Suspense";case L:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case O:return(e.displayName||"Context")+".Consumer";case P:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case R:return q(e.type);case z:return q(e._render);case M:t=e._payload,e=e._init;try{return q(e(t))}catch(e){}}return null}function Z(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function K(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Y(e){e._valueTracker||(e._valueTracker=function(e){var t=K(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function X(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=K(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function G(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return o({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=Z(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=Z(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?oe(e,t.type,n):t.hasOwnProperty("defaultValue")&&oe(e,t.type,Z(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function oe(e,t,n){"number"===t&&G(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function ae(e,t){return e=o({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function le(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o=n.length))throw Error(l(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:Z(n)}}function ce(e,t){var n=Z(t.value),r=Z(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function se(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var fe="http://www.w3.org/1999/xhtml";function de(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?de(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var he,me,ve=(me=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((he=he||document.createElement("div")).innerHTML="",t=he.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return me(e,t)}))}:me);function ye(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ge={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},be=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ge.hasOwnProperty(e)&&ge[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(ge).forEach((function(e){be.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ge[t]=ge[e]}))}));var Ee=o({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Se(e,t){if(t){if(Ee[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(l(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(l(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(l(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(l(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function _e(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Pe=null,Oe=null;function Te(e){if(e=Jr(e)){if("function"!=typeof Ce)throw Error(l(280));var t=e.stateNode;t&&(t=to(t),Ce(e.stateNode,e.type,t))}}function Ne(e){Pe?Oe?Oe.push(e):Oe=[e]:Pe=e}function Le(){if(Pe){var e=Pe,t=Oe;if(Oe=Pe=null,Te(e),t)for(e=0;e(r=31-Vt(r))?0:1<n;n++)t.push(e);return t}function Bt(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Vt(t)]=n}var Vt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/Wt|0)|0},Ht=Math.log,Wt=Math.LN2,Qt=a.unstable_UserBlockingPriority,qt=a.unstable_runWithPriority,Zt=!0;function Kt(e,t,n,r){Ae||ze();var o=Xt,a=Ae;Ae=!0;try{Me(o,e,t,n,r)}finally{(Ae=a)||De()}}function Yt(e,t,n,r){qt(Qt,Xt.bind(null,e,t,n,r))}function Xt(e,t,n,r){var o;if(Zt)if((o=0==(4&t))&&0=zn),Fn=String.fromCharCode(32),Dn=!1;function Un(e,t){switch(e){case"keyup":return-1!==Rn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function In(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var $n=!1,Bn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Vn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Bn[e.type]:"textarea"===t}function Hn(e,t,n,r){Ne(r),0<(t=Mr(t,"onChange")).length&&(n=new dn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Qn=null;function qn(e){_r(e,0)}function Zn(e){if(X(eo(e)))return e}function Kn(e,t){if("change"===e)return t}var Yn=!1;if(f){var Xn;if(f){var Gn="oninput"in document;if(!Gn){var Jn=document.createElement("div");Jn.setAttribute("oninput","return;"),Gn="function"==typeof Jn.oninput}Xn=Gn}else Xn=!1;Yn=Xn&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=cr(r)}}function fr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?fr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function dr(){for(var e=window,t=G();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=G((e=t.contentWindow).document)}return t}function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var hr=f&&"documentMode"in document&&11>=document.documentMode,mr=null,vr=null,yr=null,gr=!1;function br(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;gr||null==mr||mr!==G(r)||(r="selectionStart"in(r=mr)&&pr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},yr&&ur(yr,r)||(yr=r,0<(r=Mr(vr,"onSelect")).length&&(t=new dn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=mr)))}zt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),zt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),zt(Mt,2);for(var wr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),kr=0;kroo||(e.current=ro[oo],ro[oo]=null,oo--)}function io(e,t){oo++,ro[oo]=e.current,e.current=t}var uo={},co=ao(uo),so=ao(!1),fo=uo;function po(e,t){var n=e.type.contextTypes;if(!n)return uo;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function ho(e){return null!=e.childContextTypes}function mo(){lo(so),lo(co)}function vo(e,t,n){if(co.current!==uo)throw Error(l(168));io(co,t),io(so,n)}function yo(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in e))throw Error(l(108,q(t)||"Unknown",a));return o({},n,r)}function go(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||uo,fo=co.current,io(co,e),io(so,so.current),!0}function bo(e,t,n){var r=e.stateNode;if(!r)throw Error(l(169));n?(e=yo(e,t,fo),r.__reactInternalMemoizedMergedChildContext=e,lo(so),lo(co),io(co,e)):lo(so),io(so,n)}var wo=null,ko=null,Eo=a.unstable_runWithPriority,So=a.unstable_scheduleCallback,xo=a.unstable_cancelCallback,_o=a.unstable_shouldYield,Co=a.unstable_requestPaint,Po=a.unstable_now,Oo=a.unstable_getCurrentPriorityLevel,To=a.unstable_ImmediatePriority,No=a.unstable_UserBlockingPriority,Lo=a.unstable_NormalPriority,Ro=a.unstable_LowPriority,Mo=a.unstable_IdlePriority,zo={},jo=void 0!==Co?Co:function(){},Ao=null,Fo=null,Do=!1,Uo=Po(),Io=1e4>Uo?Po:function(){return Po()-Uo};function $o(){switch(Oo()){case To:return 99;case No:return 98;case Lo:return 97;case Ro:return 96;case Mo:return 95;default:throw Error(l(332))}}function Bo(e){switch(e){case 99:return To;case 98:return No;case 97:return Lo;case 96:return Ro;case 95:return Mo;default:throw Error(l(332))}}function Vo(e,t){return e=Bo(e),Eo(e,t)}function Ho(e,t,n){return e=Bo(e),So(e,t,n)}function Wo(){if(null!==Fo){var e=Fo;Fo=null,xo(e)}Qo()}function Qo(){if(!Do&&null!==Ao){Do=!0;var e=0;try{var t=Ao;Vo(99,(function(){for(;em?(v=f,f=null):v=f.sibling;var y=p(o,f,i[m],u);if(null===y){null===f&&(f=v);break}e&&f&&null===y.alternate&&t(o,f),l=a(y,l,m),null===s?c=y:s.sibling=y,s=y,f=v}if(m===i.length)return n(o,f),c;if(null===f){for(;mv?(y=m,m=null):y=m.sibling;var b=p(o,m,g.value,c);if(null===b){null===m&&(m=y);break}e&&m&&null===b.alternate&&t(o,m),i=a(b,i,v),null===f?s=b:f.sibling=b,f=b,m=y}if(g.done)return n(o,m),s;if(null===m){for(;!g.done;v++,g=u.next())null!==(g=d(o,g.value,c))&&(i=a(g,i,v),null===f?s=g:f.sibling=g,f=g);return s}for(m=r(o,m);!g.done;v++,g=u.next())null!==(g=h(m,o,v,g.value,c))&&(e&&null!==g.alternate&&m.delete(null===g.key?v:g.key),i=a(g,i,v),null===f?s=g:f.sibling=g,f=g);return e&&m.forEach((function(e){return t(o,e)})),s}return function(e,r,a,u){var c="object"==typeof a&&null!==a&&a.type===x&&null===a.key;c&&(a=a.props.children);var s="object"==typeof a&&null!==a;if(s)switch(a.$$typeof){case E:e:{for(s=a.key,c=r;null!==c;){if(c.key===s){switch(c.tag){case 7:if(a.type===x){n(e,c.sibling),(r=o(c,a.props.children)).return=e,e=r;break e}break;default:if(c.elementType===a.type){n(e,c.sibling),(r=o(c,a.props)).ref=wa(e,c,a),r.return=e,e=r;break e}}n(e,c);break}t(e,c),c=c.sibling}a.type===x?((r=Bu(a.props.children,e.mode,u,a.key)).return=e,e=r):((u=$u(a.type,a.key,a.props,null,e.mode,u)).ref=wa(e,r,a),u.return=e,e=u)}return i(e);case S:e:{for(c=a.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){n(e,r.sibling),(r=o(r,a.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Wu(a,e.mode,u)).return=e,e=r}return i(e)}if("string"==typeof a||"number"==typeof a)return a=""+a,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,a)).return=e,e=r):(n(e,r),(r=Hu(a,e.mode,u)).return=e,e=r),i(e);if(ba(a))return m(e,r,a,u);if(B(a))return v(e,r,a,u);if(s&&ka(e,a),void 0===a&&!c)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(l(152,q(e.type)||"Component"))}return n(e,r)}}var Sa=Ea(!0),xa=Ea(!1),_a={},Ca=ao(_a),Pa=ao(_a),Oa=ao(_a);function Ta(e){if(e===_a)throw Error(l(174));return e}function Na(e,t){switch(io(Oa,t),io(Pa,e),io(Ca,_a),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}lo(Ca),io(Ca,t)}function La(){lo(Ca),lo(Pa),lo(Oa)}function Ra(e){Ta(Oa.current);var t=Ta(Ca.current),n=pe(t,e.type);t!==n&&(io(Pa,e),io(Ca,n))}function Ma(e){Pa.current===e&&(lo(Ca),lo(Pa))}var za=ao(0);function ja(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Aa=null,Fa=null,Da=!1;function Ua(e,t){var n=Du(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ia(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function $a(e){if(Da){var t=Fa;if(t){var n=t;if(!Ia(e,t)){if(!(t=Hr(n.nextSibling))||!Ia(e,t))return e.flags=-1025&e.flags|2,Da=!1,void(Aa=e);Ua(Aa,n)}Aa=e,Fa=Hr(t.firstChild)}else e.flags=-1025&e.flags|2,Da=!1,Aa=e}}function Ba(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Aa=e}function Va(e){if(e!==Aa)return!1;if(!Da)return Ba(e),Da=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Ir(t,e.memoizedProps))for(t=Fa;t;)Ua(e,t),t=Hr(t.nextSibling);if(Ba(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(l(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Fa=Hr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Fa=null}}else Fa=Aa?Hr(e.stateNode.nextSibling):null;return!0}function Ha(){Fa=Aa=null,Da=!1}var Wa=[];function Qa(){for(var e=0;ea))throw Error(l(301));a+=1,Ga=Xa=null,t.updateQueue=null,qa.current=Ll,e=n(r,o)}while(el)}if(qa.current=Ol,t=null!==Xa&&null!==Xa.next,Ka=0,Ga=Xa=Ya=null,Ja=!1,t)throw Error(l(300));return e}function ol(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Ga?Ya.memoizedState=Ga=e:Ga=Ga.next=e,Ga}function al(){if(null===Xa){var e=Ya.alternate;e=null!==e?e.memoizedState:null}else e=Xa.next;var t=null===Ga?Ya.memoizedState:Ga.next;if(null!==t)Ga=t,Xa=e;else{if(null===e)throw Error(l(310));e={memoizedState:(Xa=e).memoizedState,baseState:Xa.baseState,baseQueue:Xa.baseQueue,queue:Xa.queue,next:null},null===Ga?Ya.memoizedState=Ga=e:Ga=Ga.next=e}return Ga}function ll(e,t){return"function"==typeof t?t(e):t}function il(e){var t=al(),n=t.queue;if(null===n)throw Error(l(311));n.lastRenderedReducer=e;var r=Xa,o=r.baseQueue,a=n.pending;if(null!==a){if(null!==o){var i=o.next;o.next=a.next,a.next=i}r.baseQueue=o=a,n.pending=null}if(null!==o){o=o.next,r=r.baseState;var u=i=a=null,c=o;do{var s=c.lane;if((Ka&s)===s)null!==u&&(u=u.next={lane:0,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),r=c.eagerReducer===e?c.eagerState:e(r,c.action);else{var f={lane:s,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};null===u?(i=u=f,a=r):u=u.next=f,Ya.lanes|=s,ji|=s}c=c.next}while(null!==c&&c!==o);null===u?a=r:u.next=i,lr(r,t.memoizedState)||(Ml=!0),t.memoizedState=r,t.baseState=a,t.baseQueue=u,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function ul(e){var t=al(),n=t.queue;if(null===n)throw Error(l(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,a=t.memoizedState;if(null!==o){n.pending=null;var i=o=o.next;do{a=e(a,i.action),i=i.next}while(i!==o);lr(a,t.memoizedState)||(Ml=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function cl(e,t,n){var r=t._getVersion;r=r(t._source);var o=t._workInProgressVersionPrimary;if(null!==o?e=o===r:(e=e.mutableReadLanes,(e=(Ka&e)===e)&&(t._workInProgressVersionPrimary=r,Wa.push(t))),e)return n(t._source);throw Wa.push(t),Error(l(350))}function sl(e,t,n,r){var o=Pi;if(null===o)throw Error(l(349));var a=t._getVersion,i=a(t._source),u=qa.current,c=u.useState((function(){return cl(o,t,n)})),s=c[1],f=c[0];c=Ga;var d=e.memoizedState,p=d.refs,h=p.getSnapshot,m=d.source;d=d.subscribe;var v=Ya;return e.memoizedState={refs:p,source:t,subscribe:r},u.useEffect((function(){p.getSnapshot=n,p.setSnapshot=s;var e=a(t._source);if(!lr(i,e)){e=n(t._source),lr(f,e)||(s(e),e=iu(v),o.mutableReadLanes|=e&o.pendingLanes),e=o.mutableReadLanes,o.entangledLanes|=e;for(var r=o.entanglements,l=e;0n?98:n,(function(){e(!0)})),Vo(97<\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=c.createElement(n,{is:r.is}):(e=c.createElement(n),"select"===n&&(c=e,r.multiple?c.multiple=!0:r.size&&(c.size=r.size))):e=c.createElementNS(e,n),e[Zr]=t,e[Kr]=r,Hl(e,t),t.stateNode=e,c=xe(n,r),n){case"dialog":Cr("cancel",e),Cr("close",e),a=r;break;case"iframe":case"object":case"embed":Cr("load",e),a=r;break;case"video":case"audio":for(a=0;aIi&&(t.flags|=64,i=!0,ei(r,!1),t.lanes=33554432)}else{if(!i)if(null!==(e=ja(c))){if(t.flags|=64,i=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),ei(r,!0),null===r.tail&&"hidden"===r.tailMode&&!c.alternate&&!Da)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Io()-r.renderingStartTime>Ii&&1073741824!==n&&(t.flags|=64,i=!0,ei(r,!1),t.lanes=33554432);r.isBackwards?(c.sibling=t.child,t.child=c):(null!==(n=r.last)?n.sibling=c:t.child=c,r.last=c)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Io(),n.sibling=null,t=za.current,io(za,i?1&t|2:1&t),n):null;case 23:case 24:return yu(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(l(156,t.tag))}function ni(e){switch(e.tag){case 1:ho(e.type)&&mo();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(La(),lo(so),lo(co),Qa(),0!=(64&(t=e.flags)))throw Error(l(285));return e.flags=-4097&t|64,e;case 5:return Ma(e),null;case 13:return lo(za),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return lo(za),null;case 4:return La(),null;case 10:return ea(e),null;case 23:case 24:return yu(),null;default:return null}}function ri(e,t){try{var n="",r=t;do{n+=Q(r),r=r.return}while(r);var o=n}catch(e){o="\nError generating stack: "+e.message+"\n"+e.stack}return{value:e,source:t,stack:o}}function oi(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}Hl=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Wl=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,Ta(Ca.current);var l,i=null;switch(n){case"input":a=J(e,a),r=J(e,r),i=[];break;case"option":a=ae(e,a),r=ae(e,r),i=[];break;case"select":a=o({},a,{value:void 0}),r=o({},r,{value:void 0}),i=[];break;case"textarea":a=ie(e,a),r=ie(e,r),i=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=Ar)}for(f in Se(n,r),n=null,a)if(!r.hasOwnProperty(f)&&a.hasOwnProperty(f)&&null!=a[f])if("style"===f){var c=a[f];for(l in c)c.hasOwnProperty(l)&&(n||(n={}),n[l]="")}else"dangerouslySetInnerHTML"!==f&&"children"!==f&&"suppressContentEditableWarning"!==f&&"suppressHydrationWarning"!==f&&"autoFocus"!==f&&(u.hasOwnProperty(f)?i||(i=[]):(i=i||[]).push(f,null));for(f in r){var s=r[f];if(c=null!=a?a[f]:void 0,r.hasOwnProperty(f)&&s!==c&&(null!=s||null!=c))if("style"===f)if(c){for(l in c)!c.hasOwnProperty(l)||s&&s.hasOwnProperty(l)||(n||(n={}),n[l]="");for(l in s)s.hasOwnProperty(l)&&c[l]!==s[l]&&(n||(n={}),n[l]=s[l])}else n||(i||(i=[]),i.push(f,n)),n=s;else"dangerouslySetInnerHTML"===f?(s=s?s.__html:void 0,c=c?c.__html:void 0,null!=s&&c!==s&&(i=i||[]).push(f,s)):"children"===f?"string"!=typeof s&&"number"!=typeof s||(i=i||[]).push(f,""+s):"suppressContentEditableWarning"!==f&&"suppressHydrationWarning"!==f&&(u.hasOwnProperty(f)?(null!=s&&"onScroll"===f&&Cr("scroll",e),i||c===s||(i=[])):"object"==typeof s&&null!==s&&s.$$typeof===j?s.toString():(i=i||[]).push(f,s))}n&&(i=i||[]).push("style",n);var f=i;(t.updateQueue=f)&&(t.flags|=4)}},Ql=function(e,t,n,r){n!==r&&(t.flags|=4)};var ai="function"==typeof WeakMap?WeakMap:Map;function li(e,t,n){(n=ia(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hi||(Hi=!0,Wi=r),oi(0,t)},n}function ii(e,t,n){(n=ia(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return oi(0,t),r(o)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Qi?Qi=new Set([this]):Qi.add(this),oi(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ui="function"==typeof WeakSet?WeakSet:Set;function ci(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){zu(e,t)}else t.current=null}function si(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Zo(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Vr(t.stateNode.containerInfo));case 5:case 6:case 4:case 17:return}throw Error(l(163))}function fi(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var o=e;r=o.next,0!=(4&(o=o.tag))&&0!=(1&o)&&(Lu(n,e),Nu(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Zo(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&fa(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}fa(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&Ur(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))));case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(l(163))}function di(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var o=n.memoizedProps.style;o=null!=o&&o.hasOwnProperty("display")?o.display:null,r.style.display=we("display",o)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function pi(e,t){if(ko&&"function"==typeof ko.onCommitFiberUnmount)try{ko.onCommitFiberUnmount(wo,t)}catch(e){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,o=r.destroy;if(r=r.tag,void 0!==o)if(0!=(4&r))Lu(t,n);else{r=t;try{o()}catch(e){zu(r,e)}}n=n.next}while(n!==e)}break;case 1:if(ci(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(e){zu(t,e)}break;case 5:ci(t);break;case 4:bi(e,t)}}function hi(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function mi(e){return 5===e.tag||3===e.tag||4===e.tag}function vi(e){e:{for(var t=e.return;null!==t;){if(mi(t))break e;t=t.return}throw Error(l(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(l(161))}16&n.flags&&(ye(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||mi(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?yi(e,n,t):gi(e,n,t)}function yi(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Ar));else if(4!==r&&null!==(e=e.child))for(yi(e,t,n),e=e.sibling;null!==e;)yi(e,t,n),e=e.sibling}function gi(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(gi(e,t,n),e=e.sibling;null!==e;)gi(e,t,n),e=e.sibling}function bi(e,t){for(var n,r,o=t,a=!1;;){if(!a){a=o.return;e:for(;;){if(null===a)throw Error(l(160));switch(n=a.stateNode,a.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}a=a.return}a=!0}if(5===o.tag||6===o.tag){e:for(var i=e,u=o,c=u;;)if(pi(i,c),null!==c.child&&4!==c.tag)c.child.return=c,c=c.child;else{if(c===u)break e;for(;null===c.sibling;){if(null===c.return||c.return===u)break e;c=c.return}c.sibling.return=c.return,c=c.sibling}r?(i=n,u=o.stateNode,8===i.nodeType?i.parentNode.removeChild(u):i.removeChild(u)):n.removeChild(o.stateNode)}else if(4===o.tag){if(null!==o.child){n=o.stateNode.containerInfo,r=!0,o.child.return=o,o=o.child;continue}}else if(pi(e,o),null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)return;4===(o=o.return).tag&&(a=!1)}o.sibling.return=o.return,o=o.sibling}}function wi(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var o=null!==e?e.memoizedProps:r;e=t.type;var a=t.updateQueue;if(t.updateQueue=null,null!==a){for(n[Kr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,o),t=xe(e,r),o=0;oo&&(o=i),n&=~a}if(n=o,10<(n=(120>(n=Io()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Si(n/1960))-n)){e.timeoutHandle=$r(Cu.bind(null,e),n);break}Cu(e);break;case 5:Cu(e);break;default:throw Error(l(329))}}return su(e,Io()),e.callbackNode===t?fu.bind(null,e):null}function du(e,t){for(t&=~Fi,t&=~Ai,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0 component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Ri&&(Ri=2),u=ri(u,i),d=l;do{switch(d.tag){case 3:a=u,d.flags|=4096,t&=-t,d.lanes|=t,ca(d,li(0,a,t));break e;case 1:a=u;var k=d.type,E=d.stateNode;if(0==(64&d.flags)&&("function"==typeof k.getDerivedStateFromError||null!==E&&"function"==typeof E.componentDidCatch&&(null===Qi||!Qi.has(E)))){d.flags|=4096,t&=-t,d.lanes|=t,ca(d,ii(d,a,t));break e}}d=d.return}while(null!==d)}_u(n)}catch(e){t=e,Oi===n&&null!==n&&(Oi=n=n.return);continue}break}}function wu(){var e=xi.current;return xi.current=Ol,null===e?Ol:e}function ku(e,t){var n=Ci;Ci|=16;var r=wu();for(Pi===e&&Ti===t||gu(e,t);;)try{Eu();break}catch(t){bu(e,t)}if(Jo(),Ci=n,xi.current=r,null!==Oi)throw Error(l(261));return Pi=null,Ti=0,Ri}function Eu(){for(;null!==Oi;)xu(Oi)}function Su(){for(;null!==Oi&&!_o();)xu(Oi)}function xu(e){var t=Bi(e.alternate,e,Ni);e.memoizedProps=e.pendingProps,null===t?_u(e):Oi=t,_i.current=null}function _u(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ti(n,t,Ni)))return void(Oi=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ni)||0==(4&n.mode)){for(var r=0,o=n.child;null!==o;)r|=o.lanes|o.childLanes,o=o.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1i&&(u=i,i=E,E=u),u=sr(b,E),a=sr(b,i),u&&a&&(1!==k.rangeCount||k.anchorNode!==u.node||k.anchorOffset!==u.offset||k.focusNode!==a.node||k.focusOffset!==a.offset)&&((w=w.createRange()).setStart(u.node,u.offset),k.removeAllRanges(),E>i?(k.addRange(w),k.extend(a.node,a.offset)):(w.setEnd(a.node,a.offset),k.addRange(w))))),w=[];for(k=b;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof b.focus&&b.focus(),b=0;bIo()-Ui?gu(e,0):Fi|=n),su(e,t)}function Au(e,t){var n=e.stateNode;null!==n&&n.delete(t),0==(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===$o()?1:2:(0===nu&&(nu=zi),0===(t=It(62914560&~nu))&&(t=4194304))),n=lu(),null!==(e=cu(e,t))&&(Bt(e,t,n),su(e,n))}function Fu(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Du(e,t,n,r){return new Fu(e,t,n,r)}function Uu(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Iu(e,t){var n=e.alternate;return null===n?((n=Du(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function $u(e,t,n,r,o,a){var i=2;if(r=e,"function"==typeof e)Uu(e)&&(i=1);else if("string"==typeof e)i=5;else e:switch(e){case x:return Bu(n.children,o,a,t);case A:i=8,o|=16;break;case _:i=8,o|=1;break;case C:return(e=Du(12,n,t,8|o)).elementType=C,e.type=C,e.lanes=a,e;case N:return(e=Du(13,n,t,o)).type=N,e.elementType=N,e.lanes=a,e;case L:return(e=Du(19,n,t,o)).elementType=L,e.lanes=a,e;case F:return Vu(n,o,a,t);case D:return(e=Du(24,n,t,o)).elementType=D,e.lanes=a,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case P:i=10;break e;case O:i=9;break e;case T:i=11;break e;case R:i=14;break e;case M:i=16,r=null;break e;case z:i=22;break e}throw Error(l(130,null==e?e:typeof e,""))}return(t=Du(i,n,t,o)).elementType=e,t.type=r,t.lanes=a,t}function Bu(e,t,n,r){return(e=Du(7,e,r,t)).lanes=n,e}function Vu(e,t,n,r){return(e=Du(23,e,r,t)).elementType=F,e.lanes=n,e}function Hu(e,t,n){return(e=Du(6,e,null,t)).lanes=n,e}function Wu(e,t,n){return(t=Du(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Qu(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=$t(0),this.expirationTimes=$t(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=$t(0),this.mutableSourceEagerHydrationData=null}function qu(e,t,n){var r=3{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(448)},921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,l=n?Symbol.for("react.strict_mode"):60108,i=n?Symbol.for("react.profiler"):60114,u=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,s=n?Symbol.for("react.async_mode"):60111,f=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,v=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,g=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case s:case f:case a:case i:case l:case p:return e;default:switch(e=e&&e.$$typeof){case c:case d:case v:case m:case u:return e;default:return t}}case o:return t}}}function E(e){return k(e)===f}t.AsyncMode=s,t.ConcurrentMode=f,t.ContextConsumer=c,t.ContextProvider=u,t.Element=r,t.ForwardRef=d,t.Fragment=a,t.Lazy=v,t.Memo=m,t.Portal=o,t.Profiler=i,t.StrictMode=l,t.Suspense=p,t.isAsyncMode=function(e){return E(e)||k(e)===s},t.isConcurrentMode=E,t.isContextConsumer=function(e){return k(e)===c},t.isContextProvider=function(e){return k(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===d},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===v},t.isMemo=function(e){return k(e)===m},t.isPortal=function(e){return k(e)===o},t.isProfiler=function(e){return k(e)===i},t.isStrictMode=function(e){return k(e)===l},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===f||e===i||e===l||e===p||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===v||e.$$typeof===m||e.$$typeof===u||e.$$typeof===c||e.$$typeof===d||e.$$typeof===g||e.$$typeof===b||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},864:(e,t,n)=>{"use strict";e.exports=n(921)},117:(e,t,n)=>{"use strict";e.exports=n(873)},873:function(e,t,n){!function(e,t,r,o,a){"use strict";var l="default"in t?t.default:t;r=r&&r.hasOwnProperty("default")?r.default:r,o=o&&o.hasOwnProperty("default")?o.default:o;var i=function(e){return void 0===e},u=function(e){return null===e},c=function(e){return"function"==typeof e},s=function(e){return"string"==typeof e},f=function(e){return!(i(e)||u(e))},d=function(e){return e instanceof Array},p=function(e){return"number"==typeof e&&!((t=e)!=t);var t},h=function(e){var t=1e.clientWidth||e.scrollHeight>e.clientHeight)}function M(e){return c(h(O,"document.getElementById"))?[].concat(C(v(m(e,"querySelectorAll","*"),[])),[e]).filter(R):[]}var z={},j=function(){return Object.entries(z).filter((function(e){var t=_(e,2)[1];return t instanceof X?t.state.cached:Object.values(t).some((function(e){return e.state.cached}))}))},A=function(){return k({},z)},F=function(e,t){z[e]=t},D=function(e){delete z[e]},U=function(e){return m(e,"reset")},I=function(e){var t=h(z,[e]);t&&(t instanceof X?U(t):Object.values(t).forEach(U))},$=function(e){return m(e,"refresh")},B=r(),V=B.Provider;function H(e,n){if(c(t.useContext)){var r=t.useContext(B);t.useEffect((function(){var t=m(r,"on",e,n);return function(){return m(t)}}),[])}}B.Consumer;var W=H.bind(null,"didCache"),Q=H.bind(null,"didRecover"),q=f(l.forwardRef),Z="__isComputedUnmatch",K=function(e){return f(e)&&!0!==h(e,Z)},Y=function(e,t){var n=e.match,r=e.when,o=void 0===r?"forward":r;if(K(n)||(n=null),!t.cached&&n)return{cached:!0,matched:!0};if(t.matched&&!n){var a=h(e,"history.action"),l=!1;if(c(o))l=!o(e);else switch(o){case"always":break;case"back":["PUSH","REPLACE"].includes(a)&&(l=!0);break;case"forward":default:"POP"===a&&(l=!0)}if(l)return{cached:!1,matched:!1}}return{matched:!!n}},X=function(e){function t(e){var n;g(this,t);for(var r=arguments.length,o=Array(1{"use strict";n.r(t),n.d(t,{MemoryRouter:()=>r.VA,Prompt:()=>r.NL,Redirect:()=>r.l_,Route:()=>r.AW,Router:()=>r.F0,StaticRouter:()=>r.gx,Switch:()=>r.rs,generatePath:()=>r.Gn,matchPath:()=>r.LX,useHistory:()=>r.k6,useLocation:()=>r.TH,useParams:()=>r.UO,useRouteMatch:()=>r.$B,withRouter:()=>r.EN,BrowserRouter:()=>s,HashRouter:()=>f,Link:()=>y,NavLink:()=>w});var r=n(550),o=n(552),a=n(294),l=n(71),i=(n(697),n(122)),u=n(756),c=n(177),s=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o{"use strict";n.d(t,{VA:()=>y,NL:()=>b,l_:()=>S,AW:()=>P,F0:()=>v,gx:()=>M,rs:()=>z,s6:()=>m,Gn:()=>E,LX:()=>C,k6:()=>F,TH:()=>D,UO:()=>U,$B:()=>I,EN:()=>j});var r=n(552),o=n(294),a=(n(697),n(71)),l=n(523),i=n(177),u=n(122),c=n(779),s=n.n(c),f=(n(864),n(756)),d=n(679),p=n.n(d),h=function(e){var t=(0,l.default)();return t.displayName="Router-History",t}(),m=function(e){var t=(0,l.default)();return t.displayName="Router",t}(),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&this.unlisten()},n.render=function(){return o.createElement(m.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},o.createElement(h.Provider,{children:this.props.children||null,value:this.props.history}))},t}(o.Component),y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o{"use strict";var r=n(418),o=60103,a=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var l=60109,i=60110,u=60112;t.Suspense=60113;var c=60115,s=60116;if("function"==typeof Symbol&&Symbol.for){var f=Symbol.for;o=f("react.element"),a=f("react.portal"),t.Fragment=f("react.fragment"),t.StrictMode=f("react.strict_mode"),t.Profiler=f("react.profiler"),l=f("react.provider"),i=f("react.context"),u=f("react.forward_ref"),t.Suspense=f("react.suspense"),c=f("react.memo"),s=f("react.lazy")}var d="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n{"use strict";e.exports=n(408)},53:(e,t)=>{"use strict";var n,r,o,a;if("object"==typeof performance&&"function"==typeof performance.now){var l=performance;t.unstable_now=function(){return l.now()}}else{var i=Date,u=i.now();t.unstable_now=function(){return i.now()-u}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var c=null,s=null,f=function(){if(null!==c)try{var e=t.unstable_now();c(!0,e),c=null}catch(e){throw setTimeout(f,0),e}};n=function(e){null!==c?setTimeout(n,0,e):(c=e,setTimeout(f,0))},r=function(e,t){s=setTimeout(e,t)},o=function(){clearTimeout(s)},t.unstable_shouldYield=function(){return!1},a=t.unstable_forceFrameRate=function(){}}else{var d=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var h=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof h&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var m=!1,v=null,y=-1,g=5,b=0;t.unstable_shouldYield=function(){return t.unstable_now()>=b},a=function(){},t.unstable_forceFrameRate=function(e){0>e||125>>1,o=e[r];if(!(void 0!==o&&0<_(o,t)))break e;e[r]=t,e[n]=o,n=r}}function S(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length;r_(l,n))void 0!==u&&0>_(u,l)?(e[r]=u,e[i]=n,r=i):(e[r]=l,e[a]=n,r=a);else{if(!(void 0!==u&&0>_(u,n)))break e;e[r]=u,e[i]=n,r=i}}}return t}return null}function _(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],P=[],O=1,T=null,N=3,L=!1,R=!1,M=!1;function z(e){for(var t=S(P);null!==t;){if(null===t.callback)x(P);else{if(!(t.startTime<=e))break;x(P),t.sortIndex=t.expirationTime,E(C,t)}t=S(P)}}function j(e){if(M=!1,z(e),!R)if(null!==S(C))R=!0,n(A);else{var t=S(P);null!==t&&r(j,t.startTime-e)}}function A(e,n){R=!1,M&&(M=!1,o()),L=!0;var a=N;try{for(z(n),T=S(C);null!==T&&(!(T.expirationTime>n)||e&&!t.unstable_shouldYield());){var l=T.callback;if("function"==typeof l){T.callback=null,N=T.priorityLevel;var i=l(T.expirationTime<=n);n=t.unstable_now(),"function"==typeof i?T.callback=i:T===S(C)&&x(C),z(n)}else x(C);T=S(C)}if(null!==T)var u=!0;else{var c=S(P);null!==c&&r(j,c.startTime-n),u=!1}return u}finally{T=null,N=a,L=!1}}var F=a;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){R||L||(R=!0,n(A))},t.unstable_getCurrentPriorityLevel=function(){return N},t.unstable_getFirstCallbackNode=function(){return S(C)},t.unstable_next=function(e){switch(N){case 1:case 2:case 3:var t=3;break;default:t=N}var n=N;N=t;try{return e()}finally{N=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=N;N=e;try{return t()}finally{N=n}},t.unstable_scheduleCallback=function(e,a,l){var i=t.unstable_now();switch(l="object"==typeof l&&null!==l&&"number"==typeof(l=l.delay)&&0i?(e.sortIndex=l,E(P,e),null===S(C)&&e===S(P)&&(M?o():M=!0,r(j,l-i))):(e.sortIndex=u,E(C,e),R||L||(R=!0,n(A))),e},t.unstable_wrapCallback=function(e){var t=N;return function(){var n=N;N=t;try{return e.apply(this,arguments)}finally{N=n}}}},840:(e,t,n)=>{"use strict";e.exports=n(53)},177:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=function(e,t){if(!e)throw new Error("Invariant failed")}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";n.r(r),n.d(r,{bootstrap:()=>f,mount:()=>d,unmount:()=>p});var e=n(294),t=n(935),o=n(727),a=n(550),l=n(117),i=n.n(l);const u=function(){return e.createElement("div",null,"List")},c=function(){return e.createElement("div",null,"Item")};var s=function(){return e.createElement(o.BrowserRouter,{basename:"/app0"},e.createElement(l.CacheSwitch,null,e.createElement(i(),{exact:!0,path:"/list",component:u}),e.createElement(a.AW,{exact:!0,path:"/item",component:c})))};function f(){console.log("react app bootstraped")}function d(n){t.render(e.createElement(s,null),n.container.querySelector("#root"))}function p(e){}})(),r})()}));
--------------------------------------------------------------------------------