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 @@ -6491,6 +6491,42 @@ class App extends React.Component<AppProps, AppState> {
64916491 event : React . PointerEvent < HTMLCanvasElement > ,
64926492 ) => {
64936493 if ( this . props . interactive === false ) {
6494+ // Handle link detection for non-interactive mode
6495+ const scenePointer = viewportCoordsToSceneCoords ( event , this . state ) ;
6496+
6497+ const hitElement = this . getElementAtPosition (
6498+ scenePointer . x ,
6499+ scenePointer . y ,
6500+ { preferSelected : true , includeLockedElements : true } ,
6501+ ) ;
6502+
6503+ this . hitLinkElement = this . getElementLinkAtPosition (
6504+ scenePointer ,
6505+ hitElement ,
6506+ ) ;
6507+
6508+ if ( this . hitLinkElement ) {
6509+ setCursor ( this . interactiveCanvas , CURSOR_TYPE . POINTER ) ;
6510+ if (
6511+ ! isEmbeddableElement ( this . hitLinkElement ) ||
6512+ isPointHittingLinkIcon (
6513+ this . hitLinkElement ,
6514+ this . scene . getNonDeletedElementsMap ( ) ,
6515+ this . state ,
6516+ pointFrom ( scenePointer . x , scenePointer . y ) ,
6517+ )
6518+ ) {
6519+ showHyperlinkTooltip (
6520+ this . hitLinkElement ,
6521+ this . state ,
6522+ this . scene . getNonDeletedElementsMap ( ) ,
6523+ ) ;
6524+ }
6525+ } else {
6526+ hideHyperlinkToolip ( ) ;
6527+ setCursor ( this . interactiveCanvas , CURSOR_TYPE . AUTO ) ;
6528+ }
6529+
64946530 return false ;
64956531 }
64966532
Original file line number Diff line number Diff line change @@ -1455,7 +1455,8 @@ const _renderInteractiveScene = ({
14551455 if (
14561456 ! appState . multiElement &&
14571457 ! appState . newElement &&
1458- ! appState . selectedLinearElement ?. isEditing
1458+ ! appState . selectedLinearElement ?. isEditing &&
1459+ app . props . interactive !== false
14591460 ) {
14601461 const showBoundingBox = hasBoundingBox (
14611462 selectedElements ,
You can’t perform that action at this time.
0 commit comments