@zerodep-dev/vue-tsx-pro-ui 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +32 -2
- package/dist/base/Badge.d.ts +28 -0
- package/dist/base/Badge.js +72 -0
- package/dist/base/Badge.js.map +1 -0
- package/dist/base/Blockquote.d.ts +13 -0
- package/dist/base/Blockquote.js +26 -0
- package/dist/base/Blockquote.js.map +1 -0
- package/dist/base/Button.d.ts +18 -0
- package/dist/base/Button.js +86 -0
- package/dist/base/Button.js.map +1 -0
- package/dist/base/ButtonBase.d.ts +21 -0
- package/dist/base/ButtonBase.js +51 -0
- package/dist/base/ButtonBase.js.map +1 -0
- package/dist/base/ButtonGroup.d.ts +24 -0
- package/dist/base/ButtonGroup.js +52 -0
- package/dist/base/ButtonGroup.js.map +1 -0
- package/dist/base/CloseButton.d.ts +15 -0
- package/dist/base/CloseButton.js +38 -0
- package/dist/base/CloseButton.js.map +1 -0
- package/dist/base/Code.d.ts +13 -0
- package/dist/base/Code.js +27 -0
- package/dist/base/Code.js.map +1 -0
- package/dist/base/CodeBlock.d.ts +89 -0
- package/dist/base/CodeBlock.js +265 -0
- package/dist/base/CodeBlock.js.map +1 -0
- package/dist/base/CopyButton.d.ts +40 -0
- package/dist/base/CopyButton.js +113 -0
- package/dist/base/CopyButton.js.map +1 -0
- package/dist/base/Heading.d.ts +49 -0
- package/dist/base/Heading.js +122 -0
- package/dist/base/Heading.js.map +1 -0
- package/dist/base/Icon.d.ts +48 -0
- package/dist/base/Icon.js +110 -0
- package/dist/base/Icon.js.map +1 -0
- package/dist/base/IconButton.d.ts +34 -0
- package/dist/base/IconButton.js +81 -0
- package/dist/base/IconButton.js.map +1 -0
- package/dist/base/IconLinkButton.d.ts +34 -0
- package/dist/base/IconLinkButton.js +81 -0
- package/dist/base/IconLinkButton.js.map +1 -0
- package/dist/base/Indicator.d.ts +126 -0
- package/dist/base/Indicator.js +158 -0
- package/dist/base/Indicator.js.map +1 -0
- package/dist/base/Kbd.d.ts +13 -0
- package/dist/base/Kbd.js +34 -0
- package/dist/base/Kbd.js.map +1 -0
- package/dist/base/Link.d.ts +61 -0
- package/dist/base/Link.js +114 -0
- package/dist/base/Link.js.map +1 -0
- package/dist/base/LinkButton.d.ts +18 -0
- package/dist/base/LinkButton.js +109 -0
- package/dist/base/LinkButton.js.map +1 -0
- package/dist/base/List.d.ts +61 -0
- package/dist/base/List.js +116 -0
- package/dist/base/List.js.map +1 -0
- package/dist/base/Mark.d.ts +13 -0
- package/dist/base/Mark.js +23 -0
- package/dist/base/Mark.js.map +1 -0
- package/dist/base/Spinner.d.ts +20 -0
- package/dist/base/Spinner.js +59 -0
- package/dist/base/Spinner.js.map +1 -0
- package/dist/base/StatusDot.d.ts +48 -0
- package/dist/base/StatusDot.js +62 -0
- package/dist/base/StatusDot.js.map +1 -0
- package/dist/base/Tag.d.ts +29 -0
- package/dist/base/Tag.js +92 -0
- package/dist/base/Tag.js.map +1 -0
- package/dist/base/Text.d.ts +57 -0
- package/dist/base/Text.js +74 -0
- package/dist/base/Text.js.map +1 -0
- package/dist/base/VisuallyHidden.d.ts +13 -0
- package/dist/base/VisuallyHidden.js +28 -0
- package/dist/base/VisuallyHidden.js.map +1 -0
- package/dist/base/badge-styles.d.ts +57 -0
- package/dist/base/badge-styles.js +329 -0
- package/dist/base/badge-styles.js.map +1 -0
- package/dist/base/button-core.d.ts +191 -0
- package/dist/base/button-core.js +660 -0
- package/dist/base/button-core.js.map +1 -0
- package/dist/charts/AreaChart.d.ts +18 -0
- package/dist/charts/AreaChart.js +90 -0
- package/dist/charts/AreaChart.js.map +1 -0
- package/dist/charts/BarChart.d.ts +19 -0
- package/dist/charts/BarChart.js +88 -0
- package/dist/charts/BarChart.js.map +1 -0
- package/dist/charts/ChordChart.d.ts +48 -0
- package/dist/charts/ChordChart.js +149 -0
- package/dist/charts/ChordChart.js.map +1 -0
- package/dist/charts/ComboChart.d.ts +30 -0
- package/dist/charts/ComboChart.js +157 -0
- package/dist/charts/ComboChart.js.map +1 -0
- package/dist/charts/DonutChart.d.ts +65 -0
- package/dist/charts/DonutChart.js +162 -0
- package/dist/charts/DonutChart.js.map +1 -0
- package/dist/charts/FunnelChart.d.ts +69 -0
- package/dist/charts/FunnelChart.js +181 -0
- package/dist/charts/FunnelChart.js.map +1 -0
- package/dist/charts/GraphChart.d.ts +135 -0
- package/dist/charts/GraphChart.js +274 -0
- package/dist/charts/GraphChart.js.map +1 -0
- package/dist/charts/LineChart.d.ts +50 -0
- package/dist/charts/LineChart.js +94 -0
- package/dist/charts/LineChart.js.map +1 -0
- package/dist/charts/MapChart.d.ts +167 -0
- package/dist/charts/MapChart.js +627 -0
- package/dist/charts/MapChart.js.map +1 -0
- package/dist/charts/RadarChart.d.ts +60 -0
- package/dist/charts/RadarChart.js +224 -0
- package/dist/charts/RadarChart.js.map +1 -0
- package/dist/charts/SankeyChart.d.ts +57 -0
- package/dist/charts/SankeyChart.js +150 -0
- package/dist/charts/SankeyChart.js.map +1 -0
- package/dist/charts/ScatterChart.d.ts +18 -0
- package/dist/charts/ScatterChart.js +82 -0
- package/dist/charts/ScatterChart.js.map +1 -0
- package/dist/charts/TimelineChart.d.ts +71 -0
- package/dist/charts/TimelineChart.js +267 -0
- package/dist/charts/TimelineChart.js.map +1 -0
- package/dist/charts/TreemapChart.d.ts +40 -0
- package/dist/charts/TreemapChart.js +155 -0
- package/dist/charts/TreemapChart.js.map +1 -0
- package/dist/charts/WaterfallChart.d.ts +61 -0
- package/dist/charts/WaterfallChart.js +167 -0
- package/dist/charts/WaterfallChart.js.map +1 -0
- package/dist/charts/XYChart.d.ts +206 -0
- package/dist/charts/XYChart.js +520 -0
- package/dist/charts/XYChart.js.map +1 -0
- package/dist/charts/axis-ticks.d.ts +23 -0
- package/dist/charts/axis-ticks.js +59 -0
- package/dist/charts/axis-ticks.js.map +1 -0
- package/dist/charts/export.d.ts +17 -0
- package/dist/charts/export.js +65 -0
- package/dist/charts/export.js.map +1 -0
- package/dist/charts/flow.d.ts +53 -0
- package/dist/charts/flow.js +29 -0
- package/dist/charts/flow.js.map +1 -0
- package/dist/charts/frame.d.ts +147 -0
- package/dist/charts/frame.js +358 -0
- package/dist/charts/frame.js.map +1 -0
- package/dist/charts/index.d.ts +30 -0
- package/dist/charts/index.js +24 -0
- package/dist/charts/label-layout.d.ts +59 -0
- package/dist/charts/label-layout.js +64 -0
- package/dist/charts/label-layout.js.map +1 -0
- package/dist/charts/series.d.ts +36 -0
- package/dist/charts/series.js +60 -0
- package/dist/charts/series.js.map +1 -0
- package/dist/charts/single.d.ts +41 -0
- package/dist/charts/single.js +65 -0
- package/dist/charts/single.js.map +1 -0
- package/dist/config/Provider.d.ts +52 -0
- package/dist/config/Provider.js +111 -0
- package/dist/config/Provider.js.map +1 -0
- package/dist/config/context.d.ts +90 -0
- package/dist/config/context.js +58 -0
- package/dist/config/context.js.map +1 -0
- package/dist/config/createUi.d.ts +52 -0
- package/dist/config/createUi.js +96 -0
- package/dist/config/createUi.js.map +1 -0
- package/dist/config/defaults.d.ts +71 -0
- package/dist/config/defaults.js +45 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/lang/en-US.d.ts +3 -0
- package/dist/config/lang/en-US.js +386 -0
- package/dist/config/lang/en-US.js.map +1 -0
- package/dist/config/lang/format.d.ts +50 -0
- package/dist/config/lang/format.js +113 -0
- package/dist/config/lang/format.js.map +1 -0
- package/dist/config/lang/lang.d.ts +653 -0
- package/dist/config/lang/lang.js +22 -0
- package/dist/config/lang/lang.js.map +1 -0
- package/dist/config/lang/messages.d.ts +12 -0
- package/dist/config/lang/messages.js +36 -0
- package/dist/config/lang/messages.js.map +1 -0
- package/dist/config/lang/zh-CN.d.ts +3 -0
- package/dist/config/lang/zh-CN.js +386 -0
- package/dist/config/lang/zh-CN.js.map +1 -0
- package/dist/config/pinyin.d.ts +3 -0
- package/dist/config/pinyin.js +26 -0
- package/dist/config/pinyin.js.map +1 -0
- package/dist/config/query-state.d.ts +61 -0
- package/dist/config/query-state.js +113 -0
- package/dist/config/query-state.js.map +1 -0
- package/dist/config/shiki.d.ts +13 -0
- package/dist/config/shiki.js +97 -0
- package/dist/config/shiki.js.map +1 -0
- package/dist/config/styles.d.ts +108 -0
- package/dist/config/styles.js +59 -0
- package/dist/config/styles.js.map +1 -0
- package/dist/config/theme/boot.d.ts +97 -0
- package/dist/config/theme/boot.js +90 -0
- package/dist/config/theme/boot.js.map +1 -0
- package/dist/config/theme/builtin.d.ts +21 -0
- package/dist/config/theme/builtin.js +58 -0
- package/dist/config/theme/builtin.js.map +1 -0
- package/dist/config/theme/coffee.d.ts +84 -0
- package/dist/config/theme/coffee.js +102 -0
- package/dist/config/theme/coffee.js.map +1 -0
- package/dist/config/theme/cyberpunk.d.ts +110 -0
- package/dist/config/theme/cyberpunk.js +125 -0
- package/dist/config/theme/cyberpunk.js.map +1 -0
- package/dist/config/theme/dark.d.ts +90 -0
- package/dist/config/theme/dark.js +106 -0
- package/dist/config/theme/dark.js.map +1 -0
- package/dist/config/theme/festive.d.ts +93 -0
- package/dist/config/theme/festive.js +110 -0
- package/dist/config/theme/festive.js.map +1 -0
- package/dist/config/theme/forest.d.ts +93 -0
- package/dist/config/theme/forest.js +109 -0
- package/dist/config/theme/forest.js.map +1 -0
- package/dist/config/theme/high-contrast.d.ts +103 -0
- package/dist/config/theme/high-contrast.js +119 -0
- package/dist/config/theme/high-contrast.js.map +1 -0
- package/dist/config/theme/lemon.d.ts +103 -0
- package/dist/config/theme/lemon.js +119 -0
- package/dist/config/theme/lemon.js.map +1 -0
- package/dist/config/theme/light.d.ts +107 -0
- package/dist/config/theme/light.js +122 -0
- package/dist/config/theme/light.js.map +1 -0
- package/dist/config/theme/midnight.d.ts +86 -0
- package/dist/config/theme/midnight.js +103 -0
- package/dist/config/theme/midnight.js.map +1 -0
- package/dist/config/theme/ocean.d.ts +103 -0
- package/dist/config/theme/ocean.js +119 -0
- package/dist/config/theme/ocean.js.map +1 -0
- package/dist/config/theme/paper.d.ts +101 -0
- package/dist/config/theme/paper.js +117 -0
- package/dist/config/theme/paper.js.map +1 -0
- package/dist/config/theme/preference.d.ts +34 -0
- package/dist/config/theme/preference.js +67 -0
- package/dist/config/theme/preference.js.map +1 -0
- package/dist/config/theme/sakura.d.ts +103 -0
- package/dist/config/theme/sakura.js +119 -0
- package/dist/config/theme/sakura.js.map +1 -0
- package/dist/config/theme/theme.d.ts +59 -0
- package/dist/config/theme/theme.js +68 -0
- package/dist/config/theme/theme.js.map +1 -0
- package/dist/config/theme/token-names.d.ts +1897 -0
- package/dist/config/theme/tokens.d.ts +833 -0
- package/dist/config/theme/tokens.js +480 -0
- package/dist/config/theme/tokens.js.map +1 -0
- package/dist/config/vue-router.d.ts +67 -0
- package/dist/config/vue-router.js +143 -0
- package/dist/config/vue-router.js.map +1 -0
- package/dist/date/Calendar.d.ts +36 -0
- package/dist/date/Calendar.js +83 -0
- package/dist/date/Calendar.js.map +1 -0
- package/dist/date/CalendarBoard.d.ts +79 -0
- package/dist/date/CalendarBoard.js +403 -0
- package/dist/date/CalendarBoard.js.map +1 -0
- package/dist/date/CalendarView.d.ts +86 -0
- package/dist/date/CalendarView.js +427 -0
- package/dist/date/CalendarView.js.map +1 -0
- package/dist/date/Countdown.d.ts +45 -0
- package/dist/date/Countdown.js +75 -0
- package/dist/date/Countdown.js.map +1 -0
- package/dist/date/DateField.d.ts +34 -0
- package/dist/date/DateField.js +124 -0
- package/dist/date/DateField.js.map +1 -0
- package/dist/date/DatePicker.d.ts +41 -0
- package/dist/date/DatePicker.js +272 -0
- package/dist/date/DatePicker.js.map +1 -0
- package/dist/date/DateRangePicker.d.ts +71 -0
- package/dist/date/DateRangePicker.js +411 -0
- package/dist/date/DateRangePicker.js.map +1 -0
- package/dist/date/DateSegmentGroup.d.ts +38 -0
- package/dist/date/DateSegmentGroup.js +176 -0
- package/dist/date/DateSegmentGroup.js.map +1 -0
- package/dist/date/DateTime.d.ts +21 -0
- package/dist/date/DateTime.js +39 -0
- package/dist/date/DateTime.js.map +1 -0
- package/dist/date/QuarterCalendar.d.ts +22 -0
- package/dist/date/QuarterCalendar.js +231 -0
- package/dist/date/QuarterCalendar.js.map +1 -0
- package/dist/date/RangeCalendar.d.ts +24 -0
- package/dist/date/RangeCalendar.js +89 -0
- package/dist/date/RangeCalendar.js.map +1 -0
- package/dist/date/RelativeTime.d.ts +16 -0
- package/dist/date/RelativeTime.js +61 -0
- package/dist/date/RelativeTime.js.map +1 -0
- package/dist/date/SegmentedField.d.ts +60 -0
- package/dist/date/SegmentedField.js +175 -0
- package/dist/date/SegmentedField.js.map +1 -0
- package/dist/date/TimeField.d.ts +36 -0
- package/dist/date/TimeField.js +56 -0
- package/dist/date/TimeField.js.map +1 -0
- package/dist/date/TimePicker.d.ts +25 -0
- package/dist/date/TimePicker.js +206 -0
- package/dist/date/TimePicker.js.map +1 -0
- package/dist/date/calendar-state.d.ts +119 -0
- package/dist/date/calendar-state.js +267 -0
- package/dist/date/calendar-state.js.map +1 -0
- package/dist/date/clock.d.ts +11 -0
- package/dist/date/clock.js +37 -0
- package/dist/date/clock.js.map +1 -0
- package/dist/date/date-locale.d.ts +67 -0
- package/dist/date/date-locale.js +89 -0
- package/dist/date/date-locale.js.map +1 -0
- package/dist/date/date-segments.d.ts +132 -0
- package/dist/date/date-segments.js +410 -0
- package/dist/date/date-segments.js.map +1 -0
- package/dist/date/picker-popover.d.ts +88 -0
- package/dist/date/picker-popover.js +126 -0
- package/dist/date/picker-popover.js.map +1 -0
- package/dist/diagram/Diagram.d.ts +223 -0
- package/dist/diagram/Diagram.js +1121 -0
- package/dist/diagram/Diagram.js.map +1 -0
- package/dist/diagram/DiagramControls.d.ts +35 -0
- package/dist/diagram/DiagramControls.js +114 -0
- package/dist/diagram/DiagramControls.js.map +1 -0
- package/dist/diagram/DiagramLanes.d.ts +49 -0
- package/dist/diagram/DiagramLanes.js +92 -0
- package/dist/diagram/DiagramLanes.js.map +1 -0
- package/dist/diagram/DiagramMinimap.d.ts +39 -0
- package/dist/diagram/DiagramMinimap.js +133 -0
- package/dist/diagram/DiagramMinimap.js.map +1 -0
- package/dist/diagram/DiagramNode.d.ts +65 -0
- package/dist/diagram/DiagramNode.js +142 -0
- package/dist/diagram/DiagramNode.js.map +1 -0
- package/dist/diagram/controller.d.ts +68 -0
- package/dist/diagram/controller.js +117 -0
- package/dist/diagram/controller.js.map +1 -0
- package/dist/diagram/export.d.ts +14 -0
- package/dist/diagram/export.js +115 -0
- package/dist/diagram/export.js.map +1 -0
- package/dist/diagram/geometry.d.ts +65 -0
- package/dist/diagram/geometry.js +219 -0
- package/dist/diagram/geometry.js.map +1 -0
- package/dist/diagram/index.d.ts +19 -0
- package/dist/diagram/index.js +11 -0
- package/dist/diagram/messages.d.ts +28 -0
- package/dist/diagram/messages.js +30 -0
- package/dist/diagram/messages.js.map +1 -0
- package/dist/diagram/route.d.ts +81 -0
- package/dist/diagram/route.js +327 -0
- package/dist/diagram/route.js.map +1 -0
- package/dist/display/Accordion.d.ts +71 -0
- package/dist/display/Accordion.js +219 -0
- package/dist/display/Accordion.js.map +1 -0
- package/dist/display/AnimatedNumber.d.ts +44 -0
- package/dist/display/AnimatedNumber.js +97 -0
- package/dist/display/AnimatedNumber.js.map +1 -0
- package/dist/display/Avatar.d.ts +74 -0
- package/dist/display/Avatar.js +158 -0
- package/dist/display/Avatar.js.map +1 -0
- package/dist/display/AvatarGroup.d.ts +29 -0
- package/dist/display/AvatarGroup.js +67 -0
- package/dist/display/AvatarGroup.js.map +1 -0
- package/dist/display/Card.d.ts +219 -0
- package/dist/display/Card.js +319 -0
- package/dist/display/Card.js.map +1 -0
- package/dist/display/Checklist.d.ts +93 -0
- package/dist/display/Checklist.js +260 -0
- package/dist/display/Checklist.js.map +1 -0
- package/dist/display/Collapse.d.ts +24 -0
- package/dist/display/Collapse.js +65 -0
- package/dist/display/Collapse.js.map +1 -0
- package/dist/display/Collapsible.d.ts +12 -0
- package/dist/display/Collapsible.js +41 -0
- package/dist/display/Collapsible.js.map +1 -0
- package/dist/display/Descriptions.d.ts +88 -0
- package/dist/display/Descriptions.js +185 -0
- package/dist/display/Descriptions.js.map +1 -0
- package/dist/display/Ellipsis.d.ts +29 -0
- package/dist/display/Ellipsis.js +111 -0
- package/dist/display/Ellipsis.js.map +1 -0
- package/dist/display/FieldCompare.d.ts +58 -0
- package/dist/display/FieldCompare.js +205 -0
- package/dist/display/FieldCompare.js.map +1 -0
- package/dist/display/Gauge.d.ts +60 -0
- package/dist/display/Gauge.js +215 -0
- package/dist/display/Gauge.js.map +1 -0
- package/dist/display/Image.d.ts +87 -0
- package/dist/display/Image.js +212 -0
- package/dist/display/Image.js.map +1 -0
- package/dist/display/ItemList.d.ts +69 -0
- package/dist/display/ItemList.js +147 -0
- package/dist/display/ItemList.js.map +1 -0
- package/dist/display/Marquee.d.ts +59 -0
- package/dist/display/Marquee.js +155 -0
- package/dist/display/Marquee.js.map +1 -0
- package/dist/display/ProportionBar.d.ts +55 -0
- package/dist/display/ProportionBar.js +99 -0
- package/dist/display/ProportionBar.js.map +1 -0
- package/dist/display/Sortable.d.ts +43 -0
- package/dist/display/Sortable.js +163 -0
- package/dist/display/Sortable.js.map +1 -0
- package/dist/display/Sparkline.d.ts +48 -0
- package/dist/display/Sparkline.js +130 -0
- package/dist/display/Sparkline.js.map +1 -0
- package/dist/display/Stat.d.ts +105 -0
- package/dist/display/Stat.js +268 -0
- package/dist/display/Stat.js.map +1 -0
- package/dist/display/Timeline.d.ts +106 -0
- package/dist/display/Timeline.js +257 -0
- package/dist/display/Timeline.js.map +1 -0
- package/dist/display/Tree.d.ts +132 -0
- package/dist/display/Tree.js +645 -0
- package/dist/display/Tree.js.map +1 -0
- package/dist/display/VirtualList.d.ts +80 -0
- package/dist/display/VirtualList.js +166 -0
- package/dist/display/VirtualList.js.map +1 -0
- package/dist/display/Watermark.d.ts +39 -0
- package/dist/display/Watermark.js +130 -0
- package/dist/display/Watermark.js.map +1 -0
- package/dist/docs-kit/CodeGroup.d.ts +29 -0
- package/dist/docs-kit/CodeGroup.js +81 -0
- package/dist/docs-kit/CodeGroup.js.map +1 -0
- package/dist/docs-kit/CodePreview.d.ts +60 -0
- package/dist/docs-kit/CodePreview.js +183 -0
- package/dist/docs-kit/CodePreview.js.map +1 -0
- package/dist/docs-kit/ColorSwatch.d.ts +28 -0
- package/dist/docs-kit/ColorSwatch.js +85 -0
- package/dist/docs-kit/ColorSwatch.js.map +1 -0
- package/dist/docs-kit/PropsTable.d.ts +73 -0
- package/dist/docs-kit/PropsTable.js +122 -0
- package/dist/docs-kit/PropsTable.js.map +1 -0
- package/dist/docs-kit/index.d.ts +13 -0
- package/dist/docs-kit/index.js +6 -0
- package/dist/docs-kit/messages.d.ts +25 -0
- package/dist/docs-kit/messages.js +30 -0
- package/dist/docs-kit/messages.js.map +1 -0
- package/dist/feedback/Alert.d.ts +83 -0
- package/dist/feedback/Alert.js +179 -0
- package/dist/feedback/Alert.js.map +1 -0
- package/dist/feedback/Banner.d.ts +60 -0
- package/dist/feedback/Banner.js +122 -0
- package/dist/feedback/Banner.js.map +1 -0
- package/dist/feedback/Empty.d.ts +38 -0
- package/dist/feedback/Empty.js +114 -0
- package/dist/feedback/Empty.js.map +1 -0
- package/dist/feedback/LoadingBar.d.ts +45 -0
- package/dist/feedback/LoadingBar.js +124 -0
- package/dist/feedback/LoadingBar.js.map +1 -0
- package/dist/feedback/LoadingOverlay.d.ts +29 -0
- package/dist/feedback/LoadingOverlay.js +70 -0
- package/dist/feedback/LoadingOverlay.js.map +1 -0
- package/dist/feedback/Progress.d.ts +215 -0
- package/dist/feedback/Progress.js +437 -0
- package/dist/feedback/Progress.js.map +1 -0
- package/dist/feedback/Result.d.ts +69 -0
- package/dist/feedback/Result.js +165 -0
- package/dist/feedback/Result.js.map +1 -0
- package/dist/feedback/Skeleton.d.ts +50 -0
- package/dist/feedback/Skeleton.js +100 -0
- package/dist/feedback/Skeleton.js.map +1 -0
- package/dist/feedback/SkeletonText.d.ts +25 -0
- package/dist/feedback/SkeletonText.js +40 -0
- package/dist/feedback/SkeletonText.js.map +1 -0
- package/dist/feedback/Toast.d.ts +204 -0
- package/dist/feedback/Toast.js +572 -0
- package/dist/feedback/Toast.js.map +1 -0
- package/dist/form/Field.d.ts +158 -0
- package/dist/form/Field.js +327 -0
- package/dist/form/Field.js.map +1 -0
- package/dist/form/Form.d.ts +14 -0
- package/dist/form/Form.js +66 -0
- package/dist/form/Form.js.map +1 -0
- package/dist/form/FormErrorSummary.d.ts +23 -0
- package/dist/form/FormErrorSummary.js +102 -0
- package/dist/form/FormErrorSummary.js.map +1 -0
- package/dist/form/FormSection.d.ts +66 -0
- package/dist/form/FormSection.js +227 -0
- package/dist/form/FormSection.js.map +1 -0
- package/dist/form/FormValue.d.ts +17 -0
- package/dist/form/FormValue.js +40 -0
- package/dist/form/FormValue.js.map +1 -0
- package/dist/form/field-layout.d.ts +34 -0
- package/dist/form/field-layout.js +39 -0
- package/dist/form/field-layout.js.map +1 -0
- package/dist/form/form-constraints.d.ts +38 -0
- package/dist/form/form-constraints.js +131 -0
- package/dist/form/form-constraints.js.map +1 -0
- package/dist/form/leave-confirmation.d.ts +9 -0
- package/dist/form/leave-confirmation.js +31 -0
- package/dist/form/leave-confirmation.js.map +1 -0
- package/dist/form/schemas.d.ts +52 -0
- package/dist/form/schemas.js +97 -0
- package/dist/form/schemas.js.map +1 -0
- package/dist/form/useForm.d.ts +192 -0
- package/dist/form/useForm.js +394 -0
- package/dist/form/useForm.js.map +1 -0
- package/dist/index.d.ts +282 -0
- package/dist/index.js +282 -0
- package/dist/input/Autocomplete.d.ts +14 -0
- package/dist/input/Autocomplete.js +35 -0
- package/dist/input/Autocomplete.js.map +1 -0
- package/dist/input/Cascader.d.ts +86 -0
- package/dist/input/Cascader.js +593 -0
- package/dist/input/Cascader.js.map +1 -0
- package/dist/input/CharacterCount.d.ts +21 -0
- package/dist/input/CharacterCount.js +47 -0
- package/dist/input/CharacterCount.js.map +1 -0
- package/dist/input/Checkbox.d.ts +93 -0
- package/dist/input/Checkbox.js +250 -0
- package/dist/input/Checkbox.js.map +1 -0
- package/dist/input/ColorField.d.ts +37 -0
- package/dist/input/ColorField.js +143 -0
- package/dist/input/ColorField.js.map +1 -0
- package/dist/input/Combobox.d.ts +75 -0
- package/dist/input/Combobox.js +321 -0
- package/dist/input/Combobox.js.map +1 -0
- package/dist/input/ConditionBuilder.d.ts +55 -0
- package/dist/input/ConditionBuilder.js +471 -0
- package/dist/input/ConditionBuilder.js.map +1 -0
- package/dist/input/ControlGroup.d.ts +26 -0
- package/dist/input/ControlGroup.js +50 -0
- package/dist/input/ControlGroup.js.map +1 -0
- package/dist/input/FileDrop.d.ts +49 -0
- package/dist/input/FileDrop.js +201 -0
- package/dist/input/FileDrop.js.map +1 -0
- package/dist/input/ListPopover.d.ts +39 -0
- package/dist/input/ListPopover.js +81 -0
- package/dist/input/ListPopover.js.map +1 -0
- package/dist/input/Listbox.d.ts +91 -0
- package/dist/input/Listbox.js +408 -0
- package/dist/input/Listbox.js.map +1 -0
- package/dist/input/Mentions.d.ts +74 -0
- package/dist/input/Mentions.js +287 -0
- package/dist/input/Mentions.js.map +1 -0
- package/dist/input/NumberField.d.ts +64 -0
- package/dist/input/NumberField.js +288 -0
- package/dist/input/NumberField.js.map +1 -0
- package/dist/input/NumberRangeField.d.ts +58 -0
- package/dist/input/NumberRangeField.js +157 -0
- package/dist/input/NumberRangeField.js.map +1 -0
- package/dist/input/OtpField.d.ts +58 -0
- package/dist/input/OtpField.js +200 -0
- package/dist/input/OtpField.js.map +1 -0
- package/dist/input/PeoplePicker.d.ts +42 -0
- package/dist/input/PeoplePicker.js +185 -0
- package/dist/input/PeoplePicker.js.map +1 -0
- package/dist/input/PeoplePickerPanel.d.ts +42 -0
- package/dist/input/PeoplePickerPanel.js +357 -0
- package/dist/input/PeoplePickerPanel.js.map +1 -0
- package/dist/input/Radio.d.ts +90 -0
- package/dist/input/Radio.js +211 -0
- package/dist/input/Radio.js.map +1 -0
- package/dist/input/Rating.d.ts +62 -0
- package/dist/input/Rating.js +225 -0
- package/dist/input/Rating.js.map +1 -0
- package/dist/input/Select.d.ts +97 -0
- package/dist/input/Select.js +455 -0
- package/dist/input/Select.js.map +1 -0
- package/dist/input/SelectedTags.d.ts +28 -0
- package/dist/input/SelectedTags.js +81 -0
- package/dist/input/SelectedTags.js.map +1 -0
- package/dist/input/Slider.d.ts +99 -0
- package/dist/input/Slider.js +343 -0
- package/dist/input/Slider.js.map +1 -0
- package/dist/input/Switch.d.ts +63 -0
- package/dist/input/Switch.js +198 -0
- package/dist/input/Switch.js.map +1 -0
- package/dist/input/TagsInput.d.ts +70 -0
- package/dist/input/TagsInput.js +314 -0
- package/dist/input/TagsInput.js.map +1 -0
- package/dist/input/TextField.d.ts +51 -0
- package/dist/input/TextField.js +185 -0
- package/dist/input/TextField.js.map +1 -0
- package/dist/input/Textarea.d.ts +50 -0
- package/dist/input/Textarea.js +146 -0
- package/dist/input/Textarea.js.map +1 -0
- package/dist/input/ToggleGroup.d.ts +82 -0
- package/dist/input/ToggleGroup.js +211 -0
- package/dist/input/ToggleGroup.js.map +1 -0
- package/dist/input/Transfer.d.ts +67 -0
- package/dist/input/Transfer.js +407 -0
- package/dist/input/Transfer.js.map +1 -0
- package/dist/input/TreeSelect.d.ts +94 -0
- package/dist/input/TreeSelect.js +412 -0
- package/dist/input/TreeSelect.js.map +1 -0
- package/dist/input/Upload.d.ts +143 -0
- package/dist/input/Upload.js +597 -0
- package/dist/input/Upload.js.map +1 -0
- package/dist/input/choice-styles.d.ts +117 -0
- package/dist/input/choice-styles.js +176 -0
- package/dist/input/choice-styles.js.map +1 -0
- package/dist/input/condition.d.ts +153 -0
- package/dist/input/condition.js +169 -0
- package/dist/input/condition.js.map +1 -0
- package/dist/input/control.d.ts +160 -0
- package/dist/input/control.js +236 -0
- package/dist/input/control.js.map +1 -0
- package/dist/input/list-state.d.ts +118 -0
- package/dist/input/list-state.js +186 -0
- package/dist/input/list-state.js.map +1 -0
- package/dist/input/people.d.ts +65 -0
- package/dist/input/people.js +47 -0
- package/dist/input/people.js.map +1 -0
- package/dist/input/remote-items.d.ts +20 -0
- package/dist/input/remote-items.js +36 -0
- package/dist/input/remote-items.js.map +1 -0
- package/dist/input/text-format.d.ts +46 -0
- package/dist/input/text-format.js +64 -0
- package/dist/input/text-format.js.map +1 -0
- package/dist/layout/Affix.d.ts +32 -0
- package/dist/layout/Affix.js +81 -0
- package/dist/layout/Affix.js.map +1 -0
- package/dist/layout/AsideLayout.d.ts +45 -0
- package/dist/layout/AsideLayout.js +69 -0
- package/dist/layout/AsideLayout.js.map +1 -0
- package/dist/layout/BackTop.d.ts +16 -0
- package/dist/layout/BackTop.js +83 -0
- package/dist/layout/BackTop.js.map +1 -0
- package/dist/layout/Container.d.ts +60 -0
- package/dist/layout/Container.js +62 -0
- package/dist/layout/Container.js.map +1 -0
- package/dist/layout/Flex.d.ts +116 -0
- package/dist/layout/Flex.js +109 -0
- package/dist/layout/Flex.js.map +1 -0
- package/dist/layout/Grid.d.ts +139 -0
- package/dist/layout/Grid.js +168 -0
- package/dist/layout/Grid.js.map +1 -0
- package/dist/layout/PageScrollbar.d.ts +20 -0
- package/dist/layout/PageScrollbar.js +49 -0
- package/dist/layout/PageScrollbar.js.map +1 -0
- package/dist/layout/Prose.d.ts +19 -0
- package/dist/layout/Prose.js +37 -0
- package/dist/layout/Prose.js.map +1 -0
- package/dist/layout/ResizeHandle.d.ts +28 -0
- package/dist/layout/ResizeHandle.js +94 -0
- package/dist/layout/ResizeHandle.js.map +1 -0
- package/dist/layout/ScrollArea.d.ts +99 -0
- package/dist/layout/ScrollArea.js +344 -0
- package/dist/layout/ScrollArea.js.map +1 -0
- package/dist/layout/Separator.d.ts +47 -0
- package/dist/layout/Separator.js +96 -0
- package/dist/layout/Separator.js.map +1 -0
- package/dist/layout/Splitter.d.ts +75 -0
- package/dist/layout/Splitter.js +236 -0
- package/dist/layout/Splitter.js.map +1 -0
- package/dist/layout/ViewportFill.d.ts +26 -0
- package/dist/layout/ViewportFill.js +59 -0
- package/dist/layout/ViewportFill.js.map +1 -0
- package/dist/navigation/Breadcrumbs.d.ts +59 -0
- package/dist/navigation/Breadcrumbs.js +150 -0
- package/dist/navigation/Breadcrumbs.js.map +1 -0
- package/dist/navigation/NavBar.d.ts +35 -0
- package/dist/navigation/NavBar.js +182 -0
- package/dist/navigation/NavBar.js.map +1 -0
- package/dist/navigation/NavList.d.ts +112 -0
- package/dist/navigation/NavList.js +375 -0
- package/dist/navigation/NavList.js.map +1 -0
- package/dist/navigation/PageJump.d.ts +27 -0
- package/dist/navigation/PageJump.js +77 -0
- package/dist/navigation/PageJump.js.map +1 -0
- package/dist/navigation/PageSizeSelect.d.ts +19 -0
- package/dist/navigation/PageSizeSelect.js +65 -0
- package/dist/navigation/PageSizeSelect.js.map +1 -0
- package/dist/navigation/Pager.d.ts +30 -0
- package/dist/navigation/Pager.js +111 -0
- package/dist/navigation/Pager.js.map +1 -0
- package/dist/navigation/Pagination.d.ts +51 -0
- package/dist/navigation/Pagination.js +157 -0
- package/dist/navigation/Pagination.js.map +1 -0
- package/dist/navigation/PaginationBar.d.ts +54 -0
- package/dist/navigation/PaginationBar.js +125 -0
- package/dist/navigation/PaginationBar.js.map +1 -0
- package/dist/navigation/SkipLink.d.ts +16 -0
- package/dist/navigation/SkipLink.js +58 -0
- package/dist/navigation/SkipLink.js.map +1 -0
- package/dist/navigation/Steps.d.ts +93 -0
- package/dist/navigation/Steps.js +198 -0
- package/dist/navigation/Steps.js.map +1 -0
- package/dist/navigation/TableOfContents.d.ts +32 -0
- package/dist/navigation/TableOfContents.js +119 -0
- package/dist/navigation/TableOfContents.js.map +1 -0
- package/dist/navigation/Tabs.d.ts +208 -0
- package/dist/navigation/Tabs.js +626 -0
- package/dist/navigation/Tabs.js.map +1 -0
- package/dist/navigation/Toolbar.d.ts +39 -0
- package/dist/navigation/Toolbar.js +67 -0
- package/dist/navigation/Toolbar.js.map +1 -0
- package/dist/overlay/AlertDialog.d.ts +43 -0
- package/dist/overlay/AlertDialog.js +106 -0
- package/dist/overlay/AlertDialog.js.map +1 -0
- package/dist/overlay/CommandPalette.d.ts +64 -0
- package/dist/overlay/CommandPalette.js +250 -0
- package/dist/overlay/CommandPalette.js.map +1 -0
- package/dist/overlay/ContextMenu.d.ts +21 -0
- package/dist/overlay/ContextMenu.js +76 -0
- package/dist/overlay/ContextMenu.js.map +1 -0
- package/dist/overlay/Dialog.d.ts +70 -0
- package/dist/overlay/Dialog.js +91 -0
- package/dist/overlay/Dialog.js.map +1 -0
- package/dist/overlay/Drawer.d.ts +186 -0
- package/dist/overlay/Drawer.js +214 -0
- package/dist/overlay/Drawer.js.map +1 -0
- package/dist/overlay/HoverCard.d.ts +48 -0
- package/dist/overlay/HoverCard.js +86 -0
- package/dist/overlay/HoverCard.js.map +1 -0
- package/dist/overlay/Lightbox.d.ts +57 -0
- package/dist/overlay/Lightbox.js +374 -0
- package/dist/overlay/Lightbox.js.map +1 -0
- package/dist/overlay/Menu.d.ts +218 -0
- package/dist/overlay/Menu.js +816 -0
- package/dist/overlay/Menu.js.map +1 -0
- package/dist/overlay/ModalCore.d.ts +132 -0
- package/dist/overlay/ModalCore.js +274 -0
- package/dist/overlay/ModalCore.js.map +1 -0
- package/dist/overlay/Popconfirm.d.ts +49 -0
- package/dist/overlay/Popconfirm.js +167 -0
- package/dist/overlay/Popconfirm.js.map +1 -0
- package/dist/overlay/Popover.d.ts +40 -0
- package/dist/overlay/Popover.js +96 -0
- package/dist/overlay/Popover.js.map +1 -0
- package/dist/overlay/Tooltip.d.ts +47 -0
- package/dist/overlay/Tooltip.js +86 -0
- package/dist/overlay/Tooltip.js.map +1 -0
- package/dist/overlay/Tour.d.ts +74 -0
- package/dist/overlay/Tour.js +309 -0
- package/dist/overlay/Tour.js.map +1 -0
- package/dist/overlay/detached.d.ts +40 -0
- package/dist/overlay/detached.js +109 -0
- package/dist/overlay/detached.js.map +1 -0
- package/dist/patterns/ActionBar.d.ts +29 -0
- package/dist/patterns/ActionBar.js +75 -0
- package/dist/patterns/ActionBar.js.map +1 -0
- package/dist/patterns/AppShell.d.ts +168 -0
- package/dist/patterns/AppShell.js +620 -0
- package/dist/patterns/AppShell.js.map +1 -0
- package/dist/patterns/CommentThread.d.ts +128 -0
- package/dist/patterns/CommentThread.js +386 -0
- package/dist/patterns/CommentThread.js.map +1 -0
- package/dist/patterns/DataImport.d.ts +72 -0
- package/dist/patterns/DataImport.js +486 -0
- package/dist/patterns/DataImport.js.map +1 -0
- package/dist/patterns/DeadlineBadge.d.ts +21 -0
- package/dist/patterns/DeadlineBadge.js +76 -0
- package/dist/patterns/DeadlineBadge.js.map +1 -0
- package/dist/patterns/FilterBar.d.ts +66 -0
- package/dist/patterns/FilterBar.js +254 -0
- package/dist/patterns/FilterBar.js.map +1 -0
- package/dist/patterns/KanbanBoard.d.ts +79 -0
- package/dist/patterns/KanbanBoard.js +294 -0
- package/dist/patterns/KanbanBoard.js.map +1 -0
- package/dist/patterns/NotificationCenter.d.ts +110 -0
- package/dist/patterns/NotificationCenter.js +342 -0
- package/dist/patterns/NotificationCenter.js.map +1 -0
- package/dist/patterns/PageTabs.d.ts +30 -0
- package/dist/patterns/PageTabs.js +97 -0
- package/dist/patterns/PageTabs.js.map +1 -0
- package/dist/patterns/QueryTable.d.ts +64 -0
- package/dist/patterns/QueryTable.js +276 -0
- package/dist/patterns/QueryTable.js.map +1 -0
- package/dist/patterns/StepsForm.d.ts +49 -0
- package/dist/patterns/StepsForm.js +130 -0
- package/dist/patterns/StepsForm.js.map +1 -0
- package/dist/patterns/ThemeSwitcher.d.ts +20 -0
- package/dist/patterns/ThemeSwitcher.js +102 -0
- package/dist/patterns/ThemeSwitcher.js.map +1 -0
- package/dist/patterns/form-dialog.d.ts +62 -0
- package/dist/patterns/form-dialog.js +143 -0
- package/dist/patterns/form-dialog.js.map +1 -0
- package/dist/patterns/index.d.ts +24 -0
- package/dist/patterns/index.js +15 -0
- package/dist/patterns/messages.d.ts +172 -0
- package/dist/patterns/messages.js +184 -0
- package/dist/patterns/messages.js.map +1 -0
- package/dist/table/ColumnHeaderActions.d.ts +71 -0
- package/dist/table/ColumnHeaderActions.js +247 -0
- package/dist/table/ColumnHeaderActions.js.map +1 -0
- package/dist/table/ColumnResizer.d.ts +12 -0
- package/dist/table/ColumnResizer.js +32 -0
- package/dist/table/ColumnResizer.js.map +1 -0
- package/dist/table/ColumnSettings.d.ts +34 -0
- package/dist/table/ColumnSettings.js +136 -0
- package/dist/table/ColumnSettings.js.map +1 -0
- package/dist/table/ColumnTable.d.ts +51 -0
- package/dist/table/ColumnTable.js +140 -0
- package/dist/table/ColumnTable.js.map +1 -0
- package/dist/table/DataTable.d.ts +44 -0
- package/dist/table/DataTable.js +453 -0
- package/dist/table/DataTable.js.map +1 -0
- package/dist/table/DataTableView.d.ts +328 -0
- package/dist/table/DataTableView.js +963 -0
- package/dist/table/DataTableView.js.map +1 -0
- package/dist/table/PivotTable.d.ts +66 -0
- package/dist/table/PivotTable.js +122 -0
- package/dist/table/PivotTable.js.map +1 -0
- package/dist/table/SelectionBar.d.ts +29 -0
- package/dist/table/SelectionBar.js +86 -0
- package/dist/table/SelectionBar.js.map +1 -0
- package/dist/table/Table.d.ts +169 -0
- package/dist/table/Table.js +304 -0
- package/dist/table/Table.js.map +1 -0
- package/dist/table/TreeDataTable.d.ts +36 -0
- package/dist/table/TreeDataTable.js +168 -0
- package/dist/table/TreeDataTable.js.map +1 -0
- package/dist/table/column-display.d.ts +20 -0
- package/dist/table/column-display.js +43 -0
- package/dist/table/column-display.js.map +1 -0
- package/dist/table/columns.d.ts +244 -0
- package/dist/table/columns.js +271 -0
- package/dist/table/columns.js.map +1 -0
- package/dist/table/csv.d.ts +24 -0
- package/dist/table/csv.js +35 -0
- package/dist/table/csv.js.map +1 -0
- package/dist/table/pivot.d.ts +66 -0
- package/dist/table/pivot.js +85 -0
- package/dist/table/pivot.js.map +1 -0
- package/dist/table/sheet.d.ts +44 -0
- package/dist/table/sheet.js +78 -0
- package/dist/table/sheet.js.map +1 -0
- package/dist/table/table-styles.d.ts +136 -0
- package/dist/table/table-styles.js +403 -0
- package/dist/table/table-styles.js.map +1 -0
- package/dist/table/use-table-query.d.ts +89 -0
- package/dist/table/use-table-query.js +194 -0
- package/dist/table/use-table-query.js.map +1 -0
- package/dist/theme-customize/ThemeCustomizer.d.ts +63 -0
- package/dist/theme-customize/ThemeCustomizer.js +361 -0
- package/dist/theme-customize/ThemeCustomizer.js.map +1 -0
- package/dist/theme-customize/ThemeThumbnail.d.ts +20 -0
- package/dist/theme-customize/ThemeThumbnail.js +82 -0
- package/dist/theme-customize/ThemeThumbnail.js.map +1 -0
- package/dist/theme-customize/contrast.d.ts +27 -0
- package/dist/theme-customize/contrast.js +251 -0
- package/dist/theme-customize/contrast.js.map +1 -0
- package/dist/theme-customize/customize.d.ts +65 -0
- package/dist/theme-customize/customize.js +105 -0
- package/dist/theme-customize/customize.js.map +1 -0
- package/dist/theme-customize/design-tokens.d.ts +31 -0
- package/dist/theme-customize/design-tokens.js +183 -0
- package/dist/theme-customize/design-tokens.js.map +1 -0
- package/dist/theme-customize/index.d.ts +20 -0
- package/dist/theme-customize/index.js +9 -0
- package/dist/theme-customize/messages.d.ts +74 -0
- package/dist/theme-customize/messages.js +142 -0
- package/dist/theme-customize/messages.js.map +1 -0
- package/dist/theme-customize/palette.d.ts +898 -0
- package/dist/theme-customize/palette.js +111 -0
- package/dist/theme-customize/palette.js.map +1 -0
- package/dist/theme-customize/token-catalog.d.ts +20 -0
- package/dist/theme-customize/token-catalog.js +836 -0
- package/dist/theme-customize/token-catalog.js.map +1 -0
- package/dist/three/background/AuroraBackground.d.ts +30 -0
- package/dist/three/background/AuroraBackground.js +80 -0
- package/dist/three/background/AuroraBackground.js.map +1 -0
- package/dist/three/background/MeshGradient.d.ts +28 -0
- package/dist/three/background/MeshGradient.js +76 -0
- package/dist/three/background/MeshGradient.js.map +1 -0
- package/dist/three/background/ShaderBackground.d.ts +25 -0
- package/dist/three/background/ShaderBackground.js +107 -0
- package/dist/three/background/ShaderBackground.js.map +1 -0
- package/dist/three/core/EffectSurface.d.ts +41 -0
- package/dist/three/core/EffectSurface.js +62 -0
- package/dist/three/core/EffectSurface.js.map +1 -0
- package/dist/three/core/ThreeCanvas.d.ts +39 -0
- package/dist/three/core/ThreeCanvas.js +77 -0
- package/dist/three/core/ThreeCanvas.js.map +1 -0
- package/dist/three/core/dispose.d.ts +9 -0
- package/dist/three/core/dispose.js +26 -0
- package/dist/three/core/dispose.js.map +1 -0
- package/dist/three/core/orbit.d.ts +31 -0
- package/dist/three/core/orbit.js +83 -0
- package/dist/three/core/orbit.js.map +1 -0
- package/dist/three/core/quality.d.ts +59 -0
- package/dist/three/core/quality.js +80 -0
- package/dist/three/core/quality.js.map +1 -0
- package/dist/three/core/renderer.d.ts +110 -0
- package/dist/three/core/renderer.js +303 -0
- package/dist/three/core/renderer.js.map +1 -0
- package/dist/three/core/shaders.d.ts +19 -0
- package/dist/three/core/shaders.js +100 -0
- package/dist/three/core/shaders.js.map +1 -0
- package/dist/three/core/theme-colors.d.ts +30 -0
- package/dist/three/core/theme-colors.js +113 -0
- package/dist/three/core/theme-colors.js.map +1 -0
- package/dist/three/effects/Confetti.d.ts +62 -0
- package/dist/three/effects/Confetti.js +242 -0
- package/dist/three/effects/Confetti.js.map +1 -0
- package/dist/three/effects/ParticleField.d.ts +39 -0
- package/dist/three/effects/ParticleField.js +266 -0
- package/dist/three/effects/ParticleField.js.map +1 -0
- package/dist/three/effects/WaveGrid.d.ts +37 -0
- package/dist/three/effects/WaveGrid.js +130 -0
- package/dist/three/effects/WaveGrid.js.map +1 -0
- package/dist/three/globe/Globe.d.ts +70 -0
- package/dist/three/globe/Globe.js +337 -0
- package/dist/three/globe/Globe.js.map +1 -0
- package/dist/three/globe/land.d.ts +9 -0
- package/dist/three/globe/land.js +14 -0
- package/dist/three/globe/land.js.map +1 -0
- package/dist/three/index.d.ts +24 -0
- package/dist/three/index.js +18 -0
- package/dist/three/model/ModelViewer.d.ts +63 -0
- package/dist/three/model/ModelViewer.js +193 -0
- package/dist/three/model/ModelViewer.js.map +1 -0
- package/dist/utils/data/collation.d.ts +36 -0
- package/dist/utils/data/collation.js +69 -0
- package/dist/utils/data/collation.js.map +1 -0
- package/dist/utils/data/color.d.ts +32 -0
- package/dist/utils/data/color.js +90 -0
- package/dist/utils/data/color.js.map +1 -0
- package/dist/utils/data/date.d.ts +186 -0
- package/dist/utils/data/date.js +409 -0
- package/dist/utils/data/date.js.map +1 -0
- package/dist/utils/data/diff.d.ts +21 -0
- package/dist/utils/data/diff.js +43 -0
- package/dist/utils/data/diff.js.map +1 -0
- package/dist/utils/data/equality.d.ts +5 -0
- package/dist/utils/data/equality.js +24 -0
- package/dist/utils/data/equality.js.map +1 -0
- package/dist/utils/data/history.d.ts +59 -0
- package/dist/utils/data/history.js +132 -0
- package/dist/utils/data/history.js.map +1 -0
- package/dist/utils/data/intl-cache.d.ts +8 -0
- package/dist/utils/data/intl-cache.js +19 -0
- package/dist/utils/data/intl-cache.js.map +1 -0
- package/dist/utils/data/number-parse.d.ts +7 -0
- package/dist/utils/data/number-parse.js +45 -0
- package/dist/utils/data/number-parse.js.map +1 -0
- package/dist/utils/data/number.d.ts +10 -0
- package/dist/utils/data/number.js +28 -0
- package/dist/utils/data/number.js.map +1 -0
- package/dist/utils/data/numeric.d.ts +55 -0
- package/dist/utils/data/numeric.js +133 -0
- package/dist/utils/data/numeric.js.map +1 -0
- package/dist/utils/data/pagination.d.ts +21 -0
- package/dist/utils/data/pagination.js +22 -0
- package/dist/utils/data/pagination.js.map +1 -0
- package/dist/utils/data/selection.d.ts +41 -0
- package/dist/utils/data/selection.js +21 -0
- package/dist/utils/data/selection.js.map +1 -0
- package/dist/utils/data/status.d.ts +43 -0
- package/dist/utils/data/status.js +27 -0
- package/dist/utils/data/status.js.map +1 -0
- package/dist/utils/data/text.d.ts +12 -0
- package/dist/utils/data/text.js +30 -0
- package/dist/utils/data/text.js.map +1 -0
- package/dist/utils/data/tree.d.ts +140 -0
- package/dist/utils/data/tree.js +273 -0
- package/dist/utils/data/tree.js.map +1 -0
- package/dist/utils/data/workdays.d.ts +67 -0
- package/dist/utils/data/workdays.js +67 -0
- package/dist/utils/data/workdays.js.map +1 -0
- package/dist/utils/dom/announcer.d.ts +11 -0
- package/dist/utils/dom/announcer.js +53 -0
- package/dist/utils/dom/announcer.js.map +1 -0
- package/dist/utils/dom/caret.d.ts +14 -0
- package/dist/utils/dom/caret.js +72 -0
- package/dist/utils/dom/caret.js.map +1 -0
- package/dist/utils/dom/clipboard.d.ts +16 -0
- package/dist/utils/dom/clipboard.js +66 -0
- package/dist/utils/dom/clipboard.js.map +1 -0
- package/dist/utils/dom/direction.d.ts +12 -0
- package/dist/utils/dom/direction.js +20 -0
- package/dist/utils/dom/direction.js.map +1 -0
- package/dist/utils/dom/download.d.ts +7 -0
- package/dist/utils/dom/download.js +19 -0
- package/dist/utils/dom/download.js.map +1 -0
- package/dist/utils/dom/element.d.ts +3 -0
- package/dist/utils/dom/element.js +12 -0
- package/dist/utils/dom/element.js.map +1 -0
- package/dist/utils/dom/event-listener.d.ts +8 -0
- package/dist/utils/dom/event-listener.js +35 -0
- package/dist/utils/dom/event-listener.js.map +1 -0
- package/dist/utils/dom/floating.d.ts +149 -0
- package/dist/utils/dom/floating.js +262 -0
- package/dist/utils/dom/floating.js.map +1 -0
- package/dist/utils/dom/focus.d.ts +28 -0
- package/dist/utils/dom/focus.js +105 -0
- package/dist/utils/dom/focus.js.map +1 -0
- package/dist/utils/dom/fullscreen.d.ts +11 -0
- package/dist/utils/dom/fullscreen.js +43 -0
- package/dist/utils/dom/fullscreen.js.map +1 -0
- package/dist/utils/dom/hotkeys.d.ts +43 -0
- package/dist/utils/dom/hotkeys.js +174 -0
- package/dist/utils/dom/hotkeys.js.map +1 -0
- package/dist/utils/dom/hover-intent.d.ts +47 -0
- package/dist/utils/dom/hover-intent.js +72 -0
- package/dist/utils/dom/hover-intent.js.map +1 -0
- package/dist/utils/dom/hover-layer.d.ts +36 -0
- package/dist/utils/dom/hover-layer.js +74 -0
- package/dist/utils/dom/hover-layer.js.map +1 -0
- package/dist/utils/dom/intersection.d.ts +13 -0
- package/dist/utils/dom/intersection.js +36 -0
- package/dist/utils/dom/intersection.js.map +1 -0
- package/dist/utils/dom/layout-batch.d.ts +14 -0
- package/dist/utils/dom/layout-batch.js +26 -0
- package/dist/utils/dom/layout-batch.js.map +1 -0
- package/dist/utils/dom/link.d.ts +18 -0
- package/dist/utils/dom/link.js +44 -0
- package/dist/utils/dom/link.js.map +1 -0
- package/dist/utils/dom/media-query.d.ts +18 -0
- package/dist/utils/dom/media-query.js +36 -0
- package/dist/utils/dom/media-query.js.map +1 -0
- package/dist/utils/dom/move.d.ts +47 -0
- package/dist/utils/dom/move.js +69 -0
- package/dist/utils/dom/move.js.map +1 -0
- package/dist/utils/dom/open-change.d.ts +51 -0
- package/dist/utils/dom/open-change.js +21 -0
- package/dist/utils/dom/open-change.js.map +1 -0
- package/dist/utils/dom/overflow.d.ts +29 -0
- package/dist/utils/dom/overflow.js +108 -0
- package/dist/utils/dom/overflow.js.map +1 -0
- package/dist/utils/dom/overlay.d.ts +35 -0
- package/dist/utils/dom/overlay.js +104 -0
- package/dist/utils/dom/overlay.js.map +1 -0
- package/dist/utils/dom/page-visibility.d.ts +10 -0
- package/dist/utils/dom/page-visibility.js +22 -0
- package/dist/utils/dom/page-visibility.js.map +1 -0
- package/dist/utils/dom/pan-zoom.d.ts +109 -0
- package/dist/utils/dom/pan-zoom.js +257 -0
- package/dist/utils/dom/pan-zoom.js.map +1 -0
- package/dist/utils/dom/rasterize.d.ts +18 -0
- package/dist/utils/dom/rasterize.js +41 -0
- package/dist/utils/dom/rasterize.js.map +1 -0
- package/dist/utils/dom/resize.d.ts +4 -0
- package/dist/utils/dom/resize.js +65 -0
- package/dist/utils/dom/resize.js.map +1 -0
- package/dist/utils/dom/ripple.d.ts +40 -0
- package/dist/utils/dom/ripple.js +96 -0
- package/dist/utils/dom/ripple.js.map +1 -0
- package/dist/utils/dom/roving-focus.d.ts +44 -0
- package/dist/utils/dom/roving-focus.js +184 -0
- package/dist/utils/dom/roving-focus.js.map +1 -0
- package/dist/utils/dom/scroll-spy.d.ts +30 -0
- package/dist/utils/dom/scroll-spy.js +55 -0
- package/dist/utils/dom/scroll-spy.js.map +1 -0
- package/dist/utils/dom/sortable.d.ts +82 -0
- package/dist/utils/dom/sortable.js +437 -0
- package/dist/utils/dom/sortable.js.map +1 -0
- package/dist/utils/dom/storage.d.ts +21 -0
- package/dist/utils/dom/storage.js +66 -0
- package/dist/utils/dom/storage.js.map +1 -0
- package/dist/utils/dom/typeahead.d.ts +15 -0
- package/dist/utils/dom/typeahead.js +26 -0
- package/dist/utils/dom/typeahead.js.map +1 -0
- package/dist/utils/motion/active-indicator.d.ts +24 -0
- package/dist/utils/motion/active-indicator.js +58 -0
- package/dist/utils/motion/active-indicator.js.map +1 -0
- package/dist/utils/motion/animation.d.ts +58 -0
- package/dist/utils/motion/animation.js +83 -0
- package/dist/utils/motion/animation.js.map +1 -0
- package/dist/utils/motion/delayed-loading.d.ts +18 -0
- package/dist/utils/motion/delayed-loading.js +38 -0
- package/dist/utils/motion/delayed-loading.js.map +1 -0
- package/dist/utils/motion/layout.d.ts +17 -0
- package/dist/utils/motion/layout.js +43 -0
- package/dist/utils/motion/layout.js.map +1 -0
- package/dist/utils/motion/pointer.d.ts +14 -0
- package/dist/utils/motion/pointer.js +72 -0
- package/dist/utils/motion/pointer.js.map +1 -0
- package/dist/utils/motion/presence.d.ts +57 -0
- package/dist/utils/motion/presence.js +100 -0
- package/dist/utils/motion/presence.js.map +1 -0
- package/dist/utils/motion/reveal.d.ts +9 -0
- package/dist/utils/motion/reveal.js +68 -0
- package/dist/utils/motion/reveal.js.map +1 -0
- package/dist/utils/motion/tween.d.ts +34 -0
- package/dist/utils/motion/tween.js +50 -0
- package/dist/utils/motion/tween.js.map +1 -0
- package/dist/utils/props.d.ts +84 -0
- package/dist/utils/props.js +189 -0
- package/dist/utils/props.js.map +1 -0
- package/dist/utils/request/http.d.ts +101 -0
- package/dist/utils/request/http.js +154 -0
- package/dist/utils/request/http.js.map +1 -0
- package/dist/utils/request/use-request.d.ts +37 -0
- package/dist/utils/request/use-request.js +90 -0
- package/dist/utils/request/use-request.js.map +1 -0
- package/dist/utils/request/wire.d.ts +48 -0
- package/dist/utils/request/wire.js +208 -0
- package/dist/utils/request/wire.js.map +1 -0
- package/dist/utils/style/attached.d.ts +25 -0
- package/dist/utils/style/attached.js +82 -0
- package/dist/utils/style/attached.js.map +1 -0
- package/dist/utils/style/item-styles.d.ts +18 -0
- package/dist/utils/style/item-styles.js +79 -0
- package/dist/utils/style/item-styles.js.map +1 -0
- package/dist/utils/style/markers.d.ts +6 -0
- package/dist/utils/style/markers.js +11 -0
- package/dist/utils/style/markers.js.map +1 -0
- package/dist/utils/style/shimmer.d.ts +20 -0
- package/dist/utils/style/shimmer.js +58 -0
- package/dist/utils/style/shimmer.js.map +1 -0
- package/dist/utils/style/styles.d.ts +118 -0
- package/dist/utils/style/styles.js +114 -0
- package/dist/utils/style/styles.js.map +1 -0
- package/dist/utils/style/swatch-styles.d.ts +10 -0
- package/dist/utils/style/swatch-styles.js +19 -0
- package/dist/utils/style/swatch-styles.js.map +1 -0
- package/dist/utils/style/tone-styles.d.ts +58 -0
- package/dist/utils/style/tone-styles.js +180 -0
- package/dist/utils/style/tone-styles.js.map +1 -0
- package/dist/utils/style/transitions.d.ts +43 -0
- package/dist/utils/style/transitions.js +118 -0
- package/dist/utils/style/transitions.js.map +1 -0
- package/dist/utils/style/typography.d.ts +155 -0
- package/dist/utils/style/typography.js +80 -0
- package/dist/utils/style/typography.js.map +1 -0
- package/dist/utils/style/vars.d.ts +18 -0
- package/dist/utils/style/vars.js +21 -0
- package/dist/utils/style/vars.js.map +1 -0
- package/dist/utils/virtual/use-virtualizer.d.ts +43 -0
- package/dist/utils/virtual/use-virtualizer.js +94 -0
- package/dist/utils/virtual/use-virtualizer.js.map +1 -0
- package/dist/utils/virtual/virtualizer.d.ts +145 -0
- package/dist/utils/virtual/virtualizer.js +316 -0
- package/dist/utils/virtual/virtualizer.js.map +1 -0
- package/dist/xlsx/index.d.ts +7 -0
- package/dist/xlsx/index.js +1 -0
- package/dist/xlsx/workbook.d.ts +33 -0
- package/dist/xlsx/workbook.js +195 -0
- package/dist/xlsx/workbook.js.map +1 -0
- package/package.json +205 -3
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/** 一个要渲染的项;位置都相对列表开头,单位 px */
|
|
2
|
+
export interface VirtualItem {
|
|
3
|
+
/** 在数据里的序号 */
|
|
4
|
+
readonly index: number;
|
|
5
|
+
/** getItemKey 给出的 key,测量结果按它缓存 */
|
|
6
|
+
readonly key: PropertyKey;
|
|
7
|
+
/** 起始位置 */
|
|
8
|
+
readonly start: number;
|
|
9
|
+
/** 大小:测量过的为真实大小,否则为估计值 */
|
|
10
|
+
readonly size: number;
|
|
11
|
+
/** 结束位置(start + size) */
|
|
12
|
+
readonly end: number;
|
|
13
|
+
}
|
|
14
|
+
/** 可见范围(不含 overscan),两端都包含 */
|
|
15
|
+
export interface VisibleRange {
|
|
16
|
+
/** 第一个可见项 */
|
|
17
|
+
readonly startIndex: number;
|
|
18
|
+
/** 最后一个可见项 */
|
|
19
|
+
readonly endIndex: number;
|
|
20
|
+
}
|
|
21
|
+
/** 交给 rangeExtractor 的范围:可见范围、overscan 与总数 */
|
|
22
|
+
export interface ExtractorRange extends VisibleRange {
|
|
23
|
+
/** 可见范围前后各多渲染几项 */
|
|
24
|
+
readonly overscan: number;
|
|
25
|
+
/** 总项数 */
|
|
26
|
+
readonly count: number;
|
|
27
|
+
}
|
|
28
|
+
/** 滚动到某一项时,它停在视口的什么位置 */
|
|
29
|
+
export interface ScrollAligns {
|
|
30
|
+
/** 顶端(横向时为起始端)对齐视口开头 */
|
|
31
|
+
start: unknown;
|
|
32
|
+
/** 居中 */
|
|
33
|
+
center: unknown;
|
|
34
|
+
/** 末端对齐视口末尾 */
|
|
35
|
+
end: unknown;
|
|
36
|
+
/** 已经完整可见就不动,否则就近对齐开头或末尾(默认) */
|
|
37
|
+
auto: unknown;
|
|
38
|
+
}
|
|
39
|
+
/** scrollToIndex、scrollToOffset 的选项 */
|
|
40
|
+
export interface VirtualScrollOptions {
|
|
41
|
+
/** 目标项停在视口的什么位置,默认 auto(scrollToOffset 不用) */
|
|
42
|
+
align?: keyof ScrollAligns;
|
|
43
|
+
/** 滚动方式,同 Element.scrollTo;smooth 时动态大小的项可能停得不够准 */
|
|
44
|
+
behavior?: ScrollBehavior;
|
|
45
|
+
}
|
|
46
|
+
/** Virtualizer 的选项 */
|
|
47
|
+
export interface VirtualizerOptions {
|
|
48
|
+
/** 总项数 */
|
|
49
|
+
count: number;
|
|
50
|
+
/** 滚动容器:元素或 window;还没有时返回 null */
|
|
51
|
+
getScrollElement: () => HTMLElement | Window | null;
|
|
52
|
+
/** 第 index 项的估计大小(px);渲染后以测量值为准,估计得越接近,滚动条越稳 */
|
|
53
|
+
estimateSize: (index: number) => number;
|
|
54
|
+
/** 第 index 项的 key,默认就是 index;数据会重排、增删时给稳定的 key,测量结果才对得上 */
|
|
55
|
+
getItemKey?: (index: number) => PropertyKey;
|
|
56
|
+
/** 可见范围前后各多渲染几项,默认 3:快速滚动时不露白 */
|
|
57
|
+
overscan?: number;
|
|
58
|
+
/** 横向滚动 */
|
|
59
|
+
horizontal?: boolean;
|
|
60
|
+
/** 列表开头距滚动内容开头的距离(px),如列表上方还有其他内容;函数在每次滚动时读取,默认 0 */
|
|
61
|
+
scrollMargin?: () => number;
|
|
62
|
+
/** 视口开头被吸顶的内容(表头)遮住的部分(px):scrollToIndex 对齐时避开,被遮住的项不算可见;函数在滚动时读取 */
|
|
63
|
+
scrollPaddingStart?: () => number;
|
|
64
|
+
/** 视口末尾被吸底的内容(合计行)遮住的部分(px);吸底的内容要在列表之后的正常流里 */
|
|
65
|
+
scrollPaddingEnd?: () => number;
|
|
66
|
+
/** 改写要渲染哪些项(序号升序):吸顶行、固定行在这里加上,默认是可见范围加 overscan */
|
|
67
|
+
rangeExtractor?: (range: ExtractorRange) => number[];
|
|
68
|
+
/** 渲染范围或总大小变了:重新渲染 */
|
|
69
|
+
onChange?: (virtualizer: Virtualizer) => void;
|
|
70
|
+
}
|
|
71
|
+
/** 按大小依次排出每项的位置 */
|
|
72
|
+
export declare function computeMeasurements(count: number, sizeOf: (index: number, key: PropertyKey) => number, keyOf: (index: number) => PropertyKey): VirtualItem[];
|
|
73
|
+
/** 与 [offset, offset + viewport) 相交的项;视口为 0 时只有 offset 处的一项;没有项时为 null */
|
|
74
|
+
export declare function findVisibleRange(items: readonly VirtualItem[], offset: number, viewport: number): VisibleRange | null;
|
|
75
|
+
/** 默认的渲染范围:可见范围前后各加 overscan 项 */
|
|
76
|
+
export declare function defaultRangeExtractor({ startIndex, endIndex, overscan, count, }: ExtractorRange): number[];
|
|
77
|
+
/** 滚动容器是不是 window(整页滚动) */
|
|
78
|
+
export declare const isWindow: (target: HTMLElement | Window) => target is Window;
|
|
79
|
+
/** 虚拟滚动的状态与计算:位置表、可见范围、测量、滚动到指定项(用法见文件开头) */
|
|
80
|
+
export declare class Virtualizer {
|
|
81
|
+
private options;
|
|
82
|
+
/** key → 测量到的大小 */
|
|
83
|
+
private readonly sizes;
|
|
84
|
+
/** 位置表;前 valid 项是准的,之后的在下次读取时从第 valid 项往后重排 */
|
|
85
|
+
private measurements;
|
|
86
|
+
private valid;
|
|
87
|
+
/** 同一轮里的多次测量只通知一次 */
|
|
88
|
+
private updateQueued;
|
|
89
|
+
/** 每测到一次新的大小加一:scrollToIndex 据此判断位置是否已经稳定 */
|
|
90
|
+
private sizeVersion;
|
|
91
|
+
/** 滚动位置,相对列表开头 */
|
|
92
|
+
private offset;
|
|
93
|
+
private viewport;
|
|
94
|
+
private range;
|
|
95
|
+
private scrollElement;
|
|
96
|
+
private itemObserver;
|
|
97
|
+
private readonly observed;
|
|
98
|
+
/** 这一批新渲染、还没量过的项 */
|
|
99
|
+
private readonly unmeasured;
|
|
100
|
+
private pendingScroll;
|
|
101
|
+
constructor(options: VirtualizerOptions);
|
|
102
|
+
/** 换一组选项(总数、估计大小、key 等):重新排位置表,测量过的大小按 key 保留 */
|
|
103
|
+
setOptions(options: VirtualizerOptions): void;
|
|
104
|
+
/** 开始监听滚动容器的滚动与大小变化;返回清理函数 */
|
|
105
|
+
mount(): () => void;
|
|
106
|
+
/** 每项的位置表 */
|
|
107
|
+
getMeasurements(): readonly VirtualItem[];
|
|
108
|
+
/**
|
|
109
|
+
* 位置表补算到第 index 项为止:只从第一个变了大小的项往后重排,不是每次测量都重建整张表
|
|
110
|
+
* (一万行时每次重建要几毫秒,滚动时每帧都有新的项被测量)
|
|
111
|
+
*/
|
|
112
|
+
private measureUpTo;
|
|
113
|
+
/** 列表的总大小(px):撑开滚动区域 */
|
|
114
|
+
getTotalSize(): number;
|
|
115
|
+
/** 可见范围(不含 overscan);没有项时为 null */
|
|
116
|
+
getVisibleRange(): VisibleRange | null;
|
|
117
|
+
/** 要渲染的项,序号升序 */
|
|
118
|
+
getVirtualItems(): VirtualItem[];
|
|
119
|
+
/**
|
|
120
|
+
* 测量渲染出来的项:作为元素的 ref 回调,元素要带 data-index。同一批渲染的项在微任务里一起量,
|
|
121
|
+
* 之后大小变化由 ResizeObserver 自动更新。传 null(元素卸载)时不再观察已经离开文档的元素。
|
|
122
|
+
*/
|
|
123
|
+
measureElement: (element: Element | null) => void;
|
|
124
|
+
/**
|
|
125
|
+
* 量这一批新渲染的项:先全部读完再更新。边读边改(调整滚动位置)时每次读取都强制重新布局,
|
|
126
|
+
* 一次渲染很多项(如滚动容器没有限高,所有项都“可见”)时是平方级的布局,页面会卡死。
|
|
127
|
+
* 量布局尺寸(offsetHeight)而不是 getBoundingClientRect:浮层进场的 scale 变换会把后者缩小,
|
|
128
|
+
* 元素之后被复用(列表过滤、重排)时 ResizeObserver 不会再报,缩小的值就一直留着,行与行叠在一起
|
|
129
|
+
*/
|
|
130
|
+
private measureRendered;
|
|
131
|
+
/** 滚动到第 index 项 */
|
|
132
|
+
scrollToIndex(index: number, { align, behavior }?: VirtualScrollOptions): void;
|
|
133
|
+
/** 滚动到相对列表开头的 offset(px) */
|
|
134
|
+
scrollToOffset(offset: number, { behavior }?: VirtualScrollOptions): void;
|
|
135
|
+
/** 第 index 项按 align 对齐时的滚动位置;auto 且已经完整可见时为 null */
|
|
136
|
+
private offsetForIndex;
|
|
137
|
+
private resizeItem;
|
|
138
|
+
private borderBoxSize;
|
|
139
|
+
private scrollBy;
|
|
140
|
+
private scrollMargin;
|
|
141
|
+
private readViewport;
|
|
142
|
+
private readScroll;
|
|
143
|
+
/** 重新算可见范围;范围变了或 force 时通知 */
|
|
144
|
+
private update;
|
|
145
|
+
}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import { clamp } from "../data/number.js";
|
|
2
|
+
//#region src/utils/virtual/virtualizer.ts
|
|
3
|
+
/**
|
|
4
|
+
* 虚拟滚动的核心:只渲染可见范围内的项(COMPONENTS.md §10.7)。不依赖 Vue,VirtualList、DataTable 都建在它上面。
|
|
5
|
+
* 算法参考 @tanstack/virtual-core:先按估计大小排出位置表,渲染后测量真实大小并按 key 缓存;
|
|
6
|
+
* 可见范围用二分查找;可视区上方的项大小变化时同步调整滚动位置,可见内容不跳。
|
|
7
|
+
*
|
|
8
|
+
* const virtualizer = new Virtualizer({ count, estimateSize: () => 36, getScrollElement: () => el, onChange });
|
|
9
|
+
* const cleanup = virtualizer.mount();
|
|
10
|
+
* virtualizer.getVirtualItems() // 要渲染的项:index、start(相对列表开头的偏移)、size
|
|
11
|
+
* <div data-index={item.index} ref={virtualizer.measureElement}> // 测量真实大小
|
|
12
|
+
*/
|
|
13
|
+
/** 按大小依次排出每项的位置 */
|
|
14
|
+
function computeMeasurements(count, sizeOf, keyOf) {
|
|
15
|
+
const items = new Array(count);
|
|
16
|
+
let start = 0;
|
|
17
|
+
for (let index = 0; index < count; index++) {
|
|
18
|
+
const key = keyOf(index);
|
|
19
|
+
const size = sizeOf(index, key);
|
|
20
|
+
items[index] = {
|
|
21
|
+
index,
|
|
22
|
+
key,
|
|
23
|
+
start,
|
|
24
|
+
size,
|
|
25
|
+
end: start + size
|
|
26
|
+
};
|
|
27
|
+
start += size;
|
|
28
|
+
}
|
|
29
|
+
return items;
|
|
30
|
+
}
|
|
31
|
+
/** 与 [offset, offset + viewport) 相交的项;视口为 0 时只有 offset 处的一项;没有项时为 null */
|
|
32
|
+
function findVisibleRange(items, offset, viewport) {
|
|
33
|
+
if (!items.length) return null;
|
|
34
|
+
let low = 0;
|
|
35
|
+
let high = items.length - 1;
|
|
36
|
+
while (low < high) {
|
|
37
|
+
const middle = low + high >> 1;
|
|
38
|
+
if (items[middle].end > offset) high = middle;
|
|
39
|
+
else low = middle + 1;
|
|
40
|
+
}
|
|
41
|
+
let endIndex = low;
|
|
42
|
+
while (endIndex < items.length - 1 && items[endIndex].end < offset + viewport) endIndex++;
|
|
43
|
+
return {
|
|
44
|
+
startIndex: low,
|
|
45
|
+
endIndex
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** 默认的渲染范围:可见范围前后各加 overscan 项 */
|
|
49
|
+
function defaultRangeExtractor({ startIndex, endIndex, overscan, count }) {
|
|
50
|
+
const from = Math.max(0, startIndex - overscan);
|
|
51
|
+
const to = Math.min(count - 1, endIndex + overscan);
|
|
52
|
+
return Array.from({ length: to - from + 1 }, (_, index) => from + index);
|
|
53
|
+
}
|
|
54
|
+
/** 滚动容器是不是 window(整页滚动) */
|
|
55
|
+
var isWindow = (target) => typeof window !== "undefined" && target === window;
|
|
56
|
+
/** 动态大小下 scrollToIndex 重新对准的最多次数 */
|
|
57
|
+
var MAX_SCROLL_ATTEMPTS = 10;
|
|
58
|
+
/** 虚拟滚动的状态与计算:位置表、可见范围、测量、滚动到指定项(用法见文件开头) */
|
|
59
|
+
var Virtualizer = class {
|
|
60
|
+
options;
|
|
61
|
+
/** key → 测量到的大小 */
|
|
62
|
+
sizes = /* @__PURE__ */ new Map();
|
|
63
|
+
/** 位置表;前 valid 项是准的,之后的在下次读取时从第 valid 项往后重排 */
|
|
64
|
+
measurements = null;
|
|
65
|
+
valid = 0;
|
|
66
|
+
/** 同一轮里的多次测量只通知一次 */
|
|
67
|
+
updateQueued = false;
|
|
68
|
+
/** 每测到一次新的大小加一:scrollToIndex 据此判断位置是否已经稳定 */
|
|
69
|
+
sizeVersion = 0;
|
|
70
|
+
/** 滚动位置,相对列表开头 */
|
|
71
|
+
offset = 0;
|
|
72
|
+
viewport = 0;
|
|
73
|
+
range = null;
|
|
74
|
+
scrollElement = null;
|
|
75
|
+
itemObserver = null;
|
|
76
|
+
observed = /* @__PURE__ */ new Set();
|
|
77
|
+
/** 这一批新渲染、还没量过的项 */
|
|
78
|
+
unmeasured = [];
|
|
79
|
+
pendingScroll = 0;
|
|
80
|
+
constructor(options) {
|
|
81
|
+
this.options = options;
|
|
82
|
+
}
|
|
83
|
+
/** 换一组选项(总数、估计大小、key 等):重新排位置表,测量过的大小按 key 保留 */
|
|
84
|
+
setOptions(options) {
|
|
85
|
+
this.options = options;
|
|
86
|
+
this.measurements = null;
|
|
87
|
+
this.valid = 0;
|
|
88
|
+
this.update(true);
|
|
89
|
+
}
|
|
90
|
+
/** 开始监听滚动容器的滚动与大小变化;返回清理函数 */
|
|
91
|
+
mount() {
|
|
92
|
+
const element = this.options.getScrollElement();
|
|
93
|
+
if (!element) return () => {};
|
|
94
|
+
this.scrollElement = element;
|
|
95
|
+
const onScroll = () => this.readScroll();
|
|
96
|
+
const onResize = () => {
|
|
97
|
+
this.readViewport();
|
|
98
|
+
this.readScroll();
|
|
99
|
+
};
|
|
100
|
+
element.addEventListener("scroll", onScroll, { passive: true });
|
|
101
|
+
let viewportObserver;
|
|
102
|
+
if (isWindow(element)) window.addEventListener("resize", onResize);
|
|
103
|
+
else if (typeof ResizeObserver !== "undefined") {
|
|
104
|
+
viewportObserver = new ResizeObserver(onResize);
|
|
105
|
+
viewportObserver.observe(element);
|
|
106
|
+
}
|
|
107
|
+
if (typeof ResizeObserver !== "undefined") {
|
|
108
|
+
this.itemObserver = new ResizeObserver((entries) => {
|
|
109
|
+
const sizes = entries.map((entry) => [entry.target, this.borderBoxSize(entry)]);
|
|
110
|
+
requestAnimationFrame(() => {
|
|
111
|
+
for (const [target, size] of sizes) this.resizeItem(target, size);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
for (const element of this.observed) this.itemObserver.observe(element);
|
|
115
|
+
}
|
|
116
|
+
this.readViewport();
|
|
117
|
+
this.readScroll();
|
|
118
|
+
return () => {
|
|
119
|
+
element.removeEventListener("scroll", onScroll);
|
|
120
|
+
if (isWindow(element)) window.removeEventListener("resize", onResize);
|
|
121
|
+
viewportObserver?.disconnect();
|
|
122
|
+
this.itemObserver?.disconnect();
|
|
123
|
+
this.itemObserver = null;
|
|
124
|
+
for (const observed of this.observed) if (!observed.isConnected) this.observed.delete(observed);
|
|
125
|
+
cancelAnimationFrame(this.pendingScroll);
|
|
126
|
+
this.scrollElement = null;
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/** 每项的位置表 */
|
|
130
|
+
getMeasurements() {
|
|
131
|
+
return this.measureUpTo(this.options.count - 1);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* 位置表补算到第 index 项为止:只从第一个变了大小的项往后重排,不是每次测量都重建整张表
|
|
135
|
+
* (一万行时每次重建要几毫秒,滚动时每帧都有新的项被测量)
|
|
136
|
+
*/
|
|
137
|
+
measureUpTo(index) {
|
|
138
|
+
const { count, estimateSize, getItemKey = (i) => i } = this.options;
|
|
139
|
+
const sizeOf = (i, key) => this.sizes.get(key) ?? estimateSize(i);
|
|
140
|
+
if (!this.measurements || this.measurements.length !== count) {
|
|
141
|
+
this.measurements = computeMeasurements(count, sizeOf, getItemKey);
|
|
142
|
+
this.valid = count;
|
|
143
|
+
return this.measurements;
|
|
144
|
+
}
|
|
145
|
+
const items = this.measurements;
|
|
146
|
+
const end = Math.min(index, count - 1);
|
|
147
|
+
let start = this.valid > 0 ? items[this.valid - 1].end : 0;
|
|
148
|
+
for (let i = this.valid; i <= end; i++) {
|
|
149
|
+
const key = getItemKey(i);
|
|
150
|
+
const size = sizeOf(i, key);
|
|
151
|
+
items[i] = {
|
|
152
|
+
index: i,
|
|
153
|
+
key,
|
|
154
|
+
start,
|
|
155
|
+
size,
|
|
156
|
+
end: start + size
|
|
157
|
+
};
|
|
158
|
+
start += size;
|
|
159
|
+
}
|
|
160
|
+
this.valid = Math.max(this.valid, end + 1);
|
|
161
|
+
return items;
|
|
162
|
+
}
|
|
163
|
+
/** 列表的总大小(px):撑开滚动区域 */
|
|
164
|
+
getTotalSize() {
|
|
165
|
+
return this.getMeasurements().at(-1)?.end ?? 0;
|
|
166
|
+
}
|
|
167
|
+
/** 可见范围(不含 overscan);没有项时为 null */
|
|
168
|
+
getVisibleRange() {
|
|
169
|
+
return this.range;
|
|
170
|
+
}
|
|
171
|
+
/** 要渲染的项,序号升序 */
|
|
172
|
+
getVirtualItems() {
|
|
173
|
+
if (!this.range) return [];
|
|
174
|
+
const { count, overscan = 3, rangeExtractor = defaultRangeExtractor } = this.options;
|
|
175
|
+
const measurements = this.getMeasurements();
|
|
176
|
+
return rangeExtractor({
|
|
177
|
+
...this.range,
|
|
178
|
+
overscan,
|
|
179
|
+
count
|
|
180
|
+
}).map((index) => measurements[index]).filter((item) => item != null);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* 测量渲染出来的项:作为元素的 ref 回调,元素要带 data-index。同一批渲染的项在微任务里一起量,
|
|
184
|
+
* 之后大小变化由 ResizeObserver 自动更新。传 null(元素卸载)时不再观察已经离开文档的元素。
|
|
185
|
+
*/
|
|
186
|
+
measureElement = (element) => {
|
|
187
|
+
if (!element) {
|
|
188
|
+
for (const observed of this.observed) {
|
|
189
|
+
if (observed.isConnected) continue;
|
|
190
|
+
this.itemObserver?.unobserve(observed);
|
|
191
|
+
this.observed.delete(observed);
|
|
192
|
+
}
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (this.observed.has(element)) return;
|
|
196
|
+
this.observed.add(element);
|
|
197
|
+
this.itemObserver?.observe(element);
|
|
198
|
+
this.unmeasured.push(element);
|
|
199
|
+
if (this.unmeasured.length === 1) queueMicrotask(() => this.measureRendered());
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* 量这一批新渲染的项:先全部读完再更新。边读边改(调整滚动位置)时每次读取都强制重新布局,
|
|
203
|
+
* 一次渲染很多项(如滚动容器没有限高,所有项都“可见”)时是平方级的布局,页面会卡死。
|
|
204
|
+
* 量布局尺寸(offsetHeight)而不是 getBoundingClientRect:浮层进场的 scale 变换会把后者缩小,
|
|
205
|
+
* 元素之后被复用(列表过滤、重排)时 ResizeObserver 不会再报,缩小的值就一直留着,行与行叠在一起
|
|
206
|
+
*/
|
|
207
|
+
measureRendered() {
|
|
208
|
+
const { horizontal } = this.options;
|
|
209
|
+
const sizes = this.unmeasured.splice(0).map((element) => [element, horizontal ? element.offsetWidth : element.offsetHeight]);
|
|
210
|
+
for (const [element, size] of sizes) this.resizeItem(element, size);
|
|
211
|
+
}
|
|
212
|
+
/** 滚动到第 index 项 */
|
|
213
|
+
scrollToIndex(index, { align = "auto", behavior } = {}) {
|
|
214
|
+
cancelAnimationFrame(this.pendingScroll);
|
|
215
|
+
const target = () => this.offsetForIndex(index, align);
|
|
216
|
+
const first = target();
|
|
217
|
+
if (first == null) return;
|
|
218
|
+
this.scrollToOffset(first, { behavior });
|
|
219
|
+
if (behavior === "smooth") return;
|
|
220
|
+
let attempts = 0;
|
|
221
|
+
let version = this.sizeVersion;
|
|
222
|
+
const settle = () => {
|
|
223
|
+
if (++attempts > MAX_SCROLL_ATTEMPTS) return;
|
|
224
|
+
const next = target();
|
|
225
|
+
const measured = version !== this.sizeVersion;
|
|
226
|
+
version = this.sizeVersion;
|
|
227
|
+
if (next != null && Math.abs(next - this.offset) >= 1) this.scrollToOffset(next);
|
|
228
|
+
else if (!measured) return;
|
|
229
|
+
this.pendingScroll = requestAnimationFrame(settle);
|
|
230
|
+
};
|
|
231
|
+
this.pendingScroll = requestAnimationFrame(settle);
|
|
232
|
+
}
|
|
233
|
+
/** 滚动到相对列表开头的 offset(px) */
|
|
234
|
+
scrollToOffset(offset, { behavior } = {}) {
|
|
235
|
+
const element = this.scrollElement;
|
|
236
|
+
if (!element) return;
|
|
237
|
+
const position = offset + this.scrollMargin();
|
|
238
|
+
element.scrollTo(this.options.horizontal ? {
|
|
239
|
+
left: position,
|
|
240
|
+
behavior
|
|
241
|
+
} : {
|
|
242
|
+
top: position,
|
|
243
|
+
behavior
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
/** 第 index 项按 align 对齐时的滚动位置;auto 且已经完整可见时为 null */
|
|
247
|
+
offsetForIndex(index, align) {
|
|
248
|
+
const item = this.getMeasurements()[clamp(index, 0, this.options.count - 1)];
|
|
249
|
+
if (!item) return null;
|
|
250
|
+
const { offset, viewport } = this;
|
|
251
|
+
const before = this.options.scrollPaddingStart?.() ?? 0;
|
|
252
|
+
const after = this.options.scrollPaddingEnd?.() ?? 0;
|
|
253
|
+
let target;
|
|
254
|
+
if (align === "auto") {
|
|
255
|
+
if (item.start >= offset + before && item.end <= offset + viewport - after) return null;
|
|
256
|
+
target = item.start < offset + before ? item.start - before : item.end - viewport + after;
|
|
257
|
+
} else if (align === "start") target = item.start - before;
|
|
258
|
+
else if (align === "end") target = item.end - viewport + after;
|
|
259
|
+
else target = item.start + item.size / 2 - (viewport + before - after) / 2;
|
|
260
|
+
return clamp(target, -before, Math.max(0, this.getTotalSize() - viewport + after));
|
|
261
|
+
}
|
|
262
|
+
resizeItem(element, size) {
|
|
263
|
+
if (!size || !element.isConnected) return;
|
|
264
|
+
const index = Number(element.getAttribute("data-index"));
|
|
265
|
+
const item = this.measureUpTo(index)[index];
|
|
266
|
+
if (!item || item.size === size) return;
|
|
267
|
+
if (item.start < this.offset) this.scrollBy(size - item.size);
|
|
268
|
+
this.sizes.set(item.key, size);
|
|
269
|
+
this.sizeVersion++;
|
|
270
|
+
this.valid = Math.min(this.valid, index);
|
|
271
|
+
if (this.updateQueued) return;
|
|
272
|
+
this.updateQueued = true;
|
|
273
|
+
queueMicrotask(() => {
|
|
274
|
+
this.updateQueued = false;
|
|
275
|
+
this.update(true);
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
borderBoxSize(entry) {
|
|
279
|
+
const box = entry.borderBoxSize?.[0];
|
|
280
|
+
if (!box) return this.options.horizontal ? entry.contentRect.width : entry.contentRect.height;
|
|
281
|
+
return this.options.horizontal ? box.inlineSize : box.blockSize;
|
|
282
|
+
}
|
|
283
|
+
scrollBy(delta) {
|
|
284
|
+
this.offset += delta;
|
|
285
|
+
this.scrollElement?.scrollBy(this.options.horizontal ? { left: delta } : { top: delta });
|
|
286
|
+
}
|
|
287
|
+
scrollMargin() {
|
|
288
|
+
return this.options.scrollMargin?.() ?? 0;
|
|
289
|
+
}
|
|
290
|
+
readViewport() {
|
|
291
|
+
const element = this.scrollElement;
|
|
292
|
+
if (!element) return;
|
|
293
|
+
const { horizontal } = this.options;
|
|
294
|
+
if (isWindow(element)) this.viewport = horizontal ? window.innerWidth : window.innerHeight;
|
|
295
|
+
else this.viewport = horizontal ? element.clientWidth : element.clientHeight;
|
|
296
|
+
}
|
|
297
|
+
readScroll() {
|
|
298
|
+
const element = this.scrollElement;
|
|
299
|
+
if (!element) return;
|
|
300
|
+
const { horizontal } = this.options;
|
|
301
|
+
const position = isWindow(element) ? horizontal ? window.scrollX : window.scrollY : horizontal ? element.scrollLeft : element.scrollTop;
|
|
302
|
+
this.offset = position - this.scrollMargin();
|
|
303
|
+
this.update(false);
|
|
304
|
+
}
|
|
305
|
+
/** 重新算可见范围;范围变了或 force 时通知 */
|
|
306
|
+
update(force) {
|
|
307
|
+
const range = findVisibleRange(this.getMeasurements(), this.offset, this.viewport);
|
|
308
|
+
const changed = range?.startIndex !== this.range?.startIndex || range?.endIndex !== this.range?.endIndex;
|
|
309
|
+
this.range = range;
|
|
310
|
+
if (changed || force) this.options.onChange?.(this);
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
//#endregion
|
|
314
|
+
export { Virtualizer, computeMeasurements, defaultRangeExtractor, findVisibleRange, isWindow };
|
|
315
|
+
|
|
316
|
+
//# sourceMappingURL=virtualizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtualizer.js","names":[],"sources":["../../../src/utils/virtual/virtualizer.ts"],"sourcesContent":["/**\n * 虚拟滚动的核心:只渲染可见范围内的项(COMPONENTS.md §10.7)。不依赖 Vue,VirtualList、DataTable 都建在它上面。\n * 算法参考 @tanstack/virtual-core:先按估计大小排出位置表,渲染后测量真实大小并按 key 缓存;\n * 可见范围用二分查找;可视区上方的项大小变化时同步调整滚动位置,可见内容不跳。\n *\n * const virtualizer = new Virtualizer({ count, estimateSize: () => 36, getScrollElement: () => el, onChange });\n * const cleanup = virtualizer.mount();\n * virtualizer.getVirtualItems() // 要渲染的项:index、start(相对列表开头的偏移)、size\n * <div data-index={item.index} ref={virtualizer.measureElement}> // 测量真实大小\n */\nimport { clamp } from '../data/number';\n\n/** 一个要渲染的项;位置都相对列表开头,单位 px */\nexport interface VirtualItem {\n /** 在数据里的序号 */\n readonly index: number;\n /** getItemKey 给出的 key,测量结果按它缓存 */\n readonly key: PropertyKey;\n /** 起始位置 */\n readonly start: number;\n /** 大小:测量过的为真实大小,否则为估计值 */\n readonly size: number;\n /** 结束位置(start + size) */\n readonly end: number;\n}\n\n/** 可见范围(不含 overscan),两端都包含 */\nexport interface VisibleRange {\n /** 第一个可见项 */\n readonly startIndex: number;\n /** 最后一个可见项 */\n readonly endIndex: number;\n}\n\n/** 交给 rangeExtractor 的范围:可见范围、overscan 与总数 */\nexport interface ExtractorRange extends VisibleRange {\n /** 可见范围前后各多渲染几项 */\n readonly overscan: number;\n /** 总项数 */\n readonly count: number;\n}\n\n/** 滚动到某一项时,它停在视口的什么位置 */\nexport interface ScrollAligns {\n /** 顶端(横向时为起始端)对齐视口开头 */\n start: unknown;\n /** 居中 */\n center: unknown;\n /** 末端对齐视口末尾 */\n end: unknown;\n /** 已经完整可见就不动,否则就近对齐开头或末尾(默认) */\n auto: unknown;\n}\n\n/** scrollToIndex、scrollToOffset 的选项 */\nexport interface VirtualScrollOptions {\n /** 目标项停在视口的什么位置,默认 auto(scrollToOffset 不用) */\n align?: keyof ScrollAligns;\n /** 滚动方式,同 Element.scrollTo;smooth 时动态大小的项可能停得不够准 */\n behavior?: ScrollBehavior;\n}\n\n/** Virtualizer 的选项 */\nexport interface VirtualizerOptions {\n /** 总项数 */\n count: number;\n /** 滚动容器:元素或 window;还没有时返回 null */\n getScrollElement: () => HTMLElement | Window | null;\n /** 第 index 项的估计大小(px);渲染后以测量值为准,估计得越接近,滚动条越稳 */\n estimateSize: (index: number) => number;\n /** 第 index 项的 key,默认就是 index;数据会重排、增删时给稳定的 key,测量结果才对得上 */\n getItemKey?: (index: number) => PropertyKey;\n /** 可见范围前后各多渲染几项,默认 3:快速滚动时不露白 */\n overscan?: number;\n /** 横向滚动 */\n horizontal?: boolean;\n /** 列表开头距滚动内容开头的距离(px),如列表上方还有其他内容;函数在每次滚动时读取,默认 0 */\n scrollMargin?: () => number;\n /** 视口开头被吸顶的内容(表头)遮住的部分(px):scrollToIndex 对齐时避开,被遮住的项不算可见;函数在滚动时读取 */\n scrollPaddingStart?: () => number;\n /** 视口末尾被吸底的内容(合计行)遮住的部分(px);吸底的内容要在列表之后的正常流里 */\n scrollPaddingEnd?: () => number;\n /** 改写要渲染哪些项(序号升序):吸顶行、固定行在这里加上,默认是可见范围加 overscan */\n rangeExtractor?: (range: ExtractorRange) => number[];\n /** 渲染范围或总大小变了:重新渲染 */\n onChange?: (virtualizer: Virtualizer) => void;\n}\n\n/** 按大小依次排出每项的位置 */\nexport function computeMeasurements(\n count: number,\n sizeOf: (index: number, key: PropertyKey) => number,\n keyOf: (index: number) => PropertyKey,\n): VirtualItem[] {\n const items: VirtualItem[] = new Array(count);\n let start = 0;\n for (let index = 0; index < count; index++) {\n const key = keyOf(index);\n const size = sizeOf(index, key);\n items[index] = { index, key, start, size, end: start + size };\n start += size;\n }\n return items;\n}\n\n/** 与 [offset, offset + viewport) 相交的项;视口为 0 时只有 offset 处的一项;没有项时为 null */\nexport function findVisibleRange(\n items: readonly VirtualItem[],\n offset: number,\n viewport: number,\n): VisibleRange | null {\n if (!items.length) return null;\n // 二分查找第一个 end > offset 的项\n let low = 0;\n let high = items.length - 1;\n while (low < high) {\n const middle = (low + high) >> 1;\n if (items[middle]!.end > offset) high = middle;\n else low = middle + 1;\n }\n let endIndex = low;\n while (endIndex < items.length - 1 && items[endIndex]!.end < offset + viewport) endIndex++;\n return { startIndex: low, endIndex };\n}\n\n/** 默认的渲染范围:可见范围前后各加 overscan 项 */\nexport function defaultRangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count,\n}: ExtractorRange): number[] {\n const from = Math.max(0, startIndex - overscan);\n const to = Math.min(count - 1, endIndex + overscan);\n return Array.from({ length: to - from + 1 }, (_, index) => from + index);\n}\n\n/** 滚动容器是不是 window(整页滚动) */\nexport const isWindow = (target: HTMLElement | Window): target is Window =>\n typeof window !== 'undefined' && target === window;\n\n/** 动态大小下 scrollToIndex 重新对准的最多次数 */\nconst MAX_SCROLL_ATTEMPTS = 10;\n\n/** 虚拟滚动的状态与计算:位置表、可见范围、测量、滚动到指定项(用法见文件开头) */\nexport class Virtualizer {\n private options: VirtualizerOptions;\n /** key → 测量到的大小 */\n private readonly sizes = new Map<PropertyKey, number>();\n /** 位置表;前 valid 项是准的,之后的在下次读取时从第 valid 项往后重排 */\n private measurements: VirtualItem[] | null = null;\n private valid = 0;\n /** 同一轮里的多次测量只通知一次 */\n private updateQueued = false;\n /** 每测到一次新的大小加一:scrollToIndex 据此判断位置是否已经稳定 */\n private sizeVersion = 0;\n /** 滚动位置,相对列表开头 */\n private offset = 0;\n private viewport = 0;\n private range: VisibleRange | null = null;\n private scrollElement: HTMLElement | Window | null = null;\n private itemObserver: ResizeObserver | null = null;\n private readonly observed = new Set<Element>();\n /** 这一批新渲染、还没量过的项 */\n private readonly unmeasured: HTMLElement[] = [];\n private pendingScroll = 0;\n\n constructor(options: VirtualizerOptions) {\n this.options = options;\n }\n\n /** 换一组选项(总数、估计大小、key 等):重新排位置表,测量过的大小按 key 保留 */\n setOptions(options: VirtualizerOptions): void {\n this.options = options;\n this.measurements = null;\n this.valid = 0;\n this.update(true);\n }\n\n /** 开始监听滚动容器的滚动与大小变化;返回清理函数 */\n mount(): () => void {\n const element = this.options.getScrollElement();\n if (!element) return () => {};\n this.scrollElement = element;\n const onScroll = () => this.readScroll();\n const onResize = () => {\n this.readViewport();\n this.readScroll();\n };\n element.addEventListener('scroll', onScroll, { passive: true });\n let viewportObserver: ResizeObserver | undefined;\n if (isWindow(element)) window.addEventListener('resize', onResize);\n else if (typeof ResizeObserver !== 'undefined') {\n viewportObserver = new ResizeObserver(onResize);\n viewportObserver.observe(element);\n }\n if (typeof ResizeObserver !== 'undefined') {\n // 测量结果下一帧再用:在回调里同步改布局(重排位置、调整滚动),浏览器会报\n // “ResizeObserver loop completed with undelivered notifications”。第一次测量在 measureRendered 里已经做过\n this.itemObserver = new ResizeObserver((entries) => {\n const sizes = entries.map((entry) => [entry.target, this.borderBoxSize(entry)] as const);\n requestAnimationFrame(() => {\n for (const [target, size] of sizes) this.resizeItem(target, size);\n });\n });\n // 项的 ref 回调早于外层组件的 onMounted:挂载前就登记过的项这里补上观察,否则它们之后的大小变化永远收不到\n for (const element of this.observed) this.itemObserver.observe(element);\n }\n this.readViewport();\n this.readScroll();\n\n return () => {\n element.removeEventListener('scroll', onScroll);\n if (isWindow(element)) window.removeEventListener('resize', onResize);\n viewportObserver?.disconnect();\n this.itemObserver?.disconnect();\n this.itemObserver = null;\n // 换滚动容器时会重新 mount:还在文档里的项留着,下次 mount 接着观察(它们的 ref 回调不会再来)\n for (const observed of this.observed)\n if (!observed.isConnected) this.observed.delete(observed);\n cancelAnimationFrame(this.pendingScroll);\n this.scrollElement = null;\n };\n }\n\n /** 每项的位置表 */\n getMeasurements(): readonly VirtualItem[] {\n return this.measureUpTo(this.options.count - 1);\n }\n\n /**\n * 位置表补算到第 index 项为止:只从第一个变了大小的项往后重排,不是每次测量都重建整张表\n * (一万行时每次重建要几毫秒,滚动时每帧都有新的项被测量)\n */\n private measureUpTo(index: number): VirtualItem[] {\n const { count, estimateSize, getItemKey = (i) => i } = this.options;\n const sizeOf = (i: number, key: PropertyKey) => this.sizes.get(key) ?? estimateSize(i);\n if (!this.measurements || this.measurements.length !== count) {\n this.measurements = computeMeasurements(count, sizeOf, getItemKey);\n this.valid = count;\n return this.measurements;\n }\n const items = this.measurements;\n const end = Math.min(index, count - 1);\n let start = this.valid > 0 ? items[this.valid - 1]!.end : 0;\n for (let i = this.valid; i <= end; i++) {\n const key = getItemKey(i);\n const size = sizeOf(i, key);\n items[i] = { index: i, key, start, size, end: start + size };\n start += size;\n }\n this.valid = Math.max(this.valid, end + 1);\n return items;\n }\n\n /** 列表的总大小(px):撑开滚动区域 */\n getTotalSize(): number {\n return this.getMeasurements().at(-1)?.end ?? 0;\n }\n\n /** 可见范围(不含 overscan);没有项时为 null */\n getVisibleRange(): VisibleRange | null {\n return this.range;\n }\n\n /** 要渲染的项,序号升序 */\n getVirtualItems(): VirtualItem[] {\n if (!this.range) return [];\n const { count, overscan = 3, rangeExtractor = defaultRangeExtractor } = this.options;\n const measurements = this.getMeasurements();\n return rangeExtractor({ ...this.range, overscan, count })\n .map((index) => measurements[index])\n .filter((item): item is VirtualItem => item != null);\n }\n\n /**\n * 测量渲染出来的项:作为元素的 ref 回调,元素要带 data-index。同一批渲染的项在微任务里一起量,\n * 之后大小变化由 ResizeObserver 自动更新。传 null(元素卸载)时不再观察已经离开文档的元素。\n */\n measureElement = (element: Element | null): void => {\n if (!element) {\n for (const observed of this.observed) {\n if (observed.isConnected) continue;\n this.itemObserver?.unobserve(observed);\n this.observed.delete(observed);\n }\n return;\n }\n // 只在元素第一次出现时量(这一批渲染完、绘制之前):之后的变化交给 ResizeObserver\n if (this.observed.has(element)) return;\n this.observed.add(element);\n this.itemObserver?.observe(element);\n this.unmeasured.push(element as HTMLElement);\n if (this.unmeasured.length === 1) queueMicrotask(() => this.measureRendered());\n };\n\n /**\n * 量这一批新渲染的项:先全部读完再更新。边读边改(调整滚动位置)时每次读取都强制重新布局,\n * 一次渲染很多项(如滚动容器没有限高,所有项都“可见”)时是平方级的布局,页面会卡死。\n * 量布局尺寸(offsetHeight)而不是 getBoundingClientRect:浮层进场的 scale 变换会把后者缩小,\n * 元素之后被复用(列表过滤、重排)时 ResizeObserver 不会再报,缩小的值就一直留着,行与行叠在一起\n */\n private measureRendered() {\n const { horizontal } = this.options;\n const sizes = this.unmeasured\n .splice(0)\n .map(\n (element) => [element, horizontal ? element.offsetWidth : element.offsetHeight] as const,\n );\n for (const [element, size] of sizes) this.resizeItem(element, size);\n }\n\n /** 滚动到第 index 项 */\n scrollToIndex(index: number, { align = 'auto', behavior }: VirtualScrollOptions = {}): void {\n cancelAnimationFrame(this.pendingScroll);\n const target = () => this.offsetForIndex(index, align);\n const first = target();\n if (first == null) return;\n this.scrollToOffset(first, { behavior });\n if (behavior === 'smooth') return;\n // 滚过去之后周围的项才被测量,位置可能变化:下一帧重新对准;\n // 对准了、而且这一帧没有新的测量才算稳定(WebKit 的测量可能晚一两帧才到,对准后又变)\n let attempts = 0;\n let version = this.sizeVersion;\n const settle = () => {\n if (++attempts > MAX_SCROLL_ATTEMPTS) return;\n const next = target();\n const measured = version !== this.sizeVersion;\n version = this.sizeVersion;\n if (next != null && Math.abs(next - this.offset) >= 1) this.scrollToOffset(next);\n else if (!measured) return;\n this.pendingScroll = requestAnimationFrame(settle);\n };\n this.pendingScroll = requestAnimationFrame(settle);\n }\n\n /** 滚动到相对列表开头的 offset(px) */\n scrollToOffset(offset: number, { behavior }: VirtualScrollOptions = {}): void {\n const element = this.scrollElement;\n if (!element) return;\n const position = offset + this.scrollMargin();\n element.scrollTo(\n this.options.horizontal ? { left: position, behavior } : { top: position, behavior },\n );\n }\n\n /** 第 index 项按 align 对齐时的滚动位置;auto 且已经完整可见时为 null */\n private offsetForIndex(index: number, align: keyof ScrollAligns): number | null {\n const item = this.getMeasurements()[clamp(index, 0, this.options.count - 1)];\n if (!item) return null;\n const { offset, viewport } = this;\n const before = this.options.scrollPaddingStart?.() ?? 0;\n const after = this.options.scrollPaddingEnd?.() ?? 0;\n let target: number;\n if (align === 'auto') {\n if (item.start >= offset + before && item.end <= offset + viewport - after) return null;\n target = item.start < offset + before ? item.start - before : item.end - viewport + after;\n } else if (align === 'start') target = item.start - before;\n else if (align === 'end') target = item.end - viewport + after;\n else target = item.start + item.size / 2 - (viewport + before - after) / 2;\n // 开头可以负到 -before:第一项对齐开头时回到最顶上,表头下面就是它\n return clamp(target, -before, Math.max(0, this.getTotalSize() - viewport + after));\n }\n\n private resizeItem(element: Element, size: number) {\n // 0 是还没排版(display: none、刚离开文档),保留原来的值\n if (!size || !element.isConnected) return;\n const index = Number(element.getAttribute('data-index'));\n const item = this.measureUpTo(index)[index];\n if (!item || item.size === size) return;\n // 可视区上方的项变大或变小:同步调整滚动位置,可见内容不跳\n if (item.start < this.offset) this.scrollBy(size - item.size);\n this.sizes.set(item.key, size);\n this.sizeVersion++;\n this.valid = Math.min(this.valid, index);\n // 渲染时一批新项依次测量:合并成一次通知,等这一批量完再重新算范围\n if (this.updateQueued) return;\n this.updateQueued = true;\n queueMicrotask(() => {\n this.updateQueued = false;\n this.update(true);\n });\n }\n\n private borderBoxSize(entry: ResizeObserverEntry) {\n const box = entry.borderBoxSize?.[0];\n if (!box) return this.options.horizontal ? entry.contentRect.width : entry.contentRect.height;\n return this.options.horizontal ? box.inlineSize : box.blockSize;\n }\n\n private scrollBy(delta: number) {\n this.offset += delta;\n this.scrollElement?.scrollBy(this.options.horizontal ? { left: delta } : { top: delta });\n }\n\n private scrollMargin() {\n return this.options.scrollMargin?.() ?? 0;\n }\n\n private readViewport() {\n const element = this.scrollElement;\n if (!element) return;\n const { horizontal } = this.options;\n if (isWindow(element)) this.viewport = horizontal ? window.innerWidth : window.innerHeight;\n else this.viewport = horizontal ? element.clientWidth : element.clientHeight;\n }\n\n private readScroll() {\n const element = this.scrollElement;\n if (!element) return;\n const { horizontal } = this.options;\n const position = isWindow(element)\n ? horizontal\n ? window.scrollX\n : window.scrollY\n : horizontal\n ? element.scrollLeft\n : element.scrollTop;\n this.offset = position - this.scrollMargin();\n this.update(false);\n }\n\n /** 重新算可见范围;范围变了或 force 时通知 */\n private update(force: boolean) {\n const range = findVisibleRange(this.getMeasurements(), this.offset, this.viewport);\n const changed =\n range?.startIndex !== this.range?.startIndex || range?.endIndex !== this.range?.endIndex;\n this.range = range;\n if (changed || force) this.options.onChange?.(this);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Excel 读写(子路径 `@zerodep-dev/vue-tsx-pro-ui/xlsx`):导出带分组表头、数字格式的 .xlsx,读取时展开合并单元格、连起多行表头。
|
|
3
|
+
* 依赖可选的 peer exceljs,用到这个子路径时安装。见 workbook.ts。
|
|
4
|
+
*
|
|
5
|
+
* import { exportXlsx, readXlsx } from '@zerodep-dev/vue-tsx-pro-ui/xlsx';
|
|
6
|
+
*/
|
|
7
|
+
export { exportXlsx, readXlsx, tableToXlsx, type XlsxExportOptions, type XlsxReadOptions, type XlsxSheet, } from './workbook';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { exportXlsx, readXlsx, tableToXlsx } from "./workbook.js";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type DataTableColumn, type DataTableColumnGroup } from '../table/columns';
|
|
2
|
+
import { type SheetMatrixOptions, type SheetTable } from '../table/sheet';
|
|
3
|
+
/** 导出的一张工作表 */
|
|
4
|
+
export interface XlsxSheet<T> {
|
|
5
|
+
/** 工作表名(Excel 限 31 个字,不能有 \ / ? * [ ]) */
|
|
6
|
+
name: string;
|
|
7
|
+
/** 数据 */
|
|
8
|
+
rows: readonly T[];
|
|
9
|
+
/** 列定义(同 DataTable;只导出要的列时先筛掉操作列) */
|
|
10
|
+
columns: readonly DataTableColumn<T>[];
|
|
11
|
+
/** 分组表头(同 DataTable 的 columnGroups):导出成两行表头,组标题横向合并 */
|
|
12
|
+
groups?: readonly DataTableColumnGroup[];
|
|
13
|
+
}
|
|
14
|
+
/** 导出的选项 */
|
|
15
|
+
export interface XlsxExportOptions {
|
|
16
|
+
/** 金额列的币种(ISO 4217),默认 CNY;跟随语言时传 lang.currency */
|
|
17
|
+
currency?: string;
|
|
18
|
+
/** 金额符号按哪种语言取,默认 zh-CN */
|
|
19
|
+
locale?: string;
|
|
20
|
+
/** 合计行第一列的文字,默认“合计” */
|
|
21
|
+
summaryLabel?: string;
|
|
22
|
+
}
|
|
23
|
+
/** 读取的选项 */
|
|
24
|
+
export interface XlsxReadOptions extends SheetMatrixOptions {
|
|
25
|
+
/** 只读这些工作表(名字);默认全部 */
|
|
26
|
+
sheets?: readonly string[];
|
|
27
|
+
}
|
|
28
|
+
/** 表 → .xlsx 文件的内容(ArrayBuffer);下载用 exportXlsx */
|
|
29
|
+
export declare function tableToXlsx<T>(sheets: readonly XlsxSheet<T>[], { currency, locale, summaryLabel }?: XlsxExportOptions): Promise<ArrayBuffer>;
|
|
30
|
+
/** 导出并下载 .xlsx:fileName 不带扩展名时自动加上 */
|
|
31
|
+
export declare function exportXlsx<T>(fileName: string, sheets: readonly XlsxSheet<T>[], options?: XlsxExportOptions): Promise<void>;
|
|
32
|
+
/** 读 .xlsx 文件:每张工作表一个 SheetTable(见文件开头) */
|
|
33
|
+
export declare function readXlsx(file: Blob, options?: XlsxReadOptions): Promise<SheetTable[]>;
|