M: Lazy load dialogs
Some checks are pending
Frontend CI / build (22.x) (push) Waiting to run

This commit is contained in:
Ivan 2025-01-30 00:40:32 +03:00
parent 276b6a6be6
commit 092421b0c3
5 changed files with 56 additions and 25 deletions

View File

@ -6,6 +6,7 @@ import ConceptToaster from '@/app/ConceptToaster';
import Footer from '@/app/Footer'; import Footer from '@/app/Footer';
import Navigation from '@/app/Navigation'; import Navigation from '@/app/Navigation';
import Loader from '@/components/ui/Loader'; import Loader from '@/components/ui/Loader';
import ModalLoader from '@/components/ui/ModalLoader';
import { useAppLayoutStore, useMainHeight, useViewportHeight } from '@/stores/appLayout'; import { useAppLayoutStore, useMainHeight, useViewportHeight } from '@/stores/appLayout';
import { globals } from '@/utils/constants'; import { globals } from '@/utils/constants';
@ -45,7 +46,9 @@ function ApplicationLayout() {
pauseOnFocusLoss={false} pauseOnFocusLoss={false}
/> />
<GlobalDialogs /> <Suspense fallback={<ModalLoader />}>
<GlobalDialogs />
</Suspense>
<GlobalTooltips /> <GlobalTooltips />
<Navigation /> <Navigation />

View File

@ -1,31 +1,34 @@
'use client'; 'use client';
import DlgChangeInputSchema from '@/dialogs/DlgChangeInputSchema'; import React from 'react';
import DlgCloneLibraryItem from '@/dialogs/DlgCloneLibraryItem';
import DlgCreateCst from '@/dialogs/DlgCreateCst';
import DlgCreateOperation from '@/dialogs/DlgCreateOperation';
import DlgCreateVersion from '@/dialogs/DlgCreateVersion';
import DlgCstTemplate from '@/dialogs/DlgCstTemplate';
import DlgDeleteCst from '@/dialogs/DlgDeleteCst';
import DlgDeleteOperation from '@/dialogs/DlgDeleteOperation';
import DlgEditEditors from '@/dialogs/DlgEditEditors';
import DlgEditOperation from '@/dialogs/DlgEditOperation';
import DlgEditReference from '@/dialogs/DlgEditReference';
import DlgEditVersions from '@/dialogs/DlgEditVersions';
import DlgEditWordForms from '@/dialogs/DlgEditWordForms';
import DlgGraphParams from '@/dialogs/DlgGraphParams';
import DlgInlineSynthesis from '@/dialogs/DlgInlineSynthesis';
import DlgRelocateConstituents from '@/dialogs/DlgRelocateConstituents';
import DlgRenameCst from '@/dialogs/DlgRenameCst';
import DlgShowAST from '@/dialogs/DlgShowAST';
import DlgShowQR from '@/dialogs/DlgShowQR';
import DlgShowTypeGraph from '@/dialogs/DlgShowTypeGraph';
import DlgSubstituteCst from '@/dialogs/DlgSubstituteCst';
import DlgUploadRSForm from '@/dialogs/DlgUploadRSForm';
import { DialogType } from '@/models/miscellaneous'; import { DialogType } from '@/models/miscellaneous';
import DlgChangeLocation from '@/pages/OssPage/DlgChangeLocation';
import { useDialogsStore } from '@/stores/dialogs'; import { useDialogsStore } from '@/stores/dialogs';
const DlgChangeInputSchema = React.lazy(() => import('@/dialogs/DlgChangeInputSchema'));
const DlgChangeLocation = React.lazy(() => import('@/dialogs/DlgChangeLocation'));
const DlgCloneLibraryItem = React.lazy(() => import('@/dialogs/DlgCloneLibraryItem'));
const DlgCreateCst = React.lazy(() => import('@/dialogs/DlgCreateCst'));
const DlgCreateOperation = React.lazy(() => import('@/dialogs/DlgCreateOperation'));
const DlgCreateVersion = React.lazy(() => import('@/dialogs/DlgCreateVersion'));
const DlgCstTemplate = React.lazy(() => import('@/dialogs/DlgCstTemplate'));
const DlgDeleteCst = React.lazy(() => import('@/dialogs/DlgDeleteCst'));
const DlgDeleteOperation = React.lazy(() => import('@/dialogs/DlgDeleteOperation'));
const DlgEditEditors = React.lazy(() => import('@/dialogs/DlgEditEditors'));
const DlgEditOperation = React.lazy(() => import('@/dialogs/DlgEditOperation'));
const DlgEditReference = React.lazy(() => import('@/dialogs/DlgEditReference'));
const DlgEditVersions = React.lazy(() => import('@/dialogs/DlgEditVersions'));
const DlgEditWordForms = React.lazy(() => import('@/dialogs/DlgEditWordForms'));
const DlgGraphParams = React.lazy(() => import('@/dialogs/DlgGraphParams'));
const DlgInlineSynthesis = React.lazy(() => import('@/dialogs/DlgInlineSynthesis'));
const DlgRelocateConstituents = React.lazy(() => import('@/dialogs/DlgRelocateConstituents'));
const DlgRenameCst = React.lazy(() => import('@/dialogs/DlgRenameCst'));
const DlgShowAST = React.lazy(() => import('@/dialogs/DlgShowAST'));
const DlgShowQR = React.lazy(() => import('@/dialogs/DlgShowQR'));
const DlgShowTypeGraph = React.lazy(() => import('@/dialogs/DlgShowTypeGraph'));
const DlgSubstituteCst = React.lazy(() => import('@/dialogs/DlgSubstituteCst'));
const DlgUploadRSForm = React.lazy(() => import('@/dialogs/DlgUploadRSForm'));
export const GlobalDialogs = () => { export const GlobalDialogs = () => {
const active = useDialogsStore(state => state.active); const active = useDialogsStore(state => state.active);

View File

@ -0,0 +1,25 @@
'use client';
import clsx from 'clsx';
import Loader from './Loader';
function ModalLoader() {
return (
<div className='fixed top-0 left-0 w-full h-full z-modal cursor-default'>
<div className={clsx('z-navigation', 'fixed top-0 left-0', 'w-full h-full', 'backdrop-blur-[3px] opacity-50')} />
<div className={clsx('z-navigation', 'fixed top-0 left-0', 'w-full h-full', 'bg-prim-0 opacity-25')} />
<div
className={clsx(
'cc-animate-modal p-20',
'z-modal absolute bottom-1/2 left-1/2 -translate-x-1/2 translate-y-1/2',
'border rounded-xl bg-prim-100'
)}
>
<Loader circular scale={6} />
</div>
</div>
);
}
export default ModalLoader;

View File

@ -1,6 +1,7 @@
import { create } from 'zustand'; import { create } from 'zustand';
import { DlgChangeInputSchemaProps } from '@/dialogs/DlgChangeInputSchema'; import { DlgChangeInputSchemaProps } from '@/dialogs/DlgChangeInputSchema';
import { DlgChangeLocationProps } from '@/dialogs/DlgChangeLocation';
import { DlgCloneLibraryItemProps } from '@/dialogs/DlgCloneLibraryItem'; import { DlgCloneLibraryItemProps } from '@/dialogs/DlgCloneLibraryItem';
import { DlgCreateCstProps } from '@/dialogs/DlgCreateCst/DlgCreateCst'; import { DlgCreateCstProps } from '@/dialogs/DlgCreateCst/DlgCreateCst';
import { DlgCreateOperationProps } from '@/dialogs/DlgCreateOperation/DlgCreateOperation'; import { DlgCreateOperationProps } from '@/dialogs/DlgCreateOperation/DlgCreateOperation';
@ -23,7 +24,6 @@ import { DlgShowTypeGraphProps } from '@/dialogs/DlgShowTypeGraph/DlgShowTypeGra
import { DlgSubstituteCstProps } from '@/dialogs/DlgSubstituteCst'; import { DlgSubstituteCstProps } from '@/dialogs/DlgSubstituteCst';
import { DlgUploadRSFormProps } from '@/dialogs/DlgUploadRSForm'; import { DlgUploadRSFormProps } from '@/dialogs/DlgUploadRSForm';
import { DialogType } from '@/models/miscellaneous'; import { DialogType } from '@/models/miscellaneous';
import { DlgChangeLocationProps } from '@/pages/OssPage/DlgChangeLocation';
interface DialogsStore { interface DialogsStore {
active: DialogType | undefined; active: DialogType | undefined;