From cc59fb64f7df314020cbd5f7f06faaaabfc4d3a8 Mon Sep 17 00:00:00 2001 From: "zhanwen.zw" Date: Wed, 6 Apr 2022 19:27:04 +0800 Subject: [PATCH 1/7] fix: flex-basis with percentage not working --- .../flexbox_flex-0.ts.04c6f0af1.png | Bin 0 -> 5754 bytes .../flexbox_flex-0.ts.179892d61.png | Bin 0 -> 5754 bytes .../flexbox_flex-0.ts.46e3249f1.png | Bin 5638 -> 5605 bytes .../flexbox_flex-0.ts.919f33091.png | Bin 0 -> 5605 bytes .../flexbox_flex-0.ts.d66444d21.png | Bin 0 -> 5605 bytes .../flexbox_flex-1.ts.3c7ff7871.png | Bin 0 -> 5705 bytes .../flexbox_flex-1.ts.3d4b82841.png | Bin 0 -> 5705 bytes .../flexbox_flex-1.ts.3ff0df591.png | Bin 0 -> 5705 bytes .../flexbox_flex-1.ts.7092776f1.png | Bin 0 -> 5705 bytes .../flexbox_flex-1.ts.a83fdf6c1.png | Bin 0 -> 5705 bytes .../flexbox_flex-1.ts.c88e723a1.png | Bin 0 -> 5705 bytes .../flexbox_flex-1.ts.f1b9a9691.png | Bin 0 -> 5686 bytes .../flexbox_flex-basis.ts.4ca0354f1.png | Bin 0 -> 5743 bytes .../flexbox_flex-n.ts.0899da8b1.png | Bin 0 -> 5705 bytes .../flexbox_flex-n.ts.0eef484d1.png | Bin 0 -> 5705 bytes .../flexbox_flex-n.ts.2e72984b1.png | Bin 0 -> 5705 bytes .../flexbox_flex-n.ts.3af04d5e1.png | Bin 0 -> 5705 bytes .../flexbox_flex-n.ts.4512fe4b1.png | Bin 0 -> 5705 bytes .../flexbox_flex-n.ts.538628cf1.png | Bin 0 -> 5686 bytes .../flexbox_flex-n.ts.97930f421.png | Bin 0 -> 5705 bytes .../flexbox_flex-n.ts.aa18ec5b1.png | Bin 0 -> 5705 bytes .../flexbox_flex-natural.ts.6fff1fb91.png | Bin 0 -> 6066 bytes .../flexbox_flex-natural.ts.a9eefa5d1.png | Bin 0 -> 5767 bytes .../css-flexbox/flexbox_flex.ts.45c47ad81.png | Bin 0 -> 5496 bytes ...exbox_justifycontent-flex.ts.e89ba0841.png | Bin 0 -> 5057 bytes ...ustifycontent-spacearound.ts.5fd6fca91.png | Bin 0 -> 3249 bytes ...stifycontent-spacebetween.ts.9aa7dd431.png | Bin 0 -> 3236 bytes .../flexbox_justifycontent.ts.07c16f161.png | Bin 0 -> 5060 bytes .../flexbox_justifycontent.ts.0f60dddd1.png | Bin 0 -> 5076 bytes .../flexbox_justifycontent.ts.5e42bcbe1.png | Bin 0 -> 5063 bytes .../specs/css/css-flexbox/flexbox_flex-0.ts | 12 +-- .../specs/css/css-flexbox/flexbox_flex-1.ts | 22 ++---- .../css/css-flexbox/flexbox_flex-basis.ts | 3 +- .../specs/css/css-flexbox/flexbox_flex-n.ts | 25 ++---- .../css/css-flexbox/flexbox_flex-natural.ts | 6 +- .../specs/css/css-flexbox/flexbox_flex.ts | 3 +- .../flexbox_justifycontent-flex.ts | 3 +- .../flexbox_justifycontent-spacearound.ts | 3 +- .../flexbox_justifycontent-spacebetween.ts | 3 +- .../css/css-flexbox/flexbox_justifycontent.ts | 9 +-- kraken/lib/src/css/style_property.dart | 6 +- kraken/lib/src/css/values/length.dart | 7 +- kraken/lib/src/rendering/flex.dart | 71 +++++++++++------- kraken/lib/src/rendering/flow.dart | 4 +- 44 files changed, 83 insertions(+), 94 deletions(-) create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.04c6f0af1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.179892d61.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.919f33091.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.d66444d21.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.3c7ff7871.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.3d4b82841.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.3ff0df591.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.7092776f1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.a83fdf6c1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.c88e723a1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.f1b9a9691.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-basis.ts.4ca0354f1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.0899da8b1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.0eef484d1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.2e72984b1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.3af04d5e1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.4512fe4b1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.538628cf1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.97930f421.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.aa18ec5b1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-natural.ts.6fff1fb91.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex-natural.ts.a9eefa5d1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_flex.ts.45c47ad81.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent-flex.ts.e89ba0841.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent-spacearound.ts.5fd6fca91.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent-spacebetween.ts.9aa7dd431.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent.ts.07c16f161.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent.ts.0f60dddd1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent.ts.5e42bcbe1.png diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.04c6f0af1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.04c6f0af1.png new file mode 100644 index 0000000000000000000000000000000000000000..802d61e8096e7192a78cebfdcee30b1085f4d106 GIT binary patch literal 5754 zcmeHLXAY{`)fdEN_2uK1%6cUgnK!6w$k_q#h5C5f|kMqg*%f08mzjN-n=brPN z_c^yu1o|5P)%>q|dV0ptV~0=a>FHn6)7$jJrv|zwkImm!>n{4}Q@-En)$w*r>x93c zzk{CsRJX97#@y1=+YW>tK6pC4WNsA0D3w#Ri)rp9gfrhfKAK~D!C}jxUn5=JrYe5n z<{lI||45_tWB!gqoKAUuFT^8v@?bMB=5Qqx0~#0g#YUBAYoFic>+q@ zCpdXm4wWdeUP}k05sDO;G?Ox!0#hj3c$C0e-O?{B;aNiT^v1~FZvMjNrQVS(uHT;A zWPIY@{}xYI12y=+m6g@yd6*lY$lGo5!!Lg^FWYt1VAt_7{hzm9`hTLQ&7!!2WvCci zsGWVRv9g5Z4h$ZVdvFcH_s&e6e?-)Lcw-;7+-v-=4TqK;_ikF55B9Zxum)ZGA2y5d z#HOZ+mUr`AkEVmc8M|t(6NyBx^<@FsHSSatPC1!xWnzE(+u(kCCtf$(N~^%kYE+&X zyC$1;YAUf7SI1lxs?|~-{=MD7o*Bm;0XH$X_QIO>g8`kC;6jWRkD&fvdl|LeG?=3DS z3pDp^a!gZ}PlWiPCB0C50&O_f(rar7jrOfmI58se$o_=y`)fkqi5JE>4lPaW_At1O zYL*a@8rJY)JG45Gvo>P~r&9L9SQnVBXo4Uph&Gb+!n3*rzc=E^!&JmT`oiPt#vZ9R z0jLz7Azduy=kh?IFtWgjxldJsji9HX%(Fvj%HApLiXn*>j+5Lc#ju0D#jA@Se64x7 zYOFWYWW=7bItCJ9W0P4a?QU^l4HN6)@-wp}A0^TeByR$8Fm~(Ff!>#7UKwHtqJ>}N z>>xfcK9y_UaPp|}@GiJj%J)?e`DxLd6TgT|00_ZpW9gBsOyO-ax0nhqFHIegvrVfk zF2TGy54!OB&4!*vJZ{Y=0LH}ga(>BbHCE*Z>k`XYSsV83teetsiKAy~&hf=`8;6{v z@$04%jmkomy!gUYiuZGb;&t)x0{Ez}IJQpUb1lK{(Vh9+NfNBIx-{eAs5@>k2R3oT zLJ0F?o_lsJB7OWiM!nc6B1WRQZe||Hh>ikls+hM=7>YqMmKqHtT%z%-0&Vr^a$?6j7u znS5^_GRLdkWIdAfJx$cSc+(p!Q}xZREC$7n>d&-{;@-Uw^VFd*ZXZmOanv&Nf|Yje zdBm0Xra~l)mJHSXr)0;qrQgWv=MQ!ycAJ?UxOA+_N7b1NN;(~txpE)7*5nMr&3+Qb zO2Dv^o|luIm1H0X{~||zec@!r5>W!xkM9X#YYMFEg-*|5WoS~J znP>8)HHC}{+_*^{N$do2Dhj-dicu^OBxAX&>+VkUQ+>k+&CPB@k!g{(L8T+KyjHX{ zR?-S8-aO0e zO2t7$*@`rdfdx=XrOvXmRp7CV_y%cdo&o@I9gZPPJTtU7NcD76_7#}>zLb_UzV$XT zwUtsx5y>a}N7Oi(@ZsY{gPDsH=T*`gpC_&=lTi@NJnJyN={n{g(FKx27J%NjHV#V8 z=)0r^Wab3%wnCDYjokxAw4SNr7Lhr8ZdYjj+D#xQ4ax9^CP`ZydA93@KxqEj6b#Ob zN6VXQ9QkIxSoip}@S4r5%j?eRs!;(`#u!-_STra)0X<~^4@nT*#{&Xg8Xr~khC0&S zDN)+;hy&SCNc!5(d!w56#n%g7(I|j~)|3v-2O{kv3AaKe0O64x zqS&`{K0S8qE61&#$nzP?|Bx$}E)Kc30dUMtOZHenQZ88?89niuK=9lVZpatSpIyf8mZq5Sm zvi*jQpvs0|>z3apE*wi=e4&UAy{vrMvAGed)o+#F7281PGiUpNoYu~gJEdH1>)cAs zw)srPV=TKIYzHkZ+z$%Rz9Od`V2?-BXNf?vbLQ$Ev+OV1eKM|umk?r}c5Eg99dd;H z(1H)IKA*b=Ss_<9Cl zyBmZ2yC2+ERJFqS18YmHNA zzqgR6eWDmr7H0vD;di)V3nCIl{QZ;HrScv_8UK9d+)yf2KWi z&CWNORh_M(8Q<+FX7>d?z$5UrTEy2t2-M=c?6H-d&=7yP4vzE4>XF>s*Ks78>N8=? zxzdvTASc$^aXJFBpt8dQH>>KYZUIAedAl4V+mb60=ym{-7$&H$`puWWJT;&~BnF1~ zlNj#O$>p;xGV{-+51jA!F*6nZ6d|rCR=G4uc1N7m71p?0zQhfaJvo!81Lgcx6=a9StHb(4&Q|<~htG_0rE_X8tR-7|wBSq0Bn!`my zPnG4~_52p?nz%mbY%=Z)o!i`7|28Pde$dy#3QZfRo} zI8ui_3C#l`P`s}d28fpOxVJvHU#-d3YBr8|9eEa{XFnQBD@jq^4k#v#Xd>7?<%D~j zIJeX)wH2$ze*Ti@4K`aR5{3f;Fuo}7W35Zw6F+S;9|~X(7dp#Qy4)yfBT&$McyuG5 z(>b}Y?kg#BqEdjMD?_7lYIgd5st|s-jWunQ+%=ymSv9nk=wN5iv5k&WjYlZ?a7mLN zi&UTyY(ez+K$gl%UXxrLBn>9&duu$A(P>-dQRNOk zDiYQ8l7d#hHd?BXYi&$R8r}+dIE#eBlbw`%!0Eo4w2p|xNDZPl4iTCK%xiuB3_OUV zyzzm5SQrmuq$k??7v3?nN-skwS*rPBM9U~`?j0pnxI4JYpY#0owhgcbayD9Rr)64G zvB7kIWlr2(lLeaTER4lSJoP(T`XF1I=Alpro;_=BXG~9y^RIaHHUAqCL-~m+oVb@0 zZ)EyFayy0eeXDLW#|T$K6MhClU1x&21@uY^1#m7$uHk zh6rgPh8vA>{#5JzN?)1xbf3!7@nnWvioDGGAz+YU{c7U{z6DmjjE zJ=OjJf%!jt=D#Wq?1sko3;W*by>Zxa@ISGv4X;+#U|Tnx2pAd+$uju0>kGp_Vq^bR z@Bf?>estqMFy@cJ`52r(o2GosjgPtUF*p8j(D<=5{;V{#)|Jk$ZXToW!RqG6de9?* KhwHvOckQ3G;(?R^ literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.179892d61.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.179892d61.png new file mode 100644 index 0000000000000000000000000000000000000000..802d61e8096e7192a78cebfdcee30b1085f4d106 GIT binary patch literal 5754 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 KhwHvOckQ3G;(?R^ literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.46e3249f1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.46e3249f1.png index b476cc061bf70b72d2daea046bb40a730e685517..7b91b2a098c52ece69c780373d0ff5683beed91b 100644 GIT binary patch literal 5605 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

vt#G=J?fJ4py5NVweWJ^2j3>A4Hx z>aso`J?IJ;G>!|hh)(deVM*@?F45S8i4EZ6wzVFjxvIHt$W<9}#=1^hlr3onSg7Z( zmAXuqD!?c;+FR977~iUQAQ!4}(`x9YlBz|h^V}kp*SOb6%E;cjnL@J3`3%yd5|E*smnIUMZ80 z-GFkQ)d=pJ#n$c&Q4jEZ*Gbhg;Ln9hTSgp4Gl9Y+N0r zJsmanTJ*Hgkmm)J)s9u#))pck-fDkG^#rLl!f^K=5NIrK)MZKS1(w4X|^uX|a(W*Jkn!J83w9H?4nA zT9?$cTcqi+zE{;(O3uQbd(l4euF%hESyvi3ziP%ewME-{0{~f0C&8) ze35n~suY=X?36TK(1)*sPcuk5=DuL2quDKg6cm2SE9$Q+;|8j3am--JXXigEl7A~#{%;4LWns}3Sg*`A=Y`|z z|3@SJ(?ff^g_di7?Q-(GHvv1e+XwUys_LJv_?zVVJgC>5pPlg83IA1r_>6?lNcfC| mzZc{_)8YS*4j*-EmQS{<&y94p(ARPe&_}(GJU@K;!e0R+^2uWW diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.919f33091.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-0.ts.919f33091.png new file mode 100644 index 0000000000000000000000000000000000000000..7b91b2a098c52ece69c780373d0ff5683beed91b GIT binary patch literal 5605 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.3d4b82841.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.3d4b82841.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f52e8fc38995df3a144127f39c263f46f047c2 GIT binary patch literal 5705 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.3ff0df591.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.3ff0df591.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f52e8fc38995df3a144127f39c263f46f047c2 GIT binary patch literal 5705 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.7092776f1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.7092776f1.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f52e8fc38995df3a144127f39c263f46f047c2 GIT binary patch literal 5705 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.a83fdf6c1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.a83fdf6c1.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f52e8fc38995df3a144127f39c263f46f047c2 GIT binary patch literal 5705 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.c88e723a1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.c88e723a1.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f52e8fc38995df3a144127f39c263f46f047c2 GIT binary patch literal 5705 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.f1b9a9691.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-1.ts.f1b9a9691.png new file mode 100644 index 0000000000000000000000000000000000000000..68990d9893bcf8f3cb158861d79e16bf86fbf441 GIT binary patch literal 5686 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.0eef484d1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.0eef484d1.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f52e8fc38995df3a144127f39c263f46f047c2 GIT binary patch literal 5705 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.2e72984b1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.2e72984b1.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f52e8fc38995df3a144127f39c263f46f047c2 GIT binary patch literal 5705 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.3af04d5e1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.3af04d5e1.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f52e8fc38995df3a144127f39c263f46f047c2 GIT binary patch literal 5705 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.4512fe4b1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.4512fe4b1.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f52e8fc38995df3a144127f39c263f46f047c2 GIT binary patch literal 5705 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.538628cf1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.538628cf1.png new file mode 100644 index 0000000000000000000000000000000000000000..68990d9893bcf8f3cb158861d79e16bf86fbf441 GIT binary patch literal 5686 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.aa18ec5b1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-n.ts.aa18ec5b1.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f52e8fc38995df3a144127f39c263f46f047c2 GIT binary patch literal 5705 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 b@Im(F#<~R?#iX$uYyvysbG+*4<)8lt!S;me literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex-natural.ts.6fff1fb91.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex-natural.ts.6fff1fb91.png new file mode 100644 index 0000000000000000000000000000000000000000..a2cda1d70b8a002b55f321f08ae5231cd5cd3784 GIT binary patch literal 6066 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 literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_flex.ts.45c47ad81.png b/integration_tests/snapshots/css/css-flexbox/flexbox_flex.ts.45c47ad81.png new file mode 100644 index 0000000000000000000000000000000000000000..d70ad1c625c0fccdc4ca3077767ebf34bad24bfd GIT binary patch literal 5496 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 Lf*-6pfV%u28b*oA literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent-flex.ts.e89ba0841.png b/integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent-flex.ts.e89ba0841.png new file mode 100644 index 0000000000000000000000000000000000000000..091a958986ab95ab7d02228e6a3173031134e6d4 GIT binary patch literal 5057 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 literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent-spacebetween.ts.9aa7dd431.png b/integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent-spacebetween.ts.9aa7dd431.png new file mode 100644 index 0000000000000000000000000000000000000000..05bf26bad31bfefa3439f0977df17186d3766980 GIT binary patch literal 3236 zcmeHKYfxK76uuB-QYfUI>QsR?>VP;yLJ+i26B49Y1T1LZNGNtN7d4asu~J?M!i;Sx zg&9X)O+p_GVxE`0$0sw$p)F%-q0l?vF0B|h8J7XgcJtpfh;lMo^84fhUUUOK-i5nhu z8jrO+{8!fiU~g>&dVFar`|57w)p(>6O(;-?8E| zU+nj(!XNh*)zx)fyD2+A_Ab7n@MdC|=K(1wwP}1prW-xZ`lo$>YuF7m05#fy^kpoy=q(q$h0+ma(6o!0{v5 zk+K4X@R%3yxue@YpC>zrk)}YzL)w?AX_UEE7VNwIBKzB$o^@YCQFLKpL3RCrFUV%I z#bWWSd}B#q)#WZ1XE(`h^R#t+k!e=IfkUm@AZ!MAV^N|;Oa_BquTR%W#(C5fb&Y6B zSw@7jQN&;{&OlomQrx;Af%nL1#;R;4K`;yl20_VXp<-+&5~pLeH`6%%m<3i?$N7Au z{#1P|IjAKyEzLg#7RF!TZ<=S&jpZZ|%(gzuA{at9*9IXKiPEvsWrV5ABm*o;z;v_K zDHXMr$SwaLFWO&AF8y#1zr7rnkFB66OAjSjtX4u+vqU1WVY0G;bLHiZ`KJD0wMrE{o@Z(>VB|@k z>U3yX21=Iba-OSH9cE2}>F?SySfkOTrlvk<_AY49ME{^09j#hiTtqNUe(D}=WtqGm|8`%YPqI?7)pPOnoix0ngj)M6q}ZX zr6ri%BohzFONk6Rfni_iF!uRz)6)Zd<7$Lvvl&@vQO_!geBr^Qyo}))2j&@cC4Pt% zUjbE8DBG;_a-LD9?1<@HUdz=URFAGbuX=~yYTG7v%{skn;N^R kv6~t@JxTv}r^8IhznUaEdb!ON`)L4CAIC;ChJRW34?15BEC2ui literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent.ts.07c16f161.png b/integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent.ts.07c16f161.png new file mode 100644 index 0000000000000000000000000000000000000000..c4096dc347bbed22589e9b32906b079bd2f2dc53 GIT binary patch literal 5060 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 literal 0 HcmV?d00001 diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent.ts.0f60dddd1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent.ts.0f60dddd1.png new file mode 100644 index 0000000000000000000000000000000000000000..a6510a74743e40a0e6be986395b887631241de6d GIT binary patch literal 5076 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 literal 0 HcmV?d00001 diff --git a/integration_tests/specs/css/css-flexbox/flexbox_flex-0.ts b/integration_tests/specs/css/css-flexbox/flexbox_flex-0.ts index c035b7ec78..0fb18a05c5 100644 --- a/integration_tests/specs/css/css-flexbox/flexbox_flex-0.ts +++ b/integration_tests/specs/css/css-flexbox/flexbox_flex-0.ts @@ -1392,8 +1392,7 @@ describe('flexbox_flex-0', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('1-0', async () => { + it('1-0', async () => { let div; div = createElement( 'div', @@ -2179,8 +2178,7 @@ describe('flexbox_flex-0', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('1-Npercent', async () => { + it('1-Npercent', async () => { let div; div = createElement( 'div', @@ -2801,8 +2799,7 @@ describe('flexbox_flex-0', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('N-0', async () => { + it('N-0', async () => { let div; div = createElement( 'div', @@ -3429,8 +3426,7 @@ describe('flexbox_flex-0', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('N-Npercent', async () => { + it('N-Npercent', async () => { let div; div = createElement( 'div', diff --git a/integration_tests/specs/css/css-flexbox/flexbox_flex-1.ts b/integration_tests/specs/css/css-flexbox/flexbox_flex-1.ts index 58556f46f6..8238696e20 100644 --- a/integration_tests/specs/css/css-flexbox/flexbox_flex-1.ts +++ b/integration_tests/specs/css/css-flexbox/flexbox_flex-1.ts @@ -156,8 +156,7 @@ describe('flexbox_flex-1', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('0-0', async () => { + it('0-0', async () => { let div; div = createElement( 'div', @@ -702,8 +701,7 @@ describe('flexbox_flex-1', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('0-Npercent-shrink', async () => { + it('0-Npercent-shrink', async () => { let div; div = createElement( 'div', @@ -782,8 +780,7 @@ describe('flexbox_flex-1', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('0-Npercent', async () => { + it('0-Npercent', async () => { let div; div = createElement( 'div', @@ -1406,8 +1403,7 @@ describe('flexbox_flex-1', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('1-0', async () => { + it('1-0', async () => { let div; div = createElement( 'div', @@ -2034,8 +2030,7 @@ describe('flexbox_flex-1', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('1-Npercent', async () => { + it('1-Npercent', async () => { let div; div = createElement( 'div', @@ -2661,8 +2656,7 @@ describe('flexbox_flex-1', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('N-0', async () => { + it('N-0', async () => { let div; div = createElement( 'div', @@ -2741,7 +2735,6 @@ describe('flexbox_flex-1', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. it('N-N-ref', async () => { let div; div = createElement( @@ -3291,8 +3284,7 @@ describe('flexbox_flex-1', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('N-Npercent', async () => { + it('N-Npercent', async () => { let div; div = createElement( 'div', diff --git a/integration_tests/specs/css/css-flexbox/flexbox_flex-basis.ts b/integration_tests/specs/css/css-flexbox/flexbox_flex-basis.ts index 7de2a0d6e3..4e11db6586 100644 --- a/integration_tests/specs/css/css-flexbox/flexbox_flex-basis.ts +++ b/integration_tests/specs/css/css-flexbox/flexbox_flex-basis.ts @@ -156,8 +156,7 @@ describe('flexbox_flex-basis', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('shrink', async () => { + it('shrink', async () => { let div; div = createElement( 'div', diff --git a/integration_tests/specs/css/css-flexbox/flexbox_flex-n.ts b/integration_tests/specs/css/css-flexbox/flexbox_flex-n.ts index 732a009cdc..e298ef9eb9 100644 --- a/integration_tests/specs/css/css-flexbox/flexbox_flex-n.ts +++ b/integration_tests/specs/css/css-flexbox/flexbox_flex-n.ts @@ -78,8 +78,7 @@ describe('flexbox_flex-N', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('0-0-unitless', async () => { + it('0-0-unitless', async () => { let div; div = createElement( 'div', @@ -158,8 +157,7 @@ describe('flexbox_flex-N', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('0-0', async () => { + it('0-0', async () => { let div; div = createElement( 'div', @@ -238,7 +236,6 @@ describe('flexbox_flex-N', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. it('0-N-ref', async () => { let div; div = createElement( @@ -706,8 +703,7 @@ describe('flexbox_flex-N', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('0-Npercent-shrink', async () => { + it('0-Npercent-shrink', async () => { let div; div = createElement( 'div', @@ -786,8 +782,7 @@ describe('flexbox_flex-N', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('0-Npercent', async () => { + it('0-Npercent', async () => { let div; div = createElement( 'div', @@ -1410,8 +1405,7 @@ describe('flexbox_flex-N', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('1-0', async () => { + it('1-0', async () => { let div; div = createElement( 'div', @@ -2039,8 +2033,7 @@ describe('flexbox_flex-N', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('1-Npercent', async () => { + it('1-Npercent', async () => { let div; div = createElement( 'div', @@ -2666,8 +2659,7 @@ describe('flexbox_flex-N', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('N-0', async () => { + it('N-0', async () => { let div; div = createElement( 'div', @@ -3294,8 +3286,7 @@ describe('flexbox_flex-N', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('N-Npercent', async () => { + it('N-Npercent', async () => { let div; div = createElement( 'div', diff --git a/integration_tests/specs/css/css-flexbox/flexbox_flex-natural.ts b/integration_tests/specs/css/css-flexbox/flexbox_flex-natural.ts index 44a9e26fc6..a75a1ddedc 100644 --- a/integration_tests/specs/css/css-flexbox/flexbox_flex-natural.ts +++ b/integration_tests/specs/css/css-flexbox/flexbox_flex-natural.ts @@ -77,8 +77,7 @@ describe('flexbox_flex-natural', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('mixed-basis-auto', async () => { + it('mixed-basis-auto', async () => { let div; div = createElement( 'div', @@ -509,8 +508,7 @@ describe('flexbox_flex-natural', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('variable-zero-basis', async () => { + it('variable-zero-basis', async () => { let div; div = createElement( 'div', diff --git a/integration_tests/specs/css/css-flexbox/flexbox_flex.ts b/integration_tests/specs/css/css-flexbox/flexbox_flex.ts index d3a8f2c918..a5e3b2d657 100644 --- a/integration_tests/specs/css/css-flexbox/flexbox_flex.ts +++ b/integration_tests/specs/css/css-flexbox/flexbox_flex.ts @@ -397,8 +397,7 @@ describe('flexbox_flex', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('natural', async () => { + it('natural', async () => { let div; let flex; div = createElement( diff --git a/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-flex.ts b/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-flex.ts index a81685ee9b..ae8d785ab5 100644 --- a/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-flex.ts +++ b/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-flex.ts @@ -74,8 +74,7 @@ describe('flexbox_justifycontent-flex', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('end', async () => { + it('end', async () => { let div; div = createElement( 'div', diff --git a/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-spacearound.ts b/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-spacearound.ts index fc9263cd2a..836f1be40d 100644 --- a/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-spacearound.ts +++ b/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-spacearound.ts @@ -172,8 +172,7 @@ describe('flexbox_justifycontent-spacearound', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('only', async () => { + it('only', async () => { let div; div = createElement( 'div', diff --git a/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-spacebetween.ts b/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-spacebetween.ts index a9ddbaf5bb..c11cf4164b 100644 --- a/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-spacebetween.ts +++ b/integration_tests/specs/css/css-flexbox/flexbox_justifycontent-spacebetween.ts @@ -175,8 +175,7 @@ describe('flexbox_justifycontent-spacebetween', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('only', async () => { + it('only', async () => { let div; div = createElement( 'div', diff --git a/integration_tests/specs/css/css-flexbox/flexbox_justifycontent.ts b/integration_tests/specs/css/css-flexbox/flexbox_justifycontent.ts index f435e8774e..274623f1cb 100644 --- a/integration_tests/specs/css/css-flexbox/flexbox_justifycontent.ts +++ b/integration_tests/specs/css/css-flexbox/flexbox_justifycontent.ts @@ -1,7 +1,6 @@ /*auto generated*/ describe('flexbox_justifycontent', () => { - // @TODO: Percentage of flex-basis not working. - xit('center', async () => { + it('center', async () => { let div; div = createElement( 'div', @@ -70,8 +69,7 @@ describe('flexbox_justifycontent', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('spacearound', async () => { + it('spacearound', async () => { let div; div = createElement( 'div', @@ -140,8 +138,7 @@ describe('flexbox_justifycontent', () => { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('spacebetween', async () => { + it('spacebetween', async () => { let div; div = createElement( 'div', diff --git a/kraken/lib/src/css/style_property.dart b/kraken/lib/src/css/style_property.dart index 9bc12ba079..273d3ee6c1 100644 --- a/kraken/lib/src/css/style_property.dart +++ b/kraken/lib/src/css/style_property.dart @@ -688,7 +688,11 @@ class CSSStyleProperty { grow = value; } else if (shrink == null && (isValueVariableFunction || CSSNumber.isNumber(value))) { shrink = value; - } else if (basis == null && ((isValueVariableFunction || CSSLength.isNonNegativeLength(value) || value == AUTO))) { + } else if (basis == null && ((isValueVariableFunction + || CSSLength.isNonNegativeLength(value) + || CSSPercentage.isPercentage(value) + || value == AUTO)) + ) { basis = value; } else { return null; diff --git a/kraken/lib/src/css/values/length.dart b/kraken/lib/src/css/values/length.dart index fd1f9bd61f..36f176200a 100644 --- a/kraken/lib/src/css/values/length.dart +++ b/kraken/lib/src/css/values/length.dart @@ -205,7 +205,7 @@ class CSSLengthValue { // The percentage height of positioned element and flex item resolves against the rendered height // of parent, mark parent as needs relayout if rendered height is not ready yet. if (isPositioned || isGrandParentFlexLayout) { - if (relativeParentHeight != null) { + if (relativeParentHeight != null) { _computedValue = value! * relativeParentHeight; } else { // Mark parent to relayout to get renderer height of parent. @@ -249,12 +249,11 @@ class CSSLengthValue { // will ensure parent exists. RenderStyle parentRenderStyle = renderStyle!.parent!; double? mainContentSize = parentRenderStyle.flexDirection == FlexDirection.row ? - parentRenderStyle.contentBoxLogicalWidth : - parentRenderStyle.contentBoxLogicalHeight; + parentContentBoxWidth : parentContentBoxHeight; if (mainContentSize != null) { _computedValue = mainContentSize * value!; } else { - // @TODO: Not supported when parent has no logical main size. + // Resolves as 0 when parent's inner main size is not specified. _computedValue = 0; } // Refer to the flex container's inner main size. diff --git a/kraken/lib/src/rendering/flex.dart b/kraken/lib/src/rendering/flex.dart index 885081fca8..0d5efbc7e8 100644 --- a/kraken/lib/src/rendering/flex.dart +++ b/kraken/lib/src/rendering/flex.dart @@ -26,10 +26,10 @@ class _RunMetrics { _remainingFreeSpace = remainingFreeSpace; // Main size extent of the run. - final double mainAxisExtent; + double mainAxisExtent; // Cross size extent of the run. - final double crossAxisExtent; + double crossAxisExtent; // Total flex grow factor in the run. double get totalFlexGrow => _totalFlexGrow; @@ -602,17 +602,14 @@ class RenderFlexLayout extends RenderLayoutBox { // Layout children to compute metrics of flex lines. List<_RunMetrics> _runMetrics = _computeRunMetrics(children); - // Compute spacing before and between each flex line. - Map _runSpacingMap = _computeRunSpacing(_runMetrics); - // Set flex container size. _setContainerSize(_runMetrics); // Adjust children size based on flex properties which may affect children size. - _adjustChildrenSize(_runMetrics, _runSpacingMap); + _adjustChildrenSize(_runMetrics); // Set children offset based on flex alignment properties. - _setChildrenOffset(_runMetrics, _runSpacingMap); + _setChildrenOffset(_runMetrics); // Set the size of scrollable overflow area for flex layout. _setMaxScrollableSize(_runMetrics); @@ -625,11 +622,8 @@ class RenderFlexLayout extends RenderLayoutBox { // Layout children to compute metrics of flex lines. List<_RunMetrics> _runMetrics = _computeRunMetrics(_positionPlaceholderChildren); - // Compute spacing before and between each flex line. - Map _runSpacingMap = _computeRunSpacing(_runMetrics); - // Set children offset based on flex alignment properties. - _setChildrenOffset(_runMetrics, _runSpacingMap); + _setChildrenOffset(_runMetrics); } // Layout children in normal flow order to calculate metrics of flex lines according to its constraints @@ -951,11 +945,12 @@ class RenderFlexLayout extends RenderLayoutBox { // https://www.w3.org/TR/css-flexbox-1/#resolve-flexible-lengths bool _resolveFlexibleLengths( _RunMetrics runMetric, + Map totalFlexFactor, double initialFreeSpace, ) { Map runChildren = runMetric.runChildren; - double totalFlexGrow = runMetric.totalFlexGrow; - double totalFlexShrink = runMetric.totalFlexShrink; + double totalFlexGrow = totalFlexFactor['flexGrow']!; + double totalFlexShrink = totalFlexFactor['flexShrink']!; bool isFlexGrow = initialFreeSpace > 0 && totalFlexGrow > 0; bool isFlexShrink = initialFreeSpace < 0 && totalFlexShrink > 0; @@ -1067,11 +1062,11 @@ class RenderFlexLayout extends RenderLayoutBox { // If total violation is positive, freeze all the items with min violations. if (flexGrow > 0) { - runMetric.totalFlexGrow -= flexGrow; + totalFlexFactor['flexGrow'] = totalFlexFactor['flexGrow']! - flexGrow; // If total violation is negative, freeze all the items with max violations. } else if (flexShrink > 0) { - runMetric.totalFlexShrink -= flexShrink; + totalFlexFactor['flexShrink'] = totalFlexFactor['flexShrink']! - flexShrink; } } } @@ -1084,10 +1079,12 @@ class RenderFlexLayout extends RenderLayoutBox { // https://www.w3.org/TR/css-flexbox-1/#resolve-flexible-lengths void _adjustChildrenSize( List<_RunMetrics> _runMetrics, - Map _runSpacingMap, ) { if (_runMetrics.isEmpty) return; + // Compute spacing before and between each flex line. + Map _runSpacingMap = _computeRunSpacing(_runMetrics); + double runBetweenSpace = _runSpacingMap['between']!; double? contentBoxLogicalWidth = renderStyle.contentBoxLogicalWidth; double? contentBoxLogicalHeight = renderStyle.contentBoxLogicalHeight; @@ -1154,15 +1151,28 @@ class RenderFlexLayout extends RenderLayoutBox { // but as we place and lay out flex items we subtract from it. metrics.remainingFreeSpace = initialFreeSpace; + Map totalFlexFactor = { + 'flexGrow': metrics.totalFlexGrow, + 'flexShrink': metrics.totalFlexShrink, + }; // Loop flex items to resolve flexible length of flex items with flex factor. - while (_resolveFlexibleLengths(metrics, initialFreeSpace)) {} + while (_resolveFlexibleLengths(metrics, totalFlexFactor, initialFreeSpace)) {} } + // Main and cross axis size of children after child layouted. + double mainAxisExtent = 0; + double crossAxisExtent = 0; + for (_RunChild runChild in runChildrenList) { RenderBox child = runChild.child; + double childMainAxisExtent = _getMainAxisExtent(child); + double childCrossAxisExtent = _getCrossAxisExtent(child); + // Non renderBoxModel and scrolling content box of renderBoxModel does not to adjust size. if (child is! RenderBoxModel || child.isScrollingContentBox) { + mainAxisExtent += childMainAxisExtent; + crossAxisExtent = math.max(crossAxisExtent, childCrossAxisExtent); continue; } @@ -1196,6 +1206,8 @@ class RenderFlexLayout extends RenderLayoutBox { bool isChildNeedsLayout = childMainSizeChanged || childCrossSizeChanged; if (!isChildNeedsLayout) { + mainAxisExtent += childMainAxisExtent; + crossAxisExtent = math.max(crossAxisExtent, childCrossAxisExtent); continue; } @@ -1211,12 +1223,23 @@ class RenderFlexLayout extends RenderLayoutBox { ); child.layout(childConstraints, parentUsesSize: true); + // Child size needs to recalculated after layouted. + childMainAxisExtent = _getMainAxisExtent(child); + childCrossAxisExtent = _getCrossAxisExtent(child); + + mainAxisExtent += childMainAxisExtent; + crossAxisExtent = math.max(crossAxisExtent, childCrossAxisExtent); + if (kProfileMode && PerformanceTiming.enabled()) { DateTime childLayoutEnd = DateTime.now(); childLayoutDuration += (childLayoutEnd.microsecondsSinceEpoch - childLayoutStart.microsecondsSinceEpoch); } } + + // Update run metrics after child size has been adjusted. + metrics.mainAxisExtent = mainAxisExtent; + metrics.crossAxisExtent = crossAxisExtent; } } @@ -1674,10 +1697,12 @@ class RenderFlexLayout extends RenderLayoutBox { // Set children offset based on alignment properties. void _setChildrenOffset( List<_RunMetrics> _runMetrics, - Map _runSpacingMap, ) { if (_runMetrics.isEmpty) return; + // Compute spacing before and between each flex line. + Map _runSpacingMap = _computeRunSpacing(_runMetrics); + double runLeadingSpace = _runSpacingMap['leading']!; double runBetweenSpace = _runSpacingMap['between']!; // Cross axis offset of each flex line. @@ -1700,18 +1725,10 @@ class RenderFlexLayout extends RenderLayoutBox { final double runCrossAxisExtent = metrics.crossAxisExtent; final double runBaselineExtent = metrics.baselineExtent; final double totalFlexGrow = metrics.totalFlexGrow; - final double totalFlexShrink = metrics.totalFlexShrink; final Map runChildren = metrics.runChildren; final List<_RunChild> runChildrenList = runChildren.values.toList(); + final double remainingSpace = mainAxisContentSize - runMainAxisExtent; - final double mainContentSizeDelta = - mainAxisContentSize - runMainAxisExtent; - bool isFlexGrow = mainContentSizeDelta > 0 && totalFlexGrow > 0; - bool isFlexShrink = mainContentSizeDelta < 0 && totalFlexShrink > 0; - - // If flex grow or flex shrink exists, remaining space should be zero. - final double remainingSpace = - (isFlexGrow || isFlexShrink) ? 0 : mainContentSizeDelta; late double leadingSpace; late double betweenSpace; diff --git a/kraken/lib/src/rendering/flow.dart b/kraken/lib/src/rendering/flow.dart index 494fc9795b..cb168b0417 100644 --- a/kraken/lib/src/rendering/flow.dart +++ b/kraken/lib/src/rendering/flow.dart @@ -248,7 +248,7 @@ class RenderFlowLayout extends RenderLayoutBox { _setChildrenOffset(_runMetrics); // Set the size of scrollable overflow area for flow layout. - _setMaxScrollableSize(_runMetrics, children); + _setMaxScrollableSize(_runMetrics); } // Layout children in normal flow order to calculate metrics of lines according to its constraints @@ -874,7 +874,7 @@ class RenderFlowLayout extends RenderLayoutBox { // Set the size of scrollable overflow area for flow layout. // https://drafts.csswg.org/css-overflow-3/#scrollable - void _setMaxScrollableSize(List<_RunMetrics> runMetrics, List children) { + void _setMaxScrollableSize(List<_RunMetrics> runMetrics) { // Scrollable main size collection of each line. List scrollableMainSizeOfLines = []; // Scrollable cross size collection of each line. From e17431eebf5e4e91c38a7802e622699ebfbcc7b8 Mon Sep 17 00:00:00 2001 From: "zhanwen.zw" Date: Thu, 7 Apr 2022 11:43:33 +0800 Subject: [PATCH 2/7] fix: inflate constraints to bypass flutter layout optimazation --- .../specs/css/css-flexbox/flex-minimum.ts | 2 +- kraken/lib/src/rendering/flex.dart | 25 +++++++++++++------ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/integration_tests/specs/css/css-flexbox/flex-minimum.ts b/integration_tests/specs/css/css-flexbox/flex-minimum.ts index aa44960760..021eef7b9b 100644 --- a/integration_tests/specs/css/css-flexbox/flex-minimum.ts +++ b/integration_tests/specs/css/css-flexbox/flex-minimum.ts @@ -1292,7 +1292,7 @@ describe('flex-minimum', () => { (testFlexItemOverlappingGreen = createElement('img', { id: 'test-flex-item-overlapping-green', src: - 'https://kraken.oss-cn-hangzhou.aliyuncs.com/images/200x200-green.png', + 'assets/200x200-green.png', style: { 'max-height': '100px', 'box-sizing': 'border-box', diff --git a/kraken/lib/src/rendering/flex.dart b/kraken/lib/src/rendering/flex.dart index 0d5efbc7e8..da233007a1 100644 --- a/kraken/lib/src/rendering/flex.dart +++ b/kraken/lib/src/rendering/flex.dart @@ -1159,9 +1159,8 @@ class RenderFlexLayout extends RenderLayoutBox { while (_resolveFlexibleLengths(metrics, totalFlexFactor, initialFreeSpace)) {} } - // Main and cross axis size of children after child layouted. + // Main axis size of children after child layouted. double mainAxisExtent = 0; - double crossAxisExtent = 0; for (_RunChild runChild in runChildrenList) { RenderBox child = runChild.child; @@ -1172,7 +1171,6 @@ class RenderFlexLayout extends RenderLayoutBox { // Non renderBoxModel and scrolling content box of renderBoxModel does not to adjust size. if (child is! RenderBoxModel || child.isScrollingContentBox) { mainAxisExtent += childMainAxisExtent; - crossAxisExtent = math.max(crossAxisExtent, childCrossAxisExtent); continue; } @@ -1207,7 +1205,6 @@ class RenderFlexLayout extends RenderLayoutBox { if (!isChildNeedsLayout) { mainAxisExtent += childMainAxisExtent; - crossAxisExtent = math.max(crossAxisExtent, childCrossAxisExtent); continue; } @@ -1221,14 +1218,28 @@ class RenderFlexLayout extends RenderLayoutBox { childFlexedMainSize, childStretchedCrossSize, ); - child.layout(childConstraints, parentUsesSize: true); + // @HACK: Inflate constraints cause Flutter will skip child layout if + // its constraints not changed between two layouts. + if (child.constraints == childConstraints) { + childConstraints = BoxConstraints( + minWidth: childConstraints.maxWidth != double.infinity + ? childConstraints.maxWidth + : 0, + maxWidth: double.infinity, + minHeight: childConstraints.maxHeight != double.infinity + ? childConstraints.maxHeight + : 0, + maxHeight: double.infinity, + ); + } + + child.layout(childConstraints, parentUsesSize: true); // Child size needs to recalculated after layouted. childMainAxisExtent = _getMainAxisExtent(child); childCrossAxisExtent = _getCrossAxisExtent(child); mainAxisExtent += childMainAxisExtent; - crossAxisExtent = math.max(crossAxisExtent, childCrossAxisExtent); if (kProfileMode && PerformanceTiming.enabled()) { DateTime childLayoutEnd = DateTime.now(); @@ -1236,10 +1247,8 @@ class RenderFlexLayout extends RenderLayoutBox { childLayoutStart.microsecondsSinceEpoch); } } - // Update run metrics after child size has been adjusted. metrics.mainAxisExtent = mainAxisExtent; - metrics.crossAxisExtent = crossAxisExtent; } } From 57fa7e0f7c2bd50b6230e615136ca89c8e70b894 Mon Sep 17 00:00:00 2001 From: "zhanwen.zw" Date: Thu, 7 Apr 2022 12:18:05 +0800 Subject: [PATCH 3/7] fix: margin auto alignment fail on flex item --- .../flexbox_justifycontent-flex.ts.3d1b1d2e1.png | Bin 0 -> 5076 bytes .../css-flexbox/flexbox_justifycontent-flex.ts | 3 +-- .../specs/css/css-position/absolute-non.ts | 2 +- kraken/lib/src/rendering/flex.dart | 5 ++--- 4 files changed, 4 insertions(+), 6 deletions(-) create mode 100644 integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent-flex.ts.3d1b1d2e1.png diff --git a/integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent-flex.ts.3d1b1d2e1.png b/integration_tests/snapshots/css/css-flexbox/flexbox_justifycontent-flex.ts.3d1b1d2e1.png new file mode 100644 index 0000000000000000000000000000000000000000..a6510a74743e40a0e6be986395b887631241de6d GIT binary patch literal 5076 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 { await snapshot(); }); - // @TODO: Percentage of flex-basis not working. - xit('start', async () => { + it('start', async () => { let div; div = createElement( 'div', diff --git a/integration_tests/specs/css/css-position/absolute-non.ts b/integration_tests/specs/css/css-position/absolute-non.ts index a3cc6d6d08..922cfe32ce 100644 --- a/integration_tests/specs/css/css-position/absolute-non.ts +++ b/integration_tests/specs/css/css-position/absolute-non.ts @@ -463,7 +463,7 @@ describe('absolute-non', () => { BODY.appendChild(p); BODY.appendChild(div); - await snapshot(); + await snapshot(0.1); }); it('replaced-height-006', async () => { let p; diff --git a/kraken/lib/src/rendering/flex.dart b/kraken/lib/src/rendering/flex.dart index da233007a1..7f857f9d5d 100644 --- a/kraken/lib/src/rendering/flex.dart +++ b/kraken/lib/src/rendering/flex.dart @@ -1733,7 +1733,6 @@ class RenderFlexLayout extends RenderLayoutBox { final double runMainAxisExtent = metrics.mainAxisExtent; final double runCrossAxisExtent = metrics.crossAxisExtent; final double runBaselineExtent = metrics.baselineExtent; - final double totalFlexGrow = metrics.totalFlexGrow; final Map runChildren = metrics.runChildren; final List<_RunChild> runChildrenList = runChildren.values.toList(); final double remainingSpace = mainAxisContentSize - runMainAxisExtent; @@ -1934,7 +1933,7 @@ class RenderFlexLayout extends RenderLayoutBox { if (_isHorizontalFlexDirection) { horizontalRemainingSpace = mainAxisRemainingSpace; verticalRemainingSpace = crossAxisRemainingSpace; - if (totalFlexGrow == 0 && marginLeft.isAuto) { + if (marginLeft.isAuto) { if (marginRight.isAuto) { childMainPosition += (horizontalRemainingSpace / mainAxisMarginAutoChildrenCount) / 2; @@ -1956,7 +1955,7 @@ class RenderFlexLayout extends RenderLayoutBox { } else { horizontalRemainingSpace = crossAxisRemainingSpace; verticalRemainingSpace = mainAxisRemainingSpace; - if (totalFlexGrow == 0 && marginTop.isAuto) { + if (marginTop.isAuto) { if (marginBottom.isAuto) { childMainPosition += (verticalRemainingSpace / mainAxisMarginAutoChildrenCount) / 2; From 29bbb8f62ca9bfef674abdd027d75803647eca0c Mon Sep 17 00:00:00 2001 From: "zhanwen.zw" Date: Thu, 7 Apr 2022 14:32:44 +0800 Subject: [PATCH 4/7] test: add tests --- .../css-flexbox/flex_basis.ts.5449c79e1.png | Bin 0 -> 4893 bytes .../css-flexbox/flex_basis.ts.7d3ea9221.png | Bin 0 -> 4893 bytes .../specs/css/css-flexbox/flex_basis.ts | 112 ++++++++++++++++++ kraken/lib/src/rendering/flex.dart | 10 +- 4 files changed, 116 insertions(+), 6 deletions(-) create mode 100644 integration_tests/snapshots/css/css-flexbox/flex_basis.ts.5449c79e1.png create mode 100644 integration_tests/snapshots/css/css-flexbox/flex_basis.ts.7d3ea9221.png diff --git a/integration_tests/snapshots/css/css-flexbox/flex_basis.ts.5449c79e1.png b/integration_tests/snapshots/css/css-flexbox/flex_basis.ts.5449c79e1.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c930d597ad1cede3ffe6031bb38a4d33dd024d GIT binary patch literal 4893 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 { await snapshot(); }); + + it('should work with px', async () => { + let div; + div = createElement( + 'div', + { + style: { + background: 'blue', + height: '100px', + width: '200px', + display: 'flex', + }, + }, + [ + createElement( + 'span', + { + style: { + background: 'yellow', + width: '50px', + 'max-width': '60px', + display: 'inline-block', + flexBasis: '0', + 'box-sizing': 'border-box', + }, + }, + [createText(`one`)] + ), + createElement( + 'span', + { + style: { + background: 'pink', + width: '50px', + flexBasis: '40px', + }, + }, + [createText(`two`)] + ), + createElement( + 'span', + { + style: { + background: 'lightblue', + width: '50px', + flexBasis: '60px', + }, + }, + [createText(`three`)] + ), + ] + ); + BODY.appendChild(div); + + await snapshot(); + }); + + it('should work with percentage', async () => { + let div; + div = createElement( + 'div', + { + style: { + background: 'blue', + height: '100px', + width: '200px', + display: 'flex', + }, + }, + [ + createElement( + 'span', + { + style: { + background: 'yellow', + width: '50px', + 'max-width': '60px', + display: 'inline-block', + flexBasis: '0%', + 'box-sizing': 'border-box', + }, + }, + [createText(`one`)] + ), + createElement( + 'span', + { + style: { + background: 'pink', + width: '50px', + flexBasis: '20%', + }, + }, + [createText(`two`)] + ), + createElement( + 'span', + { + style: { + background: 'lightblue', + width: '50px', + flexBasis: '30%', + }, + }, + [createText(`three`)] + ), + ] + ); + BODY.appendChild(div); + + await snapshot(); + }); }); diff --git a/kraken/lib/src/rendering/flex.dart b/kraken/lib/src/rendering/flex.dart index 7f857f9d5d..2eacb17fa2 100644 --- a/kraken/lib/src/rendering/flex.dart +++ b/kraken/lib/src/rendering/flex.dart @@ -1159,14 +1159,13 @@ class RenderFlexLayout extends RenderLayoutBox { while (_resolveFlexibleLengths(metrics, totalFlexFactor, initialFreeSpace)) {} } - // Main axis size of children after child layouted. + // Main axis size of children after child layouted. double mainAxisExtent = 0; for (_RunChild runChild in runChildrenList) { RenderBox child = runChild.child; double childMainAxisExtent = _getMainAxisExtent(child); - double childCrossAxisExtent = _getCrossAxisExtent(child); // Non renderBoxModel and scrolling content box of renderBoxModel does not to adjust size. if (child is! RenderBoxModel || child.isScrollingContentBox) { @@ -1219,7 +1218,7 @@ class RenderFlexLayout extends RenderLayoutBox { childStretchedCrossSize, ); - // @HACK: Inflate constraints cause Flutter will skip child layout if + // Inflate constraints cause Flutter will skip child layout if // its constraints not changed between two layouts. if (child.constraints == childConstraints) { childConstraints = BoxConstraints( @@ -1235,10 +1234,9 @@ class RenderFlexLayout extends RenderLayoutBox { } child.layout(childConstraints, parentUsesSize: true); - // Child size needs to recalculated after layouted. - childMainAxisExtent = _getMainAxisExtent(child); - childCrossAxisExtent = _getCrossAxisExtent(child); + // Child main size needs to recalculated after layouted. + childMainAxisExtent = _getMainAxisExtent(child); mainAxisExtent += childMainAxisExtent; if (kProfileMode && PerformanceTiming.enabled()) { From 46233b85d99a4f3b2bdaba0a5ae896cf91f7d0bc Mon Sep 17 00:00:00 2001 From: "zhanwen.zw" Date: Thu, 7 Apr 2022 15:18:13 +0800 Subject: [PATCH 5/7] fix: clamp flex-basis by min and max size --- .../css-flexbox/flex_basis.ts.c30741e31.png | Bin 0 -> 4909 bytes .../multiline-min.ts.e0bfeac01.png | Bin 0 -> 2619 bytes .../specs/css/css-flexbox/flex_basis.ts | 58 ++++++++++++++++++ .../specs/css/css-flexbox/multiline-min.ts | 3 +- kraken/lib/src/rendering/flex.dart | 25 +++++++- 5 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 integration_tests/snapshots/css/css-flexbox/flex_basis.ts.c30741e31.png create mode 100644 integration_tests/snapshots/css/css-flexbox/multiline-min.ts.e0bfeac01.png diff --git a/integration_tests/snapshots/css/css-flexbox/flex_basis.ts.c30741e31.png b/integration_tests/snapshots/css/css-flexbox/flex_basis.ts.c30741e31.png new file mode 100644 index 0000000000000000000000000000000000000000..51eef81858ea713c13118b3fdc99bfe9a0447757 GIT binary patch literal 4909 zcmeHL>01)m9;T^j9rHF;W}0+U^ENJwOQNYbtwxzvR_03Of|-g)Dk#X=_>jWW15O(81cf{H?7U~ICC&3*3wa6fpyoag-BFX#6@@9%lvbMBt@_chwM zb0Yu%FoGUGauxts6$=1-_2c@r%aw+m6SU=R73!?-AwX@P#q9E74eAi|-1_B(T_2SL z0DQ}Z9yxdpP5#KwD2hnA-1*6NRY_QT(*EOTwh|9L`LO%j`tA0nQ+whD&K)@&8ESuN zOZA0cPj~!`u6lel6m;gy&^~%@azkmz+1=|`tvPtl_2*MLhjM;c4{a&`1>c4w-gYm^ zDq1%!ui!{pXUIy4Iw6K7)XkQ(V~L{GfJ^)}JAbn`=)0$o|9Ry8)nKrY`1BF)cy#2K_tJLoP*0PQvI9jaLu;R(U!r0?nl` zuIeZ88!vs@bx+nv9c}vuI<}XSyNzSYEb^-$ z&dg~KFI_AY5{V^t-1sylpVKO!_&uPWL-|zPqCOTbpF$23Y19S=r8b%qs_(+uzHa~qP;V#9mQfltmAg${h|)W;fzJaT zovJK{f2Pj9)A=$#;O^EWo&_=!!+Zw1j zoxIS_35MJF?kXXthR8~rYgkzpuAh&p`MXm62o?>3RUQ&!WxtDUBI)QoX&0suv}wS*?5A*Xf<>TW2s|91`Do1nTFB79ejq~4D_aF&hpdX`Vmrc7uB-(Och&rN{Yc(dc~b{)N6Pilee1TB*72_;r-bJ z!~Z1Z*OPG79@DFOpkxjo@YCmmbIU$%+st+Gpj3$MLV?c1(7 z*64=G(wGs^Tg+&q?bJwjOmt^fwly>+JmXYT`rIwaVjetZG@*IA2LUVc$>?~f7E)P} zB1T}^s7;_ja!RdL&um`WS@;MSfxDPUQ4&Ycz2r7oA$Oyc&`PxK=gT|P)%}$vTdECJ zrJz@~rr4=X4C&|;rfYB2ohE^DfA-8{B_1u3qadjC%2(ZTSzkbAW-PCCIFV#*nG%)Q zrssuO8wbngstRGC$h995ggB)QSU|Q&`t5yORtX8Ke zcqz^HZSsPi@b7(~vd?Vu!h!2Fx>xHWRq7k^XDW!mnMdNh&$C1#B%EwAd?9~Pi|O=U>JEeQO~;}X%+AOqq(+H&cEJM zo-IKv^R&Y)O?T1UBUzQg-(tnZQIybtOxeIBtoJfLavCnnub`TRK;n7^<6rR=hvD66 zBdOOCNd^{X(z5lN;h4o1ByZxX3GjszfK`!i>$k(}Vw>urU75YvtSF`AxnNd2U7m7vM;s1RxQE46_KQ1aOcVq z4YOnK<2ZAT;uj7q>1h0m1F?mskwGlYyusI3IM8fSb|#V?Lwpr;zH|FXd0mf4h++&1e}6+L zf_Nsf6Jp&5mC@l|E}IY)U%H5vs7`g5xz!g#lShyovIi$r@Sx|x{&JU0If)pW2rYnU z48t8s#Jx64^Ca^1vobE8LdIt%kKg97eJaW6bDABmcbWuInFc<$udjm}L5Z%OiH6Cv zrcvXRG@+d#^Kt}}{b0l5>QsT%$x?^znSLMeI)6T@cSqAOWNBXWnwqJhLg-Lj+-tZgW`OWO=>j>xod9?n-9Tlw>4LYQ^&T^plmr-GF<)%|l0F$MmH! zDbjEm^&eY-x25&oX6YWWAl+r7L?XP+tt=ubv9>k-g5#^P5$yEuX;I^I9@w#lMkJx_ zW5UghGM~kVLLxP+QMT-_v+uHfF8}qo=G~BOs0(~A+tRZIk)B{%sfx9b)q!zRos1#x z??qBI7YV{_m}W++Q1tiQOU29&xPdapEe{vMzQ@eunR_4j(k3J@)x4>$0*^Uc;H|Sd zymW#?+Vkw8eFTh;E`71At+Xg;LB(RZAba=J?F8hL|AvG%-v zyv2~U?)gHkr%U3ZDE>f<#LBzNz#T#ivf?@XU`E{e&OCEN4*Qc`^@Z9V%Du$?To|P2 zlZhKJ_1fsr{Ic7WIxsw|*oX%WlVIE+jBT!XV+DQVJUX< z4B-HR8jh3>1_sWjo-U3d6?5L+b@Y1UAmMiLoO8?u=@(Ir++{-TT+4 zu>a$>2Z29MzW!VLRr$l+ZNC_QXvaW|ftqGo>&bDTN-v{9qmivc2tsZ0rQKdZlFYhZoU@&;E98SYC)CgQN|v zdk@3x7DF>m%T8_-zvT!qxuE(uYnP|RF^ezflkdp?GGM5ouE{UVaTjq12lYKjh1FnlmQZL&baWvExNQkbDP#n-7p12u?!%{lw`ncmqG&my)N z7<(`Ar2@=w!{W4Mvs;pTod4S#`@4{z`GZdQ9X&$6Cf1#M%~>MOv%=FZG|{0_rhj){ zB$!T9CkrT?LN(~J@1e!{yyox48Rs2Cl|f_{s7pAts&YsQGYq3qv5P4`$^F$<=1> zsNBz?L$%a(T%!G7WzTPCdA0|U>vqJxKy?G6pukyPte9T=|9|g;vfcO2e`5S&hT-CO zcB(89=LiG=YAPA!!76~!kQfaK{3YsW3K_^0GGFp_<|&TIY++ynkipZ{&t;ucLK6TA C=(*bf literal 0 HcmV?d00001 diff --git a/integration_tests/specs/css/css-flexbox/flex_basis.ts b/integration_tests/specs/css/css-flexbox/flex_basis.ts index 67d04254b1..738c96c66b 100644 --- a/integration_tests/specs/css/css-flexbox/flex_basis.ts +++ b/integration_tests/specs/css/css-flexbox/flex_basis.ts @@ -185,4 +185,62 @@ describe('flexbox flex-basis', () => { await snapshot(); }); + + it('should work with min and max size', async () => { + let div; + div = createElement( + 'div', + { + style: { + background: 'blue', + height: '100px', + width: '200px', + display: 'flex', + }, + }, + [ + createElement( + 'span', + { + style: { + background: 'yellow', + width: '50px', + 'max-width': '60px', + display: 'inline-block', + flexBasis: '0', + minWidth: '50px', + 'box-sizing': 'border-box', + }, + }, + [createText(`one`)] + ), + createElement( + 'span', + { + style: { + background: 'pink', + width: '50px', + flexBasis: '50px', + }, + }, + [createText(`two`)] + ), + createElement( + 'span', + { + style: { + background: 'lightblue', + width: '50px', + flexBasis: '100px', + maxWidth: '50px', + }, + }, + [createText(`three`)] + ), + ] + ); + BODY.appendChild(div); + + await snapshot(); + }); }); diff --git a/integration_tests/specs/css/css-flexbox/multiline-min.ts b/integration_tests/specs/css/css-flexbox/multiline-min.ts index 12b17cf973..6e1db1bfa8 100644 --- a/integration_tests/specs/css/css-flexbox/multiline-min.ts +++ b/integration_tests/specs/css/css-flexbox/multiline-min.ts @@ -1,7 +1,6 @@ /*auto generated*/ describe('multiline-min', () => { - // @TODO: flexg-grow calculation wrong when flex-basis with max-width. - xit('max', async () => { + it('max', async () => { let log; let flexOne; let flexOne_1; diff --git a/kraken/lib/src/rendering/flex.dart b/kraken/lib/src/rendering/flex.dart index 2eacb17fa2..4f43d5f04e 100644 --- a/kraken/lib/src/rendering/flex.dart +++ b/kraken/lib/src/rendering/flex.dart @@ -284,7 +284,28 @@ class RenderFlexLayout extends RenderLayoutBox { double? _getFlexBasis(RenderBox child) { if (child is RenderBoxModel && child.renderStyle.flexBasis != CSSLengthValue.auto) { - return child.renderStyle.flexBasis?.computedValue; + double? flexBasis = child.renderStyle.flexBasis?.computedValue; + + // Clamp flex-basis by min and max size. + if (flexBasis != null) { + double? minWidth = child.renderStyle.minWidth.isAuto + ? null : child.renderStyle.minWidth.computedValue; + double? minHeight = child.renderStyle.minHeight.isAuto + ? null : child.renderStyle.minHeight.computedValue; + double? maxWidth = child.renderStyle.maxWidth.isNone + ? null : child.renderStyle.maxWidth.computedValue; + double? maxHeight = child.renderStyle.maxHeight.isNone + ? null : child.renderStyle.maxHeight.computedValue; + double? minMainSize = _isHorizontalFlexDirection + ? minWidth : minHeight; + double? maxMainSize = _isHorizontalFlexDirection + ? maxWidth : maxHeight; + + if (minMainSize != null && flexBasis < minMainSize) flexBasis = minMainSize; + if (maxMainSize != null && flexBasis > maxMainSize) flexBasis = maxMainSize; + } + + return flexBasis; } return null; } @@ -1064,7 +1085,7 @@ class RenderFlexLayout extends RenderLayoutBox { if (flexGrow > 0) { totalFlexFactor['flexGrow'] = totalFlexFactor['flexGrow']! - flexGrow; - // If total violation is negative, freeze all the items with max violations. + // If total violation is negative, freeze all the items with max violations. } else if (flexShrink > 0) { totalFlexFactor['flexShrink'] = totalFlexFactor['flexShrink']! - flexShrink; } From 0096c57ad8386867663c3f187db2a33e56b102af Mon Sep 17 00:00:00 2001 From: openkraken-bot Date: Thu, 14 Apr 2022 10:49:06 +0000 Subject: [PATCH 6/7] Committing clang-format changes --- bridge/foundation/logging.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/bridge/foundation/logging.cc b/bridge/foundation/logging.cc index 7053bbfb1e..cbfd79544e 100644 --- a/bridge/foundation/logging.cc +++ b/bridge/foundation/logging.cc @@ -93,7 +93,6 @@ void pipeMessageToInspector(JSGlobalContextRef ctx, const std::string message, c }; #endif - void printLog(int32_t contextId, std::stringstream& stream, std::string level, void* ctx) { MessageLevel _log_level = MessageLevel::Info; switch (level[0]) { @@ -128,7 +127,6 @@ void printLog(int32_t contextId, std::stringstream& stream, std::string level, v if (kraken::getDartMethod()->onJsLog != nullptr) { kraken::getDartMethod()->onJsLog(contextId, static_cast(_log_level), stream.str().c_str()); } - } } // namespace foundation From eb00274f853a24d00a1916b624a919565bc348f9 Mon Sep 17 00:00:00 2001 From: "zhanwen.zw" Date: Thu, 14 Apr 2022 18:57:56 +0800 Subject: [PATCH 7/7] chore: trigger ci --- integration_tests/specs/css/css-flexbox/flex_basis.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/integration_tests/specs/css/css-flexbox/flex_basis.ts b/integration_tests/specs/css/css-flexbox/flex_basis.ts index 738c96c66b..a0ed5d5dce 100644 --- a/integration_tests/specs/css/css-flexbox/flex_basis.ts +++ b/integration_tests/specs/css/css-flexbox/flex_basis.ts @@ -126,7 +126,6 @@ describe('flexbox flex-basis', () => { ] ); BODY.appendChild(div); - await snapshot(); });