@multiplatform.one/components 7.77.2 → 7.79.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Accordion/index.native.js +1 -1
- package/dist/cjs/Accordion/index.native.js.map +1 -1
- package/dist/cjs/Alert/index.native.js.map +1 -1
- package/dist/cjs/AnimateHeight/index.native.js.map +1 -1
- package/dist/cjs/Avatar/getInitials.native.js.map +1 -1
- package/dist/cjs/Avatar/index.native.js.map +1 -1
- package/dist/cjs/Badge/index.native.js.map +1 -1
- package/dist/cjs/Button.native.js.map +1 -1
- package/dist/cjs/Card.native.js.map +1 -1
- package/dist/cjs/CardFooter.native.js.map +1 -1
- package/dist/cjs/CardHeader.native.js.map +1 -1
- package/dist/cjs/Carousel/index.native.js +3 -3
- package/dist/cjs/Carousel/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/Collapsible.native.js.map +1 -1
- package/dist/cjs/ContextMenu/index.native.js.map +1 -1
- package/dist/cjs/CopyField/CopyMenuButton.native.js +1 -1
- package/dist/cjs/CopyField/CopyMenuButton.native.js.map +1 -1
- package/dist/cjs/CopyField/index.native.js.map +1 -1
- package/dist/cjs/Dialog.native.js.map +1 -1
- package/dist/cjs/Diff/diff.cjs +84 -0
- package/dist/cjs/Diff/diff.native.js +108 -0
- package/dist/cjs/Diff/diff.native.js.map +1 -0
- package/dist/cjs/Diff/index.cjs +174 -0
- package/dist/cjs/Diff/index.native.js +181 -0
- package/dist/cjs/Diff/index.native.js.map +1 -0
- package/dist/cjs/DotIndicator/index.native.js.map +1 -1
- package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
- package/dist/cjs/DropdownMenu/menuSettle.native.js.map +1 -1
- package/dist/cjs/ElapsedProgress/index.cjs +102 -0
- package/dist/cjs/ElapsedProgress/index.native.js +112 -0
- package/dist/cjs/ElapsedProgress/index.native.js.map +1 -0
- package/dist/cjs/ErrorBoundary/index.native.js.map +1 -1
- package/dist/cjs/Heading.native.js.map +1 -1
- package/dist/cjs/Kbd/index.native.js.map +1 -1
- package/dist/cjs/Kbd/keys.native.js.map +1 -1
- package/dist/cjs/Lightbox/MediaControl.cjs +2 -6
- package/dist/cjs/Lightbox/MediaControl.native.js +2 -8
- package/dist/cjs/Lightbox/MediaControl.native.js.map +1 -1
- package/dist/cjs/Lightbox/index.gnome.native.js.map +1 -1
- package/dist/cjs/Lightbox/index.native.js +1 -1
- package/dist/cjs/Lightbox/shared.native.js.map +1 -1
- package/dist/cjs/Lightbox/useLightbox.native.js.map +1 -1
- package/dist/cjs/MachineLiteral/index.cjs +98 -0
- package/dist/cjs/MachineLiteral/index.native.js +102 -0
- package/dist/cjs/MachineLiteral/index.native.js.map +1 -0
- package/dist/cjs/Material/blur.cjs +34 -0
- package/dist/cjs/Material/blur.native.js +100 -0
- package/dist/cjs/Material/blur.native.js.map +1 -0
- package/dist/cjs/Material/index.cjs +9 -3
- package/dist/cjs/Material/index.native.js +9 -3
- package/dist/cjs/Material/index.native.js.map +1 -1
- package/dist/cjs/Meter/index.cjs +3 -1
- package/dist/cjs/Meter/index.native.js +4 -2
- package/dist/cjs/Meter/index.native.js.map +1 -1
- package/dist/cjs/Meter/meter.native.js.map +1 -1
- package/dist/cjs/OverflowRow/index.native.js +1 -1
- package/dist/cjs/OverflowRow/index.native.js.map +1 -1
- package/dist/cjs/Pagination.native.js +1 -1
- package/dist/cjs/Pagination.native.js.map +1 -1
- package/dist/cjs/Popover.native.js +1 -1
- package/dist/cjs/Popover.native.js.map +1 -1
- package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
- package/dist/cjs/Quote/index.native.js.map +1 -1
- package/dist/cjs/SchemeToggle/index.native.js +1 -1
- package/dist/cjs/SchemeToggle/index.native.js.map +1 -1
- package/dist/cjs/ScrollView/revealFocusedField.native.js.map +1 -1
- package/dist/cjs/Separator/index.native.js.map +1 -1
- package/dist/cjs/Sheet.native.js.map +1 -1
- package/dist/cjs/SheetModal/SheetHeader.native.js.map +1 -1
- package/dist/cjs/SheetModal/SheetNavigation.native.js.map +1 -1
- package/dist/cjs/SheetModal/detents.native.js.map +1 -1
- package/dist/cjs/SheetModal/useSheetFrameFocus.native.js.map +1 -1
- package/dist/cjs/Skeleton/index.native.js.map +1 -1
- package/dist/cjs/SkipLink/index.native.js.map +1 -1
- package/dist/cjs/SortableList/SortableHandle.native.js.map +1 -1
- package/dist/cjs/SortableList/index.cjs +4 -1
- package/dist/cjs/SortableList/index.native.js +4 -1
- package/dist/cjs/SortableList/index.native.js.map +1 -1
- package/dist/cjs/SortableList/useSortableRows.native.js.map +1 -1
- package/dist/cjs/SortableList/useUserOrder.cjs +84 -0
- package/dist/cjs/SortableList/useUserOrder.native.js +107 -0
- package/dist/cjs/SortableList/useUserOrder.native.js.map +1 -0
- package/dist/cjs/Tabs/index.native.js +1 -1
- package/dist/cjs/Tabs/index.native.js.map +1 -1
- package/dist/cjs/Text.native.js.map +1 -1
- package/dist/cjs/ThemePresetPicker/index.native.js +2 -2
- package/dist/cjs/ThemePresetPicker/index.native.js.map +1 -1
- package/dist/cjs/Toast/index.native.js.map +1 -1
- package/dist/cjs/Toast/store.native.js.map +1 -1
- package/dist/cjs/Tooltip/nativePress.native.js.map +1 -1
- package/dist/cjs/Tooltip/tooltipShared.native.js.map +1 -1
- package/dist/cjs/TreeSelect/index.cjs +7 -1
- package/dist/cjs/TreeSelect/index.native.js +8 -2
- package/dist/cjs/TreeSelect/index.native.js.map +1 -1
- package/dist/cjs/TreeSelect/treeSelectModel.native.js.map +1 -1
- package/dist/cjs/Video/PlayerChrome.native.js.map +1 -1
- package/dist/cjs/Video/VideoFrame.native.js.map +1 -1
- package/dist/cjs/Video/types.native.js.map +1 -1
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/Wizard/index.native.js +2 -2
- package/dist/cjs/Wizard/index.native.js.map +1 -1
- package/dist/cjs/actions/ActionBar.native.js.map +1 -1
- package/dist/cjs/actions/DangerSection.native.js.map +1 -1
- package/dist/cjs/actions/DestructiveAction.native.js.map +1 -1
- package/dist/cjs/actions/HeaderActions.native.js +2 -2
- package/dist/cjs/actions/HeaderActions.native.js.map +1 -1
- package/dist/cjs/actions/StandardAction.native.js +1 -1
- package/dist/cjs/actions/StandardAction.native.js.map +1 -1
- package/dist/cjs/actions/devWarn.native.js.map +1 -1
- package/dist/cjs/actions/index.native.js.map +1 -1
- package/dist/cjs/actions/severity.native.js.map +1 -1
- package/dist/cjs/appShell/Dock.native.js.map +1 -1
- package/dist/cjs/appShell/MpoTabHost.native.js.map +1 -1
- package/dist/cjs/appShell/ScopeMenu.native.js.map +1 -1
- package/dist/cjs/appShell/SettingsSplit.native.js +1 -1
- package/dist/cjs/appShell/SettingsSplit.native.js.map +1 -1
- package/dist/cjs/appShell/Springboard.native.js +1 -1
- package/dist/cjs/appShell/Springboard.native.js.map +1 -1
- package/dist/cjs/appShell/SystemBar.native.js.map +1 -1
- package/dist/cjs/appShell/TabBar.cjs +10 -5
- package/dist/cjs/appShell/TabBar.native.js +11 -6
- package/dist/cjs/appShell/TabBar.native.js.map +1 -1
- package/dist/cjs/appShell/TabHost.native.js +1 -0
- package/dist/cjs/appShell/TabHost.native.js.map +1 -1
- package/dist/cjs/appShell/appTile.native.js +1 -1
- package/dist/cjs/appShell/appTile.native.js.map +1 -1
- package/dist/cjs/appShell/bottomChrome.native.js.map +1 -1
- package/dist/cjs/appShell/index.native.js.map +1 -1
- package/dist/cjs/charts/Axis.native.js.map +1 -1
- package/dist/cjs/charts/BarChart.native.js.map +1 -1
- package/dist/cjs/charts/ChartDataView.native.js +1 -1
- package/dist/cjs/charts/ChartDataView.native.js.map +1 -1
- package/dist/cjs/charts/ChartSurface.native.js.map +1 -1
- package/dist/cjs/charts/LineChart.native.js.map +1 -1
- package/dist/cjs/charts/PieChart.native.js.map +1 -1
- package/dist/cjs/charts/Sparkline.cjs +1 -1
- package/dist/cjs/charts/Sparkline.native.js +1 -1
- package/dist/cjs/charts/Sparkline.native.js.map +1 -1
- package/dist/cjs/charts/accessibility.native.js.map +1 -1
- package/dist/cjs/charts/chartHeight.native.js.map +1 -1
- package/dist/cjs/charts/composeChart.native.js.map +1 -1
- package/dist/cjs/charts/index.native.js.map +1 -1
- package/dist/cjs/charts/math.native.js.map +1 -1
- package/dist/cjs/charts/series.native.js.map +1 -1
- package/dist/cjs/charts/svg.native.js.map +1 -1
- package/dist/cjs/charts/types.native.js.map +1 -1
- package/dist/cjs/charts/useChartTheme.native.js.map +1 -1
- package/dist/cjs/code/Code/index.native.js.map +1 -1
- package/dist/cjs/code/CodeBlock/index.native.js +7 -7
- package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
- package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/cjs/code/Highlighter/houseSyntaxTheme.native.js.map +1 -1
- package/dist/cjs/code/Highlighter/index.native.js.map +1 -1
- package/dist/cjs/code/Highlighter/namedGroupMatchAll.native.js.map +1 -1
- package/dist/cjs/code/Pre/index.native.js.map +1 -1
- package/dist/cjs/code/index.native.js +5 -5
- package/dist/cjs/code/index.native.js.map +1 -1
- package/dist/cjs/componentColors.cjs +1 -1
- package/dist/cjs/componentColors.native.js +1 -1
- package/dist/cjs/componentColors.native.js.map +1 -1
- package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/cjs/feedback/NotifyHost.native.js +2 -2
- package/dist/cjs/feedback/NotifyHost.native.js.map +1 -1
- package/dist/cjs/feedback/copy.native.js.map +1 -1
- package/dist/cjs/feedback/index.native.js.map +1 -1
- package/dist/cjs/feedback/notify.native.js.map +1 -1
- package/dist/cjs/feedback/route.native.js.map +1 -1
- package/dist/cjs/feedback/store.native.js.map +1 -1
- package/dist/cjs/formLayouts/FormLayouts.native.js +1 -1
- package/dist/cjs/formLayouts/FormLayouts.native.js.map +1 -1
- package/dist/cjs/formLayouts/PreferencePanel.native.js +2 -2
- package/dist/cjs/formLayouts/PreferencePanel.native.js.map +1 -1
- package/dist/cjs/formLayouts/index.native.js.map +1 -1
- package/dist/cjs/hooks/index.native.js +1 -1
- package/dist/cjs/hooks/index.native.js.map +1 -1
- package/dist/cjs/hooks/useClipboard.native.js.map +1 -1
- package/dist/cjs/hooks/useDocumentTitle.native.js.map +1 -1
- package/dist/cjs/hooks/useHoldCue.native.js.map +1 -1
- package/dist/cjs/icons/CheckRegular.native.js.map +1 -1
- package/dist/cjs/icons/MinusRegular.native.js.map +1 -1
- package/dist/cjs/icons/index.native.js.map +1 -1
- package/dist/cjs/icons/lucide.native.js.map +1 -1
- package/dist/cjs/icons/themed.native.js.map +1 -1
- package/dist/cjs/images/Image/ImageFrame.native.js +1 -1
- package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/cjs/images/Image/framing.native.js.map +1 -1
- package/dist/cjs/images/Image/index.native.js +1 -1
- package/dist/cjs/images/Image/mediaRadius.native.js.map +1 -1
- package/dist/cjs/images/Image/shared.native.js +1 -1
- package/dist/cjs/images/Image/shared.native.js.map +1 -1
- package/dist/cjs/images/Image/types.native.js.map +1 -1
- package/dist/cjs/images/index.native.js.map +1 -1
- package/dist/cjs/index.cjs +6 -1
- package/dist/cjs/index.native.js +42 -37
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/knobImmuneExports.native.js.map +1 -1
- package/dist/cjs/layouts/AsyncBoundary.native.js +2 -2
- package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/cjs/layouts/Debug/index.native.js.map +1 -1
- package/dist/cjs/layouts/EmptyState.native.js.map +1 -1
- package/dist/cjs/layouts/IdentityPlate.native.js.map +1 -1
- package/dist/cjs/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
- package/dist/cjs/layouts/PageTemplates.native.js.map +1 -1
- package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/cjs/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
- package/dist/cjs/layouts/StatusDot.native.js.map +1 -1
- package/dist/cjs/layouts/StatusGlyphStrip.native.js +1 -1
- package/dist/cjs/layouts/StatusGlyphStrip.native.js.map +1 -1
- package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/cjs/layouts/attachments.native.js +1 -1
- package/dist/cjs/layouts/attachments.native.js.map +1 -1
- package/dist/cjs/layouts/bottomAccessory.native.js.map +1 -1
- package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/cjs/layouts/index.native.js +3 -3
- package/dist/cjs/layouts/index.native.js.map +1 -1
- package/dist/cjs/layouts/page.cjs +0 -4
- package/dist/cjs/layouts/page.native.js +2 -6
- package/dist/cjs/layouts/page.native.js.map +1 -1
- package/dist/cjs/layouts/pageHeadingScope.native.js.map +1 -1
- package/dist/cjs/layouts/screenScroll.native.js.map +1 -1
- package/dist/cjs/layouts/shellSidebarSlot.native.js.map +1 -1
- package/dist/cjs/layouts/sidebar.native.js +1 -1
- package/dist/cjs/layouts/sidebar.native.js.map +1 -1
- package/dist/cjs/layouts/tags.native.js +2 -2
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/layouts/timeline.native.js +2 -2
- package/dist/cjs/layouts/timeline.native.js.map +1 -1
- package/dist/cjs/layouts/toolbar.native.js +1 -1
- package/dist/cjs/layouts/toolbar.native.js.map +1 -1
- package/dist/cjs/shared/actionScan.native.js.map +1 -1
- package/dist/cjs/shared/i18n.native.js.map +1 -1
- package/dist/cjs/shared/restoreRetries.native.js.map +1 -1
- package/dist/cjs/shared/t.native.js.map +1 -1
- package/dist/cjs/shared/textRidesText.native.js.map +1 -1
- package/dist/cjs/shared/useReturnFocusOnClose.native.js.map +1 -1
- package/dist/cjs/surfaces.native.js +1 -1
- package/dist/cjs/surfaces.native.js.map +1 -1
- package/dist/cjs/tamagui.native.js +1 -1
- package/dist/cjs/tamagui.native.js.map +1 -1
- package/dist/cjs/testSetup.native.js.map +1 -1
- package/dist/cjs/utils/setTinted.native.js.map +1 -1
- package/dist/cjs/utils/unwrapText.native.js.map +1 -1
- package/dist/cjs/views/Calendar.native.js +1 -1
- package/dist/cjs/views/Calendar.native.js.map +1 -1
- package/dist/cjs/views/Dashboard.native.js +2 -2
- package/dist/cjs/views/Dashboard.native.js.map +1 -1
- package/dist/cjs/views/Gantt.native.js +2 -2
- package/dist/cjs/views/Gantt.native.js.map +1 -1
- package/dist/cjs/views/GanttDateGrip.native.js.map +1 -1
- package/dist/cjs/views/ImageGrid.cjs +9 -12
- package/dist/cjs/views/ImageGrid.native.js +11 -18
- package/dist/cjs/views/ImageGrid.native.js.map +1 -1
- package/dist/cjs/views/Kanban.native.js +1 -1
- package/dist/cjs/views/List.native.js.map +1 -1
- package/dist/cjs/views/ListGroup.native.js.map +1 -1
- package/dist/cjs/views/ListRow.native.js.map +1 -1
- package/dist/cjs/views/Matrix.native.js +2 -2
- package/dist/cjs/views/Matrix.native.js.map +1 -1
- package/dist/cjs/views/ReportBuilder.cjs +3 -3
- package/dist/cjs/views/ReportBuilder.native.js +5 -5
- package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
- package/dist/cjs/views/ShortcutCard.native.js.map +1 -1
- package/dist/cjs/views/TreeView.native.js.map +1 -1
- package/dist/cjs/views/calendarMath.native.js.map +1 -1
- package/dist/cjs/views/ganttIntervals.native.js.map +1 -1
- package/dist/cjs/views/ganttMath.native.js.map +1 -1
- package/dist/cjs/views/index.cjs +3 -1
- package/dist/cjs/views/index.native.js +3 -1
- package/dist/cjs/views/index.native.js.map +1 -1
- package/dist/cjs/views/kanbanDnd.native.js.map +1 -1
- package/dist/cjs/views/matrixMath.native.js.map +1 -1
- package/dist/cjs/views/sameNameScope.cjs +39 -0
- package/dist/cjs/views/sameNameScope.native.js +63 -0
- package/dist/cjs/views/sameNameScope.native.js.map +1 -0
- package/dist/cjs/views/treeViewDnd.native.js.map +1 -1
- package/dist/cjs/views/treeViewLayout.native.js.map +1 -1
- package/dist/cjs/views/treeViewMotion.native.js.map +1 -1
- package/dist/cjs/views/treeViewReveal.native.js.map +1 -1
- package/dist/cjs/views/usePageFlowLoadMore.cjs +83 -0
- package/dist/cjs/views/usePageFlowLoadMore.native.js +93 -0
- package/dist/cjs/views/usePageFlowLoadMore.native.js.map +1 -0
- package/dist/cjs/views/widgetChrome.native.js.map +1 -1
- package/dist/esm/Diff/diff.mjs +58 -0
- package/dist/esm/Diff/diff.mjs.map +1 -0
- package/dist/esm/Diff/diff.native.js +79 -0
- package/dist/esm/Diff/diff.native.js.map +1 -0
- package/dist/esm/Diff/index.mjs +147 -0
- package/dist/esm/Diff/index.mjs.map +1 -0
- package/dist/esm/Diff/index.native.js +151 -0
- package/dist/esm/Diff/index.native.js.map +1 -0
- package/dist/esm/ElapsedProgress/index.mjs +76 -0
- package/dist/esm/ElapsedProgress/index.mjs.map +1 -0
- package/dist/esm/ElapsedProgress/index.native.js +83 -0
- package/dist/esm/ElapsedProgress/index.native.js.map +1 -0
- package/dist/esm/Lightbox/MediaControl.mjs +3 -7
- package/dist/esm/Lightbox/MediaControl.mjs.map +1 -1
- package/dist/esm/Lightbox/MediaControl.native.js +3 -9
- package/dist/esm/Lightbox/MediaControl.native.js.map +1 -1
- package/dist/esm/MachineLiteral/index.mjs +73 -0
- package/dist/esm/MachineLiteral/index.mjs.map +1 -0
- package/dist/esm/MachineLiteral/index.native.js +74 -0
- package/dist/esm/MachineLiteral/index.native.js.map +1 -0
- package/dist/esm/Material/blur.mjs +8 -0
- package/dist/esm/Material/blur.mjs.map +1 -0
- package/dist/esm/Material/blur.native.js +67 -0
- package/dist/esm/Material/blur.native.js.map +1 -0
- package/dist/esm/Material/index.mjs +10 -4
- package/dist/esm/Material/index.mjs.map +1 -1
- package/dist/esm/Material/index.native.js +10 -4
- package/dist/esm/Material/index.native.js.map +1 -1
- package/dist/esm/Meter/index.mjs +4 -3
- package/dist/esm/Meter/index.mjs.map +1 -1
- package/dist/esm/Meter/index.native.js +4 -3
- package/dist/esm/Meter/index.native.js.map +1 -1
- package/dist/esm/SortableList/index.mjs +2 -1
- package/dist/esm/SortableList/index.mjs.map +1 -1
- package/dist/esm/SortableList/index.native.js +2 -1
- package/dist/esm/SortableList/index.native.js.map +1 -1
- package/dist/esm/SortableList/useUserOrder.mjs +58 -0
- package/dist/esm/SortableList/useUserOrder.mjs.map +1 -0
- package/dist/esm/SortableList/useUserOrder.native.js +78 -0
- package/dist/esm/SortableList/useUserOrder.native.js.map +1 -0
- package/dist/esm/TreeSelect/index.mjs +8 -2
- package/dist/esm/TreeSelect/index.mjs.map +1 -1
- package/dist/esm/TreeSelect/index.native.js +8 -2
- package/dist/esm/TreeSelect/index.native.js.map +1 -1
- package/dist/esm/appShell/TabBar.mjs +10 -5
- package/dist/esm/appShell/TabBar.mjs.map +1 -1
- package/dist/esm/appShell/TabBar.native.js +10 -5
- package/dist/esm/appShell/TabBar.native.js.map +1 -1
- package/dist/esm/appShell/TabHost.native.js +1 -0
- package/dist/esm/appShell/TabHost.native.js.map +1 -1
- package/dist/esm/charts/Sparkline.mjs +1 -1
- package/dist/esm/charts/Sparkline.mjs.map +1 -1
- package/dist/esm/charts/Sparkline.native.js +1 -1
- package/dist/esm/charts/Sparkline.native.js.map +1 -1
- package/dist/esm/componentColors.mjs +1 -1
- package/dist/esm/componentColors.native.js +1 -1
- package/dist/esm/index.mjs +5 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +5 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/layouts/page.mjs +0 -4
- package/dist/esm/layouts/page.mjs.map +1 -1
- package/dist/esm/layouts/page.native.js +0 -4
- package/dist/esm/layouts/page.native.js.map +1 -1
- package/dist/esm/views/ImageGrid.mjs +10 -13
- package/dist/esm/views/ImageGrid.mjs.map +1 -1
- package/dist/esm/views/ImageGrid.native.js +10 -17
- package/dist/esm/views/ImageGrid.native.js.map +1 -1
- package/dist/esm/views/ReportBuilder.mjs +4 -4
- package/dist/esm/views/ReportBuilder.mjs.map +1 -1
- package/dist/esm/views/ReportBuilder.native.js +4 -4
- package/dist/esm/views/ReportBuilder.native.js.map +1 -1
- package/dist/esm/views/index.mjs +2 -1
- package/dist/esm/views/index.mjs.map +1 -1
- package/dist/esm/views/index.native.js +2 -1
- package/dist/esm/views/index.native.js.map +1 -1
- package/dist/esm/views/sameNameScope.mjs +14 -0
- package/dist/esm/views/sameNameScope.mjs.map +1 -0
- package/dist/esm/views/sameNameScope.native.js +35 -0
- package/dist/esm/views/sameNameScope.native.js.map +1 -0
- package/dist/esm/views/usePageFlowLoadMore.mjs +57 -0
- package/dist/esm/views/usePageFlowLoadMore.mjs.map +1 -0
- package/dist/esm/views/usePageFlowLoadMore.native.js +64 -0
- package/dist/esm/views/usePageFlowLoadMore.native.js.map +1 -0
- package/dist/jsx/Diff/diff.mjs +58 -0
- package/dist/jsx/Diff/diff.mjs.map +1 -0
- package/dist/jsx/Diff/diff.native.js +108 -0
- package/dist/jsx/Diff/diff.native.js.map +1 -0
- package/dist/jsx/Diff/index.mjs +147 -0
- package/dist/jsx/Diff/index.mjs.map +1 -0
- package/dist/jsx/Diff/index.native.js +181 -0
- package/dist/jsx/Diff/index.native.js.map +1 -0
- package/dist/jsx/ElapsedProgress/index.mjs +76 -0
- package/dist/jsx/ElapsedProgress/index.mjs.map +1 -0
- package/dist/jsx/ElapsedProgress/index.native.js +112 -0
- package/dist/jsx/ElapsedProgress/index.native.js.map +1 -0
- package/dist/jsx/Lightbox/MediaControl.mjs +3 -7
- package/dist/jsx/Lightbox/MediaControl.mjs.map +1 -1
- package/dist/jsx/Lightbox/MediaControl.native.js +2 -8
- package/dist/jsx/Lightbox/MediaControl.native.js.map +1 -1
- package/dist/jsx/MachineLiteral/index.mjs +73 -0
- package/dist/jsx/MachineLiteral/index.mjs.map +1 -0
- package/dist/jsx/MachineLiteral/index.native.js +102 -0
- package/dist/jsx/MachineLiteral/index.native.js.map +1 -0
- package/dist/jsx/Material/blur.mjs +8 -0
- package/dist/jsx/Material/blur.mjs.map +1 -0
- package/dist/jsx/Material/blur.native.js +100 -0
- package/dist/jsx/Material/blur.native.js.map +1 -0
- package/dist/jsx/Material/index.mjs +10 -4
- package/dist/jsx/Material/index.mjs.map +1 -1
- package/dist/jsx/Material/index.native.js +9 -3
- package/dist/jsx/Material/index.native.js.map +1 -1
- package/dist/jsx/Meter/index.mjs +4 -3
- package/dist/jsx/Meter/index.mjs.map +1 -1
- package/dist/jsx/Meter/index.native.js +3 -1
- package/dist/jsx/Meter/index.native.js.map +1 -1
- package/dist/jsx/SortableList/index.mjs +2 -1
- package/dist/jsx/SortableList/index.mjs.map +1 -1
- package/dist/jsx/SortableList/index.native.js +4 -1
- package/dist/jsx/SortableList/index.native.js.map +1 -1
- package/dist/jsx/SortableList/useUserOrder.mjs +58 -0
- package/dist/jsx/SortableList/useUserOrder.mjs.map +1 -0
- package/dist/jsx/SortableList/useUserOrder.native.js +107 -0
- package/dist/jsx/SortableList/useUserOrder.native.js.map +1 -0
- package/dist/jsx/TreeSelect/index.mjs +8 -2
- package/dist/jsx/TreeSelect/index.mjs.map +1 -1
- package/dist/jsx/TreeSelect/index.native.js +7 -1
- package/dist/jsx/TreeSelect/index.native.js.map +1 -1
- package/dist/jsx/appShell/TabBar.mjs +10 -5
- package/dist/jsx/appShell/TabBar.mjs.map +1 -1
- package/dist/jsx/appShell/TabBar.native.js +10 -5
- package/dist/jsx/appShell/TabBar.native.js.map +1 -1
- package/dist/jsx/appShell/TabHost.native.js +1 -0
- package/dist/jsx/appShell/TabHost.native.js.map +1 -1
- package/dist/jsx/charts/Sparkline.mjs +1 -1
- package/dist/jsx/charts/Sparkline.mjs.map +1 -1
- package/dist/jsx/charts/Sparkline.native.js +1 -1
- package/dist/jsx/charts/Sparkline.native.js.map +1 -1
- package/dist/jsx/componentColors.mjs +1 -1
- package/dist/jsx/componentColors.native.js +1 -1
- package/dist/jsx/feedback/NotifyHost.native.js +1 -1
- package/dist/jsx/formLayouts/PreferencePanel.native.js +1 -1
- package/dist/jsx/index.js +5 -2
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +5 -2
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +7 -2
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/layouts/AsyncBoundary.native.js +1 -1
- package/dist/jsx/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/jsx/layouts/page.mjs +0 -4
- package/dist/jsx/layouts/page.mjs.map +1 -1
- package/dist/jsx/layouts/page.native.js +0 -4
- package/dist/jsx/layouts/page.native.js.map +1 -1
- package/dist/jsx/views/ImageGrid.mjs +10 -13
- package/dist/jsx/views/ImageGrid.mjs.map +1 -1
- package/dist/jsx/views/ImageGrid.native.js +9 -16
- package/dist/jsx/views/ImageGrid.native.js.map +1 -1
- package/dist/jsx/views/ReportBuilder.mjs +4 -4
- package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
- package/dist/jsx/views/ReportBuilder.native.js +3 -3
- package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
- package/dist/jsx/views/index.mjs +2 -1
- package/dist/jsx/views/index.mjs.map +1 -1
- package/dist/jsx/views/index.native.js +2 -0
- package/dist/jsx/views/index.native.js.map +1 -1
- package/dist/jsx/views/sameNameScope.mjs +14 -0
- package/dist/jsx/views/sameNameScope.mjs.map +1 -0
- package/dist/jsx/views/sameNameScope.native.js +63 -0
- package/dist/jsx/views/sameNameScope.native.js.map +1 -0
- package/dist/jsx/views/usePageFlowLoadMore.mjs +57 -0
- package/dist/jsx/views/usePageFlowLoadMore.mjs.map +1 -0
- package/dist/jsx/views/usePageFlowLoadMore.native.js +93 -0
- package/dist/jsx/views/usePageFlowLoadMore.native.js.map +1 -0
- package/package.json +18 -9
- package/src/Diff/Diff.spec.tsx +105 -0
- package/src/Diff/Diff.stories.tsx +44 -0
- package/src/Diff/diff.ts +61 -0
- package/src/Diff/index.tsx +145 -0
- package/src/ElapsedProgress/ElapsedProgress.spec.tsx +66 -0
- package/src/ElapsedProgress/ElapsedProgress.stories.tsx +43 -0
- package/src/ElapsedProgress/index.tsx +89 -0
- package/src/Lightbox/Lightbox.spec.tsx +1 -1
- package/src/Lightbox/MediaControl.tsx +6 -14
- package/src/MachineLiteral/MachineLiteral.spec.tsx +86 -0
- package/src/MachineLiteral/MachineLiteral.stories.tsx +44 -0
- package/src/MachineLiteral/index.tsx +75 -0
- package/src/Material/blur.native.spec.tsx +135 -0
- package/src/Material/blur.native.tsx +93 -0
- package/src/Material/blur.ts +11 -0
- package/src/Material/index.tsx +18 -6
- package/src/Meter/index.tsx +4 -2
- package/src/SortableList/index.tsx +2 -0
- package/src/SortableList/useUserOrder.spec.tsx +110 -0
- package/src/SortableList/useUserOrder.ts +96 -0
- package/src/TreeSelect/TreeSelect.rows.spec.tsx +44 -0
- package/src/TreeSelect/index.tsx +12 -1
- package/src/appShell/TabBar.tsx +3 -0
- package/src/appShell/TabHost.native.spec.tsx +21 -1
- package/src/appShell/TabHost.native.tsx +8 -0
- package/src/charts/Sparkline.tsx +3 -3
- package/src/componentColors.ts +1 -1
- package/src/index.ts +7 -0
- package/src/layouts/page.tsx +1 -8
- package/src/layouts/pageChrome.phone.spec.tsx +14 -0
- package/src/presentationEmpty.spec.tsx +71 -0
- package/src/views/ImageGrid.native-press.spec.tsx +172 -0
- package/src/views/ImageGrid.tsx +11 -17
- package/src/views/ReportBuilder.tsx +4 -3
- package/src/views/index.ts +1 -0
- package/src/views/sameNameScope.spec.tsx +55 -0
- package/src/views/sameNameScope.ts +22 -0
- package/src/views/usePageFlowLoadMore.ts +79 -0
- package/types/Diff/diff.d.ts +17 -0
- package/types/Diff/diff.d.ts.map +1 -0
- package/types/Diff/index.d.ts +15 -0
- package/types/Diff/index.d.ts.map +1 -0
- package/types/ElapsedProgress/index.d.ts +15 -0
- package/types/ElapsedProgress/index.d.ts.map +1 -0
- package/types/Lightbox/MediaControl.d.ts +2 -4
- package/types/Lightbox/MediaControl.d.ts.map +1 -1
- package/types/MachineLiteral/index.d.ts +13 -0
- package/types/MachineLiteral/index.d.ts.map +1 -0
- package/types/Material/blur.d.ts +9 -0
- package/types/Material/blur.d.ts.map +1 -0
- package/types/Material/blur.native.d.ts +38 -0
- package/types/Material/blur.native.d.ts.map +1 -0
- package/types/Material/index.d.ts.map +1 -1
- package/types/Meter/index.d.ts +2 -0
- package/types/Meter/index.d.ts.map +1 -1
- package/types/SortableList/index.d.ts +2 -0
- package/types/SortableList/index.d.ts.map +1 -1
- package/types/SortableList/useUserOrder.d.ts +28 -0
- package/types/SortableList/useUserOrder.d.ts.map +1 -0
- package/types/TreeSelect/index.d.ts.map +1 -1
- package/types/appShell/TabBar.d.ts.map +1 -1
- package/types/appShell/TabHost.native.d.ts +1 -0
- package/types/appShell/TabHost.native.d.ts.map +1 -1
- package/types/charts/Sparkline.d.ts +2 -2
- package/types/charts/Sparkline.d.ts.map +1 -1
- package/types/componentColors.d.ts +1 -1
- package/types/index.d.ts +5 -2
- package/types/index.d.ts.map +1 -1
- package/types/layouts/page.d.ts.map +1 -1
- package/types/views/ImageGrid.d.ts.map +1 -1
- package/types/views/ReportBuilder.d.ts.map +1 -1
- package/types/views/index.d.ts +1 -0
- package/types/views/index.d.ts.map +1 -1
- package/types/views/sameNameScope.d.ts +8 -0
- package/types/views/sameNameScope.d.ts.map +1 -0
- package/types/views/usePageFlowLoadMore.d.ts +26 -0
- package/types/views/usePageFlowLoadMore.d.ts.map +1 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FZ-8659, under tamagui's NATIVE build (vitest.native.config.mjs): a
|
|
3
|
+
* page-flow ImageGrid loads its next page when the user scrolls to the end.
|
|
4
|
+
*
|
|
5
|
+
* The grid flows with the screen's scroll, so it never sees a scroll event.
|
|
6
|
+
* Native measures the sentinel under the last row in window coordinates, and
|
|
7
|
+
* "scrolling" here moves where that measurement says the sentinel sits.
|
|
8
|
+
*/
|
|
9
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
10
|
+
import { act, cleanup } from "@testing-library/react";
|
|
11
|
+
import { useCallback, useState } from "react";
|
|
12
|
+
import { isWeb } from "tamagui";
|
|
13
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
14
|
+
import { ImageGrid } from "./ImageGrid";
|
|
15
|
+
import { PAGE_FLOW_POLL_MS } from "./usePageFlowLoadMore";
|
|
16
|
+
|
|
17
|
+
type Rect = [x: number, y: number, width: number, height: number];
|
|
18
|
+
|
|
19
|
+
const columns = 3;
|
|
20
|
+
const rowHeight = 1000;
|
|
21
|
+
/** Scroll offset of the screen's ScrollView, or null for a sentinel not laid out yet. */
|
|
22
|
+
let scrollY: number | null = 0;
|
|
23
|
+
|
|
24
|
+
const tileCount = () => document.querySelectorAll('[data-testid="tile"]').length;
|
|
25
|
+
const contentHeight = () => Math.ceil(tileCount() / columns) * rowHeight;
|
|
26
|
+
const sentinelRect = (): Rect =>
|
|
27
|
+
scrollY === null ? [0, 0, 0, 0] : [0, contentHeight() - scrollY, 390, 1];
|
|
28
|
+
|
|
29
|
+
// A phone's window. The test DOM reports 0 x 0, which no sentinel can enter.
|
|
30
|
+
vi.mock("tamagui", async (importOriginal) => ({
|
|
31
|
+
...(await importOriginal<typeof import("tamagui")>()),
|
|
32
|
+
useWindowDimensions: () => ({ width: 390, height: 844, scale: 3, fontScale: 1 }),
|
|
33
|
+
}));
|
|
34
|
+
const windowHeight = 844;
|
|
35
|
+
|
|
36
|
+
/** The host view's own measureInWindow answers with the modelled scroll position. */
|
|
37
|
+
const stubSentinel = () => {
|
|
38
|
+
const el = document.querySelector('[data-testid="image-grid-sentinel"]') as
|
|
39
|
+
| (HTMLElement & { measureInWindow?: (cb: (...rect: Rect) => void) => void })
|
|
40
|
+
| null;
|
|
41
|
+
if (el) el.measureInWindow = (cb) => cb(...sentinelRect());
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
beforeEach(() => {
|
|
45
|
+
vi.useFakeTimers();
|
|
46
|
+
scrollY = 0;
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
afterEach(() => {
|
|
50
|
+
cleanup();
|
|
51
|
+
vi.useRealTimers();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
const all = Array.from({ length: 21 }, (_, i) => ({ id: i + 1 }));
|
|
55
|
+
|
|
56
|
+
/** The FrappeList bridge's shape: onLoadMore widens the slice, 12 per page. */
|
|
57
|
+
function Paged({
|
|
58
|
+
onRequest,
|
|
59
|
+
isLoading = false,
|
|
60
|
+
pageSize = 12,
|
|
61
|
+
step = pageSize,
|
|
62
|
+
}: {
|
|
63
|
+
onRequest: () => void;
|
|
64
|
+
isLoading?: boolean;
|
|
65
|
+
pageSize?: number;
|
|
66
|
+
/** Rows a request adds; 0 pins the grid so nothing but the latch stops a repeat. */
|
|
67
|
+
step?: number;
|
|
68
|
+
}) {
|
|
69
|
+
const [limit, setLimit] = useState(pageSize);
|
|
70
|
+
const onLoadMore = useCallback(() => {
|
|
71
|
+
onRequest();
|
|
72
|
+
setLimit((prev) => prev + step);
|
|
73
|
+
}, [onRequest, step]);
|
|
74
|
+
const items = all.slice(0, limit);
|
|
75
|
+
return (
|
|
76
|
+
<ImageGrid
|
|
77
|
+
items={items}
|
|
78
|
+
columns={columns}
|
|
79
|
+
isLoading={isLoading}
|
|
80
|
+
hasMore={all.length > limit}
|
|
81
|
+
onLoadMore={onLoadMore}
|
|
82
|
+
renderItem={(item) => <span data-testid="tile">{item.id}</span>}
|
|
83
|
+
/>
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const poll = (times = 1) => {
|
|
88
|
+
for (let i = 0; i < times; i++) {
|
|
89
|
+
stubSentinel();
|
|
90
|
+
act(() => {
|
|
91
|
+
vi.advanceTimersByTime(PAGE_FLOW_POLL_MS);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/** Scroll until the grid's last row sits on the window's bottom edge. */
|
|
97
|
+
const scrollToEnd = (polls = 1) => {
|
|
98
|
+
scrollY = contentHeight() - windowHeight + 1;
|
|
99
|
+
poll(polls);
|
|
100
|
+
};
|
|
101
|
+
const scrollToTop = (polls = 1) => {
|
|
102
|
+
scrollY = 0;
|
|
103
|
+
poll(polls);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
describe("ImageGrid page-flow load-more under tamagui's NATIVE build (FZ-8659)", () => {
|
|
107
|
+
it("runs tamagui's native build", () => {
|
|
108
|
+
expect(isWeb).toBe(false);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it("requests nothing while the end of the grid is below the window", () => {
|
|
112
|
+
const onRequest = vi.fn();
|
|
113
|
+
renderWithProviders(<Paged onRequest={onRequest} />);
|
|
114
|
+
scrollToTop(8);
|
|
115
|
+
expect(onRequest).not.toHaveBeenCalled();
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
it("requests the next page once per scroll to the end, then stops when nothing remains", () => {
|
|
119
|
+
const onRequest = vi.fn();
|
|
120
|
+
renderWithProviders(<Paged onRequest={onRequest} pageSize={8} />);
|
|
121
|
+
expect(tileCount()).toBe(8);
|
|
122
|
+
|
|
123
|
+
scrollToEnd(6);
|
|
124
|
+
expect(onRequest).toHaveBeenCalledTimes(1);
|
|
125
|
+
expect(tileCount()).toBe(16);
|
|
126
|
+
|
|
127
|
+
scrollToEnd(6);
|
|
128
|
+
expect(onRequest).toHaveBeenCalledTimes(2);
|
|
129
|
+
expect(tileCount()).toBe(21);
|
|
130
|
+
|
|
131
|
+
scrollToTop(2);
|
|
132
|
+
scrollToEnd(6);
|
|
133
|
+
expect(onRequest).toHaveBeenCalledTimes(2);
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it("fires once while the user rests at the end, and again after leaving and coming back", () => {
|
|
137
|
+
const onRequest = vi.fn();
|
|
138
|
+
renderWithProviders(<Paged onRequest={onRequest} step={0} />);
|
|
139
|
+
scrollToEnd(12);
|
|
140
|
+
expect(onRequest).toHaveBeenCalledTimes(1);
|
|
141
|
+
scrollToTop(2);
|
|
142
|
+
scrollToEnd(12);
|
|
143
|
+
expect(onRequest).toHaveBeenCalledTimes(2);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
it("loads all 21 of the reference bench's records in 12-row pages", () => {
|
|
147
|
+
const onRequest = vi.fn();
|
|
148
|
+
renderWithProviders(<Paged onRequest={onRequest} />);
|
|
149
|
+
expect(tileCount()).toBe(12);
|
|
150
|
+
scrollToEnd(8);
|
|
151
|
+
expect(onRequest).toHaveBeenCalledTimes(1);
|
|
152
|
+
expect(tileCount()).toBe(21);
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
it("holds while a page is in flight and fires once when it clears", () => {
|
|
156
|
+
const onRequest = vi.fn();
|
|
157
|
+
const view = renderWithProviders(<Paged onRequest={onRequest} isLoading />);
|
|
158
|
+
scrollToEnd(6);
|
|
159
|
+
expect(onRequest).not.toHaveBeenCalled();
|
|
160
|
+
view.rerender(<Paged onRequest={onRequest} />);
|
|
161
|
+
poll(6);
|
|
162
|
+
expect(onRequest).toHaveBeenCalledTimes(1);
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
it("never fires for a sentinel that has not been laid out", () => {
|
|
166
|
+
const onRequest = vi.fn();
|
|
167
|
+
renderWithProviders(<Paged onRequest={onRequest} />);
|
|
168
|
+
scrollY = null;
|
|
169
|
+
poll(6);
|
|
170
|
+
expect(onRequest).not.toHaveBeenCalled();
|
|
171
|
+
});
|
|
172
|
+
});
|
package/src/views/ImageGrid.tsx
CHANGED
|
@@ -19,8 +19,9 @@ import {
|
|
|
19
19
|
} from "@multiplatform.one/theme";
|
|
20
20
|
import { useHotkey } from "@tanstack/react-hotkeys";
|
|
21
21
|
import type { RegisterableHotkey } from "@tanstack/react-hotkeys";
|
|
22
|
-
import React, { useCallback,
|
|
22
|
+
import React, { useCallback, useId, useRef, useState } from "react";
|
|
23
23
|
import { useTranslation } from "../shared/i18n";
|
|
24
|
+
import { usePageFlowLoadMore } from "./usePageFlowLoadMore";
|
|
24
25
|
// useWindowDimensions from tamagui, NOT react-native: importing react-native
|
|
25
26
|
// here pulls react-native-web's CJS inline-style-prefixer into the SSR module
|
|
26
27
|
// graph, which the SSR runner evaluates as ESM ("exports is not defined").
|
|
@@ -429,21 +430,14 @@ export function ImageGrid<T>({
|
|
|
429
430
|
hotkeyOpts,
|
|
430
431
|
);
|
|
431
432
|
|
|
432
|
-
// Page-flow mode (no explicit height):
|
|
433
|
-
//
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
if (!el) return;
|
|
441
|
-
const observer = new IntersectionObserver((entries) => {
|
|
442
|
-
if (entries.some((entry) => entry.isIntersecting)) onLoadMore();
|
|
443
|
-
});
|
|
444
|
-
observer.observe(el);
|
|
445
|
-
return () => observer.disconnect();
|
|
446
|
-
}, [height, onLoadMore, hasMore, isLoading]);
|
|
433
|
+
// Page-flow mode (no explicit height): load the next page when the bottom
|
|
434
|
+
// sentinel enters the window, on the web and on native (FZ-8659).
|
|
435
|
+
usePageFlowLoadMore({
|
|
436
|
+
sentinelRef,
|
|
437
|
+
enabled: height === undefined && hasMore && !isLoading,
|
|
438
|
+
onLoadMore,
|
|
439
|
+
rearmKey: items.length,
|
|
440
|
+
});
|
|
447
441
|
|
|
448
442
|
// Error wins over empty (DG-ST-01); initial load renders the grid twin.
|
|
449
443
|
const hasError = resolveAsyncStatus({ error }) === "error";
|
|
@@ -533,7 +527,7 @@ export function ImageGrid<T>({
|
|
|
533
527
|
<Spinner size="small" />
|
|
534
528
|
</YStack>
|
|
535
529
|
)}
|
|
536
|
-
<View ref={sentinelRef as any} height={1} />
|
|
530
|
+
<View ref={sentinelRef as any} height={1} testID="image-grid-sentinel" />
|
|
537
531
|
</View>
|
|
538
532
|
);
|
|
539
533
|
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
formatTimeOfDay,
|
|
14
14
|
hairline,
|
|
15
15
|
keyboardFocusRingProps,
|
|
16
|
+
listHeightForRows,
|
|
16
17
|
pressTargetStyle,
|
|
17
18
|
useResolvedKnobs,
|
|
18
19
|
ensureKeyboardModalityTracking,
|
|
@@ -733,7 +734,7 @@ export function ReportBuilder({
|
|
|
733
734
|
})}
|
|
734
735
|
</Button>
|
|
735
736
|
</DropdownMenu.Trigger>
|
|
736
|
-
<DropdownMenu.Content maxHeight={
|
|
737
|
+
<DropdownMenu.Content maxHeight={listHeightForRows(10, knobProps.menuRow.minHeight)}>
|
|
737
738
|
<DropdownMenu.Label>{t("Report columns")}</DropdownMenu.Label>
|
|
738
739
|
{columns.map((column) => {
|
|
739
740
|
const checked = enabledColumnSet.has(column.fieldname);
|
|
@@ -759,7 +760,7 @@ export function ReportBuilder({
|
|
|
759
760
|
{groupByCol ? t("Group by: {{field}}", { field: groupByCol.label }) : t("Group by")}
|
|
760
761
|
</Button>
|
|
761
762
|
</DropdownMenu.Trigger>
|
|
762
|
-
<DropdownMenu.Content maxHeight={
|
|
763
|
+
<DropdownMenu.Content maxHeight={listHeightForRows(10, knobProps.menuRow.minHeight)}>
|
|
763
764
|
<DropdownMenu.CheckboxItem
|
|
764
765
|
checked={!groupBy}
|
|
765
766
|
closeOnSelect
|
|
@@ -817,7 +818,7 @@ export function ReportBuilder({
|
|
|
817
818
|
})}
|
|
818
819
|
</Button>
|
|
819
820
|
</DropdownMenu.Trigger>
|
|
820
|
-
<DropdownMenu.Content maxHeight={
|
|
821
|
+
<DropdownMenu.Content maxHeight={listHeightForRows(10, knobProps.menuRow.minHeight)}>
|
|
821
822
|
{numericColumns.map((column) => (
|
|
822
823
|
<DropdownMenu.CheckboxItem
|
|
823
824
|
key={column.fieldname}
|
package/src/views/index.ts
CHANGED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LC-213 SAME-NAME-SCOPE: two items with one name show the scope that tells
|
|
3
|
+
* them apart, in the visible title and so in the row's accessible name; items
|
|
4
|
+
* without a collision carry no suffix.
|
|
5
|
+
*/
|
|
6
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
7
|
+
import { cleanup, screen } from "@testing-library/react";
|
|
8
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
9
|
+
import { List, ListRow } from "./List";
|
|
10
|
+
import { scopedNames } from "./sameNameScope";
|
|
11
|
+
|
|
12
|
+
afterEach(cleanup);
|
|
13
|
+
|
|
14
|
+
const apps = [
|
|
15
|
+
{ id: "a", name: "postgres", tenant: "corp" },
|
|
16
|
+
{ id: "b", name: "redis", tenant: "corp" },
|
|
17
|
+
{ id: "c", name: "postgres", tenant: "master" },
|
|
18
|
+
{ id: "d", name: "nginx", tenant: "master" },
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
describe("scopedNames (LC-213)", () => {
|
|
22
|
+
it("suffixes exactly the colliding items with their scope", () => {
|
|
23
|
+
expect(
|
|
24
|
+
scopedNames(
|
|
25
|
+
apps,
|
|
26
|
+
(app) => app.name,
|
|
27
|
+
(app) => app.tenant,
|
|
28
|
+
),
|
|
29
|
+
).toEqual(["postgres (corp)", "redis", "postgres (master)", "nginx"]);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("a list of the fixture gives every row a unique accessible name", () => {
|
|
33
|
+
const labels = scopedNames(
|
|
34
|
+
apps,
|
|
35
|
+
(app) => app.name,
|
|
36
|
+
(app) => app.tenant,
|
|
37
|
+
);
|
|
38
|
+
renderWithProviders(
|
|
39
|
+
<List
|
|
40
|
+
items={apps}
|
|
41
|
+
aria-label="Apps"
|
|
42
|
+
height={300}
|
|
43
|
+
estimateSize={50}
|
|
44
|
+
renderItem={(_app, index) => <ListRow title={labels[index]} />}
|
|
45
|
+
/>,
|
|
46
|
+
);
|
|
47
|
+
const names = screen.getAllByRole("listitem").map((row) => row.textContent);
|
|
48
|
+
expect(names).toHaveLength(4);
|
|
49
|
+
expect(new Set(names).size).toBe(4);
|
|
50
|
+
expect(names.filter((name) => /\(.+\)$/.test(name ?? ""))).toEqual([
|
|
51
|
+
"postgres (corp)",
|
|
52
|
+
"postgres (master)",
|
|
53
|
+
]);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LC-213 SAME-NAME-SCOPE: when two items in one collection share a display
|
|
3
|
+
* name, each colliding item's label carries the scope that tells them apart
|
|
4
|
+
* ("postgres (corp)", "postgres (master)"). Items without a collision keep
|
|
5
|
+
* their bare name. The label is the visible title and the accessible name.
|
|
6
|
+
*/
|
|
7
|
+
export function scopedNames<T>(
|
|
8
|
+
items: readonly T[],
|
|
9
|
+
nameOf: (item: T) => string,
|
|
10
|
+
scopeOf: (item: T) => string | null | undefined,
|
|
11
|
+
): string[] {
|
|
12
|
+
const counts = new Map<string, number>();
|
|
13
|
+
for (const item of items) {
|
|
14
|
+
const name = nameOf(item);
|
|
15
|
+
counts.set(name, (counts.get(name) ?? 0) + 1);
|
|
16
|
+
}
|
|
17
|
+
return items.map((item) => {
|
|
18
|
+
const name = nameOf(item);
|
|
19
|
+
const scope = scopeOf(item);
|
|
20
|
+
return (counts.get(name) ?? 0) > 1 && scope ? `${name} (${scope})` : name;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { type RefObject, useEffect, useRef } from "react";
|
|
2
|
+
import { isWeb, useWindowDimensions } from "tamagui";
|
|
3
|
+
|
|
4
|
+
/** How often native re-measures the sentinel while another page can load. */
|
|
5
|
+
export const PAGE_FLOW_POLL_MS = 250;
|
|
6
|
+
|
|
7
|
+
type WindowRect = (x: number, y: number, width: number, height: number) => void;
|
|
8
|
+
|
|
9
|
+
interface MeasurableNode {
|
|
10
|
+
measureInWindow?: (callback: WindowRect) => void;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface PageFlowLoadMoreOptions {
|
|
14
|
+
/** A 1px view after the last row. */
|
|
15
|
+
sentinelRef: RefObject<unknown>;
|
|
16
|
+
/** False while a page is in flight, when nothing remains, or when the caller owns the scroll. */
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
onLoadMore?: () => void;
|
|
19
|
+
/** Re-arms the trigger when it changes (the rendered item count), so short pages keep loading. */
|
|
20
|
+
rearmKey: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Infinite load for a list that flows with its host's scroll (FZ-8659).
|
|
25
|
+
*
|
|
26
|
+
* The list never sees that scroll: on a phone the screen's ScrollView owns
|
|
27
|
+
* it. Web watches the sentinel with an IntersectionObserver. React Native has
|
|
28
|
+
* none, so native measures the sentinel in window coordinates on a short
|
|
29
|
+
* interval and fires when it crosses into the window, the same edge the
|
|
30
|
+
* observer reports. Both fire once per crossing: the observer by its own
|
|
31
|
+
* transitions, native by latching until the sentinel leaves again. `enabled`
|
|
32
|
+
* going false (a page in flight) and `rearmKey` changing (a page landed)
|
|
33
|
+
* start a fresh watch on both.
|
|
34
|
+
*/
|
|
35
|
+
export function usePageFlowLoadMore({
|
|
36
|
+
sentinelRef,
|
|
37
|
+
enabled,
|
|
38
|
+
onLoadMore,
|
|
39
|
+
rearmKey,
|
|
40
|
+
}: PageFlowLoadMoreOptions): void {
|
|
41
|
+
const onLoadMoreRef = useRef(onLoadMore);
|
|
42
|
+
onLoadMoreRef.current = onLoadMore;
|
|
43
|
+
const { width, height } = useWindowDimensions();
|
|
44
|
+
const windowRef = useRef({ width, height });
|
|
45
|
+
windowRef.current = { width, height };
|
|
46
|
+
const live = enabled && Boolean(onLoadMore);
|
|
47
|
+
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (!live) return;
|
|
50
|
+
if (isWeb) {
|
|
51
|
+
if (typeof IntersectionObserver === "undefined") return;
|
|
52
|
+
const el = sentinelRef.current as Element | null;
|
|
53
|
+
if (!el) return;
|
|
54
|
+
const observer = new IntersectionObserver((entries) => {
|
|
55
|
+
if (entries.some((entry) => entry.isIntersecting)) onLoadMoreRef.current?.();
|
|
56
|
+
});
|
|
57
|
+
observer.observe(el);
|
|
58
|
+
return () => observer.disconnect();
|
|
59
|
+
}
|
|
60
|
+
let active = true;
|
|
61
|
+
let inside = false;
|
|
62
|
+
const timer = setInterval(() => {
|
|
63
|
+
const node = sentinelRef.current as MeasurableNode | null;
|
|
64
|
+
if (typeof node?.measureInWindow !== "function") return;
|
|
65
|
+
node.measureInWindow((x, y, w, h) => {
|
|
66
|
+
// An unmeasured view reports all zeros; width 0 means not laid out.
|
|
67
|
+
if (!active || w <= 0) return;
|
|
68
|
+
const win = windowRef.current;
|
|
69
|
+
const now = y <= win.height && y + h >= 0 && x < win.width && x + w > 0;
|
|
70
|
+
if (now && !inside) onLoadMoreRef.current?.();
|
|
71
|
+
inside = now;
|
|
72
|
+
});
|
|
73
|
+
}, PAGE_FLOW_POLL_MS);
|
|
74
|
+
return () => {
|
|
75
|
+
active = false;
|
|
76
|
+
clearInterval(timer);
|
|
77
|
+
};
|
|
78
|
+
}, [live, rearmKey, sentinelRef]);
|
|
79
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type DiffLineKind = "added" | "removed" | "same";
|
|
2
|
+
export interface DiffLine {
|
|
3
|
+
kind: DiffLineKind;
|
|
4
|
+
text: string;
|
|
5
|
+
/** 1-based line in the before text; absent on an added line. */
|
|
6
|
+
before?: number;
|
|
7
|
+
/** 1-based line in the after text; absent on a removed line. */
|
|
8
|
+
after?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface DiffCounts {
|
|
11
|
+
added: number;
|
|
12
|
+
removed: number;
|
|
13
|
+
}
|
|
14
|
+
/** Line diff by longest common subsequence, removals before additions in a hunk. */
|
|
15
|
+
export declare function diffLines(before: string, after: string): DiffLine[];
|
|
16
|
+
export declare function countDiff(lines: readonly DiffLine[]): DiffCounts;
|
|
17
|
+
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/Diff/diff.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CA6BnE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,UAAU,CAQhE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type YStackProps } from "tamagui";
|
|
2
|
+
export { countDiff, diffLines } from "./diff";
|
|
3
|
+
export type { DiffCounts, DiffLine, DiffLineKind } from "./diff";
|
|
4
|
+
export interface DiffProps extends Omit<YStackProps, "children"> {
|
|
5
|
+
/** The text before the change; null or undefined is no reading. */
|
|
6
|
+
before?: string | null;
|
|
7
|
+
/** The text after the change; null or undefined is no reading. */
|
|
8
|
+
after?: string | null;
|
|
9
|
+
/** What changed, the head of the region's accessible name ("nginx.conf"). */
|
|
10
|
+
label: string;
|
|
11
|
+
/** Show before/after line numbers in the gutter (default true). */
|
|
12
|
+
lineNumbers?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function Diff({ before, after, label, lineNumbers, ...frameProps }: DiffProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Diff/index.tsx"],"names":[],"mappings":"AAcA,OAAO,EAA+B,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAKxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEjE,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IAC9D,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAkBD,wBAAgB,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,WAAkB,EAAE,GAAG,UAAU,EAAE,EAAE,SAAS,2CA+F1F"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type XStackProps } from "tamagui";
|
|
2
|
+
export interface ElapsedProgressProps extends Omit<XStackProps, "children"> {
|
|
3
|
+
/** When the work started (epoch ms or a Date). */
|
|
4
|
+
startedAt: number | Date;
|
|
5
|
+
/** Determinate share done, 0 to 1; omit when the work can't say. */
|
|
6
|
+
progress?: number | null;
|
|
7
|
+
/** How long the spinner stays bare before the elapsed time joins it (ms, default 3000). */
|
|
8
|
+
threshold?: number;
|
|
9
|
+
/** What is running, for the accessible name ("Build"). */
|
|
10
|
+
label?: string;
|
|
11
|
+
}
|
|
12
|
+
/** m:ss under an hour, h:mm:ss past it. */
|
|
13
|
+
export declare function formatElapsed(ms: number): string;
|
|
14
|
+
export declare function ElapsedProgress({ startedAt, progress, threshold, label, ...rowProps }: ElapsedProgressProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ElapsedProgress/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAIjE,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IACzE,kDAAkD;IAClD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2CAA2C;AAC3C,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,QAAQ,EACR,SAAgB,EAChB,KAAK,EACL,GAAG,QAAQ,EACZ,EAAE,oBAAoB,2CA+CtB"}
|
|
@@ -3,10 +3,8 @@ import { Button } from "../Button";
|
|
|
3
3
|
type MediaControlProps = Pick<ComponentProps<typeof Button>, "icon" | "aria-label" | "onPress" | "disabled">;
|
|
4
4
|
/**
|
|
5
5
|
* An icon-only control floating over a photo (LC-176 ICON-BUTTON, over-media
|
|
6
|
-
* case): a bare glyph on a round plate
|
|
7
|
-
*
|
|
8
|
-
* backdrop blur (LC-206). Swaps for the shared IconButton's over-media
|
|
9
|
-
* variant once FZ-8020 lands.
|
|
6
|
+
* case): a bare glyph on a flat round plate, so it stays legible on any frame.
|
|
7
|
+
* The plate is a fill and nothing else; it does not pretend to be glass.
|
|
10
8
|
*/
|
|
11
9
|
export declare function MediaControl(props: MediaControlProps): import("react/jsx-runtime").JSX.Element;
|
|
12
10
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaControl.d.ts","sourceRoot":"","sources":["../../src/Lightbox/MediaControl.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"MediaControl.d.ts","sourceRoot":"","sources":["../../src/Lightbox/MediaControl.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,KAAK,iBAAiB,GAAG,IAAI,CAC3B,cAAc,CAAC,OAAO,MAAM,CAAC,EAC7B,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,CAC/C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAmBpD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type XStackProps } from "tamagui";
|
|
2
|
+
export interface MachineLiteralProps extends Omit<XStackProps, "children"> {
|
|
3
|
+
/** The literal, shown and copied exactly as given. */
|
|
4
|
+
value: string;
|
|
5
|
+
/** Its human reading, or a formatter that derives one ("daily at 02:00"). */
|
|
6
|
+
reading?: string | ((value: string) => string | null | undefined);
|
|
7
|
+
/** What the literal is, for the copy action's name ("cron expression"). */
|
|
8
|
+
label?: string;
|
|
9
|
+
/** False drops the copy action (default true). */
|
|
10
|
+
copyable?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function MachineLiteral({ value, reading, label, copyable, ...rowProps }: MachineLiteralProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/MachineLiteral/index.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAMjE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IACxE,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAClE,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAe,EACf,GAAG,QAAQ,EACZ,EAAE,mBAAmB,2CAyCrB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The material's native blur, web arm: the browser blurs through
|
|
3
|
+
* `backdropFilter`, so there is no blur view to draw.
|
|
4
|
+
*/
|
|
5
|
+
export declare function useMaterialBlur(): null;
|
|
6
|
+
export declare function MaterialBlurFill(_props: {
|
|
7
|
+
radius?: number;
|
|
8
|
+
}): null;
|
|
9
|
+
//# sourceMappingURL=blur.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blur.d.ts","sourceRoot":"","sources":["../../src/Material/blur.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAElE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ComponentType } from "react";
|
|
2
|
+
import { type ViewStyle } from "react-native";
|
|
3
|
+
/** The name expo-blur registers its native module and view under. */
|
|
4
|
+
export declare const blurNativeModule = "ExpoBlur";
|
|
5
|
+
/** The HIG material a tab bar or toolbar uses, per colour scheme. */
|
|
6
|
+
export declare const materialBlurTint: {
|
|
7
|
+
readonly light: "systemChromeMaterialLight";
|
|
8
|
+
readonly dark: "systemChromeMaterialDark";
|
|
9
|
+
};
|
|
10
|
+
export declare function blurTintFor(themeName: string | undefined): string;
|
|
11
|
+
export type MaterialBlurView = ComponentType<{
|
|
12
|
+
tint?: string;
|
|
13
|
+
intensity?: number;
|
|
14
|
+
pointerEvents?: "none";
|
|
15
|
+
style?: ViewStyle | ViewStyle[];
|
|
16
|
+
}>;
|
|
17
|
+
export interface BlurSources {
|
|
18
|
+
core: () => {
|
|
19
|
+
requireOptionalNativeModule?: (name: string) => unknown;
|
|
20
|
+
};
|
|
21
|
+
blur: () => {
|
|
22
|
+
BlurView?: MaterialBlurView;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** The BlurView, or null when this platform or binary cannot draw it. */
|
|
26
|
+
export declare function resolveBlurView(sources: BlurSources, os: string): MaterialBlurView | null;
|
|
27
|
+
export declare function useMaterialBlur(): {
|
|
28
|
+
BlurView: MaterialBlurView;
|
|
29
|
+
tint: string;
|
|
30
|
+
} | null;
|
|
31
|
+
/**
|
|
32
|
+
* The blur behind a material's content: fills its parent inside the hairline
|
|
33
|
+
* and clips to the parent's corner radius, so the parent keeps its shadow.
|
|
34
|
+
*/
|
|
35
|
+
export declare function MaterialBlurFill({ radius }: {
|
|
36
|
+
radius?: number;
|
|
37
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
38
|
+
//# sourceMappingURL=blur.native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blur.native.d.ts","sourceRoot":"","sources":["../../src/Material/blur.native.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAE3C,qEAAqE;AACrE,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AAEX,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEjE;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM;QAAE,2BAA2B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;KAAE,CAAC;IACxE,IAAI,EAAE,MAAM;QAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAC;CAC7C;AAOD,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAQzF;AASD,wBAAgB,eAAe,IAAI;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKrF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAU,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,kDAYnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Material/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Material/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,KAAK,cAAc,EAAU,KAAK,WAAW,EAAY,MAAM,SAAS,CAAC;AAElF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEzC,eAAO,MAAM,SAAS;;;;;;;;;CASrB,CAAC;AAEF,wBAAgB,eAAe,CAAC,SAAS,GAAE,iBAA4B,GAAG,MAAM,CAG/E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK1F;AAED,wBAAgB,WAAW,CAAC,SAAS,GAAE,iBAA4B;;;;;;;;;;;;;EAkBlE;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,eAAO,MAAM,QAAQ,0GAanB,CAAC"}
|
package/types/Meter/index.d.ts
CHANGED
|
@@ -47,6 +47,8 @@ export interface MeterProps extends Omit<GetProps<typeof MeterRoot>, "children">
|
|
|
47
47
|
loading?: boolean;
|
|
48
48
|
disabled?: boolean;
|
|
49
49
|
}
|
|
50
|
+
/** LC-220: an unknown level is spoken as no reading, never as a zero or a bare dash. */
|
|
51
|
+
export declare const NO_READING = "No reading";
|
|
50
52
|
/**
|
|
51
53
|
* Bounded-quantity display. Inert — no tab stop, no focus ring. The input
|
|
52
54
|
* twin is Slider.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Meter/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Meter/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAUL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEnE,QAAA,MAAM,SAAS;;;6CAEb,CAAC;AA+BH,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,SAAS,CAAC,EAAE,UAAU,CAAC;IAC9E,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAQD,wFAAwF;AACxF,eAAO,MAAM,UAAU,eAAe,CAAC;AAcvC;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAI,EACJ,MAAiB,EACjB,UAAU,EACV,SAAS,EACT,MAAmB,EACnB,QAAQ,EACR,OAAe,EACf,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,UAAU,2CA2KZ"}
|
|
@@ -3,6 +3,8 @@ import { type SizeTokens, type YStackProps } from "tamagui";
|
|
|
3
3
|
export { SortableHandle, SortableHandleWell } from "./SortableHandle";
|
|
4
4
|
export { SortableSessionProvider, useSortableRows } from "./useSortableRows";
|
|
5
5
|
export type { SortableSession, UseSortableRowsOptions } from "./useSortableRows";
|
|
6
|
+
export { applyUserOrder, useUserOrder } from "./useUserOrder";
|
|
7
|
+
export type { UseUserOrderOptions, UserOrderStorage } from "./useUserOrder";
|
|
6
8
|
export type SortableDisabledStyle = "keepLabel" | "dimWhole";
|
|
7
9
|
export type SortableListProps<T> = Omit<YStackProps, "children" | "onChange" | "disabled" | "aria-label"> & {
|
|
8
10
|
items: T[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SortableList/index.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7E,OAAO,EACL,KAAK,UAAU,EAKf,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAOjB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SortableList/index.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7E,OAAO,EACL,KAAK,UAAU,EAKf,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAOjB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE7D,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,IAAI,CACrC,WAAW,EACX,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CACpD,GAAG;IACF,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACnD,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,qEAAqE;IACrE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AASF,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAC9B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,aAA2B,EAC3B,IAAI,EACJ,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,SAAS,EACvB,GAAG,UAAU,EACd,EAAE,iBAAiB,CAAC,CAAC,CAAC,2CAuJtB"}
|