@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
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChartPie = 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 components_1 = require("../components");
|
|
8
|
+
const layouts_1 = require("../layouts");
|
|
9
|
+
const utils_1 = require("../utils");
|
|
10
|
+
const registry_1 = require("./registry");
|
|
11
|
+
const ChartPie = (props) => {
|
|
12
|
+
const { Title, Item, data, radius = 140, innerRadius = 0, padding = 30, showPercentage = true, options, } = props;
|
|
13
|
+
const { title, desc, items = [] } = data;
|
|
14
|
+
const titleContent = Title ? (0, jsx_runtime_1.jsx)(Title, { title: title, desc: desc }) : null;
|
|
15
|
+
const btnBounds = (0, jsx_1.getElementBounds)((0, jsx_runtime_1.jsx)(components_1.BtnAdd, { indexes: [0] }));
|
|
16
|
+
// 获取 Item 的预估尺寸
|
|
17
|
+
const sampleDatum = items[0] ?? { label: '', value: 0 };
|
|
18
|
+
const itemBounds = (0, jsx_1.getElementBounds)((0, jsx_runtime_1.jsx)(Item, { indexes: [0], datum: sampleDatum, data: data, positionH: "center", positionV: "middle" }));
|
|
19
|
+
const labelWidth = itemBounds.width || 140;
|
|
20
|
+
const labelHeight = itemBounds.height || 32;
|
|
21
|
+
// 基础半径设置
|
|
22
|
+
const outerRadius = Math.max(radius, 60);
|
|
23
|
+
// 连线水平拉伸的系数
|
|
24
|
+
const extensionFactor = 1.35;
|
|
25
|
+
const textGap = 8;
|
|
26
|
+
// 计算画布中心和总尺寸
|
|
27
|
+
// 水平方向:半径 * 系数 + 间距 + 标签宽度 + 边缘padding
|
|
28
|
+
const maxHorizontalDistance = outerRadius * extensionFactor + textGap + labelWidth;
|
|
29
|
+
const maxVerticalDistance = outerRadius;
|
|
30
|
+
const centerX = padding + maxHorizontalDistance;
|
|
31
|
+
const centerY = padding + maxVerticalDistance;
|
|
32
|
+
const totalWidth = centerX * 2;
|
|
33
|
+
const totalHeight = centerY * 2;
|
|
34
|
+
// 空数据处理
|
|
35
|
+
if (items.length === 0) {
|
|
36
|
+
return ((0, jsx_runtime_1.jsxs)(layouts_1.FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", children: [titleContent, (0, jsx_runtime_1.jsx)(jsx_1.Group, { width: totalWidth, height: totalHeight, children: (0, jsx_runtime_1.jsx)(components_1.BtnsGroup, { children: (0, jsx_runtime_1.jsx)(components_1.BtnAdd, { indexes: [0], x: centerX - btnBounds.width / 2, y: centerY - btnBounds.height / 2 }) }) })] }));
|
|
37
|
+
}
|
|
38
|
+
const totalValue = items.reduce((sum, item) => sum + Math.max(item.value ?? 0, 0), 0);
|
|
39
|
+
const colorPrimary = (0, utils_1.getColorPrimary)(options);
|
|
40
|
+
const themeColors = (0, utils_1.getThemeColors)(options.themeConfig);
|
|
41
|
+
// 1. 饼图生成器
|
|
42
|
+
const pieGenerator = (0, d3_1.pie)()
|
|
43
|
+
.value((item) => Math.max(item.value ?? 0, 0))
|
|
44
|
+
.sort(null)
|
|
45
|
+
.startAngle(0)
|
|
46
|
+
.endAngle(Math.PI * 2);
|
|
47
|
+
const arcData = pieGenerator(items);
|
|
48
|
+
// 2. 弧形生成器
|
|
49
|
+
const arcGenerator = (0, d3_1.arc)()
|
|
50
|
+
.innerRadius(innerRadius)
|
|
51
|
+
.outerRadius(outerRadius)
|
|
52
|
+
.cornerRadius(2);
|
|
53
|
+
// 连线起点
|
|
54
|
+
const innerArc = (0, d3_1.arc)()
|
|
55
|
+
.innerRadius(outerRadius)
|
|
56
|
+
.outerRadius(outerRadius);
|
|
57
|
+
// 连线拐点
|
|
58
|
+
const outerArc = (0, d3_1.arc)()
|
|
59
|
+
.innerRadius(outerRadius * 1.15)
|
|
60
|
+
.outerRadius(outerRadius * 1.15);
|
|
61
|
+
const percentTextRadius = innerRadius + (outerRadius - innerRadius) * 0.5;
|
|
62
|
+
const percentageArc = (0, d3_1.arc)()
|
|
63
|
+
.innerRadius(percentTextRadius)
|
|
64
|
+
.outerRadius(percentTextRadius);
|
|
65
|
+
// 删除按钮位置
|
|
66
|
+
const deleteButtonArc = (0, d3_1.arc)()
|
|
67
|
+
.innerRadius(outerRadius * 0.85)
|
|
68
|
+
.outerRadius(outerRadius * 0.85);
|
|
69
|
+
const sliceElements = [];
|
|
70
|
+
const percentElements = [];
|
|
71
|
+
const connectorElements = [];
|
|
72
|
+
const itemElements = [];
|
|
73
|
+
const btnElements = [];
|
|
74
|
+
// 3. 遍历生成图形
|
|
75
|
+
arcData.forEach((arcDatum) => {
|
|
76
|
+
const currentItem = arcDatum.data;
|
|
77
|
+
const originalIndex = arcDatum.index;
|
|
78
|
+
const color = (0, utils_1.getPaletteColor)(options, [originalIndex]) ||
|
|
79
|
+
themeColors.colorPrimary ||
|
|
80
|
+
colorPrimary;
|
|
81
|
+
// --- 绘制扇形 ---
|
|
82
|
+
const pathD = arcGenerator(arcDatum) || '';
|
|
83
|
+
sliceElements.push((0, jsx_runtime_1.jsx)(jsx_1.Path, { d: pathD, fill: color, stroke: themeColors.colorBg, strokeWidth: 1, "data-element-type": "shape", width: outerRadius * 2, height: outerRadius * 2 }));
|
|
84
|
+
// --- 计算关键点 ---
|
|
85
|
+
const midAngle = arcDatum.startAngle + (arcDatum.endAngle - arcDatum.startAngle) / 2;
|
|
86
|
+
const isRight = midAngle < Math.PI;
|
|
87
|
+
// 1. 起点
|
|
88
|
+
const p0 = innerArc.centroid(arcDatum);
|
|
89
|
+
// 2. 拐点
|
|
90
|
+
const p1 = outerArc.centroid(arcDatum);
|
|
91
|
+
// 3. 终点 (水平拉伸)
|
|
92
|
+
const labelXOffset = outerRadius * extensionFactor * (isRight ? 1 : -1);
|
|
93
|
+
const p2 = [labelXOffset, p1[1]];
|
|
94
|
+
// --- 绘制连线 ---
|
|
95
|
+
connectorElements.push((0, jsx_runtime_1.jsx)(jsx_1.Path, { d: `M${centerX + p0[0]} ${centerY + p0[1]} L${centerX + p1[0]} ${centerY + p1[1]} L${centerX + p2[0]} ${centerY + p2[1]}`, stroke: colorPrimary, strokeOpacity: 0.45, strokeWidth: 2, fill: "none", "data-element-type": "shape" }));
|
|
96
|
+
// --- 绘制 Item ---
|
|
97
|
+
const itemX = centerX + p2[0] + (isRight ? textGap : -textGap - labelWidth);
|
|
98
|
+
const itemY = centerY + p2[1] - labelHeight / 2;
|
|
99
|
+
itemElements.push((0, jsx_runtime_1.jsx)(Item, { indexes: [originalIndex], datum: currentItem, data: data, x: itemX, y: itemY, width: labelWidth, height: labelHeight, positionH: isRight ? 'normal' : 'flipped', positionV: "middle", themeColors: (0, utils_1.getThemeColors)({ colorPrimary: color }, options) }));
|
|
100
|
+
// --- 绘制百分比 ---
|
|
101
|
+
if (showPercentage && totalValue > 0) {
|
|
102
|
+
const percentPos = percentageArc.centroid(arcDatum);
|
|
103
|
+
const value = Math.max(arcDatum.value, 0);
|
|
104
|
+
const percentText = ((value * 100) / totalValue).toFixed(1);
|
|
105
|
+
// 定义文本框尺寸
|
|
106
|
+
const textWidth = 50;
|
|
107
|
+
const textHeight = 20;
|
|
108
|
+
percentElements.push((0, jsx_runtime_1.jsx)(jsx_1.Text, { x: centerX + percentPos[0] - textWidth / 2, y: centerY + percentPos[1] - textHeight / 2, width: textWidth, height: textHeight, alignHorizontal: "center", alignVertical: "middle", fontSize: 12, fontWeight: "bold", fill: "#ffffff", "data-value": value, "data-indexes": [originalIndex], "data-element-type": "item-value" /* ElementTypeEnum.ItemValue */, children: `${percentText}%` }));
|
|
109
|
+
}
|
|
110
|
+
// --- 绘制删除按钮 ---
|
|
111
|
+
const deletePos = deleteButtonArc.centroid(arcDatum);
|
|
112
|
+
btnElements.push((0, jsx_runtime_1.jsx)(components_1.BtnRemove, { indexes: [originalIndex], x: centerX + deletePos[0] - btnBounds.width / 2, y: centerY + deletePos[1] - btnBounds.height / 2 }));
|
|
113
|
+
});
|
|
114
|
+
// --- 绘制添加按钮 ---
|
|
115
|
+
arcData.forEach((arcDatum, index) => {
|
|
116
|
+
const nextIndex = (index + 1) % arcData.length;
|
|
117
|
+
const currentEnd = arcDatum.endAngle;
|
|
118
|
+
const nextStart = arcData[nextIndex].startAngle + (nextIndex === 0 ? Math.PI * 2 : 0);
|
|
119
|
+
const midAngle = (currentEnd + nextStart) / 2;
|
|
120
|
+
const btnR = outerRadius * 1.0;
|
|
121
|
+
const btnX = Math.sin(midAngle) * btnR;
|
|
122
|
+
const btnY = -Math.cos(midAngle) * btnR;
|
|
123
|
+
btnElements.push((0, jsx_runtime_1.jsx)(components_1.BtnAdd, { indexes: [index + 1], x: centerX + btnX - btnBounds.width / 2, y: centerY + btnY - btnBounds.height / 2 }));
|
|
124
|
+
});
|
|
125
|
+
return ((0, jsx_runtime_1.jsxs)(layouts_1.FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", gap: 30, children: [titleContent, (0, jsx_runtime_1.jsxs)(jsx_1.Group, { width: totalWidth, height: totalHeight, children: [(0, jsx_runtime_1.jsx)(jsx_1.Group, { x: centerX, y: centerY, children: sliceElements }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: connectorElements }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: percentElements }), (0, jsx_runtime_1.jsx)(components_1.ItemsGroup, { children: itemElements }), (0, jsx_runtime_1.jsx)(components_1.BtnsGroup, { children: btnElements })] })] }));
|
|
126
|
+
};
|
|
127
|
+
exports.ChartPie = ChartPie;
|
|
128
|
+
(0, registry_1.registerStructure)('chart-pie', {
|
|
129
|
+
component: exports.ChartPie,
|
|
130
|
+
composites: ['title', 'item'],
|
|
131
|
+
});
|
|
@@ -18,7 +18,7 @@ const ProsConsArrow = (props) => {
|
|
|
18
18
|
fontWeight: 'bold',
|
|
19
19
|
fill: colorBg,
|
|
20
20
|
};
|
|
21
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_1.Group, { x: x, y: y, width: width, height: height, children: [(0, jsx_runtime_1.jsxs)(components_1.ShapesGroup, { children: [(0, jsx_runtime_1.jsx)("path", { d: "M137 54C137 54.2903 137 54.5806 136.706 54.7742L108.614 86.0323H64.7619C64.4071 86.0204 64.0557 86.1043 63.7453 86.2747C63.4349 86.4452 63.1773 86.6959 63 87C63.0037 86.7447 63.1092 86.5012 63.2936 86.3226L91.3862 55.0645H135.238C135.593 55.0763 135.944 54.9925 136.255 54.822C136.565 54.6516 136.823 54.4009 137 54.0968V54Z", fill: "#D9D9D9" }), (0, jsx_runtime_1.jsx)("path", { d: "M39.3272 0.484649C39.6146 0.234929 39.9662 0.0736935 40.3407 0.0198929C40.7152 -0.0339076 41.0971 0.0219605 41.4414 0.180925C41.7857 0.33989 42.0783 0.595358 42.2846 0.917314C42.491 1.23927 42.6026 1.61434 42.6063 1.99848V14.8156H136.013C136.54 14.8156 137.045 15.0282 137.418 15.4068C137.791 15.7853 138 16.2987 138 16.834V53.166C138 53.7013 137.791 54.2147 137.418 54.5932C137.045 54.9718 136.54 55.1844 136.013 55.1844H42.6063V68.0015C42.6026 68.3857 42.491 68.7607 42.2846 69.0827C42.0783 69.4046 41.7857 69.6601 41.4414 69.8191C41.0971 69.9781 40.7152 70.0339 40.3407 69.9801C39.9662 69.9263 39.6146 69.7651 39.3272 69.5154L0.672847 36.5138C0.461378 36.3244 0.292014 36.0915 0.176005 35.8305C0.0599968 35.5695 0 35.2864 0 35C0 34.7136 0.0599968 34.4306 0.176005 34.1696C0.292014 33.9085 0.461378 33.6756 0.672847 33.4862L39.4265 0.484649H39.3272Z", fill: colorPositive }), (0, jsx_runtime_1.jsx)("path", { d: "M157.394 73.0007C157.397 72.6162 157.509 72.2407 157.715 71.9183C157.922 71.596 158.214 71.3403 158.559 71.1811C158.903 71.022 159.285 70.9661 159.659 71.0199C160.034 71.0738 160.385 71.2352 160.673 71.4852L199.327 104.524C199.539 104.714 199.708 104.947 199.824 105.208C199.94 105.47 200 105.753 200 106.04C200 106.326 199.94 106.61 199.824 106.871C199.708 107.132 199.539 107.366 199.327 107.555L160.573 140.594C160.285 140.815 159.943 140.951 159.584 140.989C159.225 141.027 158.862 140.965 158.535 140.809C158.208 140.653 157.929 140.41 157.728 140.105C157.527 139.8 157.411 139.445 157.394 139.078V126.247H63.9874C63.4603 126.247 62.9548 126.034 62.5821 125.655C62.2094 125.276 62 124.762 62 124.226V87.8531C62 87.3172 62.2094 86.8032 62.5821 86.4242C62.9548 86.0453 63.4603 85.8324 63.9874 85.8324H157.394V73.0007Z", fill: colorNegative })] }), (0, jsx_runtime_1.jsx)(jsx_1.Text, { x:
|
|
21
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_1.Group, { x: x, y: y, width: width, height: height, children: [(0, jsx_runtime_1.jsxs)(components_1.ShapesGroup, { children: [(0, jsx_runtime_1.jsx)("path", { d: "M137 54C137 54.2903 137 54.5806 136.706 54.7742L108.614 86.0323H64.7619C64.4071 86.0204 64.0557 86.1043 63.7453 86.2747C63.4349 86.4452 63.1773 86.6959 63 87C63.0037 86.7447 63.1092 86.5012 63.2936 86.3226L91.3862 55.0645H135.238C135.593 55.0763 135.944 54.9925 136.255 54.822C136.565 54.6516 136.823 54.4009 137 54.0968V54Z", fill: "#D9D9D9" }), (0, jsx_runtime_1.jsx)("path", { d: "M39.3272 0.484649C39.6146 0.234929 39.9662 0.0736935 40.3407 0.0198929C40.7152 -0.0339076 41.0971 0.0219605 41.4414 0.180925C41.7857 0.33989 42.0783 0.595358 42.2846 0.917314C42.491 1.23927 42.6026 1.61434 42.6063 1.99848V14.8156H136.013C136.54 14.8156 137.045 15.0282 137.418 15.4068C137.791 15.7853 138 16.2987 138 16.834V53.166C138 53.7013 137.791 54.2147 137.418 54.5932C137.045 54.9718 136.54 55.1844 136.013 55.1844H42.6063V68.0015C42.6026 68.3857 42.491 68.7607 42.2846 69.0827C42.0783 69.4046 41.7857 69.6601 41.4414 69.8191C41.0971 69.9781 40.7152 70.0339 40.3407 69.9801C39.9662 69.9263 39.6146 69.7651 39.3272 69.5154L0.672847 36.5138C0.461378 36.3244 0.292014 36.0915 0.176005 35.8305C0.0599968 35.5695 0 35.2864 0 35C0 34.7136 0.0599968 34.4306 0.176005 34.1696C0.292014 33.9085 0.461378 33.6756 0.672847 33.4862L39.4265 0.484649H39.3272Z", fill: colorPositive }), (0, jsx_runtime_1.jsx)("path", { d: "M157.394 73.0007C157.397 72.6162 157.509 72.2407 157.715 71.9183C157.922 71.596 158.214 71.3403 158.559 71.1811C158.903 71.022 159.285 70.9661 159.659 71.0199C160.034 71.0738 160.385 71.2352 160.673 71.4852L199.327 104.524C199.539 104.714 199.708 104.947 199.824 105.208C199.94 105.47 200 105.753 200 106.04C200 106.326 199.94 106.61 199.824 106.871C199.708 107.132 199.539 107.366 199.327 107.555L160.573 140.594C160.285 140.815 159.943 140.951 159.584 140.989C159.225 141.027 158.862 140.965 158.535 140.809C158.208 140.653 157.929 140.41 157.728 140.105C157.527 139.8 157.411 139.445 157.394 139.078V126.247H63.9874C63.4603 126.247 62.9548 126.034 62.5821 125.655C62.2094 125.276 62 124.762 62 124.226V87.8531C62 87.3172 62.2094 86.8032 62.5821 86.4242C62.9548 86.0453 63.4603 85.8324 63.9874 85.8324H157.394V73.0007Z", fill: colorNegative })] }), (0, jsx_runtime_1.jsx)(jsx_1.Text, { x: 40, y: 15, ...textAttrs, children: "Pros" }), (0, jsx_runtime_1.jsx)(jsx_1.Text, { x: 70, y: 85, ...textAttrs, children: "Cons" })] }));
|
|
22
22
|
};
|
|
23
23
|
exports.ProsConsArrow = ProsConsArrow;
|
|
24
24
|
(0, types_1.registerDivider)('pros-cons-arrow', exports.ProsConsArrow);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ComponentType } from '../../jsx';
|
|
2
|
+
import type { HierarchyColorMode } from '../utils';
|
|
3
|
+
import type { BaseStructureProps } from './types';
|
|
4
|
+
type EdgeAlign = 'top' | 'center' | 'bottom' | number;
|
|
5
|
+
type EdgeType = 'curved' | 'straight';
|
|
6
|
+
type EdgeColorMode = 'solid' | 'gradient';
|
|
7
|
+
export interface HierarchyMindmapProps extends BaseStructureProps {
|
|
8
|
+
/** 水平层级间距 */
|
|
9
|
+
levelGap?: number;
|
|
10
|
+
/** 垂直节点间距 */
|
|
11
|
+
nodeGap?: number;
|
|
12
|
+
/** 连线在节点上的垂直对齐方式;字符串为固定位置,数字为 0-1 比例 */
|
|
13
|
+
edgeAlign?: EdgeAlign;
|
|
14
|
+
/** 节点/连线着色模式 */
|
|
15
|
+
colorMode?: HierarchyColorMode;
|
|
16
|
+
/** 连线颜色模式 */
|
|
17
|
+
edgeColorMode?: EdgeColorMode;
|
|
18
|
+
/** 连线类型:曲线或直线 */
|
|
19
|
+
edgeType?: EdgeType;
|
|
20
|
+
/** 连线宽度 */
|
|
21
|
+
edgeWidth?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare const HierarchyMindmap: ComponentType<HierarchyMindmapProps>;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HierarchyMindmap = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("@antv/infographic/jsx-runtime");
|
|
5
|
+
const hierarchy_1 = require("@antv/hierarchy");
|
|
6
|
+
const jsx_1 = require("../../jsx");
|
|
7
|
+
const components_1 = require("../components");
|
|
8
|
+
const layouts_1 = require("../layouts");
|
|
9
|
+
const utils_1 = require("../utils");
|
|
10
|
+
const registry_1 = require("./registry");
|
|
11
|
+
const DEFAULT_LEVEL_GAP = 60;
|
|
12
|
+
const DEFAULT_NODE_GAP = 14;
|
|
13
|
+
const LAYOUT_PADDING = 30;
|
|
14
|
+
const DEFAULT_EDGE_ALIGN = 'center';
|
|
15
|
+
const DEFAULT_EDGE_TYPE = 'curved';
|
|
16
|
+
const DEFAULT_EDGE_WIDTH = 2;
|
|
17
|
+
const DEFAULT_COLOR_MODE = 'node';
|
|
18
|
+
const DEFAULT_EDGE_COLOR_MODE = 'solid';
|
|
19
|
+
const annotateTree = (node, parentIndexes = [], index = 0) => {
|
|
20
|
+
const indexes = [...parentIndexes, index];
|
|
21
|
+
return {
|
|
22
|
+
...node,
|
|
23
|
+
_indexes: indexes,
|
|
24
|
+
children: node.children?.map((child, childIndex) => annotateTree(child, indexes, childIndex)) ?? [],
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
const collectNodes = (node, nodes, links, parent) => {
|
|
28
|
+
var _a;
|
|
29
|
+
nodes.push(node);
|
|
30
|
+
(_a = node.data)._flatIndex ?? (_a._flatIndex = nodes.length - 1);
|
|
31
|
+
if (parent)
|
|
32
|
+
links.push({ parent, child: node });
|
|
33
|
+
const children = node.children;
|
|
34
|
+
children?.forEach((child) => collectNodes(child, nodes, links, node));
|
|
35
|
+
};
|
|
36
|
+
const createCurvePath = (sx, sy, tx, ty) => {
|
|
37
|
+
const offsetX = Math.abs(tx - sx) / 2;
|
|
38
|
+
const ctrlX1 = tx > sx ? sx + offsetX : sx - offsetX;
|
|
39
|
+
const ctrlX2 = tx > sx ? tx - offsetX : tx + offsetX;
|
|
40
|
+
return `M ${sx} ${sy} C ${ctrlX1} ${sy} ${ctrlX2} ${ty} ${tx} ${ty}`;
|
|
41
|
+
};
|
|
42
|
+
const createStraightPath = (sx, sy, tx, ty) => `M ${sx} ${sy} L ${tx} ${ty}`;
|
|
43
|
+
const getEdgeAnchors = (parentLayout, childLayout, childSide, align = DEFAULT_EDGE_ALIGN) => {
|
|
44
|
+
const clampRatio = (val) => Math.max(0, Math.min(1, val));
|
|
45
|
+
const toRatio = (value) => {
|
|
46
|
+
if (value === 'top')
|
|
47
|
+
return 0;
|
|
48
|
+
if (value === 'bottom')
|
|
49
|
+
return 1;
|
|
50
|
+
if (value === 'center')
|
|
51
|
+
return 0.5;
|
|
52
|
+
return clampRatio(value);
|
|
53
|
+
};
|
|
54
|
+
const ratio = toRatio(align);
|
|
55
|
+
const parentCy = parentLayout.y + parentLayout.height * ratio;
|
|
56
|
+
const childCy = childLayout.y + childLayout.height * ratio;
|
|
57
|
+
if (childSide === 'left') {
|
|
58
|
+
return {
|
|
59
|
+
sx: parentLayout.x,
|
|
60
|
+
sy: parentCy,
|
|
61
|
+
tx: childLayout.x + childLayout.width,
|
|
62
|
+
ty: childCy,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
sx: parentLayout.x + parentLayout.width,
|
|
67
|
+
sy: parentCy,
|
|
68
|
+
tx: childLayout.x,
|
|
69
|
+
ty: childCy,
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
const HierarchyMindmap = (props) => {
|
|
73
|
+
const { Title, Items, data, levelGap = DEFAULT_LEVEL_GAP, nodeGap = DEFAULT_NODE_GAP, edgeAlign = DEFAULT_EDGE_ALIGN, colorMode = DEFAULT_COLOR_MODE, edgeColorMode = DEFAULT_EDGE_COLOR_MODE, edgeType = DEFAULT_EDGE_TYPE, edgeWidth = DEFAULT_EDGE_WIDTH, options, } = props;
|
|
74
|
+
const { title, desc, items = [] } = data;
|
|
75
|
+
const titleContent = Title ? (0, jsx_runtime_1.jsx)(Title, { title: title, desc: desc }) : null;
|
|
76
|
+
const colorPrimary = (0, utils_1.getColorPrimary)(options);
|
|
77
|
+
const btnBounds = (0, jsx_1.getElementBounds)((0, jsx_runtime_1.jsx)(components_1.BtnAdd, { indexes: [0] }));
|
|
78
|
+
if (!items.length || !Items?.length) {
|
|
79
|
+
return ((0, jsx_runtime_1.jsxs)(layouts_1.FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", children: [titleContent, (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: (0, jsx_runtime_1.jsx)(components_1.BtnAdd, { indexes: [0], x: 0, y: 0 }) })] }));
|
|
80
|
+
}
|
|
81
|
+
const root = annotateTree(items[0]);
|
|
82
|
+
const nodeSizeCache = new WeakMap();
|
|
83
|
+
const colorCache = new WeakMap();
|
|
84
|
+
const themeCache = new WeakMap();
|
|
85
|
+
const getNodeColorIndexes = (datum, depth) => (0, utils_1.getHierarchyColorIndexes)({
|
|
86
|
+
depth,
|
|
87
|
+
originalIndexes: datum._indexes,
|
|
88
|
+
flatIndex: datum._flatIndex,
|
|
89
|
+
}, colorMode);
|
|
90
|
+
const getNodeThemeColors = (datum, depth) => {
|
|
91
|
+
const cachedTheme = themeCache.get(datum);
|
|
92
|
+
if (cachedTheme)
|
|
93
|
+
return cachedTheme;
|
|
94
|
+
const colorIndexes = getNodeColorIndexes(datum, depth);
|
|
95
|
+
const primary = (0, utils_1.getPaletteColor)(options, colorIndexes);
|
|
96
|
+
const themeColors = (0, utils_1.getThemeColors)({ colorPrimary: primary }, options);
|
|
97
|
+
themeCache.set(datum, themeColors);
|
|
98
|
+
colorCache.set(datum, primary);
|
|
99
|
+
return themeColors;
|
|
100
|
+
};
|
|
101
|
+
const measureNode = (datum) => {
|
|
102
|
+
const cached = nodeSizeCache.get(datum);
|
|
103
|
+
if (cached)
|
|
104
|
+
return cached;
|
|
105
|
+
const depth = Math.max(datum._indexes.length - 1, 0);
|
|
106
|
+
const Component = (0, utils_1.getItemComponent)(Items, depth);
|
|
107
|
+
const bounds = (0, jsx_1.getElementBounds)((0, jsx_runtime_1.jsx)(Component, { indexes: datum._indexes, data: data, datum: datum, positionH: "center", positionV: "middle", themeColors: getNodeThemeColors(datum, depth) }));
|
|
108
|
+
nodeSizeCache.set(datum, bounds);
|
|
109
|
+
return bounds;
|
|
110
|
+
};
|
|
111
|
+
const mindmapRoot = (0, hierarchy_1.mindmap)(root, {
|
|
112
|
+
direction: 'H',
|
|
113
|
+
getSide: (node, index) => {
|
|
114
|
+
if (!node.parent)
|
|
115
|
+
return 'right';
|
|
116
|
+
const order = (node.parent.children || []).indexOf(node);
|
|
117
|
+
const rank = order >= 0 ? order : index;
|
|
118
|
+
return rank % 2 === 0 ? 'left' : 'right';
|
|
119
|
+
},
|
|
120
|
+
getWidth: (datum) => measureNode(datum).width,
|
|
121
|
+
getHeight: (datum) => measureNode(datum).height,
|
|
122
|
+
getHGap: () => levelGap,
|
|
123
|
+
getVGap: () => nodeGap,
|
|
124
|
+
});
|
|
125
|
+
const layoutNodes = [];
|
|
126
|
+
const nodeLinks = [];
|
|
127
|
+
collectNodes(mindmapRoot, layoutNodes, nodeLinks);
|
|
128
|
+
const minX = layoutNodes.length > 0 ? Math.min(...layoutNodes.map((node) => node.x)) : 0;
|
|
129
|
+
const minY = layoutNodes.length > 0 ? Math.min(...layoutNodes.map((node) => node.y)) : 0;
|
|
130
|
+
const shiftX = LAYOUT_PADDING - minX;
|
|
131
|
+
const shiftY = LAYOUT_PADDING - minY;
|
|
132
|
+
const defsElements = [];
|
|
133
|
+
const decorElements = [];
|
|
134
|
+
const itemElements = [];
|
|
135
|
+
const btnElements = [];
|
|
136
|
+
const layoutStore = new WeakMap();
|
|
137
|
+
layoutNodes.forEach((node) => {
|
|
138
|
+
const datum = node.data;
|
|
139
|
+
const measured = measureNode(datum);
|
|
140
|
+
const displayX = node.x + shiftX + (node.hgap ?? 0);
|
|
141
|
+
const displayY = node.y + shiftY + (node.vgap ?? 0);
|
|
142
|
+
const Component = (0, utils_1.getItemComponent)(Items, node.depth);
|
|
143
|
+
const positionH = node.depth === 0 ? 'center' : node.side === 'left' ? 'flipped' : 'normal';
|
|
144
|
+
const themeColors = getNodeThemeColors(datum, node.depth);
|
|
145
|
+
itemElements.push((0, jsx_runtime_1.jsx)(Component, { indexes: datum._indexes, data: data, datum: datum, x: displayX, y: displayY, positionH: positionH, positionV: "middle", themeColors: themeColors }));
|
|
146
|
+
layoutStore.set(node, {
|
|
147
|
+
x: displayX,
|
|
148
|
+
y: displayY,
|
|
149
|
+
width: measured.width,
|
|
150
|
+
height: measured.height,
|
|
151
|
+
centerX: displayX + measured.width / 2,
|
|
152
|
+
centerY: displayY + measured.height / 2,
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
nodeLinks.forEach((link) => {
|
|
156
|
+
const { parent, child } = link;
|
|
157
|
+
const childLayout = layoutStore.get(child);
|
|
158
|
+
const parentLayout = layoutStore.get(parent);
|
|
159
|
+
if (!childLayout || !parentLayout) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
const childDatum = child.data;
|
|
163
|
+
const { sx, sy, tx, ty } = getEdgeAnchors(parentLayout, childLayout, child.side, edgeAlign);
|
|
164
|
+
const childColor = colorCache.get(childDatum) ??
|
|
165
|
+
(0, utils_1.getPaletteColor)(options, getNodeColorIndexes(childDatum, child.depth));
|
|
166
|
+
const parentColor = colorCache.get(parent.data) ??
|
|
167
|
+
(0, utils_1.getPaletteColor)(options, getNodeColorIndexes(parent.data, parent.depth));
|
|
168
|
+
const pathD = edgeType === 'straight'
|
|
169
|
+
? createStraightPath(sx, sy, tx, ty)
|
|
170
|
+
: createCurvePath(sx, sy, tx, ty);
|
|
171
|
+
const gradientId = `edge-gradient-${childDatum._indexes.join('-')}`;
|
|
172
|
+
decorElements.push((0, jsx_runtime_1.jsx)(jsx_1.Path, { d: pathD, stroke: edgeColorMode === 'gradient'
|
|
173
|
+
? `url(#${gradientId})`
|
|
174
|
+
: (childColor ?? colorPrimary), strokeWidth: edgeWidth, fill: "none" }));
|
|
175
|
+
if (edgeColorMode === 'gradient') {
|
|
176
|
+
defsElements.push((0, jsx_runtime_1.jsxs)("linearGradient", { id: gradientId, gradientUnits: "userSpaceOnUse", x1: sx, y1: sy, x2: tx, y2: ty, children: [(0, jsx_runtime_1.jsx)("stop", { offset: "0%", stopColor: parentColor ?? colorPrimary }), (0, jsx_runtime_1.jsx)("stop", { offset: "100%", stopColor: childColor ?? colorPrimary })] }));
|
|
177
|
+
}
|
|
178
|
+
const appendIndex = childDatum.children?.length ?? 0;
|
|
179
|
+
const addIndexes = [...childDatum._indexes, appendIndex];
|
|
180
|
+
const btnX = childLayout.x + (childLayout.width - btnBounds.width) / 2;
|
|
181
|
+
const removeY = childLayout.y + childLayout.height + 8;
|
|
182
|
+
const addY = removeY + btnBounds.height + 6;
|
|
183
|
+
if (child.depth > 0) {
|
|
184
|
+
btnElements.push((0, jsx_runtime_1.jsx)(components_1.BtnRemove, { indexes: childDatum._indexes, x: btnX, y: removeY }));
|
|
185
|
+
}
|
|
186
|
+
btnElements.push((0, jsx_runtime_1.jsx)(components_1.BtnAdd, { indexes: addIndexes, x: btnX, y: addY }));
|
|
187
|
+
});
|
|
188
|
+
const rootLayout = layoutStore.get(mindmapRoot);
|
|
189
|
+
if (rootLayout) {
|
|
190
|
+
const rootDatum = mindmapRoot.data;
|
|
191
|
+
const appendIndex = rootDatum.children?.length ?? 0;
|
|
192
|
+
const addIndexes = [...rootDatum._indexes, appendIndex];
|
|
193
|
+
const btnX = rootLayout.x + (rootLayout.width - btnBounds.width) / 2;
|
|
194
|
+
const addY = rootLayout.y + rootLayout.height + 8 + btnBounds.height + 6;
|
|
195
|
+
btnElements.push((0, jsx_runtime_1.jsx)(components_1.BtnAdd, { indexes: addIndexes, x: btnX, y: addY }));
|
|
196
|
+
}
|
|
197
|
+
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, { children: [defsElements.length > 0 ? (0, jsx_runtime_1.jsx)(jsx_1.Defs, { children: defsElements }) : null, (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: decorElements }), (0, jsx_runtime_1.jsx)(components_1.ItemsGroup, { children: itemElements }), (0, jsx_runtime_1.jsx)(components_1.BtnsGroup, { children: btnElements })] })] }));
|
|
198
|
+
};
|
|
199
|
+
exports.HierarchyMindmap = HierarchyMindmap;
|
|
200
|
+
(0, registry_1.registerStructure)('hierarchy-mindmap', {
|
|
201
|
+
component: exports.HierarchyMindmap,
|
|
202
|
+
composites: ['title', 'item'],
|
|
203
|
+
});
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
export * from './chart-bar';
|
|
1
2
|
export * from './chart-column';
|
|
3
|
+
export * from './chart-line';
|
|
4
|
+
export * from './chart-pie';
|
|
2
5
|
export * from './compare-binary-horizontal';
|
|
3
6
|
export * from './compare-hierarchy-left-right';
|
|
4
7
|
export * from './compare-hierarchy-row';
|
|
8
|
+
export * from './hierarchy-mindmap';
|
|
5
9
|
export * from './hierarchy-tree';
|
|
6
10
|
export * from './list-column';
|
|
7
11
|
export * from './list-grid';
|
|
@@ -15,10 +15,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.registerStructure = exports.getStructures = exports.getStructure = void 0;
|
|
18
|
+
__exportStar(require("./chart-bar"), exports);
|
|
18
19
|
__exportStar(require("./chart-column"), exports);
|
|
20
|
+
__exportStar(require("./chart-line"), exports);
|
|
21
|
+
__exportStar(require("./chart-pie"), exports);
|
|
19
22
|
__exportStar(require("./compare-binary-horizontal"), exports);
|
|
20
23
|
__exportStar(require("./compare-hierarchy-left-right"), exports);
|
|
21
24
|
__exportStar(require("./compare-hierarchy-row"), exports);
|
|
25
|
+
__exportStar(require("./hierarchy-mindmap"), exports);
|
|
22
26
|
__exportStar(require("./hierarchy-tree"), exports);
|
|
23
27
|
__exportStar(require("./list-column"), exports);
|
|
24
28
|
__exportStar(require("./list-grid"), exports);
|
|
@@ -142,7 +142,7 @@ const ListSector = (props) => {
|
|
|
142
142
|
Z
|
|
143
143
|
`.trim();
|
|
144
144
|
}
|
|
145
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_1.Group, { id: "infographic-container", children: [(0, jsx_runtime_1.jsx)(jsx_1.Group, { children: sectorElements }), isFullCircle ? ((0, jsx_runtime_1.jsx)(jsx_1.Ellipse, { id: "shape-center-circle", x: centerX - centerRadius, y: centerY - centerRadius, width: centerRadius * 2, height: centerRadius * 2, fill: themeColors.colorPrimaryBg, fillOpacity: 0.5, "data-element-type": "shape" })) : ((0, jsx_runtime_1.jsx)(jsx_1.Path, { id: "shape-center-sector", d: centerSectorPath, fill: themeColors.colorPrimaryBg, fillOpacity: 0.5, width: outerRadius * 2 + 200, height: outerRadius * 2 + 200, "data-element-type": "shape" })), (0, jsx_runtime_1.jsx)(jsx_1.Text, {
|
|
145
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_1.Group, { id: "infographic-container", children: [(0, jsx_runtime_1.jsx)(jsx_1.Group, { children: sectorElements }), isFullCircle ? ((0, jsx_runtime_1.jsx)(jsx_1.Ellipse, { id: "shape-center-circle", x: centerX - centerRadius, y: centerY - centerRadius, width: centerRadius * 2, height: centerRadius * 2, fill: themeColors.colorPrimaryBg, fillOpacity: 0.5, "data-element-type": "shape" })) : ((0, jsx_runtime_1.jsx)(jsx_1.Path, { id: "shape-center-sector", d: centerSectorPath, fill: themeColors.colorPrimaryBg, fillOpacity: 0.5, width: outerRadius * 2 + 200, height: outerRadius * 2 + 200, "data-element-type": "shape" })), (0, jsx_runtime_1.jsx)(jsx_1.Text, { x: titleCenterX - titleWidth / 2, y: titleCenterY - titleHeight / 2, width: titleWidth, height: titleHeight, alignHorizontal: "center", alignVertical: "middle", fontSize: 24, fontWeight: "bold", fill: themeColors.colorText, "data-element-type": "title" /* ElementTypeEnum.Title */, children: title }), (0, jsx_runtime_1.jsx)(components_1.ItemsGroup, { children: itemElements }), (0, jsx_runtime_1.jsx)(components_1.BtnsGroup, { children: btnElements })] }));
|
|
146
146
|
};
|
|
147
147
|
exports.ListSector = ListSector;
|
|
148
148
|
(0, registry_1.registerStructure)('list-sector', {
|
|
@@ -166,7 +166,7 @@ const SequenceCircular = (props) => {
|
|
|
166
166
|
btnBounds,
|
|
167
167
|
});
|
|
168
168
|
btnElements.unshift((0, jsx_runtime_1.jsx)(components_1.BtnAdd, { indexes: [0], x: firstAddBtnX, y: firstAddBtnY }));
|
|
169
|
-
return ((0, jsx_runtime_1.jsxs)(layouts_1.FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", gap:
|
|
169
|
+
return ((0, jsx_runtime_1.jsxs)(layouts_1.FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", gap: 70, children: [titleContent, (0, jsx_runtime_1.jsxs)(jsx_1.Group, { children: [(0, jsx_runtime_1.jsx)(jsx_1.Group, { children: arcElements }), (0, jsx_runtime_1.jsx)(jsx_1.Group, { children: iconElements }), (0, jsx_runtime_1.jsx)(components_1.ItemsGroup, { children: itemElements }), (0, jsx_runtime_1.jsx)(components_1.BtnsGroup, { children: btnElements })] })] }));
|
|
170
170
|
};
|
|
171
171
|
exports.SequenceCircular = SequenceCircular;
|
|
172
172
|
(0, registry_1.registerStructure)('sequence-circular', {
|
|
@@ -141,12 +141,12 @@ const createCylinderElements = (index, cylinderPos, cylinderRx, cylinderRy) => {
|
|
|
141
141
|
`, fill: `url(#cylinderGradient${index})`, stroke: "none" }));
|
|
142
142
|
elements.push((0, jsx_runtime_1.jsx)(jsx_1.Rect, { id: `cylinder-glow-${index}`, x: x - cylinderRx, y: topY - cylinderRy * 3, width: cylinderRx * 2, height: cylinderRy * 3, fill: `url(#glowGradient${index})` }));
|
|
143
143
|
elements.push((0, jsx_runtime_1.jsx)("ellipse", { id: `cylinder-top-${index}`, cx: x, cy: topY, rx: cylinderRx, ry: cylinderRy, fill: `url(#topGradient${index})` }));
|
|
144
|
-
const numberX = x;
|
|
145
|
-
const numberY = topY
|
|
144
|
+
const numberX = x - 10;
|
|
145
|
+
const numberY = topY - 15;
|
|
146
146
|
const scaleY = 0.6;
|
|
147
147
|
const skewX = -0.6;
|
|
148
|
-
const transformValue = `translate(${numberX}, ${numberY}) matrix(1, 0, ${skewX}, ${scaleY}, 0, 0)
|
|
149
|
-
elements.push((0, jsx_runtime_1.jsx)(jsx_1.Text, { id: `cylinder-number-${index}`,
|
|
148
|
+
const transformValue = `translate(${numberX}, ${numberY}) matrix(1, 0, ${skewX}, ${scaleY}, 0, 0)`;
|
|
149
|
+
elements.push((0, jsx_runtime_1.jsx)(jsx_1.Text, { id: `cylinder-number-${index}`, width: 50, height: 50, fontFamily: "Arial Black, sans-serif", fontSize: 32, fontWeight: 900, fill: `url(#numberGradient${index})`, alignHorizontal: "center", alignVertical: "middle", transform: transformValue, children: index + 1 }));
|
|
150
150
|
return elements;
|
|
151
151
|
};
|
|
152
152
|
const createDecorationElements = (index, lineStartX, lineEndX, lineY, color) => {
|
|
@@ -48,7 +48,7 @@ function renderItemRow({ i, direction, x, y, color, data, itemBounds, item, Item
|
|
|
48
48
|
: 'flipped';
|
|
49
49
|
return {
|
|
50
50
|
icon: ((0, jsx_runtime_1.jsx)(components_1.ItemIconCircle, { indexes: [i], x: iconX, y: iconY, size: iconSize, fill: color })),
|
|
51
|
-
label: ((0, jsx_runtime_1.jsx)(jsx_1.Text, { x: isLeft ? iconX -
|
|
51
|
+
label: ((0, jsx_runtime_1.jsx)(jsx_1.Text, { width: 40, x: isLeft ? iconX - 50 : iconX + iconSize + 10, y: iconY + iconSize / 2 - 15, fontSize: 30, fill: color, alignHorizontal: isLeft ? 'right' : 'left', children: String(i + 1).padStart(2, '0') })),
|
|
52
52
|
item: ((0, jsx_runtime_1.jsx)(Item, { indexes: [i], data: data, datum: item, x: itemX, y: itemY, positionH: positionH })),
|
|
53
53
|
};
|
|
54
54
|
}
|
|
@@ -10,10 +10,10 @@ const registry_1 = require("./registry");
|
|
|
10
10
|
const PUCK_WIDTH = 120;
|
|
11
11
|
const PUCK_HEIGHT = 108;
|
|
12
12
|
const ITEM_TO_PUCK_GAP = 30;
|
|
13
|
-
const PUCK_TOP_PATH = '
|
|
14
|
-
const PUCK_MIDDLE_PATH = '
|
|
15
|
-
const PUCK_BOTTOM_PATH = 'M0 53.
|
|
16
|
-
const DropShadowFilter = ((0, jsx_runtime_1.jsxs)("filter", { id: "sequence-zigzag-pucks-3d-shadow-filter", x: "-50%", y: "-50%", width: "200%", height: "200%", filterUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB", children: [(0, jsx_runtime_1.jsx)("
|
|
13
|
+
const PUCK_TOP_PATH = 'M4.49144e-05 34.4898C4.49144e-05 37.8786 0.848973 41.152 2.43571 44.2444C4.23516 47.7642 6.98514 51.0472 10.517 54.0009C21.331 63.047 39.4615 68.9814 59.9991 68.9814C80.5385 68.9814 98.6672 63.047 109.483 54.0009C113.013 51.0472 115.765 47.7642 117.564 44.2444C119.149 41.152 120 37.8786 120 34.4898C120 15.4407 93.1364 0 59.9991 0C26.8635 0 4.49144e-05 15.4407 4.49144e-05 34.4898Z';
|
|
14
|
+
const PUCK_MIDDLE_PATH = 'M4.49145e-05 34.4898V53.9991C4.49145e-05 57.3879 0.848973 60.6613 2.43571 63.7556C9.75425 78.0545 32.7562 88.4907 59.999 88.4907C87.2438 88.4907 110.246 78.0545 117.564 63.7556C119.149 60.6613 120 57.3879 120 53.9991V34.4898C120 37.8786 119.149 41.152 117.564 44.2444C115.765 47.7642 113.013 51.0472 109.483 54.0009C98.6672 63.047 80.5385 68.9814 59.999 68.9814C39.4615 68.9814 21.3309 63.047 10.5169 54.0009C6.98509 51.0472 4.23516 47.7642 2.43567 44.2444C0.848928 41.152 4.49145e-05 37.8786 4.49145e-05 34.4898Z';
|
|
15
|
+
const PUCK_BOTTOM_PATH = 'M0 53.9991V73.5102C0 92.5593 26.8634 108 59.999 108C93.1363 108 120 92.5593 120 73.5102V53.9991C120 57.3879 119.149 60.6613 117.564 63.7556C110.246 78.0545 87.2438 88.4907 59.999 88.4907C32.7562 88.4907 9.75425 78.0545 2.43571 63.7556C0.848973 60.6613 0 57.3879 0 53.9991Z';
|
|
16
|
+
const DropShadowFilter = ((0, jsx_runtime_1.jsxs)("filter", { id: "sequence-zigzag-pucks-3d-shadow-filter", x: "-50%", y: "-50%", width: "200%", height: "200%", filterUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB", children: [(0, jsx_runtime_1.jsx)("feOffset", { dx: "-7", dy: "7", in: "SourceAlpha", result: "offset" }), (0, jsx_runtime_1.jsx)("feGaussianBlur", { stdDeviation: "7.5", in: "offset", result: "blurred" }), (0, jsx_runtime_1.jsx)("feColorMatrix", { in: "blurred", type: "matrix", values: "0 0 0 0 0 \n 0 0 0 0 0 \n 0 0 0 0 0 \n 0 0 0 0.3 0", result: "shadow" }), (0, jsx_runtime_1.jsx)("feBlend", { mode: "normal", in: "SourceGraphic", in2: "shadow" })] }));
|
|
17
17
|
const SequenceZigzagPucks3d = (props) => {
|
|
18
18
|
const { Title, Item, data, options, gap = 80 } = props;
|
|
19
19
|
const puckWidth = PUCK_WIDTH;
|
|
@@ -42,7 +42,7 @@ const SequenceZigzagPucks3d = (props) => {
|
|
|
42
42
|
minY = Math.min(minY, puckY);
|
|
43
43
|
const gradientId1 = `puck-gradient-middle-${index}`;
|
|
44
44
|
const gradientId2 = `puck-gradient-bottom-${index}`;
|
|
45
|
-
puckElements.push((0, jsx_runtime_1.jsxs)(jsx_1.Group, { x: puckX, y: puckY, id: `puck-${index}`, width: puckWidth, height: puckHeight, filter: "url(#sequence-zigzag-pucks-3d-shadow-filter)", children: [(0, jsx_runtime_1.jsxs)(jsx_1.Defs, { children: [(0, jsx_runtime_1.jsxs)("linearGradient", { id: gradientId1, x1: "115", y1: "55.9991", x2: "15.0002", y2: "55.9991", gradientUnits: "userSpaceOnUse", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "0", stopColor: currentColor || colorPrimary }), (0, jsx_runtime_1.jsx)("stop", { offset: "1", stopColor: currentColor || colorPrimary, stopOpacity: "0.6" })] }), (0, jsx_runtime_1.jsxs)("linearGradient", { id: gradientId2, x1: "115", y1: "72.1803", x2: "15.0002", y2: "72.1803", gradientUnits: "userSpaceOnUse", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "0", stopColor: "#F4F4FB" }), (0, jsx_runtime_1.jsx)("stop", { offset: "1", stopColor: "#8E8C90" })] })] }), (0, jsx_runtime_1.jsxs)(components_1.ShapesGroup, { width: PUCK_WIDTH, height: PUCK_HEIGHT, children: [(0, jsx_runtime_1.jsx)(jsx_1.Path, { d: PUCK_TOP_PATH, fill: currentColor || colorPrimary }), (0, jsx_runtime_1.jsx)(jsx_1.Path, { d: PUCK_MIDDLE_PATH, fill: `url(#${gradientId1})` }), (0, jsx_runtime_1.jsx)(jsx_1.Path, { d: PUCK_BOTTOM_PATH, fill: `url(#${gradientId2})` })] }), (0, jsx_runtime_1.jsx)("text", { x: 65, y: 40, width: 50, height: 50, fontSize: 40, fontWeight: "bold", fill: "#FFFFFF", textAnchor: "middle", dominantBaseline: "middle", transform: "rotate(-15 65 40) scale(1, 0.8)", children: index + 1 })] }));
|
|
45
|
+
puckElements.push((0, jsx_runtime_1.jsxs)(jsx_1.Group, { x: puckX, y: puckY, id: `puck-${index}`, width: puckWidth, height: puckHeight, filter: "url(#sequence-zigzag-pucks-3d-shadow-filter)", children: [(0, jsx_runtime_1.jsxs)(jsx_1.Defs, { children: [(0, jsx_runtime_1.jsxs)("linearGradient", { id: gradientId1, x1: "115", y1: "55.9991", x2: "15.0002", y2: "55.9991", gradientUnits: "userSpaceOnUse", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "0", stopColor: currentColor || colorPrimary }), (0, jsx_runtime_1.jsx)("stop", { offset: "1", stopColor: currentColor || colorPrimary, stopOpacity: "0.6" })] }), (0, jsx_runtime_1.jsxs)("linearGradient", { id: gradientId2, x1: "115", y1: "72.1803", x2: "15.0002", y2: "72.1803", gradientUnits: "userSpaceOnUse", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "0", stopColor: "#F4F4FB" }), (0, jsx_runtime_1.jsx)("stop", { offset: "1", stopColor: "#8E8C90" })] })] }), (0, jsx_runtime_1.jsxs)(components_1.ShapesGroup, { width: PUCK_WIDTH, height: PUCK_HEIGHT, children: [(0, jsx_runtime_1.jsx)(jsx_1.Path, { d: PUCK_TOP_PATH, fill: currentColor || colorPrimary }), (0, jsx_runtime_1.jsx)(jsx_1.Path, { d: PUCK_MIDDLE_PATH, fill: `url(#${gradientId1})` }), (0, jsx_runtime_1.jsx)(jsx_1.Path, { d: PUCK_BOTTOM_PATH, fill: `url(#${gradientId2})` }), (0, jsx_runtime_1.jsx)("rect", { fill: "transparent", y: PUCK_HEIGHT, width: PUCK_WIDTH, height: 20 })] }), (0, jsx_runtime_1.jsx)("text", { x: 65, y: 40, width: 50, height: 50, fontSize: 40, fontWeight: "bold", fill: "#FFFFFF", textAnchor: "middle", dominantBaseline: "middle", transform: "rotate(-15 65 40) scale(1, 0.8)", children: index + 1 })] }));
|
|
46
46
|
const itemX = puckX + (puckWidth - itemBounds.width) / 2;
|
|
47
47
|
const itemY = isEven
|
|
48
48
|
? puckY + puckHeight + ITEM_TO_PUCK_GAP
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ICommand, IStateManager } from '../types';
|
|
2
|
+
export declare class BatchCommand implements ICommand {
|
|
3
|
+
private commands;
|
|
4
|
+
constructor(commands: ICommand[]);
|
|
5
|
+
apply(state: IStateManager): Promise<void>;
|
|
6
|
+
undo(state: IStateManager): Promise<void>;
|
|
7
|
+
serialize(): {
|
|
8
|
+
type: string;
|
|
9
|
+
commands: any[];
|
|
10
|
+
};
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BatchCommand = void 0;
|
|
4
|
+
class BatchCommand {
|
|
5
|
+
constructor(commands) {
|
|
6
|
+
this.commands = commands;
|
|
7
|
+
}
|
|
8
|
+
async apply(state) {
|
|
9
|
+
for (const command of this.commands) {
|
|
10
|
+
await command.apply(state);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
async undo(state) {
|
|
14
|
+
for (let i = this.commands.length - 1; i >= 0; i--) {
|
|
15
|
+
await this.commands[i].undo(state);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
serialize() {
|
|
19
|
+
return {
|
|
20
|
+
type: 'batch',
|
|
21
|
+
commands: this.commands.map((cmd) => cmd.serialize()),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.BatchCommand = BatchCommand;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Element } from '../../types';
|
|
2
|
+
import type { ElementProps, ICommand, IStateManager } from '../types';
|
|
3
|
+
export declare class UpdateElementCommand implements ICommand {
|
|
4
|
+
private element;
|
|
5
|
+
private modified;
|
|
6
|
+
private original?;
|
|
7
|
+
constructor(element: Element, modified: Partial<ElementProps>, original?: Partial<ElementProps>);
|
|
8
|
+
apply(state: IStateManager): Promise<void>;
|
|
9
|
+
undo(state: IStateManager): Promise<void>;
|
|
10
|
+
serialize(): {
|
|
11
|
+
type: string;
|
|
12
|
+
elementId: string;
|
|
13
|
+
modified: Partial<ElementProps>;
|
|
14
|
+
original: Partial<ElementProps> | undefined;
|
|
15
|
+
};
|
|
16
|
+
}
|