@spider-analyzer/timeline 5.0.1 → 5.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +11 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/TimeLine.tsx +9 -2
- package/src/time.ts +12 -4
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/moment-shim.ts","../src/utils.ts","../src/cursorElements/utils.js","../src/cursorElements/handleHistoHovering.js","../src/cursorElements/DragOverlay.jsx","../src/styles.ts","../src/theme.js","../src/ToolTip.jsx","../src/cursorElements/ZoomOut.jsx","../src/cursorElements/CursorIcon.jsx","../src/cursorElements/CursorSelection.jsx","../src/cursorElements/LeftHandle.jsx","../src/cursorElements/RightHandle.jsx","../src/cursorElements/ZoomIn.jsx","../src/cursorElements/LeftToolTip.jsx","../src/cursorElements/RightToolTip.jsx","../src/Cursor.jsx","../src/timeLineElements/Histogram.jsx","../src/timeLineElements/axesStyles.jsx","../src/timeLineElements/XAxis.jsx","../src/timeLineElements/YAxis.jsx","../src/timeLineElements/Legend.jsx","../src/timeLineElements/Button.jsx","../src/timeLineElements/Tools.jsx","../src/timeLineElements/HistoToolTip.jsx","../src/timeLineElements/QualityLine.jsx","../src/timeLineElements/YGrid.jsx","../src/timeLineElements/XGrid.jsx","../src/time.ts","../src/TimeLine.tsx","../src/TimeLineResizer.jsx","../src/index.ts"],"names":["moment","pointer","PropTypes","clsx","jsx","useState","jsxs","useEffect","select","drag","forwardRef","useRef","max","YAxis","XAxis","Cursor","Histogram","Legend","Tools","useCallback","domain","histoWidth","ticks","maxZoom","minZoom","items","maxHeight","verticalScale","scaleLinear","verticalMarks","start","maxTimespan","stop","barHovered","TimeLine"],"mappings":"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","file":"index.mjs","sourcesContent":["// Moment-compatible thin wrapper over Luxon.\n//\n// Exposes exactly the moment API surface that this library's internal code\n// uses — not a general-purpose replacement. Swapping to this shim in place\n// of `moment-timezone` drops ~300 KB from consumer bundles while keeping\n// the component's internal .isBefore/.add/.diff/etc. call sites unchanged.\n\nimport { DateTime, Duration, type DurationLikeObject } from 'luxon';\n\nconst unitMap: Record<string, keyof DurationLikeObject> = {\n ms: 'milliseconds',\n milliseconds: 'milliseconds',\n millisecond: 'milliseconds',\n second: 'seconds',\n seconds: 'seconds',\n minute: 'minutes',\n minutes: 'minutes',\n hour: 'hours',\n hours: 'hours',\n day: 'days',\n days: 'days',\n month: 'months',\n months: 'months',\n year: 'years',\n years: 'years',\n};\n\nfunction normalizeUnit(unit: string | undefined): keyof DurationLikeObject {\n if (!unit) return 'milliseconds';\n const norm = unit.toLowerCase();\n return unitMap[norm] ?? (norm as keyof DurationLikeObject);\n}\n\n// A moment.duration-like handle. Internal code only uses `.asMilliseconds()`.\nclass DurationLike {\n private d: Duration;\n constructor(d: Duration) { this.d = d; }\n asMilliseconds(): number { return this.d.as('milliseconds'); }\n valueOf(): number { return this.d.as('milliseconds'); }\n}\n\nfunction toDurationLike(x: any): DurationLike {\n if (x instanceof DurationLike) return x;\n if (typeof x === 'number') return new DurationLike(Duration.fromMillis(x));\n if (typeof x === 'string') return new DurationLike(Duration.fromISO(x));\n if (x && typeof x.asMilliseconds === 'function') {\n return new DurationLike(Duration.fromMillis(x.asMilliseconds()));\n }\n return new DurationLike(Duration.fromMillis(0));\n}\n\n// A moment-like handle over a single Luxon DateTime.\nclass MomentLike {\n _dt: DateTime;\n\n constructor(dt: DateTime) { this._dt = dt; }\n\n _toDT(other: any): DateTime {\n if (other instanceof MomentLike) return other._dt;\n if (other instanceof Date) return DateTime.fromJSDate(other);\n if (typeof other === 'number') return DateTime.fromMillis(other);\n if (other instanceof DateTime) return other;\n return DateTime.fromJSDate(new Date(other));\n }\n\n _addMillis(ms: number): number {\n return this._dt.toMillis() + ms;\n }\n\n isBefore(other: any): boolean { return this._dt.toMillis() < this._toDT(other).toMillis(); }\n isAfter(other: any): boolean { return this._dt.toMillis() > this._toDT(other).toMillis(); }\n isSame(other: any): boolean { return this._dt.toMillis() === this._toDT(other).toMillis(); }\n isSameOrBefore(other: any): boolean { return this._dt.toMillis() <= this._toDT(other).toMillis(); }\n isSameOrAfter(other: any): boolean { return this._dt.toMillis() >= this._toDT(other).toMillis(); }\n\n // moment returns duration by default; library internals always use the\n // no-arg form and treat the result as a number via arithmetic. Return ms.\n diff(other: any): number {\n return this._dt.toMillis() - this._toDT(other).toMillis();\n }\n\n add(n: any, unit?: string): MomentLike {\n const ms = normalizeToMillis(n, unit);\n return new MomentLike(DateTime.fromMillis(this._addMillis(ms), { zone: this._dt.zone as any }));\n }\n\n subtract(n: any, unit?: string): MomentLike {\n const ms = normalizeToMillis(n, unit);\n return new MomentLike(DateTime.fromMillis(this._addMillis(-ms), { zone: this._dt.zone as any }));\n }\n\n toDate(): Date { return this._dt.toJSDate(); }\n toISOString(): string { return this._dt.toUTC().toISO() ?? ''; }\n valueOf(): number { return this._dt.toMillis(); }\n format(fmt?: string): string {\n if (!fmt) return this._dt.toISO() ?? '';\n return this._dt.toFormat(momentFmtToLuxon(fmt));\n }\n\n // setter chain used in demo: .second(0).millisecond(0)\n second(v: number): MomentLike { return new MomentLike(this._dt.set({ second: v })); }\n millisecond(v: number): MomentLike { return new MomentLike(this._dt.set({ millisecond: v })); }\n\n // Internal (escape hatch — prefer the wrapper API above).\n toLuxon(): DateTime { return this._dt; }\n}\n\nfunction normalizeToMillis(n: any, unit?: string): number {\n if (n instanceof DurationLike) return n.asMilliseconds();\n if (n && typeof n.asMilliseconds === 'function') return n.asMilliseconds();\n if (typeof n === 'number') {\n if (!unit) return n;\n const u = normalizeUnit(unit);\n // Convert n<unit> to ms.\n return Duration.fromObject({ [u]: n } as DurationLikeObject).as('milliseconds');\n }\n return 0;\n}\n\nfunction momentFmtToLuxon(fmt: string): string {\n // Minimal mapping for the tokens used in the demo (TIME_FORMAT_TOOLTIP,\n // locale.js). moment and Luxon agree on most of these already.\n return fmt\n .replace(/YYYY/g, 'yyyy')\n .replace(/YY/g, 'yy')\n .replace(/DD/g, 'dd')\n .replace(/A/g, 'a');\n}\n\n// Public factory — matches `moment(x)` / `moment()`.\ninterface MomentFactory {\n (x?: any): MomentLike;\n isMoment(x: any): x is MomentLike;\n isDuration(x: any): x is DurationLike;\n duration(x?: any, unit?: string): DurationLike;\n tz(x: any, zone: string): MomentLike;\n}\n\nfunction toDT(x: any): DateTime {\n if (x === undefined || x === null) return DateTime.now();\n if (x instanceof MomentLike) return x.toLuxon();\n if (x instanceof Date) return DateTime.fromJSDate(x);\n if (typeof x === 'number') return DateTime.fromMillis(x);\n if (typeof x === 'string') return DateTime.fromISO(x);\n return DateTime.fromJSDate(new Date(x));\n}\n\nconst moment = function moment(x?: any): MomentLike {\n return new MomentLike(toDT(x));\n} as MomentFactory;\n\nmoment.isMoment = (x: any): x is MomentLike => x instanceof MomentLike;\nmoment.isDuration = (x: any): x is DurationLike => x instanceof DurationLike;\n\nmoment.duration = (x?: any, unit?: string): DurationLike => {\n if (typeof x === 'number' && unit) {\n const u = normalizeUnit(unit);\n return new DurationLike(Duration.fromObject({ [u]: x } as DurationLikeObject));\n }\n return toDurationLike(x);\n};\n\nmoment.tz = (x: any, zone: string): MomentLike => {\n const base = toDT(x);\n return new MomentLike(base.setZone(zone));\n};\n\nexport default moment;\nexport type Moment = MomentLike;\n","/**\n * Tiny local replacements for the lodash-es helpers the library used.\n * Keeping them in a single file lets us drop lodash-es entirely.\n */\n\nexport const max = (arr: number[] | undefined): number | undefined =>\n arr && arr.length ? Math.max(...arr) : undefined;\n\nexport const sum = (arr: number[] | undefined): number =>\n arr ? arr.reduce((acc, v) => acc + v, 0) : 0;\n\nexport const floor = (n: number, precision = 0): number => {\n const p = Math.pow(10, precision);\n return Math.floor(n * p) / p;\n};\n\nexport const round = (n: number, precision = 0): number => {\n const p = Math.pow(10, precision);\n return Math.round(n * p) / p;\n};\n\nexport const clamp = (n: number, lower: number, upper: number): number =>\n Math.max(lower, Math.min(upper, n));\n\nexport const isFunction = (v: unknown): v is (...args: any[]) => any =>\n typeof v === 'function';\n\n// Deep equality for plain objects, arrays, and primitives — covers the\n// shallow `margin` prop comparison we use.\nexport function isEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n const ka = Object.keys(a);\n const kb = Object.keys(b);\n if (ka.length !== kb.length) return false;\n for (const k of ka) {\n if (!isEqual(a[k], b[k])) return false;\n }\n return true;\n}\n\n// Shallow merge of `...sources` into `target`. Missing keys win from later\n// sources; nested objects get recursively merged too (matching lodash's\n// `merge` for the limited shape we feed it — labels + tools config).\nexport function merge<T extends Record<string, any>>(target: T, ...sources: any[]): T {\n for (const src of sources) {\n if (!src || typeof src !== 'object') continue;\n for (const k of Object.keys(src)) {\n const v = src[k];\n if (v && typeof v === 'object' && !Array.isArray(v) &&\n target[k] && typeof target[k] === 'object' && !Array.isArray(target[k])) {\n (target as any)[k] = merge({ ...target[k] }, v);\n } else {\n (target as any)[k] = v;\n }\n }\n }\n return target;\n}\n","import { clamp as _clamp } from '../utils';\n\nexport function hide(element) {\n element.style.opacity = 0;\n element.style.visibility = 'hidden';\n}\n\nexport function show(element) {\n element.style.opacity = 1;\n element.style.visibility = 'visible';\n}\n\nexport const resizeToolTip = (height) => _clamp(2 * height/30, 1.9, 4);\nexport const resizeToolTipText = (height) => _clamp(7 * height/29, 7, 14);\nexport const resizeToolTipRightDelta = (height) => _clamp(4 * height/30,4,9)\n","import {pointer} from 'd3-selection';\n\nexport function handleHistoOver({\n showHistoToolTip, dragging, event, dragOverlay, marginBottom,\n items, height, tooltipVisible, timer, barHovered,\n setTimer, setToolTipVisible, setBarHovered\n}) {\n if (showHistoToolTip && !dragging && dragOverlay) {\n const [x, y] = pointer(event, dragOverlay.current);\n\n //Compute the hovered bar\n const margin = marginBottom || 0;\n const index = items.findIndex(element =>\n (element.x1 <= x)\n && (element.x2 > x)\n && (y >= height - element.height - margin)\n && (y < height - margin)\n );\n\n //no tooltip displayed and no timer => set to display tooltip in some time\n if (!tooltipVisible && !timer) {\n setTimer(setTimeout(() => {\n setToolTipVisible(true);\n setTimer(null)\n }, 1000));\n }\n //timer but changed bar => reset timer to display tooltip\n else if (timer && barHovered !== index) {\n clearTimeout(timer);\n\n setTimer(setTimeout(() => {\n setToolTipVisible(true);\n setTimer(null)\n }, 1000));\n }\n //not hover a bar, hide tooltip (and then expect a timer later)\n else if (index < 0 && tooltipVisible) {\n setToolTipVisible(false);\n }\n\n if(barHovered !== index){\n setBarHovered(index);\n }\n }\n}\n\nexport function handleHistoOut({setToolTipVisible, setBarHovered, timer, friendTarget}) {\n return event => {\n if(event.relatedTarget !== (friendTarget && friendTarget.current)){\n setToolTipVisible(false);\n setBarHovered(-1);\n }\n if(timer){\n clearTimeout(timer);\n }\n };\n}\n","import React, {forwardRef, useCallback, useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {pointer, select} from 'd3-selection';\nimport {drag} from 'd3-drag';\nimport moment from '../moment-shim';\n\nimport {handleHistoOver, handleHistoOut} from './handleHistoHovering';\n\n\nfunction DragOverlay({\n width, height, marginBottom,\n showToolTipLeft, showToolTipRight,\n onDrawCursor, onStartDrawCursor,\n onMovedDomain, onMoveDomain,\n onEndCursor, dragOverlayRef,\n tooltipVisible, items, showHistoToolTip,\n dragging, barHovered, cursorSelection,\n setDragging, setToolTipVisible, setBarHovered,\n}){\n const dragOverlayContainer = useRef();\n const [timer, setTimer] = useState(null);\n\n const setOverlayCursor = event => {\n if(event.ctrlKey){\n dragOverlayRef.current.style.cursor = 'move';\n }\n else{\n dragOverlayRef.current.style.cursor = 'crosshair';\n }\n\n handleHistoOver({\n showHistoToolTip, dragging, event, dragOverlay: dragOverlayRef,\n marginBottom, items, height, tooltipVisible,\n timer, setTimer, setToolTipVisible, barHovered,\n setBarHovered\n });\n\n };\n\n useEffect(() => {\n let mode = null; //CURSOR or DOMAIN\n /* when Ctrl is pressed, we drag the domain -> move the min / max\n * when Ctrl is not pressed, we draw a cursor, starting from left\n */\n\n select(dragOverlayRef.current).call(drag()\n .filter((event) => !event.button)\n .container(dragOverlayContainer.current)\n .on('start',(event) => {\n if(event.sourceEvent.ctrlKey){\n mode = 'DOMAIN';\n }\n else {\n mode = 'CURSOR';\n showToolTipLeft(true);\n onStartDrawCursor(event.x);\n }\n })\n .on('drag',(event) => {\n if(mode === 'DOMAIN'){\n onMoveDomain(event.dx);\n }\n else if(mode === 'CURSOR'){\n showToolTipRight(true);\n onDrawCursor(event.dx, pointer(event, dragOverlayRef.current));\n }\n setDragging(true);\n })\n .on('end',() => {\n if(mode === 'DOMAIN'){\n onMovedDomain();\n }\n else if(mode === 'CURSOR'){\n showToolTipLeft(false);\n showToolTipRight(false);\n onEndCursor();\n }\n mode = null;\n setDragging(false);\n })\n );\n }, []);\n\n return (\n <g ref={dragOverlayContainer}>\n <rect\n ref={dragOverlayRef}\n className=\"tl-dragOverlay\"\n x={0}\n y={0}\n width={width}\n height={height}\n onMouseMove={setOverlayCursor}\n onMouseOver={setOverlayCursor}\n onMouseOut={handleHistoOut({setToolTipVisible, setBarHovered, timer, friendTarget: cursorSelection})}\n />\n </g>\n );\n}\n\nDragOverlay.propTypes = {\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n marginBottom: PropTypes.number,\n\n items: PropTypes.arrayOf(PropTypes.shape({\n start: PropTypes.instanceOf(moment).isRequired,\n end: PropTypes.instanceOf(moment).isRequired,\n x1: PropTypes.number,\n x2: PropTypes.number,\n metrics: PropTypes.arrayOf(PropTypes.number).isRequired,\n total: PropTypes.number.isRequired,\n })),\n tooltipVisible: PropTypes.bool,\n barHovered: PropTypes.number,\n setBarHovered: PropTypes.func,\n setTooltipVisible: PropTypes.func,\n\n showToolTipLeft: PropTypes.func.isRequired,\n showToolTipRight: PropTypes.func.isRequired,\n showHistoToolTip: PropTypes.bool,\n\n onStartDrawCursor: PropTypes.func.isRequired,\n onDrawCursor: PropTypes.func.isRequired,\n onEndCursor: PropTypes.func.isRequired,\n\n onMoveDomain: PropTypes.func,\n onMovedDomain: PropTypes.func,\n};\n\nfunction dragOverlayFwd(props, ref) {\n return <DragOverlay {...props} dragOverlayRef={ref}/>\n}\n\nexport default forwardRef(dragOverlayFwd);\n","import clsx from 'clsx';\nimport './timeline.css';\n\n/**\n * Resolves a built-in class name for a component slot, optionally merged with\n * the consumer's override from the `classes` prop. Replaces the prior\n * @material-ui/styles `useStyles()` + local clsx glue.\n *\n * Usage:\n * const className = (name: string) => cn(name, classes);\n * <rect className={className('histoItem')} />\n */\nexport function cn(name: string, classes?: Record<string, string>): string {\n return clsx(`tl-${name}`, classes?.[name]);\n}\n","import {scaleLinear} from 'd3-scale';\nimport './tipDark.css';\n\nconst theme = {\n colors: {\n light: '#ececec',\n medium: '#b4b4b4',\n mediumDark: '#545454',\n dark: '#333333',\n itemFillSelected: '#ff8080',\n itemStrokeSelected: '#e7594f',\n buttonOver: '#ff8080',\n qualityFillSelected: '#00ebeb',\n zoomOutIcon: '#ff816b',\n zoomInIcon: '#00BCD4',\n maxSizeStroke: '#00899f',\n cursorHandleFill: '#ffffff',\n cursorStroke: '#00BCD4',\n cursorFill: '#00BCD4',\n outsideViewFill: '#ececec',\n outsideViewStroke: '#b4b4b4',\n tipFill: '#1a1a1a',\n tipText: '#ffffff'\n },\n font: {\n family: 'Roboto, sans-serif',\n axisTextSize: 10,\n legendSize: 12.5,\n tipSize: 12.5\n },\n rcToolTipPrefixCls: 'rc-tooltip-dark'\n};\nexport default theme;\n\nexport const defaultLabels = {\n forwardButtonTip: 'Slide forward',\n backwardButtonTip: 'Slide backward',\n resetButtonTip: 'Reset time span',\n gotoNowButtonTip: 'Goto Now',\n doubleClickMaxZoomMsg: 'Cannot zoom anymore!',\n scrollMaxZoomMsg: 'Cannot zoom anymore!',\n zoomInWithoutChangingSelectionMsg: 'Please change time selection before clicking on zoom ;)',\n zoomSelectionResolutionExtended: 'You reached maximum zoom level',\n minZoomMsg: 'You reached minimum zoom level',\n maxSelectionMsg: 'You reached maximum selection',\n maxDomainMsg: 'You reached maximum visible time',\n minDomainMsg: 'You reached minimum visible time',\n gotoCursor: 'Goto Cursor',\n zoomInLabel: 'Zoom in',\n zoomOutLabel: 'Zoom out',\n};\n\nexport const defaultQualityScale = scaleLinear()\n .domain([0, 0.9, 1])\n .range(['#ff3724', 'rgba(255,0,0,0.09)', 'rgba(155,249,135,0.94)'])\n .clamp(true);\n","import React from 'react';\nimport ToolTipBase from 'rc-tooltip';\nimport PropTypes from 'prop-types';\n\nimport './tipDark.css';\nimport theme from './theme';\n\nexport default function ToolTip({overlay, placement = 'top', mouseEnterDelay = 0.5, prefixCls, align, visible, hidden, children}){\n // rc-tooltip v6 keeps `visible` as the controlled prop; pass it only\n // when explicitly controlled so uncontrolled hover behavior still works\n // (an explicit `visible={false}` would otherwise pin the tooltip shut\n // and block the mouseEnterDelay-based reveal).\n const extraProps = {};\n if (visible) extraProps.visible = true;\n if (hidden) extraProps.visible = false;\n\n return (\n <ToolTipBase\n placement={placement}\n prefixCls={prefixCls || theme.rcToolTipPrefixCls}\n overlay={overlay}\n mouseEnterDelay={mouseEnterDelay}\n destroyTooltipOnHide={true}\n align={align}\n {...extraProps}\n >\n {children}\n </ToolTipBase>\n );\n}\n\nToolTip.propTypes = {\n overlay: PropTypes.any.isRequired,\n placement: PropTypes.string,\n mouseEnterDelay: PropTypes.number,\n}\n\n","import { cn } from \"../styles\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolTip from '../ToolTip';\n\nimport clsx from 'clsx';\n\nconst zoomOutIcon = 'M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z';\n\n\nexport default function ZoomOut({classes, origin, zoomOutLabel, onZoomOut, rcToolTipPrefixCls}){\n\n const className = (n) => cn(n, classes);\n\n return (\n <ToolTip\n placement={'left'}\n overlay={zoomOutLabel}\n >\n <g\n className={\"tl-zoomOutContainer\"}\n transform={`translate(${origin.x}, ${origin.y})`}\n onClick={onZoomOut}\n >\n <rect\n className={\"tl-zoomArea\"}\n x={0}\n y={0}\n width={23}\n height={23}\n />\n <path\n className={className('zoomOut')}\n d={zoomOutIcon}\n />\n </g>\n </ToolTip>\n );\n}\n\nZoomOut.propTypes = {\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n zoomOutLabel: PropTypes.string,\n onZoomOut: PropTypes.func,\n}\n","import React, {useState} from 'react';\nimport ToolTip from '../ToolTip';\nimport PropTypes from 'prop-types';\n\nimport clsx from 'clsx';\n\n\nexport default function CursorIcon({ classes, rcToolTipPrefixCls, origin,\n position, gotoCursorLabel, onGotoCursor\n }){\n \n const [isOver, setIsOver] = useState(false);\n\n return (\n <ToolTip\n placement={position === 'right' ? 'left' : 'right'}\n overlay={gotoCursorLabel}\n >\n <g\n transform={`translate(${origin.x},${origin.y}) scale(2)`}\n style={{cursor: 'pointer'}}\n onClick={onGotoCursor}\n onMouseOver={() => setIsOver(true)}\n onMouseOut={() => setIsOver(false)}\n >\n <rect\n className={clsx(\n \"tl-cursorIconRect\",\n classes.cursorIconRect,\n isOver && \"tl-cursorIconRectOver\",\n isOver && classes.cursorIconRectOver,\n )}\n width=\"5.5\"\n height=\"13.72\"\n x=\"9.56\"\n y=\"4.76\" />\n <circle\n className={clsx(\n \"tl-cursorIconCircle\",\n classes.cursorIconCircle,\n isOver && \"tl-cursorIconCircleOver\",\n isOver && classes.cursorIconCircleOver,\n )}\n cx=\"9.63\"\n cy=\"11.62\"\n r=\"1.4\" />\n <circle\n className={clsx(\n \"tl-cursorIconCircle\",\n classes.cursorIconCircle,\n isOver && \"tl-cursorIconCircleOver\",\n isOver && classes.cursorIconCircleOver,\n )}\n cx=\"15\"\n cy=\"11.70\"\n r=\"1.4\" />\n </g>\n </ToolTip>\n );\n}\n\nCursorIcon.propTypes = {\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n onGotoCursor: PropTypes.func,\n gotoCursorLabel: PropTypes.string.isRequired,\n position: PropTypes.string.isRequired,\n}\n","import { cn } from \"../styles\";\nimport React, {forwardRef, useCallback, useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {pointer, select} from 'd3-selection';\nimport {drag} from 'd3-drag';\n\nimport clsx from 'clsx';\nimport moment from '../moment-shim';\nimport {handleHistoOver, handleHistoOut} from './handleHistoHovering';\n\n\nexport function CursorSelection({\n classes, cursor,\n height,\n maxSize, zoomIn, canZoom,\n dragOverlay, onMoveDomain, onDragCursor, onMovedDomain, onEndDragCursor,\n showToolTipLeft, showToolTipRight, width,\n\n tooltipVisible, items, showHistoToolTip,\n dragging, barHovered, marginBottom,\n setDragging, setBarHovered, setToolTipVisible,\n}) {\n const className = (n) => cn(n, classes);\n\n const [timer, setTimer] = useState(null);\n\n const setOverlayCursor = event =>\n handleHistoOver({\n showHistoToolTip, dragging, event, dragOverlay,\n marginBottom, items, height, tooltipVisible,\n timer, setTimer, setToolTipVisible, barHovered,\n setBarHovered\n });\n\n useEffect(() => {\n let mode = null; //CURSOR or DOMAIN\n select(cursor.current).call(drag()\n .filter((event) => !event.button)\n .container(dragOverlay.current)\n .on('start',(event) => {\n if(event.sourceEvent.ctrlKey){\n mode = 'DOMAIN';\n }\n else {\n mode = 'CURSOR';\n showToolTipRight(true);\n showToolTipLeft(true);\n }\n })\n .on('drag', (event) => {\n if(mode === 'DOMAIN' && event.sourceEvent.ctrlKey){\n onMoveDomain(event.dx);\n }\n else if(mode === 'CURSOR') {\n onDragCursor(event.dx, pointer(event, dragOverlay.current));\n }\n setDragging(true);\n })\n .on('end',() => {\n if(mode === 'DOMAIN'){\n onMovedDomain();\n }\n else if(mode === 'CURSOR'){\n showToolTipRight(false);\n showToolTipLeft(false);\n onEndDragCursor();\n }\n mode = null;\n mode = null;\n setDragging(false);\n })\n );\n },\n [cursor.current]);\n\n return (\n <rect\n ref={cursor}\n className={clsx(className('cursorArea'), maxSize && 'tl--maxSize')}\n x={0}\n y={-3}\n width={width}\n height={height + 10}\n onDoubleClick={canZoom ? zoomIn : undefined }\n onMouseMove={setOverlayCursor}\n onMouseOver={setOverlayCursor}\n onMouseOut={handleHistoOut({setToolTipVisible, setBarHovered, timer, friendTarget: dragOverlay})}\n />\n );\n};\n\nCursorSelection.propTypes = {\n classes: PropTypes.object.isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n maxSize: PropTypes.bool.isRequired,\n zoomIn: PropTypes.func.isRequired,\n canZoom: PropTypes.bool.isRequired,\n dragOverlay: PropTypes.object.isRequired,\n onMoveDomain: PropTypes.func.isRequired,\n onMovedDomain: PropTypes.func.isRequired,\n onDragCursor: PropTypes.func.isRequired,\n onEndDragCursor: PropTypes.func.isRequired,\n showToolTipLeft: PropTypes.func.isRequired,\n showToolTipRight: PropTypes.func.isRequired,\n\n\n items: PropTypes.arrayOf(PropTypes.shape({\n start: PropTypes.instanceOf(moment).isRequired,\n end: PropTypes.instanceOf(moment).isRequired,\n x1: PropTypes.number,\n x2: PropTypes.number,\n metrics: PropTypes.arrayOf(PropTypes.number).isRequired,\n total: PropTypes.number.isRequired,\n })),\n tooltipVisible: PropTypes.bool,\n barHovered: PropTypes.number,\n setBarHovered: PropTypes.func,\n setTooltipVisible: PropTypes.func,\n}\n\nfunction CursorSelectionFwd(props, ref) {\n return <CursorSelection {...props} cursor={ref}/>\n}\n\nexport default forwardRef(CursorSelectionFwd);\n","import { cn } from \"../styles\";\nimport React, {useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {pointer, select} from 'd3-selection';\nimport {drag} from 'd3-drag';\n\nimport clsx from 'clsx';\n\n\nexport default function LeftHandle({\n classes, maxSize,\n onResizeLeftCursor, onEndResizeCursor,\n dragOverlay, showToolTipLeft,\n origin, startIsOutOfView, setDragging\n}) {\n const className = (n) => cn(n, classes);\n\n const cursorLeftHandle = useRef();\n\n useEffect(() => {\n cursorLeftHandle.current &&\n select(cursorLeftHandle.current).call(\n drag()\n .filter((event) => !event.button)\n .container(dragOverlay.current)\n .on('start', () => {\n setDragging(true)\n showToolTipLeft(true)\n })\n .on('drag', (event) => onResizeLeftCursor(event.dx, pointer(event, dragOverlay.current)))\n .on('end', () => {\n setDragging(false);\n showToolTipLeft(false);\n onEndResizeCursor();\n })\n );\n }, [cursorLeftHandle.current]);\n\n return (\n <circle\n ref={cursorLeftHandle}\n className={clsx(className('cursorLeftHandle'), maxSize && 'tl--maxSize', startIsOutOfView && 'tl--outOfView')}\n r='4'\n cx={origin.x}\n cy={origin.y}\n />\n );\n};\n\nLeftHandle.propTypes = {\n classes: PropTypes.object.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n maxSize: PropTypes.bool.isRequired,\n dragOverlay: PropTypes.object.isRequired,\n startIsOutOfView: PropTypes.bool.isRequired,\n showToolTipLeft: PropTypes.func.isRequired,\n onResizeLeftCursor: PropTypes.func.isRequired,\n onEndResizeCursor: PropTypes.func.isRequired,\n setDragging: PropTypes.func.isRequired,\n}\n","import { cn } from \"../styles\";\nimport React, {useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {pointer, select} from 'd3-selection';\nimport {drag} from 'd3-drag';\n\nimport clsx from 'clsx';\n\n\nexport default function RightHandle({\n classes, maxSize, origin,\n onResizeRightCursor, onEndResizeCursor,\n dragOverlay, showToolTipRight, endIsOutOfView, setDragging\n}) {\n const className = (n) => cn(n, classes);\n\n const cursorRightHandle = useRef();\n\n useEffect(() => {\n cursorRightHandle.current &&\n select(cursorRightHandle.current).call(\n drag()\n .filter((event) => !event.button)\n .container(dragOverlay.current)\n .on('start', () => {\n setDragging(true);\n showToolTipRight(true)\n })\n .on('drag', (event) => onResizeRightCursor(event.dx, pointer(event, dragOverlay.current)))\n .on('end', () => {\n setDragging(false);\n showToolTipRight(false);\n onEndResizeCursor();\n })\n );\n }, [cursorRightHandle.current]);\n\n return (\n <circle\n ref={cursorRightHandle}\n className={clsx(className('cursorRightHandle'), maxSize && 'tl--maxSize', endIsOutOfView && 'tl--outOfView')}\n r='4'\n cx={origin.x}\n cy={origin.y}\n />\n );\n};\n\nRightHandle.propTypes = {\n classes: PropTypes.object.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n maxSize: PropTypes.bool.isRequired,\n dragOverlay: PropTypes.object.isRequired,\n endIsOutOfView: PropTypes.bool.isRequired,\n showToolTipRight: PropTypes.func.isRequired,\n onResizeRightCursor: PropTypes.func.isRequired,\n onEndResizeCursor: PropTypes.func.isRequired,\n setDragging: PropTypes.func.isRequired,\n}\n","import { cn } from \"../styles\";\nimport React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport ToolTip from '../ToolTip';\n\nimport clsx from 'clsx';\n\nconst zoomIcon = 'M 15.5 14 h -0.79 l -0.28 -0.27 C 15.41 12.59 16 11.11 16 9.5 C 16 5.91 13.09 3 9.5 3 S 3 5.91 3 9.5 S 5.91 16 9.5 16 c 1.61 0 3.09 -0.59 4.23 -1.57 l 0.27 0.28 v 0.79 l 5 4.99 L 20.49 19 l -4.99 -5 Z m -6 0 C 7.01 14 5 11.99 5 9.5 S 7.01 5 9.5 5 S 14 7.01 14 9.5 S 11.99 14 9.5 14 Z'\nconst plusSign = \"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\";\n\n\nfunction ZoomIn({\n classes, origin,\n zoomInLabel, onZoomIn, rcToolTipPrefixCls,\n forwardedRef\n}){\n const className = (n) => cn(n, classes);\n\n return (\n <ToolTip\n placement={'left'}\n overlay={zoomInLabel}\n >\n <g\n className={\"tl-zoomInContainer\"}\n ref={forwardedRef}\n transform={`translate(${origin.x}, ${origin.y})`}\n onClick={onZoomIn}\n >\n <rect\n className={\"tl-zoomArea\"}\n x={0}\n y={0}\n width={23}\n height={23}\n />\n <path\n className={className('zoomIn')}\n d={zoomIcon}\n />\n <path\n className={className('zoomIn')}\n d={plusSign}\n />\n <rect\n className={\"tl-zoomArea\"}\n x={0}\n y={0}\n width={23}\n height={23}\n />\n </g>\n </ToolTip>\n );\n}\n\nZoomIn.propTypes = {\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n zoomInLabel: PropTypes.string,\n onZoomIn: PropTypes.func,\n};\n\nfunction zoomInFwd(props, ref) {\n return <ZoomIn {...props} forwardedRef={ref}/>\n}\n\nexport default forwardRef(zoomInFwd);\n","import { cn } from \"../styles\";\nimport React, {useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\n\nimport clsx from 'clsx';\nimport {hide, show, resizeToolTip, resizeToolTipText} from './utils';\n\n\nexport default function LeftToolTip({\n classes, height, origin,\n isVisibleTooltipLeft,\n startText,\n }) {\n const className = (n) => cn(n, classes);\n\n const toolTipLeft = useRef();\n\n useEffect(() => {\n if(isVisibleTooltipLeft)\n show(toolTipLeft.current)\n else hide(toolTipLeft.current);\n }, [isVisibleTooltipLeft]);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n className={className('toolTipArea')}\n ref={toolTipLeft}>\n <g\n transform={`scale(${resizeToolTip(height)})`}\n >\n <rect\n className={className('toolTip')}\n x={-2.5}\n y={-8}\n width={startText.length*2}\n height={6.5}\n rx={1}\n />\n <path\n className={className('toolTip')}\n d={'M -1,-1.7 0,-0.5 1,-1.7'}\n />\n </g>\n <text\n className={className('toolTipText')}\n style={{\n fontSize: resizeToolTipText(height) + 'px'\n }}\n x=\"-2\"\n y={-resizeToolTipText(height)}\n >\n {startText}\n </text>\n </g>\n );\n};\n\nLeftToolTip.propTypes = {\n classes: PropTypes.object.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n height: PropTypes.number.isRequired,\n isVisibleTooltipLeft: PropTypes.bool.isRequired,\n startText: PropTypes.string.isRequired,\n}\n","import { cn } from \"../styles\";\nimport React, {useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\n\nimport clsx from 'clsx';\nimport {hide, show, resizeToolTip, resizeToolTipText, resizeToolTipRightDelta} from './utils';\n\n\nexport default function RightToolTip({\n classes, origin,\n isVisibleTooltipRight,\n stopText, height\n }) {\n const className = (n) => cn(n, classes);\n\n const toolTipRight = useRef();\n\n useEffect(() => {\n if(isVisibleTooltipRight)\n show(toolTipRight.current)\n else hide(toolTipRight.current);\n }, [isVisibleTooltipRight]);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n className={className('toolTipArea')}\n ref={toolTipRight}>\n <g\n transform={`scale(-${resizeToolTip(height)},-${resizeToolTip(height)})`}\n >\n <rect\n className={className('toolTip')}\n x={-2.5}\n y={-8}\n width={stopText.length*2}\n height={6.5}\n rx={1}\n />\n <path\n className={className('toolTip')}\n d={'M -1,-1.7 0,-0.5 1,-1.7'}\n />\n </g>\n <text\n className={clsx(\n \"tl-toolTipText\",\n classes.toolTipText,\n \"tl-toolTipTextRight\",\n classes.toolTipTextRight,\n )}\n style={{\n fontSize: resizeToolTipText(height) + 'px'\n }}\n x=\"2\"\n y={resizeToolTipText(height)+resizeToolTipRightDelta(height)}\n >\n {stopText}\n </text>\n </g>\n );\n};\n\nRightToolTip.propTypes = {\n classes: PropTypes.object.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n height: PropTypes.number.isRequired,\n isVisibleTooltipRight: PropTypes.bool.isRequired,\n stopText: PropTypes.string.isRequired,\n}\n","import React, {useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {hide, show} from './cursorElements/utils';\n\nimport DragOverlay from './cursorElements/DragOverlay';\nimport ZoomOut from './cursorElements/ZoomOut';\nimport CursorIcon from './cursorElements/CursorIcon';\nimport CursorSelection from './cursorElements/CursorSelection';\nimport LeftHandle from './cursorElements/LeftHandle';\nimport RightHandle from './cursorElements/RightHandle';\nimport ZoomIn from './cursorElements/ZoomIn';\nimport LeftToolTip from './cursorElements/LeftToolTip';\nimport RightToolTip from './cursorElements/RightToolTip';\nimport moment from './moment-shim';\n\nexport default function Cursor({\n overlayWidth, overlayHeight,\n items, setBarHovered = identity, setToolTipVisible = identity, showHistoToolTip, tooltipVisible, barHovered,\n dragging, setDragging = identity,\n origin, height,\n startPos, endPos,\n canZoom, minZoom, maxZoom, maxSize,\n zoomOutLabel, zoomOut,\n cursorIsAfterView, cursorIsBeforeView,\n gotoCursorLabel, onGotoCursor,\n rcToolTipPrefixCls, classes = {},\n onStartDrawCursor, onDrawCursor, onEndCursor,\n onMoveDomain = identity, onMovedDomain = identity, onDragCursor, onEndDragCursor,\n startText, stopText,\n zoomInLabel, zoomIn,\n startIsOutOfView, endIsOutOfView, tools,\n onResizeLeftCursor, onResizeRightCursor, onEndResizeCursor\n }\n){\n const dragOverlay = useRef();\n const zoomInButton = useRef();\n const cursorSelection = useRef();\n\n const renderIcon = (cursorIsAfterView || cursorIsBeforeView);\n const cursorWidth = endPos - startPos < 1 ? 1 : endPos - startPos;\n\n const [isVisibleTTR, setVisibleTTR] = useState(false);\n const [isVisibleTTL, setVisibleTTL] = useState(false);\n\n const originSelection = {\n x: startPos,\n y: 0\n };\n\n return (\n <g transform={`translate(${origin.x},${origin.y})`}>\n <DragOverlay\n ref={dragOverlay}\n width={overlayWidth}\n height={overlayHeight}\n showToolTipLeft={setVisibleTTL}\n showToolTipRight={setVisibleTTR}\n onDrawCursor={onDrawCursor}\n onEndCursor={onEndCursor}\n onMovedDomain={onMovedDomain}\n onMoveDomain={onMoveDomain}\n onStartDrawCursor={onStartDrawCursor}\n\n setToolTipVisible={setToolTipVisible}\n setBarHovered={setBarHovered}\n items={items}\n tooltipVisible={tooltipVisible}\n barHovered={barHovered}\n showHistoToolTip={showHistoToolTip}\n marginBottom={overlayHeight - height - 4}\n dragging={dragging}\n setDragging={setDragging}\n cursorSelection={cursorSelection}\n />\n { renderIcon &&\n <CursorIcon\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n origin={{\n x: cursorIsAfterView ? startPos-17 : startPos-23,\n y: height/2-24\n }}\n position={startPos === 1 ? 'left' : 'right'}\n gotoCursorLabel={gotoCursorLabel}\n onGotoCursor={onGotoCursor}\n />\n }\n <g style={{display: renderIcon ? 'none' : undefined}}\n transform={`translate(${originSelection.x},${originSelection.y})`}\n onMouseOver={() => {canZoom && tools.zoomIn!==false && !maxZoom && show(zoomInButton.current)}}\n onMouseOut={() => {canZoom && tools.zoomIn!==false && hide(zoomInButton.current)}}\n >\n <CursorSelection\n ref={cursorSelection}\n classes={classes}\n dragOverlay={dragOverlay}\n maxSize={maxSize}\n canZoom={canZoom}\n startPos={startPos}\n endPos={endPos}\n height={height}\n showToolTipLeft={setVisibleTTL}\n showToolTipRight={setVisibleTTR}\n onDragCursor={onDragCursor}\n onEndDragCursor={onEndDragCursor}\n onMovedDomain={onMovedDomain}\n onMoveDomain={onMoveDomain}\n zoomIn={zoomIn}\n width={cursorWidth}\n\n setToolTipVisible={setToolTipVisible}\n setBarHovered={setBarHovered}\n items={items}\n tooltipVisible={tooltipVisible}\n barHovered={barHovered}\n showHistoToolTip={showHistoToolTip}\n dragging={dragging}\n setDragging={setDragging}\n />\n <LeftHandle\n classes={classes}\n origin={{\n x: 0,\n y: height/2+2\n }}\n maxSize={maxSize}\n dragOverlay={dragOverlay}\n startIsOutOfView={startIsOutOfView}\n showToolTipLeft={setVisibleTTL}\n onResizeLeftCursor={onResizeLeftCursor}\n onEndResizeCursor={onEndResizeCursor}\n setDragging={setDragging}\n />\n <RightHandle\n classes={classes}\n origin={{\n x: cursorWidth,\n y: height/2+2\n }}\n maxSize={maxSize}\n dragOverlay={dragOverlay}\n endIsOutOfView={endIsOutOfView}\n showToolTipRight={setVisibleTTR}\n onResizeRightCursor={onResizeRightCursor}\n onEndResizeCursor={onEndResizeCursor}\n setDragging={setDragging}\n />\n {canZoom && tools.zoomIn!==false &&\n <ZoomIn\n ref={zoomInButton}\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n origin={{\n x: cursorWidth - 25,\n y: 0\n }}\n zoomInLabel={zoomInLabel}\n onZoomIn={zoomIn}\n />}\n <LeftToolTip\n classes={classes}\n origin={{\n x: 0,\n y: height/2\n }}\n height={height}\n startText={startText}\n isVisibleTooltipLeft={isVisibleTTL}\n />\n <RightToolTip\n classes={classes}\n origin={{\n x: cursorWidth,\n y: height/2 + 4\n }}\n height={height}\n stopText={stopText}\n isVisibleTooltipRight={isVisibleTTR}\n />\n </g>\n { canZoom && !minZoom && tools.zoomOut!==false &&\n <ZoomOut\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n origin={{\n x: overlayWidth - 10,\n y: height - 20\n }}\n zoomOutLabel={zoomOutLabel}\n onZoomOut={zoomOut}\n />}\n </g>\n );\n}\n\nCursor.propTypes = {\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n\n startPos: PropTypes.number.isRequired,\n startIsOutOfView: PropTypes.bool,\n endPos: PropTypes.number.isRequired,\n endIsOutOfView: PropTypes.bool,\n height: PropTypes.number.isRequired,\n\n overlayHeight: PropTypes.number.isRequired,\n overlayWidth: PropTypes.number.isRequired,\n items: PropTypes.arrayOf(PropTypes.shape({\n start: PropTypes.instanceOf(moment).isRequired,\n end: PropTypes.instanceOf(moment).isRequired,\n x1: PropTypes.number,\n x2: PropTypes.number,\n metrics: PropTypes.arrayOf(PropTypes.number).isRequired,\n total: PropTypes.number.isRequired,\n })),\n tooltipVisible: PropTypes.bool,\n barHovered: PropTypes.number,\n dragging: PropTypes.bool,\n setBarHovered: PropTypes.func,\n setToolTipVisible: PropTypes.func,\n setDragging: PropTypes.func,\n\n cursorIsBeforeView: PropTypes.bool,\n cursorIsAfterView: PropTypes.bool,\n\n maxSize: PropTypes.bool,\n\n startText: PropTypes.string.isRequired,\n stopText: PropTypes.string.isRequired,\n\n canZoom: PropTypes.bool.isRequired,\n maxZoom: PropTypes.bool,\n minZoom: PropTypes.bool,\n\n zoomIn: PropTypes.func,\n zoomOut: PropTypes.func,\n\n onResizeLeftCursor: PropTypes.func.isRequired,\n onResizeRightCursor: PropTypes.func.isRequired,\n onEndResizeCursor: PropTypes.func.isRequired,\n\n onDragCursor: PropTypes.func.isRequired,\n onEndDragCursor: PropTypes.func.isRequired,\n\n onStartDrawCursor: PropTypes.func.isRequired,\n onDrawCursor: PropTypes.func.isRequired,\n onEndCursor: PropTypes.func.isRequired,\n\n onMoveDomain: PropTypes.func,\n onMovedDomain: PropTypes.func,\n\n onGotoCursor: PropTypes.func,\n gotoCursorLabel: PropTypes.string,\n zoomInLabel: PropTypes.string,\n zoomOutLabel: PropTypes.string,\n\n classes: PropTypes.object,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n\n tools: PropTypes.shape({\n zoomIn: PropTypes.bool,\n zoomOut: PropTypes.bool,\n }),\n};\n\nconst identity = () => {};\n\n","import { cn } from \"../styles\";\nimport React from 'react';\nimport moment from '../moment-shim';\nimport { sum as _sum } from '../utils';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ToolTip from '../ToolTip';\n\n\nexport default function Histogram({\n classes, items, metricsDefinition, origin,\n barHovered, tooltipVisible, verticalScale, dragging,\n HistoToolTip, onFormatMetricLegend, onFormatTimeToolTips\n}){\n\n if(!items){\n return null;\n }\n\n const className = (n) => cn(n, classes);\n\n return <g transform={`translate(${origin.x}, ${origin.y})`}>\n {\n items.map((item, i) => (\n <g key={i}>\n {\n metricsDefinition.colors.map((color, m) => (\n item.metrics[m] > 0 &&\n <rect\n key={m}\n className={className('histoItem')}\n style={{\n fill: color.fill,\n stroke: color.stroke,\n }}\n x={item.x1}\n y={-verticalScale(_sum(item.metrics.slice(0, m + 1)))}\n width={item.x2-item.x1}\n height={verticalScale(item.metrics[m])}\n />\n ))\n }\n {\n barHovered === i && !dragging &&\n <ToolTip\n overlay={\n <HistoToolTip\n item={item}\n metricsDefinition={metricsDefinition}\n onFormatTimeToolTips={onFormatTimeToolTips}\n onFormatMetricLegend={onFormatMetricLegend}\n classes={classes}\n />\n }\n visible={tooltipVisible}\n >\n <rect\n className={className('histoHovered')}\n x={item.x1}\n y={-item.height}\n width={item.x2-item.x1}\n height={item.height}\n />\n </ToolTip>\n }\n </g>\n ))\n }\n </g>;\n}\n\nHistogram.propTypes = {\n classes: PropTypes.object,\n items: PropTypes.arrayOf(PropTypes.shape({\n start: PropTypes.instanceOf(moment).isRequired,\n end: PropTypes.instanceOf(moment).isRequired,\n x1: PropTypes.number,\n x2: PropTypes.number,\n metrics: PropTypes.arrayOf(PropTypes.number).isRequired,\n total: PropTypes.number.isRequired,\n })),\n metricsDefinition: PropTypes.shape({\n count: PropTypes.number.isRequired,\n legends: PropTypes.arrayOf(PropTypes.string).isRequired,\n colors: PropTypes.arrayOf(PropTypes.shape({\n fill: PropTypes.string.isRequired,\n stroke: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n })).isRequired\n }).isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n verticalScale: PropTypes.func.isRequired,\n onFormatTimeToolTips: PropTypes.func.isRequired,\n onFormatMetricLegend: PropTypes.func.isRequired,\n HistoToolTip: PropTypes.elementType,\n barHovered: PropTypes.number,\n tooltipVisible: PropTypes.bool,\n};\n","export const arrow = `m 0,-5 5,5 -5,5`;\n","import React from 'react';\nimport moment from '../moment-shim';\nimport PropTypes from 'prop-types';\nimport {timeDay} from 'd3-time';\nimport clsx from 'clsx';\n\nimport { arrow } from \"./axesStyles\";\nimport { cn } from \"../styles\";\n\nexport default function XAxis({min, max, origin, axisWidth, marks, xAxis, classes, arrowPath = arrow, onFormatTimeLegend}){\n\n const now = moment();\n\n const className = (n) => cn(n, classes);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n >\n {/* Horizontal Axis */}\n <path\n className={className('axis')}\n d={`M 0,-6 0,6`}\n />\n <path\n className={className('axis')}\n d={`M 0,0 ${axisWidth + 5},0`}\n />\n <g transform={`translate(${axisWidth},0)`}>\n <path\n className={className('arrow')}\n d={arrowPath}\n />\n </g>\n\n {/* Marks */}\n {\n marks && marks.map((m, index) => (\n <g\n key={m.toISOString()}\n transform={`translate(${xAxis(m)},0)`}\n >\n <path\n className={className('limitMarker')}\n d='M 0,0 0,6'\n />\n <text x={0}\n y={15}\n className={clsx(className('timeAxisText'), timeDay(m) >= m && className('timeAxisDaysText'))}\n >\n {onFormatTimeLegend(m)}\n </text>\n </g>\n )\n )\n }\n\n {/* Now */}\n { xAxis && now.isSameOrBefore(max) && now.isSameOrAfter(min) &&\n <path\n transform={`translate(${xAxis(now)},0)`}\n className={className('now')}\n d={`m -3,6 6,0 -3,-6 Z`}\n />\n }\n </g>\n );\n}\n\nXAxis.propTypes = {\n axisWidth:PropTypes.number.isRequired,\n classes: PropTypes.object,\n min: PropTypes.instanceOf(moment),\n max: PropTypes.instanceOf(moment),\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n marks: PropTypes.array,\n xAxis: PropTypes.func,\n arrowPath: PropTypes.string,\n onFormatTimeLegend: PropTypes.func.isRequired,\n};\n\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { arrow } from \"./axesStyles\";\nimport { cn } from \"../styles\";\nimport clsx from 'clsx';\n\nexport default function YAxis({classes, marks, yAxis, onFormatMetricLegend, maxHeight, origin, arrowPath = arrow}){\n\n const className = (n) => cn(n, classes);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n >\n <path\n className={className('axis')}\n d={`M 0,0 0, ${-maxHeight - 5}`}\n />\n <g transform={`translate(0, ${-maxHeight}) rotate(270)`}>\n <path\n className={className('arrow')}\n d={arrowPath}\n />\n </g>\n\n {\n marks.map((m, index) => (\n <g\n key={index}\n transform={`translate(0,${-yAxis(m)})`}\n >\n {m > 0 &&\n <text\n transform={`translate(0,5)`}\n className={className('verticalAxisText')}\n x={-7}\n y={-3}\n >\n {onFormatMetricLegend(m)}\n </text>\n }\n </g>\n ))\n }\n </g>\n );\n}\n\nYAxis.propTypes = {\n classes: PropTypes.object,\n maxHeight:PropTypes.number.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n marks: PropTypes.array,\n yAxis: PropTypes.func,\n arrowPath: PropTypes.string,\n onFormatMetricLegend: PropTypes.func.isRequired,\n};\n\n","import { cn } from \"../styles\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n\n\nexport default function Legend({classes, metricsDefinition, origin}){\n\n const fill = [...metricsDefinition.colors].reverse();\n const legends = [...metricsDefinition.legends].reverse();\n\n const className = (n) => cn(n, classes);\n\n return (\n <g\n transform={`translate(${origin.x},${origin.y})`}\n >\n {legends.map((leg,i) => (\n <text\n key={i}\n className={className('legend')}\n style={{\n fill: fill[i].text\n }}\n x={0}\n y={14*(i+1)}\n >\n <tspan>{leg}</tspan>\n </text>\n ))}\n </g>\n )\n}\n\nLegend.propTypes = {\n classes: PropTypes.object.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n metricsDefinition: PropTypes.shape({\n count: PropTypes.number.isRequired,\n legends: PropTypes.arrayOf(PropTypes.string).isRequired,\n colors: PropTypes.arrayOf(PropTypes.shape({\n fill: PropTypes.string.isRequired,\n stroke: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n })).isRequired\n }).isRequired,\n};\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport ToolTip from '../ToolTip';\nimport clsx from 'clsx';\n\n\n\nexport default function Button({tipPlacement, tipOverlay, path, origin, scale, iconSize, onClick, classes, rcToolTipPrefixCls, isActive}){\n const [isOver, setOver] = useState(false);\n\n return (\n <ToolTip\n placement={tipPlacement}\n overlay={tipOverlay}\n >\n <g\n className={clsx(\n \"tl-buttonGroup\",\n classes.buttonGroup,\n !isActive && \"tl-buttonGroupInactive\",\n !isActive && classes.buttonGroupInactive,\n )}\n transform={`translate(${origin.x},${origin.y}) scale(${scale})`}\n onMouseOver={(event) => {\n isActive && setOver(true);\n }}\n onMouseOut={(event) => {\n isActive && setOver(false);\n }}\n onClick={() => {\n isActive && onClick();\n }}\n >\n <rect\n className={clsx(\n \"tl-buttonOverShape\",\n classes.buttonOverShape\n )}\n x ='0'\n y ='0'\n height = {iconSize}\n width = {iconSize}\n />\n <path\n className={clsx(\n \"tl-buttonIcon\",\n classes.buttonIcon,\n isOver && \"tl-buttonIconOver\",\n isOver && classes.buttonIconOver\n )}\n d={path}\n />\n </g>\n </ToolTip>\n );\n}\n\nButton.propTypes = {\n tipPlacement: PropTypes.string.isRequired,\n tipOverlay: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n scale: PropTypes.number.isRequired,\n iconSize: PropTypes.number.isRequired,\n onClick: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n isActive: PropTypes.bool.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from '../moment-shim';\nimport Button from './Button';\n\nconst doubleArrowIcon = 'm 0,0 5,5 0,-5 5,5 -5,5 0,-5 -5,5 Z';\nconst resetIcon = 'M5 15H3v4c0 1.1.9 2 2 2h4v-2H5v-4zM5 5h4V3H5c-1.1 0-2 .9-2 2v4h2V5zm14-2h-4v2h4v4h2V5c0-1.1-.9-2-2-2zm0 16h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4zM12 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z';\nconst gotoNowIcon = 'M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z';\n\nexport default function Tools({ tools, classes, rcToolTipPrefixCls,\n labels, histoWidth, isActive, origin,\n onResetTime, shiftTimeLine, onGoto\n}){\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n >\n {tools.slideForward!==false &&\n <Button\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n tipPlacement=\"left\"\n tipOverlay={labels.forwardButtonTip}\n origin={{x: histoWidth + 22, y: -5}}\n scale={1}\n path={doubleArrowIcon}\n iconSize={10}\n isActive={isActive}\n onClick={() => {shiftTimeLine(-120)}}\n />\n }\n\n {tools.slideBackward!==false &&\n <Button\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n tipPlacement=\"right\"\n tipOverlay={labels.backwardButtonTip}\n origin={{x: -7, y: 5}}\n scale={-1}\n path={doubleArrowIcon}\n iconSize={10}\n isActive={isActive}\n onClick={() => {shiftTimeLine(120)}}\n />\n }\n\n {tools.resetTimeline!==false &&\n <Button\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n tipPlacement=\"left\"\n tipOverlay={labels.resetButtonTip}\n origin={{x: histoWidth + 17, y: -30}}\n scale={0.75}\n path={resetIcon}\n iconSize={24}\n isActive={isActive}\n onClick={onResetTime}\n />\n }\n\n {tools.gotoNow!==false &&\n <Button\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n tipPlacement=\"left\"\n tipOverlay={labels.gotoNowButtonTip}\n origin={{x: histoWidth + 17, y: tools.resetTimeline!==false ? -53 : -30}}\n scale={0.75}\n path={gotoNowIcon}\n iconSize={24}\n isActive={isActive}\n onClick={onGoto}\n />\n }\n </g>\n );\n}\n\nTools.propTypes = {\n tools: PropTypes.shape({\n slideForward: PropTypes.bool,\n slideBackward: PropTypes.bool,\n resetTimeline: PropTypes.bool,\n gotoNow: PropTypes.bool,\n cursor: PropTypes.bool,\n }).isRequired,\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n labels: PropTypes.shape({\n forwardButtonTip: PropTypes.string.isRequired,\n backwardButtonTip: PropTypes.string.isRequired,\n resetButtonTip: PropTypes.string.isRequired,\n gotoNowButtonTip: PropTypes.string.isRequired,\n }).isRequired,\n histoWidth: PropTypes.number.isRequired,\n isActive: PropTypes.bool.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n onResetTime: PropTypes.func.isRequired,\n shiftTimeLine: PropTypes.func.isRequired,\n onGoto: PropTypes.func.isRequired\n};\n","import { cn } from \"../styles\";\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport moment from '../moment-shim';\nimport React from 'react';\n\n\nexport default function HistoTooltip({metricsDefinition, item, onFormatTimeToolTips, onFormatMetricLegend, classes}){\n\n const className = (n) => cn(n, classes);\n\n return (\n <>\n <div>\n <div className={className('innerTipLeft')}>\n <br/>\n →\n </div>\n <div className={className('innerTipRight')}>\n {onFormatTimeToolTips(item.start)}<br/>\n {onFormatTimeToolTips(item.end)}\n </div>\n </div>\n <div className={className('innerTipMetrics')}>\n {metricsDefinition.colors.map((color, m) => {\n const reversed = metricsDefinition.colors.length - m - 1;\n return (\n <div key={reversed}>\n - <span style={{color: metricsDefinition.colors[reversed].stroke}}>\n {metricsDefinition.legends[reversed]}\n </span>\n <span className={className('innerTipRight')}>\n {onFormatMetricLegend(item.metrics[reversed])}\n </span>\n </div>\n )\n })}\n <hr/>\n <div>\n Total\n <span className={className('innerTipRight')}>\n {onFormatMetricLegend(item.total)}\n </span>\n </div>\n </div>\n </>\n );\n}\n\nHistoTooltip.propTypes = {\n classes: PropTypes.object,\n item: PropTypes.shape({\n start: PropTypes.instanceOf(moment).isRequired,\n end: PropTypes.instanceOf(moment).isRequired,\n x1: PropTypes.number,\n x2: PropTypes.number,\n metrics: PropTypes.arrayOf(PropTypes.number).isRequired,\n total: PropTypes.number.isRequired,\n }),\n metricsDefinition: PropTypes.shape({\n count: PropTypes.number.isRequired,\n legends: PropTypes.arrayOf(PropTypes.string).isRequired,\n colors: PropTypes.arrayOf(PropTypes.shape({\n fill: PropTypes.string.isRequired,\n stroke: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n })).isRequired\n }).isRequired,\n onFormatTimeToolTips: PropTypes.func.isRequired,\n onFormatMetricLegend: PropTypes.func.isRequired,\n};\n","import { cn } from \"../styles\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport moment from '../moment-shim';\nimport ToolTip from '../ToolTip';\n\nconst qualityHeight = 3;\n\n\nexport default function QualityLine({classes, rcToolTipPrefixCls, origin, quality, xAxis, qualityScale}){\n\n const className = (n) => cn(n, classes);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}>\n {\n quality.items.map((item, i) => {\n const x1 = xAxis(item.time);\n const x2 = xAxis(moment(item.time).add(quality.intervalMin, 'minutes'));\n const rect = (\n <rect\n key={i}\n className={className('qualityCell')}\n style={{\n fill: qualityScale(item.quality),\n }}\n onMouseOver={(event) => { event.target.style.fill = '#00ebeb'; }}\n onMouseOut={(event) => { event.target.style.fill = qualityScale(item.quality); }}\n x={x1}\n y={1}\n width={x2-x1}\n height={qualityHeight}\n />\n );\n\n if(item.tip){\n return (\n <ToolTip\n key={i}\n placement={'bottom'}\n overlay={item.tip}\n mouseEnterDelay={0.1}\n >\n {rect}\n </ToolTip>\n )\n }\n else return rect;\n })\n }\n </g>\n );\n}\n\nQualityLine.propTypes = {\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n xAxis: PropTypes.func.isRequired,\n quality: PropTypes.shape({\n items: PropTypes.arrayOf(PropTypes.shape({\n time: PropTypes.instanceOf(moment).isRequired,\n quality: PropTypes.number.isRequired,\n tip: PropTypes.node\n })),\n intervalMin: PropTypes.number\n }).isRequired,\n qualityScale: PropTypes.func.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { cn } from \"../styles\";\nimport clsx from 'clsx';\n\nexport default function YAxis({classes, marks, yAxis, origin, xAxisWidth}){\n\n const className = (n) => cn(n, classes);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n >\n {\n marks.map((m, index) => (\n <g\n key={index}\n transform={`translate(0,${-yAxis(m)})`}\n >\n <path\n className={className('grid')}\n d={`M -5,0 ${xAxisWidth},0`}\n />\n </g>\n ))\n }\n </g>\n );\n}\n\nYAxis.propTypes = {\n classes: PropTypes.object,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n marks: PropTypes.array,\n yAxis: PropTypes.func,\n xAxisWidth: PropTypes.number,\n};\n\n","import React from 'react';\nimport moment from '../moment-shim';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { cn } from \"../styles\";\n\nexport default function XAxis({origin, marks, xAxis, classes, yAxisHeight}){\n\n\n const className = (n) => cn(n, classes);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}>\n {/* Grid */}\n {\n marks && marks.map((m, index) => (\n <g\n key={m.toISOString()}\n transform={`translate(${xAxis(m)},0)`}\n >\n <path\n className={className('grid')}\n d={`M 0,0 0,${-yAxisHeight}`}\n />\n </g>\n )\n )\n }\n </g>\n );\n}\n\nXAxis.propTypes = {\n classes: PropTypes.object,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n marks: PropTypes.array,\n xAxis: PropTypes.func,\n yAxisHeight: PropTypes.number,\n};\n\n","import moment, { type Moment } from './moment-shim';\ntype Duration = { asMilliseconds(): number };\n\n/**\n * API-boundary funnel.\n *\n * External callers pass native `Date` (and millisecond numbers for\n * durations) — the library is internally written against moment-timezone.\n * These helpers normalize at the boundary so consumers don't need to take\n * a moment peer-dep.\n *\n * For compat during migration, inputs may also be moment instances.\n * In a future release (when moment is replaced by Luxon), this file is\n * the only place that needs to change.\n */\n\nexport type Instant = Date | Moment | number;\nexport type Millis = number | Duration;\n\nexport function toMoment(x: Instant, zone?: string): Moment {\n if (moment.isMoment(x)) return x as Moment;\n const m = zone ? moment.tz(x as any, zone) : moment(x as any);\n return m;\n}\n\nexport function toDuration(x: Millis): Duration {\n if (moment.isDuration(x)) return x as Duration;\n return moment.duration(x as number);\n}\n\nexport function fromMoment(m: Moment | null | undefined): Date | null {\n return m ? m.toDate() : null;\n}\n\nexport interface DateDomain { min: Date; max: Date; }\nexport interface DateTimeSpan { start: Date; stop: Date; }\n\nexport function domainToMoments(d: { min: Instant; max: Instant }, zone?: string) {\n return { min: toMoment(d.min, zone), max: toMoment(d.max, zone) };\n}\n\nexport function timeSpanToMoments(t: { start: Instant; stop: Instant }, zone?: string) {\n return { start: toMoment(t.start, zone), stop: toMoment(t.stop, zone) };\n}\n\nexport function domainToDates(d: { min: Moment; max: Moment }): DateDomain {\n return { min: d.min.toDate(), max: d.max.toDate() };\n}\n\nexport function timeSpanToDates(t: { start: Moment; stop: Moment }): DateTimeSpan {\n return { start: t.start.toDate(), stop: t.stop.toDate() };\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport moment from './moment-shim';\nimport { scaleLinear, scaleTime } from 'd3-scale';\nimport { merge as _merge } from './utils';\nimport { round as _round } from './utils';\nimport { max as _max } from './utils';\nimport { floor as _floor } from './utils';\nimport { isEqual as isEqual } from './utils';\nimport { isFunction as isFunction } from './utils';\n\nimport CursorRaw from './Cursor';\nimport HistogramRaw from './timeLineElements/Histogram';\nimport XAxisRaw from './timeLineElements/XAxis';\nimport YAxisRaw from './timeLineElements/YAxis';\nimport LegendRaw from './timeLineElements/Legend';\nimport ToolsRaw from './timeLineElements/Tools';\nimport HistoToolTipDefaultRaw from './timeLineElements/HistoToolTip';\n\n// Children are still JSX; their PropTypes-inferred types are too narrow\n// for the live prop surface. Cast to any until they are converted to .tsx.\nconst Cursor = CursorRaw as any;\nconst Histogram = HistogramRaw as any;\nconst XAxis = XAxisRaw as any;\nconst YAxis = YAxisRaw as any;\nconst Legend = LegendRaw as any;\nconst Tools = ToolsRaw as any;\nconst HistoToolTipDefault = HistoToolTipDefaultRaw as any;\nimport theme, { defaultLabels, defaultQualityScale } from './theme';\n\nimport QualityLine from './timeLineElements/QualityLine';\nimport YGrid from './timeLineElements/YGrid';\nimport XGrid from './timeLineElements/XGrid';\n\nconst marginDefault = { left: 50, right: 45, top: 5, bottom: 5 };\nconst xAxisDefault = { height: 20, spaceBetweenTicks: 70, barsBetweenTicks: 8 };\nconst defaultZoomOutFactor = 1.25;\n\nconst defaultTools = {\n slideForward: true,\n slideBackward: true,\n resetTimeline: true,\n gotoNow: true,\n cursor: true,\n zoomIn: true,\n zoomOut: true,\n};\n\nexport interface TimeLineHandle {\n zoomIn(): void;\n zoomOut(): void;\n shiftTimeLine(delta: number): void;\n}\n\nfunction computeMarginAndWidth(props: any) {\n const { margin, showLegend, metricsDefinition, width } = props;\n const localMargin = { ...marginDefault, ...margin };\n if (showLegend) {\n const maxLength = _max(metricsDefinition.legends.map((s: string) => s.length));\n localMargin.left = _max([5 + (maxLength as number) * 9, localMargin.left]);\n }\n return {\n margin: localMargin,\n histoWidth: width - localMargin.left - localMargin.right,\n };\n}\n\nimport {\n toMoment,\n toDuration,\n domainToMoments,\n timeSpanToMoments,\n} from './time';\n\n// --- Outer shell: boundary normalization + single-domain API --------------\n//\n// Consumers of the new v5 API pass:\n// - `domain: {min, max}` (single, controlled by host)\n// - `onDomainChange(domain)` to be notified of zoom/pan/shift changes\n// - `onTimeSpanChange({start, stop})` instead of onCustomRange\n// - `onLoadHisto({intervalMs, start, end})` as an object\n// - `onLoadDefaultDomain()` returns Domain | Promise<Domain>\n// - native `Date` at every instant, number-ms at every duration\n// - required `timeZone: string` (IANA)\n//\n// Internally the component still runs against a `domains` STACK (for\n// zoom-out undo semantics) and moment-timezone types. The outer wrapper\n// owns the stack as useState and translates in both directions.\n\nconst momentToDate = (m: any): Date | null =>\n m && m.toDate ? m.toDate() : (m ?? null);\n\nconst dateDomain = (d: any): { min: Date; max: Date } => ({\n min: momentToDate(d?.min)!,\n max: momentToDate(d?.max)!,\n});\n\nconst TimeLineInner = forwardRef<TimeLineHandle, any>(function TimeLine(props, ref) {\n const {\n width, height, histo, quality, qualityScale = defaultQualityScale, metricsDefinition,\n classes = {}, rcToolTipPrefixCls = theme.rcToolTipPrefixCls, showLegend = true,\n tools = defaultTools,\n onFormatTimeLegend, onFormatMetricLegend, onResetTime, onFormatTimeToolTips,\n xAxis: xAxisProp = xAxisDefault, yAxis: yAxisProp = {},\n showHistoToolTip,\n HistoToolTip = HistoToolTipDefault,\n } = props;\n\n // --- Refs for instance-level mutable data (the class's `this.*`) --------\n\n const xAxisRef = useRef<any>(null);\n const timelineElementRef = useRef<SVGSVGElement | null>(null);\n\n const autoMoveRef = useRef<ReturnType<typeof setInterval> | null>(null);\n const isAutoMovingRef = useRef(false);\n const lastAutoMovingDeltaRef = useRef(0);\n const movedSinceLastFetchedRef = useRef(0);\n const widthOfLastUpdateRef = useRef<number | null>(null);\n const itemsRef = useRef<any[]>([]);\n\n const labelsRef = useRef<any>(_merge({ ...defaultLabels }, props.labels));\n useEffect(() => {\n labelsRef.current = _merge({ ...defaultLabels }, props.labels);\n }, [props.labels]);\n\n // --- Reactive state (the class's `this.state`) --------------------------\n\n const [state, setStateRaw] = useState<any>(() => {\n const initial: any = {\n isActive: false,\n start: props.timeSpan.start,\n stop: props.timeSpan.stop,\n maxTimespan: false,\n waitForLoad: false,\n tooltipVisible: false,\n barHovered: null,\n dragging: false,\n ticks: [],\n verticalMarks: [],\n ...computeMarginAndWidth(props),\n };\n return {\n ...initial,\n ...checkAndCorrectDomainPure({\n domain: props.domains[0],\n biggestVisibleDomain: props.biggestVisibleDomain,\n maxDomain: props.maxDomain,\n smallestResolution: props.smallestResolution,\n histoWidth: initial.histoWidth,\n }),\n };\n });\n\n // Mirrors for closure-free access inside callbacks.\n const stateRef = useRef(state);\n stateRef.current = state;\n const propsRef = useRef(props);\n propsRef.current = props;\n\n const patchState = useCallback((patch: any | ((s: any) => any)) => {\n setStateRaw((s: any) => ({ ...s, ...(typeof patch === 'function' ? patch(s) : patch) }));\n }, []);\n\n // --- Domain math --------------------------------------------------------\n\n const checkAndCorrectDomain = useCallback(({ domain }: { domain: any }) => {\n return checkAndCorrectDomainPure({\n domain,\n biggestVisibleDomain: propsRef.current.biggestVisibleDomain,\n maxDomain: propsRef.current.maxDomain,\n smallestResolution: propsRef.current.smallestResolution,\n histoWidth: stateRef.current.histoWidth,\n });\n }, []);\n\n // --- Data loading -------------------------------------------------------\n\n const getItems = useCallback((p: any, domain: any, shouldReload = true) => {\n const histoWidth = computeMarginAndWidth(propsRef.current).histoWidth;\n\n const xAxis = scaleTime().domain([domain.min, domain.max]).range([0, histoWidth]);\n xAxis.clamp(true);\n xAxisRef.current = xAxis;\n\n const ticks = xAxis.ticks(_floor(histoWidth / p.xAxis.spaceBetweenTicks));\n const intervalMs = _max([\n _round(moment(ticks[1]).diff(moment(ticks[0])) / p.xAxis.barsBetweenTicks),\n propsRef.current.smallestResolution.asMilliseconds(),\n ]) as number;\n\n patchState({ histoWidth, isActive: true, ticks });\n\n if (shouldReload && intervalMs) {\n widthOfLastUpdateRef.current = p.width;\n patchState({ waitForLoad: true });\n p.onLoadHisto(intervalMs, domain.min, domain.max);\n }\n }, [patchState]);\n\n // --- Mount: mirror componentDidMount ------------------------------------\n\n useEffect(() => {\n if (stateRef.current.domain) {\n getItems(propsRef.current, stateRef.current.domain);\n } else {\n propsRef.current.onLoadDefaultDomain();\n }\n patchState(computeMarginAndWidth(propsRef.current));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // --- Effects mirroring componentDidUpdate branches ----------------------\n\n // Max selection message\n const prevMaxTimespanRef = useRef(state.maxTimespan);\n useEffect(() => {\n if (!prevMaxTimespanRef.current && state.maxTimespan) {\n propsRef.current.onShowMessage(labelsRef.current.maxSelectionMsg);\n }\n prevMaxTimespanRef.current = state.maxTimespan;\n }, [state.maxTimespan]);\n\n // Width / margin change\n const prevWidthRef = useRef<number | undefined>(props.width);\n const prevMarginRef = useRef<any>(props.margin);\n useEffect(() => {\n if (prevWidthRef.current === props.width && isEqual(prevMarginRef.current, props.margin)) {\n prevWidthRef.current = props.width;\n prevMarginRef.current = props.margin;\n return;\n }\n const s = stateRef.current;\n if (s.isActive) {\n const big =\n widthOfLastUpdateRef.current !== null\n && Math.abs((props.width ?? 0) - (widthOfLastUpdateRef.current ?? 0)) > 30;\n getItems(props, s.domain, big);\n patchState(computeMarginAndWidth(props));\n } else {\n patchState(computeMarginAndWidth(props));\n }\n\n if (stateRef.current.domain) {\n const res = checkAndCorrectDomain({ domain: stateRef.current.domain });\n const { maxZoom, minZoom, domain, domainHasChanged, minTime, maxTime } = res;\n if (maxZoom !== stateRef.current.maxZoom || minZoom !== stateRef.current.minZoom) {\n patchState({\n maxZoom, minZoom, minTime, maxTime,\n domain: domainHasChanged ? domain : stateRef.current.domain,\n });\n if (domainHasChanged) {\n const newDomains = [domain, ...propsRef.current.domains.slice(1)];\n propsRef.current.onUpdateDomains(newDomains);\n }\n }\n }\n prevWidthRef.current = props.width;\n prevMarginRef.current = props.margin;\n }, [props.width, props.margin, getItems, patchState, checkAndCorrectDomain]);\n\n // timeSpan change\n const prevTimeSpanRef = useRef(props.timeSpan);\n useEffect(() => {\n const prev = prevTimeSpanRef.current;\n if (prev.start.isSame(props.timeSpan.start) && prev.stop.isSame(props.timeSpan.stop)) {\n return;\n }\n const newDomains = shiftDomainsPure(props.domains, {\n min: props.timeSpan.start,\n max: props.timeSpan.stop,\n }, props.biggestVisibleDomain);\n if (newDomains !== props.domains) {\n props.onUpdateDomains(newDomains);\n }\n patchState({ start: props.timeSpan.start, stop: props.timeSpan.stop });\n prevTimeSpanRef.current = props.timeSpan;\n }, [props.timeSpan, props.domains, props.biggestVisibleDomain, props, patchState]);\n\n // Current domain change\n const prevDomain0Ref = useRef(props.domains[0]);\n useEffect(() => {\n const prev = prevDomain0Ref.current;\n const curr = props.domains[0];\n const changed =\n (!prev && curr) ||\n (prev && curr && (!prev.min.isSame(curr.min) || !prev.max.isSame(curr.max)));\n if (!changed) {\n prevDomain0Ref.current = curr;\n return;\n }\n const res = checkAndCorrectDomain({ domain: curr });\n const { maxZoom, minZoom, domain, domainHasChanged, minTime, maxTime } = res;\n patchState({ maxZoom, minZoom, minTime, maxTime, domain });\n if (domainHasChanged) {\n const newDomains = [domain, ...propsRef.current.domains.slice(1)];\n propsRef.current.onUpdateDomains(newDomains);\n } else {\n getItems(propsRef.current, domain);\n }\n prevDomain0Ref.current = curr;\n }, [props.domains, checkAndCorrectDomain, getItems, patchState]);\n\n // histo change\n const prevHistoRef = useRef(props.histo);\n useEffect(() => {\n if (prevHistoRef.current !== props.histo) {\n patchState({ waitForLoad: false });\n prevHistoRef.current = props.histo;\n }\n }, [props.histo, patchState]);\n\n // legend change → recompute margin\n const prevLegendsRef = useRef(props.metricsDefinition.legends);\n useEffect(() => {\n if (prevLegendsRef.current !== props.metricsDefinition.legends) {\n patchState(computeMarginAndWidth(propsRef.current));\n prevLegendsRef.current = props.metricsDefinition.legends;\n }\n }, [props.metricsDefinition.legends, patchState]);\n\n // --- Prepare vertical scale + histogram (render helpers) ----------------\n\n const prepareVerticalScale = useCallback(() => {\n const items = histo && histo.items;\n const s = stateRef.current;\n const maxHeight =\n height - s.margin.bottom - s.margin.top - (xAxisProp.height || xAxisDefault.height);\n const maxScale = items ? (_max(items.map((i: any) => i.total)) as number) || 0 : 0;\n const verticalScale = scaleLinear().domain([0, maxScale]).range([0, maxHeight]);\n const verticalMarks =\n yAxisProp.spaceBetweenTicks && maxHeight > yAxisProp.spaceBetweenTicks * 2\n ? verticalScale.ticks(_floor(maxHeight / yAxisProp.spaceBetweenTicks))\n : [maxScale];\n return { verticalScale, verticalMarks, maxHeight };\n }, [histo, height, xAxisProp, yAxisProp]);\n\n const prepareHistogram = useCallback((args: { domain: any; verticalScale: any }) => {\n const { domain, verticalScale } = args;\n const xAxis = xAxisRef.current;\n if (histo && histo.items && domain && xAxis) {\n const { min, max } = domain;\n return histo.items\n .filter((item: any) =>\n item.total > 0 && item.time.isSameOrAfter(min) && item.time.isBefore(max),\n )\n .map((item: any) => {\n const start = moment(item.time);\n const end = moment(item.time).add(histo.intervalMs);\n return {\n x1: xAxis(start),\n x2: xAxis(end),\n start, end,\n metrics: item.metrics,\n total: item.total,\n height: verticalScale(item.total),\n };\n });\n }\n return [];\n }, [histo]);\n\n // --- Cursor / drag / zoom handlers (former instance methods) ------------\n\n const setAutoMove = useCallback((active: boolean, action?: any, delta?: number) => {\n if (active) {\n if (\n !autoMoveRef.current ||\n (autoMoveRef.current && Math.abs(lastAutoMovingDeltaRef.current - (delta ?? 0)) > 5)\n ) {\n if (autoMoveRef.current) clearInterval(autoMoveRef.current);\n autoMoveRef.current = setInterval(() => {\n action(delta);\n moveTimeLine(-(delta ?? 0));\n isAutoMovingRef.current = true;\n lastAutoMovingDeltaRef.current = delta ?? 0;\n }, 30);\n }\n } else {\n if (autoMoveRef.current) clearInterval(autoMoveRef.current);\n autoMoveRef.current = null;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleAutoSliding = useCallback((mouse: any, action: any) => {\n if (!mouse) return;\n const posX = mouse[0];\n const s = stateRef.current;\n if (posX < 0) setAutoMove(true, action, posX);\n else if (posX >= 0 && posX <= s.histoWidth) setAutoMove(false);\n else if (posX > s.histoWidth) setAutoMove(true, action, posX - s.histoWidth);\n }, [setAutoMove]);\n\n const movedTimeLine = useCallback(() => {\n movedSinceLastFetchedRef.current = 0;\n const domain = stateRef.current.domain;\n const p = propsRef.current;\n const domains = [domain, ...p.domains.slice(1)];\n const newDomains = shiftDomainsPure(domains, domain, p.biggestVisibleDomain);\n p.onUpdateDomains(newDomains);\n }, []);\n\n const stopAutoMove = useCallback(() => {\n if (autoMoveRef.current) setAutoMove(false);\n if (isAutoMovingRef.current) {\n isAutoMovingRef.current = false;\n movedTimeLine();\n }\n }, [setAutoMove, movedTimeLine]);\n\n const moveTimeLineCore = useCallback((delta: number) => {\n const p = propsRef.current;\n const s = stateRef.current;\n const { maxDomain, onShowMessage } = p;\n let { domain: currentDomain, minTime = false, maxTime = false } = s;\n const currentSpan = currentDomain.max.diff(currentDomain.min);\n\n if ((minTime && delta > 0) || (maxTime && delta < 0)) {\n return { ...currentDomain, moved: 0, minTime, maxTime };\n }\n const xAxis = xAxisRef.current;\n let min = moment(xAxis.invert(-delta));\n let max = moment(xAxis.invert(s.histoWidth - delta));\n let moved = delta;\n\n if (maxDomain.min && min.isBefore(maxDomain.min)) {\n moved = xAxis(maxDomain.min);\n min = moment(maxDomain.min);\n max = moment(min).add(currentSpan);\n minTime = true;\n onShowMessage(labelsRef.current.minDomainMsg);\n }\n if (maxDomain.max && max.isAfter(maxDomain.max)) {\n moved = xAxis(maxDomain.max);\n max = moment(maxDomain.max);\n min = moment(max).subtract(currentSpan);\n maxTime = true;\n onShowMessage(labelsRef.current.maxDomainMsg);\n }\n return { min, max, moved, minTime, maxTime };\n }, []);\n\n const moveTimeLine = useCallback((delta: number) => {\n const xAxis = xAxisRef.current;\n xAxis.clamp(false);\n const { min, max, moved, minTime, maxTime } = moveTimeLineCore(delta);\n if (moved !== 0) {\n xAxis.domain([min, max]);\n xAxis.clamp(true);\n const p = propsRef.current;\n const s = stateRef.current;\n const ticks = xAxis.ticks(_floor(s.histoWidth / p.xAxis.spaceBetweenTicks));\n movedSinceLastFetchedRef.current += moved;\n if (Math.abs(movedSinceLastFetchedRef.current) > 75 && p.fetchWhileSliding) {\n movedSinceLastFetchedRef.current = 0;\n getItems(p, { min, max });\n }\n patchState({ domain: { min, max }, minTime, maxTime, ticks });\n }\n }, [moveTimeLineCore, getItems, patchState]);\n\n const onResizeLeftCursor = useCallback((delta: number, mouse: any) => {\n const xAxis = xAxisRef.current;\n const s = stateRef.current;\n const p = propsRef.current;\n let newStart = moment(xAxis.invert(xAxis(s.start) + delta));\n let newStop = s.stop;\n let maxTimespan = false;\n if (newStart.isSameOrAfter(newStop)) {\n newStop = moment(xAxis.invert(xAxis(newStop) + delta));\n }\n if (p.biggestTimeSpan) {\n const min = moment(newStop).subtract(p.biggestTimeSpan);\n if (min.isSameOrAfter(newStart)) {\n newStart = min;\n maxTimespan = true;\n }\n }\n handleAutoSliding(mouse, onResizeLeftCursor);\n if (\n (newStop !== s.stop && newStop.isSameOrBefore(s.domain.max)) ||\n newStart.isSameOrAfter(s.domain.min)\n ) {\n patchState({ start: newStart, stop: newStop, maxTimespan });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleAutoSliding, patchState]);\n\n const onResizeRightCursor = useCallback((delta: number, mouse: any) => {\n const xAxis = xAxisRef.current;\n const s = stateRef.current;\n const p = propsRef.current;\n let newStop = moment(xAxis.invert(xAxis(s.stop) + delta));\n let newStart = s.start;\n let maxTimespan = false;\n if (newStop.isSameOrBefore(newStart)) {\n newStart = moment(xAxis.invert(xAxis(newStart) + delta));\n }\n if (p.biggestTimeSpan) {\n const max = moment(newStart).add(p.biggestTimeSpan);\n if (max.isSameOrBefore(newStop)) {\n newStop = max;\n maxTimespan = true;\n }\n }\n handleAutoSliding(mouse, onResizeRightCursor);\n if (newStop.isSameOrBefore(s.domain.max) && newStart.isSameOrAfter(s.domain.min)) {\n patchState({ start: newStart, stop: newStop, maxTimespan });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleAutoSliding, patchState]);\n\n const onDragCursor = useCallback((delta: number, mouse: any) => {\n const xAxis = xAxisRef.current;\n const s = stateRef.current;\n const p = propsRef.current;\n xAxis.clamp(false);\n const duration = s.stop.diff(s.start);\n let newStart = moment(xAxis.invert(xAxis(s.start) + delta));\n let newStop = moment(newStart).add(duration, 'milliseconds');\n xAxis.clamp(true);\n const { maxDomain } = p;\n if (maxDomain.min && newStart.isBefore(maxDomain.min)) newStart = moment(maxDomain.min);\n if (maxDomain.max && newStop.isAfter(maxDomain.max)) newStop = moment(maxDomain.max);\n handleAutoSliding(mouse, onDragCursor);\n patchState({ start: newStart, stop: newStop });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleAutoSliding, patchState]);\n\n const onStartDrawCursor = useCallback((pos: number) => {\n const xAxis = xAxisRef.current;\n patchState({\n start: moment(xAxis.invert(pos)),\n stop: moment(xAxis.invert(pos + 1)),\n maxTimespan: false,\n });\n }, [patchState]);\n\n const onDrawCursor = useCallback((delta: number, mouse: any) => {\n const xAxis = xAxisRef.current;\n const s = stateRef.current;\n const p = propsRef.current;\n let newStop = moment(xAxis.invert(xAxis(s.stop) + delta));\n let newStart = s.start;\n let maxTimespan = false;\n if (newStop.isSameOrBefore(newStart)) {\n newStart = moment(xAxis.invert(xAxis(newStart) + delta));\n }\n if (p.biggestTimeSpan) {\n const max = moment(newStart).add(p.biggestTimeSpan);\n if (max.isSameOrBefore(newStop)) {\n newStop = max;\n maxTimespan = true;\n }\n }\n handleAutoSliding(mouse, onDrawCursor);\n if (newStop.isSameOrBefore(s.domain.max) && newStart.isSameOrAfter(s.domain.min)) {\n patchState({ start: newStart, stop: newStop, maxTimespan });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleAutoSliding, patchState]);\n\n const onEndDrawCursor = useCallback(() => {\n stopAutoMove();\n const { onCustomRange, selectBarOnClick } = propsRef.current;\n const s = stateRef.current;\n let { start, stop, barHovered } = s;\n if (selectBarOnClick && itemsRef.current && barHovered > -1) {\n const item = itemsRef.current[barHovered];\n if (start.isSameOrAfter(item.start) && stop.isSameOrBefore(item.end)) {\n start = moment(item.start);\n stop = moment(item.end);\n patchState({ start, stop });\n }\n }\n onCustomRange(start, stop);\n }, [stopAutoMove, patchState]);\n\n const onEndChangeCursor = useCallback(() => {\n stopAutoMove();\n const { onCustomRange } = propsRef.current;\n const { start, stop } = stateRef.current;\n onCustomRange(start, stop);\n }, [stopAutoMove]);\n\n const zoomOnDomain = useCallback((targetDomain: any) => {\n const p = propsRef.current;\n const s = stateRef.current;\n if (s.waitForLoad) return;\n if (targetDomain.min.isSame(s.domain.min) && targetDomain.max.isSame(s.domain.max)) {\n p.onShowMessage(labelsRef.current.zoomInWithoutChangingSelectionMsg);\n return;\n }\n const { maxZoom, domain } = checkAndCorrectDomain({ domain: targetDomain });\n const { maxZoom: currentMaxZoom } = s;\n if (maxZoom && maxZoom !== currentMaxZoom) {\n p.onShowMessage(labelsRef.current.zoomSelectionResolutionExtended);\n }\n const domains = [domain, ...p.domains];\n patchState({ maxZoom, minZoom: false, domain });\n p.onUpdateDomains(domains);\n }, [checkAndCorrectDomain, patchState]);\n\n const zoomOutTo = useCallback((domains: any[]) => {\n const res = checkAndCorrectDomain({ domain: domains[0] });\n const { minZoom, domain, domainHasChanged, maxTime, minTime } = res;\n const p = propsRef.current;\n if (minZoom) p.onShowMessage(labelsRef.current.minZoomMsg);\n if (minTime) p.onShowMessage(labelsRef.current.minDomainMsg);\n if (maxTime) p.onShowMessage(labelsRef.current.maxDomainMsg);\n const newDomains = domainHasChanged ? [domain, ...p.domains.slice(1)] : domains;\n patchState({ maxZoom: false, minZoom, domain });\n p.onUpdateDomains(newDomains);\n }, [checkAndCorrectDomain, patchState]);\n\n const zoomOnTarget = useCallback((x: number) => {\n const xAxis = xAxisRef.current;\n const [minOrigin, maxOrigin] = xAxis.domain();\n const target = moment(xAxis.invert(x));\n const min = moment(target).subtract(0.25 * target.diff(moment(minOrigin)));\n const max = moment(target).add(0.25 * moment(maxOrigin).diff(target));\n zoomOnDomain({ min, max });\n }, [zoomOnDomain]);\n\n const zoomOutOfTarget = useCallback((x: number) => {\n const xAxis = xAxisRef.current;\n const [minOrigin, maxOrigin] = xAxis.domain();\n const target = moment(xAxis.invert(x));\n const min = moment(target).subtract(1.25 * target.diff(moment(minOrigin)));\n const max = moment(target).add(1.25 * moment(maxOrigin).diff(target));\n zoomOutTo([{ min, max }]);\n }, [zoomOutTo]);\n\n const zoomIn = useCallback(() => {\n const s = stateRef.current;\n if (!s.maxZoom) {\n zoomOnDomain({ min: s.start, max: s.stop });\n } else {\n propsRef.current.onShowMessage(labelsRef.current.doubleClickMaxZoomMsg);\n }\n }, [zoomOnDomain]);\n\n const zoomOut = useCallback(() => {\n const s = stateRef.current;\n if (s.waitForLoad || s.minZoom) return;\n const p = propsRef.current;\n const domains = [...p.domains];\n if (domains.length > 1) {\n domains.shift();\n } else {\n const xAxis = xAxisRef.current;\n const [minOrigin, maxOrigin] = xAxis.domain();\n const halfDuration = moment(maxOrigin).diff(moment(minOrigin)) / 2;\n const target = moment(minOrigin).add(halfDuration);\n const zoomOutFactor = p.zoomOutFactor ?? defaultZoomOutFactor;\n const min = moment(target).subtract(zoomOutFactor * halfDuration);\n const max = moment(target).add(zoomOutFactor * halfDuration);\n domains[0] = { min, max };\n }\n zoomOutTo(domains);\n }, [zoomOutTo]);\n\n const onWheel = useCallback((event: any) => {\n const s = stateRef.current;\n const p = propsRef.current;\n event.stopPropagation();\n const baseX = timelineElementRef.current?.getBoundingClientRect().left ?? 0;\n const x = event.clientX - baseX - s.margin.left;\n if (s.waitForLoad) return;\n if (event.deltaY < -50) {\n if (s.maxZoom) p.onShowMessage(labelsRef.current.scrollMaxZoomMsg);\n else zoomOnTarget(x);\n } else if (event.deltaY > 50) {\n if (s.minZoom) p.onShowMessage(labelsRef.current.minZoomMsg);\n else if (p.domains.length > 1) zoomOut();\n else zoomOutOfTarget(x);\n }\n }, [zoomOnTarget, zoomOut, zoomOutOfTarget]);\n\n const onGotoCursor = useCallback(() => {\n const s = stateRef.current;\n const p = propsRef.current;\n const middle = moment(s.start).add(s.stop.diff(s.start) / 2);\n const xAxis = xAxisRef.current;\n xAxis.clamp(false);\n const currentX = s.histoWidth / 2;\n const newX = xAxis(middle);\n const newDomain = moveTimeLineCore(currentX - newX);\n const domains = [...p.domains];\n domains.splice(0, 1, newDomain);\n const newDomains = shiftDomainsPure(domains, newDomain, p.biggestVisibleDomain);\n p.onUpdateDomains(newDomains);\n xAxis.clamp(true);\n }, [moveTimeLineCore]);\n\n const onGoto = useCallback((d: any) => {\n const s = stateRef.current;\n const p = propsRef.current;\n const halfTimeAgg = s.stop.diff(s.start) / 2;\n const when = d || moment();\n const newStop = moment(when).add(halfTimeAgg);\n const newStart = moment(when).subtract(halfTimeAgg);\n p.onCustomRange(newStart, newStop);\n }, []);\n\n const shiftTimeLine = useCallback((delta: number) => {\n const incr = (delta / Math.abs(delta)) * 8;\n let i = 0;\n function step() {\n moveTimeLine(incr);\n i += 8;\n if (i < Math.abs(delta)) setTimeout(step, 10);\n else movedTimeLine();\n }\n step();\n }, [moveTimeLine, movedTimeLine]);\n\n // --- Cleanup on unmount -------------------------------------------------\n\n useEffect(() => () => {\n if (autoMoveRef.current) clearInterval(autoMoveRef.current);\n }, []);\n\n // --- Imperative handle --------------------------------------------------\n\n useImperativeHandle(ref, () => ({ zoomIn, zoomOut, shiftTimeLine }), [zoomIn, zoomOut, shiftTimeLine]);\n\n // --- Render -------------------------------------------------------------\n\n const { isActive, domain, histoWidth, margin, start, stop, maxZoom, minZoom,\n maxTimespan, barHovered, tooltipVisible, ticks, dragging } = state;\n\n const xAxisHeight = xAxisProp.height || xAxisDefault.height;\n const pointZero = { x: 0, y: height - margin.bottom - xAxisHeight };\n const originCursor = { x: 0, y: margin.top - 5 };\n\n if (!isFunction(xAxisRef.current)) return null;\n\n const { verticalScale, verticalMarks, maxHeight } = prepareVerticalScale();\n const items = prepareHistogram({ domain, verticalScale });\n itemsRef.current = items;\n\n return (\n <svg\n ref={timelineElementRef}\n width={width}\n height={height}\n onWheel={isActive ? onWheel : undefined}\n >\n <g transform={`translate(${margin.left},${margin.top})`}>\n {yAxisProp.showGrid && (\n <YGrid classes={classes} origin={pointZero} yAxis={verticalScale}\n marks={verticalMarks} xAxisWidth={histoWidth + 13} />\n )}\n {xAxisProp.showGrid && (\n <XGrid classes={classes} origin={pointZero} xAxis={xAxisRef.current}\n marks={ticks} yAxisHeight={maxHeight} />\n )}\n {isActive && (\n <Histogram classes={classes} origin={pointZero} items={items} histo={histo}\n verticalScale={verticalScale} metricsDefinition={metricsDefinition}\n barHovered={barHovered} dragging={dragging}\n tooltipVisible={tooltipVisible}\n onFormatTimeToolTips={onFormatTimeToolTips}\n onFormatMetricLegend={onFormatMetricLegend}\n HistoToolTip={HistoToolTip} />\n )}\n <XAxis classes={classes} origin={pointZero} axisWidth={histoWidth + 13}\n min={domain && domain.min} max={domain && domain.max}\n xAxis={xAxisRef.current} marks={ticks}\n arrowPath={xAxisProp.arrowPath} yAxisHeight={maxHeight}\n showGrid={xAxisProp.showGrid} onFormatTimeLegend={onFormatTimeLegend} />\n <Tools classes={classes} rcToolTipPrefixCls={rcToolTipPrefixCls} origin={pointZero}\n histoWidth={histoWidth} isActive={isActive} tools={tools}\n labels={labelsRef.current} onGoto={onGoto}\n onResetTime={onResetTime} shiftTimeLine={shiftTimeLine} />\n <YAxis classes={classes} origin={pointZero} maxHeight={maxHeight}\n yAxis={verticalScale} marks={verticalMarks}\n arrowPath={yAxisProp.arrowPath} showGrid={yAxisProp.showGrid}\n xAxisWidth={histoWidth + 13} onFormatMetricLegend={onFormatMetricLegend} />\n {showLegend && (\n <Legend classes={classes}\n origin={{ x: -5, y: margin.top + 2 }}\n metricsDefinition={metricsDefinition} />\n )}\n {isActive && tools.cursor !== false && (\n <Cursor\n origin={originCursor} rcToolTipPrefixCls={rcToolTipPrefixCls} classes={classes}\n startPos={xAxisRef.current(start)}\n startIsOutOfView={start.isBefore(domain.min) || start.isAfter(domain.max)}\n endPos={xAxisRef.current(stop)}\n endIsOutOfView={stop.isBefore(domain.min) || stop.isAfter(domain.max)}\n cursorIsBeforeView={start.isBefore(domain.min) && stop.isBefore(domain.min)}\n cursorIsAfterView={start.isAfter(domain.max) && stop.isAfter(domain.max)}\n height={maxHeight} overlayHeight={height - margin.top} overlayWidth={histoWidth}\n tooltipVisible={tooltipVisible} barHovered={barHovered}\n setToolTipVisible={(v: boolean) => patchState({ tooltipVisible: v })}\n setBarHovered={(b: any) => patchState({ barHovered: b })}\n items={items} showHistoToolTip={showHistoToolTip}\n dragging={dragging}\n setDragging={(d: any) => patchState({ dragging: d })}\n canZoom={true} minZoom={minZoom} maxZoom={maxZoom}\n startText={onFormatTimeToolTips(start)} stopText={onFormatTimeToolTips(stop)}\n maxSize={maxTimespan} tools={tools}\n gotoCursorLabel={labelsRef.current.gotoCursor}\n zoomInLabel={labelsRef.current.zoomInLabel}\n zoomOutLabel={labelsRef.current.zoomOutLabel}\n zoomIn={zoomIn} zoomOut={zoomOut}\n onResizeLeftCursor={onResizeLeftCursor}\n onResizeRightCursor={onResizeRightCursor}\n onEndResizeCursor={onEndChangeCursor}\n onDragCursor={onDragCursor} onEndDragCursor={onEndChangeCursor}\n onStartDrawCursor={onStartDrawCursor}\n onDrawCursor={onDrawCursor} onEndCursor={onEndDrawCursor}\n onMoveDomain={moveTimeLine} onMovedDomain={movedTimeLine}\n onGotoCursor={onGotoCursor}\n />\n )}\n {isActive && quality && quality.items && (\n <QualityLine classes={classes} rcToolTipPrefixCls={rcToolTipPrefixCls}\n origin={pointZero} quality={quality} qualityScale={qualityScale}\n xAxis={xAxisRef.current} />\n )}\n </g>\n </svg>\n );\n});\n\nconst TimeLine = forwardRef<TimeLineHandle, any>(function TimeLineWrapper(props, ref) {\n const zone: string | undefined = props.timeZone;\n\n // Internal zoom-history stack (kept as moment-typed for the inner).\n // Initial stack: single entry from props.domain (or empty if null).\n const [stack, setStack] = useState<any[]>(() =>\n props.domain ? [domainToMoments(props.domain, zone)] : []\n );\n\n // If the host updates `domain` (e.g. via URL / redux), sync the top of\n // the stack — same identity if equal, replaced otherwise.\n const prevDomainRef = useRef<any>(props.domain);\n useEffect(() => {\n if (prevDomainRef.current === props.domain) return;\n prevDomainRef.current = props.domain;\n if (!props.domain) {\n setStack([]);\n return;\n }\n const m = domainToMoments(props.domain, zone);\n setStack((prev) => {\n if (prev.length === 0) return [m];\n const top = prev[0];\n if (top.min.isSame(m.min) && top.max.isSame(m.max)) return prev;\n return [m, ...prev.slice(1)];\n });\n }, [props.domain, zone]);\n\n // onUpdateDomains is the inner's single source of truth for domain mutation.\n // Intercept it, persist into `stack`, and report the top to the host.\n const handleUpdateDomains = useCallback((newDomains: any[]) => {\n setStack(newDomains);\n const top = newDomains[0];\n if (top && props.onDomainChange) {\n props.onDomainChange({ min: top.min.toDate(), max: top.max.toDate() });\n }\n }, [props.onDomainChange]);\n\n // onLoadDefaultDomain may now return Domain | Promise<Domain>.\n // If it does, seed the stack + inform the host.\n const handleLoadDefault = useCallback(() => {\n const ret = props.onLoadDefaultDomain?.();\n const apply = (d: any) => {\n if (!d) return;\n const m = domainToMoments(d, zone);\n setStack([m]);\n if (props.onDomainChange) {\n props.onDomainChange({ min: m.min.toDate(), max: m.max.toDate() });\n }\n };\n if (ret && typeof (ret as any).then === 'function') (ret as Promise<any>).then(apply);\n else if (ret) apply(ret);\n }, [props.onLoadDefaultDomain, props.onDomainChange, zone]);\n\n // Build the moment-typed props the inner expects.\n const innerProps: any = {\n ...props,\n domains: stack,\n timeSpan: props.timeSpan ? timeSpanToMoments(props.timeSpan, zone) : undefined,\n maxDomain: props.maxDomain ? domainToMoments(props.maxDomain, zone) : undefined,\n histo: props.histo?.items\n ? { ...props.histo, items: props.histo.items.map((it: any) => ({ ...it, time: toMoment(it.time, zone) })) }\n : props.histo,\n quality: props.quality?.items\n ? { ...props.quality, items: props.quality.items.map((it: any) => ({ ...it, time: toMoment(it.time, zone) })) }\n : props.quality,\n biggestVisibleDomain: props.biggestVisibleDomain != null ? toDuration(props.biggestVisibleDomain) : undefined,\n biggestTimeSpan: props.biggestTimeSpan != null ? toDuration(props.biggestTimeSpan) : undefined,\n smallestResolution: props.smallestResolution != null ? toDuration(props.smallestResolution) : undefined,\n onUpdateDomains: handleUpdateDomains,\n onLoadDefaultDomain: handleLoadDefault,\n // onLoadHisto: object shape + Date instants\n onLoadHisto: props.onLoadHisto\n ? (ms: number, start: any, end: any) =>\n props.onLoadHisto({ intervalMs: ms, start: momentToDate(start)!, end: momentToDate(end)! })\n : undefined,\n // onCustomRange → onTimeSpanChange, object shape\n onCustomRange: props.onTimeSpanChange\n ? (start: any, stop: any) =>\n props.onTimeSpanChange({ start: momentToDate(start)!, stop: momentToDate(stop)! })\n : props.onCustomRange,\n onFormatTimeToolTips: props.onFormatTimeToolTips\n ? (t: any) => props.onFormatTimeToolTips(momentToDate(t))\n : undefined,\n onFormatTimeLegend: props.onFormatTimeLegend\n ? (t: any) => props.onFormatTimeLegend(momentToDate(t))\n : undefined,\n };\n\n return <TimeLineInner {...innerProps} ref={ref} />;\n});\n\nexport default TimeLine;\n\n// --- Pure helpers (extracted so they can be called from constructor+runtime) ---\n\nfunction checkAndCorrectDomainPure({\n domain, biggestVisibleDomain, maxDomain, smallestResolution, histoWidth,\n}: any) {\n if (!domain) {\n return { domain, maxZoom: false, minZoom: false, domainHasChanged: false };\n }\n const newDomain = { ...domain };\n let domainHasChanged = false;\n const duration = newDomain.max.diff(newDomain.min);\n let maxZoom = false;\n const minRes = smallestResolution.asMilliseconds();\n if (duration <= (histoWidth * minRes) / 15) {\n maxZoom = true;\n newDomain.max = moment(newDomain.min).add((histoWidth * minRes) / 15, 'ms');\n }\n let minTime: boolean | undefined;\n let maxTime: boolean | undefined;\n if (maxDomain?.min && newDomain.min.isBefore(maxDomain.min)) {\n newDomain.min = moment(maxDomain.min);\n minTime = true;\n }\n if (maxDomain?.max && newDomain.max.isAfter(maxDomain.max)) {\n newDomain.max = moment(maxDomain.max);\n maxTime = true;\n }\n let minZoom = false;\n if (biggestVisibleDomain && newDomain.max.isSameOrAfter(moment(newDomain.min).add(biggestVisibleDomain))) {\n minZoom = true;\n newDomain.min = moment(newDomain.max).subtract(biggestVisibleDomain);\n }\n if (!(newDomain.min.isSame(domain.min) && newDomain.max.isSame(domain.max))) {\n domainHasChanged = true;\n }\n return {\n domain: domainHasChanged ? newDomain : domain,\n maxZoom, minZoom, maxTime, minTime, domainHasChanged,\n };\n}\n\nfunction shiftDomainsPure(domains: any[], { min, max }: any, biggestVisibleDomain: any) {\n let toUpdate = false;\n const newDomains = domains.map((domain, index) => {\n if ((min && min.isBefore(domain.min)) || (max && max.isAfter(domain.max))) {\n toUpdate = true;\n if (index === domains.length - 1) {\n const newDomain: any = {\n min: min && min.isBefore(domain.min) ? min : domain.min,\n max: max && max.isAfter(domain.max) ? max : domain.max,\n };\n if (biggestVisibleDomain && moment(newDomain.min).add(biggestVisibleDomain).isSameOrBefore(newDomain.max)) {\n if (min.isBefore(domain.min)) newDomain.max = moment(min).add(biggestVisibleDomain);\n else newDomain.min = moment(max).subtract(biggestVisibleDomain);\n }\n return newDomain;\n }\n if (min && min.isBefore(domain.min)) {\n return { min, max: moment(domain.max).subtract(domain.min.diff(min)) };\n }\n return { min: moment(domain.min).add(max.diff(domain.max)), max };\n }\n return domain;\n });\n return toUpdate ? newDomains : domains;\n}\n","import React, { useState, useEffect, useRef, forwardRef } from 'react';\n\nimport TimeLine from './TimeLine';\nimport './timeline.css';\n\nconst defaultWidth = 900;\nconst defaultHeight = 100;\n\n\nfunction TimeLineResizer(props){\n\n const [dimensions, setDimensions] = useState({\n width: defaultWidth,\n height: defaultHeight,\n });\n\n const container = useRef(null);\n\n const onViewResize = () => {\n if(container.current){\n setDimensions({\n width: container.current.clientWidth,\n height: container.current.clientHeight\n });\n }\n };\n\n useEffect(() => {\n if(container.current){\n onViewResize();\n window.addEventListener('resize', onViewResize);\n }\n }, [container.current]);\n\n\n return (\n <div\n ref={container}\n className=\"tl-root tl-timelineContainer\"\n >\n <TimeLine\n ref={props.forwardedRef}\n width={dimensions.width}\n height={dimensions.height}\n {...props}\n />\n </div>\n )\n}\n\n\nfunction timeLineFwd(props, ref) {\n return <TimeLineResizer {...props} forwardedRef={ref}/>\n}\n\nexport default forwardRef(timeLineFwd);\n","import type { ComponentType, ReactNode, Ref } from 'react';\n\nimport TimeLineResizer from './TimeLineResizer';\nimport Cursor from './Cursor';\nimport TimeLine from './TimeLine';\n\n// --- Public data shapes ------------------------------------------------------\n\nexport interface Domain {\n min: Date;\n max: Date;\n}\n\nexport interface TimeSpan {\n start: Date;\n stop: Date;\n}\n\nexport interface HistoItem {\n time: Date;\n metrics: number[];\n total: number;\n}\n\nexport interface Histo {\n items: HistoItem[];\n intervalMs: number | null;\n}\n\nexport interface QualityItem {\n time: Date;\n quality: number;\n tip?: ReactNode;\n}\n\nexport interface Quality {\n items: QualityItem[];\n intervalMin?: number;\n}\n\nexport interface MetricsDefinition {\n count: number;\n legends: string[];\n colors: Array<{ fill: string; stroke: string; text: string }>;\n}\n\nexport interface TimeLineTools {\n slideForward?: boolean;\n slideBackward?: boolean;\n resetTimeline?: boolean;\n gotoNow?: boolean;\n cursor?: boolean;\n zoomIn?: boolean;\n zoomOut?: boolean;\n}\n\nexport interface AxisConfig {\n spaceBetweenTicks?: number;\n barsBetweenTicks?: number;\n height?: number;\n showGrid?: boolean;\n}\n\nexport interface MarginConfig {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n}\n\n// --- Imperative handle -------------------------------------------------------\n\nexport interface TimeLineHandle {\n zoomIn(): void;\n zoomOut(): void;\n shiftTimeLine(delta: number): void;\n}\n\n// --- Props -------------------------------------------------------------------\n\nexport interface TimeLineProps {\n className?: string;\n classes?: Record<string, string>;\n rcToolTipPrefixCls?: string;\n\n timeSpan: TimeSpan;\n histo: Histo;\n quality?: Quality;\n\n /**\n * The currently-visible window, controlled by the host.\n * Pass `null` on first render if you don't have a default yet — the\n * component will call `onLoadDefaultDomain()` and wait for its result.\n *\n * Zoom-out undo is handled internally; the host only needs to observe\n * `onDomainChange` and re-render with whatever domain it wants.\n */\n domain: Domain | null;\n maxDomain?: Domain;\n\n metricsDefinition: MetricsDefinition;\n\n /** IANA time-zone name (e.g. \"UTC\", \"Europe/Paris\"). Required. */\n timeZone?: string;\n\n zoomOutFactor?: number;\n /** Maximum visible duration, in milliseconds. */\n biggestVisibleDomain?: number;\n /** Maximum selectable duration, in milliseconds. */\n biggestTimeSpan?: number;\n /** Smallest zoom step (15 px == this value), in milliseconds. */\n smallestResolution?: number;\n\n tools?: TimeLineTools;\n fetchWhileSliding?: boolean;\n selectBarOnClick?: boolean;\n showHistoToolTip?: boolean;\n\n xAxis?: AxisConfig;\n yAxis?: AxisConfig;\n margin?: MarginConfig;\n\n labels?: Record<string, unknown>;\n\n /** Called on mount when `domain` is null. Return (sync or Promise) the\n * default domain; the component seeds its internal stack from it and\n * fires `onDomainChange` once resolved.\n */\n onLoadDefaultDomain(): Domain | Promise<Domain> | void;\n /** Called whenever the component needs histogram data for a window. */\n onLoadHisto(args: { intervalMs: number; start: Date; end: Date }): void;\n /** Called when the cursor selection changes (resize, drag, draw, goto). */\n onTimeSpanChange(span: TimeSpan): void;\n onShowMessage(message: ReactNode): void;\n /** Called when the visible domain changes — zoom in/out, pan, or edge shift. */\n onDomainChange(domain: Domain): void;\n onResetTime(): void;\n onFormatTimeToolTips(time: Date): ReactNode;\n onFormatTimeLegend(time: Date): string;\n onFormatMetricLegend(value: number): string;\n}\n\nexport interface TimeLineResizerProps extends TimeLineProps {\n // Resizer measures the container and injects `width`/`height` itself.\n}\n\n// --- Exports -----------------------------------------------------------------\n\n// TimeLine and TimeLineResizer accept a ref forwarding to TimeLineHandle.\ntype TimeLineComponent = ComponentType<TimeLineProps & { ref?: Ref<TimeLineHandle> }>;\ntype TimeLineResizerComponent = ComponentType<TimeLineResizerProps & { ref?: Ref<TimeLineHandle> }>;\n\nconst _TimeLine = TimeLine as unknown as TimeLineComponent;\nconst _TimeLineResizer = TimeLineResizer as unknown as TimeLineResizerComponent;\nconst _Cursor = Cursor as unknown as ComponentType<Record<string, unknown>>;\n\nexport { _TimeLine as TimeLine, _Cursor as Cursor };\nexport default _TimeLineResizer;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/moment-shim.ts","../src/utils.ts","../src/cursorElements/utils.js","../src/cursorElements/handleHistoHovering.js","../src/cursorElements/DragOverlay.jsx","../src/styles.ts","../src/theme.js","../src/ToolTip.jsx","../src/cursorElements/ZoomOut.jsx","../src/cursorElements/CursorIcon.jsx","../src/cursorElements/CursorSelection.jsx","../src/cursorElements/LeftHandle.jsx","../src/cursorElements/RightHandle.jsx","../src/cursorElements/ZoomIn.jsx","../src/cursorElements/LeftToolTip.jsx","../src/cursorElements/RightToolTip.jsx","../src/Cursor.jsx","../src/timeLineElements/Histogram.jsx","../src/timeLineElements/axesStyles.jsx","../src/timeLineElements/XAxis.jsx","../src/timeLineElements/YAxis.jsx","../src/timeLineElements/Legend.jsx","../src/timeLineElements/Button.jsx","../src/timeLineElements/Tools.jsx","../src/timeLineElements/HistoToolTip.jsx","../src/timeLineElements/QualityLine.jsx","../src/timeLineElements/YGrid.jsx","../src/timeLineElements/XGrid.jsx","../src/time.ts","../src/TimeLine.tsx","../src/TimeLineResizer.jsx","../src/index.ts"],"names":["moment","pointer","PropTypes","clsx","jsx","useState","jsxs","useEffect","select","drag","forwardRef","useRef","max","YAxis","XAxis","Cursor","Histogram","Legend","Tools","useCallback","domain","histoWidth","ticks","maxZoom","minZoom","items","maxHeight","verticalScale","scaleLinear","verticalMarks","start","maxTimespan","stop","barHovered","TimeLine"],"mappings":"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","file":"index.mjs","sourcesContent":["// Moment-compatible thin wrapper over Luxon.\n//\n// Exposes exactly the moment API surface that this library's internal code\n// uses — not a general-purpose replacement. Swapping to this shim in place\n// of `moment-timezone` drops ~300 KB from consumer bundles while keeping\n// the component's internal .isBefore/.add/.diff/etc. call sites unchanged.\n\nimport { DateTime, Duration, type DurationLikeObject } from 'luxon';\n\nconst unitMap: Record<string, keyof DurationLikeObject> = {\n ms: 'milliseconds',\n milliseconds: 'milliseconds',\n millisecond: 'milliseconds',\n second: 'seconds',\n seconds: 'seconds',\n minute: 'minutes',\n minutes: 'minutes',\n hour: 'hours',\n hours: 'hours',\n day: 'days',\n days: 'days',\n month: 'months',\n months: 'months',\n year: 'years',\n years: 'years',\n};\n\nfunction normalizeUnit(unit: string | undefined): keyof DurationLikeObject {\n if (!unit) return 'milliseconds';\n const norm = unit.toLowerCase();\n return unitMap[norm] ?? (norm as keyof DurationLikeObject);\n}\n\n// A moment.duration-like handle. Internal code only uses `.asMilliseconds()`.\nclass DurationLike {\n private d: Duration;\n constructor(d: Duration) { this.d = d; }\n asMilliseconds(): number { return this.d.as('milliseconds'); }\n valueOf(): number { return this.d.as('milliseconds'); }\n}\n\nfunction toDurationLike(x: any): DurationLike {\n if (x instanceof DurationLike) return x;\n if (typeof x === 'number') return new DurationLike(Duration.fromMillis(x));\n if (typeof x === 'string') return new DurationLike(Duration.fromISO(x));\n if (x && typeof x.asMilliseconds === 'function') {\n return new DurationLike(Duration.fromMillis(x.asMilliseconds()));\n }\n return new DurationLike(Duration.fromMillis(0));\n}\n\n// A moment-like handle over a single Luxon DateTime.\nclass MomentLike {\n _dt: DateTime;\n\n constructor(dt: DateTime) { this._dt = dt; }\n\n _toDT(other: any): DateTime {\n if (other instanceof MomentLike) return other._dt;\n if (other instanceof Date) return DateTime.fromJSDate(other);\n if (typeof other === 'number') return DateTime.fromMillis(other);\n if (other instanceof DateTime) return other;\n return DateTime.fromJSDate(new Date(other));\n }\n\n _addMillis(ms: number): number {\n return this._dt.toMillis() + ms;\n }\n\n isBefore(other: any): boolean { return this._dt.toMillis() < this._toDT(other).toMillis(); }\n isAfter(other: any): boolean { return this._dt.toMillis() > this._toDT(other).toMillis(); }\n isSame(other: any): boolean { return this._dt.toMillis() === this._toDT(other).toMillis(); }\n isSameOrBefore(other: any): boolean { return this._dt.toMillis() <= this._toDT(other).toMillis(); }\n isSameOrAfter(other: any): boolean { return this._dt.toMillis() >= this._toDT(other).toMillis(); }\n\n // moment returns duration by default; library internals always use the\n // no-arg form and treat the result as a number via arithmetic. Return ms.\n diff(other: any): number {\n return this._dt.toMillis() - this._toDT(other).toMillis();\n }\n\n add(n: any, unit?: string): MomentLike {\n const ms = normalizeToMillis(n, unit);\n return new MomentLike(DateTime.fromMillis(this._addMillis(ms), { zone: this._dt.zone as any }));\n }\n\n subtract(n: any, unit?: string): MomentLike {\n const ms = normalizeToMillis(n, unit);\n return new MomentLike(DateTime.fromMillis(this._addMillis(-ms), { zone: this._dt.zone as any }));\n }\n\n toDate(): Date { return this._dt.toJSDate(); }\n toISOString(): string { return this._dt.toUTC().toISO() ?? ''; }\n valueOf(): number { return this._dt.toMillis(); }\n format(fmt?: string): string {\n if (!fmt) return this._dt.toISO() ?? '';\n return this._dt.toFormat(momentFmtToLuxon(fmt));\n }\n\n // setter chain used in demo: .second(0).millisecond(0)\n second(v: number): MomentLike { return new MomentLike(this._dt.set({ second: v })); }\n millisecond(v: number): MomentLike { return new MomentLike(this._dt.set({ millisecond: v })); }\n\n // Internal (escape hatch — prefer the wrapper API above).\n toLuxon(): DateTime { return this._dt; }\n}\n\nfunction normalizeToMillis(n: any, unit?: string): number {\n if (n instanceof DurationLike) return n.asMilliseconds();\n if (n && typeof n.asMilliseconds === 'function') return n.asMilliseconds();\n if (typeof n === 'number') {\n if (!unit) return n;\n const u = normalizeUnit(unit);\n // Convert n<unit> to ms.\n return Duration.fromObject({ [u]: n } as DurationLikeObject).as('milliseconds');\n }\n return 0;\n}\n\nfunction momentFmtToLuxon(fmt: string): string {\n // Minimal mapping for the tokens used in the demo (TIME_FORMAT_TOOLTIP,\n // locale.js). moment and Luxon agree on most of these already.\n return fmt\n .replace(/YYYY/g, 'yyyy')\n .replace(/YY/g, 'yy')\n .replace(/DD/g, 'dd')\n .replace(/A/g, 'a');\n}\n\n// Public factory — matches `moment(x)` / `moment()`.\ninterface MomentFactory {\n (x?: any): MomentLike;\n isMoment(x: any): x is MomentLike;\n isDuration(x: any): x is DurationLike;\n duration(x?: any, unit?: string): DurationLike;\n tz(x: any, zone: string): MomentLike;\n}\n\nfunction toDT(x: any): DateTime {\n if (x === undefined || x === null) return DateTime.now();\n if (x instanceof MomentLike) return x.toLuxon();\n if (x instanceof Date) return DateTime.fromJSDate(x);\n if (typeof x === 'number') return DateTime.fromMillis(x);\n if (typeof x === 'string') return DateTime.fromISO(x);\n return DateTime.fromJSDate(new Date(x));\n}\n\nconst moment = function moment(x?: any): MomentLike {\n return new MomentLike(toDT(x));\n} as MomentFactory;\n\nmoment.isMoment = (x: any): x is MomentLike => x instanceof MomentLike;\nmoment.isDuration = (x: any): x is DurationLike => x instanceof DurationLike;\n\nmoment.duration = (x?: any, unit?: string): DurationLike => {\n if (typeof x === 'number' && unit) {\n const u = normalizeUnit(unit);\n return new DurationLike(Duration.fromObject({ [u]: x } as DurationLikeObject));\n }\n return toDurationLike(x);\n};\n\nmoment.tz = (x: any, zone: string): MomentLike => {\n const base = toDT(x);\n return new MomentLike(base.setZone(zone));\n};\n\nexport default moment;\nexport type Moment = MomentLike;\n","/**\n * Tiny local replacements for the lodash-es helpers the library used.\n * Keeping them in a single file lets us drop lodash-es entirely.\n */\n\nexport const max = (arr: number[] | undefined): number | undefined =>\n arr && arr.length ? Math.max(...arr) : undefined;\n\nexport const sum = (arr: number[] | undefined): number =>\n arr ? arr.reduce((acc, v) => acc + v, 0) : 0;\n\nexport const floor = (n: number, precision = 0): number => {\n const p = Math.pow(10, precision);\n return Math.floor(n * p) / p;\n};\n\nexport const round = (n: number, precision = 0): number => {\n const p = Math.pow(10, precision);\n return Math.round(n * p) / p;\n};\n\nexport const clamp = (n: number, lower: number, upper: number): number =>\n Math.max(lower, Math.min(upper, n));\n\nexport const isFunction = (v: unknown): v is (...args: any[]) => any =>\n typeof v === 'function';\n\n// Deep equality for plain objects, arrays, and primitives — covers the\n// shallow `margin` prop comparison we use.\nexport function isEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n const ka = Object.keys(a);\n const kb = Object.keys(b);\n if (ka.length !== kb.length) return false;\n for (const k of ka) {\n if (!isEqual(a[k], b[k])) return false;\n }\n return true;\n}\n\n// Shallow merge of `...sources` into `target`. Missing keys win from later\n// sources; nested objects get recursively merged too (matching lodash's\n// `merge` for the limited shape we feed it — labels + tools config).\nexport function merge<T extends Record<string, any>>(target: T, ...sources: any[]): T {\n for (const src of sources) {\n if (!src || typeof src !== 'object') continue;\n for (const k of Object.keys(src)) {\n const v = src[k];\n if (v && typeof v === 'object' && !Array.isArray(v) &&\n target[k] && typeof target[k] === 'object' && !Array.isArray(target[k])) {\n (target as any)[k] = merge({ ...target[k] }, v);\n } else {\n (target as any)[k] = v;\n }\n }\n }\n return target;\n}\n","import { clamp as _clamp } from '../utils';\n\nexport function hide(element) {\n element.style.opacity = 0;\n element.style.visibility = 'hidden';\n}\n\nexport function show(element) {\n element.style.opacity = 1;\n element.style.visibility = 'visible';\n}\n\nexport const resizeToolTip = (height) => _clamp(2 * height/30, 1.9, 4);\nexport const resizeToolTipText = (height) => _clamp(7 * height/29, 7, 14);\nexport const resizeToolTipRightDelta = (height) => _clamp(4 * height/30,4,9)\n","import {pointer} from 'd3-selection';\n\nexport function handleHistoOver({\n showHistoToolTip, dragging, event, dragOverlay, marginBottom,\n items, height, tooltipVisible, timer, barHovered,\n setTimer, setToolTipVisible, setBarHovered\n}) {\n if (showHistoToolTip && !dragging && dragOverlay) {\n const [x, y] = pointer(event, dragOverlay.current);\n\n //Compute the hovered bar\n const margin = marginBottom || 0;\n const index = items.findIndex(element =>\n (element.x1 <= x)\n && (element.x2 > x)\n && (y >= height - element.height - margin)\n && (y < height - margin)\n );\n\n //no tooltip displayed and no timer => set to display tooltip in some time\n if (!tooltipVisible && !timer) {\n setTimer(setTimeout(() => {\n setToolTipVisible(true);\n setTimer(null)\n }, 1000));\n }\n //timer but changed bar => reset timer to display tooltip\n else if (timer && barHovered !== index) {\n clearTimeout(timer);\n\n setTimer(setTimeout(() => {\n setToolTipVisible(true);\n setTimer(null)\n }, 1000));\n }\n //not hover a bar, hide tooltip (and then expect a timer later)\n else if (index < 0 && tooltipVisible) {\n setToolTipVisible(false);\n }\n\n if(barHovered !== index){\n setBarHovered(index);\n }\n }\n}\n\nexport function handleHistoOut({setToolTipVisible, setBarHovered, timer, friendTarget}) {\n return event => {\n if(event.relatedTarget !== (friendTarget && friendTarget.current)){\n setToolTipVisible(false);\n setBarHovered(-1);\n }\n if(timer){\n clearTimeout(timer);\n }\n };\n}\n","import React, {forwardRef, useCallback, useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {pointer, select} from 'd3-selection';\nimport {drag} from 'd3-drag';\nimport moment from '../moment-shim';\n\nimport {handleHistoOver, handleHistoOut} from './handleHistoHovering';\n\n\nfunction DragOverlay({\n width, height, marginBottom,\n showToolTipLeft, showToolTipRight,\n onDrawCursor, onStartDrawCursor,\n onMovedDomain, onMoveDomain,\n onEndCursor, dragOverlayRef,\n tooltipVisible, items, showHistoToolTip,\n dragging, barHovered, cursorSelection,\n setDragging, setToolTipVisible, setBarHovered,\n}){\n const dragOverlayContainer = useRef();\n const [timer, setTimer] = useState(null);\n\n const setOverlayCursor = event => {\n if(event.ctrlKey){\n dragOverlayRef.current.style.cursor = 'move';\n }\n else{\n dragOverlayRef.current.style.cursor = 'crosshair';\n }\n\n handleHistoOver({\n showHistoToolTip, dragging, event, dragOverlay: dragOverlayRef,\n marginBottom, items, height, tooltipVisible,\n timer, setTimer, setToolTipVisible, barHovered,\n setBarHovered\n });\n\n };\n\n useEffect(() => {\n let mode = null; //CURSOR or DOMAIN\n /* when Ctrl is pressed, we drag the domain -> move the min / max\n * when Ctrl is not pressed, we draw a cursor, starting from left\n */\n\n select(dragOverlayRef.current).call(drag()\n .filter((event) => !event.button)\n .container(dragOverlayContainer.current)\n .on('start',(event) => {\n if(event.sourceEvent.ctrlKey){\n mode = 'DOMAIN';\n }\n else {\n mode = 'CURSOR';\n showToolTipLeft(true);\n onStartDrawCursor(event.x);\n }\n })\n .on('drag',(event) => {\n if(mode === 'DOMAIN'){\n onMoveDomain(event.dx);\n }\n else if(mode === 'CURSOR'){\n showToolTipRight(true);\n onDrawCursor(event.dx, pointer(event, dragOverlayRef.current));\n }\n setDragging(true);\n })\n .on('end',() => {\n if(mode === 'DOMAIN'){\n onMovedDomain();\n }\n else if(mode === 'CURSOR'){\n showToolTipLeft(false);\n showToolTipRight(false);\n onEndCursor();\n }\n mode = null;\n setDragging(false);\n })\n );\n }, []);\n\n return (\n <g ref={dragOverlayContainer}>\n <rect\n ref={dragOverlayRef}\n className=\"tl-dragOverlay\"\n x={0}\n y={0}\n width={width}\n height={height}\n onMouseMove={setOverlayCursor}\n onMouseOver={setOverlayCursor}\n onMouseOut={handleHistoOut({setToolTipVisible, setBarHovered, timer, friendTarget: cursorSelection})}\n />\n </g>\n );\n}\n\nDragOverlay.propTypes = {\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n marginBottom: PropTypes.number,\n\n items: PropTypes.arrayOf(PropTypes.shape({\n start: PropTypes.instanceOf(moment).isRequired,\n end: PropTypes.instanceOf(moment).isRequired,\n x1: PropTypes.number,\n x2: PropTypes.number,\n metrics: PropTypes.arrayOf(PropTypes.number).isRequired,\n total: PropTypes.number.isRequired,\n })),\n tooltipVisible: PropTypes.bool,\n barHovered: PropTypes.number,\n setBarHovered: PropTypes.func,\n setTooltipVisible: PropTypes.func,\n\n showToolTipLeft: PropTypes.func.isRequired,\n showToolTipRight: PropTypes.func.isRequired,\n showHistoToolTip: PropTypes.bool,\n\n onStartDrawCursor: PropTypes.func.isRequired,\n onDrawCursor: PropTypes.func.isRequired,\n onEndCursor: PropTypes.func.isRequired,\n\n onMoveDomain: PropTypes.func,\n onMovedDomain: PropTypes.func,\n};\n\nfunction dragOverlayFwd(props, ref) {\n return <DragOverlay {...props} dragOverlayRef={ref}/>\n}\n\nexport default forwardRef(dragOverlayFwd);\n","import clsx from 'clsx';\nimport './timeline.css';\n\n/**\n * Resolves a built-in class name for a component slot, optionally merged with\n * the consumer's override from the `classes` prop. Replaces the prior\n * @material-ui/styles `useStyles()` + local clsx glue.\n *\n * Usage:\n * const className = (name: string) => cn(name, classes);\n * <rect className={className('histoItem')} />\n */\nexport function cn(name: string, classes?: Record<string, string>): string {\n return clsx(`tl-${name}`, classes?.[name]);\n}\n","import {scaleLinear} from 'd3-scale';\nimport './tipDark.css';\n\nconst theme = {\n colors: {\n light: '#ececec',\n medium: '#b4b4b4',\n mediumDark: '#545454',\n dark: '#333333',\n itemFillSelected: '#ff8080',\n itemStrokeSelected: '#e7594f',\n buttonOver: '#ff8080',\n qualityFillSelected: '#00ebeb',\n zoomOutIcon: '#ff816b',\n zoomInIcon: '#00BCD4',\n maxSizeStroke: '#00899f',\n cursorHandleFill: '#ffffff',\n cursorStroke: '#00BCD4',\n cursorFill: '#00BCD4',\n outsideViewFill: '#ececec',\n outsideViewStroke: '#b4b4b4',\n tipFill: '#1a1a1a',\n tipText: '#ffffff'\n },\n font: {\n family: 'Roboto, sans-serif',\n axisTextSize: 10,\n legendSize: 12.5,\n tipSize: 12.5\n },\n rcToolTipPrefixCls: 'rc-tooltip-dark'\n};\nexport default theme;\n\nexport const defaultLabels = {\n forwardButtonTip: 'Slide forward',\n backwardButtonTip: 'Slide backward',\n resetButtonTip: 'Reset time span',\n gotoNowButtonTip: 'Goto Now',\n doubleClickMaxZoomMsg: 'Cannot zoom anymore!',\n scrollMaxZoomMsg: 'Cannot zoom anymore!',\n zoomInWithoutChangingSelectionMsg: 'Please change time selection before clicking on zoom ;)',\n zoomSelectionResolutionExtended: 'You reached maximum zoom level',\n minZoomMsg: 'You reached minimum zoom level',\n maxSelectionMsg: 'You reached maximum selection',\n maxDomainMsg: 'You reached maximum visible time',\n minDomainMsg: 'You reached minimum visible time',\n gotoCursor: 'Goto Cursor',\n zoomInLabel: 'Zoom in',\n zoomOutLabel: 'Zoom out',\n};\n\nexport const defaultQualityScale = scaleLinear()\n .domain([0, 0.9, 1])\n .range(['#ff3724', 'rgba(255,0,0,0.09)', 'rgba(155,249,135,0.94)'])\n .clamp(true);\n","import React from 'react';\nimport ToolTipBase from 'rc-tooltip';\nimport PropTypes from 'prop-types';\n\nimport './tipDark.css';\nimport theme from './theme';\n\nexport default function ToolTip({overlay, placement = 'top', mouseEnterDelay = 0.5, prefixCls, align, visible, hidden, children}){\n // rc-tooltip v6 keeps `visible` as the controlled prop; pass it only\n // when explicitly controlled so uncontrolled hover behavior still works\n // (an explicit `visible={false}` would otherwise pin the tooltip shut\n // and block the mouseEnterDelay-based reveal).\n const extraProps = {};\n if (visible) extraProps.visible = true;\n if (hidden) extraProps.visible = false;\n\n return (\n <ToolTipBase\n placement={placement}\n prefixCls={prefixCls || theme.rcToolTipPrefixCls}\n overlay={overlay}\n mouseEnterDelay={mouseEnterDelay}\n destroyTooltipOnHide={true}\n align={align}\n {...extraProps}\n >\n {children}\n </ToolTipBase>\n );\n}\n\nToolTip.propTypes = {\n overlay: PropTypes.any.isRequired,\n placement: PropTypes.string,\n mouseEnterDelay: PropTypes.number,\n}\n\n","import { cn } from \"../styles\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolTip from '../ToolTip';\n\nimport clsx from 'clsx';\n\nconst zoomOutIcon = 'M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z';\n\n\nexport default function ZoomOut({classes, origin, zoomOutLabel, onZoomOut, rcToolTipPrefixCls}){\n\n const className = (n) => cn(n, classes);\n\n return (\n <ToolTip\n placement={'left'}\n overlay={zoomOutLabel}\n >\n <g\n className={\"tl-zoomOutContainer\"}\n transform={`translate(${origin.x}, ${origin.y})`}\n onClick={onZoomOut}\n >\n <rect\n className={\"tl-zoomArea\"}\n x={0}\n y={0}\n width={23}\n height={23}\n />\n <path\n className={className('zoomOut')}\n d={zoomOutIcon}\n />\n </g>\n </ToolTip>\n );\n}\n\nZoomOut.propTypes = {\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n zoomOutLabel: PropTypes.string,\n onZoomOut: PropTypes.func,\n}\n","import React, {useState} from 'react';\nimport ToolTip from '../ToolTip';\nimport PropTypes from 'prop-types';\n\nimport clsx from 'clsx';\n\n\nexport default function CursorIcon({ classes, rcToolTipPrefixCls, origin,\n position, gotoCursorLabel, onGotoCursor\n }){\n \n const [isOver, setIsOver] = useState(false);\n\n return (\n <ToolTip\n placement={position === 'right' ? 'left' : 'right'}\n overlay={gotoCursorLabel}\n >\n <g\n transform={`translate(${origin.x},${origin.y}) scale(2)`}\n style={{cursor: 'pointer'}}\n onClick={onGotoCursor}\n onMouseOver={() => setIsOver(true)}\n onMouseOut={() => setIsOver(false)}\n >\n <rect\n className={clsx(\n \"tl-cursorIconRect\",\n classes.cursorIconRect,\n isOver && \"tl-cursorIconRectOver\",\n isOver && classes.cursorIconRectOver,\n )}\n width=\"5.5\"\n height=\"13.72\"\n x=\"9.56\"\n y=\"4.76\" />\n <circle\n className={clsx(\n \"tl-cursorIconCircle\",\n classes.cursorIconCircle,\n isOver && \"tl-cursorIconCircleOver\",\n isOver && classes.cursorIconCircleOver,\n )}\n cx=\"9.63\"\n cy=\"11.62\"\n r=\"1.4\" />\n <circle\n className={clsx(\n \"tl-cursorIconCircle\",\n classes.cursorIconCircle,\n isOver && \"tl-cursorIconCircleOver\",\n isOver && classes.cursorIconCircleOver,\n )}\n cx=\"15\"\n cy=\"11.70\"\n r=\"1.4\" />\n </g>\n </ToolTip>\n );\n}\n\nCursorIcon.propTypes = {\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n onGotoCursor: PropTypes.func,\n gotoCursorLabel: PropTypes.string.isRequired,\n position: PropTypes.string.isRequired,\n}\n","import { cn } from \"../styles\";\nimport React, {forwardRef, useCallback, useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {pointer, select} from 'd3-selection';\nimport {drag} from 'd3-drag';\n\nimport clsx from 'clsx';\nimport moment from '../moment-shim';\nimport {handleHistoOver, handleHistoOut} from './handleHistoHovering';\n\n\nexport function CursorSelection({\n classes, cursor,\n height,\n maxSize, zoomIn, canZoom,\n dragOverlay, onMoveDomain, onDragCursor, onMovedDomain, onEndDragCursor,\n showToolTipLeft, showToolTipRight, width,\n\n tooltipVisible, items, showHistoToolTip,\n dragging, barHovered, marginBottom,\n setDragging, setBarHovered, setToolTipVisible,\n}) {\n const className = (n) => cn(n, classes);\n\n const [timer, setTimer] = useState(null);\n\n const setOverlayCursor = event =>\n handleHistoOver({\n showHistoToolTip, dragging, event, dragOverlay,\n marginBottom, items, height, tooltipVisible,\n timer, setTimer, setToolTipVisible, barHovered,\n setBarHovered\n });\n\n useEffect(() => {\n let mode = null; //CURSOR or DOMAIN\n select(cursor.current).call(drag()\n .filter((event) => !event.button)\n .container(dragOverlay.current)\n .on('start',(event) => {\n if(event.sourceEvent.ctrlKey){\n mode = 'DOMAIN';\n }\n else {\n mode = 'CURSOR';\n showToolTipRight(true);\n showToolTipLeft(true);\n }\n })\n .on('drag', (event) => {\n if(mode === 'DOMAIN' && event.sourceEvent.ctrlKey){\n onMoveDomain(event.dx);\n }\n else if(mode === 'CURSOR') {\n onDragCursor(event.dx, pointer(event, dragOverlay.current));\n }\n setDragging(true);\n })\n .on('end',() => {\n if(mode === 'DOMAIN'){\n onMovedDomain();\n }\n else if(mode === 'CURSOR'){\n showToolTipRight(false);\n showToolTipLeft(false);\n onEndDragCursor();\n }\n mode = null;\n mode = null;\n setDragging(false);\n })\n );\n },\n [cursor.current]);\n\n return (\n <rect\n ref={cursor}\n className={clsx(className('cursorArea'), maxSize && 'tl--maxSize')}\n x={0}\n y={-3}\n width={width}\n height={height + 10}\n onDoubleClick={canZoom ? zoomIn : undefined }\n onMouseMove={setOverlayCursor}\n onMouseOver={setOverlayCursor}\n onMouseOut={handleHistoOut({setToolTipVisible, setBarHovered, timer, friendTarget: dragOverlay})}\n />\n );\n};\n\nCursorSelection.propTypes = {\n classes: PropTypes.object.isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n maxSize: PropTypes.bool.isRequired,\n zoomIn: PropTypes.func.isRequired,\n canZoom: PropTypes.bool.isRequired,\n dragOverlay: PropTypes.object.isRequired,\n onMoveDomain: PropTypes.func.isRequired,\n onMovedDomain: PropTypes.func.isRequired,\n onDragCursor: PropTypes.func.isRequired,\n onEndDragCursor: PropTypes.func.isRequired,\n showToolTipLeft: PropTypes.func.isRequired,\n showToolTipRight: PropTypes.func.isRequired,\n\n\n items: PropTypes.arrayOf(PropTypes.shape({\n start: PropTypes.instanceOf(moment).isRequired,\n end: PropTypes.instanceOf(moment).isRequired,\n x1: PropTypes.number,\n x2: PropTypes.number,\n metrics: PropTypes.arrayOf(PropTypes.number).isRequired,\n total: PropTypes.number.isRequired,\n })),\n tooltipVisible: PropTypes.bool,\n barHovered: PropTypes.number,\n setBarHovered: PropTypes.func,\n setTooltipVisible: PropTypes.func,\n}\n\nfunction CursorSelectionFwd(props, ref) {\n return <CursorSelection {...props} cursor={ref}/>\n}\n\nexport default forwardRef(CursorSelectionFwd);\n","import { cn } from \"../styles\";\nimport React, {useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {pointer, select} from 'd3-selection';\nimport {drag} from 'd3-drag';\n\nimport clsx from 'clsx';\n\n\nexport default function LeftHandle({\n classes, maxSize,\n onResizeLeftCursor, onEndResizeCursor,\n dragOverlay, showToolTipLeft,\n origin, startIsOutOfView, setDragging\n}) {\n const className = (n) => cn(n, classes);\n\n const cursorLeftHandle = useRef();\n\n useEffect(() => {\n cursorLeftHandle.current &&\n select(cursorLeftHandle.current).call(\n drag()\n .filter((event) => !event.button)\n .container(dragOverlay.current)\n .on('start', () => {\n setDragging(true)\n showToolTipLeft(true)\n })\n .on('drag', (event) => onResizeLeftCursor(event.dx, pointer(event, dragOverlay.current)))\n .on('end', () => {\n setDragging(false);\n showToolTipLeft(false);\n onEndResizeCursor();\n })\n );\n }, [cursorLeftHandle.current]);\n\n return (\n <circle\n ref={cursorLeftHandle}\n className={clsx(className('cursorLeftHandle'), maxSize && 'tl--maxSize', startIsOutOfView && 'tl--outOfView')}\n r='4'\n cx={origin.x}\n cy={origin.y}\n />\n );\n};\n\nLeftHandle.propTypes = {\n classes: PropTypes.object.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n maxSize: PropTypes.bool.isRequired,\n dragOverlay: PropTypes.object.isRequired,\n startIsOutOfView: PropTypes.bool.isRequired,\n showToolTipLeft: PropTypes.func.isRequired,\n onResizeLeftCursor: PropTypes.func.isRequired,\n onEndResizeCursor: PropTypes.func.isRequired,\n setDragging: PropTypes.func.isRequired,\n}\n","import { cn } from \"../styles\";\nimport React, {useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {pointer, select} from 'd3-selection';\nimport {drag} from 'd3-drag';\n\nimport clsx from 'clsx';\n\n\nexport default function RightHandle({\n classes, maxSize, origin,\n onResizeRightCursor, onEndResizeCursor,\n dragOverlay, showToolTipRight, endIsOutOfView, setDragging\n}) {\n const className = (n) => cn(n, classes);\n\n const cursorRightHandle = useRef();\n\n useEffect(() => {\n cursorRightHandle.current &&\n select(cursorRightHandle.current).call(\n drag()\n .filter((event) => !event.button)\n .container(dragOverlay.current)\n .on('start', () => {\n setDragging(true);\n showToolTipRight(true)\n })\n .on('drag', (event) => onResizeRightCursor(event.dx, pointer(event, dragOverlay.current)))\n .on('end', () => {\n setDragging(false);\n showToolTipRight(false);\n onEndResizeCursor();\n })\n );\n }, [cursorRightHandle.current]);\n\n return (\n <circle\n ref={cursorRightHandle}\n className={clsx(className('cursorRightHandle'), maxSize && 'tl--maxSize', endIsOutOfView && 'tl--outOfView')}\n r='4'\n cx={origin.x}\n cy={origin.y}\n />\n );\n};\n\nRightHandle.propTypes = {\n classes: PropTypes.object.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n maxSize: PropTypes.bool.isRequired,\n dragOverlay: PropTypes.object.isRequired,\n endIsOutOfView: PropTypes.bool.isRequired,\n showToolTipRight: PropTypes.func.isRequired,\n onResizeRightCursor: PropTypes.func.isRequired,\n onEndResizeCursor: PropTypes.func.isRequired,\n setDragging: PropTypes.func.isRequired,\n}\n","import { cn } from \"../styles\";\nimport React, {forwardRef} from 'react';\nimport PropTypes from 'prop-types';\nimport ToolTip from '../ToolTip';\n\nimport clsx from 'clsx';\n\nconst zoomIcon = 'M 15.5 14 h -0.79 l -0.28 -0.27 C 15.41 12.59 16 11.11 16 9.5 C 16 5.91 13.09 3 9.5 3 S 3 5.91 3 9.5 S 5.91 16 9.5 16 c 1.61 0 3.09 -0.59 4.23 -1.57 l 0.27 0.28 v 0.79 l 5 4.99 L 20.49 19 l -4.99 -5 Z m -6 0 C 7.01 14 5 11.99 5 9.5 S 7.01 5 9.5 5 S 14 7.01 14 9.5 S 11.99 14 9.5 14 Z'\nconst plusSign = \"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z\";\n\n\nfunction ZoomIn({\n classes, origin,\n zoomInLabel, onZoomIn, rcToolTipPrefixCls,\n forwardedRef\n}){\n const className = (n) => cn(n, classes);\n\n return (\n <ToolTip\n placement={'left'}\n overlay={zoomInLabel}\n >\n <g\n className={\"tl-zoomInContainer\"}\n ref={forwardedRef}\n transform={`translate(${origin.x}, ${origin.y})`}\n onClick={onZoomIn}\n >\n <rect\n className={\"tl-zoomArea\"}\n x={0}\n y={0}\n width={23}\n height={23}\n />\n <path\n className={className('zoomIn')}\n d={zoomIcon}\n />\n <path\n className={className('zoomIn')}\n d={plusSign}\n />\n <rect\n className={\"tl-zoomArea\"}\n x={0}\n y={0}\n width={23}\n height={23}\n />\n </g>\n </ToolTip>\n );\n}\n\nZoomIn.propTypes = {\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n zoomInLabel: PropTypes.string,\n onZoomIn: PropTypes.func,\n};\n\nfunction zoomInFwd(props, ref) {\n return <ZoomIn {...props} forwardedRef={ref}/>\n}\n\nexport default forwardRef(zoomInFwd);\n","import { cn } from \"../styles\";\nimport React, {useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\n\nimport clsx from 'clsx';\nimport {hide, show, resizeToolTip, resizeToolTipText} from './utils';\n\n\nexport default function LeftToolTip({\n classes, height, origin,\n isVisibleTooltipLeft,\n startText,\n }) {\n const className = (n) => cn(n, classes);\n\n const toolTipLeft = useRef();\n\n useEffect(() => {\n if(isVisibleTooltipLeft)\n show(toolTipLeft.current)\n else hide(toolTipLeft.current);\n }, [isVisibleTooltipLeft]);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n className={className('toolTipArea')}\n ref={toolTipLeft}>\n <g\n transform={`scale(${resizeToolTip(height)})`}\n >\n <rect\n className={className('toolTip')}\n x={-2.5}\n y={-8}\n width={startText.length*2}\n height={6.5}\n rx={1}\n />\n <path\n className={className('toolTip')}\n d={'M -1,-1.7 0,-0.5 1,-1.7'}\n />\n </g>\n <text\n className={className('toolTipText')}\n style={{\n fontSize: resizeToolTipText(height) + 'px'\n }}\n x=\"-2\"\n y={-resizeToolTipText(height)}\n >\n {startText}\n </text>\n </g>\n );\n};\n\nLeftToolTip.propTypes = {\n classes: PropTypes.object.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n height: PropTypes.number.isRequired,\n isVisibleTooltipLeft: PropTypes.bool.isRequired,\n startText: PropTypes.string.isRequired,\n}\n","import { cn } from \"../styles\";\nimport React, {useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\n\nimport clsx from 'clsx';\nimport {hide, show, resizeToolTip, resizeToolTipText, resizeToolTipRightDelta} from './utils';\n\n\nexport default function RightToolTip({\n classes, origin,\n isVisibleTooltipRight,\n stopText, height\n }) {\n const className = (n) => cn(n, classes);\n\n const toolTipRight = useRef();\n\n useEffect(() => {\n if(isVisibleTooltipRight)\n show(toolTipRight.current)\n else hide(toolTipRight.current);\n }, [isVisibleTooltipRight]);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n className={className('toolTipArea')}\n ref={toolTipRight}>\n <g\n transform={`scale(-${resizeToolTip(height)},-${resizeToolTip(height)})`}\n >\n <rect\n className={className('toolTip')}\n x={-2.5}\n y={-8}\n width={stopText.length*2}\n height={6.5}\n rx={1}\n />\n <path\n className={className('toolTip')}\n d={'M -1,-1.7 0,-0.5 1,-1.7'}\n />\n </g>\n <text\n className={clsx(\n \"tl-toolTipText\",\n classes.toolTipText,\n \"tl-toolTipTextRight\",\n classes.toolTipTextRight,\n )}\n style={{\n fontSize: resizeToolTipText(height) + 'px'\n }}\n x=\"2\"\n y={resizeToolTipText(height)+resizeToolTipRightDelta(height)}\n >\n {stopText}\n </text>\n </g>\n );\n};\n\nRightToolTip.propTypes = {\n classes: PropTypes.object.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n height: PropTypes.number.isRequired,\n isVisibleTooltipRight: PropTypes.bool.isRequired,\n stopText: PropTypes.string.isRequired,\n}\n","import React, {useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\n\nimport {hide, show} from './cursorElements/utils';\n\nimport DragOverlay from './cursorElements/DragOverlay';\nimport ZoomOut from './cursorElements/ZoomOut';\nimport CursorIcon from './cursorElements/CursorIcon';\nimport CursorSelection from './cursorElements/CursorSelection';\nimport LeftHandle from './cursorElements/LeftHandle';\nimport RightHandle from './cursorElements/RightHandle';\nimport ZoomIn from './cursorElements/ZoomIn';\nimport LeftToolTip from './cursorElements/LeftToolTip';\nimport RightToolTip from './cursorElements/RightToolTip';\nimport moment from './moment-shim';\n\nexport default function Cursor({\n overlayWidth, overlayHeight,\n items, setBarHovered = identity, setToolTipVisible = identity, showHistoToolTip, tooltipVisible, barHovered,\n dragging, setDragging = identity,\n origin, height,\n startPos, endPos,\n canZoom, minZoom, maxZoom, maxSize,\n zoomOutLabel, zoomOut,\n cursorIsAfterView, cursorIsBeforeView,\n gotoCursorLabel, onGotoCursor,\n rcToolTipPrefixCls, classes = {},\n onStartDrawCursor, onDrawCursor, onEndCursor,\n onMoveDomain = identity, onMovedDomain = identity, onDragCursor, onEndDragCursor,\n startText, stopText,\n zoomInLabel, zoomIn,\n startIsOutOfView, endIsOutOfView, tools,\n onResizeLeftCursor, onResizeRightCursor, onEndResizeCursor\n }\n){\n const dragOverlay = useRef();\n const zoomInButton = useRef();\n const cursorSelection = useRef();\n\n const renderIcon = (cursorIsAfterView || cursorIsBeforeView);\n const cursorWidth = endPos - startPos < 1 ? 1 : endPos - startPos;\n\n const [isVisibleTTR, setVisibleTTR] = useState(false);\n const [isVisibleTTL, setVisibleTTL] = useState(false);\n\n const originSelection = {\n x: startPos,\n y: 0\n };\n\n return (\n <g transform={`translate(${origin.x},${origin.y})`}>\n <DragOverlay\n ref={dragOverlay}\n width={overlayWidth}\n height={overlayHeight}\n showToolTipLeft={setVisibleTTL}\n showToolTipRight={setVisibleTTR}\n onDrawCursor={onDrawCursor}\n onEndCursor={onEndCursor}\n onMovedDomain={onMovedDomain}\n onMoveDomain={onMoveDomain}\n onStartDrawCursor={onStartDrawCursor}\n\n setToolTipVisible={setToolTipVisible}\n setBarHovered={setBarHovered}\n items={items}\n tooltipVisible={tooltipVisible}\n barHovered={barHovered}\n showHistoToolTip={showHistoToolTip}\n marginBottom={overlayHeight - height - 4}\n dragging={dragging}\n setDragging={setDragging}\n cursorSelection={cursorSelection}\n />\n { renderIcon &&\n <CursorIcon\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n origin={{\n x: cursorIsAfterView ? startPos-17 : startPos-23,\n y: height/2-24\n }}\n position={startPos === 1 ? 'left' : 'right'}\n gotoCursorLabel={gotoCursorLabel}\n onGotoCursor={onGotoCursor}\n />\n }\n <g style={{display: renderIcon ? 'none' : undefined}}\n transform={`translate(${originSelection.x},${originSelection.y})`}\n onMouseOver={() => {canZoom && tools.zoomIn!==false && !maxZoom && show(zoomInButton.current)}}\n onMouseOut={() => {canZoom && tools.zoomIn!==false && hide(zoomInButton.current)}}\n >\n <CursorSelection\n ref={cursorSelection}\n classes={classes}\n dragOverlay={dragOverlay}\n maxSize={maxSize}\n canZoom={canZoom}\n startPos={startPos}\n endPos={endPos}\n height={height}\n showToolTipLeft={setVisibleTTL}\n showToolTipRight={setVisibleTTR}\n onDragCursor={onDragCursor}\n onEndDragCursor={onEndDragCursor}\n onMovedDomain={onMovedDomain}\n onMoveDomain={onMoveDomain}\n zoomIn={zoomIn}\n width={cursorWidth}\n\n setToolTipVisible={setToolTipVisible}\n setBarHovered={setBarHovered}\n items={items}\n tooltipVisible={tooltipVisible}\n barHovered={barHovered}\n showHistoToolTip={showHistoToolTip}\n dragging={dragging}\n setDragging={setDragging}\n />\n <LeftHandle\n classes={classes}\n origin={{\n x: 0,\n y: height/2+2\n }}\n maxSize={maxSize}\n dragOverlay={dragOverlay}\n startIsOutOfView={startIsOutOfView}\n showToolTipLeft={setVisibleTTL}\n onResizeLeftCursor={onResizeLeftCursor}\n onEndResizeCursor={onEndResizeCursor}\n setDragging={setDragging}\n />\n <RightHandle\n classes={classes}\n origin={{\n x: cursorWidth,\n y: height/2+2\n }}\n maxSize={maxSize}\n dragOverlay={dragOverlay}\n endIsOutOfView={endIsOutOfView}\n showToolTipRight={setVisibleTTR}\n onResizeRightCursor={onResizeRightCursor}\n onEndResizeCursor={onEndResizeCursor}\n setDragging={setDragging}\n />\n {canZoom && tools.zoomIn!==false &&\n <ZoomIn\n ref={zoomInButton}\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n origin={{\n x: cursorWidth - 25,\n y: 0\n }}\n zoomInLabel={zoomInLabel}\n onZoomIn={zoomIn}\n />}\n <LeftToolTip\n classes={classes}\n origin={{\n x: 0,\n y: height/2\n }}\n height={height}\n startText={startText}\n isVisibleTooltipLeft={isVisibleTTL}\n />\n <RightToolTip\n classes={classes}\n origin={{\n x: cursorWidth,\n y: height/2 + 4\n }}\n height={height}\n stopText={stopText}\n isVisibleTooltipRight={isVisibleTTR}\n />\n </g>\n { canZoom && !minZoom && tools.zoomOut!==false &&\n <ZoomOut\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n origin={{\n x: overlayWidth - 10,\n y: height - 20\n }}\n zoomOutLabel={zoomOutLabel}\n onZoomOut={zoomOut}\n />}\n </g>\n );\n}\n\nCursor.propTypes = {\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n\n startPos: PropTypes.number.isRequired,\n startIsOutOfView: PropTypes.bool,\n endPos: PropTypes.number.isRequired,\n endIsOutOfView: PropTypes.bool,\n height: PropTypes.number.isRequired,\n\n overlayHeight: PropTypes.number.isRequired,\n overlayWidth: PropTypes.number.isRequired,\n items: PropTypes.arrayOf(PropTypes.shape({\n start: PropTypes.instanceOf(moment).isRequired,\n end: PropTypes.instanceOf(moment).isRequired,\n x1: PropTypes.number,\n x2: PropTypes.number,\n metrics: PropTypes.arrayOf(PropTypes.number).isRequired,\n total: PropTypes.number.isRequired,\n })),\n tooltipVisible: PropTypes.bool,\n barHovered: PropTypes.number,\n dragging: PropTypes.bool,\n setBarHovered: PropTypes.func,\n setToolTipVisible: PropTypes.func,\n setDragging: PropTypes.func,\n\n cursorIsBeforeView: PropTypes.bool,\n cursorIsAfterView: PropTypes.bool,\n\n maxSize: PropTypes.bool,\n\n startText: PropTypes.string.isRequired,\n stopText: PropTypes.string.isRequired,\n\n canZoom: PropTypes.bool.isRequired,\n maxZoom: PropTypes.bool,\n minZoom: PropTypes.bool,\n\n zoomIn: PropTypes.func,\n zoomOut: PropTypes.func,\n\n onResizeLeftCursor: PropTypes.func.isRequired,\n onResizeRightCursor: PropTypes.func.isRequired,\n onEndResizeCursor: PropTypes.func.isRequired,\n\n onDragCursor: PropTypes.func.isRequired,\n onEndDragCursor: PropTypes.func.isRequired,\n\n onStartDrawCursor: PropTypes.func.isRequired,\n onDrawCursor: PropTypes.func.isRequired,\n onEndCursor: PropTypes.func.isRequired,\n\n onMoveDomain: PropTypes.func,\n onMovedDomain: PropTypes.func,\n\n onGotoCursor: PropTypes.func,\n gotoCursorLabel: PropTypes.string,\n zoomInLabel: PropTypes.string,\n zoomOutLabel: PropTypes.string,\n\n classes: PropTypes.object,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n\n tools: PropTypes.shape({\n zoomIn: PropTypes.bool,\n zoomOut: PropTypes.bool,\n }),\n};\n\nconst identity = () => {};\n\n","import { cn } from \"../styles\";\nimport React from 'react';\nimport moment from '../moment-shim';\nimport { sum as _sum } from '../utils';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ToolTip from '../ToolTip';\n\n\nexport default function Histogram({\n classes, items, metricsDefinition, origin,\n barHovered, tooltipVisible, verticalScale, dragging,\n HistoToolTip, onFormatMetricLegend, onFormatTimeToolTips\n}){\n\n if(!items){\n return null;\n }\n\n const className = (n) => cn(n, classes);\n\n return <g transform={`translate(${origin.x}, ${origin.y})`}>\n {\n items.map((item, i) => (\n <g key={i}>\n {\n metricsDefinition.colors.map((color, m) => (\n item.metrics[m] > 0 &&\n <rect\n key={m}\n className={className('histoItem')}\n style={{\n fill: color.fill,\n stroke: color.stroke,\n }}\n x={item.x1}\n y={-verticalScale(_sum(item.metrics.slice(0, m + 1)))}\n width={item.x2-item.x1}\n height={verticalScale(item.metrics[m])}\n />\n ))\n }\n {\n barHovered === i && !dragging &&\n <ToolTip\n overlay={\n <HistoToolTip\n item={item}\n metricsDefinition={metricsDefinition}\n onFormatTimeToolTips={onFormatTimeToolTips}\n onFormatMetricLegend={onFormatMetricLegend}\n classes={classes}\n />\n }\n visible={tooltipVisible}\n >\n <rect\n className={className('histoHovered')}\n x={item.x1}\n y={-item.height}\n width={item.x2-item.x1}\n height={item.height}\n />\n </ToolTip>\n }\n </g>\n ))\n }\n </g>;\n}\n\nHistogram.propTypes = {\n classes: PropTypes.object,\n items: PropTypes.arrayOf(PropTypes.shape({\n start: PropTypes.instanceOf(moment).isRequired,\n end: PropTypes.instanceOf(moment).isRequired,\n x1: PropTypes.number,\n x2: PropTypes.number,\n metrics: PropTypes.arrayOf(PropTypes.number).isRequired,\n total: PropTypes.number.isRequired,\n })),\n metricsDefinition: PropTypes.shape({\n count: PropTypes.number.isRequired,\n legends: PropTypes.arrayOf(PropTypes.string).isRequired,\n colors: PropTypes.arrayOf(PropTypes.shape({\n fill: PropTypes.string.isRequired,\n stroke: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n })).isRequired\n }).isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n verticalScale: PropTypes.func.isRequired,\n onFormatTimeToolTips: PropTypes.func.isRequired,\n onFormatMetricLegend: PropTypes.func.isRequired,\n HistoToolTip: PropTypes.elementType,\n barHovered: PropTypes.number,\n tooltipVisible: PropTypes.bool,\n};\n","export const arrow = `m 0,-5 5,5 -5,5`;\n","import React from 'react';\nimport moment from '../moment-shim';\nimport PropTypes from 'prop-types';\nimport {timeDay} from 'd3-time';\nimport clsx from 'clsx';\n\nimport { arrow } from \"./axesStyles\";\nimport { cn } from \"../styles\";\n\nexport default function XAxis({min, max, origin, axisWidth, marks, xAxis, classes, arrowPath = arrow, onFormatTimeLegend}){\n\n const now = moment();\n\n const className = (n) => cn(n, classes);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n >\n {/* Horizontal Axis */}\n <path\n className={className('axis')}\n d={`M 0,-6 0,6`}\n />\n <path\n className={className('axis')}\n d={`M 0,0 ${axisWidth + 5},0`}\n />\n <g transform={`translate(${axisWidth},0)`}>\n <path\n className={className('arrow')}\n d={arrowPath}\n />\n </g>\n\n {/* Marks */}\n {\n marks && marks.map((m, index) => (\n <g\n key={m.toISOString()}\n transform={`translate(${xAxis(m)},0)`}\n >\n <path\n className={className('limitMarker')}\n d='M 0,0 0,6'\n />\n <text x={0}\n y={15}\n className={clsx(className('timeAxisText'), timeDay(m) >= m && className('timeAxisDaysText'))}\n >\n {onFormatTimeLegend(m)}\n </text>\n </g>\n )\n )\n }\n\n {/* Now */}\n { xAxis && now.isSameOrBefore(max) && now.isSameOrAfter(min) &&\n <path\n transform={`translate(${xAxis(now)},0)`}\n className={className('now')}\n d={`m -3,6 6,0 -3,-6 Z`}\n />\n }\n </g>\n );\n}\n\nXAxis.propTypes = {\n axisWidth:PropTypes.number.isRequired,\n classes: PropTypes.object,\n min: PropTypes.instanceOf(moment),\n max: PropTypes.instanceOf(moment),\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n marks: PropTypes.array,\n xAxis: PropTypes.func,\n arrowPath: PropTypes.string,\n onFormatTimeLegend: PropTypes.func.isRequired,\n};\n\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { arrow } from \"./axesStyles\";\nimport { cn } from \"../styles\";\nimport clsx from 'clsx';\n\nexport default function YAxis({classes, marks, yAxis, onFormatMetricLegend, maxHeight, origin, arrowPath = arrow}){\n\n const className = (n) => cn(n, classes);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n >\n <path\n className={className('axis')}\n d={`M 0,0 0, ${-maxHeight - 5}`}\n />\n <g transform={`translate(0, ${-maxHeight}) rotate(270)`}>\n <path\n className={className('arrow')}\n d={arrowPath}\n />\n </g>\n\n {\n marks.map((m, index) => (\n <g\n key={index}\n transform={`translate(0,${-yAxis(m)})`}\n >\n {m > 0 &&\n <text\n transform={`translate(0,5)`}\n className={className('verticalAxisText')}\n x={-7}\n y={-3}\n >\n {onFormatMetricLegend(m)}\n </text>\n }\n </g>\n ))\n }\n </g>\n );\n}\n\nYAxis.propTypes = {\n classes: PropTypes.object,\n maxHeight:PropTypes.number.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n marks: PropTypes.array,\n yAxis: PropTypes.func,\n arrowPath: PropTypes.string,\n onFormatMetricLegend: PropTypes.func.isRequired,\n};\n\n","import { cn } from \"../styles\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n\n\nexport default function Legend({classes, metricsDefinition, origin}){\n\n const fill = [...metricsDefinition.colors].reverse();\n const legends = [...metricsDefinition.legends].reverse();\n\n const className = (n) => cn(n, classes);\n\n return (\n <g\n transform={`translate(${origin.x},${origin.y})`}\n >\n {legends.map((leg,i) => (\n <text\n key={i}\n className={className('legend')}\n style={{\n fill: fill[i].text\n }}\n x={0}\n y={14*(i+1)}\n >\n <tspan>{leg}</tspan>\n </text>\n ))}\n </g>\n )\n}\n\nLegend.propTypes = {\n classes: PropTypes.object.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n metricsDefinition: PropTypes.shape({\n count: PropTypes.number.isRequired,\n legends: PropTypes.arrayOf(PropTypes.string).isRequired,\n colors: PropTypes.arrayOf(PropTypes.shape({\n fill: PropTypes.string.isRequired,\n stroke: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n })).isRequired\n }).isRequired,\n};\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport ToolTip from '../ToolTip';\nimport clsx from 'clsx';\n\n\n\nexport default function Button({tipPlacement, tipOverlay, path, origin, scale, iconSize, onClick, classes, rcToolTipPrefixCls, isActive}){\n const [isOver, setOver] = useState(false);\n\n return (\n <ToolTip\n placement={tipPlacement}\n overlay={tipOverlay}\n >\n <g\n className={clsx(\n \"tl-buttonGroup\",\n classes.buttonGroup,\n !isActive && \"tl-buttonGroupInactive\",\n !isActive && classes.buttonGroupInactive,\n )}\n transform={`translate(${origin.x},${origin.y}) scale(${scale})`}\n onMouseOver={(event) => {\n isActive && setOver(true);\n }}\n onMouseOut={(event) => {\n isActive && setOver(false);\n }}\n onClick={() => {\n isActive && onClick();\n }}\n >\n <rect\n className={clsx(\n \"tl-buttonOverShape\",\n classes.buttonOverShape\n )}\n x ='0'\n y ='0'\n height = {iconSize}\n width = {iconSize}\n />\n <path\n className={clsx(\n \"tl-buttonIcon\",\n classes.buttonIcon,\n isOver && \"tl-buttonIconOver\",\n isOver && classes.buttonIconOver\n )}\n d={path}\n />\n </g>\n </ToolTip>\n );\n}\n\nButton.propTypes = {\n tipPlacement: PropTypes.string.isRequired,\n tipOverlay: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n scale: PropTypes.number.isRequired,\n iconSize: PropTypes.number.isRequired,\n onClick: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n isActive: PropTypes.bool.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from '../moment-shim';\nimport Button from './Button';\n\nconst doubleArrowIcon = 'm 0,0 5,5 0,-5 5,5 -5,5 0,-5 -5,5 Z';\nconst resetIcon = 'M5 15H3v4c0 1.1.9 2 2 2h4v-2H5v-4zM5 5h4V3H5c-1.1 0-2 .9-2 2v4h2V5zm14-2h-4v2h4v4h2V5c0-1.1-.9-2-2-2zm0 16h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4zM12 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z';\nconst gotoNowIcon = 'M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z';\n\nexport default function Tools({ tools, classes, rcToolTipPrefixCls,\n labels, histoWidth, isActive, origin,\n onResetTime, shiftTimeLine, onGoto\n}){\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n >\n {tools.slideForward!==false &&\n <Button\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n tipPlacement=\"left\"\n tipOverlay={labels.forwardButtonTip}\n origin={{x: histoWidth + 22, y: -5}}\n scale={1}\n path={doubleArrowIcon}\n iconSize={10}\n isActive={isActive}\n onClick={() => {shiftTimeLine(-120)}}\n />\n }\n\n {tools.slideBackward!==false &&\n <Button\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n tipPlacement=\"right\"\n tipOverlay={labels.backwardButtonTip}\n origin={{x: -7, y: 5}}\n scale={-1}\n path={doubleArrowIcon}\n iconSize={10}\n isActive={isActive}\n onClick={() => {shiftTimeLine(120)}}\n />\n }\n\n {tools.resetTimeline!==false &&\n <Button\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n tipPlacement=\"left\"\n tipOverlay={labels.resetButtonTip}\n origin={{x: histoWidth + 17, y: -30}}\n scale={0.75}\n path={resetIcon}\n iconSize={24}\n isActive={isActive}\n onClick={onResetTime}\n />\n }\n\n {tools.gotoNow!==false &&\n <Button\n classes={classes}\n rcToolTipPrefixCls={rcToolTipPrefixCls}\n tipPlacement=\"left\"\n tipOverlay={labels.gotoNowButtonTip}\n origin={{x: histoWidth + 17, y: tools.resetTimeline!==false ? -53 : -30}}\n scale={0.75}\n path={gotoNowIcon}\n iconSize={24}\n isActive={isActive}\n onClick={onGoto}\n />\n }\n </g>\n );\n}\n\nTools.propTypes = {\n tools: PropTypes.shape({\n slideForward: PropTypes.bool,\n slideBackward: PropTypes.bool,\n resetTimeline: PropTypes.bool,\n gotoNow: PropTypes.bool,\n cursor: PropTypes.bool,\n }).isRequired,\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n labels: PropTypes.shape({\n forwardButtonTip: PropTypes.string.isRequired,\n backwardButtonTip: PropTypes.string.isRequired,\n resetButtonTip: PropTypes.string.isRequired,\n gotoNowButtonTip: PropTypes.string.isRequired,\n }).isRequired,\n histoWidth: PropTypes.number.isRequired,\n isActive: PropTypes.bool.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n onResetTime: PropTypes.func.isRequired,\n shiftTimeLine: PropTypes.func.isRequired,\n onGoto: PropTypes.func.isRequired\n};\n","import { cn } from \"../styles\";\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport moment from '../moment-shim';\nimport React from 'react';\n\n\nexport default function HistoTooltip({metricsDefinition, item, onFormatTimeToolTips, onFormatMetricLegend, classes}){\n\n const className = (n) => cn(n, classes);\n\n return (\n <>\n <div>\n <div className={className('innerTipLeft')}>\n <br/>\n →\n </div>\n <div className={className('innerTipRight')}>\n {onFormatTimeToolTips(item.start)}<br/>\n {onFormatTimeToolTips(item.end)}\n </div>\n </div>\n <div className={className('innerTipMetrics')}>\n {metricsDefinition.colors.map((color, m) => {\n const reversed = metricsDefinition.colors.length - m - 1;\n return (\n <div key={reversed}>\n - <span style={{color: metricsDefinition.colors[reversed].stroke}}>\n {metricsDefinition.legends[reversed]}\n </span>\n <span className={className('innerTipRight')}>\n {onFormatMetricLegend(item.metrics[reversed])}\n </span>\n </div>\n )\n })}\n <hr/>\n <div>\n Total\n <span className={className('innerTipRight')}>\n {onFormatMetricLegend(item.total)}\n </span>\n </div>\n </div>\n </>\n );\n}\n\nHistoTooltip.propTypes = {\n classes: PropTypes.object,\n item: PropTypes.shape({\n start: PropTypes.instanceOf(moment).isRequired,\n end: PropTypes.instanceOf(moment).isRequired,\n x1: PropTypes.number,\n x2: PropTypes.number,\n metrics: PropTypes.arrayOf(PropTypes.number).isRequired,\n total: PropTypes.number.isRequired,\n }),\n metricsDefinition: PropTypes.shape({\n count: PropTypes.number.isRequired,\n legends: PropTypes.arrayOf(PropTypes.string).isRequired,\n colors: PropTypes.arrayOf(PropTypes.shape({\n fill: PropTypes.string.isRequired,\n stroke: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n })).isRequired\n }).isRequired,\n onFormatTimeToolTips: PropTypes.func.isRequired,\n onFormatMetricLegend: PropTypes.func.isRequired,\n};\n","import { cn } from \"../styles\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport moment from '../moment-shim';\nimport ToolTip from '../ToolTip';\n\nconst qualityHeight = 3;\n\n\nexport default function QualityLine({classes, rcToolTipPrefixCls, origin, quality, xAxis, qualityScale}){\n\n const className = (n) => cn(n, classes);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}>\n {\n quality.items.map((item, i) => {\n const x1 = xAxis(item.time);\n const x2 = xAxis(moment(item.time).add(quality.intervalMin, 'minutes'));\n const rect = (\n <rect\n key={i}\n className={className('qualityCell')}\n style={{\n fill: qualityScale(item.quality),\n }}\n onMouseOver={(event) => { event.target.style.fill = '#00ebeb'; }}\n onMouseOut={(event) => { event.target.style.fill = qualityScale(item.quality); }}\n x={x1}\n y={1}\n width={x2-x1}\n height={qualityHeight}\n />\n );\n\n if(item.tip){\n return (\n <ToolTip\n key={i}\n placement={'bottom'}\n overlay={item.tip}\n mouseEnterDelay={0.1}\n >\n {rect}\n </ToolTip>\n )\n }\n else return rect;\n })\n }\n </g>\n );\n}\n\nQualityLine.propTypes = {\n classes: PropTypes.object.isRequired,\n rcToolTipPrefixCls: PropTypes.string.isRequired,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n xAxis: PropTypes.func.isRequired,\n quality: PropTypes.shape({\n items: PropTypes.arrayOf(PropTypes.shape({\n time: PropTypes.instanceOf(moment).isRequired,\n quality: PropTypes.number.isRequired,\n tip: PropTypes.node\n })),\n intervalMin: PropTypes.number\n }).isRequired,\n qualityScale: PropTypes.func.isRequired,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { cn } from \"../styles\";\nimport clsx from 'clsx';\n\nexport default function YAxis({classes, marks, yAxis, origin, xAxisWidth}){\n\n const className = (n) => cn(n, classes);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}\n >\n {\n marks.map((m, index) => (\n <g\n key={index}\n transform={`translate(0,${-yAxis(m)})`}\n >\n <path\n className={className('grid')}\n d={`M -5,0 ${xAxisWidth},0`}\n />\n </g>\n ))\n }\n </g>\n );\n}\n\nYAxis.propTypes = {\n classes: PropTypes.object,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n marks: PropTypes.array,\n yAxis: PropTypes.func,\n xAxisWidth: PropTypes.number,\n};\n\n","import React from 'react';\nimport moment from '../moment-shim';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\nimport { cn } from \"../styles\";\n\nexport default function XAxis({origin, marks, xAxis, classes, yAxisHeight}){\n\n\n const className = (n) => cn(n, classes);\n\n return (\n <g transform={`translate(${origin.x}, ${origin.y})`}>\n {/* Grid */}\n {\n marks && marks.map((m, index) => (\n <g\n key={m.toISOString()}\n transform={`translate(${xAxis(m)},0)`}\n >\n <path\n className={className('grid')}\n d={`M 0,0 0,${-yAxisHeight}`}\n />\n </g>\n )\n )\n }\n </g>\n );\n}\n\nXAxis.propTypes = {\n classes: PropTypes.object,\n origin: PropTypes.shape({\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n }).isRequired,\n marks: PropTypes.array,\n xAxis: PropTypes.func,\n yAxisHeight: PropTypes.number,\n};\n\n","import moment, { type Moment } from './moment-shim';\ntype Duration = { asMilliseconds(): number };\n\n/**\n * API-boundary funnel.\n *\n * External callers pass native `Date` (and millisecond numbers for\n * durations) — the library is internally written against moment-timezone.\n * These helpers normalize at the boundary so consumers don't need to take\n * a moment peer-dep.\n *\n * For compat during migration, inputs may also be moment instances.\n * In a future release (when moment is replaced by Luxon), this file is\n * the only place that needs to change.\n */\n\nexport type Instant = Date | Moment | number;\nexport type Millis = number | Duration;\n\nexport function toMoment(x: Instant, zone?: string): Moment {\n if (moment.isMoment(x)) return x as Moment;\n const m = zone ? moment.tz(x as any, zone) : moment(x as any);\n return m;\n}\n\n// Null-preserving variant: undefined/null stay undefined instead of\n// becoming `moment()` (= now). Optional domain bounds like maxDomain.min\n// rely on this to remain \"unset\".\nfunction toMomentOpt(x: Instant | null | undefined, zone?: string): Moment | undefined {\n if (x == null) return undefined;\n return toMoment(x, zone);\n}\n\nexport function toDuration(x: Millis): Duration {\n if (moment.isDuration(x)) return x as Duration;\n return moment.duration(x as number);\n}\n\nexport function fromMoment(m: Moment | null | undefined): Date | null {\n return m ? m.toDate() : null;\n}\n\nexport interface DateDomain { min: Date; max: Date; }\nexport interface DateTimeSpan { start: Date; stop: Date; }\n\nexport function domainToMoments(d: { min?: Instant | null; max?: Instant | null }, zone?: string) {\n return { min: toMomentOpt(d.min, zone), max: toMomentOpt(d.max, zone) };\n}\n\nexport function timeSpanToMoments(t: { start?: Instant | null; stop?: Instant | null }, zone?: string) {\n return { start: toMomentOpt(t.start, zone), stop: toMomentOpt(t.stop, zone) };\n}\n\nexport function domainToDates(d: { min: Moment; max: Moment }): DateDomain {\n return { min: d.min.toDate(), max: d.max.toDate() };\n}\n\nexport function timeSpanToDates(t: { start: Moment; stop: Moment }): DateTimeSpan {\n return { start: t.start.toDate(), stop: t.stop.toDate() };\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport moment from './moment-shim';\nimport { scaleLinear, scaleTime } from 'd3-scale';\nimport { merge as _merge } from './utils';\nimport { round as _round } from './utils';\nimport { max as _max } from './utils';\nimport { floor as _floor } from './utils';\nimport { isEqual as isEqual } from './utils';\nimport { isFunction as isFunction } from './utils';\n\nimport CursorRaw from './Cursor';\nimport HistogramRaw from './timeLineElements/Histogram';\nimport XAxisRaw from './timeLineElements/XAxis';\nimport YAxisRaw from './timeLineElements/YAxis';\nimport LegendRaw from './timeLineElements/Legend';\nimport ToolsRaw from './timeLineElements/Tools';\nimport HistoToolTipDefaultRaw from './timeLineElements/HistoToolTip';\n\n// Children are still JSX; their PropTypes-inferred types are too narrow\n// for the live prop surface. Cast to any until they are converted to .tsx.\nconst Cursor = CursorRaw as any;\nconst Histogram = HistogramRaw as any;\nconst XAxis = XAxisRaw as any;\nconst YAxis = YAxisRaw as any;\nconst Legend = LegendRaw as any;\nconst Tools = ToolsRaw as any;\nconst HistoToolTipDefault = HistoToolTipDefaultRaw as any;\nimport theme, { defaultLabels, defaultQualityScale } from './theme';\n\nimport QualityLine from './timeLineElements/QualityLine';\nimport YGrid from './timeLineElements/YGrid';\nimport XGrid from './timeLineElements/XGrid';\n\nconst marginDefault = { left: 50, right: 45, top: 5, bottom: 5 };\nconst xAxisDefault = { height: 20, spaceBetweenTicks: 70, barsBetweenTicks: 8 };\nconst defaultZoomOutFactor = 1.25;\n\nconst defaultTools = {\n slideForward: true,\n slideBackward: true,\n resetTimeline: true,\n gotoNow: true,\n cursor: true,\n zoomIn: true,\n zoomOut: true,\n};\n\nexport interface TimeLineHandle {\n zoomIn(): void;\n zoomOut(): void;\n shiftTimeLine(delta: number): void;\n}\n\nfunction computeMarginAndWidth(props: any) {\n const { margin, showLegend, metricsDefinition, width } = props;\n const localMargin = { ...marginDefault, ...margin };\n if (showLegend) {\n const maxLength = _max(metricsDefinition.legends.map((s: string) => s.length));\n localMargin.left = _max([5 + (maxLength as number) * 9, localMargin.left]);\n }\n return {\n margin: localMargin,\n histoWidth: width - localMargin.left - localMargin.right,\n };\n}\n\nimport {\n toMoment,\n toDuration,\n domainToMoments,\n timeSpanToMoments,\n} from './time';\n\n// --- Outer shell: boundary normalization + single-domain API --------------\n//\n// Consumers of the new v5 API pass:\n// - `domain: {min, max}` (single, controlled by host)\n// - `onDomainChange(domain)` to be notified of zoom/pan/shift changes\n// - `onTimeSpanChange({start, stop})` instead of onCustomRange\n// - `onLoadHisto({intervalMs, start, end})` as an object\n// - `onLoadDefaultDomain()` returns Domain | Promise<Domain>\n// - native `Date` at every instant, number-ms at every duration\n// - required `timeZone: string` (IANA)\n//\n// Internally the component still runs against a `domains` STACK (for\n// zoom-out undo semantics) and moment-timezone types. The outer wrapper\n// owns the stack as useState and translates in both directions.\n\nconst momentToDate = (m: any): Date | null =>\n m && m.toDate ? m.toDate() : (m ?? null);\n\nconst dateDomain = (d: any): { min: Date; max: Date } => ({\n min: momentToDate(d?.min)!,\n max: momentToDate(d?.max)!,\n});\n\nconst TimeLineInner = forwardRef<TimeLineHandle, any>(function TimeLine(props, ref) {\n const {\n width, height, histo, quality, qualityScale = defaultQualityScale, metricsDefinition,\n classes = {}, rcToolTipPrefixCls = theme.rcToolTipPrefixCls, showLegend = true,\n tools = defaultTools,\n onFormatTimeLegend, onFormatMetricLegend, onResetTime, onFormatTimeToolTips,\n xAxis: xAxisProp = xAxisDefault, yAxis: yAxisProp = {},\n showHistoToolTip,\n HistoToolTip = HistoToolTipDefault,\n } = props;\n\n // --- Refs for instance-level mutable data (the class's `this.*`) --------\n\n const xAxisRef = useRef<any>(null);\n const timelineElementRef = useRef<SVGSVGElement | null>(null);\n\n const autoMoveRef = useRef<ReturnType<typeof setInterval> | null>(null);\n const isAutoMovingRef = useRef(false);\n const lastAutoMovingDeltaRef = useRef(0);\n const movedSinceLastFetchedRef = useRef(0);\n const widthOfLastUpdateRef = useRef<number | null>(null);\n const itemsRef = useRef<any[]>([]);\n\n const labelsRef = useRef<any>(_merge({ ...defaultLabels }, props.labels));\n useEffect(() => {\n labelsRef.current = _merge({ ...defaultLabels }, props.labels);\n }, [props.labels]);\n\n // --- Reactive state (the class's `this.state`) --------------------------\n\n const [state, setStateRaw] = useState<any>(() => {\n const initial: any = {\n isActive: false,\n start: props.timeSpan.start,\n stop: props.timeSpan.stop,\n maxTimespan: false,\n waitForLoad: false,\n tooltipVisible: false,\n barHovered: null,\n dragging: false,\n ticks: [],\n verticalMarks: [],\n ...computeMarginAndWidth(props),\n };\n return {\n ...initial,\n ...checkAndCorrectDomainPure({\n domain: props.domains[0],\n biggestVisibleDomain: props.biggestVisibleDomain,\n maxDomain: props.maxDomain,\n smallestResolution: props.smallestResolution,\n histoWidth: initial.histoWidth,\n }),\n };\n });\n\n // Mirrors for closure-free access inside callbacks.\n const stateRef = useRef(state);\n stateRef.current = state;\n const propsRef = useRef(props);\n propsRef.current = props;\n\n const patchState = useCallback((patch: any | ((s: any) => any)) => {\n setStateRaw((s: any) => ({ ...s, ...(typeof patch === 'function' ? patch(s) : patch) }));\n }, []);\n\n // --- Domain math --------------------------------------------------------\n\n const checkAndCorrectDomain = useCallback(({ domain }: { domain: any }) => {\n return checkAndCorrectDomainPure({\n domain,\n biggestVisibleDomain: propsRef.current.biggestVisibleDomain,\n maxDomain: propsRef.current.maxDomain,\n smallestResolution: propsRef.current.smallestResolution,\n histoWidth: stateRef.current.histoWidth,\n });\n }, []);\n\n // --- Data loading -------------------------------------------------------\n\n const getItems = useCallback((p: any, domain: any, shouldReload = true) => {\n const histoWidth = computeMarginAndWidth(propsRef.current).histoWidth;\n\n const xAxis = scaleTime().domain([domain.min, domain.max]).range([0, histoWidth]);\n xAxis.clamp(true);\n xAxisRef.current = xAxis;\n\n const ticks = xAxis.ticks(_floor(histoWidth / p.xAxis.spaceBetweenTicks));\n const intervalMs = _max([\n _round(moment(ticks[1]).diff(moment(ticks[0])) / p.xAxis.barsBetweenTicks),\n propsRef.current.smallestResolution.asMilliseconds(),\n ]) as number;\n\n patchState({ histoWidth, isActive: true, ticks });\n\n if (shouldReload && intervalMs) {\n widthOfLastUpdateRef.current = p.width;\n patchState({ waitForLoad: true });\n p.onLoadHisto(intervalMs, domain.min, domain.max);\n }\n }, [patchState]);\n\n // --- Mount: mirror componentDidMount ------------------------------------\n\n useEffect(() => {\n if (stateRef.current.domain) {\n getItems(propsRef.current, stateRef.current.domain);\n } else {\n propsRef.current.onLoadDefaultDomain();\n }\n patchState(computeMarginAndWidth(propsRef.current));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // --- Effects mirroring componentDidUpdate branches ----------------------\n\n // Max selection message\n const prevMaxTimespanRef = useRef(state.maxTimespan);\n useEffect(() => {\n if (!prevMaxTimespanRef.current && state.maxTimespan) {\n propsRef.current.onShowMessage(labelsRef.current.maxSelectionMsg);\n }\n prevMaxTimespanRef.current = state.maxTimespan;\n }, [state.maxTimespan]);\n\n // Width / margin change\n const prevWidthRef = useRef<number | undefined>(props.width);\n const prevMarginRef = useRef<any>(props.margin);\n useEffect(() => {\n if (prevWidthRef.current === props.width && isEqual(prevMarginRef.current, props.margin)) {\n prevWidthRef.current = props.width;\n prevMarginRef.current = props.margin;\n return;\n }\n const s = stateRef.current;\n if (s.isActive) {\n const big =\n widthOfLastUpdateRef.current !== null\n && Math.abs((props.width ?? 0) - (widthOfLastUpdateRef.current ?? 0)) > 30;\n getItems(props, s.domain, big);\n patchState(computeMarginAndWidth(props));\n } else {\n patchState(computeMarginAndWidth(props));\n }\n\n if (stateRef.current.domain) {\n const res = checkAndCorrectDomain({ domain: stateRef.current.domain });\n const { maxZoom, minZoom, domain, domainHasChanged, minTime, maxTime } = res;\n if (maxZoom !== stateRef.current.maxZoom || minZoom !== stateRef.current.minZoom) {\n patchState({\n maxZoom, minZoom, minTime, maxTime,\n domain: domainHasChanged ? domain : stateRef.current.domain,\n });\n if (domainHasChanged) {\n const newDomains = [domain, ...propsRef.current.domains.slice(1)];\n propsRef.current.onUpdateDomains(newDomains);\n }\n }\n }\n prevWidthRef.current = props.width;\n prevMarginRef.current = props.margin;\n }, [props.width, props.margin, getItems, patchState, checkAndCorrectDomain]);\n\n // timeSpan change\n const prevTimeSpanRef = useRef(props.timeSpan);\n useEffect(() => {\n const prev = prevTimeSpanRef.current;\n if (prev.start.isSame(props.timeSpan.start) && prev.stop.isSame(props.timeSpan.stop)) {\n return;\n }\n const newDomains = shiftDomainsPure(props.domains, {\n min: props.timeSpan.start,\n max: props.timeSpan.stop,\n }, props.biggestVisibleDomain);\n if (newDomains !== props.domains) {\n props.onUpdateDomains(newDomains);\n }\n patchState({ start: props.timeSpan.start, stop: props.timeSpan.stop });\n prevTimeSpanRef.current = props.timeSpan;\n }, [props.timeSpan, props.domains, props.biggestVisibleDomain, props, patchState]);\n\n // Current domain change\n const prevDomain0Ref = useRef(props.domains[0]);\n useEffect(() => {\n const prev = prevDomain0Ref.current;\n const curr = props.domains[0];\n const changed =\n (!prev && curr) ||\n (prev && curr && (!prev.min.isSame(curr.min) || !prev.max.isSame(curr.max)));\n if (!changed) {\n prevDomain0Ref.current = curr;\n return;\n }\n const res = checkAndCorrectDomain({ domain: curr });\n const { maxZoom, minZoom, domain, domainHasChanged, minTime, maxTime } = res;\n patchState({ maxZoom, minZoom, minTime, maxTime, domain });\n if (domainHasChanged) {\n const newDomains = [domain, ...propsRef.current.domains.slice(1)];\n propsRef.current.onUpdateDomains(newDomains);\n } else {\n getItems(propsRef.current, domain);\n }\n prevDomain0Ref.current = curr;\n }, [props.domains, checkAndCorrectDomain, getItems, patchState]);\n\n // histo change\n const prevHistoRef = useRef(props.histo);\n useEffect(() => {\n if (prevHistoRef.current !== props.histo) {\n patchState({ waitForLoad: false });\n prevHistoRef.current = props.histo;\n }\n }, [props.histo, patchState]);\n\n // legend change → recompute margin\n const prevLegendsRef = useRef(props.metricsDefinition.legends);\n useEffect(() => {\n if (prevLegendsRef.current !== props.metricsDefinition.legends) {\n patchState(computeMarginAndWidth(propsRef.current));\n prevLegendsRef.current = props.metricsDefinition.legends;\n }\n }, [props.metricsDefinition.legends, patchState]);\n\n // --- Prepare vertical scale + histogram (render helpers) ----------------\n\n const prepareVerticalScale = useCallback(() => {\n const items = histo && histo.items;\n const s = stateRef.current;\n const maxHeight =\n height - s.margin.bottom - s.margin.top - (xAxisProp.height || xAxisDefault.height);\n const maxScale = items ? (_max(items.map((i: any) => i.total)) as number) || 0 : 0;\n const verticalScale = scaleLinear().domain([0, maxScale]).range([0, maxHeight]);\n const verticalMarks =\n yAxisProp.spaceBetweenTicks && maxHeight > yAxisProp.spaceBetweenTicks * 2\n ? verticalScale.ticks(_floor(maxHeight / yAxisProp.spaceBetweenTicks))\n : [maxScale];\n return { verticalScale, verticalMarks, maxHeight };\n }, [histo, height, xAxisProp, yAxisProp]);\n\n const prepareHistogram = useCallback((args: { domain: any; verticalScale: any }) => {\n const { domain, verticalScale } = args;\n const xAxis = xAxisRef.current;\n if (histo && histo.items && domain && xAxis) {\n const { min, max } = domain;\n return histo.items\n .filter((item: any) =>\n item.total > 0 && item.time.isSameOrAfter(min) && item.time.isBefore(max),\n )\n .map((item: any) => {\n const start = moment(item.time);\n const end = moment(item.time).add(histo.intervalMs);\n return {\n x1: xAxis(start),\n x2: xAxis(end),\n start, end,\n metrics: item.metrics,\n total: item.total,\n height: verticalScale(item.total),\n };\n });\n }\n return [];\n }, [histo]);\n\n // --- Cursor / drag / zoom handlers (former instance methods) ------------\n\n const setAutoMove = useCallback((active: boolean, action?: any, delta?: number) => {\n if (active) {\n if (\n !autoMoveRef.current ||\n (autoMoveRef.current && Math.abs(lastAutoMovingDeltaRef.current - (delta ?? 0)) > 5)\n ) {\n if (autoMoveRef.current) clearInterval(autoMoveRef.current);\n autoMoveRef.current = setInterval(() => {\n action(delta);\n moveTimeLine(-(delta ?? 0));\n isAutoMovingRef.current = true;\n lastAutoMovingDeltaRef.current = delta ?? 0;\n }, 30);\n }\n } else {\n if (autoMoveRef.current) clearInterval(autoMoveRef.current);\n autoMoveRef.current = null;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleAutoSliding = useCallback((mouse: any, action: any) => {\n if (!mouse) return;\n const posX = mouse[0];\n const s = stateRef.current;\n if (posX < 0) setAutoMove(true, action, posX);\n else if (posX >= 0 && posX <= s.histoWidth) setAutoMove(false);\n else if (posX > s.histoWidth) setAutoMove(true, action, posX - s.histoWidth);\n }, [setAutoMove]);\n\n const movedTimeLine = useCallback(() => {\n movedSinceLastFetchedRef.current = 0;\n const domain = stateRef.current.domain;\n const p = propsRef.current;\n const domains = [domain, ...p.domains.slice(1)];\n const newDomains = shiftDomainsPure(domains, domain, p.biggestVisibleDomain);\n p.onUpdateDomains(newDomains);\n }, []);\n\n const stopAutoMove = useCallback(() => {\n if (autoMoveRef.current) setAutoMove(false);\n if (isAutoMovingRef.current) {\n isAutoMovingRef.current = false;\n movedTimeLine();\n }\n }, [setAutoMove, movedTimeLine]);\n\n const moveTimeLineCore = useCallback((delta: number) => {\n const p = propsRef.current;\n const s = stateRef.current;\n const { maxDomain, onShowMessage } = p;\n let { domain: currentDomain, minTime = false, maxTime = false } = s;\n const currentSpan = currentDomain.max.diff(currentDomain.min);\n\n if ((minTime && delta > 0) || (maxTime && delta < 0)) {\n return { ...currentDomain, moved: 0, minTime, maxTime };\n }\n const xAxis = xAxisRef.current;\n let min = moment(xAxis.invert(-delta));\n let max = moment(xAxis.invert(s.histoWidth - delta));\n let moved = delta;\n\n if (maxDomain.min && min.isBefore(maxDomain.min)) {\n moved = xAxis(maxDomain.min);\n min = moment(maxDomain.min);\n max = moment(min).add(currentSpan);\n minTime = true;\n onShowMessage(labelsRef.current.minDomainMsg);\n }\n if (maxDomain.max && max.isAfter(maxDomain.max)) {\n moved = xAxis(maxDomain.max);\n max = moment(maxDomain.max);\n min = moment(max).subtract(currentSpan);\n maxTime = true;\n onShowMessage(labelsRef.current.maxDomainMsg);\n }\n return { min, max, moved, minTime, maxTime };\n }, []);\n\n const moveTimeLine = useCallback((delta: number) => {\n const xAxis = xAxisRef.current;\n xAxis.clamp(false);\n const { min, max, moved, minTime, maxTime } = moveTimeLineCore(delta);\n if (moved !== 0) {\n xAxis.domain([min, max]);\n xAxis.clamp(true);\n const p = propsRef.current;\n const s = stateRef.current;\n const ticks = xAxis.ticks(_floor(s.histoWidth / p.xAxis.spaceBetweenTicks));\n movedSinceLastFetchedRef.current += moved;\n if (Math.abs(movedSinceLastFetchedRef.current) > 75 && p.fetchWhileSliding) {\n movedSinceLastFetchedRef.current = 0;\n getItems(p, { min, max });\n }\n patchState({ domain: { min, max }, minTime, maxTime, ticks });\n }\n }, [moveTimeLineCore, getItems, patchState]);\n\n const onResizeLeftCursor = useCallback((delta: number, mouse: any) => {\n const xAxis = xAxisRef.current;\n const s = stateRef.current;\n const p = propsRef.current;\n let newStart = moment(xAxis.invert(xAxis(s.start) + delta));\n let newStop = s.stop;\n let maxTimespan = false;\n if (newStart.isSameOrAfter(newStop)) {\n newStop = moment(xAxis.invert(xAxis(newStop) + delta));\n }\n if (p.biggestTimeSpan) {\n const min = moment(newStop).subtract(p.biggestTimeSpan);\n if (min.isSameOrAfter(newStart)) {\n newStart = min;\n maxTimespan = true;\n }\n }\n handleAutoSliding(mouse, onResizeLeftCursor);\n if (\n (newStop !== s.stop && newStop.isSameOrBefore(s.domain.max)) ||\n newStart.isSameOrAfter(s.domain.min)\n ) {\n patchState({ start: newStart, stop: newStop, maxTimespan });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleAutoSliding, patchState]);\n\n const onResizeRightCursor = useCallback((delta: number, mouse: any) => {\n const xAxis = xAxisRef.current;\n const s = stateRef.current;\n const p = propsRef.current;\n let newStop = moment(xAxis.invert(xAxis(s.stop) + delta));\n let newStart = s.start;\n let maxTimespan = false;\n if (newStop.isSameOrBefore(newStart)) {\n newStart = moment(xAxis.invert(xAxis(newStart) + delta));\n }\n if (p.biggestTimeSpan) {\n const max = moment(newStart).add(p.biggestTimeSpan);\n if (max.isSameOrBefore(newStop)) {\n newStop = max;\n maxTimespan = true;\n }\n }\n handleAutoSliding(mouse, onResizeRightCursor);\n if (newStop.isSameOrBefore(s.domain.max) && newStart.isSameOrAfter(s.domain.min)) {\n patchState({ start: newStart, stop: newStop, maxTimespan });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleAutoSliding, patchState]);\n\n const onDragCursor = useCallback((delta: number, mouse: any) => {\n const xAxis = xAxisRef.current;\n const s = stateRef.current;\n const p = propsRef.current;\n xAxis.clamp(false);\n const duration = s.stop.diff(s.start);\n let newStart = moment(xAxis.invert(xAxis(s.start) + delta));\n let newStop = moment(newStart).add(duration, 'milliseconds');\n xAxis.clamp(true);\n const { maxDomain } = p;\n if (maxDomain.min && newStart.isBefore(maxDomain.min)) newStart = moment(maxDomain.min);\n if (maxDomain.max && newStop.isAfter(maxDomain.max)) newStop = moment(maxDomain.max);\n handleAutoSliding(mouse, onDragCursor);\n patchState({ start: newStart, stop: newStop });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleAutoSliding, patchState]);\n\n const onStartDrawCursor = useCallback((pos: number) => {\n const xAxis = xAxisRef.current;\n patchState({\n start: moment(xAxis.invert(pos)),\n stop: moment(xAxis.invert(pos + 1)),\n maxTimespan: false,\n });\n }, [patchState]);\n\n const onDrawCursor = useCallback((delta: number, mouse: any) => {\n const xAxis = xAxisRef.current;\n const s = stateRef.current;\n const p = propsRef.current;\n let newStop = moment(xAxis.invert(xAxis(s.stop) + delta));\n let newStart = s.start;\n let maxTimespan = false;\n if (newStop.isSameOrBefore(newStart)) {\n newStart = moment(xAxis.invert(xAxis(newStart) + delta));\n }\n if (p.biggestTimeSpan) {\n const max = moment(newStart).add(p.biggestTimeSpan);\n if (max.isSameOrBefore(newStop)) {\n newStop = max;\n maxTimespan = true;\n }\n }\n handleAutoSliding(mouse, onDrawCursor);\n if (newStop.isSameOrBefore(s.domain.max) && newStart.isSameOrAfter(s.domain.min)) {\n patchState({ start: newStart, stop: newStop, maxTimespan });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [handleAutoSliding, patchState]);\n\n const onEndDrawCursor = useCallback(() => {\n stopAutoMove();\n const { onCustomRange, selectBarOnClick } = propsRef.current;\n const s = stateRef.current;\n let { start, stop, barHovered } = s;\n if (selectBarOnClick && itemsRef.current && barHovered > -1) {\n const item = itemsRef.current[barHovered];\n if (start.isSameOrAfter(item.start) && stop.isSameOrBefore(item.end)) {\n start = moment(item.start);\n stop = moment(item.end);\n patchState({ start, stop });\n }\n }\n onCustomRange(start, stop);\n }, [stopAutoMove, patchState]);\n\n const onEndChangeCursor = useCallback(() => {\n stopAutoMove();\n const { onCustomRange } = propsRef.current;\n const { start, stop } = stateRef.current;\n onCustomRange(start, stop);\n }, [stopAutoMove]);\n\n const zoomOnDomain = useCallback((targetDomain: any) => {\n const p = propsRef.current;\n const s = stateRef.current;\n if (s.waitForLoad) return;\n if (targetDomain.min.isSame(s.domain.min) && targetDomain.max.isSame(s.domain.max)) {\n p.onShowMessage(labelsRef.current.zoomInWithoutChangingSelectionMsg);\n return;\n }\n const { maxZoom, domain } = checkAndCorrectDomain({ domain: targetDomain });\n const { maxZoom: currentMaxZoom } = s;\n if (maxZoom && maxZoom !== currentMaxZoom) {\n p.onShowMessage(labelsRef.current.zoomSelectionResolutionExtended);\n }\n const domains = [domain, ...p.domains];\n patchState({ maxZoom, minZoom: false, domain });\n p.onUpdateDomains(domains);\n }, [checkAndCorrectDomain, patchState]);\n\n const zoomOutTo = useCallback((domains: any[]) => {\n const res = checkAndCorrectDomain({ domain: domains[0] });\n const { minZoom, domain, domainHasChanged, maxTime, minTime } = res;\n const p = propsRef.current;\n if (minZoom) p.onShowMessage(labelsRef.current.minZoomMsg);\n if (minTime) p.onShowMessage(labelsRef.current.minDomainMsg);\n if (maxTime) p.onShowMessage(labelsRef.current.maxDomainMsg);\n const newDomains = domainHasChanged ? [domain, ...p.domains.slice(1)] : domains;\n patchState({ maxZoom: false, minZoom, domain });\n p.onUpdateDomains(newDomains);\n }, [checkAndCorrectDomain, patchState]);\n\n const zoomOnTarget = useCallback((x: number) => {\n const xAxis = xAxisRef.current;\n const [minOrigin, maxOrigin] = xAxis.domain();\n const target = moment(xAxis.invert(x));\n const min = moment(target).subtract(0.25 * target.diff(moment(minOrigin)));\n const max = moment(target).add(0.25 * moment(maxOrigin).diff(target));\n zoomOnDomain({ min, max });\n }, [zoomOnDomain]);\n\n const zoomOutOfTarget = useCallback((x: number) => {\n const xAxis = xAxisRef.current;\n const [minOrigin, maxOrigin] = xAxis.domain();\n const target = moment(xAxis.invert(x));\n const min = moment(target).subtract(1.25 * target.diff(moment(minOrigin)));\n const max = moment(target).add(1.25 * moment(maxOrigin).diff(target));\n zoomOutTo([{ min, max }]);\n }, [zoomOutTo]);\n\n const zoomIn = useCallback(() => {\n const s = stateRef.current;\n if (!s.maxZoom) {\n zoomOnDomain({ min: s.start, max: s.stop });\n } else {\n propsRef.current.onShowMessage(labelsRef.current.doubleClickMaxZoomMsg);\n }\n }, [zoomOnDomain]);\n\n const zoomOut = useCallback(() => {\n const s = stateRef.current;\n if (s.waitForLoad || s.minZoom) return;\n const p = propsRef.current;\n const domains = [...p.domains];\n if (domains.length > 1) {\n domains.shift();\n } else {\n const xAxis = xAxisRef.current;\n const [minOrigin, maxOrigin] = xAxis.domain();\n const halfDuration = moment(maxOrigin).diff(moment(minOrigin)) / 2;\n const target = moment(minOrigin).add(halfDuration);\n const zoomOutFactor = p.zoomOutFactor ?? defaultZoomOutFactor;\n const min = moment(target).subtract(zoomOutFactor * halfDuration);\n const max = moment(target).add(zoomOutFactor * halfDuration);\n domains[0] = { min, max };\n }\n zoomOutTo(domains);\n }, [zoomOutTo]);\n\n const onWheel = useCallback((event: any) => {\n const s = stateRef.current;\n const p = propsRef.current;\n event.stopPropagation();\n const baseX = timelineElementRef.current?.getBoundingClientRect().left ?? 0;\n const x = event.clientX - baseX - s.margin.left;\n if (s.waitForLoad) return;\n if (event.deltaY < -50) {\n if (s.maxZoom) p.onShowMessage(labelsRef.current.scrollMaxZoomMsg);\n else zoomOnTarget(x);\n } else if (event.deltaY > 50) {\n if (s.minZoom) p.onShowMessage(labelsRef.current.minZoomMsg);\n else if (p.domains.length > 1) zoomOut();\n else zoomOutOfTarget(x);\n }\n }, [zoomOnTarget, zoomOut, zoomOutOfTarget]);\n\n const onGotoCursor = useCallback(() => {\n const s = stateRef.current;\n const p = propsRef.current;\n const middle = moment(s.start).add(s.stop.diff(s.start) / 2);\n const xAxis = xAxisRef.current;\n xAxis.clamp(false);\n const currentX = s.histoWidth / 2;\n const newX = xAxis(middle);\n const newDomain = moveTimeLineCore(currentX - newX);\n const domains = [...p.domains];\n domains.splice(0, 1, newDomain);\n const newDomains = shiftDomainsPure(domains, newDomain, p.biggestVisibleDomain);\n p.onUpdateDomains(newDomains);\n xAxis.clamp(true);\n }, [moveTimeLineCore]);\n\n const onGoto = useCallback((d: any) => {\n const s = stateRef.current;\n const p = propsRef.current;\n const halfTimeAgg = s.stop.diff(s.start) / 2;\n const when = d || moment();\n const newStop = moment(when).add(halfTimeAgg);\n const newStart = moment(when).subtract(halfTimeAgg);\n p.onCustomRange(newStart, newStop);\n }, []);\n\n const shiftTimeLine = useCallback((delta: number) => {\n const incr = (delta / Math.abs(delta)) * 8;\n let i = 0;\n function step() {\n moveTimeLine(incr);\n i += 8;\n if (i < Math.abs(delta)) setTimeout(step, 10);\n else movedTimeLine();\n }\n step();\n }, [moveTimeLine, movedTimeLine]);\n\n // --- Cleanup on unmount -------------------------------------------------\n\n useEffect(() => () => {\n if (autoMoveRef.current) clearInterval(autoMoveRef.current);\n }, []);\n\n // --- Imperative handle --------------------------------------------------\n\n useImperativeHandle(ref, () => ({ zoomIn, zoomOut, shiftTimeLine }), [zoomIn, zoomOut, shiftTimeLine]);\n\n // --- Render -------------------------------------------------------------\n\n const { isActive, domain, histoWidth, margin, start, stop, maxZoom, minZoom,\n maxTimespan, barHovered, tooltipVisible, ticks, dragging } = state;\n\n const xAxisHeight = xAxisProp.height || xAxisDefault.height;\n const pointZero = { x: 0, y: height - margin.bottom - xAxisHeight };\n const originCursor = { x: 0, y: margin.top - 5 };\n\n if (!isFunction(xAxisRef.current)) return null;\n\n const { verticalScale, verticalMarks, maxHeight } = prepareVerticalScale();\n const items = prepareHistogram({ domain, verticalScale });\n itemsRef.current = items;\n\n return (\n <svg\n ref={timelineElementRef}\n width={width}\n height={height}\n onWheel={isActive ? onWheel : undefined}\n >\n <g transform={`translate(${margin.left},${margin.top})`}>\n {yAxisProp.showGrid && (\n <YGrid classes={classes} origin={pointZero} yAxis={verticalScale}\n marks={verticalMarks} xAxisWidth={histoWidth + 13} />\n )}\n {xAxisProp.showGrid && (\n <XGrid classes={classes} origin={pointZero} xAxis={xAxisRef.current}\n marks={ticks} yAxisHeight={maxHeight} />\n )}\n {isActive && (\n <Histogram classes={classes} origin={pointZero} items={items} histo={histo}\n verticalScale={verticalScale} metricsDefinition={metricsDefinition}\n barHovered={barHovered} dragging={dragging}\n tooltipVisible={tooltipVisible}\n onFormatTimeToolTips={onFormatTimeToolTips}\n onFormatMetricLegend={onFormatMetricLegend}\n HistoToolTip={HistoToolTip} />\n )}\n <XAxis classes={classes} origin={pointZero} axisWidth={histoWidth + 13}\n min={domain && domain.min} max={domain && domain.max}\n xAxis={xAxisRef.current} marks={ticks}\n arrowPath={xAxisProp.arrowPath} yAxisHeight={maxHeight}\n showGrid={xAxisProp.showGrid} onFormatTimeLegend={onFormatTimeLegend} />\n <Tools classes={classes} rcToolTipPrefixCls={rcToolTipPrefixCls} origin={pointZero}\n histoWidth={histoWidth} isActive={isActive} tools={tools}\n labels={labelsRef.current} onGoto={onGoto}\n onResetTime={onResetTime} shiftTimeLine={shiftTimeLine} />\n <YAxis classes={classes} origin={pointZero} maxHeight={maxHeight}\n yAxis={verticalScale} marks={verticalMarks}\n arrowPath={yAxisProp.arrowPath} showGrid={yAxisProp.showGrid}\n xAxisWidth={histoWidth + 13} onFormatMetricLegend={onFormatMetricLegend} />\n {showLegend && (\n <Legend classes={classes}\n origin={{ x: -5, y: margin.top + 2 }}\n metricsDefinition={metricsDefinition} />\n )}\n {isActive && tools.cursor !== false && (\n <Cursor\n origin={originCursor} rcToolTipPrefixCls={rcToolTipPrefixCls} classes={classes}\n startPos={xAxisRef.current(start)}\n startIsOutOfView={start.isBefore(domain.min) || start.isAfter(domain.max)}\n endPos={xAxisRef.current(stop)}\n endIsOutOfView={stop.isBefore(domain.min) || stop.isAfter(domain.max)}\n cursorIsBeforeView={start.isBefore(domain.min) && stop.isBefore(domain.min)}\n cursorIsAfterView={start.isAfter(domain.max) && stop.isAfter(domain.max)}\n height={maxHeight} overlayHeight={height - margin.top} overlayWidth={histoWidth}\n tooltipVisible={tooltipVisible} barHovered={barHovered}\n setToolTipVisible={(v: boolean) => patchState({ tooltipVisible: v })}\n setBarHovered={(b: any) => patchState({ barHovered: b })}\n items={items} showHistoToolTip={showHistoToolTip}\n dragging={dragging}\n setDragging={(d: any) => patchState({ dragging: d })}\n canZoom={true} minZoom={minZoom} maxZoom={maxZoom}\n startText={onFormatTimeToolTips(start)} stopText={onFormatTimeToolTips(stop)}\n maxSize={maxTimespan} tools={tools}\n gotoCursorLabel={labelsRef.current.gotoCursor}\n zoomInLabel={labelsRef.current.zoomInLabel}\n zoomOutLabel={labelsRef.current.zoomOutLabel}\n zoomIn={zoomIn} zoomOut={zoomOut}\n onResizeLeftCursor={onResizeLeftCursor}\n onResizeRightCursor={onResizeRightCursor}\n onEndResizeCursor={onEndChangeCursor}\n onDragCursor={onDragCursor} onEndDragCursor={onEndChangeCursor}\n onStartDrawCursor={onStartDrawCursor}\n onDrawCursor={onDrawCursor} onEndCursor={onEndDrawCursor}\n onMoveDomain={moveTimeLine} onMovedDomain={movedTimeLine}\n onGotoCursor={onGotoCursor}\n />\n )}\n {isActive && quality && quality.items && (\n <QualityLine classes={classes} rcToolTipPrefixCls={rcToolTipPrefixCls}\n origin={pointZero} quality={quality} qualityScale={qualityScale}\n xAxis={xAxisRef.current} />\n )}\n </g>\n </svg>\n );\n});\n\nconst TimeLine = forwardRef<TimeLineHandle, any>(function TimeLineWrapper(props, ref) {\n const zone: string | undefined = props.timeZone;\n\n // Internal zoom-history stack (kept as moment-typed for the inner).\n // Initial stack: single entry from props.domain (or empty if null).\n const [stack, setStack] = useState<any[]>(() =>\n props.domain ? [domainToMoments(props.domain, zone)] : []\n );\n\n // If the host updates `domain` (e.g. via URL / redux), sync the top of\n // the stack — same identity if equal, replaced otherwise.\n const prevDomainRef = useRef<any>(props.domain);\n useEffect(() => {\n if (prevDomainRef.current === props.domain) return;\n prevDomainRef.current = props.domain;\n if (!props.domain) {\n setStack([]);\n return;\n }\n const m = domainToMoments(props.domain, zone);\n setStack((prev) => {\n if (prev.length === 0) return [m];\n const top = prev[0];\n if (top.min.isSame(m.min) && top.max.isSame(m.max)) return prev;\n return [m, ...prev.slice(1)];\n });\n }, [props.domain, zone]);\n\n // onUpdateDomains is the inner's single source of truth for domain mutation.\n // Intercept it, persist into `stack`, and report the top to the host.\n const handleUpdateDomains = useCallback((newDomains: any[]) => {\n setStack(newDomains);\n const top = newDomains[0];\n if (top && props.onDomainChange) {\n props.onDomainChange({ min: top.min.toDate(), max: top.max.toDate() });\n }\n }, [props.onDomainChange]);\n\n // onLoadDefaultDomain may now return Domain | Promise<Domain>.\n // If it does, seed the stack + inform the host.\n const handleLoadDefault = useCallback(() => {\n const ret = props.onLoadDefaultDomain?.();\n const apply = (d: any) => {\n if (!d || !d.min || !d.max) return;\n const m = domainToMoments(d, zone);\n if (!m.min || !m.max) return;\n setStack([m]);\n if (props.onDomainChange) {\n props.onDomainChange({ min: m.min.toDate(), max: m.max.toDate() });\n }\n };\n if (ret && typeof (ret as any).then === 'function') (ret as Promise<any>).then(apply);\n else if (ret) apply(ret);\n }, [props.onLoadDefaultDomain, props.onDomainChange, zone]);\n\n // Build the moment-typed props the inner expects. Apply the same\n // defaults the inner destructures locally so that ref-path accesses\n // (propsRef.current.xAxis.spaceBetweenTicks etc.) never trip on an\n // undefined consumer prop.\n const innerProps: any = {\n ...props,\n xAxis: { ...xAxisDefault, ...(props.xAxis ?? {}) },\n yAxis: props.yAxis ?? {},\n margin: { ...marginDefault, ...(props.margin ?? {}) },\n domains: stack,\n timeSpan: props.timeSpan ? timeSpanToMoments(props.timeSpan, zone) : undefined,\n maxDomain: props.maxDomain ? domainToMoments(props.maxDomain, zone) : undefined,\n histo: props.histo?.items\n ? { ...props.histo, items: props.histo.items.map((it: any) => ({ ...it, time: toMoment(it.time, zone) })) }\n : props.histo,\n quality: props.quality?.items\n ? { ...props.quality, items: props.quality.items.map((it: any) => ({ ...it, time: toMoment(it.time, zone) })) }\n : props.quality,\n biggestVisibleDomain: props.biggestVisibleDomain != null ? toDuration(props.biggestVisibleDomain) : undefined,\n biggestTimeSpan: props.biggestTimeSpan != null ? toDuration(props.biggestTimeSpan) : undefined,\n smallestResolution: props.smallestResolution != null ? toDuration(props.smallestResolution) : undefined,\n onUpdateDomains: handleUpdateDomains,\n onLoadDefaultDomain: handleLoadDefault,\n // onLoadHisto: object shape + Date instants\n onLoadHisto: props.onLoadHisto\n ? (ms: number, start: any, end: any) =>\n props.onLoadHisto({ intervalMs: ms, start: momentToDate(start)!, end: momentToDate(end)! })\n : undefined,\n // onCustomRange → onTimeSpanChange, object shape\n onCustomRange: props.onTimeSpanChange\n ? (start: any, stop: any) =>\n props.onTimeSpanChange({ start: momentToDate(start)!, stop: momentToDate(stop)! })\n : props.onCustomRange,\n onFormatTimeToolTips: props.onFormatTimeToolTips\n ? (t: any) => props.onFormatTimeToolTips(momentToDate(t))\n : undefined,\n onFormatTimeLegend: props.onFormatTimeLegend\n ? (t: any) => props.onFormatTimeLegend(momentToDate(t))\n : undefined,\n };\n\n return <TimeLineInner {...innerProps} ref={ref} />;\n});\n\nexport default TimeLine;\n\n// --- Pure helpers (extracted so they can be called from constructor+runtime) ---\n\nfunction checkAndCorrectDomainPure({\n domain, biggestVisibleDomain, maxDomain, smallestResolution, histoWidth,\n}: any) {\n if (!domain) {\n return { domain, maxZoom: false, minZoom: false, domainHasChanged: false };\n }\n const newDomain = { ...domain };\n let domainHasChanged = false;\n const duration = newDomain.max.diff(newDomain.min);\n let maxZoom = false;\n const minRes = smallestResolution.asMilliseconds();\n if (duration <= (histoWidth * minRes) / 15) {\n maxZoom = true;\n newDomain.max = moment(newDomain.min).add((histoWidth * minRes) / 15, 'ms');\n }\n let minTime: boolean | undefined;\n let maxTime: boolean | undefined;\n if (maxDomain?.min && newDomain.min.isBefore(maxDomain.min)) {\n newDomain.min = moment(maxDomain.min);\n minTime = true;\n }\n if (maxDomain?.max && newDomain.max.isAfter(maxDomain.max)) {\n newDomain.max = moment(maxDomain.max);\n maxTime = true;\n }\n let minZoom = false;\n if (biggestVisibleDomain && newDomain.max.isSameOrAfter(moment(newDomain.min).add(biggestVisibleDomain))) {\n minZoom = true;\n newDomain.min = moment(newDomain.max).subtract(biggestVisibleDomain);\n }\n if (!(newDomain.min.isSame(domain.min) && newDomain.max.isSame(domain.max))) {\n domainHasChanged = true;\n }\n return {\n domain: domainHasChanged ? newDomain : domain,\n maxZoom, minZoom, maxTime, minTime, domainHasChanged,\n };\n}\n\nfunction shiftDomainsPure(domains: any[], { min, max }: any, biggestVisibleDomain: any) {\n let toUpdate = false;\n const newDomains = domains.map((domain, index) => {\n if ((min && min.isBefore(domain.min)) || (max && max.isAfter(domain.max))) {\n toUpdate = true;\n if (index === domains.length - 1) {\n const newDomain: any = {\n min: min && min.isBefore(domain.min) ? min : domain.min,\n max: max && max.isAfter(domain.max) ? max : domain.max,\n };\n if (biggestVisibleDomain && moment(newDomain.min).add(biggestVisibleDomain).isSameOrBefore(newDomain.max)) {\n if (min.isBefore(domain.min)) newDomain.max = moment(min).add(biggestVisibleDomain);\n else newDomain.min = moment(max).subtract(biggestVisibleDomain);\n }\n return newDomain;\n }\n if (min && min.isBefore(domain.min)) {\n return { min, max: moment(domain.max).subtract(domain.min.diff(min)) };\n }\n return { min: moment(domain.min).add(max.diff(domain.max)), max };\n }\n return domain;\n });\n return toUpdate ? newDomains : domains;\n}\n","import React, { useState, useEffect, useRef, forwardRef } from 'react';\n\nimport TimeLine from './TimeLine';\nimport './timeline.css';\n\nconst defaultWidth = 900;\nconst defaultHeight = 100;\n\n\nfunction TimeLineResizer(props){\n\n const [dimensions, setDimensions] = useState({\n width: defaultWidth,\n height: defaultHeight,\n });\n\n const container = useRef(null);\n\n const onViewResize = () => {\n if(container.current){\n setDimensions({\n width: container.current.clientWidth,\n height: container.current.clientHeight\n });\n }\n };\n\n useEffect(() => {\n if(container.current){\n onViewResize();\n window.addEventListener('resize', onViewResize);\n }\n }, [container.current]);\n\n\n return (\n <div\n ref={container}\n className=\"tl-root tl-timelineContainer\"\n >\n <TimeLine\n ref={props.forwardedRef}\n width={dimensions.width}\n height={dimensions.height}\n {...props}\n />\n </div>\n )\n}\n\n\nfunction timeLineFwd(props, ref) {\n return <TimeLineResizer {...props} forwardedRef={ref}/>\n}\n\nexport default forwardRef(timeLineFwd);\n","import type { ComponentType, ReactNode, Ref } from 'react';\n\nimport TimeLineResizer from './TimeLineResizer';\nimport Cursor from './Cursor';\nimport TimeLine from './TimeLine';\n\n// --- Public data shapes ------------------------------------------------------\n\nexport interface Domain {\n min: Date;\n max: Date;\n}\n\nexport interface TimeSpan {\n start: Date;\n stop: Date;\n}\n\nexport interface HistoItem {\n time: Date;\n metrics: number[];\n total: number;\n}\n\nexport interface Histo {\n items: HistoItem[];\n intervalMs: number | null;\n}\n\nexport interface QualityItem {\n time: Date;\n quality: number;\n tip?: ReactNode;\n}\n\nexport interface Quality {\n items: QualityItem[];\n intervalMin?: number;\n}\n\nexport interface MetricsDefinition {\n count: number;\n legends: string[];\n colors: Array<{ fill: string; stroke: string; text: string }>;\n}\n\nexport interface TimeLineTools {\n slideForward?: boolean;\n slideBackward?: boolean;\n resetTimeline?: boolean;\n gotoNow?: boolean;\n cursor?: boolean;\n zoomIn?: boolean;\n zoomOut?: boolean;\n}\n\nexport interface AxisConfig {\n spaceBetweenTicks?: number;\n barsBetweenTicks?: number;\n height?: number;\n showGrid?: boolean;\n}\n\nexport interface MarginConfig {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n}\n\n// --- Imperative handle -------------------------------------------------------\n\nexport interface TimeLineHandle {\n zoomIn(): void;\n zoomOut(): void;\n shiftTimeLine(delta: number): void;\n}\n\n// --- Props -------------------------------------------------------------------\n\nexport interface TimeLineProps {\n className?: string;\n classes?: Record<string, string>;\n rcToolTipPrefixCls?: string;\n\n timeSpan: TimeSpan;\n histo: Histo;\n quality?: Quality;\n\n /**\n * The currently-visible window, controlled by the host.\n * Pass `null` on first render if you don't have a default yet — the\n * component will call `onLoadDefaultDomain()` and wait for its result.\n *\n * Zoom-out undo is handled internally; the host only needs to observe\n * `onDomainChange` and re-render with whatever domain it wants.\n */\n domain: Domain | null;\n maxDomain?: Domain;\n\n metricsDefinition: MetricsDefinition;\n\n /** IANA time-zone name (e.g. \"UTC\", \"Europe/Paris\"). Required. */\n timeZone?: string;\n\n zoomOutFactor?: number;\n /** Maximum visible duration, in milliseconds. */\n biggestVisibleDomain?: number;\n /** Maximum selectable duration, in milliseconds. */\n biggestTimeSpan?: number;\n /** Smallest zoom step (15 px == this value), in milliseconds. */\n smallestResolution?: number;\n\n tools?: TimeLineTools;\n fetchWhileSliding?: boolean;\n selectBarOnClick?: boolean;\n showHistoToolTip?: boolean;\n\n xAxis?: AxisConfig;\n yAxis?: AxisConfig;\n margin?: MarginConfig;\n\n labels?: Record<string, unknown>;\n\n /** Called on mount when `domain` is null. Return (sync or Promise) the\n * default domain; the component seeds its internal stack from it and\n * fires `onDomainChange` once resolved.\n */\n onLoadDefaultDomain(): Domain | Promise<Domain> | void;\n /** Called whenever the component needs histogram data for a window. */\n onLoadHisto(args: { intervalMs: number; start: Date; end: Date }): void;\n /** Called when the cursor selection changes (resize, drag, draw, goto). */\n onTimeSpanChange(span: TimeSpan): void;\n onShowMessage(message: ReactNode): void;\n /** Called when the visible domain changes — zoom in/out, pan, or edge shift. */\n onDomainChange(domain: Domain): void;\n onResetTime(): void;\n onFormatTimeToolTips(time: Date): ReactNode;\n onFormatTimeLegend(time: Date): string;\n onFormatMetricLegend(value: number): string;\n}\n\nexport interface TimeLineResizerProps extends TimeLineProps {\n // Resizer measures the container and injects `width`/`height` itself.\n}\n\n// --- Exports -----------------------------------------------------------------\n\n// TimeLine and TimeLineResizer accept a ref forwarding to TimeLineHandle.\ntype TimeLineComponent = ComponentType<TimeLineProps & { ref?: Ref<TimeLineHandle> }>;\ntype TimeLineResizerComponent = ComponentType<TimeLineResizerProps & { ref?: Ref<TimeLineHandle> }>;\n\nconst _TimeLine = TimeLine as unknown as TimeLineComponent;\nconst _TimeLineResizer = TimeLineResizer as unknown as TimeLineResizerComponent;\nconst _Cursor = Cursor as unknown as ComponentType<Record<string, unknown>>;\n\nexport { _TimeLine as TimeLine, _Cursor as Cursor };\nexport default _TimeLineResizer;\n"]}
|