@vuer-ai/vuer-uikit 0.0.121 → 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 +4 -4
- package/dist/SyncScroll/SyncScroll.mjs +4 -4
- package/dist/SyncScroll/index.cjs +4 -4
- package/dist/SyncScroll/index.mjs +4 -4
- package/dist/SyncScroll/useSyncScroll.d.cts +5 -5
- package/dist/SyncScroll/useSyncScroll.d.ts +5 -5
- package/dist/{chunk-3SUV56TH.mjs → chunk-2IMCDH5J.mjs} +2 -2
- package/dist/{chunk-3P2OP4KO.mjs → chunk-2J466BYZ.mjs} +2 -1
- package/dist/{chunk-QF3JWGWX.cjs → chunk-2KBNQ5PY.cjs} +2 -2
- package/dist/{chunk-D5WTSBUX.cjs → chunk-3UQ323EB.cjs} +6 -40
- package/dist/{chunk-G45SP3DA.mjs → chunk-44U6VC46.mjs} +480 -62
- package/dist/{chunk-VW2NEQHK.cjs → chunk-4FIP3EXW.cjs} +2 -2
- package/dist/chunk-4SI4QV5R.cjs +14 -0
- package/dist/{chunk-O5YP3JQ4.mjs → chunk-4W7JKZVN.mjs} +2 -1
- package/dist/chunk-52GNIM6H.mjs +12 -0
- package/dist/{chunk-6ZLK2RYS.mjs → chunk-5GBMVMLS.mjs} +4 -4
- package/dist/{chunk-MMQR4IEY.cjs → chunk-753HUOAI.cjs} +6 -6
- package/dist/chunk-7MKCWXNV.cjs +32 -0
- package/dist/{chunk-ZQ2DPA2M.mjs → chunk-7WJ73FEI.mjs} +1 -1
- package/dist/{chunk-XMVARRN6.cjs → chunk-AFALU3AK.cjs} +2 -2
- package/dist/{chunk-XDIHVSZ5.cjs → chunk-BNXJ5VBE.cjs} +2 -2
- package/dist/{chunk-YBUMQX6M.mjs → chunk-BPCD4L7T.mjs} +1 -1
- package/dist/{chunk-BDFUHPX2.mjs → chunk-BTGAKK3B.mjs} +1 -1
- package/dist/{chunk-4G2LN6XU.cjs → chunk-BXJTOIRR.cjs} +513 -93
- package/dist/{chunk-B6CIRZI4.cjs → chunk-BZI74LKX.cjs} +1 -0
- package/dist/{chunk-KWSH253U.cjs → chunk-CMO3SLOU.cjs} +2 -2
- package/dist/{chunk-HGN7J4CP.mjs → chunk-D2LUQKPM.mjs} +128 -89
- package/dist/chunk-DF7WIFZK.cjs +316 -0
- package/dist/{chunk-HVACIZB5.cjs → chunk-DKLVWYTC.cjs} +29 -12
- package/dist/chunk-DKWLF3KW.mjs +149 -0
- package/dist/{chunk-4WKFVKFF.cjs → chunk-DPJPOBUT.cjs} +2 -2
- package/dist/{chunk-XHNM6XE3.mjs → chunk-EG6JETUN.mjs} +1 -1
- package/dist/{chunk-QYYMLZFE.mjs → chunk-EXM6QMNR.mjs} +1 -1
- package/dist/{chunk-2KQXKQNU.mjs → chunk-EYMZP5PL.mjs} +1 -1
- package/dist/chunk-FRM27RLN.cjs +264 -0
- package/dist/chunk-FTB337IJ.cjs +143 -0
- package/dist/{chunk-PZDC5ZKG.mjs → chunk-G35PQKU5.mjs} +3 -3
- package/dist/{chunk-BLG4IPRR.mjs → chunk-GAAP5JO4.mjs} +1 -1
- package/dist/{chunk-LOMLR5AA.mjs → chunk-HI4LO6IJ.mjs} +1 -1
- package/dist/{chunk-FUMJBAQI.mjs → chunk-HNW2DRPV.mjs} +2 -6
- package/dist/{chunk-YAFKQ5ZV.cjs → chunk-HSUL5OUG.cjs} +2 -1
- package/dist/{chunk-KKGDRIR2.cjs → chunk-I2COLDHC.cjs} +2 -2
- package/dist/{chunk-E7ACJ3NX.cjs → chunk-IAWMCOHS.cjs} +2 -2
- package/dist/{chunk-PC42NEBI.mjs → chunk-ITOTSGSL.mjs} +1 -1
- package/dist/{chunk-CEYNTMQP.mjs → chunk-IYTGWOZY.mjs} +1 -1
- package/dist/chunk-J74A5LNZ.cjs +179 -0
- package/dist/{chunk-CV2EDA3W.cjs → chunk-JDEZ6NNG.cjs} +2 -2
- package/dist/chunk-JEWTYDLX.cjs +119 -0
- package/dist/{chunk-UTHAZV2T.cjs → chunk-JTFQFULL.cjs} +2 -6
- package/dist/{chunk-GJKFQHUX.mjs → chunk-KXKUQSNY.mjs} +1 -1
- package/dist/chunk-L2AKG4VJ.mjs +258 -0
- package/dist/{chunk-7MR3M2HW.mjs → chunk-L2DME42Q.mjs} +1 -1
- package/dist/{chunk-Z7PWETGZ.mjs → chunk-LHP7FLGK.mjs} +1 -1
- package/dist/{chunk-LJYIEOGQ.mjs → chunk-LLFE3UHZ.mjs} +5 -5
- package/dist/chunk-NUBFD3YP.mjs +117 -0
- package/dist/{chunk-COL2MXGC.cjs → chunk-OX5FXH6W.cjs} +2 -2
- package/dist/{chunk-COJRGW3A.cjs → chunk-P7J7XHDE.cjs} +2 -2
- package/dist/chunk-PHRZ5JE6.mjs +1 -0
- package/dist/chunk-PMYOKSO3.mjs +30 -0
- package/dist/chunk-PTUZYCOY.mjs +314 -0
- package/dist/{chunk-WQT7JQN4.cjs → chunk-PZZW3E5D.cjs} +2 -2
- package/dist/chunk-Q3UN25WC.mjs +141 -0
- package/dist/{chunk-JVZ6J2UX.cjs → chunk-QS6WNNLM.cjs} +2 -2
- package/dist/{chunk-S4BL7C3Y.mjs → chunk-QSDYNIZB.mjs} +1 -0
- package/dist/{chunk-WYD3KNAT.cjs → chunk-QTLUPDLH.cjs} +5 -4
- package/dist/{chunk-NC2U7QTW.cjs → chunk-RHVKIZMQ.cjs} +2 -2
- package/dist/{chunk-67H3OSM3.mjs → chunk-RR76Z6OK.mjs} +2 -2
- package/dist/chunk-SBAVMK7J.cjs +181 -0
- package/dist/{chunk-GBRIW266.cjs → chunk-SOHGIAGF.cjs} +2 -2
- package/dist/{chunk-4YVKJKWV.mjs → chunk-TCCFFSXM.mjs} +27 -10
- package/dist/{chunk-EMZEL54F.cjs → chunk-THE6FZKP.cjs} +2 -0
- package/dist/{chunk-DGJ7E77I.mjs → chunk-TQOGGHSJ.mjs} +1 -1
- package/dist/{chunk-XC25ZQ7H.mjs → chunk-UBGNADCN.mjs} +1 -1
- package/dist/chunk-UEHPZIQB.cjs +2 -0
- package/dist/{chunk-DG2EVWIW.cjs → chunk-UZTOUPJ7.cjs} +128 -89
- package/dist/{chunk-HUPECWNG.mjs → chunk-V4THHKSO.mjs} +1 -1
- package/dist/chunk-VDYJAOMN.mjs +177 -0
- package/dist/{chunk-6NSLYQ35.mjs → chunk-VLNU7Y2K.mjs} +7 -42
- package/dist/{chunk-Z42BBOSG.cjs → chunk-VT6E2N6C.cjs} +2 -2
- package/dist/{chunk-RS4T6S3Z.mjs → chunk-VWLZKPDB.mjs} +5 -4
- package/dist/{chunk-OON7LFBQ.cjs → chunk-W22SQYEO.cjs} +6 -6
- package/dist/{chunk-42DBXENE.cjs → chunk-WGY33IHV.cjs} +2 -2
- package/dist/{chunk-EOTGD64D.cjs → chunk-WX3VWVWD.cjs} +2 -2
- package/dist/{chunk-UFYHIDMC.cjs → chunk-WZQ2BT3P.cjs} +25 -6
- package/dist/{chunk-KR7VBV3B.cjs → chunk-XIDCYS6G.cjs} +2 -1
- package/dist/chunk-YDF6VWBW.cjs +151 -0
- package/dist/{chunk-FB3M2JJV.cjs → chunk-YQL6JDVP.cjs} +5 -5
- package/dist/{chunk-7RRQ2HHL.mjs → chunk-YRNI7ZJ7.mjs} +25 -6
- package/dist/{chunk-FK6ZROZE.mjs → chunk-ZJYPKTF4.mjs} +2 -1
- package/dist/chunk-ZMRODJ3I.mjs +149 -0
- package/dist/dial/DialPanel.cjs +66 -56
- package/dist/dial/DialPanel.d.cts +4 -3
- package/dist/dial/DialPanel.d.ts +4 -3
- package/dist/dial/DialPanel.mjs +65 -55
- package/dist/dial/DialProvider.d.cts +3 -3
- package/dist/dial/DialProvider.d.ts +3 -3
- 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 +90 -72
- package/dist/dial/index.d.cts +4 -1
- package/dist/dial/index.d.ts +4 -1
- package/dist/dial/index.mjs +65 -55
- package/dist/dial/types.d.cts +4 -93
- package/dist/dial/types.d.ts +4 -93
- package/dist/dial/wrapped-inputs/ControlledInputs.cjs +70 -60
- package/dist/dial/wrapped-inputs/ControlledInputs.d.cts +7 -6
- package/dist/dial/wrapped-inputs/ControlledInputs.d.ts +7 -6
- package/dist/dial/wrapped-inputs/ControlledInputs.mjs +65 -55
- package/dist/{auth/components/index.cjs → dial/wrapped-inputs/DialArrayInput.cjs} +67 -57
- package/dist/dial/wrapped-inputs/DialArrayInput.d.cts +20 -0
- package/dist/dial/wrapped-inputs/DialArrayInput.d.ts +20 -0
- package/dist/{auth/components/index.mjs → dial/wrapped-inputs/DialArrayInput.mjs} +65 -55
- package/dist/dial/wrapped-inputs/DialInputs.cjs +79 -69
- package/dist/dial/wrapped-inputs/DialInputs.d.cts +18 -15
- package/dist/dial/wrapped-inputs/DialInputs.d.ts +18 -15
- package/dist/dial/wrapped-inputs/DialInputs.mjs +65 -55
- package/dist/dial/wrapped-inputs/DialInterfaceInput.cjs +66 -56
- package/dist/dial/wrapped-inputs/DialInterfaceInput.d.cts +7 -2
- package/dist/dial/wrapped-inputs/DialInterfaceInput.d.ts +7 -2
- package/dist/dial/wrapped-inputs/DialInterfaceInput.mjs +65 -55
- package/dist/dial/wrapped-inputs/DialPresetsInput.cjs +56 -49
- package/dist/dial/wrapped-inputs/DialPresetsInput.d.cts +3 -2
- package/dist/dial/wrapped-inputs/DialPresetsInput.d.ts +3 -2
- package/dist/dial/wrapped-inputs/DialPresetsInput.mjs +55 -48
- 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 +66 -56
- 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 +65 -55
- package/dist/dial/wrapped-inputs/index.cjs +94 -76
- package/dist/dial/wrapped-inputs/index.d.cts +3 -0
- package/dist/dial/wrapped-inputs/index.d.ts +3 -0
- package/dist/dial/wrapped-inputs/index.mjs +65 -55
- 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 +2 -2
- 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 +1 -1
- package/dist/highlight-cursor/enhanced-components.cjs +14 -14
- 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 +9 -9
- package/dist/highlight-cursor/index.cjs +16 -16
- package/dist/highlight-cursor/index.mjs +10 -10
- 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/index.cjs +20 -20
- package/dist/hooks/index.mjs +4 -4
- package/dist/index.cjs +340 -254
- package/dist/index.css +13 -13
- package/dist/index.d.cts +14 -3
- package/dist/index.d.ts +14 -3
- package/dist/index.mjs +65 -55
- 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 +9 -9
- package/dist/ui/DialBadge.mjs +5 -5
- package/dist/ui/UIKitBadge.cjs +9 -9
- package/dist/ui/UIKitBadge.mjs +5 -5
- 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 +4 -4
- package/dist/ui/avatar.d.cts +2 -2
- package/dist/ui/avatar.d.ts +2 -2
- package/dist/ui/avatar.mjs +4 -4
- package/dist/ui/badge.cjs +7 -7
- package/dist/ui/badge.d.cts +2 -2
- package/dist/ui/badge.d.ts +2 -2
- package/dist/ui/badge.mjs +5 -5
- package/dist/ui/button.cjs +4 -4
- package/dist/ui/button.d.cts +2 -2
- package/dist/ui/button.d.ts +2 -2
- package/dist/ui/button.mjs +4 -4
- package/dist/ui/card.cjs +12 -12
- package/dist/ui/card.mjs +5 -5
- package/dist/ui/checkbox.cjs +4 -4
- package/dist/ui/checkbox.mjs +4 -4
- package/dist/ui/collapsible.cjs +4 -4
- package/dist/ui/collapsible.mjs +4 -4
- package/dist/ui/context-menu.cjs +4 -4
- package/dist/ui/context-menu.mjs +4 -4
- 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 +4 -4
- package/dist/ui/drawer.d.cts +11 -11
- package/dist/ui/drawer.d.ts +11 -11
- package/dist/ui/drawer.mjs +4 -4
- package/dist/ui/dropdown.cjs +4 -4
- package/dist/ui/dropdown.mjs +4 -4
- package/dist/ui/icons/index.cjs +9 -9
- package/dist/ui/icons/index.mjs +1 -1
- package/dist/ui/index.cjs +246 -171
- package/dist/ui/index.d.cts +10 -2
- package/dist/ui/index.d.ts +10 -2
- package/dist/ui/index.mjs +52 -45
- package/dist/ui/inputs/color-input.cjs +6 -6
- 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 +5 -5
- package/dist/ui/inputs/index.cjs +50 -50
- package/dist/ui/inputs/index.mjs +21 -21
- package/dist/ui/inputs/input-numbers.cjs +6 -6
- 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 +5 -5
- package/dist/ui/inputs/input.cjs +4 -4
- package/dist/ui/inputs/input.d.cts +4 -4
- package/dist/ui/inputs/input.d.ts +4 -4
- package/dist/ui/inputs/input.mjs +4 -4
- package/dist/ui/inputs/number-inputs/CmInput.cjs +7 -7
- 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 +6 -6
- package/dist/ui/inputs/number-inputs/DegInput.cjs +7 -7
- 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 +6 -6
- package/dist/ui/inputs/number-inputs/EulerDegInput.cjs +9 -9
- 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 +8 -8
- package/dist/ui/inputs/number-inputs/EulerInput.cjs +8 -8
- 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 +7 -7
- package/dist/ui/inputs/number-inputs/EulerRadInput.cjs +8 -8
- 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 +7 -7
- package/dist/ui/inputs/number-inputs/InchInput.cjs +7 -7
- 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 +6 -6
- package/dist/ui/inputs/number-inputs/IntInput.cjs +7 -7
- 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 +6 -6
- package/dist/ui/inputs/number-inputs/KVectorInput.cjs +8 -8
- 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 +7 -7
- package/dist/ui/inputs/number-inputs/QuaternionInput.cjs +8 -8
- 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 +7 -7
- package/dist/ui/inputs/number-inputs/RadInput.cjs +7 -7
- 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 +6 -6
- package/dist/ui/inputs/number-inputs/TimeInput.cjs +7 -7
- 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 +6 -6
- package/dist/ui/inputs/number-inputs/Vec3Input.cjs +8 -8
- 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 +7 -7
- package/dist/ui/inputs/number-inputs/VectorInput.cjs +7 -7
- 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 +6 -6
- package/dist/ui/inputs/number-inputs/index.cjs +41 -41
- package/dist/ui/inputs/number-inputs/index.mjs +18 -18
- package/dist/ui/inputs/presets-input.cjs +7 -7
- 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 +6 -6
- package/dist/ui/inputs/presets-rad-input.cjs +8 -8
- 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 +7 -7
- package/dist/ui/inputs/text-input.cjs +4 -4
- 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 +4 -4
- package/dist/ui/label.cjs +4 -4
- package/dist/ui/label.d.cts +4 -4
- package/dist/ui/label.d.ts +4 -4
- package/dist/ui/label.mjs +4 -4
- package/dist/ui/layout.cjs +4 -4
- package/dist/ui/layout.mjs +4 -4
- package/dist/ui/layouts/dock-layout/DockLayoutView.cjs +4 -4
- package/dist/ui/layouts/dock-layout/DockLayoutView.mjs +4 -4
- package/dist/ui/layouts/dock-layout/LayoutSlots.cjs +4 -4
- 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 +4 -4
- package/dist/ui/layouts/dock-layout/index.cjs +4 -4
- package/dist/ui/layouts/dock-layout/index.mjs +4 -4
- package/dist/ui/layouts/index.cjs +5 -5
- package/dist/ui/layouts/index.mjs +5 -5
- package/dist/ui/layouts/liquid-layout/LayoutSlots.cjs +4 -4
- package/dist/ui/layouts/liquid-layout/LayoutSlots.mjs +4 -4
- package/dist/ui/layouts/liquid-layout/LiquidLayoutView.cjs +4 -4
- package/dist/ui/layouts/liquid-layout/LiquidLayoutView.mjs +4 -4
- package/dist/ui/layouts/liquid-layout/index.cjs +4 -4
- package/dist/ui/layouts/liquid-layout/index.mjs +4 -4
- package/dist/ui/modal.cjs +4 -4
- package/dist/ui/modal.mjs +4 -4
- package/dist/ui/navigation.cjs +4 -4
- package/dist/ui/navigation.d.cts +2 -2
- package/dist/ui/navigation.d.ts +2 -2
- package/dist/ui/navigation.mjs +4 -4
- package/dist/ui/pagination.cjs +4 -4
- package/dist/ui/pagination.mjs +4 -4
- package/dist/ui/popover.cjs +13 -9
- package/dist/ui/popover.d.cts +18 -8
- package/dist/ui/popover.d.ts +18 -8
- package/dist/ui/popover.mjs +5 -5
- package/dist/ui/progress.cjs +4 -4
- package/dist/ui/progress.mjs +4 -4
- package/dist/ui/radio-group.cjs +4 -4
- package/dist/ui/radio-group.mjs +4 -4
- package/dist/ui/resizable.cjs +4 -4
- package/dist/ui/resizable.d.cts +2 -2
- package/dist/ui/resizable.d.ts +2 -2
- package/dist/ui/resizable.mjs +4 -4
- package/dist/ui/select.cjs +16 -16
- package/dist/ui/select.d.cts +3 -2
- package/dist/ui/select.d.ts +3 -2
- package/dist/ui/select.mjs +5 -5
- package/dist/ui/separator.cjs +4 -4
- package/dist/ui/separator.mjs +4 -4
- package/dist/ui/sheet.cjs +4 -4
- package/dist/ui/sheet.mjs +4 -4
- package/dist/ui/sidebar.cjs +4 -4
- package/dist/ui/sidebar.mjs +4 -4
- package/dist/ui/simple-tree-view.cjs +4 -4
- 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 +4 -4
- package/dist/ui/skeleton.cjs +4 -4
- package/dist/ui/skeleton.mjs +4 -4
- package/dist/ui/slider.cjs +4 -4
- package/dist/ui/slider.d.cts +2 -2
- package/dist/ui/slider.d.ts +2 -2
- package/dist/ui/slider.mjs +4 -4
- package/dist/ui/switch.cjs +6 -6
- package/dist/ui/switch.d.cts +4 -1
- package/dist/ui/switch.d.ts +4 -1
- package/dist/ui/switch.mjs +5 -5
- package/dist/ui/table.cjs +4 -4
- package/dist/ui/table.d.cts +9 -9
- package/dist/ui/table.d.ts +9 -9
- package/dist/ui/table.mjs +4 -4
- package/dist/ui/tabs.cjs +13 -9
- package/dist/ui/tabs.d.cts +4 -1
- package/dist/ui/tabs.d.ts +4 -1
- package/dist/ui/tabs.mjs +5 -5
- package/dist/ui/textarea.cjs +4 -4
- package/dist/ui/textarea.d.cts +1 -1
- package/dist/ui/textarea.d.ts +1 -1
- package/dist/ui/textarea.mjs +4 -4
- package/dist/ui/theme/ThemeProvider.cjs +15 -15
- package/dist/ui/theme/ThemeProvider.d.cts +2 -2
- package/dist/ui/theme/ThemeProvider.d.ts +2 -2
- package/dist/ui/theme/ThemeProvider.mjs +1 -1
- package/dist/ui/theme/ThemeToggles.cjs +8 -8
- package/dist/ui/theme/ThemeToggles.d.cts +18 -3
- package/dist/ui/theme/ThemeToggles.d.ts +18 -3
- package/dist/ui/theme/ThemeToggles.mjs +6 -6
- package/dist/ui/theme/index.cjs +12 -12
- package/dist/ui/theme/index.mjs +6 -6
- package/dist/ui/theme/themeScript.d.cts +2 -2
- package/dist/ui/theme/themeScript.d.ts +2 -2
- package/dist/ui/toast.cjs +9 -9
- package/dist/ui/toast.mjs +7 -7
- package/dist/ui/toggle-buttons.cjs +4 -4
- package/dist/ui/toggle-buttons.d.cts +7 -7
- package/dist/ui/toggle-buttons.d.ts +7 -7
- package/dist/ui/toggle-buttons.mjs +4 -4
- package/dist/ui/toggle-group.cjs +4 -4
- package/dist/ui/toggle-group.d.cts +3 -3
- package/dist/ui/toggle-group.d.ts +3 -3
- package/dist/ui/toggle-group.mjs +4 -4
- package/dist/ui/toggle.cjs +4 -4
- package/dist/ui/toggle.mjs +4 -4
- package/dist/ui/toolbar.cjs +4 -4
- package/dist/ui/toolbar.mjs +4 -4
- package/dist/ui/tooltip.cjs +4 -4
- package/dist/ui/tooltip.mjs +4 -4
- package/dist/ui/tree-view/TreeSearchBar.cjs +4 -4
- package/dist/ui/tree-view/TreeSearchBar.mjs +4 -4
- package/dist/ui/tree-view/TreeView.cjs +7 -7
- package/dist/ui/tree-view/TreeView.mjs +5 -5
- package/dist/ui/tree-view/index.cjs +12 -12
- package/dist/ui/tree-view/index.mjs +6 -6
- 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 +4 -4
- package/dist/ui/tree-view-legacy.mjs +4 -4
- 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 +4 -4
- package/dist/ui/waterfall/CursorOverlay.mjs +4 -4
- package/dist/ui/waterfall/NavigationControls.d.cts +2 -2
- package/dist/ui/waterfall/NavigationControls.d.ts +2 -2
- package/dist/ui/waterfall/TimelineEvent.cjs +4 -4
- package/dist/ui/waterfall/TimelineEvent.mjs +4 -4
- package/dist/ui/waterfall/TimelineProcessBar.cjs +4 -4
- package/dist/ui/waterfall/TimelineProcessBar.mjs +4 -4
- package/dist/ui/waterfall/Wedges.cjs +4 -4
- package/dist/ui/waterfall/Wedges.mjs +4 -4
- 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 +13 -13
- package/dist/ui/waterfall/index.d.cts +2 -2
- package/dist/ui/waterfall/index.d.ts +2 -2
- package/dist/ui/waterfall/index.mjs +12 -12
- package/package.json +5 -9
- package/src/dial/DialPanel.tsx +118 -6
- 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 +4 -1
- package/src/dial/types.ts +4 -12
- package/src/dial/wrapped-inputs/ControlledInputs.tsx +16 -11
- package/src/dial/wrapped-inputs/DialArrayInput.tsx +175 -0
- package/src/dial/wrapped-inputs/DialInputs.tsx +117 -22
- package/src/dial/wrapped-inputs/DialInterfaceInput.tsx +48 -12
- package/src/dial/wrapped-inputs/DialPresetsInput.tsx +1 -1
- package/src/dial/wrapped-inputs/DialTupleInput.tsx +102 -0
- package/src/dial/wrapped-inputs/DialVectorInput.tsx +9 -4
- 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/styles/theme.css +2 -2
- package/src/ui/alert-dialog.tsx +168 -0
- package/src/ui/badge.tsx +1 -0
- package/src/ui/card.tsx +1 -5
- package/src/ui/index.ts +4 -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/VectorInput.tsx +2 -0
- package/src/ui/popover.tsx +10 -49
- package/src/ui/select.tsx +5 -2
- package/src/ui/switch.tsx +7 -2
- package/src/ui/tabs.tsx +2 -1
- package/src/ui/theme/ThemeProvider.tsx +4 -3
- package/src/ui/theme/ThemeToggles.tsx +48 -12
- package/src/ui/toast.tsx +1 -3
- package/src/ui/tree-view/TreeView.tsx +37 -8
- package/src/ui/tree-view/types.ts +1 -0
- 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/dist/auth/components/index.d.cts +0 -2
- package/dist/auth/components/index.d.ts +0 -2
- package/dist/auth/components/user-avatar/index.cjs +0 -128
- 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 -119
- 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 -166
- package/dist/auth/index.d.cts +0 -13
- package/dist/auth/index.d.ts +0 -13
- package/dist/auth/index.mjs +0 -125
- 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-3WMO5QJJ.cjs +0 -8
- package/dist/chunk-4TRHQ7MJ.cjs +0 -68
- package/dist/chunk-5OHAV55L.mjs +0 -24
- package/dist/chunk-6GJM7TPE.cjs +0 -28
- package/dist/chunk-7E5Y224I.cjs +0 -14
- package/dist/chunk-7R5HY3IM.cjs +0 -12
- package/dist/chunk-C4U5BMQH.mjs +0 -206
- package/dist/chunk-EMVKGL5D.mjs +0 -28
- package/dist/chunk-EMXEFZEB.cjs +0 -30
- package/dist/chunk-F4Z5KATZ.cjs +0 -8
- package/dist/chunk-FROQ45MN.mjs +0 -6
- package/dist/chunk-HOMAESTR.mjs +0 -12
- package/dist/chunk-HZBP6QTE.cjs +0 -208
- package/dist/chunk-IKSER6BF.mjs +0 -66
- package/dist/chunk-KIZEJMW4.cjs +0 -15
- 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-Q76WU4DL.cjs +0 -17
- package/dist/chunk-RSBVQ7SJ.cjs +0 -54
- package/dist/chunk-RTZNHV43.cjs +0 -58
- package/dist/chunk-SO2UTKSV.mjs +0 -17
- package/dist/chunk-SQJL67BU.mjs +0 -56
- package/dist/chunk-UT7B4TLZ.mjs +0 -5
- package/dist/chunk-V4KDK3BN.mjs +0 -52
- package/dist/chunk-VSFPXAGN.mjs +0 -10
- package/dist/chunk-VSIOXWSI.cjs +0 -53
- package/dist/chunk-X3H6FYAM.cjs +0 -15
- package/dist/chunk-Z7BZFZEV.mjs +0 -15
- 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/dist/{auth/types.mjs → chunk-6NZ5VXK7.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-OBWKFURE.cjs → chunk-IM5QVMGO.cjs} +0 -0
- /package/dist/{chunk-U4AANBRZ.mjs → chunk-NU5W73NH.mjs} +0 -0
- /package/dist/{chunk-UXWS62ZO.mjs → chunk-O57DAVOQ.mjs} +0 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { Plus, X } from "lucide-react";
|
|
2
|
+
import React, { useCallback, useMemo } from "react";
|
|
3
|
+
|
|
4
|
+
import { Button, FormLayout, Input, Label, Switch, type LayoutType } from "../../index";
|
|
5
|
+
import { useDialSchema } from "../DialProvider";
|
|
6
|
+
import { IconRenderer } from "../IconRenderer";
|
|
7
|
+
import { LabelPositionT } from "../types";
|
|
8
|
+
|
|
9
|
+
interface DialArrayInputProps {
|
|
10
|
+
name: string;
|
|
11
|
+
label?: string;
|
|
12
|
+
labelPosition?: LabelPositionT;
|
|
13
|
+
icon?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Array input component for primitive types (string, number, boolean)
|
|
18
|
+
* Supports add/remove operations for dynamic arrays
|
|
19
|
+
*
|
|
20
|
+
* Note: Currently only supports primitive element types.
|
|
21
|
+
* Complex types (objects, nested arrays) are not supported.
|
|
22
|
+
*/
|
|
23
|
+
export const DialArrayInput: React.FC<DialArrayInputProps> = ({
|
|
24
|
+
name,
|
|
25
|
+
label,
|
|
26
|
+
labelPosition = "top",
|
|
27
|
+
icon,
|
|
28
|
+
}) => {
|
|
29
|
+
const { getValue, setValue, schemas } = useDialSchema();
|
|
30
|
+
|
|
31
|
+
const schema = schemas.find((s) => s.name === name);
|
|
32
|
+
const arrayValue = useMemo(
|
|
33
|
+
() => (getValue(name) || []) as Array<string | number | boolean>,
|
|
34
|
+
[getValue, name],
|
|
35
|
+
);
|
|
36
|
+
const elementType = schema?.arrayElementType || "string";
|
|
37
|
+
|
|
38
|
+
const handleAddItem = useCallback(() => {
|
|
39
|
+
const newValue = [...arrayValue];
|
|
40
|
+
// Add default value based on element type
|
|
41
|
+
switch (elementType) {
|
|
42
|
+
case "number":
|
|
43
|
+
newValue.push(0);
|
|
44
|
+
break;
|
|
45
|
+
case "boolean":
|
|
46
|
+
newValue.push(false);
|
|
47
|
+
break;
|
|
48
|
+
default: // string
|
|
49
|
+
newValue.push("");
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
setValue(name, newValue);
|
|
53
|
+
}, [arrayValue, elementType, name, setValue]);
|
|
54
|
+
|
|
55
|
+
const handleRemoveItem = useCallback(
|
|
56
|
+
(index: number) => {
|
|
57
|
+
const newValue = arrayValue.filter((_, i) => i !== index);
|
|
58
|
+
setValue(name, newValue);
|
|
59
|
+
},
|
|
60
|
+
[arrayValue, name, setValue],
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
const handleItemChange = useCallback(
|
|
64
|
+
(index: number, value: string | number | boolean) => {
|
|
65
|
+
const newValue = [...arrayValue];
|
|
66
|
+
newValue[index] = value;
|
|
67
|
+
setValue(name, newValue);
|
|
68
|
+
},
|
|
69
|
+
[arrayValue, name, setValue],
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
if (!schema) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const renderItemInput = (item: string | number | boolean, index: number) => {
|
|
77
|
+
const itemKey = `${name}-${index}`;
|
|
78
|
+
|
|
79
|
+
switch (elementType) {
|
|
80
|
+
case "boolean":
|
|
81
|
+
return (
|
|
82
|
+
<Switch
|
|
83
|
+
key={itemKey}
|
|
84
|
+
checked={item as boolean}
|
|
85
|
+
onCheckedChange={(checked) => handleItemChange(index, checked)}
|
|
86
|
+
/>
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
case "number":
|
|
90
|
+
return (
|
|
91
|
+
<Input
|
|
92
|
+
key={itemKey}
|
|
93
|
+
type="number"
|
|
94
|
+
value={item as number}
|
|
95
|
+
onChange={(e) => handleItemChange(index, Number(e.target.value))}
|
|
96
|
+
className="flex-1"
|
|
97
|
+
step={schema.step || 0.1}
|
|
98
|
+
min={schema.min}
|
|
99
|
+
max={schema.max}
|
|
100
|
+
/>
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
default: // string
|
|
104
|
+
return (
|
|
105
|
+
<Input
|
|
106
|
+
key={itemKey}
|
|
107
|
+
type="text"
|
|
108
|
+
value={item as string}
|
|
109
|
+
onChange={(e) => handleItemChange(index, e.target.value)}
|
|
110
|
+
className="flex-1"
|
|
111
|
+
placeholder={schema.placeholder}
|
|
112
|
+
/>
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const arrayContent = (
|
|
118
|
+
<div className="flex flex-col gap-2">
|
|
119
|
+
{/* Array items */}
|
|
120
|
+
{arrayValue.map((item, index) => (
|
|
121
|
+
<div key={`${name}-item-${index}`} className="flex items-center gap-2">
|
|
122
|
+
<span className="text-text-secondary min-w-[20px] text-xs">{index + 1}.</span>
|
|
123
|
+
{renderItemInput(item, index)}
|
|
124
|
+
<Button
|
|
125
|
+
variant="ghost"
|
|
126
|
+
size="sm"
|
|
127
|
+
icon
|
|
128
|
+
onClick={() => handleRemoveItem(index)}
|
|
129
|
+
className="h-8 w-8"
|
|
130
|
+
title="Remove item"
|
|
131
|
+
>
|
|
132
|
+
<X className="h-4 w-4" />
|
|
133
|
+
</Button>
|
|
134
|
+
</div>
|
|
135
|
+
))}
|
|
136
|
+
|
|
137
|
+
{/* Add button */}
|
|
138
|
+
<Button variant="secondary" size="sm" onClick={handleAddItem} className="self-start">
|
|
139
|
+
<Plus className="mr-1 h-4 w-4" />
|
|
140
|
+
Add {elementType}
|
|
141
|
+
</Button>
|
|
142
|
+
|
|
143
|
+
{/* Empty state */}
|
|
144
|
+
{arrayValue.length === 0 && (
|
|
145
|
+
<div className="text-text-secondary text-sm italic">
|
|
146
|
+
No items. Click "Add {elementType}" to start.
|
|
147
|
+
</div>
|
|
148
|
+
)}
|
|
149
|
+
</div>
|
|
150
|
+
);
|
|
151
|
+
|
|
152
|
+
if (!label) {
|
|
153
|
+
return arrayContent;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return (
|
|
157
|
+
<FormLayout orientation={`label-${labelPosition}` as LayoutType}>
|
|
158
|
+
<Label size="sm" className="flex items-center gap-1 pl-1.5">
|
|
159
|
+
<IconRenderer iconName={icon} size={14} className="text-text-secondary" />
|
|
160
|
+
{label}
|
|
161
|
+
</Label>
|
|
162
|
+
<div className="flex flex-col gap-2 pl-1.5">
|
|
163
|
+
{schema.helpText && (
|
|
164
|
+
<span
|
|
165
|
+
className="text-text-secondary cursor-help text-xs"
|
|
166
|
+
title={schema.helpText as string}
|
|
167
|
+
>
|
|
168
|
+
ⓘ {schema.helpText}
|
|
169
|
+
</span>
|
|
170
|
+
)}
|
|
171
|
+
<div className="border-surface-secondary rounded-md border p-2">{arrayContent}</div>
|
|
172
|
+
</div>
|
|
173
|
+
</FormLayout>
|
|
174
|
+
);
|
|
175
|
+
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { LockKeyhole, LockOpen } from "lucide-react";
|
|
2
|
+
import React, { PropsWithChildren, useCallback, useMemo } from "react";
|
|
2
3
|
|
|
3
4
|
import {
|
|
5
|
+
Button,
|
|
4
6
|
CmInput,
|
|
5
7
|
DegInput,
|
|
6
8
|
EulerDegInput,
|
|
@@ -32,6 +34,8 @@ interface DialWrapperProps {
|
|
|
32
34
|
max?: number;
|
|
33
35
|
labelPosition?: LabelPositionT;
|
|
34
36
|
icon?: string;
|
|
37
|
+
/** Display format for angle values: rad (default), deg, or pi */
|
|
38
|
+
format?: "rad" | "deg" | "pi";
|
|
35
39
|
}
|
|
36
40
|
|
|
37
41
|
// Helper component for wrapping inputs with labels
|
|
@@ -47,7 +51,7 @@ const DialInputWrapper: React.FC<PropsWithChildren<DialWrapperProps>> = ({
|
|
|
47
51
|
|
|
48
52
|
return (
|
|
49
53
|
<FormLayout orientation={`label-${labelPosition}` as LayoutType} className="overflow-x-hidden">
|
|
50
|
-
<Label size="sm" className="flex items-center gap-1">
|
|
54
|
+
<Label size="sm" className="flex items-center gap-1 pl-1.5">
|
|
51
55
|
<IconRenderer iconName={icon} size={14} className="text-text-secondary" />
|
|
52
56
|
{label}
|
|
53
57
|
</Label>
|
|
@@ -73,15 +77,103 @@ export const DialVec3Input: React.FC<DialWrapperProps> = ({
|
|
|
73
77
|
const minArray = min !== undefined ? [min, min, min] : undefined;
|
|
74
78
|
const maxArray = max !== undefined ? [max, max, max] : undefined;
|
|
75
79
|
|
|
80
|
+
const isLockable = ["position", "rotation", "scale"].includes(name);
|
|
81
|
+
|
|
82
|
+
// Get disabled fields from the schema values
|
|
83
|
+
const disabledFields = (getValue("disabledFields") as string[]) ?? [];
|
|
84
|
+
|
|
85
|
+
// Create disabled array for each axis
|
|
86
|
+
const disabled = useMemo(() => {
|
|
87
|
+
if (!isLockable) return undefined;
|
|
88
|
+
return [
|
|
89
|
+
disabledFields.includes(`${name}.0`),
|
|
90
|
+
disabledFields.includes(`${name}.1`),
|
|
91
|
+
disabledFields.includes(`${name}.2`),
|
|
92
|
+
];
|
|
93
|
+
}, [isLockable, name, disabledFields]);
|
|
94
|
+
|
|
95
|
+
// Handle suffix batch action (drag to lock/unlock multiple inputs)
|
|
96
|
+
const handleSuffixBatchAction = useCallback(
|
|
97
|
+
(indices: number[]) => {
|
|
98
|
+
if (indices.length === 0) return;
|
|
99
|
+
|
|
100
|
+
const firstIndex = indices[0];
|
|
101
|
+
const firstFieldName = `${name}.${firstIndex}`;
|
|
102
|
+
const shouldLock = !disabledFields.includes(firstFieldName);
|
|
103
|
+
|
|
104
|
+
const newDisabledFields = [...disabledFields];
|
|
105
|
+
|
|
106
|
+
indices.forEach((index) => {
|
|
107
|
+
const fieldName = `${name}.${index}`;
|
|
108
|
+
const fieldIndex = newDisabledFields.indexOf(fieldName);
|
|
109
|
+
|
|
110
|
+
if (shouldLock && fieldIndex === -1) {
|
|
111
|
+
// Lock this field
|
|
112
|
+
newDisabledFields.push(fieldName);
|
|
113
|
+
} else if (!shouldLock && fieldIndex > -1) {
|
|
114
|
+
// Unlock this field
|
|
115
|
+
newDisabledFields.splice(fieldIndex, 1);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
setValue("disabledFields", newDisabledFields);
|
|
120
|
+
},
|
|
121
|
+
[name, disabledFields, setValue],
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
// Create lock button suffix array
|
|
125
|
+
const suffix = useMemo(() => {
|
|
126
|
+
if (!isLockable) return undefined;
|
|
127
|
+
return [0, 1, 2].map((index) => {
|
|
128
|
+
const isLocked = disabled?.[index] ?? false;
|
|
129
|
+
|
|
130
|
+
return (
|
|
131
|
+
<Button
|
|
132
|
+
variant="ghost"
|
|
133
|
+
size="sm"
|
|
134
|
+
icon
|
|
135
|
+
className="hover:bg-shadow-secondary size-4 p-0"
|
|
136
|
+
title={isLocked ? `Unlock ${["X", "Y", "Z"][index]}` : `Lock ${["X", "Y", "Z"][index]}`}
|
|
137
|
+
>
|
|
138
|
+
{isLocked ? (
|
|
139
|
+
<LockKeyhole strokeWidth={1.5} className="text-icon-tertiary size-2.5" />
|
|
140
|
+
) : (
|
|
141
|
+
<LockOpen strokeWidth={1.5} className="text-icon-tertiary size-2.5" />
|
|
142
|
+
)}
|
|
143
|
+
</Button>
|
|
144
|
+
);
|
|
145
|
+
});
|
|
146
|
+
}, [isLockable, disabled]);
|
|
147
|
+
|
|
148
|
+
// Handle value change - filter out locked values
|
|
149
|
+
const handleValueChange = useCallback(
|
|
150
|
+
(newValue: [number, number, number]) => {
|
|
151
|
+
if (!isLockable || !disabled) {
|
|
152
|
+
setValue(name, newValue);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const filteredValue = newValue.map((v, i) => (disabled[i] ? value[i] : v)) as [
|
|
156
|
+
number,
|
|
157
|
+
number,
|
|
158
|
+
number,
|
|
159
|
+
];
|
|
160
|
+
setValue(name, filteredValue);
|
|
161
|
+
},
|
|
162
|
+
[name, setValue, value, isLockable, disabled],
|
|
163
|
+
);
|
|
164
|
+
|
|
76
165
|
if (labelPosition === "inline") {
|
|
77
166
|
return (
|
|
78
167
|
<Vec3Input
|
|
79
168
|
value={value}
|
|
80
|
-
onValuesChange={
|
|
169
|
+
onValuesChange={handleValueChange}
|
|
81
170
|
size={size}
|
|
82
171
|
step={step}
|
|
83
172
|
min={minArray}
|
|
84
173
|
max={maxArray}
|
|
174
|
+
disabledItems={disabled}
|
|
175
|
+
suffix={suffix}
|
|
176
|
+
onSuffixBatchAction={isLockable ? handleSuffixBatchAction : undefined}
|
|
85
177
|
prefix={label ? [label, "", ""] : undefined}
|
|
86
178
|
/>
|
|
87
179
|
);
|
|
@@ -90,11 +182,14 @@ export const DialVec3Input: React.FC<DialWrapperProps> = ({
|
|
|
90
182
|
<DialInputWrapper name={name} label={label} icon={icon}>
|
|
91
183
|
<Vec3Input
|
|
92
184
|
value={value}
|
|
93
|
-
onValuesChange={
|
|
185
|
+
onValuesChange={handleValueChange}
|
|
94
186
|
size={size}
|
|
95
187
|
step={step}
|
|
96
188
|
min={minArray}
|
|
97
189
|
max={maxArray}
|
|
190
|
+
disabledItems={disabled}
|
|
191
|
+
suffix={suffix}
|
|
192
|
+
onSuffixBatchAction={isLockable ? handleSuffixBatchAction : undefined}
|
|
98
193
|
/>
|
|
99
194
|
</DialInputWrapper>
|
|
100
195
|
);
|
|
@@ -467,7 +562,7 @@ export const DialTextInput: React.FC<DialWrapperProps & { placeholder?: string }
|
|
|
467
562
|
);
|
|
468
563
|
} else {
|
|
469
564
|
return (
|
|
470
|
-
<DialInputWrapper name={name} label={label} icon={icon}>
|
|
565
|
+
<DialInputWrapper name={name} label={label} icon={icon} labelPosition={labelPosition}>
|
|
471
566
|
<TextInput
|
|
472
567
|
value={value}
|
|
473
568
|
onChange={(val) => setValue(name, val)}
|
|
@@ -479,7 +574,7 @@ export const DialTextInput: React.FC<DialWrapperProps & { placeholder?: string }
|
|
|
479
574
|
}
|
|
480
575
|
};
|
|
481
576
|
|
|
482
|
-
// Dial-wrapped EulerRadInput (radians with
|
|
577
|
+
// Dial-wrapped EulerRadInput (radians with configurable display format)
|
|
483
578
|
export const DialEulerRadInput: React.FC<DialWrapperProps> = ({
|
|
484
579
|
name,
|
|
485
580
|
label,
|
|
@@ -487,6 +582,7 @@ export const DialEulerRadInput: React.FC<DialWrapperProps> = ({
|
|
|
487
582
|
step,
|
|
488
583
|
labelPosition,
|
|
489
584
|
icon,
|
|
585
|
+
format = "rad", // Default to radians
|
|
490
586
|
}) => {
|
|
491
587
|
const { getValue, setValue } = useDialSchema();
|
|
492
588
|
const value = (getValue(name) ?? [0, 0, 0]) as [number, number, number];
|
|
@@ -498,7 +594,7 @@ export const DialEulerRadInput: React.FC<DialWrapperProps> = ({
|
|
|
498
594
|
onValuesChange={(val) => setValue(name, val)}
|
|
499
595
|
size={size}
|
|
500
596
|
step={step}
|
|
501
|
-
display=
|
|
597
|
+
display={format}
|
|
502
598
|
prefix={label ? [label, "", ""] : undefined}
|
|
503
599
|
/>
|
|
504
600
|
);
|
|
@@ -510,14 +606,14 @@ export const DialEulerRadInput: React.FC<DialWrapperProps> = ({
|
|
|
510
606
|
onValuesChange={(val) => setValue(name, val)}
|
|
511
607
|
size={size}
|
|
512
608
|
step={step}
|
|
513
|
-
display=
|
|
609
|
+
display={format}
|
|
514
610
|
/>
|
|
515
611
|
</DialInputWrapper>
|
|
516
612
|
);
|
|
517
613
|
}
|
|
518
614
|
};
|
|
519
615
|
|
|
520
|
-
// Dial-wrapped number-rad input (
|
|
616
|
+
// Dial-wrapped number-rad input (stores radians, configurable display format)
|
|
521
617
|
export const DialNumberRadInput: React.FC<DialWrapperProps> = ({
|
|
522
618
|
name,
|
|
523
619
|
label,
|
|
@@ -525,24 +621,17 @@ export const DialNumberRadInput: React.FC<DialWrapperProps> = ({
|
|
|
525
621
|
step,
|
|
526
622
|
labelPosition,
|
|
527
623
|
icon,
|
|
624
|
+
format = "rad", // Default to radians
|
|
528
625
|
}) => {
|
|
529
626
|
const { getValue, setValue } = useDialSchema();
|
|
530
627
|
const value = (getValue(name) ?? 0) as number;
|
|
531
628
|
|
|
532
|
-
// Convert radians to degrees for display
|
|
533
|
-
const degValue = (value * 180) / Math.PI;
|
|
534
|
-
|
|
535
|
-
// Handler to convert degrees back to radians
|
|
536
|
-
const handleChange = (deg: number) => {
|
|
537
|
-
const rad = (deg * Math.PI) / 180;
|
|
538
|
-
setValue(name, rad);
|
|
539
|
-
};
|
|
540
|
-
|
|
541
629
|
if (labelPosition === "inline") {
|
|
542
630
|
return (
|
|
543
|
-
<
|
|
544
|
-
value={
|
|
545
|
-
onChange={
|
|
631
|
+
<RadInput
|
|
632
|
+
value={value}
|
|
633
|
+
onChange={(val) => setValue(name, val)}
|
|
634
|
+
display={format}
|
|
546
635
|
size={size}
|
|
547
636
|
step={step}
|
|
548
637
|
prefix={label ? [label] : undefined}
|
|
@@ -551,7 +640,13 @@ export const DialNumberRadInput: React.FC<DialWrapperProps> = ({
|
|
|
551
640
|
} else {
|
|
552
641
|
return (
|
|
553
642
|
<DialInputWrapper name={name} label={label} icon={icon}>
|
|
554
|
-
<
|
|
643
|
+
<RadInput
|
|
644
|
+
value={value}
|
|
645
|
+
onChange={(val) => setValue(name, val)}
|
|
646
|
+
display={format}
|
|
647
|
+
size={size}
|
|
648
|
+
step={step}
|
|
649
|
+
/>
|
|
555
650
|
</DialInputWrapper>
|
|
556
651
|
);
|
|
557
652
|
}
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
import React, { useCallback } from "react";
|
|
2
2
|
|
|
3
|
+
import { FormLayout, Label, type LayoutType } from "../../index";
|
|
3
4
|
import { DialPanel } from "../DialPanel";
|
|
4
5
|
import { DialProvider, useDialSchema } from "../DialProvider";
|
|
6
|
+
import { IconRenderer } from "../IconRenderer";
|
|
5
7
|
import { LabelPositionT } from "../types";
|
|
6
8
|
|
|
7
9
|
interface DialInterfaceInputProps {
|
|
8
10
|
name: string;
|
|
11
|
+
label?: string;
|
|
12
|
+
labelPosition?: LabelPositionT;
|
|
13
|
+
icon?: string;
|
|
9
14
|
}
|
|
10
15
|
|
|
11
|
-
export const DialInterfaceInput: React.FC<DialInterfaceInputProps> = ({
|
|
16
|
+
export const DialInterfaceInput: React.FC<DialInterfaceInputProps> = ({
|
|
17
|
+
name,
|
|
18
|
+
label,
|
|
19
|
+
labelPosition = "top",
|
|
20
|
+
icon,
|
|
21
|
+
}) => {
|
|
12
22
|
const { getValue, setValue, schemas } = useDialSchema();
|
|
13
23
|
|
|
14
24
|
const values: Record<string, unknown> = getValue(name) as Record<string, unknown>;
|
|
@@ -28,17 +38,43 @@ export const DialInterfaceInput: React.FC<DialInterfaceInputProps> = ({ name })
|
|
|
28
38
|
return null;
|
|
29
39
|
}
|
|
30
40
|
|
|
31
|
-
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
values={values}
|
|
35
|
-
onValueChange={handlePropertyChange}
|
|
36
|
-
>
|
|
37
|
-
<DialPanel
|
|
41
|
+
const interfaceContent = (
|
|
42
|
+
<div className="border-surface-secondary flex flex-col gap-2 rounded-md border p-2">
|
|
43
|
+
<DialProvider
|
|
38
44
|
schemas={schema.typeDefinition.schemas}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
45
|
+
values={values}
|
|
46
|
+
onValueChange={handlePropertyChange}
|
|
47
|
+
>
|
|
48
|
+
<DialPanel
|
|
49
|
+
schemas={schema.typeDefinition.schemas}
|
|
50
|
+
groups={schema.typeDefinition.groups}
|
|
51
|
+
labelLayout={schema.labelPosition as LabelPositionT}
|
|
52
|
+
/>
|
|
53
|
+
</DialProvider>
|
|
54
|
+
</div>
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
if (!label) {
|
|
58
|
+
return interfaceContent;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return (
|
|
62
|
+
<FormLayout orientation={`label-${labelPosition}` as LayoutType}>
|
|
63
|
+
<Label size="sm" className="flex items-center gap-1 pl-1.5">
|
|
64
|
+
<IconRenderer iconName={icon} size={14} className="text-text-secondary" />
|
|
65
|
+
{label}
|
|
66
|
+
</Label>
|
|
67
|
+
<div className="flex flex-col gap-2 pl-1.5">
|
|
68
|
+
{schema.helpText && (
|
|
69
|
+
<span
|
|
70
|
+
className="text-text-secondary cursor-help text-xs"
|
|
71
|
+
title={schema.helpText as string}
|
|
72
|
+
>
|
|
73
|
+
ⓘ {schema.helpText}
|
|
74
|
+
</span>
|
|
75
|
+
)}
|
|
76
|
+
{interfaceContent}
|
|
77
|
+
</div>
|
|
78
|
+
</FormLayout>
|
|
43
79
|
);
|
|
44
80
|
};
|
|
@@ -18,7 +18,7 @@ const DialInputWrapper: React.FC<{
|
|
|
18
18
|
|
|
19
19
|
return (
|
|
20
20
|
<FormLayout orientation={`label-${labelPosition}` as LayoutType}>
|
|
21
|
-
<Label size="sm" className="flex items-center gap-1">
|
|
21
|
+
<Label size="sm" className="flex items-center gap-1 pl-1.5">
|
|
22
22
|
<IconRenderer iconName={icon} size={14} className="text-text-secondary" />
|
|
23
23
|
{label}
|
|
24
24
|
</Label>
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import React, { useCallback, useMemo } from "react";
|
|
2
|
+
|
|
3
|
+
import { FormLayout, Label, type LayoutType } from "../../index";
|
|
4
|
+
import { DialPanel } from "../DialPanel";
|
|
5
|
+
import { DialProvider, useDialSchema } from "../DialProvider";
|
|
6
|
+
import { IconRenderer } from "../IconRenderer";
|
|
7
|
+
import { LabelPositionT } from "../types";
|
|
8
|
+
|
|
9
|
+
interface DialTupleInputProps {
|
|
10
|
+
name: string;
|
|
11
|
+
label?: string;
|
|
12
|
+
labelPosition?: LabelPositionT;
|
|
13
|
+
icon?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* General tuple input component that handles mixed-type tuples
|
|
18
|
+
* Similar to interface/object but displays elements in a more compact layout
|
|
19
|
+
* Used for tuples containing strings, objects, or other complex types
|
|
20
|
+
*/
|
|
21
|
+
export const DialTupleInput: React.FC<DialTupleInputProps> = ({
|
|
22
|
+
name,
|
|
23
|
+
label,
|
|
24
|
+
labelPosition = "top",
|
|
25
|
+
icon,
|
|
26
|
+
}) => {
|
|
27
|
+
const { getValue, setValue, schemas } = useDialSchema();
|
|
28
|
+
|
|
29
|
+
const values = useMemo(() => getValue(name) || [], [getValue, name]);
|
|
30
|
+
|
|
31
|
+
const handleElementChange = useCallback(
|
|
32
|
+
(elementName: string, value: unknown) => {
|
|
33
|
+
const newValues = Array.isArray(values) ? [...values] : [];
|
|
34
|
+
|
|
35
|
+
// Extract index from element name (e.g., "[0]" -> 0 or "x" -> find by name)
|
|
36
|
+
const schema = schemas.find((s) => s.name === name);
|
|
37
|
+
if (!schema || !schema.typeDefinition?.schemas) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const elementIndex = schema.typeDefinition.schemas.findIndex((s) => s.name === elementName);
|
|
42
|
+
|
|
43
|
+
if (elementIndex >= 0) {
|
|
44
|
+
newValues[elementIndex] = value;
|
|
45
|
+
setValue(name, newValues);
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
[name, setValue, values, schemas],
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
const schema = schemas.find((s) => s.name === name);
|
|
52
|
+
|
|
53
|
+
if (!schema || !schema.typeDefinition?.schemas) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Convert tuple array to object format for DialProvider
|
|
58
|
+
const valuesObject: Record<string, unknown> = {};
|
|
59
|
+
schema.typeDefinition.schemas.forEach((elemSchema, index) => {
|
|
60
|
+
valuesObject[elemSchema.name] = Array.isArray(values) ? values[index] : undefined;
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
const tupleContent = (
|
|
64
|
+
<div className="border-surface-secondary flex flex-col gap-2 rounded-md border p-2">
|
|
65
|
+
<DialProvider
|
|
66
|
+
schemas={schema.typeDefinition.schemas}
|
|
67
|
+
values={valuesObject}
|
|
68
|
+
onValueChange={handleElementChange}
|
|
69
|
+
>
|
|
70
|
+
<DialPanel
|
|
71
|
+
schemas={schema.typeDefinition.schemas}
|
|
72
|
+
groups={schema.typeDefinition.groups}
|
|
73
|
+
labelLayout={schema.labelPosition as LabelPositionT}
|
|
74
|
+
/>
|
|
75
|
+
</DialProvider>
|
|
76
|
+
</div>
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
if (!label) {
|
|
80
|
+
return tupleContent;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return (
|
|
84
|
+
<FormLayout orientation={`label-${labelPosition}` as LayoutType}>
|
|
85
|
+
<Label size="sm" className="flex items-center gap-1 pl-1.5">
|
|
86
|
+
<IconRenderer iconName={icon} size={14} className="text-text-secondary" />
|
|
87
|
+
{label}
|
|
88
|
+
</Label>
|
|
89
|
+
<div className="flex flex-col gap-2 pl-1.5">
|
|
90
|
+
{schema.helpText && (
|
|
91
|
+
<span
|
|
92
|
+
className="text-text-secondary cursor-help text-xs"
|
|
93
|
+
title={schema.helpText as string}
|
|
94
|
+
>
|
|
95
|
+
ⓘ {schema.helpText}
|
|
96
|
+
</span>
|
|
97
|
+
)}
|
|
98
|
+
{tupleContent}
|
|
99
|
+
</div>
|
|
100
|
+
</FormLayout>
|
|
101
|
+
);
|
|
102
|
+
};
|
|
@@ -65,17 +65,22 @@ export const DialVectorInput: React.FC<DialVectorInputProps> = ({
|
|
|
65
65
|
const steps = schema.steps || [];
|
|
66
66
|
const mins = schema.mins || [];
|
|
67
67
|
const maxs = schema.maxs || [];
|
|
68
|
+
const defaults = Array.isArray(schema.value) ? schema.value : [];
|
|
68
69
|
|
|
69
70
|
// Ensure value is an array with correct dimensions
|
|
70
71
|
const vectorValue = Array.isArray(value)
|
|
71
|
-
? value.concat(
|
|
72
|
-
|
|
72
|
+
? value.concat(
|
|
73
|
+
Array.from({ length: Math.max(0, dimensions - value.length) }, (_, i) =>
|
|
74
|
+
defaults[value.length + i] !== undefined ? defaults[value.length + i] : 0,
|
|
75
|
+
),
|
|
76
|
+
)
|
|
77
|
+
: Array.from({ length: dimensions }, (_, i) => (defaults[i] !== undefined ? defaults[i] : 0));
|
|
73
78
|
|
|
74
79
|
// Check if we have mixed types (contains boolean)
|
|
75
80
|
const hasMixedTypes = dtypes.some((dtype) => dtype === "boolean");
|
|
76
81
|
|
|
77
82
|
// Determine layout from tags
|
|
78
|
-
const gridAutoFlow = schema.vectorFlow === "
|
|
83
|
+
const gridAutoFlow = schema.vectorFlow === "row" ? "row" : "column";
|
|
79
84
|
const gridColumns = typeof schema.vectorCols === "number" ? schema.vectorCols : undefined;
|
|
80
85
|
const gridRows = typeof schema.vectorRows === "number" ? schema.vectorRows : undefined;
|
|
81
86
|
|
|
@@ -222,7 +227,7 @@ export const DialVectorInput: React.FC<DialVectorInputProps> = ({
|
|
|
222
227
|
|
|
223
228
|
return (
|
|
224
229
|
<FormLayout orientation={`label-${labelPosition}` as LayoutType}>
|
|
225
|
-
<Label size="sm" className="flex items-center gap-1">
|
|
230
|
+
<Label size="sm" className="flex items-center gap-1 pl-1.5">
|
|
226
231
|
<IconRenderer iconName={icon} size={14} className="text-text-secondary" />
|
|
227
232
|
{label}
|
|
228
233
|
</Label>
|
|
@@ -30,3 +30,9 @@ export { DialPresetsInput } from "./DialPresetsInput";
|
|
|
30
30
|
|
|
31
31
|
// Variable-dimension vector input
|
|
32
32
|
export { DialVectorInput } from "./DialVectorInput";
|
|
33
|
+
|
|
34
|
+
// General tuple input for mixed types
|
|
35
|
+
export { DialTupleInput } from "./DialTupleInput";
|
|
36
|
+
|
|
37
|
+
// Array input for primitive types
|
|
38
|
+
export { DialArrayInput } from "./DialArrayInput";
|