@@ -3,9 +3,12 @@ import ReactDOM from "react-dom";
33import type { FC } from "react" ;
44import { useEffect , useRef , useState } from "react" ;
55import { SVG_DATA , XML_DATA } from "./constant" ;
6- import { base64ToSvgString , stringToSvg , stringToXml , xmlToString } from "./utils" ;
76import { clearElement } from "./utils" ;
8- import { diagramLoader } from "./loader" ;
7+ import { loadEditor , loadViewer } from "./loader" ;
8+ import { stringToXml , xmlToString } from "../src/utils/xml" ;
9+ import { base64ToSvgString , stringToSvg } from "../src/utils/svg" ;
10+ import { getLanguage } from "../src/editor/i18n" ;
11+ import { EditorBus } from "../src/event" ;
912
1013const DiagramExample : FC = ( ) => {
1114 const [ loading , setLoading ] = useState ( true ) ;
@@ -15,16 +18,17 @@ const DiagramExample: FC = () => {
1518 const svgExampleContainer = useRef < HTMLDivElement > ( null ) ;
1619
1720 useEffect ( ( ) => {
18- diagramLoader ( ) . then ( ( ) => {
21+ // Preload Diagram
22+ Promise . all ( [ loadEditor ( ) , loadViewer ( ) ] ) . then ( ( ) => {
1923 setLoading ( false ) ;
20- } ) ; // Preload Diagram
24+ } ) ;
2125 } , [ ] ) ;
2226
2327 const convertXML = ( xml : string = xmlExample ) => {
2428 const div = xmlExampleContainer . current ;
2529 if ( div ) {
26- diagramLoader ( ) . then ( diagram => {
27- const diagramViewer = new diagram . DiagramViewer ( stringToXml ( xml ) ) ;
30+ loadViewer ( ) . then ( Viewer => {
31+ const diagramViewer = new Viewer ( stringToXml ( xml ) ) ;
2832 const svg = diagramViewer . renderSVG ( null , 1 , 1 ) ;
2933 diagramViewer . destroy ( ) ;
3034 clearElement ( div ) ;
@@ -42,42 +46,32 @@ const DiagramExample: FC = () => {
4246 }
4347 } ;
4448
45- const editXML = ( ) => {
46- diagramLoader ( ) . then ( diagram => {
47- const renderExit = ( el : HTMLDivElement ) => {
48- ReactDOM . render (
49- < div onClick = { diagramEditor . exit } className = "diagram-exit-btn" >
50- 退出
51- </ div > ,
52- el
53- ) ;
54- } ;
55- const diagramEditor = new diagram . DiagramEditor ( document . body , renderExit ) ;
56- diagram . getLanguage ( "zh" ) . then ( res => {
57- diagramEditor . start ( res , stringToXml ( xmlExample ) , ( xml : Node ) => {
58- const xmlString = xmlToString ( xml ) ;
59- xmlString && setXMLExample ( xmlString ) ;
60- xmlString && convertXML ( xmlString ) ;
61- } ) ;
62- } ) ;
49+ const editXML = async ( ) => {
50+ const Editor = await loadEditor ( ) ;
51+ const diagramEditor = new Editor ( document . body , ( ) => {
52+ diagramEditor . exit ( ) ;
53+ } ) ;
54+ const lang = await getLanguage ( "zh" ) ;
55+ diagramEditor . start ( lang , stringToXml ( xmlExample ) , ( xml : Node ) => {
56+ const xmlString = xmlToString ( xml ) ;
57+ xmlString && setXMLExample ( xmlString ) ;
58+ xmlString && convertXML ( xmlString ) ;
6359 } ) ;
6460 } ;
6561
6662 const editSVG = ( ) => {
67- diagramLoader ( ) . then ( diagram => {
68- const bus = new diagram . EditorBus ( {
69- data : svgExample ,
70- format : "xmlsvg" ,
71- onExport : ( svg : string ) => {
72- const svgStr = base64ToSvgString ( svg ) ;
73- if ( svgStr ) {
74- setSVGExample ( svgStr ) ;
75- convertSVG ( svgStr ) ;
76- }
77- } ,
78- } ) ;
79- bus . startEdit ( ) ;
63+ const bus = new EditorBus ( {
64+ data : svgExample ,
65+ format : "xmlsvg" ,
66+ onExport : ( svg : string ) => {
67+ const svgStr = base64ToSvgString ( svg ) ;
68+ if ( svgStr ) {
69+ setSVGExample ( svgStr ) ;
70+ convertSVG ( svgStr ) ;
71+ }
72+ } ,
8073 } ) ;
74+ bus . startEdit ( ) ;
8175 } ;
8276
8377 return (
0 commit comments