@neut/ui 0.0.16 → 0.0.17
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/dist/components/bubble/Bubble/Bubble.d.ts +3 -0
- package/dist/components/bubble/Bubble/Bubble.js +39 -0
- package/dist/components/bubble/Bubble/Bubble.js.map +1 -0
- package/dist/components/bubble/Bubble/Bubble.styles.d.ts +7 -0
- package/dist/components/bubble/Bubble/Bubble.styles.js +18 -0
- package/dist/components/bubble/Bubble/Bubble.styles.js.map +1 -0
- package/dist/components/bubble/Bubble/Bubble.types.d.ts +8 -0
- package/dist/components/bubble/Bubble/index.d.ts +2 -0
- package/dist/components/bubble/BubbleContent/BubbleContent.d.ts +7 -0
- package/dist/components/bubble/BubbleContent/BubbleContent.js +17 -0
- package/dist/components/bubble/BubbleContent/BubbleContent.js.map +1 -0
- package/dist/components/bubble/BubbleContent/BubbleContent.styles.d.ts +1 -0
- package/dist/components/bubble/BubbleContent/BubbleContent.styles.js +6 -0
- package/dist/components/bubble/BubbleContent/BubbleContent.styles.js.map +1 -0
- package/dist/components/bubble/BubbleContent/BubbleContent.types.d.ts +3 -0
- package/dist/components/bubble/BubbleContent/index.d.ts +2 -0
- package/dist/components/bubble/BubbleGroup/BubbleGroup.d.ts +3 -0
- package/dist/components/bubble/BubbleGroup/BubbleGroup.js +24 -0
- package/dist/components/bubble/BubbleGroup/BubbleGroup.js.map +1 -0
- package/dist/components/bubble/BubbleGroup/BubbleGroup.types.d.ts +2 -0
- package/dist/components/bubble/BubbleGroup/index.d.ts +2 -0
- package/dist/components/bubble/BubbleReactions/BubbleReactions.d.ts +6 -0
- package/dist/components/bubble/BubbleReactions/BubbleReactions.js +42 -0
- package/dist/components/bubble/BubbleReactions/BubbleReactions.js.map +1 -0
- package/dist/components/bubble/BubbleReactions/BubbleReactions.styles.d.ts +4 -0
- package/dist/components/bubble/BubbleReactions/BubbleReactions.styles.js +22 -0
- package/dist/components/bubble/BubbleReactions/BubbleReactions.styles.js.map +1 -0
- package/dist/components/bubble/BubbleReactions/BubbleReactions.types.d.ts +4 -0
- package/dist/components/bubble/BubbleReactions/index.d.ts +2 -0
- package/dist/components/bubble/index.d.ts +8 -0
- package/dist/components/bubble/index.js +5 -0
- package/dist/components/drawer/Drawer/Drawer.context.d.ts +3 -0
- package/dist/components/drawer/Drawer/Drawer.context.js +12 -0
- package/dist/components/drawer/Drawer/Drawer.context.js.map +1 -0
- package/dist/components/drawer/Drawer/Drawer.d.ts +7 -0
- package/dist/components/drawer/Drawer/Drawer.js +63 -0
- package/dist/components/drawer/Drawer/Drawer.js.map +1 -0
- package/dist/components/drawer/Drawer/Drawer.types.d.ts +50 -0
- package/dist/components/drawer/Drawer/create-change-event-details.d.ts +3 -0
- package/dist/components/drawer/Drawer/create-change-event-details.js +25 -0
- package/dist/components/drawer/Drawer/create-change-event-details.js.map +1 -0
- package/dist/components/drawer/Drawer/index.d.ts +3 -0
- package/dist/components/drawer/DrawerClose/DrawerClose.d.ts +5 -0
- package/dist/components/drawer/DrawerClose/DrawerClose.js +26 -0
- package/dist/components/drawer/DrawerClose/DrawerClose.js.map +1 -0
- package/dist/components/drawer/DrawerClose/index.d.ts +1 -0
- package/dist/components/drawer/DrawerContent/DrawerContent.d.ts +6 -0
- package/dist/components/drawer/DrawerContent/DrawerContent.js +103 -0
- package/dist/components/drawer/DrawerContent/DrawerContent.js.map +1 -0
- package/dist/components/drawer/DrawerContent/DrawerContent.styles.d.ts +10 -0
- package/dist/components/drawer/DrawerContent/DrawerContent.styles.js +25 -0
- package/dist/components/drawer/DrawerContent/DrawerContent.styles.js.map +1 -0
- package/dist/components/drawer/DrawerContent/DrawerContent.types.d.ts +2 -0
- package/dist/components/drawer/DrawerContent/index.d.ts +2 -0
- package/dist/components/drawer/DrawerContent/useDrawerSwipe.d.ts +11 -0
- package/dist/components/drawer/DrawerContent/useDrawerSwipe.js +56 -0
- package/dist/components/drawer/DrawerContent/useDrawerSwipe.js.map +1 -0
- package/dist/components/drawer/DrawerDescription/DrawerDescription.d.ts +2 -0
- package/dist/components/drawer/DrawerDescription/DrawerDescription.js +28 -0
- package/dist/components/drawer/DrawerDescription/DrawerDescription.js.map +1 -0
- package/dist/components/drawer/DrawerDescription/DrawerDescription.types.d.ts +2 -0
- package/dist/components/drawer/DrawerDescription/index.d.ts +2 -0
- package/dist/components/drawer/DrawerFooter/DrawerFooter.d.ts +2 -0
- package/dist/components/drawer/DrawerFooter/DrawerFooter.js +24 -0
- package/dist/components/drawer/DrawerFooter/DrawerFooter.js.map +1 -0
- package/dist/components/drawer/DrawerFooter/DrawerFooter.types.d.ts +2 -0
- package/dist/components/drawer/DrawerFooter/index.d.ts +2 -0
- package/dist/components/drawer/DrawerHeader/DrawerHeader.d.ts +2 -0
- package/dist/components/drawer/DrawerHeader/DrawerHeader.js +24 -0
- package/dist/components/drawer/DrawerHeader/DrawerHeader.js.map +1 -0
- package/dist/components/drawer/DrawerHeader/DrawerHeader.types.d.ts +2 -0
- package/dist/components/drawer/DrawerHeader/index.d.ts +2 -0
- package/dist/components/drawer/DrawerOverlay/DrawerOverlay.d.ts +3 -0
- package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js +43 -0
- package/dist/components/drawer/DrawerOverlay/DrawerOverlay.js.map +1 -0
- package/dist/components/drawer/DrawerOverlay/DrawerOverlay.types.d.ts +2 -0
- package/dist/components/drawer/DrawerOverlay/index.d.ts +2 -0
- package/dist/components/drawer/DrawerPortal/DrawerPortal.d.ts +2 -0
- package/dist/components/drawer/DrawerPortal/DrawerPortal.js +10 -0
- package/dist/components/drawer/DrawerPortal/DrawerPortal.js.map +1 -0
- package/dist/components/drawer/DrawerPortal/DrawerPortal.types.d.ts +2 -0
- package/dist/components/drawer/DrawerPortal/index.d.ts +2 -0
- package/dist/components/drawer/DrawerSwipeHandle/DrawerSwipeHandle.d.ts +6 -0
- package/dist/components/drawer/DrawerSwipeHandle/DrawerSwipeHandle.js +27 -0
- package/dist/components/drawer/DrawerSwipeHandle/DrawerSwipeHandle.js.map +1 -0
- package/dist/components/drawer/DrawerSwipeHandle/DrawerSwipeHandle.types.d.ts +2 -0
- package/dist/components/drawer/DrawerSwipeHandle/index.d.ts +2 -0
- package/dist/components/drawer/DrawerTitle/DrawerTitle.d.ts +2 -0
- package/dist/components/drawer/DrawerTitle/DrawerTitle.js +28 -0
- package/dist/components/drawer/DrawerTitle/DrawerTitle.js.map +1 -0
- package/dist/components/drawer/DrawerTitle/DrawerTitle.types.d.ts +2 -0
- package/dist/components/drawer/DrawerTitle/index.d.ts +2 -0
- package/dist/components/drawer/DrawerTrigger/DrawerTrigger.d.ts +5 -0
- package/dist/components/drawer/DrawerTrigger/DrawerTrigger.js +38 -0
- package/dist/components/drawer/DrawerTrigger/DrawerTrigger.js.map +1 -0
- package/dist/components/drawer/DrawerTrigger/index.d.ts +1 -0
- package/dist/components/drawer/index.d.ts +20 -0
- package/dist/components/drawer/index.js +13 -0
- package/dist/components/hover-card/HoverCard/HoverCard.d.ts +7 -0
- package/dist/components/hover-card/HoverCard/HoverCard.js +47 -0
- package/dist/components/hover-card/HoverCard/HoverCard.js.map +1 -0
- package/dist/components/hover-card/HoverCard/index.d.ts +1 -0
- package/dist/components/hover-card/HoverCardContent/HoverCardContent.d.ts +6 -0
- package/dist/components/hover-card/HoverCardContent/HoverCardContent.js +74 -0
- package/dist/components/hover-card/HoverCardContent/HoverCardContent.js.map +1 -0
- package/dist/components/hover-card/HoverCardContent/index.d.ts +1 -0
- package/dist/components/hover-card/HoverCardContent/useHoverCardContent.d.ts +16 -0
- package/dist/components/hover-card/HoverCardContent/useHoverCardContent.js +58 -0
- package/dist/components/hover-card/HoverCardContent/useHoverCardContent.js.map +1 -0
- package/dist/components/hover-card/HoverCardTrigger/HoverCardTrigger.d.ts +4 -0
- package/dist/components/hover-card/HoverCardTrigger/HoverCardTrigger.js +40 -0
- package/dist/components/hover-card/HoverCardTrigger/HoverCardTrigger.js.map +1 -0
- package/dist/components/hover-card/HoverCardTrigger/index.d.ts +1 -0
- package/dist/components/hover-card/HoverCardTrigger/useHoverCardTrigger.d.ts +18 -0
- package/dist/components/hover-card/HoverCardTrigger/useHoverCardTrigger.js +34 -0
- package/dist/components/hover-card/HoverCardTrigger/useHoverCardTrigger.js.map +1 -0
- package/dist/components/hover-card/hover-card.context.d.ts +3 -0
- package/dist/components/hover-card/hover-card.context.js +12 -0
- package/dist/components/hover-card/hover-card.context.js.map +1 -0
- package/dist/components/hover-card/hover-card.types.d.ts +50 -0
- package/dist/components/hover-card/hover-card.utils.d.ts +6 -0
- package/dist/components/hover-card/index.d.ts +4 -0
- package/dist/components/hover-card/index.js +4 -0
- package/dist/components/marker/Marker/Marker.d.ts +7 -0
- package/dist/components/marker/Marker/Marker.js +35 -0
- package/dist/components/marker/Marker/Marker.js.map +1 -0
- package/dist/components/marker/Marker/Marker.styles.d.ts +3 -0
- package/dist/components/marker/Marker/Marker.styles.js +14 -0
- package/dist/components/marker/Marker/Marker.styles.js.map +1 -0
- package/dist/components/marker/Marker/Marker.types.d.ts +5 -0
- package/dist/components/marker/Marker/index.d.ts +3 -0
- package/dist/components/marker/MarkerContent/MarkerContent.d.ts +2 -0
- package/dist/components/marker/MarkerContent/MarkerContent.js +24 -0
- package/dist/components/marker/MarkerContent/MarkerContent.js.map +1 -0
- package/dist/components/marker/MarkerContent/MarkerContent.types.d.ts +2 -0
- package/dist/components/marker/MarkerContent/index.d.ts +2 -0
- package/dist/components/marker/MarkerIcon/MarkerIcon.d.ts +3 -0
- package/dist/components/marker/MarkerIcon/MarkerIcon.js +25 -0
- package/dist/components/marker/MarkerIcon/MarkerIcon.js.map +1 -0
- package/dist/components/marker/MarkerIcon/MarkerIcon.types.d.ts +2 -0
- package/dist/components/marker/MarkerIcon/index.d.ts +2 -0
- package/dist/components/marker/index.d.ts +6 -0
- package/dist/components/marker/index.js +5 -0
- package/dist/components/message/Message/Message.d.ts +3 -0
- package/dist/components/message/Message/Message.js +31 -0
- package/dist/components/message/Message/Message.js.map +1 -0
- package/dist/components/message/Message/Message.types.d.ts +5 -0
- package/dist/components/message/Message/index.d.ts +2 -0
- package/dist/components/message/MessageAvatar/MessageAvatar.d.ts +5 -0
- package/dist/components/message/MessageAvatar/MessageAvatar.js +24 -0
- package/dist/components/message/MessageAvatar/MessageAvatar.js.map +1 -0
- package/dist/components/message/MessageAvatar/MessageAvatar.types.d.ts +2 -0
- package/dist/components/message/MessageAvatar/index.d.ts +2 -0
- package/dist/components/message/MessageContent/MessageContent.d.ts +3 -0
- package/dist/components/message/MessageContent/MessageContent.js +24 -0
- package/dist/components/message/MessageContent/MessageContent.js.map +1 -0
- package/dist/components/message/MessageContent/MessageContent.types.d.ts +2 -0
- package/dist/components/message/MessageContent/index.d.ts +2 -0
- package/dist/components/message/MessageFooter/MessageFooter.d.ts +3 -0
- package/dist/components/message/MessageFooter/MessageFooter.js +24 -0
- package/dist/components/message/MessageFooter/MessageFooter.js.map +1 -0
- package/dist/components/message/MessageFooter/MessageFooter.types.d.ts +2 -0
- package/dist/components/message/MessageFooter/index.d.ts +2 -0
- package/dist/components/message/MessageGroup/MessageGroup.d.ts +3 -0
- package/dist/components/message/MessageGroup/MessageGroup.js +24 -0
- package/dist/components/message/MessageGroup/MessageGroup.js.map +1 -0
- package/dist/components/message/MessageGroup/MessageGroup.types.d.ts +2 -0
- package/dist/components/message/MessageGroup/index.d.ts +2 -0
- package/dist/components/message/MessageHeader/MessageHeader.d.ts +3 -0
- package/dist/components/message/MessageHeader/MessageHeader.js +24 -0
- package/dist/components/message/MessageHeader/MessageHeader.js.map +1 -0
- package/dist/components/message/MessageHeader/MessageHeader.types.d.ts +2 -0
- package/dist/components/message/MessageHeader/index.d.ts +2 -0
- package/dist/components/message/index.d.ts +12 -0
- package/dist/components/message/index.js +7 -0
- package/dist/components/message-scroller/MessageScroller/MessageScroller.d.ts +3 -0
- package/dist/components/message-scroller/MessageScroller/MessageScroller.js +35 -0
- package/dist/components/message-scroller/MessageScroller/MessageScroller.js.map +1 -0
- package/dist/components/message-scroller/MessageScroller/index.d.ts +1 -0
- package/dist/components/message-scroller/MessageScrollerButton/MessageScrollerButton.d.ts +6 -0
- package/dist/components/message-scroller/MessageScrollerButton/MessageScrollerButton.js +90 -0
- package/dist/components/message-scroller/MessageScrollerButton/MessageScrollerButton.js.map +1 -0
- package/dist/components/message-scroller/MessageScrollerButton/index.d.ts +1 -0
- package/dist/components/message-scroller/MessageScrollerContent/MessageScrollerContent.d.ts +6 -0
- package/dist/components/message-scroller/MessageScrollerContent/MessageScrollerContent.js +46 -0
- package/dist/components/message-scroller/MessageScrollerContent/MessageScrollerContent.js.map +1 -0
- package/dist/components/message-scroller/MessageScrollerContent/index.d.ts +1 -0
- package/dist/components/message-scroller/MessageScrollerItem/MessageScrollerItem.d.ts +6 -0
- package/dist/components/message-scroller/MessageScrollerItem/MessageScrollerItem.js +42 -0
- package/dist/components/message-scroller/MessageScrollerItem/MessageScrollerItem.js.map +1 -0
- package/dist/components/message-scroller/MessageScrollerItem/index.d.ts +1 -0
- package/dist/components/message-scroller/MessageScrollerProvider/MessageScrollerProvider.d.ts +4 -0
- package/dist/components/message-scroller/MessageScrollerProvider/MessageScrollerProvider.js +37 -0
- package/dist/components/message-scroller/MessageScrollerProvider/MessageScrollerProvider.js.map +1 -0
- package/dist/components/message-scroller/MessageScrollerProvider/index.d.ts +1 -0
- package/dist/components/message-scroller/MessageScrollerViewport/MessageScrollerViewport.d.ts +6 -0
- package/dist/components/message-scroller/MessageScrollerViewport/MessageScrollerViewport.js +55 -0
- package/dist/components/message-scroller/MessageScrollerViewport/MessageScrollerViewport.js.map +1 -0
- package/dist/components/message-scroller/MessageScrollerViewport/index.d.ts +1 -0
- package/dist/components/message-scroller/index.d.ts +10 -0
- package/dist/components/message-scroller/index.js +10 -0
- package/dist/components/message-scroller/message-scroller.context.d.ts +3 -0
- package/dist/components/message-scroller/message-scroller.context.js +12 -0
- package/dist/components/message-scroller/message-scroller.context.js.map +1 -0
- package/dist/components/message-scroller/message-scroller.types.d.ts +92 -0
- package/dist/components/message-scroller/message-scroller.utils.d.ts +7 -0
- package/dist/components/message-scroller/message-scroller.utils.js +9 -0
- package/dist/components/message-scroller/message-scroller.utils.js.map +1 -0
- package/dist/components/message-scroller/useMessageScroller.d.ts +6 -0
- package/dist/components/message-scroller/useMessageScroller.js +14 -0
- package/dist/components/message-scroller/useMessageScroller.js.map +1 -0
- package/dist/components/message-scroller/useMessageScrollerEngine.d.ts +15 -0
- package/dist/components/message-scroller/useMessageScrollerEngine.js +375 -0
- package/dist/components/message-scroller/useMessageScrollerEngine.js.map +1 -0
- package/dist/components/message-scroller/useMessageScrollerScrollable.d.ts +5 -0
- package/dist/components/message-scroller/useMessageScrollerScrollable.js +13 -0
- package/dist/components/message-scroller/useMessageScrollerScrollable.js.map +1 -0
- package/dist/components/message-scroller/useMessageScrollerVisibility.d.ts +7 -0
- package/dist/components/message-scroller/useMessageScrollerVisibility.js +17 -0
- package/dist/components/message-scroller/useMessageScrollerVisibility.js.map +1 -0
- package/dist/components/popover/PopoverContent/PopoverContent.utils.d.ts +6 -13
- package/dist/components/popover/PopoverContent/PopoverContent.utils.js +7 -30
- package/dist/components/popover/PopoverContent/PopoverContent.utils.js.map +1 -1
- package/dist/components/questionnaire/Questionnaire/Questionnaire.d.ts +3 -0
- package/dist/components/questionnaire/Questionnaire/Questionnaire.js +68 -0
- package/dist/components/questionnaire/Questionnaire/Questionnaire.js.map +1 -0
- package/dist/components/questionnaire/Questionnaire/index.d.ts +1 -0
- package/dist/components/questionnaire/QuestionnaireActions/QuestionnaireActions.d.ts +3 -0
- package/dist/components/questionnaire/QuestionnaireActions/QuestionnaireActions.js +24 -0
- package/dist/components/questionnaire/QuestionnaireActions/QuestionnaireActions.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireActions/index.d.ts +1 -0
- package/dist/components/questionnaire/QuestionnaireChoice/QuestionnaireChoice.d.ts +3 -0
- package/dist/components/questionnaire/QuestionnaireChoice/QuestionnaireChoice.js +99 -0
- package/dist/components/questionnaire/QuestionnaireChoice/QuestionnaireChoice.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireChoice/index.d.ts +1 -0
- package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.d.ts +38 -0
- package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js +67 -0
- package/dist/components/questionnaire/QuestionnaireChoice/useQuestionnaireChoice.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireChoices/QuestionnaireChoices.d.ts +3 -0
- package/dist/components/questionnaire/QuestionnaireChoices/QuestionnaireChoices.js +28 -0
- package/dist/components/questionnaire/QuestionnaireChoices/QuestionnaireChoices.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireChoices/index.d.ts +1 -0
- package/dist/components/questionnaire/QuestionnaireDescription/QuestionnaireDescription.d.ts +4 -0
- package/dist/components/questionnaire/QuestionnaireDescription/QuestionnaireDescription.js +30 -0
- package/dist/components/questionnaire/QuestionnaireDescription/QuestionnaireDescription.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireDescription/index.d.ts +1 -0
- package/dist/components/questionnaire/QuestionnaireError/QuestionnaireError.d.ts +4 -0
- package/dist/components/questionnaire/QuestionnaireError/QuestionnaireError.js +43 -0
- package/dist/components/questionnaire/QuestionnaireError/QuestionnaireError.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireError/index.d.ts +1 -0
- package/dist/components/questionnaire/QuestionnaireInput/QuestionnaireInput.d.ts +3 -0
- package/dist/components/questionnaire/QuestionnaireInput/QuestionnaireInput.js +78 -0
- package/dist/components/questionnaire/QuestionnaireInput/QuestionnaireInput.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireInput/index.d.ts +1 -0
- package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.d.ts +37 -0
- package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js +58 -0
- package/dist/components/questionnaire/QuestionnaireInput/useQuestionnaireInput.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.d.ts +3 -0
- package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js +89 -0
- package/dist/components/questionnaire/QuestionnaireItem/QuestionnaireItem.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireItem/index.d.ts +1 -0
- package/dist/components/questionnaire/QuestionnaireNavigation/QuestionnaireNavigation.d.ts +5 -0
- package/dist/components/questionnaire/QuestionnaireNavigation/QuestionnaireNavigation.js +104 -0
- package/dist/components/questionnaire/QuestionnaireNavigation/QuestionnaireNavigation.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireNavigation/index.d.ts +1 -0
- package/dist/components/questionnaire/QuestionnaireProgress/QuestionnaireProgress.d.ts +4 -0
- package/dist/components/questionnaire/QuestionnaireProgress/QuestionnaireProgress.js +62 -0
- package/dist/components/questionnaire/QuestionnaireProgress/QuestionnaireProgress.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireProgress/index.d.ts +1 -0
- package/dist/components/questionnaire/QuestionnaireTitle/QuestionnaireTitle.d.ts +4 -0
- package/dist/components/questionnaire/QuestionnaireTitle/QuestionnaireTitle.js +27 -0
- package/dist/components/questionnaire/QuestionnaireTitle/QuestionnaireTitle.js.map +1 -0
- package/dist/components/questionnaire/QuestionnaireTitle/index.d.ts +1 -0
- package/dist/components/questionnaire/index.d.ts +12 -0
- package/dist/components/questionnaire/index.js +12 -0
- package/dist/components/questionnaire/questionnaire.context.d.ts +65 -0
- package/dist/components/questionnaire/questionnaire.context.js +18 -0
- package/dist/components/questionnaire/questionnaire.context.js.map +1 -0
- package/dist/components/questionnaire/questionnaire.types.d.ts +82 -0
- package/dist/components/questionnaire/questionnaire.utils.d.ts +24 -0
- package/dist/components/questionnaire/questionnaire.utils.js +38 -0
- package/dist/components/questionnaire/questionnaire.utils.js.map +1 -0
- package/dist/components/questionnaire/useQuestionnaireItem.d.ts +34 -0
- package/dist/components/questionnaire/useQuestionnaireItem.js +141 -0
- package/dist/components/questionnaire/useQuestionnaireItem.js.map +1 -0
- package/dist/components/questionnaire/useQuestionnaireRoot.d.ts +30 -0
- package/dist/components/questionnaire/useQuestionnaireRoot.js +144 -0
- package/dist/components/questionnaire/useQuestionnaireRoot.js.map +1 -0
- package/dist/components/resizable/ResizableHandle/ResizableHandle.d.ts +6 -0
- package/dist/components/resizable/ResizableHandle/ResizableHandle.js +92 -0
- package/dist/components/resizable/ResizableHandle/ResizableHandle.js.map +1 -0
- package/dist/components/resizable/ResizableHandle/ResizableHandle.styles.d.ts +3 -0
- package/dist/components/resizable/ResizableHandle/ResizableHandle.styles.js +6 -0
- package/dist/components/resizable/ResizableHandle/ResizableHandle.styles.js.map +1 -0
- package/dist/components/resizable/ResizableHandle/index.d.ts +1 -0
- package/dist/components/resizable/ResizableHandle/useResizableHandle.d.ts +17 -0
- package/dist/components/resizable/ResizableHandle/useResizableHandle.js +72 -0
- package/dist/components/resizable/ResizableHandle/useResizableHandle.js.map +1 -0
- package/dist/components/resizable/ResizablePanel/ResizablePanel.d.ts +6 -0
- package/dist/components/resizable/ResizablePanel/ResizablePanel.js +91 -0
- package/dist/components/resizable/ResizablePanel/ResizablePanel.js.map +1 -0
- package/dist/components/resizable/ResizablePanel/index.d.ts +1 -0
- package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.d.ts +6 -0
- package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js +66 -0
- package/dist/components/resizable/ResizablePanelGroup/ResizablePanelGroup.js.map +1 -0
- package/dist/components/resizable/ResizablePanelGroup/index.d.ts +1 -0
- package/dist/components/resizable/index.d.ts +4 -0
- package/dist/components/resizable/index.js +4 -0
- package/dist/components/resizable/resizable.context.d.ts +38 -0
- package/dist/components/resizable/resizable.context.js +12 -0
- package/dist/components/resizable/resizable.context.js.map +1 -0
- package/dist/components/resizable/resizable.types.d.ts +76 -0
- package/dist/components/resizable/resizable.utils.d.ts +16 -0
- package/dist/components/resizable/resizable.utils.js +45 -0
- package/dist/components/resizable/resizable.utils.js.map +1 -0
- package/dist/components/resizable/useResizablePanelGroup.d.ts +22 -0
- package/dist/components/resizable/useResizablePanelGroup.js +176 -0
- package/dist/components/resizable/useResizablePanelGroup.js.map +1 -0
- package/dist/components/scroll-arrows/ScrollArrowButton.d.ts +7 -4
- package/dist/components/scroll-arrows/ScrollArrowButton.js +28 -19
- package/dist/components/scroll-arrows/ScrollArrowButton.js.map +1 -1
- package/dist/components/scroll-arrows/ScrollArrows.d.ts +5 -2
- package/dist/components/scroll-arrows/ScrollArrows.js +6 -0
- package/dist/components/scroll-arrows/ScrollArrows.js.map +1 -1
- package/dist/components/scroll-arrows/ScrollArrows.types.d.ts +7 -0
- package/dist/components/sheet/Sheet/Sheet.d.ts +6 -0
- package/dist/components/sheet/Sheet/Sheet.js +10 -0
- package/dist/components/sheet/Sheet/Sheet.js.map +1 -0
- package/dist/components/sheet/Sheet/index.d.ts +1 -0
- package/dist/components/sheet/SheetClose/SheetClose.d.ts +6 -0
- package/dist/components/sheet/SheetClose/SheetClose.js +39 -0
- package/dist/components/sheet/SheetClose/SheetClose.js.map +1 -0
- package/dist/components/sheet/SheetClose/index.d.ts +1 -0
- package/dist/components/sheet/SheetContent/SheetContent.d.ts +6 -0
- package/dist/components/sheet/SheetContent/SheetContent.js +48 -0
- package/dist/components/sheet/SheetContent/SheetContent.js.map +1 -0
- package/dist/components/sheet/SheetContent/SheetContent.styles.d.ts +10 -0
- package/dist/components/sheet/SheetContent/SheetContent.styles.js +17 -0
- package/dist/components/sheet/SheetContent/SheetContent.styles.js.map +1 -0
- package/dist/components/sheet/SheetContent/index.d.ts +1 -0
- package/dist/components/sheet/SheetDescription/SheetDescription.d.ts +2 -0
- package/dist/components/sheet/SheetDescription/SheetDescription.js +25 -0
- package/dist/components/sheet/SheetDescription/SheetDescription.js.map +1 -0
- package/dist/components/sheet/SheetDescription/SheetDescription.styles.d.ts +1 -0
- package/dist/components/sheet/SheetDescription/SheetDescription.styles.js +6 -0
- package/dist/components/sheet/SheetDescription/SheetDescription.styles.js.map +1 -0
- package/dist/components/sheet/SheetDescription/index.d.ts +1 -0
- package/dist/components/sheet/SheetFooter/SheetFooter.d.ts +2 -0
- package/dist/components/sheet/SheetFooter/SheetFooter.js +24 -0
- package/dist/components/sheet/SheetFooter/SheetFooter.js.map +1 -0
- package/dist/components/sheet/SheetFooter/index.d.ts +1 -0
- package/dist/components/sheet/SheetHeader/SheetHeader.d.ts +2 -0
- package/dist/components/sheet/SheetHeader/SheetHeader.js +24 -0
- package/dist/components/sheet/SheetHeader/SheetHeader.js.map +1 -0
- package/dist/components/sheet/SheetHeader/index.d.ts +1 -0
- package/dist/components/sheet/SheetTitle/SheetTitle.d.ts +3 -0
- package/dist/components/sheet/SheetTitle/SheetTitle.js +25 -0
- package/dist/components/sheet/SheetTitle/SheetTitle.js.map +1 -0
- package/dist/components/sheet/SheetTitle/SheetTitle.styles.d.ts +1 -0
- package/dist/components/sheet/SheetTitle/SheetTitle.styles.js +6 -0
- package/dist/components/sheet/SheetTitle/SheetTitle.styles.js.map +1 -0
- package/dist/components/sheet/SheetTitle/index.d.ts +1 -0
- package/dist/components/sheet/SheetTrigger/SheetTrigger.d.ts +8 -0
- package/dist/components/sheet/SheetTrigger/SheetTrigger.js +32 -0
- package/dist/components/sheet/SheetTrigger/SheetTrigger.js.map +1 -0
- package/dist/components/sheet/SheetTrigger/index.d.ts +1 -0
- package/dist/components/sheet/index.d.ts +9 -0
- package/dist/components/sheet/index.js +9 -0
- package/dist/components/sheet/sheet.types.d.ts +19 -0
- package/dist/components/tooltip/TooltipContent/TooltipContent.js +1 -1
- package/dist/components/tooltip/TooltipContent/TooltipContent.utils.d.ts +5 -49
- package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js +10 -39
- package/dist/components/tooltip/TooltipContent/TooltipContent.utils.js.map +1 -1
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js +6 -5
- package/dist/components/tooltip/TooltipContent/useTooltipContent.js.map +1 -1
- package/dist/hooks/useScrollEdges.d.ts +3 -0
- package/dist/hooks/useScrollEdges.js +18 -16
- package/dist/hooks/useScrollEdges.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.js +253 -193
- package/dist/lib/positioner/index.d.ts +1 -0
- package/dist/lib/positioner/utils/floating.d.ts +25 -0
- package/dist/lib/positioner/utils/floating.js +42 -0
- package/dist/lib/positioner/utils/floating.js.map +1 -0
- package/dist/ui.css +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
|
+
import { useResizablePanelGroupContext as t } from "../resizable.context.js";
|
|
3
|
+
import { gripClasses as n, handleClasses as r } from "./ResizableHandle.styles.js";
|
|
4
|
+
import { useResizableHandle as i } from "./useResizableHandle.js";
|
|
5
|
+
import { className as a, createComponent as o, insert as s, mergeProps as c, spread as l, template as u, use as d } from "solid-js/web";
|
|
6
|
+
import { Show as f, createSignal as p, mergeProps as m, onCleanup as h, splitProps as g } from "solid-js";
|
|
7
|
+
//#region src/components/resizable/ResizableHandle/ResizableHandle.tsx
|
|
8
|
+
var _ = /*#__PURE__*/ u("<div>");
|
|
9
|
+
function v(u) {
|
|
10
|
+
let v = t("ResizableHandle"), y = m({
|
|
11
|
+
disabled: !1,
|
|
12
|
+
withHandle: !1
|
|
13
|
+
}, u), [b, x] = g(y, [
|
|
14
|
+
"class",
|
|
15
|
+
"classList",
|
|
16
|
+
"id",
|
|
17
|
+
"disabled",
|
|
18
|
+
"withHandle",
|
|
19
|
+
"onDragging",
|
|
20
|
+
"children"
|
|
21
|
+
]), [S, C] = p(), w = () => {
|
|
22
|
+
let e = S();
|
|
23
|
+
return e ? v.resolveAdjacent(e) : void 0;
|
|
24
|
+
}, T = i({
|
|
25
|
+
disabled: () => b.disabled,
|
|
26
|
+
onDragging: (e) => b.onDragging?.(e)
|
|
27
|
+
}), E = () => v.orientation() === "horizontal" ? "vertical" : "horizontal";
|
|
28
|
+
return (() => {
|
|
29
|
+
var t = _();
|
|
30
|
+
return d((e) => {
|
|
31
|
+
C(e), h(() => C(void 0));
|
|
32
|
+
}, t), l(t, c(x, {
|
|
33
|
+
get id() {
|
|
34
|
+
return b.id;
|
|
35
|
+
},
|
|
36
|
+
role: "separator",
|
|
37
|
+
get "aria-orientation"() {
|
|
38
|
+
return E();
|
|
39
|
+
},
|
|
40
|
+
get "aria-valuenow"() {
|
|
41
|
+
return Math.round(w()?.prevSize ?? 0);
|
|
42
|
+
},
|
|
43
|
+
"aria-valuemin": 0,
|
|
44
|
+
get "aria-valuemax"() {
|
|
45
|
+
return Math.round(w()?.total ?? 100);
|
|
46
|
+
},
|
|
47
|
+
get tabIndex() {
|
|
48
|
+
return b.disabled ? -1 : 0;
|
|
49
|
+
},
|
|
50
|
+
"data-slot": "resizable-handle",
|
|
51
|
+
get "data-orientation"() {
|
|
52
|
+
return v.orientation();
|
|
53
|
+
},
|
|
54
|
+
get "data-disabled"() {
|
|
55
|
+
return b.disabled ? "" : void 0;
|
|
56
|
+
},
|
|
57
|
+
get "data-dragging"() {
|
|
58
|
+
return v.dragging() ? "" : void 0;
|
|
59
|
+
},
|
|
60
|
+
get onPointerDown() {
|
|
61
|
+
return T.onPointerDown;
|
|
62
|
+
},
|
|
63
|
+
get onPointerMove() {
|
|
64
|
+
return T.onPointerMove;
|
|
65
|
+
},
|
|
66
|
+
get onPointerUp() {
|
|
67
|
+
return T.onPointerUp;
|
|
68
|
+
},
|
|
69
|
+
get onKeyDown() {
|
|
70
|
+
return T.onKeyDown;
|
|
71
|
+
},
|
|
72
|
+
get class() {
|
|
73
|
+
return e(r, b.class);
|
|
74
|
+
},
|
|
75
|
+
get classList() {
|
|
76
|
+
return b.classList;
|
|
77
|
+
}
|
|
78
|
+
}), !1, !0), s(t, o(f, {
|
|
79
|
+
get when() {
|
|
80
|
+
return b.withHandle;
|
|
81
|
+
},
|
|
82
|
+
get children() {
|
|
83
|
+
var e = _();
|
|
84
|
+
return a(e, n), e;
|
|
85
|
+
}
|
|
86
|
+
}), null), s(t, () => b.children, null), t;
|
|
87
|
+
})();
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
export { v as ResizableHandle };
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=ResizableHandle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResizableHandle.js","names":["Show","createSignal","mergeProps","onCleanup","splitProps","clsx","useResizablePanelGroupContext","gripClasses","handleClasses","useResizableHandle","ResizableHandleProps","ResizableHandle","props","ctx","merged","disabled","withHandle","local","rest","element","setElement","HTMLElement","adjacent","el","resolveAdjacent","undefined","handlers","onDragging","dragging","separatorOrientation","orientation","_el$","_tmpl$","_$use","_$spread","_$mergeProps","id","aria-orientation","aria-valuenow","Math","round","prevSize","aria-valuemax","total","tabIndex","data-orientation","data-disabled","data-dragging","onPointerDown","onPointerMove","onPointerUp","onKeyDown","class","classList","_$insert","_$createComponent","when","children","_el$2","_$className","mergeProps","_$mergeProps","_$createComponent","mergeProps$1","_tmpl$","ResizableHandle","ctx","useResizablePanelGroupContext","merged","props","local","rest","splitProps","element","setElement","createSignal","adjacent","el","handlers","useResizableHandle","dragging","separatorOrientation","_el$","use","onCleanup","spread","mergeProps","\"role\"","\"class\"","clsx","handleClasses","insert","createComponent","Show","_el$2","className","gripClasses"],"sources":["../../../../src/components/resizable/ResizableHandle/ResizableHandle.tsx"],"sourcesContent":["import {\n Show,\n createSignal,\n mergeProps,\n onCleanup,\n splitProps,\n} from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { useResizablePanelGroupContext } from \"../resizable.context\";\nimport { gripClasses, handleClasses } from \"./ResizableHandle.styles\";\nimport { useResizableHandle } from \"./useResizableHandle\";\nimport type { ResizableHandleProps } from \"../resizable.types\";\n\n/**\n * 两个面板之间的分隔条:支持拖拽、方向键、Home/End、Enter/Space 折叠。\n * 默认只有 1px 可见线,靠 `::after` 扩大命中区域;`withHandle` 时显示抓手。\n */\nexport function ResizableHandle(props: ResizableHandleProps) {\n const ctx = useResizablePanelGroupContext(\"ResizableHandle\");\n const merged = mergeProps({ disabled: false, withHandle: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"classList\",\n \"id\",\n \"disabled\",\n \"withHandle\",\n \"onDragging\",\n \"children\",\n ]);\n\n const [element, setElement] = createSignal<HTMLElement>();\n const adjacent = () => {\n const el = element();\n return el ? ctx.resolveAdjacent(el) : undefined;\n };\n\n const handlers = useResizableHandle({\n disabled: () => local.disabled,\n onDragging: (dragging) => local.onDragging?.(dragging),\n });\n\n // 分隔条方向与 group 垂直:group 横向时是一条竖线\n const separatorOrientation = () =>\n ctx.orientation() === \"horizontal\" ? \"vertical\" : \"horizontal\";\n\n return (\n <div\n {...rest}\n ref={(el) => {\n setElement(el);\n onCleanup(() => setElement(undefined));\n }}\n id={local.id}\n role=\"separator\"\n aria-orientation={separatorOrientation()}\n aria-valuenow={Math.round(adjacent()?.prevSize ?? 0)}\n aria-valuemin={0}\n aria-valuemax={Math.round(adjacent()?.total ?? 100)}\n tabIndex={local.disabled ? -1 : 0}\n data-slot=\"resizable-handle\"\n data-orientation={ctx.orientation()}\n data-disabled={local.disabled ? \"\" : undefined}\n data-dragging={ctx.dragging() ? \"\" : undefined}\n onPointerDown={handlers.onPointerDown}\n onPointerMove={handlers.onPointerMove}\n onPointerUp={handlers.onPointerUp}\n onKeyDown={handlers.onKeyDown}\n class={clsx(handleClasses, local.class)}\n classList={local.classList}\n >\n <Show when={local.withHandle}>\n <div class={gripClasses} />\n </Show>\n {local.children}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgBW,EAAgBC,GAA6B;CAC3D,IAAMC,IAAMP,EAA8B,iBAAiB,GACrDQ,IAASZ,EAAW;EAAEa,UAAU;EAAOC,YAAY;CAAM,GAAGJ,CAAK,GACjE,CAACK,GAAOC,KAAQd,EAAWU,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEK,CAACK,GAASC,KAAcnB,EAA0B,GAClDqB,UAAiB;EACrB,IAAMC,IAAKJ,EAAQ;EACnB,OAAOI,IAAKV,EAAIW,gBAAgBD,CAAE,IAAIE,KAAAA;CACxC,GAEMC,IAAWjB,EAAmB;EAClCM,gBAAgBE,EAAMF;EACtBY,aAAaC,MAAaX,EAAMU,aAAaC,CAAQ;CACvD,CAAC,GAGKC,UACJhB,EAAIiB,YAAY,MAAM,eAAe,aAAa;CAEpD,cAAA;EAAA,IAAAC,IAAAC,EAAA;EA4BmB,OA5BnBC,GAGUV,MAAO;GAEXpB,AADAiB,EAAWG,CAAE,GACbpB,QAAgBiB,EAAWK,KAAAA,CAAS,CAAC;EACvC,GAACM,CAAA,GAAAG,EAAAH,GAAAI,EAJGjB,GAAI;GAAA,IAKRkB,KAAE;IAAA,OAAEnB,EAAMmB;GAAE;GAAAmD,MACP;GAAW,IAAA,qBAAA;IAAA,OACE1D,EAAqB;GAAC;GAAA,IAAA,kBAAA;IAAA,OACzBU,KAAKC,MAAMlB,EAAS,CAAC,EAAEmB,YAAY,CAAC;GAAC;GAAA,iBACrC;GAAC,IAAA,kBAAA;IAAA,OACDF,KAAKC,MAAMlB,EAAS,CAAC,EAAEqB,SAAS,GAAG;GAAC;GAAA,IACnDC,WAAQ;IAAA,OAAE3B,EAAMF,WAAW,KAAK;GAAC;GAAA,aACvB;GAAkB,IAAA,qBAAA;IAAA,OACVF,EAAIiB,YAAY;GAAC;GAAA,IAAA,kBAAA;IAAA,OACpBb,EAAMF,WAAW,KAAKU,KAAAA;GAAS;GAAA,IAAA,kBAAA;IAAA,OAC/BZ,EAAIe,SAAS,IAAI,KAAKH,KAAAA;GAAS;GAAA,IAC9CuB,gBAAa;IAAA,OAAEtB,EAASsB;GAAa;GAAA,IACrCC,gBAAa;IAAA,OAAEvB,EAASuB;GAAa;GAAA,IACrCC,cAAW;IAAA,OAAExB,EAASwB;GAAW;GAAA,IACjCC,YAAS;IAAA,OAAEzB,EAASyB;GAAS;GAAA,IAAAqC,QAAA;IAAA,OACtBnF,EAAKG,GAAeS,EAAMmC,KAAK;GAAC;GAAA,IACvCC,YAAS;IAAA,OAAEpC,EAAMoC;GAAS;EAAA,CAAA,GAAA,IAAA,EAAA,GAAAC,EAAAvB,GAAAwB,EAEzBvD,GAAI;GAAA,IAACwD,OAAI;IAAA,OAAEvC,EAAMD;GAAU;GAAA,IAAAyC,WAAA;IAAA,IAAAC,IAAA1B,EAAA;IACH,OADG2B,EAAAD,GACdnD,CAAW,GAAAmD;GAAA;EAAA,CAAA,GAAA,IAAA,GAAAJ,EAAAvB,SAExBd,EAAMwC,UAAQ,IAAA,GAAA1B;CAAA,EAAA,CAAA;AAGrB"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** 对齐 shadcn base 版 resizable handle 的类名(去掉 cn-* 主题 token) */
|
|
2
|
+
export declare const handleClasses = "relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90 touch-none data-[orientation=horizontal]:cursor-ew-resize data-[orientation=vertical]:cursor-ns-resize data-[disabled]:cursor-default";
|
|
3
|
+
export declare const gripClasses = "z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/components/resizable/ResizableHandle/ResizableHandle.styles.ts
|
|
2
|
+
var e = "relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90 touch-none data-[orientation=horizontal]:cursor-ew-resize data-[orientation=vertical]:cursor-ns-resize data-[disabled]:cursor-default", t = "z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border";
|
|
3
|
+
//#endregion
|
|
4
|
+
export { t as gripClasses, e as handleClasses };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=ResizableHandle.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResizableHandle.styles.js","names":["handleClasses","gripClasses"],"sources":["../../../../src/components/resizable/ResizableHandle/ResizableHandle.styles.ts"],"sourcesContent":["/** 对齐 shadcn base 版 resizable handle 的类名(去掉 cn-* 主题 token) */\nexport const handleClasses =\n \"relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90 touch-none data-[orientation=horizontal]:cursor-ew-resize data-[orientation=vertical]:cursor-ns-resize data-[disabled]:cursor-default\";\n\nexport const gripClasses = \"z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border\";\n"],"mappings":";AACA,IAAaA,IACX,8sBAEWC,IAAc"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ResizableHandle } from './ResizableHandle';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
interface Options {
|
|
2
|
+
disabled: () => boolean;
|
|
3
|
+
onDragging?: (dragging: boolean) => void;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Handle 的拖拽与键盘交互:
|
|
7
|
+
* - pointer capture 保证指针移出元素后仍能继续拖拽;
|
|
8
|
+
* - pointermove 用 rAF 合并,避免每个事件都写一次 store(布局抖动);
|
|
9
|
+
* - px -> % 用 group 主轴尺寸换算,横向在 RTL 下取反。
|
|
10
|
+
*/
|
|
11
|
+
export declare function useResizableHandle(options: Options): {
|
|
12
|
+
onPointerDown: (event: PointerEvent) => void;
|
|
13
|
+
onPointerMove: (event: PointerEvent) => void;
|
|
14
|
+
onPointerUp: (event: PointerEvent) => void;
|
|
15
|
+
onKeyDown: (event: KeyboardEvent) => void;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { useResizablePanelGroupContext as e } from "../resizable.context.js";
|
|
2
|
+
import { onCleanup as t } from "solid-js";
|
|
3
|
+
//#region src/components/resizable/ResizableHandle/useResizableHandle.ts
|
|
4
|
+
function n(n) {
|
|
5
|
+
let r = e("ResizableHandle"), i;
|
|
6
|
+
t(() => {
|
|
7
|
+
i?.frame != null && cancelAnimationFrame(i.frame), i = void 0;
|
|
8
|
+
});
|
|
9
|
+
let a = (e) => r.orientation() === "horizontal" ? e.clientX : e.clientY, o = () => r.orientation() === "horizontal" && r.isRtl() ? -1 : 1, s = () => {
|
|
10
|
+
i && (i.frame = null, i.pending !== null && r.setAdjacentSize(i.handle, i.pending));
|
|
11
|
+
};
|
|
12
|
+
return {
|
|
13
|
+
onPointerDown: (e) => {
|
|
14
|
+
if (n.disabled() || e.button !== 0) return;
|
|
15
|
+
let t = e.currentTarget, o = r.resolveAdjacent(t);
|
|
16
|
+
o && (e.preventDefault(), t.setPointerCapture(e.pointerId), i = {
|
|
17
|
+
pointerId: e.pointerId,
|
|
18
|
+
handle: t,
|
|
19
|
+
startCoordinate: a(e),
|
|
20
|
+
startPrevSize: o.prevSize,
|
|
21
|
+
frame: null,
|
|
22
|
+
pending: null
|
|
23
|
+
}, r.beginDrag(), n.onDragging?.(!0));
|
|
24
|
+
},
|
|
25
|
+
onPointerMove: (e) => {
|
|
26
|
+
if (!i || i.pointerId !== e.pointerId || !e.currentTarget.hasPointerCapture(e.pointerId)) return;
|
|
27
|
+
let t = r.groupSizePx() || 1, n = (a(e) - i.startCoordinate) * o();
|
|
28
|
+
i.pending = i.startPrevSize + n / t * 100, i.frame === null && (i.frame = requestAnimationFrame(s));
|
|
29
|
+
},
|
|
30
|
+
onPointerUp: (e) => {
|
|
31
|
+
if (!i || i.pointerId !== e.pointerId) return;
|
|
32
|
+
let t = e.currentTarget;
|
|
33
|
+
i.frame !== null && (cancelAnimationFrame(i.frame), i.frame = null, i.pending !== null && r.setAdjacentSize(i.handle, i.pending)), t.hasPointerCapture(e.pointerId) && t.releasePointerCapture(e.pointerId), i = void 0, r.endDrag(), n.onDragging?.(!1), r.commitLayout();
|
|
34
|
+
},
|
|
35
|
+
onKeyDown: (e) => {
|
|
36
|
+
if (n.disabled()) return;
|
|
37
|
+
let t = e.currentTarget, i = r.keyboardResizeBy() / (r.groupSizePx() || 1) * 100, a = r.orientation() === "horizontal" && r.isRtl(), o = !0;
|
|
38
|
+
switch (e.key) {
|
|
39
|
+
case "ArrowLeft":
|
|
40
|
+
r.nudgeAdjacent(t, a ? i : -i);
|
|
41
|
+
break;
|
|
42
|
+
case "ArrowRight":
|
|
43
|
+
r.nudgeAdjacent(t, a ? -i : i);
|
|
44
|
+
break;
|
|
45
|
+
case "ArrowUp":
|
|
46
|
+
r.nudgeAdjacent(t, -i);
|
|
47
|
+
break;
|
|
48
|
+
case "ArrowDown":
|
|
49
|
+
r.nudgeAdjacent(t, i);
|
|
50
|
+
break;
|
|
51
|
+
case "Home":
|
|
52
|
+
r.resolveAdjacent(t) && (r.setAdjacentSize(t, 0), r.commitLayout());
|
|
53
|
+
break;
|
|
54
|
+
case "End": {
|
|
55
|
+
let e = r.resolveAdjacent(t);
|
|
56
|
+
e && (r.setAdjacentSize(t, e.total), r.commitLayout());
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
case "Enter":
|
|
60
|
+
case " ":
|
|
61
|
+
r.toggleHandleCollapse(t);
|
|
62
|
+
break;
|
|
63
|
+
default: o = !1;
|
|
64
|
+
}
|
|
65
|
+
o && e.preventDefault();
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
export { n as useResizableHandle };
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=useResizableHandle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResizableHandle.js","names":["useResizableHandle","ctx","useResizablePanelGroupContext","drag","axisCoordinate","event","dragSign","flush","options","handle","adjacent","sizePx","deltaPx","step","rtl","handled"],"sources":["../../../../src/components/resizable/ResizableHandle/useResizableHandle.ts"],"sourcesContent":["import { onCleanup } from \"solid-js\";\nimport { useResizablePanelGroupContext } from \"../resizable.context\";\n\ninterface DragState {\n pointerId: number;\n handle: HTMLElement;\n startCoordinate: number;\n startPrevSize: number;\n frame: number | null;\n pending: number | null;\n}\n\ninterface Options {\n disabled: () => boolean;\n onDragging?: (dragging: boolean) => void;\n}\n\n/**\n * Handle 的拖拽与键盘交互:\n * - pointer capture 保证指针移出元素后仍能继续拖拽;\n * - pointermove 用 rAF 合并,避免每个事件都写一次 store(布局抖动);\n * - px -> % 用 group 主轴尺寸换算,横向在 RTL 下取反。\n */\nexport function useResizableHandle(options: Options) {\n const ctx = useResizablePanelGroupContext(\"ResizableHandle\");\n let drag: DragState | undefined;\n\n onCleanup(() => {\n if (drag?.frame != null) cancelAnimationFrame(drag.frame);\n drag = undefined;\n });\n\n const axisCoordinate = (event: PointerEvent) =>\n ctx.orientation() === \"horizontal\" ? event.clientX : event.clientY;\n\n const dragSign = () => {\n if (ctx.orientation() !== \"horizontal\") return 1;\n return ctx.isRtl() ? -1 : 1;\n };\n\n const flush = () => {\n if (!drag) return;\n drag.frame = null;\n if (drag.pending !== null) ctx.setAdjacentSize(drag.handle, drag.pending);\n };\n\n const onPointerDown = (event: PointerEvent) => {\n if (options.disabled() || event.button !== 0) return;\n const handle = event.currentTarget as HTMLElement;\n const adjacent = ctx.resolveAdjacent(handle);\n if (!adjacent) return;\n event.preventDefault();\n handle.setPointerCapture(event.pointerId);\n drag = {\n pointerId: event.pointerId,\n handle,\n startCoordinate: axisCoordinate(event),\n startPrevSize: adjacent.prevSize,\n frame: null,\n pending: null,\n };\n ctx.beginDrag();\n options.onDragging?.(true);\n };\n\n const onPointerMove = (event: PointerEvent) => {\n if (!drag || drag.pointerId !== event.pointerId) return;\n const handle = event.currentTarget as HTMLElement;\n if (!handle.hasPointerCapture(event.pointerId)) return;\n const sizePx = ctx.groupSizePx() || 1;\n const deltaPx = (axisCoordinate(event) - drag.startCoordinate) * dragSign();\n drag.pending = drag.startPrevSize + (deltaPx / sizePx) * 100;\n if (drag.frame === null) {\n drag.frame = requestAnimationFrame(flush);\n }\n };\n\n const endDrag = (event: PointerEvent) => {\n if (!drag || drag.pointerId !== event.pointerId) return;\n const handle = event.currentTarget as HTMLElement;\n if (drag.frame !== null) {\n cancelAnimationFrame(drag.frame);\n drag.frame = null;\n if (drag.pending !== null) ctx.setAdjacentSize(drag.handle, drag.pending);\n }\n if (handle.hasPointerCapture(event.pointerId)) {\n handle.releasePointerCapture(event.pointerId);\n }\n drag = undefined;\n ctx.endDrag();\n options.onDragging?.(false);\n ctx.commitLayout();\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (options.disabled()) return;\n const handle = event.currentTarget as HTMLElement;\n const step = (ctx.keyboardResizeBy() / (ctx.groupSizePx() || 1)) * 100;\n const rtl = ctx.orientation() === \"horizontal\" && ctx.isRtl();\n let handled = true;\n switch (event.key) {\n case \"ArrowLeft\":\n ctx.nudgeAdjacent(handle, rtl ? step : -step);\n break;\n case \"ArrowRight\":\n ctx.nudgeAdjacent(handle, rtl ? -step : step);\n break;\n case \"ArrowUp\":\n ctx.nudgeAdjacent(handle, -step);\n break;\n case \"ArrowDown\":\n ctx.nudgeAdjacent(handle, step);\n break;\n case \"Home\": {\n const adjacent = ctx.resolveAdjacent(handle);\n if (adjacent) {\n ctx.setAdjacentSize(handle, 0);\n ctx.commitLayout();\n }\n break;\n }\n case \"End\": {\n const adjacent = ctx.resolveAdjacent(handle);\n if (adjacent) {\n ctx.setAdjacentSize(handle, adjacent.total);\n ctx.commitLayout();\n }\n break;\n }\n case \"Enter\":\n case \" \":\n ctx.toggleHandleCollapse(handle);\n break;\n default:\n handled = false;\n }\n if (handled) event.preventDefault();\n };\n\n return { onPointerDown, onPointerMove, onPointerUp: endDrag, onKeyDown };\n}\n"],"mappings":";;;AAuBA,SAAgBA,EAAmB,GAAkB;CACnD,IAAMC,IAAMC,EAA8B,iBAAiB,GACvDC;CAEJ,QAAgB;EAEd,AADIA,GAAM,SAAS,QAAM,qBAAqBA,EAAK,KAAK,GACxD,IAAO,KAAA;CACT,CAAC;CAED,IAAMC,KAAkB,MACtBH,EAAI,YAAY,MAAM,eAAeI,EAAM,UAAUA,EAAM,SAEvDC,UACAL,EAAI,YAAY,MAAM,gBACnBA,EAAI,MAAM,IAAI,KAAK,GAGtBM,UAAc;EAClB,AAAKJ,MACL,EAAK,QAAQ,MACTA,EAAK,YAAY,QAAMF,EAAI,gBAAgBE,EAAK,QAAQA,EAAK,OAAO;CAC1E;CA+FA,OAAO;EAAE,gBA7Fc,MAAwB;GAC7C,IAAIK,EAAQ,SAAS,KAAKH,EAAM,WAAW,GAAG;GAC9C,IAAMI,IAASJ,EAAM,eACfK,IAAWT,EAAI,gBAAgBQ,CAAM;GAC3C,AAAKC,MACLL,EAAM,eAAe,GACrBI,EAAO,kBAAkBJ,EAAM,SAAS,GACxC,IAAO;IACL,WAAWA,EAAM;IACjB;IACA,iBAAiBD,EAAeC,CAAK;IACrC,eAAeK,EAAS;IACxB,OAAO;IACP,SAAS;GACX,GACAT,EAAI,UAAU,GACdO,EAAQ,aAAa,EAAI;EAC3B;EA4EwB,gBA1ED,MAAwB;GAG7C,IAFI,CAACL,KAAQA,EAAK,cAAcE,EAAM,aAElC,CADWA,EAAM,cACT,kBAAkBA,EAAM,SAAS,GAAG;GAChD,IAAMM,IAASV,EAAI,YAAY,KAAK,GAC9BW,KAAWR,EAAeC,CAAK,IAAIF,EAAK,mBAAmBG,EAAS;GAE1E,AADA,EAAK,UAAUH,EAAK,gBAAiBS,IAAUD,IAAU,KACrDR,EAAK,UAAU,SACjB,EAAK,QAAQ,sBAAsBI,CAAK;EAE5C;EAgEuC,cA9DtB,MAAwB;GACvC,IAAI,CAACJ,KAAQA,EAAK,cAAcE,EAAM,WAAW;GACjD,IAAMI,IAASJ,EAAM;GAYrB,AAXIF,EAAK,UAAU,SACjB,qBAAqBA,EAAK,KAAK,GAC/B,EAAK,QAAQ,MACTA,EAAK,YAAY,QAAMF,EAAI,gBAAgBE,EAAK,QAAQA,EAAK,OAAO,IAEtEM,EAAO,kBAAkBJ,EAAM,SAAS,KAC1CI,EAAO,sBAAsBJ,EAAM,SAAS,GAE9C,IAAO,KAAA,GACPJ,EAAI,QAAQ,GACZO,EAAQ,aAAa,EAAK,GAC1BP,EAAI,aAAa;EACnB;EA+C6D,YA7C1C,MAAyB;GAC1C,IAAIO,EAAQ,SAAS,GAAG;GACxB,IAAMC,IAASJ,EAAM,eACfQ,IAAQZ,EAAI,iBAAiB,KAAKA,EAAI,YAAY,KAAK,KAAM,KAC7Da,IAAMb,EAAI,YAAY,MAAM,gBAAgBA,EAAI,MAAM,GACxDc,IAAU;GACd,QAAQV,EAAM,KAAd;IACE,KAAK;KACH,EAAI,cAAcI,GAAQK,IAAMD,IAAO,CAACA,CAAI;KAC5C;IACF,KAAK;KACH,EAAI,cAAcJ,GAAQK,IAAM,CAACD,IAAOA,CAAI;KAC5C;IACF,KAAK;KACH,EAAI,cAAcJ,GAAQ,CAACI,CAAI;KAC/B;IACF,KAAK;KACH,EAAI,cAAcJ,GAAQI,CAAI;KAC9B;IACF,KAAK;KAEH,AADiBZ,EAAI,gBAAgBQ,CACjC,MACFR,EAAI,gBAAgBQ,GAAQ,CAAC,GAC7BR,EAAI,aAAa;KAEnB;IAEF,KAAK,OAAO;KACV,IAAMS,IAAWT,EAAI,gBAAgBQ,CAAM;KAC3C,AAAIC,MACFT,EAAI,gBAAgBQ,GAAQC,EAAS,KAAK,GAC1CT,EAAI,aAAa;KAEnB;IACF;IACA,KAAK;IACL,KAAK;KACH,EAAI,qBAAqBQ,CAAM;KAC/B;IACF,SACE,IAAU;GACd;GACA,AAAIM,KAASV,EAAM,eAAe;EACpC;CAEuE;AACzE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
|
+
import { useResizablePanelGroupContext as t } from "../resizable.context.js";
|
|
3
|
+
import { parseSize as n, roundPercent as r, toKebabCase as i } from "../resizable.utils.js";
|
|
4
|
+
import { insert as a, mergeProps as o, spread as s, template as c, use as l } from "solid-js/web";
|
|
5
|
+
import { createUniqueId as u, mergeProps as d, onCleanup as f, splitProps as p } from "solid-js";
|
|
6
|
+
//#region src/components/resizable/ResizablePanel/ResizablePanel.tsx
|
|
7
|
+
var m = /*#__PURE__*/ c("<div>");
|
|
8
|
+
function h(c) {
|
|
9
|
+
let h = t("ResizablePanel"), g = d({
|
|
10
|
+
minSize: 0,
|
|
11
|
+
maxSize: 100,
|
|
12
|
+
collapsible: !1,
|
|
13
|
+
collapsedSize: 0
|
|
14
|
+
}, c), [_, v] = p(g, [
|
|
15
|
+
"id",
|
|
16
|
+
"defaultSize",
|
|
17
|
+
"minSize",
|
|
18
|
+
"maxSize",
|
|
19
|
+
"collapsible",
|
|
20
|
+
"collapsedSize",
|
|
21
|
+
"onResize",
|
|
22
|
+
"onCollapse",
|
|
23
|
+
"onExpand",
|
|
24
|
+
"panelRef",
|
|
25
|
+
"class",
|
|
26
|
+
"classList",
|
|
27
|
+
"style",
|
|
28
|
+
"children"
|
|
29
|
+
]), y = _.id ?? u(), b = _.defaultSize === void 0 ? 1 : n(_.defaultSize, 1), x = () => h.sizes()[y] ?? b, S = () => {
|
|
30
|
+
let e = [
|
|
31
|
+
`flex-grow:${x()}`,
|
|
32
|
+
"flex-shrink:1",
|
|
33
|
+
"flex-basis:0%"
|
|
34
|
+
], t = _.style;
|
|
35
|
+
if (typeof t == "string") e.push(t);
|
|
36
|
+
else if (t && typeof t == "object") for (let [n, r] of Object.entries(t)) r != null && e.push(`${i(n)}:${r}`);
|
|
37
|
+
return e.join(";");
|
|
38
|
+
};
|
|
39
|
+
return (() => {
|
|
40
|
+
var t = m();
|
|
41
|
+
return l((e) => {
|
|
42
|
+
let t = {
|
|
43
|
+
id: y,
|
|
44
|
+
element: e,
|
|
45
|
+
minSize: () => n(_.minSize, 0),
|
|
46
|
+
maxSize: () => n(_.maxSize, 100),
|
|
47
|
+
collapsible: () => _.collapsible,
|
|
48
|
+
collapsedSize: () => n(_.collapsedSize, 0),
|
|
49
|
+
defaultSize: _.defaultSize === void 0 ? void 0 : n(_.defaultSize, 0),
|
|
50
|
+
onResize: (e) => _.onResize?.(e),
|
|
51
|
+
onCollapse: () => _.onCollapse?.(),
|
|
52
|
+
onExpand: () => _.onExpand?.()
|
|
53
|
+
}, r = h.registerPanel(t);
|
|
54
|
+
_.panelRef?.({
|
|
55
|
+
collapse: () => h.collapsePanel(y),
|
|
56
|
+
expand: () => h.expandPanel(y),
|
|
57
|
+
resize: (e) => h.setPanelSize(y, e),
|
|
58
|
+
getSize: () => h.getPanelSize(y),
|
|
59
|
+
isCollapsed: () => h.isPanelCollapsed(y),
|
|
60
|
+
isExpanded: () => !h.isPanelCollapsed(y)
|
|
61
|
+
}), f(() => {
|
|
62
|
+
r(), _.panelRef?.(void 0);
|
|
63
|
+
});
|
|
64
|
+
}, t), s(t, o(v, {
|
|
65
|
+
get id() {
|
|
66
|
+
return _.id;
|
|
67
|
+
},
|
|
68
|
+
"data-slot": "resizable-panel",
|
|
69
|
+
"data-panel-id": y,
|
|
70
|
+
get "data-panel-size"() {
|
|
71
|
+
return r(x());
|
|
72
|
+
},
|
|
73
|
+
get "data-panel-collapsed"() {
|
|
74
|
+
return h.isPanelCollapsed(y) ? "" : void 0;
|
|
75
|
+
},
|
|
76
|
+
get style() {
|
|
77
|
+
return S();
|
|
78
|
+
},
|
|
79
|
+
get class() {
|
|
80
|
+
return e("relative min-h-0 min-w-0 overflow-hidden", _.class);
|
|
81
|
+
},
|
|
82
|
+
get classList() {
|
|
83
|
+
return _.classList;
|
|
84
|
+
}
|
|
85
|
+
}), !1, !0), a(t, () => _.children), t;
|
|
86
|
+
})();
|
|
87
|
+
}
|
|
88
|
+
//#endregion
|
|
89
|
+
export { h as ResizablePanel };
|
|
90
|
+
|
|
91
|
+
//# sourceMappingURL=ResizablePanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResizablePanel.js","names":["createUniqueId","mergeProps","onCleanup","splitProps","clsx","useResizablePanelGroupContext","parseSize","roundPercent","toKebabCase","ResizablePanelMeta","ResizablePanelProps","ResizablePanel","props","ctx","merged","minSize","maxSize","collapsible","collapsedSize","const","local","rest","id","fallbackSize","defaultSize","undefined","size","sizes","styleText","parts","extra","style","push","key","value","Object","entries","join","_el$","_tmpl$","_$use","el","meta","element","onResize","onCollapse","onExpand","unregister","registerPanel","panelRef","collapse","collapsePanel","expand","expandPanel","resize","setPanelSize","getSize","getPanelSize","isCollapsed","isPanelCollapsed","isExpanded","_$spread","_$mergeProps","data-panel-size","data-panel-collapsed","class","classList","_$insert","children","mergeProps","_$mergeProps","mergeProps$1","_tmpl$","ResizablePanel","ctx","useResizablePanelGroupContext","merged","props","local","rest","splitProps","id","createUniqueId","fallbackSize","parseSize","size","styleText","parts","extra","key","value","toKebabCase","_el$","use","meta","el","unregister","onCleanup","spread","mergeProps","roundPercent","\"class\"","clsx","insert"],"sources":["../../../../src/components/resizable/ResizablePanel/ResizablePanel.tsx"],"sourcesContent":["import { createUniqueId, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { useResizablePanelGroupContext } from \"../resizable.context\";\nimport { parseSize, roundPercent, toKebabCase } from \"../resizable.utils\";\nimport type {\n ResizablePanelMeta,\n ResizablePanelProps,\n} from \"../resizable.types\";\n\n/**\n * 一个可调整的面板。尺寸以百分比权重存在引擎里,这里只把它映射成 `flex-grow`,\n * 所以拖拽只会改两个面板的 style,内容不会重渲染。\n */\nexport function ResizablePanel(props: ResizablePanelProps) {\n const ctx = useResizablePanelGroupContext(\"ResizablePanel\");\n const merged = mergeProps(\n { minSize: 0, maxSize: 100, collapsible: false, collapsedSize: 0 } as const,\n props,\n );\n const [local, rest] = splitProps(merged, [\n \"id\",\n \"defaultSize\",\n \"minSize\",\n \"maxSize\",\n \"collapsible\",\n \"collapsedSize\",\n \"onResize\",\n \"onCollapse\",\n \"onExpand\",\n \"panelRef\",\n \"class\",\n \"classList\",\n \"style\",\n \"children\",\n ]);\n\n const id = local.id ?? createUniqueId();\n // 引擎初始化前的 fallback(例如 SSR 首屏):按 defaultSize 比例,未指定则等分。\n // 初始化后 store 里就是归一化到 100 的百分比。\n const fallbackSize =\n local.defaultSize === undefined ? 1 : parseSize(local.defaultSize, 1);\n const size = () => ctx.sizes()[id] ?? fallbackSize;\n\n // 用字符串形式声明 style:模板字面量会被 Solid 包进 effect,尺寸变化时能可靠更新;\n // 对象形式里的 getter 不保证被编译器识别为动态。\n const styleText = () => {\n const parts = [`flex-grow:${size()}`, \"flex-shrink:1\", \"flex-basis:0%\"];\n const extra = local.style;\n if (typeof extra === \"string\") parts.push(extra);\n else if (extra && typeof extra === \"object\") {\n for (const [key, value] of Object.entries(extra)) {\n if (value === null || value === undefined) continue;\n parts.push(`${toKebabCase(key)}:${value}`);\n }\n }\n return parts.join(\";\");\n };\n\n return (\n <div\n {...rest}\n id={local.id}\n ref={(el) => {\n const meta: ResizablePanelMeta = {\n id,\n element: el,\n minSize: () => parseSize(local.minSize, 0),\n maxSize: () => parseSize(local.maxSize, 100),\n collapsible: () => local.collapsible,\n collapsedSize: () => parseSize(local.collapsedSize, 0),\n defaultSize:\n local.defaultSize === undefined\n ? undefined\n : parseSize(local.defaultSize, 0),\n onResize: (value) => local.onResize?.(value),\n onCollapse: () => local.onCollapse?.(),\n onExpand: () => local.onExpand?.(),\n };\n const unregister = ctx.registerPanel(meta);\n local.panelRef?.({\n collapse: () => ctx.collapsePanel(id),\n expand: () => ctx.expandPanel(id),\n resize: (value) => ctx.setPanelSize(id, value),\n getSize: () => ctx.getPanelSize(id),\n isCollapsed: () => ctx.isPanelCollapsed(id),\n isExpanded: () => !ctx.isPanelCollapsed(id),\n });\n onCleanup(() => {\n unregister();\n local.panelRef?.(undefined);\n });\n }}\n data-slot=\"resizable-panel\"\n data-panel-id={id}\n data-panel-size={roundPercent(size())}\n data-panel-collapsed={ctx.isPanelCollapsed(id) ? \"\" : undefined}\n style={styleText()}\n class={clsx(\"relative min-h-0 min-w-0 overflow-hidden\", local.class)}\n classList={local.classList}\n >\n {local.children}\n </div>\n );\n}\n"],"mappings":";;;;;;;AAaA,SAAgBW,EAAeC,GAA4B;CACzD,IAAMC,IAAMR,EAA8B,gBAAgB,GACpDS,IAASb,EACb;EAAEc,SAAS;EAAGC,SAAS;EAAKC,aAAa;EAAOC,eAAe;CAAE,GACjEN,CACF,GACM,CAACQ,GAAOC,KAAQlB,EAAWW,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEKQ,IAAKF,EAAME,MAAMtB,EAAe,GAGhCuB,IACJH,EAAMI,gBAAgBC,KAAAA,IAAY,IAAInB,EAAUc,EAAMI,aAAa,CAAC,GAChEE,UAAab,EAAIc,MAAM,CAAC,CAACL,MAAOC,GAIhCK,UAAkB;EACtB,IAAMC,IAAQ;GAAC,aAAaH,EAAK;GAAK;GAAiB;EAAe,GAChEI,IAAQV,EAAMW;EACpB,IAAI,OAAOD,KAAU,UAAUD,EAAMG,KAAKF,CAAK;OAC1C,IAAIA,KAAS,OAAOA,KAAU,UACjC,KAAK,IAAM,CAACG,GAAKC,MAAUC,OAAOC,QAAQN,CAAK,GAC7C,AAAII,KAAU,QACdL,EAAMG,KAAK,GAAGxB,EAAYyB,CAAG,EAAC,GAAIC,GAAO;EAG7C,OAAOL,EAAMQ,KAAK,GAAG;CACvB;CAEA,cAAA;EAAA,IAAAC,IAAAC,EAAA;EA0CmB,OA1CnBC,GAIUC,MAAO;GACX,IAAMC,IAA2B;IAC/BpB;IACAqB,SAASF;IACT1B,eAAeT,EAAUc,EAAML,SAAS,CAAC;IACzCC,eAAeV,EAAUc,EAAMJ,SAAS,GAAG;IAC3CC,mBAAmBG,EAAMH;IACzBC,qBAAqBZ,EAAUc,EAAMF,eAAe,CAAC;IACrDM,aACEJ,EAAMI,gBAAgBC,KAAAA,IAClBA,KAAAA,IACAnB,EAAUc,EAAMI,aAAa,CAAC;IACpCoB,WAAWV,MAAUd,EAAMwB,WAAWV,CAAK;IAC3CW,kBAAkBzB,EAAMyB,aAAa;IACrCC,gBAAgB1B,EAAM0B,WAAW;GACnC,GACMC,IAAalC,EAAImC,cAAcN,CAAI;GASzCxC,AARAkB,EAAM6B,WAAW;IACfC,gBAAgBrC,EAAIsC,cAAc7B,CAAE;IACpC8B,cAAcvC,EAAIwC,YAAY/B,CAAE;IAChCgC,SAASpB,MAAUrB,EAAI0C,aAAajC,GAAIY,CAAK;IAC7CsB,eAAe3C,EAAI4C,aAAanC,CAAE;IAClCoC,mBAAmB7C,EAAI8C,iBAAiBrC,CAAE;IAC1CsC,kBAAkB,CAAC/C,EAAI8C,iBAAiBrC,CAAE;GAC5C,CAAC,GACDpB,QAAgB;IAEdkB,AADA2B,EAAW,GACX3B,EAAM6B,WAAWxB,KAAAA,CAAS;GAC5B,CAAC;EACH,GAACa,CAAA,GAAAuB,EAAAvB,GAAAwB,EA/BGzC,GAAI;GAAA,IACRC,KAAE;IAAA,OAAEF,EAAME;GAAE;GAAA,aA+BF;GAAiB,iBACZA;GAAE,IAAA,oBAAA;IAAA,OACAf,EAAamB,EAAK,CAAC;GAAC;GAAA,IAAA,yBAAA;IAAA,OACfb,EAAI8C,iBAAiBrC,CAAE,IAAI,KAAKG,KAAAA;GAAS;GAAA,IAC/DM,QAAK;IAAA,OAAEH,EAAU;GAAC;GAAA,IAAAyE,QAAA;IAAA,OACXjG,EAAK,4CAA4CgB,EAAM6C,KAAK;GAAC;GAAA,IACpEC,YAAS;IAAA,OAAE9C,EAAM8C;GAAS;EAAA,CAAA,GAAA,IAAA,EAAA,GAAAC,EAAA7B,SAEzBlB,EAAMgD,QAAQ,GAAA9B;CAAA,EAAA,CAAA;AAGrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ResizablePanel } from './ResizablePanel';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ResizablePanelGroupProps } from '../resizable.types';
|
|
2
|
+
/**
|
|
3
|
+
* 可调整布局的根:声明排列方向与初始/持久化布局,向下提供 context。
|
|
4
|
+
* 子节点按 `Panel / Handle / Panel ...` 交替组合。
|
|
5
|
+
*/
|
|
6
|
+
export declare function ResizablePanelGroup(props: ResizablePanelGroupProps): import('solid-js').JSX.Element;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
|
+
import { ResizablePanelGroupContext as t } from "../resizable.context.js";
|
|
3
|
+
import { useResizablePanelGroup as n } from "../useResizablePanelGroup.js";
|
|
4
|
+
import { createComponent as r, insert as i, mergeProps as a, spread as o, template as s, use as c } from "solid-js/web";
|
|
5
|
+
import { createEffect as l, mergeProps as u, onCleanup as d, splitProps as f } from "solid-js";
|
|
6
|
+
//#region src/components/resizable/ResizablePanelGroup/ResizablePanelGroup.tsx
|
|
7
|
+
var p = /*#__PURE__*/ s("<div>");
|
|
8
|
+
function m(s) {
|
|
9
|
+
let m = u({
|
|
10
|
+
orientation: "horizontal",
|
|
11
|
+
keyboardResizeBy: 10
|
|
12
|
+
}, s), [h, g] = f(m, [
|
|
13
|
+
"class",
|
|
14
|
+
"classList",
|
|
15
|
+
"orientation",
|
|
16
|
+
"defaultLayout",
|
|
17
|
+
"onLayoutChange",
|
|
18
|
+
"autoSaveId",
|
|
19
|
+
"storage",
|
|
20
|
+
"keyboardResizeBy",
|
|
21
|
+
"children"
|
|
22
|
+
]), _ = n({
|
|
23
|
+
orientation: () => h.orientation,
|
|
24
|
+
defaultLayout: () => h.defaultLayout,
|
|
25
|
+
onLayoutChange: (e) => h.onLayoutChange?.(e),
|
|
26
|
+
autoSaveId: () => h.autoSaveId,
|
|
27
|
+
storage: () => h.storage,
|
|
28
|
+
keyboardResizeBy: () => h.keyboardResizeBy
|
|
29
|
+
});
|
|
30
|
+
return l(() => {
|
|
31
|
+
if (!_.dragging()) return;
|
|
32
|
+
let e = h.orientation === "horizontal" ? "ew-resize" : "ns-resize", t = document.createElement("style");
|
|
33
|
+
t.setAttribute("data-resizable-drag", ""), t.textContent = `*, *:hover { cursor: ${e} !important; }`, document.head.appendChild(t);
|
|
34
|
+
let n = document.body.style.userSelect;
|
|
35
|
+
document.body.style.userSelect = "none", d(() => {
|
|
36
|
+
t.remove(), document.body.style.userSelect = n;
|
|
37
|
+
});
|
|
38
|
+
}), r(t.Provider, {
|
|
39
|
+
value: _,
|
|
40
|
+
get children() {
|
|
41
|
+
var t = p();
|
|
42
|
+
return c((e) => {
|
|
43
|
+
_.setGroupElement(e), d(() => _.setGroupElement(void 0));
|
|
44
|
+
}, t), o(t, a(g, {
|
|
45
|
+
"data-slot": "resizable-panel-group",
|
|
46
|
+
role: "group",
|
|
47
|
+
get "data-orientation"() {
|
|
48
|
+
return h.orientation;
|
|
49
|
+
},
|
|
50
|
+
get "data-dragging"() {
|
|
51
|
+
return _.dragging() ? "" : void 0;
|
|
52
|
+
},
|
|
53
|
+
get class() {
|
|
54
|
+
return e("flex h-full w-full data-[orientation=vertical]:flex-col", h.class);
|
|
55
|
+
},
|
|
56
|
+
get classList() {
|
|
57
|
+
return h.classList;
|
|
58
|
+
}
|
|
59
|
+
}), !1, !0), i(t, () => h.children), t;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//#endregion
|
|
64
|
+
export { m as ResizablePanelGroup };
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=ResizablePanelGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResizablePanelGroup.js","names":["createEffect","mergeProps","onCleanup","splitProps","clsx","ResizablePanelGroupContext","useResizablePanelGroup","ResizablePanelGroupProps","ResizablePanelGroup","props","merged","orientation","const","keyboardResizeBy","local","rest","ctx","defaultLayout","onLayoutChange","next","autoSaveId","storage","dragging","cursor","sheet","document","createElement","setAttribute","textContent","head","appendChild","previousUserSelect","body","style","userSelect","remove","_$createComponent","Provider","value","children","_el$","_tmpl$","_$use","el","setGroupElement","undefined","_$spread","_$mergeProps","data-orientation","data-dragging","class","classList","_$insert","mergeProps","_$createComponent","_$mergeProps","mergeProps$1","_tmpl$","ResizablePanelGroup","merged","props","local","rest","splitProps","ctx","useResizablePanelGroup","next","createEffect","cursor","sheet","previousUserSelect","onCleanup","createComponent","ResizablePanelGroupContext","_el$","use","el","spread","mergeProps","\"role\"","\"class\"","clsx","insert"],"sources":["../../../../src/components/resizable/ResizablePanelGroup/ResizablePanelGroup.tsx"],"sourcesContent":["import { createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { ResizablePanelGroupContext } from \"../resizable.context\";\nimport { useResizablePanelGroup } from \"../useResizablePanelGroup\";\nimport type { ResizablePanelGroupProps } from \"../resizable.types\";\n\n/**\n * 可调整布局的根:声明排列方向与初始/持久化布局,向下提供 context。\n * 子节点按 `Panel / Handle / Panel ...` 交替组合。\n */\nexport function ResizablePanelGroup(props: ResizablePanelGroupProps) {\n const merged = mergeProps(\n { orientation: \"horizontal\" as const, keyboardResizeBy: 10 },\n props,\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"classList\",\n \"orientation\",\n \"defaultLayout\",\n \"onLayoutChange\",\n \"autoSaveId\",\n \"storage\",\n \"keyboardResizeBy\",\n \"children\",\n ]);\n\n const ctx = useResizablePanelGroup({\n orientation: () => local.orientation,\n defaultLayout: () => local.defaultLayout,\n onLayoutChange: (next) => local.onLayoutChange?.(next),\n autoSaveId: () => local.autoSaveId,\n storage: () => local.storage,\n keyboardResizeBy: () => local.keyboardResizeBy,\n });\n\n // 拖拽期间强制全局双箭头光标:与 react-resizable-panels 一样注入一条\n // `*, *:hover { cursor: … !important }`,这样指针经过面板/文字/链接时也不会变回默认光标;\n // 顺带禁用文本选择,避免拖拽中选中内容。\n createEffect(() => {\n if (!ctx.dragging()) return;\n const cursor =\n local.orientation === \"horizontal\" ? \"ew-resize\" : \"ns-resize\";\n const sheet = document.createElement(\"style\");\n sheet.setAttribute(\"data-resizable-drag\", \"\");\n sheet.textContent = `*, *:hover { cursor: ${cursor} !important; }`;\n document.head.appendChild(sheet);\n const previousUserSelect = document.body.style.userSelect;\n document.body.style.userSelect = \"none\";\n onCleanup(() => {\n sheet.remove();\n document.body.style.userSelect = previousUserSelect;\n });\n });\n\n return (\n <ResizablePanelGroupContext.Provider value={ctx}>\n <div\n {...rest}\n ref={(el) => {\n ctx.setGroupElement(el);\n onCleanup(() => ctx.setGroupElement(undefined));\n }}\n data-slot=\"resizable-panel-group\"\n role=\"group\"\n data-orientation={local.orientation}\n data-dragging={ctx.dragging() ? \"\" : undefined}\n class={clsx(\n \"flex h-full w-full data-[orientation=vertical]:flex-col\",\n local.class,\n )}\n classList={local.classList}\n >\n {local.children}\n </div>\n </ResizablePanelGroupContext.Provider>\n );\n}\n"],"mappings":";;;;;;;AAUA,SAAgBQ,EAAoBC,GAAiC;CACnE,IAAMC,IAAST,EACb;EAAEU,aAAa;EAAuBE,kBAAkB;CAAG,GAC3DJ,CACF,GACM,CAACK,GAAOC,KAAQZ,EAAWO,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEKM,IAAMV,EAAuB;EACjCK,mBAAmBG,EAAMH;EACzBM,qBAAqBH,EAAMG;EAC3BC,iBAAiBC,MAASL,EAAMI,iBAAiBC,CAAI;EACrDC,kBAAkBN,EAAMM;EACxBC,eAAeP,EAAMO;EACrBR,wBAAwBC,EAAMD;CAChC,CAAC;CAqBD,OAhBAb,QAAmB;EACjB,IAAI,CAACgB,EAAIM,SAAS,GAAG;EACrB,IAAMC,IACJT,EAAMH,gBAAgB,eAAe,cAAc,aAC/Ca,IAAQC,SAASC,cAAc,OAAO;EAG5CD,AAFAD,EAAMG,aAAa,uBAAuB,EAAE,GAC5CH,EAAMI,cAAc,wBAAwBL,EAAM,iBAClDE,SAASI,KAAKC,YAAYN,CAAK;EAC/B,IAAMO,IAAqBN,SAASO,KAAKC,MAAMC;EAE/ChC,AADAuB,SAASO,KAAKC,MAAMC,aAAa,QACjChC,QAAgB;GAEduB,AADAD,EAAMW,OAAO,GACbV,SAASO,KAAKC,MAAMC,aAAaH;EACnC,CAAC;CACH,CAAC,GAEDK,EACG/B,EAA2BgC,UAAQ;EAACC,OAAOtB;EAAG,IAAAuB,WAAA;GAAA,IAAAC,IAAAC,EAAA;GAiB5B,OAjB4BC,GAGrCC,MAAO;IAEXzC,AADAc,EAAI4B,gBAAgBD,CAAE,GACtBzC,QAAgBc,EAAI4B,gBAAgBC,KAAAA,CAAS,CAAC;GAChD,GAACL,CAAA,GAAAM,EAAAN,GAAAO,EAJGhC,GAAI;IAAA,aAKE;IAAuBgE,MAC5B;IAAO,IAAA,qBAAA;KAAA,OACMjE,EAAMH;IAAW;IAAA,IAAA,kBAAA;KAAA,OACpBK,EAAIM,SAAS,IAAI,KAAKuB,KAAAA;IAAS;IAAA,IAAAmC,QAAA;KAAA,OACvC5E,EACL,2DACAU,EAAMoC,KACR;IAAC;IAAA,IACDC,YAAS;KAAA,OAAErC,EAAMqC;IAAS;GAAA,CAAA,GAAA,IAAA,EAAA,GAAAC,EAAAZ,SAEzB1B,EAAMyB,QAAQ,GAAAC;EAAA;CAAA,CAAA;AAIvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ResizablePanelGroup } from './ResizablePanelGroup';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ResizablePanelGroup } from './ResizablePanelGroup';
|
|
2
|
+
export { ResizablePanel } from './ResizablePanel';
|
|
3
|
+
export { ResizableHandle } from './ResizableHandle';
|
|
4
|
+
export type { ResizableOrientation, ResizableSize, ResizableLayout, ResizablePanelHandle, ResizablePanelGroupProps, ResizablePanelProps, ResizableHandleProps, } from './resizable.types';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ResizablePanelGroup as e } from "./ResizablePanelGroup/ResizablePanelGroup.js";
|
|
2
|
+
import { ResizablePanel as t } from "./ResizablePanel/ResizablePanel.js";
|
|
3
|
+
import { ResizableHandle as n } from "./ResizableHandle/ResizableHandle.js";
|
|
4
|
+
export { n as ResizableHandle, t as ResizablePanel, e as ResizablePanelGroup };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Accessor } from 'solid-js';
|
|
2
|
+
import { ResizableOrientation, ResizablePanelMeta } from './resizable.types';
|
|
3
|
+
interface AdjacentPanels {
|
|
4
|
+
prev: ResizablePanelMeta;
|
|
5
|
+
next: ResizablePanelMeta;
|
|
6
|
+
prevSize: number;
|
|
7
|
+
total: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ResizablePanelGroupContextValue {
|
|
10
|
+
orientation: Accessor<ResizableOrientation>;
|
|
11
|
+
/** id -> 百分比;store 代理,按 id 读取可精确追踪 */
|
|
12
|
+
sizes: () => Record<string, number>;
|
|
13
|
+
groupElement: Accessor<HTMLElement | undefined>;
|
|
14
|
+
setGroupElement: (el: HTMLElement | undefined) => void;
|
|
15
|
+
dragging: Accessor<boolean>;
|
|
16
|
+
keyboardResizeBy: Accessor<number>;
|
|
17
|
+
registerPanel: (meta: ResizablePanelMeta) => () => void;
|
|
18
|
+
/** 拖拽/键盘:根据 handle 的相邻兄弟解析出前后两个 panel */
|
|
19
|
+
resolveAdjacent: (handleEl: HTMLElement) => AdjacentPanels | undefined;
|
|
20
|
+
setAdjacentSize: (handleEl: HTMLElement, targetPrevSize: number) => void;
|
|
21
|
+
nudgeAdjacent: (handleEl: HTMLElement, deltaPercent: number) => void;
|
|
22
|
+
toggleHandleCollapse: (handleEl: HTMLElement) => void;
|
|
23
|
+
/** 沿主轴的可拖拽长度(px),用于 px -> % 换算 */
|
|
24
|
+
groupSizePx: () => number;
|
|
25
|
+
isRtl: () => boolean;
|
|
26
|
+
beginDrag: () => void;
|
|
27
|
+
endDrag: () => void;
|
|
28
|
+
commitLayout: () => void;
|
|
29
|
+
/** 命令式 panel 操作 */
|
|
30
|
+
setPanelSize: (id: string, size: number) => void;
|
|
31
|
+
collapsePanel: (id: string) => boolean;
|
|
32
|
+
expandPanel: (id: string) => boolean;
|
|
33
|
+
isPanelCollapsed: (id: string) => boolean;
|
|
34
|
+
getPanelSize: (id: string) => number;
|
|
35
|
+
}
|
|
36
|
+
export declare const ResizablePanelGroupContext: import('solid-js').Context<ResizablePanelGroupContextValue | undefined>;
|
|
37
|
+
export declare function useResizablePanelGroupContext(component: string): ResizablePanelGroupContextValue;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createContext as e, useContext as t } from "solid-js";
|
|
2
|
+
//#region src/components/resizable/resizable.context.ts
|
|
3
|
+
var n = e();
|
|
4
|
+
function r(e) {
|
|
5
|
+
let r = t(n);
|
|
6
|
+
if (!r) throw Error(`<${e}> 必须渲染在 <ResizablePanelGroup> 内部`);
|
|
7
|
+
return r;
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { n as ResizablePanelGroupContext, r as useResizablePanelGroupContext };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=resizable.context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizable.context.js","names":["ResizablePanelGroupContext","createContext","useResizablePanelGroupContext","ctx","useContext","component"],"sources":["../../../src/components/resizable/resizable.context.ts"],"sourcesContent":["import { createContext, useContext, type Accessor } from \"solid-js\";\nimport type {\n ResizableOrientation,\n ResizablePanelMeta,\n} from \"./resizable.types\";\n\ninterface AdjacentPanels {\n prev: ResizablePanelMeta;\n next: ResizablePanelMeta;\n prevSize: number;\n total: number;\n}\n\nexport interface ResizablePanelGroupContextValue {\n orientation: Accessor<ResizableOrientation>;\n /** id -> 百分比;store 代理,按 id 读取可精确追踪 */\n sizes: () => Record<string, number>;\n groupElement: Accessor<HTMLElement | undefined>;\n setGroupElement: (el: HTMLElement | undefined) => void;\n dragging: Accessor<boolean>;\n keyboardResizeBy: Accessor<number>;\n registerPanel: (meta: ResizablePanelMeta) => () => void;\n\n /** 拖拽/键盘:根据 handle 的相邻兄弟解析出前后两个 panel */\n resolveAdjacent: (handleEl: HTMLElement) => AdjacentPanels | undefined;\n setAdjacentSize: (handleEl: HTMLElement, targetPrevSize: number) => void;\n nudgeAdjacent: (handleEl: HTMLElement, deltaPercent: number) => void;\n toggleHandleCollapse: (handleEl: HTMLElement) => void;\n /** 沿主轴的可拖拽长度(px),用于 px -> % 换算 */\n groupSizePx: () => number;\n isRtl: () => boolean;\n beginDrag: () => void;\n endDrag: () => void;\n commitLayout: () => void;\n\n /** 命令式 panel 操作 */\n setPanelSize: (id: string, size: number) => void;\n collapsePanel: (id: string) => boolean;\n expandPanel: (id: string) => boolean;\n isPanelCollapsed: (id: string) => boolean;\n getPanelSize: (id: string) => number;\n}\n\nexport const ResizablePanelGroupContext =\n createContext<ResizablePanelGroupContextValue>();\n\nexport function useResizablePanelGroupContext(\n component: string,\n): ResizablePanelGroupContextValue {\n const ctx = useContext(ResizablePanelGroupContext);\n if (!ctx) {\n throw new Error(`<${component}> 必须渲染在 <ResizablePanelGroup> 内部`);\n }\n return ctx;\n}\n"],"mappings":";;AA2CA,IAAaA,IACXC,EAA+C;AAEjD,SAAgBC,EACd,GACiC;CACjC,IAAMC,IAAMC,EAAWJ,CAA0B;CACjD,IAAI,CAACG,GACH,MAAU,MAAM,IAAIE,EAAU,iCAAiC;CAEjE,OAAOF;AACT"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Accessor } from 'solid-js';
|
|
2
|
+
import { BaseProps, PolymorphicProps } from '../../types';
|
|
3
|
+
export type ResizableOrientation = "horizontal" | "vertical";
|
|
4
|
+
/** 尺寸:number 视为百分比;字符串支持 "25%" 或 "25"(仅百分比,不支持 px) */
|
|
5
|
+
export type ResizableSize = number | `${number}%` | `${number}`;
|
|
6
|
+
/** 布局:id -> 百分比(0-100),对齐 react-resizable-panels 的 Layout */
|
|
7
|
+
export type ResizableLayout = Record<string, number>;
|
|
8
|
+
export interface ResizablePanelGroupProps extends PolymorphicProps<"div", BaseProps & {
|
|
9
|
+
/** 排列方向,默认 "horizontal" */
|
|
10
|
+
orientation?: ResizableOrientation;
|
|
11
|
+
/** 初始布局(按 panel id),仅在首次挂载时使用 */
|
|
12
|
+
defaultLayout?: ResizableLayout;
|
|
13
|
+
/** 布局变化回调(拖拽、键盘、命令都会触发) */
|
|
14
|
+
onLayoutChange?: (layout: ResizableLayout) => void;
|
|
15
|
+
/** 自动持久化到 storage 的 key */
|
|
16
|
+
autoSaveId?: string;
|
|
17
|
+
/** 持久化介质,默认 localStorage(不可用时关闭持久化) */
|
|
18
|
+
storage?: Storage;
|
|
19
|
+
/** 键盘方向键一次移动的像素,默认 10 */
|
|
20
|
+
keyboardResizeBy?: number;
|
|
21
|
+
}, false> {
|
|
22
|
+
}
|
|
23
|
+
export interface ResizablePanelHandle {
|
|
24
|
+
/** 折叠;不可折叠或已折叠时返回 false */
|
|
25
|
+
collapse: () => boolean;
|
|
26
|
+
/** 展开;不可折叠或未折叠时返回 false */
|
|
27
|
+
expand: () => boolean;
|
|
28
|
+
/** 直接设置该 panel 的百分比尺寸 */
|
|
29
|
+
resize: (size: number) => void;
|
|
30
|
+
getSize: () => number;
|
|
31
|
+
isCollapsed: () => boolean;
|
|
32
|
+
isExpanded: () => boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface ResizablePanelProps extends PolymorphicProps<"div", BaseProps & {
|
|
35
|
+
/** 布局持久化/onLayoutChange 里的键;缺省用自动 id */
|
|
36
|
+
id?: string;
|
|
37
|
+
/** 初始尺寸,默认均分剩余空间 */
|
|
38
|
+
defaultSize?: ResizableSize;
|
|
39
|
+
/** 最小尺寸,默认 0 */
|
|
40
|
+
minSize?: ResizableSize;
|
|
41
|
+
/** 最大尺寸,默认 100 */
|
|
42
|
+
maxSize?: ResizableSize;
|
|
43
|
+
/** 是否可在拖拽到 minSize 以下时折叠 */
|
|
44
|
+
collapsible?: boolean;
|
|
45
|
+
/** 折叠后的尺寸,默认 0 */
|
|
46
|
+
collapsedSize?: ResizableSize;
|
|
47
|
+
onResize?: (size: number) => void;
|
|
48
|
+
onCollapse?: () => void;
|
|
49
|
+
onExpand?: () => void;
|
|
50
|
+
/** 暴露命令式句柄 */
|
|
51
|
+
panelRef?: (handle: ResizablePanelHandle | undefined) => void;
|
|
52
|
+
}, false> {
|
|
53
|
+
}
|
|
54
|
+
export interface ResizableHandleProps extends PolymorphicProps<"div", BaseProps & {
|
|
55
|
+
id?: string;
|
|
56
|
+
/** 禁用拖拽与键盘调整 */
|
|
57
|
+
disabled?: boolean;
|
|
58
|
+
/** 显示可见的抓手 */
|
|
59
|
+
withHandle?: boolean;
|
|
60
|
+
/** 拖拽开始/结束 */
|
|
61
|
+
onDragging?: (dragging: boolean) => void;
|
|
62
|
+
}, false> {
|
|
63
|
+
}
|
|
64
|
+
/** 引擎内部使用的 panel 元数据(constraints 用 accessor 保持响应式) */
|
|
65
|
+
export interface ResizablePanelMeta {
|
|
66
|
+
id: string;
|
|
67
|
+
element: HTMLElement;
|
|
68
|
+
minSize: Accessor<number>;
|
|
69
|
+
maxSize: Accessor<number>;
|
|
70
|
+
collapsible: Accessor<boolean>;
|
|
71
|
+
collapsedSize: Accessor<number>;
|
|
72
|
+
defaultSize: number | undefined;
|
|
73
|
+
onResize?: (size: number) => void;
|
|
74
|
+
onCollapse?: () => void;
|
|
75
|
+
onExpand?: () => void;
|
|
76
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** 解析尺寸:number/`"25%"`/`"25"` 都按百分比处理(不支持 px,按需再扩展) */
|
|
2
|
+
export declare function parseSize(value: number | string | undefined, fallback: number): number;
|
|
3
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
4
|
+
/** 百分比保留 2 位小数,避免 onLayoutChange/layout 输出出现长尾浮点 */
|
|
5
|
+
export declare function roundPercent(value: number): number;
|
|
6
|
+
/**
|
|
7
|
+
* 把一组原始权重归一化到总和 100,并在迭代中尊重每个面板的上下界。
|
|
8
|
+
* 之所以不用简单的按比例缩放:min/max 会在缩放后再次越界,需要固定越界项、
|
|
9
|
+
* 把剩余空间按权重分给其余项(最多 4 轮即可收敛)。
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizeSizes(raw: number[], bounds: Array<{
|
|
12
|
+
min: number;
|
|
13
|
+
max: number;
|
|
14
|
+
}>): number[];
|
|
15
|
+
/** camelCase -> kebab-case;CSS 自定义属性(--x)原样保留 */
|
|
16
|
+
export declare function toKebabCase(key: string): string;
|