Docs Multi
Univer Doc supports multiple instances, allowing you to manage multiple documents in one unified view.
Loading...
import { createUniver, defaultTheme, LocaleType, merge } from '@univerjs/presets' import { UniverDocsCorePreset } from '@univerjs/presets/preset-docs-core' import docsCoreEnUS from '@univerjs/presets/preset-docs-core/locales/en-US' import { useEffect } from 'react' import { Mosaic, MosaicWindow } from 'react-mosaic-component' import 'react-mosaic-component/react-mosaic-component.css' import './style.css' import '@univerjs/presets/lib/styles/preset-docs-core.css' type ViewId = 'a' | 'b' | 'c' const TITLE_MAP: Record<ViewId, string> = { a: 'Doc 1', b: 'Doc 2', c: 'Doc 3', } function factory(id: string) { return function createUniverOnContainer() { const { univerAPI } = createUniver({ locale: LocaleType.EN_US, locales: { [LocaleType.EN_US]: merge( {}, docsCoreEnUS, ), }, theme: defaultTheme, presets: [ UniverDocsCorePreset({ container: id, }), ], }) univerAPI.createUniverDoc({}) } } export default function App() { useEffect(() => { factory('app-a')() factory('app-b')() factory('app-c')() }, []) return ( <div id="app"> <Mosaic renderTile={(id, path) => ( <MosaicWindow path={path} title={TITLE_MAP[id]} toolbarControls={<div />} > <div id={`app-${id}`} style={{ height: '100%' }}> {TITLE_MAP[id]} </div> </MosaicWindow> )} initialValue={{ direction: 'row', first: 'a', second: { direction: 'column', first: 'b', second: 'c', }, }} /> </div> ) }