@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,409 @@
|
|
|
1
|
+
import { CalendarDate, DateFormatter, GregorianCalendar, Time, createCalendar, endOfMonth, getDayOfWeek, getLocalTimeZone, parseDate, parseDateTime, parseTime, startOfMonth, startOfWeek, toCalendar, today } from "@internationalized/date";
|
|
2
|
+
//#region src/utils/data/date.ts
|
|
3
|
+
/**
|
|
4
|
+
* 日期运算(不含界面):ISO 字符串互转、月份网格、星期名与月份名、可选范围、区间、周数、快捷区间。
|
|
5
|
+
* Calendar、DateField、各种日期选择器共用;运算交给 @internationalized/date(时区、地区的周起始日、非公历)。
|
|
6
|
+
*
|
|
7
|
+
* 组件对外的值是 ISO 8601 字符串('2026-10-20'、'14:30'、'2026-10-20T14:30'),与原生 input、URL 参数、
|
|
8
|
+
* zod 的 z.iso.date() 一致;组件内部换成 CalendarDate 等对象运算。月份名、星期名一律取自 Intl。
|
|
9
|
+
* 出错的约定:parseXxx 解析不了时返回 null(输入框里的半截内容是常态);shiftIsoDate、daysBetween 这类运算
|
|
10
|
+
* 要求合法的 ISO 字符串,不合法时抛 RangeError 并带上原值(多半是调用方的数据错了,不该悄悄算出别的日子)。
|
|
11
|
+
*
|
|
12
|
+
* monthGrid(new CalendarDate(2026, 10, 1), { locale: 'zh-CN' }) → 6 行 × 7 天,补齐上下月
|
|
13
|
+
* weekdayNames('en-US', { format: 'short' }) → ['Sun', 'Mon', …]
|
|
14
|
+
*/
|
|
15
|
+
/** 'YYYY-MM-DD' → CalendarDate(公历);空值或格式不对时为 null */
|
|
16
|
+
function parseIsoDate(value) {
|
|
17
|
+
return tryParse(value, parseDate);
|
|
18
|
+
}
|
|
19
|
+
/** 'HH:mm' 或 'HH:mm:ss' → Time;空值或格式不对时为 null */
|
|
20
|
+
function parseIsoTime(value) {
|
|
21
|
+
return tryParse(value, parseTime);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 补成完整的 ISO 日期(这一段的第一天):'2026' 与 '2026-10' 补成 1 日,'2026-Q4' 是 10 月 1 日,
|
|
25
|
+
* '2026-W43' 是那一周的周一,日期时间取日期部分(DateField、各种日期选择器的粒度)
|
|
26
|
+
*/
|
|
27
|
+
function fullIsoDay(iso) {
|
|
28
|
+
const period = parsePeriod(iso);
|
|
29
|
+
if (period) return period.start.toString();
|
|
30
|
+
return iso.length === 4 ? `${iso}-01-01` : iso.length === 7 ? `${iso}-01` : iso.slice(0, 10);
|
|
31
|
+
}
|
|
32
|
+
/** 这一段的最后一天:'2026' 是 12 月 31 日,'2026-10' 是 31 日,'2026-Q4' 是 12 月 31 日,'2026-W43' 是那周的周日 */
|
|
33
|
+
function lastIsoDay(iso) {
|
|
34
|
+
const period = parsePeriod(iso);
|
|
35
|
+
if (period) return period.end.toString();
|
|
36
|
+
if (iso.length === 4) return `${iso}-12-31`;
|
|
37
|
+
if (iso.length === 7) return endOfMonth(parseDate(`${iso}-01`)).toString();
|
|
38
|
+
return iso.slice(0, 10);
|
|
39
|
+
}
|
|
40
|
+
var QUARTER_PATTERN = /^(\d{4})-Q([1-4])$/;
|
|
41
|
+
var WEEK_PATTERN = /^(\d{4})-W(\d{2})$/;
|
|
42
|
+
/** 日期所在的季度:'2026-Q4' */
|
|
43
|
+
function toIsoQuarter(date) {
|
|
44
|
+
const gregorian = toCalendar(date, GREGORIAN);
|
|
45
|
+
return `${String(gregorian.year).padStart(4, "0")}-Q${Math.ceil(gregorian.month / 3)}`;
|
|
46
|
+
}
|
|
47
|
+
/** ISO 8601 的周(周一开始,含 1 月 4 日的那周是第 1 周,跨年的周归周四所在的年):所属的年与第几周 */
|
|
48
|
+
function isoWeekOf(date) {
|
|
49
|
+
const gregorian = toCalendar(date, GREGORIAN);
|
|
50
|
+
const day = new CalendarDate(gregorian.year, gregorian.month, gregorian.day);
|
|
51
|
+
const thursday = day.add({ days: 4 - isoWeekday(day) });
|
|
52
|
+
return {
|
|
53
|
+
year: thursday.year,
|
|
54
|
+
week: Math.floor(thursday.compare(new CalendarDate(thursday.year, 1, 1)) / 7) + 1
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** 日期所在的 ISO 周:'2026-W43'(同原生 input type="week") */
|
|
58
|
+
function toIsoWeek(date) {
|
|
59
|
+
const { year, week } = isoWeekOf(date);
|
|
60
|
+
return `${String(year).padStart(4, "0")}-W${String(week).padStart(2, "0")}`;
|
|
61
|
+
}
|
|
62
|
+
/** 一年有几个 ISO 周(52 或 53):12 月 28 日总在最后一周里 */
|
|
63
|
+
var isoWeeksInYear = (year) => isoWeekOf(new CalendarDate(year, 12, 28)).week;
|
|
64
|
+
/** 周一是 1、周日是 7(与地区无关) */
|
|
65
|
+
function isoWeekday(date) {
|
|
66
|
+
return date.toDate("UTC").getUTCDay() || 7;
|
|
67
|
+
}
|
|
68
|
+
/** '2026-Q4'、'2026-W43' → 这一段的第一天与最后一天;不是季度、周的形式时 null */
|
|
69
|
+
function parsePeriod(iso) {
|
|
70
|
+
const quarter = QUARTER_PATTERN.exec(iso);
|
|
71
|
+
if (quarter) {
|
|
72
|
+
const start = new CalendarDate(Number(quarter[1]), Number(quarter[2]) * 3 - 2, 1);
|
|
73
|
+
return {
|
|
74
|
+
start,
|
|
75
|
+
end: endOfMonth(start.add({ months: 2 }))
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const week = WEEK_PATTERN.exec(iso);
|
|
79
|
+
if (week) {
|
|
80
|
+
const january4 = new CalendarDate(Number(week[1]), 1, 4);
|
|
81
|
+
const start = january4.add({ days: 1 - isoWeekday(january4) + (Number(week[2]) - 1) * 7 });
|
|
82
|
+
return {
|
|
83
|
+
start,
|
|
84
|
+
end: start.add({ days: 6 })
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
/** 'YYYY-MM-DDTHH:mm[:ss]' → CalendarDateTime(公历);空值或格式不对时为 null */
|
|
90
|
+
function parseIsoDateTime(value) {
|
|
91
|
+
return tryParse(value, parseDateTime);
|
|
92
|
+
}
|
|
93
|
+
/** 日期 → 'YYYY-MM-DD';不是公历的日期先换回公历 */
|
|
94
|
+
function toIsoDate(date) {
|
|
95
|
+
const gregorian = toCalendar(date, GREGORIAN);
|
|
96
|
+
return new CalendarDate(gregorian.year, gregorian.month, gregorian.day).toString();
|
|
97
|
+
}
|
|
98
|
+
/** 时间 → 'HH:mm';withSeconds 时 'HH:mm:ss'(同原生 input type="time") */
|
|
99
|
+
function toIsoTime(time, withSeconds = false) {
|
|
100
|
+
const text = new Time(time.hour, time.minute, withSeconds ? time.second : 0).toString();
|
|
101
|
+
return withSeconds ? text : text.slice(0, 5);
|
|
102
|
+
}
|
|
103
|
+
/** 日期时间 → 'YYYY-MM-DDTHH:mm';withSeconds 时带秒(同原生 input type="datetime-local") */
|
|
104
|
+
function toIsoDateTime(value, withSeconds = false) {
|
|
105
|
+
const gregorian = toCalendar(value, GREGORIAN);
|
|
106
|
+
return `${toIsoDate(gregorian)}T${toIsoTime(new Time(gregorian.hour, gregorian.minute, gregorian.second), withSeconds)}`;
|
|
107
|
+
}
|
|
108
|
+
/** 今天的 ISO 日期,按时区(不写时取浏览器的):`todayIso()` → '2026-10-20' */
|
|
109
|
+
function todayIso(timeZone = getLocalTimeZone()) {
|
|
110
|
+
return today(timeZone).toString();
|
|
111
|
+
}
|
|
112
|
+
/** ISO 日期加减(月末自动夹到下个月的最后一天):`shiftIsoDate('2026-01-31', { months: 1 })` → '2026-02-28' */
|
|
113
|
+
function shiftIsoDate(value, duration) {
|
|
114
|
+
const date = parseIsoDate(value);
|
|
115
|
+
if (!date) throw new RangeError(`不是 ISO 日期:${value}`);
|
|
116
|
+
return date.add(duration).toString();
|
|
117
|
+
}
|
|
118
|
+
/** 从 a 到 b 相隔几天(b 在后为正):`daysBetween('2026-10-20', '2026-10-23')` → 3 */
|
|
119
|
+
function daysBetween(a, b) {
|
|
120
|
+
const start = parseIsoDate(a);
|
|
121
|
+
const end = parseIsoDate(b);
|
|
122
|
+
if (!start || !end) throw new RangeError(`不是 ISO 日期:${start ? b : a}`);
|
|
123
|
+
return end.compare(start);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* ISO 日期是星期几:0 周日 … 6 周六(同 Date#getDay)。直接按日期算,不受时区影响;
|
|
127
|
+
* `new Date('2026-10-20').getDay()` 在 UTC 以西的时区会算成前一天
|
|
128
|
+
*/
|
|
129
|
+
function isoDayOfWeek(value) {
|
|
130
|
+
const date = parseIsoDate(value);
|
|
131
|
+
if (!date) throw new RangeError(`不是 ISO 日期:${value}`);
|
|
132
|
+
return getDayOfWeek(date, "en-US");
|
|
133
|
+
}
|
|
134
|
+
var GREGORIAN = new GregorianCalendar();
|
|
135
|
+
/**
|
|
136
|
+
* 语言里的日历标识 → 运算用的日历;@internationalized/date 不支持的(如农历 'chinese')退回公历,
|
|
137
|
+
* 月份网格仍按公历排,显示的文字照常由 Intl 按该日历格式化
|
|
138
|
+
*/
|
|
139
|
+
function calendarOf(identifier) {
|
|
140
|
+
if (identifier === "gregory") return GREGORIAN;
|
|
141
|
+
try {
|
|
142
|
+
return createCalendar(identifier);
|
|
143
|
+
} catch {
|
|
144
|
+
return GREGORIAN;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
var DAYS_OF_WEEK = [
|
|
148
|
+
"sun",
|
|
149
|
+
"mon",
|
|
150
|
+
"tue",
|
|
151
|
+
"wed",
|
|
152
|
+
"thu",
|
|
153
|
+
"fri",
|
|
154
|
+
"sat"
|
|
155
|
+
];
|
|
156
|
+
/** 语言配置的一周第一天(0 表示周日)→ @internationalized/date 的写法;不写时按地区惯例 */
|
|
157
|
+
function toDayOfWeek(firstDayOfWeek) {
|
|
158
|
+
return firstDayOfWeek == null ? void 0 : DAYS_OF_WEEK[(firstDayOfWeek % 7 + 7) % 7];
|
|
159
|
+
}
|
|
160
|
+
/** 一个月的日期网格:按周分行,首尾用上个月、下个月的日期补齐(同 React Aria 的 getDatesInWeek) */
|
|
161
|
+
function monthGrid(month, { locale, firstDayOfWeek, fixedWeeks = true }) {
|
|
162
|
+
const first = startOfWeek(startOfMonth(month), locale, toDayOfWeek(firstDayOfWeek));
|
|
163
|
+
const last = endOfMonth(month);
|
|
164
|
+
const weeks = [];
|
|
165
|
+
for (let start = first; weeks.length < 6; start = start.add({ weeks: 1 })) {
|
|
166
|
+
if (!fixedWeeks && start.compare(last) > 0) break;
|
|
167
|
+
weeks.push(Array.from({ length: 7 }, (_, index) => start.add({ days: index })));
|
|
168
|
+
}
|
|
169
|
+
return weeks;
|
|
170
|
+
}
|
|
171
|
+
/** 按一周的排法列出七天的星期名(取自 Intl),从一周第一天开始 */
|
|
172
|
+
function weekdayNames(locale, { firstDayOfWeek, format = "short" } = {}) {
|
|
173
|
+
const formatter = cachedFormatter(locale, {
|
|
174
|
+
weekday: format,
|
|
175
|
+
timeZone: "UTC"
|
|
176
|
+
});
|
|
177
|
+
const start = startOfWeek(new CalendarDate(2024, 1, 10), locale, toDayOfWeek(firstDayOfWeek));
|
|
178
|
+
return Array.from({ length: 7 }, (_, index) => formatter.format(start.add({ days: index }).toDate("UTC")));
|
|
179
|
+
}
|
|
180
|
+
/** 一年的各月(每月 1 日),按日期所在的日历系统(个别日历一年有 13 个月) */
|
|
181
|
+
function monthsOfYear(date) {
|
|
182
|
+
const first = date.set({
|
|
183
|
+
month: 1,
|
|
184
|
+
day: 1
|
|
185
|
+
});
|
|
186
|
+
return Array.from({ length: date.calendar.getMonthsInYear(first) }, (_, index) => first.add({ months: index }));
|
|
187
|
+
}
|
|
188
|
+
/** 年份视图的一页:所在的十年,前后各补一年(共 12 年,排成 4 × 3;同 Ant Design 的年份面板) */
|
|
189
|
+
function yearsOfDecade(date) {
|
|
190
|
+
const start = date.set({
|
|
191
|
+
year: Math.floor(date.year / 10) * 10,
|
|
192
|
+
month: 1,
|
|
193
|
+
day: 1
|
|
194
|
+
});
|
|
195
|
+
return Array.from({ length: 12 }, (_, index) => start.add({ years: index - 1 }));
|
|
196
|
+
}
|
|
197
|
+
/** 是不是十年之外、补上的那两年 */
|
|
198
|
+
var isOutsideDecade = (year, page) => Math.floor(year.year / 10) !== Math.floor(page.year / 10);
|
|
199
|
+
/**
|
|
200
|
+
* 一年里的第几周:一周从周一开始时按 ISO 8601(含 1 月 4 日的那周是第 1 周),
|
|
201
|
+
* 其他(周日、周六开始)按含 1 月 1 日的那周是第 1 周(美国、日本的惯例)
|
|
202
|
+
*/
|
|
203
|
+
function weekOfYear(date, options) {
|
|
204
|
+
const gregorian = toCalendar(date, GREGORIAN);
|
|
205
|
+
const monday = getDayOfWeek(new CalendarDate(2024, 1, 1), options.locale, toDayOfWeek(options.firstDayOfWeek)) === 0;
|
|
206
|
+
const weekStart = startOfWeek(gregorian, options.locale, toDayOfWeek(options.firstDayOfWeek));
|
|
207
|
+
const anchor = weekStart.add({ days: monday ? 3 : 6 });
|
|
208
|
+
const firstAnchor = new CalendarDate(anchor.year, 1, monday ? 4 : 1);
|
|
209
|
+
const firstWeek = startOfWeek(firstAnchor, options.locale, toDayOfWeek(options.firstDayOfWeek));
|
|
210
|
+
return Math.round(weekStart.compare(firstWeek) / 7) + 1;
|
|
211
|
+
}
|
|
212
|
+
/** 截到粒度:月取 1 日,年取 1 月 1 日 */
|
|
213
|
+
function truncateDate(date, unit) {
|
|
214
|
+
if (unit === "day") return date;
|
|
215
|
+
return unit === "month" ? date.set({ day: 1 }) : date.set({
|
|
216
|
+
month: 1,
|
|
217
|
+
day: 1
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
/** 按粒度比较:小于 0 表示 a 在前;跨日历系统时按同一天比较 */
|
|
221
|
+
function compareDates(a, b, unit = "day") {
|
|
222
|
+
const other = toCalendar(b, a.calendar);
|
|
223
|
+
return truncateDate(a, unit).compare(truncateDate(other, unit));
|
|
224
|
+
}
|
|
225
|
+
/** 是不是同一天 / 同一月 / 同一年;任一方为空时为 false */
|
|
226
|
+
function isSameDate(a, b, unit = "day") {
|
|
227
|
+
return a != null && b != null && compareDates(a, b, unit) === 0;
|
|
228
|
+
}
|
|
229
|
+
/** 在 min–max 之外(按粒度:月份视图里只要这个月有一天可选就不算在外面) */
|
|
230
|
+
function isOutOfRange(date, { min, max }, unit = "day") {
|
|
231
|
+
return min != null && compareDates(date, min, unit) < 0 || max != null && compareDates(date, max, unit) > 0;
|
|
232
|
+
}
|
|
233
|
+
/** 不能选:在范围外,或是不可选的日期(只在天的粒度上判断 isUnavailable) */
|
|
234
|
+
function isDateDisabled(date, limits, unit = "day") {
|
|
235
|
+
return isOutOfRange(date, limits, unit) || unit === "day" && (limits.isUnavailable?.(date) ?? false);
|
|
236
|
+
}
|
|
237
|
+
/** 把日期夹到 min–max 之间 */
|
|
238
|
+
function clampDate(date, { min, max }) {
|
|
239
|
+
if (min != null && date.compare(toCalendar(min, date.calendar)) < 0) return toCalendar(min, date.calendar);
|
|
240
|
+
if (max != null && date.compare(toCalendar(max, date.calendar)) > 0) return toCalendar(max, date.calendar);
|
|
241
|
+
return date;
|
|
242
|
+
}
|
|
243
|
+
/** 两个日期排成区间:先的在前 */
|
|
244
|
+
function orderedRange(a, b) {
|
|
245
|
+
return a.compare(b) <= 0 ? {
|
|
246
|
+
start: a,
|
|
247
|
+
end: b
|
|
248
|
+
} : {
|
|
249
|
+
start: b,
|
|
250
|
+
end: a
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
/** 日期是否在区间里(含两端;按粒度) */
|
|
254
|
+
function isInRange(date, range, unit = "day") {
|
|
255
|
+
return range != null && compareDates(date, range.start, unit) >= 0 && compareDates(date, range.end, unit) <= 0;
|
|
256
|
+
}
|
|
257
|
+
/** 区间一共几天(含两端) */
|
|
258
|
+
function rangeDays({ start, end }) {
|
|
259
|
+
return end.compare(start) + 1;
|
|
260
|
+
}
|
|
261
|
+
/** 区间里有没有不可选的日期:酒店连住时中间不能有订满的一天(React Aria 的 allowsNonContiguousRanges 为 false 时) */
|
|
262
|
+
function rangeHasUnavailable({ start, end }, isUnavailable) {
|
|
263
|
+
if (!isUnavailable) return false;
|
|
264
|
+
for (let date = start; date.compare(end) <= 0; date = date.add({ days: 1 })) if (isUnavailable(date)) return true;
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
/** ISO 字符串的区间 → CalendarDate 的区间;任一端解析不了时为 null */
|
|
268
|
+
function parseIsoRange(range) {
|
|
269
|
+
const start = parseIsoDate(range?.start);
|
|
270
|
+
const end = parseIsoDate(range?.end);
|
|
271
|
+
return start && end ? orderedRange(start, end) : null;
|
|
272
|
+
}
|
|
273
|
+
/** CalendarDate 的区间 → ISO 字符串的区间 */
|
|
274
|
+
function toIsoRange(range) {
|
|
275
|
+
return {
|
|
276
|
+
start: toIsoDate(range.start),
|
|
277
|
+
end: toIsoDate(range.end)
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
/** 按今天算出快捷区间 */
|
|
281
|
+
function presetRange(preset, today, week) {
|
|
282
|
+
switch (preset) {
|
|
283
|
+
case "today": return {
|
|
284
|
+
start: today,
|
|
285
|
+
end: today
|
|
286
|
+
};
|
|
287
|
+
case "yesterday": {
|
|
288
|
+
const day = today.subtract({ days: 1 });
|
|
289
|
+
return {
|
|
290
|
+
start: day,
|
|
291
|
+
end: day
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
case "last7Days": return {
|
|
295
|
+
start: today.subtract({ days: 6 }),
|
|
296
|
+
end: today
|
|
297
|
+
};
|
|
298
|
+
case "last30Days": return {
|
|
299
|
+
start: today.subtract({ days: 29 }),
|
|
300
|
+
end: today
|
|
301
|
+
};
|
|
302
|
+
case "thisWeek": {
|
|
303
|
+
const start = startOfWeek(today, week.locale, toDayOfWeek(week.firstDayOfWeek));
|
|
304
|
+
return {
|
|
305
|
+
start,
|
|
306
|
+
end: start.add({ days: 6 })
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
case "thisMonth": return {
|
|
310
|
+
start: startOfMonth(today),
|
|
311
|
+
end: endOfMonth(today)
|
|
312
|
+
};
|
|
313
|
+
case "lastMonth": {
|
|
314
|
+
const month = startOfMonth(today).subtract({ months: 1 });
|
|
315
|
+
return {
|
|
316
|
+
start: month,
|
|
317
|
+
end: endOfMonth(month)
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
case "thisYear": return {
|
|
321
|
+
start: today.set({
|
|
322
|
+
month: 1,
|
|
323
|
+
day: 1
|
|
324
|
+
}),
|
|
325
|
+
end: today.set({
|
|
326
|
+
month: 12,
|
|
327
|
+
day: 31
|
|
328
|
+
})
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
/** 快捷区间的 ISO 值,按今天(时区,不写时取浏览器的)与一周的排法:`presetIsoRange('last7Days', { locale: 'zh-CN' })` */
|
|
333
|
+
function presetIsoRange(preset, week, timeZone = getLocalTimeZone()) {
|
|
334
|
+
return toIsoRange(presetRange(preset, today(timeZone), week));
|
|
335
|
+
}
|
|
336
|
+
/** 带时区或 UTC 标记的 ISO 字符串('2026-10-20T14:30:00Z'、'…+08:00'):本身就是一个时刻 */
|
|
337
|
+
var ABSOLUTE_ISO = /(?:[zZ]|[+-]\d\d:?\d\d)$/;
|
|
338
|
+
/**
|
|
339
|
+
* 日期值 → 时刻(毫秒时间戳):Date 与带时区的值照原样;不带时区的('2026-10-20T14:30'、CalendarDateTime)
|
|
340
|
+
* 按 timeZone 的墙上时间算。格式不对时 NaN
|
|
341
|
+
*/
|
|
342
|
+
function toInstant(value, timeZone = getLocalTimeZone()) {
|
|
343
|
+
if (value instanceof Date) return value.getTime();
|
|
344
|
+
if (typeof value !== "string") return ("timeZone" in value ? value.toDate() : value.toDate(timeZone)).getTime();
|
|
345
|
+
if (ABSOLUTE_ISO.test(value)) return Date.parse(value);
|
|
346
|
+
const parsed = parseIsoDateTime(value) ?? parseIsoDate(value);
|
|
347
|
+
return parsed ? parsed.toDate(timeZone).getTime() : NaN;
|
|
348
|
+
}
|
|
349
|
+
/** 相对时间用的单位:多久以内用这个单位(秒),参考 moment.js 的取整阈值 */
|
|
350
|
+
var RELATIVE_UNITS = [
|
|
351
|
+
[
|
|
352
|
+
"second",
|
|
353
|
+
1,
|
|
354
|
+
45
|
|
355
|
+
],
|
|
356
|
+
[
|
|
357
|
+
"minute",
|
|
358
|
+
60,
|
|
359
|
+
2700
|
|
360
|
+
],
|
|
361
|
+
[
|
|
362
|
+
"hour",
|
|
363
|
+
3600,
|
|
364
|
+
79200
|
|
365
|
+
],
|
|
366
|
+
[
|
|
367
|
+
"day",
|
|
368
|
+
86400,
|
|
369
|
+
2246400
|
|
370
|
+
],
|
|
371
|
+
[
|
|
372
|
+
"month",
|
|
373
|
+
2592e3,
|
|
374
|
+
27648e3
|
|
375
|
+
],
|
|
376
|
+
[
|
|
377
|
+
"year",
|
|
378
|
+
31536e3,
|
|
379
|
+
Infinity
|
|
380
|
+
]
|
|
381
|
+
];
|
|
382
|
+
/** 相差的毫秒数 → 相对时间的数值与单位:`relativeUnit(-180_000)` → `{ value: -3, unit: 'minute' }` */
|
|
383
|
+
function relativeUnit(diff) {
|
|
384
|
+
const seconds = diff / 1e3;
|
|
385
|
+
const [unit, size] = RELATIVE_UNITS.find(([, , below]) => Math.abs(seconds) < below);
|
|
386
|
+
return {
|
|
387
|
+
value: Math.round(seconds / size) || 0,
|
|
388
|
+
unit
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
function tryParse(value, parse) {
|
|
392
|
+
if (!value) return null;
|
|
393
|
+
try {
|
|
394
|
+
return parse(value);
|
|
395
|
+
} catch {
|
|
396
|
+
return null;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
var formatters = /* @__PURE__ */ new Map();
|
|
400
|
+
function cachedFormatter(locale, options) {
|
|
401
|
+
const key = `${locale}|${JSON.stringify(options)}`;
|
|
402
|
+
let formatter = formatters.get(key);
|
|
403
|
+
if (!formatter) formatters.set(key, formatter = new DateFormatter(locale, options));
|
|
404
|
+
return formatter;
|
|
405
|
+
}
|
|
406
|
+
//#endregion
|
|
407
|
+
export { calendarOf, clampDate, compareDates, daysBetween, fullIsoDay, isDateDisabled, isInRange, isOutOfRange, isOutsideDecade, isSameDate, isoDayOfWeek, isoWeekOf, isoWeeksInYear, lastIsoDay, monthGrid, monthsOfYear, orderedRange, parseIsoDate, parseIsoDateTime, parseIsoRange, parseIsoTime, presetIsoRange, presetRange, rangeDays, rangeHasUnavailable, relativeUnit, shiftIsoDate, toDayOfWeek, toInstant, toIsoDate, toIsoDateTime, toIsoQuarter, toIsoRange, toIsoTime, toIsoWeek, todayIso, truncateDate, weekOfYear, weekdayNames, yearsOfDecade };
|
|
408
|
+
|
|
409
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","names":[],"sources":["../../../src/utils/data/date.ts"],"sourcesContent":["/**\n * 日期运算(不含界面):ISO 字符串互转、月份网格、星期名与月份名、可选范围、区间、周数、快捷区间。\n * Calendar、DateField、各种日期选择器共用;运算交给 @internationalized/date(时区、地区的周起始日、非公历)。\n *\n * 组件对外的值是 ISO 8601 字符串('2026-10-20'、'14:30'、'2026-10-20T14:30'),与原生 input、URL 参数、\n * zod 的 z.iso.date() 一致;组件内部换成 CalendarDate 等对象运算。月份名、星期名一律取自 Intl。\n * 出错的约定:parseXxx 解析不了时返回 null(输入框里的半截内容是常态);shiftIsoDate、daysBetween 这类运算\n * 要求合法的 ISO 字符串,不合法时抛 RangeError 并带上原值(多半是调用方的数据错了,不该悄悄算出别的日子)。\n *\n * monthGrid(new CalendarDate(2026, 10, 1), { locale: 'zh-CN' }) → 6 行 × 7 天,补齐上下月\n * weekdayNames('en-US', { format: 'short' }) → ['Sun', 'Mon', …]\n */\nimport {\n CalendarDate,\n CalendarDateTime,\n createCalendar,\n DateFormatter,\n endOfMonth,\n getDayOfWeek,\n getLocalTimeZone,\n GregorianCalendar,\n parseDate,\n parseDateTime,\n parseTime,\n startOfMonth,\n startOfWeek,\n Time,\n toCalendar,\n today,\n type Calendar,\n type CalendarIdentifier,\n type DateDuration,\n type DateValue,\n type DayOfWeek,\n} from '@internationalized/date';\n\n// ───────── ISO 字符串 ─────────\n\n/** 'YYYY-MM-DD' → CalendarDate(公历);空值或格式不对时为 null */\nexport function parseIsoDate(value: string | null | undefined): CalendarDate | null {\n return tryParse(value, parseDate);\n}\n\n/** 'HH:mm' 或 'HH:mm:ss' → Time;空值或格式不对时为 null */\nexport function parseIsoTime(value: string | null | undefined): Time | null {\n return tryParse(value, parseTime);\n}\n\n/**\n * 补成完整的 ISO 日期(这一段的第一天):'2026' 与 '2026-10' 补成 1 日,'2026-Q4' 是 10 月 1 日,\n * '2026-W43' 是那一周的周一,日期时间取日期部分(DateField、各种日期选择器的粒度)\n */\nexport function fullIsoDay(iso: string): string {\n const period = parsePeriod(iso);\n if (period) return period.start.toString();\n return iso.length === 4 ? `${iso}-01-01` : iso.length === 7 ? `${iso}-01` : iso.slice(0, 10);\n}\n\n/** 这一段的最后一天:'2026' 是 12 月 31 日,'2026-10' 是 31 日,'2026-Q4' 是 12 月 31 日,'2026-W43' 是那周的周日 */\nexport function lastIsoDay(iso: string): string {\n const period = parsePeriod(iso);\n if (period) return period.end.toString();\n if (iso.length === 4) return `${iso}-12-31`;\n if (iso.length === 7) return endOfMonth(parseDate(`${iso}-01`)).toString();\n return iso.slice(0, 10);\n}\n\n// ───────── 季度与 ISO 周 ─────────\n\nconst QUARTER_PATTERN = /^(\\d{4})-Q([1-4])$/;\nconst WEEK_PATTERN = /^(\\d{4})-W(\\d{2})$/;\n\n/** 日期所在的季度:'2026-Q4' */\nexport function toIsoQuarter(date: DateValue): string {\n const gregorian = toCalendar(date, GREGORIAN);\n return `${String(gregorian.year).padStart(4, '0')}-Q${Math.ceil(gregorian.month / 3)}`;\n}\n\n/** ISO 8601 的周(周一开始,含 1 月 4 日的那周是第 1 周,跨年的周归周四所在的年):所属的年与第几周 */\nexport function isoWeekOf(date: DateValue): { year: number; week: number } {\n const gregorian = toCalendar(date, GREGORIAN);\n const day = new CalendarDate(gregorian.year, gregorian.month, gregorian.day);\n const thursday = day.add({ days: 4 - isoWeekday(day) });\n return {\n year: thursday.year,\n week: Math.floor(thursday.compare(new CalendarDate(thursday.year, 1, 1)) / 7) + 1,\n };\n}\n\n/** 日期所在的 ISO 周:'2026-W43'(同原生 input type=\"week\") */\nexport function toIsoWeek(date: DateValue): string {\n const { year, week } = isoWeekOf(date);\n return `${String(year).padStart(4, '0')}-W${String(week).padStart(2, '0')}`;\n}\n\n/** 一年有几个 ISO 周(52 或 53):12 月 28 日总在最后一周里 */\nexport const isoWeeksInYear = (year: number): number =>\n isoWeekOf(new CalendarDate(year, 12, 28)).week;\n\n/** 周一是 1、周日是 7(与地区无关) */\nfunction isoWeekday(date: CalendarDate): number {\n return date.toDate('UTC').getUTCDay() || 7;\n}\n\n/** '2026-Q4'、'2026-W43' → 这一段的第一天与最后一天;不是季度、周的形式时 null */\nfunction parsePeriod(iso: string): { start: CalendarDate; end: CalendarDate } | null {\n const quarter = QUARTER_PATTERN.exec(iso);\n if (quarter) {\n const start = new CalendarDate(Number(quarter[1]), Number(quarter[2]) * 3 - 2, 1);\n return { start, end: endOfMonth(start.add({ months: 2 })) };\n }\n const week = WEEK_PATTERN.exec(iso);\n if (week) {\n const january4 = new CalendarDate(Number(week[1]), 1, 4);\n const start = january4.add({ days: 1 - isoWeekday(january4) + (Number(week[2]) - 1) * 7 });\n return { start, end: start.add({ days: 6 }) };\n }\n return null;\n}\n\n/** 'YYYY-MM-DDTHH:mm[:ss]' → CalendarDateTime(公历);空值或格式不对时为 null */\nexport function parseIsoDateTime(value: string | null | undefined): CalendarDateTime | null {\n return tryParse(value, parseDateTime);\n}\n\n/** 日期 → 'YYYY-MM-DD';不是公历的日期先换回公历 */\nexport function toIsoDate(date: DateValue): string {\n const gregorian = toCalendar(date, GREGORIAN);\n return new CalendarDate(gregorian.year, gregorian.month, gregorian.day).toString();\n}\n\n/** 时间 → 'HH:mm';withSeconds 时 'HH:mm:ss'(同原生 input type=\"time\") */\nexport function toIsoTime(time: Time, withSeconds = false): string {\n const text = new Time(time.hour, time.minute, withSeconds ? time.second : 0).toString();\n return withSeconds ? text : text.slice(0, 5);\n}\n\n/** 日期时间 → 'YYYY-MM-DDTHH:mm';withSeconds 时带秒(同原生 input type=\"datetime-local\") */\nexport function toIsoDateTime(value: CalendarDateTime, withSeconds = false): string {\n const gregorian = toCalendar(value, GREGORIAN);\n return `${toIsoDate(gregorian)}T${toIsoTime(new Time(gregorian.hour, gregorian.minute, gregorian.second), withSeconds)}`;\n}\n\n/** 今天的 ISO 日期,按时区(不写时取浏览器的):`todayIso()` → '2026-10-20' */\nexport function todayIso(timeZone = getLocalTimeZone()): string {\n return today(timeZone).toString();\n}\n\n/** ISO 日期加减(月末自动夹到下个月的最后一天):`shiftIsoDate('2026-01-31', { months: 1 })` → '2026-02-28' */\nexport function shiftIsoDate(value: string, duration: DateDuration): string {\n const date = parseIsoDate(value);\n if (!date) throw new RangeError(`不是 ISO 日期:${value}`);\n return date.add(duration).toString();\n}\n\n/** 从 a 到 b 相隔几天(b 在后为正):`daysBetween('2026-10-20', '2026-10-23')` → 3 */\nexport function daysBetween(a: string, b: string): number {\n const start = parseIsoDate(a);\n const end = parseIsoDate(b);\n if (!start || !end) throw new RangeError(`不是 ISO 日期:${start ? b : a}`);\n return end.compare(start);\n}\n\n/**\n * ISO 日期是星期几:0 周日 … 6 周六(同 Date#getDay)。直接按日期算,不受时区影响;\n * `new Date('2026-10-20').getDay()` 在 UTC 以西的时区会算成前一天\n */\nexport function isoDayOfWeek(value: string): number {\n const date = parseIsoDate(value);\n if (!date) throw new RangeError(`不是 ISO 日期:${value}`);\n return getDayOfWeek(date, 'en-US');\n}\n\n// ───────── 日历系统与周 ─────────\n\nconst GREGORIAN = new GregorianCalendar();\n\n/**\n * 语言里的日历标识 → 运算用的日历;@internationalized/date 不支持的(如农历 'chinese')退回公历,\n * 月份网格仍按公历排,显示的文字照常由 Intl 按该日历格式化\n */\nexport function calendarOf(identifier: string): Calendar {\n if (identifier === 'gregory') return GREGORIAN;\n try {\n return createCalendar(identifier as CalendarIdentifier);\n } catch {\n return GREGORIAN;\n }\n}\n\nconst DAYS_OF_WEEK: readonly DayOfWeek[] = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n\n/** 语言配置的一周第一天(0 表示周日)→ @internationalized/date 的写法;不写时按地区惯例 */\nexport function toDayOfWeek(firstDayOfWeek: number | undefined): DayOfWeek | undefined {\n return firstDayOfWeek == null ? undefined : DAYS_OF_WEEK[((firstDayOfWeek % 7) + 7) % 7];\n}\n\n/** 一周的排法:语言与一周第一天(0 表示周日,不写时按地区惯例) */\nexport interface WeekOptions {\n /** BCP 47 语言标签 */\n locale: string;\n /** 一周的第一天,0 表示周日;不写时按地区惯例(zh-CN 周一,en-US 周日) */\n firstDayOfWeek?: number;\n}\n\n/** monthGrid 的选项 */\nexport interface MonthGridOptions extends WeekOptions {\n /** 总是 6 行:几个月并排、或翻页时高度不跳,默认 true */\n fixedWeeks?: boolean;\n}\n\n/** 一个月的日期网格:按周分行,首尾用上个月、下个月的日期补齐(同 React Aria 的 getDatesInWeek) */\nexport function monthGrid(\n month: CalendarDate,\n { locale, firstDayOfWeek, fixedWeeks = true }: MonthGridOptions,\n): CalendarDate[][] {\n const first = startOfWeek(startOfMonth(month), locale, toDayOfWeek(firstDayOfWeek));\n const last = endOfMonth(month);\n const weeks: CalendarDate[][] = [];\n for (let start = first; weeks.length < 6; start = start.add({ weeks: 1 })) {\n if (!fixedWeeks && start.compare(last) > 0) break;\n weeks.push(Array.from({ length: 7 }, (_, index) => start.add({ days: index })));\n }\n return weeks;\n}\n\n/** 星期名的长短 */\nexport interface WeekdayFormats {\n /** 最短:一、二 / S、M */\n narrow: unknown;\n /** 简写:周一 / Mon */\n short: unknown;\n /** 全称:星期一 / Monday */\n long: unknown;\n}\n\n/** 按一周的排法列出七天的星期名(取自 Intl),从一周第一天开始 */\nexport function weekdayNames(\n locale: string,\n {\n firstDayOfWeek,\n format = 'short',\n }: { firstDayOfWeek?: number; format?: keyof WeekdayFormats } = {},\n): string[] {\n const formatter = cachedFormatter(locale, { weekday: format, timeZone: 'UTC' });\n // 任取一周:从这周的第一天起连续七天\n const start = startOfWeek(new CalendarDate(2024, 1, 10), locale, toDayOfWeek(firstDayOfWeek));\n return Array.from({ length: 7 }, (_, index) =>\n formatter.format(start.add({ days: index }).toDate('UTC')),\n );\n}\n\n/** 一年的各月(每月 1 日),按日期所在的日历系统(个别日历一年有 13 个月) */\nexport function monthsOfYear(date: CalendarDate): CalendarDate[] {\n const first = date.set({ month: 1, day: 1 });\n return Array.from({ length: date.calendar.getMonthsInYear(first) }, (_, index) =>\n first.add({ months: index }),\n );\n}\n\n/** 年份视图的一页:所在的十年,前后各补一年(共 12 年,排成 4 × 3;同 Ant Design 的年份面板) */\nexport function yearsOfDecade(date: CalendarDate): CalendarDate[] {\n const start = date.set({ year: Math.floor(date.year / 10) * 10, month: 1, day: 1 });\n return Array.from({ length: 12 }, (_, index) => start.add({ years: index - 1 }));\n}\n\n/** 是不是十年之外、补上的那两年 */\nexport const isOutsideDecade = (year: CalendarDate, page: CalendarDate) =>\n Math.floor(year.year / 10) !== Math.floor(page.year / 10);\n\n/**\n * 一年里的第几周:一周从周一开始时按 ISO 8601(含 1 月 4 日的那周是第 1 周),\n * 其他(周日、周六开始)按含 1 月 1 日的那周是第 1 周(美国、日本的惯例)\n */\nexport function weekOfYear(date: CalendarDate, options: WeekOptions): number {\n const gregorian = toCalendar(date, GREGORIAN);\n const monday =\n getDayOfWeek(\n new CalendarDate(2024, 1, 1),\n options.locale,\n toDayOfWeek(options.firstDayOfWeek),\n ) === 0;\n const weekStart = startOfWeek(gregorian, options.locale, toDayOfWeek(options.firstDayOfWeek));\n // 一周归属的年份:ISO 按这周的周四,其他按这周的最后一天(含 1 月 1 日的周就算新年的第 1 周)\n const anchor = weekStart.add({ days: monday ? 3 : 6 });\n const firstAnchor = new CalendarDate(anchor.year, 1, monday ? 4 : 1);\n const firstWeek = startOfWeek(firstAnchor, options.locale, toDayOfWeek(options.firstDayOfWeek));\n return Math.round(weekStart.compare(firstWeek) / 7) + 1;\n}\n\n// ───────── 比较、范围与不可选 ─────────\n\n/** 比较的粒度:日历的三种视图 */\nexport interface DateUnits {\n /** 天 */\n day: unknown;\n /** 月 */\n month: unknown;\n /** 年 */\n year: unknown;\n}\n\n/** 日期的粒度 */\nexport type DateUnit = keyof DateUnits;\n\n/** 截到粒度:月取 1 日,年取 1 月 1 日 */\nexport function truncateDate(date: CalendarDate, unit: DateUnit): CalendarDate {\n if (unit === 'day') return date;\n return unit === 'month' ? date.set({ day: 1 }) : date.set({ month: 1, day: 1 });\n}\n\n/** 按粒度比较:小于 0 表示 a 在前;跨日历系统时按同一天比较 */\nexport function compareDates(a: CalendarDate, b: CalendarDate, unit: DateUnit = 'day'): number {\n const other = toCalendar(b, a.calendar);\n return truncateDate(a, unit).compare(truncateDate(other, unit));\n}\n\n/** 是不是同一天 / 同一月 / 同一年;任一方为空时为 false */\nexport function isSameDate(\n a: CalendarDate | null | undefined,\n b: CalendarDate | null | undefined,\n unit: DateUnit = 'day',\n): boolean {\n return a != null && b != null && compareDates(a, b, unit) === 0;\n}\n\n/** 可选范围与不可选的日期:Calendar、DatePicker、DateField 共用 */\nexport interface DateLimits {\n /** 最早可选的日期 */\n min?: CalendarDate | null;\n /** 最晚可选的日期 */\n max?: CalendarDate | null;\n /** 不可选的日期(已订满、节假日):仍能用方向键经过,读屏能听到,不能选 */\n isUnavailable?: (date: CalendarDate) => boolean;\n}\n\n/** 在 min–max 之外(按粒度:月份视图里只要这个月有一天可选就不算在外面) */\nexport function isOutOfRange(\n date: CalendarDate,\n { min, max }: DateLimits,\n unit: DateUnit = 'day',\n): boolean {\n return (\n (min != null && compareDates(date, min, unit) < 0) ||\n (max != null && compareDates(date, max, unit) > 0)\n );\n}\n\n/** 不能选:在范围外,或是不可选的日期(只在天的粒度上判断 isUnavailable) */\nexport function isDateDisabled(\n date: CalendarDate,\n limits: DateLimits,\n unit: DateUnit = 'day',\n): boolean {\n return (\n isOutOfRange(date, limits, unit) || (unit === 'day' && (limits.isUnavailable?.(date) ?? false))\n );\n}\n\n/** 把日期夹到 min–max 之间 */\nexport function clampDate(date: CalendarDate, { min, max }: DateLimits): CalendarDate {\n if (min != null && date.compare(toCalendar(min, date.calendar)) < 0)\n return toCalendar(min, date.calendar);\n if (max != null && date.compare(toCalendar(max, date.calendar)) > 0)\n return toCalendar(max, date.calendar);\n return date;\n}\n\n/** 日期区间:两端都包含 */\nexport interface DateRange<T = CalendarDate> {\n /** 开始(含) */\n start: T;\n /** 结束(含) */\n end: T;\n}\n\n/** 两个日期排成区间:先的在前 */\nexport function orderedRange(a: CalendarDate, b: CalendarDate): DateRange {\n return a.compare(b) <= 0 ? { start: a, end: b } : { start: b, end: a };\n}\n\n/** 日期是否在区间里(含两端;按粒度) */\nexport function isInRange(\n date: CalendarDate,\n range: DateRange | null | undefined,\n unit: DateUnit = 'day',\n): boolean {\n return (\n range != null &&\n compareDates(date, range.start, unit) >= 0 &&\n compareDates(date, range.end, unit) <= 0\n );\n}\n\n/** 区间一共几天(含两端) */\nexport function rangeDays({ start, end }: DateRange): number {\n return end.compare(start) + 1;\n}\n\n/** 区间里有没有不可选的日期:酒店连住时中间不能有订满的一天(React Aria 的 allowsNonContiguousRanges 为 false 时) */\nexport function rangeHasUnavailable(\n { start, end }: DateRange,\n isUnavailable: ((date: CalendarDate) => boolean) | undefined,\n): boolean {\n if (!isUnavailable) return false;\n for (let date = start; date.compare(end) <= 0; date = date.add({ days: 1 })) {\n if (isUnavailable(date)) return true;\n }\n return false;\n}\n\n/** ISO 字符串的区间 → CalendarDate 的区间;任一端解析不了时为 null */\nexport function parseIsoRange(range: DateRange<string> | null | undefined): DateRange | null {\n const start = parseIsoDate(range?.start);\n const end = parseIsoDate(range?.end);\n return start && end ? orderedRange(start, end) : null;\n}\n\n/** CalendarDate 的区间 → ISO 字符串的区间 */\nexport function toIsoRange(range: DateRange): DateRange<string> {\n return { start: toIsoDate(range.start), end: toIsoDate(range.end) };\n}\n\n// ───────── 快捷区间 ─────────\n\n/** 常用的快捷区间:报表、筛选里的“最近 7 天”“本月” */\nexport interface DateRangePresets {\n /** 今天 */\n today: unknown;\n /** 昨天 */\n yesterday: unknown;\n /** 最近 7 天(含今天) */\n last7Days: unknown;\n /** 最近 30 天(含今天) */\n last30Days: unknown;\n /** 本周(按语言的一周第一天) */\n thisWeek: unknown;\n /** 本月 */\n thisMonth: unknown;\n /** 上月 */\n lastMonth: unknown;\n /** 今年 */\n thisYear: unknown;\n}\n\n/** 快捷区间的名字 */\nexport type DateRangePreset = keyof DateRangePresets;\n\n/** 按今天算出快捷区间 */\nexport function presetRange(\n preset: DateRangePreset,\n today: CalendarDate,\n week: WeekOptions,\n): DateRange {\n switch (preset) {\n case 'today':\n return { start: today, end: today };\n case 'yesterday': {\n const day = today.subtract({ days: 1 });\n return { start: day, end: day };\n }\n case 'last7Days':\n return { start: today.subtract({ days: 6 }), end: today };\n case 'last30Days':\n return { start: today.subtract({ days: 29 }), end: today };\n case 'thisWeek': {\n const start = startOfWeek(today, week.locale, toDayOfWeek(week.firstDayOfWeek));\n return { start, end: start.add({ days: 6 }) };\n }\n case 'thisMonth':\n return { start: startOfMonth(today), end: endOfMonth(today) };\n case 'lastMonth': {\n const month = startOfMonth(today).subtract({ months: 1 });\n return { start: month, end: endOfMonth(month) };\n }\n case 'thisYear':\n return { start: today.set({ month: 1, day: 1 }), end: today.set({ month: 12, day: 31 }) };\n }\n}\n\n/** 快捷区间的 ISO 值,按今天(时区,不写时取浏览器的)与一周的排法:`presetIsoRange('last7Days', { locale: 'zh-CN' })` */\nexport function presetIsoRange(\n preset: DateRangePreset,\n week: WeekOptions,\n timeZone = getLocalTimeZone(),\n): DateRange<string> {\n return toIsoRange(presetRange(preset, today(timeZone), week));\n}\n\n// ───────── 时刻与相对时间 ─────────\n\n/** 带时区或 UTC 标记的 ISO 字符串('2026-10-20T14:30:00Z'、'…+08:00'):本身就是一个时刻 */\nconst ABSOLUTE_ISO = /(?:[zZ]|[+-]\\d\\d:?\\d\\d)$/;\n\n/**\n * 日期值 → 时刻(毫秒时间戳):Date 与带时区的值照原样;不带时区的('2026-10-20T14:30'、CalendarDateTime)\n * 按 timeZone 的墙上时间算。格式不对时 NaN\n */\nexport function toInstant(value: Date | DateValue | string, timeZone = getLocalTimeZone()): number {\n if (value instanceof Date) return value.getTime();\n if (typeof value !== 'string') {\n return ('timeZone' in value ? value.toDate() : value.toDate(timeZone)).getTime();\n }\n if (ABSOLUTE_ISO.test(value)) return Date.parse(value);\n const parsed = parseIsoDateTime(value) ?? parseIsoDate(value);\n return parsed ? parsed.toDate(timeZone).getTime() : Number.NaN;\n}\n\n/** 相对时间用的单位:多久以内用这个单位(秒),参考 moment.js 的取整阈值 */\nconst RELATIVE_UNITS: readonly [Intl.RelativeTimeFormatUnit, number, number][] = [\n // [单位, 一个单位多少秒, 小于多少秒时用它]\n ['second', 1, 45],\n ['minute', 60, 45 * 60],\n ['hour', 3600, 22 * 3600],\n ['day', 86_400, 26 * 86_400],\n ['month', 30 * 86_400, 320 * 86_400],\n ['year', 365 * 86_400, Infinity],\n];\n\n/** 相差的毫秒数 → 相对时间的数值与单位:`relativeUnit(-180_000)` → `{ value: -3, unit: 'minute' }` */\nexport function relativeUnit(diff: number): { value: number; unit: Intl.RelativeTimeFormatUnit } {\n const seconds = diff / 1000;\n const [unit, size] = RELATIVE_UNITS.find(([, , below]) => Math.abs(seconds) < below)!;\n // -0 换成 0:Intl 的 numeric: auto 才念“现在”\n return { value: Math.round(seconds / size) || 0, unit };\n}\n\n// ───────── 内部实现 ─────────\n\nfunction tryParse<T>(value: string | null | undefined, parse: (text: string) => T): T | null {\n if (!value) return null;\n try {\n return parse(value);\n } catch {\n return null;\n }\n}\n\nconst formatters = new Map<string, DateFormatter>();\n\nfunction cachedFormatter(locale: string, options: Intl.DateTimeFormatOptions): DateFormatter {\n const key = `${locale}|${JSON.stringify(options)}`;\n let formatter = formatters.get(key);\n if (!formatter) formatters.set(key, (formatter = new DateFormatter(locale, options)));\n return formatter;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAuCA,SAAgB,aAAa,OAAuD;CAClF,OAAO,SAAS,OAAO,SAAS;AAClC;;AAGA,SAAgB,aAAa,OAA+C;CAC1E,OAAO,SAAS,OAAO,SAAS;AAClC;;;;;AAMA,SAAgB,WAAW,KAAqB;CAC9C,MAAM,SAAS,YAAY,GAAG;CAC9B,IAAI,QAAQ,OAAO,OAAO,MAAM,SAAS;CACzC,OAAO,IAAI,WAAW,IAAI,GAAG,IAAI,UAAU,IAAI,WAAW,IAAI,GAAG,IAAI,OAAO,IAAI,MAAM,GAAG,EAAE;AAC7F;;AAGA,SAAgB,WAAW,KAAqB;CAC9C,MAAM,SAAS,YAAY,GAAG;CAC9B,IAAI,QAAQ,OAAO,OAAO,IAAI,SAAS;CACvC,IAAI,IAAI,WAAW,GAAG,OAAO,GAAG,IAAI;CACpC,IAAI,IAAI,WAAW,GAAG,OAAO,WAAW,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS;CACzE,OAAO,IAAI,MAAM,GAAG,EAAE;AACxB;AAIA,IAAM,kBAAkB;AACxB,IAAM,eAAe;;AAGrB,SAAgB,aAAa,MAAyB;CACpD,MAAM,YAAY,WAAW,MAAM,SAAS;CAC5C,OAAO,GAAG,OAAO,UAAU,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE,IAAI,KAAK,KAAK,UAAU,QAAQ,CAAC;AACrF;;AAGA,SAAgB,UAAU,MAAiD;CACzE,MAAM,YAAY,WAAW,MAAM,SAAS;CAC5C,MAAM,MAAM,IAAI,aAAa,UAAU,MAAM,UAAU,OAAO,UAAU,GAAG;CAC3E,MAAM,WAAW,IAAI,IAAI,EAAE,MAAM,IAAI,WAAW,GAAG,EAAE,CAAC;CACtD,OAAO;EACL,MAAM,SAAS;EACf,MAAM,KAAK,MAAM,SAAS,QAAQ,IAAI,aAAa,SAAS,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI;CAClF;AACF;;AAGA,SAAgB,UAAU,MAAyB;CACjD,MAAM,EAAE,MAAM,SAAS,UAAU,IAAI;CACrC,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE,IAAI,OAAO,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;AAC1E;;AAGA,IAAa,kBAAkB,SAC7B,UAAU,IAAI,aAAa,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;;AAG5C,SAAS,WAAW,MAA4B;CAC9C,OAAO,KAAK,OAAO,KAAK,CAAC,CAAC,UAAU,KAAK;AAC3C;;AAGA,SAAS,YAAY,KAAgE;CACnF,MAAM,UAAU,gBAAgB,KAAK,GAAG;CACxC,IAAI,SAAS;EACX,MAAM,QAAQ,IAAI,aAAa,OAAO,QAAQ,EAAE,GAAG,OAAO,QAAQ,EAAE,IAAI,IAAI,GAAG,CAAC;EAChF,OAAO;GAAE;GAAO,KAAK,WAAW,MAAM,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;EAAE;CAC5D;CACA,MAAM,OAAO,aAAa,KAAK,GAAG;CAClC,IAAI,MAAM;EACR,MAAM,WAAW,IAAI,aAAa,OAAO,KAAK,EAAE,GAAG,GAAG,CAAC;EACvD,MAAM,QAAQ,SAAS,IAAI,EAAE,MAAM,IAAI,WAAW,QAAQ,KAAK,OAAO,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;EACzF,OAAO;GAAE;GAAO,KAAK,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;EAAE;CAC9C;CACA,OAAO;AACT;;AAGA,SAAgB,iBAAiB,OAA2D;CAC1F,OAAO,SAAS,OAAO,aAAa;AACtC;;AAGA,SAAgB,UAAU,MAAyB;CACjD,MAAM,YAAY,WAAW,MAAM,SAAS;CAC5C,OAAO,IAAI,aAAa,UAAU,MAAM,UAAU,OAAO,UAAU,GAAG,CAAC,CAAC,SAAS;AACnF;;AAGA,SAAgB,UAAU,MAAY,cAAc,OAAe;CACjE,MAAM,OAAO,IAAI,KAAK,KAAK,MAAM,KAAK,QAAQ,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;CACtF,OAAO,cAAc,OAAO,KAAK,MAAM,GAAG,CAAC;AAC7C;;AAGA,SAAgB,cAAc,OAAyB,cAAc,OAAe;CAClF,MAAM,YAAY,WAAW,OAAO,SAAS;CAC7C,OAAO,GAAG,UAAU,SAAS,EAAE,GAAG,UAAU,IAAI,KAAK,UAAU,MAAM,UAAU,QAAQ,UAAU,MAAM,GAAG,WAAW;AACvH;;AAGA,SAAgB,SAAS,WAAW,iBAAiB,GAAW;CAC9D,OAAO,MAAM,QAAQ,CAAC,CAAC,SAAS;AAClC;;AAGA,SAAgB,aAAa,OAAe,UAAgC;CAC1E,MAAM,OAAO,aAAa,KAAK;CAC/B,IAAI,CAAC,MAAM,MAAM,IAAI,WAAW,aAAa,OAAO;CACpD,OAAO,KAAK,IAAI,QAAQ,CAAC,CAAC,SAAS;AACrC;;AAGA,SAAgB,YAAY,GAAW,GAAmB;CACxD,MAAM,QAAQ,aAAa,CAAC;CAC5B,MAAM,MAAM,aAAa,CAAC;CAC1B,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,IAAI,WAAW,aAAa,QAAQ,IAAI,GAAG;CACrE,OAAO,IAAI,QAAQ,KAAK;AAC1B;;;;;AAMA,SAAgB,aAAa,OAAuB;CAClD,MAAM,OAAO,aAAa,KAAK;CAC/B,IAAI,CAAC,MAAM,MAAM,IAAI,WAAW,aAAa,OAAO;CACpD,OAAO,aAAa,MAAM,OAAO;AACnC;AAIA,IAAM,YAAY,IAAI,kBAAkB;;;;;AAMxC,SAAgB,WAAW,YAA8B;CACvD,IAAI,eAAe,WAAW,OAAO;CACrC,IAAI;EACF,OAAO,eAAe,UAAgC;CACxD,QAAQ;EACN,OAAO;CACT;AACF;AAEA,IAAM,eAAqC;CAAC;CAAO;CAAO;CAAO;CAAO;CAAO;CAAO;AAAK;;AAG3F,SAAgB,YAAY,gBAA2D;CACrF,OAAO,kBAAkB,OAAO,KAAA,IAAY,cAAe,iBAAiB,IAAK,KAAK;AACxF;;AAiBA,SAAgB,UACd,OACA,EAAE,QAAQ,gBAAgB,aAAa,QACrB;CAClB,MAAM,QAAQ,YAAY,aAAa,KAAK,GAAG,QAAQ,YAAY,cAAc,CAAC;CAClF,MAAM,OAAO,WAAW,KAAK;CAC7B,MAAM,QAA0B,CAAC;CACjC,KAAK,IAAI,QAAQ,OAAO,MAAM,SAAS,GAAG,QAAQ,MAAM,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG;EACzE,IAAI,CAAC,cAAc,MAAM,QAAQ,IAAI,IAAI,GAAG;EAC5C,MAAM,KAAK,MAAM,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,UAAU,MAAM,IAAI,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC;CAChF;CACA,OAAO;AACT;;AAaA,SAAgB,aACd,QACA,EACE,gBACA,SAAS,YACqD,CAAC,GACvD;CACV,MAAM,YAAY,gBAAgB,QAAQ;EAAE,SAAS;EAAQ,UAAU;CAAM,CAAC;CAE9E,MAAM,QAAQ,YAAY,IAAI,aAAa,MAAM,GAAG,EAAE,GAAG,QAAQ,YAAY,cAAc,CAAC;CAC5F,OAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,UACnC,UAAU,OAAO,MAAM,IAAI,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAC3D;AACF;;AAGA,SAAgB,aAAa,MAAoC;CAC/D,MAAM,QAAQ,KAAK,IAAI;EAAE,OAAO;EAAG,KAAK;CAAE,CAAC;CAC3C,OAAO,MAAM,KAAK,EAAE,QAAQ,KAAK,SAAS,gBAAgB,KAAK,EAAE,IAAI,GAAG,UACtE,MAAM,IAAI,EAAE,QAAQ,MAAM,CAAC,CAC7B;AACF;;AAGA,SAAgB,cAAc,MAAoC;CAChE,MAAM,QAAQ,KAAK,IAAI;EAAE,MAAM,KAAK,MAAM,KAAK,OAAO,EAAE,IAAI;EAAI,OAAO;EAAG,KAAK;CAAE,CAAC;CAClF,OAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,MAAM,IAAI,EAAE,OAAO,QAAQ,EAAE,CAAC,CAAC;AACjF;;AAGA,IAAa,mBAAmB,MAAoB,SAClD,KAAK,MAAM,KAAK,OAAO,EAAE,MAAM,KAAK,MAAM,KAAK,OAAO,EAAE;;;;;AAM1D,SAAgB,WAAW,MAAoB,SAA8B;CAC3E,MAAM,YAAY,WAAW,MAAM,SAAS;CAC5C,MAAM,SACJ,aACE,IAAI,aAAa,MAAM,GAAG,CAAC,GAC3B,QAAQ,QACR,YAAY,QAAQ,cAAc,CACpC,MAAM;CACR,MAAM,YAAY,YAAY,WAAW,QAAQ,QAAQ,YAAY,QAAQ,cAAc,CAAC;CAE5F,MAAM,SAAS,UAAU,IAAI,EAAE,MAAM,SAAS,IAAI,EAAE,CAAC;CACrD,MAAM,cAAc,IAAI,aAAa,OAAO,MAAM,GAAG,SAAS,IAAI,CAAC;CACnE,MAAM,YAAY,YAAY,aAAa,QAAQ,QAAQ,YAAY,QAAQ,cAAc,CAAC;CAC9F,OAAO,KAAK,MAAM,UAAU,QAAQ,SAAS,IAAI,CAAC,IAAI;AACxD;;AAkBA,SAAgB,aAAa,MAAoB,MAA8B;CAC7E,IAAI,SAAS,OAAO,OAAO;CAC3B,OAAO,SAAS,UAAU,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI;EAAE,OAAO;EAAG,KAAK;CAAE,CAAC;AAChF;;AAGA,SAAgB,aAAa,GAAiB,GAAiB,OAAiB,OAAe;CAC7F,MAAM,QAAQ,WAAW,GAAG,EAAE,QAAQ;CACtC,OAAO,aAAa,GAAG,IAAI,CAAC,CAAC,QAAQ,aAAa,OAAO,IAAI,CAAC;AAChE;;AAGA,SAAgB,WACd,GACA,GACA,OAAiB,OACR;CACT,OAAO,KAAK,QAAQ,KAAK,QAAQ,aAAa,GAAG,GAAG,IAAI,MAAM;AAChE;;AAaA,SAAgB,aACd,MACA,EAAE,KAAK,OACP,OAAiB,OACR;CACT,OACG,OAAO,QAAQ,aAAa,MAAM,KAAK,IAAI,IAAI,KAC/C,OAAO,QAAQ,aAAa,MAAM,KAAK,IAAI,IAAI;AAEpD;;AAGA,SAAgB,eACd,MACA,QACA,OAAiB,OACR;CACT,OACE,aAAa,MAAM,QAAQ,IAAI,KAAM,SAAS,UAAU,OAAO,gBAAgB,IAAI,KAAK;AAE5F;;AAGA,SAAgB,UAAU,MAAoB,EAAE,KAAK,OAAiC;CACpF,IAAI,OAAO,QAAQ,KAAK,QAAQ,WAAW,KAAK,KAAK,QAAQ,CAAC,IAAI,GAChE,OAAO,WAAW,KAAK,KAAK,QAAQ;CACtC,IAAI,OAAO,QAAQ,KAAK,QAAQ,WAAW,KAAK,KAAK,QAAQ,CAAC,IAAI,GAChE,OAAO,WAAW,KAAK,KAAK,QAAQ;CACtC,OAAO;AACT;;AAWA,SAAgB,aAAa,GAAiB,GAA4B;CACxE,OAAO,EAAE,QAAQ,CAAC,KAAK,IAAI;EAAE,OAAO;EAAG,KAAK;CAAE,IAAI;EAAE,OAAO;EAAG,KAAK;CAAE;AACvE;;AAGA,SAAgB,UACd,MACA,OACA,OAAiB,OACR;CACT,OACE,SAAS,QACT,aAAa,MAAM,MAAM,OAAO,IAAI,KAAK,KACzC,aAAa,MAAM,MAAM,KAAK,IAAI,KAAK;AAE3C;;AAGA,SAAgB,UAAU,EAAE,OAAO,OAA0B;CAC3D,OAAO,IAAI,QAAQ,KAAK,IAAI;AAC9B;;AAGA,SAAgB,oBACd,EAAE,OAAO,OACT,eACS;CACT,IAAI,CAAC,eAAe,OAAO;CAC3B,KAAK,IAAI,OAAO,OAAO,KAAK,QAAQ,GAAG,KAAK,GAAG,OAAO,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,GACxE,IAAI,cAAc,IAAI,GAAG,OAAO;CAElC,OAAO;AACT;;AAGA,SAAgB,cAAc,OAA+D;CAC3F,MAAM,QAAQ,aAAa,OAAO,KAAK;CACvC,MAAM,MAAM,aAAa,OAAO,GAAG;CACnC,OAAO,SAAS,MAAM,aAAa,OAAO,GAAG,IAAI;AACnD;;AAGA,SAAgB,WAAW,OAAqC;CAC9D,OAAO;EAAE,OAAO,UAAU,MAAM,KAAK;EAAG,KAAK,UAAU,MAAM,GAAG;CAAE;AACpE;;AA4BA,SAAgB,YACd,QACA,OACA,MACW;CACX,QAAQ,QAAR;EACE,KAAK,SACH,OAAO;GAAE,OAAO;GAAO,KAAK;EAAM;EACpC,KAAK,aAAa;GAChB,MAAM,MAAM,MAAM,SAAS,EAAE,MAAM,EAAE,CAAC;GACtC,OAAO;IAAE,OAAO;IAAK,KAAK;GAAI;EAChC;EACA,KAAK,aACH,OAAO;GAAE,OAAO,MAAM,SAAS,EAAE,MAAM,EAAE,CAAC;GAAG,KAAK;EAAM;EAC1D,KAAK,cACH,OAAO;GAAE,OAAO,MAAM,SAAS,EAAE,MAAM,GAAG,CAAC;GAAG,KAAK;EAAM;EAC3D,KAAK,YAAY;GACf,MAAM,QAAQ,YAAY,OAAO,KAAK,QAAQ,YAAY,KAAK,cAAc,CAAC;GAC9E,OAAO;IAAE;IAAO,KAAK,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;GAAE;EAC9C;EACA,KAAK,aACH,OAAO;GAAE,OAAO,aAAa,KAAK;GAAG,KAAK,WAAW,KAAK;EAAE;EAC9D,KAAK,aAAa;GAChB,MAAM,QAAQ,aAAa,KAAK,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;GACxD,OAAO;IAAE,OAAO;IAAO,KAAK,WAAW,KAAK;GAAE;EAChD;EACA,KAAK,YACH,OAAO;GAAE,OAAO,MAAM,IAAI;IAAE,OAAO;IAAG,KAAK;GAAE,CAAC;GAAG,KAAK,MAAM,IAAI;IAAE,OAAO;IAAI,KAAK;GAAG,CAAC;EAAE;CAC5F;AACF;;AAGA,SAAgB,eACd,QACA,MACA,WAAW,iBAAiB,GACT;CACnB,OAAO,WAAW,YAAY,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC;AAC9D;;AAKA,IAAM,eAAe;;;;;AAMrB,SAAgB,UAAU,OAAkC,WAAW,iBAAiB,GAAW;CACjG,IAAI,iBAAiB,MAAM,OAAO,MAAM,QAAQ;CAChD,IAAI,OAAO,UAAU,UACnB,QAAQ,cAAc,QAAQ,MAAM,OAAO,IAAI,MAAM,OAAO,QAAQ,EAAA,CAAG,QAAQ;CAEjF,IAAI,aAAa,KAAK,KAAK,GAAG,OAAO,KAAK,MAAM,KAAK;CACrD,MAAM,SAAS,iBAAiB,KAAK,KAAK,aAAa,KAAK;CAC5D,OAAO,SAAS,OAAO,OAAO,QAAQ,CAAC,CAAC,QAAQ,IAAI;AACtD;;AAGA,IAAM,iBAA2E;CAE/E;EAAC;EAAU;EAAG;CAAE;CAChB;EAAC;EAAU;EAAI;CAAO;CACtB;EAAC;EAAQ;EAAM;CAAS;CACxB;EAAC;EAAO;EAAQ;CAAW;CAC3B;EAAC;EAAS;EAAa;CAAY;CACnC;EAAC;EAAQ;EAAc;CAAQ;AACjC;;AAGA,SAAgB,aAAa,MAAoE;CAC/F,MAAM,UAAU,OAAO;CACvB,MAAM,CAAC,MAAM,QAAQ,eAAe,MAAM,KAAK,WAAW,KAAK,IAAI,OAAO,IAAI,KAAK;CAEnF,OAAO;EAAE,OAAO,KAAK,MAAM,UAAU,IAAI,KAAK;EAAG;CAAK;AACxD;AAIA,SAAS,SAAY,OAAkC,OAAsC;CAC3F,IAAI,CAAC,OAAO,OAAO;CACnB,IAAI;EACF,OAAO,MAAM,KAAK;CACpB,QAAQ;EACN,OAAO;CACT;AACF;AAEA,IAAM,6BAAa,IAAI,IAA2B;AAElD,SAAS,gBAAgB,QAAgB,SAAoD;CAC3F,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,UAAU,OAAO;CAC/C,IAAI,YAAY,WAAW,IAAI,GAAG;CAClC,IAAI,CAAC,WAAW,WAAW,IAAI,KAAM,YAAY,IAAI,cAAc,QAAQ,OAAO,CAAE;CACpF,OAAO;AACT"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type NumericValue } from './numeric';
|
|
2
|
+
/** 一个字段的比较结果 */
|
|
3
|
+
export interface FieldDiff<T, K extends keyof T = keyof T> {
|
|
4
|
+
/** 字段名 */
|
|
5
|
+
key: K;
|
|
6
|
+
/** 之前的值;那一份没有时 undefined */
|
|
7
|
+
before: T[K] | undefined;
|
|
8
|
+
/** 之后的值 */
|
|
9
|
+
after: T[K] | undefined;
|
|
10
|
+
/** 变了没有 */
|
|
11
|
+
changed: boolean;
|
|
12
|
+
/** 两边都是数值时的差:after − before(Decimal、bigint 精确运算) */
|
|
13
|
+
delta?: NumericValue;
|
|
14
|
+
/** 两边都是数值且之前不为 0 时的变化率:delta / before(-0.2 是降了 20%) */
|
|
15
|
+
ratio?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 按字段比较两份记录;keys 决定比哪些字段与顺序,不写时是两边出现过的全部字段(before 的在前)。
|
|
19
|
+
* 某一份是 null / undefined 时,它的每个字段都当作没有
|
|
20
|
+
*/
|
|
21
|
+
export declare function diffFields<T extends object, K extends keyof T = keyof T>(before: T | null | undefined, after: T | null | undefined, keys?: readonly K[]): FieldDiff<T, K>[];
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { addNumeric, isDecimal, isNumeric, multiplyNumeric, numericKind, toNumber } from "./numeric.js";
|
|
2
|
+
import { sameValue } from "./equality.js";
|
|
3
|
+
//#region src/utils/data/diff.ts
|
|
4
|
+
/**
|
|
5
|
+
* 两份记录按字段比较(测算版本对比、编辑前后、审批意见):哪些字段变了,数值字段变了多少。
|
|
6
|
+
*
|
|
7
|
+
* diffFields(v1, v2, ['amount', 'quantity', 'reason'])
|
|
8
|
+
* // → [{ key: 'amount', before: 120, after: 98, changed: true, delta: -22, ratio: -0.183 }, …]
|
|
9
|
+
*
|
|
10
|
+
* 变没变按结构相等(sameValue:Decimal('1.0') 与 1 相等、日期按值);两边都是数值(number、bigint、Decimal)时
|
|
11
|
+
* 给出精确的差(after − before,按 Decimal 或 bigint 运算,不经过浮点)与变化率。
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* 按字段比较两份记录;keys 决定比哪些字段与顺序,不写时是两边出现过的全部字段(before 的在前)。
|
|
15
|
+
* 某一份是 null / undefined 时,它的每个字段都当作没有
|
|
16
|
+
*/
|
|
17
|
+
function diffFields(before, after, keys) {
|
|
18
|
+
return (keys ?? [.../* @__PURE__ */ new Set([...Object.keys(before ?? {}), ...Object.keys(after ?? {})])]).map((key) => {
|
|
19
|
+
const from = before?.[key];
|
|
20
|
+
const to = after?.[key];
|
|
21
|
+
const diff = {
|
|
22
|
+
key,
|
|
23
|
+
before: from,
|
|
24
|
+
after: to,
|
|
25
|
+
changed: !sameValue(from, to)
|
|
26
|
+
};
|
|
27
|
+
if (isNumeric(from) && isNumeric(to)) {
|
|
28
|
+
diff.delta = subtract(to, from);
|
|
29
|
+
const base = toNumber(from);
|
|
30
|
+
if (base !== 0) diff.ratio = toNumber(diff.delta) / base;
|
|
31
|
+
}
|
|
32
|
+
return diff;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/** a − b:有一边是 Decimal 时按它的构造函数算,都是 bigint 时按整数,否则按 number */
|
|
36
|
+
function subtract(a, b) {
|
|
37
|
+
const kind = isDecimal(a) ? numericKind(a) : isDecimal(b) ? numericKind(b) : typeof a === "bigint" && typeof b === "bigint" ? "bigint" : "number";
|
|
38
|
+
return addNumeric(a, multiplyNumeric(b, -1, kind), kind);
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { diffFields };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","names":[],"sources":["../../../src/utils/data/diff.ts"],"sourcesContent":["/**\n * 两份记录按字段比较(测算版本对比、编辑前后、审批意见):哪些字段变了,数值字段变了多少。\n *\n * diffFields(v1, v2, ['amount', 'quantity', 'reason'])\n * // → [{ key: 'amount', before: 120, after: 98, changed: true, delta: -22, ratio: -0.183 }, …]\n *\n * 变没变按结构相等(sameValue:Decimal('1.0') 与 1 相等、日期按值);两边都是数值(number、bigint、Decimal)时\n * 给出精确的差(after − before,按 Decimal 或 bigint 运算,不经过浮点)与变化率。\n */\nimport { sameValue } from './equality';\nimport {\n addNumeric,\n isDecimal,\n isNumeric,\n multiplyNumeric,\n numericKind,\n toNumber,\n type NumericValue,\n} from './numeric';\n\n/** 一个字段的比较结果 */\nexport interface FieldDiff<T, K extends keyof T = keyof T> {\n /** 字段名 */\n key: K;\n /** 之前的值;那一份没有时 undefined */\n before: T[K] | undefined;\n /** 之后的值 */\n after: T[K] | undefined;\n /** 变了没有 */\n changed: boolean;\n /** 两边都是数值时的差:after − before(Decimal、bigint 精确运算) */\n delta?: NumericValue;\n /** 两边都是数值且之前不为 0 时的变化率:delta / before(-0.2 是降了 20%) */\n ratio?: number;\n}\n\n/**\n * 按字段比较两份记录;keys 决定比哪些字段与顺序,不写时是两边出现过的全部字段(before 的在前)。\n * 某一份是 null / undefined 时,它的每个字段都当作没有\n */\nexport function diffFields<T extends object, K extends keyof T = keyof T>(\n before: T | null | undefined,\n after: T | null | undefined,\n keys?: readonly K[],\n): FieldDiff<T, K>[] {\n const fields =\n keys ?? ([...new Set([...Object.keys(before ?? {}), ...Object.keys(after ?? {})])] as K[]);\n return fields.map((key) => {\n const from = before?.[key];\n const to = after?.[key];\n const diff: FieldDiff<T, K> = { key, before: from, after: to, changed: !sameValue(from, to) };\n if (isNumeric(from) && isNumeric(to)) {\n diff.delta = subtract(to, from);\n const base = toNumber(from);\n if (base !== 0) diff.ratio = toNumber(diff.delta) / base;\n }\n return diff;\n });\n}\n\n/** a − b:有一边是 Decimal 时按它的构造函数算,都是 bigint 时按整数,否则按 number */\nfunction subtract(a: NumericValue, b: NumericValue): NumericValue {\n const kind = isDecimal(a)\n ? numericKind(a)\n : isDecimal(b)\n ? numericKind(b)\n : typeof a === 'bigint' && typeof b === 'bigint'\n ? 'bigint'\n : 'number';\n return addNumeric(a, multiplyNumeric(b, -1, kind), kind);\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAwCA,SAAgB,WACd,QACA,OACA,MACmB;CAGnB,QADE,QAAS,CAAC,mBAAG,IAAI,IAAI,CAAC,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,GAAG,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA,CACrE,KAAK,QAAQ;EACzB,MAAM,OAAO,SAAS;EACtB,MAAM,KAAK,QAAQ;EACnB,MAAM,OAAwB;GAAE;GAAK,QAAQ;GAAM,OAAO;GAAI,SAAS,CAAC,UAAU,MAAM,EAAE;EAAE;EAC5F,IAAI,UAAU,IAAI,KAAK,UAAU,EAAE,GAAG;GACpC,KAAK,QAAQ,SAAS,IAAI,IAAI;GAC9B,MAAM,OAAO,SAAS,IAAI;GAC1B,IAAI,SAAS,GAAG,KAAK,QAAQ,SAAS,KAAK,KAAK,IAAI;EACtD;EACA,OAAO;CACT,CAAC;AACH;;AAGA,SAAS,SAAS,GAAiB,GAA+B;CAChE,MAAM,OAAO,UAAU,CAAC,IACpB,YAAY,CAAC,IACb,UAAU,CAAC,IACT,YAAY,CAAC,IACb,OAAO,MAAM,YAAY,OAAO,MAAM,WACpC,WACA;CACR,OAAO,WAAW,GAAG,gBAAgB,GAAG,IAAI,IAAI,GAAG,IAAI;AACzD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { isNumeric, sameNumeric } from "./numeric.js";
|
|
2
|
+
//#region src/utils/data/equality.ts
|
|
3
|
+
/** 结构相等:表单判断有没有改过、请求判断参数是不是真的变了 */
|
|
4
|
+
/** 自带 compare 的值(@internationalized/date 的日期值):不在运行时导入,按形状识别 */
|
|
5
|
+
var isComparable = (value) => typeof value === "object" && value !== null && typeof value.compare === "function";
|
|
6
|
+
/**
|
|
7
|
+
* 结构相等:普通对象与数组逐项比较;Date 比时间;数值(number、bigint、Decimal)按大小,Decimal('1.0') 与 1 相等;
|
|
8
|
+
* 日期值(CalendarDate 等)按它自己的 compare;其余(含 Blob)比引用
|
|
9
|
+
*/
|
|
10
|
+
function sameValue(a, b) {
|
|
11
|
+
if (Object.is(a, b)) return true;
|
|
12
|
+
if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();
|
|
13
|
+
if (isNumeric(a) && isNumeric(b)) return sameNumeric(a, b);
|
|
14
|
+
if (isComparable(a) && isComparable(b) && a.constructor === b.constructor) return a.compare(b) === 0;
|
|
15
|
+
if (typeof a !== "object" || typeof b !== "object" || a === null || b === null) return false;
|
|
16
|
+
if (Array.isArray(a) !== Array.isArray(b) || a instanceof Blob || b instanceof Blob) return false;
|
|
17
|
+
const keys = Object.keys(a);
|
|
18
|
+
if (keys.length !== Object.keys(b).length) return false;
|
|
19
|
+
return keys.every((key) => sameValue(a[key], b[key]));
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { sameValue };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=equality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equality.js","names":[],"sources":["../../../src/utils/data/equality.ts"],"sourcesContent":["/** 结构相等:表单判断有没有改过、请求判断参数是不是真的变了 */\nimport { isNumeric, sameNumeric } from './numeric';\n\n/** 自带 compare 的值(@internationalized/date 的日期值):不在运行时导入,按形状识别 */\nconst isComparable = (value: unknown): value is { compare: (other: unknown) => number } =>\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { compare?: unknown }).compare === 'function';\n\n/**\n * 结构相等:普通对象与数组逐项比较;Date 比时间;数值(number、bigint、Decimal)按大小,Decimal('1.0') 与 1 相等;\n * 日期值(CalendarDate 等)按它自己的 compare;其余(含 Blob)比引用\n */\nexport function sameValue(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true;\n if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();\n if (isNumeric(a) && isNumeric(b)) return sameNumeric(a, b);\n if (isComparable(a) && isComparable(b) && a.constructor === b.constructor)\n return a.compare(b) === 0;\n if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false;\n if (Array.isArray(a) !== Array.isArray(b) || a instanceof Blob || b instanceof Blob) return false;\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n return keys.every((key) =>\n sameValue((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key]),\n );\n}\n"],"mappings":";;;;AAIA,IAAM,gBAAgB,UACpB,OAAO,UAAU,YACjB,UAAU,QACV,OAAQ,MAAgC,YAAY;;;;;AAMtD,SAAgB,UAAU,GAAY,GAAqB;CACzD,IAAI,OAAO,GAAG,GAAG,CAAC,GAAG,OAAO;CAC5B,IAAI,aAAa,QAAQ,aAAa,MAAM,OAAO,EAAE,QAAQ,MAAM,EAAE,QAAQ;CAC7E,IAAI,UAAU,CAAC,KAAK,UAAU,CAAC,GAAG,OAAO,YAAY,GAAG,CAAC;CACzD,IAAI,aAAa,CAAC,KAAK,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAC5D,OAAO,EAAE,QAAQ,CAAC,MAAM;CAC1B,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM,YAAY,MAAM,QAAQ,MAAM,MAAM,OAAO;CACvF,IAAI,MAAM,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,KAAK,aAAa,QAAQ,aAAa,MAAM,OAAO;CAC5F,MAAM,OAAO,OAAO,KAAK,CAAC;CAC1B,IAAI,KAAK,WAAW,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,OAAO;CAClD,OAAO,KAAK,OAAO,QACjB,UAAW,EAA8B,MAAO,EAA8B,IAAI,CACpF;AACF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** createHistory 的选项 */
|
|
2
|
+
export interface HistoryOptions<T> {
|
|
3
|
+
/** 读当前的状态 */
|
|
4
|
+
read: () => T;
|
|
5
|
+
/** 撤销、重做时把记下的版本写回状态(拿到的是一份拷贝,可以直接放进状态里) */
|
|
6
|
+
write: (value: T) => void;
|
|
7
|
+
/** 最多记多少步(不算起点),默认 100;超出时丢掉最早的 */
|
|
8
|
+
limit?: number;
|
|
9
|
+
/** 同一个 merge 键的连续提交,间隔不超过多少毫秒就合成一步,默认 500 */
|
|
10
|
+
mergeWindow?: number;
|
|
11
|
+
/** 记下一个版本时怎样复制,默认 snapshot(深拷贝、去掉代理);状态按不可变方式更新时写 (value) => value */
|
|
12
|
+
clone?: (value: T) => T;
|
|
13
|
+
/** 与上一步是否相同(相同就不记),默认结构相等(sameValue) */
|
|
14
|
+
equals?: (a: T, b: T) => boolean;
|
|
15
|
+
}
|
|
16
|
+
/** commit 的选项 */
|
|
17
|
+
export interface HistoryCommitOptions {
|
|
18
|
+
/**
|
|
19
|
+
* 合并的键:与上一步的键相同、间隔在 mergeWindow 以内时并进上一步(逐字输入、连续微调)。
|
|
20
|
+
* 键里带上对象,例如 `name:${node.id}`,改另一个对象的同一个字段时另起一步
|
|
21
|
+
*/
|
|
22
|
+
merge?: string;
|
|
23
|
+
}
|
|
24
|
+
/** 一次连续的操作(拖动、调整大小):期间的改动不记,结束时合成一步 */
|
|
25
|
+
export interface HistoryGesture {
|
|
26
|
+
/** 结束:有改动就记成一步 */
|
|
27
|
+
end(): void;
|
|
28
|
+
/** 取消:状态回到开始前(Esc 取消拖动) */
|
|
29
|
+
cancel(): void;
|
|
30
|
+
}
|
|
31
|
+
/** createHistory 的返回值:状态加方法,交给工具栏、快捷键 */
|
|
32
|
+
export interface History {
|
|
33
|
+
/** 有可以撤销的步骤 */
|
|
34
|
+
readonly canUndo: boolean;
|
|
35
|
+
/** 有可以重做的步骤 */
|
|
36
|
+
readonly canRedo: boolean;
|
|
37
|
+
/** 下一次撤销会撤掉的那一步的说明(commit 时写的 label),按钮的提示里用;没有时 undefined */
|
|
38
|
+
readonly undoLabel: string | undefined;
|
|
39
|
+
/** 下一次重做会重做的那一步的说明 */
|
|
40
|
+
readonly redoLabel: string | undefined;
|
|
41
|
+
/** 现在与保存点(markSaved)不同;还没保存过时与起点比 */
|
|
42
|
+
readonly dirty: boolean;
|
|
43
|
+
/** 正在进行一次连续的操作(begin 之后、end 或 cancel 之前) */
|
|
44
|
+
readonly busy: boolean;
|
|
45
|
+
/** 把当前状态记成新的一步;与上一步相同时不记。撤销过再提交会丢掉可以重做的步骤 */
|
|
46
|
+
commit(label?: string, options?: HistoryCommitOptions): void;
|
|
47
|
+
/** 开始一次连续的操作:期间的 commit 不起作用,end 时记一步、cancel 时回到开始前。已有进行中的操作时先结束它 */
|
|
48
|
+
begin(label?: string): HistoryGesture;
|
|
49
|
+
/** 撤销一步 */
|
|
50
|
+
undo(): void;
|
|
51
|
+
/** 重做一步 */
|
|
52
|
+
redo(): void;
|
|
53
|
+
/** 把当前这一步记为已保存:dirty 变回 false */
|
|
54
|
+
markSaved(): void;
|
|
55
|
+
/** 清空历史,以当前状态为新的起点并记为已保存(载入另一份文档、发布之后) */
|
|
56
|
+
reset(): void;
|
|
57
|
+
}
|
|
58
|
+
/** 撤销重做的历史(在哪里都能调用:不用生命周期与注入) */
|
|
59
|
+
export declare function createHistory<T>(options: HistoryOptions<T>): History;
|