package Ġpress . editor Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . InputType . TYPE _ CLASS _ TEXT Ċ import Ġandroid . text . InputType . TYPE _ TEXT _ FLAG _ AUTO _ CORRECT Ċ import Ġandroid . text . InputType . TYPE _ TEXT _ FLAG _ CAP _ SENT ENCES Ċ import Ġandroid . text . InputType . TYPE _ TEXT _ FLAG _ MULTI _ LINE Ċ import Ġandroid . text . InputType . TYPE _ TEXT _ FLAG _ NO _ SU G GEST IONS Ċ import Ġandroid . text . Layout . BREAK _ STR ATE GY _ HIGH _ QUAL ITY Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gravity . TOP Ċ import Ġandroid . view . ViewGroup . LayoutParams . MATCH _ PARENT Ċ import Ġandroid . view . ViewGroup . LayoutParams . WRAP _ CONTENT Ċ import Ġandroid . view . input method . Editor Info . IME _ FLAG _ NO _ FULL SCREEN Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . core . text . build Sp anned String Ċ import Ġandroidx . core . text . in Spans Ċ import Ġandroidx . core . view . update Padding Relative Ċ import Ġandroidx . core . widget . Nested ScrollView Ċ import Ġcom . jak ew h art on . r xb ind ing 3 . view . det aches Ċ import Ġcom . squareup . contour . Contour Layout Ċ import Ġcom . squareup . inject . ass isted . Ass isted Ċ import Ġcom . squareup . inject . in fl ation . In fl ation Inject Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers . main Thread Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġme . s aket . inbox recyclerview . page . Expand able Page Layout Ċ import Ġme . s aket . press . R Ċ import Ġme . s aket . press . shared . editor . Auto Correct Enabled Ċ import Ġme . s aket . press . shared . editor . Editor Event . Note TextChanged Ċ import Ġme . s aket . press . shared . editor . Editor Open Mode . New Note Ċ import Ġme . s aket . press . shared . editor . Editor Presenter Ċ import Ġme . s aket . press . shared . editor . Editor Presenter . Args Ċ import Ġme . s aket . press . shared . editor . Editor Screen Key Ċ import Ġme . s aket . press . shared . editor . Editor Ui Effect Ċ import Ġme . s aket . press . shared . editor . Editor Ui Effect . Blocked Due To Sync Conflict Ċ import Ġme . s aket . press . shared . editor . Editor Ui Effect . Update Note Text Ċ import Ġme . s aket . press . shared . editor . Editor Ui Model Ċ import Ġme . s aket . press . shared . editor . save Editor Content On Close Ċ import Ġme . s aket . press . shared . settings . Setting Ċ import Ġme . s aket . press . shared . theme . Display Units Ċ import Ġme . s aket . press . shared . theme . Text Styles . main Body Ċ import Ġme . s aket . press . shared . theme . TextView Ċ import Ġme . s aket . press . shared . theme . apply Style Ċ import Ġme . s aket . press . shared . theme . from Ċ import Ġme . s aket . press . shared . ui . subscribe Ċ import Ġme . s aket . press . shared . ui . ui Updates Ċ import Ġme . s aket . w ys iw yg . W ys iw yg Ċ import Ġme . s aket . w ys iw yg . formatting . Text Selection Ċ import Ġme . s aket . w ys iw yg . parser . node . Heading Level . H 1 Ċ import Ġme . s aket . w ys iw yg . style . W ys iw yg Style Ċ import Ġme . s aket . w ys iw yg . widgets . add TextChanged Listener Ċ import Ġpress . extensions . do On Text Change Ċ import Ġpress . extensions . find Parent OfType Ċ import Ġpress . extensions . from O re o Ċ import Ġpress . extensions . intercept Pull To Collapse On View Ċ import Ġpress . extensions . show Keyboard Ċ import Ġpress . extensions . textColor Ċ import Ġpress . extensions . text Size Px Ċ import Ġpress . extensions . unsafe Lazy Ċ import Ġpress . navigation . Back Press Interceptor Ċ import Ġpress . navigation . Back Press Interceptor . Intercept Result Ċ import Ġpress . navigation . Back Press Interceptor . Intercept Result . Ignored Ċ import Ġpress . navigation . navigator Ċ import Ġpress . navigation . screen Key Ċ import Ġpress . theme . theme Aware Ċ import Ġpress . theme . theme Palette Ċ import Ġpress . widgets . Press Toolbar Ċ Ċ class ĠEditor View Ġ@ In fl ation Inject Ġconstructor ( ĊĠ Ġ@ Ass isted Ġcontext : ĠContext , ĊĠ Ġ@ Ass isted Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠ Ġpresenter Factory : ĠEditor Presenter . Factory , ĊĠ Ġauto Correct Enabled : ĠSetting < Auto Correct Enabled > Ċ ) Ġ: ĠCont our Layout ( context ), ĠBack Press Interceptor Ġ{ ĊĊĠ Ġprivate Ġval Ġtoolbar Ġ= ĠPress Toolbar ( context ). apply Ġ{ ĊĠĠĠ Ġtheme Aware Ġ{ ĊĠĠĠĠĠ Ġset BackgroundColor ( it . window . editor BackgroundColor ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġapply Layout ( ĊĠĠĠĠĠ Ġx Ġ= Ġleft To Ġ{ Ġparent . left () Ġ}. right To Ġ{ Ġparent . right () Ġ}, ĊĠĠĠĠĠ Ġy Ġ= Ġtop To Ġ{ Ġparent . top () Ġ} ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġscroll View Ġ= ĠNested ScrollView ( context ). apply Ġ{ ĊĠĠĠ Ġid Ġ= ĠR . id . editor _ scroll able _ container ĊĠĠĠ Ġis Fill Viewport Ġ= Ġtrue ĊĠĠĠ Ġapply Layout ( ĊĠĠĠĠĠ Ġx Ġ= Ġleft To Ġ{ Ġparent . left () Ġ}. right To Ġ{ Ġparent . right () Ġ}, ĊĠĠĠĠĠ Ġy Ġ= Ġtop To Ġ{ Ġtoolbar . bottom () Ġ}. bottom To Ġ{ Ġparent . bottom () Ġ} ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġeditor EditText Ġ= ĠPlain Text Paste EditText ( context ). apply Ġ{ ĊĠĠĠ Ġapply Style ( main Body ) ĊĠĠĠ Ġid Ġ= ĠR . id . editor _ text field ĊĠĠĠ Ġbackground Ġ= Ġnull ĊĠĠĠ Ġbreak Strategy Ġ= ĠBRE AK _ STR ATE GY _ HIGH _ QUAL ITY ĊĠĠĠ Ġgravity Ġ= ĠTOP ĊĠĠĠ Ġinput Type Ġ= ĠTYPE _ CLASS _ TEXT Ġor Ġ Ġ// ĠMult iline Ġdoesn 't Ġwork Ġwithout Ġthis . ĊĠĠĠĠĠ ĠTYPE _ TEXT _ FLAG _ CAP _ SENT ENCES Ġor ĊĠĠĠĠĠ ĠTYPE _ TEXT _ FLAG _ MULTI _ LINE Ġor ĊĠĠĠĠĠ ĠTYPE _ TEXT _ FLAG _ NO _ SU G GEST IONS ĊĠĠĠ Ġif Ġ( auto Correct Enabled . get () !!. enabled ) Ġ{ ĊĠĠĠĠĠ Ġinput Type Ġ= Ġinput Type Ġor ĠTYPE _ TEXT _ FLAG _ AUTO _ CORRECT ĊĠĠĠ Ġ} ĊĠĠĠ Ġ ime Options Ġ= ĠI ME _ FLAG _ NO _ FULL SCREEN ĊĠĠĠ Ġmovement Method Ġ= ĠEditor Link Movement Method ( scroll View ) ĊĠĠĠ Ġfilters Ġ+= ĠFormat Markdown On Enter Press ( this ) ĊĠĠĠ ĠCap ital ize On Heading Start . capitalize ( this ) ĊĠĠĠ Ġupdate Padding Relative ( start Ġ= Ġ 2 0 . dip , Ġend Ġ= Ġ 2 0 . dip , Ġbottom Ġ= Ġ 2 0 . dip ) ĊĠĠĠ Ġfrom O re o Ġ{ ĊĠĠĠĠĠ Ġimportant For Aut ofill Ġ= ĠIMPORT ANT _ FOR _ AUT OF ILL _ NO ĊĠĠĠ Ġ} ĊĠĠĠ Ġtheme Aware Ġ{ ĊĠĠĠĠĠ ĠtextColor Ġ= Ġit . textColor Primary ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġheading Hint TextView Ġ= ĠTextView ( context , Ġmain Body ). apply Ġ{ ĊĠĠĠ Ġtext Size Px Ġ= Ġeditor EditText . text Size ĊĠĠĠ Ġtheme Aware Ġ{ ĊĠĠĠĠĠ ĠtextColor Ġ= Ġit . textColor Hint ĊĠĠĠ Ġ} ĊĠĠĠ Ġapply Layout ( ĊĠĠĠĠĠ Ġx Ġ= Ġleft To Ġ{ Ġscroll View . left () Ġ+ Ġeditor EditText . padding Start Ġ} ĊĠĠĠĠĠĠĠ Ġ. right To Ġ{ Ġscroll View . right () Ġ- Ġeditor EditText . padding Start Ġ}, ĊĠĠĠĠĠ Ġy Ġ= Ġtop To Ġ{ Ġscroll View . top () Ġ+ Ġeditor EditText . padding Top Ġ} ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġpresenter Ġby Ġunsafe Lazy Ġ{ ĊĠĠĠ Ġpresenter Factory . create ( ĊĠĠĠĠĠ ĠArgs ( ĊĠĠĠĠĠĠĠ Ġopen Mode Ġ= Ġscreen Key < Editor Screen Key >(). open Mode , ĊĠĠĠĠĠĠĠ Ġdelete Blank New Note On Exit Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġnavigator Ġ= Ġnavigator () ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġid Ġ= ĠR . id . editor _ view ĊĠĠĠ Ġscroll View . addView ( editor EditText , ĠMATCH _ PARENT , ĠWR AP _ CONTENT ) ĊĠĠĠ Ġbring Child To Front ( scroll View ) ĊĊĠĠĠ Ġtheme Aware Ġ{ Ġpalette Ġ-> ĊĠĠĠĠĠ Ġset BackgroundColor ( palette . window . editor BackgroundColor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO : Ġadd Ġsupport Ġfor Ġchanging ĠW ys iw yg Style . ĊĠĠĠ Ġtheme Palette () ĊĠĠĠĠĠ Ġ. take ( 1 ) ĊĠĠĠĠĠ Ġ. take Until ( det aches ()) ĊĠĠĠĠĠ Ġ. subscribe Ġ{ Ġpalette Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġw ys iw yg Style Ġ= ĠW ys iw yg Style . from ( palette . markdown , ĠDisplay Units ( context )) ĊĠĠĠĠĠĠĠ Ġval Ġw ys iw yg Ġ= ĠW ys iw yg ( editor EditText , Ġw ys iw yg Style ) ĊĠĠĠĠĠĠĠ Ġeditor EditText . add TextChanged Listener ( w ys iw yg . syntax Highlight er ()) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( screen Key < Editor Screen Key >(). open Mode Ġis ĠNew Note ) Ġ{ ĊĠĠĠĠĠ Ġeditor EditText . post Ġ{ ĊĠĠĠĠĠĠĠ Ġeditor EditText . show Keyboard () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Attached To Window () Ġ{ ĊĠĠĠ Ġsuper . on Attached To Window () ĊĊĠĠĠ Ġval Ġpage Ġ= Ġfind Parent OfType < Expand able Page Layout >() ĊĠĠĠ Ġpage ?. pull To Collapse Interceptor Ġ= Ġintercept Pull To Collapse On View ( scroll View ) ĊĊĠĠĠ Ġeditor EditText . do On Text Change Ġ{ ĊĠĠĠĠĠ Ġpresenter . dispatch ( Note TextChanged ( it . toString ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpresenter . ui Updates () ĊĠĠĠĠĠ Ġ. take Until ( det aches ()) ĊĠĠĠĠĠ Ġ. observe On ( main Thread ()) ĊĠĠĠĠĠ Ġ. subscribe ( models Ġ= Ġ:: render , Ġeffects Ġ= Ġ:: render ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Intercept Back Press (): ĠInter cept Result Ġ{ ĊĠĠĠ Ġ// ĠThe Ġcontent Ġmust Ġonly Ġbe Ġsaved Ġwhen Ġthis Ġscreen Ġis Ġclosed Ġby Ġthe Ġuser . ĊĠĠĠ Ġ// ĠPress Ġpreviously Ġsaved Ġcontent Ġin Ġon Detached From Window (), Ġbut Ġthat Ġcaused ĊĠĠĠ Ġ// Ġthe Ġnote Ġto Ġget Ġdeleted Ġif Ġthe Ġnote Ġwas Ġempty Ġeven Ġif Ġthe ĠActivity Ġwas ĊĠĠĠ Ġ// Ġbeing Ġre created , Ġsay , Ġdue Ġto Ġa Ġtheme Ġchange . ĊĠĠĠ Ġpresenter . save Editor Content On Close ( editor EditText . text . toString ()) ĊĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠ Ġreturn ĠIgnore d ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġrender ( model : ĠEditor Ui Model ) Ġ{ ĊĠĠĠ Ġif Ġ( model . hint Text Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġheading Hint TextView . visibility Ġ= ĠG ONE ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġheading Hint TextView . visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠ Ġheading Hint TextView . text Ġ= Ġbuild Sp anned String Ġ{ ĊĠĠĠĠĠĠĠ Ġin Spans ( Editor Heading Hint Span ( H 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġappend ( model . hint Text !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġrender ( ui Update : ĠEditor Ui Effect ) Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( ui Update ) Ġ{ ĊĠĠĠĠĠ Ġis ĠUpdate Note Text Ġ-> Ġeditor EditText . setText ( ui Update . new Text , Ġui Update . new Selection ) ĊĠĠĠĠĠ Ġis ĠBlock ed Due To Sync Conflict Ġ-> ĠEdit ing Blocked Due To Conflict Dialog . show ( context , Ġon Dismiss Ġ= Ġnavigator () :: go Back ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠEditText . setText ( new Text : ĠCharSequence , Ġnew Selection : ĠText Selection ?) Ġ{ ĊĠĠĠ Ġset Text ( new Text ) ĊĠĠĠ Ġnew Selection ?. let Ġ{ ĊĠĠĠĠĠ Ġset Selection ( it . start , Ġit . end ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ