@@ -80,7 +80,8 @@ import { preventXSS } from './render'
8080import Editor from './lib/editor'
8181
8282import getUIElements from './lib/editor/ui-elements'
83- import modeType from './lib/editor/modeType'
83+ import modeType from './lib/modeType'
84+ import appState from './lib/appState'
8485
8586var defaultTextHeight = 20
8687var viewportMargin = 20
@@ -244,7 +245,6 @@ const statusType = {
244245 fa : 'fa-plug'
245246 }
246247}
247- const defaultMode = modeType . view
248248
249249// global vars
250250window . loaded = false
@@ -256,7 +256,6 @@ let visibleSM = false
256256let visibleMD = false
257257let visibleLG = false
258258const isTouchDevice = 'ontouchstart' in document . documentElement
259- window . currentMode = defaultMode
260259let currentStatus = statusType . offline
261260let lastInfo = {
262261 needRestore : false ,
@@ -486,7 +485,7 @@ $(window).on('error', function () {
486485 // setNeedRefresh();
487486} )
488487
489- setupSyncAreas ( ui . area . codemirrorScroll , ui . area . view , ui . area . markdown )
488+ setupSyncAreas ( ui . area . codemirrorScroll , ui . area . view , ui . area . markdown , editor )
490489
491490function autoSyncscroll ( ) {
492491 if ( editorHasFocus ( ) ) {
@@ -548,7 +547,7 @@ function checkResponsive () {
548547 visibleMD = $ ( '.visible-md' ) . is ( ':visible' )
549548 visibleLG = $ ( '.visible-lg' ) . is ( ':visible' )
550549
551- if ( visibleXS && window . currentMode === modeType . both ) {
550+ if ( visibleXS && appState . currentMode === modeType . both ) {
552551 if ( editorHasFocus ( ) ) { changeMode ( modeType . edit ) } else { changeMode ( modeType . view ) }
553552 }
554553
@@ -562,7 +561,7 @@ function checkEditorStyle () {
562561 var desireHeight = editorInstance . statusBar ? ( ui . area . edit . height ( ) - editorInstance . statusBar . outerHeight ( ) ) : ui . area . edit . height ( )
563562 // set editor height and min height based on scrollbar style and mode
564563 var scrollbarStyle = editor . getOption ( 'scrollbarStyle' )
565- if ( scrollbarStyle === 'overlay' || window . currentMode === modeType . both ) {
564+ if ( scrollbarStyle === 'overlay' || appState . currentMode === modeType . both ) {
566565 ui . area . codemirrorScroll . css ( 'height' , desireHeight + 'px' )
567566 ui . area . codemirrorScroll . css ( 'min-height' , '' )
568567 checkEditorScrollbar ( )
@@ -618,7 +617,7 @@ function checkEditorStyle () {
618617 previousFocusOnEditor = null
619618 } )
620619 ui . area . resize . syncToggle . click ( function ( ) {
621- window . syncscroll = ! window . syncscroll
620+ appState . syncscroll = ! appState . syncscroll
622621 checkSyncToggle ( )
623622 } )
624623 ui . area . resize . handle . append ( ui . area . resize . syncToggle )
@@ -632,7 +631,7 @@ function checkEditorStyle () {
632631}
633632
634633function checkSyncToggle ( ) {
635- if ( window . syncscroll ) {
634+ if ( appState . syncscroll ) {
636635 if ( previousFocusOnEditor ) {
637636 window . preventSyncScrollToView = false
638637 syncScrollToView ( )
@@ -679,10 +678,10 @@ function checkTocStyle () {
679678 // toc scrollspy
680679 ui . toc . toc . removeClass ( 'scrollspy-body, scrollspy-view' )
681680 ui . toc . affix . removeClass ( 'scrollspy-body, scrollspy-view' )
682- if ( window . currentMode === modeType . both ) {
681+ if ( appState . currentMode === modeType . both ) {
683682 ui . toc . toc . addClass ( 'scrollspy-view' )
684683 ui . toc . affix . addClass ( 'scrollspy-view' )
685- } else if ( window . currentMode !== modeType . both && ! newbool ) {
684+ } else if ( appState . currentMode !== modeType . both && ! newbool ) {
686685 ui . toc . toc . addClass ( 'scrollspy-body' )
687686 ui . toc . affix . addClass ( 'scrollspy-body' )
688687 } else {
@@ -737,7 +736,7 @@ function showStatus (type, num) {
737736}
738737
739738function toggleMode ( ) {
740- switch ( window . currentMode ) {
739+ switch ( appState . currentMode ) {
741740 case modeType . edit :
742741 changeMode ( modeType . view )
743742 break
@@ -757,16 +756,16 @@ function changeMode (type) {
757756 lockNavbar ( )
758757 saveInfo ( )
759758 if ( type ) {
760- lastMode = window . currentMode
761- window . currentMode = type
759+ lastMode = appState . currentMode
760+ appState . currentMode = type
762761 }
763762 var responsiveClass = 'col-lg-6 col-md-6 col-sm-6'
764763 var scrollClass = 'ui-scrollable'
765764 ui . area . codemirror . removeClass ( scrollClass )
766765 ui . area . edit . removeClass ( responsiveClass )
767766 ui . area . view . removeClass ( scrollClass )
768767 ui . area . view . removeClass ( responsiveClass )
769- switch ( window . currentMode ) {
768+ switch ( appState . currentMode ) {
770769 case modeType . edit :
771770 ui . area . edit . show ( )
772771 ui . area . view . hide ( )
@@ -787,11 +786,11 @@ function changeMode (type) {
787786 break
788787 }
789788 // save mode to url
790- if ( history . replaceState && window . loaded ) history . replaceState ( null , '' , serverurl + '/' + noteid + '?' + window . currentMode . name )
791- if ( window . currentMode === modeType . view ) {
789+ if ( history . replaceState && window . loaded ) history . replaceState ( null , '' , serverurl + '/' + noteid + '?' + appState . currentMode . name )
790+ if ( appState . currentMode === modeType . view ) {
792791 editor . getInputField ( ) . blur ( )
793792 }
794- if ( window . currentMode === modeType . edit || window . currentMode === modeType . both ) {
793+ if ( appState . currentMode === modeType . edit || appState . currentMode === modeType . both ) {
795794 ui . toolbar . uploadImage . fadeIn ( )
796795 // add and update status bar
797796 if ( ! editorInstance . statusBar ) {
@@ -804,14 +803,14 @@ function changeMode (type) {
804803 } else {
805804 ui . toolbar . uploadImage . fadeOut ( )
806805 }
807- if ( window . currentMode !== modeType . edit ) {
806+ if ( appState . currentMode !== modeType . edit ) {
808807 $ ( document . body ) . css ( 'background-color' , 'white' )
809808 updateView ( )
810809 } else {
811810 $ ( document . body ) . css ( 'background-color' , ui . area . codemirror . css ( 'background-color' ) )
812811 }
813812 // check resizable editor style
814- if ( window . currentMode === modeType . both ) {
813+ if ( appState . currentMode === modeType . both ) {
815814 if ( lastEditorWidth > 0 ) {
816815 ui . area . edit . css ( 'width' , lastEditorWidth + 'px' )
817816 } else {
@@ -827,22 +826,22 @@ function changeMode (type) {
827826
828827 restoreInfo ( )
829828
830- if ( lastMode === modeType . view && window . currentMode === modeType . both ) {
829+ if ( lastMode === modeType . view && appState . currentMode === modeType . both ) {
831830 window . preventSyncScrollToView = 2
832831 syncScrollToEdit ( null , true )
833832 }
834833
835- if ( lastMode === modeType . edit && window . currentMode === modeType . both ) {
834+ if ( lastMode === modeType . edit && appState . currentMode === modeType . both ) {
836835 window . preventSyncScrollToEdit = 2
837836 syncScrollToView ( null , true )
838837 }
839838
840- if ( lastMode === modeType . both && window . currentMode !== modeType . both ) {
839+ if ( lastMode === modeType . both && appState . currentMode !== modeType . both ) {
841840 window . preventSyncScrollToView = false
842841 window . preventSyncScrollToEdit = false
843842 }
844843
845- if ( lastMode !== modeType . edit && window . currentMode === modeType . edit ) {
844+ if ( lastMode !== modeType . edit && appState . currentMode === modeType . edit ) {
846845 editor . refresh ( )
847846 }
848847
@@ -1360,7 +1359,7 @@ ui.modal.snippetImportSnippets.change(function () {
13601359} )
13611360
13621361function scrollToTop ( ) {
1363- if ( window . currentMode === modeType . both ) {
1362+ if ( appState . currentMode === modeType . both ) {
13641363 if ( editor . getScrollInfo ( ) . top !== 0 ) { editor . scrollTo ( 0 , 0 ) } else {
13651364 ui . area . view . animate ( {
13661365 scrollTop : 0
@@ -1374,7 +1373,7 @@ function scrollToTop () {
13741373}
13751374
13761375function scrollToBottom ( ) {
1377- if ( window . currentMode === modeType . both ) {
1376+ if ( appState . currentMode === modeType . both ) {
13781377 var scrollInfo = editor . getScrollInfo ( )
13791378 var scrollHeight = scrollInfo . height
13801379 if ( scrollInfo . top !== scrollHeight ) { editor . scrollTo ( 0 , scrollHeight * 2 ) } else {
@@ -2079,14 +2078,14 @@ socket.on('refresh', function (data) {
20792078 // auto change mode if no content detected
20802079 var nocontent = editor . getValue ( ) . length <= 0
20812080 if ( nocontent ) {
2082- if ( visibleXS ) { window . currentMode = modeType . edit } else { window . currentMode = modeType . both }
2081+ if ( visibleXS ) { appState . currentMode = modeType . edit } else { appState . currentMode = modeType . both }
20832082 }
20842083 // parse mode from url
20852084 if ( window . location . search . length > 0 ) {
20862085 var urlMode = modeType [ window . location . search . substr ( 1 ) ]
2087- if ( urlMode ) window . currentMode = urlMode
2086+ if ( urlMode ) appState . currentMode = urlMode
20882087 }
2089- changeMode ( window . currentMode )
2088+ changeMode ( appState . currentMode )
20902089 if ( nocontent && ! visibleXS ) {
20912090 editor . focus ( )
20922091 editor . refresh ( )
@@ -2446,7 +2445,7 @@ function checkCursorTag (coord, ele) {
24462445}
24472446
24482447function buildCursor ( user ) {
2449- if ( window . currentMode === modeType . view ) return
2448+ if ( appState . currentMode === modeType . view ) return
24502449 if ( ! user . cursor ) return
24512450 var coord = editor . charCoords ( user . cursor , 'windows' )
24522451 coord . left = coord . left < 4 ? 4 : coord . left
@@ -2723,7 +2722,7 @@ function saveInfo () {
27232722 var scrollbarStyle = editor . getOption ( 'scrollbarStyle' )
27242723 var left = $ ( window ) . scrollLeft ( )
27252724 var top = $ ( window ) . scrollTop ( )
2726- switch ( window . currentMode ) {
2725+ switch ( appState . currentMode ) {
27272726 case modeType . edit :
27282727 if ( scrollbarStyle === 'native' ) {
27292728 lastInfo . edit . scroll . left = left
@@ -2754,7 +2753,7 @@ function restoreInfo () {
27542753 var ch = lastInfo . edit . cursor . ch
27552754 editor . setCursor ( line , ch )
27562755 editor . setSelections ( lastInfo . edit . selections )
2757- switch ( window . currentMode ) {
2756+ switch ( appState . currentMode ) {
27582757 case modeType . edit :
27592758 if ( scrollbarStyle === 'native' ) {
27602759 $ ( window ) . scrollLeft ( lastInfo . edit . scroll . left )
@@ -2799,7 +2798,7 @@ var lastResult = null
27992798var postUpdateEvent = null
28002799
28012800function updateViewInner ( ) {
2802- if ( window . currentMode === modeType . edit || ! isDirty ) return
2801+ if ( appState . currentMode === modeType . edit || ! isDirty ) return
28032802 var value = editor . getValue ( )
28042803 var lastMeta = md . meta
28052804 md . meta = { }
@@ -2816,13 +2815,13 @@ function updateViewInner () {
28162815 // prevent XSS
28172816 ui . area . markdown . html ( preventXSS ( ui . area . markdown . html ( ) ) )
28182817 ui . area . markdown . addClass ( 'slides' )
2819- window . syncscroll = false
2818+ appState . syncscroll = false
28202819 checkSyncToggle ( )
28212820 } else {
28222821 if ( lastMeta . type && lastMeta . type === 'slide' ) {
28232822 refreshView ( )
28242823 ui . area . markdown . removeClass ( 'slides' )
2825- window . syncscroll = true
2824+ appState . syncscroll = true
28262825 checkSyncToggle ( )
28272826 }
28282827 // only render again when meta changed
0 commit comments