@vuer-ai/vuer-uikit 0.0.120 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/SyncScroll/SyncScroll.cjs +13 -13
- package/dist/SyncScroll/SyncScroll.mjs +6 -6
- package/dist/SyncScroll/index.cjs +13 -13
- package/dist/SyncScroll/index.mjs +6 -6
- package/dist/SyncScroll/useSyncScroll.d.cts +5 -5
- package/dist/SyncScroll/useSyncScroll.d.ts +5 -5
- package/dist/{chunk-42WQWP6X.cjs → chunk-22T2AL3G.cjs} +8 -8
- package/dist/{chunk-NMRFBO43.mjs → chunk-2IMCDH5J.mjs} +3 -3
- package/dist/{chunk-EOLUDKZ3.mjs → chunk-2J466BYZ.mjs} +26 -47
- package/dist/{chunk-LVIZRMYN.cjs → chunk-2KBNQ5PY.cjs} +2 -2
- package/dist/{chunk-S7CCCMMU.cjs → chunk-34NDAZS6.cjs} +18 -9
- package/dist/{chunk-DM43KZU7.cjs → chunk-3F3LBOQJ.cjs} +2 -2
- package/dist/chunk-3JMUI4R2.cjs +136 -0
- package/dist/{chunk-CWS5PF67.cjs → chunk-3UQ323EB.cjs} +8 -42
- package/dist/{chunk-QXFFRQ7E.mjs → chunk-44U6VC46.mjs} +543 -95
- package/dist/{chunk-JW456O5K.mjs → chunk-4FB6B2ES.mjs} +1 -1
- package/dist/{chunk-66NKH2SV.cjs → chunk-4FIP3EXW.cjs} +6 -6
- package/dist/chunk-4SI4QV5R.cjs +14 -0
- package/dist/{chunk-IAFCABPY.mjs → chunk-4W7JKZVN.mjs} +3 -2
- package/dist/{chunk-EEGQLTSQ.cjs → chunk-4WWGBRQV.cjs} +77 -0
- package/dist/chunk-4Y5IF7R5.mjs +322 -0
- package/dist/chunk-52GNIM6H.mjs +12 -0
- package/dist/{chunk-X6WOCNBX.cjs → chunk-57NITJN5.cjs} +2 -2
- package/dist/{chunk-LMYA5IOK.mjs → chunk-5GBMVMLS.mjs} +4 -4
- package/dist/{chunk-QWBMDS3S.cjs → chunk-5HT74RHB.cjs} +5 -5
- package/dist/{chunk-4ODJAEOM.mjs → chunk-5JYH7TXY.mjs} +1 -1
- package/dist/{chunk-2CD4D2BR.cjs → chunk-6CJWNYHL.cjs} +3 -3
- package/dist/{chunk-CRX2ZCM2.cjs → chunk-6LTCLQH3.cjs} +6 -1
- package/dist/{chunk-WKK5UX2W.mjs → chunk-6U6LRS37.mjs} +2 -2
- package/dist/{chunk-4OUQ6NSX.cjs → chunk-6VIKDPCD.cjs} +2 -2
- package/dist/{chunk-6D7FGGSX.cjs → chunk-753HUOAI.cjs} +26 -26
- package/dist/{chunk-LYGYXV7S.cjs → chunk-7ICRKPIO.cjs} +16 -16
- package/dist/chunk-7MKCWXNV.cjs +32 -0
- package/dist/{chunk-FMKD5JBL.mjs → chunk-7TD77VF4.mjs} +10 -6
- package/dist/{chunk-5ARBIWXX.cjs → chunk-7TXGEIV3.cjs} +10 -10
- package/dist/chunk-7WJ73FEI.mjs +43 -0
- package/dist/{chunk-SLXM4F24.cjs → chunk-7YFUNCKT.cjs} +9 -9
- package/dist/{chunk-LGFWHV23.cjs → chunk-ACGXE2IO.cjs} +2 -2
- package/dist/{chunk-IU65XB2K.cjs → chunk-AFALU3AK.cjs} +2 -2
- package/dist/{chunk-EGIIZWP3.mjs → chunk-AFR23IX6.mjs} +1 -1
- package/dist/{chunk-CXPF274N.mjs → chunk-BK77KKIM.mjs} +1 -1
- package/dist/{chunk-4PMXRQXC.cjs → chunk-BNXJ5VBE.cjs} +6 -6
- package/dist/{chunk-3DIFS7CO.mjs → chunk-BPCD4L7T.mjs} +1 -1
- package/dist/{chunk-JQYMF2FW.cjs → chunk-BSDIS4KS.cjs} +4 -4
- package/dist/{chunk-REZAPK6Z.mjs → chunk-BTGAKK3B.mjs} +1 -1
- package/dist/{chunk-TB5L3GBP.cjs → chunk-BXJTOIRR.cjs} +584 -133
- package/dist/{chunk-35ZN6IW7.mjs → chunk-BYZ7HIIK.mjs} +1 -1
- package/dist/{chunk-XS5IUI62.cjs → chunk-BZI74LKX.cjs} +3 -2
- package/dist/{chunk-2IS7TXTN.mjs → chunk-CENP2PIB.mjs} +1 -1
- package/dist/{chunk-SAXISARG.cjs → chunk-CMO3SLOU.cjs} +2 -2
- package/dist/{chunk-CIOLL5LX.mjs → chunk-CN6SZKJZ.mjs} +1 -1
- package/dist/chunk-CRY23RMB.mjs +30 -0
- package/dist/{chunk-7AAMQGY2.cjs → chunk-CYWVJ3HF.cjs} +7 -7
- package/dist/{chunk-EVBYVJTW.mjs → chunk-D2LUQKPM.mjs} +130 -91
- package/dist/chunk-DF7WIFZK.cjs +316 -0
- package/dist/chunk-DKLVWYTC.cjs +71 -0
- package/dist/chunk-DKWLF3KW.mjs +149 -0
- package/dist/{chunk-F2LEYFWW.cjs → chunk-DPJPOBUT.cjs} +5 -5
- package/dist/{chunk-SR3M2R3S.mjs → chunk-DSQPFXYL.mjs} +22 -24
- package/dist/chunk-DVUN6GQI.cjs +21 -0
- package/dist/{chunk-7ACZU3BT.mjs → chunk-EG6JETUN.mjs} +1 -1
- package/dist/{chunk-T4U3BG2V.mjs → chunk-EGJLY5VZ.mjs} +1 -1
- package/dist/{chunk-AE5YDMFT.mjs → chunk-EXM6QMNR.mjs} +3 -3
- package/dist/{chunk-H6JGIEAU.mjs → chunk-EYMZP5PL.mjs} +1 -1
- package/dist/{chunk-K2ZYSKRU.mjs → chunk-EZ536NLQ.mjs} +1 -1
- package/dist/chunk-FRM27RLN.cjs +264 -0
- package/dist/chunk-FTB337IJ.cjs +143 -0
- package/dist/{chunk-7A5EMDZH.mjs → chunk-G35PQKU5.mjs} +5 -5
- package/dist/{chunk-ZJSL6HSL.mjs → chunk-GAAP5JO4.mjs} +1 -1
- package/dist/chunk-GHQA7PER.mjs +107 -0
- package/dist/{chunk-ND3WJ63Z.cjs → chunk-GVRVRBDU.cjs} +2 -2
- package/dist/chunk-GZ2BG42R.mjs +34 -0
- package/dist/chunk-H3JRYX2U.mjs +19 -0
- package/dist/{chunk-T66ETI7E.mjs → chunk-HBEU2PU2.mjs} +6 -1
- package/dist/{chunk-SMXN2KOV.mjs → chunk-HGTL7DFT.mjs} +1 -1
- package/dist/{chunk-JFPIUDGT.mjs → chunk-HI4LO6IJ.mjs} +1 -1
- package/dist/{chunk-QO2AM6MF.mjs → chunk-HIDTQ4Z2.mjs} +1 -1
- package/dist/{chunk-DDU3SPCC.mjs → chunk-HNW2DRPV.mjs} +58 -9
- package/dist/{chunk-5AKVDZMA.cjs → chunk-HSUL5OUG.cjs} +14 -13
- package/dist/{chunk-EY6PKK4X.cjs → chunk-I2COLDHC.cjs} +2 -2
- package/dist/chunk-IAWMCOHS.cjs +45 -0
- package/dist/chunk-IM5QVMGO.cjs +2 -0
- package/dist/{chunk-UQQBUPGF.mjs → chunk-IPMWGCAI.mjs} +5 -21
- package/dist/{chunk-SCUMWMIN.mjs → chunk-ITOTSGSL.mjs} +1 -1
- package/dist/{chunk-NJWKR5WR.mjs → chunk-IYTGWOZY.mjs} +1 -1
- package/dist/chunk-J74A5LNZ.cjs +179 -0
- package/dist/{chunk-CKGEV2JL.cjs → chunk-JDEZ6NNG.cjs} +2 -2
- package/dist/chunk-JEWTYDLX.cjs +119 -0
- package/dist/{chunk-Q7WCKEXG.cjs → chunk-JF43YF6J.cjs} +3 -3
- package/dist/chunk-JTFQFULL.cjs +166 -0
- package/dist/{chunk-XQ3MWA3D.mjs → chunk-KXKUQSNY.mjs} +3 -3
- package/dist/chunk-L2AKG4VJ.mjs +258 -0
- package/dist/{chunk-ZCSJGDX7.mjs → chunk-L2DME42Q.mjs} +1 -1
- package/dist/{chunk-K2BQNNEX.cjs → chunk-L6W77P4B.cjs} +8 -8
- package/dist/{chunk-N4Y5CBOI.cjs → chunk-LGUQR5AR.cjs} +4 -4
- package/dist/{chunk-ZA7WOIIB.mjs → chunk-LHP7FLGK.mjs} +1 -1
- package/dist/{chunk-MYZHDWBF.mjs → chunk-LLFE3UHZ.mjs} +10 -10
- package/dist/{chunk-332A4MHC.mjs → chunk-LNYUFL3Q.mjs} +1 -1
- package/dist/{chunk-BUAWPPXA.cjs → chunk-MQ5DGLVE.cjs} +11 -11
- package/dist/{chunk-EXY6WRH4.mjs → chunk-N6KP2HIC.mjs} +2 -2
- package/dist/{chunk-V75PKBIV.cjs → chunk-NEJKCSS5.cjs} +9 -9
- package/dist/{chunk-KPGZOX2A.cjs → chunk-NHFIDL5X.cjs} +5 -5
- package/dist/{chunk-JNV3UBBP.cjs → chunk-NIACIZWY.cjs} +6 -22
- package/dist/{chunk-PC5DHSC4.mjs → chunk-NKUK73WB.mjs} +71 -1
- package/dist/{chunk-5OZS5UJX.cjs → chunk-NSPAT6XV.cjs} +7 -7
- package/dist/chunk-NUBFD3YP.mjs +117 -0
- package/dist/{chunk-4BQPIY5Z.mjs → chunk-O2NGB7YP.mjs} +1 -1
- package/dist/{chunk-7H7U2X45.cjs → chunk-O3DFVRON.cjs} +17 -13
- package/dist/chunk-O57DAVOQ.mjs +1 -0
- package/dist/{chunk-S37MJNNP.cjs → chunk-OCADGDGL.cjs} +2 -2
- package/dist/{chunk-ZSAPBZ36.mjs → chunk-OW653F7T.mjs} +1 -1
- package/dist/{chunk-GRXUYMZJ.cjs → chunk-OX5FXH6W.cjs} +4 -4
- package/dist/{chunk-GQYUSBSO.mjs → chunk-P3FBRYWH.mjs} +3 -10
- package/dist/{chunk-P3YSHGT5.mjs → chunk-P55DAW6H.mjs} +1 -1
- package/dist/{chunk-JOOURIX7.cjs → chunk-P6E4WLMD.cjs} +4 -4
- package/dist/{chunk-WDSOII5A.cjs → chunk-P7J7XHDE.cjs} +2 -2
- package/dist/chunk-PHRZ5JE6.mjs +1 -0
- package/dist/{chunk-F3HOBNGR.cjs → chunk-PMG3NZF5.cjs} +4 -4
- package/dist/chunk-PMYOKSO3.mjs +30 -0
- package/dist/chunk-PTUZYCOY.mjs +314 -0
- package/dist/{chunk-PV6CEMTT.cjs → chunk-PWZ4F3WY.cjs} +4 -4
- package/dist/{chunk-QBAZ6TKZ.cjs → chunk-PZZW3E5D.cjs} +2 -2
- package/dist/chunk-Q3UN25WC.mjs +141 -0
- package/dist/{chunk-MXGPFCLN.cjs → chunk-QS6WNNLM.cjs} +2 -2
- package/dist/{chunk-PR3BCKLJ.mjs → chunk-QSDYNIZB.mjs} +2 -1
- package/dist/{chunk-GTBXRWCK.cjs → chunk-QTLUPDLH.cjs} +8 -7
- package/dist/{chunk-BXZSWY4N.mjs → chunk-QYJZ5KA6.mjs} +1 -1
- package/dist/{chunk-JYYAGDLZ.cjs → chunk-R22VW3EK.cjs} +2 -2
- package/dist/{chunk-NKGUQZTD.cjs → chunk-RHVKIZMQ.cjs} +2 -2
- package/dist/{chunk-U22YVR7M.mjs → chunk-RLY4A3IY.mjs} +15 -6
- package/dist/{chunk-OJOWMXXY.mjs → chunk-RR76Z6OK.mjs} +3 -3
- package/dist/{chunk-D562KO2I.mjs → chunk-RWHVZM2B.mjs} +2 -2
- package/dist/chunk-S4C7HO32.cjs +36 -0
- package/dist/chunk-SBAVMK7J.cjs +181 -0
- package/dist/{chunk-DAVMLI3P.cjs → chunk-SNUQOJLK.cjs} +4 -4
- package/dist/{chunk-KY2PYKDZ.mjs → chunk-SO5KFX2C.mjs} +1 -1
- package/dist/{chunk-HB65PF7F.cjs → chunk-SOHGIAGF.cjs} +2 -2
- package/dist/{chunk-RW4T7UBU.cjs → chunk-STJMH4NX.cjs} +3 -3
- package/dist/{chunk-VYINXXYX.cjs → chunk-SUWJDU3Y.cjs} +59 -61
- package/dist/chunk-T2BDPMCF.cjs +358 -0
- package/dist/{chunk-U5W4ZALG.cjs → chunk-T2OAWYOU.cjs} +6 -6
- package/dist/{chunk-Q7VP2WSX.mjs → chunk-TCCFFSXM.mjs} +29 -12
- package/dist/{chunk-PRNBDGOF.cjs → chunk-THE6FZKP.cjs} +29 -49
- package/dist/{chunk-RGOZPSTI.mjs → chunk-TMBHKVKH.mjs} +1 -1
- package/dist/chunk-TQOGGHSJ.mjs +23 -0
- package/dist/{chunk-VTW2DF63.mjs → chunk-TWDDNHRP.mjs} +1 -1
- package/dist/{chunk-DDIB73SZ.mjs → chunk-UB3ELCFR.mjs} +4 -4
- package/dist/{chunk-XTLGNJIO.mjs → chunk-UBGNADCN.mjs} +1 -1
- package/dist/chunk-UCAIVC2B.cjs +32 -0
- package/dist/chunk-UEHPZIQB.cjs +2 -0
- package/dist/{chunk-ASZIBFA6.cjs → chunk-UZTOUPJ7.cjs} +131 -92
- package/dist/{chunk-3NIMV5PH.mjs → chunk-V4THHKSO.mjs} +1 -1
- package/dist/{chunk-G5VBLDAM.mjs → chunk-VBEVJE7Q.mjs} +1 -1
- package/dist/chunk-VDYJAOMN.mjs +177 -0
- package/dist/{chunk-64VVW5YR.mjs → chunk-VLNU7Y2K.mjs} +8 -43
- package/dist/{chunk-ZS7ESTKH.cjs → chunk-VT6E2N6C.cjs} +8 -12
- package/dist/{chunk-OLYHHP67.mjs → chunk-VWLZKPDB.mjs} +6 -5
- package/dist/{chunk-UMGNAR3W.cjs → chunk-W22SQYEO.cjs} +8 -8
- package/dist/{chunk-VWVYCQWF.mjs → chunk-WBM7ATPT.mjs} +1 -1
- package/dist/{chunk-CH3BSVL4.cjs → chunk-WGY33IHV.cjs} +2 -2
- package/dist/{chunk-DAA2GQAS.cjs → chunk-WRJAYU2L.cjs} +27 -27
- package/dist/{chunk-7AEOJFD4.cjs → chunk-WX3VWVWD.cjs} +2 -2
- package/dist/{chunk-EBFPZBUQ.cjs → chunk-WYUJM72T.cjs} +7 -7
- package/dist/{chunk-EK3BTKZP.cjs → chunk-WZQ2BT3P.cjs} +142 -26
- package/dist/{chunk-KR7VBV3B.cjs → chunk-XIDCYS6G.cjs} +2 -1
- package/dist/{chunk-WHV6Z7YX.mjs → chunk-XIESS6HW.mjs} +1 -1
- package/dist/{chunk-UIJEAY6H.mjs → chunk-XTZURZIR.mjs} +1 -1
- package/dist/{chunk-7AZ3PLUC.mjs → chunk-XZLQHASB.mjs} +1 -1
- package/dist/{chunk-SRZ56OJH.mjs → chunk-XZTEU7ME.mjs} +3 -3
- package/dist/{chunk-RLTLA7VS.mjs → chunk-Y2IIKDRY.mjs} +1 -1
- package/dist/chunk-YDF6VWBW.cjs +151 -0
- package/dist/{chunk-CR6JOOO3.cjs → chunk-YGZHBIZP.cjs} +3 -10
- package/dist/{chunk-TWQONYWC.mjs → chunk-YMMSHGYC.mjs} +1 -1
- package/dist/chunk-YQL6JDVP.cjs +21 -0
- package/dist/{chunk-Q37KC3CL.mjs → chunk-YRNI7ZJ7.mjs} +134 -18
- package/dist/{chunk-3ZEQVODC.cjs → chunk-ZAK7AFVY.cjs} +2 -2
- package/dist/{chunk-W3IHFG4B.cjs → chunk-ZG33TW5I.cjs} +8 -8
- package/dist/{chunk-FK6ZROZE.mjs → chunk-ZJYPKTF4.mjs} +2 -1
- package/dist/chunk-ZMRODJ3I.mjs +149 -0
- package/dist/{chunk-AHD46BFN.mjs → chunk-ZQOQB6GF.mjs} +1 -1
- package/dist/dial/DialPanel.cjs +104 -92
- package/dist/dial/DialPanel.d.cts +5 -5
- package/dist/dial/DialPanel.d.ts +5 -5
- package/dist/dial/DialPanel.mjs +103 -91
- package/dist/dial/DialProvider.d.cts +16 -51
- package/dist/dial/DialProvider.d.ts +16 -51
- package/dist/dial/IconRenderer.d.cts +2 -2
- package/dist/dial/IconRenderer.d.ts +2 -2
- package/dist/dial/components/DialButton.cjs +22 -0
- package/dist/dial/components/DialButton.d.cts +28 -0
- package/dist/dial/components/DialButton.d.ts +28 -0
- package/dist/dial/components/DialButton.mjs +13 -0
- package/dist/dial/components/DialCustom.cjs +11 -0
- package/dist/dial/components/DialCustom.d.cts +34 -0
- package/dist/dial/components/DialCustom.d.ts +34 -0
- package/dist/dial/components/DialCustom.mjs +2 -0
- package/dist/dial/components/index.cjs +29 -0
- package/dist/dial/components/index.d.cts +4 -0
- package/dist/dial/components/index.d.ts +4 -0
- package/dist/dial/components/index.mjs +16 -0
- package/dist/dial/index.cjs +128 -108
- package/dist/dial/index.d.cts +5 -1
- package/dist/dial/index.d.ts +5 -1
- package/dist/dial/index.mjs +103 -91
- package/dist/dial/types.cjs +4 -0
- package/dist/dial/types.d.cts +21 -0
- package/dist/dial/types.d.ts +21 -0
- package/dist/dial/types.mjs +1 -0
- package/dist/dial/wrapped-inputs/ControlledInputs.cjs +108 -96
- package/dist/dial/wrapped-inputs/ControlledInputs.d.cts +8 -8
- package/dist/dial/wrapped-inputs/ControlledInputs.d.ts +8 -8
- package/dist/dial/wrapped-inputs/ControlledInputs.mjs +103 -91
- package/dist/dial/wrapped-inputs/DialArrayInput.cjs +139 -0
- package/dist/dial/wrapped-inputs/DialArrayInput.d.cts +20 -0
- package/dist/dial/wrapped-inputs/DialArrayInput.d.ts +20 -0
- package/dist/dial/wrapped-inputs/DialArrayInput.mjs +130 -0
- package/dist/dial/wrapped-inputs/DialInputs.cjs +117 -105
- package/dist/dial/wrapped-inputs/DialInputs.d.cts +19 -17
- package/dist/dial/wrapped-inputs/DialInputs.d.ts +19 -17
- package/dist/dial/wrapped-inputs/DialInputs.mjs +103 -91
- package/dist/dial/wrapped-inputs/DialInterfaceInput.cjs +139 -0
- package/dist/dial/wrapped-inputs/DialInterfaceInput.d.cts +13 -0
- package/dist/dial/wrapped-inputs/DialInterfaceInput.d.ts +13 -0
- package/dist/dial/wrapped-inputs/DialInterfaceInput.mjs +130 -0
- package/dist/dial/wrapped-inputs/DialPresetsInput.cjs +94 -86
- package/dist/dial/wrapped-inputs/DialPresetsInput.d.cts +4 -4
- package/dist/dial/wrapped-inputs/DialPresetsInput.d.ts +4 -4
- package/dist/dial/wrapped-inputs/DialPresetsInput.mjs +93 -85
- package/dist/dial/wrapped-inputs/DialTupleInput.cjs +139 -0
- package/dist/dial/wrapped-inputs/DialTupleInput.d.cts +18 -0
- package/dist/dial/wrapped-inputs/DialTupleInput.d.ts +18 -0
- package/dist/dial/wrapped-inputs/DialTupleInput.mjs +130 -0
- package/dist/dial/wrapped-inputs/DialVectorInput.cjs +104 -92
- package/dist/dial/wrapped-inputs/DialVectorInput.d.cts +2 -2
- package/dist/dial/wrapped-inputs/DialVectorInput.d.ts +2 -2
- package/dist/dial/wrapped-inputs/DialVectorInput.mjs +103 -91
- package/dist/dial/wrapped-inputs/index.cjs +132 -112
- package/dist/dial/wrapped-inputs/index.d.cts +4 -2
- package/dist/dial/wrapped-inputs/index.d.ts +4 -2
- package/dist/dial/wrapped-inputs/index.mjs +103 -91
- package/dist/highlight-cursor/cursor-context.d.cts +2 -2
- package/dist/highlight-cursor/cursor-context.d.ts +2 -2
- package/dist/highlight-cursor/cursor-provider.cjs +3 -3
- package/dist/highlight-cursor/cursor-provider.d.cts +1 -1
- package/dist/highlight-cursor/cursor-provider.d.ts +1 -1
- package/dist/highlight-cursor/cursor-provider.mjs +2 -2
- package/dist/highlight-cursor/enhanced-components.cjs +16 -16
- package/dist/highlight-cursor/enhanced-components.d.cts +4 -4
- package/dist/highlight-cursor/enhanced-components.d.ts +4 -4
- package/dist/highlight-cursor/enhanced-components.mjs +11 -11
- package/dist/highlight-cursor/index.cjs +21 -21
- package/dist/highlight-cursor/index.mjs +12 -12
- package/dist/highlight-cursor/types.d.cts +2 -1
- package/dist/highlight-cursor/types.d.ts +2 -1
- package/dist/highlight-cursor/with-cursor.d.cts +2 -2
- package/dist/highlight-cursor/with-cursor.d.ts +2 -2
- package/dist/hooks/clientOnly.d.cts +4 -4
- package/dist/hooks/clientOnly.d.ts +4 -4
- package/dist/hooks/cn.cjs +2 -2
- package/dist/hooks/cn.mjs +1 -1
- package/dist/hooks/index.cjs +22 -22
- package/dist/hooks/index.mjs +5 -5
- package/dist/hooks/useIsMobile.cjs +2 -2
- package/dist/hooks/useIsMobile.mjs +1 -1
- package/dist/index.cjs +587 -407
- package/dist/index.css +13 -76
- package/dist/index.d.cts +20 -6
- package/dist/index.d.ts +20 -6
- package/dist/index.mjs +103 -91
- package/dist/schema-types-D9b7Dc1G.d.cts +163 -0
- package/dist/schema-types-D9b7Dc1G.d.ts +163 -0
- package/dist/styles/theme.css +1 -1
- package/dist/ui/DialBadge.cjs +10 -10
- package/dist/ui/DialBadge.mjs +6 -6
- package/dist/ui/UIKitBadge.cjs +10 -10
- package/dist/ui/UIKitBadge.mjs +6 -6
- package/dist/ui/alert-dialog.cjs +60 -0
- package/dist/ui/alert-dialog.d.cts +17 -0
- package/dist/ui/alert-dialog.d.ts +17 -0
- package/dist/ui/alert-dialog.mjs +11 -0
- package/dist/ui/avatar.cjs +10 -10
- package/dist/ui/avatar.d.cts +2 -2
- package/dist/ui/avatar.d.ts +2 -2
- package/dist/ui/avatar.mjs +6 -6
- package/dist/ui/badge.cjs +8 -8
- package/dist/ui/badge.d.cts +2 -2
- package/dist/ui/badge.d.ts +2 -2
- package/dist/ui/badge.mjs +6 -6
- package/dist/ui/button.cjs +8 -8
- package/dist/ui/button.d.cts +3 -3
- package/dist/ui/button.d.ts +3 -3
- package/dist/ui/button.mjs +6 -6
- package/dist/ui/card.cjs +14 -13
- package/dist/ui/card.d.cts +14 -2
- package/dist/ui/card.d.ts +14 -2
- package/dist/ui/card.mjs +7 -6
- package/dist/ui/checkbox.cjs +7 -7
- package/dist/ui/checkbox.mjs +6 -6
- package/dist/ui/collapsible.cjs +9 -9
- package/dist/ui/collapsible.mjs +6 -6
- package/dist/ui/context-menu.cjs +76 -0
- package/dist/ui/context-menu.d.cts +28 -0
- package/dist/ui/context-menu.d.ts +28 -0
- package/dist/ui/context-menu.mjs +11 -0
- package/dist/ui/drag-selectable/createSelectable.d.cts +2 -2
- package/dist/ui/drag-selectable/createSelectable.d.ts +2 -2
- package/dist/ui/drawer.cjs +16 -16
- package/dist/ui/drawer.d.cts +11 -11
- package/dist/ui/drawer.d.ts +11 -11
- package/dist/ui/drawer.mjs +6 -6
- package/dist/ui/dropdown.cjs +21 -21
- package/dist/ui/dropdown.mjs +6 -6
- package/dist/ui/index.cjs +485 -317
- package/dist/ui/index.d.cts +15 -5
- package/dist/ui/index.d.ts +15 -5
- package/dist/ui/index.mjs +90 -82
- package/dist/ui/inputs/color-input.cjs +8 -8
- package/dist/ui/inputs/color-input.d.cts +7 -3
- package/dist/ui/inputs/color-input.d.ts +7 -3
- package/dist/ui/inputs/color-input.mjs +7 -7
- package/dist/ui/inputs/index.cjs +56 -56
- package/dist/ui/inputs/index.mjs +25 -25
- package/dist/ui/inputs/input-numbers.cjs +8 -8
- package/dist/ui/inputs/input-numbers.d.cts +7 -3
- package/dist/ui/inputs/input-numbers.d.ts +7 -3
- package/dist/ui/inputs/input-numbers.mjs +7 -7
- package/dist/ui/inputs/input.cjs +9 -9
- package/dist/ui/inputs/input.d.cts +4 -4
- package/dist/ui/inputs/input.d.ts +4 -4
- package/dist/ui/inputs/input.mjs +6 -6
- package/dist/ui/inputs/number-inputs/CmInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/CmInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/CmInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/CmInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/DegInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/DegInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/DegInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/DegInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/EulerDegInput.cjs +11 -11
- package/dist/ui/inputs/number-inputs/EulerDegInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/EulerDegInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/EulerDegInput.mjs +10 -10
- package/dist/ui/inputs/number-inputs/EulerInput.cjs +10 -10
- package/dist/ui/inputs/number-inputs/EulerInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/EulerInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/EulerInput.mjs +9 -9
- package/dist/ui/inputs/number-inputs/EulerRadInput.cjs +10 -10
- package/dist/ui/inputs/number-inputs/EulerRadInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/EulerRadInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/EulerRadInput.mjs +9 -9
- package/dist/ui/inputs/number-inputs/InchInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/InchInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/InchInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/InchInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/IntInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/IntInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/IntInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/IntInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/KVectorInput.cjs +10 -10
- package/dist/ui/inputs/number-inputs/KVectorInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/KVectorInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/KVectorInput.mjs +9 -9
- package/dist/ui/inputs/number-inputs/QuaternionInput.cjs +10 -10
- package/dist/ui/inputs/number-inputs/QuaternionInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/QuaternionInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/QuaternionInput.mjs +9 -9
- package/dist/ui/inputs/number-inputs/RadInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/RadInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/RadInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/RadInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/TimeInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/TimeInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/TimeInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/TimeInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/Vec3Input.cjs +10 -10
- package/dist/ui/inputs/number-inputs/Vec3Input.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/Vec3Input.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/Vec3Input.mjs +9 -9
- package/dist/ui/inputs/number-inputs/VectorInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/VectorInput.d.cts +4 -2
- package/dist/ui/inputs/number-inputs/VectorInput.d.ts +4 -2
- package/dist/ui/inputs/number-inputs/VectorInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/index.cjs +42 -42
- package/dist/ui/inputs/number-inputs/index.mjs +20 -20
- package/dist/ui/inputs/presets-input.cjs +10 -10
- package/dist/ui/inputs/presets-input.d.cts +2 -2
- package/dist/ui/inputs/presets-input.d.ts +2 -2
- package/dist/ui/inputs/presets-input.mjs +9 -9
- package/dist/ui/inputs/presets-rad-input.cjs +11 -11
- package/dist/ui/inputs/presets-rad-input.d.cts +2 -2
- package/dist/ui/inputs/presets-rad-input.d.ts +2 -2
- package/dist/ui/inputs/presets-rad-input.mjs +10 -10
- package/dist/ui/inputs/text-input.cjs +8 -8
- package/dist/ui/inputs/text-input.d.cts +2 -2
- package/dist/ui/inputs/text-input.d.ts +2 -2
- package/dist/ui/inputs/text-input.mjs +7 -7
- package/dist/ui/label.cjs +7 -7
- package/dist/ui/label.d.cts +4 -4
- package/dist/ui/label.d.ts +4 -4
- package/dist/ui/label.mjs +6 -6
- package/dist/ui/layout.cjs +7 -7
- package/dist/ui/layout.mjs +6 -6
- package/dist/ui/layouts/dock-layout/DockLayoutView.cjs +8 -8
- package/dist/ui/layouts/dock-layout/DockLayoutView.d.cts +2 -1
- package/dist/ui/layouts/dock-layout/DockLayoutView.d.ts +2 -1
- package/dist/ui/layouts/dock-layout/DockLayoutView.mjs +7 -7
- package/dist/ui/layouts/dock-layout/LayoutSlots.cjs +12 -12
- package/dist/ui/layouts/dock-layout/LayoutSlots.d.cts +3 -3
- package/dist/ui/layouts/dock-layout/LayoutSlots.d.ts +3 -3
- package/dist/ui/layouts/dock-layout/LayoutSlots.mjs +6 -6
- package/dist/ui/layouts/dock-layout/index.cjs +14 -14
- package/dist/ui/layouts/dock-layout/index.mjs +7 -7
- package/dist/ui/layouts/index.cjs +20 -20
- package/dist/ui/layouts/index.mjs +9 -9
- package/dist/ui/layouts/liquid-layout/LayoutSlots.cjs +12 -12
- package/dist/ui/layouts/liquid-layout/LayoutSlots.mjs +6 -6
- package/dist/ui/layouts/liquid-layout/LiquidLayoutView.cjs +8 -8
- package/dist/ui/layouts/liquid-layout/LiquidLayoutView.d.cts +13 -1
- package/dist/ui/layouts/liquid-layout/LiquidLayoutView.d.ts +13 -1
- package/dist/ui/layouts/liquid-layout/LiquidLayoutView.mjs +7 -7
- package/dist/ui/layouts/liquid-layout/index.cjs +8 -8
- package/dist/ui/layouts/liquid-layout/index.mjs +7 -7
- package/dist/ui/modal.cjs +16 -16
- package/dist/ui/modal.mjs +6 -6
- package/dist/ui/navigation.cjs +8 -8
- package/dist/ui/navigation.d.cts +2 -2
- package/dist/ui/navigation.d.ts +2 -2
- package/dist/ui/navigation.mjs +7 -7
- package/dist/ui/pagination.cjs +14 -14
- package/dist/ui/pagination.mjs +7 -7
- package/dist/ui/popover.cjs +14 -10
- package/dist/ui/popover.d.cts +18 -8
- package/dist/ui/popover.d.ts +18 -8
- package/dist/ui/popover.mjs +6 -6
- package/dist/ui/progress.cjs +7 -7
- package/dist/ui/progress.d.cts +1 -1
- package/dist/ui/progress.d.ts +1 -1
- package/dist/ui/progress.mjs +6 -6
- package/dist/ui/radio-group.cjs +8 -8
- package/dist/ui/radio-group.mjs +6 -6
- package/dist/ui/resizable.cjs +9 -9
- package/dist/ui/resizable.d.cts +2 -2
- package/dist/ui/resizable.d.ts +2 -2
- package/dist/ui/resizable.mjs +6 -6
- package/dist/ui/select.cjs +17 -17
- package/dist/ui/select.d.cts +3 -2
- package/dist/ui/select.d.ts +3 -2
- package/dist/ui/select.mjs +6 -6
- package/dist/ui/separator.cjs +7 -7
- package/dist/ui/separator.mjs +6 -6
- package/dist/ui/sheet.cjs +14 -14
- package/dist/ui/sheet.d.cts +26 -13
- package/dist/ui/sheet.d.ts +26 -13
- package/dist/ui/sheet.mjs +6 -6
- package/dist/ui/sidebar.cjs +36 -36
- package/dist/ui/sidebar.mjs +12 -12
- package/dist/ui/simple-tree-view.cjs +7 -7
- package/dist/ui/simple-tree-view.d.cts +2 -2
- package/dist/ui/simple-tree-view.d.ts +2 -2
- package/dist/ui/simple-tree-view.mjs +6 -6
- package/dist/ui/skeleton.cjs +7 -7
- package/dist/ui/skeleton.mjs +6 -6
- package/dist/ui/slider.cjs +7 -7
- package/dist/ui/slider.d.cts +2 -2
- package/dist/ui/slider.d.ts +2 -2
- package/dist/ui/slider.mjs +6 -6
- package/dist/ui/switch.cjs +7 -7
- package/dist/ui/switch.d.cts +4 -1
- package/dist/ui/switch.d.ts +4 -1
- package/dist/ui/switch.mjs +6 -6
- package/dist/ui/table.cjs +14 -14
- package/dist/ui/table.d.cts +9 -9
- package/dist/ui/table.d.ts +9 -9
- package/dist/ui/table.mjs +6 -6
- package/dist/ui/tabs.cjs +14 -10
- package/dist/ui/tabs.d.cts +25 -7
- package/dist/ui/tabs.d.ts +25 -7
- package/dist/ui/tabs.mjs +6 -6
- package/dist/ui/textarea.cjs +7 -7
- package/dist/ui/textarea.d.cts +1 -1
- package/dist/ui/textarea.d.ts +1 -1
- package/dist/ui/textarea.mjs +6 -6
- package/dist/ui/theme/ThemeProvider.cjs +15 -15
- package/dist/ui/theme/ThemeProvider.d.cts +3 -3
- package/dist/ui/theme/ThemeProvider.d.ts +3 -3
- package/dist/ui/theme/ThemeProvider.mjs +1 -1
- package/dist/ui/theme/ThemeToggles.cjs +11 -11
- package/dist/ui/theme/ThemeToggles.d.cts +18 -3
- package/dist/ui/theme/ThemeToggles.d.ts +18 -3
- package/dist/ui/theme/ThemeToggles.mjs +9 -9
- package/dist/ui/theme/index.cjs +15 -15
- package/dist/ui/theme/index.mjs +9 -9
- package/dist/ui/theme/themeScript.d.cts +2 -2
- package/dist/ui/theme/themeScript.d.ts +2 -2
- package/dist/ui/toast.cjs +19 -3
- package/dist/ui/toast.d.cts +1 -1
- package/dist/ui/toast.d.ts +1 -1
- package/dist/ui/toast.mjs +17 -1
- package/dist/ui/toggle-buttons.cjs +11 -11
- package/dist/ui/toggle-buttons.d.cts +7 -7
- package/dist/ui/toggle-buttons.d.ts +7 -7
- package/dist/ui/toggle-buttons.mjs +6 -6
- package/dist/ui/toggle-group.cjs +9 -9
- package/dist/ui/toggle-group.d.cts +3 -3
- package/dist/ui/toggle-group.d.ts +3 -3
- package/dist/ui/toggle-group.mjs +6 -6
- package/dist/ui/toggle.cjs +8 -8
- package/dist/ui/toggle.mjs +6 -6
- package/dist/ui/toolbar.cjs +9 -9
- package/dist/ui/toolbar.mjs +6 -6
- package/dist/ui/tooltip.cjs +10 -10
- package/dist/ui/tooltip.d.cts +2 -2
- package/dist/ui/tooltip.d.ts +2 -2
- package/dist/ui/tooltip.mjs +6 -6
- package/dist/ui/tree-view/TreeSearchBar.cjs +9 -9
- package/dist/ui/tree-view/TreeSearchBar.mjs +8 -8
- package/dist/ui/tree-view/TreeView.cjs +10 -8
- package/dist/ui/tree-view/TreeView.d.cts +12 -6
- package/dist/ui/tree-view/TreeView.d.ts +12 -6
- package/dist/ui/tree-view/TreeView.mjs +8 -6
- package/dist/ui/tree-view/hooks.cjs +31 -3
- package/dist/ui/tree-view/hooks.d.cts +33 -1
- package/dist/ui/tree-view/hooks.d.ts +33 -1
- package/dist/ui/tree-view/hooks.mjs +1 -1
- package/dist/ui/tree-view/index.cjs +49 -20
- package/dist/ui/tree-view/index.d.cts +1 -1
- package/dist/ui/tree-view/index.d.ts +1 -1
- package/dist/ui/tree-view/index.mjs +11 -10
- package/dist/ui/tree-view/types.d.cts +1 -0
- package/dist/ui/tree-view/types.d.ts +1 -0
- package/dist/ui/tree-view-legacy.cjs +13 -13
- package/dist/ui/tree-view-legacy.mjs +9 -9
- package/dist/ui/virtual-grid/VirtualGrid.cjs +21 -0
- package/dist/ui/virtual-grid/VirtualGrid.d.cts +10 -0
- package/dist/ui/virtual-grid/VirtualGrid.d.ts +10 -0
- package/dist/ui/virtual-grid/VirtualGrid.mjs +12 -0
- package/dist/ui/virtual-grid/index.cjs +26 -0
- package/dist/ui/virtual-grid/index.d.cts +4 -0
- package/dist/ui/virtual-grid/index.d.ts +4 -0
- package/dist/ui/virtual-grid/index.mjs +13 -0
- package/dist/ui/virtual-grid/types.cjs +2 -0
- package/dist/ui/virtual-grid/types.d.cts +70 -0
- package/dist/ui/virtual-grid/types.d.ts +70 -0
- package/dist/ui/virtual-grid/types.mjs +1 -0
- package/dist/ui/virtual-grid/useVirtualGrid.cjs +10 -0
- package/dist/ui/virtual-grid/useVirtualGrid.d.cts +9 -0
- package/dist/ui/virtual-grid/useVirtualGrid.d.ts +9 -0
- package/dist/ui/virtual-grid/useVirtualGrid.mjs +1 -0
- package/dist/ui/virtual-list/VirtualList.cjs +21 -0
- package/dist/ui/virtual-list/VirtualList.d.cts +10 -0
- package/dist/ui/virtual-list/VirtualList.d.ts +10 -0
- package/dist/ui/virtual-list/VirtualList.mjs +12 -0
- package/dist/ui/virtual-list/index.cjs +26 -0
- package/dist/ui/virtual-list/index.d.cts +4 -0
- package/dist/ui/virtual-list/index.d.ts +4 -0
- package/dist/ui/virtual-list/index.mjs +13 -0
- package/dist/ui/virtual-list/types.cjs +2 -0
- package/dist/ui/virtual-list/types.d.cts +54 -0
- package/dist/ui/virtual-list/types.d.ts +54 -0
- package/dist/ui/virtual-list/types.mjs +1 -0
- package/dist/ui/virtual-list/useVirtualList.cjs +10 -0
- package/dist/ui/virtual-list/useVirtualList.d.cts +9 -0
- package/dist/ui/virtual-list/useVirtualList.d.ts +9 -0
- package/dist/ui/virtual-list/useVirtualList.mjs +1 -0
- package/dist/ui/waterfall/CursorOverlay.cjs +7 -7
- package/dist/ui/waterfall/CursorOverlay.mjs +6 -6
- package/dist/ui/waterfall/NavigationControls.d.cts +2 -2
- package/dist/ui/waterfall/NavigationControls.d.ts +2 -2
- package/dist/ui/waterfall/TimelineEvent.cjs +7 -7
- package/dist/ui/waterfall/TimelineEvent.mjs +6 -6
- package/dist/ui/waterfall/TimelineProcessBar.cjs +7 -7
- package/dist/ui/waterfall/TimelineProcessBar.mjs +6 -6
- package/dist/ui/waterfall/Wedges.cjs +8 -8
- package/dist/ui/waterfall/Wedges.mjs +6 -6
- package/dist/ui/waterfall/WheelZoomContext.d.cts +2 -2
- package/dist/ui/waterfall/WheelZoomContext.d.ts +2 -2
- package/dist/ui/waterfall/hooks/useTimelineState.d.cts +4 -3
- package/dist/ui/waterfall/hooks/useTimelineState.d.ts +4 -3
- package/dist/ui/waterfall/hooks/useViewport.d.cts +4 -4
- package/dist/ui/waterfall/hooks/useViewport.d.ts +4 -4
- package/dist/ui/waterfall/index.cjs +20 -19
- package/dist/ui/waterfall/index.d.cts +2 -2
- package/dist/ui/waterfall/index.d.ts +2 -2
- package/dist/ui/waterfall/index.mjs +19 -18
- package/package.json +6 -9
- package/src/dial/DialPanel.tsx +167 -30
- package/src/dial/DialProvider.tsx +20 -68
- package/src/dial/components/DialButton.tsx +52 -0
- package/src/dial/components/DialCustom.tsx +45 -0
- package/src/dial/components/index.ts +3 -0
- package/src/dial/index.ts +11 -6
- package/src/dial/types.ts +32 -0
- package/src/dial/wrapped-inputs/ControlledInputs.tsx +22 -16
- package/src/dial/wrapped-inputs/DialArrayInput.tsx +175 -0
- package/src/dial/wrapped-inputs/DialInputs.tsx +119 -23
- package/src/dial/wrapped-inputs/DialInterfaceInput.tsx +80 -0
- package/src/dial/wrapped-inputs/DialPresetsInput.tsx +4 -3
- package/src/dial/wrapped-inputs/DialTupleInput.tsx +102 -0
- package/src/dial/wrapped-inputs/DialVectorInput.tsx +11 -21
- package/src/dial/wrapped-inputs/index.ts +6 -0
- package/src/highlight-cursor/cursor-provider.tsx +279 -131
- package/src/highlight-cursor/types.ts +2 -1
- package/src/hooks/cn.ts +5 -0
- package/src/hooks/useIsMobile.ts +14 -30
- package/src/index.css +0 -1
- package/src/styles/theme.css +2 -2
- package/src/ui/DialBadge.tsx +7 -5
- package/src/ui/alert-dialog.tsx +168 -0
- package/src/ui/badge.tsx +1 -0
- package/src/ui/card.tsx +76 -8
- package/src/ui/context-menu.tsx +358 -0
- package/src/ui/index.ts +6 -0
- package/src/ui/inputs/color-input.tsx +92 -8
- package/src/ui/inputs/input-numbers.tsx +148 -92
- package/src/ui/inputs/number-inputs/EulerRadInput.tsx +43 -42
- package/src/ui/inputs/number-inputs/VectorInput.tsx +2 -1
- package/src/ui/inputs/presets-rad-input.tsx +5 -2
- package/src/ui/inputs/text-input.tsx +1 -1
- package/src/ui/layouts/dock-layout/DockLayoutView.tsx +15 -4
- package/src/ui/layouts/dock-layout/LayoutSlots.tsx +14 -5
- package/src/ui/layouts/liquid-layout/LiquidLayoutView.tsx +44 -5
- package/src/ui/popover.tsx +10 -49
- package/src/ui/progress.tsx +7 -14
- package/src/ui/select.tsx +5 -2
- package/src/ui/separator.tsx +1 -1
- package/src/ui/sheet.tsx +14 -116
- package/src/ui/sidebar.tsx +18 -19
- package/src/ui/switch.tsx +7 -2
- package/src/ui/tabs.tsx +29 -58
- package/src/ui/theme/ThemeProvider.tsx +4 -3
- package/src/ui/theme/ThemeToggles.tsx +48 -12
- package/src/ui/toast.tsx +13 -16
- package/src/ui/tooltip.tsx +3 -30
- package/src/ui/tree-view/TreeView.tsx +179 -21
- package/src/ui/tree-view/hooks.tsx +148 -0
- package/src/ui/tree-view/types.ts +2 -1
- package/src/ui/virtual-grid/VirtualGrid.tsx +345 -0
- package/src/ui/virtual-grid/index.ts +10 -0
- package/src/ui/virtual-grid/types.ts +72 -0
- package/src/ui/virtual-grid/useVirtualGrid.ts +243 -0
- package/src/ui/virtual-list/VirtualList.tsx +207 -0
- package/src/ui/virtual-list/index.ts +8 -0
- package/src/ui/virtual-list/types.ts +54 -0
- package/src/ui/virtual-list/useVirtualList.ts +203 -0
- package/src/ui/waterfall/TimelineProcessBar.tsx +10 -4
- package/dist/auth/components/index.cjs +0 -128
- package/dist/auth/components/index.d.cts +0 -2
- package/dist/auth/components/index.d.ts +0 -2
- package/dist/auth/components/index.mjs +0 -119
- package/dist/auth/components/user-avatar/index.cjs +0 -127
- package/dist/auth/components/user-avatar/index.d.cts +0 -8
- package/dist/auth/components/user-avatar/index.d.ts +0 -8
- package/dist/auth/components/user-avatar/index.mjs +0 -118
- package/dist/auth/context/user-context.cjs +0 -10
- package/dist/auth/context/user-context.d.cts +0 -13
- package/dist/auth/context/user-context.d.ts +0 -13
- package/dist/auth/context/user-context.mjs +0 -1
- package/dist/auth/handler/fetch-auth.cjs +0 -11
- package/dist/auth/handler/fetch-auth.d.cts +0 -3
- package/dist/auth/handler/fetch-auth.d.ts +0 -3
- package/dist/auth/handler/fetch-auth.mjs +0 -2
- package/dist/auth/handler/fetch-server.cjs +0 -11
- package/dist/auth/handler/fetch-server.d.cts +0 -3
- package/dist/auth/handler/fetch-server.d.ts +0 -3
- package/dist/auth/handler/fetch-server.mjs +0 -2
- package/dist/auth/handler/get-session.cjs +0 -12
- package/dist/auth/handler/get-session.d.cts +0 -21
- package/dist/auth/handler/get-session.d.ts +0 -21
- package/dist/auth/handler/get-session.mjs +0 -3
- package/dist/auth/handler/get-sessions.cjs +0 -12
- package/dist/auth/handler/get-sessions.d.cts +0 -21
- package/dist/auth/handler/get-sessions.d.ts +0 -21
- package/dist/auth/handler/get-sessions.mjs +0 -3
- package/dist/auth/handler/sign-in-handler.cjs +0 -11
- package/dist/auth/handler/sign-in-handler.d.cts +0 -6
- package/dist/auth/handler/sign-in-handler.d.ts +0 -6
- package/dist/auth/handler/sign-in-handler.mjs +0 -2
- package/dist/auth/handler/sign-out-handler.cjs +0 -12
- package/dist/auth/handler/sign-out-handler.d.cts +0 -5
- package/dist/auth/handler/sign-out-handler.d.ts +0 -5
- package/dist/auth/handler/sign-out-handler.mjs +0 -3
- package/dist/auth/hooks/use-sign-in.cjs +0 -14
- package/dist/auth/hooks/use-sign-in.d.cts +0 -9
- package/dist/auth/hooks/use-sign-in.d.ts +0 -9
- package/dist/auth/hooks/use-sign-in.mjs +0 -5
- package/dist/auth/hooks/use-sign-out.cjs +0 -15
- package/dist/auth/hooks/use-sign-out.d.cts +0 -6
- package/dist/auth/hooks/use-sign-out.d.ts +0 -6
- package/dist/auth/hooks/use-sign-out.mjs +0 -6
- package/dist/auth/hooks/use-user.cjs +0 -11
- package/dist/auth/hooks/use-user.d.cts +0 -8
- package/dist/auth/hooks/use-user.d.ts +0 -8
- package/dist/auth/hooks/use-user.mjs +0 -2
- package/dist/auth/hooks/use-vuer-sessions.cjs +0 -15
- package/dist/auth/hooks/use-vuer-sessions.d.cts +0 -9
- package/dist/auth/hooks/use-vuer-sessions.d.ts +0 -9
- package/dist/auth/hooks/use-vuer-sessions.mjs +0 -6
- package/dist/auth/index.cjs +0 -165
- package/dist/auth/index.d.cts +0 -13
- package/dist/auth/index.d.ts +0 -13
- package/dist/auth/index.mjs +0 -124
- package/dist/auth/localstorage-key.cjs +0 -14
- package/dist/auth/localstorage-key.d.cts +0 -4
- package/dist/auth/localstorage-key.d.ts +0 -4
- package/dist/auth/localstorage-key.mjs +0 -1
- package/dist/auth/types.d.cts +0 -27
- package/dist/auth/types.d.ts +0 -27
- package/dist/auth/vuer-user-provider.cjs +0 -14
- package/dist/auth/vuer-user-provider.d.cts +0 -9
- package/dist/auth/vuer-user-provider.d.ts +0 -9
- package/dist/auth/vuer-user-provider.mjs +0 -5
- package/dist/chunk-2DXJJLJL.mjs +0 -51
- package/dist/chunk-2GXIGEKC.mjs +0 -66
- package/dist/chunk-3WMO5QJJ.cjs +0 -8
- package/dist/chunk-5OHAV55L.mjs +0 -24
- package/dist/chunk-6C53NKMF.mjs +0 -206
- package/dist/chunk-6GJM7TPE.cjs +0 -28
- package/dist/chunk-7E5Y224I.cjs +0 -14
- package/dist/chunk-7R5HY3IM.cjs +0 -12
- package/dist/chunk-EMVKGL5D.mjs +0 -28
- package/dist/chunk-EMXEFZEB.cjs +0 -30
- package/dist/chunk-EOSYXHEH.mjs +0 -27
- package/dist/chunk-EXXV3BXT.cjs +0 -23
- package/dist/chunk-F4Z5KATZ.cjs +0 -8
- package/dist/chunk-FROQ45MN.mjs +0 -6
- package/dist/chunk-FZAGJSW2.cjs +0 -47
- package/dist/chunk-H7RH4CZ7.cjs +0 -54
- package/dist/chunk-HOMAESTR.mjs +0 -12
- package/dist/chunk-IPQU5CJD.mjs +0 -21
- package/dist/chunk-JR4TVE43.cjs +0 -31
- package/dist/chunk-KIZEJMW4.cjs +0 -15
- package/dist/chunk-KQW3YARN.cjs +0 -117
- package/dist/chunk-L2XJ5Q7T.cjs +0 -58
- package/dist/chunk-LAPOK2L4.mjs +0 -193
- package/dist/chunk-MFYDZKQF.mjs +0 -28
- package/dist/chunk-MNCBTS63.cjs +0 -68
- package/dist/chunk-MO5V43Z3.mjs +0 -13
- package/dist/chunk-MRMSCW3P.cjs +0 -19
- package/dist/chunk-OOHCJIRV.cjs +0 -26
- package/dist/chunk-PX2H7Z4D.mjs +0 -26
- package/dist/chunk-PXDT5GFJ.mjs +0 -13
- package/dist/chunk-Q3CJUGX3.cjs +0 -21
- package/dist/chunk-Q76WU4DL.cjs +0 -17
- package/dist/chunk-R4HT3SYR.cjs +0 -208
- package/dist/chunk-RSBVQ7SJ.cjs +0 -54
- package/dist/chunk-RTYZO2AC.cjs +0 -30
- package/dist/chunk-SO2UTKSV.mjs +0 -17
- package/dist/chunk-UT7B4TLZ.mjs +0 -5
- package/dist/chunk-V4KDK3BN.mjs +0 -52
- package/dist/chunk-V5T6XOSB.cjs +0 -222
- package/dist/chunk-VSFPXAGN.mjs +0 -10
- package/dist/chunk-VSIOXWSI.cjs +0 -53
- package/dist/chunk-WDS3VL7E.mjs +0 -56
- package/dist/chunk-X3H6FYAM.cjs +0 -15
- package/dist/chunk-XHJDRQD7.mjs +0 -29
- package/dist/chunk-Y2XVZEXM.mjs +0 -45
- package/dist/chunk-Z7BZFZEV.mjs +0 -15
- package/dist/dial/DialProvider.example.cjs +0 -72
- package/dist/dial/DialProvider.example.d.cts +0 -7
- package/dist/dial/DialProvider.example.d.ts +0 -7
- package/dist/dial/DialProvider.example.mjs +0 -68
- package/dist/styles/toast.css +0 -64
- package/dist/styles/toast.d.cts +0 -2
- package/dist/styles/toast.d.ts +0 -2
- package/src/auth/components/index.ts +0 -1
- package/src/auth/components/user-avatar/index.tsx +0 -94
- package/src/auth/context/user-context.ts +0 -15
- package/src/auth/handler/fetch-auth.ts +0 -10
- package/src/auth/handler/fetch-server.ts +0 -10
- package/src/auth/handler/get-session.ts +0 -19
- package/src/auth/handler/get-sessions.ts +0 -16
- package/src/auth/handler/sign-in-handler.ts +0 -64
- package/src/auth/handler/sign-out-handler.ts +0 -9
- package/src/auth/hooks/use-sign-in.ts +0 -33
- package/src/auth/hooks/use-sign-out.ts +0 -30
- package/src/auth/hooks/use-user.ts +0 -10
- package/src/auth/hooks/use-vuer-sessions.ts +0 -29
- package/src/auth/index.ts +0 -12
- package/src/auth/localstorage-key.ts +0 -3
- package/src/auth/types.ts +0 -38
- package/src/auth/vuer-user-provider.tsx +0 -58
- package/src/dial/DialProvider.example.tsx +0 -80
- package/src/styles/toast.css +0 -67
- /package/dist/{auth/types.mjs → chunk-6NZ5VXK7.mjs} +0 -0
- /package/dist/{chunk-UXWS62ZO.mjs → chunk-6THKQIF7.mjs} +0 -0
- /package/dist/{auth/types.cjs → chunk-AS3GNGJN.cjs} +0 -0
- /package/dist/{chunk-NK7L5H2Y.cjs → chunk-DPILGC4Y.cjs} +0 -0
- /package/dist/{chunk-YWECB5GR.cjs → chunk-F4NQLN5E.cjs} +0 -0
- /package/dist/{chunk-YYLBP356.mjs → chunk-NU5W73NH.mjs} +0 -0
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import React, {
|
|
2
|
+
forwardRef,
|
|
3
|
+
useCallback,
|
|
4
|
+
useEffect,
|
|
5
|
+
useLayoutEffect,
|
|
6
|
+
useRef,
|
|
7
|
+
useState,
|
|
8
|
+
type ComponentProps,
|
|
9
|
+
} from "react";
|
|
10
|
+
|
|
11
|
+
import type { VirtualGridProps } from "./types";
|
|
12
|
+
import { useVirtualGrid } from "./useVirtualGrid";
|
|
13
|
+
import { cn } from "../../hooks";
|
|
14
|
+
|
|
15
|
+
interface VirtualGridComponentProps<T>
|
|
16
|
+
extends Omit<ComponentProps<"div">, "children">,
|
|
17
|
+
VirtualGridProps<T> {}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* VirtualGrid component - renders only visible cells for efficient grid rendering.
|
|
21
|
+
* Supports both fixed and variable row/column sizes, cell spanning, and sticky headers/columns.
|
|
22
|
+
*
|
|
23
|
+
* @param data - 2D array of cell data
|
|
24
|
+
* @param rowCount - Number of rows in the grid
|
|
25
|
+
* @param columnCount - Number of columns in the grid
|
|
26
|
+
* @param rowHeight - Height for each row (fixed or function)
|
|
27
|
+
* @param columnWidth - Width for each column (fixed or function)
|
|
28
|
+
* @param height - Container height
|
|
29
|
+
* @param width - Container width (default: '100%')
|
|
30
|
+
* @param overscanRows - Extra rows to render outside visible area (default: 2)
|
|
31
|
+
* @param overscanColumns - Extra columns to render outside visible area (default: 2)
|
|
32
|
+
* @param getCellKey - Function to get a unique key for each cell
|
|
33
|
+
* @param getColSpan - Function to get column span for a cell
|
|
34
|
+
* @param getRowSpan - Function to get row span for a cell
|
|
35
|
+
* @param children - Render function for each cell
|
|
36
|
+
* @param stickyHeader - Keep first row visible
|
|
37
|
+
* @param stickyColumn - Keep first column visible
|
|
38
|
+
*/
|
|
39
|
+
function VirtualGridInner<T>(
|
|
40
|
+
{
|
|
41
|
+
data,
|
|
42
|
+
rowCount,
|
|
43
|
+
columnCount,
|
|
44
|
+
rowHeight,
|
|
45
|
+
columnWidth,
|
|
46
|
+
height,
|
|
47
|
+
width = "100%",
|
|
48
|
+
overscanRows = 2,
|
|
49
|
+
overscanColumns = 2,
|
|
50
|
+
getCellKey,
|
|
51
|
+
getColSpan,
|
|
52
|
+
getRowSpan,
|
|
53
|
+
children,
|
|
54
|
+
stickyHeader = false,
|
|
55
|
+
stickyColumn = false,
|
|
56
|
+
className,
|
|
57
|
+
style,
|
|
58
|
+
...props
|
|
59
|
+
}: VirtualGridComponentProps<T>,
|
|
60
|
+
ref: React.ForwardedRef<HTMLDivElement>,
|
|
61
|
+
) {
|
|
62
|
+
const containerRef = useRef<HTMLDivElement>(null);
|
|
63
|
+
const stickyLayerRef = useRef<HTMLDivElement>(null);
|
|
64
|
+
const [scrollTop, setScrollTop] = useState(0);
|
|
65
|
+
const [scrollLeft, setScrollLeft] = useState(0);
|
|
66
|
+
const [containerWidth, setContainerWidth] = useState(0);
|
|
67
|
+
const [containerHeight, setContainerHeight] = useState(0);
|
|
68
|
+
|
|
69
|
+
// Track scroll position in ref for immediate updates
|
|
70
|
+
const scrollRef = useRef({ top: 0, left: 0 });
|
|
71
|
+
|
|
72
|
+
// Combine refs
|
|
73
|
+
const setRefs = useCallback(
|
|
74
|
+
(node: HTMLDivElement | null) => {
|
|
75
|
+
(containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;
|
|
76
|
+
if (typeof ref === "function") {
|
|
77
|
+
ref(node);
|
|
78
|
+
} else if (ref) {
|
|
79
|
+
ref.current = node;
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
[ref],
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
// Measure container dimensions
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
const container = containerRef.current;
|
|
88
|
+
if (!container) return;
|
|
89
|
+
|
|
90
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
91
|
+
for (const entry of entries) {
|
|
92
|
+
setContainerWidth(entry.contentRect.width);
|
|
93
|
+
setContainerHeight(entry.contentRect.height);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
resizeObserver.observe(container);
|
|
98
|
+
setContainerWidth(container.clientWidth);
|
|
99
|
+
setContainerHeight(container.clientHeight);
|
|
100
|
+
|
|
101
|
+
return () => resizeObserver.disconnect();
|
|
102
|
+
}, []);
|
|
103
|
+
|
|
104
|
+
const {
|
|
105
|
+
visibleRange,
|
|
106
|
+
totalWidth,
|
|
107
|
+
totalHeight,
|
|
108
|
+
getCellStyle,
|
|
109
|
+
getRowOffset,
|
|
110
|
+
getColumnOffset,
|
|
111
|
+
getRowHeight,
|
|
112
|
+
getColumnWidth,
|
|
113
|
+
} = useVirtualGrid({
|
|
114
|
+
rowCount,
|
|
115
|
+
columnCount,
|
|
116
|
+
rowHeight,
|
|
117
|
+
columnWidth,
|
|
118
|
+
containerWidth,
|
|
119
|
+
containerHeight,
|
|
120
|
+
scrollTop,
|
|
121
|
+
scrollLeft,
|
|
122
|
+
overscanRows,
|
|
123
|
+
overscanColumns,
|
|
124
|
+
getColSpan,
|
|
125
|
+
getRowSpan,
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// Handle scroll - update CSS variables immediately, debounce state updates
|
|
129
|
+
const rafRef = useRef<number | null>(null);
|
|
130
|
+
|
|
131
|
+
const handleScroll = useCallback((e: React.UIEvent<HTMLDivElement>) => {
|
|
132
|
+
const newScrollTop = e.currentTarget.scrollTop;
|
|
133
|
+
const newScrollLeft = e.currentTarget.scrollLeft;
|
|
134
|
+
|
|
135
|
+
// Update ref immediately
|
|
136
|
+
scrollRef.current = { top: newScrollTop, left: newScrollLeft };
|
|
137
|
+
|
|
138
|
+
// Update CSS variables immediately for smooth sticky positioning
|
|
139
|
+
// Round to prevent sub-pixel jitter
|
|
140
|
+
if (stickyLayerRef.current) {
|
|
141
|
+
stickyLayerRef.current.style.setProperty("--scroll-top", `${Math.round(newScrollTop)}px`);
|
|
142
|
+
stickyLayerRef.current.style.setProperty("--scroll-left", `${Math.round(newScrollLeft)}px`);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Debounce state updates for virtualization range calculation
|
|
146
|
+
if (rafRef.current) {
|
|
147
|
+
cancelAnimationFrame(rafRef.current);
|
|
148
|
+
}
|
|
149
|
+
rafRef.current = requestAnimationFrame(() => {
|
|
150
|
+
setScrollTop(newScrollTop);
|
|
151
|
+
setScrollLeft(newScrollLeft);
|
|
152
|
+
});
|
|
153
|
+
}, []);
|
|
154
|
+
|
|
155
|
+
// Cleanup RAF on unmount
|
|
156
|
+
useEffect(() => {
|
|
157
|
+
return () => {
|
|
158
|
+
if (rafRef.current) {
|
|
159
|
+
cancelAnimationFrame(rafRef.current);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
}, []);
|
|
163
|
+
|
|
164
|
+
// Initialize CSS variables
|
|
165
|
+
useLayoutEffect(() => {
|
|
166
|
+
if (stickyLayerRef.current) {
|
|
167
|
+
stickyLayerRef.current.style.setProperty("--scroll-top", "0px");
|
|
168
|
+
stickyLayerRef.current.style.setProperty("--scroll-left", "0px");
|
|
169
|
+
}
|
|
170
|
+
}, []);
|
|
171
|
+
|
|
172
|
+
// Track which cells are covered by spans
|
|
173
|
+
const coveredCells = new Set<string>();
|
|
174
|
+
|
|
175
|
+
// Pre-calculate covered cells from spans
|
|
176
|
+
if (getColSpan || getRowSpan) {
|
|
177
|
+
for (let row = visibleRange.startRow; row <= visibleRange.endRow; row++) {
|
|
178
|
+
for (let col = visibleRange.startCol; col <= visibleRange.endCol; col++) {
|
|
179
|
+
const colspan = getColSpan?.(row, col) ?? 1;
|
|
180
|
+
const rowspan = getRowSpan?.(row, col) ?? 1;
|
|
181
|
+
|
|
182
|
+
if (colspan > 1 || rowspan > 1) {
|
|
183
|
+
for (let r = row; r < row + rowspan; r++) {
|
|
184
|
+
for (let c = col; c < col + colspan; c++) {
|
|
185
|
+
if (r !== row || c !== col) {
|
|
186
|
+
coveredCells.add(`${r}-${c}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Render visible cells
|
|
196
|
+
const visibleCells = [];
|
|
197
|
+
for (let row = visibleRange.startRow; row <= visibleRange.endRow && row < rowCount; row++) {
|
|
198
|
+
for (let col = visibleRange.startCol; col <= visibleRange.endCol && col < columnCount; col++) {
|
|
199
|
+
// Skip cells covered by spans
|
|
200
|
+
if (coveredCells.has(`${row}-${col}`)) {
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Skip header row and sticky column cells - they're rendered separately
|
|
205
|
+
if ((stickyHeader && row === 0) || (stickyColumn && col === 0)) {
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const cellData = data[row]?.[col];
|
|
210
|
+
const key = getCellKey ? getCellKey(row, col) : `${row}-${col}`;
|
|
211
|
+
const cellStyle = getCellStyle(row, col);
|
|
212
|
+
|
|
213
|
+
visibleCells.push(
|
|
214
|
+
<React.Fragment key={key}>{children(cellData, row, col, cellStyle)}</React.Fragment>,
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Style for sticky cell content - fills the wrapper
|
|
220
|
+
const stickyContentStyle = { width: "100%", height: "100%" };
|
|
221
|
+
|
|
222
|
+
// Render sticky header cells (using CSS variable for Y position)
|
|
223
|
+
const stickyHeaderCells = [];
|
|
224
|
+
if (stickyHeader && rowCount > 0) {
|
|
225
|
+
for (let col = visibleRange.startCol; col <= visibleRange.endCol && col < columnCount; col++) {
|
|
226
|
+
// Skip first column if sticky column is enabled
|
|
227
|
+
if (stickyColumn && col === 0) continue;
|
|
228
|
+
if (coveredCells.has(`0-${col}`)) continue;
|
|
229
|
+
|
|
230
|
+
const cellData = data[0]?.[col];
|
|
231
|
+
const key = getCellKey ? getCellKey(0, col) : `header-${col}`;
|
|
232
|
+
|
|
233
|
+
stickyHeaderCells.push(
|
|
234
|
+
<div
|
|
235
|
+
key={key}
|
|
236
|
+
className="sticky-header-cell"
|
|
237
|
+
style={{
|
|
238
|
+
position: "absolute",
|
|
239
|
+
top: 0,
|
|
240
|
+
left: 0,
|
|
241
|
+
width: getColumnWidth(col),
|
|
242
|
+
height: getRowHeight(0),
|
|
243
|
+
transform: `translate3d(${getColumnOffset(col)}px, var(--scroll-top, 0px), 0)`,
|
|
244
|
+
willChange: "transform",
|
|
245
|
+
zIndex: 2,
|
|
246
|
+
}}
|
|
247
|
+
>
|
|
248
|
+
{children(cellData, 0, col, stickyContentStyle)}
|
|
249
|
+
</div>,
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// Render sticky column cells (using CSS variable for X position)
|
|
255
|
+
const stickyColumnCells = [];
|
|
256
|
+
if (stickyColumn && columnCount > 0) {
|
|
257
|
+
for (let row = visibleRange.startRow; row <= visibleRange.endRow && row < rowCount; row++) {
|
|
258
|
+
// Skip first row if sticky header is enabled
|
|
259
|
+
if (stickyHeader && row === 0) continue;
|
|
260
|
+
if (coveredCells.has(`${row}-0`)) continue;
|
|
261
|
+
|
|
262
|
+
const cellData = data[row]?.[0];
|
|
263
|
+
const key = getCellKey ? getCellKey(row, 0) : `sticky-col-${row}`;
|
|
264
|
+
|
|
265
|
+
stickyColumnCells.push(
|
|
266
|
+
<div
|
|
267
|
+
key={key}
|
|
268
|
+
className="sticky-column-cell"
|
|
269
|
+
style={{
|
|
270
|
+
position: "absolute",
|
|
271
|
+
top: 0,
|
|
272
|
+
left: 0,
|
|
273
|
+
width: getColumnWidth(0),
|
|
274
|
+
height: getRowHeight(row),
|
|
275
|
+
transform: `translate3d(var(--scroll-left, 0px), ${getRowOffset(row)}px, 0)`,
|
|
276
|
+
willChange: "transform",
|
|
277
|
+
zIndex: 2,
|
|
278
|
+
}}
|
|
279
|
+
>
|
|
280
|
+
{children(cellData, row, 0, stickyContentStyle)}
|
|
281
|
+
</div>,
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// Render sticky corner cell (using CSS variables for both X and Y)
|
|
287
|
+
const stickyCornerCell =
|
|
288
|
+
stickyHeader && stickyColumn && rowCount > 0 && columnCount > 0 ? (
|
|
289
|
+
<div
|
|
290
|
+
key="sticky-corner"
|
|
291
|
+
className="sticky-corner-cell"
|
|
292
|
+
style={{
|
|
293
|
+
position: "absolute",
|
|
294
|
+
top: 0,
|
|
295
|
+
left: 0,
|
|
296
|
+
width: getColumnWidth(0),
|
|
297
|
+
height: getRowHeight(0),
|
|
298
|
+
transform: `translate3d(var(--scroll-left, 0px), var(--scroll-top, 0px), 0)`,
|
|
299
|
+
willChange: "transform",
|
|
300
|
+
zIndex: 3,
|
|
301
|
+
}}
|
|
302
|
+
>
|
|
303
|
+
{children(data[0]?.[0], 0, 0, stickyContentStyle)}
|
|
304
|
+
</div>
|
|
305
|
+
) : null;
|
|
306
|
+
|
|
307
|
+
const hasStickyElements = stickyHeader || stickyColumn;
|
|
308
|
+
|
|
309
|
+
return (
|
|
310
|
+
<div
|
|
311
|
+
ref={setRefs}
|
|
312
|
+
className={cn("relative overflow-auto", className)}
|
|
313
|
+
style={{
|
|
314
|
+
height,
|
|
315
|
+
width,
|
|
316
|
+
...style,
|
|
317
|
+
}}
|
|
318
|
+
onScroll={handleScroll}
|
|
319
|
+
{...props}
|
|
320
|
+
>
|
|
321
|
+
<div
|
|
322
|
+
ref={hasStickyElements ? stickyLayerRef : undefined}
|
|
323
|
+
style={{
|
|
324
|
+
height: totalHeight,
|
|
325
|
+
width: totalWidth,
|
|
326
|
+
position: "relative",
|
|
327
|
+
}}
|
|
328
|
+
>
|
|
329
|
+
{/* Sticky elements first - stable position in DOM during scroll */}
|
|
330
|
+
{stickyCornerCell}
|
|
331
|
+
{stickyHeaderCells}
|
|
332
|
+
{stickyColumnCells}
|
|
333
|
+
{/* Visible cells last - changes frequently during scroll */}
|
|
334
|
+
{visibleCells}
|
|
335
|
+
</div>
|
|
336
|
+
</div>
|
|
337
|
+
);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// Use a generic forwardRef pattern
|
|
341
|
+
export const VirtualGrid = forwardRef(VirtualGridInner) as <T>(
|
|
342
|
+
props: VirtualGridComponentProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> },
|
|
343
|
+
) => React.ReactElement;
|
|
344
|
+
|
|
345
|
+
export type { VirtualGridProps };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { CSSProperties, ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
export type RowHeight = number | ((rowIndex: number) => number);
|
|
4
|
+
export type ColumnWidth = number | ((colIndex: number) => number);
|
|
5
|
+
|
|
6
|
+
export interface VirtualGridProps<T> {
|
|
7
|
+
/** 2D array of cell data */
|
|
8
|
+
data: T[][];
|
|
9
|
+
/** Number of rows in the grid */
|
|
10
|
+
rowCount: number;
|
|
11
|
+
/** Number of columns in the grid */
|
|
12
|
+
columnCount: number;
|
|
13
|
+
/** Height for each row - fixed number or function returning height for a given row */
|
|
14
|
+
rowHeight: RowHeight;
|
|
15
|
+
/** Width for each column - fixed number or function returning width for a given column */
|
|
16
|
+
columnWidth: ColumnWidth;
|
|
17
|
+
/** Container height */
|
|
18
|
+
height: number | string;
|
|
19
|
+
/** Container width (default: '100%') */
|
|
20
|
+
width?: number | string;
|
|
21
|
+
/** Number of extra rows to render outside visible area (default: 2) */
|
|
22
|
+
overscanRows?: number;
|
|
23
|
+
/** Number of extra columns to render outside visible area (default: 2) */
|
|
24
|
+
overscanColumns?: number;
|
|
25
|
+
/** Function to get a unique key for each cell */
|
|
26
|
+
getCellKey?: (row: number, col: number) => string;
|
|
27
|
+
/** Function to get column span for a cell (default: 1) */
|
|
28
|
+
getColSpan?: (row: number, col: number) => number;
|
|
29
|
+
/** Function to get row span for a cell (default: 1) */
|
|
30
|
+
getRowSpan?: (row: number, col: number) => number;
|
|
31
|
+
/** Render function for each cell */
|
|
32
|
+
children: (data: T, row: number, col: number, style: CSSProperties) => ReactNode;
|
|
33
|
+
/** Keep first row visible when scrolling vertically */
|
|
34
|
+
stickyHeader?: boolean;
|
|
35
|
+
/** Keep first column visible when scrolling horizontally */
|
|
36
|
+
stickyColumn?: boolean;
|
|
37
|
+
/** Additional className for the container */
|
|
38
|
+
className?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface GridRange {
|
|
42
|
+
startRow: number;
|
|
43
|
+
endRow: number;
|
|
44
|
+
startCol: number;
|
|
45
|
+
endCol: number;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface UseVirtualGridOptions {
|
|
49
|
+
rowCount: number;
|
|
50
|
+
columnCount: number;
|
|
51
|
+
rowHeight: RowHeight;
|
|
52
|
+
columnWidth: ColumnWidth;
|
|
53
|
+
containerWidth: number;
|
|
54
|
+
containerHeight: number;
|
|
55
|
+
scrollTop: number;
|
|
56
|
+
scrollLeft: number;
|
|
57
|
+
overscanRows: number;
|
|
58
|
+
overscanColumns: number;
|
|
59
|
+
getColSpan?: (row: number, col: number) => number;
|
|
60
|
+
getRowSpan?: (row: number, col: number) => number;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface UseVirtualGridResult {
|
|
64
|
+
visibleRange: GridRange;
|
|
65
|
+
totalWidth: number;
|
|
66
|
+
totalHeight: number;
|
|
67
|
+
getRowOffset: (rowIndex: number) => number;
|
|
68
|
+
getColumnOffset: (colIndex: number) => number;
|
|
69
|
+
getRowHeight: (rowIndex: number) => number;
|
|
70
|
+
getColumnWidth: (colIndex: number) => number;
|
|
71
|
+
getCellStyle: (row: number, col: number) => CSSProperties;
|
|
72
|
+
}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { useCallback, useMemo, type CSSProperties } from "react";
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
ColumnWidth,
|
|
5
|
+
GridRange,
|
|
6
|
+
RowHeight,
|
|
7
|
+
UseVirtualGridOptions,
|
|
8
|
+
UseVirtualGridResult,
|
|
9
|
+
} from "./types";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Get the height for a row
|
|
13
|
+
*/
|
|
14
|
+
function getHeight(rowHeight: RowHeight, rowIndex: number): number {
|
|
15
|
+
return typeof rowHeight === "function" ? rowHeight(rowIndex) : rowHeight;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Get the width for a column
|
|
20
|
+
*/
|
|
21
|
+
function getWidth(columnWidth: ColumnWidth, colIndex: number): number {
|
|
22
|
+
return typeof columnWidth === "function" ? columnWidth(colIndex) : columnWidth;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Binary search to find the start index for a given offset
|
|
27
|
+
*/
|
|
28
|
+
function findStartIndex(
|
|
29
|
+
count: number,
|
|
30
|
+
scrollOffset: number,
|
|
31
|
+
getSize: (index: number) => number,
|
|
32
|
+
): number {
|
|
33
|
+
if (count === 0) return 0;
|
|
34
|
+
|
|
35
|
+
let offset = 0;
|
|
36
|
+
let low = 0;
|
|
37
|
+
let high = count - 1;
|
|
38
|
+
|
|
39
|
+
// Binary search approximation
|
|
40
|
+
while (low <= high) {
|
|
41
|
+
const mid = Math.floor((low + high) / 2);
|
|
42
|
+
|
|
43
|
+
// Calculate offset for mid
|
|
44
|
+
let midOffset = 0;
|
|
45
|
+
for (let i = 0; i < mid; i++) {
|
|
46
|
+
midOffset += getSize(i);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (midOffset < scrollOffset) {
|
|
50
|
+
low = mid + 1;
|
|
51
|
+
offset = midOffset;
|
|
52
|
+
} else if (midOffset > scrollOffset) {
|
|
53
|
+
high = mid - 1;
|
|
54
|
+
} else {
|
|
55
|
+
return mid;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Fine-tune by scanning from low
|
|
60
|
+
let index = Math.max(0, low - 1);
|
|
61
|
+
offset = 0;
|
|
62
|
+
for (let i = 0; i < index; i++) {
|
|
63
|
+
offset += getSize(i);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
while (index < count - 1 && offset + getSize(index) <= scrollOffset) {
|
|
67
|
+
offset += getSize(index);
|
|
68
|
+
index++;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return index;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Hook for virtualizing a 2D grid of items
|
|
76
|
+
*/
|
|
77
|
+
export function useVirtualGrid({
|
|
78
|
+
rowCount,
|
|
79
|
+
columnCount,
|
|
80
|
+
rowHeight,
|
|
81
|
+
columnWidth,
|
|
82
|
+
containerWidth,
|
|
83
|
+
containerHeight,
|
|
84
|
+
scrollTop,
|
|
85
|
+
scrollLeft,
|
|
86
|
+
overscanRows,
|
|
87
|
+
overscanColumns,
|
|
88
|
+
getColSpan = () => 1,
|
|
89
|
+
getRowSpan = () => 1,
|
|
90
|
+
}: UseVirtualGridOptions): UseVirtualGridResult {
|
|
91
|
+
// Memoize size functions
|
|
92
|
+
const getRowHeightFn = useCallback((index: number) => getHeight(rowHeight, index), [rowHeight]);
|
|
93
|
+
|
|
94
|
+
const getColumnWidthFn = useCallback(
|
|
95
|
+
(index: number) => getWidth(columnWidth, index),
|
|
96
|
+
[columnWidth],
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
// Calculate total dimensions
|
|
100
|
+
const totalHeight = useMemo(() => {
|
|
101
|
+
let height = 0;
|
|
102
|
+
for (let i = 0; i < rowCount; i++) {
|
|
103
|
+
height += getRowHeightFn(i);
|
|
104
|
+
}
|
|
105
|
+
return height;
|
|
106
|
+
}, [rowCount, getRowHeightFn]);
|
|
107
|
+
|
|
108
|
+
const totalWidth = useMemo(() => {
|
|
109
|
+
let width = 0;
|
|
110
|
+
for (let i = 0; i < columnCount; i++) {
|
|
111
|
+
width += getColumnWidthFn(i);
|
|
112
|
+
}
|
|
113
|
+
return width;
|
|
114
|
+
}, [columnCount, getColumnWidthFn]);
|
|
115
|
+
|
|
116
|
+
// Calculate row offsets (memoized)
|
|
117
|
+
const rowOffsets = useMemo(() => {
|
|
118
|
+
const offsets: number[] = [0];
|
|
119
|
+
for (let i = 0; i < rowCount; i++) {
|
|
120
|
+
offsets.push(offsets[i] + getRowHeightFn(i));
|
|
121
|
+
}
|
|
122
|
+
return offsets;
|
|
123
|
+
}, [rowCount, getRowHeightFn]);
|
|
124
|
+
|
|
125
|
+
// Calculate column offsets (memoized)
|
|
126
|
+
const columnOffsets = useMemo(() => {
|
|
127
|
+
const offsets: number[] = [0];
|
|
128
|
+
for (let i = 0; i < columnCount; i++) {
|
|
129
|
+
offsets.push(offsets[i] + getColumnWidthFn(i));
|
|
130
|
+
}
|
|
131
|
+
return offsets;
|
|
132
|
+
}, [columnCount, getColumnWidthFn]);
|
|
133
|
+
|
|
134
|
+
// Get offset for a row
|
|
135
|
+
const getRowOffset = useCallback((rowIndex: number) => rowOffsets[rowIndex] ?? 0, [rowOffsets]);
|
|
136
|
+
|
|
137
|
+
// Get offset for a column
|
|
138
|
+
const getColumnOffset = useCallback(
|
|
139
|
+
(colIndex: number) => columnOffsets[colIndex] ?? 0,
|
|
140
|
+
[columnOffsets],
|
|
141
|
+
);
|
|
142
|
+
|
|
143
|
+
// Calculate visible range
|
|
144
|
+
const visibleRange = useMemo<GridRange>(() => {
|
|
145
|
+
if (rowCount === 0 || columnCount === 0) {
|
|
146
|
+
return { startRow: 0, endRow: 0, startCol: 0, endCol: 0 };
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Find start row
|
|
150
|
+
const startRow = findStartIndex(rowCount, scrollTop, getRowHeightFn);
|
|
151
|
+
|
|
152
|
+
// Find end row
|
|
153
|
+
let endRow = startRow;
|
|
154
|
+
let accumulatedHeight = getRowOffset(startRow) - scrollTop;
|
|
155
|
+
while (endRow < rowCount - 1 && accumulatedHeight < containerHeight) {
|
|
156
|
+
accumulatedHeight += getRowHeightFn(endRow);
|
|
157
|
+
endRow++;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Find start column
|
|
161
|
+
const startCol = findStartIndex(columnCount, scrollLeft, getColumnWidthFn);
|
|
162
|
+
|
|
163
|
+
// Find end column
|
|
164
|
+
let endCol = startCol;
|
|
165
|
+
let accumulatedWidth = getColumnOffset(startCol) - scrollLeft;
|
|
166
|
+
while (endCol < columnCount - 1 && accumulatedWidth < containerWidth) {
|
|
167
|
+
accumulatedWidth += getColumnWidthFn(endCol);
|
|
168
|
+
endCol++;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return {
|
|
172
|
+
startRow: Math.max(0, startRow - overscanRows),
|
|
173
|
+
endRow: Math.min(rowCount - 1, endRow + overscanRows),
|
|
174
|
+
startCol: Math.max(0, startCol - overscanColumns),
|
|
175
|
+
endCol: Math.min(columnCount - 1, endCol + overscanColumns),
|
|
176
|
+
};
|
|
177
|
+
}, [
|
|
178
|
+
rowCount,
|
|
179
|
+
columnCount,
|
|
180
|
+
scrollTop,
|
|
181
|
+
scrollLeft,
|
|
182
|
+
containerHeight,
|
|
183
|
+
containerWidth,
|
|
184
|
+
overscanRows,
|
|
185
|
+
overscanColumns,
|
|
186
|
+
getRowHeightFn,
|
|
187
|
+
getColumnWidthFn,
|
|
188
|
+
getRowOffset,
|
|
189
|
+
getColumnOffset,
|
|
190
|
+
]);
|
|
191
|
+
|
|
192
|
+
// Get style for a cell
|
|
193
|
+
const getCellStyle = useCallback(
|
|
194
|
+
(row: number, col: number): CSSProperties => {
|
|
195
|
+
const top = getRowOffset(row);
|
|
196
|
+
const left = getColumnOffset(col);
|
|
197
|
+
|
|
198
|
+
// Calculate width with colspan
|
|
199
|
+
const colspan = getColSpan(row, col);
|
|
200
|
+
let width = 0;
|
|
201
|
+
for (let c = col; c < col + colspan && c < columnCount; c++) {
|
|
202
|
+
width += getColumnWidthFn(c);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Calculate height with rowspan
|
|
206
|
+
const rowspan = getRowSpan(row, col);
|
|
207
|
+
let height = 0;
|
|
208
|
+
for (let r = row; r < row + rowspan && r < rowCount; r++) {
|
|
209
|
+
height += getRowHeightFn(r);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return {
|
|
213
|
+
position: "absolute",
|
|
214
|
+
top: 0,
|
|
215
|
+
left: 0,
|
|
216
|
+
width,
|
|
217
|
+
height,
|
|
218
|
+
transform: `translate(${left}px, ${top}px)`,
|
|
219
|
+
};
|
|
220
|
+
},
|
|
221
|
+
[
|
|
222
|
+
getRowOffset,
|
|
223
|
+
getColumnOffset,
|
|
224
|
+
getColSpan,
|
|
225
|
+
getRowSpan,
|
|
226
|
+
columnCount,
|
|
227
|
+
rowCount,
|
|
228
|
+
getColumnWidthFn,
|
|
229
|
+
getRowHeightFn,
|
|
230
|
+
],
|
|
231
|
+
);
|
|
232
|
+
|
|
233
|
+
return {
|
|
234
|
+
visibleRange,
|
|
235
|
+
totalWidth,
|
|
236
|
+
totalHeight,
|
|
237
|
+
getRowOffset,
|
|
238
|
+
getColumnOffset,
|
|
239
|
+
getRowHeight: getRowHeightFn,
|
|
240
|
+
getColumnWidth: getColumnWidthFn,
|
|
241
|
+
getCellStyle,
|
|
242
|
+
};
|
|
243
|
+
}
|