@zerodep-dev/vue-tsx-pro-ui 0.0.0-stage → 0.2.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/code-editor/CodeEditor.d.ts +18 -0
- package/dist/code-editor/CodeEditor.js +57 -0
- package/dist/code-editor/CodeEditor.js.map +1 -0
- package/dist/code-editor/editor.d.ts +52 -0
- package/dist/code-editor/editor.js +225 -0
- package/dist/code-editor/editor.js.map +1 -0
- package/dist/code-editor/index.d.ts +9 -0
- package/dist/code-editor/index.js +3 -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 +404 -0
- package/dist/config/lang/en-US.js.map +1 -0
- package/dist/config/lang/format.d.ts +51 -0
- package/dist/config/lang/format.js +120 -0
- package/dist/config/lang/format.js.map +1 -0
- package/dist/config/lang/lang.d.ts +666 -0
- package/dist/config/lang/lang.js +31 -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 +404 -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 +20 -0
- package/dist/diagram/index.js +12 -0
- package/dist/diagram/layout.d.ts +57 -0
- package/dist/diagram/layout.js +50 -0
- package/dist/diagram/layout.js.map +1 -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 +165 -0
- package/dist/form/Field.js +338 -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 +195 -0
- package/dist/form/useForm.js +416 -0
- package/dist/form/useForm.js.map +1 -0
- package/dist/index.d.ts +285 -0
- package/dist/index.js +285 -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 +598 -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 +187 -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 +66 -0
- package/dist/input/people.js +47 -0
- package/dist/input/people.js.map +1 -0
- package/dist/input/remote-items.d.ts +22 -0
- package/dist/input/remote-items.js +41 -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 +67 -0
- package/dist/patterns/QueryTable.js +301 -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 +174 -0
- package/dist/patterns/messages.js +186 -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/clone.d.ts +8 -0
- package/dist/utils/data/clone.js +21 -0
- package/dist/utils/data/clone.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 +196 -0
- package/dist/utils/data/date.js +421 -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 +62 -0
- package/dist/utils/data/numeric.js +178 -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 +14 -0
- package/dist/utils/dom/download.js +36 -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/error-message.d.ts +17 -0
- package/dist/utils/request/error-message.js +50 -0
- package/dist/utils/request/error-message.js.map +1 -0
- package/dist/utils/request/http.d.ts +165 -0
- package/dist/utils/request/http.js +247 -0
- package/dist/utils/request/http.js.map +1 -0
- package/dist/utils/request/use-autosave.d.ts +35 -0
- package/dist/utils/request/use-autosave.js +69 -0
- package/dist/utils/request/use-autosave.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 +258 -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":";;AAyBA,SAAgB,SACd,OACA,SAAiC,CAAC,GACT;CACzB,IAAI,OAAO;CACX,IAAI,MAAM;CACV,IAAI,QAAQ;CACZ,IAAI,SAAS;CACb,KAAK,MAAM,QAAQ,OAAO;EACxB,OAAO,KAAK,IAAI,MAAM,KAAK,CAAC;EAC5B,MAAM,KAAK,IAAI,KAAK,KAAK,CAAC;EAC1B,QAAQ,KAAK,IAAI,OAAO,KAAK,IAAI,KAAK,KAAK;EAC3C,SAAS,KAAK,IAAI,QAAQ,KAAK,IAAI,KAAK,MAAM;CAChD;CACA,KAAK,MAAM,SAAS,QAAQ;EAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;EAC7B,MAAM,KAAK,IAAI,KAAK,MAAM,CAAC;EAC3B,QAAQ,KAAK,IAAI,OAAO,MAAM,CAAC;EAC/B,SAAS,KAAK,IAAI,QAAQ,MAAM,CAAC;CACnC;CACA,OAAO,SAAS,WACZ,KAAA,IACA;EAAE,GAAG;EAAM,GAAG;EAAK,OAAO,QAAQ;EAAM,QAAQ,SAAS;CAAI;AACnE;;AAGA,SAAgB,gBAAgB,GAAiB,GAA8B;CAC7E,OAAO;EACL,GAAG,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;EACpB,GAAG,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC;EACpB,OAAO,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC;EACzB,QAAQ,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC;CAC5B;AACF;;AAGA,SAAgB,eAAe,GAAgB,GAAyB;CACtE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE;AAC7F;;AAGA,SAAgB,aAAa,OAAoB,OAA6B;CAC5E,OACE,MAAM,KAAK,MAAM,KACjB,MAAM,KAAK,MAAM,KACjB,MAAM,IAAI,MAAM,SAAS,MAAM,IAAI,MAAM,SACzC,MAAM,IAAI,MAAM,UAAU,MAAM,IAAI,MAAM;AAE9C;;AAGA,SAAgB,WAAW,MAAiC;CAC1D,OAAO;EAAE,GAAG,KAAK,IAAI,KAAK,QAAQ;EAAG,GAAG,KAAK,IAAI,KAAK,SAAS;CAAE;AACnE;;AAGA,SAAgB,YAAY,MAAmB,QAAoC;CACjF,MAAM,SAAS,WAAW,IAAI;CAC9B,MAAM,KAAK,OAAO,IAAI,OAAO;CAC7B,MAAM,KAAK,OAAO,IAAI,OAAO;CAC7B,IAAI,OAAO,KAAK,OAAO,GAAG,OAAO;CAEjC,MAAM,QAAQ,KAAK,IACjB,OAAO,IAAI,WAAW,KAAK,QAAQ,IAAI,KAAK,IAAI,EAAE,GAClD,OAAO,IAAI,WAAW,KAAK,SAAS,IAAI,KAAK,IAAI,EAAE,CACrD;CACA,OAAO;EAAE,GAAG,OAAO,IAAI,KAAK;EAAO,GAAG,OAAO,IAAI,KAAK;CAAM;AAC9D;;AAGA,IAAM,YAAY,GAAiB,MAAoB,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;;;;;AAMtF,SAAgB,aAAa,QAAiC,SAAS,GAAW;CAChF,IAAI,OAAO,WAAW,GAAG,OAAO;CAChC,MAAM,CAAC,SAAS;CAChB,IAAI,OAAO,IAAI,MAAM,EAAE,GAAG,MAAM;CAChC,KAAK,IAAI,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS;EAClD,MAAM,QAAQ,OAAO;EACrB,MAAM,OAAO,OAAO,QAAQ;EAC5B,IAAI,CAAC,QAAQ,UAAU,GAAG;GACxB,QAAQ,KAAK,MAAM,EAAE,GAAG,MAAM;GAC9B;EACF;EACA,MAAM,WAAW,OAAO,QAAQ;EAChC,MAAM,IAAI,KAAK,IAAI,QAAQ,SAAS,UAAU,KAAK,IAAI,GAAG,SAAS,OAAO,IAAI,IAAI,CAAC;EACnF,MAAM,SAAS,QAAQ,OAAO,UAAU,CAAC;EACzC,MAAM,QAAQ,QAAQ,OAAO,MAAM,CAAC;EACpC,QAAQ,KAAK,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM;CAC/E;CACA,OAAO;AACT;;AAGA,SAAS,QAAQ,MAAoB,IAAkB,QAA8B;CACnF,MAAM,QAAQ,SAAS,MAAM,EAAE;CAC/B,IAAI,UAAU,GAAG,OAAO;CACxB,OAAO;EACL,GAAG,KAAK,KAAM,GAAG,IAAI,KAAK,KAAK,SAAU;EACzC,GAAG,KAAK,KAAM,GAAG,IAAI,KAAK,KAAK,SAAU;CAC3C;AACF;;AAGA,SAAgB,iBAAiB,QAA+C;CAC9E,IAAI,OAAO,WAAW,GAAG,OAAO;EAAE,GAAG;EAAG,GAAG;CAAE;CAC7C,IAAI,YACF,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,UAAU,MAAM,SAAS,OAAO,QAAS,KAAK,GAAG,CAAC,IAAI;CAC5F,KAAK,IAAI,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS;EAClD,MAAM,UAAU,SAAS,OAAO,QAAQ,IAAK,OAAO,MAAO;EAC3D,IAAI,aAAa,SAAS,OAAO,QAAQ,OAAO,QAAQ,IAAK,OAAO,QAAS,SAAS;EACtF,aAAa;CACf;CACA,OAAO,OAAO,OAAO,SAAS;AAChC;;;;;AAMA,SAAgB,UAAU,QAAiC,OAAO,GAAW;CAC3E,MAAM,MAAM,OAAO,OAAO,SAAS;CAEnC,MAAM,OAAO,CAAC,GAAG,MAAM,CAAC,CACrB,QAAQ,CAAC,CACT,MAAM,UAAU,QAAQ,MAAM,MAAM,IAAI,KAAK,MAAM,MAAM,IAAI,EAAE;CAClE,IAAI,CAAC,OAAO,CAAC,MAAM,OAAO;CAC1B,MAAM,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,CAAC;CACvD,MAAM,OAAO;EAAE,GAAG,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI;EAAM,GAAG,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI;CAAK;CACpF,MAAM,OAAO,OAAO;CACpB,MAAM,OAAO;EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI;EAAM,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI;CAAK;CACtF,MAAM,QAAQ;EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI;EAAM,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI;CAAK;CACvF,MAAM,SAAS,UAAkB,KAAK,MAAM,QAAQ,GAAG,IAAI;CAC3D,OAAO;EAAC;EAAK;EAAM;CAAK,CAAC,CAAC,KAAK,UAAU,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;AAC1F;;AAGA,SAAgB,QAAQ,QAAiC,QAAgC;CACvF,IAAI,OAAO,SAAS,KAAK,UAAU,GAAG,OAAO,CAAC,GAAG,MAAM;CACvD,MAAM,MAAM,OAAO,OAAO,SAAS;CACnC,MAAM,SAAS,OAAO,OAAO,SAAS;CAEtC,IADgB,SAAS,QAAQ,GAC7B,KAAW,QAAQ,OAAO,CAAC,GAAG,MAAM;CACxC,OAAO,CAAC,GAAG,OAAO,MAAM,GAAG,EAAE,GAAG,QAAQ,KAAK,QAAQ,MAAM,CAAC;AAC9D;;;;;AAcA,SAAgB,cACd,MACA,QACA,WACkD;CAClD,MAAM,SAAS,OAAe,SAAiB;EAAC;EAAO,QAAQ,OAAO;EAAG,QAAQ;CAAI;CACrF,IAAI,OAA4E,CAAC;CACjF,KAAK,MAAM,QAAQ,CAAC,KAAK,GAAG,GAAY;EACtC,MAAM,MAAM,SAAS,MAAM,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,MAAM,KAAK,GAAG,KAAK,MAAM;EAChF,IAAI;EACJ,KAAK,MAAM,SAAS,QAAQ;GAC1B,MAAM,SAAS,SAAS,MAAM,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,MAAM,MAAM,GAAG,MAAM,MAAM;GACvF,KAAK,MAAM,QAAQ,KACjB,KAAK,MAAM,QAAQ,QAAQ;IACzB,MAAM,OAAO,OAAO;IACpB,IAAI,KAAK,IAAI,IAAI,KAAK,cAAc,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,IAAI,IAChF,QAAQ;KAAE;KAAM,IAAI;KAAM;IAAM;GAEpC;EAEJ;EACA,IAAI,OAAO,OAAO,CAAC,GAAG,MAAM;GAAE;GAAM,GAAG;EAAM,CAAC;CAChD;CACA,MAAM,IAAI,KAAK,KAAK,KAAK,MAAM,SAAS,KAAK,SAAS,GAAG,CAAC,EAAE,QAAQ;CACpE,MAAM,IAAI,KAAK,KAAK,KAAK,MAAM,SAAS,KAAK,SAAS,GAAG,CAAC,EAAE,QAAQ;CACpE,MAAM,SAAS;EAAE,GAAG;EAAM;EAAG;CAAE;CAY/B,OAAO;EAAE;EAAG;EAAG,QAXA,KAAK,KAAK,EAAE,MAAM,IAAI,YACnC,SAAS,MACL;GACE,MAAM;IAAE,GAAG;IAAI,GAAG,KAAK,IAAI,OAAO,GAAG,MAAM,CAAC;GAAE;GAC9C,IAAI;IAAE,GAAG;IAAI,GAAG,KAAK,IAAI,OAAO,IAAI,OAAO,QAAQ,MAAM,IAAI,MAAM,MAAM;GAAE;EAC7E,IACA;GACE,MAAM;IAAE,GAAG,KAAK,IAAI,OAAO,GAAG,MAAM,CAAC;IAAG,GAAG;GAAG;GAC9C,IAAI;IAAE,GAAG,KAAK,IAAI,OAAO,IAAI,OAAO,OAAO,MAAM,IAAI,MAAM,KAAK;IAAG,GAAG;GAAG;EAC3E,CAES;CAAO;AACxB;;AAGA,SAAgB,OACd,OACA,OACe;CACf,KAAK,IAAI,QAAQ,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS;EACtD,MAAM,OAAO,MAAM;EACnB,IACE,MAAM,KAAK,KAAK,KAChB,MAAM,KAAK,KAAK,IAAI,KAAK,SACzB,MAAM,KAAK,KAAK,KAChB,MAAM,KAAK,KAAK,IAAI,KAAK,QAEzB,OAAO;CAEX;AAEF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 画布(子路径 `@zerodep-dev/vue-tsx-pro-ui/diagram`):能平移、缩放的视口里摆放 HTML 节点与 SVG 连线,选择、框选、拖动、连线、键盘与读屏;
|
|
3
|
+
* 标准节点 DiagramNode、泳道 DiagramLanes、控制器 useDiagram、缩放按钮 DiagramControls、小地图 DiagramMinimap、
|
|
4
|
+
* 导出 diagramToSvg / diagramToPng、分层自动排版 layoutLayers 与几何、路由工具。流程图、组织架构图、关系图都建在它上面。
|
|
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 { layoutLayers, type LayerEdge, type LayerNode, type LayerOptions, type PlacedLayerNode, } from './layout';
|
|
19
|
+
export { diagramMessages, type DiagramMessages } from './messages';
|
|
20
|
+
export { chooseSides, nearestSide, routeEdges, routeOrthogonal, sidePoint, simplify, straightRoute, type DiagramSide, type DiagramSides, type RouteEdge, type RouteEnd, type RouteOptions, } from './route';
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
+
import { layoutLayers } from "./layout.js";
|
|
12
|
+
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, layoutLayers, nearestSide, polylineMidpoint, polylinePath, rectAt, rectCenter, rectContains, rectFromCorners, rectsIntersect, routeEdges, routeOrthogonal, sidePoint, simplify, straightRoute, trimEnd, useDiagram };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 分层自动排版:从根节点沿连线走,按最长步数从左往右分列,同一列从上往下排,每列在最高的那列里垂直居中。
|
|
3
|
+
* 绕回去的线(环)不算步数,否则会越排越远;不该影响排版的线(流程图的退回、提级)由调用方先去掉。
|
|
4
|
+
* 已经有位置的节点用它自己的 x、y(只给了一个时另一个照排),照样占一个格子。流程图、审批链、简单的依赖图都够用。
|
|
5
|
+
*
|
|
6
|
+
* const placed = layoutLayers(
|
|
7
|
+
* nodes.map((n) => ({ id: n.id, width: 140, height: 52 })),
|
|
8
|
+
* edges.filter((e) => e.kind !== 'return'),
|
|
9
|
+
* { roots: ['start'] },
|
|
10
|
+
* );
|
|
11
|
+
*/
|
|
12
|
+
/** 要排的一个节点:大小,已有的位置 */
|
|
13
|
+
export interface LayerNode {
|
|
14
|
+
/** 节点的标识,连线按它连 */
|
|
15
|
+
readonly id: string;
|
|
16
|
+
/** 宽 */
|
|
17
|
+
readonly width: number;
|
|
18
|
+
/** 高 */
|
|
19
|
+
readonly height: number;
|
|
20
|
+
/** 已有的横坐标(左上角);没有时排出来 */
|
|
21
|
+
readonly x?: number | null;
|
|
22
|
+
/** 已有的纵坐标(左上角);没有时排出来 */
|
|
23
|
+
readonly y?: number | null;
|
|
24
|
+
}
|
|
25
|
+
/** 一条连线:从哪到哪 */
|
|
26
|
+
export interface LayerEdge {
|
|
27
|
+
/** 起点节点的标识 */
|
|
28
|
+
readonly from: string;
|
|
29
|
+
/** 终点节点的标识 */
|
|
30
|
+
readonly to: string;
|
|
31
|
+
}
|
|
32
|
+
/** 排好的一个节点(画布坐标) */
|
|
33
|
+
export interface PlacedLayerNode {
|
|
34
|
+
/** 节点的标识 */
|
|
35
|
+
readonly id: string;
|
|
36
|
+
/** 横坐标(左上角) */
|
|
37
|
+
readonly x: number;
|
|
38
|
+
/** 纵坐标(左上角) */
|
|
39
|
+
readonly y: number;
|
|
40
|
+
/** 宽 */
|
|
41
|
+
readonly width: number;
|
|
42
|
+
/** 高 */
|
|
43
|
+
readonly height: number;
|
|
44
|
+
}
|
|
45
|
+
/** layoutLayers 的选项 */
|
|
46
|
+
export interface LayerOptions {
|
|
47
|
+
/** 从这些节点开始走(流程的开始节点);没走到的节点之后各自起头 */
|
|
48
|
+
roots?: readonly string[];
|
|
49
|
+
/** 列距(相邻两列左边的距离),默认 190 */
|
|
50
|
+
columnGap?: number;
|
|
51
|
+
/** 行距(相邻两行上边的距离),默认 96 */
|
|
52
|
+
rowGap?: number;
|
|
53
|
+
/** 画布边距,默认 32 */
|
|
54
|
+
margin?: number;
|
|
55
|
+
}
|
|
56
|
+
/** 排好每个节点的位置,按传入的先后返回 */
|
|
57
|
+
export declare function layoutLayers(nodes: readonly LayerNode[], edges: readonly LayerEdge[], { roots, columnGap, rowGap, margin }?: LayerOptions): PlacedLayerNode[];
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
//#region src/diagram/layout.ts
|
|
2
|
+
/** 排好每个节点的位置,按传入的先后返回 */
|
|
3
|
+
function layoutLayers(nodes, edges, { roots = [], columnGap = 190, rowGap = 96, margin = 32 } = {}) {
|
|
4
|
+
const ids = nodes.map((n) => n.id);
|
|
5
|
+
const forward = new Map(ids.map((id) => [id, []]));
|
|
6
|
+
for (const edge of edges) forward.get(edge.from)?.push(edge.to);
|
|
7
|
+
const back = /* @__PURE__ */ new Set();
|
|
8
|
+
const state = /* @__PURE__ */ new Map();
|
|
9
|
+
const order = [];
|
|
10
|
+
const visit = (id) => {
|
|
11
|
+
state.set(id, "visiting");
|
|
12
|
+
for (const next of forward.get(id) ?? []) if (state.get(next) === "visiting") back.add(`${id}>${next}`);
|
|
13
|
+
else if (!state.has(next)) visit(next);
|
|
14
|
+
state.set(id, "done");
|
|
15
|
+
order.unshift(id);
|
|
16
|
+
};
|
|
17
|
+
for (const id of [...roots, ...ids]) if (forward.has(id) && !state.has(id)) visit(id);
|
|
18
|
+
const column = new Map(ids.map((id) => [id, 0]));
|
|
19
|
+
for (const id of order) for (const next of forward.get(id) ?? []) {
|
|
20
|
+
if (back.has(`${id}>${next}`)) continue;
|
|
21
|
+
column.set(next, Math.max(column.get(next) ?? 0, (column.get(id) ?? 0) + 1));
|
|
22
|
+
}
|
|
23
|
+
const cellWidth = Math.max(0, ...nodes.map((n) => n.width));
|
|
24
|
+
const cellHeight = Math.max(0, ...nodes.map((n) => n.height));
|
|
25
|
+
const rows = /* @__PURE__ */ new Map();
|
|
26
|
+
for (const id of order) {
|
|
27
|
+
const c = column.get(id) ?? 0;
|
|
28
|
+
rows.set(c, [...rows.get(c) ?? [], id]);
|
|
29
|
+
}
|
|
30
|
+
const tallest = Math.max(1, ...[...rows.values()].map((r) => r.length));
|
|
31
|
+
const byId = new Map(nodes.map((n) => [n.id, n]));
|
|
32
|
+
const placed = /* @__PURE__ */ new Map();
|
|
33
|
+
for (const [c, members] of rows) members.forEach((id, i) => {
|
|
34
|
+
const node = byId.get(id);
|
|
35
|
+
const x = node.x ?? margin + c * columnGap + (cellWidth - node.width) / 2;
|
|
36
|
+
const y = node.y ?? margin + (i + (tallest - members.length) / 2) * rowGap + (cellHeight - node.height) / 2;
|
|
37
|
+
placed.set(id, {
|
|
38
|
+
id,
|
|
39
|
+
x,
|
|
40
|
+
y,
|
|
41
|
+
width: node.width,
|
|
42
|
+
height: node.height
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
return nodes.map((n) => placed.get(n.id));
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { layoutLayers };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","names":[],"sources":["../../src/diagram/layout.ts"],"sourcesContent":["/**\n * 分层自动排版:从根节点沿连线走,按最长步数从左往右分列,同一列从上往下排,每列在最高的那列里垂直居中。\n * 绕回去的线(环)不算步数,否则会越排越远;不该影响排版的线(流程图的退回、提级)由调用方先去掉。\n * 已经有位置的节点用它自己的 x、y(只给了一个时另一个照排),照样占一个格子。流程图、审批链、简单的依赖图都够用。\n *\n * const placed = layoutLayers(\n * nodes.map((n) => ({ id: n.id, width: 140, height: 52 })),\n * edges.filter((e) => e.kind !== 'return'),\n * { roots: ['start'] },\n * );\n */\n\n/** 要排的一个节点:大小,已有的位置 */\nexport interface LayerNode {\n /** 节点的标识,连线按它连 */\n readonly id: string;\n /** 宽 */\n readonly width: number;\n /** 高 */\n readonly height: number;\n /** 已有的横坐标(左上角);没有时排出来 */\n readonly x?: number | null;\n /** 已有的纵坐标(左上角);没有时排出来 */\n readonly y?: number | null;\n}\n\n/** 一条连线:从哪到哪 */\nexport interface LayerEdge {\n /** 起点节点的标识 */\n readonly from: string;\n /** 终点节点的标识 */\n readonly to: string;\n}\n\n/** 排好的一个节点(画布坐标) */\nexport interface PlacedLayerNode {\n /** 节点的标识 */\n readonly id: string;\n /** 横坐标(左上角) */\n readonly x: number;\n /** 纵坐标(左上角) */\n readonly y: number;\n /** 宽 */\n readonly width: number;\n /** 高 */\n readonly height: number;\n}\n\n/** layoutLayers 的选项 */\nexport interface LayerOptions {\n /** 从这些节点开始走(流程的开始节点);没走到的节点之后各自起头 */\n roots?: readonly string[];\n /** 列距(相邻两列左边的距离),默认 190 */\n columnGap?: number;\n /** 行距(相邻两行上边的距离),默认 96 */\n rowGap?: number;\n /** 画布边距,默认 32 */\n margin?: number;\n}\n\n/** 排好每个节点的位置,按传入的先后返回 */\nexport function layoutLayers(\n nodes: readonly LayerNode[],\n edges: readonly LayerEdge[],\n { roots = [], columnGap = 190, rowGap = 96, margin = 32 }: LayerOptions = {},\n): PlacedLayerNode[] {\n const ids = nodes.map((n) => n.id);\n const forward = new Map<string, string[]>(ids.map((id) => [id, []]));\n for (const edge of edges) forward.get(edge.from)?.push(edge.to);\n\n // 深度优先找出绕回去的线(指向还在路上的节点),去掉它们之后是无环的\n const back = new Set<string>();\n const state = new Map<string, 'visiting' | 'done'>();\n const order: string[] = [];\n const visit = (id: string) => {\n state.set(id, 'visiting');\n for (const next of forward.get(id) ?? []) {\n if (state.get(next) === 'visiting') back.add(`${id}>${next}`);\n else if (!state.has(next)) visit(next);\n }\n state.set(id, 'done');\n order.unshift(id);\n };\n for (const id of [...roots, ...ids]) if (forward.has(id) && !state.has(id)) visit(id);\n\n // 按拓扑序算最长步数:列号\n const column = new Map<string, number>(ids.map((id) => [id, 0]));\n for (const id of order) {\n for (const next of forward.get(id) ?? []) {\n if (back.has(`${id}>${next}`)) continue;\n column.set(next, Math.max(column.get(next) ?? 0, (column.get(id) ?? 0) + 1));\n }\n }\n\n // 每个格子按最大的节点算,节点在格子里居中\n const cellWidth = Math.max(0, ...nodes.map((n) => n.width));\n const cellHeight = Math.max(0, ...nodes.map((n) => n.height));\n const rows = new Map<number, string[]>();\n for (const id of order) {\n const c = column.get(id) ?? 0;\n rows.set(c, [...(rows.get(c) ?? []), id]);\n }\n const tallest = Math.max(1, ...[...rows.values()].map((r) => r.length));\n const byId = new Map(nodes.map((n) => [n.id, n]));\n const placed = new Map<string, PlacedLayerNode>();\n for (const [c, members] of rows) {\n members.forEach((id, i) => {\n const node = byId.get(id)!;\n const x = node.x ?? margin + c * columnGap + (cellWidth - node.width) / 2;\n const y =\n node.y ??\n margin + (i + (tallest - members.length) / 2) * rowGap + (cellHeight - node.height) / 2;\n placed.set(id, { id, x, y, width: node.width, height: node.height });\n });\n }\n return nodes.map((n) => placed.get(n.id)!);\n}\n"],"mappings":";;AA6DA,SAAgB,aACd,OACA,OACA,EAAE,QAAQ,CAAC,GAAG,YAAY,KAAK,SAAS,IAAI,SAAS,OAAqB,CAAC,GACxD;CACnB,MAAM,MAAM,MAAM,KAAK,MAAM,EAAE,EAAE;CACjC,MAAM,UAAU,IAAI,IAAsB,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACnE,KAAK,MAAM,QAAQ,OAAO,QAAQ,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,KAAK,EAAE;CAG9D,MAAM,uBAAO,IAAI,IAAY;CAC7B,MAAM,wBAAQ,IAAI,IAAiC;CACnD,MAAM,QAAkB,CAAC;CACzB,MAAM,SAAS,OAAe;EAC5B,MAAM,IAAI,IAAI,UAAU;EACxB,KAAK,MAAM,QAAQ,QAAQ,IAAI,EAAE,KAAK,CAAC,GACrC,IAAI,MAAM,IAAI,IAAI,MAAM,YAAY,KAAK,IAAI,GAAG,GAAG,GAAG,MAAM;OACvD,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,MAAM,IAAI;EAEvC,MAAM,IAAI,IAAI,MAAM;EACpB,MAAM,QAAQ,EAAE;CAClB;CACA,KAAK,MAAM,MAAM,CAAC,GAAG,OAAO,GAAG,GAAG,GAAG,IAAI,QAAQ,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,EAAE;CAGpF,MAAM,SAAS,IAAI,IAAoB,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;CAC/D,KAAK,MAAM,MAAM,OACf,KAAK,MAAM,QAAQ,QAAQ,IAAI,EAAE,KAAK,CAAC,GAAG;EACxC,IAAI,KAAK,IAAI,GAAG,GAAG,GAAG,MAAM,GAAG;EAC/B,OAAO,IAAI,MAAM,KAAK,IAAI,OAAO,IAAI,IAAI,KAAK,IAAI,OAAO,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC;CAC7E;CAIF,MAAM,YAAY,KAAK,IAAI,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,KAAK,CAAC;CAC1D,MAAM,aAAa,KAAK,IAAI,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,MAAM,CAAC;CAC5D,MAAM,uBAAO,IAAI,IAAsB;CACvC,KAAK,MAAM,MAAM,OAAO;EACtB,MAAM,IAAI,OAAO,IAAI,EAAE,KAAK;EAC5B,KAAK,IAAI,GAAG,CAAC,GAAI,KAAK,IAAI,CAAC,KAAK,CAAC,GAAI,EAAE,CAAC;CAC1C;CACA,MAAM,UAAU,KAAK,IAAI,GAAG,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC;CACtE,MAAM,OAAO,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;CAChD,MAAM,yBAAS,IAAI,IAA6B;CAChD,KAAK,MAAM,CAAC,GAAG,YAAY,MACzB,QAAQ,SAAS,IAAI,MAAM;EACzB,MAAM,OAAO,KAAK,IAAI,EAAE;EACxB,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,aAAa,YAAY,KAAK,SAAS;EACxE,MAAM,IACJ,KAAK,KACL,UAAU,KAAK,UAAU,QAAQ,UAAU,KAAK,UAAU,aAAa,KAAK,UAAU;EACxF,OAAO,IAAI,IAAI;GAAE;GAAI;GAAG;GAAG,OAAO,KAAK;GAAO,QAAQ,KAAK;EAAO,CAAC;CACrE,CAAC;CAEH,OAAO,MAAM,KAAK,MAAM,OAAO,IAAI,EAAE,EAAE,CAAE;AAC3C"}
|
|
@@ -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>;
|