/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 - present ĠRobert ĠJar os Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġio . k vision . form . upload Ċ Ċ import Ġcom . github . sn ab bd om . V Node Ċ import Ġio . k vision . Bootstrap Upload Module Ċ import Ġio . k vision . core . Attribute Set Builder Ċ import Ġio . k vision . core . Class Set Builder Ċ import Ġio . k vision . core . Container Ċ import Ġio . k vision . core . Widget Ċ import Ġio . k vision . core . bind All J Query Listeners Ċ import Ġio . k vision . core . getElement J Query Ċ import Ġio . k vision . core . getElement J Query D Ċ import Ġio . k vision . core . removeAll J Query Listeners Ċ import Ġio . k vision . form . Form Ċ import Ġio . k vision . form . Form Input Ċ import Ġio . k vision . form . Form Panel Ċ import Ġio . k vision . form . Generic Form Component Ċ import Ġio . k vision . form . Input Size Ċ import Ġio . k vision . form . Validation Status Ċ import Ġio . k vision . i 1 8 n . I 1 8 n Ċ import Ġio . k vision . state . Mutable State Ċ import Ġio . k vision . types . K File Ċ import Ġio . k vision . utils . getContent Ċ import Ġio . k vision . utils . obj Ċ import Ġorg . w 3 c . files . File Ċ import Ġkotlin . collections . set Ċ import Ġkotlin . reflect . K Property 1 Ċ Ċ /** Ċ Ġ* ĠThe Ġfile Ġupload Ġcomponent . Ċ Ġ* Ċ Ġ* Ġ@ constructor Ċ Ġ* Ġ@ param Ġupload Url Ġthe Ġoptional ĠURL Ġfor Ġthe Ġupload Ġprocessing Ġaction Ċ Ġ* Ġ@ param Ġmultiple Ġdetermines Ġif Ġmultiple Ġfile Ġupload Ġis Ġsupported Ċ Ġ* Ġ@ param ĠclassName ĠCSS Ġclass Ġnames Ċ Ġ* Ġ@ param Ġinit Ġan Ġinitializer Ġextension Ġfunction Ċ Ġ*/ Ċ @ Suppress (" Too Many Functions ") Ċ open Ġclass ĠUpload Input ( ĊĠĠĠ Ġupload Url : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġmultiple : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ ĠclassName : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġinit : Ġ( Upload Input . () Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ: ĊĠĠĠ ĠWidget (( className ?. let Ġ{ Ġ"$ it Ġ" Ġ} Ġ?: Ġ"") Ġ+ Ġ" form - control "), ĠGeneric Form Component < List < K File >? >, ĠForm Input , ĊĠĠĠ ĠMutable State < List < K File > ?> Ġ{ ĊĊĠĠĠ Ġprotected Ġval Ġob servers Ġ= Ġmutable ListOf <( List < K File > ?) Ġ-> ĠUnit >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTemporary Ġexternal Ġvalue Ġ( used Ġin Ġtests ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġvar Ġtmp Value : ĠList < K File >? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFile Ġinput Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġvar Ġvalue : ĠList < K File >? ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetValue () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġreset Input () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Value Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġob servers . forEach Ġ{ Ġob Ġ-> Ġob ( value ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġoptional ĠURL Ġfor Ġthe Ġupload Ġprocessing Ġaction . ĊĠĠĠĠ Ġ* ĠIf Ġnot Ġset Ġthe Ġupload Ġbutton Ġaction Ġwill Ġdefault Ġto Ġform Ġsubmission . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġupload Url : ĠString ? Ġby Ġrefresh On Update ( upload Url ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġmultiple Ġfile Ġupload Ġis Ġsupported . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġmultiple : ĠBoolean Ġby Ġrefresh On Update ( multiple ) Ġ{ Ġrefresh (); Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġextra Ġdata Ġthat Ġwill Ġbe Ġpassed Ġas Ġdata Ġto Ġthe ĠAJAX Ġserver Ġcall Ġvia ĠPOST . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġupload Extra Data : Ġ(( String , ĠInt ) Ġ-> Ġdynamic )? Ġby Ġrefresh On Update Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġexplorer Ġtheme Ġis Ġused . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġexplorer Theme : ĠBoolean Ġby Ġrefresh On Update ( false ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġinput Ġselection Ġis Ġrequired . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġrequired : ĠBoolean Ġby Ġrefresh On Update ( false ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġcaption Ġis Ġshown . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġshow Caption : ĠBoolean Ġby Ġrefresh On Update ( true ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġpreview Ġis Ġshown . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġshow Preview : ĠBoolean Ġby Ġrefresh On Update ( true ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġremove Ġbutton Ġis Ġshown . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġshow Remove : ĠBoolean Ġby Ġrefresh On Update ( true ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġupload Ġbutton Ġis Ġshown . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġshow Upload : ĠBoolean Ġby Ġrefresh On Update ( true ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġcancel Ġbutton Ġis Ġshown . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġshow Cancel : ĠBoolean Ġby Ġrefresh On Update ( true ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġfile Ġbrowse Ġbutton Ġis Ġshown . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġshow Browse : ĠBoolean Ġby Ġrefresh On Update ( true ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġclick Ġon Ġthe Ġpreview Ġzone Ġopens Ġfile Ġbrowse Ġwindow . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġbrowse On Zone Click : ĠBoolean Ġby Ġrefresh On Update ( true ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġicon ic Ġpreview Ġis Ġprefer ed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġprefer Icon ic Preview : ĠBoolean Ġby Ġrefresh On Update ( false ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAllowed Ġfile Ġtypes . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġallowed File Types : ĠSet < String >? Ġby Ġrefresh On Update Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAllowed Ġfile Ġextensions . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġallowed File Extensions : ĠSet < String >? Ġby Ġrefresh On Update Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif ĠDrag & Drop Ġzone Ġis Ġenabled . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġdrop Zone Enabled : ĠBoolean Ġby Ġrefresh On Update ( true ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġto Ġhide Ġthe Ġpreview Ġcontent Ġ( image , Ġpdf Ġcontent , Ġtext Ġcontent , Ġetc .) Ġwithin Ġthe Ġthumbnail . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġhide Thumbnail Content : ĠBoolean Ġby Ġrefresh On Update ( false ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġto Ġto Ġdisplay Ġthe Ġfile Ġupload Ġstatistics . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġshow Upload Stats : ĠBoolean Ġby Ġrefresh On Update ( true ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġbatch Ġupload Ġof Ġmultiple Ġfiles Ġwill Ġbe Ġasynchronous / in Ġparallel . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġupload Async : ĠBoolean Ġby Ġrefresh On Update ( true ) Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġmaximum Ġfile Ġsize Ġfor Ġupload Ġin ĠKB . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġmax FileSize : ĠDouble ? Ġby Ġrefresh On Update Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġminimum Ġfile Ġsize Ġfor Ġupload Ġin ĠKB . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġmin FileSize : ĠDouble ? Ġby Ġrefresh On Update Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdditional Ġajax Ġsettings Ġto Ġpass Ġto Ġthe Ġplugin Ġbefore Ġsubmitting Ġthe Ġajax Ġrequest Ġfor Ġupload . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġajax Settings : Ġdynamic Ġby Ġrefresh On Update Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġplaceholder Ġfor Ġthe Ġupload Ġcontrol . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġplaceholder : ĠString ? Ġby Ġrefresh On Update Ġ{ Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġname Ġattribute Ġof Ġthe Ġgenerated ĠHTML Ġinput Ġelement . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġvar Ġname : ĠString ? Ġby Ġrefresh On Update () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġfield Ġis Ġdisabled . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġvar Ġdisabled Ġby Ġrefresh On Update ( false ) Ġ{ Ġrefresh (); Ġrefresh Upload Input () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġsize Ġof Ġthe Ġinput Ġ( currently Ġnot Ġworking ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġvar Ġsize : ĠInput Size ? Ġby Ġrefresh On Update () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġvalidation Ġstatus Ġof Ġthe Ġinput . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġvar Ġvalidation Status : ĠValidation Status ? Ġby Ġrefresh On Update () ĊĊĠĠĠ Ġprivate Ġval Ġnative Files : ĠMutable Map < K File , ĠFile > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" Le aking This ") ĊĠĠĠĠĠĠĠ Ġinit ?. invoke ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender (): ĠV Node Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrender (" input ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Class Set ( class Set Builder : ĠClass Set Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . build Class Set ( class Set Builder ) ĊĠĠĠĠĠĠĠ Ġclass Set Builder . add ( validation Status ) ĊĠĠĠĠĠĠĠ Ġclass Set Builder . add ( size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Attribute Set ( attribute Set Builder : ĠAttributeSet Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . build Attribute Set ( attribute Set Builder ) ĊĠĠĠĠĠĠĠ Ġattribute Set Builder . add (" type ", Ġ" file ") ĊĠĠĠĠĠĠĠ Ġname ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Set Builder . add (" name ", Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( multiple ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Set Builder . add (" multiple ", Ġ" true ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( disabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Set Builder . add (" disabled ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetValue (): ĠList < K File >? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġget Files () Ġ?: Ġtmp Value ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( v . isNull OrEmpty ()) Ġnull Ġelse Ġv ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Unsafe Cast From Dynamic ") ĊĠĠĠ Ġoverride Ġfun Ġafter Insert ( node : ĠV Node ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Element J Query D ()?. file input ( get Settings Obj ()) ĊĠĠĠĠĠĠĠ Ġget Element J Query ()?. parent ()?. parent ()?. parent ()?. find (" div . kv - file input - caption ") ?. removeAttr (" tab index ") ĊĠĠĠĠĠĠĠ Ġget Element J Query ()?. parent ()?. parent ()?. parent ()?. find (" input . file - caption - name ") ?. attr (" tab index ", Ġ"- 1 ") ĊĠĠĠĠĠĠĠ Ġget Element J Query ()?. parent ()?. parent ()?. parent ()?. find (" button . file input - remove ") ?. removeAttr (" tab index ") ĊĠĠĠĠĠĠĠ Ġget Element J Query ()?. parent ()?. parent ()?. parent ()?. find (" div . btn - file ") ?. removeAttr (" tab index ") ĊĠĠĠĠĠĠĠ Ġthis . getElement J Query ()?. on (" focus ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Element J Query ()?. parent ()?. parent ()?. parent ()?. addClass (" kv - focus ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . getElement J Query ()?. on (" blur ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Element J Query ()?. parent ()?. parent ()?. parent ()?. removeClass (" kv - focus ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind All J Query Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġbind All J Query Listeners ( this , Ġjquery Listeners Map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove All J Query Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġremove All J Query Listeners ( this , Ġjquery Listeners Map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Element J Query D ()?. file input (" destroy ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Upload Input () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Element J Query D ()?. file input (" refresh ", Ġget Settings Obj ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe sets Ġthe Ġfile Ġinput Ġcontrol . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġreset Input () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Element J Query D ()?. file input (" reset ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear s Ġthe Ġfile Ġinput Ġcontrol Ġ( including Ġthe Ġnative Ġinput ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġclear Input () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Element J Query D ()?. file input (" clear ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTrigger Ġajax Ġupload Ġ( only Ġfor Ġajax Ġmode ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġupload () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Element J Query D ()?. file input (" upload ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel Ġan Ġongoing Ġajax Ġupload Ġ( only Ġfor Ġajax Ġmode ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Element J Query D ()?. file input (" cancel ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLock s Ġthe Ġfile Ġinput Ġ( dis abling Ġall Ġbuttons Ġexcept Ġa Ġcancel Ġbutton ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġlock () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Element J Query D ()?. file input (" lock ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn locks Ġthe Ġfile Ġinput . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġunlock () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Element J Query D ()?. file input (" unlock ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġnative ĠJavaScript ĠFile Ġobject . ĊĠĠĠĠ Ġ* Ġ@ param Ġk File ĠK File Ġobject ĊĠĠĠĠ Ġ* Ġ@ return ĠFile Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Native File ( k File : ĠK File ): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnative Files [ k File ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Files (): ĠList < K File >? Ġ{ ĊĠĠĠĠĠĠĠ Ġnative Files . clear () ĊĠĠĠĠĠĠĠ Ġval Ġfile Stack Ġ= Ġget Element J Query D ()?. file input (" getFile Stack ") ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( file Stack Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < K File >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġjs (" Object "). keys ( file Stack )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnative File Ġ= Ġfile Stack [ key ]. file Ġas ĠFile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk File Ġ= ĠK File ( native File . name , Ġnative File . size . toInt (), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Files [ k File ] Ġ= Ġnative File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= Ġk File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġof Ġthe Ġfile Ġinput Ġcontrol Ġas Ġa ĠString . ĊĠĠĠĠ Ġ* Ġ@ return Ġvalue Ġas Ġa ĠString ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetValue AsString (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ?. join ToString (",") Ġ{ Ġit . name Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Settings Obj (): Ġdynamic Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlanguage Ġ= ĠI 1 8 n . language ĊĠĠĠĠĠĠĠ Ġreturn Ġobj Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . upload Url Ġ= Ġupload Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . upload Extra Data Ġ= Ġupload Extra Data Ġ?: Ġundefined ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . theme Ġ= Ġif Ġ( explorer Theme ) Ġ" explorer - fas " Ġelse Ġ" bs 5 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . required Ġ= Ġrequired ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . show Caption Ġ= Ġshow Caption ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . show Preview Ġ= Ġshow Preview ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . show Remove Ġ= Ġshow Remove ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . show Upload Ġ= Ġshow Upload ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . show Cancel Ġ= Ġshow Cancel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . show Browse Ġ= Ġshow Browse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . browse On Zone Click Ġ= Ġbrowse On Zone Click ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . prefer Icon ic Preview Ġ= Ġprefer Icon ic Preview ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . allowed File Types Ġ= Ġallowed File Types ?. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . allowed File Extensions Ġ= Ġallowed File Extensions ?. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . drop Zone Enabled Ġ= Ġdrop Zone Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . file Action Settings Ġ= Ġobj Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . show Upload Ġ= Ġshow Upload ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . show Remove Ġ= Ġshow Remove ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . auto Orient Image Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . pur ify Html Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( placeholder Ġ!= Ġnull ) Ġthis . msg Placeholder Ġ= Ġplaceholder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . language Ġ= Ġlanguage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . hide Thumbnail Content Ġ= Ġhide Thumbnail Content ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . show Upload Stats Ġ= Ġshow Upload Stats ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . upload Async Ġ= Ġupload Async ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( max FileSize Ġ!= Ġnull ) Ġthis . max FileSize Ġ= Ġmax FileSize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( min FileSize Ġ!= Ġnull ) Ġthis . min FileSize Ġ= Ġmin FileSize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ajax Settings Ġ!= Ġnull ) Ġthis . ajax Settings Ġ= Ġajax Settings ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetState (): ĠList < K File >? Ġ= Ġvalue ĊĊĠĠĠ Ġoverride Ġfun Ġsubscribe ( observer : Ġ( List < K File > ?) Ġ-> ĠUnit ): Ġ() Ġ-> ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġob servers Ġ+= Ġobserver ĊĠĠĠĠĠĠĠ Ġobserver ( value ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġob servers Ġ-= Ġobserver ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetState ( state : ĠList < K File > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBootstrap Upload Module . initialize () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠDSL Ġbuilder Ġextension Ġfunction . Ċ Ġ* Ċ Ġ* ĠIt Ġtakes Ġthe Ġsame Ġparameters Ġas Ġthe Ġconstructor Ġof Ġthe Ġbuilt Ġcomponent . Ċ Ġ*/ Ċ fun ĠContainer . upload Input ( ĊĠĠĠ Ġupload Url : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġmultiple : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ ĠclassName : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġinit : Ġ( Upload Input . () Ġ-> ĠUnit )? Ġ= Ġnull Ċ ): ĠUpload Input Ġ{ ĊĠĠĠ Ġval Ġupload Input Ġ= ĠUpload Input ( upload Url , Ġmultiple , ĠclassName , Ġinit ) ĊĠĠĠ Ġthis . add ( upload Input ) ĊĠĠĠ Ġreturn Ġupload Input Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġfile Ġwith Ġthe Ġcontent Ġread . Ċ Ġ* Ġ@ param Ġkey Ġkey Ġidentifier Ġof Ġthe Ġcontrol Ċ Ġ* Ġ@ param Ġk File Ġobject Ġidentifying Ġthe Ġfile Ċ Ġ* Ġ@ return ĠK File Ġobject Ċ Ġ*/ Ċ suspend Ġfun Ġ< K Ġ: ĠAny > ĠForm < K >. getContent ( ĊĠĠĠ Ġkey : ĠK Property 1 < K , ĠList < K File >? >, ĊĠĠĠ Ġk File : ĠK File Ċ ): ĠK File Ġ{ ĊĠĠĠ Ġval Ġcontrol Ġ= Ġget Control ( key ) Ġas ĠUpload ĊĠĠĠ Ġval Ġcontent Ġ= Ġcontrol . get Native File ( k File )?. getContent () ĊĠĠĠ Ġreturn Ġk File . copy ( content Ġ= Ġcontent ) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠReturns Ġfile Ġwith Ġthe Ġcontent Ġread . Ċ Ġ* Ġ@ param Ġkey Ġkey Ġidentifier Ġof Ġthe Ġcontrol Ċ Ġ* Ġ@ param Ġk File Ġobject Ġidentifying Ġthe Ġfile Ċ Ġ* Ġ@ return ĠK File Ġobject Ċ Ġ*/ Ċ suspend Ġfun Ġ< K Ġ: ĠAny > ĠForm Panel < K >. getContent ( ĊĠĠĠ Ġkey : ĠK Property 1 < K , ĠList < K File >? >, ĊĠĠĠ Ġk File : ĠK File Ċ ): ĠK File Ġ{ ĊĠĠĠ Ġval Ġcontrol Ġ= Ġget Control ( key ) Ġas ĠUpload ĊĠĠĠ Ġval Ġcontent Ġ= Ġcontrol . get Native File ( k File )?. getContent () ĊĠĠĠ Ġreturn Ġk File . copy ( content Ġ= Ġcontent ) Ċ } Ċ