/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . tun jid . me . core . ui . drag drop Ċ Ċ import Ġandroid . view . Drag Event Ċ import Ġandroid . view . View Ċ import Ġandroidx . compose . ui . geometry . Offset Ċ import Ġcom . tun jid . me . core . utilities . Clip Item Uri Ċ import Ġcom . tun jid . me . core . utilities . Uri Ċ Ċ actual Ġclass ĠPlatform Drop Target Modifier ( ĊĠĠĠ Ġview : ĠView , Ċ ) Ġ: ĠDrop Target Modifier Ġby Ġdrop Target Modifier () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġview . setOn Drag Listener ( drag Listener ( this )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġdrag Listener ( ĊĠĠĠ Ġdrop Target Modifier : ĠDrop Target Modifier , Ċ ): ĠView . On Drag Listener Ġ= ĠView . On Drag Listener Ġ{ Ġ_, Ġevent Ġ-> ĊĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDrag Event . ACTION _ DR AG _ STARTED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Target Modifier . on Drag Started ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġur is Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= ĠOffset ( event . x , Ġevent . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDrag Event . ACTION _ DR AG _ ENTER ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Target Modifier . on Drag Entered () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDrag Event . ACTION _ DR AG _ LOCATION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Target Modifier . on Drag Moved ( Offset ( event . x , Ġevent . y )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDrag Event . ACTION _ DR AG _ EXIT ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Target Modifier . on Drag Exit ed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDrag Event . ACTION _ DROP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Target Modifier . on Dropped ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġur is Ġ= Ġevent . clip Item U ris (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= ĠOffset ( event . x , Ġevent . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDrag Event . ACTION _ DR AG _ ENDED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrop Target Modifier . on Drag Ended () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Invalid Ġaction : Ġ${ event . action }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠDrag Event . clip Item U ris (): ĠList < Uri > Ġ= Ġwith ( clip Data ) Ġ{ ĊĠĠĠĠ 0 . until ( item Count ). map Ġ{ Ġitem Index Ġ-> ĊĠĠĠĠĠĠĠ Ġwith ( description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . until ( mime Type Count ). map Ġ{ ĠmimeType Index Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClip Item Uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ= ĠgetItem At ( item Index ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmimeType Ġ= Ġget MimeType ( mime Type Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. flatten () Ċ }