package Ġcom . github . k 0 sh k 0 sh . compose . easy forms Ċ Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Side Effect Ċ import Ġandroidx . compose . runtime . derived State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . save able . Local Save able State Registry Ċ import Ġandroidx . compose . runtime . save able . Save able State Registry Ċ import Ġandroidx . compose . ui . state . Toggle able State Ċ Ċ /** Ċ Ġ* ĠA Ġclass Ġthat Ġmanage Ġall Ġyour Ġforms Ġstates . Ċ Ġ* ĠAlways Ġcreate Ġone Ġinstance Ġper ĠViewModel Ġor ĠCompose Ġscreen . Ċ Ġ* Ġ@ param Ġsaved State Handle Ġthe Ġ[ Save able State Registry ] Ġto Ġuse Ġto Ġsave Ġ& Ġrestore Ġform Ġfields Ġstate . Ċ Ġ*/ Ċ class ĠEasy Forms Ġinternal Ġconstructor ( ĊĠĠĠ Ġsaved State Handle : ĠSave able State Registry ? Ġ= Ġnull , Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġeasy Forms Rest or ation Handler Ġ= ĠEasy Forms Rest or ation Handler ( saved State Handle ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġmap Ġthat Ġholds Ġall Ġ[ Easy Forms State ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġforms Ġ= Ġmutable Map Of < Any , ĠEasy Forms State < *, Ġ* >>() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRest ores Ġall Ġsaved Ġinstances Ġof Ġform Ġfields . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġrestore State () Ġ{ ĊĠĠĠĠĠĠĠ Ġeasy Forms Rest or ation Handler . restore FormData Ġ{ Ġbundle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġforms . on Each Ġ{ Ġ( key , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . get Bundle ( key . toString ()) ?. let Ġ{ Ġvalue . restore State ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠS aves Ġall Ġinstances Ġof Ġform Ġfields . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġsave State () Ġ{ ĊĠĠĠĠĠĠĠ Ġeasy Forms Rest or ation Handler . save FormData Ġ{ Ġforms Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġor ĠGet Ġa Ġstate Ġthat Ġhandle Ġ[ TextField ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Ġa Ġunique Ġidentifier Ġfor Ġthis Ġstate . ĊĠĠĠĠ Ġ* Ġ@ param Ġeasy Forms Validation Type Ġthe Ġvalidation Ġtype Ġto Ġuse Ġfor Ġthis Ġstate . ĊĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue Ġthe Ġdefault Ġvalue Ġto Ġbe Ġinserted Ġinto Ġthe Ġ[ TextField ]. ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Easy Forms TextField State ] Ġthat Ġprovide ĠTextField Ġstate Ġhandling . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget TextField State ( ĊĠĠĠĠĠĠĠ Ġkey : ĠAny , ĊĠĠĠĠĠĠĠ Ġeasy Forms Validation Type : ĠEasy Forms Validation Type , ĊĠĠĠĠĠĠĠ ĠdefaultValue : ĠString Ġ= Ġ"", ĊĠĠĠ Ġ): ĠEasy Forms TextField State Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġforms [ key ] ĊĠĠĠĠĠĠĠ Ġif Ġ( currentState Ġis ĠEasy Forms TextField State ) Ġreturn Ġcurrent State ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠEasy Forms TextField State ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= ĠdefaultValue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeasy Forms Validation Type Ġ= Ġeasy Forms Validation Type ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġforms [ key ] Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġor ĠGet Ġa Ġstate Ġthat Ġhandle Ġ[ Checkbox ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Ġa Ġunique Ġidentifier Ġfor Ġthis Ġstate . ĊĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue Ġcontrol Ġif Ġthe Ġ[ Checkbox ] Ġdefault Ġstate Ġshould Ġbe Ġchecked / unchecked . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Required Ġif Ġthis Ġis Ġtrue , Ġthen Ġthe Ġuser Ġmust Ġth ick Ġthe Ġcheckbox Ġto Ġchange Ġits Ġstate Ġto Ġvalid . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Easy Forms Checkbox State ] Ġthat Ġprovide ĠCheckbox Ġstate Ġhandling . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Checkbox State ( ĊĠĠĠĠĠĠĠ Ġkey : ĠAny , ĊĠĠĠĠĠĠĠ ĠdefaultValue : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġis Required : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġ): ĠEasy Forms Checkbox State Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġforms [ key ] ĊĠĠĠĠĠĠĠ Ġif Ġ( currentState Ġis ĠEasy Forms Checkbox State ) Ġreturn Ġcurrent State ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠEasy Forms Checkbox State ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= ĠdefaultValue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Required Ġ= Ġis Required ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġforms [ key ] Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġor ĠGet Ġa Ġstate Ġthat Ġhandle Ġ[ Switch ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Ġa Ġunique Ġidentifier Ġfor Ġthis Ġstate . ĊĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue Ġcontrol Ġif Ġthe Ġ[ Switch ] Ġdefault Ġstate Ġshould Ġbe Ġchecked / unchecked . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Required Ġif Ġthis Ġis Ġtrue , Ġthen Ġthe Ġuser Ġmust Ġtoggle Ġthe ĠSwitch Ġto Ġchange Ġits Ġstate Ġto Ġvalid . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Easy Forms Switch State ] Ġthat Ġprovide ĠSwitch Ġstate Ġhandling . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Switch State ( ĊĠĠĠĠĠĠĠ Ġkey : ĠAny , ĊĠĠĠĠĠĠĠ ĠdefaultValue : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġis Required : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġ): ĠEasy Forms Switch State Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġforms [ key ] ĊĠĠĠĠĠĠĠ Ġif Ġ( currentState Ġis ĠEasy Forms Switch State ) Ġreturn Ġcurrent State ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠEasy Forms Switch State ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= ĠdefaultValue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Required Ġ= Ġis Required ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġforms [ key ] Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġor ĠGet Ġa Ġstate Ġthat Ġhandle Ġ[ Tri State Checkbox ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Ġa Ġunique Ġidentifier Ġfor Ġthis Ġstate . ĊĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue Ġcontrol Ġwhat Ġthe Ġ[ Tri State Checkbox ] Ġdefault Ġstate Ġshould Ġbe . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Required Ġif Ġthis Ġis Ġtrue , Ġthen Ġthe Ġuser Ġmust Ġtoggle Ġthe Ġstate Ġto ĠON Ġto Ġbe Ġvalid . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Easy Forms Tri Checkbox State ] Ġthat Ġprovide ĠTri State Checkbox Ġstate Ġhandling . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Tri Checkbox State ( ĊĠĠĠĠĠĠĠ Ġkey : ĠAny , ĊĠĠĠĠĠĠĠ ĠdefaultValue : ĠToggle able State Ġ= ĠToggle able State . In determinate , ĊĠĠĠĠĠĠĠ Ġis Required : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġ): ĠEasy Forms Tri Checkbox State Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġforms [ key ] ĊĠĠĠĠĠĠĠ Ġif Ġ( currentState Ġis ĠEasy Forms Tri Checkbox State ) Ġreturn Ġcurrent State ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠEasy Forms Tri Checkbox State ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= ĠdefaultValue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Required Ġ= Ġis Required ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġforms [ key ] Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġor ĠGet Ġa Ġstate Ġthat Ġhandle Ġ[ RadioButton ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Ġa Ġunique Ġidentifier Ġfor Ġthis Ġstate . ĊĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue Ġcontrol Ġif Ġthe Ġ[ RadioButton ] Ġdefault Ġstate Ġshould Ġbe Ġchecked / unchecked . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Required Ġif Ġthis Ġis Ġtrue , Ġthen Ġthe Ġuser Ġmust Ġtoggle Ġthe ĠRadio Button Ġto Ġchange Ġits Ġstate Ġto Ġvalid . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Easy Forms RadioButton State ] Ġthat Ġprovide ĠRadio Button Ġstate Ġhandling . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget RadioButton State ( ĊĠĠĠĠĠĠĠ Ġkey : ĠAny , ĊĠĠĠĠĠĠĠ ĠdefaultValue : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġis Required : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġ): ĠEasy Forms RadioButton State Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġforms [ key ] ĊĠĠĠĠĠĠĠ Ġif Ġ( currentState Ġis ĠEasy Forms RadioButton State ) Ġreturn Ġcurrent State ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠEasy Forms RadioButton State ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= ĠdefaultValue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Required Ġ= Ġis Required ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġforms [ key ] Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġor ĠGet Ġa Ġstate Ġthat Ġhandle Ġ[ Slider ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Ġa Ġunique Ġidentifier Ġfor Ġthis Ġstate . ĊĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue Ġcontrol Ġwhere Ġthe Ġ[ Slider ] Ġposition Ġshould Ġbe Ġplaced Ġat . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Required Ġif Ġthis Ġis Ġtrue , Ġthen Ġthe Ġuser Ġmust Ġselect Ġa Ġposition Ġthat Ġis Ġbigger Ġthan Ġ 0 F . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Easy Forms Slider State ] Ġthat Ġprovide ĠSlider Ġstate Ġhandling . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Slider State ( ĊĠĠĠĠĠĠĠ Ġkey : ĠAny , ĊĠĠĠĠĠĠĠ ĠdefaultValue : ĠFloat Ġ= Ġ 0 F , ĊĠĠĠĠĠĠĠ Ġis Required : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġ): ĠEasy Forms Slider State Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġforms [ key ] ĊĠĠĠĠĠĠĠ Ġif Ġ( currentState Ġis ĠEasy Forms Slider State ) Ġreturn Ġcurrent State ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠEasy Forms Slider State ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= ĠdefaultValue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Required Ġ= Ġis Required ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġforms [ key ] Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġor ĠGet Ġa Ġstate Ġthat Ġhandle Ġ[ Range Slider ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Ġa Ġunique Ġidentifier Ġfor Ġthis Ġstate . ĊĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue Ġcontrol Ġwhere Ġthe Ġ[ Range Slider ] Ġposition Ġshould Ġbe Ġplaced Ġat . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Required Ġif Ġthis Ġis Ġtrue , Ġthen Ġthe Ġuser Ġmust Ġselect Ġa Ġposition Ġbetween Ġ 0 F Ġand Ġx F . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Easy Forms Range Slider State ] Ġthat Ġprovide ĠRange Slider Ġstate Ġhandling . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Range Slider State ( ĊĠĠĠĠĠĠĠ Ġkey : ĠAny , ĊĠĠĠĠĠĠĠ ĠdefaultValue : ĠClosed Floating Point Range < Float > Ġ= Ġ 0 F .. 0 F , ĊĠĠĠĠĠĠĠ Ġis Required : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġ): ĠEasy Forms Range Slider State Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġforms [ key ] ĊĠĠĠĠĠĠĠ Ġif Ġ( currentState Ġis ĠEasy Forms Range Slider State ) Ġreturn Ġcurrent State ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠEasy Forms Range Slider State ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= ĠdefaultValue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Required Ġ= Ġis Required ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġforms [ key ] Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġor ĠGet Ġa Ġcustom Ġstate Ġprovided Ġby Ġyou . ĊĠĠĠĠ Ġ* Ġ@ param Ġkey Ġa Ġunique Ġidentifier Ġfor Ġthis Ġstate . ĊĠĠĠĠ Ġ* Ġ@ param Ġstate Ġyour Ġcustom Ġstate Ġthat Ġshould Ġbe Ġstored Ġin Ġ[ forms ]. ĊĠĠĠĠ Ġ* Ġ@ return Ġyour Ġcustom Ġstate Ġafter Ġits Ġbeing Ġadded Ġto Ġ[ forms ] Ġif Ġit Ġwasn 't Ġalready . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unchecked _ cast ") ĊĠĠĠ Ġfun Ġ< ST , ĠCT , ĠS Ġ: ĠEasy Forms State < ST , ĠCT >> Ġadd AndGet Custom State ( ĊĠĠĠĠĠĠĠ Ġkey : ĠAny , ĊĠĠĠĠĠĠĠ Ġstate : ĠS , ĊĠĠĠ Ġ): ĠS Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġforms [ key ] ĊĠĠĠĠĠĠĠ Ġif Ġ(( currentState Ġas ? ĠS ) Ġ!= Ġnull ) Ġreturn Ġcurrent State ĊĠĠĠĠĠĠĠ Ġforms [ key ] Ġ= Ġstate ĊĠĠĠĠĠĠĠ Ġreturn Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAll Ġform Ġstates Ġas Ġin Ġlist Ġof Ġmutable State Ġof Ġ[ Easy Forms Error State ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġform States () Ġ= Ġforms . values . map Ġ{ Ġit . error State Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġuseful Ġwhen Ġyou Ġonly Ġwant Ġto Ġenable / disable ĊĠĠĠĠ Ġ* Ġyour ĠC TA Ġuntil Ġall Ġrequired Ġfields Ġare ĠValid . ĊĠĠĠĠ Ġ* Ġ@ return Ġderived State Ġof Ġall Ġyour Ġform Ġfields Ġerror Ġstates . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġobserve Form States () Ġ= Ġderived State Of Ġ{ Ġform States () Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAll Ġkeys Ġprovided Ġby Ġyou . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġform Keys () Ġ= Ġforms . keys . toList () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠAll Ġform Ġfiled Ġdata Ġas Ġin Ġlist Ġof Ġ[ Easy Forms Result ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠformData () Ġ= Ġforms . map Ġ{ Ġit . value . map To Result ( it . key ) Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ[ Easy Forms ] Ġkey Ġidentifier Ġfor Ġthe Ġcurrent Ġcomp osable . Ċ Ġ*/ Ċ private Ġconst Ġval ĠE ASY _ FOR MS _ KEY Ġ= Ġ" Easy Forms Key " Ċ Ċ /** Ċ Ġ* ĠPlease Ġbe Ġaware Ġthat Ġ[ Build Easy Forms ] Ġshould Ġbe Ġcalled Ġas Ġparent Ġof Ġyour Ġforms ĠUI Ġtree Ġand Ċ Ġ* Ġnot Ġas Ġa Ġtop Ġparent Ġof Ġyour Ġwhole Ġtree . Ċ Ġ* Ġ@ sample Ġcom . github . k 0 sh k 0 sh . compose . easy forms . example . ui . Easy Form Ċ Ġ* Ġ@ param Ġkey Ġthe Ġunique Ġidentifier Ġfor Ġthis Ġinstance Ġof Ġ[ Easy Forms ]. Ċ Ġ* Ġ@ param Ġsave able State Registry Ġthe Ġ[ Save able State Registry ] Ġthat Ġwill Ġbe Ġused Ġto Ġsave Ġ& Ġrestore Ċ Ġ* Ġ[ Easy Forms ] Ġfields Ġstate , Ġby Ġdefault Ġ[ Local Save able State Registry ] Ġis Ġused . Ċ Ġ* Ġ@ param Ġcontent Ġyour Ġcomp osable Ġlayout . Ċ Ġ*/ Ċ @ Composable Ċ fun ĠBuild Easy Forms ( ĊĠĠĠ Ġkey : ĠAny Ġ= ĠE ASY _ FOR MS _ KEY , ĊĠĠĠ Ġsave able State Registry : ĠSave able State Registry ? Ġ= Ġnull , ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ( easy Forms : ĠEasy Forms ) Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġstate Handle Ġ= Ġsave able State Registry Ġ?: ĠLocal Save able State Registry . current ĊĠĠĠ Ġval Ġeasy Forms Ġ= Ġremember ( key 1 Ġ= Ġkey ) Ġ{ ĠEasy Forms ( state Handle ) Ġ} ĊĠĠĠ Ġcontent . invoke ( easy Forms ) ĊĠĠĠ ĠSide Effect Ġ{ ĊĠĠĠĠĠĠĠ Ġeasy Forms . restore State () ĊĠĠĠĠĠĠĠ Ġeasy Forms . save State () ĊĠĠĠ Ġ} Ċ }