package Ġcom . air bnb . e po xy Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . platform . Compose View Ċ import Ġandroidx . compose . ui . platform . View Composition Strategy Ċ import Ġandroidx . compose . ui . view interop . Android View Ċ Ċ class ĠCompose E po xy Model ( ĊĠĠĠ Ġprivate Ġval Ġcompose Function : Ġ@ Composable Ġ() Ġ-> ĠUnit Ċ ) Ġ: ĠE po xy Model With View < Compose View >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbuild View ( parent : ĠViewGroup ): ĠCompose View Ġ= ĠCompose View ( parent . context ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset View Composition Strategy ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Composition Strategy . Dispose On View Tree Lifecycle Destroyed ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( view : ĠCompose View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . bind ( view ) ĊĠĠĠĠĠĠĠ Ġview . setContent ( compose Function ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun bind ( view : ĠCompose View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . unbind ( view ) ĊĠĠĠĠĠĠĠ Ġview . dispose Composition () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( view : ĠCompose View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Detached From Window ( view ) ĊĠĠĠĠĠĠĠ Ġview . dispose Composition () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠModel Collector . comp osable Interop ( ĊĠĠĠ Ġid : ĠString , ĊĠĠĠ Ġcompose Function : Ġ@ Composable Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠ ĠCompose E po xy Model ( compose Function ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid ( id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠE po xy Model <* >> ĠE po xy Interop ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġcross inline ĠmodelBuilder : ĠT . () Ġ-> ĠUnit , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġmodel Ġ= ĠT :: class . java . newInstance (). apply ( model Builder ) ĊĊĠĠĠ ĠAndroid View ( ĊĠĠĠĠĠĠĠ Ġfactory Ġ= Ġ{ Ġcontext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFrame Layout ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View (( model . build View ( this ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠ Ġ) Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠ Ġ( model Ġas ĠE po xy Model < View >). bind ( view . getChild At ( 0 )) ĊĠĠĠ Ġ} Ċ } Ċ