mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-14 07:04:45 -04:00

* Use document base uri for react router Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Rename getAndSetUser to fetchAndSetUser Getter should be reserved for simple get functions. Everything that does a bit more logic should use a more meaningful verb. Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Rename getFrontPageContent to fetchFrontPageContent Getter should be reserved for simple get functions. Everything that does a bit more logic should use a more meaningful verb. Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Reformat code Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Use PUBLIC_URL env var in index.html Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Introduce new environment variables For better testing (especially if you have multiple endpoints) this commit introduces REACT_APP_BACKEND_BASE_URL, REACT_APP_FRONTEND_ASSETS_URL and REACT_APP_CUSTOMIZE_ASSETS_URL Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Remove redundant license information Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Remove redundant license information Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Fix rebase issues Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Remove unused file Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Correct parameter Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Fix run tasks Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Force use of bash Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Fix link to cypress picture Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * revert change Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * fix url Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Remove license info Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Revert rebase issues Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Add missing banner code Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Fix test url Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Useless change to trigger github Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> * Don't set backend base url because this break the mock mode detection Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de> Co-authored-by: Philip Molares <philip.molares@udo.edu>
71 lines
2 KiB
TypeScript
71 lines
2 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'
|
|
import { Alert } from 'react-bootstrap'
|
|
import { ShowIf } from '../../../common/show-if/show-if'
|
|
import { useFrontendBaseUrl } from '../../../../hooks/common/use-frontend-base-url'
|
|
|
|
export interface GraphvizFrameProps {
|
|
code: string
|
|
}
|
|
|
|
export const GraphvizFrame: React.FC<GraphvizFrameProps> = ({ code }) => {
|
|
const container = useRef<HTMLDivElement>(null)
|
|
const [error, setError] = useState<string>()
|
|
|
|
const showError = useCallback((error: string) => {
|
|
if (!container.current) {
|
|
return
|
|
}
|
|
setError(error)
|
|
console.error(error)
|
|
container.current.querySelectorAll('svg')
|
|
.forEach(child => child.remove())
|
|
}, [])
|
|
|
|
const frontendBaseUrl = useFrontendBaseUrl()
|
|
|
|
useEffect(() => {
|
|
if (!container.current) {
|
|
return
|
|
}
|
|
const actualContainer = container.current
|
|
|
|
import(/* webpackChunkName: "d3-graphviz" */'@hpcc-js/wasm')
|
|
.then((wasmPlugin) => {
|
|
wasmPlugin.wasmFolder(`${ frontendBaseUrl }/static/js`)
|
|
})
|
|
.then(() => import(/* webpackChunkName: "d3-graphviz" */ 'd3-graphviz'))
|
|
.then((graphvizImport) => {
|
|
try {
|
|
setError(undefined)
|
|
graphvizImport.graphviz(actualContainer, {
|
|
useWorker: false,
|
|
zoom: false
|
|
})
|
|
.onerror(showError)
|
|
.renderDot(code)
|
|
} catch (error) {
|
|
showError(error)
|
|
}
|
|
})
|
|
.catch(() => {
|
|
console.error('error while loading graphviz')
|
|
})
|
|
}, [code, error, frontendBaseUrl, showError])
|
|
|
|
return (
|
|
<Fragment>
|
|
<ShowIf condition={ !!error }>
|
|
<Alert variant={ 'warning' }>{ error }</Alert>
|
|
</ShowIf>
|
|
<div className={ 'text-center overflow-x-auto' } data-cy={ 'graphviz' } ref={ container }/>
|
|
</Fragment>
|
|
)
|
|
}
|
|
|
|
export default GraphvizFrame
|