@antv/infographic 0.2.11 → 0.2.13
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/dist/infographic.min.js +98 -94
- package/dist/infographic.min.js.map +1 -1
- package/esm/designs/components/Btn.js +15 -4
- package/esm/designs/components/BtnsGroup.js +1 -1
- package/esm/designs/components/Illus.js +15 -3
- package/esm/designs/components/ItemDesc.js +17 -11
- package/esm/designs/components/ItemIcon.js +17 -18
- package/esm/designs/components/ItemLabel.js +17 -11
- package/esm/designs/components/ItemValue.js +17 -12
- package/esm/designs/components/ItemsGroup.js +1 -1
- package/esm/designs/components/ShapesGroup.js +1 -1
- package/esm/designs/components/Title.js +2 -2
- package/esm/designs/decorations/simple-arrow.js +14 -2
- package/esm/designs/decorations/triangle.js +14 -2
- package/esm/designs/defs/DropShadow.js +13 -2
- package/esm/designs/defs/LinearGradient.js +1 -1
- package/esm/designs/items/BadgeCard.js +2 -2
- package/esm/designs/items/CandyCardLite.js +1 -1
- package/esm/designs/items/CapsuleItem.js +3 -3
- package/esm/designs/items/CircleNode.js +1 -1
- package/esm/designs/items/CircularProgress.js +3 -2
- package/esm/designs/items/CompactCard.js +1 -1
- package/esm/designs/items/DoneList.js +1 -1
- package/esm/designs/items/HorizontalIconArrow.js +2 -2
- package/esm/designs/items/HorizontalIconLine.js +2 -2
- package/esm/designs/items/IconBadge.js +4 -3
- package/esm/designs/items/IndexedCard.js +1 -1
- package/esm/designs/items/LCornerCard.js +1 -1
- package/esm/designs/items/LetterCard.js +4 -3
- package/esm/designs/items/LinedText.js +6 -5
- package/esm/designs/items/PillBadge.js +2 -2
- package/esm/designs/items/PlainText.js +4 -4
- package/esm/designs/items/ProgressCard.js +4 -4
- package/esm/designs/items/QuarterCircular.js +1 -1
- package/esm/designs/items/QuarterSimpleCard.js +1 -1
- package/esm/designs/items/RibbonCard.js +2 -2
- package/esm/designs/items/RoundedRectNode.js +2 -2
- package/esm/designs/items/SimpleCircleNode.js +1 -1
- package/esm/designs/items/SimpleHorizontalArrow.js +2 -2
- package/esm/designs/items/SimpleIllusItem.js +1 -1
- package/esm/designs/items/SimpleItem.js +3 -3
- package/esm/designs/items/SimpleVerticalArrow.js +2 -2
- package/esm/designs/items/UnderlineText.js +1 -1
- package/esm/designs/items/VerticalIconArrow.js +2 -2
- package/esm/designs/layouts/Align.js +22 -15
- package/esm/designs/layouts/Flex.js +23 -16
- package/esm/designs/structures/chart-bar.js +7 -5
- package/esm/designs/structures/chart-column.js +3 -2
- package/esm/designs/structures/chart-line.js +7 -5
- package/esm/designs/structures/chart-pie.d.ts +25 -0
- package/esm/designs/structures/chart-pie.js +186 -26
- package/esm/designs/structures/chart-wordcloud.js +5 -14
- package/esm/designs/structures/compare-binary-horizontal/dividers/pros-cons-arrow.js +1 -1
- package/esm/designs/structures/compare-binary-horizontal/dividers/pros-cons-fold.js +1 -1
- package/esm/designs/structures/compare-binary-horizontal/dividers/types.js +2 -1
- package/esm/designs/structures/compare-hierarchy-left-right.js +6 -5
- package/esm/designs/structures/compare-hierarchy-row.js +3 -2
- package/esm/designs/structures/compare-quadrant.js +2 -3
- package/esm/designs/structures/hierarchy-mindmap.js +19 -19
- package/esm/designs/structures/hierarchy-structure.js +1 -1
- package/esm/designs/structures/hierarchy-tree.js +15 -24
- package/esm/designs/structures/list-sector.js +5 -6
- package/esm/designs/structures/list-zigzag.js +2 -1
- package/esm/designs/structures/relation-dagre-flow.js +30 -35
- package/esm/designs/structures/relation-network.js +2 -2
- package/esm/designs/structures/sequence-funnel.js +1 -1
- package/esm/designs/structures/sequence-mountain.js +4 -4
- package/esm/designs/structures/sequence-pyramid.js +1 -1
- package/esm/designs/structures/sequence-zigzag-steps.js +2 -1
- package/esm/designs/utils/color.js +8 -4
- package/esm/designs/utils/index.d.ts +1 -0
- package/esm/designs/utils/index.js +1 -0
- package/esm/designs/utils/item.js +3 -2
- package/esm/designs/utils/normalize-percent.d.ts +19 -0
- package/esm/designs/utils/normalize-percent.js +32 -0
- package/esm/editor/commands/Batch.js +21 -8
- package/esm/editor/commands/UpdateElement.js +25 -22
- package/esm/editor/commands/UpdateOptions.js +23 -10
- package/esm/editor/commands/UpdateText.js +24 -11
- package/esm/editor/interactions/brush-select.js +27 -13
- package/esm/editor/interactions/click-select.js +13 -3
- package/esm/editor/interactions/dblclick-edit-text.js +36 -20
- package/esm/editor/interactions/drag-element.js +23 -9
- package/esm/editor/interactions/hotkey-history.js +17 -7
- package/esm/editor/interactions/select-highlight.js +5 -9
- package/esm/editor/interactions/zoom-wheel.d.ts +3 -0
- package/esm/editor/interactions/zoom-wheel.js +46 -22
- package/esm/editor/managers/command.js +45 -27
- package/esm/editor/managers/interaction.js +46 -33
- package/esm/editor/managers/state.js +9 -3
- package/esm/editor/plugins/edit-bar/components/color-picker.js +9 -6
- package/esm/editor/plugins/edit-bar/components/popover.js +15 -12
- package/esm/editor/plugins/edit-bar/components/select.js +10 -8
- package/esm/editor/plugins/edit-bar/edit-bar.js +7 -25
- package/esm/editor/plugins/edit-bar/edit-items/align-elements.js +5 -3
- package/esm/editor/plugins/edit-bar/edit-items/font-align.js +1 -1
- package/esm/editor/plugins/edit-bar/edit-items/font-color.js +2 -2
- package/esm/editor/plugins/edit-bar/edit-items/icon-color.js +2 -2
- package/esm/editor/plugins/resize-element.js +6 -4
- package/esm/editor/utils/click-handler.js +6 -3
- package/esm/editor/utils/coordinate.js +2 -1
- package/esm/editor/utils/element.js +2 -1
- package/esm/editor/utils/event.js +2 -1
- package/esm/editor/utils/extension.js +1 -1
- package/esm/editor/utils/hotkey.js +2 -1
- package/esm/exporter/font.js +106 -90
- package/esm/exporter/png.js +49 -37
- package/esm/exporter/svg.js +55 -38
- package/esm/jsx/components/Ellipse.js +5 -4
- package/esm/jsx/components/Path.js +2 -4
- package/esm/jsx/components/Polygon.js +15 -6
- package/esm/jsx/components/Text.js +21 -41
- package/esm/jsx/renderer.js +15 -7
- package/esm/jsx/utils/bounds.js +18 -16
- package/esm/jsx/utils/children.js +2 -1
- package/esm/jsx/utils/clone.js +13 -2
- package/esm/jsx/utils/element.js +2 -1
- package/esm/options/parser.js +45 -46
- package/esm/renderer/composites/background.js +3 -2
- package/esm/renderer/composites/icon.js +14 -19
- package/esm/renderer/composites/illus.js +17 -22
- package/esm/renderer/composites/shape.js +4 -2
- package/esm/renderer/composites/svg.js +2 -1
- package/esm/renderer/composites/text.js +5 -3
- package/esm/renderer/fonts/loader.js +4 -3
- package/esm/renderer/fonts/registry.js +1 -1
- package/esm/renderer/palettes/utils.js +3 -2
- package/esm/renderer/renderer.js +7 -5
- package/esm/renderer/stylize/gradient.js +3 -2
- package/esm/renderer/stylize/pattern.js +15 -8
- package/esm/renderer/stylize/rough.js +1 -1
- package/esm/resource/load-tracker.js +22 -10
- package/esm/resource/loader.js +80 -67
- package/esm/resource/loaders/image.js +71 -59
- package/esm/resource/loaders/remote.js +26 -15
- package/esm/resource/loaders/search.js +38 -25
- package/esm/resource/utils/parser.js +2 -1
- package/esm/runtime/Infographic.js +26 -13
- package/esm/runtime/utils.js +5 -8
- package/esm/ssr/renderer.js +42 -35
- package/esm/syntax/index.js +19 -6
- package/esm/syntax/mapper.js +2 -2
- package/esm/templates/built-in.js +91 -269
- package/esm/templates/chart-pie.d.ts +2 -0
- package/esm/templates/chart-pie.js +87 -0
- package/esm/templates/hierarchy-mindmap.js +1 -5
- package/esm/templates/hierarchy-tree.js +1 -5
- package/esm/templates/relation-dagre-flow.js +4 -28
- package/esm/themes/generator.js +8 -14
- package/esm/utils/fetch.js +48 -35
- package/esm/utils/icon.js +1 -4
- package/esm/utils/is-browser.js +2 -2
- package/esm/utils/measure-text.js +2 -1
- package/esm/utils/padding.js +1 -1
- package/esm/utils/recognizer.js +2 -1
- package/esm/utils/text.js +14 -3
- package/esm/utils/viewbox.d.ts +20 -0
- package/esm/utils/viewbox.js +10 -0
- package/esm/version.d.ts +1 -1
- package/esm/version.js +1 -1
- package/lib/designs/components/Btn.js +15 -4
- package/lib/designs/components/BtnsGroup.js +1 -1
- package/lib/designs/components/Illus.js +15 -3
- package/lib/designs/components/ItemDesc.js +17 -11
- package/lib/designs/components/ItemIcon.js +17 -18
- package/lib/designs/components/ItemLabel.js +17 -11
- package/lib/designs/components/ItemValue.js +17 -12
- package/lib/designs/components/ItemsGroup.js +1 -1
- package/lib/designs/components/ShapesGroup.js +1 -1
- package/lib/designs/components/Title.js +2 -2
- package/lib/designs/decorations/simple-arrow.js +14 -2
- package/lib/designs/decorations/triangle.js +14 -2
- package/lib/designs/defs/DropShadow.js +13 -2
- package/lib/designs/defs/LinearGradient.js +1 -1
- package/lib/designs/items/BadgeCard.js +2 -2
- package/lib/designs/items/CandyCardLite.js +1 -1
- package/lib/designs/items/CapsuleItem.js +3 -3
- package/lib/designs/items/CircleNode.js +1 -1
- package/lib/designs/items/CircularProgress.js +3 -2
- package/lib/designs/items/CompactCard.js +1 -1
- package/lib/designs/items/DoneList.js +1 -1
- package/lib/designs/items/HorizontalIconArrow.js +2 -2
- package/lib/designs/items/HorizontalIconLine.js +2 -2
- package/lib/designs/items/IconBadge.js +4 -3
- package/lib/designs/items/IndexedCard.js +1 -1
- package/lib/designs/items/LCornerCard.js +1 -1
- package/lib/designs/items/LetterCard.js +4 -3
- package/lib/designs/items/LinedText.js +6 -5
- package/lib/designs/items/PillBadge.js +2 -2
- package/lib/designs/items/PlainText.js +4 -4
- package/lib/designs/items/ProgressCard.js +4 -4
- package/lib/designs/items/QuarterCircular.js +1 -1
- package/lib/designs/items/QuarterSimpleCard.js +1 -1
- package/lib/designs/items/RibbonCard.js +2 -2
- package/lib/designs/items/RoundedRectNode.js +2 -2
- package/lib/designs/items/SimpleCircleNode.js +1 -1
- package/lib/designs/items/SimpleHorizontalArrow.js +2 -2
- package/lib/designs/items/SimpleIllusItem.js +1 -1
- package/lib/designs/items/SimpleItem.js +3 -3
- package/lib/designs/items/SimpleVerticalArrow.js +2 -2
- package/lib/designs/items/UnderlineText.js +1 -1
- package/lib/designs/items/VerticalIconArrow.js +2 -2
- package/lib/designs/layouts/Align.js +22 -15
- package/lib/designs/layouts/Flex.js +23 -16
- package/lib/designs/structures/chart-bar.js +7 -5
- package/lib/designs/structures/chart-column.js +3 -2
- package/lib/designs/structures/chart-line.js +7 -5
- package/lib/designs/structures/chart-pie.d.ts +25 -0
- package/lib/designs/structures/chart-pie.js +186 -25
- package/lib/designs/structures/chart-wordcloud.js +5 -14
- package/lib/designs/structures/compare-binary-horizontal/dividers/pros-cons-arrow.js +1 -1
- package/lib/designs/structures/compare-binary-horizontal/dividers/pros-cons-fold.js +1 -1
- package/lib/designs/structures/compare-binary-horizontal/dividers/types.js +2 -1
- package/lib/designs/structures/compare-hierarchy-left-right.js +6 -5
- package/lib/designs/structures/compare-hierarchy-row.js +3 -2
- package/lib/designs/structures/compare-quadrant.js +2 -3
- package/lib/designs/structures/hierarchy-mindmap.js +19 -19
- package/lib/designs/structures/hierarchy-structure.js +1 -1
- package/lib/designs/structures/hierarchy-tree.js +15 -24
- package/lib/designs/structures/list-sector.js +5 -6
- package/lib/designs/structures/list-zigzag.js +2 -1
- package/lib/designs/structures/relation-dagre-flow.js +30 -35
- package/lib/designs/structures/relation-network.js +2 -2
- package/lib/designs/structures/sequence-funnel.js +1 -1
- package/lib/designs/structures/sequence-mountain.js +4 -4
- package/lib/designs/structures/sequence-pyramid.js +1 -1
- package/lib/designs/structures/sequence-zigzag-steps.js +2 -1
- package/lib/designs/utils/color.js +8 -4
- package/lib/designs/utils/index.d.ts +1 -0
- package/lib/designs/utils/index.js +1 -0
- package/lib/designs/utils/item.js +3 -2
- package/lib/designs/utils/normalize-percent.d.ts +19 -0
- package/lib/designs/utils/normalize-percent.js +35 -0
- package/lib/editor/commands/Batch.js +21 -8
- package/lib/editor/commands/UpdateElement.js +25 -22
- package/lib/editor/commands/UpdateOptions.js +23 -10
- package/lib/editor/commands/UpdateText.js +24 -11
- package/lib/editor/interactions/brush-select.js +27 -13
- package/lib/editor/interactions/click-select.js +13 -3
- package/lib/editor/interactions/dblclick-edit-text.js +36 -20
- package/lib/editor/interactions/drag-element.js +23 -9
- package/lib/editor/interactions/hotkey-history.js +17 -7
- package/lib/editor/interactions/select-highlight.js +5 -9
- package/lib/editor/interactions/zoom-wheel.d.ts +3 -0
- package/lib/editor/interactions/zoom-wheel.js +45 -21
- package/lib/editor/managers/command.js +43 -25
- package/lib/editor/managers/interaction.js +46 -33
- package/lib/editor/managers/state.js +9 -3
- package/lib/editor/plugins/edit-bar/components/color-picker.js +9 -6
- package/lib/editor/plugins/edit-bar/components/popover.js +15 -12
- package/lib/editor/plugins/edit-bar/components/select.js +10 -8
- package/lib/editor/plugins/edit-bar/edit-bar.js +7 -25
- package/lib/editor/plugins/edit-bar/edit-items/align-elements.js +5 -3
- package/lib/editor/plugins/edit-bar/edit-items/font-align.js +1 -1
- package/lib/editor/plugins/edit-bar/edit-items/font-color.js +2 -2
- package/lib/editor/plugins/edit-bar/edit-items/icon-color.js +2 -2
- package/lib/editor/plugins/resize-element.js +6 -4
- package/lib/editor/utils/click-handler.js +6 -3
- package/lib/editor/utils/coordinate.js +2 -1
- package/lib/editor/utils/element.js +2 -1
- package/lib/editor/utils/event.js +2 -1
- package/lib/editor/utils/extension.js +1 -1
- package/lib/editor/utils/hotkey.js +2 -1
- package/lib/exporter/font.js +106 -90
- package/lib/exporter/png.js +49 -37
- package/lib/exporter/svg.js +55 -38
- package/lib/jsx/components/Ellipse.js +5 -4
- package/lib/jsx/components/Path.js +2 -4
- package/lib/jsx/components/Polygon.js +15 -6
- package/lib/jsx/components/Text.js +21 -41
- package/lib/jsx/renderer.js +15 -7
- package/lib/jsx/utils/bounds.js +18 -16
- package/lib/jsx/utils/children.js +2 -1
- package/lib/jsx/utils/clone.js +13 -2
- package/lib/jsx/utils/element.js +2 -1
- package/lib/options/parser.js +45 -46
- package/lib/renderer/composites/background.js +3 -2
- package/lib/renderer/composites/icon.js +14 -19
- package/lib/renderer/composites/illus.js +17 -22
- package/lib/renderer/composites/shape.js +4 -2
- package/lib/renderer/composites/svg.js +2 -1
- package/lib/renderer/composites/text.js +5 -3
- package/lib/renderer/fonts/loader.js +4 -3
- package/lib/renderer/fonts/registry.js +1 -1
- package/lib/renderer/palettes/utils.js +3 -2
- package/lib/renderer/renderer.js +7 -5
- package/lib/renderer/stylize/gradient.js +3 -2
- package/lib/renderer/stylize/pattern.js +15 -8
- package/lib/renderer/stylize/rough.js +1 -1
- package/lib/resource/load-tracker.js +22 -10
- package/lib/resource/loader.js +80 -67
- package/lib/resource/loaders/image.js +71 -59
- package/lib/resource/loaders/remote.js +26 -15
- package/lib/resource/loaders/search.js +38 -25
- package/lib/resource/utils/parser.js +2 -1
- package/lib/runtime/Infographic.js +26 -13
- package/lib/runtime/utils.js +5 -8
- package/lib/ssr/renderer.js +42 -35
- package/lib/syntax/index.js +19 -6
- package/lib/syntax/mapper.js +2 -2
- package/lib/templates/built-in.js +91 -269
- package/lib/templates/chart-pie.d.ts +2 -0
- package/lib/templates/chart-pie.js +90 -0
- package/lib/templates/hierarchy-mindmap.js +1 -5
- package/lib/templates/hierarchy-tree.js +1 -5
- package/lib/templates/relation-dagre-flow.js +4 -28
- package/lib/themes/generator.js +8 -14
- package/lib/utils/fetch.js +48 -35
- package/lib/utils/icon.js +1 -4
- package/lib/utils/is-browser.js +2 -2
- package/lib/utils/measure-text.js +2 -1
- package/lib/utils/padding.js +1 -1
- package/lib/utils/recognizer.js +2 -1
- package/lib/utils/text.js +14 -3
- package/lib/utils/viewbox.d.ts +20 -0
- package/lib/utils/viewbox.js +12 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -2
- package/src/designs/structures/chart-pie.tsx +259 -26
- package/src/designs/utils/index.ts +1 -0
- package/src/designs/utils/normalize-percent.ts +33 -0
- package/src/editor/interactions/zoom-wheel.ts +64 -22
- package/src/editor/managers/state.ts +10 -5
- package/src/templates/built-in.ts +2 -81
- package/src/templates/chart-pie.ts +89 -0
- package/src/utils/viewbox.ts +23 -0
- package/src/version.ts +1 -1
|
@@ -31,9 +31,10 @@ export const HierarchyTree = (props) => {
|
|
|
31
31
|
let nextGroupColorIndex = 0;
|
|
32
32
|
// 内置工具方法:数据预处理
|
|
33
33
|
const normalizeItems = (items) => {
|
|
34
|
+
var _a;
|
|
34
35
|
const list = [...items];
|
|
35
|
-
if (!list[0]
|
|
36
|
-
list[0] = {
|
|
36
|
+
if (!((_a = list[0]) === null || _a === void 0 ? void 0 : _a.children)) {
|
|
37
|
+
list[0] = Object.assign(Object.assign({}, list[0]), { children: list.slice(1) });
|
|
37
38
|
list.splice(1);
|
|
38
39
|
}
|
|
39
40
|
return list;
|
|
@@ -87,34 +88,22 @@ export const HierarchyTree = (props) => {
|
|
|
87
88
|
};
|
|
88
89
|
// 内置工具方法:构建层级数据
|
|
89
90
|
const buildHierarchyData = (list) => {
|
|
91
|
+
var _a;
|
|
90
92
|
if (!list.length)
|
|
91
93
|
return null;
|
|
92
94
|
const rootItem = list[0];
|
|
93
95
|
const buildNode = (node, parentIndexes = [], idx = 0) => {
|
|
96
|
+
var _a, _b;
|
|
94
97
|
const indexes = [...parentIndexes, idx];
|
|
95
|
-
return {
|
|
96
|
-
...node,
|
|
97
|
-
_originalIndex: indexes,
|
|
98
|
-
_depth: indexes.length - 1,
|
|
99
|
-
children: node.children?.map((c, i) => buildNode(c, indexes, i)) ??
|
|
100
|
-
[],
|
|
101
|
-
};
|
|
98
|
+
return Object.assign(Object.assign({}, node), { _originalIndex: indexes, _depth: indexes.length - 1, children: (_b = (_a = node.children) === null || _a === void 0 ? void 0 : _a.map((c, i) => buildNode(c, indexes, i))) !== null && _b !== void 0 ? _b : [] });
|
|
102
99
|
};
|
|
103
|
-
return rootItem.children
|
|
100
|
+
return ((_a = rootItem.children) === null || _a === void 0 ? void 0 : _a.length)
|
|
104
101
|
? buildNode(rootItem)
|
|
105
|
-
: {
|
|
106
|
-
...rootItem,
|
|
107
|
-
_originalIndex: [0],
|
|
108
|
-
_depth: 0,
|
|
109
|
-
children: list.slice(1).map((child, i) => ({
|
|
110
|
-
...child,
|
|
111
|
-
_originalIndex: [i + 1],
|
|
112
|
-
_depth: 1,
|
|
113
|
-
})),
|
|
114
|
-
};
|
|
102
|
+
: Object.assign(Object.assign({}, rootItem), { _originalIndex: [0], _depth: 0, children: list.slice(1).map((child, i) => (Object.assign(Object.assign({}, child), { _originalIndex: [i + 1], _depth: 1 }))) });
|
|
115
103
|
};
|
|
116
104
|
// 内置工具方法:计算各层节点边界
|
|
117
105
|
const computeLevelBounds = (rootNode) => {
|
|
106
|
+
var _a, _b;
|
|
118
107
|
let maxWidth = 0, maxHeight = 0;
|
|
119
108
|
const levelBounds = new Map();
|
|
120
109
|
const sampleDatumByLevel = new Map();
|
|
@@ -126,8 +115,8 @@ export const HierarchyTree = (props) => {
|
|
|
126
115
|
});
|
|
127
116
|
for (let level = 0; level < rootNode.height + 1; level++) {
|
|
128
117
|
const ItemComponent = getItemComponent(Items, level);
|
|
129
|
-
const sampleDatum = sampleDatumByLevel.get(level)
|
|
130
|
-
const indexes = sampleDatum._originalIndex
|
|
118
|
+
const sampleDatum = (_a = sampleDatumByLevel.get(level)) !== null && _a !== void 0 ? _a : {};
|
|
119
|
+
const indexes = (_b = sampleDatum._originalIndex) !== null && _b !== void 0 ? _b : Array(level + 1).fill(0);
|
|
131
120
|
const bounds = getElementBounds(_jsx(ItemComponent, { indexes: indexes, data: data, datum: sampleDatum, positionH: "center" }));
|
|
132
121
|
levelBounds.set(level, bounds);
|
|
133
122
|
maxWidth = Math.max(maxWidth, bounds.width);
|
|
@@ -136,8 +125,9 @@ export const HierarchyTree = (props) => {
|
|
|
136
125
|
return { levelBounds, maxWidth, maxHeight };
|
|
137
126
|
};
|
|
138
127
|
const getNodeColorIndexes = (nodeData, depth) => {
|
|
128
|
+
var _a;
|
|
139
129
|
if (colorMode === 'group') {
|
|
140
|
-
const groupKey = String(nodeData
|
|
130
|
+
const groupKey = String((_a = nodeData === null || nodeData === void 0 ? void 0 : nodeData.group) !== null && _a !== void 0 ? _a : '');
|
|
141
131
|
let groupIndex = groupColorIndexMap.get(groupKey);
|
|
142
132
|
if (groupIndex == null) {
|
|
143
133
|
groupIndex = nextGroupColorIndex;
|
|
@@ -344,10 +334,11 @@ export const HierarchyTree = (props) => {
|
|
|
344
334
|
const renderSiblingBtns = (nodes, btnBounds, offsets) => {
|
|
345
335
|
const nodesByParent = new Map();
|
|
346
336
|
nodes.forEach((node) => {
|
|
337
|
+
var _a;
|
|
347
338
|
const key = node.parent
|
|
348
339
|
? node.parent.data._originalIndex.join('-')
|
|
349
340
|
: 'root';
|
|
350
|
-
(nodesByParent.get(key)
|
|
341
|
+
((_a = nodesByParent.get(key)) !== null && _a !== void 0 ? _a : nodesByParent.set(key, []).get(key)).push(node);
|
|
351
342
|
});
|
|
352
343
|
const btns = [];
|
|
353
344
|
nodesByParent.forEach((siblings) => {
|
|
@@ -22,6 +22,7 @@ export const ListSector = (props) => {
|
|
|
22
22
|
const totalUsableAngle = totalAngle - totalGapAngle;
|
|
23
23
|
const anglePerSector = items.length > 0 ? totalUsableAngle / items.length : 0;
|
|
24
24
|
items.forEach((item, index) => {
|
|
25
|
+
var _a;
|
|
25
26
|
const indexes = [index];
|
|
26
27
|
const currentStartAngle = startAngle + (anglePerSector + gapAngle) * index;
|
|
27
28
|
const currentEndAngle = currentStartAngle + anglePerSector;
|
|
@@ -65,12 +66,10 @@ export const ListSector = (props) => {
|
|
|
65
66
|
const itemBounds = getElementBounds(_jsx(Item, { indexes: [0], data: data, datum: items[0], positionH: "center", width: maxWidth, height: maxHeight }));
|
|
66
67
|
const itemX = centerX + midRadius * Math.cos(midAngleRad) - itemBounds.width / 2;
|
|
67
68
|
const itemY = centerY + midRadius * Math.sin(midAngleRad) - itemBounds.height / 2;
|
|
68
|
-
itemElements.push(_jsx(Item, { indexes: indexes, datum: item, data: data, x: itemX, y: itemY, positionH: "center", width: maxWidth, height: maxHeight, themeColors: {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}),
|
|
73
|
-
} }));
|
|
69
|
+
itemElements.push(_jsx(Item, { indexes: indexes, datum: item, data: data, x: itemX, y: itemY, positionH: "center", width: maxWidth, height: maxHeight, themeColors: Object.assign({}, getThemeColors({
|
|
70
|
+
colorBg: getPaletteColor(options, indexes),
|
|
71
|
+
colorPrimary: ((_a = options.themeConfig) === null || _a === void 0 ? void 0 : _a.colorBg) || 'white',
|
|
72
|
+
})) }));
|
|
74
73
|
const btnRemoveRadius = outerRadius + 10;
|
|
75
74
|
const btnRemoveX = centerX + btnRemoveRadius * Math.cos(midAngleRad) - btnBounds.width / 2;
|
|
76
75
|
const btnRemoveY = centerY + btnRemoveRadius * Math.sin(midAngleRad) - btnBounds.height / 2;
|
|
@@ -135,6 +135,7 @@ const getUnitVector = (from, to) => {
|
|
|
135
135
|
const createListZigzag = (config) => {
|
|
136
136
|
const { presetRatios, arrowHeight, Arrow } = config;
|
|
137
137
|
const ListZigzag = (props) => {
|
|
138
|
+
var _a;
|
|
138
139
|
const { Title, Item, data, options, itemGap = 24 } = props;
|
|
139
140
|
const { title, desc, items = [] } = data;
|
|
140
141
|
const layoutCount = Math.min(items.length, MAX_ITEMS);
|
|
@@ -145,7 +146,7 @@ const createListZigzag = (config) => {
|
|
|
145
146
|
const colorShadow = themeColors.colorTextSecondary || '#737373';
|
|
146
147
|
const btnBounds = getElementBounds(_jsx(BtnAdd, { indexes: [0] }));
|
|
147
148
|
if (items.length === 0) {
|
|
148
|
-
const anchor = getPresetPoints(1, presetRatios, arrowHeight)
|
|
149
|
+
const anchor = (_a = getPresetPoints(1, presetRatios, arrowHeight)) === null || _a === void 0 ? void 0 : _a[0];
|
|
149
150
|
if (!anchor) {
|
|
150
151
|
return (_jsxs(FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", children: [titleContent, _jsx(Group, { children: _jsx(Arrow, { colorPrimary: colorPrimary, colorShadow: colorShadow }) })] }));
|
|
151
152
|
}
|
|
@@ -11,13 +11,14 @@ const DEFAULT_EDGE_SEP = 10;
|
|
|
11
11
|
const DEFAULT_EDGE_WIDTH = 2;
|
|
12
12
|
const DEFAULT_PADDING = 30;
|
|
13
13
|
const checkUndirectedCycle = (nodeIds, edges) => {
|
|
14
|
+
var _a, _b;
|
|
14
15
|
const adj = new Map();
|
|
15
16
|
nodeIds.forEach((id) => adj.set(id, []));
|
|
16
17
|
for (const edge of edges) {
|
|
17
18
|
if (edge.source === edge.target)
|
|
18
19
|
return true;
|
|
19
|
-
adj.get(edge.source)
|
|
20
|
-
adj.get(edge.target)
|
|
20
|
+
(_a = adj.get(edge.source)) === null || _a === void 0 ? void 0 : _a.push({ target: edge.target, edgeId: edge.id });
|
|
21
|
+
(_b = adj.get(edge.target)) === null || _b === void 0 ? void 0 : _b.push({ target: edge.source, edgeId: edge.id });
|
|
21
22
|
}
|
|
22
23
|
const visited = new Set();
|
|
23
24
|
const dfs = (u, parentEdgeId) => {
|
|
@@ -42,6 +43,7 @@ const checkUndirectedCycle = (nodeIds, edges) => {
|
|
|
42
43
|
return false;
|
|
43
44
|
};
|
|
44
45
|
export const RelationDagreFlow = (props) => {
|
|
46
|
+
var _a, _b;
|
|
45
47
|
const { Title, Item, data, rankdir = 'TB', nodesep = DEFAULT_NODE_SEP, ranksep = DEFAULT_RANK_SEP, edgesep = DEFAULT_EDGE_SEP, edgeWidth = DEFAULT_EDGE_WIDTH, showConnections = true, edgeColorMode = 'gradient', edgeStyle = 'solid', edgeDashPattern = '5,5', edgeCornerRadius = 12, edgeRouting = 'orth', showArrow = true, arrowType = 'triangle', padding = DEFAULT_PADDING, edgeAnimation = 'none', edgeAnimationSpeed = 1, options, } = props;
|
|
46
48
|
const { title, desc, items = [], relations = [] } = data;
|
|
47
49
|
const titleContent = Title ? _jsx(Title, { title: title, desc: desc }) : null;
|
|
@@ -56,11 +58,12 @@ export const RelationDagreFlow = (props) => {
|
|
|
56
58
|
const colorGroupIndexMap = new Map();
|
|
57
59
|
let nextColorGroupIndex = 0;
|
|
58
60
|
const nodes = items.map((item, index) => {
|
|
61
|
+
var _a, _b;
|
|
59
62
|
const datum = item;
|
|
60
|
-
const id = String(datum.id
|
|
63
|
+
const id = String((_a = datum.id) !== null && _a !== void 0 ? _a : index);
|
|
61
64
|
const indexes = [index];
|
|
62
65
|
let primary;
|
|
63
|
-
const groupKey = String(datum.group
|
|
66
|
+
const groupKey = String((_b = datum.group) !== null && _b !== void 0 ? _b : '');
|
|
64
67
|
if (groupKey) {
|
|
65
68
|
let groupIndex = colorGroupIndexMap.get(groupKey);
|
|
66
69
|
if (groupIndex == null) {
|
|
@@ -123,7 +126,8 @@ export const RelationDagreFlow = (props) => {
|
|
|
123
126
|
edgesep,
|
|
124
127
|
controlPoints: true,
|
|
125
128
|
nodeSize: (node) => {
|
|
126
|
-
|
|
129
|
+
var _a;
|
|
130
|
+
const id = String((_a = node.id) !== null && _a !== void 0 ? _a : '');
|
|
127
131
|
const bounds = nodeSizeMap.get(id);
|
|
128
132
|
return bounds ? [bounds.width, bounds.height] : [0, 0];
|
|
129
133
|
},
|
|
@@ -131,24 +135,20 @@ export const RelationDagreFlow = (props) => {
|
|
|
131
135
|
layout.execute({ nodes, edges });
|
|
132
136
|
const nodeLayouts = [];
|
|
133
137
|
layout.forEachNode((node) => {
|
|
138
|
+
var _a, _b, _c, _d;
|
|
134
139
|
const id = String(node.id);
|
|
135
140
|
const meta = nodeMetaMap.get(id);
|
|
136
141
|
if (!meta)
|
|
137
142
|
return;
|
|
138
143
|
const bounds = nodeSizeMap.get(id);
|
|
139
|
-
const width = bounds
|
|
140
|
-
const height = bounds
|
|
141
|
-
const x = (node.x
|
|
142
|
-
const y = (node.y
|
|
143
|
-
nodeLayouts.push({
|
|
144
|
-
...meta,
|
|
145
|
-
x,
|
|
144
|
+
const width = (_a = bounds === null || bounds === void 0 ? void 0 : bounds.width) !== null && _a !== void 0 ? _a : 0;
|
|
145
|
+
const height = (_b = bounds === null || bounds === void 0 ? void 0 : bounds.height) !== null && _b !== void 0 ? _b : 0;
|
|
146
|
+
const x = ((_c = node.x) !== null && _c !== void 0 ? _c : 0) - width / 2;
|
|
147
|
+
const y = ((_d = node.y) !== null && _d !== void 0 ? _d : 0) - height / 2;
|
|
148
|
+
nodeLayouts.push(Object.assign(Object.assign({}, meta), { x,
|
|
146
149
|
y,
|
|
147
150
|
width,
|
|
148
|
-
height,
|
|
149
|
-
centerX: x + width / 2,
|
|
150
|
-
centerY: y + height / 2,
|
|
151
|
-
});
|
|
151
|
+
height, centerX: x + width / 2, centerY: y + height / 2 }));
|
|
152
152
|
});
|
|
153
153
|
if (nodeLayouts.length === 0) {
|
|
154
154
|
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 }) })] }));
|
|
@@ -165,21 +165,15 @@ export const RelationDagreFlow = (props) => {
|
|
|
165
165
|
const positionH = rankdir === 'LR' ? 'normal' : rankdir === 'RL' ? 'flipped' : 'center';
|
|
166
166
|
const positionV = rankdir === 'TB' ? 'normal' : rankdir === 'BT' ? 'flipped' : 'middle';
|
|
167
167
|
itemElements.push(_jsx(Item, { indexes: node.indexes, datum: node.datum, data: data, x: displayX, y: displayY, positionH: positionH, positionV: positionV, themeColors: node.themeColors }));
|
|
168
|
-
nodeLayoutById.set(node.id, {
|
|
169
|
-
...node,
|
|
170
|
-
x: displayX,
|
|
171
|
-
y: displayY,
|
|
172
|
-
centerX: displayX + node.width / 2,
|
|
173
|
-
centerY: displayY + node.height / 2,
|
|
174
|
-
});
|
|
168
|
+
nodeLayoutById.set(node.id, Object.assign(Object.assign({}, node), { x: displayX, y: displayY, centerX: displayX + node.width / 2, centerY: displayY + node.height / 2 }));
|
|
175
169
|
});
|
|
176
170
|
const defsElements = [];
|
|
177
171
|
const decorElements = [];
|
|
178
172
|
if (showConnections) {
|
|
179
173
|
const defaultStroke = getColorPrimary(options);
|
|
180
174
|
const themeColors = getThemeColors(options.themeConfig, options);
|
|
181
|
-
const labelBackground = themeColors
|
|
182
|
-
const labelTextColor = themeColors
|
|
175
|
+
const labelBackground = (_a = themeColors === null || themeColors === void 0 ? void 0 : themeColors.colorBg) !== null && _a !== void 0 ? _a : '#ffffff';
|
|
176
|
+
const labelTextColor = (_b = themeColors === null || themeColors === void 0 ? void 0 : themeColors.colorText) !== null && _b !== void 0 ? _b : defaultStroke;
|
|
183
177
|
const arrowSize = Math.max(10, edgeWidth * 4);
|
|
184
178
|
const isVertical = rankdir === 'TB' || rankdir === 'BT';
|
|
185
179
|
const enableAnimation = edgeAnimation === 'ant-line';
|
|
@@ -381,6 +375,7 @@ export const RelationDagreFlow = (props) => {
|
|
|
381
375
|
};
|
|
382
376
|
};
|
|
383
377
|
layout.forEachEdge((edge) => {
|
|
378
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
384
379
|
const normalizePoints = (rawPoints) => {
|
|
385
380
|
if (!Array.isArray(rawPoints))
|
|
386
381
|
return [];
|
|
@@ -411,7 +406,7 @@ export const RelationDagreFlow = (props) => {
|
|
|
411
406
|
: null;
|
|
412
407
|
const normalized = useOrthRouting ? [] : normalizePoints(edge.points);
|
|
413
408
|
const points = useOrthRouting
|
|
414
|
-
? (orthEdge
|
|
409
|
+
? ((_a = orthEdge === null || orthEdge === void 0 ? void 0 : orthEdge.points) !== null && _a !== void 0 ? _a : [])
|
|
415
410
|
: normalized.length
|
|
416
411
|
? normalized
|
|
417
412
|
: fallbackPoints();
|
|
@@ -420,14 +415,14 @@ export const RelationDagreFlow = (props) => {
|
|
|
420
415
|
const pointsOffsetX = useOrthRouting ? 0 : offsetX;
|
|
421
416
|
const pointsOffsetY = useOrthRouting ? 0 : offsetY;
|
|
422
417
|
const startPoint = useOrthRouting
|
|
423
|
-
? (orthEdge
|
|
418
|
+
? ((_b = orthEdge === null || orthEdge === void 0 ? void 0 : orthEdge.start) !== null && _b !== void 0 ? _b : points[0])
|
|
424
419
|
: points[0];
|
|
425
420
|
const endPoint = useOrthRouting
|
|
426
|
-
? (orthEdge
|
|
421
|
+
? ((_c = orthEdge === null || orthEdge === void 0 ? void 0 : orthEdge.end) !== null && _c !== void 0 ? _c : points[points.length - 1])
|
|
427
422
|
: points[points.length - 1];
|
|
428
|
-
const relation = edge._original
|
|
429
|
-
const sourceColor = nodeColorMap.get(String(edge.source))
|
|
430
|
-
const targetColor = nodeColorMap.get(String(edge.target))
|
|
423
|
+
const relation = (_d = edge._original) === null || _d === void 0 ? void 0 : _d.relation;
|
|
424
|
+
const sourceColor = (_e = nodeColorMap.get(String(edge.source))) !== null && _e !== void 0 ? _e : defaultStroke;
|
|
425
|
+
const targetColor = (_f = nodeColorMap.get(String(edge.target))) !== null && _f !== void 0 ? _f : defaultStroke;
|
|
431
426
|
const gradientKey = `edge-gradient-${String(sourceColor)}-${String(targetColor)}`.replace(/[^a-zA-Z0-9_-]/g, '');
|
|
432
427
|
const edgeStroke = edgeColorMode === 'gradient' ? `url(#${gradientKey})` : defaultStroke;
|
|
433
428
|
let pathD = '';
|
|
@@ -446,7 +441,7 @@ export const RelationDagreFlow = (props) => {
|
|
|
446
441
|
const end = endPoint;
|
|
447
442
|
defsElements.push(_jsxs("linearGradient", { id: gradientKey, gradientUnits: "userSpaceOnUse", x1: start[0] + pointsOffsetX, y1: start[1] + pointsOffsetY, x2: end[0] + pointsOffsetX, y2: end[1] + pointsOffsetY, children: [_jsx("stop", { offset: "0%", stopColor: sourceColor }), _jsx("stop", { offset: "100%", stopColor: targetColor })] }));
|
|
448
443
|
}
|
|
449
|
-
if (relation
|
|
444
|
+
if (relation === null || relation === void 0 ? void 0 : relation.label) {
|
|
450
445
|
let labelPoint = null;
|
|
451
446
|
const midPoint = getMidPoint(points);
|
|
452
447
|
if (midPoint) {
|
|
@@ -463,9 +458,9 @@ export const RelationDagreFlow = (props) => {
|
|
|
463
458
|
decorElements.push(_jsx(Text, { x: labelX, y: labelY, width: labelBounds.width, height: labelBounds.height, fontSize: 14, fontWeight: "normal", alignHorizontal: "center", alignVertical: "middle", fill: labelTextColor, backgroundColor: labelBackground, children: labelText }));
|
|
464
459
|
}
|
|
465
460
|
}
|
|
466
|
-
const effectiveShowArrow = relation
|
|
467
|
-
const direction = relation
|
|
468
|
-
const edgeArrowType = relation
|
|
461
|
+
const effectiveShowArrow = (_g = relation === null || relation === void 0 ? void 0 : relation.showArrow) !== null && _g !== void 0 ? _g : showArrow;
|
|
462
|
+
const direction = (_h = relation === null || relation === void 0 ? void 0 : relation.direction) !== null && _h !== void 0 ? _h : 'forward';
|
|
463
|
+
const edgeArrowType = (_j = relation === null || relation === void 0 ? void 0 : relation.arrowType) !== null && _j !== void 0 ? _j : arrowType;
|
|
469
464
|
const lastIndex = points.length - 1;
|
|
470
465
|
if (effectiveShowArrow && points.length > 1) {
|
|
471
466
|
if (direction === 'forward' || direction === 'both') {
|
|
@@ -42,8 +42,8 @@ export const RelationNetwork = (props) => {
|
|
|
42
42
|
}
|
|
43
43
|
const { nodes, links } = runForceLayout();
|
|
44
44
|
/** --- 偏移 --- */
|
|
45
|
-
const minX = Math.min(...nodes.map((d) => d.x
|
|
46
|
-
const minY = Math.min(...nodes.map((d) => d.y
|
|
45
|
+
const minX = Math.min(...nodes.map((d) => { var _a; return (_a = d.x) !== null && _a !== void 0 ? _a : 0; }));
|
|
46
|
+
const minY = Math.min(...nodes.map((d) => { var _a; return (_a = d.y) !== null && _a !== void 0 ? _a : 0; }));
|
|
47
47
|
const offsetX = Math.max(0, -minX + itemBounds.width / 2);
|
|
48
48
|
const offsetY = Math.max(0, -minY + itemBounds.height / 2);
|
|
49
49
|
const positionBy = (x, y) => ({
|
|
@@ -28,7 +28,7 @@ export const SequenceFunnel = (props) => {
|
|
|
28
28
|
}
|
|
29
29
|
const themeColors = getThemeColors(options.themeConfig);
|
|
30
30
|
// 计算各区域尺寸
|
|
31
|
-
const actualFunnelWidth = funnelWidth
|
|
31
|
+
const actualFunnelWidth = funnelWidth !== null && funnelWidth !== void 0 ? funnelWidth : width * 0.55; // 稍微调窄一点漏斗,给右侧留更多空间
|
|
32
32
|
const itemAreaWidth = width - actualFunnelWidth;
|
|
33
33
|
// 漏斗层高度
|
|
34
34
|
const funnelLayerHeight = itemHeight * FUNNEL_LAYER_HEIGHT_RATIO;
|
|
@@ -96,7 +96,7 @@ function Mountain(props) {
|
|
|
96
96
|
centerBottom,
|
|
97
97
|
];
|
|
98
98
|
const toPointsString = (points) => points.map((p) => `${p.x},${p.y}`).join(' ');
|
|
99
|
-
return (_jsxs(ShapesGroup, {
|
|
99
|
+
return (_jsxs(ShapesGroup, Object.assign({}, props, { children: [_jsx("polygon", { points: toPointsString(leftTopShape), fill: leftTopColor }), _jsx("polygon", { points: toPointsString(rightTopShape), fill: rightTopColor }), _jsx("polygon", { points: toPointsString(leftBottomShape), fill: leftBottomColor }), _jsx("polygon", { points: toPointsString(rightBottomShape), fill: rightBottomColor })] })));
|
|
100
100
|
}
|
|
101
101
|
function Tree(size) {
|
|
102
102
|
const heightMap = {
|
|
@@ -135,13 +135,13 @@ function Sun(props) {
|
|
|
135
135
|
const angle = (360 / rayCount) * i;
|
|
136
136
|
return (_jsx("rect", { x: rayX, y: rayY, width: rayWidth, height: rayHeight, rx: cornerRadius, ry: cornerRadius, fill: "#FFCB0E", transform: `rotate(${angle}, ${centerX}, ${centerY})` }));
|
|
137
137
|
});
|
|
138
|
-
return (_jsxs(ShapesGroup, {
|
|
138
|
+
return (_jsxs(ShapesGroup, Object.assign({}, props, { children: [_jsx("circle", { cx: centerX, cy: centerY, r: radius, fill: "#FFCB0E" }), ...rays] })));
|
|
139
139
|
}
|
|
140
140
|
function Cloud(props) {
|
|
141
141
|
if (props.type === 'single') {
|
|
142
|
-
return (_jsx(ShapesGroup, {
|
|
142
|
+
return (_jsx(ShapesGroup, Object.assign({}, props, { width: 54, height: 36, children: _jsx("path", { d: "M10.2635 13.3806C11.0019 9.99045 12.7381 6.91002 15.2405 4.55004C17.743 2.19007 20.8929 0.662716 24.2701 0.171643C27.6473 -0.31943 31.0914 0.24912 34.143 1.80148C37.1946 3.35385 39.7087 5.81625 41.3501 8.86031C44.8835 9.0468 48.1994 10.6544 50.5684 13.3294C52.9373 16.0044 54.1653 19.5277 53.9821 23.1242C53.7989 26.7207 52.2195 30.0959 49.5914 32.5071C46.9634 34.9184 43.5019 36.1683 39.9684 35.9818H11.1517C4.93436 35.9818 0 30.9593 0 24.6309C0.0598447 21.8016 1.13799 19.093 3.02989 17.0192C4.9218 14.9454 7.49584 13.6506 10.2635 13.3806Z", fill: "#70CAF8" }) })));
|
|
143
143
|
}
|
|
144
|
-
return (_jsxs(ShapesGroup, {
|
|
144
|
+
return (_jsxs(ShapesGroup, Object.assign({}, props, { width: 73, height: 40, children: [_jsx("path", { d: "M61.6461 14.9716C60.8681 11.1875 58.9581 7.73823 56.1763 5.09315C53.3944 2.44806 49.8758 0.735682 46.0992 0.189041C42.3226 -0.357601 38.4714 0.288046 35.0699 2.03812C31.6683 3.7882 28.8815 6.5577 27.0889 9.96971C23.161 10.1687 19.4719 11.9405 16.8333 14.8953C14.1947 17.8502 12.8227 21.746 13.0191 25.7258C13.2155 29.7055 14.9642 33.4433 17.8806 36.1167C20.7969 38.7901 24.642 40.1802 28.5699 39.9812H60.6588C67.5702 39.9812 73.0006 34.4791 73.0006 27.4764C73.0006 20.9739 67.8664 15.4718 61.6461 14.9716Z", fill: "#70CAF8" }), _jsx("path", { d: "M21.9691 6.47136e-09C25.9369 6.47136e-09 29.5264 1.62125 32.0003 4.21094C30.0604 5.7917 28.4423 7.75571 27.2581 10C23.3149 10.1989 19.6111 11.9702 16.9622 14.9238C14.3136 17.8774 12.936 21.772 13.1331 25.75C13.2057 27.2131 13.4902 28.6432 13.9652 30H10.7689C7.96116 29.8907 5.29664 28.7203 3.30402 26.7217C1.31144 24.7231 0.135825 22.0419 0.0110544 19.21C-0.113702 16.378 0.821178 13.6017 2.63019 11.4326C4.43921 9.26356 6.99065 7.8602 9.77766 7.5C11.9582 3.00012 16.6168 8.76701e-05 21.9691 6.47136e-09Z", fill: "#5BA2C6" })] })));
|
|
145
145
|
}
|
|
146
146
|
export const SequenceMountain = (props) => {
|
|
147
147
|
const { Title, Item, data, gap = 20, minHeight = 100, maxHeight = 200, minWidth = 260, maxWidth = 300, options, } = props;
|
|
@@ -21,7 +21,7 @@ export const SequencePyramid = (props) => {
|
|
|
21
21
|
const backgroundElements = [];
|
|
22
22
|
const iconElements = [];
|
|
23
23
|
// Calculate dimensions
|
|
24
|
-
const actualPyramidWidth = pyramidWidth
|
|
24
|
+
const actualPyramidWidth = pyramidWidth !== null && pyramidWidth !== void 0 ? pyramidWidth : width * 0.6;
|
|
25
25
|
const itemAreaWidth = width - actualPyramidWidth;
|
|
26
26
|
// Pyramid layer height should be greater than itemHeight
|
|
27
27
|
const pyramidLayerHeight = itemHeight * 1.2; // Magic number: 20% larger than itemHeight
|
|
@@ -23,6 +23,7 @@ const DECO_OFFSET_Y = 40 + W_PATH_W / 2;
|
|
|
23
23
|
// 滤镜定义
|
|
24
24
|
const GlowFilter = (_jsx("filter", { id: "sequence-zigzag-glow-filter", x: "-50%", y: "-50%", width: "200%", height: "200%", children: _jsx("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "15", result: "blur" }) }));
|
|
25
25
|
export const SequenceZigzagSteps = (props) => {
|
|
26
|
+
var _a;
|
|
26
27
|
const { Title, Item, data, options, dx = DX, dy = DY, iconSize = 30 } = props;
|
|
27
28
|
const { title, desc, items = [] } = data;
|
|
28
29
|
const titleContent = Title ? _jsx(Title, { title: title, desc: desc }) : null;
|
|
@@ -115,7 +116,7 @@ export const SequenceZigzagSteps = (props) => {
|
|
|
115
116
|
}
|
|
116
117
|
});
|
|
117
118
|
if (pathD) {
|
|
118
|
-
const finalX = (pathPoints[pathPoints.length - 1]
|
|
119
|
+
const finalX = (((_a = pathPoints[pathPoints.length - 1]) === null || _a === void 0 ? void 0 : _a.x) || 0) + offsetX;
|
|
119
120
|
pathElements.push(_jsx(Path, { d: pathD, stroke: "#f3f2f1", strokeWidth: W_PATH_W, fill: "none", width: finalX, height: maxItemY - Math.min(minPathY + offsetY, 0) }));
|
|
120
121
|
}
|
|
121
122
|
return (_jsxs(FlexLayout, { id: "infographic-container", flexDirection: "column", justifyContent: "center", alignItems: "center", gap: 30, children: [_jsx(Defs, { children: GlowFilter }), titleContent, _jsxs(Group, { x: 0, y: 0, children: [_jsx(Group, { children: [...pathElements, ...decoElements, ...iconElements] }), _jsx(ItemsGroup, { children: itemElements }), _jsx(BtnsGroup, { children: btnElements })] })] }));
|
|
@@ -3,21 +3,25 @@ import { generateThemeColors } from '../../themes/index.js';
|
|
|
3
3
|
import { isDarkColor } from '../../utils/index.js';
|
|
4
4
|
const DEFAULT_COLOR = '#FF356A';
|
|
5
5
|
export function getColorPrimary(options) {
|
|
6
|
-
|
|
6
|
+
var _a;
|
|
7
|
+
return ((_a = options === null || options === void 0 ? void 0 : options.themeConfig) === null || _a === void 0 ? void 0 : _a.colorPrimary) || DEFAULT_COLOR;
|
|
7
8
|
}
|
|
8
9
|
export function getPaletteColors(options) {
|
|
10
|
+
var _a;
|
|
9
11
|
const { themeConfig = {}, data } = options;
|
|
10
12
|
const { colorPrimary, palette } = themeConfig;
|
|
11
13
|
if (!palette || palette.length === 0) {
|
|
12
|
-
return Array(data
|
|
14
|
+
return Array(((_a = data === null || data === void 0 ? void 0 : data.items) === null || _a === void 0 ? void 0 : _a.length) || 1).fill(colorPrimary || DEFAULT_COLOR);
|
|
13
15
|
}
|
|
14
16
|
return data.items.map((_, i) => _getPaletteColor(palette, [i], data.items.length) || DEFAULT_COLOR);
|
|
15
17
|
}
|
|
16
18
|
export function getPaletteColor(options, indexes) {
|
|
17
|
-
|
|
19
|
+
var _a, _b, _c;
|
|
20
|
+
return _getPaletteColor((_a = options === null || options === void 0 ? void 0 : options.themeConfig) === null || _a === void 0 ? void 0 : _a.palette, indexes, (_c = (_b = options.data) === null || _b === void 0 ? void 0 : _b.items) === null || _c === void 0 ? void 0 : _c.length);
|
|
18
21
|
}
|
|
19
22
|
export function getThemeColors(colors, options) {
|
|
20
|
-
|
|
23
|
+
var _a;
|
|
24
|
+
const { colorBg = ((_a = options === null || options === void 0 ? void 0 : options.themeConfig) === null || _a === void 0 ? void 0 : _a.colorBg) || 'white', colorPrimary = options ? getColorPrimary(options) : 'black', } = colors;
|
|
21
25
|
return generateThemeColors({
|
|
22
26
|
colorPrimary: colorPrimary,
|
|
23
27
|
isDarkMode: isDarkColor(colorBg),
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @returns
|
|
6
6
|
*/
|
|
7
7
|
export function getItemProps(props, extKeys = []) {
|
|
8
|
-
const restProps = {
|
|
8
|
+
const restProps = Object.assign({}, props);
|
|
9
9
|
const extProps = {};
|
|
10
10
|
const keys = [
|
|
11
11
|
'indexes',
|
|
@@ -35,9 +35,10 @@ export function getItemProps(props, extKeys = []) {
|
|
|
35
35
|
* 针对层级结构,获取当前层级对应的组件
|
|
36
36
|
*/
|
|
37
37
|
export function getItemComponent(Items, level) {
|
|
38
|
+
var _a;
|
|
38
39
|
if (Items.length === 0)
|
|
39
40
|
return () => null;
|
|
40
41
|
if (level === undefined)
|
|
41
42
|
return Items[0];
|
|
42
|
-
return Items[level]
|
|
43
|
+
return (_a = Items[level]) !== null && _a !== void 0 ? _a : Items[0];
|
|
43
44
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 规范化百分比输入
|
|
3
|
+
*
|
|
4
|
+
* 支持以下格式:
|
|
5
|
+
* - "2%" 或 "2.5%" → 2 或 2.5
|
|
6
|
+
* - 2 或 2.5 (数字直接作为百分比) → 2 或 2.5
|
|
7
|
+
*
|
|
8
|
+
* @param value - 百分比值,可以是数字或带 "%" 的字符串
|
|
9
|
+
* @returns 规范化后的百分比数值
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* normalizePercent("2%"); // 返回 2
|
|
14
|
+
* normalizePercent("2.5%"); // 返回 2.5
|
|
15
|
+
* normalizePercent(2); // 返回 2
|
|
16
|
+
* normalizePercent(2.5); // 返回 2.5
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function normalizePercent(value: number | string | undefined): number;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 规范化百分比输入
|
|
3
|
+
*
|
|
4
|
+
* 支持以下格式:
|
|
5
|
+
* - "2%" 或 "2.5%" → 2 或 2.5
|
|
6
|
+
* - 2 或 2.5 (数字直接作为百分比) → 2 或 2.5
|
|
7
|
+
*
|
|
8
|
+
* @param value - 百分比值,可以是数字或带 "%" 的字符串
|
|
9
|
+
* @returns 规范化后的百分比数值
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* normalizePercent("2%"); // 返回 2
|
|
14
|
+
* normalizePercent("2.5%"); // 返回 2.5
|
|
15
|
+
* normalizePercent(2); // 返回 2
|
|
16
|
+
* normalizePercent(2.5); // 返回 2.5
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export function normalizePercent(value) {
|
|
20
|
+
if (value === undefined || value === null)
|
|
21
|
+
return 0;
|
|
22
|
+
// 处理字符串格式 (如 "2%" 或 "2.5%")
|
|
23
|
+
if (typeof value === 'string') {
|
|
24
|
+
const trimmed = value.trim();
|
|
25
|
+
// 移除可能的 '%' 后缀,然后解析
|
|
26
|
+
const numStr = trimmed.endsWith('%') ? trimmed.slice(0, -1) : trimmed;
|
|
27
|
+
const num = parseFloat(numStr);
|
|
28
|
+
return isNaN(num) ? 0 : num;
|
|
29
|
+
}
|
|
30
|
+
// 数字直接作为百分比使用
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
@@ -1,16 +1,29 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
export class BatchCommand {
|
|
2
11
|
constructor(commands) {
|
|
3
12
|
this.commands = commands;
|
|
4
13
|
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
14
|
+
apply(state) {
|
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
for (const command of this.commands) {
|
|
17
|
+
yield command.apply(state);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
9
20
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
21
|
+
undo(state) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
for (let i = this.commands.length - 1; i >= 0; i--) {
|
|
24
|
+
yield this.commands[i].undo(state);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
14
27
|
}
|
|
15
28
|
serialize() {
|
|
16
29
|
return {
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import { getAttributes, getIconAttrs, getIconEntity, getTextElementProps, isEditableText, isIconElement, setAttributes, updateIconElement, updateTextElement, } from '../../utils/index.js';
|
|
2
11
|
export class UpdateElementCommand {
|
|
3
12
|
constructor(element, modified, original) {
|
|
@@ -6,15 +15,19 @@ export class UpdateElementCommand {
|
|
|
6
15
|
const computedOriginal = getOriginalProps(element, modified);
|
|
7
16
|
this.original = mergeOriginalProps(computedOriginal, original);
|
|
8
17
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
18
|
+
apply(state) {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
updateElement(this.element, this.modified);
|
|
21
|
+
state.updateElement(this.element, this.modified);
|
|
22
|
+
});
|
|
12
23
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
24
|
+
undo(state) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
if (this.original) {
|
|
27
|
+
updateElement(this.element, this.original);
|
|
28
|
+
state.updateElement(this.element, this.original);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
18
31
|
}
|
|
19
32
|
serialize() {
|
|
20
33
|
return {
|
|
@@ -47,10 +60,7 @@ function getOriginalProps(element, modified) {
|
|
|
47
60
|
originalAttributes[key] = attrs[key];
|
|
48
61
|
});
|
|
49
62
|
};
|
|
50
|
-
const original = {
|
|
51
|
-
...modified,
|
|
52
|
-
attributes: originalAttributes,
|
|
53
|
-
};
|
|
63
|
+
const original = Object.assign(Object.assign({}, modified), { attributes: originalAttributes });
|
|
54
64
|
if (isEditableText(element)) {
|
|
55
65
|
const { attributes } = getTextElementProps(element);
|
|
56
66
|
assignModifiedAttributes(attributes);
|
|
@@ -69,15 +79,8 @@ function mergeOriginalProps(computed, provided) {
|
|
|
69
79
|
return provided;
|
|
70
80
|
if (!provided)
|
|
71
81
|
return computed;
|
|
72
|
-
const mergedAttributes = {
|
|
73
|
-
|
|
74
|
-
...(provided.attributes || {}),
|
|
75
|
-
};
|
|
76
|
-
return {
|
|
77
|
-
...computed,
|
|
78
|
-
...provided,
|
|
79
|
-
attributes: Object.keys(mergedAttributes).length
|
|
82
|
+
const mergedAttributes = Object.assign(Object.assign({}, (computed.attributes || {})), (provided.attributes || {}));
|
|
83
|
+
return Object.assign(Object.assign(Object.assign({}, computed), provided), { attributes: Object.keys(mergedAttributes).length
|
|
80
84
|
? mergedAttributes
|
|
81
|
-
: undefined
|
|
82
|
-
};
|
|
85
|
+
: undefined });
|
|
83
86
|
}
|