From ee12da274ea30d2ee7048933377dad4af3c15050 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E7=86=B1?= Date: Wed, 30 Apr 2025 21:25:36 +0800 Subject: [PATCH] refactor(sheets-conditional-formatting): migrate styles from LESS to Tailwind CSS (#5133) Co-authored-by: GitHub Actions --- common/shared/package.json | 6 +- ...witching-render-unit-ci-chromium-linux.png | Bin 52021 -> 52024 bytes .../dark-mode-ci-chromium-linux.png | Bin 53046 -> 53040 bytes ...fault-sheet-fullpage-ci-chromium-linux.png | Bin 53276 -> 53280 bytes examples/package.json | 3 +- package.json | 4 +- .../action-recorder/package.json | 2 +- packages-experimental/debugger/package.json | 2 +- .../sheets-source-binding/package.json | 2 +- .../uni-docs-ui/package.json | 2 +- .../uni-formula-ui/package.json | 2 +- .../uni-formula/package.json | 2 +- .../uni-sheets-ui/package.json | 2 +- .../uni-slides-ui/package.json | 2 +- packages-experimental/uniui/package.json | 2 +- packages/core/package.json | 2 +- packages/data-validation/package.json | 2 +- packages/design/package.json | 2 +- packages/docs-drawing-ui/package.json | 2 +- packages/docs-drawing/package.json | 2 +- packages/docs-hyper-link-ui/package.json | 2 +- packages/docs-hyper-link/package.json | 2 +- packages/docs-mention-ui/package.json | 2 +- packages/docs-quick-insert-ui/package.json | 2 +- packages/docs-thread-comment-ui/package.json | 2 +- packages/docs-ui/package.json | 2 +- .../docs-ui/src/views/count-bar/CountBar.tsx | 2 +- packages/docs/package.json | 2 +- packages/drawing-ui/package.json | 2 +- packages/drawing/package.json | 2 +- packages/engine-formula/package.json | 2 +- packages/engine-numfmt/package.json | 2 +- packages/engine-render/package.json | 2 +- packages/find-replace/package.json | 2 +- packages/network/package.json | 2 +- packages/rpc-node/package.json | 2 +- packages/rpc/package.json | 2 +- .../package.json | 3 +- .../index.module.less | 18 - .../conditional-style-editor/index.tsx | 24 +- .../src/components/panel/index.module.less | 45 - .../src/components/panel/index.tsx | 7 +- .../components/panel/rule-edit/ColorScale.tsx | 167 +- .../components/panel/rule-edit/DataBar.tsx | 151 +- .../components/panel/rule-edit/Formula.tsx | 38 +- .../panel/rule-edit/HighlightCell.tsx | 73 +- .../components/panel/rule-edit/IconSet.tsx | 168 +- .../src/components/panel/rule-edit/Rank.tsx | 47 +- .../panel/rule-edit/index.module.less | 169 -- .../src/components/panel/rule-edit/index.tsx | 14 +- .../src/components/panel/rule-edit/styles.ts | 17 + .../src/components/panel/rule-edit/type.ts | 2 +- .../panel/rule-list/index.module.less | 137 -- .../src/components/panel/rule-list/index.tsx | 165 +- .../src/components/preview/index.module.less | 9 - .../src/components/preview/index.tsx | 60 +- .../package.json | 4 +- .../sheets-crosshair-highlight/package.json | 2 +- .../sheets-data-validation-ui/package.json | 2 +- packages/sheets-data-validation/package.json | 2 +- packages/sheets-drawing-ui/package.json | 2 +- packages/sheets-drawing/package.json | 2 +- packages/sheets-filter-ui/package.json | 2 +- packages/sheets-filter/package.json | 2 +- packages/sheets-find-replace/package.json | 2 +- packages/sheets-formula-ui/package.json | 2 +- packages/sheets-formula/package.json | 2 +- packages/sheets-graphics/package.json | 2 +- packages/sheets-hyper-link-ui/package.json | 2 +- packages/sheets-hyper-link/package.json | 2 +- packages/sheets-note-ui/package.json | 12 +- packages/sheets-note-ui/src/global.css | 2 + packages/sheets-note-ui/src/index.ts | 2 + packages/sheets-note-ui/src/views/note.tsx | 14 +- packages/sheets-note/package.json | 4 +- packages/sheets-note/src/plugin.ts | 4 +- packages/sheets-numfmt-ui/package.json | 2 +- packages/sheets-numfmt/package.json | 2 +- packages/sheets-sort-ui/package.json | 2 +- packages/sheets-sort/package.json | 2 +- packages/sheets-table-ui/package.json | 2 +- packages/sheets-table/package.json | 2 +- .../sheets-thread-comment-ui/package.json | 2 +- packages/sheets-thread-comment/package.json | 2 +- packages/sheets-ui/package.json | 2 +- .../src/views/count-bar/CountBar.tsx | 5 +- .../src/views/sheet-bar/SheetBar.tsx | 16 +- .../src/views/sheet-bar/index.module.less | 31 - .../views/sheet-container/SheetContainer.tsx | 2 +- .../status-bar/CopyableStatisticItem.tsx | 15 +- .../src/views/status-bar/StatusBar.tsx | 25 +- .../src/views/status-bar/index.module.less | 93 - packages/sheets-zen-editor/package.json | 2 +- packages/sheets/package.json | 2 +- packages/slides-ui/package.json | 2 +- packages/slides/package.json | 2 +- packages/telemetry/package.json | 2 +- packages/thread-comment-ui/package.json | 2 +- packages/thread-comment/package.json | 2 +- packages/ui/package.json | 2 +- packages/ui/src/components/slider/Slider.tsx | 5 +- packages/uniscript/package.json | 2 +- packages/watermark/package.json | 2 +- pnpm-lock.yaml | 1703 ++++------------- 104 files changed, 991 insertions(+), 2399 deletions(-) delete mode 100644 packages/sheets-conditional-formatting-ui/src/components/conditional-style-editor/index.module.less delete mode 100644 packages/sheets-conditional-formatting-ui/src/components/panel/index.module.less delete mode 100644 packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/index.module.less create mode 100644 packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/styles.ts delete mode 100644 packages/sheets-conditional-formatting-ui/src/components/panel/rule-list/index.module.less delete mode 100644 packages/sheets-conditional-formatting-ui/src/components/preview/index.module.less create mode 100644 packages/sheets-note-ui/src/global.css delete mode 100644 packages/sheets-ui/src/views/sheet-bar/index.module.less delete mode 100644 packages/sheets-ui/src/views/status-bar/index.module.less diff --git a/common/shared/package.json b/common/shared/package.json index 73ccf8e57a..71cd67cfc7 100644 --- a/common/shared/package.json +++ b/common/shared/package.json @@ -24,7 +24,7 @@ "univer-cli": "bin/index.ts" }, "dependencies": { - "@typescript-eslint/parser": "^8.31.0", + "@typescript-eslint/parser": "^8.31.1", "@vitejs/plugin-react": "^4.4.1", "@vitejs/plugin-vue": "^5.2.3", "@vitest/coverage-istanbul": "^3.1.2", @@ -38,7 +38,7 @@ "tailwind-scrollbar": "^3.1.0", "tailwindcss": "^3.4.17", "tailwindcss-rem-to-px": "^0.1.1", - "vite": "^6.3.3", + "vite": "^6.3.4", "vite-plugin-dts": "^4.5.3", "vite-plugin-external": "^6.2.1", "vitest": "^3.1.2" @@ -46,7 +46,7 @@ "devDependencies": { "@types/fs-extra": "^11.0.4", "@univerjs/icons": "^0.3.24", - "@univerjs/icons-svg": "^0.3.22", + "@univerjs/icons-svg": "^0.3.24", "@univerjs/protocol": "0.1.45" } } diff --git a/e2e/visual-comparison/sheets/sheets-switching-render-unit.spec.ts-snapshots/switching-render-unit-ci-chromium-linux.png b/e2e/visual-comparison/sheets/sheets-switching-render-unit.spec.ts-snapshots/switching-render-unit-ci-chromium-linux.png index 15b33a296e8bb5cdaa298182bbe3e15068ab05bf..6468716fb041d1d7fde8aa0f3ea6021b8d2b032c 100644 GIT binary patch delta 19164 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 XL+r8mvh2>ou{@Gikjj*J@&11SZCp=| diff --git a/e2e/visual-comparison/sheets/sheets-visual-comparison.spec.ts-snapshots/dark-mode-ci-chromium-linux.png b/e2e/visual-comparison/sheets/sheets-visual-comparison.spec.ts-snapshots/dark-mode-ci-chromium-linux.png index 96ee659d06ab59748377b988fb2d912a3ff449a6..d6a0e89299d4a4ac4a385a86695979de943956a1 100644 GIT binary patch delta 17267 zcmajG2UJr{*ESsVRZUl&T`VDMb(v6r@*0Kx(9y5DqE`B1J)(lt`D}1B4Pp z0Rib!1BBio)PxX{{0G7NeV%`P-}j#7a;X?2q!5^pzRMr`V zeMj>|K9Kigyrak!p&}9Vx{8DIv8@qPS&D8~wtkL)=hqZ-nN9ODCi`B;wI?Sss%Z1d zMur^9UzES_So0rqWKuNBvMy~n{*{jFF1>%87xm|cRRQhkq6m@ZiH*u_i{ic-eY0sX zb-~(7YslU;=Zxy3AA3VD3A`96Oy=^BcdWLF)Yg3z_Ri z>C#BQ=r_S|R&TDi;^e9}+r$*;M5=!ONIJ3KVl2R{tE#FeTWcLfOVzdf`+sLE%-^203qfBOMphaw|_ zZeNk7sm_|2nUPoCzYp2AzV0X1o2nfCA9o^Y!tMZCt3LLtCh=q zsr3%BbSX~^BWgcq@_6lIz9D8H_Qs7HjxY3kItw#;irwVixaYNIcDFrz7(g$t*Ogj5 zEZzAnk|v0iGw3#hVqD{xtX&=Ep!PUOOHGV>?Qf^J>g zUxd2^ZMNCAT4Ed2n6eCwiHdUY8r1Y%hgv82dOv>Lg>qYruBLcX6Fp>i=87zuICN^X zw|>QyH!_{y@BbzKoek}(U=^^m9!RB-3Hd17<)N~0u=ROejkw!HJ~N6lILqrPC?WkD!I0nEPm5=0HImLyl%KYD^$wj>}5 zyE6m2g3D|>c|otEZFXas7ELAR;LubLF8>qla&k#P-NB}gXs91qU3lA@iSTV~&P*tF zo^BD~&jHOZJNr1-uUH9}NbP=OmxpxY+K8RsvZSS+=BG6KT~X<=vWK@9ata1NTV7TU zvjNmSr?$`%~vKUnqB_u ziXJ;maQ}Bd$1iqFb?=#l9D$oY+p7;XqN1Z$w6xF4e;s{5b8^2;;RTZ%h%aHp1L3pY z%vgV97J+Wgg8ELfMny$&`De3x@IR6~7)>w_9F5E0E}wjlZd@2a`~@$ug75SoRxsr_ zps0z%g|u95;?yu*P`z$TmzPjkZ=K)JmbCK&d@-Sawt3ONz+<9 zlrmoU^!wXWtSBF1@#~}i`WMQWhE0CE&oZVBaHdo^P1+tkIX6;87%H>Fp%z!9e2J}c z_ zdm20S%q=Y~hK7ceo7Ni1CHrGQT$N1nA+?iXX1V&cOZfnmF!#+>65er?V_{-7-?Ur-MsM_K|(q?QW5zvD@IIeAL#B%An6|C=v5zmRb8Zey=#1&xqPsQG?o z$xHja?lLnqSwmu?qw^h%OPaskdvny`g~R;zdgu4XUkEul|J6xODyCvGTyC}Quu#R= z?nb*5VXGg@BI&9^H%@GLuPHvRhyf1PR#qhjLo;mB-R(TVtg%CMC@(83OYfOqSny?# z-R|s1uZ4E_;y-}qiVM)7-G6?kTSL*|3b0*Tsr_PqfpO(}^~SYCkI}UDlLsjN;f{$T z?ahOCq_Ra82Au=F+%(cB=s2s&R!;tkk%7S+i;0>n=X#cFvNj}p^ED2-E5nlBrmIR3}1AC5oWt_Q7tK!v<>b>;a~#^^id(etEop*uFSg^2Cc50 zN~X0oa~~{!_Wt<6YOpgkxx|AbDsv=h>*@77rDg10R=>YKE+6qFRn8_coA?Yo4J6O3 zRDtFsPghX8V@Rb)ak>uxPXpQA2UexTMslg&#M%0HOb3cS_ z5V+eWG3(-(x{{;Ip0V4UZw5&Of;TSQy&{`B-VM7Lk5q(vnL@o@vbv zg#>sk&4$A!L&fCjz}}1cKJA0nAheRV0+<^UUrsC*pgH7UI5?0S*gcG$=ld1tGLs~0 zb94FM{yNz45e>E@t7G5ZF!SrLb}FFJiz`*BP4S;UbHJC180%NZzhlDFw6cWT0dX1s zmmM;MJ0c=V%vh%;b^!r_JwJ%ikP`T>!Cu1Q#R`CrWV~(kckXf9E4xj!vXw$JP$wLasCn1*VkvXxQGeg#K~Rq?;IYk9^6{&%R9lf zsSP z=2$-(<+3@~)z;P)$)ib}PV~6nk*{CN?f=NYpmNa8W3EbpZhYBe^c~;dt{!LXXpD`F zNMlQbAWWK|T<5p7(G@Sp>mQy6ay?;6bjf-Jrt_|n@okRINE|&}feu=rf7;^t!E7Bb z*OvQnh`%(4kx07}4Ya_HFb)cUjmVREjPhV?q>yk_N=X$1Cx^WL8Xi+Lb$|hLR?m3- za0($w8z%T{?hgcPv;^Pz^0t}e2?K3op($^Y>$-p9or zABz*VT0&w9uc}3d$n3=GhbLeC9Vu1(_*ii8D5nj1xY8wDeB$SO!P*yh z%17KWAW5_p1M zSg4JP3JB{eo7&()s4`0)>8y0FG=BV%^YyDMtyU%TrOd7>;vKFk)jonT>u{+nCW0{n zyz8&&A4Ip#25ar{zv4k-$>q3O0Rh-z8}byZx84(Ut zXourRrII`k7Va2h6aAR_HDSBH8odHU|C!vuQ>d)91%F1ja=h7H%Xk^rc@LsUVgx`p1Z2&$n?vHedX2SEt+_yKh zLi&Z~(=CJ*6lrB{4Ga~^oUo-|_ujk(T}Xy9mm0ojuS|TpKR%o~=y+@5y5HiTOAN+a z+qK{4pn4l zXV;KTN?&vhq=p-m+3H9W4sd3`_gsTZ{QscEi@(f9^1&Yv0R9IB6qkkehrG-44%}2y zZizhIysP)JdC-aDV{JdJN&>>}GCzw9 zPiFyL=>+iVtFd7Jns{#k3I(;aytm;hLG<~V*&U!k zi^g}%f_sN_hF^=cv9oKPb*Z%1Wnzf@mUjO@zTF0bwvUgkudnB1JcP}}1%Sb$*3n^- zwLr-0*~%nOl4rdYbNEG(g>Qol{9enwZg#9#`0R2+ha7d1vtLh7uPOSk6vNyIn-v9F zWw^9-CMb9&RUYnLZC@X!I#!YKE*&yLD9@qaSurN~yf7g(Rn?u%d13p3PT(wv@)JRq z5u^>oWb?`W4eqS@QFK^5via9%H>in;iG{`FZ<`)^ar56AQUtmAsmR&3cxL%n@u&4! zlT9A{vTnQEc)SN?mzWvCiSB796R=dOdZK7vQBhHG@%n5zS^90={=krt$81u53=&fx zWR$~Ba;Yat1Jn6cI7c~8Dj6LwJUed9EF%n3cc;llH#WK1gc1e14l=O=v=3BSnTUU( z_tt_Oby^7A0>|3qbWtBkTSXzQEpD(EbN|!oBdqh=_>D>pf4j9{){TFk#l^1$~fG;-u65f#{L)~tYOLASmfveuo2zl@~O2_?Qpvv*-+SM3i zpJkDLe@3hJ>aFeqKqkJeG4>qz&^_t+h4k+KfMDf?+lyxC%>^7Fhv+bKo=+FH`V}H@ zI4l?#)cT{%LS{{NeBA0a0`qVO(7SA9f#Kj?eTnPuQ^tdPjT&z z4cV!xsd0Lm;~4-?wUdJf1E0AZc4&L4r2RNoTF<h?=J?;2-8I*xz zjPIo%lgB{Y2uSIpa#>{I5SF5lKvsYS|+MV_MHM zfk~+=ta^7DO6{=^gcJJ$-%A9kb4Zxx5^a9}&_A zwB-b_##9GVOudKk_+P>&u%<;mBSVd1re^CuhMP2{*ZkWAWx>n<2W;~rx@OJ0XUDBI zrej@QE2fjZ9T-DwXlD~Etmw`S`wo;Hv%J12*Lfnv{s`>&Rn7~N(C zW=Ei+A|ef}XZL%4fnC?9@tOJYPRv*il(s}By=oBGaAq&J#{)Zj$IwHZV0xtuAxF)K zhx(4a8Z6@ZYb6}VSI>9;C)WZF$X2OH%%@MEPIAghM>hY6IDPOO(z_}M$4&FP)NpB^ z@c`}5@$ns!i%WI|5=+Tw+pDDYRXcmO#tsmZ!zus}VwA^5*o8Z#E z>$PEPYYVP00Ol$iK3q5$4rD9i9M%XoT{^BrjSkqe71}(B7n_+wa!lL18$v9%Jy&1R za(IGHjd0qT?-HprUIFU>lzwK@Ag;f@Tz(c5DWE7cLRX}xPYWYtrV?CgQRd%XTee1* z-3IA`sAw&IC<07I!aMJ!TDMo12}l0Bj801sS=*&9&aDWuVW%dcm5NlCNVl{|U`I!f zkeAEv8j^n%!2qIP=MBI1sMhJ=;9bU(R}4hsA7<8kQKya-`-N24(XEBWv15tJO`i2t*e^9;JZK0YHoL)2t0YA8ng*k zLn99Fm+t(3BlYpzN*l5+1uRGm442lDvnM?3d;9ui*H;rzC{);GkS~E(>itmEG9Ckx zqiO+T7^VXl&Cx5+e|E5h=k%SPUfcNC$DH0%X)o&kq50E~#}Kec0U}vmPL7?uJ(y~a z=kQ)lMw7`n1ZDG^_BBl~6u#lnh`mWztMnLw6RZkqR_kwok1;HFG)Z7zg@Ki=;o)ff=IkpS1pxy0G7bw0T1sU`K zbtJ7+QKz&uyr=;Rf%INGS()p^-4Qgg&A>W|`15i&n+SfcT|){a??82#y@H*ZH8yC4 zJBqhu)+IpWp5D^~K|!ah@S2I)TAq$o4Cz3=%D(Z)IN^VYWufylEZ%;@!PeG$v#6;Z ztc7i_j>p%mTFa4bKz0O0&Cei_;j4)9yv^&l3)F}6uW!ex-@Eo9zj?2^1MF9K(iXO_ zW5a*zAv+XEWlD+B%Rp~`e>mm$wr2a zb<6*+zFz^$VAV%xLpj*xJ;65>m5_b@b1X~Gbg-|_ea67L42e8{-Q??>_F$DBjzgwJ zuASAPXM_o0W`+(|6m{Mhh#nFx6%`XJurV(29T}28pdbU$#|mrH}U<9^k>s=_bz=3MfimDI^dyQ8gT*p=zLJk-e4I@&T* z9H6m3%|eGgZ5{9SFRlXzz}}@DW9+;J3X~+XYR`pIn}A?FZS5R#z>md|sub_cM3Bn- zK@0Qv8+U0ERMRueJWSx^ym{B1mMm>(<+O5FiNf2HlogNKo}nR0Col($yop)g+05d{ zRhA*Xo^-W?^OB;WTRdO)Q;n`pPUs_>el);gUviEV_%b8I!_r_z!fe!Q_S%WPWaf~L z9+@Zvypu2r3=WnJK#4G-N15QCKlgzNqCZoq6J`9rrUQ+==dXgs?7cIeSx`AMB>u)B zC0E%%Hb%%Ca!JE7-7+9-ANvXchaY+n1~&1+8Zz8>ZNefi<6b#u zuw)O%acF=pSrgF?e?JpF6W!h2txwjM8t`_L|;TMFh zhASpZ2AA}%sSnGOFmAa<{lxckaBP;0m!eMZ!fQ-io zy}e=tZNRjGiMT&SjVhoM8xuh1l#=?MIG%iJGI4dj-i6kNr5j196jhB8 zPaezS4kr`Qf8{?1DE|jI?BQk?5^0aDT78O+o+%!b&-{{eT{ZJRvIM|hmY`5Q;|k|G z=X^w%*U#swT2;$y%^Ix-8KS#BK1UDgKzHTO71-HdcRhOiGJ^U-s%a3ZmGva~^8V6% zxZ@6iW|pFl%!cpZ@N>|hsg}`_aX(GDw0~y+d9Dt_o^BB{5x#Fhehw-CO*Q}<^rBG~bKv+-cUR@+g&lEl#rAM7if}I!eMs_-Z-S)KKfMA-f zdlsMTQOS`$dn#DLsM(BoU%S)m(mn6WpNwP%6&QGKpxLdb01K8O0|k-C_63k%xB^YJ z$#&-<&u|%csuTGam>Fz}dQr6ja)j-nenH>y0Os;)^@HixH9dYZ2XRH^4N_pcPE9s| zRBw1+J6hAwmXCe8|WTPTCT$78lb_PZ_l6d8auJFNR(!8NHnXw>vKB2R${*w69(1>V+!J6m>=Tc!~Ej&3HVsDSpnuO7zT z_A026HJCfs9HW}9#kIA1IoxNi7^pb2XHa!`z9`=8EOsri=i#O`ylSo9=hAx;;Y}&7 zsM1{J4pX>$F2@I6)dG_eR0)o*4xd%gNprpW^kw{YSO4XP4_u?xe{vtk3zWSIG*6PA z8-ynvsf6+B{6jXCJdAMPAC|Fgo#%hNJ2X32UgFQ3pV zAock02kC!*IYQmUegzXo;DL-wHs|X8w6|9delHvlwu)9&Z8^?P!+rsCa(gFv2`xb!S`tMh)J}?veYZe>P>VCm zIHutTy28}Pcv-(GpDQCO|4EymTR=NwBv_?74Fi@y=}g_JR~xkF>B|S@%eJEeIAK}W zX%Nd}YKgj}$&{3o^>vP}5>U}sR$B5=S16Z^oV+M`06$s0eC%@8U^-smgt^e4#j-!k z6Cy=HEmF#I?bW1okc}V&3hfRxfYoOJnreImiF>7N@Ab`^UUuwtLDFNbb-)RG167&6 zHFKeyJU?$;UcD42M;W&m4O;GL%3|2%b0vUcqHHcM6NL3q(o#Q2UOS!UQjn>8)m10n zDA1IzUcK7ZCXncn3epR(RMl@rHJTi9JCemX?+>Fnof-_SC?>=tuntSOI@y>~G+Eym7Il+%^9cj`8&3-`#jyhgBY1 z!U(K`!!kX_)DvH+Eoep@T{uMU|Dcbf5~$!?ae7USTZBv6u73C?g)7yjd)g4pR8WJQ z`WEO*4V3$3Q02aSErz5w=V)8!M^XB79j2v!0@=8SOg$tnI`4`i-|M06|FzgJRtDg9 z+MeHDj#_OD9V7_x@$z1*X!Qd#ZW$Rf?ICROOVtRmHvI&0!fvX>6`2!>e^PvB z7II74?V$ju>qo-yR<(+|e^9<=Kah?%&l-vI<-kp;LlP-Ca% zoC0#*#B%*eW+J}fA(F&!;r8>NAGi>t;g13WdFY+q0^p9tOiL7BD*7Eg zON1&-^>Pgr`YTVO*q#_{*{Y`)evXL=)SfCfHV?2ZvJYEXPv3XibCi7HpciWvvBDPXUl-8unZv($Ttl|gL$m}iyPlc^^3q5e7 zMiptfxxi*_$+aZsmIvB`)pHC$>{)W2Yuyj-C{>4POkV~FVk!Y2I-tEfPZp@{FJ%c_ ztr%v}+g~aea#R9S)xx zgFA0H+OYWUE{x9>0FLBqnd_lK<;Ff;LnkOy0RKl_qf*z`leqlxVwZMfhxn#Gf2P53 zgC`+Um#B6)$2XJNE7IZAj>__?E%Rf|U^VwP@@n1rA2$k1iWC~3(OqGQU3=}tVqC@w zyQV(S{PyYL=X6%u{BbQm{EOP2xNAwV%8SMh@g{{l_~>+Vpe`hlF~`b*O_4vuiM0uE zU?tuwPSY(%kw!~|9CLad%Q*PUehX|7HV*wJB*Au6P^p zz2^7E?X8VjtEGz-M~GcX1AP(8+5$66-m=wUa|fA;NQ4;GMMJ988T0h1mf<@U4Mz&B z{E`dh{oSq>Iy*=){tJoxI;{1D|+E1ebZgngGv+5!j_wYT#iv`ho zH_|_KN2h<96u-d0d%abo3~%cl)vbENVNmrdTT_}?Z?tZs8+(&TN@==4p1`eRJZh?G zWx6dDVNyiI`>{8)NStumG$}QbabQJgcHwrMcCxEGaAz47YqFKtV{b0-?2(^0{fFY3On8}cZ25Qrtl?PMR^DBUsG6m&jH&5IMRkNZ zne_5s>Od~+(&?q2YnlfolvtMh#o!=I17E6_$DBPZ7E>>a5Sr|(urz28*2z6>q{ux} z>`rLhTzS2LiU>=hp_&5yMdEJyn;Djj7 z%lRW!JyMx;EE4HuS}iR74=V0|N)P<3cMtIT2rhj{w(+E7Sg}BQsjg!-uUOQ))%gWf zSk9;PsN&Kq)r=lv_2~P?m!q`~pWo4GUclN%eT!tIx!K4cy&c0Dz&QjTJ$$;T@EC{s zKMdE9HB8hsRB?K*0Z00r{kvg8>gY`ERnIEP;gN!^VRlzhIbC<91+%pA?Go1dMFNm+ z;`r2qD(gY5-QK`V%E9?-tj`XerOdqbw5vutT%YonZ*MPuhM{;5WyCLmn zZw#_EfxjxMSMcy5^V6q+cPbW&7dxwPaXEga~PetkjiGbbAR zWX_&Qe|tJaI#v~E&C@Xx81V$gR+L7W?A>L1HkJbOgR&E{V)}TRqL+{wVtq!T!b*yV zTn^<_Z|-9U0IA#dTrShYdcl;zQmOeVFjGm{N=yW$rPs5jsI)7xuXUO4&Y~2~C5NnI ze=6DJDiD>@s&R(5u5eA)YUGdDC3hLCS5$p492E z-gc@?y!jlm9ZhUr&x!209j^_m&*^W{jLOl!K6()^)E1jx`F&8X$CUbnnC&f4^rJ6y zWD)P#pI|dOn_ydPtK|KrMiZxM8YI%%A}V+8>&E*#M;r~#m~M>d=cv5!*fd*N9Wg3U zN|+HS0?5sP@_d1u=yGy^p(4e#l4@HpTTwzR+s+Pnh03srk59HgT#C6{0{dr5OYiTmQ^qo*$XV7H3%asZ18#8^g5~o`t3%p3^n9ogB0Y>%0bJDWz)wUOf>a&bUhQ zsZGAPDd76pP-{ZK;8v`sbQcCAweV3fwWe!yG~%v#UvAums)gB(hrpoI$}mt^!{olh z$K4(8?UUDLBRgZ9XzZZZD;SU5=;aF27Rwbh(kW0<+{Fu+2@Imdy4jdd&)d6L+&Ybh zc|y6P=0^*=_4>txT&E8K+VEVF>)b2t=RF*1=u4$Ah7rsez+-baxS35A*06RsdmwV| zjKs(pr~{$jDlTOI7(M`reO-Oyi_3MrdtF25?I9skxFu!R%gAidxhc^jQJQFD+n;N| zj7GV&f`@m(?*``jS1QGLpnCpbk>DnLXEVXIx6ge6JgUkuQnVrDU|d|9mF?ZB1r15K zbzePV5d|JT=71skea1hR5h!_mhG2|4lTP=>B_)--IXYtkD9bvskBrBd`3^Fky%O{@ z{nY5h#QLDp`;3S2qKd8BnHrput}k4_$KD;a>DNO^eVDgPSKLV*8!sN(bdlKjfsa12 z0&}BGb*S2WZVZSCUxoGzR}Shrs!XCBTWRwwykrGgcGHr5 zeJ_o1rnFVI1MQFIetgBIn13BQf|4H=JpE28zP6__OVvyVYEt&oqjjq`Cx@2Glc5QC zJ*JM{E$h`6Xaj+-s1U=){fwSdoqSwHPNdH-6QU;Ns<#10$68dS-EA(3Kpc@?qoxz0hF|O#oW6 zjPJ?RoQ0)DYJsQ_53Nqh*~U60P*;gUA&%+#-B_n*A$AxEIuCn{XrpCTXF^VPzCm%R zjVsMwIjEf-8nU_rUvK7l>&O`1#4JSgQC4p1Y+DzqjGbN0>yAGu^3-)l4f@Tj7eJ>L zycRD@Dbyo_aj)23jnBe(GWdGBfYFVnxP%RPO>iYyB2})u&4+MQD%M|^v=FSRDLR}- ztK8kq;KtawRYrk1{EfTgQGp)LW={G!gI!nepuP zc>V5$gP_u2X@1n+01tjzaEZ(=WuXp(k-!SMb2nzb$NE`OS4Ygd1lCg3^?I+3@Qb%> z$39j3Jlo{do+KmXdSvxyq6|jXC-<|*q#OR~#=7gzH765yz2fp&OoHXT)u3j78iGO4gIrAQ4`EM`w{$NqhVr=%kb@Y znX}Qz_9XaP?t5YDU=3@GZd=H_EQ0+cM`A3ONue{g23t_^47NGnKVfo#fx&P_61b;y9f?r!`818jpWY@ zUF*9&XS5<#hA&{=zDC%h^>1XkJcN-Rf(k)1R3J-jnBft2j+9s03!Y|*DP1a8Bu6KK z$Eq!@t$}S3)_r|JDlk}6T*)%`GlS@Ijn%bD9vJuO({Z|{vUYvH-t+R2eF6USthlG) z5m-kO9&aXcnzu>VX|~`RyG&>l)$QeSU!p@*o`e(Tw3xW zj9_PA=bWb|`yLCu2|k&X(_wUU8)bJ9in3{7Aq|soZ5^^T_tFK(trzP8%m)_5*fgx3 z;>t^_slKg>p?1}$fc2|Fucy*)>TmFqS$M`-TBUkI7g6~Z)rRJ+Kn}&NC+yBFyxVJ; z&hO(&xK&4fUSe0D`_A^e$Tww04w(36vOO#?#x(QVO1NU`X!MIx4={vqpP@VV5;Dy5 z$id9S!K~)WrDyV0^>(6-3f$Z)uRicGUxd83)&KH5{PgK}Re8(z7ia-&oUTGtse4e6 zEAlGp8O1OdzK29${`1kWbJ=nG7EgbLX34P_vpbE$Ui~8hA1Ej-UhZY9hNlD+NY`+M zRZr{gpZ+N9jJZHSZniC7`>??HlPP^l3|A|KhiosGW4Tt9Xl}xf%)Ob)&4zZF7L>6F zzb+L|<(ZVcV8REIwUEiQBeidi)jICozcI04mGL#uUlB5OKOYWPuZAyEIvs~~ls!1`47 z{16~yLgMK!FH3A8=qoC!uR!BnI5{LHEuTWs(jMRNi+x z3xPb&Hf5DBf`#q|_9GmZxlKsic9eF55}>|+OpJCk*nTK7;o?rVRQ0rPUOFEOP#+$${+i?VWFCNzuygs-cN~3o1fIJ;(j6a0R+`D+-RSp0K%&)!S)x|$%lw?2B2x0V5M_mEBIfI1ea(`c@?0O4v)RvHpr7D0nh zRh>UQg;q5(eCGrth6J2B%8_~$^LU%i??iq2sg1x9tuMRyZ0M(z9nl0S?%pcuny&t304TZX^ddg$Ip83efW9{xIPXIqa!g;z>c{rGU9UUE2rjk6Go<6Gk zT5-P=2+~r0-~97=*|g3kii|LZA1l;tY1@`on?@@z;WMrQ?e@=i)@Pm+sNP>sHi(V& zK4hU|V7A_qnIQu*x(kJ^ay=+gK_;g1?w2;--Me6&t8ErS0CDeKd z1A|>JAxF=0`5P2Vda_kBi2o-Wo`W7Yf`_|YnsaT?QHsisx6!c@s_Q+~+TvRcMo)7#}fehTseYc)b~!n4VN92H;kMIC(>8e&XW7N@Gqf41q< zoVFaCwX7Vy?=U!|T60H38W5o^abi>ESF>}li!z+<$4pD+N3QApc4M;~G_=9AzYu7A zc;zTH6(dJWUlT|awig~L?8M&0zoOZzT7lP*teRAK zU+#OjEOrm7BwTjX1siqdP^j-cnR;!BMq;m#-(%&VVL=H}{c-P|Xvo!ttt=%^Co>2} zhLqWGN>NJ6vw>9byai=ZjB3>smI$}}ai#V;Tch|fW&6CI4s{FT{$}H>e$1r!u~Y%@ zhDE{Fqh9nIb%2uKUFAPH6se4z)NPD;let0hUNi5^Xi z#@;YDxJAAIbo$k0s^w5%5+yWJ=u2jB+-->o6yFUM z^T;(K%z@0I`Y^4#tl*pbMYlD$$3teWH%Y195Lwzh*64P2RGnG%(@(k?LzZt}t7U0T z9U>WMRy~ge!ot|4O!dTIW7xLe(Tep>CVF-zCT@@Q^vcVHQ`eN3uj*BXHqr832J4c4 z*56NE4shT2EJ8J~Gcht^4ZW{@q0sV_aF3~%S7l^1t&l9DLk)nzU;rNQm8GP%qa85V zT4Lj3sV;Su5PpYBqG*P_t!BH#yTN_!(nO9fpD?|RSUNZANj~r6-cj~3HP#tl$2IF3 z5(>TBYvi?~do$`rddO*^3`t*L_s38fKn$>Kt=(?w=QpVK9If^OKeImb5&WcxLt?$T zmM}`%TEXtRcO=ywCiRIPIo=o0P;lRwtxscTQ%~{9NP-uU zZ_3h__FcV7lShh4et0F}#huUI63~@|g@x>=q<4xboE*}3f@wm=u81UC0Lsc;!uK;B z+lOD>0*=ah?`xV5XFY~%7XsycQqr#6Z1k-kUj;~gZwk=0GRl)JB^@R%lbxsXtMDhV z)r1^hs=jqcm?Dh2hVaE>X5b29Bmh@?t5HmT?PtX-u7=IaFnwnN`-=6JfjUB#oRfE)e|>nLMCS2#kT|DXwn!n+NY$X1U3NR|Ea6EbQnrvwRrpR@KL_qY4^?N zPYet$gg0IOs8UP&x?aba=H<6_65JOpx0tUeefr&fWipTF6&sJa0iM)Fw$z&ud|{dg zeqp{Fas`s40uK4e0JlqU*tC6p)gceduY+!8AAWx{<9Z)NkgiBy`uuwaWQ^Q5@Rj!c zzb>`944}2&qzFZXyb7de4&v~;p&tI_;Fu-^qOHh(zKy`R!}Qzy=DU-uD-o1K4Iz+& z!@H12irnM*J`Blb_f8#+Y%RP2r4K)Jvy$=ew+@hC6-`Z#+Q80&FGt@rznFR@*d_Ex z`ar(!Jzr@`-RP&=h)=k@;t!`Y)_uye7;f74CDLLk@ZX>Lya&eA4w$QO+%A53V< z1X?<~%}EcoaE9h4ogWXqobCSpez{v(i}m3?cjp>|%RSb~q?1RCu+XIK z@}rP*hjqlPO>3L{)+|FVpzguRyXEe+^8^x)t)dby8$GsSV&<~4>;=>Xrn>#1>ilmA zp(7XcUzBseY+M{|k#`rBnzQAcmr zk;_DmpXUfua`r5uoyNq8l;D?y2CLgM}e$wcl+%ifpvL8HRd*|_GUP%E? zpO+hLzzpj9FCGP=(Ebd-{~PPGb8}k=EFXZz*cj8HXBhmfY`LPH?%VdOO->Xd0-zGG z!_+)Q?pyX2e{CG>7IK8CuHo4Lw|Pgz)%Voh{HpW(6+Yiyx8~&JGy%rix}akI_J$L_ z*_F&}>f?kPgXJ^pvxf;^CkV|gRhwO#>t>NG{!9-YV&PE?{Dn^;+Jp$>mXfA@92E>~9_=bYF6cs?GF=j-$%@enHU&<~OykkF!{ zgWH*;sb7xtgYdl!QMwdS7!XvNXZoZ#H^|^g&dU*-5{8&-$NJNQ`*eTkAe(a8)!`hu zCDlW){FnJJ;l`|0xo=(yxvCg`_YFElZ^8Hb_j0%wP(B+R@NG(cX3Gn@W$x55J5}|G zbVJU4TKo_MEQ;a1MQ)JgQk)Oa;LpO$H|#(;!4>a05hzHV1*n344!f%@99OvaZr!`N zzv$Rlo$ONA_E=MliRbcQ6TFI5=^M62WYcK>7RbG1>oc`*^t#*Z+q$<1_vJx57)+T- zNbh@qJjebmimY?`3@h52?TcOxjjSrR4%vw1(MmjkGGrRxo;AI4_tyS>zKMC@tJ-2j zX(IsDnrR$~qY&P4m~^?yMYitFsYuxuwM(|Qx6?Lz0il=o51!%4zV#mYDJCZ0-lU|i zuI?>kJ`BD{UQ2%4@;gCR%I}89+IFS4XK9ME|L)2{jwo%EWa2^W+eD#;fT5xH@81K| z^`zNE#HgBR^?7BhgO`5Y8zY20{it`ie2w#bdZ*lut+sZr#>M-8`um}@U1nVQMo$9b z>~`%T;EIdl-=1$8^NzB9}?FWSm;2 zd~a!*0KBHVz}^^_oz3Ffw=grKuCM<}yEi){LuVv9ckB3Q3SW|HDXRFi43qr5{9mf; ziX4a56+cCaW%8W;C>+y1vtAw+7S?W*)M_CkBeS+`Boe376gi&m5UCh;0U*%3lSbSO zw}zb;hp;A|tM49N$C{HyfVIeG1=_aeBO$%2jR|J)<(i!>Q6I79&-)#RG-clEi1S`F z#8qv`;%Z=aFQLQQAsSiDTf*e4+^|Du#qGm{uJ1pu z7!ml2ab*(=2WTxcY6B_1>;-Y5FI;Zz=Ve`uM7jAK({0s<4_kB5yVLy=*roDWlS7Lr z^u!KMGhIu{2%r?Sgar%UICxigU>1Z*-kt>r&PkQCiAaTNEMa|Cp*k=MN9`|FVk)xk zqz+*^I%d}s7=e|yLd(@85})6ChrCo`EpX7Edx9DC?v}m3v^C}Ner%dXHD247qx<^% z`~Up$JC)J-xu7m9C$Hj~-wzsfXStw-XXHHl{*%d9nl{eX>X~@-&0OcY?PM|g7TkBQ z-fDwOaA|G24Q69=QhwtD12eme^4~2m!QOjvto;u$vD26Z_!?bJ)MZL>iyInnK3GGi zUnlB7M2*URtk(swUX+y9F)^v}HZ}%tGGsXDbM5_&@AO*nKi_A zxUQa_|0x^PXoceZLC-vk!MFLJ%Bvvz^Z9l9Y!;Dz$8X1WdSw7KstPyYI+a^G>NIE> zQ?t7!#OD_s-LGVQc>mG4KviaLGi4U&))*0kbEso5<(1uBDKKYQmhqVkRX7Lr+FBWJ zh!!!{>he9PO#W%OkgqZmu4d|Ex#n+fDSM-l+SlGYo5t0iL~g{e2R7e_IIBR>WO_bd zX!-6W6J&qs&S6 zeR1#JJwrn*FR#~+F8#k9{mP>U!MR~YV}y;JTF^A)hM7zP6kn{Z%v3t!hUJ1+Jt=ef z+fF^Ook<=uu|O_rXrXK}teRS}c;v*n(@LCj?km-#-@^!;cg%Htr}knPGxw?er;`1H zCdGZ*+S>G_@`uL8#_HZ;N=jY5J-X`5XF3wNl(t$msdmF+ElZWlHM0o_!tL333JCoy zT#~o^R)*`}weTS0@#upVEN8ahA@(pMm@FZcu)n)U;+d-uZH(b4MfLIK%!OA8yIpGaf7v2ybZQ zha_kuPa^dHH*j-$04ed<&V6*DGe<016^HRu4#FD#s1H?C#A!li-Xol zY{p(Ib&Ryl4%zJNY$c}rsuCqY=lhY_{KG-xsG<=)A^WGZJK+01Kw)J!!3a#;!#1 zPH3gm^e^Nxh4REynoPu)vham)N#(&-^{o^2pFCMDolW9JEIH;^ZyGSAR991Cz*XMe zgk$21_gZ^+=FAx}izE9LT#<1+U90^5c&rqB^bpJLc$n;R2oL<#E03ve6=kN2_e197 zKB}gJ{r+e*mV&)R@_kup;%iI@AoV>O!!UDeT@ zP#$h2_k~tLS@f_^*CwA|Mn*=56ab9Y28-5kDh;4elAC{H&AsFg3@eR+Y$}98H6(JU zJv1~y<;ZbPPNkQ2b|Z6SFxdE=LOp>TG|*PP?$}tbpn4f$=oO!znrP(`$Vryuq|GYv zl20J{cKTdO0~r~YN7MEP2hx-RVQ{z>^~J4SA~Y0`%IuwQ%TzC)&)`KQ{F-*=^Xuv9 z2{rkwktr)0F7`Kibq~1r4S63qd44O-6bJR(m;(dF!^q3Dg-vX#H3&cKO5gJGM(0Wl ziMVTiEB#n_%bCC7;&Y<`1cSlg6kz=zc(RL{c=fcJeo+9ZN0_6lOMvTsU74CmE;0%2 zR#MVfAcxB5R~juGEOv9hwTj&V%fiWwC(ivDq(Vy_#_5u_mylT8sropYm$=_!Ev-V* zC=yLt0-2BBslCW@-Qxf}gVfa-93DM-WW7^qR`*8viGPEfS@4f&V;SE%YcI4N>LI`E~&HS!`c1UB+q?nb_f^ml)mWq zK_hck4!T3>Uy|~qb!ak}RJhD{w}kAB7}FfP?l4w^j71c^tLjZj4hjl7RUdLz%G6_8 zN9^$54RIgb5IQ>E3V+ChMb^BYbI&=9-0Q+*31v5W16bkJ#D1atDyPnBG;LlJ7_vM2 zcL+_+Gpvl8hj0Ceky~FX%1qddB1AGrMgo5%OG+p?In3Ot)~&P3&?pg?W68*Ar}B^g zC>%cYFuL8U_m$|}2ZzM@5AGoQnqJ0#a49!Jr8R;iPhTWS=%EKl1>3Bg=Zme$(Zy5k zQZoIyi-tPHlstox;rOdULUuL=eSeCxv4v-n>SS+CY0vjZM=LR=WX|d6zv7vD5lQps z=4Sl*Te)z$aL@~i>FzFwT@;U1S5Z-cCbd}>WxGdSNVJR$Pr3#)>Ou5$bxp)v7kV{2 z0oY)VL{6M3VAnla#0&P`90&K7NvK))C1hyWp9h1>uKyM{Z##N0i)sIFz*z0aL1Xt_Vw*C ztzS|9vN{#-@i~ksAn$j>ezq`+1xWviiJH7}?u`Mg-IIHKRIf$z8Om1w_~75(TnwWxE7&WJshNd~82?iSSc6nX z1z>A{Q|sX6m(8k%5jT8i6+?z}yCXuyj>$X7Gz z#&`uR^W7ZL*s6ZeA0Vt?yR{STP>50q+2I(YtqhpKrEuJ-jIV0{s*63#O+G$iw? zXUcTM2l@Np76|b1T0ebRO%0W*U-X`Z7v;V>5vf7#+1*~BtdiZYNU^X<55jWp*0&;x zxBYni#c(+r5GV>p&h7ttEb>AIeHjSWMHJ&7W_9~ma8HhOKtQ&pt_03Xif3rz99zbN z*@b(k2Q%jq35E?Zz`Qwx3!yFZsVd$!MDmQu<$ouB?B@h7Ti#c2#NO!tCsPYnt zStGeUs4x;S)S6)6{&+p6Gb*hrS-IY_sN7{p+*{3HZH9|`v7eZmO@6GGYj5B2DJn`* zBG(4o+;)ROonzeRK%EFvQ%gDawo7{>`}-{x7qQ5Qbk0bLPb|k5=jH}}6JymgQd2KR zKK>L72nh-0f0iN6XU?KaZ0Eo9weOLk)xmI(WfyQ6%h~+-wqrd~I@hPy|J~ka7GKH^ zB@Ju(^gJ^( ztIC?|LPCp}d>k0G!nmafK$kKLa#Iut6cj&LH;#ekj1HG0V{fk$z<15e%v{yZBouXi zvn%Ct*gY!vJ62rK@5b}ptw>FoEZAzRU;-GzIuc|_jgcBdZk2Q(&jB*j6NZL|jf{;c z!G=Dp%4P@6d~q72Ux!%a954|Vm6;+hKdPDR0AyuZMv=?Qyk09Q*6ecf?ki)Clg+N& z3X9*xm6l%> z8w6hOld9r>D$#STmBr}x=1PMy6Bs2^{CUF!4mO=)#8nGAImd~{h{~lN5YX0lmH-w) z4;r8?`;ZDx)x&9%3SYi_nK;I@-=D|o$8;e{(C7887!77VBhNug(W;e+%eo*-8C6)U z;ZuHJwK)U>;pIulf5oHAzii#&g|P49;^K0W1Z->Nc`%14bbd;-JxKvz3l^=ItIx>?HTMnk z=5`KXl55abviUD-1DXVD=-s=L?aL+ zpchde_D2QMB=moSuHg-pZH;*8)nB~37vkCzkpvG=BEaPS#)u%}hjOK{|4n=tQRqDZ zf~Kx4fJC`ewEXT4^Zu)UZ2vEYQ$abwx94E}YHM4rg!hO0xM=^67_#+Syn~4^t#|%* zc&7No>drrpS|H8X=qd|%Mii)_RgN|L&eRZ59 z?X|=jSMEd@E(iUrk@E+d@j~px0Nnu(Q#>B&7;7DQ%Kr=(f5{^|JKDm6Qp=qF+V%&{ zbmj#5ITH}_(i$U^6VE(G%3d-Si4nfK`sU=r=(br^Ezp=6FB~+I!N=AJ2z#uDhPf`1 zb#=VI<>*RDS^xT_8uvw4LLzqoW!q%Ea`MFX(~6Sx^sYN|S3Pxfzc5yOjvUW97pa(e z#?ff1LEDgoT1?e;jCE21NZ@sJbPCcBLeUkO z^wr@EFxHLx^Vq(8IVYo~w^yV*X9`TdK1Ggsp z*uoU%#>Bw*74$#gjZDX|1A$zCJiL47>Hj&@-QzGG7^IGRlYU8+x)sAW?XC zK_sxO^`$EvT?^)<|EsQ2r2#hxulv~R%CPfil|J8kwZ@GY9rRckMFO<3w=D8SWAmVA z8V>5f#jSZZ4HmxN@gAKI1(Sw7Eb88XF4Oh7xw*0z3xA%Z-tWU;L`|xs-w*s<{sJHm z`)?VTk~59}11hwisp0QW-4EgH_OPhLqYTRdrzVgS&DUBz zsb(^)fkW8f)@Hy(z3^KuDgDZiqU+2v!?Fjo2E1wzm-t9(e8Q@Z7KQf$psvm2J9)qetqlq z1o2GJxG5d0Zj@egFIKPzZv{5tM&YfFtN3S}P#N^sT+^Myov3qOZ@-iOs#V zxA!6T-6M@i!O)cZou3_@5tsjh$_vLO2oywG-p!AuqoCIaugpb8BGMv(|8EWdb^8B9 z!~g%$VcU7lagtlcqN%bCG&bcOXy2dx7g2czYa43cEvYCkFR`?n)k$CV%gN6Nwo({D zMOP8_r*E%>o|9OJHiXOXEICU$;)T&$_mZIAF9QGSN3-wP`U4$Zv2vY-0kw0ZD@1xvj@4a)JWLb$IU zk`o|ftzJg^@G5Qn(yKWq>j~Q(8gUZpB-h>kXxE zUA2mtl;T@#AZZ1e*6%ne`1Tq?YG4Mt54MR=_mw?c-*dbZ*en{YM&cYALb>#uDXF-brHbii@F>`rG>fTb8~ZZzUbu|7ghW< z-BD>u?6quy8t2Q~M8Hg%l$4~s!$P#_?pM8h6B;=m1NJ`u!r;x=-^q7mHwe9%7Z8jU zIvL;Pv~^AT@;!+QGnQ(jzh?^HY3w)ihh^g`dl#20+3zUESXS82Vcs$Zs9vcL?$+io zb{YTnBsI~n%;DFctam|RD9@+7Yh1*ZX1ihW#}f9*s9Eq;MY?#^^bBL?N9L35^DgAI ztJ?Mz^DW&)%Kj&}M-gc3=qU6#Xz!wKVAsgRoV=y#@}zIaPnY=gQG}#+*#7KGOV6@0 z9KGjQ?Q8TlK*WO>ZEt6n00!fHd$jjkh6FfOju<3FUBjT8<8#$?bkIs8=K@S|**?O; zFpx?8i!)}-0VR;U{CqUf|9!l{U)ZE-D=iXz3!v_vU^ntwy$7l+&xNeayo!Yd>9=;t zU-j-mV?@m$7c|aHpLrLy4^`lJ=mGy*jV~LE&sVK0G4=IPW;;COJiR~~!RH6Y>h-{K zXC+V}C80r&Z{Xu!Qt|Hdu`y5|bZjC(j$j@x?bH->hRZm*)k2903?JCJLD2N8CXLGa zb>*9qYVJ83!VEn;JW5CD=WY)T0ocFEO|!QDDei~v?rj=3s?UaPX?X9+x_45tF4F&N|}&}uHuOiw}Z5+ zZ(2Yq1Pc5I)`PHQw}CN1;?F35Y%g8P6#yA)*HvFalrfqLCc{AA?cZvAg)fJ7Lh`Z~ zxEhR6-(B%|QS^qF4tk-+o4mQ8qyMG#v<&NyCYSFpxSgGGN%kxJki@%={aO1Vkbcv0 z`dvp?5tvsUPlAi+pTUgw=M*ARin=a>DiF-1DrF{T-q;i7%6DV`bqZ$qvJ4DCOU_D( zX%U04^)Vg1&60p=23PX_EJ7Oh%q9`7TySxK9z%*Sh#WhLFR7vjSz12mQAu=uNXJ`x z_luxha2~Wx(eBdzl-4`*TI9a~jSIN+?6P(=%QlPaLyVloP0K891l6U~@?efHK%s{? z_p7_Wr;52Hbw=jUyNFJpEMd}CKkI3B7wi5nADol*RY)mDGt8FmU+@*ypxb?z=DEbT zdw>7R56i2*3XY$`DCz4bS*w&R|5+$ zR#^5Au!l^Fnx9mo{`9ffaaK4dLHnl9RIB#P6Kc#K${3q;=OB`N3^6Cwqtf*94F*RL zhkXg!;7ptz6{%b@nqx{jt?ciaWVhG)flnq;-cX6%-ZRyn98-j>r>(vfb(CxvmAc>z zw(ZzQItcXgGC9s6Zaucppmo5ugJuKp9@^89wSxMzFLdv0fXb(v1T5N0@wqspRwV;+ z`KgZ18JT*)CP}QV_T0ZlM3*y>&mE`=j~(Q(;g1czTy^oI>FDY{0UNRMiLJZtkqigF+IAu%yA?>^YT;o;-=lgC z|Lt#*#E*(nKmEtv?PYX)f8bFixU#LUY#P!vX;Z0H+UAmR)sr1KjX1XvFb#}7G4Gj| zOD4%qH=3U$5BmrR@J{0foyv#bhX1CtCy?@NOh!)3U$BoOc;hP7+2SD$?@zSPHss{j z7|dPRFv_aHa~(@~&MYJ>JOWtGa<6aif=pH{4&OW^5v3YB;P}kLV~{ZqOvg-5NR2Le z8EI*0=?@BdO2)K-$5iZQlDc{Ot-P?iaWtc0?ozAN1r)e1=m(hhQpAcA+_Hqvu)J+d zP|zd1@ZfnECQqKW$Uz-vp;fC!&5QOkR)%Gv|i(8pbreTcxTS_qc*uRaci@g ziGv%3nY4|TaF2^~P~J@4mHe)zoQw>sx?WAoqQMc;Ku*>xos`KgWdR4!7S#R%uH~$! z`uh4Xm?3H8n_hlU$0n%+LmjR1e8iLj$3c~$CCW_C$8jb`XdiE;=aqPyQY;EpQGrun zrxmSt_TquXBeo?vv=cQtA~8tkR&Ze$7g(~nX=kY;!1*=t-rFAk*be+iks5XPo^8gV zP^di32(`>!&`gLc`;ne55ZCSo?Xb8Brbergq(m`F28Cs7xF=oByw&8vTNLjK(OK}* zr!=SX-CYL2o3addp|ZU+eEG6{nNukbSO8K^i0H@ivMD{xUwLuQ#?g9SVoIBcB-Ft2 zgVusO71ozpV?+RihGqptvBlo0*!iv8F zb+xW9M-T2$4!jf50yX88t9#|_t(PC@Ka(PB>7^y-T`Jb^wC!Mi!!RfpfIx1yxS0^O zLM9H9M1;UQiz&6BqX(YYAcPn>4Bke+jIFtW;ZgFiv-&mlE5VaP=3mTjB!q}-EZYJ& z5d88sON)9(Tqwx*PuW(EBtk2;j0z ziF9-hyRKhh+uCE4V#)gK5_wF@;sj1589->j@ zlAN61N@LQj3KkbW_Kw3efwW;t8eKPa8?n60bj&R1_YwT^=eI10P>Kq8dS#?h;LI6d z+B#lrypb(D$&1PWp38XK4NpIGnLX>NjW`Y^8Ks)8bj{Dpr>H+ui-vf=Ue5AtwA{hD z26pXC5RKbS?HG4*fNT4M<7+2)g3_l{oTeCb`cdnK`4%8l#X(C}k>-%n=t@6}{psb7&y zD2_$(rPcjT7>^MCM6sLF_g8l3?_LjCJ=X%`+V;12m}875-0q}I0^fBP`)mZ% zgkE7h(NqZjcBjW?giBbzGjw)G&cx41kCf#VlG7CxefaJaNoDQEAhB-jIcrvKY+|@0 z9h>0AstOtvPF=FroYerduU)(5L*CE^lhvAGCtp`-N84@NwxNWD5LdEF@I~GzOT%bO zeU#mfS9H3+r_!BQ*tKoI77Me}M|Gm?5^~FXbOAMNp*Kq2CG+biyII@Ex4uDms{c5P zomii-SUOk5@GkvgLAnGs)8O~us*$^Jx9HxofIylfrD)D3vc+rI=g+ka0w0*zw;`n% z*QvpfW}W-bkc+P|AN%|)( zRl{hlut^KKZ^_qX`-XDnbyS7Yi!Fts9L`6MJ~cEri*Y@V3FwJN6{8w2#b3V~(Qj~d zQpSE&fupX4E8~Lm3&2(d8O?2+8}X;O^HK295u6{(iTy@Ge8)lOM^Aoxirme;v&GUc zA!-=C46xE!KZ(Yt7dN}Uk4w=16hl3S32aI5o0JKQdmz2)2dkntN$56!3A_l2d~oTX zu*tHp$x9PQ1qbEiopcSZvQAc*WW?<%St4idyi!9xDTvGGt-th@UYf-K2Vb{>Wqtqt z()M$lYuk2*e3=mW4=fPz*8W>>qJ0nf0TR|EBIgNN8^D0YH=*j%=_HV*|xG*cKZE)VjKGcg!x&WANnIf z!vD=({N_Rko}XVe_(A@ya{EDj|IhbXS!4f+>XlZoFq%P(5c{6fUL0?lU8l?^5Z?Q~O z-{7j6T0OHPqv$TIQR2l_iI*v+QQxWUx@V32n0&>o3L4Rr8@sg~MLYok?;be-{ACIS z)9qW~{n5f%9cx$a>A|KFc{fWoMC-64^8~LFQb%&pYD8h17L9PCCCP)o${sw3FwO2p zA~=!=feNJ()JT;cq-2WmI9!eu9?VjF;$8gXpMz8@+cr}TtixOGQ@woz)Zxx^Hdm&C z9wZyzy>z1&(K+;SF?uM9zbC?9;Mu_-)>Xy&xBc2H_q)6lLI1oTuYIZ9G5zk{uTGBs zf2;>{zn?sN8WJ4v0J!^wzsF@W+BZO2>!yi0Lvt^9q9fXrHeImsW0x$7>F-aJcH{@% z()XM-A7*`@Ws)q^+r1!*RF58F7m$c0T)3!*@3zS^LDPZGup$eQR5fvQJ_@9W!iQ052Tg;8nRlsoZFe&nk4@e z5^i#xeZA&etXQ?+dG?5pinUlR6O$R~uz;t4o?c+UWZ7s)m-2QRr7^3QyBvG^n$(|# zOWFf6wC0w!e07aBTaBe-`34*cPx4-*xEl_jFPT@&Xjm_+BS#{qg}90v|B1tpzK={B zJ7-viJAWO_J~Pj}DPMBYgRlR(Fm_8ZxkI$)eAz2UcOv429e+wfH&EG*K)hvlG>~ip zHZRjkGSHhpiy7HpvTmnZQiZA$Cp((;CWSZ-FMP?gvvrdMGGTTwr{9Z=&3jS-Eb51) zaA)pstJ)X$#DHmJp*X1#Pb_E@#iqY5vNA5)o{kZznENVj?KV4&@9=Q%5!BMkMM*B0 zrok1=zi7tBH8pbOmYnrJ@4~|dSayEU6X}xeE!E4RiLAA#zF@oQa3Lu~taR9GePE}2 z{QWeTv8HAG+@-rhuRM)@q3)T8<>g@M3ueu)(mOFYnXGLhkOOo^g5%u80b!)~N$QNr zxkD>Fn=T+QO3$er*uv)R?VZZ=@YWCqeo^S?VXO8pu?0ELN8>kQ60AFb<5)w-3^YH# zcb5OuP(t*@j;Pi?HywP>E39d&V|<0Z&fu>j!u%7ZaI$La%t%CZS-=CmO0M9*t&z8t zY+350iZeA8RF4#)*_}A97j}189ZO3qVCP(t8wPv6RNbI3AIdpLR>M;I3oUh<^6r-Y zZ0&b9^hZm!S^W8TC;>>V-&%%mN2=F7X&7}QM**0g_E?{>_wnepE5$kPZV6@?gJZh& zYvvJ=NCZzZZsj0G5@Jdlr1gK8Q8(s$*L!r3JAvU)@=KSNj>@uEs~=~w7xtu=L`d)`#DV9;q3h54sLP*;T%(OTW0wb<0`<<$9r~EDuZe!9GhwF&|N|xBbk) zwB=lUySEQGbBvpdXn0yqN7hs?04vPzXx&g+Dfx6>=-hW9cCvj%Kf;pOMf*UU7ZpA~ z!1WFFB|AMG1U`1Rox68`*HN-eLyy+5Z&UN0Iy?WkxZPK$n+bboJeVjwFo-U?NS(A! zP^9J5xJjK|L&)q5Jrbwe6G>pX;TI{WIqKC0X+2m>g)kT$Ip4?P{@BKL>u zbM#|FLqmA13GX;@XKONi+Wu5{3x_b($lBVPU==A^{&{vKw%F`BsPrhYJjZ*VdZKebO`e{u>bl1c;WGax@GjxlScKZ8crj>44~7Ga zK>?S9L&Z2uo*9apSKyN5g*7h4cZgdnrI!WfBp^!=pl*3bU8t$>P#Lqaa4OCco|$Q{DTOxeq?%jPw>IaK9%fAv3A zzhPvgV7NbGW?xTq_zJg;ZuG3Dp_}SC!6Yx3{t2nta9f+odS<(^{*r(B{r8V@h|#LF z`yuD#1Vks_xovatmB@ z3ug0#vF`9>$;m6|0NQy#WbuoPaip+J{&(Ju3n7{ke{yQaGHRCO_d5-FfLNPqjVc{Q zz3L4HS!i|Dyg*WCqCC>=24@w1Q-O~n?3JmJU{ga520xUT_L#?4lMIlap7#+;glO*5 zbhA%xM%=s~;zIJv$tgT-k`S4fXd*Vzr}AYrcszp#eryit=0=h?=5uH(L&F%8M*k@Y zhKRNw!n^1|o81ZxN{!Pb_OP%Nx4t%>!*$hQCbh6@C zPjq^T*l5sEN*g7kpGu_1P1U>}>*6%Oi;Pp*!9V)K&+J?65r_1wzkNoTGQpLeGUEP&lO=DD#N5L@BW8r8NYC{wT;dt{r zALk$)8&QoJB99_-*(CB-C3jn6s+c~;)IV-7+AxpzGrzv94(8b_!d7iw3+Dr5%p=*J zc%sKb$wf%w7pMf%%?=;3xf!Vv&dr-0YKI*S!Dq_KRBy;g+yO3~Bckr6dV}L}Izlm- z>Cl+ZYnz>4;7=1BE87sONi~$`A67@wJEPke$g`)DUILXN0S|`l7H{<2*x2bPK9`f0 zt9>^uN4}eT9iz4MZz2|e_$o!^6ZN&5FQOjy)1f!sh|O%u60ZAgV4}2G=Wn#JRA4Ly zbG;Zx1drIAX1y&?8t(*uh#P)RpLO!}#Me)|g8pv(zjk z(K{h&hc|(=?9k)(t>RscQ1(Yr`qWr?B`J|j2?4Yu)+E$ltH52F`kT!-2aWZnv5i~1 z$$Il^+2M+BY_k_oR%bUe6O(U&3|4`rfsyJbejgbq71fbRH1H|wJ<$}jF37UKu|kSA zH`&_t0AO`Np$Y{~zD4-GyNy${_mYU8Pb{jgFM;2$@F4X}1fNn~6cRZ`PC8!mjB8h< zA677S?w?V$ygJq1bG>{M?zA?$&U&VnlPhU~`Le+qetyG5g55PyeJ#1LNw=xvZfQV(-)3V!A+Ybd5DutPY#ADfPL8vr zCzKsM63J19v#v0&Ki#{(OgJUr$6mHL-eiBvCD{_%GP&w5=dE_()Mr%*ue^Xy*@ybb z#Eo2Qb?3%gfn{g0_tF~5bw7zjqL?>2Ht+)3cc<1Ss&ZHY0>Bf$so2qh1qy?-9>@k+ zXi3W<4avSw97BPZtm&WFBO_XE+H&Sx8KJy8Y-YKi;#RX_e*w;CHZv{*9kv$a^_i#n zs`uBrjXr-Kqc_(Xe7qJZm?>ZJJNs;Ln?i5Jx@ab4(yr!Lw;Rtl(ZQ9eVwD&}S8F)@ z*_0{GqAA?|!SbMilU|b$>=4HCDOZf4(DF6fG|R6z>kQP*oQiY-(sgxs#)4ILx0l9# zA_n9qud8}m4lzQ>o60QVdH#&NUULHlld6vrtW_d|n$H9JcfwKC4WV%tX*$vUsv+WK zp?Z?vH)?ev)ZYd>e|dS$SMdIt?QPEuclafK5YQ!l$3?oTJ;~n8B}c>iO4UsVPLxy{ zKWAIds_?ALlbdX4FxakMh|)){U=a%X-UyWZYa3j4{*La*^b)hoh@;Mv^hGO!s6l22 z*U6qjUSU8OFZ1!`;;o5ZS8-QkS5)TtU*519y}{i(6Bb5&fAm8scGuwFw(uur$?XTZ ztl8!`dYL3{tA6!_q&0Vr(Mm`CG*{!#Z$4>RC*`R&%7N(`jy{aSO0D#d`p=AaIN{7;Ff!7-@pGs;X|gS zdM)XwvQJB`O$jmjdJSEHsTOzdDrX#+BwV1oPs+`F0G^4HuZDvrvCAxI8 zS+2mR0hyaiTWLV&fBVL{`Hesz(1@YvA(R~wI4c$?ddy!;qn_1paYMY96XSYQZ-KZe ztx^9{ZE<6L0G5zLMg+71N!suj2P13`=vR>l9m%e5f{)OxJOdBl_3tsDZFZlEtLB&j z^CYhxpBEpS56-zHE8@wI+AJSE0$o^WlBoG3obv=}M@?1r?vx&y>}taJEZG1k1qksK zInmc^rY1ZXp)$7?d_>?C7W1=trz1f3ecIKxR{Gpi;PCZPgLK2v8lQHKe8W=04hGm( zyL}R%gxbL{P_K&&(@yKMwQ8@I3fU3n|ahVXa zrzS~n^HCGZ5INm(hvkTiDvJwNEYzLPLmwYV=Plag=H!UX5eTbpR<~-#-b~q`R<|Bo zHiFRb?+1n*j0#Ar$%Q_eHVkxvxkB%2pZ#HZLY&dW!=pU1N>&7#)TsvSkjXyed<8Dr z6U`c7LtMow8CI+dkV;ufc4tS!S^TSHH=e|DiP5o|mKa1hKJdSKraRr~USRenVbEk) zdbTJSIyn+ZX%fZ7r@R5JDFnfD~EMjv>pWkVB zYgO4FI=W7%L=SB*;+BT`05jT9hGLye=~mx^#D<}-n!vrg;0F!~OJY;8mimvFMa1qy z2WZbX>sK6;OGK_7eJTHA*p`3%Zff_RwsPl%oSdBZc)@=HeSXjsc^D<%ME>y$1I~9$ z%JP?1kZ-@8q#gI#*oTdHl6|G?G>gy5vxg7OLMVO><1|Y9jw#X(me?%O3Ptu2%ejo4 ziL+=&lHM-0pd*nxaFaq&pl(PBBb}sn@)0JylU#J$QI4HBPb*a zJ3e1F3^@{0Gd$>FRp<{ILasbVYE90=Lau)E9WC6bDtEqiEo1s6Tj+h3BP<|Ml&cY? zb4cMkNWc18Z+_QD(3&vRF=jnuw?WHUPnDmXy+dRwn$`mBZnY@f1|9UWP{*$)xFEql zL*{i#zn4+PlT2>F?I~A$>>1ypaqC#{i=tquiVDy7c7P@%g#OkR3N2xaK&iW8e;Tg*Cz?L+*u*Ss(JTocNHy*`{6MjnKefr-09mPQ$dq# z2cO1k_dcK>3%m;nssBXm0BHB~FF)()C%0=69v0JFFNrv$y(DTwBIpM4txQu||Q6n2~a*g5f|&Ud&b zc~}^*qp;Ym(j$-yrcaG2!>v4rnq$N+Bi_D$?*X?58kR|#e*!YTIY@g^*0@->$+#M$iV>+@VDj` znwyXtcRp!t13!HqUTI3?R5P>uoYdXB^zfd>-8?0;H~$woYPL-P diff --git a/e2e/visual-comparison/sheets/sheets-visual-comparison.spec.ts-snapshots/default-sheet-fullpage-ci-chromium-linux.png b/e2e/visual-comparison/sheets/sheets-visual-comparison.spec.ts-snapshots/default-sheet-fullpage-ci-chromium-linux.png index a3751bded9e4b8e644a9fdf031c6a1e0bf1aaaa6..03e06c1b49c3cb562baee543eddf79f325359e5b 100644 GIT binary patch delta 17269 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 QjLFF;N&k~4Y54a40L^p~1ONa4 diff --git a/examples/package.json b/examples/package.json index 53fce71212..00468bd243 100644 --- a/examples/package.json +++ b/examples/package.json @@ -27,7 +27,6 @@ "@univerjs/docs-drawing-ui": "workspace:*", "@univerjs/docs-hyper-link-ui": "workspace:*", "@univerjs/docs-mention-ui": "workspace:*", - "@univerjs/docs-quick-insert-ui": "workspace:*", "@univerjs/docs-thread-comment-ui": "workspace:*", "@univerjs/docs-ui": "workspace:*", @@ -36,7 +35,7 @@ "@univerjs/engine-formula": "workspace:*", "@univerjs/engine-render": "workspace:*", "@univerjs/find-replace": "workspace:*", - "@univerjs/icons": "0.3.23", + "@univerjs/icons": "0.3.24", "@univerjs/mockdata": "workspace:*", "@univerjs/network": "workspace:*", "@univerjs/rpc": "workspace:*", diff --git a/package.json b/package.json index 9f02100619..8020fb5431 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@types/fs-extra": "^11.0.4", "@types/node": "^22.15.3", "@types/react": "^19.1.2", - "@types/react-dom": "^19.1.2", + "@types/react-dom": "^19.1.3", "@univerjs-infra/shared": "workspace:*", "@univerjs/design": "workspace:*", "@vitejs/plugin-react": "^4.4.1", @@ -72,7 +72,7 @@ "fs-extra": "^11.3.0", "husky": "^9.1.7", "lint-staged": "^15.5.1", - "posthog-node": "^4.14.0", + "posthog-node": "^4.15.0", "react": "^19.1.0", "react-dom": "^19.1.0", "release-it": "^17.11.0", diff --git a/packages-experimental/action-recorder/package.json b/packages-experimental/action-recorder/package.json index c73998499f..ad0f3f7d81 100644 --- a/packages-experimental/action-recorder/package.json +++ b/packages-experimental/action-recorder/package.json @@ -80,7 +80,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages-experimental/debugger/package.json b/packages-experimental/debugger/package.json index c5938a6004..2354700032 100644 --- a/packages-experimental/debugger/package.json +++ b/packages-experimental/debugger/package.json @@ -85,7 +85,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2", "vue": "^3.5.13" } diff --git a/packages-experimental/sheets-source-binding/package.json b/packages-experimental/sheets-source-binding/package.json index 3cd7662a51..e57b53f0b7 100644 --- a/packages-experimental/sheets-source-binding/package.json +++ b/packages-experimental/sheets-source-binding/package.json @@ -77,7 +77,7 @@ "@univerjs-infra/shared": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages-experimental/uni-docs-ui/package.json b/packages-experimental/uni-docs-ui/package.json index aad01ef756..72076fff79 100644 --- a/packages-experimental/uni-docs-ui/package.json +++ b/packages-experimental/uni-docs-ui/package.json @@ -73,7 +73,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages-experimental/uni-formula-ui/package.json b/packages-experimental/uni-formula-ui/package.json index 9cb7898a0e..d4e701a1d1 100644 --- a/packages-experimental/uni-formula-ui/package.json +++ b/packages-experimental/uni-formula-ui/package.json @@ -85,7 +85,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages-experimental/uni-formula/package.json b/packages-experimental/uni-formula/package.json index 8e0f6a31fe..fe81c9a4ca 100644 --- a/packages-experimental/uni-formula/package.json +++ b/packages-experimental/uni-formula/package.json @@ -61,7 +61,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages-experimental/uni-sheets-ui/package.json b/packages-experimental/uni-sheets-ui/package.json index cfa3191b23..4aafdb03c8 100644 --- a/packages-experimental/uni-sheets-ui/package.json +++ b/packages-experimental/uni-sheets-ui/package.json @@ -78,7 +78,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages-experimental/uni-slides-ui/package.json b/packages-experimental/uni-slides-ui/package.json index 42a142b69a..5c802c88ff 100644 --- a/packages-experimental/uni-slides-ui/package.json +++ b/packages-experimental/uni-slides-ui/package.json @@ -74,7 +74,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages-experimental/uniui/package.json b/packages-experimental/uniui/package.json index 716b8c27c0..53c43f3bee 100644 --- a/packages-experimental/uniui/package.json +++ b/packages-experimental/uniui/package.json @@ -79,7 +79,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/core/package.json b/packages/core/package.json index ad41c97272..854258aace 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -94,7 +94,7 @@ "@univerjs-infra/shared": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/data-validation/package.json b/packages/data-validation/package.json index 38e9c81281..02646986d1 100644 --- a/packages/data-validation/package.json +++ b/packages/data-validation/package.json @@ -70,7 +70,7 @@ "@univerjs/sheets": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/design/package.json b/packages/design/package.json index 387ca71a4f..2d51a935de 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -102,7 +102,7 @@ "tailwindcss": "^3.4.17", "tailwindcss-animate": "^1.0.7", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/docs-drawing-ui/package.json b/packages/docs-drawing-ui/package.json index e981acf037..cb51d60a30 100644 --- a/packages/docs-drawing-ui/package.json +++ b/packages/docs-drawing-ui/package.json @@ -85,7 +85,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/docs-drawing/package.json b/packages/docs-drawing/package.json index 90e630ea6b..3fc0694e2e 100644 --- a/packages/docs-drawing/package.json +++ b/packages/docs-drawing/package.json @@ -62,7 +62,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/docs-hyper-link-ui/package.json b/packages/docs-hyper-link-ui/package.json index 75f1bd7c2a..30ae6a11bb 100644 --- a/packages/docs-hyper-link-ui/package.json +++ b/packages/docs-hyper-link-ui/package.json @@ -82,7 +82,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/docs-hyper-link/package.json b/packages/docs-hyper-link/package.json index d4940f3ebb..a318add5c6 100644 --- a/packages/docs-hyper-link/package.json +++ b/packages/docs-hyper-link/package.json @@ -61,7 +61,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/docs-mention-ui/package.json b/packages/docs-mention-ui/package.json index fad07b452a..a2171a29d2 100644 --- a/packages/docs-mention-ui/package.json +++ b/packages/docs-mention-ui/package.json @@ -75,7 +75,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/docs-quick-insert-ui/package.json b/packages/docs-quick-insert-ui/package.json index befa63fea0..ec0a9038f1 100644 --- a/packages/docs-quick-insert-ui/package.json +++ b/packages/docs-quick-insert-ui/package.json @@ -85,7 +85,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/docs-thread-comment-ui/package.json b/packages/docs-thread-comment-ui/package.json index e8834ecfa5..92b41b95a3 100644 --- a/packages/docs-thread-comment-ui/package.json +++ b/packages/docs-thread-comment-ui/package.json @@ -76,7 +76,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/docs-ui/package.json b/packages/docs-ui/package.json index 99eb52f590..a064f9fb38 100644 --- a/packages/docs-ui/package.json +++ b/packages/docs-ui/package.json @@ -97,7 +97,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/docs-ui/src/views/count-bar/CountBar.tsx b/packages/docs-ui/src/views/count-bar/CountBar.tsx index 838df4f97b..41bdacfd64 100644 --- a/packages/docs-ui/src/views/count-bar/CountBar.tsx +++ b/packages/docs-ui/src/views/count-bar/CountBar.tsx @@ -24,7 +24,7 @@ interface ICountBarProps { export function CountBar(_props: ICountBarProps) { return ( -
+
); diff --git a/packages/docs/package.json b/packages/docs/package.json index 09a6315798..e598188212 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -68,7 +68,7 @@ "@univerjs-infra/shared": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/drawing-ui/package.json b/packages/drawing-ui/package.json index 58c1530cc0..37d76122a5 100644 --- a/packages/drawing-ui/package.json +++ b/packages/drawing-ui/package.json @@ -81,7 +81,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/drawing/package.json b/packages/drawing/package.json index 274cc68bca..0955cf3867 100644 --- a/packages/drawing/package.json +++ b/packages/drawing/package.json @@ -66,7 +66,7 @@ "@univerjs-infra/shared": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/engine-formula/package.json b/packages/engine-formula/package.json index 3cfaa1c1ef..580f5cfd66 100644 --- a/packages/engine-formula/package.json +++ b/packages/engine-formula/package.json @@ -83,7 +83,7 @@ "@univerjs-infra/shared": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/engine-numfmt/package.json b/packages/engine-numfmt/package.json index 123c4050dc..03b114481b 100644 --- a/packages/engine-numfmt/package.json +++ b/packages/engine-numfmt/package.json @@ -60,7 +60,7 @@ "devDependencies": { "@univerjs-infra/shared": "workspace:*", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/engine-render/package.json b/packages/engine-render/package.json index 548f1a464b..debf0cbfbb 100644 --- a/packages/engine-render/package.json +++ b/packages/engine-render/package.json @@ -73,7 +73,7 @@ "@univerjs-infra/shared": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" }, "browser": { diff --git a/packages/find-replace/package.json b/packages/find-replace/package.json index b64cda7b04..52ed0f493c 100644 --- a/packages/find-replace/package.json +++ b/packages/find-replace/package.json @@ -81,7 +81,7 @@ "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/network/package.json b/packages/network/package.json index bc9386654c..3d48ad3c0c 100644 --- a/packages/network/package.json +++ b/packages/network/package.json @@ -77,7 +77,7 @@ "@univerjs-infra/shared": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/rpc-node/package.json b/packages/rpc-node/package.json index df967308a1..ff4fb848e0 100644 --- a/packages/rpc-node/package.json +++ b/packages/rpc-node/package.json @@ -66,7 +66,7 @@ "@univerjs-infra/shared": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/rpc/package.json b/packages/rpc/package.json index 74f1073cc7..49b7013e29 100644 --- a/packages/rpc/package.json +++ b/packages/rpc/package.json @@ -66,7 +66,7 @@ "@univerjs-infra/shared": "workspace:*", "rxjs": "^7.8.1", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/sheets-conditional-formatting-ui/package.json b/packages/sheets-conditional-formatting-ui/package.json index f8a8603f0c..9a609ed282 100644 --- a/packages/sheets-conditional-formatting-ui/package.json +++ b/packages/sheets-conditional-formatting-ui/package.json @@ -85,13 +85,12 @@ "devDependencies": { "@types/react-grid-layout": "^1.3.5", "@univerjs-infra/shared": "workspace:*", - "less": "^4.3.0", "postcss": "^8.5.3", "react": "18.3.1", "rxjs": "^7.8.1", "tailwindcss": "^3.4.17", "typescript": "^5.8.3", - "vite": "^6.3.3", + "vite": "^6.3.4", "vitest": "^3.1.2" } } diff --git a/packages/sheets-conditional-formatting-ui/src/components/conditional-style-editor/index.module.less b/packages/sheets-conditional-formatting-ui/src/components/conditional-style-editor/index.module.less deleted file mode 100644 index 8172758083..0000000000 --- a/packages/sheets-conditional-formatting-ui/src/components/conditional-style-editor/index.module.less +++ /dev/null @@ -1,18 +0,0 @@ -.cf-style-edit { - display: flex; - justify-content: space-between; - margin: 10px 0px; - .button-item { - cursor: pointer; - border-radius: var(--border-radius-base); - display: flex; - align-items: center; - padding: 0px 3px; - &:hover { - background-color: rgb(var(--grey-100)); - } - } - .isActive { - background-color: rgb(var(--grey-100)); - } -} diff --git a/packages/sheets-conditional-formatting-ui/src/components/conditional-style-editor/index.tsx b/packages/sheets-conditional-formatting-ui/src/components/conditional-style-editor/index.tsx index 5edde0611a..4bb494ef53 100644 --- a/packages/sheets-conditional-formatting-ui/src/components/conditional-style-editor/index.tsx +++ b/packages/sheets-conditional-formatting-ui/src/components/conditional-style-editor/index.tsx @@ -21,7 +21,6 @@ import { removeUndefinedAttr } from '@univerjs/sheets-conditional-formatting'; import { ComponentManager, useDependency } from '@univerjs/ui'; import { useEffect, useState } from 'react'; import { ColorPicker } from '../color-picker'; -import styles from './index.module.less'; interface IConditionalStyleEditorProps { className?: string; @@ -101,13 +100,16 @@ export const ConditionalStyleEditor = (props: IConditionalStyleEditorProps) => { } onChange(removeUndefinedAttr(resultStyle)); }, [isBold, isItalic, isUnderline, isStrikethrough, fontColor, bgColor]); + + const buttonItemClassName = 'univer-flex univer-cursor-pointer univer-items-center univer-rounded univer-px-1'; + return ( -
+
{BoldSingleIcon && (
isBoldSet(getAnotherBooleanNumber(isBold))} > @@ -115,7 +117,9 @@ export const ConditionalStyleEditor = (props: IConditionalStyleEditorProps) => { )} {ItalicSingleIcon && (
isItalicSet(getAnotherBooleanNumber(isItalic))} > @@ -123,7 +127,9 @@ export const ConditionalStyleEditor = (props: IConditionalStyleEditorProps) => { )} {UnderlineSingleIcon && (
isUnderlineSet(getAnotherBooleanNumber(isUnderline))} > @@ -131,7 +137,9 @@ export const ConditionalStyleEditor = (props: IConditionalStyleEditorProps) => { )} {StrikethroughSingle && (
isStrikethroughSet(getAnotherBooleanNumber(isStrikethrough))} > diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/index.module.less b/packages/sheets-conditional-formatting-ui/src/components/panel/index.module.less deleted file mode 100644 index fbf9e71a2d..0000000000 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/index.module.less +++ /dev/null @@ -1,45 +0,0 @@ -.conditional-formatting-wrap { - height: 100%; - display: flex; - flex-direction: column; - justify-content: space-between; - - .cf-rule-item { - display: flex; - justify-content: space-between; - align-items: center; - .preview { - flex-shrink: 0; - } - } - .create-rule { - margin-bottom: 20px; - .button { - border: 1px solid rgb(var(--border-color)); - border-radius: var(--border-radius-base); - display: flex; - align-items: center; - justify-content: center; - padding: var(--padding-base); - cursor: pointer; - font-size: var(--font-size-sm); - } - } - .title { - margin-top: var(--margin-base); - font-size: 15px; - color: rgb(var(--text-color-secondary)); - } - .label { - font-size: 12px; - margin-top: var(--margin-sm); - color: rgb(var(--text-color-secondary)); - } - .label-container { - display: flex; - align-items: center; - .input-width { - width: 100px; - } - } -} diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/index.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/index.tsx index 37493f2b9f..2fb6aa95dd 100644 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/index.tsx +++ b/packages/sheets-conditional-formatting-ui/src/components/panel/index.tsx @@ -14,11 +14,10 @@ * limitations under the License. */ -import React, { useState } from 'react'; import type { IConditionFormattingRule } from '@univerjs/sheets-conditional-formatting'; -import styles from './index.module.less'; -import { RuleList } from './rule-list'; +import { useState } from 'react'; import { RuleEdit } from './rule-edit'; +import { RuleList } from './rule-list'; interface IConditionFormattingPanelProps { rule?: IConditionFormattingRule }; @@ -41,7 +40,7 @@ export const ConditionFormattingPanel = (props: IConditionFormattingPanelProps) }; return ( -
+
{isShowRuleEditor ? ( diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/ColorScale.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/ColorScale.tsx index 0b5e344edd..1c7a2a1654 100644 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/ColorScale.tsx +++ b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/ColorScale.tsx @@ -19,15 +19,14 @@ import type { IColorScale, IConditionalFormattingRuleConfig } from '@univerjs/sh import type { IFormulaEditorRef } from '@univerjs/sheets-formula-ui'; import type { IStyleEditorProps } from './type'; import { IUniverInstanceService, LocaleService, UniverInstanceType } from '@univerjs/core'; -import { clsx, InputNumber, Select } from '@univerjs/design'; +import { InputNumber, Select } from '@univerjs/design'; import { CFRuleType, CFValueType, createDefaultValueByValueType } from '@univerjs/sheets-conditional-formatting'; import { FormulaEditor } from '@univerjs/sheets-formula-ui'; import { useDependency, useSidebarClick } from '@univerjs/ui'; import { useEffect, useMemo, useRef, useState } from 'react'; import { ColorPicker } from '../../color-picker'; import { Preview } from '../../preview'; -import stylesBase from '../index.module.less'; -import styles from './index.module.less'; +import { previewClassName } from './styles'; const createOptionItem = (text: string, localeService: LocaleService) => ({ label: localeService.t(`sheet.cf.valueType.${text}`), value: text }); @@ -57,16 +56,16 @@ const TextInput = (props: { id: string; type: CFValueType | 'none'; value: numbe }, [type]); const formulaEditorRef = useRef(null); - const [isFocusFormulaEditor, isFocusFormulaEditorSet] = useState(false); + const [isFocusFormulaEditor, setIsFocusFormulaEditor] = useState(false); useSidebarClick((e: MouseEvent) => { const isOutSide = formulaEditorRef.current?.isClickOutSide(e); - isOutSide && isFocusFormulaEditorSet(false); + isOutSide && setIsFocusFormulaEditor(false); }); if (type === CFValueType.formula) { return ( -
+
isFocusFormulaEditorSet(true)} + onFocus={() => setIsFocusFormulaEditor(true)} ref={formulaEditorRef} />
@@ -95,14 +94,14 @@ export const ColorScaleStyleEditor = (props: IStyleEditorProps) => { const medianOptions = [createOptionItem('none', localeService), ...commonOptions]; const maxOptions = [createOptionItem(CFValueType.max, localeService), ...commonOptions]; - const [minType, minTypeSet] = useState(() => { + const [minType, setMinType] = useState(() => { const defaultV = CFValueType.min; if (!rule) { return defaultV; } return rule.config[0]?.value.type || defaultV; }); - const [medianType, medianTypeSet] = useState(() => { + const [medianType, setMedianType] = useState(() => { const defaultV = 'none'; if (!rule) { return defaultV; @@ -112,7 +111,7 @@ export const ColorScaleStyleEditor = (props: IStyleEditorProps) => { } return rule.config[1]?.value.type || defaultV; }); - const [maxType, maxTypeSet] = useState(() => { + const [maxType, setMaxType] = useState(() => { const defaultV = CFValueType.max; if (!rule) { return defaultV; @@ -120,7 +119,7 @@ export const ColorScaleStyleEditor = (props: IStyleEditorProps) => { return rule.config[rule.config.length - 1]?.value.type || defaultV; }); - const [minValue, minValueSet] = useState(() => { + const [minValue, setMinValue] = useState(() => { const defaultV = 10; if (!rule) { return defaultV; @@ -128,7 +127,7 @@ export const ColorScaleStyleEditor = (props: IStyleEditorProps) => { const valueConfig = rule.config[0]; return valueConfig?.value.value === undefined ? defaultV : valueConfig?.value.value; }); - const [medianValue, medianValueSet] = useState(() => { + const [medianValue, setMedianValue] = useState(() => { const defaultV = 50; if (!rule) { return defaultV; @@ -139,7 +138,7 @@ export const ColorScaleStyleEditor = (props: IStyleEditorProps) => { const v = rule.config[1]?.value.value; return v === undefined ? defaultV : v; }); - const [maxValue, maxValueSet] = useState(() => { + const [maxValue, setMaxValue] = useState(() => { const defaultV = 90; if (!rule) { return defaultV; @@ -148,14 +147,14 @@ export const ColorScaleStyleEditor = (props: IStyleEditorProps) => { return v === undefined ? defaultV : v; }); - const [minColor, minColorSet] = useState(() => { + const [minColor, setMinColor] = useState(() => { const defaultV = '#d0d9fb'; if (!rule) { return defaultV; } return rule.config[0]?.color || defaultV; }); - const [medianColor, medianColorSet] = useState(() => { + const [medianColor, setMedianColor] = useState(() => { const defaultV = '#7790f3'; if (!rule) { return defaultV; @@ -165,7 +164,7 @@ export const ColorScaleStyleEditor = (props: IStyleEditorProps) => { } return rule.config[1]?.color || defaultV; }); - const [maxColor, maxColorSet] = useState(() => { + const [maxColor, setMaxColor] = useState(() => { const defaultV = '#2e55ef'; if (!rule) { return defaultV; @@ -217,29 +216,24 @@ export const ColorScaleStyleEditor = (props: IStyleEditorProps) => { }; return (
-
{localeService.t('sheet.cf.panel.styleRule')}
-
+
+ {localeService.t('sheet.cf.panel.styleRule')} +
+
-
{localeService.t('sheet.cf.valueType.min')}
-
+
+ {localeService.t('sheet.cf.valueType.min')} +
+
{ - medianTypeSet(v as CFValueType); + setMedianType(v as CFValueType); const value = createDefaultValueByValueType(v as CFValueType, 50); - medianValueSet(value); - handleChange({ minType, medianType: v as CFValueType, maxType, minValue, medianValue: value, maxValue, minColor, medianColor, maxColor }); + setMedianValue(value); + handleChange({ + minType, + medianType: v as CFValueType, + maxType, + minValue, + medianValue: value, + maxValue, + minColor, + medianColor, + maxColor, + }); }} /> @@ -287,8 +286,18 @@ export const ColorScaleStyleEditor = (props: IStyleEditorProps) => { value={medianValue} type={medianType} onChange={(v) => { - medianValueSet(v); - handleChange({ minType, medianType, maxType, minValue, medianValue: v, maxValue, minColor, medianColor, maxColor }); + setMedianValue(v); + handleChange({ + minType, + medianType, + maxType, + minValue, + medianValue: v, + maxValue, + minColor, + medianColor, + maxColor, + }); }} /> {medianType !== 'none' && ( @@ -296,29 +305,44 @@ export const ColorScaleStyleEditor = (props: IStyleEditorProps) => { className="univer-ml-1" color={medianColor} onChange={(v) => { - medianColorSet(v); - handleChange({ minType, medianType, maxType, minValue, medianValue, maxValue, minColor, medianColor: v, maxColor }); + setMedianColor(v); + handleChange({ + minType, + medianType, + maxType, + minValue, + medianValue, + maxValue, + minColor, + medianColor: v, + maxColor, + }); }} /> )}
-
{localeService.t('sheet.cf.valueType.max')}
-
+
{localeService.t('sheet.cf.valueType.max')}
+
{ setMinValueType(v as CFValueType); const value = createDefaultValueByValueType(v as CFValueType, 10); minValueSet(value); - _handleChange({ isGradient, minValue: value, minValueType: v as CFValueType, maxValue, maxValueType, positiveColor, nativeColor, isShowValue }); + _handleChange({ + isGradient, + minValue: value, + minValueType: v as CFValueType, + maxValue, + maxValueType, + positiveColor, + nativeColor, + isShowValue, + }); }} /> { minValueSet(v || 0); - _handleChange({ isGradient, minValue: v || 0, minValueType, maxValue, maxValueType, positiveColor, nativeColor, isShowValue }); + _handleChange({ + isGradient, + minValue: v || 0, + minValueType, + maxValue, + maxValueType, + positiveColor, + nativeColor, + isShowValue, + }); }} />
-
{localeService.t('sheet.cf.valueType.max')}
+
{localeService.t('sheet.cf.valueType.max')}
{ - textErrorSet(''); + setTextError(''); _onChange(v); }} /> @@ -134,9 +133,9 @@ const HighlightCellInput = (props: { case CFSubRuleType.number: { if ([CFNumberOperator.equal, CFNumberOperator.notEqual, CFNumberOperator.greaterThan, CFNumberOperator.greaterThanOrEqual, CFNumberOperator.lessThan, CFNumberOperator.lessThanOrEqual].includes(operator as CFNumberOperator)) { const _onChange = (value: number | null) => { - inputNumberValueSet(value || 0); + setInputNumberValue(value || 0); onChange(value || 0); - numberErrorSet(''); + setNumberError(''); }; return (
@@ -154,24 +153,19 @@ const HighlightCellInput = (props: { } if ([CFNumberOperator.between, CFNumberOperator.notBetween].includes(operator as CFNumberOperator)) { const onChangeMin = (_value: number | null) => { - inputNumberMinSet(_value || 0); + setInputNumberMin(_value || 0); const value: [number, number] = [_value || 0, inputNumberMax]; onChange(value); - numberMinErrorSet(''); + setNumberMinError(''); }; const onChangeMax = (_value: number | null) => { - inputNumberMaxSet(_value || 0); + setInputNumberMax(_value || 0); const value: [number, number] = [inputNumberMin, _value || 0]; onChange(value); - numberMaxErrorSet(''); + setNumberMaxError(''); }; return ( -
+
@@ -285,7 +279,7 @@ export const HighlightCellStyleEditor = (props: IStyleEditorProps({}); + const [style, setStyle] = useState({}); const getResult = useMemo(() => (option: { subType?: string; operator?: string; value?: IValue; style?: IHighlightCell['style'] }) => { switch (option.subType || subType) { @@ -373,12 +367,7 @@ export const HighlightCellStyleEditor = (props: IStyleEditorProps -
+
{localeService.t('sheet.cf.panel.styleRule')}
@@ -397,19 +386,23 @@ export const HighlightCellStyleEditor = (props: IStyleEditorProps )}
- -
+ +
{ - styleSet(v); + setStyle(v); onChange(getResult({ style: v })); }} /> diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/IconSet.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/IconSet.tsx index 30df4462a3..de45138a5b 100644 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/IconSet.tsx +++ b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/IconSet.tsx @@ -36,8 +36,6 @@ import { import { FormulaEditor } from '@univerjs/sheets-formula-ui'; import { ILayoutService, useDependency, useScrollYOverContainer, useSidebarClick } from '@univerjs/ui'; import { forwardRef, useEffect, useMemo, useRef, useState } from 'react'; -import stylesBase from '../index.module.less'; -import styles from './index.module.less'; const getIcon = (iconType: string, iconId: string | number) => { const arr = iconMap[iconType] || []; @@ -45,15 +43,11 @@ const getIcon = (iconType: string, iconId: string | number) => { }; const TextInput = (props: { id: number; type: CFValueType; value: number | string; onChange: (v: number | string) => void; error?: string }) => { + const { error, type, onChange } = props; + const univerInstanceService = useDependency(IUniverInstanceService); const unitId = univerInstanceService.getCurrentUnitForType(UniverInstanceType.UNIVER_SHEET)!.getUnitId(); const subUnitId = univerInstanceService.getCurrentUnitForType(UniverInstanceType.UNIVER_SHEET)!.getActiveSheet()?.getSheetId(); - const className = useMemo(() => { - if (props.error) { - return styles.errorInput; - } - return ''; - }, [props.error]); const formulaEditorRef = useRef(null); const [isFocusFormulaEditor, isFocusFormulaEditorSet] = useState(false); @@ -63,14 +57,20 @@ const TextInput = (props: { id: number; type: CFValueType; value: number | strin isOutSide && isFocusFormulaEditorSet(false); }); return ( -
- {props.type !== CFValueType.formula +
+ {type !== CFValueType.formula ? ( <> - props.onChange(v ?? 0)} /> - {props.error && ( -
- {props.error} + onChange(v ?? 0)} + /> + {error && ( +
+ {error}
)} @@ -78,16 +78,16 @@ const TextInput = (props: { id: number; type: CFValueType; value: number | strin : (
{ const formula = v || ''; - props.onChange(formula); + onChange(formula); }} onFocus={() => isFocusFormulaEditorSet(true)} - ref={formulaEditorRef} />
)} @@ -101,35 +101,46 @@ const createDefaultConfigItem = (iconType: IIconType, index: number, list: unkno iconId: String(index), }); -interface IconGroupListProps { +interface IIconGroupListProps { onClick: (iconType: IIconType) => void; iconType?: IIconType; }; -const IconGroupList = forwardRef((props, ref) => { +const IconGroupList = forwardRef((props, ref) => { + const { onClick } = props; const localeService = useDependency(LocaleService); const handleClick = (iconType: IIconType) => { - props.onClick(iconType); + onClick(iconType); }; return ( -
+
{iconGroup.map((group, index) => { return ( -
-
{localeService.t(group.title)}
-
+
+
{localeService.t(group.title)}
+
{group.group.map((groupItem) => { return ( -
{ handleClick(groupItem.name); }}> -
+
{ handleClick(groupItem.name); }} + > + {groupItem.list.map((base64, index) => ( ))} -
+
); })} @@ -143,6 +154,8 @@ const IconGroupList = forwardRef((props, ref }); const IconItemList = (props: { onClick: (iconType: IIconType, iconId: string) => void; iconType?: IIconType; iconId: string }) => { + const { onClick } = props; + const list = useMemo(() => { const result: { iconType: IIconType; iconId: string; base64: string }[] = []; for (const key in iconMap) { @@ -158,28 +171,40 @@ const IconItemList = (props: { onClick: (iconType: IIconType, iconId: string) => } return result; }, []); + const handleClick = (item: typeof list[0]) => { - props.onClick(item.iconType, item.iconId); + onClick(item.iconType, item.iconId); }; + return ( -
-
handleClick({ iconType: EMPTY_ICON_TYPE as any, iconId: '', base64: '' })}> +
+
handleClick({ iconType: EMPTY_ICON_TYPE as any, iconId: '', base64: '' })} + > - 无单元格图标 + 无单元格图标
-
+
{list.map((item) => ( -
+
handleClick(item)} src={item.base64} + draggable={false} + onClick={() => handleClick(item)} />
))}
- ); }; @@ -235,8 +260,8 @@ const IconSetRuleEdit = (props: { >
{!isFirst && !isEnd && localeService.t('sheet.cf.iconSet.rule')} {!isFirst && !isEnd && ( - + ( {localeService.t('sheet.cf.iconSet.when')} {localeService.t(`sheet.cf.symbol.${getOppositeOperator(preItem.operator)}`)} @@ -272,8 +297,22 @@ const IconSetRuleEdit = (props: {
)} > -
- {icon ? : } +
+ {icon + ? + : ( + + )}
@@ -287,15 +326,9 @@ const IconSetRuleEdit = (props: { /> ) : ( -
+
{localeService.t('sheet.cf.iconSet.rule')} - + {localeService.t('sheet.cf.iconSet.when')} {localeService.t(`sheet.cf.symbol.${getOppositeOperator(preItem.operator)}`)} {lessThanText} @@ -309,9 +342,8 @@ const IconSetRuleEdit = (props: { <>
@@ -515,11 +547,11 @@ export const IconSet = (props: IStyleEditorProps) => { useScrollYOverContainer(iconGroupListEl, layoutService.rootContainerElement); return ( -
-
{localeService.t('sheet.cf.panel.styleRule')}
-
+
+
+ {localeService.t('sheet.cf.panel.styleRule')} +
+
@@ -533,28 +565,26 @@ export const IconSet = (props: IStyleEditorProps) => {
)} > -
+
{previewIcon}
-
-
+
+
{localeService.t('sheet.cf.iconSet.reverseIconOrder')}
-
+
{ isShowValueSet(!v); }} /> {localeService.t('sheet.cf.iconSet.onlyShowIcon')}
diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/Rank.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/Rank.tsx index 20751eff0d..e14ad65c99 100644 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/Rank.tsx +++ b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-edit/Rank.tsx @@ -20,11 +20,10 @@ import { LocaleService } from '@univerjs/core'; import { Checkbox, InputNumber, Select } from '@univerjs/design'; import { CFNumberOperator, CFRuleType, CFSubRuleType } from '@univerjs/sheets-conditional-formatting'; import { useDependency } from '@univerjs/ui'; -import React, { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { ConditionalStyleEditor } from '../../conditional-style-editor'; import { Preview } from '../../preview'; -import stylesBase from '../index.module.less'; -import styles from './index.module.less'; +import { previewClassName } from './styles'; export const RankStyleEditor = (props: IStyleEditorProps) => { const { onChange, interceptorManager } = props; @@ -33,7 +32,7 @@ export const RankStyleEditor = (props: IStyleEditorProps) => { const rule = props.rule?.type === CFRuleType.highlightCell ? props.rule : undefined as IRankHighlightCell | IAverageHighlightCell | undefined; const options = [{ label: localeService.t('sheet.cf.panel.isNotBottom'), value: 'isNotBottom' }, { label: localeService.t('sheet.cf.panel.isBottom'), value: 'isBottom' }, { label: localeService.t('sheet.cf.panel.greaterThanAverage'), value: 'greaterThanAverage' }, { label: localeService.t('sheet.cf.panel.lessThanAverage'), value: 'lessThanAverage' }]; - const [type, typeSet] = useState(() => { + const [type, setType] = useState(() => { const defaultV = options[0].value; const type = rule?.type; if (!rule) { @@ -64,7 +63,7 @@ export const RankStyleEditor = (props: IStyleEditorProps) => { } return defaultV; }); - const [value, valueSet] = useState(() => { + const [value, setValue] = useState(() => { const defaultV = 10; const type = rule?.type; if (!rule) { @@ -82,7 +81,7 @@ export const RankStyleEditor = (props: IStyleEditorProps) => { } return defaultV; }); - const [isPercent, isPercentSet] = useState(() => { + const [isPercent, setIsPercent] = useState(() => { const defaultV = false; const type = rule?.type; if (!rule) { @@ -101,7 +100,7 @@ export const RankStyleEditor = (props: IStyleEditorProps) => { return defaultV; }); - const [style, styleSet] = useState({}); + const [style, setStyle] = useState({}); const getResult = (config: { type: string; @@ -142,12 +141,7 @@ export const RankStyleEditor = (props: IStyleEditorProps) => { }; return (
-
+
{localeService.t('sheet.cf.panel.styleRule')}
('beforeSubmit'); export const submit = createInterceptorKey('submit'); diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-list/index.module.less b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-list/index.module.less deleted file mode 100644 index ceac91747c..0000000000 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-list/index.module.less +++ /dev/null @@ -1,137 +0,0 @@ -.cf-rule-list { - .rule-selector { - color: rgb(var(--text-color-secondary)); - font-size: 12px; - display: flex; - justify-content: space-between; - align-items: center; - .select { - color: rgb(var(--text-color)); - width: 138px; - .select-selector { - border: none; - padding: 0; - } - .select-selection-item { - top: -2px; - left: 4px; - } - .select-selection-search-input { - cursor: pointer; - } - } - .btn-list { - font-size: 16px; - color: black; - display: flex; - justify-content: space-between; - align-items: center; - .gap { - margin-left: 8px; - } - .icon { - cursor: pointer; - display: flex; - justify-content: space-between; - align-items: center; - border-radius: 4px 4px 4px 4px; - padding: 4px; - - &:hover { - background: rgb(var(--grey-300)); - } - } - .disabled { - color: rgb(var(--grey-500)); - display: flex; - align-items: center; - border-radius: 4px 4px 4px 4px; - padding: 4px; - } - } - } - .rule-item { - padding: 8px 32px 8px 20px; - display: flex; - justify-content: space-between; - position: relative; - align-items: center; - border-radius: var(--border-radius-base); - .rule-describe { - max-width: 100%; - min-width: 0px; - overflow: hidden; - flex-shrink: 1; - font-size: var(--font-size-sm); - line-height: 21px; - .rule-type { - font-size: 14px; - line-height: 22px; - color: #1e222b; - } - .rule-range { - font-size: 12px; - line-height: 22px; - color: #7a7a7a; - } - } - &:hover { - background-color: rgb(var(--grey-100)); - } - &.active { - background-color: rgb(var(--grey-100)); - } - .draggableHandle { - display: none; - position: absolute; - left: 0px; - width: 20px; - height: 20px; - border-radius: var(--border-radius-base); - cursor: grab; - // &:hover { - // background-color: rgb(var(--grey-300)); - // } - } - &:hover { - .delete-item { - display: flex; - align-items: center; - justify-content: center; - } - .draggableHandle { - display: flex; - align-items: center; - justify-content: center; - } - } - .delete-item { - display: none; - cursor: pointer; - border-radius: var(--border-radius-base); - position: absolute; - right: 4px; - width: 24px; - height: 24px; - &:hover { - background-color: rgb(var(--grey-300)); - } - } - & .active { - display: flex; - align-items: center; - justify-content: center; - } - } - .grid-layout-wrap { - width: calc(100% - 2 * var(--padding-sm) + 2 * var(--padding-xl)); - margin-left: calc(-1 * var(--padding-xl)); - padding-left: var(--padding-sm); - .react-grid-item { - transition: none; - } - } -} -:global .react-grid-item.react-grid-placeholder { - background: rgb(var(--grey-300)) !important; -} diff --git a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-list/index.tsx b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-list/index.tsx index 8db470aacd..9df3e6d181 100644 --- a/packages/sheets-conditional-formatting-ui/src/components/panel/rule-list/index.tsx +++ b/packages/sheets-conditional-formatting-ui/src/components/panel/rule-list/index.tsx @@ -40,7 +40,6 @@ import GridLayout from 'react-grid-layout'; import { debounceTime, Observable } from 'rxjs'; import { ConditionalFormattingI18nController } from '../../../controllers/cf.i18n.controller'; import { Preview } from '../../preview'; -import styles from './index.module.less'; import 'react-grid-layout/css/styles.css'; import 'react-resizable/css/styles.css'; @@ -319,13 +318,13 @@ export const RuleList = (props: IRuleListProps) => { }, [ruleList]); return ( -
-
-
+
+
+
{conditionalFormattingI18nController.tWithReactNode( 'sheet.cf.panel.managerRuleSelect',