
* feat: integrate mermaidToExcalidraw * create mermaid to excal dialog * allow mermaid syntax and export in preview * fix * fix webpack config * fix markdown error by using named export * center preview * set elements as selected when inserted onto canvas * persist mermaid data to storage * store canvas data in refs * load mermaid lazily * tweak design * compute width, height correctly for arrows * fix undefined vertex issue * add mermaid icon in dropdown * add a note in dialog * reset preview when error * show error in preview when error * show mermaid error messgae react way * design tweaks * add example and docs link * fix * tweak design to remove scroll bar * show a spinner unless mermaid loaded * regenerate ids when needed via programmatic api, this makes sure for mermaid diagrams ids are regenerated * tweak * add option to transform viewport to scene coords in transform api * make opts optional and use 100% zoom when inserting to canvas * fix arrow bindings in safari and firefox * fix elements insert position and viewport centering * fix: Update start/end points by 0.5 so bindings don't overlap with start/end bound element coordinates. * defer rendering the preview * tweak text * fix tests * remove only * make design responsive * fix: show extra tools dropdown in mobile * fix mobile css * width auto * upgrade mermaid-to-excalidraw * don't pass appState in deps as its not used * upgrade mermaid-to-excalidraw to fix firefox issue * use types from mermaid-to-excalidraw * upgrade mermaid-to-excalidraw * use stable version of mermaid-to-excalidraw * upgrade mermaid-to-excalidraw * fix width of shapes toolbar for smaller screen size and also fix regression of mobile menu * use i18n * better api * enable test coverage in ui * Add tests * use common utils to update and get text editor * updgrade mermaid-to-excalidraw to support sequence diagrams * fix test * don't update arrow container height anytime in when redrawing text bounding box * increase size limit * increase size limit of vendor to 900kb * use openDialog for mermaid * upgrade mermaid-to-excalidraw * update frame id post generation * upgrade mermaid-to-excalidraw to add entity codes support * update size limit * upgrade mermaid-to-excalidraw package with frame api changes * upgrade mermaid-to-excalidraw to remove directive and use config * don't highlight mermaid tool and remove unused api setSelection * stop using loading state to update text area * move some styling to scss * review fixes * use modifiedTableIcon props and remove stale snap * css * dialog css * fix snap * use dialog border * change mermaidToExcalidrawLib to state * better styling of errors * make modal bigger * fix mobile * update snaps * fix icon color * fix dark mode insert button color * horizontally center spinner * render canvas conditionally on loaded state * rd tweaks * tweak class names * remove max height * typo in example * upgrade mermaid-to-excalidraw * simplify error state * fix height & overflow on vertical breakpoint * fix lint * show errors in overlay * set textarea font family * reduce opacity * update snap * upgrade to mermaid 0.1.2 --------- Co-authored-by: dwelle <luzar.david@gmail.com>
222 lines
4.7 KiB
SCSS
222 lines
4.7 KiB
SCSS
@import "../css/variables.module";
|
|
|
|
$verticalBreakpoint: 860px;
|
|
|
|
.excalidraw {
|
|
.dialog-mermaid {
|
|
&-title {
|
|
margin-bottom: 5px;
|
|
margin-top: 2px;
|
|
}
|
|
&-desc {
|
|
font-size: 15px;
|
|
font-style: italic;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.Modal__content .Island {
|
|
box-shadow: none;
|
|
}
|
|
|
|
@at-root .excalidraw:not(.excalidraw--mobile)#{&} {
|
|
padding: 1.25rem;
|
|
|
|
.Modal__content {
|
|
height: 100%;
|
|
max-height: 750px;
|
|
|
|
@media screen and (max-width: $verticalBreakpoint) {
|
|
height: auto;
|
|
// When vertical, we want the height to span whole viewport.
|
|
// This is also important for the children not to overflow the
|
|
// modal/viewport (for some reason).
|
|
max-height: 100%;
|
|
}
|
|
|
|
.Island {
|
|
height: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex: 1 1 auto;
|
|
|
|
.Dialog__content {
|
|
display: flex;
|
|
flex: 1 1 auto;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.dialog-mermaid-body {
|
|
width: 100%;
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
grid-template-rows: 1fr auto;
|
|
height: 100%;
|
|
column-gap: 4rem;
|
|
|
|
@media screen and (max-width: $verticalBreakpoint) {
|
|
flex-direction: column;
|
|
display: flex;
|
|
gap: 1rem;
|
|
}
|
|
}
|
|
|
|
.dialog-mermaid-panels {
|
|
display: grid;
|
|
width: 100%;
|
|
grid-template-columns: 1fr 1fr;
|
|
justify-content: space-between;
|
|
gap: 4rem;
|
|
|
|
grid-row: 1;
|
|
grid-column: 1 / 3;
|
|
|
|
@media screen and (max-width: $verticalBreakpoint) {
|
|
flex-direction: column;
|
|
display: flex;
|
|
gap: 1rem;
|
|
}
|
|
|
|
label {
|
|
font-size: 14px;
|
|
font-style: normal;
|
|
font-weight: 600;
|
|
margin-bottom: 4px;
|
|
margin-left: 4px;
|
|
|
|
@media screen and (max-width: $verticalBreakpoint) {
|
|
margin-top: 4px;
|
|
}
|
|
}
|
|
|
|
&-text {
|
|
display: flex;
|
|
flex-direction: column;
|
|
|
|
textarea {
|
|
width: 20rem;
|
|
height: 100%;
|
|
resize: none;
|
|
border-radius: var(--border-radius-lg);
|
|
border: 1px solid var(--dialog-border-color);
|
|
white-space: pre-wrap;
|
|
padding: 0.85rem;
|
|
box-sizing: border-box;
|
|
width: 100%;
|
|
font-family: monospace;
|
|
|
|
@media screen and (max-width: $verticalBreakpoint) {
|
|
width: auto;
|
|
height: 10rem;
|
|
}
|
|
}
|
|
}
|
|
|
|
&-preview-wrapper {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0.85rem;
|
|
box-sizing: border-box;
|
|
width: 100%;
|
|
// acts as min-height
|
|
height: 200px;
|
|
flex-grow: 1;
|
|
position: relative;
|
|
|
|
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==")
|
|
left center;
|
|
border-radius: var(--border-radius-lg);
|
|
border: 1px solid var(--dialog-border-color);
|
|
|
|
@media screen and (max-width: $verticalBreakpoint) {
|
|
// acts as min-height
|
|
height: 400px;
|
|
width: auto;
|
|
}
|
|
|
|
canvas {
|
|
max-width: 100%;
|
|
max-height: 100%;
|
|
}
|
|
}
|
|
|
|
&-preview-canvas-container {
|
|
display: flex;
|
|
width: 100%;
|
|
height: 100%;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
&-preview {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.mermaid-error {
|
|
color: red;
|
|
font-weight: 800;
|
|
font-size: 30px;
|
|
word-break: break-word;
|
|
overflow: auto;
|
|
max-height: 100%;
|
|
height: 100%;
|
|
width: 100%;
|
|
text-align: center;
|
|
position: absolute;
|
|
z-index: 10;
|
|
|
|
p {
|
|
font-weight: 500;
|
|
font-family: Cascadia;
|
|
text-align: left;
|
|
white-space: pre-wrap;
|
|
font-size: 0.875rem;
|
|
padding: 0 10px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.dialog-mermaid-buttons {
|
|
grid-column: 2;
|
|
|
|
.dialog-mermaid-insert {
|
|
&.excalidraw-button {
|
|
font-family: "Assistant";
|
|
font-weight: 600;
|
|
height: 2.5rem;
|
|
margin-top: 1em;
|
|
margin-bottom: 0.3em;
|
|
width: 7.5rem;
|
|
font-size: 12px;
|
|
color: $oc-white;
|
|
background-color: var(--color-primary);
|
|
|
|
&:hover {
|
|
background-color: var(--color-primary-darker);
|
|
}
|
|
&:active {
|
|
background-color: var(--color-primary-darkest);
|
|
}
|
|
|
|
@media screen and (max-width: $verticalBreakpoint) {
|
|
width: 100%;
|
|
}
|
|
|
|
@at-root .excalidraw.theme--dark#{&} {
|
|
color: var(--color-gray-100);
|
|
}
|
|
}
|
|
|
|
span {
|
|
padding-left: 0.5rem;
|
|
display: flex;
|
|
}
|
|
}
|
|
}
|
|
}
|