create-packer 1.46.4 → 1.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/template/cli/package.json +53 -53
- package/template/cli/scripts/pub.js +39 -39
- package/template/cli/src/createTemp.ts +58 -58
- package/template/docusaurus/src/components/HomepageFeatures/index.tsx +70 -70
- package/template/docusaurus/src/components/HomepageFeatures/styles.module.css +11 -11
- package/template/docusaurus/src/css/custom.css +30 -30
- package/template/docusaurus/src/pages/index.module.css +23 -23
- package/template/docusaurus/src/pages/index.tsx +40 -40
- package/template/electron-react/.vscode/extensions.json +7 -7
- package/template/electron-react/configs/createChunks.ts +26 -26
- package/template/electron-react/configs/rsbuild.main.config.ts +54 -54
- package/template/electron-react/configs/rsbuild.preload.config.ts +54 -54
- package/template/electron-react/configs/rsbuild.renderer.config.ts +73 -73
- package/template/electron-react/env.d.ts +12 -12
- package/template/electron-react/eslint.config.mjs +108 -108
- package/template/electron-react/package.json +97 -97
- package/template/electron-react/pnpm-lock.yaml +10158 -10158
- package/template/electron-react/postcss.config.cjs +8 -8
- package/template/electron-react/renderer/domain/components/app-context.tsx +31 -31
- package/template/electron-react/renderer/domain/components/app.tsx +25 -25
- package/template/electron-react/renderer/domain/components/index.ts +1 -1
- package/template/electron-react/renderer/domain/models/app.ts +7 -7
- package/template/electron-react/renderer/domain/router/components/index.ts +2 -2
- package/template/electron-react/renderer/domain/router/components/route-layout.tsx +19 -19
- package/template/electron-react/renderer/domain/router/components/sub-route-outlet.tsx +22 -22
- package/template/electron-react/renderer/domain/router/home/ids.ts +3 -3
- package/template/electron-react/renderer/domain/router/home/index.ts +2 -2
- package/template/electron-react/renderer/domain/router/home/routes.tsx +13 -13
- package/template/electron-react/renderer/domain/router/ids.ts +6 -6
- package/template/electron-react/renderer/domain/router/index.ts +4 -4
- package/template/electron-react/renderer/domain/router/router.tsx +28 -28
- package/template/electron-react/renderer/domain/router/router.types.ts +3 -3
- package/template/electron-react/renderer/main.tsx +4 -4
- package/template/electron-react/renderer/pages/home/index.ts +1 -1
- package/template/electron-react/renderer/pages/index.tsx +18 -18
- package/template/electron-react/renderer/pages/not-found.tsx +3 -3
- package/template/electron-react/renderer/scripts/createChunks.ts +26 -26
- package/template/electron-react/renderer/scripts/index.ts +1 -1
- package/template/electron-react/renderer/shared/components/componentInstance.tsx +80 -80
- package/template/electron-react/renderer/shared/components/index.ts +1 -1
- package/template/electron-react/renderer/shared/hooks/defineRouter/defineRouter.types.ts +33 -33
- package/template/electron-react/renderer/shared/hooks/defineRouter/deineRouter.tsx +161 -161
- package/template/electron-react/renderer/shared/hooks/defineRouter/index.ts +2 -2
- package/template/electron-react/renderer/shared/hooks/index.ts +6 -6
- package/template/electron-react/renderer/shared/hooks/useInterval.ts +26 -26
- package/template/electron-react/renderer/shared/hooks/useLoadingAction.ts +27 -27
- package/template/electron-react/renderer/shared/hooks/useLowPriorityState.ts +26 -26
- package/template/electron-react/renderer/shared/hooks/useSyncState.ts +15 -15
- package/template/electron-react/renderer/shared/hooks/useVisible.ts +27 -27
- package/template/electron-react/renderer/shared/service/api.ts +1 -1
- package/template/electron-react/renderer/shared/service/home.ts +9 -9
- package/template/electron-react/renderer/shared/service/index.ts +3 -3
- package/template/electron-react/renderer/shared/service/request.ts +5 -5
- package/template/electron-react/tsconfig.json +33 -33
- package/template/electron-react/tsconfig.node.json +10 -10
- package/template/electron-vue/.vscode/extensions.json +9 -9
- package/template/electron-vue/configs/createChunks.ts +26 -26
- package/template/electron-vue/configs/rsbuild.main.config.ts +54 -54
- package/template/electron-vue/configs/rsbuild.preload.config.ts +54 -54
- package/template/electron-vue/configs/rsbuild.renderer.config.ts +64 -64
- package/template/electron-vue/env.d.ts +18 -18
- package/template/electron-vue/eslint.config.mjs +115 -115
- package/template/electron-vue/package.json +87 -87
- package/template/electron-vue/pnpm-lock.yaml +10158 -10158
- package/template/electron-vue/postcss.config.cjs +9 -9
- package/template/electron-vue/renderer/domain/components/app.vue +18 -18
- package/template/electron-vue/renderer/domain/components/createComponentInstance.ts +43 -43
- package/template/electron-vue/renderer/domain/components/index.ts +2 -2
- package/template/electron-vue/renderer/domain/router/home/index.ts +2 -2
- package/template/electron-vue/renderer/domain/router/home/names.ts +3 -3
- package/template/electron-vue/renderer/domain/router/home/routes.ts +8 -8
- package/template/electron-vue/renderer/domain/router/index.ts +26 -26
- package/template/electron-vue/renderer/domain/router/names.ts +5 -5
- package/template/electron-vue/renderer/main.css +4 -4
- package/template/electron-vue/renderer/main.ts +7 -7
- package/template/electron-vue/renderer/pages/home/view.vue +12 -12
- package/template/electron-vue/renderer/pages/index.ts +1 -1
- package/template/electron-vue/renderer/pages/index.vue +3 -3
- package/template/electron-vue/renderer/pages/not-found.vue +3 -3
- package/template/electron-vue/renderer/shared/hooks/index.ts +2 -2
- package/template/electron-vue/renderer/shared/hooks/useList.ts +86 -86
- package/template/electron-vue/renderer/shared/hooks/useVisible.ts +27 -27
- package/template/electron-vue/renderer/shared/service/api.ts +1 -1
- package/template/electron-vue/renderer/shared/service/home.ts +7 -7
- package/template/electron-vue/renderer/shared/service/index.ts +3 -3
- package/template/electron-vue/renderer/shared/service/request.ts +5 -5
- package/template/electron-vue/tsconfig.json +25 -25
- package/template/electron-vue/tsconfig.node.json +10 -10
- package/template/lib/workspace/.storybook/main.ts +16 -16
- package/template/lib/workspace/.storybook/preview.tsx +17 -17
- package/template/lib/workspace/eslint.config.mjs +119 -119
- package/template/lib/workspace/packages/react/src/button/button.stories.ts +44 -44
- package/template/web-app/react-rsbuild/.vscode/extensions.json +7 -7
- package/template/web-app/react-rsbuild/.vscode/settings.json +4 -4
- package/template/web-app/react-rsbuild/domain/components/app-context.tsx +31 -31
- package/template/web-app/react-rsbuild/domain/components/app.tsx +25 -25
- package/template/web-app/react-rsbuild/domain/components/index.ts +1 -1
- package/template/web-app/react-rsbuild/domain/models/app.ts +7 -7
- package/template/web-app/react-rsbuild/domain/router/components/index.ts +2 -2
- package/template/web-app/react-rsbuild/domain/router/components/route-layout.tsx +19 -19
- package/template/web-app/react-rsbuild/domain/router/components/sub-route-outlet.tsx +22 -22
- package/template/web-app/react-rsbuild/domain/router/home/ids.ts +3 -3
- package/template/web-app/react-rsbuild/domain/router/home/index.ts +2 -2
- package/template/web-app/react-rsbuild/domain/router/home/routes.tsx +13 -13
- package/template/web-app/react-rsbuild/domain/router/ids.ts +6 -6
- package/template/web-app/react-rsbuild/domain/router/index.ts +4 -4
- package/template/web-app/react-rsbuild/domain/router/router.tsx +28 -28
- package/template/web-app/react-rsbuild/domain/router/router.types.ts +3 -3
- package/template/web-app/react-rsbuild/eslint.config.js +107 -107
- package/template/web-app/react-rsbuild/main.tsx +6 -6
- package/template/web-app/react-rsbuild/package.json +79 -79
- package/template/web-app/react-rsbuild/pages/home/index.ts +1 -1
- package/template/web-app/react-rsbuild/pages/index.tsx +18 -18
- package/template/web-app/react-rsbuild/pages/not-found.tsx +3 -3
- package/template/web-app/react-rsbuild/postcss.config.cjs +8 -8
- package/template/web-app/react-rsbuild/rsbuild.config.ts +91 -91
- package/template/web-app/react-rsbuild/scripts/createChunks.ts +26 -26
- package/template/web-app/react-rsbuild/scripts/index.ts +1 -1
- package/template/web-app/react-rsbuild/shared/components/componentInstance.tsx +80 -80
- package/template/web-app/react-rsbuild/shared/components/index.ts +1 -1
- package/template/web-app/react-rsbuild/shared/hooks/defineRouter/defineRouter.types.ts +33 -33
- package/template/web-app/react-rsbuild/shared/hooks/defineRouter/deineRouter.tsx +161 -161
- package/template/web-app/react-rsbuild/shared/hooks/defineRouter/index.ts +2 -2
- package/template/web-app/react-rsbuild/shared/hooks/index.ts +7 -6
- package/template/web-app/react-rsbuild/shared/hooks/useDebounceFn.ts +37 -0
- package/template/web-app/react-rsbuild/shared/hooks/useInterval.ts +26 -26
- package/template/web-app/react-rsbuild/shared/hooks/useLazyRender.ts +30 -0
- package/template/web-app/react-rsbuild/shared/hooks/useLowPriorityState.ts +26 -26
- package/template/web-app/react-rsbuild/shared/hooks/useSyncState.ts +15 -15
- package/template/web-app/react-rsbuild/shared/hooks/useVisible.ts +27 -27
- package/template/web-app/react-rsbuild/shared/service/api.ts +1 -1
- package/template/web-app/react-rsbuild/shared/service/home.ts +9 -9
- package/template/web-app/react-rsbuild/shared/service/index.ts +3 -3
- package/template/web-app/react-rsbuild/shared/service/request.ts +5 -5
- package/template/web-app/react-rsbuild/tsconfig.json +33 -33
- package/template/web-app/react-rsbuild/tsconfig.node.json +10 -10
- package/template/web-app/react-vite/.gitignore +3 -3
- package/template/web-app/react-vite/.vscode/extensions.json +7 -7
- package/template/web-app/react-vite/.vscode/settings.json +4 -4
- package/template/web-app/react-vite/domain/components/index.ts +1 -1
- package/template/web-app/react-vite/domain/models/app.ts +7 -7
- package/template/web-app/react-vite/domain/router/components/route-layout.tsx +19 -19
- package/template/web-app/react-vite/domain/router/components/sub-route-outlet.tsx +22 -22
- package/template/web-app/react-vite/domain/router/home/ids.ts +3 -3
- package/template/web-app/react-vite/domain/router/home/index.ts +2 -2
- package/template/web-app/react-vite/domain/router/home/routes.tsx +13 -13
- package/template/web-app/react-vite/domain/router/ids.ts +6 -6
- package/template/web-app/react-vite/domain/router/router.tsx +28 -28
- package/template/web-app/react-vite/domain/router/router.types.ts +3 -3
- package/template/web-app/react-vite/eslint.config.js +114 -114
- package/template/web-app/react-vite/mockUtils.ts +6 -6
- package/template/web-app/react-vite/package.json +78 -78
- package/template/web-app/react-vite/pages/index.tsx +18 -18
- package/template/web-app/react-vite/pages/not-found.tsx +3 -3
- package/template/web-app/react-vite/postcss.config.cjs +8 -8
- package/template/web-app/react-vite/scripts/createChunks.ts +27 -27
- package/template/web-app/react-vite/scripts/index.ts +1 -1
- package/template/web-app/react-vite/shared/hooks/defineRouter/defineRouter.types.ts +33 -33
- package/template/web-app/react-vite/shared/hooks/defineRouter/deineRouter.tsx +161 -161
- package/template/web-app/react-vite/shared/hooks/defineRouter/index.ts +2 -2
- package/template/web-app/react-vite/shared/hooks/index.ts +7 -6
- package/template/web-app/react-vite/shared/hooks/useDebounceFn.ts +37 -0
- package/template/web-app/react-vite/shared/hooks/useInterval.ts +26 -26
- package/template/web-app/react-vite/shared/hooks/useLazyRender.ts +30 -0
- package/template/web-app/react-vite/shared/hooks/useLowPriorityState.ts +26 -26
- package/template/web-app/react-vite/shared/hooks/useSyncState.ts +15 -15
- package/template/web-app/react-vite/shared/hooks/useVisible.ts +27 -27
- package/template/web-app/react-vite/shared/service/api.ts +1 -1
- package/template/web-app/react-vite/shared/service/home.ts +9 -9
- package/template/web-app/react-vite/shared/service/index.ts +3 -3
- package/template/web-app/react-vite/shared/service/request.ts +5 -5
- package/template/web-app/react-vite/tsconfig.json +33 -33
- package/template/web-app/react-vite/tsconfig.node.json +10 -10
- package/template/web-app/vue/.vscode/extensions.json +9 -9
- package/template/web-app/vue/domain/components/app.vue +18 -18
- package/template/web-app/vue/domain/components/createComponentInstance.ts +43 -43
- package/template/web-app/vue/domain/components/index.ts +2 -2
- package/template/web-app/vue/domain/router/home/index.ts +2 -2
- package/template/web-app/vue/domain/router/home/names.ts +3 -3
- package/template/web-app/vue/domain/router/home/routes.ts +8 -8
- package/template/web-app/vue/domain/router/index.ts +26 -26
- package/template/web-app/vue/domain/router/names.ts +5 -5
- package/template/web-app/vue/eslint.config.js +123 -123
- package/template/web-app/vue/main.css +4 -4
- package/template/web-app/vue/main.ts +7 -7
- package/template/web-app/vue/mockUtils.ts +6 -6
- package/template/web-app/vue/pages/home/view.vue +16 -16
- package/template/web-app/vue/pages/index.ts +1 -1
- package/template/web-app/vue/pages/index.vue +3 -3
- package/template/web-app/vue/pages/not-found.vue +3 -3
- package/template/web-app/vue/postcss.config.cjs +8 -8
- package/template/web-app/vue/scripts/createChunks.ts +27 -27
- package/template/web-app/vue/scripts/index.ts +1 -1
- package/template/web-app/vue/shared/hooks/index.ts +2 -2
- package/template/web-app/vue/shared/hooks/useList.ts +86 -86
- package/template/web-app/vue/shared/hooks/useVisible.ts +27 -27
- package/template/web-app/vue/shared/service/api.ts +1 -1
- package/template/web-app/vue/shared/service/home.ts +7 -7
- package/template/web-app/vue/shared/service/index.ts +3 -3
- package/template/web-app/vue/shared/service/request.ts +5 -5
- package/template/web-app/vue/tsconfig.json +25 -25
- package/template/web-app/vue/tsconfig.node.json +10 -10
- package/template/web-app/vue/vite-env.d.ts +18 -18
- package/template/web-app/vue/vite.config.ts +68 -68
- package/template/web-app/vue-rsbuild/.vscode/extensions.json +9 -9
- package/template/web-app/vue-rsbuild/domain/components/app.vue +18 -18
- package/template/web-app/vue-rsbuild/domain/components/createComponentInstance.ts +43 -43
- package/template/web-app/vue-rsbuild/domain/components/index.ts +2 -2
- package/template/web-app/vue-rsbuild/domain/router/home/index.ts +2 -2
- package/template/web-app/vue-rsbuild/domain/router/home/names.ts +3 -3
- package/template/web-app/vue-rsbuild/domain/router/home/routes.ts +8 -8
- package/template/web-app/vue-rsbuild/domain/router/index.ts +26 -26
- package/template/web-app/vue-rsbuild/domain/router/names.ts +5 -5
- package/template/web-app/vue-rsbuild/env.d.ts +18 -18
- package/template/web-app/vue-rsbuild/eslint.config.js +114 -114
- package/template/web-app/vue-rsbuild/main.css +4 -4
- package/template/web-app/vue-rsbuild/main.ts +7 -7
- package/template/web-app/vue-rsbuild/package.json +73 -73
- package/template/web-app/vue-rsbuild/pages/home/view.vue +16 -16
- package/template/web-app/vue-rsbuild/pages/index.ts +1 -1
- package/template/web-app/vue-rsbuild/pages/index.vue +3 -3
- package/template/web-app/vue-rsbuild/pages/not-found.vue +3 -3
- package/template/web-app/vue-rsbuild/postcss.config.cjs +9 -9
- package/template/web-app/vue-rsbuild/rsbuild.config.ts +77 -77
- package/template/web-app/vue-rsbuild/scripts/createChunks.ts +26 -26
- package/template/web-app/vue-rsbuild/scripts/index.ts +1 -1
- package/template/web-app/vue-rsbuild/shared/hooks/index.ts +2 -2
- package/template/web-app/vue-rsbuild/shared/hooks/useList.ts +86 -86
- package/template/web-app/vue-rsbuild/shared/hooks/useVisible.ts +27 -27
- package/template/web-app/vue-rsbuild/shared/service/api.ts +1 -1
- package/template/web-app/vue-rsbuild/shared/service/home.ts +7 -7
- package/template/web-app/vue-rsbuild/shared/service/index.ts +3 -3
- package/template/web-app/vue-rsbuild/shared/service/request.ts +5 -5
- package/template/web-app/vue-rsbuild/tsconfig.json +25 -25
- package/template/web-app/vue-rsbuild/tsconfig.node.json +10 -10
- package/template/web-extension/.vscode/extensions.json +7 -7
- package/template/web-extension/.vscode/settings.json +4 -4
- package/template/web-extension/.wxt/eslint-auto-imports.mjs +56 -56
- package/template/web-extension/.wxt/eslintrc-auto-import.json +21 -21
- package/template/web-extension/.wxt/tsconfig.json +27 -27
- package/template/web-extension/.wxt/types/globals.d.ts +15 -15
- package/template/web-extension/.wxt/types/i18n.d.ts +81 -81
- package/template/web-extension/.wxt/types/imports-module.d.ts +20 -20
- package/template/web-extension/.wxt/types/imports.d.ts +50 -50
- package/template/web-extension/.wxt/types/paths.d.ts +17 -17
- package/template/web-extension/.wxt/wxt.d.ts +7 -7
- package/template/web-extension/entrypoints/background/index.ts +7 -7
- package/template/web-extension/entrypoints/content/domain/app/index.ts +1 -1
- package/template/web-extension/entrypoints/content/domain/app/tools/index.ts +1 -1
- package/template/web-extension/entrypoints/content/domain/app/tools/insertApp.tsx +58 -58
- package/template/web-extension/entrypoints/content/modules/common/index.ts +2 -2
- package/template/web-extension/entrypoints/content/modules/common/insert.tsx +9 -9
- package/template/web-extension/entrypoints/content/modules/index.ts +1 -1
- package/template/web-extension/eslint.config.js +107 -107
- package/template/web-extension/package.json +86 -86
- package/template/web-extension/postcss.config.cjs +8 -8
- package/template/web-extension/shared/background/index.ts +1 -1
- package/template/web-extension/shared/background/message.ts +7 -7
- package/template/web-extension/shared/components/app-context/view.tsx +19 -19
- package/template/web-extension/shared/components/index.ts +1 -1
- package/template/web-extension/shared/hooks/index.ts +2 -2
- package/template/web-extension/shared/hooks/useSyncState.ts +15 -15
- package/template/web-extension/shared/hooks/useVisible.ts +27 -27
- package/template/web-extension/shared/service/index.ts +1 -1
- package/template/web-extension/shared/service/request.ts +5 -5
- package/template/web-extension/tsconfig.node.json +10 -10
- package/template/lib/workspace/node_modules/.pnpm/node_modules/react-lib/.gitignore +0 -26
- package/template/lib/workspace/node_modules/.pnpm/node_modules/ts-lib/.gitignore +0 -25
- package/template/lib/workspace/packages/ts/coverage/base.css +0 -224
- package/template/lib/workspace/packages/ts/coverage/block-navigation.js +0 -87
- package/template/lib/workspace/packages/ts/coverage/clover.xml +0 -16
- package/template/lib/workspace/packages/ts/coverage/coverage-final.json +0 -3
- package/template/lib/workspace/packages/ts/coverage/favicon.png +0 -0
- package/template/lib/workspace/packages/ts/coverage/index.html +0 -131
- package/template/lib/workspace/packages/ts/coverage/index.ts.html +0 -88
- package/template/lib/workspace/packages/ts/coverage/prettify.css +0 -1
- package/template/lib/workspace/packages/ts/coverage/prettify.js +0 -2
- package/template/lib/workspace/packages/ts/coverage/sort-arrow-sprite.png +0 -0
- package/template/lib/workspace/packages/ts/coverage/sorter.js +0 -196
- package/template/lib/workspace/packages/ts/coverage/sum.ts.html +0 -94
- package/template/web-app/react-rsbuild/shared/hooks/useLoadingAction.ts +0 -27
- package/template/web-app/react-vite/shared/hooks/useLoadingAction.ts +0 -27
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
plugins: {
|
|
3
|
-
'postcss-import': {},
|
|
4
|
-
'postcss-nesting': {},
|
|
5
|
-
autoprefixer: {},
|
|
6
|
-
...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})
|
|
7
|
-
}
|
|
8
|
-
}
|
|
1
|
+
module.exports = {
|
|
2
|
+
plugins: {
|
|
3
|
+
'postcss-import': {},
|
|
4
|
+
'postcss-nesting': {},
|
|
5
|
+
autoprefixer: {},
|
|
6
|
+
...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { FunctionComponent, ReactNode } from 'react'
|
|
2
|
-
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
|
|
3
|
-
import { Global, ThemeProvider } from '@emotion/react'
|
|
4
|
-
import { request } from '@/renderer/shared/service'
|
|
5
|
-
import { globalCss, theme } from '@/renderer/shared/styles'
|
|
6
|
-
|
|
7
|
-
const queryClient = new QueryClient({
|
|
8
|
-
defaultOptions: {
|
|
9
|
-
queries: {
|
|
10
|
-
queryFn: async ({ queryKey }) => {
|
|
11
|
-
const { data } = await request.get(queryKey[0] as string, {
|
|
12
|
-
params: queryKey[1]
|
|
13
|
-
})
|
|
14
|
-
return data
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
})
|
|
19
|
-
export interface propsType {
|
|
20
|
-
children: ReactNode
|
|
21
|
-
}
|
|
22
|
-
export const Root: FunctionComponent<propsType> = props => {
|
|
23
|
-
return (
|
|
24
|
-
<ThemeProvider theme={theme}>
|
|
25
|
-
<QueryClientProvider client={queryClient}>
|
|
26
|
-
<Global styles={globalCss} />
|
|
27
|
-
{props.children}
|
|
28
|
-
</QueryClientProvider>
|
|
29
|
-
</ThemeProvider>
|
|
30
|
-
)
|
|
31
|
-
}
|
|
1
|
+
import { FunctionComponent, ReactNode } from 'react'
|
|
2
|
+
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
|
|
3
|
+
import { Global, ThemeProvider } from '@emotion/react'
|
|
4
|
+
import { request } from '@/renderer/shared/service'
|
|
5
|
+
import { globalCss, theme } from '@/renderer/shared/styles'
|
|
6
|
+
|
|
7
|
+
const queryClient = new QueryClient({
|
|
8
|
+
defaultOptions: {
|
|
9
|
+
queries: {
|
|
10
|
+
queryFn: async ({ queryKey }) => {
|
|
11
|
+
const { data } = await request.get(queryKey[0] as string, {
|
|
12
|
+
params: queryKey[1]
|
|
13
|
+
})
|
|
14
|
+
return data
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
export interface propsType {
|
|
20
|
+
children: ReactNode
|
|
21
|
+
}
|
|
22
|
+
export const Root: FunctionComponent<propsType> = props => {
|
|
23
|
+
return (
|
|
24
|
+
<ThemeProvider theme={theme}>
|
|
25
|
+
<QueryClientProvider client={queryClient}>
|
|
26
|
+
<Global styles={globalCss} />
|
|
27
|
+
{props.children}
|
|
28
|
+
</QueryClientProvider>
|
|
29
|
+
</ThemeProvider>
|
|
30
|
+
)
|
|
31
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { useLayoutEffect, Suspense } from 'react'
|
|
2
|
-
import { RouterProvider } from 'react-router/dom'
|
|
3
|
-
import { request } from '@/renderer/shared/service'
|
|
4
|
-
import { routerInstance } from '@/renderer/domain/router'
|
|
5
|
-
import * as AppContext from './app-context'
|
|
6
|
-
|
|
7
|
-
export const Root = () => {
|
|
8
|
-
useLayoutEffect(() => {
|
|
9
|
-
request.interceptors.response.use(
|
|
10
|
-
res => res,
|
|
11
|
-
error => {
|
|
12
|
-
console.log(error)
|
|
13
|
-
return Promise.reject(error)
|
|
14
|
-
}
|
|
15
|
-
)
|
|
16
|
-
}, [])
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
<AppContext.Root>
|
|
20
|
-
<Suspense fallback={<>loading...</>}>
|
|
21
|
-
<RouterProvider router={routerInstance} />
|
|
22
|
-
</Suspense>
|
|
23
|
-
</AppContext.Root>
|
|
24
|
-
)
|
|
25
|
-
}
|
|
1
|
+
import { useLayoutEffect, Suspense } from 'react'
|
|
2
|
+
import { RouterProvider } from 'react-router/dom'
|
|
3
|
+
import { request } from '@/renderer/shared/service'
|
|
4
|
+
import { routerInstance } from '@/renderer/domain/router'
|
|
5
|
+
import * as AppContext from './app-context'
|
|
6
|
+
|
|
7
|
+
export const Root = () => {
|
|
8
|
+
useLayoutEffect(() => {
|
|
9
|
+
request.interceptors.response.use(
|
|
10
|
+
res => res,
|
|
11
|
+
error => {
|
|
12
|
+
console.log(error)
|
|
13
|
+
return Promise.reject(error)
|
|
14
|
+
}
|
|
15
|
+
)
|
|
16
|
+
}, [])
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<AppContext.Root>
|
|
20
|
+
<Suspense fallback={<>loading...</>}>
|
|
21
|
+
<RouterProvider router={routerInstance} />
|
|
22
|
+
</Suspense>
|
|
23
|
+
</AppContext.Root>
|
|
24
|
+
)
|
|
25
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * as App from './app'
|
|
1
|
+
export * as App from './app'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { defineStore } from 'define-zustand'
|
|
2
|
-
|
|
3
|
-
export const useApp = defineStore({
|
|
4
|
-
state: () => ({}),
|
|
5
|
-
getters: {},
|
|
6
|
-
actions: () => ({})
|
|
7
|
-
})
|
|
1
|
+
import { defineStore } from 'define-zustand'
|
|
2
|
+
|
|
3
|
+
export const useApp = defineStore({
|
|
4
|
+
state: () => ({}),
|
|
5
|
+
getters: {},
|
|
6
|
+
actions: () => ({})
|
|
7
|
+
})
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * as SubRouteOutlet from './sub-route-outlet'
|
|
2
|
-
export * as RouteLayout from './route-layout'
|
|
1
|
+
export * as SubRouteOutlet from './sub-route-outlet'
|
|
2
|
+
export * as RouteLayout from './route-layout'
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { FunctionComponent } from 'react'
|
|
2
|
-
import { Outlet } from 'react-router'
|
|
3
|
-
import { last } from 'es-toolkit'
|
|
4
|
-
import { routeType, useMatchRoutes } from '@/renderer/domain/router'
|
|
5
|
-
|
|
6
|
-
export interface propsType {
|
|
7
|
-
Index: FunctionComponent
|
|
8
|
-
rootId: routeType['id']
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export const Root: FunctionComponent<propsType> = ({ Index, rootId }) => {
|
|
12
|
-
const matchRoutes = useMatchRoutes()
|
|
13
|
-
|
|
14
|
-
if (last(matchRoutes)?.id === rootId) {
|
|
15
|
-
return <Index />
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return <Outlet />
|
|
19
|
-
}
|
|
1
|
+
import { FunctionComponent } from 'react'
|
|
2
|
+
import { Outlet } from 'react-router'
|
|
3
|
+
import { last } from 'es-toolkit'
|
|
4
|
+
import { routeType, useMatchRoutes } from '@/renderer/domain/router'
|
|
5
|
+
|
|
6
|
+
export interface propsType {
|
|
7
|
+
Index: FunctionComponent
|
|
8
|
+
rootId: routeType['id']
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const Root: FunctionComponent<propsType> = ({ Index, rootId }) => {
|
|
12
|
+
const matchRoutes = useMatchRoutes()
|
|
13
|
+
|
|
14
|
+
if (last(matchRoutes)?.id === rootId) {
|
|
15
|
+
return <Index />
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return <Outlet />
|
|
19
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { FunctionComponent } from 'react'
|
|
2
|
-
import { Outlet } from 'react-router'
|
|
3
|
-
import { useMount } from 'react-use'
|
|
4
|
-
import { last } from 'es-toolkit'
|
|
5
|
-
import { useMatchRoutes, useRouter, routeType } from '@/renderer/domain/router'
|
|
6
|
-
|
|
7
|
-
export interface propsType {
|
|
8
|
-
rootId: routeType['id']
|
|
9
|
-
homeId: routeType['id']
|
|
10
|
-
}
|
|
11
|
-
export const Root: FunctionComponent<propsType> = props => {
|
|
12
|
-
const matchRoutes = useMatchRoutes()
|
|
13
|
-
const navigate = useRouter(state => state.navigate)
|
|
14
|
-
|
|
15
|
-
useMount(() => {
|
|
16
|
-
if (last(matchRoutes)?.id === props.rootId) {
|
|
17
|
-
navigate({ id: props.homeId })
|
|
18
|
-
}
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
return <Outlet />
|
|
22
|
-
}
|
|
1
|
+
import { FunctionComponent } from 'react'
|
|
2
|
+
import { Outlet } from 'react-router'
|
|
3
|
+
import { useMount } from 'react-use'
|
|
4
|
+
import { last } from 'es-toolkit'
|
|
5
|
+
import { useMatchRoutes, useRouter, routeType } from '@/renderer/domain/router'
|
|
6
|
+
|
|
7
|
+
export interface propsType {
|
|
8
|
+
rootId: routeType['id']
|
|
9
|
+
homeId: routeType['id']
|
|
10
|
+
}
|
|
11
|
+
export const Root: FunctionComponent<propsType> = props => {
|
|
12
|
+
const matchRoutes = useMatchRoutes()
|
|
13
|
+
const navigate = useRouter(state => state.navigate)
|
|
14
|
+
|
|
15
|
+
useMount(() => {
|
|
16
|
+
if (last(matchRoutes)?.id === props.rootId) {
|
|
17
|
+
navigate({ id: props.homeId })
|
|
18
|
+
}
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
return <Outlet />
|
|
22
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
home: 'home'
|
|
3
|
-
}
|
|
1
|
+
export default {
|
|
2
|
+
home: 'home'
|
|
3
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default as routes } from './routes'
|
|
2
|
-
export { default as ids } from './ids'
|
|
1
|
+
export { default as routes } from './routes'
|
|
2
|
+
export { default as ids } from './ids'
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { lazy } from 'react'
|
|
2
|
-
import { type routeType } from '../router.types'
|
|
3
|
-
import ids from './ids'
|
|
4
|
-
|
|
5
|
-
const routes: routeType[] = [
|
|
6
|
-
{
|
|
7
|
-
path: 'home',
|
|
8
|
-
id: ids.home,
|
|
9
|
-
Component: lazy(() => import('@/renderer/pages/home'))
|
|
10
|
-
}
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
export default routes
|
|
1
|
+
import { lazy } from 'react'
|
|
2
|
+
import { type routeType } from '../router.types'
|
|
3
|
+
import ids from './ids'
|
|
4
|
+
|
|
5
|
+
const routes: routeType[] = [
|
|
6
|
+
{
|
|
7
|
+
path: 'home',
|
|
8
|
+
id: ids.home,
|
|
9
|
+
Component: lazy(() => import('@/renderer/pages/home'))
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
export default routes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as home from './home'
|
|
2
|
-
export default {
|
|
3
|
-
root: 'root',
|
|
4
|
-
notFound: 'notFound',
|
|
5
|
-
...home.ids
|
|
6
|
-
}
|
|
1
|
+
import * as home from './home'
|
|
2
|
+
export default {
|
|
3
|
+
root: 'root',
|
|
4
|
+
notFound: 'notFound',
|
|
5
|
+
...home.ids
|
|
6
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as routerIds } from './ids'
|
|
2
|
-
export * from './router'
|
|
3
|
-
export * from './router.types'
|
|
4
|
-
export * from './components'
|
|
1
|
+
export { default as routerIds } from './ids'
|
|
2
|
+
export * from './router'
|
|
3
|
+
export * from './router.types'
|
|
4
|
+
export * from './components'
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { lazy } from 'react'
|
|
2
|
-
import { createBrowserRouter } from 'react-router'
|
|
3
|
-
import { defineRouter, routeType } from '@/renderer/shared/hooks'
|
|
4
|
-
import ids from './ids'
|
|
5
|
-
import * as home from './home'
|
|
6
|
-
|
|
7
|
-
const routes: routeType[] = [
|
|
8
|
-
{
|
|
9
|
-
path: '/',
|
|
10
|
-
id: ids.root,
|
|
11
|
-
Component: lazy(() => import('@/renderer/pages')),
|
|
12
|
-
children: [
|
|
13
|
-
...home.routes,
|
|
14
|
-
{
|
|
15
|
-
path: '*',
|
|
16
|
-
id: ids.notFound,
|
|
17
|
-
Component: lazy(() => import('@/renderer/pages/not-found'))
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
|
|
23
|
-
export const routerInstance = createBrowserRouter(routes as never, {
|
|
24
|
-
basename: import.meta.env.PUBLIC_BASE_URL
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
export const { useMatchRoutes, useQuery, useRouter, useRoutePermission } =
|
|
28
|
-
defineRouter(routerInstance)
|
|
1
|
+
import { lazy } from 'react'
|
|
2
|
+
import { createBrowserRouter } from 'react-router'
|
|
3
|
+
import { defineRouter, routeType } from '@/renderer/shared/hooks'
|
|
4
|
+
import ids from './ids'
|
|
5
|
+
import * as home from './home'
|
|
6
|
+
|
|
7
|
+
const routes: routeType[] = [
|
|
8
|
+
{
|
|
9
|
+
path: '/',
|
|
10
|
+
id: ids.root,
|
|
11
|
+
Component: lazy(() => import('@/renderer/pages')),
|
|
12
|
+
children: [
|
|
13
|
+
...home.routes,
|
|
14
|
+
{
|
|
15
|
+
path: '*',
|
|
16
|
+
id: ids.notFound,
|
|
17
|
+
Component: lazy(() => import('@/renderer/pages/not-found'))
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
export const routerInstance = createBrowserRouter(routes as never, {
|
|
24
|
+
basename: import.meta.env.PUBLIC_BASE_URL
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
export const { useMatchRoutes, useQuery, useRouter, useRoutePermission } =
|
|
28
|
+
defineRouter(routerInstance)
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { routeType as $routeType } from '@/renderer/shared/hooks'
|
|
2
|
-
|
|
3
|
-
export type routeType = $routeType
|
|
1
|
+
import { routeType as $routeType } from '@/renderer/shared/hooks'
|
|
2
|
+
|
|
3
|
+
export type routeType = $routeType
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createRoot } from 'react-dom/client'
|
|
2
|
-
import { App } from '@/renderer/domain/components'
|
|
3
|
-
|
|
4
|
-
createRoot(document.getElementById('root') as HTMLElement).render(<App.Root />)
|
|
1
|
+
import { createRoot } from 'react-dom/client'
|
|
2
|
+
import { App } from '@/renderer/domain/components'
|
|
3
|
+
|
|
4
|
+
createRoot(document.getElementById('root') as HTMLElement).render(<App.Root />)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from './view'
|
|
1
|
+
export { default } from './view'
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { useEffect } from 'react'
|
|
2
|
-
import { Outlet, useLocation } from 'react-router'
|
|
3
|
-
import { useRouter, routerIds } from '@/renderer/domain/router'
|
|
4
|
-
|
|
5
|
-
const Layout = () => {
|
|
6
|
-
const location = useLocation()
|
|
7
|
-
const navigate = useRouter(state => state.navigate)
|
|
8
|
-
|
|
9
|
-
useEffect(() => {
|
|
10
|
-
if (location.pathname === '/') {
|
|
11
|
-
navigate({ id: routerIds.home })
|
|
12
|
-
}
|
|
13
|
-
}, [location])
|
|
14
|
-
|
|
15
|
-
return <Outlet />
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export default Layout
|
|
1
|
+
import { useEffect } from 'react'
|
|
2
|
+
import { Outlet, useLocation } from 'react-router'
|
|
3
|
+
import { useRouter, routerIds } from '@/renderer/domain/router'
|
|
4
|
+
|
|
5
|
+
const Layout = () => {
|
|
6
|
+
const location = useLocation()
|
|
7
|
+
const navigate = useRouter(state => state.navigate)
|
|
8
|
+
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (location.pathname === '/') {
|
|
11
|
+
navigate({ id: routerIds.home })
|
|
12
|
+
}
|
|
13
|
+
}, [location])
|
|
14
|
+
|
|
15
|
+
return <Outlet />
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export default Layout
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export default function NotFound() {
|
|
2
|
-
return <div>404</div>
|
|
3
|
-
}
|
|
1
|
+
export default function NotFound() {
|
|
2
|
+
return <div>404</div>
|
|
3
|
+
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { SplitChunks } from '@rsbuild/core'
|
|
2
|
-
|
|
3
|
-
export function createChunks(
|
|
4
|
-
chunks: Array<{ name: string; libs: string[] | RegExp; priority?: number }>
|
|
5
|
-
) {
|
|
6
|
-
const result: Exclude<SplitChunks, false>['cacheGroups'] = {
|
|
7
|
-
vendors: {
|
|
8
|
-
test: /[\\/]node_modules[\\/]/,
|
|
9
|
-
chunks: 'all',
|
|
10
|
-
name: 'vendors',
|
|
11
|
-
priority: -1
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
chunks.forEach(({ name, libs, priority }) => {
|
|
15
|
-
result[name] = {
|
|
16
|
-
test: Array.isArray(libs)
|
|
17
|
-
? new RegExp(`[\\\\/]node_modules[\\\\/](${libs.join('|')})[\\\\/]`)
|
|
18
|
-
: libs,
|
|
19
|
-
chunks: 'all',
|
|
20
|
-
name,
|
|
21
|
-
priority
|
|
22
|
-
}
|
|
23
|
-
return result
|
|
24
|
-
})
|
|
25
|
-
return result
|
|
26
|
-
}
|
|
1
|
+
import { SplitChunks } from '@rsbuild/core'
|
|
2
|
+
|
|
3
|
+
export function createChunks(
|
|
4
|
+
chunks: Array<{ name: string; libs: string[] | RegExp; priority?: number }>
|
|
5
|
+
) {
|
|
6
|
+
const result: Exclude<SplitChunks, false>['cacheGroups'] = {
|
|
7
|
+
vendors: {
|
|
8
|
+
test: /[\\/]node_modules[\\/]/,
|
|
9
|
+
chunks: 'all',
|
|
10
|
+
name: 'vendors',
|
|
11
|
+
priority: -1
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
chunks.forEach(({ name, libs, priority }) => {
|
|
15
|
+
result[name] = {
|
|
16
|
+
test: Array.isArray(libs)
|
|
17
|
+
? new RegExp(`[\\\\/]node_modules[\\\\/](${libs.join('|')})[\\\\/]`)
|
|
18
|
+
: libs,
|
|
19
|
+
chunks: 'all',
|
|
20
|
+
name,
|
|
21
|
+
priority
|
|
22
|
+
}
|
|
23
|
+
return result
|
|
24
|
+
})
|
|
25
|
+
return result
|
|
26
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './createChunks'
|
|
1
|
+
export * from './createChunks'
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
import {
|
|
2
|
-
forwardRef,
|
|
3
|
-
ForwardRefExoticComponent,
|
|
4
|
-
FunctionComponent,
|
|
5
|
-
PropsWithChildren,
|
|
6
|
-
PropsWithoutRef,
|
|
7
|
-
RefAttributes,
|
|
8
|
-
useImperativeHandle,
|
|
9
|
-
useRef,
|
|
10
|
-
useState
|
|
11
|
-
} from 'react'
|
|
12
|
-
import { createRoot } from 'react-dom/client'
|
|
13
|
-
|
|
14
|
-
const instanceMap: Record<string, { pending: Promise<any>; instance: any }> = {}
|
|
15
|
-
|
|
16
|
-
export interface refsType<P> {
|
|
17
|
-
$setProps: (newProps: P) => void
|
|
18
|
-
$updateProps: (newProps: Partial<P>) => void
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export function create(Context?: FunctionComponent<PropsWithChildren<any>>) {
|
|
22
|
-
return async function <P extends Record<string, any>, Refs extends Record<string, any>>(
|
|
23
|
-
key: string,
|
|
24
|
-
Component: ForwardRefExoticComponent<PropsWithoutRef<P> & RefAttributes<Refs>>,
|
|
25
|
-
props?: P
|
|
26
|
-
) {
|
|
27
|
-
let current = instanceMap[key]
|
|
28
|
-
if (!current) {
|
|
29
|
-
const div = document.createElement('div')
|
|
30
|
-
document.body.appendChild(div)
|
|
31
|
-
const ApiComponent = forwardRef<Refs & refsType<P>>((__, refs) => {
|
|
32
|
-
const ref = useRef<Refs>(null)
|
|
33
|
-
const [state, setState] = useState<Partial<P>>(props || {})
|
|
34
|
-
|
|
35
|
-
useImperativeHandle(refs, () => {
|
|
36
|
-
return {
|
|
37
|
-
$setProps: newProps => {
|
|
38
|
-
setState(() => newProps)
|
|
39
|
-
},
|
|
40
|
-
$updateProps: newProps => {
|
|
41
|
-
if (newProps) {
|
|
42
|
-
setState(state => ({ ...state, ...newProps }))
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
...ref.current
|
|
46
|
-
} as Refs & refsType<P>
|
|
47
|
-
})
|
|
48
|
-
if (Context) {
|
|
49
|
-
return (
|
|
50
|
-
<Context>
|
|
51
|
-
<Component ref={ref} {...(state as any)} />
|
|
52
|
-
</Context>
|
|
53
|
-
)
|
|
54
|
-
}
|
|
55
|
-
return <Component ref={ref} {...(state as any)} />
|
|
56
|
-
})
|
|
57
|
-
current = instanceMap[key] = {
|
|
58
|
-
instance: void 0,
|
|
59
|
-
pending: new Promise<void>(resolve => {
|
|
60
|
-
createRoot(div).render(
|
|
61
|
-
(
|
|
62
|
-
<ApiComponent
|
|
63
|
-
ref={instance => {
|
|
64
|
-
current.instance = instanceMap[key].instance = instance!
|
|
65
|
-
resolve()
|
|
66
|
-
}}
|
|
67
|
-
/>
|
|
68
|
-
) as never
|
|
69
|
-
)
|
|
70
|
-
})
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
await current.pending
|
|
74
|
-
current.instance.$setProps(props)
|
|
75
|
-
// Delay return to avoid sync issue
|
|
76
|
-
// ------------------------------------------------------------------------
|
|
77
|
-
await new Promise(resolve => setTimeout(resolve))
|
|
78
|
-
return current.instance as Refs & refsType<P>
|
|
79
|
-
}
|
|
80
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
forwardRef,
|
|
3
|
+
ForwardRefExoticComponent,
|
|
4
|
+
FunctionComponent,
|
|
5
|
+
PropsWithChildren,
|
|
6
|
+
PropsWithoutRef,
|
|
7
|
+
RefAttributes,
|
|
8
|
+
useImperativeHandle,
|
|
9
|
+
useRef,
|
|
10
|
+
useState
|
|
11
|
+
} from 'react'
|
|
12
|
+
import { createRoot } from 'react-dom/client'
|
|
13
|
+
|
|
14
|
+
const instanceMap: Record<string, { pending: Promise<any>; instance: any }> = {}
|
|
15
|
+
|
|
16
|
+
export interface refsType<P> {
|
|
17
|
+
$setProps: (newProps: P) => void
|
|
18
|
+
$updateProps: (newProps: Partial<P>) => void
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function create(Context?: FunctionComponent<PropsWithChildren<any>>) {
|
|
22
|
+
return async function <P extends Record<string, any>, Refs extends Record<string, any>>(
|
|
23
|
+
key: string,
|
|
24
|
+
Component: ForwardRefExoticComponent<PropsWithoutRef<P> & RefAttributes<Refs>>,
|
|
25
|
+
props?: P
|
|
26
|
+
) {
|
|
27
|
+
let current = instanceMap[key]
|
|
28
|
+
if (!current) {
|
|
29
|
+
const div = document.createElement('div')
|
|
30
|
+
document.body.appendChild(div)
|
|
31
|
+
const ApiComponent = forwardRef<Refs & refsType<P>>((__, refs) => {
|
|
32
|
+
const ref = useRef<Refs>(null)
|
|
33
|
+
const [state, setState] = useState<Partial<P>>(props || {})
|
|
34
|
+
|
|
35
|
+
useImperativeHandle(refs, () => {
|
|
36
|
+
return {
|
|
37
|
+
$setProps: newProps => {
|
|
38
|
+
setState(() => newProps)
|
|
39
|
+
},
|
|
40
|
+
$updateProps: newProps => {
|
|
41
|
+
if (newProps) {
|
|
42
|
+
setState(state => ({ ...state, ...newProps }))
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
...ref.current
|
|
46
|
+
} as Refs & refsType<P>
|
|
47
|
+
})
|
|
48
|
+
if (Context) {
|
|
49
|
+
return (
|
|
50
|
+
<Context>
|
|
51
|
+
<Component ref={ref} {...(state as any)} />
|
|
52
|
+
</Context>
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
return <Component ref={ref} {...(state as any)} />
|
|
56
|
+
})
|
|
57
|
+
current = instanceMap[key] = {
|
|
58
|
+
instance: void 0,
|
|
59
|
+
pending: new Promise<void>(resolve => {
|
|
60
|
+
createRoot(div).render(
|
|
61
|
+
(
|
|
62
|
+
<ApiComponent
|
|
63
|
+
ref={instance => {
|
|
64
|
+
current.instance = instanceMap[key].instance = instance!
|
|
65
|
+
resolve()
|
|
66
|
+
}}
|
|
67
|
+
/>
|
|
68
|
+
) as never
|
|
69
|
+
)
|
|
70
|
+
})
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
await current.pending
|
|
74
|
+
current.instance.$setProps(props)
|
|
75
|
+
// Delay return to avoid sync issue
|
|
76
|
+
// ------------------------------------------------------------------------
|
|
77
|
+
await new Promise(resolve => setTimeout(resolve))
|
|
78
|
+
return current.instance as Refs & refsType<P>
|
|
79
|
+
}
|
|
80
|
+
}
|