@antv/infographic 0.1.1 → 0.1.3
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/README.md +26 -2
- package/README.zh-CN.md +26 -3
- package/dist/infographic.min.js +484 -79
- package/dist/infographic.min.js.map +1 -1
- package/esm/constants/components.d.ts +1 -0
- package/esm/constants/components.js +1 -0
- package/esm/constants/element.d.ts +17 -6
- package/esm/constants/index.d.ts +2 -0
- package/esm/constants/index.js +2 -0
- package/esm/constants/shape.d.ts +16 -0
- package/esm/designs/components/Btn.js +2 -2
- package/esm/designs/components/BtnsGroup.js +1 -1
- package/esm/designs/components/Illus.js +2 -2
- package/esm/designs/components/ItemDesc.js +1 -2
- package/esm/designs/components/ItemIcon.js +1 -1
- package/esm/designs/components/ItemLabel.js +1 -2
- package/esm/designs/components/ItemValue.js +1 -2
- package/esm/designs/components/ItemsGroup.js +1 -1
- package/esm/designs/components/Title.js +2 -5
- package/esm/designs/items/CandyCardLite.js +1 -1
- package/esm/designs/items/CircularProgress.js +2 -1
- package/esm/designs/items/HorizontalIconArrow.js +1 -2
- package/esm/designs/items/HorizontalIconLine.js +1 -1
- package/esm/designs/items/IconBadge.js +1 -1
- package/esm/designs/items/LinedText.d.ts +12 -0
- package/esm/designs/items/LinedText.js +57 -0
- package/esm/designs/items/PlainText.d.ts +1 -0
- package/esm/designs/items/PlainText.js +16 -3
- package/esm/designs/items/QuarterCircular.js +1 -31
- package/esm/designs/items/index.d.ts +1 -0
- package/esm/designs/items/index.js +1 -0
- package/esm/designs/layouts/Align.js +31 -45
- package/esm/designs/layouts/Flex.js +33 -29
- package/esm/designs/structures/chart-bar.d.ts +15 -0
- package/esm/designs/structures/chart-bar.js +99 -0
- package/esm/designs/structures/chart-line.d.ts +12 -0
- package/esm/designs/structures/chart-line.js +164 -0
- package/esm/designs/structures/chart-pie.d.ts +9 -0
- package/esm/designs/structures/chart-pie.js +127 -0
- package/esm/designs/structures/compare-binary-horizontal/dividers/pros-cons-arrow.js +1 -1
- package/esm/designs/structures/hierarchy-mindmap.d.ts +24 -0
- package/esm/designs/structures/hierarchy-mindmap.js +199 -0
- package/esm/designs/structures/index.d.ts +4 -0
- package/esm/designs/structures/index.js +4 -0
- package/esm/designs/structures/list-sector.js +1 -1
- package/esm/designs/structures/sequence-circular.js +1 -1
- package/esm/designs/structures/sequence-cylinders-3d.js +4 -4
- package/esm/designs/structures/sequence-roadmap-vertical.js +1 -1
- package/esm/designs/structures/sequence-zigzag-pucks-3d.js +5 -5
- package/esm/editor/commands/Batch.d.ts +11 -0
- package/esm/editor/commands/Batch.js +21 -0
- package/esm/editor/commands/UpdateElement.d.ts +16 -0
- package/esm/editor/commands/UpdateElement.js +83 -0
- package/esm/editor/commands/UpdateOptions.d.ts +14 -0
- package/esm/editor/commands/UpdateOptions.js +25 -0
- package/esm/editor/commands/UpdateText.d.ts +16 -0
- package/esm/editor/commands/UpdateText.js +40 -0
- package/esm/editor/commands/index.d.ts +4 -0
- package/esm/editor/commands/index.js +4 -0
- package/esm/editor/editor.d.ts +16 -0
- package/esm/editor/editor.js +50 -0
- package/esm/editor/index.d.ts +4 -0
- package/esm/editor/index.js +3 -0
- package/esm/editor/interactions/base.d.ts +12 -0
- package/esm/editor/interactions/base.js +5 -0
- package/esm/editor/interactions/brush-select.d.ts +23 -0
- package/esm/editor/interactions/brush-select.js +167 -0
- package/esm/editor/interactions/click-select.d.ts +12 -0
- package/esm/editor/interactions/click-select.js +67 -0
- package/esm/editor/interactions/dblclick-edit-text.d.ts +10 -0
- package/esm/editor/interactions/dblclick-edit-text.js +204 -0
- package/esm/editor/interactions/drag-element.d.ts +41 -0
- package/esm/editor/interactions/drag-element.js +391 -0
- package/esm/editor/interactions/hotkey-history.d.ts +10 -0
- package/esm/editor/interactions/hotkey-history.js +27 -0
- package/esm/editor/interactions/index.d.ts +8 -0
- package/esm/editor/interactions/index.js +8 -0
- package/esm/editor/interactions/select-highlight.d.ts +16 -0
- package/esm/editor/interactions/select-highlight.js +99 -0
- package/esm/editor/interactions/zoom-wheel.d.ts +8 -0
- package/esm/editor/interactions/zoom-wheel.js +46 -0
- package/esm/editor/managers/command.d.ts +19 -0
- package/esm/editor/managers/command.js +63 -0
- package/esm/editor/managers/index.d.ts +4 -0
- package/esm/editor/managers/index.js +4 -0
- package/esm/editor/managers/interaction.d.ts +33 -0
- package/esm/editor/managers/interaction.js +196 -0
- package/esm/editor/managers/plugin.d.ts +14 -0
- package/esm/editor/managers/plugin.js +45 -0
- package/esm/editor/managers/state.d.ts +22 -0
- package/esm/editor/managers/state.js +141 -0
- package/esm/editor/plugins/base.d.ts +12 -0
- package/esm/editor/plugins/base.js +5 -0
- package/esm/editor/plugins/edit-bar/components/button.d.ts +12 -0
- package/esm/editor/plugins/edit-bar/components/button.js +53 -0
- package/esm/editor/plugins/edit-bar/components/color-picker.d.ts +10 -0
- package/esm/editor/plugins/edit-bar/components/color-picker.js +351 -0
- package/esm/editor/plugins/edit-bar/components/icons.d.ts +26 -0
- package/esm/editor/plugins/edit-bar/components/icons.js +30 -0
- package/esm/editor/plugins/edit-bar/components/index.d.ts +5 -0
- package/esm/editor/plugins/edit-bar/components/index.js +5 -0
- package/esm/editor/plugins/edit-bar/components/popover.d.ts +23 -0
- package/esm/editor/plugins/edit-bar/components/popover.js +378 -0
- package/esm/editor/plugins/edit-bar/components/select.d.ts +22 -0
- package/esm/editor/plugins/edit-bar/components/select.js +201 -0
- package/esm/editor/plugins/edit-bar/edit-bar.d.ts +32 -0
- package/esm/editor/plugins/edit-bar/edit-bar.js +211 -0
- package/esm/editor/plugins/edit-bar/edit-items/align-elements.d.ts +2 -0
- package/esm/editor/plugins/edit-bar/edit-items/align-elements.js +312 -0
- package/esm/editor/plugins/edit-bar/edit-items/font-align.d.ts +3 -0
- package/esm/editor/plugins/edit-bar/edit-items/font-align.js +81 -0
- package/esm/editor/plugins/edit-bar/edit-items/font-color.d.ts +3 -0
- package/esm/editor/plugins/edit-bar/edit-items/font-color.js +77 -0
- package/esm/editor/plugins/edit-bar/edit-items/font-family.d.ts +3 -0
- package/esm/editor/plugins/edit-bar/edit-items/font-family.js +115 -0
- package/esm/editor/plugins/edit-bar/edit-items/font-size.d.ts +3 -0
- package/esm/editor/plugins/edit-bar/edit-items/font-size.js +88 -0
- package/esm/editor/plugins/edit-bar/edit-items/icon-color.d.ts +3 -0
- package/esm/editor/plugins/edit-bar/edit-items/icon-color.js +77 -0
- package/esm/editor/plugins/edit-bar/edit-items/index.d.ts +7 -0
- package/esm/editor/plugins/edit-bar/edit-items/index.js +6 -0
- package/esm/editor/plugins/edit-bar/edit-items/types.d.ts +3 -0
- package/esm/editor/plugins/edit-bar/edit-items/types.js +1 -0
- package/esm/editor/plugins/edit-bar/index.d.ts +4 -0
- package/esm/editor/plugins/edit-bar/index.js +2 -0
- package/esm/editor/plugins/edit-bar/utils.d.ts +4 -0
- package/esm/editor/plugins/edit-bar/utils.js +14 -0
- package/esm/editor/plugins/index.d.ts +3 -0
- package/esm/editor/plugins/index.js +3 -0
- package/esm/editor/plugins/resize-element.d.ts +45 -0
- package/esm/editor/plugins/resize-element.js +393 -0
- package/esm/editor/types/command.d.ts +28 -0
- package/esm/editor/types/command.js +1 -0
- package/esm/editor/types/editor.d.ts +4 -0
- package/esm/editor/types/editor.js +1 -0
- package/esm/editor/types/index.d.ts +7 -0
- package/esm/editor/types/index.js +1 -0
- package/esm/editor/types/interaction.d.ts +44 -0
- package/esm/editor/types/interaction.js +1 -0
- package/esm/editor/types/plugin.d.ts +30 -0
- package/esm/editor/types/plugin.js +1 -0
- package/esm/editor/types/selection.d.ts +2 -0
- package/esm/editor/types/selection.js +1 -0
- package/esm/editor/types/shape.d.ts +16 -0
- package/esm/editor/types/shape.js +1 -0
- package/esm/editor/types/state.d.ts +57 -0
- package/esm/editor/types/state.js +1 -0
- package/esm/editor/utils/click-handler.d.ts +28 -0
- package/esm/editor/utils/click-handler.js +97 -0
- package/esm/editor/utils/coordinate.d.ts +6 -0
- package/esm/editor/utils/coordinate.js +31 -0
- package/esm/editor/utils/data.d.ts +10 -0
- package/esm/editor/utils/data.js +18 -0
- package/esm/editor/utils/element.d.ts +2 -0
- package/esm/editor/utils/element.js +9 -0
- package/esm/editor/utils/event.d.ts +3 -0
- package/esm/editor/utils/event.js +63 -0
- package/esm/editor/utils/extension.d.ts +13 -0
- package/esm/editor/utils/extension.js +39 -0
- package/esm/editor/utils/hotkey.d.ts +20 -0
- package/esm/editor/utils/hotkey.js +109 -0
- package/esm/editor/utils/index.d.ts +7 -0
- package/esm/editor/utils/index.js +7 -0
- package/esm/exporter/svg.js +7 -5
- package/esm/index.d.ts +5 -2
- package/esm/index.js +2 -0
- package/esm/jsx/components/Polygon.js +2 -1
- package/esm/jsx/components/Text.js +66 -68
- package/esm/options/types.d.ts +15 -2
- package/esm/renderer/composites/background.js +2 -2
- package/esm/renderer/composites/button.js +4 -3
- package/esm/renderer/composites/icon.d.ts +1 -1
- package/esm/renderer/composites/icon.js +2 -0
- package/esm/renderer/composites/text.js +2 -1
- package/esm/renderer/renderer.js +3 -2
- package/esm/renderer/stylize/rough.js +3 -7
- package/esm/renderer/types/index.d.ts +0 -1
- package/esm/resource/utils/index.d.ts +0 -1
- package/esm/resource/utils/index.js +0 -1
- package/esm/resource/utils/ref.js +1 -1
- package/esm/runtime/Infographic.d.ts +8 -2
- package/esm/runtime/Infographic.js +31 -2
- package/esm/runtime/options.d.ts +2 -0
- package/esm/runtime/options.js +24 -0
- package/esm/runtime/utils.d.ts +2 -0
- package/esm/runtime/utils.js +18 -0
- package/esm/templates/built-in.js +112 -1
- package/esm/templates/hierarchy-mindmap.d.ts +2 -0
- package/esm/templates/hierarchy-mindmap.js +61 -0
- package/esm/types/attrs.d.ts +15 -13
- package/esm/types/data.d.ts +2 -0
- package/esm/types/element.d.ts +1 -1
- package/esm/types/event.d.ts +6 -0
- package/esm/types/event.js +1 -0
- package/esm/types/index.d.ts +2 -0
- package/esm/{renderer/types → types}/text.d.ts +0 -1
- package/esm/types/text.js +1 -0
- package/esm/utils/attrs.d.ts +1 -0
- package/esm/utils/attrs.js +9 -0
- package/esm/utils/element.d.ts +4 -0
- package/esm/utils/element.js +13 -0
- package/esm/utils/icon.d.ts +5 -3
- package/esm/utils/icon.js +38 -19
- package/esm/utils/index.d.ts +5 -0
- package/esm/utils/index.js +5 -0
- package/esm/utils/measure-text.d.ts +5 -0
- package/esm/utils/measure-text.js +22 -0
- package/esm/utils/recognizer.d.ts +15 -0
- package/esm/utils/recognizer.js +61 -1
- package/esm/utils/style.d.ts +1 -0
- package/esm/utils/style.js +8 -0
- package/esm/utils/text.d.ts +7 -0
- package/esm/utils/text.js +110 -35
- package/lib/constants/components.d.ts +1 -0
- package/lib/constants/components.js +4 -0
- package/lib/constants/element.d.ts +17 -6
- package/lib/constants/index.d.ts +2 -0
- package/lib/constants/index.js +2 -0
- package/lib/constants/shape.d.ts +16 -0
- package/lib/designs/components/Btn.js +2 -2
- package/lib/designs/components/BtnsGroup.js +1 -1
- package/lib/designs/components/Illus.js +2 -2
- package/lib/designs/components/ItemDesc.js +1 -2
- package/lib/designs/components/ItemIcon.js +1 -1
- package/lib/designs/components/ItemLabel.js +1 -2
- package/lib/designs/components/ItemValue.js +1 -2
- package/lib/designs/components/ItemsGroup.js +1 -1
- package/lib/designs/components/Title.js +2 -5
- package/lib/designs/items/CandyCardLite.js +1 -1
- package/lib/designs/items/CircularProgress.js +2 -1
- package/lib/designs/items/HorizontalIconArrow.js +1 -2
- package/lib/designs/items/HorizontalIconLine.js +1 -1
- package/lib/designs/items/IconBadge.js +1 -1
- package/lib/designs/items/LinedText.d.ts +12 -0
- package/lib/designs/items/LinedText.js +61 -0
- package/lib/designs/items/PlainText.d.ts +1 -0
- package/lib/designs/items/PlainText.js +16 -3
- package/lib/designs/items/QuarterCircular.js +1 -31
- package/lib/designs/items/index.d.ts +1 -0
- package/lib/designs/items/index.js +1 -0
- package/lib/designs/layouts/Align.js +31 -45
- package/lib/designs/layouts/Flex.js +33 -29
- package/lib/designs/structures/chart-bar.d.ts +15 -0
- package/lib/designs/structures/chart-bar.js +103 -0
- package/lib/designs/structures/chart-line.d.ts +12 -0
- package/lib/designs/structures/chart-line.js +168 -0
- package/lib/designs/structures/chart-pie.d.ts +9 -0
- package/lib/designs/structures/chart-pie.js +131 -0
- package/lib/designs/structures/compare-binary-horizontal/dividers/pros-cons-arrow.js +1 -1
- package/lib/designs/structures/hierarchy-mindmap.d.ts +24 -0
- package/lib/designs/structures/hierarchy-mindmap.js +203 -0
- package/lib/designs/structures/index.d.ts +4 -0
- package/lib/designs/structures/index.js +4 -0
- package/lib/designs/structures/list-sector.js +1 -1
- package/lib/designs/structures/sequence-circular.js +1 -1
- package/lib/designs/structures/sequence-cylinders-3d.js +4 -4
- package/lib/designs/structures/sequence-roadmap-vertical.js +1 -1
- package/lib/designs/structures/sequence-zigzag-pucks-3d.js +5 -5
- package/lib/editor/commands/Batch.d.ts +11 -0
- package/lib/editor/commands/Batch.js +25 -0
- package/lib/editor/commands/UpdateElement.d.ts +16 -0
- package/lib/editor/commands/UpdateElement.js +87 -0
- package/lib/editor/commands/UpdateOptions.d.ts +14 -0
- package/lib/editor/commands/UpdateOptions.js +29 -0
- package/lib/editor/commands/UpdateText.d.ts +16 -0
- package/lib/editor/commands/UpdateText.js +44 -0
- package/lib/editor/commands/index.d.ts +4 -0
- package/lib/editor/commands/index.js +20 -0
- package/lib/editor/editor.d.ts +16 -0
- package/lib/editor/editor.js +54 -0
- package/lib/editor/index.d.ts +4 -0
- package/lib/editor/index.js +21 -0
- package/lib/editor/interactions/base.d.ts +12 -0
- package/lib/editor/interactions/base.js +9 -0
- package/lib/editor/interactions/brush-select.d.ts +23 -0
- package/lib/editor/interactions/brush-select.js +171 -0
- package/lib/editor/interactions/click-select.d.ts +12 -0
- package/lib/editor/interactions/click-select.js +71 -0
- package/lib/editor/interactions/dblclick-edit-text.d.ts +10 -0
- package/lib/editor/interactions/dblclick-edit-text.js +208 -0
- package/lib/editor/interactions/drag-element.d.ts +41 -0
- package/lib/editor/interactions/drag-element.js +395 -0
- package/lib/editor/interactions/hotkey-history.d.ts +10 -0
- package/lib/editor/interactions/hotkey-history.js +31 -0
- package/lib/editor/interactions/index.d.ts +8 -0
- package/lib/editor/interactions/index.js +19 -0
- package/lib/editor/interactions/select-highlight.d.ts +16 -0
- package/lib/editor/interactions/select-highlight.js +103 -0
- package/lib/editor/interactions/zoom-wheel.d.ts +8 -0
- package/lib/editor/interactions/zoom-wheel.js +50 -0
- package/lib/editor/managers/command.d.ts +19 -0
- package/lib/editor/managers/command.js +67 -0
- package/lib/editor/managers/index.d.ts +4 -0
- package/lib/editor/managers/index.js +20 -0
- package/lib/editor/managers/interaction.d.ts +33 -0
- package/lib/editor/managers/interaction.js +200 -0
- package/lib/editor/managers/plugin.d.ts +14 -0
- package/lib/editor/managers/plugin.js +49 -0
- package/lib/editor/managers/state.d.ts +22 -0
- package/lib/editor/managers/state.js +145 -0
- package/lib/editor/plugins/base.d.ts +12 -0
- package/lib/editor/plugins/base.js +9 -0
- package/lib/editor/plugins/edit-bar/components/button.d.ts +12 -0
- package/lib/editor/plugins/edit-bar/components/button.js +57 -0
- package/lib/editor/plugins/edit-bar/components/color-picker.d.ts +10 -0
- package/lib/editor/plugins/edit-bar/components/color-picker.js +354 -0
- package/lib/editor/plugins/edit-bar/components/icons.d.ts +26 -0
- package/lib/editor/plugins/edit-bar/components/icons.js +33 -0
- package/lib/editor/plugins/edit-bar/components/index.d.ts +5 -0
- package/lib/editor/plugins/edit-bar/components/index.js +21 -0
- package/lib/editor/plugins/edit-bar/components/popover.d.ts +23 -0
- package/lib/editor/plugins/edit-bar/components/popover.js +381 -0
- package/lib/editor/plugins/edit-bar/components/select.d.ts +22 -0
- package/lib/editor/plugins/edit-bar/components/select.js +204 -0
- package/lib/editor/plugins/edit-bar/edit-bar.d.ts +32 -0
- package/lib/editor/plugins/edit-bar/edit-bar.js +215 -0
- package/lib/editor/plugins/edit-bar/edit-items/align-elements.d.ts +2 -0
- package/lib/editor/plugins/edit-bar/edit-items/align-elements.js +316 -0
- package/lib/editor/plugins/edit-bar/edit-items/font-align.d.ts +3 -0
- package/lib/editor/plugins/edit-bar/edit-items/font-align.js +85 -0
- package/lib/editor/plugins/edit-bar/edit-items/font-color.d.ts +3 -0
- package/lib/editor/plugins/edit-bar/edit-items/font-color.js +81 -0
- package/lib/editor/plugins/edit-bar/edit-items/font-family.d.ts +3 -0
- package/lib/editor/plugins/edit-bar/edit-items/font-family.js +119 -0
- package/lib/editor/plugins/edit-bar/edit-items/font-size.d.ts +3 -0
- package/lib/editor/plugins/edit-bar/edit-items/font-size.js +92 -0
- package/lib/editor/plugins/edit-bar/edit-items/icon-color.d.ts +3 -0
- package/lib/editor/plugins/edit-bar/edit-items/icon-color.js +81 -0
- package/lib/editor/plugins/edit-bar/edit-items/index.d.ts +7 -0
- package/lib/editor/plugins/edit-bar/edit-items/index.js +22 -0
- package/lib/editor/plugins/edit-bar/edit-items/types.d.ts +3 -0
- package/lib/editor/plugins/edit-bar/edit-items/types.js +2 -0
- package/lib/editor/plugins/edit-bar/index.d.ts +4 -0
- package/lib/editor/plugins/edit-bar/index.js +9 -0
- package/lib/editor/plugins/edit-bar/utils.d.ts +4 -0
- package/lib/editor/plugins/edit-bar/utils.js +17 -0
- package/lib/editor/plugins/index.d.ts +3 -0
- package/lib/editor/plugins/index.js +22 -0
- package/lib/editor/plugins/resize-element.d.ts +45 -0
- package/lib/editor/plugins/resize-element.js +397 -0
- package/lib/editor/types/command.d.ts +28 -0
- package/lib/editor/types/command.js +2 -0
- package/lib/editor/types/editor.d.ts +4 -0
- package/lib/editor/types/editor.js +2 -0
- package/lib/editor/types/index.d.ts +7 -0
- package/lib/editor/types/index.js +2 -0
- package/lib/editor/types/interaction.d.ts +44 -0
- package/lib/editor/types/interaction.js +2 -0
- package/lib/editor/types/plugin.d.ts +30 -0
- package/lib/editor/types/plugin.js +2 -0
- package/lib/editor/types/selection.d.ts +2 -0
- package/lib/editor/types/selection.js +2 -0
- package/lib/editor/types/shape.d.ts +16 -0
- package/lib/editor/types/shape.js +2 -0
- package/lib/editor/types/state.d.ts +57 -0
- package/lib/editor/types/state.js +2 -0
- package/lib/editor/utils/click-handler.d.ts +28 -0
- package/lib/editor/utils/click-handler.js +101 -0
- package/lib/editor/utils/coordinate.d.ts +6 -0
- package/lib/editor/utils/coordinate.js +38 -0
- package/lib/editor/utils/data.d.ts +10 -0
- package/lib/editor/utils/data.js +22 -0
- package/lib/editor/utils/element.d.ts +2 -0
- package/lib/editor/utils/element.js +12 -0
- package/lib/editor/utils/event.d.ts +3 -0
- package/lib/editor/utils/event.js +67 -0
- package/lib/editor/utils/extension.d.ts +13 -0
- package/lib/editor/utils/extension.js +43 -0
- package/lib/editor/utils/hotkey.d.ts +20 -0
- package/lib/editor/utils/hotkey.js +113 -0
- package/lib/editor/utils/index.d.ts +7 -0
- package/lib/editor/utils/index.js +23 -0
- package/lib/exporter/svg.js +6 -4
- package/lib/index.d.ts +5 -2
- package/lib/index.js +14 -1
- package/lib/jsx/components/Polygon.js +2 -1
- package/lib/jsx/components/Text.js +66 -68
- package/lib/options/types.d.ts +15 -2
- package/lib/renderer/composites/background.js +1 -1
- package/lib/renderer/composites/button.js +3 -2
- package/lib/renderer/composites/icon.d.ts +1 -1
- package/lib/renderer/composites/icon.js +2 -0
- package/lib/renderer/composites/text.js +2 -1
- package/lib/renderer/renderer.js +2 -1
- package/lib/renderer/stylize/rough.js +3 -7
- package/lib/renderer/types/index.d.ts +0 -1
- package/lib/resource/utils/index.d.ts +0 -1
- package/lib/resource/utils/index.js +0 -1
- package/lib/resource/utils/ref.js +2 -2
- package/lib/runtime/Infographic.d.ts +8 -2
- package/lib/runtime/Infographic.js +34 -2
- package/lib/runtime/options.d.ts +2 -0
- package/lib/runtime/options.js +27 -0
- package/lib/runtime/utils.d.ts +2 -0
- package/lib/runtime/utils.js +21 -0
- package/lib/templates/built-in.js +112 -1
- package/lib/templates/hierarchy-mindmap.d.ts +2 -0
- package/lib/templates/hierarchy-mindmap.js +64 -0
- package/lib/types/attrs.d.ts +15 -13
- package/lib/types/data.d.ts +2 -0
- package/lib/types/element.d.ts +1 -1
- package/lib/types/event.d.ts +6 -0
- package/lib/types/event.js +2 -0
- package/lib/types/index.d.ts +2 -0
- package/lib/{renderer/types → types}/text.d.ts +0 -1
- package/lib/types/text.js +2 -0
- package/lib/utils/attrs.d.ts +1 -0
- package/lib/utils/attrs.js +12 -0
- package/lib/utils/element.d.ts +4 -0
- package/lib/utils/element.js +18 -0
- package/lib/utils/icon.d.ts +5 -3
- package/lib/utils/icon.js +42 -21
- package/lib/utils/index.d.ts +5 -0
- package/lib/utils/index.js +5 -0
- package/lib/utils/measure-text.d.ts +5 -0
- package/lib/utils/measure-text.js +28 -0
- package/lib/utils/recognizer.d.ts +15 -0
- package/lib/utils/recognizer.js +72 -2
- package/lib/utils/style.d.ts +1 -0
- package/lib/utils/style.js +11 -0
- package/lib/utils/text.d.ts +7 -0
- package/lib/utils/text.js +113 -32
- package/package.json +7 -3
- package/src/constants/components.ts +1 -0
- package/src/constants/element.ts +17 -5
- package/src/constants/index.ts +2 -0
- package/src/constants/shape.ts +16 -0
- package/src/designs/components/Btn.tsx +3 -2
- package/src/designs/components/BtnsGroup.tsx +8 -1
- package/src/designs/components/Illus.tsx +3 -2
- package/src/designs/components/ItemDesc.tsx +2 -2
- package/src/designs/components/ItemIcon.tsx +3 -2
- package/src/designs/components/ItemLabel.tsx +2 -2
- package/src/designs/components/ItemValue.tsx +2 -2
- package/src/designs/components/ItemsGroup.tsx +2 -1
- package/src/designs/components/Title.tsx +8 -5
- package/src/designs/items/CandyCardLite.tsx +3 -3
- package/src/designs/items/CircularProgress.tsx +19 -8
- package/src/designs/items/HorizontalIconArrow.tsx +4 -5
- package/src/designs/items/HorizontalIconLine.tsx +7 -10
- package/src/designs/items/IconBadge.tsx +3 -3
- package/src/designs/items/LinedText.tsx +131 -0
- package/src/designs/items/PlainText.tsx +25 -3
- package/src/designs/items/QuarterCircular.tsx +2 -31
- package/src/designs/items/index.ts +1 -0
- package/src/designs/layouts/Align.tsx +31 -48
- package/src/designs/layouts/Flex.tsx +33 -31
- package/src/designs/structures/chart-bar.tsx +289 -0
- package/src/designs/structures/chart-line.tsx +415 -0
- package/src/designs/structures/chart-pie.tsx +298 -0
- package/src/designs/structures/compare-binary-horizontal/dividers/pros-cons-arrow.tsx +2 -2
- package/src/designs/structures/hierarchy-mindmap.tsx +394 -0
- package/src/designs/structures/index.ts +4 -0
- package/src/designs/structures/list-sector.tsx +2 -1
- package/src/designs/structures/sequence-ascending-steps.tsx +0 -1
- package/src/designs/structures/sequence-circular.tsx +1 -1
- package/src/designs/structures/sequence-cylinders-3d.tsx +5 -5
- package/src/designs/structures/sequence-roadmap-vertical.tsx +2 -1
- package/src/designs/structures/sequence-zigzag-pucks-3d.tsx +18 -25
- package/src/editor/commands/Batch.ts +24 -0
- package/src/editor/commands/UpdateElement.ts +115 -0
- package/src/editor/commands/UpdateOptions.ts +31 -0
- package/src/editor/commands/UpdateText.ts +54 -0
- package/src/editor/commands/index.ts +4 -0
- package/src/editor/editor.ts +78 -0
- package/src/editor/index.ts +4 -0
- package/src/editor/interactions/base.ts +25 -0
- package/src/editor/interactions/brush-select.ts +204 -0
- package/src/editor/interactions/click-select.ts +72 -0
- package/src/editor/interactions/dblclick-edit-text.ts +260 -0
- package/src/editor/interactions/drag-element.ts +516 -0
- package/src/editor/interactions/hotkey-history.ts +34 -0
- package/src/editor/interactions/index.ts +8 -0
- package/src/editor/interactions/select-highlight.ts +140 -0
- package/src/editor/interactions/zoom-wheel.ts +52 -0
- package/src/editor/managers/command.ts +83 -0
- package/src/editor/managers/index.ts +4 -0
- package/src/editor/managers/interaction.ts +244 -0
- package/src/editor/managers/plugin.ts +66 -0
- package/src/editor/managers/state.ts +186 -0
- package/src/editor/plugins/base.ts +25 -0
- package/src/editor/plugins/edit-bar/components/button.ts +77 -0
- package/src/editor/plugins/edit-bar/components/color-picker.ts +397 -0
- package/src/editor/plugins/edit-bar/components/icons.ts +86 -0
- package/src/editor/plugins/edit-bar/components/index.ts +5 -0
- package/src/editor/plugins/edit-bar/components/popover.ts +446 -0
- package/src/editor/plugins/edit-bar/components/select.ts +247 -0
- package/src/editor/plugins/edit-bar/edit-bar.ts +292 -0
- package/src/editor/plugins/edit-bar/edit-items/align-elements.ts +447 -0
- package/src/editor/plugins/edit-bar/edit-items/font-align.ts +129 -0
- package/src/editor/plugins/edit-bar/edit-items/font-color.ts +101 -0
- package/src/editor/plugins/edit-bar/edit-items/font-family.ts +147 -0
- package/src/editor/plugins/edit-bar/edit-items/font-size.ts +116 -0
- package/src/editor/plugins/edit-bar/edit-items/icon-color.ts +101 -0
- package/src/editor/plugins/edit-bar/edit-items/index.ts +7 -0
- package/src/editor/plugins/edit-bar/edit-items/types.ts +9 -0
- package/src/editor/plugins/edit-bar/index.ts +18 -0
- package/src/editor/plugins/edit-bar/utils.ts +16 -0
- package/src/editor/plugins/index.ts +3 -0
- package/src/editor/plugins/resize-element.ts +518 -0
- package/src/editor/types/command.ts +32 -0
- package/src/editor/types/editor.ts +4 -0
- package/src/editor/types/index.ts +7 -0
- package/src/editor/types/interaction.ts +56 -0
- package/src/editor/types/plugin.ts +34 -0
- package/src/editor/types/selection.ts +3 -0
- package/src/editor/types/shape.ts +28 -0
- package/src/editor/types/state.ts +51 -0
- package/src/editor/utils/click-handler.ts +114 -0
- package/src/editor/utils/coordinate.ts +54 -0
- package/src/editor/utils/data.ts +30 -0
- package/src/editor/utils/element.ts +13 -0
- package/src/editor/utils/event.ts +92 -0
- package/src/editor/utils/extension.ts +45 -0
- package/src/editor/utils/hotkey.ts +139 -0
- package/src/editor/utils/index.ts +7 -0
- package/src/exporter/svg.ts +15 -5
- package/src/index.ts +14 -3
- package/src/jsx/components/Polygon.ts +2 -1
- package/src/jsx/components/Text.ts +70 -71
- package/src/options/types.ts +17 -2
- package/src/renderer/composites/background.ts +2 -2
- package/src/renderer/composites/button.ts +4 -3
- package/src/renderer/composites/icon.ts +2 -0
- package/src/renderer/composites/text.ts +2 -1
- package/src/renderer/renderer.ts +4 -2
- package/src/renderer/stylize/rough.ts +3 -7
- package/src/renderer/types/index.ts +0 -1
- package/src/resource/utils/index.ts +0 -1
- package/src/resource/utils/ref.ts +1 -1
- package/src/runtime/Infographic.tsx +45 -4
- package/src/runtime/options.ts +37 -0
- package/src/runtime/utils.ts +23 -0
- package/src/templates/built-in.ts +112 -1
- package/src/templates/hierarchy-mindmap.ts +129 -0
- package/src/types/attrs.ts +17 -13
- package/src/types/data.ts +2 -0
- package/src/types/element.ts +1 -1
- package/src/types/event.ts +6 -0
- package/src/types/index.ts +2 -0
- package/src/{renderer/types → types}/text.ts +0 -1
- package/src/utils/attrs.ts +9 -0
- package/src/utils/element.ts +26 -0
- package/src/utils/icon.ts +45 -25
- package/src/utils/index.ts +5 -0
- package/src/utils/measure-text.ts +38 -0
- package/src/utils/recognizer.ts +75 -1
- package/src/utils/style.ts +8 -0
- package/src/utils/text.ts +135 -40
- /package/esm/{renderer/types/text.js → constants/shape.js} +0 -0
- /package/esm/{resource/utils → utils}/hash.d.ts +0 -0
- /package/esm/{resource/utils → utils}/hash.js +0 -0
- /package/lib/{renderer/types/text.js → constants/shape.js} +0 -0
- /package/lib/{resource/utils → utils}/hash.d.ts +0 -0
- /package/lib/{resource/utils → utils}/hash.js +0 -0
- /package/src/{resource/utils → utils}/hash.ts +0 -0
|
@@ -25,7 +25,6 @@ const QuarterCircular = (props) => {
|
|
|
25
25
|
const indexStr = String(indexes[0] + 1).padStart(2, '0');
|
|
26
26
|
// 根据 positionH 调整布局
|
|
27
27
|
const isFlipped = positionH === 'flipped';
|
|
28
|
-
const isCentered = positionH === 'center';
|
|
29
28
|
// 根据 positionV 调整布局
|
|
30
29
|
const isVFlipped = positionV === 'flipped';
|
|
31
30
|
// 计算装饰线的坐标
|
|
@@ -44,22 +43,6 @@ const QuarterCircular = (props) => {
|
|
|
44
43
|
topLineY: isVFlipped ? height - DOT_RADIUS : DOT_RADIUS,
|
|
45
44
|
};
|
|
46
45
|
}
|
|
47
|
-
else if (isCentered) {
|
|
48
|
-
// 居中对齐
|
|
49
|
-
const totalContentWidth = width - circleRadius - DECORATION_HORIZONTAL_SPACING;
|
|
50
|
-
const centerOffset = (width - totalContentWidth) / 2;
|
|
51
|
-
return {
|
|
52
|
-
diagonalStartX: centerOffset + DOT_RADIUS,
|
|
53
|
-
diagonalStartY: isVFlipped
|
|
54
|
-
? height - DECORATION_VERTICAL_SPACING
|
|
55
|
-
: DECORATION_VERTICAL_SPACING,
|
|
56
|
-
diagonalEndX: centerOffset + DECORATION_HORIZONTAL_SPACING,
|
|
57
|
-
diagonalEndY: isVFlipped ? height - DOT_RADIUS : DOT_RADIUS,
|
|
58
|
-
topLineStartX: centerOffset + DECORATION_HORIZONTAL_SPACING,
|
|
59
|
-
topLineEndX: centerOffset + totalContentWidth - CIRCLE_MASS,
|
|
60
|
-
topLineY: isVFlipped ? height - DOT_RADIUS : DOT_RADIUS,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
46
|
else {
|
|
64
47
|
// 默认左对齐
|
|
65
48
|
return {
|
|
@@ -90,19 +73,6 @@ const QuarterCircular = (props) => {
|
|
|
90
73
|
iconX: CIRCLE_MASS - iconSize / 2,
|
|
91
74
|
};
|
|
92
75
|
}
|
|
93
|
-
else if (isCentered) {
|
|
94
|
-
// 居中对齐
|
|
95
|
-
const totalContentWidth = width - circleRadius - DECORATION_HORIZONTAL_SPACING;
|
|
96
|
-
const centerOffset = (width - totalContentWidth) / 2;
|
|
97
|
-
return {
|
|
98
|
-
valueX: centerOffset,
|
|
99
|
-
contentX: centerOffset + DECORATION_HORIZONTAL_SPACING,
|
|
100
|
-
contentWidth: totalContentWidth - circleRadius - 10,
|
|
101
|
-
circleX: centerOffset + totalContentWidth,
|
|
102
|
-
circleY: isVFlipped ? 0 : height,
|
|
103
|
-
iconX: centerOffset + totalContentWidth - CIRCLE_MASS - iconSize / 2,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
76
|
else {
|
|
107
77
|
// 默认左对齐
|
|
108
78
|
return {
|
|
@@ -139,7 +109,7 @@ const QuarterCircular = (props) => {
|
|
|
139
109
|
: `M ${circleX} ${circleY} L ${circleX} ${circleY - circleRadius} A ${circleRadius} ${circleRadius} 0 0 0 ${circleX - circleRadius} ${circleY} Z`;
|
|
140
110
|
}
|
|
141
111
|
};
|
|
142
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_1.Group, { ...restProps, width: width, height: height, children: [(0, jsx_runtime_1.jsxs)(components_1.ShapesGroup, { children: [(0, jsx_runtime_1.jsx)(jsx_1.Path, { d: `M ${decorationCoords.diagonalStartX} ${decorationCoords.diagonalStartY} L ${decorationCoords.diagonalEndX} ${decorationCoords.diagonalEndY}`, stroke: themeColors.colorPrimary, strokeWidth: LINE_WIDTH, fill: "none" }), (0, jsx_runtime_1.jsx)(jsx_1.Path, { d: `M ${decorationCoords.topLineStartX} ${decorationCoords.topLineY} L ${decorationCoords.topLineEndX} ${decorationCoords.topLineY}`, stroke: themeColors.colorPrimary, strokeWidth: LINE_WIDTH, fill: "none" }), (0, jsx_runtime_1.jsx)(jsx_1.Ellipse, { x: decorationCoords.diagonalStartX - DOT_RADIUS, y: decorationCoords.diagonalStartY - DOT_RADIUS, width: DOT_RADIUS * 2, height: DOT_RADIUS * 2, fill: themeColors.colorPrimary }), (0, jsx_runtime_1.jsx)(jsx_1.Ellipse, { x: decorationCoords.topLineEndX - DOT_RADIUS, y: decorationCoords.topLineY - DOT_RADIUS, width: DOT_RADIUS * 2, height: DOT_RADIUS * 2, fill: themeColors.colorPrimary })] }), (0, jsx_runtime_1.jsxs)(jsx_1.Group, { children: [(0, jsx_runtime_1.jsx)(jsx_1.Text, { x: contentCoords.valueX, y: CARD_CONTENT_Y, fontSize: VALUE_SIZE, fontWeight: "bold", fill: themeColors.colorPrimary,
|
|
112
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_1.Group, { ...restProps, width: width, height: height, children: [(0, jsx_runtime_1.jsxs)(components_1.ShapesGroup, { children: [(0, jsx_runtime_1.jsx)(jsx_1.Path, { d: `M ${decorationCoords.diagonalStartX} ${decorationCoords.diagonalStartY} L ${decorationCoords.diagonalEndX} ${decorationCoords.diagonalEndY}`, stroke: themeColors.colorPrimary, strokeWidth: LINE_WIDTH, fill: "none" }), (0, jsx_runtime_1.jsx)(jsx_1.Path, { d: `M ${decorationCoords.topLineStartX} ${decorationCoords.topLineY} L ${decorationCoords.topLineEndX} ${decorationCoords.topLineY}`, stroke: themeColors.colorPrimary, strokeWidth: LINE_WIDTH, fill: "none" }), (0, jsx_runtime_1.jsx)(jsx_1.Ellipse, { x: decorationCoords.diagonalStartX - DOT_RADIUS, y: decorationCoords.diagonalStartY - DOT_RADIUS, width: DOT_RADIUS * 2, height: DOT_RADIUS * 2, fill: themeColors.colorPrimary }), (0, jsx_runtime_1.jsx)(jsx_1.Ellipse, { x: decorationCoords.topLineEndX - DOT_RADIUS, y: decorationCoords.topLineY - DOT_RADIUS, width: DOT_RADIUS * 2, height: DOT_RADIUS * 2, fill: themeColors.colorPrimary })] }), (0, jsx_runtime_1.jsxs)(jsx_1.Group, { children: [(0, jsx_runtime_1.jsx)(jsx_1.Text, { x: contentCoords.valueX, y: CARD_CONTENT_Y, fontSize: VALUE_SIZE, fontWeight: "bold", fill: themeColors.colorPrimary, children: indexStr }), (0, jsx_runtime_1.jsx)(jsx_1.Path, { d: getQuarterCirclePath(), fill: themeColors.colorPrimary, "data-element-type": "shape" }), datum.icon && ((0, jsx_runtime_1.jsx)(components_1.ItemIcon, { indexes: indexes, x: contentCoords.iconX, y: iconY, size: iconSize, fill: themeColors.colorWhite })), datum.label && ((0, jsx_runtime_1.jsx)(components_1.ItemLabel, { indexes: indexes, x: contentCoords.contentX, y: LABEL_Y, width: contentCoords.contentWidth, fontWeight: "bold", fill: themeColors.colorText, alignHorizontal: isFlipped ? 'right' : 'left', children: datum.label })), datum.desc && ((0, jsx_runtime_1.jsx)(components_1.ItemDesc, { indexes: indexes, x: contentCoords.contentX, y: descY, width: contentCoords.contentWidth, fill: themeColors.colorTextSecondary, alignHorizontal: isFlipped ? 'right' : 'left', children: datum.desc }))] })] }));
|
|
143
113
|
};
|
|
144
114
|
exports.QuarterCircular = QuarterCircular;
|
|
145
115
|
(0, registry_1.registerItem)('quarter-circular', {
|
|
@@ -28,6 +28,7 @@ __exportStar(require("./IconBadge"), exports);
|
|
|
28
28
|
__exportStar(require("./IndexedCard"), exports);
|
|
29
29
|
__exportStar(require("./LCornerCard"), exports);
|
|
30
30
|
__exportStar(require("./LetterCard"), exports);
|
|
31
|
+
__exportStar(require("./LinedText"), exports);
|
|
31
32
|
__exportStar(require("./PillBadge"), exports);
|
|
32
33
|
__exportStar(require("./PlainText"), exports);
|
|
33
34
|
__exportStar(require("./ProgressCard"), exports);
|
|
@@ -8,74 +8,60 @@ exports.AlignLayout = (0, jsx_1.createLayout)((children, { horizontal, vertical,
|
|
|
8
8
|
return (0, jsx_runtime_1.jsx)(jsx_1.Group, { ...props });
|
|
9
9
|
}
|
|
10
10
|
const childBounds = children.map((child) => (0, jsx_1.getElementBounds)(child));
|
|
11
|
-
// 检查是否设置了容器的宽高
|
|
12
|
-
const hasContainerWidth = props.width !== undefined;
|
|
13
|
-
const hasContainerHeight = props.height !== undefined;
|
|
14
|
-
let positionedChildren = [...children];
|
|
15
|
-
// 如果没有设置容器尺寸,先获取子节点的整体包围盒
|
|
16
11
|
const childrenBounds = (0, jsx_1.getElementsBounds)(children);
|
|
17
|
-
//
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const alignmentX = hasContainerWidth ? props.x || 0 : childrenBounds.x;
|
|
25
|
-
const alignmentY = hasContainerHeight ? props.y || 0 : childrenBounds.y;
|
|
26
|
-
// 应用对齐
|
|
27
|
-
positionedChildren = children.map((child, index) => {
|
|
12
|
+
// 容器尺寸和位置
|
|
13
|
+
const containerX = props.x ?? childrenBounds.x;
|
|
14
|
+
const containerY = props.y ?? childrenBounds.y;
|
|
15
|
+
const containerWidth = props.width ?? childrenBounds.width;
|
|
16
|
+
const containerHeight = props.height ?? childrenBounds.height;
|
|
17
|
+
// 对齐子元素(使用相对于容器的坐标)
|
|
18
|
+
const positionedChildren = children.map((child, index) => {
|
|
28
19
|
const bounds = childBounds[index];
|
|
29
20
|
const childProps = { ...child.props };
|
|
30
|
-
//
|
|
31
|
-
if (horizontal) {
|
|
21
|
+
// 水平对齐(相对于容器左边界)
|
|
22
|
+
if (horizontal !== undefined) {
|
|
32
23
|
switch (horizontal) {
|
|
33
24
|
case 'left':
|
|
34
|
-
childProps.x =
|
|
25
|
+
childProps.x = 0; // 相对容器
|
|
35
26
|
break;
|
|
36
27
|
case 'center':
|
|
37
|
-
childProps.x =
|
|
28
|
+
childProps.x = (containerWidth - bounds.width) / 2;
|
|
38
29
|
break;
|
|
39
30
|
case 'right':
|
|
40
|
-
childProps.x =
|
|
31
|
+
childProps.x = containerWidth - bounds.width;
|
|
41
32
|
break;
|
|
42
33
|
}
|
|
43
34
|
}
|
|
44
|
-
else {
|
|
45
|
-
//
|
|
46
|
-
childProps.x =
|
|
35
|
+
else if (childProps.x === undefined) {
|
|
36
|
+
// 保持相对位置
|
|
37
|
+
childProps.x = bounds.x - containerX;
|
|
47
38
|
}
|
|
48
|
-
//
|
|
49
|
-
if (vertical) {
|
|
39
|
+
// 垂直对齐(相对于容器顶边界)
|
|
40
|
+
if (vertical !== undefined) {
|
|
50
41
|
switch (vertical) {
|
|
51
42
|
case 'top':
|
|
52
|
-
childProps.y =
|
|
43
|
+
childProps.y = 0;
|
|
53
44
|
break;
|
|
54
45
|
case 'middle':
|
|
55
|
-
childProps.y =
|
|
46
|
+
childProps.y = (containerHeight - bounds.height) / 2;
|
|
56
47
|
break;
|
|
57
48
|
case 'bottom':
|
|
58
|
-
childProps.y =
|
|
49
|
+
childProps.y = containerHeight - bounds.height;
|
|
59
50
|
break;
|
|
60
51
|
}
|
|
61
52
|
}
|
|
62
|
-
else {
|
|
63
|
-
//
|
|
64
|
-
childProps.y =
|
|
53
|
+
else if (childProps.y === undefined) {
|
|
54
|
+
// 保持相对位置
|
|
55
|
+
childProps.y = bounds.y - containerY;
|
|
65
56
|
}
|
|
66
57
|
return (0, jsx_1.cloneElement)(child, childProps);
|
|
67
58
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// props.y ??= finalBounds.y;
|
|
77
|
-
props.height ?? (props.height = finalBounds.height);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return (0, jsx_runtime_1.jsx)(jsx_1.Group, { ...props, children: positionedChildren });
|
|
59
|
+
const containerProps = {
|
|
60
|
+
...props,
|
|
61
|
+
x: containerX,
|
|
62
|
+
y: containerY,
|
|
63
|
+
width: containerWidth,
|
|
64
|
+
height: containerHeight,
|
|
65
|
+
};
|
|
66
|
+
return (0, jsx_runtime_1.jsx)(jsx_1.Group, { ...containerProps, children: positionedChildren });
|
|
81
67
|
});
|
|
@@ -10,9 +10,10 @@ exports.FlexLayout = (0, jsx_1.createLayout)((children, { flexDirection = 'row',
|
|
|
10
10
|
const isRow = flexDirection === 'row' || flexDirection === 'row-reverse';
|
|
11
11
|
const isReverse = flexDirection === 'row-reverse' || flexDirection === 'column-reverse';
|
|
12
12
|
const childBounds = children.map((child) => (0, jsx_1.getElementBounds)(child));
|
|
13
|
+
const childrenBounds = (0, jsx_1.getElementsBounds)(children);
|
|
14
|
+
const containerWidth = props.width ?? childrenBounds.width;
|
|
15
|
+
const containerHeight = props.height ?? childrenBounds.height;
|
|
13
16
|
const hasContainerSize = props.width !== undefined && props.height !== undefined;
|
|
14
|
-
const containerWidth = props.width || 0;
|
|
15
|
-
const containerHeight = props.height || 0;
|
|
16
17
|
const lines = [];
|
|
17
18
|
if (flexWrap === 'wrap' && hasContainerSize) {
|
|
18
19
|
let currentLine = [];
|
|
@@ -174,33 +175,36 @@ exports.FlexLayout = (0, jsx_1.createLayout)((children, { flexDirection = 'row',
|
|
|
174
175
|
}
|
|
175
176
|
}
|
|
176
177
|
if (!hasContainerSize) {
|
|
177
|
-
if (alignItems === 'center'
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
178
|
+
if (alignItems === 'center') {
|
|
179
|
+
if (isRow) {
|
|
180
|
+
const maxHeight = Math.max(...childBounds.map((b) => b.height));
|
|
181
|
+
layoutChildren.forEach((child, index) => {
|
|
182
|
+
const bounds = childBounds[index];
|
|
183
|
+
const centerOffset = (maxHeight - bounds.height) / 2;
|
|
184
|
+
const newProps = { ...child.props };
|
|
185
|
+
newProps.y = (newProps.y || 0) + centerOffset;
|
|
186
|
+
layoutChildren[index] = (0, jsx_1.cloneElement)(child, newProps);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
const maxWidth = Math.max(...childBounds.map((b) => b.width));
|
|
191
|
+
layoutChildren.forEach((child, index) => {
|
|
192
|
+
const bounds = childBounds[index];
|
|
193
|
+
const centerOffset = (maxWidth - bounds.width) / 2;
|
|
194
|
+
const newProps = { ...child.props };
|
|
195
|
+
newProps.x = (newProps.x || 0) + centerOffset;
|
|
196
|
+
layoutChildren[index] = (0, jsx_1.cloneElement)(child, newProps);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
198
199
|
}
|
|
199
|
-
const finalBounds = (0, jsx_1.getElementsBounds)(layoutChildren);
|
|
200
|
-
// props.x ??= finalBounds.x;
|
|
201
|
-
// props.y ??= finalBounds.y;
|
|
202
|
-
props.width ?? (props.width = finalBounds.width);
|
|
203
|
-
props.height ?? (props.height = finalBounds.height);
|
|
204
200
|
}
|
|
205
|
-
|
|
201
|
+
const finalBounds = (0, jsx_1.getElementsBounds)(layoutChildren);
|
|
202
|
+
const containerProps = {
|
|
203
|
+
...props,
|
|
204
|
+
x: props.x ?? childrenBounds.x,
|
|
205
|
+
y: props.y ?? childrenBounds.y,
|
|
206
|
+
width: props.width ?? finalBounds.width,
|
|
207
|
+
height: props.height ?? finalBounds.height,
|
|
208
|
+
};
|
|
209
|
+
return (0, jsx_runtime_1.jsx)(jsx_1.Group, { ...containerProps, children: layoutChildren });
|
|
206
210
|
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ComponentType } from '../../jsx';
|
|
2
|
+
import { ItemDatum, Padding } from '../../types';
|
|
3
|
+
import type { BaseStructureProps } from './types';
|
|
4
|
+
export interface ChartBarProps extends BaseStructureProps {
|
|
5
|
+
width?: number;
|
|
6
|
+
gap?: number;
|
|
7
|
+
barGap?: number;
|
|
8
|
+
barHeight?: number;
|
|
9
|
+
barAreaWidth?: number;
|
|
10
|
+
labelGap?: number;
|
|
11
|
+
padding?: Padding;
|
|
12
|
+
showValue?: boolean;
|
|
13
|
+
valueFormatter?: (value: number, datum: ItemDatum) => string;
|
|
14
|
+
}
|
|
15
|
+
export declare const ChartBar: ComponentType<ChartBarProps>;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChartBar = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("@antv/infographic/jsx-runtime");
|
|
5
|
+
const d3_1 = require("d3");
|
|
6
|
+
const jsx_1 = require("../../jsx");
|
|
7
|
+
const utils_1 = require("../../utils");
|
|
8
|
+
const components_1 = require("../components");
|
|
9
|
+
const layouts_1 = require("../layouts");
|
|
10
|
+
const utils_2 = require("../utils");
|
|
11
|
+
const registry_1 = require("./registry");
|
|
12
|
+
const ChartBar = (props) => {
|
|
13
|
+
const { Title, Item, data, width, gap, barGap, barHeight = 28, barAreaWidth, labelGap = 16, padding = 24, showValue = true, options, valueFormatter = (value) => value.toString(), } = props;
|
|
14
|
+
const resolvedBarAreaWidth = barAreaWidth ?? width ?? 480;
|
|
15
|
+
const { title, desc, items = [], xTitle, yTitle } = data;
|
|
16
|
+
const titleContent = Title ? (0, jsx_runtime_1.jsx)(Title, { title: title, desc: desc }) : null;
|
|
17
|
+
if (items.length === 0) {
|
|
18
|
+
return ((0, jsx_runtime_1.jsx)(layouts_1.FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", children: titleContent }));
|
|
19
|
+
}
|
|
20
|
+
const [paddingTop, paddingRight, paddingBottom, paddingLeft] = (0, utils_1.parsePadding)(padding);
|
|
21
|
+
const sampleDatum = items[0] ?? { label: '', value: 0 };
|
|
22
|
+
const itemBounds = (0, jsx_1.getElementBounds)((0, jsx_runtime_1.jsx)(Item, { indexes: [0], datum: sampleDatum, data: data }));
|
|
23
|
+
const labelWidth = itemBounds.width || 140;
|
|
24
|
+
const labelHeight = itemBounds.height || barHeight;
|
|
25
|
+
const rowHeight = Math.max(barHeight, labelHeight);
|
|
26
|
+
const gapByHeight = Math.max(12, rowHeight * 0.35);
|
|
27
|
+
const resolvedGap = barGap ?? gap ?? gapByHeight;
|
|
28
|
+
const values = items.map((item) => item.value ?? 0);
|
|
29
|
+
const maxValue = Math.max(...values, 0);
|
|
30
|
+
const minValue = Math.min(...values, 0);
|
|
31
|
+
const domainMin = minValue < 0 ? minValue * 1.1 : 0;
|
|
32
|
+
let domainMax = maxValue > 0 ? maxValue * 1.1 : 0;
|
|
33
|
+
if (domainMax === domainMin) {
|
|
34
|
+
domainMax = domainMin + 1;
|
|
35
|
+
}
|
|
36
|
+
const scale = (0, d3_1.scaleLinear)()
|
|
37
|
+
.domain([domainMin, domainMax])
|
|
38
|
+
.range([0, resolvedBarAreaWidth]);
|
|
39
|
+
const zeroX = Math.min(Math.max(scale(0), 0), resolvedBarAreaWidth);
|
|
40
|
+
const minBarWidth = Math.max(2, resolvedBarAreaWidth * 0.02);
|
|
41
|
+
const chartHeight = items.length * (rowHeight + resolvedGap) - resolvedGap;
|
|
42
|
+
const yTitleSpace = yTitle ? 24 : 0;
|
|
43
|
+
const xTickSpace = 20;
|
|
44
|
+
const xTitleSpace = xTitle ? 24 : 0;
|
|
45
|
+
const yStart = paddingTop + yTitleSpace;
|
|
46
|
+
const barStartX = paddingLeft + labelWidth + labelGap;
|
|
47
|
+
const valueSpace = showValue ? 80 : 0;
|
|
48
|
+
const axisGap = Math.max(8, rowHeight * 0.2);
|
|
49
|
+
const totalWidth = barStartX + resolvedBarAreaWidth + valueSpace + paddingRight;
|
|
50
|
+
const totalHeight = yStart + chartHeight + axisGap + xTickSpace + xTitleSpace + paddingBottom;
|
|
51
|
+
const themeColors = (0, utils_2.getThemeColors)(options.themeConfig);
|
|
52
|
+
const axisColor = themeColors.colorText || '#666';
|
|
53
|
+
const colorPrimary = (0, utils_2.getColorPrimary)(options);
|
|
54
|
+
const barElements = [];
|
|
55
|
+
const valueElements = [];
|
|
56
|
+
const itemElements = [];
|
|
57
|
+
const axisElements = [];
|
|
58
|
+
const tickElements = [];
|
|
59
|
+
const gridElements = [];
|
|
60
|
+
const titleElements = [];
|
|
61
|
+
const axisY = yStart + chartHeight + axisGap;
|
|
62
|
+
const formatTick = (value) => Number.isInteger(value) ? value.toString() : value.toFixed(1);
|
|
63
|
+
items.forEach((item, index) => {
|
|
64
|
+
const indexes = [index];
|
|
65
|
+
const value = item.value ?? 0;
|
|
66
|
+
const rowY = yStart + index * (rowHeight + resolvedGap);
|
|
67
|
+
const barY = rowY + (rowHeight - barHeight) / 2;
|
|
68
|
+
const barX = value >= 0 ? barStartX + zeroX : barStartX + scale(value);
|
|
69
|
+
const barWidthRaw = value >= 0 ? scale(value) - zeroX : zeroX - scale(value);
|
|
70
|
+
const barWidth = barWidthRaw === 0 ? minBarWidth : barWidthRaw;
|
|
71
|
+
const barColor = (0, utils_2.getPaletteColor)(options, [index]) || themeColors.colorPrimary;
|
|
72
|
+
barElements.push((0, jsx_runtime_1.jsx)(jsx_1.Rect, { x: barX, y: barY, width: barWidth, height: barHeight, fill: barColor, rx: 6, ry: 6, "data-element-type": "shape" }));
|
|
73
|
+
if (showValue) {
|
|
74
|
+
const valueX = value >= 0 ? barX + barWidth + 8 : barX - 8;
|
|
75
|
+
valueElements.push((0, jsx_runtime_1.jsx)(jsx_1.Text, { x: valueX, y: barY + barHeight / 2, alignHorizontal: value >= 0 ? 'left' : 'right', alignVertical: "middle", fontSize: 14, fontWeight: "bold", fill: barColor, children: valueFormatter(value, item) }));
|
|
76
|
+
}
|
|
77
|
+
itemElements.push((0, jsx_runtime_1.jsx)(Item, { indexes: indexes, datum: item, data: data, x: paddingLeft, y: rowY + (rowHeight - labelHeight) / 2, width: labelWidth, height: labelHeight, positionV: "middle" }));
|
|
78
|
+
});
|
|
79
|
+
const tickCount = Math.max(3, Math.min(7, Math.floor(resolvedBarAreaWidth / 80)));
|
|
80
|
+
const ticks = scale.ticks(tickCount);
|
|
81
|
+
ticks.forEach((tick) => {
|
|
82
|
+
const tickX = barStartX + scale(tick);
|
|
83
|
+
gridElements.push((0, jsx_runtime_1.jsx)(jsx_1.Path, { d: `M${tickX} ${yStart} L${tickX} ${yStart + chartHeight}`, stroke: axisColor, strokeOpacity: 0.08, "data-element-type": "shape" }));
|
|
84
|
+
tickElements.push((0, jsx_runtime_1.jsx)(jsx_1.Path, { d: `M${tickX - 0.5} ${axisY} L${tickX - 0.5} ${axisY + 6}`, stroke: axisColor, "data-element-type": "shape" }));
|
|
85
|
+
tickElements.push((0, jsx_runtime_1.jsx)(jsx_1.Text, { x: tickX, y: axisY + 14, alignHorizontal: "center", alignVertical: "middle", fontSize: 12, fill: axisColor, children: formatTick(tick) }));
|
|
86
|
+
});
|
|
87
|
+
axisElements.push((0, jsx_runtime_1.jsx)(jsx_1.Path, { d: `M${barStartX} ${axisY} L${barStartX + resolvedBarAreaWidth} ${axisY}`, stroke: axisColor, "data-element-type": "shape" }));
|
|
88
|
+
if (domainMin < 0) {
|
|
89
|
+
axisElements.push((0, jsx_runtime_1.jsx)(jsx_1.Rect, { x: barStartX + zeroX - 0.5, y: yStart, width: 1, height: chartHeight, fill: colorPrimary, "data-element-type": "shape" }));
|
|
90
|
+
}
|
|
91
|
+
if (yTitle) {
|
|
92
|
+
titleElements.push((0, jsx_runtime_1.jsx)(jsx_1.Text, { x: paddingLeft + labelWidth / 2, y: paddingTop + yTitleSpace / 2, alignHorizontal: "center", alignVertical: "middle", fontSize: 14, fontWeight: "bold", fill: axisColor, children: yTitle }));
|
|
93
|
+
}
|
|
94
|
+
if (xTitle) {
|
|
95
|
+
titleElements.push((0, jsx_runtime_1.jsx)(jsx_1.Text, { x: barStartX + resolvedBarAreaWidth / 2, y: axisY + xTickSpace + xTitleSpace / 2, alignHorizontal: "center", alignVertical: "middle", fontSize: 14, fontWeight: "bold", fill: axisColor, children: xTitle }));
|
|
96
|
+
}
|
|
97
|
+
return ((0, jsx_runtime_1.jsxs)(layouts_1.FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", children: [titleContent, (0, jsx_runtime_1.jsxs)(jsx_1.Group, { width: totalWidth, height: totalHeight, children: [(0, jsx_runtime_1.jsx)(jsx_1.Group, { children: gridElements }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: barElements }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: valueElements }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: titleElements }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: [...axisElements, ...tickElements] }), (0, jsx_runtime_1.jsx)(components_1.ItemsGroup, { children: itemElements })] })] }));
|
|
98
|
+
};
|
|
99
|
+
exports.ChartBar = ChartBar;
|
|
100
|
+
(0, registry_1.registerStructure)('chart-bar', {
|
|
101
|
+
component: exports.ChartBar,
|
|
102
|
+
composites: ['title', 'item', 'xTitle', 'yTitle'],
|
|
103
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ComponentType } from '../../jsx';
|
|
2
|
+
import { ItemDatum, Padding } from '../../types';
|
|
3
|
+
import type { BaseStructureProps } from './types';
|
|
4
|
+
export interface ChartLineProps extends BaseStructureProps {
|
|
5
|
+
width?: number;
|
|
6
|
+
height?: number;
|
|
7
|
+
gap?: number;
|
|
8
|
+
padding?: Padding;
|
|
9
|
+
showValue?: boolean;
|
|
10
|
+
valueFormatter?: (value: number, datum: ItemDatum) => string;
|
|
11
|
+
}
|
|
12
|
+
export declare const ChartLine: ComponentType<ChartLineProps>;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChartLine = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("@antv/infographic/jsx-runtime");
|
|
5
|
+
const d3_1 = require("d3");
|
|
6
|
+
const jsx_1 = require("../../jsx");
|
|
7
|
+
const utils_1 = require("../../utils");
|
|
8
|
+
const components_1 = require("../components");
|
|
9
|
+
const layouts_1 = require("../layouts");
|
|
10
|
+
const utils_2 = require("../utils");
|
|
11
|
+
const registry_1 = require("./registry");
|
|
12
|
+
const ChartLine = (props) => {
|
|
13
|
+
const { Title, Item, data, width, height = 260, gap = 10, padding = 24, showValue = true, options, valueFormatter = (value) => value.toString(), } = props;
|
|
14
|
+
const { title, desc, items = [], xTitle, yTitle } = data;
|
|
15
|
+
const titleContent = Title ? (0, jsx_runtime_1.jsx)(Title, { title: title, desc: desc }) : null;
|
|
16
|
+
if (items.length === 0) {
|
|
17
|
+
return ((0, jsx_runtime_1.jsx)(layouts_1.FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", children: titleContent }));
|
|
18
|
+
}
|
|
19
|
+
const [paddingTop, paddingRight, paddingBottom, paddingLeft] = (0, utils_1.parsePadding)(padding);
|
|
20
|
+
const itemProps = {
|
|
21
|
+
indexes: [0],
|
|
22
|
+
datum: items[0],
|
|
23
|
+
data,
|
|
24
|
+
positionH: 'center',
|
|
25
|
+
positionV: 'normal',
|
|
26
|
+
};
|
|
27
|
+
const sampleBounds = (0, jsx_1.getElementBounds)((0, jsx_runtime_1.jsx)(Item, { ...itemProps }));
|
|
28
|
+
const labelWidth = sampleBounds.width;
|
|
29
|
+
const labelHeight = sampleBounds.height;
|
|
30
|
+
const xTickSpace = Math.max(28, labelHeight + 14);
|
|
31
|
+
const yTickSpace = 44;
|
|
32
|
+
const yTitleSpace = yTitle ? 26 : 0;
|
|
33
|
+
const xTitleSpace = xTitle ? 22 : 0;
|
|
34
|
+
const baseSpacing = labelWidth + gap;
|
|
35
|
+
const naturalChartWidth = items.length > 0 ? (items.length - 1) * baseSpacing + labelWidth : 0;
|
|
36
|
+
const targetChartWidth = width !== undefined ? width : Math.max(200, naturalChartWidth || 320);
|
|
37
|
+
const spacing = items.length > 1
|
|
38
|
+
? Math.max(baseSpacing, (targetChartWidth - labelWidth) / (items.length - 1))
|
|
39
|
+
: 0;
|
|
40
|
+
const derivedChartWidth = items.length > 0
|
|
41
|
+
? Math.max(labelWidth, (items.length - 1) * spacing + labelWidth)
|
|
42
|
+
: 0;
|
|
43
|
+
const chartOriginX = paddingLeft + yTickSpace + yTitleSpace;
|
|
44
|
+
const chartOriginY = paddingTop + yTitleSpace;
|
|
45
|
+
const totalWidth = chartOriginX + derivedChartWidth + paddingRight;
|
|
46
|
+
const totalHeight = chartOriginY + height + xTickSpace + xTitleSpace + paddingBottom;
|
|
47
|
+
const values = items.map((item) => item.value ?? 0);
|
|
48
|
+
const maxValue = Math.max(...values, 0);
|
|
49
|
+
const minValue = Math.min(...values, 0);
|
|
50
|
+
const domainPadding = Math.max(Math.abs(maxValue), Math.abs(minValue)) * 0.1;
|
|
51
|
+
const domainMin = minValue < 0 ? minValue - domainPadding : 0;
|
|
52
|
+
let domainMax = maxValue > 0 ? maxValue + domainPadding : 1;
|
|
53
|
+
if (domainMax === domainMin) {
|
|
54
|
+
domainMax = domainMin + 1;
|
|
55
|
+
}
|
|
56
|
+
const scaleY = (0, d3_1.scaleLinear)()
|
|
57
|
+
.domain([domainMin, domainMax])
|
|
58
|
+
.nice()
|
|
59
|
+
.range([height, 0]);
|
|
60
|
+
const zeroY = Math.max(0, Math.min(height, scaleY(0)));
|
|
61
|
+
const axisBaseY = domainMax <= 0 ? 0 : domainMin >= 0 ? height : zeroY;
|
|
62
|
+
const colorPrimary = (0, utils_2.getColorPrimary)(options);
|
|
63
|
+
const themeColors = (0, utils_2.getThemeColors)(options.themeConfig);
|
|
64
|
+
const axisColor = themeColors.colorText || '#666';
|
|
65
|
+
const gridElements = [];
|
|
66
|
+
const axisElements = [];
|
|
67
|
+
const lineElements = [];
|
|
68
|
+
const pointElements = [];
|
|
69
|
+
const valueElements = [];
|
|
70
|
+
const titleElements = [];
|
|
71
|
+
const tickElements = [];
|
|
72
|
+
const ticksY = scaleY.ticks(6);
|
|
73
|
+
ticksY.forEach((tick) => {
|
|
74
|
+
const yPos = chartOriginY + scaleY(tick);
|
|
75
|
+
gridElements.push((0, jsx_runtime_1.jsx)(jsx_1.Path, { d: `M ${chartOriginX} ${yPos} L ${chartOriginX + derivedChartWidth} ${yPos}`, width: derivedChartWidth, height: 1, stroke: axisColor, strokeWidth: 1, "data-element-type": "shape", opacity: 0.08 }));
|
|
76
|
+
tickElements.push((0, jsx_runtime_1.jsx)(jsx_1.Text, { x: chartOriginX - 8, y: yPos, alignHorizontal: "right", alignVertical: "middle", fontSize: 12, fill: axisColor, children: Number.isInteger(tick) ? tick.toString() : tick.toFixed(1) }));
|
|
77
|
+
});
|
|
78
|
+
const xLabels = [];
|
|
79
|
+
const pointPositions = [];
|
|
80
|
+
const colorStopsData = [];
|
|
81
|
+
const createSmoothPath = (points) => {
|
|
82
|
+
if (points.length === 0)
|
|
83
|
+
return '';
|
|
84
|
+
if (points.length === 1) {
|
|
85
|
+
const p = points[0];
|
|
86
|
+
return `M ${p.x} ${p.y}`;
|
|
87
|
+
}
|
|
88
|
+
const segments = [];
|
|
89
|
+
segments.push(`M ${points[0].x} ${points[0].y}`);
|
|
90
|
+
for (let i = 0; i < points.length - 1; i++) {
|
|
91
|
+
const p0 = points[i - 1] || points[i];
|
|
92
|
+
const p1 = points[i];
|
|
93
|
+
const p2 = points[i + 1];
|
|
94
|
+
const p3 = points[i + 2] || p2;
|
|
95
|
+
const cp1x = p1.x + (p2.x - p0.x) / 6;
|
|
96
|
+
const cp1y = p1.y + (p2.y - p0.y) / 6;
|
|
97
|
+
const cp2x = p2.x - (p3.x - p1.x) / 6;
|
|
98
|
+
const cp2y = p2.y - (p3.y - p1.y) / 6;
|
|
99
|
+
segments.push(`C ${cp1x} ${cp1y} ${cp2x} ${cp2y} ${p2.x} ${p2.y}`);
|
|
100
|
+
}
|
|
101
|
+
return segments.join(' ');
|
|
102
|
+
};
|
|
103
|
+
items.forEach((item, index) => {
|
|
104
|
+
const x = chartOriginX + index * spacing + labelWidth / 2;
|
|
105
|
+
const y = chartOriginY + scaleY(item.value ?? 0);
|
|
106
|
+
pointPositions.push({ x, y, datum: item });
|
|
107
|
+
xLabels.push((0, jsx_runtime_1.jsx)(Item, { ...itemProps, indexes: [index], datum: item, x: x - labelWidth / 2, y: chartOriginY + height + 4 }));
|
|
108
|
+
const stopColor = (0, utils_2.getPaletteColor)(options, [index]) || themeColors.colorPrimary;
|
|
109
|
+
colorStopsData.push({ x, color: stopColor });
|
|
110
|
+
});
|
|
111
|
+
const minStopX = colorStopsData.length > 0
|
|
112
|
+
? Math.min(...colorStopsData.map((s) => s.x))
|
|
113
|
+
: chartOriginX;
|
|
114
|
+
const maxStopX = colorStopsData.length > 0
|
|
115
|
+
? Math.max(...colorStopsData.map((s) => s.x))
|
|
116
|
+
: chartOriginX + derivedChartWidth;
|
|
117
|
+
const stopSpan = Math.max(1, maxStopX - minStopX);
|
|
118
|
+
const gradientStops = colorStopsData.map((s) => ((0, jsx_runtime_1.jsx)("stop", { offset: `${((s.x - minStopX) / stopSpan) * 100}%`, stopColor: s.color })));
|
|
119
|
+
const areaStops = colorStopsData.map((s) => ((0, jsx_runtime_1.jsx)("stop", { offset: `${((s.x - minStopX) / stopSpan) * 100}%`, stopColor: s.color, stopOpacity: "0.18" })));
|
|
120
|
+
if (colorStopsData.length > 0) {
|
|
121
|
+
const lastColor = colorStopsData[colorStopsData.length - 1].color;
|
|
122
|
+
gradientStops.push((0, jsx_runtime_1.jsx)("stop", { offset: "100%", stopColor: lastColor }));
|
|
123
|
+
areaStops.push((0, jsx_runtime_1.jsx)("stop", { offset: "100%", stopColor: lastColor, stopOpacity: "0.04" }));
|
|
124
|
+
}
|
|
125
|
+
const gradientIdBase = `chart-line-${(0, utils_1.getSimpleHash)([
|
|
126
|
+
derivedChartWidth,
|
|
127
|
+
height,
|
|
128
|
+
axisColor,
|
|
129
|
+
colorPrimary,
|
|
130
|
+
colorStopsData.map((s) => `${s.x.toFixed(2)}-${s.color}`).join(),
|
|
131
|
+
].join(':'))}`;
|
|
132
|
+
const gradientStrokeId = `${gradientIdBase}-stroke`;
|
|
133
|
+
const gradientAreaId = `${gradientIdBase}-area`;
|
|
134
|
+
const smoothLinePath = createSmoothPath(pointPositions);
|
|
135
|
+
lineElements.push((0, jsx_runtime_1.jsx)(jsx_1.Path, { d: smoothLinePath, width: derivedChartWidth, height: height, stroke: `url(#${gradientStrokeId})`, strokeWidth: 3, fill: "none", "data-element-type": "shape" }));
|
|
136
|
+
const areaCurveTail = smoothLinePath.includes('C')
|
|
137
|
+
? smoothLinePath.slice(smoothLinePath.indexOf('C'))
|
|
138
|
+
: '';
|
|
139
|
+
const areaPath = [
|
|
140
|
+
`M ${pointPositions[0].x} ${chartOriginY + axisBaseY}`,
|
|
141
|
+
`L ${pointPositions[0].x} ${pointPositions[0].y}`,
|
|
142
|
+
areaCurveTail,
|
|
143
|
+
`L ${pointPositions[pointPositions.length - 1].x} ${chartOriginY + axisBaseY}`,
|
|
144
|
+
'Z',
|
|
145
|
+
].join(' ');
|
|
146
|
+
lineElements.push((0, jsx_runtime_1.jsx)(jsx_1.Path, { d: areaPath, width: derivedChartWidth, height: height, fill: `url(#${gradientAreaId})`, stroke: "none", "data-element-type": "shape" }));
|
|
147
|
+
pointPositions.forEach((pos, index) => {
|
|
148
|
+
const paletteColor = (0, utils_2.getPaletteColor)(options, [index]) || themeColors.colorPrimary;
|
|
149
|
+
pointElements.push((0, jsx_runtime_1.jsx)(jsx_1.Ellipse, { x: pos.x - 6, y: pos.y - 6, width: 12, height: 12, fill: paletteColor, "data-element-type": "shape" }));
|
|
150
|
+
if (showValue) {
|
|
151
|
+
valueElements.push((0, jsx_runtime_1.jsx)(jsx_1.Text, { x: pos.x, y: pos.y - 12, alignHorizontal: "center", alignVertical: "bottom", fontSize: 12, fontWeight: "bold", fill: paletteColor, children: valueFormatter(pos.datum.value ?? 0, pos.datum) }));
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
axisElements.push((0, jsx_runtime_1.jsx)(jsx_1.Path, { d: `M ${chartOriginX} ${chartOriginY + axisBaseY} L ${chartOriginX + derivedChartWidth} ${chartOriginY + axisBaseY}`, width: derivedChartWidth, height: 1, stroke: axisColor, strokeWidth: 1, "data-element-type": "shape" }));
|
|
155
|
+
axisElements.push((0, jsx_runtime_1.jsx)(jsx_1.Path, { d: `M ${chartOriginX} ${chartOriginY} L ${chartOriginX} ${chartOriginY + height}`, width: 1, height: height, stroke: axisColor, strokeWidth: 1, "data-element-type": "shape" }));
|
|
156
|
+
if (xTitle) {
|
|
157
|
+
titleElements.push((0, jsx_runtime_1.jsx)(jsx_1.Text, { x: chartOriginX + derivedChartWidth / 2, y: chartOriginY + height + xTickSpace + xTitleSpace / 2, alignHorizontal: "center", alignVertical: "middle", fontSize: 14, fontWeight: "bold", fill: axisColor, children: xTitle }));
|
|
158
|
+
}
|
|
159
|
+
if (yTitle) {
|
|
160
|
+
titleElements.push((0, jsx_runtime_1.jsx)(jsx_1.Text, { x: paddingLeft + yTitleSpace / 2, y: chartOriginY + height / 2, alignHorizontal: "center", alignVertical: "middle", fontSize: 14, fontWeight: "bold", fill: axisColor, children: yTitle }));
|
|
161
|
+
}
|
|
162
|
+
return ((0, jsx_runtime_1.jsxs)(layouts_1.FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", children: [titleContent, (0, jsx_runtime_1.jsxs)(jsx_1.Group, { width: totalWidth, height: totalHeight, children: [(0, jsx_runtime_1.jsxs)(jsx_1.Defs, { children: [(0, jsx_runtime_1.jsx)("linearGradient", { id: gradientStrokeId, x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: gradientStops }), (0, jsx_runtime_1.jsxs)("linearGradient", { id: gradientAreaId, x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [areaStops, (0, jsx_runtime_1.jsx)("stop", { offset: "100%", stopColor: colorPrimary, stopOpacity: "0.04" })] })] }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: gridElements }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: [...axisElements, ...tickElements] }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: lineElements }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: pointElements }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: valueElements }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: titleElements }), (0, jsx_runtime_1.jsx)(components_1.ItemsGroup, { children: xLabels })] })] }));
|
|
163
|
+
};
|
|
164
|
+
exports.ChartLine = ChartLine;
|
|
165
|
+
(0, registry_1.registerStructure)('chart-line', {
|
|
166
|
+
component: exports.ChartLine,
|
|
167
|
+
composites: ['title', 'item', 'xTitle', 'yTitle'],
|
|
168
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ComponentType } from '../../jsx';
|
|
2
|
+
import type { BaseStructureProps } from './types';
|
|
3
|
+
export interface ChartPieProps extends BaseStructureProps {
|
|
4
|
+
radius?: number;
|
|
5
|
+
innerRadius?: number;
|
|
6
|
+
padding?: number;
|
|
7
|
+
showPercentage?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const ChartPie: ComponentType<ChartPieProps>;
|