package Ġcss Ċ Ċ const Ġval ĠUNIT Ġ= Ġ 8 Ċ private Ġconst Ġval ĠZERO _ CONST Ġ= Ġ" 0 " Ċ Ċ class ĠLinear Dimension ( val Ġvalue : ĠString ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġauto Ġ= ĠLinear Dimension (" auto ") ĊĠĠĠĠĠĠĠ Ġval Ġinitial Ġ= ĠLinear Dimension (" initial ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġvalue Calc Safe : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( value Ġ== ĠZERO _ CONST ) Ġ" 0 px " Ġelse Ġvalue ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġvalue ĊĊĠĠĠ Ġoperator Ġfun Ġunary Minus () Ġ= ĠLinear Dimension ( when Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue . startsWith ('- ') Ġ-> Ġvalue . substring ( 1 ) ĊĠĠĠĠĠĠĠ Ġvalue . startsWith (" calc ") Ġ-> Ġ" calc ( 0 px Ġ- Ġ$ value )" ĊĠĠĠĠĠĠĠ Ġvalue Ġ== ĠZERO _ CONST Ġ-> Ġvalue ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"- $ value " ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( other : ĠLinear Dimension ) Ġ= ĠLinear Dimension (" calc ($ value Calc Safe Ġ+ Ġ${ other . value Calc Safe }) ") ĊĠĠĠ Ġoperator Ġfun Ġminus ( other : ĠLinear Dimension ) Ġ= ĠLinear Dimension (" calc ($ value Calc Safe Ġ- Ġ${ other . value Calc Safe }) ") ĊĠĠĠ Ġoperator Ġfun Ġtimes ( times : ĠNumber ) Ġ= ĠLinear Dimension (" calc ($ value Calc Safe Ġ* Ġ$ times )") ĊĠĠĠ Ġoperator Ġfun Ġdiv ( times : ĠNumber ) Ġ= ĠLinear Dimension (" calc ($ value Calc Safe Ġ/ Ġ$ times )") Ċ } Ċ Ċ private Ġfun Ġvalue ( number : ĠNumber , Ġunit : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( number Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠZERO _ CONST ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġnumber . toString () Ġ+ Ġunit Ċ } Ċ Ċ val ĠNumber . em : ĠLinear Dimension Ġget () Ġ= ĠLinear Dimension ( value ( this , Ġ" em ")) Ċ val ĠNumber . pct : ĠLinear Dimension Ġget () Ġ= ĠLinear Dimension ( value ( this , Ġ"% ")) Ċ val ĠNumber . px : ĠLinear Dimension Ġget () Ġ= ĠLinear Dimension ( value ( this , Ġ" px ")) Ċ val ĠNumber . vw : ĠLinear Dimension Ġget () Ġ= ĠLinear Dimension ( value ( this , Ġ" vw ")) Ċ val ĠNumber . vh : ĠLinear Dimension Ġget () Ġ= ĠLinear Dimension ( value ( this , Ġ" vh ")) Ċ Ċ val ĠInt . unit Ġget () Ġ= Ġ( this Ġ* ĠUNIT ). px Ċ val ĠDouble . unit Ġget () Ġ= Ġ( this Ġ* ĠUNIT ). px Ċ