@spider-analyzer/timeline 4.0.3 → 5.0.0
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/CHANGELOG.md +70 -1
- package/README.md +275 -637
- package/dist/index.d.mts +132 -0
- package/dist/index.d.ts +132 -0
- package/dist/index.js +2913 -22
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2906 -0
- package/dist/index.mjs.map +1 -0
- package/dist/timeline-EX2XZ6IP.css +139 -0
- package/package.json +48 -15
- package/src/Cursor.jsx +5 -13
- package/src/TimeLine.tsx +994 -0
- package/src/TimeLineResizer.jsx +2 -8
- package/src/ToolTip.jsx +7 -7
- package/src/cursorElements/CursorIcon.jsx +6 -29
- package/src/cursorElements/CursorSelection.jsx +4 -19
- package/src/cursorElements/DragOverlay.jsx +2 -12
- package/src/cursorElements/LeftHandle.jsx +3 -19
- package/src/cursorElements/LeftToolTip.jsx +2 -7
- package/src/cursorElements/RightHandle.jsx +3 -19
- package/src/cursorElements/RightToolTip.jsx +4 -13
- package/src/cursorElements/ZoomIn.jsx +5 -25
- package/src/cursorElements/ZoomOut.jsx +4 -21
- package/src/cursorElements/utils.js +1 -1
- package/src/index.js +6 -0
- package/src/index.ts +158 -0
- package/src/moment-shim.ts +169 -0
- package/src/styles.ts +15 -0
- package/src/time.ts +52 -0
- package/src/timeLineElements/Button.jsx +5 -30
- package/src/timeLineElements/HistoToolTip.jsx +3 -17
- package/src/timeLineElements/Histogram.jsx +4 -16
- package/src/timeLineElements/Legend.jsx +2 -16
- package/src/timeLineElements/QualityLine.jsx +4 -11
- package/src/timeLineElements/Tools.jsx +1 -1
- package/src/timeLineElements/XAxis.jsx +5 -8
- package/src/timeLineElements/XGrid.jsx +3 -7
- package/src/timeLineElements/YAxis.jsx +4 -7
- package/src/timeLineElements/YGrid.jsx +2 -6
- package/src/timeLineElements/axesStyles.jsx +0 -49
- package/src/timeline.css +139 -0
- package/src/utils.ts +60 -0
- package/.babelrc +0 -8
- package/.gitlab-ci.yml +0 -27
- package/Makefile +0 -20
- package/dist/Cursor.js +0 -290
- package/dist/TimeLine.js +0 -1177
- package/dist/TimeLineResizer.js +0 -70
- package/dist/ToolTip.js +0 -43
- package/dist/cursorElements/CursorIcon.js +0 -98
- package/dist/cursorElements/CursorSelection.js +0 -179
- package/dist/cursorElements/DragOverlay.js +0 -168
- package/dist/cursorElements/LeftHandle.js +0 -95
- package/dist/cursorElements/LeftToolTip.js +0 -70
- package/dist/cursorElements/RightHandle.js +0 -95
- package/dist/cursorElements/RightToolTip.js +0 -75
- package/dist/cursorElements/ZoomIn.js +0 -93
- package/dist/cursorElements/ZoomOut.js +0 -67
- package/dist/cursorElements/commonStyles.js +0 -28
- package/dist/cursorElements/handleHistoHovering.js +0 -79
- package/dist/cursorElements/utils.js +0 -30
- package/dist/theme.js +0 -59
- package/dist/timeLineElements/Button.js +0 -101
- package/dist/timeLineElements/HistoToolTip.js +0 -78
- package/dist/timeLineElements/Histogram.js +0 -110
- package/dist/timeLineElements/Legend.js +0 -70
- package/dist/timeLineElements/QualityLine.js +0 -81
- package/dist/timeLineElements/Tools.js +0 -115
- package/dist/timeLineElements/XAxis.js +0 -76
- package/dist/timeLineElements/XGrid.js +0 -47
- package/dist/timeLineElements/YAxis.js +0 -60
- package/dist/timeLineElements/YGrid.js +0 -46
- package/dist/timeLineElements/axesStyles.js +0 -57
- package/src/TimeLine.jsx +0 -1163
- package/src/cursorElements/commonStyles.js +0 -21
- /package/dist/{tipDark.css → tipDark-BQEJ43KY.css} +0 -0
package/src/timeline.css
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* @spider-analyzer/timeline — default stylesheet.
|
|
2
|
+
*
|
|
3
|
+
* Every rule is keyed on a `tl-<slot>` class. Consumers override by
|
|
4
|
+
* passing `classes={{ <slot>: 'my-class' }}` — the component emits
|
|
5
|
+
* `tl-<slot> my-class` together, so any CSS in `.my-class` wins via
|
|
6
|
+
* normal specificity / source order.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/* Layout */
|
|
10
|
+
.tl-timelineContainer { width: 100%; height: 100%; }
|
|
11
|
+
|
|
12
|
+
/* Axes / grid */
|
|
13
|
+
.tl-axis { fill: none; stroke: #b4b4b4; stroke-width: 1; }
|
|
14
|
+
.tl-arrow { fill: #b4b4b4; fill-opacity: 1; stroke: #b4b4b4; stroke-width: 1; }
|
|
15
|
+
.tl-now { fill: #545454; stroke: #545454; stroke-width: 1; }
|
|
16
|
+
.tl-grid { stroke: #ececec; stroke-width: 1; }
|
|
17
|
+
.tl-limitMarker { stroke: #b4b4b4; stroke-width: 1; }
|
|
18
|
+
.tl-timeAxisText {
|
|
19
|
+
font-size: 10px;
|
|
20
|
+
font-family: Roboto, sans-serif;
|
|
21
|
+
fill: #b4b4b4;
|
|
22
|
+
text-align: center;
|
|
23
|
+
text-anchor: middle;
|
|
24
|
+
user-select: none;
|
|
25
|
+
}
|
|
26
|
+
.tl-timeAxisDaysText { fill: #545454; }
|
|
27
|
+
.tl-verticalAxisText {
|
|
28
|
+
font-size: 10px;
|
|
29
|
+
font-family: Roboto, sans-serif;
|
|
30
|
+
fill: #b4b4b4;
|
|
31
|
+
text-align: end;
|
|
32
|
+
text-anchor: end;
|
|
33
|
+
user-select: none;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Legend */
|
|
37
|
+
.tl-legend {
|
|
38
|
+
font-size: 12.5px;
|
|
39
|
+
line-height: 125%;
|
|
40
|
+
font-family: Roboto, sans-serif;
|
|
41
|
+
fill-opacity: 1;
|
|
42
|
+
stroke: none;
|
|
43
|
+
text-align: end;
|
|
44
|
+
text-anchor: end;
|
|
45
|
+
user-select: none;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Histogram */
|
|
49
|
+
.tl-histoItem { fill-opacity: 1; stroke-width: 1; }
|
|
50
|
+
.tl-histoHovered { stroke-width: 0; fill: #000000; fill-opacity: 0.3; }
|
|
51
|
+
|
|
52
|
+
/* Histo tooltip */
|
|
53
|
+
.tl-innerTipMetrics { margin-top: 4px; }
|
|
54
|
+
.tl-innerTipLeft { margin-right: 4px; display: inline-block; }
|
|
55
|
+
.tl-innerTipRight { display: inline-block; float: right; }
|
|
56
|
+
|
|
57
|
+
/* Quality line */
|
|
58
|
+
.tl-qualityCell { stroke-width: 0; }
|
|
59
|
+
|
|
60
|
+
/* Buttons */
|
|
61
|
+
.tl-buttonGroup { cursor: pointer; }
|
|
62
|
+
.tl-buttonGroupInactive { cursor: not-allowed; }
|
|
63
|
+
.tl-buttonOverShape { fill: transparent; }
|
|
64
|
+
.tl-buttonIcon {
|
|
65
|
+
fill: #b4b4b4; fill-opacity: 1;
|
|
66
|
+
stroke: #b4b4b4; stroke-width: 1; stroke-opacity: 1;
|
|
67
|
+
}
|
|
68
|
+
.tl-buttonIconOver { fill: #ff8080; stroke: #ff8080; }
|
|
69
|
+
|
|
70
|
+
/* Cursor selection */
|
|
71
|
+
.tl-cursorArea {
|
|
72
|
+
fill: #00BCD4;
|
|
73
|
+
fill-opacity: 0.2;
|
|
74
|
+
stroke: #00BCD4;
|
|
75
|
+
stroke-width: 1px;
|
|
76
|
+
stroke-linecap: butt;
|
|
77
|
+
stroke-linejoin: miter;
|
|
78
|
+
stroke-opacity: 1;
|
|
79
|
+
cursor: move;
|
|
80
|
+
transition: fill 0.5s, stroke 0.5s;
|
|
81
|
+
}
|
|
82
|
+
.tl-cursorArea.tl--maxSize { stroke: #00899f; }
|
|
83
|
+
|
|
84
|
+
/* Cursor handles */
|
|
85
|
+
.tl-cursorLeftHandle, .tl-cursorRightHandle {
|
|
86
|
+
fill-opacity: 1;
|
|
87
|
+
stroke-width: 1px;
|
|
88
|
+
transition: r 0.5s;
|
|
89
|
+
r: 4;
|
|
90
|
+
fill: #ffffff;
|
|
91
|
+
stroke: #00BCD4;
|
|
92
|
+
cursor: ew-resize;
|
|
93
|
+
}
|
|
94
|
+
.tl-cursorLeftHandle:hover, .tl-cursorRightHandle:hover { r: 8; }
|
|
95
|
+
.tl-cursorLeftHandle.tl--maxSize { cursor: e-resize; }
|
|
96
|
+
.tl-cursorRightHandle.tl--maxSize { cursor: w-resize; }
|
|
97
|
+
.tl-cursorLeftHandle.tl--outOfView,
|
|
98
|
+
.tl-cursorRightHandle.tl--outOfView {
|
|
99
|
+
fill: #ececec;
|
|
100
|
+
stroke: #b4b4b4;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* Drag overlay */
|
|
104
|
+
.tl-dragOverlay { fill: transparent; fill-opacity: 1; stroke: none; cursor: crosshair; }
|
|
105
|
+
|
|
106
|
+
/* Cursor icon (offscreen indicator) */
|
|
107
|
+
.tl-cursorIconRect { fill: #00bcd4; fill-opacity: 0.25; stroke: #00bcd4; stroke-width: 0.42; }
|
|
108
|
+
.tl-cursorIconCircle { fill: #ffffff; stroke: #00bcd4; stroke-width: 0.52; }
|
|
109
|
+
.tl-cursorIconRectOver { fill: #ff8080; stroke: #e7594f; }
|
|
110
|
+
.tl-cursorIconCircleOver { stroke: #e7594f; }
|
|
111
|
+
|
|
112
|
+
/* Zoom buttons */
|
|
113
|
+
.tl-zoomIn { fill: #00BCD4; fill-opacity: 1; stroke: none; }
|
|
114
|
+
.tl-zoomOut { fill: #ff816b; fill-opacity: 1; stroke: none; }
|
|
115
|
+
.tl-zoomArea { fill: transparent; fill-opacity: 1; stroke: none; }
|
|
116
|
+
.tl-zoomInContainer {
|
|
117
|
+
opacity: 0;
|
|
118
|
+
visibility: hidden;
|
|
119
|
+
transition: opacity 0.5s, visibility 0.5s;
|
|
120
|
+
cursor: pointer;
|
|
121
|
+
}
|
|
122
|
+
.tl-zoomOutContainer { cursor: pointer; }
|
|
123
|
+
|
|
124
|
+
/* Tooltips (cursor start/stop) */
|
|
125
|
+
.tl-toolTipArea { opacity: 0; visibility: hidden; transition: opacity 0.25s, visibility 0.25s; }
|
|
126
|
+
.tl-toolTip {
|
|
127
|
+
fill: #1a1a1a;
|
|
128
|
+
fill-opacity: 0.80;
|
|
129
|
+
stroke: #ffffff;
|
|
130
|
+
stroke-opacity: 1;
|
|
131
|
+
stroke-width: 0.1;
|
|
132
|
+
stroke-miterlimit: 1.3;
|
|
133
|
+
}
|
|
134
|
+
.tl-toolTipText {
|
|
135
|
+
font-size: 12.5px;
|
|
136
|
+
font-family: Roboto, sans-serif;
|
|
137
|
+
fill: #ffffff;
|
|
138
|
+
}
|
|
139
|
+
.tl-toolTipTextRight { text-align: end; text-anchor: end; }
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tiny local replacements for the lodash-es helpers the library used.
|
|
3
|
+
* Keeping them in a single file lets us drop lodash-es entirely.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export const max = (arr: number[] | undefined): number | undefined =>
|
|
7
|
+
arr && arr.length ? Math.max(...arr) : undefined;
|
|
8
|
+
|
|
9
|
+
export const sum = (arr: number[] | undefined): number =>
|
|
10
|
+
arr ? arr.reduce((acc, v) => acc + v, 0) : 0;
|
|
11
|
+
|
|
12
|
+
export const floor = (n: number, precision = 0): number => {
|
|
13
|
+
const p = Math.pow(10, precision);
|
|
14
|
+
return Math.floor(n * p) / p;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const round = (n: number, precision = 0): number => {
|
|
18
|
+
const p = Math.pow(10, precision);
|
|
19
|
+
return Math.round(n * p) / p;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const clamp = (n: number, lower: number, upper: number): number =>
|
|
23
|
+
Math.max(lower, Math.min(upper, n));
|
|
24
|
+
|
|
25
|
+
export const isFunction = (v: unknown): v is (...args: any[]) => any =>
|
|
26
|
+
typeof v === 'function';
|
|
27
|
+
|
|
28
|
+
// Deep equality for plain objects, arrays, and primitives — covers the
|
|
29
|
+
// shallow `margin` prop comparison we use.
|
|
30
|
+
export function isEqual(a: any, b: any): boolean {
|
|
31
|
+
if (a === b) return true;
|
|
32
|
+
if (a == null || b == null) return false;
|
|
33
|
+
if (typeof a !== 'object' || typeof b !== 'object') return false;
|
|
34
|
+
const ka = Object.keys(a);
|
|
35
|
+
const kb = Object.keys(b);
|
|
36
|
+
if (ka.length !== kb.length) return false;
|
|
37
|
+
for (const k of ka) {
|
|
38
|
+
if (!isEqual(a[k], b[k])) return false;
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Shallow merge of `...sources` into `target`. Missing keys win from later
|
|
44
|
+
// sources; nested objects get recursively merged too (matching lodash's
|
|
45
|
+
// `merge` for the limited shape we feed it — labels + tools config).
|
|
46
|
+
export function merge<T extends Record<string, any>>(target: T, ...sources: any[]): T {
|
|
47
|
+
for (const src of sources) {
|
|
48
|
+
if (!src || typeof src !== 'object') continue;
|
|
49
|
+
for (const k of Object.keys(src)) {
|
|
50
|
+
const v = src[k];
|
|
51
|
+
if (v && typeof v === 'object' && !Array.isArray(v) &&
|
|
52
|
+
target[k] && typeof target[k] === 'object' && !Array.isArray(target[k])) {
|
|
53
|
+
(target as any)[k] = merge({ ...target[k] }, v);
|
|
54
|
+
} else {
|
|
55
|
+
(target as any)[k] = v;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return target;
|
|
60
|
+
}
|
package/.babelrc
DELETED
package/.gitlab-ci.yml
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
image: node:16-alpine
|
|
2
|
-
|
|
3
|
-
stages:
|
|
4
|
-
- test
|
|
5
|
-
- deploy
|
|
6
|
-
|
|
7
|
-
test:
|
|
8
|
-
stage: test
|
|
9
|
-
script:
|
|
10
|
-
- cd test
|
|
11
|
-
- mkdir -p timeline && cp -rf ../index.js ../package.json ../src timeline
|
|
12
|
-
- npm install --force
|
|
13
|
-
- npm run build_gui
|
|
14
|
-
|
|
15
|
-
pages:
|
|
16
|
-
stage: deploy
|
|
17
|
-
script:
|
|
18
|
-
- cd test
|
|
19
|
-
- mkdir -p timeline && cp -rf ../index.js ../package.json ../src timeline
|
|
20
|
-
- npm install --force
|
|
21
|
-
- npm run build_gui
|
|
22
|
-
- mv ./bundle ../public
|
|
23
|
-
artifacts:
|
|
24
|
-
paths:
|
|
25
|
-
- public
|
|
26
|
-
only:
|
|
27
|
-
- pages
|
package/Makefile
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
NAME := timeline
|
|
2
|
-
NPM_REGISTRY := $(shell npm config get registry)
|
|
3
|
-
NPM := npm
|
|
4
|
-
|
|
5
|
-
node_modules: package.json ## install node modules
|
|
6
|
-
$(NPM) install --quiet --registry=$(NPM_REGISTRY)
|
|
7
|
-
|
|
8
|
-
clean: node_modules ## remove node_modules directory
|
|
9
|
-
$(NPM) run clean
|
|
10
|
-
|
|
11
|
-
build: node_modules ## build dist
|
|
12
|
-
$(NPM) run build && printf "\nRemember to:\n - Update \033[36mCHANGELOG.md\033[0m\n - Increase version: \033[36mnpm version major|minor|patch\033[0m\n"
|
|
13
|
-
|
|
14
|
-
publish: build ## publish to npm
|
|
15
|
-
$(NPM) publish --access public && git push origin --tags
|
|
16
|
-
|
|
17
|
-
help: ## display help
|
|
18
|
-
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z._-]+:.*?## / {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
|
19
|
-
|
|
20
|
-
.DEFAULT_GOAL := help
|
package/dist/Cursor.js
DELETED
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports["default"] = Cursor;
|
|
8
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
-
var _utils = require("./cursorElements/utils");
|
|
11
|
-
var _DragOverlay = _interopRequireDefault(require("./cursorElements/DragOverlay"));
|
|
12
|
-
var _ZoomOut = _interopRequireDefault(require("./cursorElements/ZoomOut"));
|
|
13
|
-
var _CursorIcon = _interopRequireDefault(require("./cursorElements/CursorIcon"));
|
|
14
|
-
var _CursorSelection = _interopRequireDefault(require("./cursorElements/CursorSelection"));
|
|
15
|
-
var _LeftHandle = _interopRequireDefault(require("./cursorElements/LeftHandle"));
|
|
16
|
-
var _RightHandle = _interopRequireDefault(require("./cursorElements/RightHandle"));
|
|
17
|
-
var _ZoomIn = _interopRequireDefault(require("./cursorElements/ZoomIn"));
|
|
18
|
-
var _LeftToolTip = _interopRequireDefault(require("./cursorElements/LeftToolTip"));
|
|
19
|
-
var _RightToolTip = _interopRequireDefault(require("./cursorElements/RightToolTip"));
|
|
20
|
-
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
21
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
22
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
24
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
25
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
26
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
27
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
28
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
29
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
30
|
-
function Cursor(_ref) {
|
|
31
|
-
var overlayWidth = _ref.overlayWidth,
|
|
32
|
-
overlayHeight = _ref.overlayHeight,
|
|
33
|
-
items = _ref.items,
|
|
34
|
-
setBarHovered = _ref.setBarHovered,
|
|
35
|
-
setToolTipVisible = _ref.setToolTipVisible,
|
|
36
|
-
showHistoToolTip = _ref.showHistoToolTip,
|
|
37
|
-
tooltipVisible = _ref.tooltipVisible,
|
|
38
|
-
barHovered = _ref.barHovered,
|
|
39
|
-
dragging = _ref.dragging,
|
|
40
|
-
setDragging = _ref.setDragging,
|
|
41
|
-
origin = _ref.origin,
|
|
42
|
-
height = _ref.height,
|
|
43
|
-
startPos = _ref.startPos,
|
|
44
|
-
endPos = _ref.endPos,
|
|
45
|
-
canZoom = _ref.canZoom,
|
|
46
|
-
minZoom = _ref.minZoom,
|
|
47
|
-
maxZoom = _ref.maxZoom,
|
|
48
|
-
maxSize = _ref.maxSize,
|
|
49
|
-
zoomOutLabel = _ref.zoomOutLabel,
|
|
50
|
-
zoomOut = _ref.zoomOut,
|
|
51
|
-
cursorIsAfterView = _ref.cursorIsAfterView,
|
|
52
|
-
cursorIsBeforeView = _ref.cursorIsBeforeView,
|
|
53
|
-
gotoCursorLabel = _ref.gotoCursorLabel,
|
|
54
|
-
onGotoCursor = _ref.onGotoCursor,
|
|
55
|
-
rcToolTipPrefixCls = _ref.rcToolTipPrefixCls,
|
|
56
|
-
classes = _ref.classes,
|
|
57
|
-
onStartDrawCursor = _ref.onStartDrawCursor,
|
|
58
|
-
onDrawCursor = _ref.onDrawCursor,
|
|
59
|
-
onEndCursor = _ref.onEndCursor,
|
|
60
|
-
onMoveDomain = _ref.onMoveDomain,
|
|
61
|
-
onMovedDomain = _ref.onMovedDomain,
|
|
62
|
-
onDragCursor = _ref.onDragCursor,
|
|
63
|
-
onEndDragCursor = _ref.onEndDragCursor,
|
|
64
|
-
startText = _ref.startText,
|
|
65
|
-
stopText = _ref.stopText,
|
|
66
|
-
zoomInLabel = _ref.zoomInLabel,
|
|
67
|
-
zoomIn = _ref.zoomIn,
|
|
68
|
-
startIsOutOfView = _ref.startIsOutOfView,
|
|
69
|
-
endIsOutOfView = _ref.endIsOutOfView,
|
|
70
|
-
tools = _ref.tools,
|
|
71
|
-
onResizeLeftCursor = _ref.onResizeLeftCursor,
|
|
72
|
-
onResizeRightCursor = _ref.onResizeRightCursor,
|
|
73
|
-
onEndResizeCursor = _ref.onEndResizeCursor;
|
|
74
|
-
var dragOverlay = (0, _react.useRef)();
|
|
75
|
-
var zoomInButton = (0, _react.useRef)();
|
|
76
|
-
var cursorSelection = (0, _react.useRef)();
|
|
77
|
-
var renderIcon = cursorIsAfterView || cursorIsBeforeView;
|
|
78
|
-
var cursorWidth = endPos - startPos < 1 ? 1 : endPos - startPos;
|
|
79
|
-
var _useState = (0, _react.useState)(false),
|
|
80
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
81
|
-
isVisibleTTR = _useState2[0],
|
|
82
|
-
setVisibleTTR = _useState2[1];
|
|
83
|
-
var _useState3 = (0, _react.useState)(false),
|
|
84
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
85
|
-
isVisibleTTL = _useState4[0],
|
|
86
|
-
setVisibleTTL = _useState4[1];
|
|
87
|
-
var originSelection = {
|
|
88
|
-
x: startPos,
|
|
89
|
-
y: 0
|
|
90
|
-
};
|
|
91
|
-
return /*#__PURE__*/_react["default"].createElement("g", {
|
|
92
|
-
transform: "translate(".concat(origin.x, ",").concat(origin.y, ")")
|
|
93
|
-
}, /*#__PURE__*/_react["default"].createElement(_DragOverlay["default"], {
|
|
94
|
-
ref: dragOverlay,
|
|
95
|
-
width: overlayWidth,
|
|
96
|
-
height: overlayHeight,
|
|
97
|
-
showToolTipLeft: setVisibleTTL,
|
|
98
|
-
showToolTipRight: setVisibleTTR,
|
|
99
|
-
onDrawCursor: onDrawCursor,
|
|
100
|
-
onEndCursor: onEndCursor,
|
|
101
|
-
onMovedDomain: onMovedDomain,
|
|
102
|
-
onMoveDomain: onMoveDomain,
|
|
103
|
-
onStartDrawCursor: onStartDrawCursor,
|
|
104
|
-
setToolTipVisible: setToolTipVisible,
|
|
105
|
-
setBarHovered: setBarHovered,
|
|
106
|
-
items: items,
|
|
107
|
-
tooltipVisible: tooltipVisible,
|
|
108
|
-
barHovered: barHovered,
|
|
109
|
-
showHistoToolTip: showHistoToolTip,
|
|
110
|
-
marginBottom: overlayHeight - height - 4,
|
|
111
|
-
dragging: dragging,
|
|
112
|
-
setDragging: setDragging,
|
|
113
|
-
cursorSelection: cursorSelection
|
|
114
|
-
}), renderIcon && /*#__PURE__*/_react["default"].createElement(_CursorIcon["default"], {
|
|
115
|
-
classes: classes,
|
|
116
|
-
rcToolTipPrefixCls: rcToolTipPrefixCls,
|
|
117
|
-
origin: {
|
|
118
|
-
x: cursorIsAfterView ? startPos - 17 : startPos - 23,
|
|
119
|
-
y: height / 2 - 24
|
|
120
|
-
},
|
|
121
|
-
position: startPos === 1 ? 'left' : 'right',
|
|
122
|
-
gotoCursorLabel: gotoCursorLabel,
|
|
123
|
-
onGotoCursor: onGotoCursor
|
|
124
|
-
}), /*#__PURE__*/_react["default"].createElement("g", {
|
|
125
|
-
style: {
|
|
126
|
-
display: renderIcon ? 'none' : undefined
|
|
127
|
-
},
|
|
128
|
-
transform: "translate(".concat(originSelection.x, ",").concat(originSelection.y, ")"),
|
|
129
|
-
onMouseOver: function onMouseOver() {
|
|
130
|
-
canZoom && tools.zoomIn !== false && !maxZoom && (0, _utils.show)(zoomInButton.current);
|
|
131
|
-
},
|
|
132
|
-
onMouseOut: function onMouseOut() {
|
|
133
|
-
canZoom && tools.zoomIn !== false && (0, _utils.hide)(zoomInButton.current);
|
|
134
|
-
}
|
|
135
|
-
}, /*#__PURE__*/_react["default"].createElement(_CursorSelection["default"], {
|
|
136
|
-
ref: cursorSelection,
|
|
137
|
-
classes: classes,
|
|
138
|
-
dragOverlay: dragOverlay,
|
|
139
|
-
maxSize: maxSize,
|
|
140
|
-
canZoom: canZoom,
|
|
141
|
-
startPos: startPos,
|
|
142
|
-
endPos: endPos,
|
|
143
|
-
height: height,
|
|
144
|
-
showToolTipLeft: setVisibleTTL,
|
|
145
|
-
showToolTipRight: setVisibleTTR,
|
|
146
|
-
onDragCursor: onDragCursor,
|
|
147
|
-
onEndDragCursor: onEndDragCursor,
|
|
148
|
-
onMovedDomain: onMovedDomain,
|
|
149
|
-
onMoveDomain: onMoveDomain,
|
|
150
|
-
zoomIn: zoomIn,
|
|
151
|
-
width: cursorWidth,
|
|
152
|
-
setToolTipVisible: setToolTipVisible,
|
|
153
|
-
setBarHovered: setBarHovered,
|
|
154
|
-
items: items,
|
|
155
|
-
tooltipVisible: tooltipVisible,
|
|
156
|
-
barHovered: barHovered,
|
|
157
|
-
showHistoToolTip: showHistoToolTip,
|
|
158
|
-
dragging: dragging,
|
|
159
|
-
setDragging: setDragging
|
|
160
|
-
}), /*#__PURE__*/_react["default"].createElement(_LeftHandle["default"], {
|
|
161
|
-
classes: classes,
|
|
162
|
-
origin: {
|
|
163
|
-
x: 0,
|
|
164
|
-
y: height / 2 + 2
|
|
165
|
-
},
|
|
166
|
-
maxSize: maxSize,
|
|
167
|
-
dragOverlay: dragOverlay,
|
|
168
|
-
startIsOutOfView: startIsOutOfView,
|
|
169
|
-
showToolTipLeft: setVisibleTTL,
|
|
170
|
-
onResizeLeftCursor: onResizeLeftCursor,
|
|
171
|
-
onEndResizeCursor: onEndResizeCursor,
|
|
172
|
-
setDragging: setDragging
|
|
173
|
-
}), /*#__PURE__*/_react["default"].createElement(_RightHandle["default"], {
|
|
174
|
-
classes: classes,
|
|
175
|
-
origin: {
|
|
176
|
-
x: cursorWidth,
|
|
177
|
-
y: height / 2 + 2
|
|
178
|
-
},
|
|
179
|
-
maxSize: maxSize,
|
|
180
|
-
dragOverlay: dragOverlay,
|
|
181
|
-
endIsOutOfView: endIsOutOfView,
|
|
182
|
-
showToolTipRight: setVisibleTTR,
|
|
183
|
-
onResizeRightCursor: onResizeRightCursor,
|
|
184
|
-
onEndResizeCursor: onEndResizeCursor,
|
|
185
|
-
setDragging: setDragging
|
|
186
|
-
}), canZoom && tools.zoomIn !== false && /*#__PURE__*/_react["default"].createElement(_ZoomIn["default"], {
|
|
187
|
-
ref: zoomInButton,
|
|
188
|
-
classes: classes,
|
|
189
|
-
rcToolTipPrefixCls: rcToolTipPrefixCls,
|
|
190
|
-
origin: {
|
|
191
|
-
x: cursorWidth - 25,
|
|
192
|
-
y: 0
|
|
193
|
-
},
|
|
194
|
-
zoomInLabel: zoomInLabel,
|
|
195
|
-
onZoomIn: zoomIn
|
|
196
|
-
}), /*#__PURE__*/_react["default"].createElement(_LeftToolTip["default"], {
|
|
197
|
-
classes: classes,
|
|
198
|
-
origin: {
|
|
199
|
-
x: 0,
|
|
200
|
-
y: height / 2
|
|
201
|
-
},
|
|
202
|
-
height: height,
|
|
203
|
-
startText: startText,
|
|
204
|
-
isVisibleTooltipLeft: isVisibleTTL
|
|
205
|
-
}), /*#__PURE__*/_react["default"].createElement(_RightToolTip["default"], {
|
|
206
|
-
classes: classes,
|
|
207
|
-
origin: {
|
|
208
|
-
x: cursorWidth,
|
|
209
|
-
y: height / 2 + 4
|
|
210
|
-
},
|
|
211
|
-
height: height,
|
|
212
|
-
stopText: stopText,
|
|
213
|
-
isVisibleTooltipRight: isVisibleTTR
|
|
214
|
-
})), canZoom && !minZoom && tools.zoomOut !== false && /*#__PURE__*/_react["default"].createElement(_ZoomOut["default"], {
|
|
215
|
-
classes: classes,
|
|
216
|
-
rcToolTipPrefixCls: rcToolTipPrefixCls,
|
|
217
|
-
origin: {
|
|
218
|
-
x: overlayWidth - 10,
|
|
219
|
-
y: height - 20
|
|
220
|
-
},
|
|
221
|
-
zoomOutLabel: zoomOutLabel,
|
|
222
|
-
onZoomOut: zoomOut
|
|
223
|
-
}));
|
|
224
|
-
}
|
|
225
|
-
Cursor.propTypes = {
|
|
226
|
-
origin: _propTypes["default"].shape({
|
|
227
|
-
x: _propTypes["default"].number.isRequired,
|
|
228
|
-
y: _propTypes["default"].number.isRequired
|
|
229
|
-
}).isRequired,
|
|
230
|
-
startPos: _propTypes["default"].number.isRequired,
|
|
231
|
-
startIsOutOfView: _propTypes["default"].bool,
|
|
232
|
-
endPos: _propTypes["default"].number.isRequired,
|
|
233
|
-
endIsOutOfView: _propTypes["default"].bool,
|
|
234
|
-
height: _propTypes["default"].number.isRequired,
|
|
235
|
-
overlayHeight: _propTypes["default"].number.isRequired,
|
|
236
|
-
overlayWidth: _propTypes["default"].number.isRequired,
|
|
237
|
-
items: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
|
238
|
-
start: _propTypes["default"].instanceOf(_momentTimezone["default"]).isRequired,
|
|
239
|
-
end: _propTypes["default"].instanceOf(_momentTimezone["default"]).isRequired,
|
|
240
|
-
x1: _propTypes["default"].number,
|
|
241
|
-
x2: _propTypes["default"].number,
|
|
242
|
-
metrics: _propTypes["default"].arrayOf(_propTypes["default"].number).isRequired,
|
|
243
|
-
total: _propTypes["default"].number.isRequired
|
|
244
|
-
})),
|
|
245
|
-
tooltipVisible: _propTypes["default"].bool,
|
|
246
|
-
barHovered: _propTypes["default"].number,
|
|
247
|
-
dragging: _propTypes["default"].bool,
|
|
248
|
-
setBarHovered: _propTypes["default"].func,
|
|
249
|
-
setToolTipVisible: _propTypes["default"].func,
|
|
250
|
-
setDragging: _propTypes["default"].func,
|
|
251
|
-
cursorIsBeforeView: _propTypes["default"].bool,
|
|
252
|
-
cursorIsAfterView: _propTypes["default"].bool,
|
|
253
|
-
maxSize: _propTypes["default"].bool,
|
|
254
|
-
startText: _propTypes["default"].string.isRequired,
|
|
255
|
-
stopText: _propTypes["default"].string.isRequired,
|
|
256
|
-
canZoom: _propTypes["default"].bool.isRequired,
|
|
257
|
-
maxZoom: _propTypes["default"].bool,
|
|
258
|
-
minZoom: _propTypes["default"].bool,
|
|
259
|
-
zoomIn: _propTypes["default"].func,
|
|
260
|
-
zoomOut: _propTypes["default"].func,
|
|
261
|
-
onResizeLeftCursor: _propTypes["default"].func.isRequired,
|
|
262
|
-
onResizeRightCursor: _propTypes["default"].func.isRequired,
|
|
263
|
-
onEndResizeCursor: _propTypes["default"].func.isRequired,
|
|
264
|
-
onDragCursor: _propTypes["default"].func.isRequired,
|
|
265
|
-
onEndDragCursor: _propTypes["default"].func.isRequired,
|
|
266
|
-
onStartDrawCursor: _propTypes["default"].func.isRequired,
|
|
267
|
-
onDrawCursor: _propTypes["default"].func.isRequired,
|
|
268
|
-
onEndCursor: _propTypes["default"].func.isRequired,
|
|
269
|
-
onMoveDomain: _propTypes["default"].func,
|
|
270
|
-
onMovedDomain: _propTypes["default"].func,
|
|
271
|
-
onGotoCursor: _propTypes["default"].func,
|
|
272
|
-
gotoCursorLabel: _propTypes["default"].string,
|
|
273
|
-
zoomInLabel: _propTypes["default"].string,
|
|
274
|
-
zoomOutLabel: _propTypes["default"].string,
|
|
275
|
-
classes: _propTypes["default"].object,
|
|
276
|
-
rcToolTipPrefixCls: _propTypes["default"].string.isRequired,
|
|
277
|
-
tools: _propTypes["default"].shape({
|
|
278
|
-
zoomIn: _propTypes["default"].bool,
|
|
279
|
-
zoomOut: _propTypes["default"].bool
|
|
280
|
-
})
|
|
281
|
-
};
|
|
282
|
-
var identity = function identity() {};
|
|
283
|
-
Cursor.defaultProps = {
|
|
284
|
-
classes: {},
|
|
285
|
-
onMoveDomain: identity,
|
|
286
|
-
onMovedDomain: identity,
|
|
287
|
-
setBarHovered: identity,
|
|
288
|
-
setToolTipVisible: identity,
|
|
289
|
-
setDragging: identity
|
|
290
|
-
};
|