/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 ĠJ aya ĠSur ya ĠTh ot ap al li Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// 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 . jay as ury at . u ig ame . comp osable . toggle Ċ Ċ import Ġandroidx . compose . animation .* Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . border Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Favorite Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . State Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . clip Ċ import Ġandroidx . compose . ui . graphics . vector . remember Vector Painter Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . jay as ury at . min es w eeper ui . R Ċ import Ġcom . jay as ury at . u ig ame . data . model . Toggle State Ċ import Ġcom . jay as ury at . util . Log Composition s Ċ Ċ @ Opt In ( Experimental Animation Api :: class ) Ċ @ Composable Ċ internal Ġfun ĠToggle ( ĊĠĠĠ Ġmodifier : ĠModifier , ĊĠĠĠ Ġtoggle State : ĠState < Toggle State >, ĊĠĠĠ Ġon Toggle StateChanged : Ġ( newState : ĠToggle State ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĊĠĠĠ ĠLog Composition s ( name Ġ= Ġ" Toggle ") ĊĊĠĠĠ Ġfun Ġupdate State ( newState : ĠToggle State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Toggle StateChanged ( newState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrap Content Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( shape Ġ= ĠRo unded Corner Shape ( 1 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( color Ġ= ĠMaterial Theme . colors . background . copy ( alpha Ġ= Ġ 0 . 5 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. border ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 1 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Background . copy ( alpha Ġ= Ġ 0 . 5 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= ĠRo unded Corner Shape ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 4 . dp ), ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠAnimated Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget State Ġ= Ġtoggle State . value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransition Spec Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfadeIn ( animation Spec Ġ= Ġt ween ( 3 0 0 )) Ġwith ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfade Out ( animation Spec Ġ= Ġt ween ( 3 0 0 , Ġdelay Millis Ġ= Ġ 1 5 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġstate Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠToggle Icons ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate State Ġ= Ġ{ ĠnewState Ġ-> Ġupdate State ( newState ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠToggle Icons ( ĊĠĠĠ Ġstate : ĠToggle State , ĊĠĠĠ ĠonUpdate State : Ġ( state : ĠToggle State ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrap Content Size () ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠFlag Icon ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 4 2 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġstate Ġis ĠToggle State . Re veal , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= ĠR . drawable . icon _ mine ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ed Ġ= Ġ{ ĠonUpdate State ( Toggle State . Re veal ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . size ( 4 . dp )) ĊĊĠĠĠĠĠĠĠ ĠFlag Icon ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . size ( 4 2 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġstate Ġis ĠToggle State . Flag , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġremember Vector Painter ( image Ġ= ĠIcons . Filled . Favorite ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ed Ġ= Ġ{ ĠonUpdate State ( Toggle State . Flag ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview ( backgroundColor Ġ= Ġ 0 x 0 0 FFFFFF ) Ċ @ Composable Ċ private Ġfun ĠPreview () Ġ{ ĊĊĠĠĠ ĠToggle ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier , ĊĠĠĠĠĠĠĠ Ġtoggle State Ġ= Ġremember Ġ{ Ġmutable State Of ( Toggle State . Flag ) Ġ}, ĊĠĠĠĠĠĠĠ Ġon Toggle StateChanged Ġ= Ġ{}, ĊĠĠĠ Ġ) Ċ } Ċ