File tree Expand file tree Collapse file tree 4 files changed +49
-1
lines changed
examples/with-script-in-browser/components Expand file tree Collapse file tree 4 files changed +49
-1
lines changed Original file line number Diff line number Diff line change @@ -105,6 +105,7 @@ export default function ExampleApp({
105105 const [ zenModeEnabled , setZenModeEnabled ] = useState ( false ) ;
106106 const [ gridModeEnabled , setGridModeEnabled ] = useState ( false ) ;
107107 const [ renderScrollbars , setRenderScrollbars ] = useState ( false ) ;
108+ const [ interactive , setInteractive ] = useState ( false ) ;
108109 const [ blobUrl , setBlobUrl ] = useState < string > ( "" ) ;
109110 const [ canvasUrl , setCanvasUrl ] = useState < string > ( "" ) ;
110111 const [ exportWithDarkMode , setExportWithDarkMode ] = useState ( false ) ;
@@ -194,6 +195,7 @@ export default function ExampleApp({
194195 viewModeEnabled,
195196 zenModeEnabled,
196197 renderScrollbars,
198+ interactive,
197199 gridModeEnabled,
198200 theme,
199201 name : "Custom name of drawing" ,
@@ -722,6 +724,14 @@ export default function ExampleApp({
722724 />
723725 Render scrollbars
724726 </ label >
727+ < label >
728+ < input
729+ type = "checkbox"
730+ checked = { interactive }
731+ onChange = { ( ) => setInteractive ( ! interactive ) }
732+ />
733+ interactive
734+ </ label >
725735 < label >
726736 < input
727737 type = "checkbox"
Original file line number Diff line number Diff line change @@ -962,6 +962,7 @@ const ExcalidrawWrapper = () => {
962962 } ,
963963 } ,
964964 } }
965+ interactive = { true }
965966 langCode = { langCode }
966967 renderCustomStats = { renderCustomStats }
967968 detectScroll = { false }
Original file line number Diff line number Diff line change @@ -6466,6 +6466,42 @@ class App extends React.Component<AppProps, AppState> {
64666466 event : React . PointerEvent < HTMLCanvasElement > ,
64676467 ) => {
64686468 if ( this . props . interactive === false ) {
6469+ // Handle link detection for non-interactive mode
6470+ const scenePointer = viewportCoordsToSceneCoords ( event , this . state ) ;
6471+
6472+ const hitElement = this . getElementAtPosition (
6473+ scenePointer . x ,
6474+ scenePointer . y ,
6475+ { preferSelected : true , includeLockedElements : true } ,
6476+ ) ;
6477+
6478+ this . hitLinkElement = this . getElementLinkAtPosition (
6479+ scenePointer ,
6480+ hitElement ,
6481+ ) ;
6482+
6483+ if ( this . hitLinkElement ) {
6484+ setCursor ( this . interactiveCanvas , CURSOR_TYPE . POINTER ) ;
6485+ if (
6486+ ! isEmbeddableElement ( this . hitLinkElement ) ||
6487+ isPointHittingLinkIcon (
6488+ this . hitLinkElement ,
6489+ this . scene . getNonDeletedElementsMap ( ) ,
6490+ this . state ,
6491+ pointFrom ( scenePointer . x , scenePointer . y ) ,
6492+ )
6493+ ) {
6494+ showHyperlinkTooltip (
6495+ this . hitLinkElement ,
6496+ this . state ,
6497+ this . scene . getNonDeletedElementsMap ( ) ,
6498+ ) ;
6499+ }
6500+ } else {
6501+ hideHyperlinkToolip ( ) ;
6502+ setCursor ( this . interactiveCanvas , CURSOR_TYPE . AUTO ) ;
6503+ }
6504+
64696505 return false ;
64706506 }
64716507
Original file line number Diff line number Diff line change @@ -1277,7 +1277,8 @@ const _renderInteractiveScene = ({
12771277 if (
12781278 ! appState . multiElement &&
12791279 ! appState . newElement &&
1280- ! appState . selectedLinearElement ?. isEditing
1280+ ! appState . selectedLinearElement ?. isEditing &&
1281+ app . props . interactive !== false
12811282 ) {
12821283 const showBoundingBox = hasBoundingBox (
12831284 selectedElements ,
You can’t perform that action at this time.
0 commit comments