@astryxdesign/core 0.4.7 → 0.5.0-canary.055e75f
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/CHANGELOG.md +161 -1
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +45 -20
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +3 -2
- package/dist/AspectRatio/AspectRatio.d.ts +24 -0
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +23 -4
- package/dist/Avatar/Avatar.d.ts +25 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +58 -19
- package/dist/Avatar/index.d.ts +2 -2
- package/dist/Avatar/index.d.ts.map +1 -1
- package/dist/Avatar/index.js +1 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts +9 -2
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +8 -4
- package/dist/AvatarGroup/AvatarGroupContext.d.ts +2 -1
- package/dist/AvatarGroup/AvatarGroupContext.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +10 -6
- package/dist/Banner/Banner.d.ts +40 -15
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +51 -18
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +17 -4
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +3 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +11 -10
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +11 -6
- package/dist/ButtonGroup/ButtonGroup.d.ts +5 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +26 -7
- package/dist/Calendar/Calendar.d.ts +3 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +14 -15
- package/dist/Calendar/getInitialFocusDate.d.ts +46 -0
- package/dist/Calendar/getInitialFocusDate.d.ts.map +1 -0
- package/dist/Calendar/getInitialFocusDate.js +62 -0
- package/dist/Calendar/styles.d.ts +5 -14
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +15 -15
- package/dist/Card/Card.d.ts +6 -9
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +6 -6
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +3 -3
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +2 -3
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +3 -3
- package/dist/Chat/ChatMessageList.d.ts +22 -3
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +6 -3
- package/dist/Chat/ChatTokenizedText.d.ts +2 -0
- package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
- package/dist/Chat/ChatTokenizedText.js +11 -6
- package/dist/Chat/useChatComposerTokens.js +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +10 -3
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +3 -3
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +15 -4
- package/dist/CodeBlock/highlightRanges.js +1 -1
- package/dist/CodeBlock/highlightStyles.js +13 -13
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +3 -2
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +3 -2
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +4 -3
- package/dist/DateInput/DateInput.d.ts +43 -0
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +22 -2
- package/dist/DateInput/NativeDateField.d.ts +10 -0
- package/dist/DateInput/NativeDateField.d.ts.map +1 -0
- package/dist/DateInput/NativeDateField.js +494 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +82 -23
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.d.ts.map +1 -1
- package/dist/DateInput/nativeDateSegments.d.ts +22 -0
- package/dist/DateInput/nativeDateSegments.d.ts.map +1 -0
- package/dist/DateInput/nativeDateSegments.js +111 -0
- package/dist/DateTimeInput/DateTimeInput.d.ts +21 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +406 -12
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.d.ts.map +1 -1
- package/dist/Dialog/Dialog.d.ts +21 -1
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +110 -58
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +6 -5
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +9 -1
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +3 -2
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +6 -2
- package/dist/HoverCard/HoverCard.d.ts +6 -0
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +104 -3
- package/dist/HoverCard/useHoverCard.d.ts +19 -2
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +74 -26
- package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -1
- package/dist/Indicator/CheckboxIndicator.js +6 -2
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +4 -2
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +2 -19
- package/dist/Layer/LayerDepthContext.d.ts +52 -0
- package/dist/Layer/LayerDepthContext.d.ts.map +1 -0
- package/dist/Layer/LayerDepthContext.js +66 -0
- package/dist/Layer/index.d.ts +3 -0
- package/dist/Layer/index.d.ts.map +1 -1
- package/dist/Layer/index.js +4 -0
- package/dist/Layer/layerStack.d.ts +98 -0
- package/dist/Layer/layerStack.d.ts.map +1 -0
- package/dist/Layer/layerStack.js +306 -0
- package/dist/Layer/useLayerDismissal.d.ts +93 -0
- package/dist/Layer/useLayerDismissal.d.ts.map +1 -0
- package/dist/Layer/useLayerDismissal.js +91 -0
- package/dist/Lightbox/Lightbox.d.ts +1 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +103 -81
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +9 -4
- package/dist/Markdown/index.d.ts +1 -1
- package/dist/Markdown/index.d.ts.map +1 -1
- package/dist/Markdown/parser.d.ts +38 -1
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +182 -32
- package/dist/MobileNav/MobileNav.d.ts +6 -1
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +61 -36
- package/dist/MultiSelector/MultiSelector.d.ts +32 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +63 -11
- package/dist/MultiSelector/index.d.ts +1 -1
- package/dist/MultiSelector/index.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.js +5 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +3 -2
- package/dist/NumberInput/NumberInput.d.ts +6 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +54 -104
- package/dist/NumberInput/numberInputCommit.d.ts +34 -0
- package/dist/NumberInput/numberInputCommit.d.ts.map +1 -0
- package/dist/NumberInput/numberInputCommit.js +71 -0
- package/dist/NumberInput/numberParser.d.ts +64 -0
- package/dist/NumberInput/numberParser.d.ts.map +1 -0
- package/dist/NumberInput/numberParser.js +350 -0
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +3 -2
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +3 -2
- package/dist/Overlay/Overlay.d.ts.map +1 -1
- package/dist/Overlay/Overlay.js +3 -2
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +20 -17
- package/dist/PowerSearch/PowerSearch.d.ts +8 -2
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +19 -6
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +3 -1
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +28 -6
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts +3 -1
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +110 -27
- package/dist/PowerSearch/types.d.ts +2 -0
- package/dist/PowerSearch/types.d.ts.map +1 -1
- package/dist/PowerSearch/usePowerSearchSource.d.ts +6 -1
- package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
- package/dist/PowerSearch/usePowerSearchSource.js +14 -5
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +18 -5
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +3 -2
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +3 -2
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +3 -3
- package/dist/Selector/Selector.d.ts +17 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +81 -14
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +4 -3
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +8 -7
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +4 -3
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +37 -5
- package/dist/Spinner/Spinner.d.ts +3 -3
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +130 -78
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +6 -1
- package/dist/Stepper/Step.d.ts +140 -0
- package/dist/Stepper/Step.d.ts.map +1 -0
- package/dist/Stepper/Step.js +1045 -0
- package/dist/Stepper/StepStatus.d.ts +24 -0
- package/dist/Stepper/StepStatus.d.ts.map +1 -0
- package/dist/Stepper/StepStatus.js +1 -0
- package/dist/Stepper/Stepper.d.ts +93 -0
- package/dist/Stepper/Stepper.d.ts.map +1 -0
- package/dist/Stepper/Stepper.js +184 -0
- package/dist/Stepper/StepperContext.d.ts +41 -0
- package/dist/Stepper/StepperContext.d.ts.map +1 -0
- package/dist/Stepper/StepperContext.js +34 -0
- package/dist/Stepper/index.d.ts +8 -0
- package/dist/Stepper/index.d.ts.map +1 -0
- package/dist/Stepper/index.js +7 -0
- package/dist/Stepper/stepper.stylex.d.ts +15 -0
- package/dist/Stepper/stepper.stylex.d.ts.map +1 -0
- package/dist/Stepper/stepper.stylex.js +20 -0
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +8 -3
- package/dist/TabList/Tab.d.ts +15 -2
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +32 -7
- package/dist/TabList/TabList.d.ts +46 -7
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +353 -23
- package/dist/TabList/TabListContext.d.ts +11 -1
- package/dist/TabList/TabListContext.d.ts.map +1 -1
- package/dist/TabList/TabListContext.js +11 -2
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +3 -2
- package/dist/TabList/index.d.ts +2 -2
- package/dist/TabList/index.d.ts.map +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +10 -2
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +3 -6
- package/dist/Table/TableRow.d.ts +16 -5
- package/dist/Table/TableRow.d.ts.map +1 -1
- package/dist/Table/TableRow.js +16 -5
- package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.js +73 -4
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +20 -8
- package/dist/Table/plugins/pagination/useTablePagination.d.ts +3 -0
- package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +21 -4
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +7 -2
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -1
- package/dist/Table/plugins/rowStatus/useTableRowStatus.js +10 -3
- package/dist/Table/plugins/selection/useTableSelection.d.ts +16 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +19 -5
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +3 -4
- package/dist/Table/types.d.ts +22 -4
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +5 -0
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +6 -2
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +9 -3
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +3 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +3 -2
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +5 -3
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +27 -8
- package/dist/Token/TokenLink.d.ts.map +1 -1
- package/dist/Token/TokenLink.js +2 -2
- package/dist/Tokenizer/Tokenizer.d.ts +3 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +2 -0
- package/dist/Tooltip/Tooltip.d.ts +5 -0
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.d.ts +5 -0
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +39 -24
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +5 -4
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +3 -3
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +4 -3
- package/dist/Typeahead/BaseTypeahead.d.ts +2 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +68 -29
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +3 -2
- package/dist/astryx.css +98 -7
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useFocusTrap.d.ts +7 -4
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +60 -95
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +3 -18
- package/dist/hooks/useMergedRefs.d.ts +18 -0
- package/dist/hooks/useMergedRefs.d.ts.map +1 -0
- package/dist/hooks/useMergedRefs.js +25 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +24 -4
- package/dist/theme/syntax/tokens.d.ts +1 -1
- package/dist/theme/syntax/tokens.d.ts.map +1 -1
- package/dist/theme/syntax/tokens.js +5 -2
- package/dist/utils/groupItems.d.ts +5 -1
- package/dist/utils/groupItems.d.ts.map +1 -1
- package/dist/utils/groupItems.js +9 -9
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/isApplePlatform.d.ts +18 -0
- package/dist/utils/isApplePlatform.d.ts.map +1 -0
- package/dist/utils/isApplePlatform.js +37 -0
- package/dist/utils/sharedResizeObserver.d.ts.map +1 -1
- package/dist/utils/sharedResizeObserver.js +10 -1
- package/dist/utils/timeParser.d.ts +1 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +26 -12
- package/locales/en.json +154 -10
- package/locales/pseudo.json +108 -0
- package/package.json +8 -3
- package/src/AlertDialog/AlertDialog.doc.mjs +114 -30
- package/src/AlertDialog/AlertDialog.test.tsx +211 -2
- package/src/AlertDialog/AlertDialog.tsx +62 -20
- package/src/AppShell/AppShell.tsx +3 -2
- package/src/AspectRatio/AspectRatio.doc.mjs +6 -3
- package/src/AspectRatio/AspectRatio.test.tsx +57 -10
- package/src/AspectRatio/AspectRatio.tsx +40 -1
- package/src/Avatar/Avatar.doc.mjs +14 -3
- package/src/Avatar/Avatar.test.tsx +97 -0
- package/src/Avatar/Avatar.tsx +125 -52
- package/src/Avatar/index.ts +2 -2
- package/src/AvatarGroup/AvatarGroup.doc.mjs +8 -2
- package/src/AvatarGroup/AvatarGroup.test.tsx +24 -0
- package/src/AvatarGroup/AvatarGroup.tsx +15 -6
- package/src/AvatarGroup/AvatarGroupContext.ts +5 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +10 -4
- package/src/Banner/Banner.doc.mjs +13 -11
- package/src/Banner/Banner.test.tsx +102 -15
- package/src/Banner/Banner.tsx +72 -25
- package/src/BottomSheet/BottomSheet.test.tsx +123 -0
- package/src/BottomSheet/BottomSheet.tsx +17 -4
- package/src/BottomSheet/BottomSheetSwitcher.tsx +3 -2
- package/src/Breadcrumbs/BreadcrumbItem.tsx +9 -5
- package/src/Button/Button.doc.mjs +24 -1
- package/src/Button/Button.test.tsx +32 -4
- package/src/Button/Button.tsx +12 -5
- package/src/ButtonGroup/ButtonGroup.doc.mjs +10 -1
- package/src/ButtonGroup/ButtonGroup.test.tsx +404 -1
- package/src/ButtonGroup/ButtonGroup.tsx +23 -5
- package/src/Calendar/Calendar.doc.mjs +4 -3
- package/src/Calendar/Calendar.test.tsx +103 -0
- package/src/Calendar/Calendar.tsx +19 -16
- package/src/Calendar/getInitialFocusDate.test.ts +94 -0
- package/src/Calendar/getInitialFocusDate.ts +93 -0
- package/src/Calendar/styles.ts +49 -31
- package/src/Card/Card.doc.mjs +10 -7
- package/src/Card/Card.test.tsx +44 -19
- package/src/Card/Card.tsx +12 -32
- package/src/Carousel/Carousel.tsx +3 -2
- package/src/Chat/ChatComposerInput.tsx +5 -1
- package/src/Chat/ChatLayout.tsx +3 -2
- package/src/Chat/ChatMessageList.doc.mjs +9 -1
- package/src/Chat/ChatMessageList.test.tsx +46 -0
- package/src/Chat/ChatMessageList.tsx +28 -4
- package/src/Chat/ChatTokenizedText.tsx +17 -10
- package/src/Chat/useChatComposerTokens.ts +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +2 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +15 -0
- package/src/CheckboxInput/CheckboxInput.tsx +8 -2
- package/src/ClickableCard/ClickableCard.tsx +3 -2
- package/src/CodeBlock/CodeBlock.doc.mjs +16 -4
- package/src/CodeBlock/CodeBlock.test.tsx +37 -0
- package/src/CodeBlock/CodeBlock.tsx +20 -4
- package/src/CodeBlock/highlightRanges.ts +1 -1
- package/src/CodeBlock/highlightStyles.ts +13 -13
- package/src/CommandPalette/CommandPaletteInput.tsx +3 -2
- package/src/CommandPalette/CommandPaletteItem.tsx +3 -2
- package/src/ContextMenu/ContextMenu.doc.mjs +5 -0
- package/src/ContextMenu/ContextMenu.tsx +4 -3
- package/src/DateInput/DateInput.doc.mjs +16 -0
- package/src/DateInput/DateInput.tsx +55 -2
- package/src/DateInput/DateInputTouch.test.tsx +146 -32
- package/src/DateInput/NativeDateField.test.tsx +635 -0
- package/src/DateInput/NativeDateField.tsx +641 -0
- package/src/DateInput/TouchDateField.tsx +108 -24
- package/src/DateInput/index.ts +1 -0
- package/src/DateInput/nativeDateSegments.ts +127 -0
- package/src/DateTimeInput/DateTimeInput.doc.mjs +18 -0
- package/src/DateTimeInput/DateTimeInput.test.tsx +1088 -0
- package/src/DateTimeInput/DateTimeInput.tsx +556 -24
- package/src/DateTimeInput/index.ts +1 -0
- package/src/Dialog/Dialog.doc.mjs +8 -3
- package/src/Dialog/Dialog.test.tsx +429 -2
- package/src/Dialog/Dialog.tsx +133 -58
- package/src/DropdownMenu/DropdownMenu.doc.mjs +6 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +8 -5
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +8 -11
- package/src/Field/Field.doc.mjs +13 -2
- package/src/Field/FieldLabel.test.tsx +29 -0
- package/src/Field/FieldLabel.tsx +7 -0
- package/src/FileInput/FileInput.tsx +3 -2
- package/src/Heading/Heading.test.tsx +23 -1
- package/src/Heading/Heading.tsx +6 -2
- package/src/HoverCard/HoverCard.doc.mjs +13 -2
- package/src/HoverCard/HoverCard.test.tsx +154 -4
- package/src/HoverCard/HoverCard.tsx +143 -3
- package/src/HoverCard/useHoverCard.tsx +104 -33
- package/src/Indicator/CheckboxIndicator.tsx +14 -8
- package/src/Indicator/Indicator.doc.mjs +2 -0
- package/src/Item/Item.tsx +5 -4
- package/src/Kbd/Kbd.tsx +2 -19
- package/src/Layer/LayerDepthContext.tsx +62 -0
- package/src/Layer/index.ts +9 -0
- package/src/Layer/layerDismissalFamilies.test.tsx +359 -0
- package/src/Layer/layerDismissalInvariants.test.tsx +417 -0
- package/src/Layer/layerStack.ts +362 -0
- package/src/Layer/useLayer.test.tsx +62 -14
- package/src/Layer/useLayerDismissal.test.tsx +469 -0
- package/src/Layer/useLayerDismissal.ts +173 -0
- package/src/Layout/Layout.doc.mjs +2 -2
- package/src/Lightbox/Lightbox.doc.mjs +12 -0
- package/src/Lightbox/Lightbox.tsx +124 -102
- package/src/Link/Link.doc.mjs +39 -0
- package/src/Markdown/Markdown.doc.mjs +5 -0
- package/src/Markdown/Markdown.tsx +9 -4
- package/src/Markdown/incremental.test.ts +16 -2
- package/src/Markdown/index.ts +1 -0
- package/src/Markdown/parser.perf.test.ts +96 -1
- package/src/Markdown/parser.test.ts +178 -2
- package/src/Markdown/parser.ts +253 -32
- package/src/MobileNav/MobileNav.tsx +62 -36
- package/src/MoreMenu/MoreMenu.doc.mjs +7 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +49 -1
- package/src/MultiSelector/MultiSelector.test.tsx +277 -0
- package/src/MultiSelector/MultiSelector.tsx +142 -11
- package/src/MultiSelector/index.ts +1 -0
- package/src/NavIcon/NavIcon.doc.mjs +8 -2
- package/src/NavIcon/NavIcon.test.tsx +9 -0
- package/src/NavIcon/NavIcon.tsx +5 -1
- package/src/NavMenu/NavHeadingMenu.tsx +3 -2
- package/src/NumberInput/NumberInput.doc.mjs +31 -7
- package/src/NumberInput/NumberInput.test.tsx +436 -8
- package/src/NumberInput/NumberInput.tsx +62 -114
- package/src/NumberInput/numberInputCommit.test.ts +72 -0
- package/src/NumberInput/numberInputCommit.ts +103 -0
- package/src/NumberInput/numberParser.docblock.test.ts +234 -0
- package/src/NumberInput/numberParser.test.ts +222 -0
- package/src/NumberInput/numberParser.ts +403 -0
- package/src/Outline/Outline.tsx +3 -2
- package/src/OverflowList/OverflowList.tsx +3 -2
- package/src/Overlay/Overlay.tsx +3 -2
- package/src/Pagination/Pagination.test.tsx +3 -2
- package/src/Popover/usePopover.tsx +31 -28
- package/src/PowerSearch/PowerSearch.doc.mjs +160 -28
- package/src/PowerSearch/PowerSearch.test.tsx +240 -1
- package/src/PowerSearch/PowerSearch.tsx +34 -5
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +288 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +29 -2
- package/src/PowerSearch/PowerSearchValueEditor.test.tsx +111 -1
- package/src/PowerSearch/PowerSearchValueEditor.tsx +124 -10
- package/src/PowerSearch/types.ts +2 -0
- package/src/PowerSearch/usePowerSearchSource.test.ts +82 -2
- package/src/PowerSearch/usePowerSearchSource.ts +13 -3
- package/src/ProgressBar/ProgressBar.doc.mjs +42 -6
- package/src/ProgressBar/ProgressBar.test.tsx +24 -0
- package/src/ProgressBar/ProgressBar.tsx +28 -8
- package/src/Resizable/ResizeHandle.tsx +3 -2
- package/src/SegmentedControl/SegmentedControl.tsx +3 -2
- package/src/SelectableCard/SelectableCard.tsx +3 -2
- package/src/Selector/Selector.doc.mjs +26 -1
- package/src/Selector/Selector.test.tsx +311 -1
- package/src/Selector/Selector.tsx +139 -16
- package/src/SideNav/SideNav.doc.mjs +6 -6
- package/src/SideNav/SideNav.tsx +4 -2
- package/src/SideNav/SideNavHeading.tsx +12 -12
- package/src/SideNav/SideNavItem.tsx +4 -2
- package/src/Slider/Slider.test.tsx +106 -1
- package/src/Slider/Slider.tsx +55 -3
- package/src/Spinner/Spinner.test.tsx +147 -1
- package/src/Spinner/Spinner.tsx +120 -101
- package/src/StatusDot/StatusDot.doc.mjs +8 -2
- package/src/StatusDot/StatusDot.test.tsx +9 -0
- package/src/StatusDot/StatusDot.tsx +7 -1
- package/src/Stepper/Step.doc.mjs +98 -0
- package/src/Stepper/Step.tsx +1638 -0
- package/src/Stepper/StepStatus.ts +26 -0
- package/src/Stepper/Stepper.doc.mjs +370 -0
- package/src/Stepper/Stepper.test.tsx +1024 -0
- package/src/Stepper/Stepper.tsx +258 -0
- package/src/Stepper/StepperContext.ts +71 -0
- package/src/Stepper/index.ts +18 -0
- package/src/Stepper/stepper.stylex.ts +19 -0
- package/src/Switch/Switch.doc.mjs +2 -0
- package/src/Switch/Switch.test.tsx +10 -0
- package/src/Switch/Switch.tsx +6 -2
- package/src/TabList/Tab.doc.mjs +13 -1
- package/src/TabList/Tab.tsx +67 -7
- package/src/TabList/TabList.doc.mjs +22 -6
- package/src/TabList/TabList.test.tsx +559 -0
- package/src/TabList/TabList.tsx +490 -22
- package/src/TabList/TabListContext.ts +13 -2
- package/src/TabList/TabMenu.tsx +3 -2
- package/src/TabList/index.ts +6 -2
- package/src/Table/BaseTable.tsx +12 -4
- package/src/Table/Table.doc.mjs +9 -2
- package/src/Table/Table.test.tsx +132 -14
- package/src/Table/Table.tsx +3 -8
- package/src/Table/TableBody.doc.mjs +40 -0
- package/src/Table/TableFooter.doc.mjs +40 -0
- package/src/Table/TableHeader.doc.mjs +40 -0
- package/src/Table/TableRow.tsx +16 -5
- package/src/Table/plugins/filtering/useTableFiltering.test.tsx +44 -6
- package/src/Table/plugins/filtering/useTableFiltering.tsx +100 -4
- package/src/Table/plugins/groupedRows/useTableGroupedRows-perf.test.tsx +112 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +100 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +17 -8
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +34 -4
- package/src/Table/plugins/pagination/useTablePagination.tsx +35 -3
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +9 -2
- package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +13 -7
- package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +12 -3
- package/src/Table/plugins/selection/useTableSelection.test.tsx +76 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +40 -7
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -2
- package/src/Table/types.ts +22 -4
- package/src/Table/useBaseTablePlugins.ts +5 -0
- package/src/Table/useTableGroupedRows.doc.mjs +5 -4
- package/src/Table/useTablePagination.doc.mjs +7 -0
- package/src/Table/useTableRowStatus.doc.mjs +1 -1
- package/src/Table/useTableSelection.doc.mjs +31 -0
- package/src/Text/Text.test.tsx +23 -1
- package/src/Text/Text.tsx +6 -2
- package/src/TextArea/TextArea.doc.mjs +8 -2
- package/src/TextArea/TextArea.test.tsx +11 -0
- package/src/TextArea/TextArea.tsx +15 -8
- package/src/TextInput/TextInput.doc.mjs +10 -0
- package/src/TextInput/TextInput.tsx +3 -2
- package/src/Thumbnail/Thumbnail.doc.mjs +1 -1
- package/src/TimeInput/TimeInput.tsx +2 -2
- package/src/Timestamp/Timestamp.test.tsx +18 -0
- package/src/Timestamp/Timestamp.tsx +4 -2
- package/src/Toast/Toast.doc.mjs +6 -0
- package/src/Toast/ToastViewport.tsx +17 -1
- package/src/Token/TokenLink.tsx +2 -2
- package/src/Tokenizer/Tokenizer.doc.mjs +27 -0
- package/src/Tokenizer/Tokenizer.tsx +4 -0
- package/src/Toolbar/Toolbar.doc.mjs +5 -0
- package/src/Tooltip/Tooltip.doc.mjs +5 -0
- package/src/Tooltip/Tooltip.test.tsx +32 -0
- package/src/Tooltip/Tooltip.tsx +5 -0
- package/src/Tooltip/useTooltip.tsx +47 -24
- package/src/TopNav/TopNavHeading.tsx +5 -4
- package/src/TopNav/TopNavMegaMenu.tsx +3 -2
- package/src/TopNav/TopNavMenu.tsx +4 -3
- package/src/Typeahead/BaseTypeahead.doc.mjs +11 -0
- package/src/Typeahead/BaseTypeahead.tsx +85 -33
- package/src/Typeahead/Typeahead.doc.mjs +5 -0
- package/src/Typeahead/Typeahead.test.tsx +49 -0
- package/src/Typeahead/Typeahead.tsx +3 -2
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useContainerReveal.doc.mjs +2 -2
- package/src/hooks/useFocusTrap.test.tsx +14 -0
- package/src/hooks/useFocusTrap.ts +62 -111
- package/src/hooks/useFocusTrapEscapeShim.test.tsx +165 -0
- package/src/hooks/useHotkeys.ts +3 -18
- package/src/hooks/useMergedRefs.doc.mjs +79 -0
- package/src/hooks/useMergedRefs.test.tsx +62 -0
- package/src/hooks/useMergedRefs.ts +36 -0
- package/src/index.ts +1 -0
- package/src/raw-import.d.ts +14 -0
- package/src/theme/MediaTheme.doc.mjs +5 -5
- package/src/theme/derivedVarRegistry.test.ts +19 -3
- package/src/theme/derivedVarRegistry.ts +23 -4
- package/src/theme/generateThemeRules.test.ts +37 -0
- package/src/theme/syntax/tokens.ts +5 -2
- package/src/utils/groupItems.ts +12 -6
- package/src/utils/index.ts +1 -1
- package/src/utils/isApplePlatform.test.ts +61 -0
- package/src/utils/isApplePlatform.ts +37 -0
- package/src/utils/sharedResizeObserver.ts +10 -2
- package/src/utils/timeParser.test.ts +6 -1
- package/src/utils/timeParser.ts +35 -13
- package/src/__tests__/inputWidthContract.test.tsx +0 -69
package/dist/Markdown/parser.js
CHANGED
|
@@ -13,6 +13,16 @@
|
|
|
13
13
|
// Types
|
|
14
14
|
// ---------------------------------------------------------------------------
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Where a block sits in the source string handed to `parseMarkdown`:
|
|
18
|
+
* `source.slice(start, end)` is the block, and `end` excludes the block's
|
|
19
|
+
* trailing blank lines.
|
|
20
|
+
*
|
|
21
|
+
* An object rather than a `[start, end]` tuple so a second way of addressing
|
|
22
|
+
* the same block — line numbers, once a consumer needs them — can be added as
|
|
23
|
+
* optional fields without breaking anyone.
|
|
24
|
+
*/
|
|
25
|
+
|
|
16
26
|
// ---------------------------------------------------------------------------
|
|
17
27
|
// Parse options
|
|
18
28
|
// ---------------------------------------------------------------------------
|
|
@@ -47,7 +57,8 @@ function resolveOptions(arg) {
|
|
|
47
57
|
const opts = arg;
|
|
48
58
|
return {
|
|
49
59
|
sourceIds: opts.sourceIds,
|
|
50
|
-
autolink: opts.autolink
|
|
60
|
+
autolink: opts.autolink,
|
|
61
|
+
sourceRanges: opts.sourceRanges
|
|
51
62
|
};
|
|
52
63
|
}
|
|
53
64
|
|
|
@@ -168,10 +179,17 @@ function extractLinkDefinitions(input) {
|
|
|
168
179
|
cleaned: input
|
|
169
180
|
};
|
|
170
181
|
}
|
|
171
|
-
const
|
|
182
|
+
const lineMap = [];
|
|
183
|
+
for (let index = 0; index < lines.length; index++) {
|
|
184
|
+
if (keep[index]) {
|
|
185
|
+
lineMap.push(index);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const cleaned = lineMap.map(index => lines[index]).join('\n');
|
|
172
189
|
return {
|
|
173
190
|
defs,
|
|
174
|
-
cleaned
|
|
191
|
+
cleaned,
|
|
192
|
+
lineMap
|
|
175
193
|
};
|
|
176
194
|
}
|
|
177
195
|
|
|
@@ -250,7 +268,7 @@ function matchReferenceImage(text, start, linkDefs) {
|
|
|
250
268
|
const rawLabel = text.slice(altClose + 2, labelClose);
|
|
251
269
|
const label = rawLabel === '' ? alt : rawLabel;
|
|
252
270
|
const src = linkDefs.get(normalizeLinkLabel(label));
|
|
253
|
-
if (src != null) {
|
|
271
|
+
if (src != null && isSafeUrl(src)) {
|
|
254
272
|
return {
|
|
255
273
|
node: {
|
|
256
274
|
type: 'image',
|
|
@@ -267,7 +285,7 @@ function matchReferenceImage(text, start, linkDefs) {
|
|
|
267
285
|
return null;
|
|
268
286
|
}
|
|
269
287
|
const src = linkDefs.get(normalizeLinkLabel(alt));
|
|
270
|
-
if (src == null) {
|
|
288
|
+
if (src == null || !isSafeUrl(src)) {
|
|
271
289
|
return null;
|
|
272
290
|
}
|
|
273
291
|
return {
|
|
@@ -965,6 +983,19 @@ function isTableSeparator(line) {
|
|
|
965
983
|
return nonEmpty.length > 0 && nonEmpty.every(cell => /^:?-+:?$/.test(cell));
|
|
966
984
|
}
|
|
967
985
|
|
|
986
|
+
/**
|
|
987
|
+
* The same options for content parsed out of an enclosing block. Ranges are a
|
|
988
|
+
* top-level contract: a list item's or a blockquote's children are parsed from
|
|
989
|
+
* text the caller reassembled (markers and `>` prefixes stripped), so an
|
|
990
|
+
* offset into it would not address the document.
|
|
991
|
+
*/
|
|
992
|
+
function nested(opts) {
|
|
993
|
+
return opts.sourceRanges ? {
|
|
994
|
+
...opts,
|
|
995
|
+
sourceRanges: false
|
|
996
|
+
} : opts;
|
|
997
|
+
}
|
|
998
|
+
|
|
968
999
|
/**
|
|
969
1000
|
* Returns true when a line could start a new block — used to stop paragraph
|
|
970
1001
|
* continuation. Every regex here uses bounded or single-class quantifiers
|
|
@@ -1095,7 +1126,7 @@ function parseList(lines, startIndex, ordered, opts) {
|
|
|
1095
1126
|
}
|
|
1096
1127
|
items.push({
|
|
1097
1128
|
checked,
|
|
1098
|
-
children: parseMarkdownImpl(itemText, opts)
|
|
1129
|
+
children: parseMarkdownImpl(itemText, nested(opts))
|
|
1099
1130
|
});
|
|
1100
1131
|
|
|
1101
1132
|
// CommonMark loose list: blank line(s) between items of the same style
|
|
@@ -1140,7 +1171,8 @@ function parseMarkdownImpl(input, baseOpts) {
|
|
|
1140
1171
|
// parse.
|
|
1141
1172
|
const {
|
|
1142
1173
|
defs,
|
|
1143
|
-
cleaned
|
|
1174
|
+
cleaned,
|
|
1175
|
+
lineMap
|
|
1144
1176
|
} = extractLinkDefinitions(input);
|
|
1145
1177
|
const inherited = baseOpts.linkDefs;
|
|
1146
1178
|
let linkDefs;
|
|
@@ -1157,8 +1189,22 @@ function parseMarkdownImpl(input, baseOpts) {
|
|
|
1157
1189
|
} : baseOpts;
|
|
1158
1190
|
const lines = cleaned.split('\n');
|
|
1159
1191
|
const blocks = [];
|
|
1192
|
+
// The line each block started on, parallel to `blocks`. Only collected when
|
|
1193
|
+
// ranges were asked for; a block's end is resolved after the loop, since the
|
|
1194
|
+
// branch that produced it has already moved `index` past whatever it read.
|
|
1195
|
+
const blockStartLines = opts.sourceRanges ? [] : null;
|
|
1196
|
+
// Set only by a block that consumes blank lines as content, where the
|
|
1197
|
+
// positional end derivation would trim them away.
|
|
1198
|
+
const blockEndLines = opts.sourceRanges ? [] : null;
|
|
1199
|
+
let blockStartLine = 0;
|
|
1200
|
+
const pushBlock = (node, endLine) => {
|
|
1201
|
+
blocks.push(node);
|
|
1202
|
+
blockStartLines?.push(blockStartLine);
|
|
1203
|
+
blockEndLines?.push(endLine);
|
|
1204
|
+
};
|
|
1160
1205
|
let index = 0;
|
|
1161
1206
|
while (index < lines.length) {
|
|
1207
|
+
blockStartLine = index;
|
|
1162
1208
|
const line = lines[index];
|
|
1163
1209
|
if (line.trim() === '') {
|
|
1164
1210
|
index++;
|
|
@@ -1177,18 +1223,21 @@ function parseMarkdownImpl(input, baseOpts) {
|
|
|
1177
1223
|
index++;
|
|
1178
1224
|
}
|
|
1179
1225
|
index++; // skip closing fence
|
|
1180
|
-
|
|
1226
|
+
// A fence owns its blank lines, and an unterminated one (mid-stream)
|
|
1227
|
+
// can end on them, so it states its own end rather than letting the
|
|
1228
|
+
// positional derivation trim them off.
|
|
1229
|
+
pushBlock({
|
|
1181
1230
|
type: 'codeblock',
|
|
1182
1231
|
language,
|
|
1183
1232
|
content: codeLines.join('\n')
|
|
1184
|
-
});
|
|
1233
|
+
}, Math.min(index, lines.length) - 1);
|
|
1185
1234
|
continue;
|
|
1186
1235
|
}
|
|
1187
1236
|
|
|
1188
1237
|
// --- Heading ---
|
|
1189
1238
|
const headingMatch = line.match(/^(#{1,6}) +(.*)/);
|
|
1190
1239
|
if (headingMatch) {
|
|
1191
|
-
|
|
1240
|
+
pushBlock({
|
|
1192
1241
|
type: 'heading',
|
|
1193
1242
|
level: headingMatch[1].length,
|
|
1194
1243
|
children: parseInlineEntry(headingMatch[2], opts)
|
|
@@ -1199,7 +1248,7 @@ function parseMarkdownImpl(input, baseOpts) {
|
|
|
1199
1248
|
|
|
1200
1249
|
// --- HR (must precede list check to handle `- - -`, `* * *`, `_ _ _`) ---
|
|
1201
1250
|
if (isHorizontalRule(line)) {
|
|
1202
|
-
|
|
1251
|
+
pushBlock({
|
|
1203
1252
|
type: 'hr'
|
|
1204
1253
|
});
|
|
1205
1254
|
index++;
|
|
@@ -1207,9 +1256,11 @@ function parseMarkdownImpl(input, baseOpts) {
|
|
|
1207
1256
|
}
|
|
1208
1257
|
|
|
1209
1258
|
// --- Standalone image ---
|
|
1259
|
+
// An unsafe src falls through to the paragraph path and renders as
|
|
1260
|
+
// literal text, the same rule the inline image path applies.
|
|
1210
1261
|
const imageMatch = line.match(/^!\[([^\]]*)\]\(([^)]+)\)/);
|
|
1211
|
-
if (imageMatch && line.trim() === imageMatch[0]) {
|
|
1212
|
-
|
|
1262
|
+
if (imageMatch && line.trim() === imageMatch[0] && isSafeUrl(imageMatch[2])) {
|
|
1263
|
+
pushBlock({
|
|
1213
1264
|
type: 'image',
|
|
1214
1265
|
alt: imageMatch[1],
|
|
1215
1266
|
src: imageMatch[2]
|
|
@@ -1221,7 +1272,7 @@ function parseMarkdownImpl(input, baseOpts) {
|
|
|
1221
1272
|
// --- Table (with or without leading pipe) ---
|
|
1222
1273
|
if (index + 1 < lines.length && line.includes('|') && isTableSeparator(lines[index + 1])) {
|
|
1223
1274
|
const tableResult = parseTable(lines, index, opts);
|
|
1224
|
-
|
|
1275
|
+
pushBlock(tableResult.node);
|
|
1225
1276
|
index = tableResult.nextIndex;
|
|
1226
1277
|
continue;
|
|
1227
1278
|
}
|
|
@@ -1233,9 +1284,9 @@ function parseMarkdownImpl(input, baseOpts) {
|
|
|
1233
1284
|
quoteLines.push(lines[index].replace(/^> ?/, ''));
|
|
1234
1285
|
index++;
|
|
1235
1286
|
}
|
|
1236
|
-
|
|
1287
|
+
pushBlock({
|
|
1237
1288
|
type: 'blockquote',
|
|
1238
|
-
children: parseMarkdownImpl(quoteLines.join('\n'), opts)
|
|
1289
|
+
children: parseMarkdownImpl(quoteLines.join('\n'), nested(opts))
|
|
1239
1290
|
});
|
|
1240
1291
|
continue;
|
|
1241
1292
|
}
|
|
@@ -1243,7 +1294,7 @@ function parseMarkdownImpl(input, baseOpts) {
|
|
|
1243
1294
|
// --- Unordered list ---
|
|
1244
1295
|
if (/^ {0,9}[-*+] /.test(line)) {
|
|
1245
1296
|
const listResult = parseList(lines, index, false, opts);
|
|
1246
|
-
|
|
1297
|
+
pushBlock(listResult.node);
|
|
1247
1298
|
index = listResult.nextIndex;
|
|
1248
1299
|
continue;
|
|
1249
1300
|
}
|
|
@@ -1251,7 +1302,7 @@ function parseMarkdownImpl(input, baseOpts) {
|
|
|
1251
1302
|
// --- Ordered list ---
|
|
1252
1303
|
if (/^ {0,9}\d+[.)] /.test(line)) {
|
|
1253
1304
|
const listResult = parseList(lines, index, true, opts);
|
|
1254
|
-
|
|
1305
|
+
pushBlock(listResult.node);
|
|
1255
1306
|
index = listResult.nextIndex;
|
|
1256
1307
|
continue;
|
|
1257
1308
|
}
|
|
@@ -1263,14 +1314,63 @@ function parseMarkdownImpl(input, baseOpts) {
|
|
|
1263
1314
|
paraLines.push(lines[index]);
|
|
1264
1315
|
index++;
|
|
1265
1316
|
}
|
|
1266
|
-
|
|
1317
|
+
pushBlock({
|
|
1267
1318
|
type: 'paragraph',
|
|
1268
1319
|
children: parseInlineEntry(paraLines.join('\n'), opts)
|
|
1269
1320
|
});
|
|
1270
1321
|
}
|
|
1322
|
+
if (blockStartLines != null) {
|
|
1323
|
+
stampSourceRanges(blocks, blockStartLines, blockEndLines ?? [], lines, lineMap, input, opts);
|
|
1324
|
+
}
|
|
1271
1325
|
return blocks;
|
|
1272
1326
|
}
|
|
1273
1327
|
|
|
1328
|
+
/**
|
|
1329
|
+
* Give each block the offsets it occupies in the original input.
|
|
1330
|
+
*
|
|
1331
|
+
* Blocks are contiguous and in source order, so a block runs from its own
|
|
1332
|
+
* first line to the line before the next block starts, minus the blank lines
|
|
1333
|
+
* between them. Offsets are computed against the *input*, not the text the
|
|
1334
|
+
* block loop saw: link reference definitions are stripped before parsing, and
|
|
1335
|
+
* `lineMap` says which input line each surviving line came from.
|
|
1336
|
+
*/
|
|
1337
|
+
function stampSourceRanges(blocks, blockStartLines, blockEndLines, lines, lineMap, input, opts) {
|
|
1338
|
+
const base = opts.baseOffset ?? 0;
|
|
1339
|
+
// Offset of the first character of every line of the input.
|
|
1340
|
+
const inputLineStarts = [0];
|
|
1341
|
+
for (let i = 0; i < input.length; i++) {
|
|
1342
|
+
if (input[i] === '\n') {
|
|
1343
|
+
inputLineStarts.push(i + 1);
|
|
1344
|
+
}
|
|
1345
|
+
}
|
|
1346
|
+
// Stripping removes whole lines and never edits one, so a parsed line's
|
|
1347
|
+
// length is its input line's length.
|
|
1348
|
+
const lineStart = line => base + inputLineStarts[lineMap != null ? lineMap[line] : line];
|
|
1349
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
1350
|
+
const startLine = blockStartLines[i];
|
|
1351
|
+
let endLine = blockEndLines[i];
|
|
1352
|
+
if (endLine == null) {
|
|
1353
|
+
const nextStart = i + 1 < blocks.length ? blockStartLines[i + 1] : lines.length;
|
|
1354
|
+
endLine = nextStart - 1;
|
|
1355
|
+
while (endLine > startLine && lines[endLine].trim() === '') {
|
|
1356
|
+
endLine--;
|
|
1357
|
+
}
|
|
1358
|
+
}
|
|
1359
|
+
// Exactly the block's own lines, verbatim — a CRLF document's trailing
|
|
1360
|
+
// `\r` included, since the parser reads it as part of the line too and a
|
|
1361
|
+
// range that dropped it would slice to something that re-parses
|
|
1362
|
+
// differently.
|
|
1363
|
+
const end = lineStart(endLine) + lines[endLine].length;
|
|
1364
|
+
blocks[i] = {
|
|
1365
|
+
...blocks[i],
|
|
1366
|
+
range: {
|
|
1367
|
+
start: lineStart(startLine),
|
|
1368
|
+
end
|
|
1369
|
+
}
|
|
1370
|
+
};
|
|
1371
|
+
}
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1274
1374
|
// ---------------------------------------------------------------------------
|
|
1275
1375
|
// Incremental parsing
|
|
1276
1376
|
// ---------------------------------------------------------------------------
|
|
@@ -1286,12 +1386,23 @@ export function createIncrementalState() {
|
|
|
1286
1386
|
|
|
1287
1387
|
/**
|
|
1288
1388
|
* Find the line-index of the last blank line that is NOT inside a fenced code
|
|
1289
|
-
* block
|
|
1389
|
+
* block, and report whether a fence is still open at the end of the input.
|
|
1390
|
+
* Returns -1 when nothing is settled.
|
|
1391
|
+
*
|
|
1392
|
+
* This index must never move backwards as more of the document arrives. The
|
|
1393
|
+
* caller's cache is keyed on the settled text staying a prefix of what it was,
|
|
1394
|
+
* so a boundary that retracts by one line costs a re-parse of every block in
|
|
1395
|
+
* the document. Two things used to retract it: a blank last line, which is
|
|
1396
|
+
* just the newline the stream has written so far and stops being blank as soon
|
|
1397
|
+
* as the next chunk appends to it; and an open fence, which used to collapse
|
|
1398
|
+
* the boundary to -1 even though the content before the fence opened cannot be
|
|
1399
|
+
* changed by anything typed inside it.
|
|
1290
1400
|
*/
|
|
1291
1401
|
function findSettledBoundary(lines) {
|
|
1292
1402
|
let inFence = false;
|
|
1293
1403
|
let fenceMarker = '';
|
|
1294
1404
|
let lastBoundary = -1;
|
|
1405
|
+
let boundaryBeforeFence = -1;
|
|
1295
1406
|
for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
|
|
1296
1407
|
const line = lines[lineIndex];
|
|
1297
1408
|
|
|
@@ -1301,16 +1412,20 @@ function findSettledBoundary(lines) {
|
|
|
1301
1412
|
if (!inFence) {
|
|
1302
1413
|
inFence = true;
|
|
1303
1414
|
fenceMarker = fenceMatch[1];
|
|
1415
|
+
boundaryBeforeFence = lastBoundary;
|
|
1304
1416
|
} else if (fenceMatch[1].startsWith(fenceMarker[0]) && fenceMatch[1].length >= fenceMarker.length) {
|
|
1305
1417
|
inFence = false;
|
|
1306
1418
|
fenceMarker = '';
|
|
1307
1419
|
}
|
|
1308
1420
|
}
|
|
1309
|
-
if (!inFence && line.trim() === '' && lineIndex > 0) {
|
|
1421
|
+
if (!inFence && line.trim() === '' && lineIndex > 0 && lineIndex < lines.length - 1) {
|
|
1310
1422
|
lastBoundary = lineIndex;
|
|
1311
1423
|
}
|
|
1312
1424
|
}
|
|
1313
|
-
return
|
|
1425
|
+
return {
|
|
1426
|
+
boundary: inFence ? boundaryBeforeFence : lastBoundary,
|
|
1427
|
+
openFence: inFence
|
|
1428
|
+
};
|
|
1314
1429
|
}
|
|
1315
1430
|
|
|
1316
1431
|
/**
|
|
@@ -1532,6 +1647,18 @@ function trimUnsettledStructural(text) {
|
|
|
1532
1647
|
return lines.join('\n');
|
|
1533
1648
|
}
|
|
1534
1649
|
|
|
1650
|
+
/**
|
|
1651
|
+
* The same options, for parsing a slice that starts at `offset` of the
|
|
1652
|
+
* document — so the slice's blocks report ranges into the whole document
|
|
1653
|
+
* rather than into the slice.
|
|
1654
|
+
*/
|
|
1655
|
+
function atOffset(opts, offset) {
|
|
1656
|
+
return opts.sourceRanges ? {
|
|
1657
|
+
...opts,
|
|
1658
|
+
baseOffset: offset
|
|
1659
|
+
} : opts;
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1535
1662
|
/**
|
|
1536
1663
|
* Concatenate freshly-parsed delta blocks with previously-settled blocks,
|
|
1537
1664
|
* merging adjacent same-style lists into a single loose list. The boundary
|
|
@@ -1552,7 +1679,15 @@ function mergeSettledBlocks(prev, delta) {
|
|
|
1552
1679
|
start: prevLast.start,
|
|
1553
1680
|
delimiter: prevLast.delimiter,
|
|
1554
1681
|
loose: true,
|
|
1555
|
-
items: [...prevLast.items, ...deltaFirst.items]
|
|
1682
|
+
items: [...prevLast.items, ...deltaFirst.items],
|
|
1683
|
+
// One list now, so one range: from where the first half started to
|
|
1684
|
+
// where the second half ended.
|
|
1685
|
+
...(prevLast.range != null && deltaFirst.range != null ? {
|
|
1686
|
+
range: {
|
|
1687
|
+
start: prevLast.range.start,
|
|
1688
|
+
end: deltaFirst.range.end
|
|
1689
|
+
}
|
|
1690
|
+
} : null)
|
|
1556
1691
|
};
|
|
1557
1692
|
return [...prev.slice(0, -1), merged, ...delta.slice(1)];
|
|
1558
1693
|
}
|
|
@@ -1560,15 +1695,16 @@ function mergeSettledBlocks(prev, delta) {
|
|
|
1560
1695
|
}
|
|
1561
1696
|
export function parseMarkdownIncremental(input, state, arg) {
|
|
1562
1697
|
const opts = resolveOptions(arg);
|
|
1563
|
-
// Invalidate cache when the autolink option flips — cached
|
|
1564
|
-
// were parsed with the previous setting and would otherwise
|
|
1565
|
-
// unchanged.
|
|
1566
|
-
if (state.autolink !== opts.autolink) {
|
|
1698
|
+
// Invalidate cache when the autolink or sourceRanges option flips — cached
|
|
1699
|
+
// settled blocks were parsed with the previous setting and would otherwise
|
|
1700
|
+
// be reused unchanged.
|
|
1701
|
+
if (state.autolink !== opts.autolink || Boolean(state.sourceRanges) !== Boolean(opts.sourceRanges)) {
|
|
1567
1702
|
state.prevInput = '';
|
|
1568
1703
|
state.settledText = '';
|
|
1569
1704
|
state.settledBlocks = [];
|
|
1570
1705
|
state.settledUpTo = 0;
|
|
1571
1706
|
state.autolink = opts.autolink;
|
|
1707
|
+
state.sourceRanges = opts.sourceRanges;
|
|
1572
1708
|
}
|
|
1573
1709
|
if (input === '') {
|
|
1574
1710
|
state.prevInput = '';
|
|
@@ -1599,15 +1735,22 @@ export function parseMarkdownIncremental(input, state, arg) {
|
|
|
1599
1735
|
linkDefs
|
|
1600
1736
|
} : opts;
|
|
1601
1737
|
const lines = input.split('\n');
|
|
1602
|
-
const
|
|
1738
|
+
const {
|
|
1739
|
+
boundary,
|
|
1740
|
+
openFence
|
|
1741
|
+
} = findSettledBoundary(lines);
|
|
1603
1742
|
if (boundary < 0) {
|
|
1604
|
-
//
|
|
1743
|
+
// Nothing settled yet — no blank line, or a fence opened before the first
|
|
1744
|
+
// one — so there is no prefix to keep and the whole input is re-parsed.
|
|
1605
1745
|
state.prevInput = input;
|
|
1606
1746
|
return parseMarkdownImpl(input, parseOpts);
|
|
1607
1747
|
}
|
|
1608
1748
|
const settledText = lines.slice(0, boundary).join('\n');
|
|
1609
1749
|
const unsettledRaw = lines.slice(boundary).join('\n').trim();
|
|
1610
|
-
|
|
1750
|
+
// Structural trimming holds back lines that look like an incomplete list or
|
|
1751
|
+
// table, which inside a fence is ordinary code: a TypeScript union or a `- `
|
|
1752
|
+
// would disappear from the code block as it streams.
|
|
1753
|
+
const unsettledText = openFence ? unsettledRaw : trimUnsettledStructural(unsettledRaw);
|
|
1611
1754
|
let settledBlocks;
|
|
1612
1755
|
if (settledText === state.settledText) {
|
|
1613
1756
|
// Settled portion unchanged — reuse cached blocks
|
|
@@ -1615,13 +1758,20 @@ export function parseMarkdownIncremental(input, state, arg) {
|
|
|
1615
1758
|
} else if (state.settledText.length > 0 && settledText.startsWith(state.settledText)) {
|
|
1616
1759
|
// Settled portion grew — parse only the new delta
|
|
1617
1760
|
const delta = settledText.slice(state.settledText.length);
|
|
1618
|
-
const deltaBlocks = parseMarkdownImpl(delta, parseOpts);
|
|
1761
|
+
const deltaBlocks = parseMarkdownImpl(delta, atOffset(parseOpts, state.settledText.length));
|
|
1619
1762
|
settledBlocks = mergeSettledBlocks(state.settledBlocks, deltaBlocks);
|
|
1620
1763
|
} else {
|
|
1621
1764
|
// Content before the boundary changed — full re-parse of settled portion
|
|
1622
1765
|
settledBlocks = parseMarkdownImpl(settledText, parseOpts);
|
|
1623
1766
|
}
|
|
1624
|
-
|
|
1767
|
+
|
|
1768
|
+
// The unsettled tail is trimmed before parsing, so its offset in the
|
|
1769
|
+
// document is where that trimmed text actually starts — not the boundary,
|
|
1770
|
+
// which is a line index. If it somehow can't be located, parse it without
|
|
1771
|
+
// ranges rather than report wrong ones. Only worth searching for when
|
|
1772
|
+
// ranges were asked for: this runs on every streamed chunk.
|
|
1773
|
+
const unsettledStart = unsettledText && opts.sourceRanges ? input.indexOf(unsettledText, settledText.length) : -1;
|
|
1774
|
+
const unsettledBlocks = unsettledText ? parseMarkdownImpl(unsettledText, unsettledStart >= 0 ? atOffset(parseOpts, unsettledStart) : nested(parseOpts)) : [];
|
|
1625
1775
|
state.settledText = settledText;
|
|
1626
1776
|
state.settledBlocks = settledBlocks;
|
|
1627
1777
|
state.settledUpTo = boundary;
|
|
@@ -15,10 +15,15 @@
|
|
|
15
15
|
* - `::backdrop` pseudo-element
|
|
16
16
|
* - Body scroll lock
|
|
17
17
|
* - Focus trapping
|
|
18
|
-
*
|
|
18
|
+
*
|
|
19
|
+
* Escape is owned by the shared dismissal stack (`useLayerDismissal`), so a
|
|
20
|
+
* drawer opened over another layer takes the press and nothing behind it
|
|
21
|
+
* closes. The native `cancel` event still handles the dismissals the browser
|
|
22
|
+
* starts itself, such as the Android back gesture.
|
|
19
23
|
*
|
|
20
24
|
* SYNC: When modified, update these files to stay in sync:
|
|
21
25
|
* - /packages/core/src/MobileNav/index.ts (exports if types change)
|
|
26
|
+
* - /packages/core/src/Layer/useLayerDismissal.ts (dismissal stack)
|
|
22
27
|
* - /packages/core/src/hooks/scrollbarGutter.ts (shared scroll-lock gutter)
|
|
23
28
|
* - /packages/cli/assets/templates/blocks/components/MobileNav/ (showcase blocks)
|
|
24
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileNav.d.ts","sourceRoot":"","sources":["../../src/MobileNav/MobileNav.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"MobileNav.d.ts","sourceRoot":"","sources":["../../src/MobileNav/MobileNav.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAqBf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA8L5C;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkBpE;AAmCD,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IAC9D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAEhC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EACR,MAAM,EACN,KAAW,EACX,IAAa,EACb,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,+BAmOhB;yBAlPe,SAAS"}
|
|
@@ -19,10 +19,15 @@
|
|
|
19
19
|
* - `::backdrop` pseudo-element
|
|
20
20
|
* - Body scroll lock
|
|
21
21
|
* - Focus trapping
|
|
22
|
-
*
|
|
22
|
+
*
|
|
23
|
+
* Escape is owned by the shared dismissal stack (`useLayerDismissal`), so a
|
|
24
|
+
* drawer opened over another layer takes the press and nothing behind it
|
|
25
|
+
* closes. The native `cancel` event still handles the dismissals the browser
|
|
26
|
+
* starts itself, such as the Android back gesture.
|
|
23
27
|
*
|
|
24
28
|
* SYNC: When modified, update these files to stay in sync:
|
|
25
29
|
* - /packages/core/src/MobileNav/index.ts (exports if types change)
|
|
30
|
+
* - /packages/core/src/Layer/useLayerDismissal.ts (dismissal stack)
|
|
26
31
|
* - /packages/core/src/hooks/scrollbarGutter.ts (shared scroll-lock gutter)
|
|
27
32
|
* - /packages/cli/assets/templates/blocks/components/MobileNav/ (showcase blocks)
|
|
28
33
|
*/
|
|
@@ -35,11 +40,13 @@ import { Icon } from "../Icon/index.js";
|
|
|
35
40
|
import { Heading } from "../Heading/Heading.js";
|
|
36
41
|
import { useAppShellMobile } from "../AppShell/AppShellMobileContext.js";
|
|
37
42
|
import { holdScrollbarGutter } from "../hooks/scrollbarGutter.js";
|
|
38
|
-
import { mergeProps,
|
|
43
|
+
import { mergeProps, composeEventHandlers } from "../utils/index.js";
|
|
39
44
|
import { overlayPaddingReset } from "../Layout/padding.stylex.js";
|
|
45
|
+
import { LayerDepthProvider } from "../Layer/LayerDepthContext.js";
|
|
46
|
+
import { useLayerDismissal } from "../Layer/useLayerDismissal.js";
|
|
40
47
|
import { themeProps } from "../utils/themeProps.js";
|
|
41
48
|
import { useTranslator } from "../i18n/index.js";
|
|
42
|
-
|
|
49
|
+
import { useMergedRefs } from "../hooks/useMergedRefs.js";
|
|
43
50
|
// =============================================================================
|
|
44
51
|
// Styles
|
|
45
52
|
// =============================================================================
|
|
@@ -352,12 +359,28 @@ export function MobileNav({
|
|
|
352
359
|
}
|
|
353
360
|
};
|
|
354
361
|
}, []);
|
|
362
|
+
const {
|
|
363
|
+
shouldDismissOnCloseRequest
|
|
364
|
+
} = useLayerDismissal({
|
|
365
|
+
isActive: isOpen,
|
|
366
|
+
onDismiss: () => onOpenChange(false)
|
|
367
|
+
});
|
|
355
368
|
|
|
356
|
-
//
|
|
369
|
+
// The native `cancel` event is the browser's own close-watcher firing: an
|
|
370
|
+
// Android back gesture, or a close request the stack never saw a press for.
|
|
371
|
+
// Escape presses the stack owns never arrive here — it preventDefault()s
|
|
372
|
+
// those, which suppresses the close watcher.
|
|
373
|
+
//
|
|
374
|
+
// Always preventDefault so the browser cannot close a controlled <dialog>
|
|
375
|
+
// behind React's back, then answer with the stack's own rules: top-most
|
|
376
|
+
// only, and never while an IME composition is in progress.
|
|
357
377
|
const handleCancel = useCallback(event => {
|
|
358
378
|
event.preventDefault();
|
|
379
|
+
if (!shouldDismissOnCloseRequest()) {
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
359
382
|
onOpenChange(false);
|
|
360
|
-
}, [onOpenChange]);
|
|
383
|
+
}, [onOpenChange, shouldDismissOnCloseRequest]);
|
|
361
384
|
|
|
362
385
|
// Handle clicks on the dialog backdrop area (outside the drawer)
|
|
363
386
|
const handleDialogClick = useCallback(event => {
|
|
@@ -369,7 +392,7 @@ export function MobileNav({
|
|
|
369
392
|
}, [onOpenChange]);
|
|
370
393
|
const isStart = resolvedSide === 'start';
|
|
371
394
|
return /*#__PURE__*/_jsx("dialog", {
|
|
372
|
-
ref:
|
|
395
|
+
ref: useMergedRefs(ref, dialogRef),
|
|
373
396
|
id: dialogId,
|
|
374
397
|
...mergeProps(themeProps('mobile-nav', {
|
|
375
398
|
side: resolvedSide
|
|
@@ -379,38 +402,40 @@ export function MobileNav({
|
|
|
379
402
|
"aria-label": label ?? (typeof header === 'string' ? header : t('@astryx.mobileNav.navigation')),
|
|
380
403
|
onClick: composeEventHandlers(onClickProp, handleDialogClick),
|
|
381
404
|
onCancel: handleCancel,
|
|
382
|
-
children: /*#__PURE__*/
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
405
|
+
children: /*#__PURE__*/_jsx(LayerDepthProvider, {
|
|
406
|
+
children: /*#__PURE__*/_jsxs("div", {
|
|
407
|
+
tabIndex: -1,
|
|
408
|
+
...stylex.props(styles.drawer, dynamicStyles.width(width), isStart && styles.drawerStart, isStart && isOpen && styles.drawerStartOpen, !isStart && styles.drawerEnd, !isStart && isOpen && styles.drawerEndOpen),
|
|
409
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
410
|
+
...{
|
|
411
|
+
0: {
|
|
412
|
+
className: "x78zum5 x6s0dn4 x1qughib x1k15mir xf314gf x2lah0s x92x3c3 x1q0q8m5 xw8gpjh"
|
|
413
|
+
},
|
|
414
|
+
1: {
|
|
415
|
+
className: "x78zum5 x6s0dn4 x1k15mir xf314gf x2lah0s x92x3c3 x1q0q8m5 xw8gpjh x13a6bvl"
|
|
416
|
+
}
|
|
417
|
+
}[!!!header << 0],
|
|
418
|
+
children: [typeof header === 'string' ? /*#__PURE__*/_jsx(Heading, {
|
|
419
|
+
level: 2,
|
|
420
|
+
xstyle: styles.headerText,
|
|
421
|
+
children: header
|
|
422
|
+
}) : header ?? null, /*#__PURE__*/_jsx(Button, {
|
|
423
|
+
variant: "ghost",
|
|
424
|
+
label: t('@astryx.mobileNav.closeNavigation'),
|
|
425
|
+
icon: /*#__PURE__*/_jsx(Icon, {
|
|
426
|
+
icon: "close",
|
|
427
|
+
color: "inherit"
|
|
428
|
+
}),
|
|
429
|
+
onClick: () => onOpenChange(false),
|
|
430
|
+
isIconOnly: true
|
|
431
|
+
})]
|
|
432
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
433
|
+
...{
|
|
434
|
+
className: "x98rzlu x1odjw0f x6ikm8r xish69e xx69xxh xf314gf xce4md1"
|
|
389
435
|
},
|
|
390
|
-
|
|
391
|
-
className: "x78zum5 x6s0dn4 x1k15mir xf314gf x2lah0s x92x3c3 x1q0q8m5 xw8gpjh x13a6bvl"
|
|
392
|
-
}
|
|
393
|
-
}[!!!header << 0],
|
|
394
|
-
children: [typeof header === 'string' ? /*#__PURE__*/_jsx(Heading, {
|
|
395
|
-
level: 2,
|
|
396
|
-
xstyle: styles.headerText,
|
|
397
|
-
children: header
|
|
398
|
-
}) : header ?? null, /*#__PURE__*/_jsx(Button, {
|
|
399
|
-
variant: "ghost",
|
|
400
|
-
label: t('@astryx.mobileNav.closeNavigation'),
|
|
401
|
-
icon: /*#__PURE__*/_jsx(Icon, {
|
|
402
|
-
icon: "close",
|
|
403
|
-
color: "inherit"
|
|
404
|
-
}),
|
|
405
|
-
onClick: () => onOpenChange(false),
|
|
406
|
-
isIconOnly: true
|
|
436
|
+
children: children
|
|
407
437
|
})]
|
|
408
|
-
})
|
|
409
|
-
...{
|
|
410
|
-
className: "x98rzlu x1odjw0f x6ikm8r xish69e xx69xxh xf314gf xce4md1"
|
|
411
|
-
},
|
|
412
|
-
children: children
|
|
413
|
-
})]
|
|
438
|
+
})
|
|
414
439
|
})
|
|
415
440
|
});
|
|
416
441
|
}
|
|
@@ -22,6 +22,10 @@ export type MultiSelectorSize = 'sm' | 'md' | 'lg';
|
|
|
22
22
|
export type MultiSelectorVariant = 'input' | 'ghost';
|
|
23
23
|
export type MultiSelectorStatusType = 'warning' | 'error' | 'success';
|
|
24
24
|
export type { MultiSelectorStatus };
|
|
25
|
+
export interface MultiSelectorSelectedItem {
|
|
26
|
+
value: string;
|
|
27
|
+
label: string;
|
|
28
|
+
}
|
|
25
29
|
export interface MultiSelectorProps<T extends MultiSelectorOptionType = MultiSelectorOptionType> extends Omit<BaseProps, 'onChange' | 'defaultValue'> {
|
|
26
30
|
/**
|
|
27
31
|
* Label text for the multi-selector (always rendered for accessibility).
|
|
@@ -171,6 +175,23 @@ export interface MultiSelectorProps<T extends MultiSelectorOptionType = MultiSel
|
|
|
171
175
|
* @default 'Search...'
|
|
172
176
|
*/
|
|
173
177
|
searchPlaceholder?: string;
|
|
178
|
+
/**
|
|
179
|
+
* Content shown in the panel when there are no options to show, and
|
|
180
|
+
* announced in a polite live region when the panel opens. Not shown while
|
|
181
|
+
* `isLoading` — the options have not arrived yet.
|
|
182
|
+
* @default 'No options'
|
|
183
|
+
*/
|
|
184
|
+
emptyText?: ReactNode;
|
|
185
|
+
/**
|
|
186
|
+
* Content shown in the panel when a search query matches no options, and
|
|
187
|
+
* announced in a polite live region at the same time.
|
|
188
|
+
*
|
|
189
|
+
* The panel message is `role="presentation"`, so the live region is the only
|
|
190
|
+
* route to assistive tech: a string is announced verbatim, a richer node
|
|
191
|
+
* falls back to the default text since it cannot be spoken.
|
|
192
|
+
* @default 'No results found'
|
|
193
|
+
*/
|
|
194
|
+
emptySearchText?: ReactNode;
|
|
174
195
|
/**
|
|
175
196
|
* How to display selected items in the trigger.
|
|
176
197
|
* - 'count': "3 selected"
|
|
@@ -179,6 +200,16 @@ export interface MultiSelectorProps<T extends MultiSelectorOptionType = MultiSel
|
|
|
179
200
|
* @default 'count'
|
|
180
201
|
*/
|
|
181
202
|
triggerDisplay?: 'count' | 'labels' | 'badges';
|
|
203
|
+
/**
|
|
204
|
+
* Formats the trigger text when triggerDisplay is 'count' or 'labels'.
|
|
205
|
+
* Receives the selected items (value plus resolved label, in selection
|
|
206
|
+
* order) and returns the full trigger text; the count is `items.length`.
|
|
207
|
+
* Not called when nothing is selected — the placeholder shows instead — and
|
|
208
|
+
* not called for triggerDisplay 'badges', which renders Badge elements
|
|
209
|
+
* rather than text.
|
|
210
|
+
* @default items => `${items.length} selected` for 'count', "A, B, C, +N" for 'labels'
|
|
211
|
+
*/
|
|
212
|
+
formatValue?: (items: MultiSelectorSelectedItem[]) => string;
|
|
182
213
|
/**
|
|
183
214
|
* Maximum number of badges to show before showing "+N".
|
|
184
215
|
* Only used when triggerDisplay is 'badges'.
|
|
@@ -222,7 +253,7 @@ export interface MultiSelectorProps<T extends MultiSelectorOptionType = MultiSel
|
|
|
222
253
|
* />
|
|
223
254
|
* ```
|
|
224
255
|
*/
|
|
225
|
-
export declare function MultiSelector<T extends MultiSelectorOptionType>({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, options, value, onChange, changeAction, isLoading, placeholder: placeholderFromProps, size: sizeProp, variant, status, statusVariant, labelTooltip, startIcon, hasClear, hasSelectAll, selectAllLabel: selectAllLabelFromProps, hasSearch, searchPlaceholder: searchPlaceholderFromProps, triggerDisplay, maxBadges, renderOption, indicatorPosition, isDefaultOpen, 'data-testid': testId, htmlName, width, xstyle, className, style, }: MultiSelectorProps<T>): React.JSX.Element;
|
|
256
|
+
export declare function MultiSelector<T extends MultiSelectorOptionType>({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, options, value, onChange, changeAction, isLoading, placeholder: placeholderFromProps, size: sizeProp, variant, status, statusVariant, labelTooltip, startIcon, hasClear, hasSelectAll, selectAllLabel: selectAllLabelFromProps, hasSearch, searchPlaceholder: searchPlaceholderFromProps, emptyText: emptyTextFromProps, emptySearchText: emptySearchTextFromProps, triggerDisplay, formatValue, maxBadges, renderOption, indicatorPosition, isDefaultOpen, 'data-testid': testId, htmlName, width, xstyle, className, style, }: MultiSelectorProps<T>): React.JSX.Element;
|
|
226
257
|
export declare namespace MultiSelector {
|
|
227
258
|
var displayName: string;
|
|
228
259
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelector.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/MultiSelector.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MultiSelector.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/MultiSelector.tsx"],"names":[],"mappings":"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"}
|