@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.
Files changed (135) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +5 -0
  3. package/lib/Brush.d.ts +35 -0
  4. package/lib/Brush.js +103 -0
  5. package/lib/Brush.js.map +1 -0
  6. package/lib/ClickCallback.d.ts +18 -0
  7. package/lib/ClickCallback.js +12 -0
  8. package/lib/ClickCallback.js.map +1 -0
  9. package/lib/DrawingObjectSelector.d.ts +18 -0
  10. package/lib/DrawingObjectSelector.js +73 -0
  11. package/lib/DrawingObjectSelector.js.map +1 -0
  12. package/lib/EquidistantChannel.d.ts +74 -0
  13. package/lib/EquidistantChannel.js +149 -0
  14. package/lib/EquidistantChannel.js.map +1 -0
  15. package/lib/FibonacciRetracement.d.ts +89 -0
  16. package/lib/FibonacciRetracement.js +184 -0
  17. package/lib/FibonacciRetracement.js.map +1 -0
  18. package/lib/GannFan.d.ts +78 -0
  19. package/lib/GannFan.js +128 -0
  20. package/lib/GannFan.js.map +1 -0
  21. package/lib/InteractiveText.d.ts +65 -0
  22. package/lib/InteractiveText.js +83 -0
  23. package/lib/InteractiveText.js.map +1 -0
  24. package/lib/InteractiveYCoordinate.d.ts +122 -0
  25. package/lib/InteractiveYCoordinate.js +100 -0
  26. package/lib/InteractiveYCoordinate.js.map +1 -0
  27. package/lib/StandardDeviationChannel.d.ts +74 -0
  28. package/lib/StandardDeviationChannel.js +125 -0
  29. package/lib/StandardDeviationChannel.js.map +1 -0
  30. package/lib/TrendLine.d.ts +84 -0
  31. package/lib/TrendLine.js +128 -0
  32. package/lib/TrendLine.js.map +1 -0
  33. package/lib/ZoomButtons.d.ts +30 -0
  34. package/lib/ZoomButtons.js +78 -0
  35. package/lib/ZoomButtons.js.map +1 -0
  36. package/lib/components/ChannelWithArea.d.ts +30 -0
  37. package/lib/components/ChannelWithArea.js +126 -0
  38. package/lib/components/ChannelWithArea.js.map +1 -0
  39. package/lib/components/ClickableCircle.d.ts +26 -0
  40. package/lib/components/ClickableCircle.js +48 -0
  41. package/lib/components/ClickableCircle.js.map +1 -0
  42. package/lib/components/ClickableShape.d.ts +33 -0
  43. package/lib/components/ClickableShape.js +64 -0
  44. package/lib/components/ClickableShape.js.map +1 -0
  45. package/lib/components/GannFan.d.ts +32 -0
  46. package/lib/components/GannFan.js +134 -0
  47. package/lib/components/GannFan.js.map +1 -0
  48. package/lib/components/HoverTextNearMouse.d.ts +35 -0
  49. package/lib/components/HoverTextNearMouse.js +113 -0
  50. package/lib/components/HoverTextNearMouse.js.map +1 -0
  51. package/lib/components/InteractiveStraightLine.d.ts +61 -0
  52. package/lib/components/InteractiveStraightLine.js +220 -0
  53. package/lib/components/InteractiveStraightLine.js.map +1 -0
  54. package/lib/components/InteractiveText.d.ts +38 -0
  55. package/lib/components/InteractiveText.js +84 -0
  56. package/lib/components/InteractiveText.js.map +1 -0
  57. package/lib/components/InteractiveYCoordinate.d.ts +46 -0
  58. package/lib/components/InteractiveYCoordinate.js +109 -0
  59. package/lib/components/InteractiveYCoordinate.js.map +1 -0
  60. package/lib/components/LinearRegressionChannelWithArea.d.ts +31 -0
  61. package/lib/components/LinearRegressionChannelWithArea.js +104 -0
  62. package/lib/components/LinearRegressionChannelWithArea.js.map +1 -0
  63. package/lib/components/MouseLocationIndicator.d.ts +34 -0
  64. package/lib/components/MouseLocationIndicator.js +79 -0
  65. package/lib/components/MouseLocationIndicator.js.map +1 -0
  66. package/lib/components/Text.d.ts +17 -0
  67. package/lib/components/Text.js +26 -0
  68. package/lib/components/Text.js.map +1 -0
  69. package/lib/components/index.d.ts +11 -0
  70. package/lib/components/index.js +12 -0
  71. package/lib/components/index.js.map +1 -0
  72. package/lib/index.d.ts +12 -0
  73. package/lib/index.js +13 -0
  74. package/lib/index.js.map +1 -0
  75. package/lib/utils.d.ts +7 -0
  76. package/lib/utils.js +84 -0
  77. package/lib/utils.js.map +1 -0
  78. package/lib/wrapper/EachEquidistantChannel.d.ts +59 -0
  79. package/lib/wrapper/EachEquidistantChannel.js +172 -0
  80. package/lib/wrapper/EachEquidistantChannel.js.map +1 -0
  81. package/lib/wrapper/EachFibRetracement.d.ts +81 -0
  82. package/lib/wrapper/EachFibRetracement.js +202 -0
  83. package/lib/wrapper/EachFibRetracement.js.map +1 -0
  84. package/lib/wrapper/EachGannFan.d.ts +81 -0
  85. package/lib/wrapper/EachGannFan.js +161 -0
  86. package/lib/wrapper/EachGannFan.js.map +1 -0
  87. package/lib/wrapper/EachInteractiveYCoordinate.d.ts +50 -0
  88. package/lib/wrapper/EachInteractiveYCoordinate.js +80 -0
  89. package/lib/wrapper/EachInteractiveYCoordinate.js.map +1 -0
  90. package/lib/wrapper/EachLinearRegressionChannel.d.ts +75 -0
  91. package/lib/wrapper/EachLinearRegressionChannel.js +89 -0
  92. package/lib/wrapper/EachLinearRegressionChannel.js.map +1 -0
  93. package/lib/wrapper/EachText.d.ts +59 -0
  94. package/lib/wrapper/EachText.js +83 -0
  95. package/lib/wrapper/EachText.js.map +1 -0
  96. package/lib/wrapper/EachTrendLine.d.ts +85 -0
  97. package/lib/wrapper/EachTrendLine.js +165 -0
  98. package/lib/wrapper/EachTrendLine.js.map +1 -0
  99. package/lib/wrapper/index.d.ts +7 -0
  100. package/lib/wrapper/index.js +8 -0
  101. package/lib/wrapper/index.js.map +1 -0
  102. package/package.json +53 -0
  103. package/src/Brush.tsx +172 -0
  104. package/src/ClickCallback.tsx +37 -0
  105. package/src/DrawingObjectSelector.tsx +97 -0
  106. package/src/EquidistantChannel.tsx +268 -0
  107. package/src/FibonacciRetracement.tsx +328 -0
  108. package/src/GannFan.tsx +233 -0
  109. package/src/InteractiveText.tsx +182 -0
  110. package/src/InteractiveYCoordinate.tsx +199 -0
  111. package/src/StandardDeviationChannel.tsx +269 -0
  112. package/src/TrendLine.tsx +294 -0
  113. package/src/ZoomButtons.tsx +165 -0
  114. package/src/components/ChannelWithArea.tsx +199 -0
  115. package/src/components/ClickableCircle.tsx +91 -0
  116. package/src/components/ClickableShape.tsx +114 -0
  117. package/src/components/GannFan.tsx +189 -0
  118. package/src/components/HoverTextNearMouse.tsx +174 -0
  119. package/src/components/InteractiveStraightLine.tsx +335 -0
  120. package/src/components/InteractiveText.tsx +146 -0
  121. package/src/components/InteractiveYCoordinate.tsx +200 -0
  122. package/src/components/LinearRegressionChannelWithArea.tsx +169 -0
  123. package/src/components/MouseLocationIndicator.tsx +128 -0
  124. package/src/components/Text.tsx +47 -0
  125. package/src/components/index.ts +11 -0
  126. package/src/index.ts +12 -0
  127. package/src/utils.ts +101 -0
  128. package/src/wrapper/EachEquidistantChannel.tsx +302 -0
  129. package/src/wrapper/EachFibRetracement.tsx +359 -0
  130. package/src/wrapper/EachGannFan.tsx +289 -0
  131. package/src/wrapper/EachInteractiveYCoordinate.tsx +198 -0
  132. package/src/wrapper/EachLinearRegressionChannel.tsx +202 -0
  133. package/src/wrapper/EachText.tsx +190 -0
  134. package/src/wrapper/EachTrendLine.tsx +331 -0
  135. 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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"}
@@ -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":"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"}
@@ -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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"}