@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,45 @@
|
|
|
1
|
+
//#region src/components/resizable/resizable.utils.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
if (e == null) return t;
|
|
4
|
+
if (typeof e == "number") return Number.isFinite(e) ? e : t;
|
|
5
|
+
let n = e.trim(), r = (n.endsWith("%"), Number.parseFloat(n));
|
|
6
|
+
return Number.isFinite(r) ? r : t;
|
|
7
|
+
}
|
|
8
|
+
function t(e, t, n) {
|
|
9
|
+
return Math.min(n, Math.max(t, e));
|
|
10
|
+
}
|
|
11
|
+
function n(e) {
|
|
12
|
+
return Math.round(e * 100) / 100;
|
|
13
|
+
}
|
|
14
|
+
function r(e, n) {
|
|
15
|
+
if (e.length === 0) return [];
|
|
16
|
+
let r = e.map((e, r) => t(e, n[r].min, n[r].max)), i = r.reduce((e, t) => e + t, 0);
|
|
17
|
+
if (i <= 0) {
|
|
18
|
+
let t = 100 / e.length;
|
|
19
|
+
return e.map(() => t);
|
|
20
|
+
}
|
|
21
|
+
for (let e = 0; e < r.length; e += 1) r[e] = r[e] * 100 / i;
|
|
22
|
+
for (let e = 0; e < 4; e += 1) {
|
|
23
|
+
let e = 0, t = [];
|
|
24
|
+
for (let i = 0; i < r.length; i += 1) {
|
|
25
|
+
let a = n[i];
|
|
26
|
+
r[i] > a.max ? (r[i] = a.max, e += a.max) : r[i] < a.min ? (r[i] = a.min, e += a.min) : t.push(i);
|
|
27
|
+
}
|
|
28
|
+
if (t.length === 0) break;
|
|
29
|
+
let i = 100 - e, a = t.reduce((e, t) => e + r[t], 0);
|
|
30
|
+
if (a <= 0) {
|
|
31
|
+
let e = i / t.length;
|
|
32
|
+
for (let n of t) r[n] = e;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
for (let e of t) r[e] = r[e] * i / a;
|
|
36
|
+
}
|
|
37
|
+
return r;
|
|
38
|
+
}
|
|
39
|
+
function i(e) {
|
|
40
|
+
return e.startsWith("--") ? e : e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`);
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { t as clamp, r as normalizeSizes, e as parseSize, n as roundPercent, i as toKebabCase };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=resizable.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizable.utils.js","names":["parseSize","value","fallback","trimmed","numeric","clamp","max","min","roundPercent","normalizeSizes","raw","result","bounds","index","sum","acc","equal","iteration","fixedSum","free","bound","target","freeSum","toKebabCase","key","char"],"sources":["../../../src/components/resizable/resizable.utils.ts"],"sourcesContent":["/** 解析尺寸:number/`\"25%\"`/`\"25\"` 都按百分比处理(不支持 px,按需再扩展) */\nexport function parseSize(\n value: number | string | undefined,\n fallback: number,\n): number {\n if (value === undefined || value === null) return fallback;\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : fallback;\n }\n const trimmed = value.trim();\n const numeric = trimmed.endsWith(\"%\")\n ? Number.parseFloat(trimmed)\n : Number.parseFloat(trimmed);\n return Number.isFinite(numeric) ? numeric : fallback;\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/** 百分比保留 2 位小数,避免 onLayoutChange/layout 输出出现长尾浮点 */\nexport function roundPercent(value: number): number {\n return Math.round(value * 100) / 100;\n}\n\n/**\n * 把一组原始权重归一化到总和 100,并在迭代中尊重每个面板的上下界。\n * 之所以不用简单的按比例缩放:min/max 会在缩放后再次越界,需要固定越界项、\n * 把剩余空间按权重分给其余项(最多 4 轮即可收敛)。\n */\nexport function normalizeSizes(\n raw: number[],\n bounds: Array<{ min: number; max: number }>,\n): number[] {\n if (raw.length === 0) return [];\n const result = raw.map((value, index) =>\n clamp(value, bounds[index]!.min, bounds[index]!.max),\n );\n const sum = result.reduce((acc, value) => acc + value, 0);\n if (sum <= 0) {\n const equal = 100 / raw.length;\n return raw.map(() => equal);\n }\n for (let index = 0; index < result.length; index += 1) {\n result[index] = (result[index]! * 100) / sum;\n }\n\n for (let iteration = 0; iteration < 4; iteration += 1) {\n let fixedSum = 0;\n const free: number[] = [];\n for (let index = 0; index < result.length; index += 1) {\n const bound = bounds[index]!;\n if (result[index]! > bound.max) {\n result[index] = bound.max;\n fixedSum += bound.max;\n } else if (result[index]! < bound.min) {\n result[index] = bound.min;\n fixedSum += bound.min;\n } else {\n free.push(index);\n }\n }\n if (free.length === 0) break;\n const target = 100 - fixedSum;\n const freeSum = free.reduce((acc, index) => acc + result[index]!, 0);\n if (freeSum <= 0) {\n const equal = target / free.length;\n for (const index of free) result[index] = equal;\n break;\n }\n for (const index of free) {\n result[index] = (result[index]! * target) / freeSum;\n }\n }\n return result;\n}\n\n/** camelCase -> kebab-case;CSS 自定义属性(--x)原样保留 */\nexport function toKebabCase(key: string): string {\n if (key.startsWith(\"--\")) return key;\n return key.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`);\n}\n"],"mappings":";AACA,SAAgBA,EACd,GACA,GACQ;CACR,IAAIC,KAAiC,MAAM,OAAOC;CAClD,IAAI,OAAOD,KAAU,UACnB,OAAO,OAAO,SAASA,CAAK,IAAIA,IAAQC;CAE1C,IAAMC,IAAUF,EAAM,KAAK,GACrBG,KAAUD,EAAQ,SAAS,GAAG,GAChC,OAAO,WAAWA,CAAO;CAE7B,OAAO,OAAO,SAASC,CAAO,IAAIA,IAAUF;AAC9C;AAEA,SAAgBG,EAAM,GAAe,GAAa,GAAqB;CACrE,OAAO,KAAK,IAAIC,GAAK,KAAK,IAAIC,GAAKN,CAAK,CAAC;AAC3C;AAGA,SAAgBO,EAAa,GAAuB;CAClD,OAAO,KAAK,MAAMP,IAAQ,GAAG,IAAI;AACnC;AAOA,SAAgBQ,EACd,GACA,GACU;CACV,IAAIC,EAAI,WAAW,GAAG,OAAO,CAAC;CAC9B,IAAMC,IAASD,EAAI,KAAK,GAAO,MAC7BL,EAAMJ,GAAOW,EAAOC,EAAM,CAAE,KAAKD,EAAOC,EAAM,CAAE,GAAG,CACrD,GACMC,IAAMH,EAAO,QAAQ,GAAK,MAAUI,IAAMd,GAAO,CAAC;CACxD,IAAIa,KAAO,GAAG;EACZ,IAAME,IAAQ,MAAMN,EAAI;EACxB,OAAOA,EAAI,UAAUM,CAAK;CAC5B;CACA,KAAK,IAAIH,IAAQ,GAAGA,IAAQF,EAAO,QAAQ,KAAS,GAClD,EAAOE,KAAUF,EAAOE,KAAU,MAAOC;CAG3C,KAAK,IAAIG,IAAY,GAAGA,IAAY,GAAG,KAAa,GAAG;EACrD,IAAIC,IAAW,GACTC,IAAiB,CAAC;EACxB,KAAK,IAAIN,IAAQ,GAAGA,IAAQF,EAAO,QAAQ,KAAS,GAAG;GACrD,IAAMS,IAAQR,EAAOC;GACrB,AAAIF,EAAOE,KAAUO,EAAM,OACzB,EAAOP,KAASO,EAAM,KACtB,KAAYA,EAAM,OACTT,EAAOE,KAAUO,EAAM,OAChC,EAAOP,KAASO,EAAM,KACtB,KAAYA,EAAM,OAElBD,EAAK,KAAKN,CAAK;EAEnB;EACA,IAAIM,EAAK,WAAW,GAAG;EACvB,IAAME,IAAS,MAAMH,GACfI,IAAUH,EAAK,QAAQ,GAAK,MAAUJ,IAAMJ,EAAOE,IAAS,CAAC;EACnE,IAAIS,KAAW,GAAG;GAChB,IAAMN,IAAQK,IAASF,EAAK;GAC5B,KAAK,IAAMN,KAASM,GAAM,EAAON,KAASG;GAC1C;EACF;EACA,KAAK,IAAMH,KAASM,GAClB,EAAON,KAAUF,EAAOE,KAAUQ,IAAUC;CAEhD;CACA,OAAOX;AACT;AAGA,SAAgBY,EAAY,GAAqB;CAE/C,OADIC,EAAI,WAAW,IAAI,IAAUA,IAC1BA,EAAI,QAAQ,WAAW,MAAS,IAAIC,EAAK,YAAY,GAAG;AACjE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Accessor } from 'solid-js';
|
|
2
|
+
import { ResizablePanelGroupContextValue } from './resizable.context';
|
|
3
|
+
import { ResizableLayout, ResizableOrientation } from './resizable.types';
|
|
4
|
+
interface Options {
|
|
5
|
+
orientation: Accessor<ResizableOrientation>;
|
|
6
|
+
defaultLayout: Accessor<ResizableLayout | undefined>;
|
|
7
|
+
onLayoutChange: (layout: ResizableLayout) => void;
|
|
8
|
+
autoSaveId: Accessor<string | undefined>;
|
|
9
|
+
storage: Accessor<Storage | undefined>;
|
|
10
|
+
keyboardResizeBy: Accessor<number>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resizable 的布局引擎(对齐 react-resizable-panels v4 的核心语义,但按 Solid 重写):
|
|
14
|
+
* - 尺寸用**百分比权重**存在 store 里,渲染时映射为 `flex-grow`,拖拽只更新相邻两个
|
|
15
|
+
* panel 的两个键,子节点不重渲染(细粒度更新);
|
|
16
|
+
* - panel 在挂载时注册(顺序即 DOM 顺序),handle 通过相邻兄弟节点解析前后 panel;
|
|
17
|
+
* - 约束/min/max/collapsible 吸附、归一化到 100、以及命令式 collapse/expand;
|
|
18
|
+
* - 拖拽用 pointer capture,pointermove 由调用方用 rAF 合并,避免高频写 store;
|
|
19
|
+
* - autoSaveId + storage 做布局持久化。
|
|
20
|
+
*/
|
|
21
|
+
export declare function useResizablePanelGroup(options: Options): ResizablePanelGroupContextValue;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { clamp as e, normalizeSizes as t, roundPercent as n } from "./resizable.utils.js";
|
|
2
|
+
import { createSignal as r } from "solid-js";
|
|
3
|
+
import { createStore as i, produce as a } from "solid-js/store";
|
|
4
|
+
//#region src/components/resizable/useResizablePanelGroup.ts
|
|
5
|
+
var o = .001, s = "neut-resizable:";
|
|
6
|
+
function c(c) {
|
|
7
|
+
let [l, u] = r(), [d, f] = r(!1), [p, m] = i({}), h = /* @__PURE__ */ new Map(), g = [], _ = !1, v = /* @__PURE__ */ new Map(), y = () => g.map((e) => h.get(e)).filter((e) => !!e), b = (e) => e.collapsible() ? e.collapsedSize() : e.minSize(), x = (e, t) => e.collapsible() && t <= e.collapsedSize() + o, S = () => c.storage() ?? (typeof localStorage < "u" ? localStorage : void 0), C = () => {
|
|
8
|
+
let e = c.autoSaveId();
|
|
9
|
+
return e ? `${s}${e}` : void 0;
|
|
10
|
+
}, w = () => {
|
|
11
|
+
let e = {};
|
|
12
|
+
for (let t of y()) e[t.id] = n(p[t.id] ?? 0);
|
|
13
|
+
return e;
|
|
14
|
+
}, T = (e) => {
|
|
15
|
+
let t = C(), n = S();
|
|
16
|
+
if (t && n) try {
|
|
17
|
+
n.setItem(t, JSON.stringify(e));
|
|
18
|
+
} catch {}
|
|
19
|
+
}, E = () => c.onLayoutChange(w()), D = () => {
|
|
20
|
+
let e = w();
|
|
21
|
+
c.onLayoutChange(e), T(e);
|
|
22
|
+
}, O = () => {
|
|
23
|
+
let e = C(), t = S();
|
|
24
|
+
if (e && t) try {
|
|
25
|
+
let n = t.getItem(e);
|
|
26
|
+
if (!n) return;
|
|
27
|
+
let r = JSON.parse(n);
|
|
28
|
+
return typeof r == "object" && r ? r : void 0;
|
|
29
|
+
} catch {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
}, k = () => y().map((e) => ({
|
|
33
|
+
min: b(e),
|
|
34
|
+
max: e.maxSize()
|
|
35
|
+
})), A = (e, t, r) => {
|
|
36
|
+
if (e.onResize?.(n(r)), !e.collapsible()) return;
|
|
37
|
+
let i = x(e, t), a = x(e, r);
|
|
38
|
+
!i && a ? e.onCollapse?.() : i && !a && e.onExpand?.();
|
|
39
|
+
}, j = (e, t = !0) => {
|
|
40
|
+
let n = y(), r = n.map((e) => p[e.id] ?? 0);
|
|
41
|
+
m(a((t) => {
|
|
42
|
+
n.forEach((n, r) => {
|
|
43
|
+
let i = e[r];
|
|
44
|
+
i !== void 0 && (t[n.id] = i);
|
|
45
|
+
});
|
|
46
|
+
})), t && n.forEach((t, n) => {
|
|
47
|
+
let i = e[n];
|
|
48
|
+
i !== void 0 && A(t, r[n], i);
|
|
49
|
+
});
|
|
50
|
+
}, M = () => {
|
|
51
|
+
let e = y(), t = O() ?? c.defaultLayout(), n = e.map((e) => {
|
|
52
|
+
let n = t?.[e.id];
|
|
53
|
+
return n === void 0 ? e.defaultSize : n;
|
|
54
|
+
}), r = n.filter((e) => e !== void 0), i = n.length - r.length, a = r.reduce((e, t) => e + t, 0), o = Math.max(0, 100 - a), s = i > 0 ? o / i : 0;
|
|
55
|
+
return n.map((e) => e ?? s);
|
|
56
|
+
}, N = () => {
|
|
57
|
+
_ || typeof window < "u" && y().length !== 0 && (_ = !0, j(t(M(), k()), !1), D());
|
|
58
|
+
}, P = () => {
|
|
59
|
+
typeof window < "u" && queueMicrotask(() => {
|
|
60
|
+
_ || N();
|
|
61
|
+
});
|
|
62
|
+
}, F = (e) => {
|
|
63
|
+
if (h.set(e.element, e), g = [...g, e.element], !_) P();
|
|
64
|
+
else if (p[e.id] === void 0) {
|
|
65
|
+
let n = y(), r = n.map((t) => t.id === e.id ? t.defaultSize ?? 100 / n.length : p[t.id] ?? 0);
|
|
66
|
+
j(t(r, k())), D();
|
|
67
|
+
}
|
|
68
|
+
return () => {
|
|
69
|
+
h.delete(e.element), g = g.filter((t) => t !== e.element), m(a((t) => {
|
|
70
|
+
delete t[e.id];
|
|
71
|
+
}));
|
|
72
|
+
};
|
|
73
|
+
}, I = (e) => {
|
|
74
|
+
let t = e.previousElementSibling;
|
|
75
|
+
for (; t && !h.has(t);) t = t.previousElementSibling;
|
|
76
|
+
let n = e.nextElementSibling;
|
|
77
|
+
for (; n && !h.has(n);) n = n.nextElementSibling;
|
|
78
|
+
if (!t || !n) return;
|
|
79
|
+
let r = h.get(t), i = h.get(n), a = p[r.id] ?? 0;
|
|
80
|
+
return {
|
|
81
|
+
prev: r,
|
|
82
|
+
next: i,
|
|
83
|
+
prevSize: a,
|
|
84
|
+
total: a + (p[i.id] ?? 0)
|
|
85
|
+
};
|
|
86
|
+
}, L = (t, n, r, i) => {
|
|
87
|
+
let s = Math.max(b(t), i - n.maxSize()), c = Math.min(t.maxSize(), i - b(n)), l = e(r, s, c);
|
|
88
|
+
if (t.collapsible() && l < t.minSize() - o && l > t.collapsedSize() + o && (l = l - t.collapsedSize() < t.minSize() - l ? t.collapsedSize() : t.minSize()), n.collapsible() && i - l < n.minSize() - o && i - l > n.collapsedSize() + o) {
|
|
89
|
+
let e = i - l;
|
|
90
|
+
l = i - (e - n.collapsedSize() < n.minSize() - e ? n.collapsedSize() : n.minSize());
|
|
91
|
+
}
|
|
92
|
+
l = e(l, s, c);
|
|
93
|
+
let u = p[t.id] ?? 0, d = p[n.id] ?? 0;
|
|
94
|
+
m(a((e) => {
|
|
95
|
+
e[t.id] = l, e[n.id] = i - l;
|
|
96
|
+
})), A(t, u, l), A(n, d, i - l);
|
|
97
|
+
}, R = (e, t) => {
|
|
98
|
+
let n = I(e);
|
|
99
|
+
n && (L(n.prev, n.next, t, n.total), E());
|
|
100
|
+
}, z = (e, t) => {
|
|
101
|
+
let n = I(e);
|
|
102
|
+
n && (L(n.prev, n.next, n.prevSize + t, n.total), D());
|
|
103
|
+
}, B = (e) => {
|
|
104
|
+
let t = y().find((t) => t.id === e);
|
|
105
|
+
if (!t?.collapsible()) return !1;
|
|
106
|
+
let n = p[e] ?? 0;
|
|
107
|
+
return !x(t, n) && (v.set(e, n), H(t, t.collapsedSize()), D(), !0);
|
|
108
|
+
}, V = (e) => {
|
|
109
|
+
let t = y().find((t) => t.id === e);
|
|
110
|
+
if (!t?.collapsible()) return !1;
|
|
111
|
+
let n = p[e] ?? 0;
|
|
112
|
+
if (!x(t, n)) return !1;
|
|
113
|
+
let r = v.get(e) ?? t.minSize();
|
|
114
|
+
return H(t, Math.max(r, t.minSize())), D(), !0;
|
|
115
|
+
}, H = (e, t) => {
|
|
116
|
+
let n = g.indexOf(e.element), r = g[n + 1], i = g[n - 1], a = r ? h.get(r) : void 0, o = i ? h.get(i) : void 0;
|
|
117
|
+
if (a) {
|
|
118
|
+
let n = (p[e.id] ?? 0) + (p[a.id] ?? 0);
|
|
119
|
+
L(e, a, t, n);
|
|
120
|
+
} else if (o) {
|
|
121
|
+
let n = (p[o.id] ?? 0) + (p[e.id] ?? 0);
|
|
122
|
+
L(o, e, n - t, n);
|
|
123
|
+
} else m(e.id, 100);
|
|
124
|
+
};
|
|
125
|
+
return {
|
|
126
|
+
orientation: c.orientation,
|
|
127
|
+
sizes: () => p,
|
|
128
|
+
groupElement: l,
|
|
129
|
+
setGroupElement: u,
|
|
130
|
+
dragging: d,
|
|
131
|
+
keyboardResizeBy: c.keyboardResizeBy,
|
|
132
|
+
registerPanel: F,
|
|
133
|
+
resolveAdjacent: (e) => I(e),
|
|
134
|
+
setAdjacentSize: R,
|
|
135
|
+
nudgeAdjacent: z,
|
|
136
|
+
toggleHandleCollapse: (e) => {
|
|
137
|
+
let t = I(e);
|
|
138
|
+
if (!t) return;
|
|
139
|
+
let { prev: n, next: r } = t;
|
|
140
|
+
if (n.collapsible()) {
|
|
141
|
+
x(n, p[n.id] ?? 0) ? V(n.id) : B(n.id);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (r.collapsible()) {
|
|
145
|
+
x(r, p[r.id] ?? 0) ? V(r.id) : B(r.id);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
groupSizePx: () => {
|
|
150
|
+
let e = l();
|
|
151
|
+
return e ? c.orientation() === "horizontal" ? e.clientWidth : e.clientHeight : 0;
|
|
152
|
+
},
|
|
153
|
+
isRtl: () => {
|
|
154
|
+
let e = l();
|
|
155
|
+
return e ? window.getComputedStyle(e).direction === "rtl" : !1;
|
|
156
|
+
},
|
|
157
|
+
beginDrag: () => f(!0),
|
|
158
|
+
endDrag: () => f(!1),
|
|
159
|
+
commitLayout: D,
|
|
160
|
+
setPanelSize: (e, t) => {
|
|
161
|
+
let n = y().find((t) => t.id === e);
|
|
162
|
+
n && (H(n, t), D());
|
|
163
|
+
},
|
|
164
|
+
collapsePanel: B,
|
|
165
|
+
expandPanel: V,
|
|
166
|
+
isPanelCollapsed: (e) => {
|
|
167
|
+
let t = y().find((t) => t.id === e);
|
|
168
|
+
return t ? x(t, p[e] ?? 0) : !1;
|
|
169
|
+
},
|
|
170
|
+
getPanelSize: (e) => p[e] ?? 0
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
//#endregion
|
|
174
|
+
export { c as useResizablePanelGroup };
|
|
175
|
+
|
|
176
|
+
//# sourceMappingURL=useResizablePanelGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResizablePanelGroup.js","names":["EPSILON","STORAGE_PREFIX","useResizablePanelGroup","groupElement","setGroupElement","createSignal","dragging","setDragging","store","setStore","createStore","metas","order","initialized","collapsedMemory","orderedMetas","element","meta","effMin","isCollapsedSize","size","storageOf","options","storageKey","id","layout","result","roundPercent","persist","key","storage","next","notify","commit","readSaved","raw","parsed","bounds","reportResize","newSize","was","oldSize","now","applySizes","list","before","produce","value","values","index","report","buildInitial","saved","fromLayout","defined","unknown","used","acc","remaining","fill","initialize","normalizeSizes","scheduleInitialize","registerPanel","item","draft","adjacentOf","prevEl","handleEl","nextEl","prev","prevSize","applyPair","lo","total","hi","clamp","targetPrev","rest","prevOld","nextOld","setAdjacentSize","adjacent","targetPrevSize","nudgeAdjacent","deltaPercent","collapsePanel","current","applyPanelTarget","expandPanel","remembered","nextElement","prevElement","nextMeta","prevMeta","targetSize"],"sources":["../../../src/components/resizable/useResizablePanelGroup.ts"],"sourcesContent":["import { createSignal, type Accessor } from \"solid-js\";\nimport { createStore, produce } from \"solid-js/store\";\nimport type { ResizablePanelGroupContextValue } from \"./resizable.context\";\nimport type {\n ResizableLayout,\n ResizableOrientation,\n ResizablePanelMeta,\n} from \"./resizable.types\";\nimport { clamp, normalizeSizes, roundPercent } from \"./resizable.utils\";\n\nconst EPSILON = 0.001;\nconst STORAGE_PREFIX = \"neut-resizable:\";\n\ninterface Options {\n orientation: Accessor<ResizableOrientation>;\n defaultLayout: Accessor<ResizableLayout | undefined>;\n onLayoutChange: (layout: ResizableLayout) => void;\n autoSaveId: Accessor<string | undefined>;\n storage: Accessor<Storage | undefined>;\n keyboardResizeBy: Accessor<number>;\n}\n\n/**\n * Resizable 的布局引擎(对齐 react-resizable-panels v4 的核心语义,但按 Solid 重写):\n * - 尺寸用**百分比权重**存在 store 里,渲染时映射为 `flex-grow`,拖拽只更新相邻两个\n * panel 的两个键,子节点不重渲染(细粒度更新);\n * - panel 在挂载时注册(顺序即 DOM 顺序),handle 通过相邻兄弟节点解析前后 panel;\n * - 约束/min/max/collapsible 吸附、归一化到 100、以及命令式 collapse/expand;\n * - 拖拽用 pointer capture,pointermove 由调用方用 rAF 合并,避免高频写 store;\n * - autoSaveId + storage 做布局持久化。\n */\nexport function useResizablePanelGroup(\n options: Options,\n): ResizablePanelGroupContextValue {\n const [groupElement, setGroupElement] = createSignal<HTMLElement>();\n const [dragging, setDragging] = createSignal(false);\n const [store, setStore] = createStore<Record<string, number>>({});\n\n const metas = new Map<HTMLElement, ResizablePanelMeta>();\n let order: HTMLElement[] = [];\n let initialized = false;\n const collapsedMemory = new Map<string, number>();\n\n const orderedMetas = (): ResizablePanelMeta[] =>\n order\n .map((element) => metas.get(element))\n .filter((meta): meta is ResizablePanelMeta => !!meta);\n\n /** 可折叠时为 collapsedSize,否则为 minSize(即拖拽能到的最小值) */\n const effMin = (meta: ResizablePanelMeta) =>\n meta.collapsible() ? meta.collapsedSize() : meta.minSize();\n\n const isCollapsedSize = (meta: ResizablePanelMeta, size: number) =>\n meta.collapsible() && size <= meta.collapsedSize() + EPSILON;\n\n const storageOf = (): Storage | undefined =>\n options.storage() ??\n (typeof localStorage !== \"undefined\" ? localStorage : undefined);\n\n const storageKey = (): string | undefined => {\n const id = options.autoSaveId();\n return id ? `${STORAGE_PREFIX}${id}` : undefined;\n };\n\n const layout = (): ResizableLayout => {\n const result: ResizableLayout = {};\n for (const meta of orderedMetas()) {\n result[meta.id] = roundPercent(store[meta.id] ?? 0);\n }\n return result;\n };\n\n const persist = (next: ResizableLayout) => {\n const key = storageKey();\n const storage = storageOf();\n if (!key || !storage) return;\n try {\n storage.setItem(key, JSON.stringify(next));\n } catch {\n // 隐私模式等场景下忽略持久化失败\n }\n };\n\n /** 只通知布局变化(拖拽的每一帧),不写 storage */\n const notify = () => options.onLayoutChange(layout());\n\n /** 通知 + 持久化(离散操作与拖拽结束) */\n const commit = () => {\n const next = layout();\n options.onLayoutChange(next);\n persist(next);\n };\n\n const readSaved = (): ResizableLayout | undefined => {\n const key = storageKey();\n const storage = storageOf();\n if (!key || !storage) return undefined;\n try {\n const raw = storage.getItem(key);\n if (!raw) return undefined;\n const parsed = JSON.parse(raw) as unknown;\n return typeof parsed === \"object\" && parsed !== null\n ? (parsed as ResizableLayout)\n : undefined;\n } catch {\n return undefined;\n }\n };\n\n const bounds = () =>\n orderedMetas().map((meta) => ({\n min: effMin(meta),\n max: meta.maxSize(),\n }));\n\n const reportResize = (\n meta: ResizablePanelMeta,\n oldSize: number,\n newSize: number,\n ) => {\n meta.onResize?.(roundPercent(newSize));\n if (!meta.collapsible()) return;\n const was = isCollapsedSize(meta, oldSize);\n const now = isCollapsedSize(meta, newSize);\n if (!was && now) meta.onCollapse?.();\n else if (was && !now) meta.onExpand?.();\n };\n\n const applySizes = (values: number[], report = true) => {\n const list = orderedMetas();\n const before = list.map((meta) => store[meta.id] ?? 0);\n setStore(\n produce((draft) => {\n list.forEach((meta, index) => {\n const value = values[index];\n if (value !== undefined) draft[meta.id] = value;\n });\n }),\n );\n if (report) {\n list.forEach((meta, index) => {\n const value = values[index];\n if (value !== undefined) reportResize(meta, before[index]!, value);\n });\n }\n };\n\n const buildInitial = (): number[] => {\n const list = orderedMetas();\n const saved = readSaved() ?? options.defaultLayout();\n const raw = list.map((meta) => {\n const fromLayout = saved?.[meta.id];\n if (fromLayout !== undefined) return fromLayout;\n return meta.defaultSize;\n });\n const defined = raw.filter((value): value is number => value !== undefined);\n const unknown = raw.length - defined.length;\n const used = defined.reduce((acc, value) => acc + value, 0);\n const remaining = Math.max(0, 100 - used);\n const fill = unknown > 0 ? remaining / unknown : 0;\n return raw.map((value) => value ?? fill);\n };\n\n const initialize = () => {\n if (initialized) return;\n // SSR 不计算布局:首屏由 Panel 的 defaultSize fallback 撑起,客户端再归一化\n if (typeof window === \"undefined\") return;\n const list = orderedMetas();\n if (list.length === 0) return;\n initialized = true;\n applySizes(normalizeSizes(buildInitial(), bounds()), false);\n commit();\n };\n\n const scheduleInitialize = () => {\n if (typeof window === \"undefined\") return;\n queueMicrotask(() => {\n if (!initialized) initialize();\n });\n };\n\n const registerPanel = (meta: ResizablePanelMeta) => {\n metas.set(meta.element, meta);\n order = [...order, meta.element];\n if (!initialized) {\n scheduleInitialize();\n } else if (store[meta.id] === undefined) {\n // 动态新增:给它默认尺寸,并把其它面板等比压回 100\n const list = orderedMetas();\n const raw = list.map((item) =>\n item.id === meta.id\n ? (item.defaultSize ?? 100 / list.length)\n : (store[item.id] ?? 0),\n );\n applySizes(normalizeSizes(raw, bounds()));\n commit();\n }\n return () => {\n metas.delete(meta.element);\n order = order.filter((element) => element !== meta.element);\n setStore(\n produce((draft) => {\n delete draft[meta.id];\n }),\n );\n };\n };\n\n const adjacentOf = (handleEl: HTMLElement) => {\n let prevEl = handleEl.previousElementSibling as HTMLElement | null;\n while (prevEl && !metas.has(prevEl)) {\n prevEl = prevEl.previousElementSibling as HTMLElement | null;\n }\n let nextEl = handleEl.nextElementSibling as HTMLElement | null;\n while (nextEl && !metas.has(nextEl)) {\n nextEl = nextEl.nextElementSibling as HTMLElement | null;\n }\n if (!prevEl || !nextEl) return undefined;\n const prev = metas.get(prevEl)!;\n const next = metas.get(nextEl)!;\n const prevSize = store[prev.id] ?? 0;\n const nextSize = store[next.id] ?? 0;\n return { prev, next, prevSize, total: prevSize + nextSize };\n };\n\n const applyPair = (\n prev: ResizablePanelMeta,\n next: ResizablePanelMeta,\n targetPrev: number,\n total: number,\n ) => {\n const lo = Math.max(effMin(prev), total - next.maxSize());\n const hi = Math.min(prev.maxSize(), total - effMin(next));\n let size = clamp(targetPrev, lo, hi);\n\n // 折叠吸附:落在 (collapsedSize, minSize) 之间时贴向较近的一端\n if (\n prev.collapsible() &&\n size < prev.minSize() - EPSILON &&\n size > prev.collapsedSize() + EPSILON\n ) {\n size =\n size - prev.collapsedSize() < prev.minSize() - size\n ? prev.collapsedSize()\n : prev.minSize();\n }\n if (\n next.collapsible() &&\n total - size < next.minSize() - EPSILON &&\n total - size > next.collapsedSize() + EPSILON\n ) {\n const rest = total - size;\n size =\n total -\n (rest - next.collapsedSize() < next.minSize() - rest\n ? next.collapsedSize()\n : next.minSize());\n }\n size = clamp(size, lo, hi);\n\n const prevOld = store[prev.id] ?? 0;\n const nextOld = store[next.id] ?? 0;\n setStore(\n produce((draft) => {\n draft[prev.id] = size;\n draft[next.id] = total - size;\n }),\n );\n reportResize(prev, prevOld, size);\n reportResize(next, nextOld, total - size);\n };\n\n const setAdjacentSize = (handleEl: HTMLElement, targetPrevSize: number) => {\n const adjacent = adjacentOf(handleEl);\n if (!adjacent) return;\n applyPair(adjacent.prev, adjacent.next, targetPrevSize, adjacent.total);\n // 拖拽帧只通知,持久化留到 pointerup 的 commitLayout\n notify();\n };\n\n const nudgeAdjacent = (handleEl: HTMLElement, deltaPercent: number) => {\n const adjacent = adjacentOf(handleEl);\n if (!adjacent) return;\n applyPair(\n adjacent.prev,\n adjacent.next,\n adjacent.prevSize + deltaPercent,\n adjacent.total,\n );\n commit();\n };\n\n const collapsePanel = (id: string) => {\n const meta = orderedMetas().find((item) => item.id === id);\n if (!meta?.collapsible()) return false;\n const current = store[id] ?? 0;\n if (isCollapsedSize(meta, current)) return false;\n collapsedMemory.set(id, current);\n applyPanelTarget(meta, meta.collapsedSize());\n commit();\n return true;\n };\n\n const expandPanel = (id: string) => {\n const meta = orderedMetas().find((item) => item.id === id);\n if (!meta?.collapsible()) return false;\n const current = store[id] ?? 0;\n if (!isCollapsedSize(meta, current)) return false;\n const remembered = collapsedMemory.get(id) ?? meta.minSize();\n applyPanelTarget(meta, Math.max(remembered, meta.minSize()));\n commit();\n return true;\n };\n\n /** 命令式设置单个 panel,并把它与相邻 panel 之间重新分配 */\n const applyPanelTarget = (meta: ResizablePanelMeta, targetSize: number) => {\n const index = order.indexOf(meta.element);\n const nextElement = order[index + 1];\n const prevElement = order[index - 1];\n const nextMeta = nextElement ? metas.get(nextElement) : undefined;\n const prevMeta = prevElement ? metas.get(prevElement) : undefined;\n if (nextMeta) {\n const total = (store[meta.id] ?? 0) + (store[nextMeta.id] ?? 0);\n applyPair(meta, nextMeta, targetSize, total);\n } else if (prevMeta) {\n const total = (store[prevMeta.id] ?? 0) + (store[meta.id] ?? 0);\n applyPair(prevMeta, meta, total - targetSize, total);\n } else {\n setStore(meta.id, 100);\n }\n };\n\n const setPanelSize = (id: string, size: number) => {\n const meta = orderedMetas().find((item) => item.id === id);\n if (!meta) return;\n applyPanelTarget(meta, size);\n commit();\n };\n\n const toggleHandleCollapse = (handleEl: HTMLElement) => {\n const adjacent = adjacentOf(handleEl);\n if (!adjacent) return;\n const { prev, next } = adjacent;\n if (prev.collapsible()) {\n if (isCollapsedSize(prev, store[prev.id] ?? 0)) {\n expandPanel(prev.id);\n } else {\n collapsePanel(prev.id);\n }\n return;\n }\n if (next.collapsible()) {\n if (isCollapsedSize(next, store[next.id] ?? 0)) {\n expandPanel(next.id);\n } else {\n collapsePanel(next.id);\n }\n return;\n }\n };\n\n const groupSizePx = () => {\n const element = groupElement();\n if (!element) return 0;\n return options.orientation() === \"horizontal\"\n ? element.clientWidth\n : element.clientHeight;\n };\n\n const isRtl = () => {\n const element = groupElement();\n if (!element) return false;\n return window.getComputedStyle(element).direction === \"rtl\";\n };\n\n return {\n orientation: options.orientation,\n sizes: () => store,\n groupElement,\n setGroupElement,\n dragging,\n keyboardResizeBy: options.keyboardResizeBy,\n registerPanel,\n resolveAdjacent: (handleEl) => adjacentOf(handleEl),\n setAdjacentSize,\n nudgeAdjacent,\n toggleHandleCollapse,\n groupSizePx,\n isRtl,\n beginDrag: () => setDragging(true),\n endDrag: () => setDragging(false),\n commitLayout: commit,\n setPanelSize,\n collapsePanel,\n expandPanel,\n isPanelCollapsed: (id) => {\n const meta = orderedMetas().find((item) => item.id === id);\n return meta ? isCollapsedSize(meta, store[id] ?? 0) : false;\n },\n getPanelSize: (id) => store[id] ?? 0,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { ScrollArrowButtonProps } from './ScrollArrows.types';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* 持续滚动目标容器,到边界后 scrollTop 不再变化即自动停止。
|
|
3
|
+
* 单个滚动提示箭头,覆盖在列表上/下沿。
|
|
5
4
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* 默认是**装饰性**的(`interactive=false`):`pointer-events-none`,不参与指针命中,
|
|
6
|
+
* 因此不会挡住列表项、也不会出现"箭头显隐 → pointerenter → 自动滚动"的互相触发。
|
|
7
|
+
*
|
|
8
|
+
* `interactive` 为 true 时,悬停(短暂停留后)或按住会用 requestAnimationFrame 持续
|
|
9
|
+
* 滚动目标容器,并在以下任一情况停止:指针离开/抬起/取消、方向已到边界、
|
|
10
|
+
* 或箭头本身变为不可见(退出时不再继续滚动)。
|
|
8
11
|
*/
|
|
9
12
|
export declare function ScrollArrowButton(props: ScrollArrowButtonProps): import('solid-js').JSX.Element;
|
|
@@ -3,28 +3,36 @@ import { className as t, createComponent as n, effect as r, insert as i, memo as
|
|
|
3
3
|
import { Show as l, onCleanup as u } from "solid-js";
|
|
4
4
|
import { ChevronDown as d, ChevronUp as f } from "lucide-solid";
|
|
5
5
|
//#region src/components/scroll-arrows/ScrollArrowButton.tsx
|
|
6
|
-
var p = /*#__PURE__*/ s("<div aria-hidden=true data-slot=scroll-arrow>");
|
|
7
|
-
function
|
|
8
|
-
let
|
|
9
|
-
|
|
10
|
-
},
|
|
6
|
+
var p = /*#__PURE__*/ s("<div aria-hidden=true data-slot=scroll-arrow>"), m = 150;
|
|
7
|
+
function h(s) {
|
|
8
|
+
let h, g, _ = () => {
|
|
9
|
+
g !== void 0 && (window.clearTimeout(g), g = void 0), h !== void 0 && (cancelAnimationFrame(h), h = void 0);
|
|
10
|
+
}, v = () => {
|
|
11
|
+
if (!s.visible) {
|
|
12
|
+
_();
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
11
15
|
let e = s.target();
|
|
12
16
|
if (!e) {
|
|
13
|
-
|
|
17
|
+
_();
|
|
14
18
|
return;
|
|
15
19
|
}
|
|
16
20
|
let t = Math.max(4, e.clientHeight / 24), n = e.scrollTop;
|
|
17
21
|
if (e.scrollTop = n + (s.direction === "down" ? t : -t), e.scrollTop === n) {
|
|
18
|
-
|
|
22
|
+
_();
|
|
19
23
|
return;
|
|
20
24
|
}
|
|
21
|
-
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
});
|
|
25
|
+
h = requestAnimationFrame(v);
|
|
26
|
+
}, y = () => {
|
|
27
|
+
_(), h = requestAnimationFrame(v);
|
|
28
|
+
}, b = () => {
|
|
29
|
+
_(), g = window.setTimeout(() => {
|
|
30
|
+
g = void 0, y();
|
|
31
|
+
}, m);
|
|
32
|
+
}, x = (e) => {
|
|
33
|
+
s.interactive && (e.addEventListener("pointerenter", b), e.addEventListener("pointerdown", y), e.addEventListener("pointerleave", _), e.addEventListener("pointerup", _), e.addEventListener("pointercancel", _), u(() => {
|
|
34
|
+
_(), e.removeEventListener("pointerenter", b), e.removeEventListener("pointerdown", y), e.removeEventListener("pointerleave", _), e.removeEventListener("pointerup", _), e.removeEventListener("pointercancel", _);
|
|
35
|
+
}));
|
|
28
36
|
};
|
|
29
37
|
return n(l, {
|
|
30
38
|
get when() {
|
|
@@ -32,20 +40,21 @@ function m(s) {
|
|
|
32
40
|
},
|
|
33
41
|
get children() {
|
|
34
42
|
var l = p();
|
|
35
|
-
return c(
|
|
43
|
+
return c(x, l), i(l, (() => {
|
|
36
44
|
var e = a(() => s.direction === "down");
|
|
37
45
|
return () => e() ? n(d, {}) : n(f, {});
|
|
38
46
|
})()), r((n) => {
|
|
39
|
-
var r = s.direction, i = e("absolute inset-x-0 z-10 flex h-6
|
|
40
|
-
return r !== n.e && o(l, "data-direction", n.e = r), i !== n.t &&
|
|
47
|
+
var r = s.direction, i = s.interactive ? "" : void 0, a = e("absolute inset-x-0 z-10 flex h-6 select-none items-center justify-center bg-popover text-muted-foreground [&_svg]:size-4", s.interactive ? "cursor-default" : "pointer-events-none", s.direction === "down" ? "bottom-0" : "top-0", s.class);
|
|
48
|
+
return r !== n.e && o(l, "data-direction", n.e = r), i !== n.t && o(l, "data-interactive", n.t = i), a !== n.a && t(l, n.a = a), n;
|
|
41
49
|
}, {
|
|
42
50
|
e: void 0,
|
|
43
|
-
t: void 0
|
|
51
|
+
t: void 0,
|
|
52
|
+
a: void 0
|
|
44
53
|
}), l;
|
|
45
54
|
}
|
|
46
55
|
});
|
|
47
56
|
}
|
|
48
57
|
//#endregion
|
|
49
|
-
export {
|
|
58
|
+
export { h as ScrollArrowButton };
|
|
50
59
|
|
|
51
60
|
//# sourceMappingURL=ScrollArrowButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollArrowButton.js","names":["Show","onCleanup","ChevronDown","ChevronUp","clsx","ScrollArrowButtonProps","ScrollArrowButton","props","frame","stop","undefined","cancelAnimationFrame","loop","el","target","step","Math","max","clientHeight","before","scrollTop","direction","requestAnimationFrame","start","attach","HTMLDivElement","addEventListener","removeEventListener","_$createComponent","when","
|
|
1
|
+
{"version":3,"file":"ScrollArrowButton.js","names":["Show","onCleanup","ChevronDown","ChevronUp","clsx","ScrollArrowButtonProps","HOVER_SCROLL_DELAY","ScrollArrowButton","props","frame","enterTimer","stop","undefined","window","clearTimeout","cancelAnimationFrame","loop","visible","el","target","step","Math","max","clientHeight","before","scrollTop","direction","requestAnimationFrame","start","startDelayed","setTimeout","attach","HTMLDivElement","interactive","addEventListener","removeEventListener","_$createComponent","when","children","_el$","_tmpl$","_$use","_$insert","_c$","_$memo","_$effect","_p$","_v$","_v$2","_v$3","class","e","_$setAttribute","t","a","_$className","_$createComponent","_$memo","_$setAttribute","_$className","_tmpl$","HOVER_SCROLL_DELAY","ScrollArrowButton","frame","enterTimer","stop","loop","props","el","step","before","start","startDelayed","attach","onCleanup","createComponent","Show","_el$","use","insert","_c$","memo","ChevronDown","ChevronUp","effect","_v$","_v$2","_v$3","clsx","_p$","setAttribute","className"],"sources":["../../../src/components/scroll-arrows/ScrollArrowButton.tsx"],"sourcesContent":["import { Show, onCleanup } from \"solid-js\";\nimport { ChevronDown, ChevronUp } from \"lucide-solid\";\nimport { clsx } from \"~/utils\";\nimport type { ScrollArrowButtonProps } from \"./ScrollArrows.types\";\n\n/** 悬停/按住开始滚动前的停留时间,避免只是掠过或点击边缘时误触发 */\nconst HOVER_SCROLL_DELAY = 150;\n\n/**\n * 单个滚动提示箭头,覆盖在列表上/下沿。\n *\n * 默认是**装饰性**的(`interactive=false`):`pointer-events-none`,不参与指针命中,\n * 因此不会挡住列表项、也不会出现\"箭头显隐 → pointerenter → 自动滚动\"的互相触发。\n *\n * `interactive` 为 true 时,悬停(短暂停留后)或按住会用 requestAnimationFrame 持续\n * 滚动目标容器,并在以下任一情况停止:指针离开/抬起/取消、方向已到边界、\n * 或箭头本身变为不可见(退出时不再继续滚动)。\n */\nexport function ScrollArrowButton(props: ScrollArrowButtonProps) {\n let frame: number | undefined;\n let enterTimer: number | undefined;\n\n const stop = () => {\n if (enterTimer !== undefined) {\n window.clearTimeout(enterTimer);\n enterTimer = undefined;\n }\n if (frame !== undefined) {\n cancelAnimationFrame(frame);\n frame = undefined;\n }\n };\n\n const loop = () => {\n // 箭头被隐藏(到达边界/列表变短)时立即停止,避免\"不可见却持续滚动\"\n if (!props.visible) {\n stop();\n return;\n }\n const el = props.target();\n if (!el) {\n stop();\n return;\n }\n const step = Math.max(4, el.clientHeight / 24);\n const before = el.scrollTop;\n el.scrollTop = before + (props.direction === \"down\" ? step : -step);\n if (el.scrollTop === before) {\n stop();\n return;\n }\n frame = requestAnimationFrame(loop);\n };\n\n const start = () => {\n stop();\n frame = requestAnimationFrame(loop);\n };\n\n const startDelayed = () => {\n stop();\n enterTimer = window.setTimeout(() => {\n enterTimer = undefined;\n start();\n }, HOVER_SCROLL_DELAY);\n };\n\n const attach = (el: HTMLDivElement) => {\n if (!props.interactive) return;\n el.addEventListener(\"pointerenter\", startDelayed);\n el.addEventListener(\"pointerdown\", start);\n el.addEventListener(\"pointerleave\", stop);\n el.addEventListener(\"pointerup\", stop);\n el.addEventListener(\"pointercancel\", stop);\n onCleanup(() => {\n stop();\n el.removeEventListener(\"pointerenter\", startDelayed);\n el.removeEventListener(\"pointerdown\", start);\n el.removeEventListener(\"pointerleave\", stop);\n el.removeEventListener(\"pointerup\", stop);\n el.removeEventListener(\"pointercancel\", stop);\n });\n };\n\n return (\n <Show when={props.visible}>\n <div\n ref={attach}\n aria-hidden=\"true\"\n data-slot=\"scroll-arrow\"\n data-direction={props.direction}\n data-interactive={props.interactive ? \"\" : undefined}\n class={clsx(\n \"absolute inset-x-0 z-10 flex h-6 select-none items-center justify-center bg-popover text-muted-foreground [&_svg]:size-4\",\n props.interactive ? \"cursor-default\" : \"pointer-events-none\",\n props.direction === \"down\" ? \"bottom-0\" : \"top-0\",\n props.class,\n )}\n >\n {props.direction === \"down\" ? <ChevronDown /> : <ChevronUp />}\n </div>\n </Show>\n );\n}\n"],"mappings":";;;;;0EAMMM,IAAqB;AAY3B,SAAgBC,EAAkBC,GAA+B;CAC/D,IAAIC,GACAC,GAEEC,UAAa;EAKjB,AAJID,MAAeE,KAAAA,MACjBC,OAAOC,aAAaJ,CAAU,GAC9BA,IAAaE,KAAAA,IAEXH,MAAUG,KAAAA,MACZG,qBAAqBN,CAAK,GAC1BA,IAAQG,KAAAA;CAEZ,GAEMI,UAAa;EAEjB,IAAI,CAACR,EAAMS,SAAS;GAClBN,EAAK;GACL;EACF;EACA,IAAMO,IAAKV,EAAMW,OAAO;EACxB,IAAI,CAACD,GAAI;GACPP,EAAK;GACL;EACF;EACA,IAAMS,IAAOC,KAAKC,IAAI,GAAGJ,EAAGK,eAAe,EAAE,GACvCC,IAASN,EAAGO;EAElB,IADAP,EAAGO,YAAYD,KAAUhB,EAAMkB,cAAc,SAASN,IAAO,CAACA,IAC1DF,EAAGO,cAAcD,GAAQ;GAC3Bb,EAAK;GACL;EACF;EACAF,IAAQkB,sBAAsBX,CAAI;CACpC,GAEMY,UAAc;EAElBnB,AADAE,EAAK,GACLF,IAAQkB,sBAAsBX,CAAI;CACpC,GAEMa,UAAqB;EAEzBnB,AADAC,EAAK,GACLD,IAAaG,OAAOiB,iBAAiB;GAEnCF,AADAlB,IAAaE,KAAAA,GACbgB,EAAM;EACR,GAAGtB,CAAkB;CACvB,GAEMyB,KAAUb,MAAuB;EACrC,AAAKV,EAAMyB,gBACXf,EAAGgB,iBAAiB,gBAAgBL,CAAY,GAChDX,EAAGgB,iBAAiB,eAAeN,CAAK,GACxCV,EAAGgB,iBAAiB,gBAAgBvB,CAAI,GACxCO,EAAGgB,iBAAiB,aAAavB,CAAI,GACrCO,EAAGgB,iBAAiB,iBAAiBvB,CAAI,GACzCV,QAAgB;GAMdiB,AALAP,EAAK,GACLO,EAAGiB,oBAAoB,gBAAgBN,CAAY,GACnDX,EAAGiB,oBAAoB,eAAeP,CAAK,GAC3CV,EAAGiB,oBAAoB,gBAAgBxB,CAAI,GAC3CO,EAAGiB,oBAAoB,aAAaxB,CAAI,GACxCO,EAAGiB,oBAAoB,iBAAiBxB,CAAI;EAC9C,CAAC;CACH;CAEA,OAAAyB,EACGpC,GAAI;EAAA,IAACqC,OAAI;GAAA,OAAE7B,EAAMS;EAAO;EAAA,IAAAqB,WAAA;GAAA,IAAAC,IAAAC,EAAA;GAYpB,OAZoBC,EAEhBV,GAAMQ,CAAA,GAAAG,EAAAH,UAAA;IAAA,IAAAI,IAAAC,QAYVpC,EAAMkB,cAAc,MAAM;IAAA,aAA1BiB,EAAA,IAAAP,EAA8BlC,GAAW,CAAA,CAAA,IAAAkC,EAAOjC,GAAS,CAAA,CAAA;GAAG,EAAA,CAAA,CAAA,GAAA0C,GAAAC,MAAA;IAAA,IAAAC,IAT7CvC,EAAMkB,WAASsB,IACbxC,EAAMyB,cAAc,KAAKrB,KAAAA,GAASqC,IAC7C7C,EACL,4HACAI,EAAMyB,cAAc,mBAAmB,uBACvCzB,EAAMkB,cAAc,SAAS,aAAa,SAC1ClB,EAAM0C,KACR;IAAC,OAAAH,MAAAD,EAAAK,KAAAC,EAAAb,GAAA,kBAAAO,EAAAK,IAAAJ,CAAA,GAAAC,MAAAF,EAAAO,KAAAD,EAAAb,GAAA,oBAAAO,EAAAO,IAAAL,CAAA,GAAAC,MAAAH,EAAAQ,KAAAC,EAAAhB,GAAAO,EAAAQ,IAAAL,CAAA,GAAAH;GAAA,GAAA;IAAAK,GAAAvC,KAAAA;IAAAyC,GAAAzC,KAAAA;IAAA0C,GAAA1C,KAAAA;GAAA,CAAA,GAAA2B;EAAA;CAAA,CAAA;AAMT"}
|
|
@@ -2,7 +2,10 @@ import { JSX } from 'solid-js';
|
|
|
2
2
|
import { ScrollArrowsProps } from './ScrollArrows.types';
|
|
3
3
|
/**
|
|
4
4
|
* 列表/菜单弹层通用的滚动提示:隐藏原生滚动条后,在上/下沿叠加箭头,
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* 提示该方向还有内容。放在滚动容器(定位祖先)内部即可,需要容器自身是定位元素。
|
|
6
|
+
*
|
|
7
|
+
* 默认箭头**不可交互**(`pointer-events-none`):避免覆盖列表边缘时抢走指针、
|
|
8
|
+
* 以及"箭头显隐 ↔ 悬停自动滚动"互相触发导致列表持续滚动/闪动。
|
|
9
|
+
* 需要悬停滚动时显式传 `interactive`。
|
|
7
10
|
*/
|
|
8
11
|
export declare function ScrollArrows(props: ScrollArrowsProps): JSX.Element;
|
|
@@ -10,6 +10,9 @@ function i(i) {
|
|
|
10
10
|
get visible() {
|
|
11
11
|
return a();
|
|
12
12
|
},
|
|
13
|
+
get interactive() {
|
|
14
|
+
return !!i.interactive;
|
|
15
|
+
},
|
|
13
16
|
get target() {
|
|
14
17
|
return i.target;
|
|
15
18
|
},
|
|
@@ -21,6 +24,9 @@ function i(i) {
|
|
|
21
24
|
get visible() {
|
|
22
25
|
return o();
|
|
23
26
|
},
|
|
27
|
+
get interactive() {
|
|
28
|
+
return !!i.interactive;
|
|
29
|
+
},
|
|
24
30
|
get target() {
|
|
25
31
|
return i.target;
|
|
26
32
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollArrows.js","names":["JSX","clsx","useScrollEdges","ScrollArrowButton","ScrollArrowsProps","ScrollArrows","props","Element","canScrollUp","canScrollDown","target","_$createComponent","direction","visible","class","upClass","downClass","_$createComponent","ScrollArrows","useScrollEdges","props","createComponent","ScrollArrowButton","canScrollUp","\"class\"","clsx","canScrollDown"],"sources":["../../../src/components/scroll-arrows/ScrollArrows.tsx"],"sourcesContent":["import type { JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { useScrollEdges } from \"~/hooks\";\nimport { ScrollArrowButton } from \"./ScrollArrowButton\";\nimport type { ScrollArrowsProps } from \"./ScrollArrows.types\";\n\n/**\n * 列表/菜单弹层通用的滚动提示:隐藏原生滚动条后,在上/下沿叠加箭头,\n *
|
|
1
|
+
{"version":3,"file":"ScrollArrows.js","names":["JSX","clsx","useScrollEdges","ScrollArrowButton","ScrollArrowsProps","ScrollArrows","props","Element","canScrollUp","canScrollDown","target","_$createComponent","direction","visible","interactive","class","upClass","downClass","_$createComponent","ScrollArrows","useScrollEdges","props","createComponent","ScrollArrowButton","canScrollUp","\"class\"","clsx","canScrollDown"],"sources":["../../../src/components/scroll-arrows/ScrollArrows.tsx"],"sourcesContent":["import type { JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { useScrollEdges } from \"~/hooks\";\nimport { ScrollArrowButton } from \"./ScrollArrowButton\";\nimport type { ScrollArrowsProps } from \"./ScrollArrows.types\";\n\n/**\n * 列表/菜单弹层通用的滚动提示:隐藏原生滚动条后,在上/下沿叠加箭头,\n * 提示该方向还有内容。放在滚动容器(定位祖先)内部即可,需要容器自身是定位元素。\n *\n * 默认箭头**不可交互**(`pointer-events-none`):避免覆盖列表边缘时抢走指针、\n * 以及\"箭头显隐 ↔ 悬停自动滚动\"互相触发导致列表持续滚动/闪动。\n * 需要悬停滚动时显式传 `interactive`。\n */\nexport function ScrollArrows(props: ScrollArrowsProps): JSX.Element {\n const { canScrollUp, canScrollDown } = useScrollEdges(() => props.target());\n\n return (\n <>\n <ScrollArrowButton\n direction=\"up\"\n visible={canScrollUp()}\n interactive={!!props.interactive}\n target={props.target}\n class={clsx(props.class, props.upClass)}\n />\n <ScrollArrowButton\n direction=\"down\"\n visible={canScrollDown()}\n interactive={!!props.interactive}\n target={props.target}\n class={clsx(props.class, props.downClass)}\n />\n </>\n );\n}\n"],"mappings":";;;;;AAcA,SAAgBK,EAAaC,GAAuC;CAClE,IAAM,EAAEE,gBAAaC,qBAAkBP,QAAqBI,EAAMI,OAAO,CAAC;CAE1E,OAAA,CAAAC,EAEKR,GAAiB;EAChBS,WAAS;EAAA,IACTC,UAAO;GAAA,OAAEL,EAAY;EAAC;EAAA,IACtBM,cAAW;GAAA,OAAE,CAAC,CAACR,EAAMQ;EAAW;EAAA,IAChCJ,SAAM;GAAA,OAAEJ,EAAMI;EAAM;EAAA,IAAAe,QAAA;GAAA,OACbxB,EAAKK,EAAMS,OAAOT,EAAMU,OAAO;EAAC;CAAA,CAAA,GAAAL,EAExCR,GAAiB;EAChBS,WAAS;EAAA,IACTC,UAAO;GAAA,OAAEJ,EAAc;EAAC;EAAA,IACxBK,cAAW;GAAA,OAAE,CAAC,CAACR,EAAMQ;EAAW;EAAA,IAChCJ,SAAM;GAAA,OAAEJ,EAAMI;EAAM;EAAA,IAAAe,QAAA;GAAA,OACbxB,EAAKK,EAAMS,OAAOT,EAAMW,SAAS;EAAC;CAAA,CAAA,CAAA;AAIjD"}
|
|
@@ -2,6 +2,12 @@ import { Accessor } from 'solid-js';
|
|
|
2
2
|
export interface ScrollArrowsProps {
|
|
3
3
|
/** 滚动容器 accessor;组件内部据此计算上下边缘状态 */
|
|
4
4
|
target: Accessor<HTMLElement | undefined>;
|
|
5
|
+
/**
|
|
6
|
+
* 箭头是否可交互(悬停/按住持续滚动)。默认 false:
|
|
7
|
+
* 箭头只是**装饰性提示**(pointer-events-none),不拦截指针、不会与滚动互相触发。
|
|
8
|
+
* 开启后箭头会覆盖列表边缘并参与指针命中,请确保列表项不依赖该区域点击。
|
|
9
|
+
*/
|
|
10
|
+
interactive?: boolean;
|
|
5
11
|
/** 两个箭头共用的额外 class */
|
|
6
12
|
class?: string;
|
|
7
13
|
/** 顶部箭头额外 class(圆角等) */
|
|
@@ -12,6 +18,7 @@ export interface ScrollArrowsProps {
|
|
|
12
18
|
export interface ScrollArrowButtonProps {
|
|
13
19
|
direction: "up" | "down";
|
|
14
20
|
visible: boolean;
|
|
21
|
+
interactive: boolean;
|
|
15
22
|
target: Accessor<HTMLElement | undefined>;
|
|
16
23
|
class?: string;
|
|
17
24
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Dialog as e } from "../../dialog/Dialog/Dialog.js";
|
|
2
|
+
import { createComponent as t, mergeProps as n } from "solid-js/web";
|
|
3
|
+
//#region src/components/sheet/Sheet/Sheet.tsx
|
|
4
|
+
function r(r) {
|
|
5
|
+
return t(e, n(r, { "data-slot": "sheet" }));
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
export { r as Sheet };
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=Sheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sheet.js","names":["Dialog","SheetProps","Sheet","props","_$createComponent","_$mergeProps","_$createComponent","_$mergeProps","Sheet","createComponent","Dialog","mergeProps","props"],"sources":["../../../../src/components/sheet/Sheet/Sheet.tsx"],"sourcesContent":["import { Dialog } from \"~/components/dialog\";\nimport type { SheetProps } from \"../sheet.types\";\n\n/**\n * Sheet 根:复用 Dialog 的滚动锁定、受控/非受控、动画挂载逻辑,\n * 只把 `data-slot` 换成 sheet。\n */\nexport function Sheet(props: SheetProps) {\n return <Dialog {...props} data-slot=\"sheet\" />;\n}\n"],"mappings":";;;AAOA,SAAgBE,EAAMC,GAAmB;CACvC,OAAAC,EAAQJ,GAAMK,EAAKF,GAAK,EAAA,aAAA,QAAA,CAAA,CAAA;AAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Sheet } from './Sheet';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useDialogContext as e } from "../../dialog/Dialog/Dialog.context.js";
|
|
2
|
+
import { Button as t } from "../../button/Button.js";
|
|
3
|
+
import { createComponent as n, memo as r, mergeProps as i } from "solid-js/web";
|
|
4
|
+
import { Show as a, mergeProps as o } from "solid-js";
|
|
5
|
+
import { X as s } from "lucide-solid";
|
|
6
|
+
//#region src/components/sheet/SheetClose/SheetClose.tsx
|
|
7
|
+
var c = (c) => {
|
|
8
|
+
let { setOpen: l } = e(), u = o({
|
|
9
|
+
variant: "ghost",
|
|
10
|
+
size: "sm"
|
|
11
|
+
}, c), d = () => {
|
|
12
|
+
l(!1), u.onClick?.();
|
|
13
|
+
};
|
|
14
|
+
return n(a, {
|
|
15
|
+
get when() {
|
|
16
|
+
return r(() => !u.icon)() && !u.children;
|
|
17
|
+
},
|
|
18
|
+
get fallback() {
|
|
19
|
+
return n(t, i(u, {
|
|
20
|
+
"data-slot": "sheet-close",
|
|
21
|
+
onClick: d
|
|
22
|
+
}));
|
|
23
|
+
},
|
|
24
|
+
get children() {
|
|
25
|
+
return n(t, i(u, {
|
|
26
|
+
"data-slot": "sheet-close",
|
|
27
|
+
get icon() {
|
|
28
|
+
return n(s, {});
|
|
29
|
+
},
|
|
30
|
+
"aria-label": "Close",
|
|
31
|
+
onClick: d
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
//#endregion
|
|
37
|
+
export { c as SheetClose };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=SheetClose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SheetClose.js","names":["Show","mergeProps","X","Button","useDialogContext","SheetCloseProps","SheetClose","props","setOpen","merged","variant","size","const","handleClick","onClick","_$createComponent","when","_$memo","icon","children","fallback","_$mergeProps","mergeProps","_$createComponent","_$memo","_$mergeProps","mergeProps$1","SheetClose","useDialogContext","merged","props","handleClick","setOpen","createComponent","Show","memo","Button","mergeProps","X"],"sources":["../../../../src/components/sheet/SheetClose/SheetClose.tsx"],"sourcesContent":["import { Show, mergeProps } from \"solid-js\";\nimport { X } from \"lucide-solid\";\nimport { Button } from \"~/components/button\";\nimport { useDialogContext } from \"~/components/dialog\";\nimport type { SheetCloseProps } from \"../sheet.types\";\n\n/**\n * 关闭 Sheet。复用 Dialog 的 context,默认渲染一个 X 图标按钮;\n * 传 children 时渲染为普通按钮(如 footer 里的 \"Cancel\")。\n */\nexport const SheetClose = (props: SheetCloseProps) => {\n const { setOpen } = useDialogContext();\n\n const merged = mergeProps({ variant: \"ghost\", size: \"sm\" } as const, props);\n\n const handleClick = () => {\n setOpen(false);\n merged.onClick?.();\n };\n\n return (\n <Show\n when={!merged.icon && !merged.children}\n fallback={\n <Button {...merged} data-slot=\"sheet-close\" onClick={handleClick} />\n }\n >\n <Button\n {...merged}\n data-slot=\"sheet-close\"\n icon={<X />}\n aria-label=\"Close\"\n onClick={handleClick}\n />\n </Show>\n );\n};\n"],"mappings":";;;;;;AAUA,IAAaM,KAAcC,MAA2B;CACpD,IAAM,EAAEC,eAAYJ,EAAiB,GAE/BK,IAASR,EAAW;EAAES,SAAS;EAASC,MAAM;CAAK,GAAYJ,CAAK,GAEpEM,UAAoB;EAExBJ,AADAD,EAAQ,EAAK,GACbC,EAAOK,UAAU;CACnB;CAEA,OAAAC,EACGf,GAAI;EAAA,IACHgB,OAAI;GAAA,OAAEC,QAAA,CAACR,EAAOS,IAAI,CAAA,CAAA,KAAI,CAACT,EAAOU;EAAQ;EAAA,IACtCC,WAAQ;GAAA,OAAAL,EACLZ,GAAMkB,EAAKZ,GAAM;IAAA,aAAA;IAA0BK,SAASD;GAAW,CAAA,CAAA;EAAA;EAAA,IAAAM,WAAA;GAAA,OAAAJ,EAGjEZ,GAAMkB,EACDZ,GAAM;IAAA,aAAA;IAAA,IAEVS,OAAI;KAAA,OAAAH,EAAGb,GAAC,CAAA,CAAA;IAAA;IAAA,cAAA;IAERY,SAASD;GAAW,CAAA,CAAA;EAAA;CAAA,CAAA;AAI5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SheetClose } from './SheetClose';
|