// ĠCopyright Ġ( c ) Ġ 2 0 1 5 - 2 0 2 0 ĠV lad im ir ĠSch ne ider Ġ< vl ad im ir . sch ne ider @ gmail . com > ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . vl ad sch . md . nav . editor . util Ċ Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . text . StringUtil Ċ import Ġcom . intellij . util . Range Ċ import Ġcom . vl ad sch . flex mark . util . sequence . Tag Range Ċ import Ġcom . vl ad sch . md . nav . editor . Html Panel Host Ċ import Ġcom . vl ad sch . md . nav . editor . Preview Editor State Ċ import Ġcom . vl ad sch . md . nav . parser . flex mark . Md Navigator Extension Ċ import Ġorg . w 3 c . dom . Node Ċ import Ġjavax . swing . J Component Ċ Ċ abstract Ġclass ĠHtml Panel ( val Ġmy Project : ĠProject , Ġval Ġmy Html Panel Host : ĠHtml Panel Host ) Ġ: ĠDis posable Ġ{ ĊĠĠĠ Ġabstract Ġval Ġcomponent : ĠJ Component ĊĠĠĠ Ġabstract Ġfun Ġset Html ( html : ĠString ): ĠBoolean ĠĠ Ġ// Ġfalse Ġmeans Ġdon 't Ġtry Ġto Ġscroll Ġto Ġoffset , Ġupdate Ġwas Ġre scheduled Ġor Ġengine Ġnot Ġready ĊĠĠĠ Ġabstract Ġfun Ġset CSS ( inline Css : ĠString ?, Ġfile U ris : ĠArray < String >) ĊĠĠĠ Ġabstract Ġfun Ġscroll To Markdown Src Offset ( offset : ĠInt , Ġline Offsets : Ġcom . vl ad sch . flex mark . util . sequence . Range , Ġvertical Location : ĠFloat ?, Ġtag Ranges : ĠList < Tag Range >, ĠonLoad Update : ĠBoolean , Ġon Typing Update : ĠBoolean ) ĊĊĠĠĠ Ġ// ĠĠĠ Ġabstract Ġfun Ġset Html Panel Host ( launcher : ĠHtml Panel Host ) ĊĠĠĠ Ġabstract Ġfun Ġset Page Url ( url : ĠString ): ĠBoolean ? Ġ// Ġnull Ġmeans Ġno Ġsuch Ġfeature , Ġneed Ġpage ĠHTML , Ġfalse Ġmeans Ġupdate Ġre scheduled , Ġif ĠURL Ġblank Ġjust Ġreturn Ġtrue Ġif Ġcan Ġhandle Ġurls Ġor Ġnull Ġif Ġnot ĊĊĠĠĠ Ġabstract Ġfun ĠsetState ( state : ĠPreview Editor State ) Ġ// Ġset Ġthe Ġstored Ġstate ĊĠĠĠ Ġabstract Ġfun ĠgetState (): ĠPreview Editor State Ġ// Ġget Ġthe Ġstored Ġstate ĊĊĠĠĠ Ġopen Ġfun Ġprint () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġcan Print (): ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġopen Ġfun Ġdebug ( start Stop : ĠBoolean ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġcan Debug (): ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġopen Ġfun Ġis Debugger Enabled (): ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġopen Ġfun Ġis Debugging (): ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġopen Ġfun Ġis Debug Break OnLoad (): ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġopen Ġfun Ġdebug Break OnLoad ( break OnLoad : ĠBoolean , Ġdebug Break Injection OnLoad : ĠBoolean ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġprotected Ġval ĠLOG : ĠLogger Ġ= ĠLogger . getInstance (" com . vl ad sch . md . nav . editor . browser ") ĊĊĠĠĠĠĠĠĠ Ġfun Ġnode To Src Range ( node : ĠNode ): ĠRange < Int >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! node . has Attributes ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattribute Ġ= Ġnode . attributes . getName d Item ( Md Navigator Extension . SOURCE _ POSITION _ ATTRIBUTE _ NAME ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart End Ġ= ĠString Util . split ( attribute . node Value , Ġ".. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start End . size Ġ!= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRange ( Integer . parseInt ( start End [ 0 ]), ĠInteger . parseInt ( start End [ 1 ])) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Css Lines ( inline Css : ĠString ?, Ġfile U ris : ĠArray < String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( uri Ġin Ġfile U ris ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ("< link Ġrel =\" stylesheet \" Ġhref =\"" ). append ( uri ). append ("\" Ġ/>\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( inline Css Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ("< style >\ n "). append ( inline Css ). append ("\ n </ style >\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ