@_tc/template-core 0.2.12 → 0.3.1
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/.skills/tc-component-usage-skills/SKILL.md +7 -9
- package/.skills/tc-component-usage-skills/reference/component-api.md +2 -2
- package/.skills/tc-component-usage-skills/reference/examples.md +9 -9
- package/.skills/tc-component-usage-skills/reference/patterns.md +5 -5
- package/.skills/tc-component-usage-skills/reference/template-core-frontend.md +1 -1
- package/.skills/tc-generator/SKILL.md +31 -14
- package/.skills/tc-generator/reference/example.md +4 -4
- package/.skills/tc-generator/reference/model-schema.md +9 -5
- package/.skills/tc-generator/reference/runtime-extensions.md +9 -7
- package/AGENT_README.md +66 -33
- package/CHANGE.md +48 -5
- package/README.md +161 -46
- package/cjs/app/controller/ssr.js +1 -0
- package/cjs/app/controller/view.js +1 -1
- package/cjs/app/html/shell.js +36 -0
- package/cjs/app/middleware.js +1 -1
- package/cjs/app/router/ssr.js +1 -0
- package/cjs/app/router/view.js +1 -1
- package/cjs/app/ssr/html.js +17 -0
- package/cjs/app/ssr/manifest.js +2 -0
- package/cjs/app/view/entry.tpl +2 -37
- package/cjs/bundler/buildBE.js +1 -1
- package/cjs/bundler/buildSSR.js +1 -0
- package/cjs/bundler/entryCollect.js +1 -0
- package/cjs/bundler/feSharedConfig.js +1 -0
- package/cjs/bundler/index.js +1 -1
- package/cjs/bundler/ssrClientManifest.js +1 -0
- package/cjs/bundler/ssrEntries.js +1 -0
- package/cjs/bundler/utils.js +3 -3
- package/cjs/packages/common/i18n/index.js +1 -1
- package/cjs/packages/common/index.js +1 -1
- package/cjs/packages/common/ssr/hydration.js +1 -0
- package/cjs/packages/common/ssr/index.js +1 -0
- package/cjs/packages/core/index.js +1 -1
- package/cjs/packages/core/loader/controller.js +1 -1
- package/cjs/packages/core/loader/extend.js +1 -1
- package/cjs/packages/core/loader/merge.js +1 -0
- package/cjs/packages/core/loader/middleware.js +1 -1
- package/cjs/packages/core/loader/model.js +1 -1
- package/cjs/packages/core/loader/router-schema.js +1 -1
- package/cjs/packages/core/loader/router.js +1 -1
- package/cjs/packages/core/loader/service.js +1 -1
- package/cjs/packages/core/paths.js +1 -1
- package/cjs/scripts/vite-build/build.js +3 -3
- package/cjs/scripts/vite-build/collect.js +1 -1
- package/cjs/scripts/vite-build/dts.js +1 -1
- package/cjs/scripts/vite-build/normalize.js +1 -1
- package/cjs/ssrSharedData/outputPaths.js +1 -0
- package/esm/app/controller/ssr.js +215 -0
- package/esm/app/controller/view.js +26 -25
- package/esm/app/html/shell.js +69 -0
- package/esm/app/middleware.js +18 -9
- package/esm/app/router/ssr.js +8 -0
- package/esm/app/router/view.js +5 -4
- package/esm/app/ssr/html.js +90 -0
- package/esm/app/ssr/manifest.js +47 -0
- package/esm/app/view/entry.tpl +2 -37
- package/esm/bundler/buildBE.js +1 -1
- package/esm/bundler/buildSSR.js +126 -0
- package/esm/bundler/entryCollect.js +45 -0
- package/esm/bundler/feSharedConfig.js +143 -0
- package/esm/bundler/index.js +4 -2
- package/esm/bundler/ssrClientManifest.js +14 -0
- package/esm/bundler/ssrEntries.js +13 -0
- package/esm/bundler/utils.js +248 -255
- package/esm/packages/common/i18n/index.js +5 -1
- package/esm/packages/common/index.js +4 -2
- package/esm/packages/common/ssr/hydration.js +55 -0
- package/esm/packages/common/ssr/index.js +20 -0
- package/esm/packages/core/index.js +42 -42
- package/esm/packages/core/loader/controller.js +11 -9
- package/esm/packages/core/loader/extend.js +20 -16
- package/esm/packages/core/loader/merge.js +7 -0
- package/esm/packages/core/loader/middleware.js +11 -12
- package/esm/packages/core/loader/model.js +2 -2
- package/esm/packages/core/loader/router-schema.js +22 -15
- package/esm/packages/core/loader/router.js +32 -26
- package/esm/packages/core/loader/service.js +11 -9
- package/esm/packages/core/paths.js +9 -1
- package/esm/scripts/vite-build/build.js +88 -83
- package/esm/scripts/vite-build/collect.js +31 -27
- package/esm/scripts/vite-build/dts.js +1 -1
- package/esm/scripts/vite-build/normalize.js +6 -3
- package/esm/ssrSharedData/outputPaths.js +33 -0
- package/fe/frontend/apps/dash/Dashboard.d.ts +5 -1
- package/fe/frontend/apps/dash/Dashboard.js +22 -13
- package/fe/frontend/apps/dash/types.d.ts +2 -0
- package/fe/frontend/src/api/baseInfo.d.ts +1 -1
- package/fe/frontend/src/common/CRUD/CRUD.js +1 -1
- package/fe/frontend/src/common/CRUD/index.js +1 -1
- package/fe/frontend/src/common/menu.d.ts +1 -1
- package/fe/frontend/src/common/menu.js +8 -7
- package/fe/frontend/src/common/request.js +1 -1
- package/fe/frontend/src/common/schemaForm.d.ts +1 -0
- package/fe/frontend/src/common/schemaForm.js +12 -0
- package/fe/frontend/src/components/AsyncSelect/AsyncSelect.d.ts +1 -1
- package/fe/frontend/src/components/Router/basename.d.ts +3 -0
- package/fe/frontend/src/components/Router/basename.js +11 -0
- package/fe/frontend/src/components/Router/index.d.ts +1 -1
- package/fe/frontend/src/components/Router/index.js +3 -1
- package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/builtIn.d.ts +1 -1
- package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/data.d.ts +1 -1
- package/fe/frontend/src/defaultPages/SchemaPage/schemaType.d.ts +2 -2
- package/fe/frontend/src/defaultPages/SchemaPage/utils/schemaConversion.d.ts +1 -1
- package/fe/frontend/src/defaultPages/SidebarSlotPage/SidebarSlotContainer.d.ts +2 -1
- package/fe/frontend/src/defaultPages/SidebarSlotPage/SidebarSlotContainer.js +8 -4
- package/fe/frontend/src/defaultPages/SidebarSlotPageTmp.js +2 -1
- package/fe/frontend/src/exportStore.js +2 -2
- package/fe/frontend/src/hooks/useCurrentMenuData.d.ts +1 -1
- package/fe/frontend/src/hooks/useCurrentMenuData.js +2 -2
- package/fe/frontend/src/hooks/useRouterParams.js +4 -3
- package/fe/frontend/src/index.d.ts +1 -0
- package/fe/frontend/src/index.js +4 -3
- package/fe/frontend/src/main.js +2 -0
- package/fe/frontend/src/stores/mode.d.ts +15 -2
- package/fe/frontend/src/stores/mode.js +19 -5
- package/fe/frontend/src/typing/window.d.ts +2 -0
- package/fe/packages/common/LRUCache.js +2 -0
- package/fe/packages/common/array/index.js +37 -0
- package/fe/packages/common/cache/index.js +2 -0
- package/fe/packages/common/guards/index.js +19 -1
- package/fe/packages/common/http/index.js +1 -1
- package/fe/packages/common/i18n/index.js +8 -4
- package/fe/packages/common/i18n/locales.js +1 -1
- package/fe/packages/common/i18n/types.d.ts +1 -0
- package/fe/packages/common/i18n/types.js +0 -0
- package/fe/packages/common/index.d.ts +1 -0
- package/fe/packages/common/index.js +17 -0
- package/fe/packages/common/log/index.js +146 -0
- package/fe/packages/common/number/index.js +11 -0
- package/fe/packages/common/object/filterEmpty.js +2 -1
- package/fe/packages/common/object/filtereEmpty.js +2 -0
- package/fe/packages/common/object/index.js +20 -0
- package/fe/packages/common/ssr/hydration.d.ts +23 -0
- package/fe/packages/common/ssr/hydration.js +88 -0
- package/fe/packages/common/ssr/index.d.ts +8 -0
- package/fe/packages/common/ssr/index.js +52 -0
- package/fe/packages/common/string/index.js +32 -0
- package/fe/packages/common/types/index.js +0 -0
- package/fe/packages/react/hooks/index.d.ts +2 -0
- package/fe/packages/react/hooks/index.js +3 -1
- package/fe/packages/react/hooks/useHydrationData.d.ts +2 -0
- package/fe/packages/react/hooks/useHydrationData.js +23 -0
- package/fe/packages/react/hooks/useSSR.d.ts +6 -0
- package/fe/packages/react/hooks/useSSR.js +46 -0
- package/fe/packages/react/ui/components/DataTable/index.js +16 -15
- package/fe/packages/react/ui/components/Form/SchemaForm/data.d.ts +3 -2
- package/fe/packages/react/ui/components/Form/SchemaForm/data.js +5 -6
- package/fe/packages/react/ui/components/Form/SchemaForm/index.d.ts +1 -0
- package/fe/packages/react/ui/components/Form/SchemaForm/index.js +2 -2
- package/fe/packages/react/ui/components/Form/index.js +2 -1
- package/fe/packages/react/ui/components/Input/Input.js +5 -1
- package/fe/packages/react/ui/components/Popup/Popup.js +6 -1
- package/fe/packages/react/ui/components/index.js +2 -1
- package/fe/packages/react/ui/components/testPage/demos/core/DataTableDemo.js +241 -211
- package/fe/packages/react/ui/components/testPage/demos/core/DataTableDemo2.js +1 -1
- package/fe/packages/react/ui/i18n/I18nProvider.js +4 -0
- package/fe/packages/react/ui/index.js +2 -1
- package/fe/ssr/apps/dash/dash.entry.d.ts +13 -0
- package/fe/ssr/apps/dash/dash.entry.js +162 -0
- package/fe/ssr/apps/demo/demo.entry.d.ts +13 -0
- package/fe/ssr/apps/demo/demo.entry.js +38 -0
- package/fe/ssr/apps/server-data/server-data.entry.d.ts +26 -0
- package/fe/ssr/apps/server-data/server-data.entry.js +275 -0
- package/fe/ssr/apps/ui-components/ui-components.entry.d.ts +5 -0
- package/fe/ssr/apps/ui-components/ui-components.entry.js +17 -0
- package/fe/ssr/components/StreamingRender/StreamingCache.d.ts +2 -0
- package/fe/ssr/components/StreamingRender/StreamingCache.js +31 -0
- package/fe/ssr/components/StreamingRender/StreamingRender.d.ts +3 -0
- package/fe/ssr/components/StreamingRender/StreamingRender.js +48 -0
- package/fe/ssr/components/StreamingRender/StreamingScript.d.ts +8 -0
- package/fe/ssr/components/StreamingRender/StreamingScript.js +58 -0
- package/fe/ssr/components/StreamingRender/index.d.ts +4 -0
- package/fe/ssr/components/StreamingRender/index.js +5 -0
- package/fe/ssr/components/StreamingRender/type.d.ts +9 -0
- package/fe/ssr/components/StreamingRender/type.js +0 -0
- package/fe/ssr/components/index.d.ts +2 -0
- package/fe/ssr/components/index.js +2 -0
- package/fe/ssr/createSSREntry.d.ts +6 -0
- package/fe/ssr/createSSREntry.js +42 -0
- package/fe/ssr/hooks/index.d.ts +1 -0
- package/fe/ssr/hooks/index.js +2 -0
- package/fe/ssr/hooks/useSuspensePromise.d.ts +1 -0
- package/fe/ssr/hooks/useSuspensePromise.js +31 -0
- package/fe/ssr/index.d.ts +4 -0
- package/fe/ssr/index.js +6 -0
- package/fe/ssr/types.d.ts +13 -0
- package/fe/ssr/types.js +0 -0
- package/{model → models}/frontend/src/typing/window.d.ts +2 -0
- package/{model → models}/packages/common/i18n/types.d.ts +1 -0
- package/{model → models}/packages/common/index.d.ts +1 -0
- package/models/packages/common/ssr/hydration.d.ts +23 -0
- package/models/packages/common/ssr/index.d.ts +8 -0
- package/{model → models}/packages/react/ui/components/Form/SchemaForm/data.d.ts +3 -2
- package/{model → models}/packages/react/ui/components/Form/SchemaForm/index.d.ts +1 -0
- package/package.json +43 -6
- package/types/app/controller/ssr.d.ts +14 -0
- package/types/app/html/shell.d.ts +101 -0
- package/types/app/router/ssr.d.ts +6 -0
- package/types/app/ssr/html.d.ts +53 -0
- package/types/app/ssr/manifest.d.ts +17 -0
- package/types/app/typings.d.ts +2 -0
- package/types/bundler/buildSSR.d.ts +56 -0
- package/types/bundler/entryCollect.d.ts +36 -0
- package/types/bundler/feSharedConfig.d.ts +35 -0
- package/types/bundler/index.d.ts +4 -0
- package/types/bundler/ssrClientManifest.d.ts +4 -0
- package/types/bundler/ssrEntries.d.ts +23 -0
- package/types/bundler/state.d.ts +2 -2
- package/types/bundler/utils.d.ts +35 -2
- package/types/config/config.default.d.ts +10 -0
- package/types/packages/common/i18n/types.d.ts +2 -0
- package/types/packages/common/index.d.ts +1 -0
- package/types/packages/common/ssr/hydration.d.ts +72 -0
- package/types/packages/common/ssr/index.d.ts +34 -0
- package/types/packages/core/loader/merge.d.ts +3 -0
- package/types/packages/core/loader/model.d.ts +2 -2
- package/types/packages/core/paths.d.ts +5 -0
- package/types/packages/core/types.d.ts +10 -1
- package/types/scripts/vite-build/build.d.ts +1 -0
- package/types/scripts/vite-build/types.d.ts +3 -0
- package/types/ssrSharedData/outputPaths.d.ts +59 -0
- package/fe/packages/react/hooks/useWatch.test.js +0 -24
- package/fe/packages/react/ui/assets/table/no-result.js +0 -4
- package/fe/packages/react/ui/components/DataTable/dataTableWidth.test.js +0 -39
- package/fe/packages/react/ui/components/InputNumber/inputNumberUtils.test.js +0 -59
- /package/.skills/tc-generator/reference/project-template/{model → models}/product/mode.js +0 -0
- /package/.skills/tc-generator/reference/project-template/{model → models}/product/project/default.js +0 -0
- /package/fe/{model → models}/types/data/button.d.ts +0 -0
- /package/fe/{model → models}/types/data/component.d.ts +0 -0
- /package/fe/{model → models}/types/data/fetchInfo.d.ts +0 -0
- /package/fe/{model → models}/types/data/schema.d.ts +0 -0
- /package/fe/{model → models}/types/data/search.d.ts +0 -0
- /package/fe/{model → models}/types/index.d.ts +0 -0
- /package/fe/{model → models}/types/menuType.d.ts +0 -0
- /package/fe/{model → models}/types/model.d.ts +0 -0
- /package/{model → models}/frontend/extended/SchemaForm/data.d.ts +0 -0
- /package/{model → models}/frontend/src/common/auth/index.d.ts +0 -0
- /package/{model → models}/frontend/src/common/fetchErrorShow.d.ts +0 -0
- /package/{model → models}/frontend/src/common/language.d.ts +0 -0
- /package/{model → models}/frontend/src/common/logFn/index.d.ts +0 -0
- /package/{model → models}/frontend/src/common/request.d.ts +0 -0
- /package/{model → models}/frontend/src/components/AsyncSelect/AsyncSelect.d.ts +0 -0
- /package/{model → models}/frontend/src/components/AsyncSelect/index.d.ts +0 -0
- /package/{model → models}/frontend/src/defaultPages/SchemaPage/components/CallCom/DetailPanel.d.ts +0 -0
- /package/{model → models}/frontend/src/defaultPages/SchemaPage/components/CallCom/PopFrom.d.ts +0 -0
- /package/{model → models}/frontend/src/defaultPages/SchemaPage/components/CallCom/builtIn.d.ts +0 -0
- /package/{model → models}/frontend/src/defaultPages/SchemaPage/data/eventInfo.d.ts +0 -0
- /package/{model → models}/frontend/src/defaultPages/SchemaPage/data/index.d.ts +0 -0
- /package/{model → models}/frontend/src/defaultPages/SchemaPage/hooks/useComConfig.d.ts +0 -0
- /package/{model → models}/frontend/src/defaultPages/SchemaPage/schemaType.d.ts +0 -0
- /package/{model → models}/frontend/src/defaultPages/SchemaPage/utils/permissions.d.ts +0 -0
- /package/{model → models}/frontend/src/defaultPages/SchemaPage/utils/validator.d.ts +0 -0
- /package/{model → models}/frontend/src/hooks/useText.d.ts +0 -0
- /package/{model → models}/frontend/src/language/en-US.d.ts +0 -0
- /package/{model → models}/frontend/src/language/index.d.ts +0 -0
- /package/{model → models}/frontend/src/language/resources.d.ts +0 -0
- /package/{model → models}/frontend/src/language/zh-CN.d.ts +0 -0
- /package/{model → models}/frontend/src/stores/apiFreezer.d.ts +0 -0
- /package/{model → models}/frontend/src/stores/schemaEventBus.d.ts +0 -0
- /package/{model → models}/frontend/src/stores/schemaStore.d.ts +0 -0
- /package/{model → models}/frontend/src/typing/scalability.d.ts +0 -0
- /package/{model/model → models/models}/index.d.ts +0 -0
- /package/{model/model → models/models}/test.d.ts +0 -0
- /package/{model/model → models/models}/types/data/button.d.ts +0 -0
- /package/{model/model → models/models}/types/data/component.d.ts +0 -0
- /package/{model/model → models/models}/types/data/fetchInfo.d.ts +0 -0
- /package/{model/model → models/models}/types/data/schema.d.ts +0 -0
- /package/{model/model → models/models}/types/data/search.d.ts +0 -0
- /package/{model/model → models/models}/types/index.d.ts +0 -0
- /package/{model/model → models/models}/types/menuType.d.ts +0 -0
- /package/{model/model → models/models}/types/model.d.ts +0 -0
- /package/{model → models}/packages/common/array/index.d.ts +0 -0
- /package/{model → models}/packages/common/cache/LRUCache.d.ts +0 -0
- /package/{model → models}/packages/common/cache/index.d.ts +0 -0
- /package/{model → models}/packages/common/guards/index.d.ts +0 -0
- /package/{model → models}/packages/common/http/index.d.ts +0 -0
- /package/{model → models}/packages/common/i18n/default.d.ts +0 -0
- /package/{model → models}/packages/common/i18n/en-US.d.ts +0 -0
- /package/{model → models}/packages/common/i18n/index.d.ts +0 -0
- /package/{model → models}/packages/common/i18n/locales.d.ts +0 -0
- /package/{model → models}/packages/common/log/index.d.ts +0 -0
- /package/{model → models}/packages/common/number/index.d.ts +0 -0
- /package/{model → models}/packages/common/object/filterEmpty.d.ts +0 -0
- /package/{model → models}/packages/common/object/index.d.ts +0 -0
- /package/{model → models}/packages/common/rafTimer.d.ts +0 -0
- /package/{model → models}/packages/common/string/index.d.ts +0 -0
- /package/{model → models}/packages/common/types/index.d.ts +0 -0
- /package/{model → models}/packages/react/hooks/useBreadcrumb.d.ts +0 -0
- /package/{model → models}/packages/react/hooks/useExecuteOnce.d.ts +0 -0
- /package/{model → models}/packages/react/hooks/useLanguage.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Button/Button.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Button/SubmitButton.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Button/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Card/Card.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Card/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Checkbox/Checkbox.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Checkbox/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/ConfirmDialog/ConfirmDialog.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/ConfirmDialog/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/DataTable/ActionBtn.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/DataTable/dataTableWidth.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/DataTable/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Date/Calendar.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Date/Date.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Date/LocaleContext.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Date/LocaleProvider.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Date/TimePicker.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Date/data.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Date/dateLocaleStore.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Date/dropdownPositioning.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Date/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Date/locales.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Drawer/Drawer.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Drawer/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Dropdown/Dropdown.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Dropdown/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Form/Form.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Form/FormItem.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Form/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Form/useForm.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/ImagePreview/ImagePreview.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/ImagePreview/PreviewImage.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/ImagePreview/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Input/Input.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Input/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/InputNumber/InputNumber.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/InputNumber/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/InputNumber/inputNumberUtils.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Label/Label.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Label/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Layout/Layout.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Layout/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Loading/Loading.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Loading/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Menu/Menu.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Menu/MenuContext.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Menu/MenuItem.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Menu/SubMenu.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Menu/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Menu/menuTypes.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Menu/utils.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Message/Message.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Message/MessageManager.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Message/data.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Message/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Modal/Modal.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Modal/ModalManager.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Modal/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Notification/Notification.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Notification/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Overlay/Overlay.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Overlay/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Pagination/Pagination.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Pagination/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Popup/Popup.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Popup/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Radio/Radio.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Radio/RadioGroup.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Radio/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Search/Search.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Search/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Select/Select.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Select/dropdownPositioning.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Select/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Skeleton/Skeleton.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Skeleton/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Switch/Switch.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Switch/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/TableSearch/TableSearch.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/TableSearch/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/TableSearch/lang.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/TableSearch/tableSearchLocaleStore.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Tabs/Tabs.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Tabs/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Textarea/Textarea.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Textarea/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Tooltip/Tooltip.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Tooltip/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/TreeSelect/TreeSelect.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/TreeSelect/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Upload/ImageUpload.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Upload/Upload.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/Upload/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/breadcrumb/breadcrumb.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/breadcrumb/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/hooks/useDropdownPositioning.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/hooks/useInputController.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/table/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/table/table.d.ts +0 -0
- /package/{model → models}/packages/react/ui/components/types/baseType.d.ts +0 -0
- /package/{model → models}/packages/react/ui/i18n/I18nProvider.d.ts +0 -0
- /package/{model → models}/packages/react/ui/i18n/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/i18n/useI18n.d.ts +0 -0
- /package/{model → models}/packages/react/ui/index.d.ts +0 -0
- /package/{model → models}/packages/react/ui/lib/createStoreHook.d.ts +0 -0
- /package/{model → models}/packages/react/ui/lib/export.d.ts +0 -0
- /package/{model → models}/packages/react/ui/lib/utils.d.ts +0 -0
- /package/{model → models}/packages/react/ui/stores/breadcrumb.d.ts +0 -0
- /package/{model → models}/packages/react/ui/stores/language.d.ts +0 -0
- /package/{model → models}/packages/react/ui/types/index.d.ts +0 -0
- /package/{model → models}/typings/type.d.ts +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region frontend/src/components/Router/basename.ts
|
|
2
|
+
function normalizeRouterBasename(basePath) {
|
|
3
|
+
const normalized = String(basePath ?? "").replace(/^\/+|\/+$/g, "");
|
|
4
|
+
return normalized ? `/${normalized}` : void 0;
|
|
5
|
+
}
|
|
6
|
+
function getRouterBasename(type, basePath) {
|
|
7
|
+
if (type === "hash") return;
|
|
8
|
+
return normalizeRouterBasename(basePath);
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { getRouterBasename, normalizeRouterBasename };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { getRouterBasename } from "./basename.js";
|
|
1
2
|
import { BrowserRouter, HashRouter, Route, Routes } from "react-router-dom";
|
|
2
3
|
import { jsx } from "react/jsx-runtime";
|
|
3
4
|
//#region frontend/src/components/Router/index.tsx
|
|
4
5
|
var generateRouter = (routes, type) => {
|
|
5
6
|
const RouterComponent = type === "browser" ? BrowserRouter : HashRouter;
|
|
7
|
+
const basename = getRouterBasename(type, window._basePath);
|
|
6
8
|
const renderDom = (routes) => {
|
|
7
9
|
return routes.map((route) => {
|
|
8
10
|
return /* @__PURE__ */ jsx(Route, {
|
|
@@ -13,7 +15,7 @@ var generateRouter = (routes, type) => {
|
|
|
13
15
|
});
|
|
14
16
|
};
|
|
15
17
|
return /* @__PURE__ */ jsx(RouterComponent, {
|
|
16
|
-
basename
|
|
18
|
+
basename,
|
|
17
19
|
children: /* @__PURE__ */ jsx(Routes, { children: renderDom(routes) })
|
|
18
20
|
});
|
|
19
21
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FetchInfo } from "../../../../../../
|
|
1
|
+
import type { FetchInfo } from "../../../../../../models/types/data/fetchInfo";
|
|
2
2
|
import type { ComponentType, LazyExoticComponent } from "react";
|
|
3
3
|
type CallComRenderer = ComponentType<any> | LazyExoticComponent<ComponentType<any>>;
|
|
4
4
|
type CallComDefinition<Config> = CallComRenderer & {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SchemaTableRenderComponentPropsMap } from "../../../../../../
|
|
1
|
+
import type { SchemaTableRenderComponentPropsMap } from "../../../../../../models/types/data/schema";
|
|
2
2
|
import type { ComponentType, LazyExoticComponent } from "react";
|
|
3
3
|
export type SchemaTableRenderComponent = ComponentType<any> | LazyExoticComponent<ComponentType<any>>;
|
|
4
4
|
export type SchemaTableRenderComponentsMap = Partial<Record<Extract<keyof SchemaTableRenderComponentPropsMap, string>, SchemaTableRenderComponent>>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ComponentConfig } from "../../../../
|
|
2
|
-
import type { BaseOption, ConfigSchema, SchemaDataType, SearchConfig, TableConfig, UsedConfigSchema } from "../../../../
|
|
1
|
+
import type { ComponentConfig } from "../../../../models/types/data/component";
|
|
2
|
+
import type { BaseOption, ConfigSchema, SchemaDataType, SearchConfig, TableConfig, UsedConfigSchema } from "../../../../models/types/data/schema";
|
|
3
3
|
import type { LazyExoticComponent, ComponentType as ReactComponentType } from "react";
|
|
4
4
|
import type { SuffixKey } from "./data";
|
|
5
5
|
export type { ComponentConfig, SearchConfig, TableConfig };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { SchemaDataType } from "../../../../../
|
|
1
|
+
import { SchemaDataType } from "../../../../../models/types/data/schema";
|
|
2
2
|
export declare const schemaConversion: (schema: SchemaDataType, schemaKey: string) => void;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { BaseMenuType } from "../../../../
|
|
1
|
+
import { BaseMenuType } from "../../../../models/types/menuType";
|
|
2
2
|
import { MenuItemData } from "../../../../packages/react/ui/components/index";
|
|
3
3
|
interface SidebarSlotContainerProps {
|
|
4
4
|
prefixPath: string;
|
|
5
5
|
rawMenuData: BaseMenuType[];
|
|
6
6
|
menuItems: MenuItemData[];
|
|
7
|
+
projectKey?: string;
|
|
7
8
|
}
|
|
8
9
|
declare const SidebarSlotContainer: (props: SidebarSlotContainerProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
10
|
export default SidebarSlotContainer;
|
|
@@ -8,7 +8,7 @@ import { Outlet, useNavigate } from "react-router-dom";
|
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
9
|
//#region frontend/src/defaultPages/SidebarSlotPage/SidebarSlotContainer.tsx
|
|
10
10
|
var SidebarSlotContainer = (props) => {
|
|
11
|
-
const { prefixPath, rawMenuData, menuItems } = props;
|
|
11
|
+
const { prefixPath, rawMenuData, menuItems, projectKey } = props;
|
|
12
12
|
const params = useRouterParams();
|
|
13
13
|
const [SK, uSK] = useState(params[QK.sk]);
|
|
14
14
|
const nav = useNavigate();
|
|
@@ -19,7 +19,7 @@ var SidebarSlotContainer = (props) => {
|
|
|
19
19
|
*/
|
|
20
20
|
if (!params[QK.sk]) {
|
|
21
21
|
if (params[QK.ck]) {
|
|
22
|
-
const m = findMenuItem(rawMenuData, params[QK.ck]);
|
|
22
|
+
const m = findMenuItem(rawMenuData, params[QK.ck], projectKey);
|
|
23
23
|
if (m) {
|
|
24
24
|
uSK(m.key);
|
|
25
25
|
return;
|
|
@@ -27,7 +27,11 @@ var SidebarSlotContainer = (props) => {
|
|
|
27
27
|
}
|
|
28
28
|
logPageNotFound();
|
|
29
29
|
}
|
|
30
|
-
}, [
|
|
30
|
+
}, [
|
|
31
|
+
rawMenuData,
|
|
32
|
+
params,
|
|
33
|
+
projectKey
|
|
34
|
+
]);
|
|
31
35
|
return /* @__PURE__ */ jsxs("div", {
|
|
32
36
|
className: "sidebar-slot flex h-full w-full gap-0 overflow-hidden bg-theme-bg",
|
|
33
37
|
children: [/* @__PURE__ */ jsx("div", {
|
|
@@ -37,7 +41,7 @@ var SidebarSlotContainer = (props) => {
|
|
|
37
41
|
items: menuItems,
|
|
38
42
|
selectedKey: SK,
|
|
39
43
|
onSelect: (e) => {
|
|
40
|
-
const m = findMenuItem(rawMenuData, e);
|
|
44
|
+
const m = findMenuItem(rawMenuData, e, projectKey);
|
|
41
45
|
uSK(e);
|
|
42
46
|
nav({
|
|
43
47
|
...m.path,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FreezeState, apiFreezerStore, useApiFreezer } from "./stores/apiFreezer.js";
|
|
2
|
-
import { modeStore, useModeStore } from "./stores/mode.js";
|
|
2
|
+
import { ModeStoreProvider, createModeStore, modeStore, useModeStore, useModeStoreApi } from "./stores/mode.js";
|
|
3
3
|
import { schemaEventBus } from "./stores/schemaEventBus.js";
|
|
4
4
|
import { schemaStore, useSchemaStore } from "./stores/schemaStore.js";
|
|
5
|
-
export { FreezeState, apiFreezerStore, modeStore, schemaEventBus, schemaStore, useApiFreezer, useModeStore, useSchemaStore };
|
|
5
|
+
export { FreezeState, ModeStoreProvider, apiFreezerStore, createModeStore, modeStore, schemaEventBus, schemaStore, useApiFreezer, useModeStore, useModeStoreApi, useSchemaStore };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BasicModuleType, SidebarModuleType } from "../../../
|
|
1
|
+
import { BasicModuleType, SidebarModuleType } from "../../../models/types/menuType";
|
|
2
2
|
declare const useCurrentMenuData: <T = {
|
|
3
3
|
moduleType: BasicModuleType["moduleType"];
|
|
4
4
|
sidebarConfig: SidebarModuleType["sidebarConfig"];
|
|
@@ -17,8 +17,8 @@ var useCurrentMenuData = (useSibe = false) => {
|
|
|
17
17
|
return { menu: useMemo(() => {
|
|
18
18
|
const isSide = params[QK.sk];
|
|
19
19
|
const menuTypeIsTop = !!params[QK.k];
|
|
20
|
-
const menu = findMenuItem(projectInfo?.menu, menuTypeIsTop ? params[QK.k] : params[QK.sk]);
|
|
21
|
-
if (isSide && useSibe && menuTypeIsTop && menu) return findMenuItem(menu.sidebarConfig?.menu ?? [], params[QK.sk]);
|
|
20
|
+
const menu = findMenuItem(projectInfo?.menu, menuTypeIsTop ? params[QK.k] : params[QK.sk], projectInfo?.key);
|
|
21
|
+
if (isSide && useSibe && menuTypeIsTop && menu) return findMenuItem(menu.sidebarConfig?.menu ?? [], params[QK.sk], projectInfo?.key);
|
|
22
22
|
return menu;
|
|
23
23
|
}, [
|
|
24
24
|
projectInfo?.menu,
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { QK, deserializationUrlSearch } from "../common/menu.js";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
|
-
import { useParams } from "react-router-dom";
|
|
3
|
+
import { useLocation, useParams } from "react-router-dom";
|
|
4
4
|
//#region frontend/src/hooks/useRouterParams.ts
|
|
5
5
|
var useRouterParams = () => {
|
|
6
6
|
const params = useParams();
|
|
7
|
+
const { search } = useLocation();
|
|
7
8
|
return useMemo(() => {
|
|
8
|
-
const query = deserializationUrlSearch(
|
|
9
|
+
const query = deserializationUrlSearch(search);
|
|
9
10
|
return {
|
|
10
11
|
...params,
|
|
11
12
|
...query[QK.ck] ? { [QK.ck]: query[QK.ck] } : {}
|
|
12
13
|
};
|
|
13
|
-
}, [params]);
|
|
14
|
+
}, [params, search]);
|
|
14
15
|
};
|
|
15
16
|
//#endregion
|
|
16
17
|
export { useRouterParams as default };
|
|
@@ -12,6 +12,7 @@ export { api, del, FetchAxios, get, patch, post, put, request } from "./common/r
|
|
|
12
12
|
export type { AxiosError, BaseResponse, PageParams, PageResponse, RequestConfig, ResponseConfig, } from "./common/request";
|
|
13
13
|
export { applyThemeMode, getCurrentThemeMode, getStoredThemeMode, initThemeMode, persistThemeMode, themeSwitchStorageKey, } from "./common/theme";
|
|
14
14
|
export type { ThemeSwitchMode } from "./common/theme";
|
|
15
|
+
export { registerFrontendSchemaFormComponents } from "./common/schemaForm";
|
|
15
16
|
export { clearAuthToken, getAuthToken, localKeyMap, setAuthToken } from "./common/auth/index";
|
|
16
17
|
export * from "./common/language";
|
|
17
18
|
export * from "./defaultPages/SchemaPage/data/eventInfo";
|
package/fe/frontend/src/index.js
CHANGED
|
@@ -3,14 +3,15 @@ import { i18n, i18nStore } from "../../packages/common/i18n/index.js";
|
|
|
3
3
|
import "../../packages/react/ui/i18n/index.js";
|
|
4
4
|
import { addLanguageResources, getCurrentLanguage, getFallbackLanguage, getI18nResources, getSupportedLanguages, getText, registerFrontendI18nResources, setFallbackLanguage, setLanguage, setResources, t } from "./common/language.js";
|
|
5
5
|
import { FreezeState, apiFreezerStore, useApiFreezer } from "./stores/apiFreezer.js";
|
|
6
|
-
import FetchAxios from "../../packages/common/http/index.js";
|
|
6
|
+
import { FetchAxios } from "../../packages/common/http/index.js";
|
|
7
7
|
import { api, del, get, patch, post, put, request } from "./common/request.js";
|
|
8
|
-
import { modeStore, useModeStore } from "./stores/mode.js";
|
|
8
|
+
import { ModeStoreProvider, createModeStore, modeStore, useModeStore, useModeStoreApi } from "./stores/mode.js";
|
|
9
9
|
import { useText } from "./hooks/useText.js";
|
|
10
10
|
import HeaderView from "./components/BasePage/HeaderView.js";
|
|
11
11
|
import { renderImportComponent } from "./common/importComponent.js";
|
|
12
12
|
import { applyThemeMode, getCurrentThemeMode, getStoredThemeMode, initThemeMode, persistThemeMode, themeSwitchStorageKey } from "./common/theme.js";
|
|
13
13
|
import { generateRouter } from "./components/Router/index.js";
|
|
14
|
+
import { registerFrontendSchemaFormComponents } from "./common/schemaForm.js";
|
|
14
15
|
import { schemaEventBus } from "./stores/schemaEventBus.js";
|
|
15
16
|
import { clearRafTimer, rafClearInterval, rafClearTimeout, rafSetInterval, rafSetTimeout } from "../../packages/common/rafTimer.js";
|
|
16
17
|
import { schemaStore, useSchemaStore } from "./stores/schemaStore.js";
|
|
@@ -22,4 +23,4 @@ import ThemeSwitch_default from "./components/ThemeSwitch/index.js";
|
|
|
22
23
|
import "./components/index.js";
|
|
23
24
|
import { eventsInfo } from "./defaultPages/SchemaPage/data/eventInfo.js";
|
|
24
25
|
import { merge } from "./defaultPages/SchemaPage/utils/permissions.js";
|
|
25
|
-
export { AsyncSelect_default as AsyncSelect, FetchAxios, FreezeState, HeaderView, LanguageSwitch_default as LanguageSwitch, ThemeSwitch_default as ThemeSwitch, addLanguageResources, api, apiFreezerStore, applyThemeMode, clearAuthToken, clearRafTimer, del, eventsInfo, generateRouter, get, getAuthToken, getCurrentLanguage, getCurrentThemeMode, getFallbackLanguage, getI18nResources, getStoredThemeMode, getSupportedLanguages, getText, i18n, i18nStore, initApp, initThemeMode, localKeyMap, merge, modeStore, patch, persistThemeMode, post, put, rafClearInterval, rafClearTimeout, rafSetInterval, rafSetTimeout, registerFrontendI18nResources, renderImportComponent, request, schemaEventBus, schemaStore, setAuthToken, setFallbackLanguage, setLanguage, setResources, t, themeSwitchStorageKey, useApiFreezer, useModeStore, useSchemaStore, useText };
|
|
26
|
+
export { AsyncSelect_default as AsyncSelect, FetchAxios, FreezeState, HeaderView, LanguageSwitch_default as LanguageSwitch, ModeStoreProvider, ThemeSwitch_default as ThemeSwitch, addLanguageResources, api, apiFreezerStore, applyThemeMode, clearAuthToken, clearRafTimer, createModeStore, del, eventsInfo, generateRouter, get, getAuthToken, getCurrentLanguage, getCurrentThemeMode, getFallbackLanguage, getI18nResources, getStoredThemeMode, getSupportedLanguages, getText, i18n, i18nStore, initApp, initThemeMode, localKeyMap, merge, modeStore, patch, persistThemeMode, post, put, rafClearInterval, rafClearTimeout, rafSetInterval, rafSetTimeout, registerFrontendI18nResources, registerFrontendSchemaFormComponents, renderImportComponent, request, schemaEventBus, schemaStore, setAuthToken, setFallbackLanguage, setLanguage, setResources, t, themeSwitchStorageKey, useApiFreezer, useModeStore, useModeStoreApi, useSchemaStore, useText };
|
package/fe/frontend/src/main.js
CHANGED
|
@@ -2,6 +2,7 @@ import "./main.css";
|
|
|
2
2
|
import { modeStore } from "./stores/mode.js";
|
|
3
3
|
import { renderImportComponent } from "./common/importComponent.js";
|
|
4
4
|
import { generateRouter } from "./components/Router/index.js";
|
|
5
|
+
import { registerFrontendSchemaFormComponents } from "./common/schemaForm.js";
|
|
5
6
|
import "./exportStore.js";
|
|
6
7
|
/* empty css */
|
|
7
8
|
import { useEffect } from "react";
|
|
@@ -51,6 +52,7 @@ var AppLifecycle = ({ children, hookContext, afterRender }) => {
|
|
|
51
52
|
};
|
|
52
53
|
var initApp = (RootComponent, options) => {
|
|
53
54
|
console.log("initApp");
|
|
55
|
+
registerFrontendSchemaFormComponents();
|
|
54
56
|
const bootstrap = async () => {
|
|
55
57
|
const rootElement = document.getElementById("root");
|
|
56
58
|
const root = createRoot(rootElement);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type ModelInfo, type ProjectInfo } from "../api/baseInfo";
|
|
2
|
+
import { type ReactNode } from "react";
|
|
3
|
+
import type { StoreApi } from "zustand/vanilla";
|
|
2
4
|
interface ModeState {
|
|
3
5
|
modeList: ModelInfo[];
|
|
4
6
|
projectInfo: ProjectInfo | null;
|
|
@@ -10,6 +12,17 @@ interface ModeAction {
|
|
|
10
12
|
initModeData: () => Promise<void>;
|
|
11
13
|
}
|
|
12
14
|
type IStore = ModeState & ModeAction;
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
+
export type ModeStore = IStore;
|
|
16
|
+
export type ModeStoreApi = StoreApi<IStore>;
|
|
17
|
+
export type ModeStoreInitialState = Partial<ModeState>;
|
|
18
|
+
export declare const createModeStore: (initialState?: ModeStoreInitialState) => StoreApi<IStore>;
|
|
19
|
+
export declare const modeStore: StoreApi<IStore>;
|
|
20
|
+
export declare function ModeStoreProvider({ initialState, store, children, }: {
|
|
21
|
+
initialState?: ModeStoreInitialState;
|
|
22
|
+
store?: ModeStoreApi;
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
}): import("react").FunctionComponentElement<import("react").ProviderProps<ModeStoreApi | null>>;
|
|
25
|
+
export declare function useModeStoreApi(): StoreApi<IStore>;
|
|
26
|
+
export declare function useModeStore(): IStore;
|
|
27
|
+
export declare function useModeStore<T>(selector: (state: IStore) => T): T;
|
|
15
28
|
export {};
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { setApiAuth } from "../common/auth/index.js";
|
|
2
|
-
import { createStoreHook } from "../../../packages/react/ui/lib/createStoreHook.js";
|
|
3
2
|
import { getModelList, getProjectData } from "../api/baseInfo.js";
|
|
4
3
|
import { deserializationUrlSearch } from "../common/menu.js";
|
|
5
|
-
import {
|
|
4
|
+
import { createContext, createElement, useContext, useRef } from "react";
|
|
5
|
+
import { createStore, useStore } from "zustand";
|
|
6
6
|
//#region frontend/src/stores/mode.ts
|
|
7
|
-
var
|
|
7
|
+
var createModeStore = (initialState = {}) => createStore((set, get) => ({
|
|
8
8
|
modeList: [],
|
|
9
9
|
projectInfo: null,
|
|
10
10
|
initData: false,
|
|
11
|
+
...initialState,
|
|
11
12
|
setModeList(modeList) {
|
|
12
13
|
set({ modeList });
|
|
13
14
|
},
|
|
@@ -31,6 +32,19 @@ var modeStore = createStore((set, get) => ({
|
|
|
31
32
|
});
|
|
32
33
|
}
|
|
33
34
|
}));
|
|
34
|
-
var
|
|
35
|
+
var modeStore = createModeStore();
|
|
36
|
+
var ModeStoreContext = createContext(null);
|
|
37
|
+
function ModeStoreProvider({ initialState, store, children }) {
|
|
38
|
+
const storeRef = useRef(null);
|
|
39
|
+
if (!storeRef.current) storeRef.current = store ?? createModeStore(initialState);
|
|
40
|
+
return createElement(ModeStoreContext.Provider, { value: storeRef.current }, children);
|
|
41
|
+
}
|
|
42
|
+
function useModeStoreApi() {
|
|
43
|
+
return useContext(ModeStoreContext) ?? modeStore;
|
|
44
|
+
}
|
|
45
|
+
function useModeStore(selector) {
|
|
46
|
+
const store = useModeStoreApi();
|
|
47
|
+
return selector ? useStore(store, selector) : useStore(store);
|
|
48
|
+
}
|
|
35
49
|
//#endregion
|
|
36
|
-
export { modeStore, useModeStore };
|
|
50
|
+
export { ModeStoreProvider, createModeStore, modeStore, useModeStore, useModeStoreApi };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { isNonNullable } from "../guards/index.js";
|
|
2
|
+
//#region packages/common/array/index.ts
|
|
3
|
+
function toArray(value) {
|
|
4
|
+
if (value === null || value === void 0) return [];
|
|
5
|
+
return Array.isArray(value) ? [...value] : [value];
|
|
6
|
+
}
|
|
7
|
+
var compact = (items) => {
|
|
8
|
+
return items.filter(isNonNullable);
|
|
9
|
+
};
|
|
10
|
+
var uniqueBy = (items, getKey) => {
|
|
11
|
+
const keys = /* @__PURE__ */ new Set();
|
|
12
|
+
const result = [];
|
|
13
|
+
for (const item of items) {
|
|
14
|
+
const key = getKey(item);
|
|
15
|
+
if (keys.has(key)) continue;
|
|
16
|
+
keys.add(key);
|
|
17
|
+
result.push(item);
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var groupBy = (items, getKey) => {
|
|
22
|
+
const result = {};
|
|
23
|
+
for (const item of items) {
|
|
24
|
+
const key = getKey(item);
|
|
25
|
+
result[key] = result[key] ?? [];
|
|
26
|
+
result[key].push(item);
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
};
|
|
30
|
+
var chunk = (items, size) => {
|
|
31
|
+
if (!Number.isInteger(size) || size <= 0) throw new RangeError("chunk size must be a positive integer");
|
|
32
|
+
const result = [];
|
|
33
|
+
for (let index = 0; index < items.length; index += size) result.push(items.slice(index, index + size));
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
//#endregion
|
|
37
|
+
export { chunk, compact, groupBy, toArray, uniqueBy };
|
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
//#region packages/common/guards/index.ts
|
|
2
|
+
var isNil = (value) => {
|
|
3
|
+
return value === null || value === void 0;
|
|
4
|
+
};
|
|
5
|
+
var isNonNullable = (value) => {
|
|
6
|
+
return value !== null && value !== void 0;
|
|
7
|
+
};
|
|
8
|
+
var isString = (value) => {
|
|
9
|
+
return typeof value === "string";
|
|
10
|
+
};
|
|
11
|
+
var isNumber = (value) => {
|
|
12
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
13
|
+
};
|
|
14
|
+
var isBoolean = (value) => {
|
|
15
|
+
return typeof value === "boolean";
|
|
16
|
+
};
|
|
17
|
+
var isFunction = (value) => {
|
|
18
|
+
return typeof value === "function";
|
|
19
|
+
};
|
|
2
20
|
var isPlainObject = (value) => {
|
|
3
21
|
if (value === null || typeof value !== "object") return false;
|
|
4
22
|
const prototype = Object.getPrototypeOf(value);
|
|
5
23
|
return prototype === Object.prototype || prototype === null;
|
|
6
24
|
};
|
|
7
25
|
//#endregion
|
|
8
|
-
export { isPlainObject };
|
|
26
|
+
export { isBoolean, isFunction, isNil, isNonNullable, isNumber, isPlainObject, isString };
|
|
@@ -297,4 +297,4 @@ var FetchAxios = class {
|
|
|
297
297
|
var axios = new FetchAxios();
|
|
298
298
|
var createInstance = (defaultConfig) => new FetchAxios(defaultConfig);
|
|
299
299
|
//#endregion
|
|
300
|
-
export {
|
|
300
|
+
export { FetchAxios, FetchAxios as default, axios, createInstance };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "./default.js";
|
|
2
|
-
import "./en-US.js";
|
|
1
|
+
import { defaultLanguageResources } from "./default.js";
|
|
2
|
+
import { defaultEnglishResources } from "./en-US.js";
|
|
3
3
|
import { defaultLanguage, languageLocalKey, translations } from "./locales.js";
|
|
4
4
|
//#region packages/common/i18n/index.ts
|
|
5
5
|
/** 判断某个消息节点是否是可继续递归访问的普通字典。 */
|
|
@@ -91,7 +91,7 @@ var persistLanguage = (storageKey, language) => {
|
|
|
91
91
|
windowRef.localStorage.setItem(storageKey, language);
|
|
92
92
|
};
|
|
93
93
|
var createInitialState = () => ({
|
|
94
|
-
language:
|
|
94
|
+
language: defaultLanguage,
|
|
95
95
|
fallbackLanguage: defaultLanguage,
|
|
96
96
|
resources: translations,
|
|
97
97
|
storageKey: languageLocalKey,
|
|
@@ -122,6 +122,10 @@ var createI18nStore = () => {
|
|
|
122
122
|
const { persist, storageKey } = state;
|
|
123
123
|
if (persist) persistLanguage(storageKey, language);
|
|
124
124
|
},
|
|
125
|
+
hydrateStoredLanguage: () => {
|
|
126
|
+
const { storageKey } = state;
|
|
127
|
+
setState({ language: getStoredLanguage(storageKey) });
|
|
128
|
+
},
|
|
125
129
|
setFallbackLanguage: (fallbackLanguage) => {
|
|
126
130
|
setState({ fallbackLanguage });
|
|
127
131
|
},
|
|
@@ -172,4 +176,4 @@ var t = i18n;
|
|
|
172
176
|
/** 兼容历史调用的别名,行为等同于 i18n。 */
|
|
173
177
|
var getLanguage = i18n;
|
|
174
178
|
//#endregion
|
|
175
|
-
export { getI18nPathValue, getLanguage, i18n, i18nStore, interpolateI18nMessage, isPlainI18nDictionary, mergeI18nDictionary, mergeI18nResources, t, translate };
|
|
179
|
+
export { defaultEnglishResources, defaultLanguage, defaultLanguageResources, getI18nPathValue, getLanguage, i18n, i18nStore, interpolateI18nMessage, isPlainI18nDictionary, languageLocalKey, mergeI18nDictionary, mergeI18nResources, t, translate, translations };
|
|
@@ -29,6 +29,7 @@ export interface I18nAddResourcesOptions {
|
|
|
29
29
|
export type I18nTranslator = <T = string>(key: string, fillingData?: I18nInterpolationValues, options?: I18nTranslateOptions) => T | string;
|
|
30
30
|
export interface I18nActions {
|
|
31
31
|
setLanguage: (language: I18nLanguage) => void;
|
|
32
|
+
hydrateStoredLanguage: () => void;
|
|
32
33
|
setFallbackLanguage: (language: I18nLanguage) => void;
|
|
33
34
|
setResources: (resources: I18nResources, options?: I18nSetResourcesOptions) => void;
|
|
34
35
|
addResources: (language: I18nLanguage, messages: I18nDictionary, options?: I18nAddResourcesOptions) => void;
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { defaultLanguageResources } from "./i18n/default.js";
|
|
2
|
+
import { defaultEnglishResources } from "./i18n/en-US.js";
|
|
3
|
+
import { defaultLanguage, languageLocalKey, translations } from "./i18n/locales.js";
|
|
4
|
+
import { getI18nPathValue, getLanguage, i18n, i18nStore, interpolateI18nMessage, isPlainI18nDictionary, mergeI18nDictionary, mergeI18nResources, t, translate } from "./i18n/index.js";
|
|
5
|
+
import { FetchAxios, axios, createInstance } from "./http/index.js";
|
|
6
|
+
import { isBoolean, isFunction, isNil, isNonNullable, isNumber, isPlainObject, isString } from "./guards/index.js";
|
|
7
|
+
import { chunk, compact, groupBy, toArray, uniqueBy } from "./array/index.js";
|
|
8
|
+
import { LRUCache } from "./cache/LRUCache.js";
|
|
9
|
+
import { ANSI_RESET, ansiColors, colorLog, colorize, joinColorized, logColor, logColorized, logGreen, logJoinColorized, logPink, logRed, logWhite, logYellow } from "./log/index.js";
|
|
10
|
+
import { clamp, toFiniteNumber } from "./number/index.js";
|
|
11
|
+
import { filterEmpty, filtereEmpty } from "./object/filterEmpty.js";
|
|
12
|
+
import { mapValues, omit, pick } from "./object/index.js";
|
|
13
|
+
import { clearRafTimer, rafClearInterval, rafClearTimeout, rafSetInterval, rafSetTimeout } from "./rafTimer.js";
|
|
14
|
+
import { SSR_DATA_KEY, clearHydrationData, createHydrationData, peekHydrationData, readHydrationData, serializeHydrationData, serializeHydrationDataScriptContent } from "./ssr/hydration.js";
|
|
15
|
+
import { clientOnly, isBrowser, isServer, safeDocument, safeLocalStorage, safeSetLocalStorage, safeWindow } from "./ssr/index.js";
|
|
16
|
+
import { capitalize, isBlank, joinStr, kebabCase } from "./string/index.js";
|
|
17
|
+
export { ANSI_RESET, FetchAxios, LRUCache, SSR_DATA_KEY, ansiColors, axios, capitalize, chunk, clamp, clearHydrationData, clearRafTimer, clientOnly, colorLog, colorize, compact, createHydrationData, createInstance, defaultEnglishResources, defaultLanguage, defaultLanguageResources, filterEmpty, filtereEmpty, getI18nPathValue, getLanguage, groupBy, i18n, i18nStore, interpolateI18nMessage, isBlank, isBoolean, isBrowser, isFunction, isNil, isNonNullable, isNumber, isPlainI18nDictionary, isPlainObject, isServer, isString, joinColorized, joinStr, kebabCase, languageLocalKey, logColor, logColorized, logGreen, logJoinColorized, logPink, logRed, logWhite, logYellow, mapValues, mergeI18nDictionary, mergeI18nResources, omit, peekHydrationData, pick, rafClearInterval, rafClearTimeout, rafSetInterval, rafSetTimeout, readHydrationData, safeDocument, safeLocalStorage, safeSetLocalStorage, safeWindow, serializeHydrationData, serializeHydrationDataScriptContent, t, toArray, toFiniteNumber, translate, translations, uniqueBy };
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
//#region packages/common/log/index.ts
|
|
2
|
+
var ANSI_RESET = "\x1B[0m";
|
|
3
|
+
var ansiColors = {
|
|
4
|
+
black: "\x1B[30m",
|
|
5
|
+
red: "\x1B[31m",
|
|
6
|
+
green: "\x1B[32m",
|
|
7
|
+
yellow: "\x1B[33m",
|
|
8
|
+
blue: "\x1B[34m",
|
|
9
|
+
magenta: "\x1B[35m",
|
|
10
|
+
pink: "\x1B[95m",
|
|
11
|
+
cyan: "\x1B[36m",
|
|
12
|
+
white: "\x1B[37m",
|
|
13
|
+
gray: "\x1B[90m"
|
|
14
|
+
};
|
|
15
|
+
var getConsole = () => {
|
|
16
|
+
return globalThis.console;
|
|
17
|
+
};
|
|
18
|
+
var colorize = (message, color = "green") => {
|
|
19
|
+
return `${ansiColors[color]}${String(message)}${ANSI_RESET}`;
|
|
20
|
+
};
|
|
21
|
+
var joinColorized = (...messages) => {
|
|
22
|
+
return messages.map(String).join("");
|
|
23
|
+
};
|
|
24
|
+
var logJoinColorized = (...messages) => {
|
|
25
|
+
getConsole()?.log(messages.map(String).join(""));
|
|
26
|
+
};
|
|
27
|
+
var inspectPrimitive = (value) => {
|
|
28
|
+
if (typeof value === "string") return `'${value}'`;
|
|
29
|
+
if (typeof value === "bigint") return `${value}n`;
|
|
30
|
+
if (typeof value === "symbol") return String(value);
|
|
31
|
+
if (typeof value === "function") return `[Function${value.name ? `: ${value.name}` : ""}]`;
|
|
32
|
+
if (value === void 0) return "undefined";
|
|
33
|
+
if (value === null) return "null";
|
|
34
|
+
return String(value);
|
|
35
|
+
};
|
|
36
|
+
var inspectValue = (value, context, depth = 0) => {
|
|
37
|
+
if (value === null || typeof value !== "object") return inspectPrimitive(value);
|
|
38
|
+
if (context.seen.has(value)) return "[Circular]";
|
|
39
|
+
if (value instanceof Date) return value.toISOString();
|
|
40
|
+
if (value instanceof Error) return value.stack ?? `${value.name}: ${value.message}`;
|
|
41
|
+
context.seen.add(value);
|
|
42
|
+
if (Array.isArray(value)) {
|
|
43
|
+
const items = value.map((item) => inspectValue(item, context, depth + 1));
|
|
44
|
+
context.seen.delete(value);
|
|
45
|
+
return `[${items.join(", ")}]`;
|
|
46
|
+
}
|
|
47
|
+
const entries = Object.entries(value);
|
|
48
|
+
if (entries.length === 0) {
|
|
49
|
+
context.seen.delete(value);
|
|
50
|
+
return "{}";
|
|
51
|
+
}
|
|
52
|
+
const indent = " ".repeat(depth);
|
|
53
|
+
const nextIndent = " ".repeat(depth + 1);
|
|
54
|
+
const body = entries.map(([key, item]) => `${nextIndent}${key}: ${inspectValue(item, context, depth + 1)}`).join(",\n");
|
|
55
|
+
context.seen.delete(value);
|
|
56
|
+
return `{\n${body}\n${indent}}`;
|
|
57
|
+
};
|
|
58
|
+
var stringifyLogValue = (value) => {
|
|
59
|
+
return typeof value === "string" ? value : inspectValue(value, { seen: /* @__PURE__ */ new WeakSet() });
|
|
60
|
+
};
|
|
61
|
+
var formatSpecifier = (specifier, value) => {
|
|
62
|
+
if (specifier === "%%") return "%";
|
|
63
|
+
if (specifier === "%s") return String(value);
|
|
64
|
+
if (specifier === "%d" || specifier === "%i") return Number.parseInt(String(value), 10).toString();
|
|
65
|
+
if (specifier === "%f") return Number.parseFloat(String(value)).toString();
|
|
66
|
+
if (specifier === "%j") try {
|
|
67
|
+
return JSON.stringify(value);
|
|
68
|
+
} catch {
|
|
69
|
+
return "[Circular]";
|
|
70
|
+
}
|
|
71
|
+
if (specifier === "%o" || specifier === "%O") return stringifyLogValue(value);
|
|
72
|
+
if (specifier === "%c") return "";
|
|
73
|
+
return specifier;
|
|
74
|
+
};
|
|
75
|
+
var formatLogData = (data) => {
|
|
76
|
+
if (data.length === 0) return "";
|
|
77
|
+
const [first, ...rest] = data;
|
|
78
|
+
if (typeof first !== "string") return data.map(stringifyLogValue).join(" ");
|
|
79
|
+
let index = 0;
|
|
80
|
+
return [first.replace(/%[sdifjoOc%]/g, (specifier) => {
|
|
81
|
+
if (specifier === "%%") return "%";
|
|
82
|
+
if (index >= rest.length) return specifier;
|
|
83
|
+
const value = rest[index];
|
|
84
|
+
index += 1;
|
|
85
|
+
return formatSpecifier(specifier, value);
|
|
86
|
+
}), ...rest.slice(index).map(stringifyLogValue)].join(" ");
|
|
87
|
+
};
|
|
88
|
+
var isLogColor = (value) => {
|
|
89
|
+
return typeof value === "string" && value in ansiColors;
|
|
90
|
+
};
|
|
91
|
+
var isColorLogOptions = (value) => {
|
|
92
|
+
if (value === null || typeof value !== "object") return false;
|
|
93
|
+
if (!Object.keys(value).some((key) => key === "color" || key === "prefix" || key === "suffix")) return false;
|
|
94
|
+
const options = value;
|
|
95
|
+
return options.color === void 0 || isLogColor(options.color);
|
|
96
|
+
};
|
|
97
|
+
var withColor = (color, data, options = {}) => {
|
|
98
|
+
const prefix = options.prefix ?? "";
|
|
99
|
+
const suffix = options.suffix ?? "";
|
|
100
|
+
const message = formatLogData(data);
|
|
101
|
+
return [`${ansiColors[color]}${prefix}${message}${suffix}${ANSI_RESET}`];
|
|
102
|
+
};
|
|
103
|
+
var printColorMessage = (data, config) => {
|
|
104
|
+
const color = config.color ?? "green";
|
|
105
|
+
getConsole()?.log(...withColor(color, data, config));
|
|
106
|
+
};
|
|
107
|
+
function colorLog(...data) {
|
|
108
|
+
const [first, ...rest] = data;
|
|
109
|
+
const last = data.at(-1);
|
|
110
|
+
if (isLogColor(first) && data.length >= 2) {
|
|
111
|
+
printColorMessage(rest, { color: first });
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (isLogColor(last) && data.length === 2) {
|
|
115
|
+
printColorMessage([first], { color: last });
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (isColorLogOptions(last) && data.length >= 2) {
|
|
119
|
+
printColorMessage(data.slice(0, -1), last);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
printColorMessage(data, { color: "green" });
|
|
123
|
+
}
|
|
124
|
+
var logColor = (color, ...data) => {
|
|
125
|
+
printColorMessage(data, { color });
|
|
126
|
+
};
|
|
127
|
+
var logColorized = (...messages) => {
|
|
128
|
+
getConsole()?.log(...messages);
|
|
129
|
+
};
|
|
130
|
+
var logGreen = (...data) => {
|
|
131
|
+
logColor("green", ...data);
|
|
132
|
+
};
|
|
133
|
+
var logYellow = (...data) => {
|
|
134
|
+
logColor("yellow", ...data);
|
|
135
|
+
};
|
|
136
|
+
var logPink = (...data) => {
|
|
137
|
+
logColor("pink", ...data);
|
|
138
|
+
};
|
|
139
|
+
var logWhite = (...data) => {
|
|
140
|
+
logColor("white", ...data);
|
|
141
|
+
};
|
|
142
|
+
var logRed = (...data) => {
|
|
143
|
+
logColor("red", ...data);
|
|
144
|
+
};
|
|
145
|
+
//#endregion
|
|
146
|
+
export { ANSI_RESET, ansiColors, colorLog, colorize, joinColorized, logColor, logColorized, logGreen, logJoinColorized, logPink, logRed, logWhite, logYellow };
|