@tradingaction/interactive 2.0.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/LICENSE +24 -0
- package/README.md +5 -0
- package/lib/Brush.d.ts +35 -0
- package/lib/Brush.js +103 -0
- package/lib/Brush.js.map +1 -0
- package/lib/ClickCallback.d.ts +18 -0
- package/lib/ClickCallback.js +12 -0
- package/lib/ClickCallback.js.map +1 -0
- package/lib/DrawingObjectSelector.d.ts +18 -0
- package/lib/DrawingObjectSelector.js +73 -0
- package/lib/DrawingObjectSelector.js.map +1 -0
- package/lib/EquidistantChannel.d.ts +74 -0
- package/lib/EquidistantChannel.js +149 -0
- package/lib/EquidistantChannel.js.map +1 -0
- package/lib/FibonacciRetracement.d.ts +89 -0
- package/lib/FibonacciRetracement.js +184 -0
- package/lib/FibonacciRetracement.js.map +1 -0
- package/lib/GannFan.d.ts +78 -0
- package/lib/GannFan.js +128 -0
- package/lib/GannFan.js.map +1 -0
- package/lib/InteractiveText.d.ts +65 -0
- package/lib/InteractiveText.js +83 -0
- package/lib/InteractiveText.js.map +1 -0
- package/lib/InteractiveYCoordinate.d.ts +122 -0
- package/lib/InteractiveYCoordinate.js +100 -0
- package/lib/InteractiveYCoordinate.js.map +1 -0
- package/lib/StandardDeviationChannel.d.ts +74 -0
- package/lib/StandardDeviationChannel.js +125 -0
- package/lib/StandardDeviationChannel.js.map +1 -0
- package/lib/TrendLine.d.ts +84 -0
- package/lib/TrendLine.js +128 -0
- package/lib/TrendLine.js.map +1 -0
- package/lib/ZoomButtons.d.ts +30 -0
- package/lib/ZoomButtons.js +78 -0
- package/lib/ZoomButtons.js.map +1 -0
- package/lib/components/ChannelWithArea.d.ts +30 -0
- package/lib/components/ChannelWithArea.js +126 -0
- package/lib/components/ChannelWithArea.js.map +1 -0
- package/lib/components/ClickableCircle.d.ts +26 -0
- package/lib/components/ClickableCircle.js +48 -0
- package/lib/components/ClickableCircle.js.map +1 -0
- package/lib/components/ClickableShape.d.ts +33 -0
- package/lib/components/ClickableShape.js +64 -0
- package/lib/components/ClickableShape.js.map +1 -0
- package/lib/components/GannFan.d.ts +32 -0
- package/lib/components/GannFan.js +134 -0
- package/lib/components/GannFan.js.map +1 -0
- package/lib/components/HoverTextNearMouse.d.ts +35 -0
- package/lib/components/HoverTextNearMouse.js +113 -0
- package/lib/components/HoverTextNearMouse.js.map +1 -0
- package/lib/components/InteractiveStraightLine.d.ts +61 -0
- package/lib/components/InteractiveStraightLine.js +220 -0
- package/lib/components/InteractiveStraightLine.js.map +1 -0
- package/lib/components/InteractiveText.d.ts +38 -0
- package/lib/components/InteractiveText.js +84 -0
- package/lib/components/InteractiveText.js.map +1 -0
- package/lib/components/InteractiveYCoordinate.d.ts +46 -0
- package/lib/components/InteractiveYCoordinate.js +109 -0
- package/lib/components/InteractiveYCoordinate.js.map +1 -0
- package/lib/components/LinearRegressionChannelWithArea.d.ts +31 -0
- package/lib/components/LinearRegressionChannelWithArea.js +104 -0
- package/lib/components/LinearRegressionChannelWithArea.js.map +1 -0
- package/lib/components/MouseLocationIndicator.d.ts +34 -0
- package/lib/components/MouseLocationIndicator.js +79 -0
- package/lib/components/MouseLocationIndicator.js.map +1 -0
- package/lib/components/Text.d.ts +17 -0
- package/lib/components/Text.js +26 -0
- package/lib/components/Text.js.map +1 -0
- package/lib/components/index.d.ts +11 -0
- package/lib/components/index.js +12 -0
- package/lib/components/index.js.map +1 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.js +13 -0
- package/lib/index.js.map +1 -0
- package/lib/utils.d.ts +7 -0
- package/lib/utils.js +84 -0
- package/lib/utils.js.map +1 -0
- package/lib/wrapper/EachEquidistantChannel.d.ts +59 -0
- package/lib/wrapper/EachEquidistantChannel.js +172 -0
- package/lib/wrapper/EachEquidistantChannel.js.map +1 -0
- package/lib/wrapper/EachFibRetracement.d.ts +81 -0
- package/lib/wrapper/EachFibRetracement.js +202 -0
- package/lib/wrapper/EachFibRetracement.js.map +1 -0
- package/lib/wrapper/EachGannFan.d.ts +81 -0
- package/lib/wrapper/EachGannFan.js +161 -0
- package/lib/wrapper/EachGannFan.js.map +1 -0
- package/lib/wrapper/EachInteractiveYCoordinate.d.ts +50 -0
- package/lib/wrapper/EachInteractiveYCoordinate.js +80 -0
- package/lib/wrapper/EachInteractiveYCoordinate.js.map +1 -0
- package/lib/wrapper/EachLinearRegressionChannel.d.ts +75 -0
- package/lib/wrapper/EachLinearRegressionChannel.js +89 -0
- package/lib/wrapper/EachLinearRegressionChannel.js.map +1 -0
- package/lib/wrapper/EachText.d.ts +59 -0
- package/lib/wrapper/EachText.js +83 -0
- package/lib/wrapper/EachText.js.map +1 -0
- package/lib/wrapper/EachTrendLine.d.ts +85 -0
- package/lib/wrapper/EachTrendLine.js +165 -0
- package/lib/wrapper/EachTrendLine.js.map +1 -0
- package/lib/wrapper/index.d.ts +7 -0
- package/lib/wrapper/index.js +8 -0
- package/lib/wrapper/index.js.map +1 -0
- package/package.json +53 -0
- package/src/Brush.tsx +172 -0
- package/src/ClickCallback.tsx +37 -0
- package/src/DrawingObjectSelector.tsx +97 -0
- package/src/EquidistantChannel.tsx +268 -0
- package/src/FibonacciRetracement.tsx +328 -0
- package/src/GannFan.tsx +233 -0
- package/src/InteractiveText.tsx +182 -0
- package/src/InteractiveYCoordinate.tsx +199 -0
- package/src/StandardDeviationChannel.tsx +269 -0
- package/src/TrendLine.tsx +294 -0
- package/src/ZoomButtons.tsx +165 -0
- package/src/components/ChannelWithArea.tsx +199 -0
- package/src/components/ClickableCircle.tsx +91 -0
- package/src/components/ClickableShape.tsx +114 -0
- package/src/components/GannFan.tsx +189 -0
- package/src/components/HoverTextNearMouse.tsx +174 -0
- package/src/components/InteractiveStraightLine.tsx +335 -0
- package/src/components/InteractiveText.tsx +146 -0
- package/src/components/InteractiveYCoordinate.tsx +200 -0
- package/src/components/LinearRegressionChannelWithArea.tsx +169 -0
- package/src/components/MouseLocationIndicator.tsx +128 -0
- package/src/components/Text.tsx +47 -0
- package/src/components/index.ts +11 -0
- package/src/index.ts +12 -0
- package/src/utils.ts +101 -0
- package/src/wrapper/EachEquidistantChannel.tsx +302 -0
- package/src/wrapper/EachFibRetracement.tsx +359 -0
- package/src/wrapper/EachGannFan.tsx +289 -0
- package/src/wrapper/EachInteractiveYCoordinate.tsx +198 -0
- package/src/wrapper/EachLinearRegressionChannel.tsx +202 -0
- package/src/wrapper/EachText.tsx +190 -0
- package/src/wrapper/EachTrendLine.tsx +331 -0
- package/src/wrapper/index.ts +7 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import * as React from "react";
|
|
13
|
+
import { isDefined, isNotDefined, noop } from "@tradingaction/core";
|
|
14
|
+
import { HoverTextNearMouse, MouseLocationIndicator } from "./components";
|
|
15
|
+
import { isHoverForInteractiveType, saveNodeType, terminate } from "./utils";
|
|
16
|
+
import { EachFibRetracement } from "./wrapper";
|
|
17
|
+
export class FibonacciRetracement extends React.Component {
|
|
18
|
+
constructor(props) {
|
|
19
|
+
super(props);
|
|
20
|
+
this.handleDoubleClick = (_, moreProps, idx) => {
|
|
21
|
+
if (this.props.onDoubleClick) {
|
|
22
|
+
this.props.onDoubleClick(_, moreProps, idx);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
this.handleClickWhenHover = (_, moreProps, idx) => {
|
|
26
|
+
if (this.props.onClickWhenHover) {
|
|
27
|
+
this.props.onClickWhenHover(_, moreProps, idx);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
this.handleClickOutside = (_, moreProps, idx) => {
|
|
31
|
+
if (this.props.onClickOutside) {
|
|
32
|
+
this.props.onClickOutside(_, moreProps, idx);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
this.handleConextMenu = (_, moreProps, idx) => {
|
|
36
|
+
if (this.props.onConextMenu) {
|
|
37
|
+
_.stopPropagation();
|
|
38
|
+
_.preventDefault();
|
|
39
|
+
this.props.onConextMenu(_, moreProps, idx);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
this.handleDrawRetracement = (_, xyValue) => {
|
|
43
|
+
const { current } = this.state;
|
|
44
|
+
if (isDefined(current) && isDefined(current.x1)) {
|
|
45
|
+
this.mouseMoved = true;
|
|
46
|
+
this.setState({
|
|
47
|
+
current: Object.assign(Object.assign({}, current), { x2: xyValue[0], y2: xyValue[1] }),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
this.handleEdge1Drag = (_, echo, newXYValue, origXYValue) => {
|
|
52
|
+
const { retracements } = this.props;
|
|
53
|
+
const { index } = echo;
|
|
54
|
+
const dx = origXYValue.x1Value - newXYValue.x1Value;
|
|
55
|
+
this.setState({
|
|
56
|
+
override: {
|
|
57
|
+
index,
|
|
58
|
+
x1: retracements[index].x1 - dx,
|
|
59
|
+
y1: retracements[index].y1,
|
|
60
|
+
x2: retracements[index].x2,
|
|
61
|
+
y2: retracements[index].y2,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
this.handleDrag = (_, index, xy) => {
|
|
66
|
+
this.setState({
|
|
67
|
+
override: Object.assign({ index }, xy),
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
this.handleEdge2Drag = (_, echo, newXYValue, origXYValue) => {
|
|
71
|
+
const { retracements } = this.props;
|
|
72
|
+
const { index } = echo;
|
|
73
|
+
const dx = origXYValue.x2Value - newXYValue.x2Value;
|
|
74
|
+
this.setState({
|
|
75
|
+
override: {
|
|
76
|
+
index,
|
|
77
|
+
x1: retracements[index].x1,
|
|
78
|
+
y1: retracements[index].y1,
|
|
79
|
+
x2: retracements[index].x2 - dx,
|
|
80
|
+
y2: retracements[index].y2,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
this.handleDragComplete = (e, moreProps) => {
|
|
85
|
+
const { retracements } = this.props;
|
|
86
|
+
const { override } = this.state;
|
|
87
|
+
if (isDefined(override)) {
|
|
88
|
+
const { index } = override, rest = __rest(override, ["index"]);
|
|
89
|
+
const newRetracements = retracements.map((each, idx) => idx === index ? Object.assign(Object.assign(Object.assign({}, each), rest), { selected: true }) : each);
|
|
90
|
+
this.setState({
|
|
91
|
+
override: null,
|
|
92
|
+
}, () => {
|
|
93
|
+
const { onComplete } = this.props;
|
|
94
|
+
if (onComplete !== undefined) {
|
|
95
|
+
onComplete(e, newRetracements, moreProps);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
this.handleStart = (e, xyValue, moreProps) => {
|
|
101
|
+
const { current } = this.state;
|
|
102
|
+
if (isNotDefined(current) || isNotDefined(current.x1)) {
|
|
103
|
+
this.mouseMoved = false;
|
|
104
|
+
this.setState({
|
|
105
|
+
current: {
|
|
106
|
+
x1: xyValue[0],
|
|
107
|
+
y1: xyValue[1],
|
|
108
|
+
x2: null,
|
|
109
|
+
y2: null,
|
|
110
|
+
},
|
|
111
|
+
}, () => {
|
|
112
|
+
const { onStart } = this.props;
|
|
113
|
+
if (onStart !== undefined) {
|
|
114
|
+
onStart(moreProps);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
this.handleEnd = (e, xyValue, moreProps) => {
|
|
120
|
+
const { retracements, appearance, type } = this.props;
|
|
121
|
+
const { current } = this.state;
|
|
122
|
+
if (this.mouseMoved && isDefined(current) && isDefined(current.x1)) {
|
|
123
|
+
const newRetracements = retracements.concat(Object.assign(Object.assign({}, current), { x2: xyValue[0], y2: xyValue[1], selected: true, appearance,
|
|
124
|
+
type }));
|
|
125
|
+
this.setState({
|
|
126
|
+
current: null,
|
|
127
|
+
}, () => {
|
|
128
|
+
const { onComplete } = this.props;
|
|
129
|
+
if (onComplete !== undefined) {
|
|
130
|
+
onComplete(e, newRetracements, moreProps);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
this.handleEdge1Drag = this.handleEdge1Drag.bind(this);
|
|
136
|
+
this.handleEdge2Drag = this.handleEdge2Drag.bind(this);
|
|
137
|
+
this.terminate = terminate.bind(this);
|
|
138
|
+
this.getSelectionState = isHoverForInteractiveType("retracements").bind(this);
|
|
139
|
+
this.saveNodeType = saveNodeType.bind(this);
|
|
140
|
+
this.state = {};
|
|
141
|
+
}
|
|
142
|
+
render() {
|
|
143
|
+
const { current, override } = this.state;
|
|
144
|
+
const { appearance, currentPositionStroke, currentPositionOpacity, currentPositionStrokeWidth, currentPositionRadius = FibonacciRetracement.defaultProps.currentPositionRadius, retracements, type, } = this.props;
|
|
145
|
+
const { enabled, hoverText } = this.props;
|
|
146
|
+
const overrideIndex = isDefined(override) ? override.index : null;
|
|
147
|
+
const hoverTextWidthDefault = Object.assign(Object.assign({}, FibonacciRetracement.defaultProps.hoverText), hoverText);
|
|
148
|
+
const currentRetracement = isDefined(current) && isDefined(current.x2) ? (React.createElement(EachFibRetracement, Object.assign({ interactive: false, type: type, appearance: appearance, hoverText: hoverTextWidthDefault }, current, { onDoubleClick: (e) => this.handleDoubleClick(e, {}, 0) }))) : null;
|
|
149
|
+
return (React.createElement("g", null,
|
|
150
|
+
retracements.map((each, idx) => {
|
|
151
|
+
const eachAppearance = isDefined(each.appearance)
|
|
152
|
+
? Object.assign(Object.assign({}, appearance), each.appearance) : appearance;
|
|
153
|
+
const eachHoverText = isDefined(each.hoverText)
|
|
154
|
+
? Object.assign(Object.assign({}, hoverTextWidthDefault), each.hoverText) : hoverTextWidthDefault;
|
|
155
|
+
return (React.createElement(EachFibRetracement, Object.assign({ key: idx, ref: this.saveNodeType(idx), index: idx, type: each.type, selected: each.selected }, (idx === overrideIndex ? override : each), { hoverText: eachHoverText, appearance: eachAppearance, onDrag: this.handleDrag, onDragComplete: this.handleDragComplete, onDoubleClick: (e, moreProps) => this.handleDoubleClick(e, moreProps, idx), onClickWhenHover: (e, moreProps) => this.handleClickWhenHover(e, moreProps, idx), onClickOutside: (e, moreProps) => this.handleClickOutside(e, moreProps, idx), onContextMenuWhenHover: (e, moreProps) => this.handleConextMenu(e, moreProps, idx) })));
|
|
156
|
+
}),
|
|
157
|
+
currentRetracement,
|
|
158
|
+
React.createElement(MouseLocationIndicator, { enabled: enabled, snap: false, r: currentPositionRadius, stroke: currentPositionStroke, opacity: currentPositionOpacity, strokeWidth: currentPositionStrokeWidth, onMouseDown: this.handleStart, onClick: this.handleEnd, onMouseMove: (e, xyValues) => this.handleDrawRetracement(e, xyValues) })));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
FibonacciRetracement.defaultProps = {
|
|
162
|
+
enabled: true,
|
|
163
|
+
type: "RAY",
|
|
164
|
+
retracements: [],
|
|
165
|
+
onSelect: noop,
|
|
166
|
+
hoverText: Object.assign(Object.assign({}, HoverTextNearMouse.defaultProps), { enable: true, bgHeight: "auto", bgWidth: "auto", text: "Click to select object", selectedText: "" }),
|
|
167
|
+
currentPositionStroke: "#000000",
|
|
168
|
+
currentPositionOpacity: 1,
|
|
169
|
+
currentPositionStrokeWidth: 3,
|
|
170
|
+
currentPositionRadius: 4,
|
|
171
|
+
appearance: {
|
|
172
|
+
strokeStyle: "#000000",
|
|
173
|
+
strokeWidth: 1,
|
|
174
|
+
fontFamily: "-apple-system, system-ui, Roboto, 'Helvetica Neue', Ubuntu, sans-serif",
|
|
175
|
+
fontSize: 11,
|
|
176
|
+
fontFill: "#000000",
|
|
177
|
+
edgeStroke: "#000000",
|
|
178
|
+
edgeFill: "#FFFFFF",
|
|
179
|
+
nsEdgeFill: "#000000",
|
|
180
|
+
edgeStrokeWidth: 1,
|
|
181
|
+
r: 5,
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
//# sourceMappingURL=FibonacciRetracement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FibonacciRetracement.js","sourceRoot":"","sources":["../src/FibonacciRetracement.tsx"],"names":[],"mappings":"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"}
|
package/lib/GannFan.d.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface GannFanProps {
|
|
3
|
+
readonly enabled: boolean;
|
|
4
|
+
readonly onStart?: () => void;
|
|
5
|
+
readonly onComplete: (e: React.MouseEvent, newfans: any[], moreProps: any) => void;
|
|
6
|
+
readonly onSelect?: (e: React.MouseEvent, interactives: any[], moreProps: any) => void;
|
|
7
|
+
readonly currentPositionStroke?: string;
|
|
8
|
+
readonly currentPositionStrokeWidth?: number;
|
|
9
|
+
readonly currentPositionOpacity?: number;
|
|
10
|
+
readonly currentPositionRadius?: number;
|
|
11
|
+
readonly appearance: {
|
|
12
|
+
readonly stroke: string;
|
|
13
|
+
readonly strokeOpacity: number;
|
|
14
|
+
readonly fillOpacity: number;
|
|
15
|
+
readonly strokeWidth: number;
|
|
16
|
+
readonly edgeStroke: string;
|
|
17
|
+
readonly edgeFill: string;
|
|
18
|
+
readonly edgeStrokeWidth: number;
|
|
19
|
+
readonly r: number;
|
|
20
|
+
readonly fill: string[];
|
|
21
|
+
readonly fontFamily: string;
|
|
22
|
+
readonly fontSize: number;
|
|
23
|
+
readonly fontFill: string;
|
|
24
|
+
};
|
|
25
|
+
readonly hoverText: object;
|
|
26
|
+
readonly fans: any[];
|
|
27
|
+
}
|
|
28
|
+
interface GannFanState {
|
|
29
|
+
current?: any;
|
|
30
|
+
override?: any;
|
|
31
|
+
}
|
|
32
|
+
export declare class GannFan extends React.Component<GannFanProps, GannFanState> {
|
|
33
|
+
static defaultProps: {
|
|
34
|
+
appearance: {
|
|
35
|
+
stroke: string;
|
|
36
|
+
fillOpacity: number;
|
|
37
|
+
strokeOpacity: number;
|
|
38
|
+
strokeWidth: number;
|
|
39
|
+
edgeStroke: string;
|
|
40
|
+
edgeFill: string;
|
|
41
|
+
edgeStrokeWidth: number;
|
|
42
|
+
r: number;
|
|
43
|
+
fill: string[];
|
|
44
|
+
fontFamily: string;
|
|
45
|
+
fontSize: number;
|
|
46
|
+
fontFill: string;
|
|
47
|
+
};
|
|
48
|
+
onSelect: () => void;
|
|
49
|
+
currentPositionStroke: string;
|
|
50
|
+
currentPositionOpacity: number;
|
|
51
|
+
currentPositionStrokeWidth: number;
|
|
52
|
+
currentPositionRadius: number;
|
|
53
|
+
hoverText: {
|
|
54
|
+
enable: boolean;
|
|
55
|
+
bgHeight: number;
|
|
56
|
+
bgWidth: number;
|
|
57
|
+
text: string;
|
|
58
|
+
fontFamily: string;
|
|
59
|
+
fontSize: number;
|
|
60
|
+
fill: string;
|
|
61
|
+
bgFill: string;
|
|
62
|
+
bgOpacity: number;
|
|
63
|
+
};
|
|
64
|
+
fans: never[];
|
|
65
|
+
};
|
|
66
|
+
private mouseMoved;
|
|
67
|
+
private getSelectionState;
|
|
68
|
+
private saveNodeType;
|
|
69
|
+
private terminate;
|
|
70
|
+
constructor(props: GannFanProps);
|
|
71
|
+
render(): JSX.Element;
|
|
72
|
+
private readonly handleEnd;
|
|
73
|
+
private readonly handleStart;
|
|
74
|
+
private readonly handleDrawFan;
|
|
75
|
+
private readonly handleDragFanComplete;
|
|
76
|
+
private readonly handleDragFan;
|
|
77
|
+
}
|
|
78
|
+
export {};
|
package/lib/GannFan.js
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import * as React from "react";
|
|
13
|
+
import { isDefined, isNotDefined, noop } from "@tradingaction/core";
|
|
14
|
+
import { HoverTextNearMouse, MouseLocationIndicator } from "./components";
|
|
15
|
+
import { isHoverForInteractiveType, saveNodeType, terminate } from "./utils";
|
|
16
|
+
import { EachGannFan } from "./wrapper";
|
|
17
|
+
export class GannFan extends React.Component {
|
|
18
|
+
constructor(props) {
|
|
19
|
+
super(props);
|
|
20
|
+
this.handleEnd = (e, _, moreProps) => {
|
|
21
|
+
const { current } = this.state;
|
|
22
|
+
const { fans, appearance } = this.props;
|
|
23
|
+
if (this.mouseMoved && isDefined(current) && isDefined(current.startXY)) {
|
|
24
|
+
const newfans = [
|
|
25
|
+
...fans.map((d) => (Object.assign(Object.assign({}, d), { selected: false }))),
|
|
26
|
+
Object.assign(Object.assign({}, current), { selected: true, appearance }),
|
|
27
|
+
];
|
|
28
|
+
this.setState({
|
|
29
|
+
current: null,
|
|
30
|
+
}, () => {
|
|
31
|
+
const { onComplete } = this.props;
|
|
32
|
+
if (onComplete !== undefined) {
|
|
33
|
+
onComplete(e, newfans, moreProps);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
this.handleStart = (_, xyValue) => {
|
|
39
|
+
const { current } = this.state;
|
|
40
|
+
if (isNotDefined(current) || isNotDefined(current.startXY)) {
|
|
41
|
+
this.mouseMoved = false;
|
|
42
|
+
this.setState({
|
|
43
|
+
current: {
|
|
44
|
+
startXY: xyValue,
|
|
45
|
+
endXY: null,
|
|
46
|
+
},
|
|
47
|
+
}, () => {
|
|
48
|
+
const { onStart } = this.props;
|
|
49
|
+
if (onStart !== undefined) {
|
|
50
|
+
onStart();
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
this.handleDrawFan = (_, xyValue) => {
|
|
56
|
+
const { current } = this.state;
|
|
57
|
+
if (isDefined(current) && isDefined(current.startXY)) {
|
|
58
|
+
this.mouseMoved = true;
|
|
59
|
+
this.setState({
|
|
60
|
+
current: {
|
|
61
|
+
startXY: current.startXY,
|
|
62
|
+
endXY: xyValue,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
this.handleDragFanComplete = (e, moreProps) => {
|
|
68
|
+
const { override } = this.state;
|
|
69
|
+
const { fans } = this.props;
|
|
70
|
+
if (isDefined(override)) {
|
|
71
|
+
const { index } = override, rest = __rest(override, ["index"]);
|
|
72
|
+
const newfans = fans.map((each, idx) => (idx === index ? Object.assign(Object.assign(Object.assign({}, each), rest), { selected: true }) : each));
|
|
73
|
+
this.setState({
|
|
74
|
+
override: null,
|
|
75
|
+
}, () => {
|
|
76
|
+
this.props.onComplete(e, newfans, moreProps);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
this.handleDragFan = (_, index, newXYValue) => {
|
|
81
|
+
this.setState({
|
|
82
|
+
override: Object.assign({ index }, newXYValue),
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
this.terminate = terminate.bind(this);
|
|
86
|
+
this.saveNodeType = saveNodeType.bind(this);
|
|
87
|
+
this.getSelectionState = isHoverForInteractiveType("fans").bind(this);
|
|
88
|
+
this.state = {};
|
|
89
|
+
}
|
|
90
|
+
render() {
|
|
91
|
+
const { appearance, currentPositionOpacity, currentPositionRadius = GannFan.defaultProps.currentPositionRadius, currentPositionStroke, currentPositionStrokeWidth, enabled, fans, hoverText, } = this.props;
|
|
92
|
+
const { current, override } = this.state;
|
|
93
|
+
const overrideIndex = isDefined(override) ? override.index : null;
|
|
94
|
+
const tempChannel = isDefined(current) && isDefined(current.endXY) ? (React.createElement(EachGannFan, Object.assign({ interactive: false }, current, { appearance: appearance, hoverText: hoverText }))) : null;
|
|
95
|
+
return (React.createElement("g", null,
|
|
96
|
+
fans.map((each, idx) => {
|
|
97
|
+
const eachAppearance = isDefined(each.appearance)
|
|
98
|
+
? Object.assign(Object.assign({}, appearance), each.appearance) : appearance;
|
|
99
|
+
return (React.createElement(EachGannFan, Object.assign({ key: idx, ref: this.saveNodeType(idx), index: idx, selected: each.selected }, (idx === overrideIndex ? override : each), { appearance: eachAppearance, hoverText: hoverText, onDrag: this.handleDragFan, onDragComplete: this.handleDragFanComplete })));
|
|
100
|
+
}),
|
|
101
|
+
tempChannel,
|
|
102
|
+
React.createElement(MouseLocationIndicator, { enabled: enabled, snap: false, r: currentPositionRadius, stroke: currentPositionStroke, opacity: currentPositionOpacity, strokeWidth: currentPositionStrokeWidth, onMouseDown: this.handleStart, onClick: this.handleEnd, onMouseMove: this.handleDrawFan })));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
GannFan.defaultProps = {
|
|
106
|
+
appearance: {
|
|
107
|
+
stroke: "#000000",
|
|
108
|
+
fillOpacity: 0.2,
|
|
109
|
+
strokeOpacity: 1,
|
|
110
|
+
strokeWidth: 1,
|
|
111
|
+
edgeStroke: "#000000",
|
|
112
|
+
edgeFill: "#FFFFFF",
|
|
113
|
+
edgeStrokeWidth: 1,
|
|
114
|
+
r: 5,
|
|
115
|
+
fill: ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf"],
|
|
116
|
+
fontFamily: "-apple-system, system-ui, Roboto, 'Helvetica Neue', Ubuntu, sans-serif",
|
|
117
|
+
fontSize: 12,
|
|
118
|
+
fontFill: "#000000",
|
|
119
|
+
},
|
|
120
|
+
onSelect: noop,
|
|
121
|
+
currentPositionStroke: "#000000",
|
|
122
|
+
currentPositionOpacity: 1,
|
|
123
|
+
currentPositionStrokeWidth: 3,
|
|
124
|
+
currentPositionRadius: 4,
|
|
125
|
+
hoverText: Object.assign(Object.assign({}, HoverTextNearMouse.defaultProps), { enable: true, bgHeight: 18, bgWidth: 120, text: "Click to select object" }),
|
|
126
|
+
fans: [],
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=GannFan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GannFan.js","sourceRoot":"","sources":["../src/GannFan.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAkCxC,MAAM,OAAO,OAAQ,SAAQ,KAAK,CAAC,SAAqC;IAuCpE,YAAmB,KAAmB;QAClC,KAAK,CAAC,KAAK,CAAC,CAAC;QAmEA,cAAS,GAAG,CAAC,CAAmB,EAAE,CAAM,EAAE,SAAc,EAAE,EAAE;YACzE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAC/B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAExC,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACrE,MAAM,OAAO,GAAG;oBACZ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCAAM,CAAC,KAAE,QAAQ,EAAE,KAAK,IAAG,CAAC;oDAC1C,OAAO,KAAE,QAAQ,EAAE,IAAI,EAAE,UAAU;iBAC3C,CAAC;gBACF,IAAI,CAAC,QAAQ,CACT;oBACI,OAAO,EAAE,IAAI;iBAChB,EACD,GAAG,EAAE;oBACD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;oBAClC,IAAI,UAAU,KAAK,SAAS,EAAE;wBAC1B,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;qBACrC;gBACL,CAAC,CACJ,CAAC;aACL;QACL,CAAC,CAAC;QAEe,gBAAW,GAAG,CAAC,CAAmB,EAAE,OAAY,EAAE,EAAE;YACjE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAE/B,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACxD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBAExB,IAAI,CAAC,QAAQ,CACT;oBACI,OAAO,EAAE;wBACL,OAAO,EAAE,OAAO;wBAChB,KAAK,EAAE,IAAI;qBACd;iBACJ,EACD,GAAG,EAAE;oBACD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC/B,IAAI,OAAO,KAAK,SAAS,EAAE;wBACvB,OAAO,EAAE,CAAC;qBACb;gBACL,CAAC,CACJ,CAAC;aACL;QACL,CAAC,CAAC;QAEe,kBAAa,GAAG,CAAC,CAAmB,EAAE,OAAY,EAAE,EAAE;YACnE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAE/B,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBAEvB,IAAI,CAAC,QAAQ,CAAC;oBACV,OAAO,EAAE;wBACL,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,KAAK,EAAE,OAAO;qBACjB;iBACJ,CAAC,CAAC;aACN;QACL,CAAC,CAAC;QAEe,0BAAqB,GAAG,CAAC,CAAmB,EAAE,SAAc,EAAE,EAAE;YAC7E,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAChC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAE5B,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACrB,MAAM,EAAE,KAAK,KAAc,QAAQ,EAAjB,IAAI,UAAK,QAAQ,EAA7B,SAAkB,CAAW,CAAC;gBACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,+CAAM,IAAI,GAAK,IAAI,KAAE,QAAQ,EAAE,IAAI,IAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvG,IAAI,CAAC,QAAQ,CACT;oBACI,QAAQ,EAAE,IAAI;iBACjB,EACD,GAAG,EAAE;oBACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;gBACjD,CAAC,CACJ,CAAC;aACL;QACL,CAAC,CAAC;QAEe,kBAAa,GAAG,CAAC,CAAmB,EAAE,KAAyB,EAAE,UAAe,EAAE,EAAE;YACjG,IAAI,CAAC,QAAQ,CAAC;gBACV,QAAQ,kBACJ,KAAK,IACF,UAAU,CAChB;aACJ,CAAC,CAAC;QACP,CAAC,CAAC;QAvJE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,iBAAiB,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IACpB,CAAC;IAEM,MAAM;QACT,MAAM,EACF,UAAU,EACV,sBAAsB,EACtB,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,qBAAqB,EAClE,qBAAqB,EACrB,0BAA0B,EAC1B,OAAO,EACP,IAAI,EACJ,SAAS,GACZ,GAAG,IAAI,CAAC,KAAK,CAAC;QAEf,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACzC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAElE,MAAM,WAAW,GACb,SAAS,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC7C,oBAAC,WAAW,kBAAC,WAAW,EAAE,KAAK,IAAM,OAAO,IAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,IAAI,CACjG,CAAC,CAAC,CAAC,IAAI,CAAC;QAEb,OAAO,CACH;YACK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;gBACpB,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;oBAC7C,CAAC,iCAAM,UAAU,GAAK,IAAI,CAAC,UAAU,EACrC,CAAC,CAAC,UAAU,CAAC;gBAEjB,OAAO,CACH,oBAAC,WAAW,kBACR,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAC3B,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,IAAI,CAAC,QAAQ,IACnB,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAC7C,UAAU,EAAE,cAAc,EAC1B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,IAAI,CAAC,aAAa,EAC1B,cAAc,EAAE,IAAI,CAAC,qBAAqB,IAC5C,CACL,CAAC;YACN,CAAC,CAAC;YACD,WAAW;YACZ,oBAAC,sBAAsB,IACnB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,EACX,CAAC,EAAE,qBAAqB,EACxB,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,0BAA0B,EACvC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,OAAO,EAAE,IAAI,CAAC,SAAS,EACvB,WAAW,EAAE,IAAI,CAAC,aAAa,GACjC,CACF,CACP,CAAC;IACN,CAAC;;AAxGa,oBAAY,GAAG;IACzB,UAAU,EAAE;QACR,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,SAAS;QACnB,eAAe,EAAE,CAAC;QAClB,CAAC,EAAE,CAAC;QACJ,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;QAC9F,UAAU,EAAE,wEAAwE;QACpF,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,SAAS;KACtB;IACD,QAAQ,EAAE,IAAI;IACd,qBAAqB,EAAE,SAAS;IAChC,sBAAsB,EAAE,CAAC;IACzB,0BAA0B,EAAE,CAAC;IAC7B,qBAAqB,EAAE,CAAC;IACxB,SAAS,kCACF,kBAAkB,CAAC,YAAY,KAClC,MAAM,EAAE,IAAI,EACZ,QAAQ,EAAE,EAAE,EACZ,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,wBAAwB,GACjC;IACD,IAAI,EAAE,EAAE;CACX,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface InteractiveTextProps {
|
|
3
|
+
readonly onChoosePosition: (e: React.MouseEvent, newText: any, moreProps: any) => void;
|
|
4
|
+
readonly onDragComplete?: (e: React.MouseEvent, newTextList: any[], moreProps: any) => void;
|
|
5
|
+
readonly onSelect?: (e: React.MouseEvent, interactives: any[], moreProps: any) => void;
|
|
6
|
+
readonly onDoubleClick?: (e: React.MouseEvent, moreProps: any) => void;
|
|
7
|
+
readonly defaultText: {
|
|
8
|
+
readonly bgFill: string;
|
|
9
|
+
readonly bgOpacity: number;
|
|
10
|
+
readonly bgStrokeWidth?: number;
|
|
11
|
+
readonly bgStroke?: string;
|
|
12
|
+
readonly textFill: string;
|
|
13
|
+
readonly fontFamily: string;
|
|
14
|
+
readonly fontWeight: string;
|
|
15
|
+
readonly fontStyle: string;
|
|
16
|
+
readonly fontSize: number;
|
|
17
|
+
readonly text: string;
|
|
18
|
+
};
|
|
19
|
+
readonly hoverText: object;
|
|
20
|
+
readonly textList: any[];
|
|
21
|
+
readonly enabled: boolean;
|
|
22
|
+
}
|
|
23
|
+
interface InteractiveTextState {
|
|
24
|
+
current?: any;
|
|
25
|
+
override?: any;
|
|
26
|
+
}
|
|
27
|
+
export declare class InteractiveText extends React.Component<InteractiveTextProps, InteractiveTextState> {
|
|
28
|
+
static defaultProps: {
|
|
29
|
+
onSelect: () => void;
|
|
30
|
+
defaultText: {
|
|
31
|
+
bgFill: string;
|
|
32
|
+
bgOpacity: number;
|
|
33
|
+
bgStrokeWidth: number;
|
|
34
|
+
textFill: string;
|
|
35
|
+
fontFamily: string;
|
|
36
|
+
fontSize: number;
|
|
37
|
+
fontStyle: string;
|
|
38
|
+
fontWeight: string;
|
|
39
|
+
text: string;
|
|
40
|
+
};
|
|
41
|
+
hoverText: {
|
|
42
|
+
enable: boolean;
|
|
43
|
+
bgHeight: string;
|
|
44
|
+
bgWidth: string;
|
|
45
|
+
text: string;
|
|
46
|
+
selectedText: string;
|
|
47
|
+
fontFamily: string;
|
|
48
|
+
fontSize: number;
|
|
49
|
+
fill: string;
|
|
50
|
+
bgFill: string;
|
|
51
|
+
bgOpacity: number;
|
|
52
|
+
};
|
|
53
|
+
textList: never[];
|
|
54
|
+
};
|
|
55
|
+
static contextType: React.Context<import("@tradingaction/core").ChartContextType>;
|
|
56
|
+
private getSelectionState;
|
|
57
|
+
private saveNodeType;
|
|
58
|
+
private terminate;
|
|
59
|
+
constructor(props: InteractiveTextProps);
|
|
60
|
+
render(): JSX.Element;
|
|
61
|
+
private readonly handleDraw;
|
|
62
|
+
private readonly handleDragComplete;
|
|
63
|
+
private readonly handleDrag;
|
|
64
|
+
}
|
|
65
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ChartContext, GenericChartComponent, getMouseCanvas, isDefined, noop } from "@tradingaction/core";
|
|
3
|
+
import { HoverTextNearMouse } from "./components";
|
|
4
|
+
import { getValueFromOverride, isHoverForInteractiveType, saveNodeType, terminate } from "./utils";
|
|
5
|
+
import { EachText } from "./wrapper";
|
|
6
|
+
export class InteractiveText extends React.Component {
|
|
7
|
+
constructor(props) {
|
|
8
|
+
super(props);
|
|
9
|
+
this.handleDraw = (e, moreProps) => {
|
|
10
|
+
const { enabled } = this.props;
|
|
11
|
+
if (enabled) {
|
|
12
|
+
const { mouseXY: [, mouseY], chartConfig: { yScale }, xAccessor, currentItem, } = moreProps;
|
|
13
|
+
const { defaultText, onChoosePosition } = this.props;
|
|
14
|
+
if (onChoosePosition !== undefined) {
|
|
15
|
+
const xyValue = [xAccessor(currentItem), yScale.invert(mouseY)];
|
|
16
|
+
const newText = Object.assign(Object.assign({}, defaultText), { position: xyValue });
|
|
17
|
+
onChoosePosition(e, newText, moreProps);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
this.handleDragComplete = (e, moreProps) => {
|
|
22
|
+
const { override } = this.state;
|
|
23
|
+
if (isDefined(override)) {
|
|
24
|
+
const { textList } = this.props;
|
|
25
|
+
const newTextList = textList.map((each, idx) => {
|
|
26
|
+
const selected = idx === override.index;
|
|
27
|
+
return selected
|
|
28
|
+
? Object.assign(Object.assign({}, each), { position: override.position, selected }) : Object.assign(Object.assign({}, each), { selected });
|
|
29
|
+
});
|
|
30
|
+
this.setState({
|
|
31
|
+
override: null,
|
|
32
|
+
}, () => {
|
|
33
|
+
const { onDragComplete } = this.props;
|
|
34
|
+
if (onDragComplete !== undefined) {
|
|
35
|
+
onDragComplete(e, newTextList, moreProps);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
this.handleDrag = (_, index, position) => {
|
|
41
|
+
this.setState({
|
|
42
|
+
override: {
|
|
43
|
+
index,
|
|
44
|
+
position,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
this.terminate = terminate.bind(this);
|
|
49
|
+
this.saveNodeType = saveNodeType.bind(this);
|
|
50
|
+
this.getSelectionState = isHoverForInteractiveType("textList").bind(this);
|
|
51
|
+
this.state = {};
|
|
52
|
+
}
|
|
53
|
+
render() {
|
|
54
|
+
const { textList, defaultText, hoverText, onDoubleClick } = this.props;
|
|
55
|
+
const { override } = this.state;
|
|
56
|
+
return (React.createElement("g", null,
|
|
57
|
+
textList.map((each, idx) => {
|
|
58
|
+
const defaultHoverText = InteractiveText.defaultProps.hoverText;
|
|
59
|
+
const props = Object.assign(Object.assign(Object.assign({}, defaultText), each), { hoverText: Object.assign(Object.assign(Object.assign({}, defaultHoverText), hoverText), (each.hoverText || {})), onDoubleClick });
|
|
60
|
+
return (React.createElement(EachText, Object.assign({ key: idx, ref: this.saveNodeType(idx), index: idx }, props, { selected: each.selected, position: getValueFromOverride(override, idx, "position", each.position), onDrag: this.handleDrag, onDragComplete: this.handleDragComplete, edgeInteractiveCursor: "react-financial-charts-move-cursor", onDoubleClick: props.onDoubleClick })));
|
|
61
|
+
}),
|
|
62
|
+
React.createElement(GenericChartComponent, { onClick: this.handleDraw, canvasToDraw: getMouseCanvas, drawOn: ["mousemove", "pan"] }),
|
|
63
|
+
";"));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
InteractiveText.defaultProps = {
|
|
67
|
+
onSelect: noop,
|
|
68
|
+
defaultText: {
|
|
69
|
+
bgFill: "#D3D3D3",
|
|
70
|
+
bgOpacity: 1,
|
|
71
|
+
bgStrokeWidth: 1,
|
|
72
|
+
textFill: "#F10040",
|
|
73
|
+
fontFamily: "-apple-system, system-ui, Roboto, 'Helvetica Neue', Ubuntu, sans-serif",
|
|
74
|
+
fontSize: 12,
|
|
75
|
+
fontStyle: "normal",
|
|
76
|
+
fontWeight: "normal",
|
|
77
|
+
text: "Lorem ipsum...",
|
|
78
|
+
},
|
|
79
|
+
hoverText: Object.assign(Object.assign({}, HoverTextNearMouse.defaultProps), { enable: true, bgHeight: "auto", bgWidth: "auto", text: "Click to select object", selectedText: "" }),
|
|
80
|
+
textList: [],
|
|
81
|
+
};
|
|
82
|
+
InteractiveText.contextType = ChartContext;
|
|
83
|
+
//# sourceMappingURL=InteractiveText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractiveText.js","sourceRoot":"","sources":["../src/InteractiveText.tsx"],"names":[],"mappings":"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"}
|