@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,115 @@
|
|
|
1
|
+
import { backgroundOf, rasterizeSvg } from "../utils/dom/rasterize.js";
|
|
2
|
+
import { diagramInternals } from "./controller.js";
|
|
3
|
+
//#region src/diagram/export.ts
|
|
4
|
+
/**
|
|
5
|
+
* 画布导出成 SVG、PNG:整张图(不只是视口里看得见的部分),节点的 HTML 原样放进 SVG 的 foreignObject。
|
|
6
|
+
*
|
|
7
|
+
* const diagram = useDiagram();
|
|
8
|
+
* downloadFile('流程.svg', diagramToSvg(diagram), 'image/svg+xml');
|
|
9
|
+
* downloadFile('流程.png', await diagramToPng(diagram), 'image/png');
|
|
10
|
+
*
|
|
11
|
+
* 复制随视口平移缩放的那一层,把每个元素算出来的样式(主题变量已经解析)写到它自己身上,
|
|
12
|
+
* 去掉端口、对齐线、拖出来的连线和选中、焦点的描边,平移到内容的左上角(留 padding)。
|
|
13
|
+
* 范围是 Diagram 的 extent,没写时包住全部节点与连线。网页字体不会被内联:看图的机器上没有时换成回退字体。
|
|
14
|
+
*/
|
|
15
|
+
/** 导出时去掉的元素:端口、改接把手、对齐线与拖出来的连线 */
|
|
16
|
+
var TRANSIENT = "[data-diagram-port],[data-diagram-transient]";
|
|
17
|
+
/** 整张图导出成 SVG 文字;画布还没挂载、没有内容时报错 */
|
|
18
|
+
function diagramToSvg(diagram, options = {}) {
|
|
19
|
+
const { svg } = render(diagram, options);
|
|
20
|
+
return svg;
|
|
21
|
+
}
|
|
22
|
+
/** 整张图导出成 PNG(两倍分辨率,pixelRatio 可改) */
|
|
23
|
+
async function diagramToPng(diagram, options = {}) {
|
|
24
|
+
const { svg, width, height } = render(diagram, options);
|
|
25
|
+
return rasterizeSvg(svg, {
|
|
26
|
+
width,
|
|
27
|
+
height
|
|
28
|
+
}, { scale: options.pixelRatio ?? 2 });
|
|
29
|
+
}
|
|
30
|
+
function render(diagram, { padding = 24, background }) {
|
|
31
|
+
const internal = diagramInternals(diagram);
|
|
32
|
+
const root = internal.element.value;
|
|
33
|
+
const world = root?.querySelector("[data-diagram-world]");
|
|
34
|
+
const content = internal.content();
|
|
35
|
+
if (!root || !world || !content) throw new Error("diagramToSvg: 画布还没有挂载或没有内容");
|
|
36
|
+
const width = Math.ceil(content.width + padding * 2);
|
|
37
|
+
const height = Math.ceil(content.height + padding * 2);
|
|
38
|
+
const copy = world.cloneNode(true);
|
|
39
|
+
inlineStyles(world, copy);
|
|
40
|
+
for (const element of copy.querySelectorAll(TRANSIENT)) element.remove();
|
|
41
|
+
for (const element of copy.querySelectorAll("[data-diagram-item]")) element.style.setProperty("outline-style", "none");
|
|
42
|
+
copy.style.setProperty("transform", `translate(${padding - content.x}px, ${padding - content.y}px)`);
|
|
43
|
+
const frame = document.createElement("div");
|
|
44
|
+
frame.setAttribute("xmlns", "http://www.w3.org/1999/xhtml");
|
|
45
|
+
frame.style.cssText = `position: relative; width: ${width}px; height: ${height}px; overflow: hidden; background: ${background ?? backgroundOf(root)}`;
|
|
46
|
+
frame.append(copy);
|
|
47
|
+
return {
|
|
48
|
+
svg: `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}"><foreignObject x="0" y="0" width="${width}" height="${height}">${new XMLSerializer().serializeToString(frame)}</foreignObject></svg>`,
|
|
49
|
+
width,
|
|
50
|
+
height
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 会继承的属性:与父元素相同时不必写(复制品里照样继承到)。不在表里的按不继承处理,只是多写几条,结果不变
|
|
55
|
+
*/
|
|
56
|
+
var INHERITED = new Set("color cursor direction font-family font-size font-style font-weight font-stretch font-variant font-variant-ligatures font-variant-caps font-variant-numeric font-variant-east-asian font-feature-settings font-kerning font-optical-sizing font-variation-settings font-size-adjust font-synthesis font-palette letter-spacing line-height list-style-image list-style-position list-style-type quotes tab-size text-align text-align-last text-indent text-shadow text-transform text-rendering visibility white-space white-space-collapse text-wrap-mode word-break word-spacing overflow-wrap word-wrap writing-mode hyphens line-break caret-color color-scheme border-collapse border-spacing empty-cells caption-side pointer-events fill fill-opacity fill-rule stroke stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width paint-order text-anchor dominant-baseline clip-rule shape-rendering image-rendering marker-start marker-mid marker-end orphans widows math-depth math-style ruby-position text-emphasis-color text-emphasis-position text-emphasis-style text-underline-position text-decoration-skip-ink text-size-adjust -webkit-text-fill-color -webkit-text-stroke-color -webkit-text-stroke-width -webkit-font-smoothing -webkit-text-size-adjust".split(/\s+/));
|
|
57
|
+
/**
|
|
58
|
+
* 把原元素算出来的样式写到复制品上(类名在导出的文件里不存在),复制品去掉类名。
|
|
59
|
+
* 只写导出后会变的:不继承的属性与这种元素的默认值相同时不写,继承的属性与父元素相同时不写——
|
|
60
|
+
* 全部写上时一张小图也有几百 KB
|
|
61
|
+
*/
|
|
62
|
+
function inlineStyles(source, target) {
|
|
63
|
+
const defaults = defaultStyles();
|
|
64
|
+
const sources = [source, ...source.querySelectorAll("*")];
|
|
65
|
+
const targets = [target, ...target.querySelectorAll("*")];
|
|
66
|
+
try {
|
|
67
|
+
sources.forEach((from, index) => {
|
|
68
|
+
const to = targets[index];
|
|
69
|
+
if (!to?.style) return;
|
|
70
|
+
const computed = getComputedStyle(from);
|
|
71
|
+
const parent = from === source || !from.parentElement ? null : getComputedStyle(from.parentElement);
|
|
72
|
+
const initial = defaults.of(from);
|
|
73
|
+
let text = "";
|
|
74
|
+
for (let i = 0; i < computed.length; i++) {
|
|
75
|
+
const name = computed[i];
|
|
76
|
+
const value = computed.getPropertyValue(name);
|
|
77
|
+
if (!(parent && INHERITED.has(name) ? value === parent.getPropertyValue(name) : value === initial.getPropertyValue(name))) text += `${name}:${value};`;
|
|
78
|
+
}
|
|
79
|
+
to.setAttribute("style", text);
|
|
80
|
+
to.removeAttribute("class");
|
|
81
|
+
});
|
|
82
|
+
} finally {
|
|
83
|
+
defaults.dispose();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 各种元素的默认样式:在一个 all: initial 的容器里各放一个同名元素读出来(容器不继承页面的字体、颜色,
|
|
88
|
+
* 同导出后 foreignObject 里的情形)。按命名空间与标签缓存,用完 dispose 移除容器
|
|
89
|
+
*/
|
|
90
|
+
function defaultStyles() {
|
|
91
|
+
const sandbox = document.createElement("div");
|
|
92
|
+
sandbox.style.cssText = "all: initial; position: fixed; left: -100000px; top: 0; contain: strict;";
|
|
93
|
+
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
94
|
+
sandbox.append(svg);
|
|
95
|
+
document.body.append(sandbox);
|
|
96
|
+
const cache = /* @__PURE__ */ new Map();
|
|
97
|
+
return {
|
|
98
|
+
of(element) {
|
|
99
|
+
const key = `${element.namespaceURI}|${element.localName}`;
|
|
100
|
+
let style = cache.get(key);
|
|
101
|
+
if (!style) {
|
|
102
|
+
const sample = document.createElementNS(element.namespaceURI, element.localName);
|
|
103
|
+
(element instanceof SVGElement && element.localName !== "svg" ? svg : sandbox).append(sample);
|
|
104
|
+
style = getComputedStyle(sample);
|
|
105
|
+
cache.set(key, style);
|
|
106
|
+
}
|
|
107
|
+
return style;
|
|
108
|
+
},
|
|
109
|
+
dispose: () => sandbox.remove()
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//#endregion
|
|
113
|
+
export { diagramToPng, diagramToSvg };
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","names":[],"sources":["../../src/diagram/export.ts"],"sourcesContent":["/**\n * 画布导出成 SVG、PNG:整张图(不只是视口里看得见的部分),节点的 HTML 原样放进 SVG 的 foreignObject。\n *\n * const diagram = useDiagram();\n * downloadFile('流程.svg', diagramToSvg(diagram), 'image/svg+xml');\n * downloadFile('流程.png', await diagramToPng(diagram), 'image/png');\n *\n * 复制随视口平移缩放的那一层,把每个元素算出来的样式(主题变量已经解析)写到它自己身上,\n * 去掉端口、对齐线、拖出来的连线和选中、焦点的描边,平移到内容的左上角(留 padding)。\n * 范围是 Diagram 的 extent,没写时包住全部节点与连线。网页字体不会被内联:看图的机器上没有时换成回退字体。\n */\nimport { backgroundOf, rasterizeSvg } from '../utils/dom/rasterize';\nimport { diagramInternals, type DiagramController } from './controller';\n\n/** 导出的选项 */\nexport interface DiagramExportOptions {\n /** 内容四周留的空白(px),默认 24 */\n padding?: number;\n /** 底色,默认取画布的背景色;SVG 写 'transparent' 时透明 */\n background?: string;\n}\n\n/** 导出时去掉的元素:端口、改接把手、对齐线与拖出来的连线 */\nconst TRANSIENT = '[data-diagram-port],[data-diagram-transient]';\n\n/** 整张图导出成 SVG 文字;画布还没挂载、没有内容时报错 */\nexport function diagramToSvg(\n diagram: DiagramController,\n options: DiagramExportOptions = {},\n): string {\n const { svg } = render(diagram, options);\n return svg;\n}\n\n/** 整张图导出成 PNG(两倍分辨率,pixelRatio 可改) */\nexport async function diagramToPng(\n diagram: DiagramController,\n options: DiagramExportOptions & { pixelRatio?: number } = {},\n): Promise<Blob> {\n const { svg, width, height } = render(diagram, options);\n return rasterizeSvg(svg, { width, height }, { scale: options.pixelRatio ?? 2 });\n}\n\nfunction render(diagram: DiagramController, { padding = 24, background }: DiagramExportOptions) {\n const internal = diagramInternals(diagram);\n const root = internal.element.value;\n const world = root?.querySelector<HTMLElement>('[data-diagram-world]');\n const content = internal.content();\n if (!root || !world || !content) throw new Error('diagramToSvg: 画布还没有挂载或没有内容');\n const width = Math.ceil(content.width + padding * 2);\n const height = Math.ceil(content.height + padding * 2);\n\n const copy = world.cloneNode(true) as HTMLElement;\n inlineStyles(world, copy);\n for (const element of copy.querySelectorAll(TRANSIENT)) element.remove();\n // 选中、焦点的描边不是图的一部分\n for (const element of copy.querySelectorAll<HTMLElement>('[data-diagram-item]')) {\n element.style.setProperty('outline-style', 'none');\n }\n copy.style.setProperty(\n 'transform',\n `translate(${padding - content.x}px, ${padding - content.y}px)`,\n );\n\n const frame = document.createElement('div');\n frame.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n frame.style.cssText = `position: relative; width: ${width}px; height: ${height}px; overflow: hidden; background: ${\n background ?? backgroundOf(root)\n }`;\n frame.append(copy);\n const html = new XMLSerializer().serializeToString(frame);\n const svg =\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\" viewBox=\"0 0 ${width} ${height}\">` +\n `<foreignObject x=\"0\" y=\"0\" width=\"${width}\" height=\"${height}\">${html}</foreignObject></svg>`;\n return { svg, width, height };\n}\n\n/**\n * 会继承的属性:与父元素相同时不必写(复制品里照样继承到)。不在表里的按不继承处理,只是多写几条,结果不变\n */\nconst INHERITED = new Set(\n (\n 'color cursor direction font-family font-size font-style font-weight font-stretch font-variant ' +\n 'font-variant-ligatures font-variant-caps font-variant-numeric font-variant-east-asian font-feature-settings ' +\n 'font-kerning font-optical-sizing font-variation-settings font-size-adjust font-synthesis font-palette ' +\n 'letter-spacing line-height list-style-image list-style-position list-style-type quotes tab-size ' +\n 'text-align text-align-last text-indent text-shadow text-transform text-rendering visibility white-space ' +\n 'white-space-collapse text-wrap-mode word-break word-spacing overflow-wrap word-wrap writing-mode hyphens ' +\n 'line-break caret-color color-scheme border-collapse border-spacing empty-cells caption-side pointer-events ' +\n 'fill fill-opacity fill-rule stroke stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin ' +\n 'stroke-miterlimit stroke-opacity stroke-width paint-order text-anchor dominant-baseline clip-rule ' +\n 'shape-rendering image-rendering marker-start marker-mid marker-end orphans widows math-depth math-style ' +\n 'ruby-position text-emphasis-color text-emphasis-position text-emphasis-style text-underline-position ' +\n 'text-decoration-skip-ink text-size-adjust -webkit-text-fill-color -webkit-text-stroke-color ' +\n '-webkit-text-stroke-width -webkit-font-smoothing -webkit-text-size-adjust'\n ).split(/\\s+/),\n);\n\n/**\n * 把原元素算出来的样式写到复制品上(类名在导出的文件里不存在),复制品去掉类名。\n * 只写导出后会变的:不继承的属性与这种元素的默认值相同时不写,继承的属性与父元素相同时不写——\n * 全部写上时一张小图也有几百 KB\n */\nfunction inlineStyles(source: Element, target: Element) {\n const defaults = defaultStyles();\n const sources = [source, ...source.querySelectorAll('*')];\n const targets = [target, ...target.querySelectorAll('*')];\n try {\n sources.forEach((from, index) => {\n const to = targets[index] as HTMLElement | SVGElement | undefined;\n if (!to?.style) return;\n const computed = getComputedStyle(from);\n const parent =\n from === source || !from.parentElement ? null : getComputedStyle(from.parentElement);\n const initial = defaults.of(from);\n let text = '';\n for (let i = 0; i < computed.length; i++) {\n const name = computed[i]!;\n const value = computed.getPropertyValue(name);\n const same =\n parent && INHERITED.has(name)\n ? value === parent.getPropertyValue(name)\n : value === initial.getPropertyValue(name);\n if (!same) text += `${name}:${value};`;\n }\n to.setAttribute('style', text);\n to.removeAttribute('class');\n });\n } finally {\n defaults.dispose();\n }\n}\n\n/**\n * 各种元素的默认样式:在一个 all: initial 的容器里各放一个同名元素读出来(容器不继承页面的字体、颜色,\n * 同导出后 foreignObject 里的情形)。按命名空间与标签缓存,用完 dispose 移除容器\n */\nfunction defaultStyles() {\n const sandbox = document.createElement('div');\n sandbox.style.cssText =\n 'all: initial; position: fixed; left: -100000px; top: 0; contain: strict;';\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n sandbox.append(svg);\n document.body.append(sandbox);\n const cache = new Map<string, CSSStyleDeclaration>();\n return {\n of(element: Element) {\n const key = `${element.namespaceURI}|${element.localName}`;\n let style = cache.get(key);\n if (!style) {\n const sample = document.createElementNS(element.namespaceURI, element.localName);\n (element instanceof SVGElement && element.localName !== 'svg' ? svg : sandbox).append(\n sample,\n );\n style = getComputedStyle(sample);\n cache.set(key, style);\n }\n return style;\n },\n dispose: () => sandbox.remove(),\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 画布的几何(纯函数):点与矩形、边界、相交与包含、折线的路径与中点、箭头。坐标都是画布坐标(缩放前的 px)。
|
|
3
|
+
*/
|
|
4
|
+
/** 画布上的一点 */
|
|
5
|
+
export interface DiagramPoint {
|
|
6
|
+
/** 横坐标 */
|
|
7
|
+
x: number;
|
|
8
|
+
/** 纵坐标 */
|
|
9
|
+
y: number;
|
|
10
|
+
}
|
|
11
|
+
/** 画布上的矩形:左上角与大小 */
|
|
12
|
+
export interface DiagramRect {
|
|
13
|
+
/** 左边的横坐标 */
|
|
14
|
+
x: number;
|
|
15
|
+
/** 上边的纵坐标 */
|
|
16
|
+
y: number;
|
|
17
|
+
/** 宽 */
|
|
18
|
+
width: number;
|
|
19
|
+
/** 高 */
|
|
20
|
+
height: number;
|
|
21
|
+
}
|
|
22
|
+
/** 包住全部矩形与点的最小矩形;什么都没有时 undefined */
|
|
23
|
+
export declare function boundsOf(rects: Iterable<DiagramRect>, points?: Iterable<DiagramPoint>): DiagramRect | undefined;
|
|
24
|
+
/** 两个角点围成的矩形(框选时按下点与当前点的先后不定) */
|
|
25
|
+
export declare function rectFromCorners(a: DiagramPoint, b: DiagramPoint): DiagramRect;
|
|
26
|
+
/** 两个矩形有重叠(只碰到边不算) */
|
|
27
|
+
export declare function rectsIntersect(a: DiagramRect, b: DiagramRect): boolean;
|
|
28
|
+
/** outer 整个包住 inner(边重合也算) */
|
|
29
|
+
export declare function rectContains(outer: DiagramRect, inner: DiagramRect): boolean;
|
|
30
|
+
/** 矩形的中心 */
|
|
31
|
+
export declare function rectCenter(rect: DiagramRect): DiagramPoint;
|
|
32
|
+
/** 从矩形中心朝 toward 方向的射线与矩形边框的交点:两个节点之间没有路由时,直线的两端落在边框上 */
|
|
33
|
+
export declare function borderPoint(rect: DiagramRect, toward: DiagramPoint): DiagramPoint;
|
|
34
|
+
/**
|
|
35
|
+
* 折线的 SVG 路径(`M … L …`);radius 大于 0 时拐角改成圆角(正交路由的线更柔和),
|
|
36
|
+
* 圆角不超过相邻两段各自长度的一半,短段不会画反
|
|
37
|
+
*/
|
|
38
|
+
export declare function polylinePath(points: readonly DiagramPoint[], radius?: number): string;
|
|
39
|
+
/** 折线上走到一半长度的点:连线文字默认放在这里 */
|
|
40
|
+
export declare function polylineMidpoint(points: readonly DiagramPoint[]): DiagramPoint;
|
|
41
|
+
/**
|
|
42
|
+
* 折线终点的箭头:三角形的三个顶点(SVG polygon 的 points),尖端在终点,沿最后一段的方向;
|
|
43
|
+
* 没有方向(少于两个不同的点)时返回空串
|
|
44
|
+
*/
|
|
45
|
+
export declare function arrowHead(points: readonly DiagramPoint[], size?: number): string;
|
|
46
|
+
/** 去掉终点处箭头占的那一段:线画到箭头的底边,不从箭尖下面露出来 */
|
|
47
|
+
export declare function trimEnd(points: readonly DiagramPoint[], length: number): DiagramPoint[];
|
|
48
|
+
/** 对齐线:拖动时与别的节点对齐的那条线(画布坐标的线段) */
|
|
49
|
+
export interface DiagramGuide {
|
|
50
|
+
/** 起点 */
|
|
51
|
+
from: DiagramPoint;
|
|
52
|
+
/** 终点 */
|
|
53
|
+
to: DiagramPoint;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 拖动中的矩形向别的矩形对齐:左、中、右任一条竖线与别人的左、中、右相差不到 tolerance 时吸过去,横向同理(上、中、下)。
|
|
57
|
+
* 返回吸附后的位置与要画的对齐线(每个方向取差得最少的那一条,线从两个矩形里靠外的一端画到另一端)
|
|
58
|
+
*/
|
|
59
|
+
export declare function alignToGuides(rect: DiagramRect, others: readonly DiagramRect[], tolerance: number): {
|
|
60
|
+
x: number;
|
|
61
|
+
y: number;
|
|
62
|
+
guides: DiagramGuide[];
|
|
63
|
+
};
|
|
64
|
+
/** 点落在哪个矩形里:后面的在上层,先找后面的 */
|
|
65
|
+
export declare function rectAt<T extends DiagramRect>(rects: readonly T[], point: DiagramPoint): T | undefined;
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
//#region src/diagram/geometry.ts
|
|
2
|
+
/** 包住全部矩形与点的最小矩形;什么都没有时 undefined */
|
|
3
|
+
function boundsOf(rects, points = []) {
|
|
4
|
+
let left = Infinity;
|
|
5
|
+
let top = Infinity;
|
|
6
|
+
let right = -Infinity;
|
|
7
|
+
let bottom = -Infinity;
|
|
8
|
+
for (const rect of rects) {
|
|
9
|
+
left = Math.min(left, rect.x);
|
|
10
|
+
top = Math.min(top, rect.y);
|
|
11
|
+
right = Math.max(right, rect.x + rect.width);
|
|
12
|
+
bottom = Math.max(bottom, rect.y + rect.height);
|
|
13
|
+
}
|
|
14
|
+
for (const point of points) {
|
|
15
|
+
left = Math.min(left, point.x);
|
|
16
|
+
top = Math.min(top, point.y);
|
|
17
|
+
right = Math.max(right, point.x);
|
|
18
|
+
bottom = Math.max(bottom, point.y);
|
|
19
|
+
}
|
|
20
|
+
return left === Infinity ? void 0 : {
|
|
21
|
+
x: left,
|
|
22
|
+
y: top,
|
|
23
|
+
width: right - left,
|
|
24
|
+
height: bottom - top
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** 两个角点围成的矩形(框选时按下点与当前点的先后不定) */
|
|
28
|
+
function rectFromCorners(a, b) {
|
|
29
|
+
return {
|
|
30
|
+
x: Math.min(a.x, b.x),
|
|
31
|
+
y: Math.min(a.y, b.y),
|
|
32
|
+
width: Math.abs(a.x - b.x),
|
|
33
|
+
height: Math.abs(a.y - b.y)
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** 两个矩形有重叠(只碰到边不算) */
|
|
37
|
+
function rectsIntersect(a, b) {
|
|
38
|
+
return a.x < b.x + b.width && b.x < a.x + a.width && a.y < b.y + b.height && b.y < a.y + a.height;
|
|
39
|
+
}
|
|
40
|
+
/** outer 整个包住 inner(边重合也算) */
|
|
41
|
+
function rectContains(outer, inner) {
|
|
42
|
+
return inner.x >= outer.x && inner.y >= outer.y && inner.x + inner.width <= outer.x + outer.width && inner.y + inner.height <= outer.y + outer.height;
|
|
43
|
+
}
|
|
44
|
+
/** 矩形的中心 */
|
|
45
|
+
function rectCenter(rect) {
|
|
46
|
+
return {
|
|
47
|
+
x: rect.x + rect.width / 2,
|
|
48
|
+
y: rect.y + rect.height / 2
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** 从矩形中心朝 toward 方向的射线与矩形边框的交点:两个节点之间没有路由时,直线的两端落在边框上 */
|
|
52
|
+
function borderPoint(rect, toward) {
|
|
53
|
+
const center = rectCenter(rect);
|
|
54
|
+
const dx = toward.x - center.x;
|
|
55
|
+
const dy = toward.y - center.y;
|
|
56
|
+
if (dx === 0 && dy === 0) return center;
|
|
57
|
+
const scale = Math.min(dx === 0 ? Infinity : rect.width / 2 / Math.abs(dx), dy === 0 ? Infinity : rect.height / 2 / Math.abs(dy));
|
|
58
|
+
return {
|
|
59
|
+
x: center.x + dx * scale,
|
|
60
|
+
y: center.y + dy * scale
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/** 两点之间的距离 */
|
|
64
|
+
var distance = (a, b) => Math.hypot(b.x - a.x, b.y - a.y);
|
|
65
|
+
/**
|
|
66
|
+
* 折线的 SVG 路径(`M … L …`);radius 大于 0 时拐角改成圆角(正交路由的线更柔和),
|
|
67
|
+
* 圆角不超过相邻两段各自长度的一半,短段不会画反
|
|
68
|
+
*/
|
|
69
|
+
function polylinePath(points, radius = 0) {
|
|
70
|
+
if (points.length === 0) return "";
|
|
71
|
+
const [first] = points;
|
|
72
|
+
let path = `M${first.x} ${first.y}`;
|
|
73
|
+
for (let index = 1; index < points.length; index++) {
|
|
74
|
+
const point = points[index];
|
|
75
|
+
const next = points[index + 1];
|
|
76
|
+
if (!next || radius <= 0) {
|
|
77
|
+
path += ` L${point.x} ${point.y}`;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const previous = points[index - 1];
|
|
81
|
+
const r = Math.min(radius, distance(previous, point) / 2, distance(point, next) / 2);
|
|
82
|
+
const before = towards(point, previous, r);
|
|
83
|
+
const after = towards(point, next, r);
|
|
84
|
+
path += ` L${before.x} ${before.y} Q${point.x} ${point.y} ${after.x} ${after.y}`;
|
|
85
|
+
}
|
|
86
|
+
return path;
|
|
87
|
+
}
|
|
88
|
+
/** 从 from 朝 to 走 length 的点 */
|
|
89
|
+
function towards(from, to, length) {
|
|
90
|
+
const total = distance(from, to);
|
|
91
|
+
if (total === 0) return from;
|
|
92
|
+
return {
|
|
93
|
+
x: from.x + (to.x - from.x) * length / total,
|
|
94
|
+
y: from.y + (to.y - from.y) * length / total
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/** 折线上走到一半长度的点:连线文字默认放在这里 */
|
|
98
|
+
function polylineMidpoint(points) {
|
|
99
|
+
if (points.length === 0) return {
|
|
100
|
+
x: 0,
|
|
101
|
+
y: 0
|
|
102
|
+
};
|
|
103
|
+
let remaining = points.slice(1).reduce((sum, point, index) => sum + distance(points[index], point), 0) / 2;
|
|
104
|
+
for (let index = 1; index < points.length; index++) {
|
|
105
|
+
const segment = distance(points[index - 1], points[index]);
|
|
106
|
+
if (remaining <= segment) return towards(points[index - 1], points[index], remaining);
|
|
107
|
+
remaining -= segment;
|
|
108
|
+
}
|
|
109
|
+
return points[points.length - 1];
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 折线终点的箭头:三角形的三个顶点(SVG polygon 的 points),尖端在终点,沿最后一段的方向;
|
|
113
|
+
* 没有方向(少于两个不同的点)时返回空串
|
|
114
|
+
*/
|
|
115
|
+
function arrowHead(points, size = 8) {
|
|
116
|
+
const tip = points[points.length - 1];
|
|
117
|
+
const from = [...points].reverse().find((point) => tip && (point.x !== tip.x || point.y !== tip.y));
|
|
118
|
+
if (!tip || !from) return "";
|
|
119
|
+
const angle = Math.atan2(tip.y - from.y, tip.x - from.x);
|
|
120
|
+
const back = {
|
|
121
|
+
x: tip.x - Math.cos(angle) * size,
|
|
122
|
+
y: tip.y - Math.sin(angle) * size
|
|
123
|
+
};
|
|
124
|
+
const half = size * .5;
|
|
125
|
+
const left = {
|
|
126
|
+
x: back.x + Math.sin(angle) * half,
|
|
127
|
+
y: back.y - Math.cos(angle) * half
|
|
128
|
+
};
|
|
129
|
+
const right = {
|
|
130
|
+
x: back.x - Math.sin(angle) * half,
|
|
131
|
+
y: back.y + Math.cos(angle) * half
|
|
132
|
+
};
|
|
133
|
+
const round = (value) => Math.round(value * 100) / 100;
|
|
134
|
+
return [
|
|
135
|
+
tip,
|
|
136
|
+
left,
|
|
137
|
+
right
|
|
138
|
+
].map((point) => `${round(point.x)},${round(point.y)}`).join(" ");
|
|
139
|
+
}
|
|
140
|
+
/** 去掉终点处箭头占的那一段:线画到箭头的底边,不从箭尖下面露出来 */
|
|
141
|
+
function trimEnd(points, length) {
|
|
142
|
+
if (points.length < 2 || length <= 0) return [...points];
|
|
143
|
+
const tip = points[points.length - 1];
|
|
144
|
+
const before = points[points.length - 2];
|
|
145
|
+
if (distance(before, tip) <= length) return [...points];
|
|
146
|
+
return [...points.slice(0, -1), towards(tip, before, length)];
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* 拖动中的矩形向别的矩形对齐:左、中、右任一条竖线与别人的左、中、右相差不到 tolerance 时吸过去,横向同理(上、中、下)。
|
|
150
|
+
* 返回吸附后的位置与要画的对齐线(每个方向取差得最少的那一条,线从两个矩形里靠外的一端画到另一端)
|
|
151
|
+
*/
|
|
152
|
+
function alignToGuides(rect, others, tolerance) {
|
|
153
|
+
const lines = (start, size) => [
|
|
154
|
+
start,
|
|
155
|
+
start + size / 2,
|
|
156
|
+
start + size
|
|
157
|
+
];
|
|
158
|
+
let best = [];
|
|
159
|
+
for (const axis of ["x", "y"]) {
|
|
160
|
+
const own = axis === "x" ? lines(rect.x, rect.width) : lines(rect.y, rect.height);
|
|
161
|
+
let found;
|
|
162
|
+
for (const other of others) {
|
|
163
|
+
const theirs = axis === "x" ? lines(other.x, other.width) : lines(other.y, other.height);
|
|
164
|
+
for (const mine of own) for (const line of theirs) {
|
|
165
|
+
const diff = line - mine;
|
|
166
|
+
if (Math.abs(diff) <= tolerance && (!found || Math.abs(diff) < Math.abs(found.diff))) found = {
|
|
167
|
+
diff,
|
|
168
|
+
at: line,
|
|
169
|
+
other
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (found) best = [...best, {
|
|
174
|
+
axis,
|
|
175
|
+
...found
|
|
176
|
+
}];
|
|
177
|
+
}
|
|
178
|
+
const x = rect.x + (best.find((item) => item.axis === "x")?.diff ?? 0);
|
|
179
|
+
const y = rect.y + (best.find((item) => item.axis === "y")?.diff ?? 0);
|
|
180
|
+
const placed = {
|
|
181
|
+
...rect,
|
|
182
|
+
x,
|
|
183
|
+
y
|
|
184
|
+
};
|
|
185
|
+
return {
|
|
186
|
+
x,
|
|
187
|
+
y,
|
|
188
|
+
guides: best.map(({ axis, at, other }) => axis === "x" ? {
|
|
189
|
+
from: {
|
|
190
|
+
x: at,
|
|
191
|
+
y: Math.min(placed.y, other.y)
|
|
192
|
+
},
|
|
193
|
+
to: {
|
|
194
|
+
x: at,
|
|
195
|
+
y: Math.max(placed.y + placed.height, other.y + other.height)
|
|
196
|
+
}
|
|
197
|
+
} : {
|
|
198
|
+
from: {
|
|
199
|
+
x: Math.min(placed.x, other.x),
|
|
200
|
+
y: at
|
|
201
|
+
},
|
|
202
|
+
to: {
|
|
203
|
+
x: Math.max(placed.x + placed.width, other.x + other.width),
|
|
204
|
+
y: at
|
|
205
|
+
}
|
|
206
|
+
})
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/** 点落在哪个矩形里:后面的在上层,先找后面的 */
|
|
210
|
+
function rectAt(rects, point) {
|
|
211
|
+
for (let index = rects.length - 1; index >= 0; index--) {
|
|
212
|
+
const rect = rects[index];
|
|
213
|
+
if (point.x >= rect.x && point.x <= rect.x + rect.width && point.y >= rect.y && point.y <= rect.y + rect.height) return rect;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//#endregion
|
|
217
|
+
export { alignToGuides, arrowHead, borderPoint, boundsOf, polylineMidpoint, polylinePath, rectAt, rectCenter, rectContains, rectFromCorners, rectsIntersect, trimEnd };
|
|
218
|
+
|
|
219
|
+
//# sourceMappingURL=geometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.js","names":[],"sources":["../../src/diagram/geometry.ts"],"sourcesContent":["/**\n * 画布的几何(纯函数):点与矩形、边界、相交与包含、折线的路径与中点、箭头。坐标都是画布坐标(缩放前的 px)。\n */\n\n/** 画布上的一点 */\nexport interface DiagramPoint {\n /** 横坐标 */\n x: number;\n /** 纵坐标 */\n y: number;\n}\n\n/** 画布上的矩形:左上角与大小 */\nexport interface DiagramRect {\n /** 左边的横坐标 */\n x: number;\n /** 上边的纵坐标 */\n y: number;\n /** 宽 */\n width: number;\n /** 高 */\n height: number;\n}\n\n/** 包住全部矩形与点的最小矩形;什么都没有时 undefined */\nexport function boundsOf(\n rects: Iterable<DiagramRect>,\n points: Iterable<DiagramPoint> = [],\n): DiagramRect | undefined {\n let left = Infinity;\n let top = Infinity;\n let right = -Infinity;\n let bottom = -Infinity;\n for (const rect of rects) {\n left = Math.min(left, rect.x);\n top = Math.min(top, rect.y);\n right = Math.max(right, rect.x + rect.width);\n bottom = Math.max(bottom, rect.y + rect.height);\n }\n for (const point of points) {\n left = Math.min(left, point.x);\n top = Math.min(top, point.y);\n right = Math.max(right, point.x);\n bottom = Math.max(bottom, point.y);\n }\n return left === Infinity\n ? undefined\n : { x: left, y: top, width: right - left, height: bottom - top };\n}\n\n/** 两个角点围成的矩形(框选时按下点与当前点的先后不定) */\nexport function rectFromCorners(a: DiagramPoint, b: DiagramPoint): DiagramRect {\n return {\n x: Math.min(a.x, b.x),\n y: Math.min(a.y, b.y),\n width: Math.abs(a.x - b.x),\n height: Math.abs(a.y - b.y),\n };\n}\n\n/** 两个矩形有重叠(只碰到边不算) */\nexport function rectsIntersect(a: DiagramRect, b: DiagramRect): boolean {\n return a.x < b.x + b.width && b.x < a.x + a.width && a.y < b.y + b.height && b.y < a.y + a.height;\n}\n\n/** outer 整个包住 inner(边重合也算) */\nexport function rectContains(outer: DiagramRect, inner: DiagramRect): boolean {\n return (\n inner.x >= outer.x &&\n inner.y >= outer.y &&\n inner.x + inner.width <= outer.x + outer.width &&\n inner.y + inner.height <= outer.y + outer.height\n );\n}\n\n/** 矩形的中心 */\nexport function rectCenter(rect: DiagramRect): DiagramPoint {\n return { x: rect.x + rect.width / 2, y: rect.y + rect.height / 2 };\n}\n\n/** 从矩形中心朝 toward 方向的射线与矩形边框的交点:两个节点之间没有路由时,直线的两端落在边框上 */\nexport function borderPoint(rect: DiagramRect, toward: DiagramPoint): DiagramPoint {\n const center = rectCenter(rect);\n const dx = toward.x - center.x;\n const dy = toward.y - center.y;\n if (dx === 0 && dy === 0) return center;\n // 射线先碰到竖边还是横边:比较两个方向上到边的比例\n const scale = Math.min(\n dx === 0 ? Infinity : rect.width / 2 / Math.abs(dx),\n dy === 0 ? Infinity : rect.height / 2 / Math.abs(dy),\n );\n return { x: center.x + dx * scale, y: center.y + dy * scale };\n}\n\n/** 两点之间的距离 */\nconst distance = (a: DiagramPoint, b: DiagramPoint) => Math.hypot(b.x - a.x, b.y - a.y);\n\n/**\n * 折线的 SVG 路径(`M … L …`);radius 大于 0 时拐角改成圆角(正交路由的线更柔和),\n * 圆角不超过相邻两段各自长度的一半,短段不会画反\n */\nexport function polylinePath(points: readonly DiagramPoint[], radius = 0): string {\n if (points.length === 0) return '';\n const [first] = points as [DiagramPoint];\n let path = `M${first.x} ${first.y}`;\n for (let index = 1; index < points.length; index++) {\n const point = points[index]!;\n const next = points[index + 1];\n if (!next || radius <= 0) {\n path += ` L${point.x} ${point.y}`;\n continue;\n }\n const previous = points[index - 1]!;\n const r = Math.min(radius, distance(previous, point) / 2, distance(point, next) / 2);\n const before = towards(point, previous, r);\n const after = towards(point, next, r);\n path += ` L${before.x} ${before.y} Q${point.x} ${point.y} ${after.x} ${after.y}`;\n }\n return path;\n}\n\n/** 从 from 朝 to 走 length 的点 */\nfunction towards(from: DiagramPoint, to: DiagramPoint, length: number): DiagramPoint {\n const total = distance(from, to);\n if (total === 0) return from;\n return {\n x: from.x + ((to.x - from.x) * length) / total,\n y: from.y + ((to.y - from.y) * length) / total,\n };\n}\n\n/** 折线上走到一半长度的点:连线文字默认放在这里 */\nexport function polylineMidpoint(points: readonly DiagramPoint[]): DiagramPoint {\n if (points.length === 0) return { x: 0, y: 0 };\n let remaining =\n points.slice(1).reduce((sum, point, index) => sum + distance(points[index]!, point), 0) / 2;\n for (let index = 1; index < points.length; index++) {\n const segment = distance(points[index - 1]!, points[index]!);\n if (remaining <= segment) return towards(points[index - 1]!, points[index]!, remaining);\n remaining -= segment;\n }\n return points[points.length - 1]!;\n}\n\n/**\n * 折线终点的箭头:三角形的三个顶点(SVG polygon 的 points),尖端在终点,沿最后一段的方向;\n * 没有方向(少于两个不同的点)时返回空串\n */\nexport function arrowHead(points: readonly DiagramPoint[], size = 8): string {\n const tip = points[points.length - 1];\n // 最后一段可能长度为零(端点重复):往前找一个不同的点定方向\n const from = [...points]\n .reverse()\n .find((point) => tip && (point.x !== tip.x || point.y !== tip.y));\n if (!tip || !from) return '';\n const angle = Math.atan2(tip.y - from.y, tip.x - from.x);\n const back = { x: tip.x - Math.cos(angle) * size, y: tip.y - Math.sin(angle) * size };\n const half = size * 0.5;\n const left = { x: back.x + Math.sin(angle) * half, y: back.y - Math.cos(angle) * half };\n const right = { x: back.x - Math.sin(angle) * half, y: back.y + Math.cos(angle) * half };\n const round = (value: number) => Math.round(value * 100) / 100;\n return [tip, left, right].map((point) => `${round(point.x)},${round(point.y)}`).join(' ');\n}\n\n/** 去掉终点处箭头占的那一段:线画到箭头的底边,不从箭尖下面露出来 */\nexport function trimEnd(points: readonly DiagramPoint[], length: number): DiagramPoint[] {\n if (points.length < 2 || length <= 0) return [...points];\n const tip = points[points.length - 1]!;\n const before = points[points.length - 2]!;\n const segment = distance(before, tip);\n if (segment <= length) return [...points];\n return [...points.slice(0, -1), towards(tip, before, length)];\n}\n\n/** 对齐线:拖动时与别的节点对齐的那条线(画布坐标的线段) */\nexport interface DiagramGuide {\n /** 起点 */\n from: DiagramPoint;\n /** 终点 */\n to: DiagramPoint;\n}\n\n/**\n * 拖动中的矩形向别的矩形对齐:左、中、右任一条竖线与别人的左、中、右相差不到 tolerance 时吸过去,横向同理(上、中、下)。\n * 返回吸附后的位置与要画的对齐线(每个方向取差得最少的那一条,线从两个矩形里靠外的一端画到另一端)\n */\nexport function alignToGuides(\n rect: DiagramRect,\n others: readonly DiagramRect[],\n tolerance: number,\n): { x: number; y: number; guides: DiagramGuide[] } {\n const lines = (start: number, size: number) => [start, start + size / 2, start + size];\n let best: { axis: 'x' | 'y'; diff: number; at: number; other: DiagramRect }[] = [];\n for (const axis of ['x', 'y'] as const) {\n const own = axis === 'x' ? lines(rect.x, rect.width) : lines(rect.y, rect.height);\n let found: { diff: number; at: number; other: DiagramRect } | undefined;\n for (const other of others) {\n const theirs = axis === 'x' ? lines(other.x, other.width) : lines(other.y, other.height);\n for (const mine of own) {\n for (const line of theirs) {\n const diff = line - mine;\n if (Math.abs(diff) <= tolerance && (!found || Math.abs(diff) < Math.abs(found.diff))) {\n found = { diff, at: line, other };\n }\n }\n }\n }\n if (found) best = [...best, { axis, ...found }];\n }\n const x = rect.x + (best.find((item) => item.axis === 'x')?.diff ?? 0);\n const y = rect.y + (best.find((item) => item.axis === 'y')?.diff ?? 0);\n const placed = { ...rect, x, y };\n const guides = best.map(({ axis, at, other }) =>\n axis === 'x'\n ? {\n from: { x: at, y: Math.min(placed.y, other.y) },\n to: { x: at, y: Math.max(placed.y + placed.height, other.y + other.height) },\n }\n : {\n from: { x: Math.min(placed.x, other.x), y: at },\n to: { x: Math.max(placed.x + placed.width, other.x + other.width), y: at },\n },\n );\n return { x, y, guides };\n}\n\n/** 点落在哪个矩形里:后面的在上层,先找后面的 */\nexport function rectAt<T extends DiagramRect>(\n rects: readonly T[],\n point: DiagramPoint,\n): T | undefined {\n for (let index = rects.length - 1; index >= 0; index--) {\n const rect = rects[index]!;\n if (\n point.x >= rect.x &&\n point.x <= rect.x + rect.width &&\n point.y >= rect.y &&\n point.y <= rect.y + rect.height\n ) {\n return rect;\n }\n }\n return undefined;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 画布(子路径 `@zerodep-dev/vue-tsx-pro-ui/diagram`):能平移、缩放的视口里摆放 HTML 节点与 SVG 连线,选择、框选、拖动、连线、键盘与读屏;
|
|
3
|
+
* 标准节点 DiagramNode、泳道 DiagramLanes、控制器 useDiagram、缩放按钮 DiagramControls、小地图 DiagramMinimap、
|
|
4
|
+
* 导出 diagramToSvg / diagramToPng 与几何、路由工具。流程图、组织架构图、关系图都建在它上面。
|
|
5
|
+
*
|
|
6
|
+
* import { Diagram, DiagramControls, DiagramNode, useDiagram } from '@zerodep-dev/vue-tsx-pro-ui/diagram';
|
|
7
|
+
*
|
|
8
|
+
* 不放在主入口:只有画图的页面用得到;文案自带中英文(messages.ts),别的语言在 Lang.messages.diagram 里补。
|
|
9
|
+
*/
|
|
10
|
+
export { Diagram, DiagramContext, diagramDynamicStyles, diagramStyles, type DiagramConnection, type DiagramDragModes, type DiagramEdgeItem, type DiagramGrids, type DiagramItemState, type DiagramNodeItem, type DiagramNodeMove, type DiagramProps, type DiagramReconnection, type DiagramRoutings, type DiagramSelection, type DiagramSelectionModes, } from './Diagram';
|
|
11
|
+
export { DiagramControls, diagramControlsStyles, type DiagramControlsPlacements, type DiagramControlsProps, } from './DiagramControls';
|
|
12
|
+
export { DiagramLanes, diagramLanesDynamicStyles, diagramLanesStyles, lanesExtent, type DiagramLane, type DiagramLanesLayout, type DiagramLanesProps, } from './DiagramLanes';
|
|
13
|
+
export { DiagramMinimap, diagramMinimapStyles, type DiagramMinimapPlacements, type DiagramMinimapProps, } from './DiagramMinimap';
|
|
14
|
+
export { DiagramNode, diagramNodeStyles, diagramNodeToneStyles, type DiagramNodeProps, type DiagramNodeShapes, } from './DiagramNode';
|
|
15
|
+
export { diagramInternals, useDiagram, type DiagramController, type DiagramInternals, type DiagramOptions, } from './controller';
|
|
16
|
+
export { diagramToPng, diagramToSvg, type DiagramExportOptions } from './export';
|
|
17
|
+
export { alignToGuides, arrowHead, borderPoint, boundsOf, polylineMidpoint, polylinePath, rectAt, rectCenter, rectContains, rectFromCorners, rectsIntersect, trimEnd, type DiagramGuide, type DiagramPoint, type DiagramRect, } from './geometry';
|
|
18
|
+
export { diagramMessages, type DiagramMessages } from './messages';
|
|
19
|
+
export { chooseSides, nearestSide, routeEdges, routeOrthogonal, sidePoint, simplify, straightRoute, type DiagramSide, type DiagramSides, type RouteEdge, type RouteEnd, type RouteOptions, } from './route';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { diagramInternals, useDiagram } from "./controller.js";
|
|
2
|
+
import { DiagramNode, diagramNodeStyles, diagramNodeToneStyles } from "./DiagramNode.js";
|
|
3
|
+
import { alignToGuides, arrowHead, borderPoint, boundsOf, polylineMidpoint, polylinePath, rectAt, rectCenter, rectContains, rectFromCorners, rectsIntersect, trimEnd } from "./geometry.js";
|
|
4
|
+
import { diagramMessages } from "./messages.js";
|
|
5
|
+
import { chooseSides, nearestSide, routeEdges, routeOrthogonal, sidePoint, simplify, straightRoute } from "./route.js";
|
|
6
|
+
import { Diagram, DiagramContext, diagramDynamicStyles, diagramStyles } from "./Diagram.js";
|
|
7
|
+
import { DiagramControls, diagramControlsStyles } from "./DiagramControls.js";
|
|
8
|
+
import { DiagramLanes, diagramLanesDynamicStyles, diagramLanesStyles, lanesExtent } from "./DiagramLanes.js";
|
|
9
|
+
import { DiagramMinimap, diagramMinimapStyles } from "./DiagramMinimap.js";
|
|
10
|
+
import { diagramToPng, diagramToSvg } from "./export.js";
|
|
11
|
+
export { Diagram, DiagramContext, DiagramControls, DiagramLanes, DiagramMinimap, DiagramNode, alignToGuides, arrowHead, borderPoint, boundsOf, chooseSides, diagramControlsStyles, diagramDynamicStyles, diagramInternals, diagramLanesDynamicStyles, diagramLanesStyles, diagramMessages, diagramMinimapStyles, diagramNodeStyles, diagramNodeToneStyles, diagramStyles, diagramToPng, diagramToSvg, lanesExtent, nearestSide, polylineMidpoint, polylinePath, rectAt, rectCenter, rectContains, rectFromCorners, rectsIntersect, routeEdges, routeOrthogonal, sidePoint, simplify, straightRoute, trimEnd, useDiagram };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 画布(Diagram、DiagramControls)自带的文案:中文与英文各一份,
|
|
3
|
+
* 可以在 createUi 的 lang.messages.diagram 里按字段改写(见 config/lang/messages.ts)
|
|
4
|
+
*/
|
|
5
|
+
import type { MessageTable } from '../config/lang/messages';
|
|
6
|
+
/** 画布的文案 */
|
|
7
|
+
export interface DiagramMessages {
|
|
8
|
+
/** 画布的角色说明(aria-roledescription) */
|
|
9
|
+
readonly canvas: string;
|
|
10
|
+
/** 节点的角色说明 */
|
|
11
|
+
readonly node: string;
|
|
12
|
+
/** 连线的角色说明 */
|
|
13
|
+
readonly edge: string;
|
|
14
|
+
/** 连线的默认名称:`从 提交申请 到 部门审批` */
|
|
15
|
+
readonly edgeBetween: (from: string, to: string) => string;
|
|
16
|
+
/** 缩放工具栏的名称 */
|
|
17
|
+
readonly controls: string;
|
|
18
|
+
/** 放大 */
|
|
19
|
+
readonly zoomIn: string;
|
|
20
|
+
/** 缩小 */
|
|
21
|
+
readonly zoomOut: string;
|
|
22
|
+
/** 适应画布 */
|
|
23
|
+
readonly fit: string;
|
|
24
|
+
/** 当前缩放(百分数),点击回到原大 */
|
|
25
|
+
readonly zoomLevel: (percent: number) => string;
|
|
26
|
+
}
|
|
27
|
+
/** 画布的内置文案 */
|
|
28
|
+
export declare const diagramMessages: MessageTable<DiagramMessages>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/diagram/messages.ts
|
|
2
|
+
/** 画布的内置文案 */
|
|
3
|
+
var diagramMessages = {
|
|
4
|
+
"zh-CN": {
|
|
5
|
+
canvas: "画布",
|
|
6
|
+
node: "节点",
|
|
7
|
+
edge: "连线",
|
|
8
|
+
edgeBetween: (from, to) => `从 ${from} 到 ${to}`,
|
|
9
|
+
controls: "缩放",
|
|
10
|
+
zoomIn: "放大",
|
|
11
|
+
zoomOut: "缩小",
|
|
12
|
+
fit: "适应画布",
|
|
13
|
+
zoomLevel: (percent) => `缩放 ${percent}%,点击回到原大`
|
|
14
|
+
},
|
|
15
|
+
"en-US": {
|
|
16
|
+
canvas: "Canvas",
|
|
17
|
+
node: "Node",
|
|
18
|
+
edge: "Connection",
|
|
19
|
+
edgeBetween: (from, to) => `From ${from} to ${to}`,
|
|
20
|
+
controls: "Zoom",
|
|
21
|
+
zoomIn: "Zoom in",
|
|
22
|
+
zoomOut: "Zoom out",
|
|
23
|
+
fit: "Fit to view",
|
|
24
|
+
zoomLevel: (percent) => `Zoom ${percent}%, click to reset to 100%`
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { diagramMessages };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","names":[],"sources":["../../src/diagram/messages.ts"],"sourcesContent":["/**\n * 画布(Diagram、DiagramControls)自带的文案:中文与英文各一份,\n * 可以在 createUi 的 lang.messages.diagram 里按字段改写(见 config/lang/messages.ts)\n */\nimport type { MessageTable } from '../config/lang/messages';\n\n/** 画布的文案 */\nexport interface DiagramMessages {\n /** 画布的角色说明(aria-roledescription) */\n readonly canvas: string;\n /** 节点的角色说明 */\n readonly node: string;\n /** 连线的角色说明 */\n readonly edge: string;\n /** 连线的默认名称:`从 提交申请 到 部门审批` */\n readonly edgeBetween: (from: string, to: string) => string;\n /** 缩放工具栏的名称 */\n readonly controls: string;\n /** 放大 */\n readonly zoomIn: string;\n /** 缩小 */\n readonly zoomOut: string;\n /** 适应画布 */\n readonly fit: string;\n /** 当前缩放(百分数),点击回到原大 */\n readonly zoomLevel: (percent: number) => string;\n}\n\n/** 画布的内置文案 */\nexport const diagramMessages: MessageTable<DiagramMessages> = {\n 'zh-CN': {\n canvas: '画布',\n node: '节点',\n edge: '连线',\n edgeBetween: (from, to) => `从 ${from} 到 ${to}`,\n controls: '缩放',\n zoomIn: '放大',\n zoomOut: '缩小',\n fit: '适应画布',\n zoomLevel: (percent) => `缩放 ${percent}%,点击回到原大`,\n },\n 'en-US': {\n canvas: 'Canvas',\n node: 'Node',\n edge: 'Connection',\n edgeBetween: (from, to) => `From ${from} to ${to}`,\n controls: 'Zoom',\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n fit: 'Fit to view',\n zoomLevel: (percent) => `Zoom ${percent}%, click to reset to 100%`,\n },\n};\n"],"mappings":";;AA6BA,IAAa,kBAAiD;CAC5D,SAAS;EACP,QAAQ;EACR,MAAM;EACN,MAAM;EACN,cAAc,MAAM,OAAO,KAAK,KAAK,KAAK;EAC1C,UAAU;EACV,QAAQ;EACR,SAAS;EACT,KAAK;EACL,YAAY,YAAY,MAAM,QAAQ;CACxC;CACA,SAAS;EACP,QAAQ;EACR,MAAM;EACN,MAAM;EACN,cAAc,MAAM,OAAO,QAAQ,KAAK,MAAM;EAC9C,UAAU;EACV,QAAQ;EACR,SAAS;EACT,KAAK;EACL,YAAY,YAAY,QAAQ,QAAQ;CAC1C;AACF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 正交路由(纯函数):连线只走横竖两个方向,绕开节点,拐弯尽量少;同一个节点同一条边上的几条线均匀分开。
|
|
3
|
+
* 做法同 Wybrow 等人的正交连接线路由(开源实现见 orthogonal-connector,MIT):
|
|
4
|
+
* 1. 每个节点外扩 margin 作为障碍;起点、终点从所在边的端口往外伸出一小段(stub)
|
|
5
|
+
* 2. 障碍的边线、端口、两端之间的中线画成横竖“标尺”,标尺的交点(不在障碍里的)就是可走的格点
|
|
6
|
+
* 3. 在格点上跑 A*:代价是长度加拐弯惩罚,状态带方向,所以同样长时选拐弯少的
|
|
7
|
+
* 找不到路时退回成三段的折线(不避障)。画布有几百个节点也只取两端附近的障碍,单条线的格点在几千以内。
|
|
8
|
+
*/
|
|
9
|
+
import { type DiagramPoint, type DiagramRect } from './geometry';
|
|
10
|
+
/** 节点的四条边 */
|
|
11
|
+
export interface DiagramSides {
|
|
12
|
+
/** 上边 */
|
|
13
|
+
top: unknown;
|
|
14
|
+
/** 右边 */
|
|
15
|
+
right: unknown;
|
|
16
|
+
/** 下边 */
|
|
17
|
+
bottom: unknown;
|
|
18
|
+
/** 左边 */
|
|
19
|
+
left: unknown;
|
|
20
|
+
}
|
|
21
|
+
/** 连线从哪条边出去、进来 */
|
|
22
|
+
export type DiagramSide = keyof DiagramSides;
|
|
23
|
+
/** 一端:节点的矩形、从哪条边、边上的哪一点(不写时取边的中点) */
|
|
24
|
+
export interface RouteEnd {
|
|
25
|
+
/** 节点的矩形 */
|
|
26
|
+
rect: DiagramRect;
|
|
27
|
+
/** 从哪条边;不写时按两端的相对位置选 */
|
|
28
|
+
side?: DiagramSide;
|
|
29
|
+
/** 边上的点(端口分配给出);不写时取边的中点 */
|
|
30
|
+
point?: DiagramPoint;
|
|
31
|
+
}
|
|
32
|
+
/** routeOrthogonal 的选项 */
|
|
33
|
+
export interface RouteOptions {
|
|
34
|
+
/** 绕开节点时离节点的距离,也是端口伸出的长度,默认 16 */
|
|
35
|
+
margin?: number;
|
|
36
|
+
/** 拐一个弯折合多少长度,默认 40:同样能到时选拐弯少的 */
|
|
37
|
+
bendPenalty?: number;
|
|
38
|
+
}
|
|
39
|
+
/** 边的中点 */
|
|
40
|
+
export declare function sidePoint(rect: DiagramRect, side: DiagramSide): DiagramPoint;
|
|
41
|
+
/**
|
|
42
|
+
* 两个节点之间按相对位置选出、进的边:横向隔得开就左右连,否则上下连;
|
|
43
|
+
* 目标在右边时从右边出、从左边进,在下面时从下边出、从上边进,反过来亦然
|
|
44
|
+
*/
|
|
45
|
+
export declare function chooseSides(from: DiagramRect, to: DiagramRect): [DiagramSide, DiagramSide];
|
|
46
|
+
/** 去掉共线的中间点与重复点 */
|
|
47
|
+
export declare function simplify(points: readonly DiagramPoint[]): DiagramPoint[];
|
|
48
|
+
/**
|
|
49
|
+
* 两个节点之间的正交折线:从 from 的一条边出去,进 to 的一条边,绕开 obstacles(不含两端自己,函数会把两端也算上)。
|
|
50
|
+
* 返回含两端端口的折线点(画布坐标),可以直接交给 Diagram 的 edges[].points
|
|
51
|
+
*/
|
|
52
|
+
export declare function routeOrthogonal(from: RouteEnd, to: RouteEnd, obstacles?: readonly DiagramRect[], options?: RouteOptions): DiagramPoint[];
|
|
53
|
+
/** routeEdges 的一条连线:两端节点的标识,可以指定出、进的边 */
|
|
54
|
+
export interface RouteEdge {
|
|
55
|
+
/** 连线的标识 */
|
|
56
|
+
id: string;
|
|
57
|
+
/** 起点节点 */
|
|
58
|
+
from: string;
|
|
59
|
+
/** 终点节点 */
|
|
60
|
+
to: string;
|
|
61
|
+
/** 从起点的哪条边出去;不写时自动选 */
|
|
62
|
+
fromSide?: DiagramSide;
|
|
63
|
+
/** 从终点的哪条边进来;不写时自动选 */
|
|
64
|
+
toSide?: DiagramSide;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 一组连线一起路由:先定每条线的出、进边,同一个节点同一条边上的几条线按对端的位置排开(端口分配,线不挤在一个点),
|
|
68
|
+
* 再逐条绕开全部节点。返回连线标识 → 折线点;两端节点缺了的连线不在结果里。
|
|
69
|
+
* obstacles 不写时用 nodes 本身;拖动时只重算相连的几条线,可以把全部节点作为 obstacles 传进来
|
|
70
|
+
*/
|
|
71
|
+
export declare function routeEdges(nodes: readonly (DiagramRect & {
|
|
72
|
+
id: string;
|
|
73
|
+
})[], edges: readonly RouteEdge[], options?: RouteOptions & {
|
|
74
|
+
obstacles?: readonly (DiagramRect & {
|
|
75
|
+
id: string;
|
|
76
|
+
})[];
|
|
77
|
+
}): Map<string, DiagramPoint[]>;
|
|
78
|
+
/** 两个节点之间的直线:两端落在边框上(没有路由时的默认画法) */
|
|
79
|
+
export declare function straightRoute(from: DiagramRect, to: DiagramRect): DiagramPoint[];
|
|
80
|
+
/** 离点最近的边:连线拖到节点上时从这条边进去 */
|
|
81
|
+
export declare function nearestSide(rect: DiagramRect, point: DiagramPoint): DiagramSide;
|