@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,199 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@antv/infographic/jsx-runtime";
|
|
2
|
+
import { mindmap } from '@antv/hierarchy';
|
|
3
|
+
import { Defs, Group, Path, getElementBounds } from '../../jsx';
|
|
4
|
+
import { BtnAdd, BtnRemove, BtnsGroup, ItemsGroup } from '../components';
|
|
5
|
+
import { FlexLayout } from '../layouts';
|
|
6
|
+
import { getColorPrimary, getHierarchyColorIndexes, getItemComponent, getPaletteColor, getThemeColors, } from '../utils';
|
|
7
|
+
import { registerStructure } from './registry';
|
|
8
|
+
const DEFAULT_LEVEL_GAP = 60;
|
|
9
|
+
const DEFAULT_NODE_GAP = 14;
|
|
10
|
+
const LAYOUT_PADDING = 30;
|
|
11
|
+
const DEFAULT_EDGE_ALIGN = 'center';
|
|
12
|
+
const DEFAULT_EDGE_TYPE = 'curved';
|
|
13
|
+
const DEFAULT_EDGE_WIDTH = 2;
|
|
14
|
+
const DEFAULT_COLOR_MODE = 'node';
|
|
15
|
+
const DEFAULT_EDGE_COLOR_MODE = 'solid';
|
|
16
|
+
const annotateTree = (node, parentIndexes = [], index = 0) => {
|
|
17
|
+
const indexes = [...parentIndexes, index];
|
|
18
|
+
return {
|
|
19
|
+
...node,
|
|
20
|
+
_indexes: indexes,
|
|
21
|
+
children: node.children?.map((child, childIndex) => annotateTree(child, indexes, childIndex)) ?? [],
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
const collectNodes = (node, nodes, links, parent) => {
|
|
25
|
+
var _a;
|
|
26
|
+
nodes.push(node);
|
|
27
|
+
(_a = node.data)._flatIndex ?? (_a._flatIndex = nodes.length - 1);
|
|
28
|
+
if (parent)
|
|
29
|
+
links.push({ parent, child: node });
|
|
30
|
+
const children = node.children;
|
|
31
|
+
children?.forEach((child) => collectNodes(child, nodes, links, node));
|
|
32
|
+
};
|
|
33
|
+
const createCurvePath = (sx, sy, tx, ty) => {
|
|
34
|
+
const offsetX = Math.abs(tx - sx) / 2;
|
|
35
|
+
const ctrlX1 = tx > sx ? sx + offsetX : sx - offsetX;
|
|
36
|
+
const ctrlX2 = tx > sx ? tx - offsetX : tx + offsetX;
|
|
37
|
+
return `M ${sx} ${sy} C ${ctrlX1} ${sy} ${ctrlX2} ${ty} ${tx} ${ty}`;
|
|
38
|
+
};
|
|
39
|
+
const createStraightPath = (sx, sy, tx, ty) => `M ${sx} ${sy} L ${tx} ${ty}`;
|
|
40
|
+
const getEdgeAnchors = (parentLayout, childLayout, childSide, align = DEFAULT_EDGE_ALIGN) => {
|
|
41
|
+
const clampRatio = (val) => Math.max(0, Math.min(1, val));
|
|
42
|
+
const toRatio = (value) => {
|
|
43
|
+
if (value === 'top')
|
|
44
|
+
return 0;
|
|
45
|
+
if (value === 'bottom')
|
|
46
|
+
return 1;
|
|
47
|
+
if (value === 'center')
|
|
48
|
+
return 0.5;
|
|
49
|
+
return clampRatio(value);
|
|
50
|
+
};
|
|
51
|
+
const ratio = toRatio(align);
|
|
52
|
+
const parentCy = parentLayout.y + parentLayout.height * ratio;
|
|
53
|
+
const childCy = childLayout.y + childLayout.height * ratio;
|
|
54
|
+
if (childSide === 'left') {
|
|
55
|
+
return {
|
|
56
|
+
sx: parentLayout.x,
|
|
57
|
+
sy: parentCy,
|
|
58
|
+
tx: childLayout.x + childLayout.width,
|
|
59
|
+
ty: childCy,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
sx: parentLayout.x + parentLayout.width,
|
|
64
|
+
sy: parentCy,
|
|
65
|
+
tx: childLayout.x,
|
|
66
|
+
ty: childCy,
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
export const HierarchyMindmap = (props) => {
|
|
70
|
+
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;
|
|
71
|
+
const { title, desc, items = [] } = data;
|
|
72
|
+
const titleContent = Title ? _jsx(Title, { title: title, desc: desc }) : null;
|
|
73
|
+
const colorPrimary = getColorPrimary(options);
|
|
74
|
+
const btnBounds = getElementBounds(_jsx(BtnAdd, { indexes: [0] }));
|
|
75
|
+
if (!items.length || !Items?.length) {
|
|
76
|
+
return (_jsxs(FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", children: [titleContent, _jsx(Group, { children: _jsx(BtnAdd, { indexes: [0], x: 0, y: 0 }) })] }));
|
|
77
|
+
}
|
|
78
|
+
const root = annotateTree(items[0]);
|
|
79
|
+
const nodeSizeCache = new WeakMap();
|
|
80
|
+
const colorCache = new WeakMap();
|
|
81
|
+
const themeCache = new WeakMap();
|
|
82
|
+
const getNodeColorIndexes = (datum, depth) => getHierarchyColorIndexes({
|
|
83
|
+
depth,
|
|
84
|
+
originalIndexes: datum._indexes,
|
|
85
|
+
flatIndex: datum._flatIndex,
|
|
86
|
+
}, colorMode);
|
|
87
|
+
const getNodeThemeColors = (datum, depth) => {
|
|
88
|
+
const cachedTheme = themeCache.get(datum);
|
|
89
|
+
if (cachedTheme)
|
|
90
|
+
return cachedTheme;
|
|
91
|
+
const colorIndexes = getNodeColorIndexes(datum, depth);
|
|
92
|
+
const primary = getPaletteColor(options, colorIndexes);
|
|
93
|
+
const themeColors = getThemeColors({ colorPrimary: primary }, options);
|
|
94
|
+
themeCache.set(datum, themeColors);
|
|
95
|
+
colorCache.set(datum, primary);
|
|
96
|
+
return themeColors;
|
|
97
|
+
};
|
|
98
|
+
const measureNode = (datum) => {
|
|
99
|
+
const cached = nodeSizeCache.get(datum);
|
|
100
|
+
if (cached)
|
|
101
|
+
return cached;
|
|
102
|
+
const depth = Math.max(datum._indexes.length - 1, 0);
|
|
103
|
+
const Component = getItemComponent(Items, depth);
|
|
104
|
+
const bounds = getElementBounds(_jsx(Component, { indexes: datum._indexes, data: data, datum: datum, positionH: "center", positionV: "middle", themeColors: getNodeThemeColors(datum, depth) }));
|
|
105
|
+
nodeSizeCache.set(datum, bounds);
|
|
106
|
+
return bounds;
|
|
107
|
+
};
|
|
108
|
+
const mindmapRoot = mindmap(root, {
|
|
109
|
+
direction: 'H',
|
|
110
|
+
getSide: (node, index) => {
|
|
111
|
+
if (!node.parent)
|
|
112
|
+
return 'right';
|
|
113
|
+
const order = (node.parent.children || []).indexOf(node);
|
|
114
|
+
const rank = order >= 0 ? order : index;
|
|
115
|
+
return rank % 2 === 0 ? 'left' : 'right';
|
|
116
|
+
},
|
|
117
|
+
getWidth: (datum) => measureNode(datum).width,
|
|
118
|
+
getHeight: (datum) => measureNode(datum).height,
|
|
119
|
+
getHGap: () => levelGap,
|
|
120
|
+
getVGap: () => nodeGap,
|
|
121
|
+
});
|
|
122
|
+
const layoutNodes = [];
|
|
123
|
+
const nodeLinks = [];
|
|
124
|
+
collectNodes(mindmapRoot, layoutNodes, nodeLinks);
|
|
125
|
+
const minX = layoutNodes.length > 0 ? Math.min(...layoutNodes.map((node) => node.x)) : 0;
|
|
126
|
+
const minY = layoutNodes.length > 0 ? Math.min(...layoutNodes.map((node) => node.y)) : 0;
|
|
127
|
+
const shiftX = LAYOUT_PADDING - minX;
|
|
128
|
+
const shiftY = LAYOUT_PADDING - minY;
|
|
129
|
+
const defsElements = [];
|
|
130
|
+
const decorElements = [];
|
|
131
|
+
const itemElements = [];
|
|
132
|
+
const btnElements = [];
|
|
133
|
+
const layoutStore = new WeakMap();
|
|
134
|
+
layoutNodes.forEach((node) => {
|
|
135
|
+
const datum = node.data;
|
|
136
|
+
const measured = measureNode(datum);
|
|
137
|
+
const displayX = node.x + shiftX + (node.hgap ?? 0);
|
|
138
|
+
const displayY = node.y + shiftY + (node.vgap ?? 0);
|
|
139
|
+
const Component = getItemComponent(Items, node.depth);
|
|
140
|
+
const positionH = node.depth === 0 ? 'center' : node.side === 'left' ? 'flipped' : 'normal';
|
|
141
|
+
const themeColors = getNodeThemeColors(datum, node.depth);
|
|
142
|
+
itemElements.push(_jsx(Component, { indexes: datum._indexes, data: data, datum: datum, x: displayX, y: displayY, positionH: positionH, positionV: "middle", themeColors: themeColors }));
|
|
143
|
+
layoutStore.set(node, {
|
|
144
|
+
x: displayX,
|
|
145
|
+
y: displayY,
|
|
146
|
+
width: measured.width,
|
|
147
|
+
height: measured.height,
|
|
148
|
+
centerX: displayX + measured.width / 2,
|
|
149
|
+
centerY: displayY + measured.height / 2,
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
nodeLinks.forEach((link) => {
|
|
153
|
+
const { parent, child } = link;
|
|
154
|
+
const childLayout = layoutStore.get(child);
|
|
155
|
+
const parentLayout = layoutStore.get(parent);
|
|
156
|
+
if (!childLayout || !parentLayout) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const childDatum = child.data;
|
|
160
|
+
const { sx, sy, tx, ty } = getEdgeAnchors(parentLayout, childLayout, child.side, edgeAlign);
|
|
161
|
+
const childColor = colorCache.get(childDatum) ??
|
|
162
|
+
getPaletteColor(options, getNodeColorIndexes(childDatum, child.depth));
|
|
163
|
+
const parentColor = colorCache.get(parent.data) ??
|
|
164
|
+
getPaletteColor(options, getNodeColorIndexes(parent.data, parent.depth));
|
|
165
|
+
const pathD = edgeType === 'straight'
|
|
166
|
+
? createStraightPath(sx, sy, tx, ty)
|
|
167
|
+
: createCurvePath(sx, sy, tx, ty);
|
|
168
|
+
const gradientId = `edge-gradient-${childDatum._indexes.join('-')}`;
|
|
169
|
+
decorElements.push(_jsx(Path, { d: pathD, stroke: edgeColorMode === 'gradient'
|
|
170
|
+
? `url(#${gradientId})`
|
|
171
|
+
: (childColor ?? colorPrimary), strokeWidth: edgeWidth, fill: "none" }));
|
|
172
|
+
if (edgeColorMode === 'gradient') {
|
|
173
|
+
defsElements.push(_jsxs("linearGradient", { id: gradientId, gradientUnits: "userSpaceOnUse", x1: sx, y1: sy, x2: tx, y2: ty, children: [_jsx("stop", { offset: "0%", stopColor: parentColor ?? colorPrimary }), _jsx("stop", { offset: "100%", stopColor: childColor ?? colorPrimary })] }));
|
|
174
|
+
}
|
|
175
|
+
const appendIndex = childDatum.children?.length ?? 0;
|
|
176
|
+
const addIndexes = [...childDatum._indexes, appendIndex];
|
|
177
|
+
const btnX = childLayout.x + (childLayout.width - btnBounds.width) / 2;
|
|
178
|
+
const removeY = childLayout.y + childLayout.height + 8;
|
|
179
|
+
const addY = removeY + btnBounds.height + 6;
|
|
180
|
+
if (child.depth > 0) {
|
|
181
|
+
btnElements.push(_jsx(BtnRemove, { indexes: childDatum._indexes, x: btnX, y: removeY }));
|
|
182
|
+
}
|
|
183
|
+
btnElements.push(_jsx(BtnAdd, { indexes: addIndexes, x: btnX, y: addY }));
|
|
184
|
+
});
|
|
185
|
+
const rootLayout = layoutStore.get(mindmapRoot);
|
|
186
|
+
if (rootLayout) {
|
|
187
|
+
const rootDatum = mindmapRoot.data;
|
|
188
|
+
const appendIndex = rootDatum.children?.length ?? 0;
|
|
189
|
+
const addIndexes = [...rootDatum._indexes, appendIndex];
|
|
190
|
+
const btnX = rootLayout.x + (rootLayout.width - btnBounds.width) / 2;
|
|
191
|
+
const addY = rootLayout.y + rootLayout.height + 8 + btnBounds.height + 6;
|
|
192
|
+
btnElements.push(_jsx(BtnAdd, { indexes: addIndexes, x: btnX, y: addY }));
|
|
193
|
+
}
|
|
194
|
+
return (_jsxs(FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", children: [titleContent, _jsxs(Group, { children: [defsElements.length > 0 ? _jsx(Defs, { children: defsElements }) : null, _jsx(Group, { children: decorElements }), _jsx(ItemsGroup, { children: itemElements }), _jsx(BtnsGroup, { children: btnElements })] })] }));
|
|
195
|
+
};
|
|
196
|
+
registerStructure('hierarchy-mindmap', {
|
|
197
|
+
component: HierarchyMindmap,
|
|
198
|
+
composites: ['title', 'item'],
|
|
199
|
+
});
|
|
@@ -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';
|
|
@@ -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';
|
|
@@ -139,7 +139,7 @@ export const ListSector = (props) => {
|
|
|
139
139
|
Z
|
|
140
140
|
`.trim();
|
|
141
141
|
}
|
|
142
|
-
return (_jsxs(Group, { id: "infographic-container", children: [_jsx(Group, { children: sectorElements }), isFullCircle ? (_jsx(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" })) : (_jsx(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" })), _jsx(Text, {
|
|
142
|
+
return (_jsxs(Group, { id: "infographic-container", children: [_jsx(Group, { children: sectorElements }), isFullCircle ? (_jsx(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" })) : (_jsx(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" })), _jsx(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 }), _jsx(ItemsGroup, { children: itemElements }), _jsx(BtnsGroup, { children: btnElements })] }));
|
|
143
143
|
};
|
|
144
144
|
registerStructure('list-sector', {
|
|
145
145
|
component: ListSector,
|
|
@@ -163,7 +163,7 @@ export const SequenceCircular = (props) => {
|
|
|
163
163
|
btnBounds,
|
|
164
164
|
});
|
|
165
165
|
btnElements.unshift(_jsx(BtnAdd, { indexes: [0], x: firstAddBtnX, y: firstAddBtnY }));
|
|
166
|
-
return (_jsxs(FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", gap:
|
|
166
|
+
return (_jsxs(FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", gap: 70, children: [titleContent, _jsxs(Group, { children: [_jsx(Group, { children: arcElements }), _jsx(Group, { children: iconElements }), _jsx(ItemsGroup, { children: itemElements }), _jsx(BtnsGroup, { children: btnElements })] })] }));
|
|
167
167
|
};
|
|
168
168
|
registerStructure('sequence-circular', {
|
|
169
169
|
component: SequenceCircular,
|
|
@@ -135,12 +135,12 @@ const createCylinderElements = (index, cylinderPos, cylinderRx, cylinderRy) => {
|
|
|
135
135
|
`, fill: `url(#cylinderGradient${index})`, stroke: "none" }));
|
|
136
136
|
elements.push(_jsx(Rect, { id: `cylinder-glow-${index}`, x: x - cylinderRx, y: topY - cylinderRy * 3, width: cylinderRx * 2, height: cylinderRy * 3, fill: `url(#glowGradient${index})` }));
|
|
137
137
|
elements.push(_jsx("ellipse", { id: `cylinder-top-${index}`, cx: x, cy: topY, rx: cylinderRx, ry: cylinderRy, fill: `url(#topGradient${index})` }));
|
|
138
|
-
const numberX = x;
|
|
139
|
-
const numberY = topY
|
|
138
|
+
const numberX = x - 10;
|
|
139
|
+
const numberY = topY - 15;
|
|
140
140
|
const scaleY = 0.6;
|
|
141
141
|
const skewX = -0.6;
|
|
142
|
-
const transformValue = `translate(${numberX}, ${numberY}) matrix(1, 0, ${skewX}, ${scaleY}, 0, 0)
|
|
143
|
-
elements.push(_jsx(Text, { id: `cylinder-number-${index}`,
|
|
142
|
+
const transformValue = `translate(${numberX}, ${numberY}) matrix(1, 0, ${skewX}, ${scaleY}, 0, 0)`;
|
|
143
|
+
elements.push(_jsx(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 }));
|
|
144
144
|
return elements;
|
|
145
145
|
};
|
|
146
146
|
const createDecorationElements = (index, lineStartX, lineEndX, lineY, color) => {
|
|
@@ -45,7 +45,7 @@ function renderItemRow({ i, direction, x, y, color, data, itemBounds, item, Item
|
|
|
45
45
|
: 'flipped';
|
|
46
46
|
return {
|
|
47
47
|
icon: (_jsx(ItemIconCircle, { indexes: [i], x: iconX, y: iconY, size: iconSize, fill: color })),
|
|
48
|
-
label: (_jsx(Text, { x: isLeft ? iconX -
|
|
48
|
+
label: (_jsx(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') })),
|
|
49
49
|
item: (_jsx(Item, { indexes: [i], data: data, datum: item, x: itemX, y: itemY, positionH: positionH })),
|
|
50
50
|
};
|
|
51
51
|
}
|
|
@@ -7,10 +7,10 @@ import { registerStructure } from './registry';
|
|
|
7
7
|
const PUCK_WIDTH = 120;
|
|
8
8
|
const PUCK_HEIGHT = 108;
|
|
9
9
|
const ITEM_TO_PUCK_GAP = 30;
|
|
10
|
-
const PUCK_TOP_PATH = '
|
|
11
|
-
const PUCK_MIDDLE_PATH = '
|
|
12
|
-
const PUCK_BOTTOM_PATH = 'M0 53.
|
|
13
|
-
const DropShadowFilter = (_jsxs("filter", { id: "sequence-zigzag-pucks-3d-shadow-filter", x: "-50%", y: "-50%", width: "200%", height: "200%", filterUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB", children: [_jsx("
|
|
10
|
+
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';
|
|
11
|
+
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';
|
|
12
|
+
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';
|
|
13
|
+
const DropShadowFilter = (_jsxs("filter", { id: "sequence-zigzag-pucks-3d-shadow-filter", x: "-50%", y: "-50%", width: "200%", height: "200%", filterUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB", children: [_jsx("feOffset", { dx: "-7", dy: "7", in: "SourceAlpha", result: "offset" }), _jsx("feGaussianBlur", { stdDeviation: "7.5", in: "offset", result: "blurred" }), _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" }), _jsx("feBlend", { mode: "normal", in: "SourceGraphic", in2: "shadow" })] }));
|
|
14
14
|
export const SequenceZigzagPucks3d = (props) => {
|
|
15
15
|
const { Title, Item, data, options, gap = 80 } = props;
|
|
16
16
|
const puckWidth = PUCK_WIDTH;
|
|
@@ -39,7 +39,7 @@ export const SequenceZigzagPucks3d = (props) => {
|
|
|
39
39
|
minY = Math.min(minY, puckY);
|
|
40
40
|
const gradientId1 = `puck-gradient-middle-${index}`;
|
|
41
41
|
const gradientId2 = `puck-gradient-bottom-${index}`;
|
|
42
|
-
puckElements.push(_jsxs(Group, { x: puckX, y: puckY, id: `puck-${index}`, width: puckWidth, height: puckHeight, filter: "url(#sequence-zigzag-pucks-3d-shadow-filter)", children: [_jsxs(Defs, { children: [_jsxs("linearGradient", { id: gradientId1, x1: "115", y1: "55.9991", x2: "15.0002", y2: "55.9991", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0", stopColor: currentColor || colorPrimary }), _jsx("stop", { offset: "1", stopColor: currentColor || colorPrimary, stopOpacity: "0.6" })] }), _jsxs("linearGradient", { id: gradientId2, x1: "115", y1: "72.1803", x2: "15.0002", y2: "72.1803", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0", stopColor: "#F4F4FB" }), _jsx("stop", { offset: "1", stopColor: "#8E8C90" })] })] }), _jsxs(ShapesGroup, { width: PUCK_WIDTH, height: PUCK_HEIGHT, children: [_jsx(Path, { d: PUCK_TOP_PATH, fill: currentColor || colorPrimary }), _jsx(Path, { d: PUCK_MIDDLE_PATH, fill: `url(#${gradientId1})` }), _jsx(Path, { d: PUCK_BOTTOM_PATH, fill: `url(#${gradientId2})` })] }), _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 })] }));
|
|
42
|
+
puckElements.push(_jsxs(Group, { x: puckX, y: puckY, id: `puck-${index}`, width: puckWidth, height: puckHeight, filter: "url(#sequence-zigzag-pucks-3d-shadow-filter)", children: [_jsxs(Defs, { children: [_jsxs("linearGradient", { id: gradientId1, x1: "115", y1: "55.9991", x2: "15.0002", y2: "55.9991", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0", stopColor: currentColor || colorPrimary }), _jsx("stop", { offset: "1", stopColor: currentColor || colorPrimary, stopOpacity: "0.6" })] }), _jsxs("linearGradient", { id: gradientId2, x1: "115", y1: "72.1803", x2: "15.0002", y2: "72.1803", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0", stopColor: "#F4F4FB" }), _jsx("stop", { offset: "1", stopColor: "#8E8C90" })] })] }), _jsxs(ShapesGroup, { width: PUCK_WIDTH, height: PUCK_HEIGHT, children: [_jsx(Path, { d: PUCK_TOP_PATH, fill: currentColor || colorPrimary }), _jsx(Path, { d: PUCK_MIDDLE_PATH, fill: `url(#${gradientId1})` }), _jsx(Path, { d: PUCK_BOTTOM_PATH, fill: `url(#${gradientId2})` }), _jsx("rect", { fill: "transparent", y: PUCK_HEIGHT, width: PUCK_WIDTH, height: 20 })] }), _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 })] }));
|
|
43
43
|
const itemX = puckX + (puckWidth - itemBounds.width) / 2;
|
|
44
44
|
const itemY = isEven
|
|
45
45
|
? 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,21 @@
|
|
|
1
|
+
export class BatchCommand {
|
|
2
|
+
constructor(commands) {
|
|
3
|
+
this.commands = commands;
|
|
4
|
+
}
|
|
5
|
+
async apply(state) {
|
|
6
|
+
for (const command of this.commands) {
|
|
7
|
+
await command.apply(state);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
async undo(state) {
|
|
11
|
+
for (let i = this.commands.length - 1; i >= 0; i--) {
|
|
12
|
+
await this.commands[i].undo(state);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
serialize() {
|
|
16
|
+
return {
|
|
17
|
+
type: 'batch',
|
|
18
|
+
commands: this.commands.map((cmd) => cmd.serialize()),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { getAttributes, getIconAttrs, getIconEntity, getTextElementProps, isEditableText, isIconElement, setAttributes, updateIconElement, updateTextElement, } from '../../utils';
|
|
2
|
+
export class UpdateElementCommand {
|
|
3
|
+
constructor(element, modified, original) {
|
|
4
|
+
this.element = element;
|
|
5
|
+
this.modified = modified;
|
|
6
|
+
const computedOriginal = getOriginalProps(element, modified);
|
|
7
|
+
this.original = mergeOriginalProps(computedOriginal, original);
|
|
8
|
+
}
|
|
9
|
+
async apply(state) {
|
|
10
|
+
updateElement(this.element, this.modified);
|
|
11
|
+
state.updateElement(this.element, this.modified);
|
|
12
|
+
}
|
|
13
|
+
async undo(state) {
|
|
14
|
+
if (this.original) {
|
|
15
|
+
updateElement(this.element, this.original);
|
|
16
|
+
state.updateElement(this.element, this.original);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
serialize() {
|
|
20
|
+
return {
|
|
21
|
+
type: 'update-element',
|
|
22
|
+
elementId: this.element.id,
|
|
23
|
+
modified: this.modified,
|
|
24
|
+
original: this.original,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function updateElement(element, props) {
|
|
29
|
+
if (isEditableText(element)) {
|
|
30
|
+
updateTextElement(element, props);
|
|
31
|
+
}
|
|
32
|
+
else if (isIconElement(element)) {
|
|
33
|
+
updateIconElement(element, undefined, props.attributes);
|
|
34
|
+
}
|
|
35
|
+
else if (props.attributes) {
|
|
36
|
+
setAttributes(element, props.attributes);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function getOriginalProps(element, modified) {
|
|
40
|
+
const modifiedAttrKeys = Object.keys(modified.attributes || {});
|
|
41
|
+
const originalAttributes = getAttributes(element, modifiedAttrKeys, false);
|
|
42
|
+
const assignModifiedAttributes = (attrs) => {
|
|
43
|
+
if (!attrs)
|
|
44
|
+
return;
|
|
45
|
+
modifiedAttrKeys.forEach((key) => {
|
|
46
|
+
if (key in attrs)
|
|
47
|
+
originalAttributes[key] = attrs[key];
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
const original = {
|
|
51
|
+
...modified,
|
|
52
|
+
attributes: originalAttributes,
|
|
53
|
+
};
|
|
54
|
+
if (isEditableText(element)) {
|
|
55
|
+
const { attributes } = getTextElementProps(element);
|
|
56
|
+
assignModifiedAttributes(attributes);
|
|
57
|
+
}
|
|
58
|
+
else if (isIconElement(element)) {
|
|
59
|
+
const entity = getIconEntity(element);
|
|
60
|
+
if (!entity)
|
|
61
|
+
return;
|
|
62
|
+
assignModifiedAttributes(getIconAttrs(element));
|
|
63
|
+
}
|
|
64
|
+
// TODO illus
|
|
65
|
+
return original;
|
|
66
|
+
}
|
|
67
|
+
function mergeOriginalProps(computed, provided) {
|
|
68
|
+
if (!computed)
|
|
69
|
+
return provided;
|
|
70
|
+
if (!provided)
|
|
71
|
+
return computed;
|
|
72
|
+
const mergedAttributes = {
|
|
73
|
+
...(computed.attributes || {}),
|
|
74
|
+
...(provided.attributes || {}),
|
|
75
|
+
};
|
|
76
|
+
return {
|
|
77
|
+
...computed,
|
|
78
|
+
...provided,
|
|
79
|
+
attributes: Object.keys(mergedAttributes).length
|
|
80
|
+
? mergedAttributes
|
|
81
|
+
: undefined,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ParsedInfographicOptions } from '../../options';
|
|
2
|
+
import type { ICommand, IStateManager } from '../types';
|
|
3
|
+
export declare class UpdateOptionsCommand implements ICommand {
|
|
4
|
+
private options;
|
|
5
|
+
private original?;
|
|
6
|
+
constructor(options: Partial<ParsedInfographicOptions>, original?: ParsedInfographicOptions | undefined);
|
|
7
|
+
apply(state: IStateManager): Promise<void>;
|
|
8
|
+
undo(state: IStateManager): Promise<void>;
|
|
9
|
+
serialize(): {
|
|
10
|
+
type: string;
|
|
11
|
+
options: Partial<ParsedInfographicOptions>;
|
|
12
|
+
original: ParsedInfographicOptions | undefined;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export class UpdateOptionsCommand {
|
|
2
|
+
constructor(options, original) {
|
|
3
|
+
this.options = options;
|
|
4
|
+
this.original = original;
|
|
5
|
+
}
|
|
6
|
+
async apply(state) {
|
|
7
|
+
const prev = state.getOptions();
|
|
8
|
+
if (!this.original) {
|
|
9
|
+
this.original = prev;
|
|
10
|
+
}
|
|
11
|
+
state.updateOptions({ ...prev, ...this.options });
|
|
12
|
+
}
|
|
13
|
+
async undo(state) {
|
|
14
|
+
if (this.original) {
|
|
15
|
+
state.updateOptions(this.original);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
serialize() {
|
|
19
|
+
return {
|
|
20
|
+
type: 'update-options',
|
|
21
|
+
options: this.options,
|
|
22
|
+
original: this.original,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TextElement } from '../../types';
|
|
2
|
+
import type { ICommand, IStateManager } from '../types';
|
|
3
|
+
export declare class UpdateTextCommand implements ICommand {
|
|
4
|
+
private element;
|
|
5
|
+
private originalText;
|
|
6
|
+
private modifiedText;
|
|
7
|
+
constructor(element: TextElement, newText: string, originalText?: string);
|
|
8
|
+
apply(state: IStateManager): Promise<void>;
|
|
9
|
+
undo(state: IStateManager): Promise<void>;
|
|
10
|
+
serialize(): {
|
|
11
|
+
type: string;
|
|
12
|
+
elementId: string;
|
|
13
|
+
original: string;
|
|
14
|
+
modified: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { getElementRole, getTextContent, setTextContent } from '../../utils';
|
|
2
|
+
import { getIndexesFromElement } from '../utils';
|
|
3
|
+
export class UpdateTextCommand {
|
|
4
|
+
constructor(element, newText, originalText) {
|
|
5
|
+
this.element = element;
|
|
6
|
+
this.originalText = originalText ?? getTextContent(element);
|
|
7
|
+
this.modifiedText = newText;
|
|
8
|
+
}
|
|
9
|
+
async apply(state) {
|
|
10
|
+
if (this.originalText === this.modifiedText)
|
|
11
|
+
return;
|
|
12
|
+
setTextContent(this.element, this.modifiedText);
|
|
13
|
+
updateItemText(state, this.element, this.modifiedText);
|
|
14
|
+
}
|
|
15
|
+
async undo(state) {
|
|
16
|
+
if (this.originalText === this.modifiedText)
|
|
17
|
+
return;
|
|
18
|
+
setTextContent(this.element, this.originalText);
|
|
19
|
+
updateItemText(state, this.element, this.originalText);
|
|
20
|
+
}
|
|
21
|
+
serialize() {
|
|
22
|
+
return {
|
|
23
|
+
type: 'update-text',
|
|
24
|
+
elementId: this.element.id,
|
|
25
|
+
original: this.originalText,
|
|
26
|
+
modified: this.modifiedText,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function updateItemText(state, element, text) {
|
|
31
|
+
const role = getElementRole(element);
|
|
32
|
+
if (role.startsWith('item-')) {
|
|
33
|
+
const key = role.replace('item-', '');
|
|
34
|
+
const indexes = getIndexesFromElement(element);
|
|
35
|
+
state.updateItemDatum(indexes, { [key]: text });
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
state.updateData(role, text);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ParsedInfographicOptions } from '../options';
|
|
2
|
+
import type { IEventEmitter } from '../types';
|
|
3
|
+
import { InteractionManager } from './managers';
|
|
4
|
+
import type { ICommandManager, IEditor, IPluginManager, IStateManager } from './types';
|
|
5
|
+
export declare class Editor implements IEditor {
|
|
6
|
+
private emitter;
|
|
7
|
+
private document;
|
|
8
|
+
private options;
|
|
9
|
+
state: IStateManager;
|
|
10
|
+
commander: ICommandManager;
|
|
11
|
+
plugin: IPluginManager;
|
|
12
|
+
interaction: InteractionManager;
|
|
13
|
+
constructor(emitter: IEventEmitter, document: SVGSVGElement, options: ParsedInfographicOptions);
|
|
14
|
+
getDocument(): SVGSVGElement;
|
|
15
|
+
destroy(): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { CommandManager, InteractionManager, PluginManager, StateManager, } from './managers';
|
|
2
|
+
export class Editor {
|
|
3
|
+
constructor(emitter, document, options) {
|
|
4
|
+
this.emitter = emitter;
|
|
5
|
+
this.document = document;
|
|
6
|
+
this.options = options;
|
|
7
|
+
if (!document.isConnected) {
|
|
8
|
+
throw new Error('The provided document is not connected to the DOM.');
|
|
9
|
+
}
|
|
10
|
+
document.style.userSelect = 'none';
|
|
11
|
+
const commander = new CommandManager();
|
|
12
|
+
const state = new StateManager();
|
|
13
|
+
const plugin = new PluginManager();
|
|
14
|
+
const interaction = new InteractionManager();
|
|
15
|
+
commander.init({ state, emitter });
|
|
16
|
+
state.init({
|
|
17
|
+
emitter,
|
|
18
|
+
editor: this,
|
|
19
|
+
commander,
|
|
20
|
+
options,
|
|
21
|
+
});
|
|
22
|
+
plugin.init({
|
|
23
|
+
emitter,
|
|
24
|
+
editor: this,
|
|
25
|
+
commander,
|
|
26
|
+
state,
|
|
27
|
+
}, options.plugins);
|
|
28
|
+
interaction.init({
|
|
29
|
+
emitter,
|
|
30
|
+
editor: this,
|
|
31
|
+
commander,
|
|
32
|
+
state,
|
|
33
|
+
interactions: options.interactions,
|
|
34
|
+
});
|
|
35
|
+
this.commander = commander;
|
|
36
|
+
this.state = state;
|
|
37
|
+
this.plugin = plugin;
|
|
38
|
+
this.interaction = interaction;
|
|
39
|
+
}
|
|
40
|
+
getDocument() {
|
|
41
|
+
return this.document;
|
|
42
|
+
}
|
|
43
|
+
destroy() {
|
|
44
|
+
this.document.style.userSelect = '';
|
|
45
|
+
this.interaction.destroy();
|
|
46
|
+
this.plugin.destroy();
|
|
47
|
+
this.commander.destroy();
|
|
48
|
+
this.state.destroy();
|
|
49
|
+
}
|
|
50
|
+
}
|