@unovis/ts 1.5.1-xplg.0 → 1.5.1-xplg.1
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/components/annotations/style.js.map +1 -1
- package/components/area/style.js.map +1 -1
- package/components/axis/style.js.map +1 -1
- package/components/brush/style.js.map +1 -1
- package/components/bullet-legend/style.js.map +1 -1
- package/components/chord-diagram/style.js.map +1 -1
- package/components/crosshair/style.js.map +1 -1
- package/components/donut/style.js.map +1 -1
- package/components/flow-legend/style.js.map +1 -1
- package/components/free-brush/style.js.map +1 -1
- package/components/graph/config.d.ts +4 -1
- package/components/graph/config.js +1 -1
- package/components/graph/config.js.map +1 -1
- package/components/graph/index.js +11 -2
- package/components/graph/index.js.map +1 -1
- package/components/graph/modules/link/style.js +4 -1
- package/components/graph/modules/link/style.js.map +1 -1
- package/components/graph/modules/node/style.js.map +1 -1
- package/components/graph/modules/panel/style.js.map +1 -1
- package/components/graph/style.js.map +1 -1
- package/components/grouped-bar/style.js.map +1 -1
- package/components/leaflet-flow-map/config.js +0 -1
- package/components/leaflet-flow-map/config.js.map +1 -1
- package/components/leaflet-flow-map/shaders.js.map +1 -1
- package/components/leaflet-map/config.js +0 -1
- package/components/leaflet-map/config.js.map +1 -1
- package/components/leaflet-map/modules/map.js +3 -3
- package/components/leaflet-map/modules/map.js.map +1 -1
- package/components/leaflet-map/renderer/leaflet-maplibre-gl.js.map +1 -1
- package/components/leaflet-map/style.js.map +1 -1
- package/components/line/style.js.map +1 -1
- package/components/nested-donut/style.js.map +1 -1
- package/components/sankey/modules/label.js.map +1 -1
- package/components/sankey/modules/link.js.map +1 -1
- package/components/sankey/style.js.map +1 -1
- package/components/scatter/style.js.map +1 -1
- package/components/stacked-bar/style.js.map +1 -1
- package/components/timeline/index.js +14 -12
- package/components/timeline/index.js.map +1 -1
- package/components/timeline/style.js.map +1 -1
- package/components/timeline/types.d.ts +1 -1
- package/components/tooltip/style.js.map +1 -1
- package/components/topojson-map/index.js.map +1 -1
- package/components/topojson-map/style.js.map +1 -1
- package/components/treemap/style.js.map +1 -1
- package/components/vis-controls/style.js.map +1 -1
- package/components/xy-labels/style.js.map +1 -1
- package/containers/xy-container/index.js.map +1 -1
- package/core/container/config.js +0 -1
- package/core/container/config.js.map +1 -1
- package/maps/ind-regions.json.js +1 -1
- package/maps/us-counties.json.js +8 -8
- package/package.json +1 -1
- package/styles/index.js.map +1 -1
- package/styles/patterns.js.map +1 -1
- package/styles/sizes.js.map +1 -1
- package/types.js +1 -2
- package/types.js.map +1 -1
- package/utils/path.js +16 -11
- package/utils/path.js.map +1 -1
- package/utils/text.js.map +1 -1
|
@@ -135,11 +135,11 @@ class Timeline extends XYComponentCore {
|
|
|
135
135
|
this._lineBleed = lineBleed;
|
|
136
136
|
// Icon bleed
|
|
137
137
|
const iconBleed = [0, 0];
|
|
138
|
-
if (config.lineStartIcon
|
|
139
|
-
iconBleed[0] = getIconBleed(
|
|
138
|
+
if (config.lineStartIcon) {
|
|
139
|
+
iconBleed[0] = max(data, (d, i) => getIconBleed(d, i, config.lineStartIcon, config.lineStartIconSize, config.lineStartIconArrangement, rowHeight));
|
|
140
140
|
}
|
|
141
|
-
if (config.lineEndIcon
|
|
142
|
-
iconBleed[1] = getIconBleed(
|
|
141
|
+
if (config.lineEndIcon) {
|
|
142
|
+
iconBleed[1] = max(data, (d, i) => getIconBleed(d, i, config.lineEndIcon, config.lineEndIconSize, config.lineEndIconArrangement, rowHeight));
|
|
143
143
|
}
|
|
144
144
|
this._rowIconBleed = iconBleed;
|
|
145
145
|
return {
|
|
@@ -392,26 +392,26 @@ class Timeline extends XYComponentCore {
|
|
|
392
392
|
const id = (_a = getString(d, config.id, i)) !== null && _a !== void 0 ? _a : [
|
|
393
393
|
this._getRecordKey(d, i), getNumber(d, config.x, i),
|
|
394
394
|
].join('-');
|
|
395
|
-
const
|
|
395
|
+
const lineWidth = this._getLineWidth(d, i, rowHeight);
|
|
396
396
|
const lineLength = this._getLineLength(d, i);
|
|
397
397
|
if (lineLength < 0) {
|
|
398
398
|
console.warn('Unovis | Timeline: Line segments should not have negative lengths. Setting to 0.');
|
|
399
399
|
}
|
|
400
|
-
const isLineTooShort = config.showEmptySegments && config.lineCap && (lineLength <
|
|
400
|
+
const isLineTooShort = config.showEmptySegments && config.lineCap && (lineLength < lineWidth);
|
|
401
401
|
const lineLengthCorrected = config.showEmptySegments
|
|
402
|
-
? Math.max(config.lineCap ?
|
|
402
|
+
? Math.max(config.lineCap ? lineWidth : 1, lineLength)
|
|
403
403
|
: Math.max(0, lineLength);
|
|
404
404
|
const x = xScale(getNumber(d, config.x, i));
|
|
405
|
-
const y = yStart + rowOrdinalScale(this._getRecordKey(d, i)) * rowHeight + (rowHeight -
|
|
405
|
+
const y = yStart + rowOrdinalScale(this._getRecordKey(d, i)) * rowHeight + (rowHeight - lineWidth) / 2;
|
|
406
406
|
const xOffset = isLineTooShort ? -(lineLengthCorrected - lineLength) / 2 : 0;
|
|
407
|
-
return Object.assign(Object.assign({}, d), { _id: id, _xPx: x, _yPx: y, _xOffsetPx: xOffset, _length: lineLength, _height:
|
|
407
|
+
return Object.assign(Object.assign({}, d), { _id: id, _xPx: x, _yPx: y, _xOffsetPx: xOffset, _length: lineLength, _height: lineWidth, _lengthCorrected: lineLengthCorrected, _startIconSize: (_b = getNumber(d, config.lineStartIconSize, i)) !== null && _b !== void 0 ? _b : lineWidth, _endIconSize: (_c = getNumber(d, config.lineEndIconSize, i)) !== null && _c !== void 0 ? _c : lineWidth, _startIconColor: getString(d, config.lineStartIconColor, i), _endIconColor: getString(d, config.lineEndIconColor, i), _startIconArrangement: (_d = getValue(d, config.lineStartIconArrangement, i)) !== null && _d !== void 0 ? _d : Arrangement.Outside, _endIconArrangement: (_e = getValue(d, config.lineEndIconArrangement, i)) !== null && _e !== void 0 ? _e : Arrangement.Outside });
|
|
408
408
|
});
|
|
409
409
|
}
|
|
410
410
|
_prepareArrowsData(data, rowOrdinalScale, rowHeight) {
|
|
411
411
|
var _a;
|
|
412
412
|
const { config } = this;
|
|
413
413
|
const arrowsData = (_a = config.arrows) === null || _a === void 0 ? void 0 : _a.map(a => {
|
|
414
|
-
var _a, _b, _c, _d;
|
|
414
|
+
var _a, _b, _c, _d, _e;
|
|
415
415
|
const sourceLineIndex = data.findIndex((d, i) => getString(d, config.id, i) === a.lineSourceId);
|
|
416
416
|
const targetLineIndex = data.findIndex((d, i) => getString(d, config.id, i) === a.lineTargetId);
|
|
417
417
|
const sourceLine = data[sourceLineIndex];
|
|
@@ -427,7 +427,9 @@ class Timeline extends XYComponentCore {
|
|
|
427
427
|
const x1 = (a.xSource
|
|
428
428
|
? this.xScale(a.xSource)
|
|
429
429
|
: this.xScale(getNumber(sourceLine, config.x, sourceLineIndex)) + this._getLineLength(sourceLine, sourceLineIndex)) + ((_a = a.xSourceOffsetPx) !== null && _a !== void 0 ? _a : 0);
|
|
430
|
-
const
|
|
430
|
+
const targetLineLength = this._getLineLength(targetLine, targetLineIndex);
|
|
431
|
+
const isTargetLineTooShort = config.showEmptySegments && config.lineCap && (targetLineLength < targetLineWidth);
|
|
432
|
+
const targetLineStart = this.xScale(getNumber(targetLine, config.x, targetLineIndex)) + (isTargetLineTooShort ? -targetLineWidth / 2 : 0);
|
|
431
433
|
const x2 = (a.xTarget ? this.xScale(a.xTarget) : targetLineStart) + ((_b = a.xTargetOffsetPx) !== null && _b !== void 0 ? _b : 0);
|
|
432
434
|
const isX2OutsideTargetLineStart = (x2 < targetLineStart) || (x2 > targetLineStart);
|
|
433
435
|
// Points array
|
|
@@ -436,7 +438,7 @@ class Timeline extends XYComponentCore {
|
|
|
436
438
|
const y1 = sourceLineY < targetLineY ? sourceLineY + sourceLineWidth / 2 + sourceMargin : sourceLineY - sourceLineWidth / 2 - sourceMargin;
|
|
437
439
|
const y2 = sourceLineY < targetLineY ? targetLineY - targetLineWidth / 2 - targetMargin : targetLineY + targetLineWidth / 2 + targetMargin;
|
|
438
440
|
const points = [[x1, y1]];
|
|
439
|
-
const threshold =
|
|
441
|
+
const threshold = (_e = a.arrowHeadLength) !== null && _e !== void 0 ? _e : TIMELINE_DEFAULT_ARROW_HEAD_LENGTH;
|
|
440
442
|
if (Math.abs(x2 - x1) > threshold) {
|
|
441
443
|
if ((x1 < x2) && !isX2OutsideTargetLineStart) {
|
|
442
444
|
points.push([x1, (y1 + targetLineY) / 2]); // A dummy point to enable smooth transitions when arrows change
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/timeline/index.ts"],"sourcesContent":["import { select, Selection } from 'd3-selection'\nimport { Transition } from 'd3-transition'\nimport { max, min, minIndex } from 'd3-array'\nimport { scaleOrdinal, ScaleOrdinal } from 'd3-scale'\nimport { drag, D3DragEvent } from 'd3-drag'\n\n// Core\nimport { XYComponentCore } from 'core/xy-component'\n\n// Utils\nimport { isNumber, arrayOfIndices, getMin, getMax, getString, getNumber, getValue, groupBy, isPlainObject, isFunction } from 'utils/data'\nimport { smartTransition } from 'utils/d3'\nimport { getColor } from 'utils/color'\nimport { textAlignToAnchor, trimSVGText } from 'utils/text'\nimport { arrowPolylinePath } from 'utils/path'\nimport { guid } from 'utils/misc'\n\n// Types\nimport { TextAlign, Spacing, Arrangement } from 'types'\n\n// Config\nimport { TimelineDefaultConfig, TimelineConfigInterface } from './config'\n\n// Styles\nimport * as s from './style'\n\n// Local Types\nimport type { TimelineArrow, TimelineArrowRenderState, TimelineLineRenderState, TimelineRowLabel } from './types'\n\n// Constants\nimport { TIMELINE_DEFAULT_ARROW_HEAD_LENGTH, TIMELINE_DEFAULT_ARROW_HEAD_WIDTH, TIMELINE_DEFAULT_ARROW_MARGIN } from './constants'\n\n// Utils\nimport { getIconBleed } from './utils'\n\nexport class Timeline<Datum> extends XYComponentCore<Datum, TimelineConfigInterface<Datum>> {\n static selectors = s\n protected _defaultConfig = TimelineDefaultConfig as TimelineConfigInterface<Datum>\n public config: TimelineConfigInterface<Datum> = this._defaultConfig\n\n events = {\n [Timeline.selectors.background]: {\n wheel: this._onMouseWheel.bind(this),\n },\n [Timeline.selectors.label]: {\n wheel: this._onMouseWheel.bind(this),\n },\n [Timeline.selectors.rows]: {\n wheel: this._onMouseWheel.bind(this),\n },\n [Timeline.selectors.line]: {\n wheel: this._onMouseWheel.bind(this),\n },\n }\n\n private _background: Selection<SVGRectElement, unknown, SVGGElement, unknown>\n private _rowsGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _arrowsGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _linesGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _labelsGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _rowIconsGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _scrollBarGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _scrollBarBackground: Selection<SVGRectElement, unknown, SVGGElement, unknown>\n private _scrollBarHandle: Selection<SVGRectElement, unknown, SVGGElement, unknown>\n private _scrollBarWidth = 5\n private _scrollDistance = 0\n private _scrollBarMargin = 5\n private _maxScroll = 0\n private _scrollbarHeight = 0\n private _labelMargin = 5\n private _labelWidth = 0 // Will be overridden in `get bleed ()`\n private _rowIconBleed: [number, number] = [0, 0]\n private _lineBleed: [number, number] = [0, 0]\n\n /** We define a dedicated clipping path for this component because it needs to behave\n * differently than the regular XYContainer's clipPath */\n private _clipPathId = guid()\n private _clipPath: Selection<SVGClipPathElement, unknown, null, undefined>\n\n constructor (config?: TimelineConfigInterface<Datum>) {\n super()\n if (config) this.setConfig(config)\n\n // Invisible background rect to track events\n this._background = this.g.append('rect').attr('class', s.background)\n\n // Clip path\n this._clipPath = this.g.append('clipPath')\n .attr('id', this._clipPathId)\n this._clipPath.append('rect')\n\n // Group for content\n this._rowsGroup = this.g.append('g').attr('class', s.rows)\n .style('clip-path', `url(#${this._clipPathId})`)\n this._arrowsGroup = this.g.append('g').attr('class', s.arrows)\n .style('clip-path', `url(#${this._clipPathId})`)\n this._linesGroup = this.g.append('g').attr('class', s.lines)\n .style('clip-path', `url(#${this._clipPathId})`)\n this._labelsGroup = this.g.append('g').attr('class', s.labels)\n this._rowIconsGroup = this.g.append('g').attr('class', s.rowIcons)\n this._scrollBarGroup = this.g.append('g').attr('class', s.scrollbar)\n\n // Scroll bar\n this._scrollBarBackground = this._scrollBarGroup.append('rect')\n .attr('class', s.scrollbarBackground)\n\n this._scrollBarHandle = this._scrollBarGroup.append('rect')\n .attr('class', s.scrollbarHandle)\n\n // Set up scrollbar drag event\n const dragBehaviour = drag<SVGRectElement, unknown>()\n .on('drag', this._onScrollbarDrag.bind(this))\n\n this._scrollBarHandle.call(dragBehaviour)\n }\n\n public setConfig (config: TimelineConfigInterface<Datum>): void {\n super.setConfig(config)\n }\n\n public setData (data: Datum[]): void {\n super.setData(data)\n }\n\n get bleed (): Spacing {\n const { config, datamodel: { data } } = this\n const rowLabels = this._getRowLabels(data)\n const rowHeight = config.rowHeight || (this._height / rowLabels.length)\n const hasIcons = rowLabels.some(l => l.iconHref)\n const maxIconSize = max(rowLabels.map(l => l.iconSize || 0))\n\n // We calculate the longest label width to set the bleed values accordingly\n if (config.showRowLabels ?? config.showLabels) {\n if (config.rowLabelWidth ?? config.labelWidth) this._labelWidth = (config.rowLabelWidth ?? config.labelWidth) + this._labelMargin\n else {\n const longestLabel = rowLabels.reduce((longestLabel, l) => longestLabel.formattedLabel.length > l.formattedLabel.length ? longestLabel : l, rowLabels[0])\n const label = this._labelsGroup.append('text')\n .attr('class', s.label)\n .text(longestLabel?.formattedLabel || '')\n .call(trimSVGText, config.rowMaxLabelWidth ?? config.maxLabelWidth)\n\n const labelWidth = label.node().getBBox().width\n label.remove()\n\n const tolerance = 1.15 // Some characters are wider than others so we add a little of extra space to take that into account\n this._labelWidth = labelWidth ? tolerance * labelWidth + this._labelMargin : 0\n }\n }\n\n // There can be multiple start / end items with the same timestamp, so we need to find the shortest one\n const minTimestamp = min(data, (d, i) => getNumber(d, config.x, i))\n const dataMin = data.filter((d, i) => getNumber(d, config.x, i) === minTimestamp)\n const dataMinShortestItemIdx = minIndex(dataMin, (d, i) => this._getLineDuration(d, i))\n const firstItemIdx = data.findIndex(d => d === dataMin[dataMinShortestItemIdx])\n const firstItem = data[firstItemIdx]\n\n const maxTimestamp = max(data, (d, i) => getNumber(d, config.x, i) + this._getLineDuration(d, i))\n const dataMax = data.filter((d, i) => getNumber(d, config.x, i) + this._getLineDuration(d, i) === maxTimestamp)\n const dataMaxShortestItemIdx = minIndex(dataMax, (d, i) => this._getLineDuration(d, i))\n const lastItemIdx = data.findIndex(d => d === dataMax[dataMaxShortestItemIdx])\n const lastItem = data[lastItemIdx]\n\n // Small segments bleed\n const lineBleed = [1, 1] as [number, number]\n if (config.showEmptySegments && config.lineCap && firstItem && lastItem) {\n const firstItemStart = getNumber(firstItem, config.x, firstItemIdx)\n const firstItemEnd = getNumber(firstItem, config.x, firstItemIdx) + this._getLineDuration(firstItem, firstItemIdx)\n const lastItemStart = getNumber(lastItem, config.x, lastItemIdx)\n const lastItemEnd = getNumber(lastItem, config.x, lastItemIdx) + this._getLineDuration(lastItem, lastItemIdx)\n const fullTimeRange = lastItemEnd - firstItemStart\n const firstItemHeight = this._getLineWidth(firstItem, firstItemIdx, rowHeight)\n const lastItemHeight = this._getLineWidth(lastItem, lastItemIdx, rowHeight)\n\n if ((firstItemEnd - firstItemStart) / fullTimeRange * this._width < firstItemHeight) lineBleed[0] = firstItemHeight / 2\n if ((lastItemEnd - lastItemStart) / fullTimeRange * this._width < lastItemHeight) lineBleed[1] = lastItemHeight / 2\n }\n this._lineBleed = lineBleed\n\n // Icon bleed\n const iconBleed = [0, 0] as [number, number]\n if (config.lineStartIcon && firstItem) {\n iconBleed[0] = getIconBleed(firstItem, firstItemIdx, config.lineStartIcon, config.lineStartIconSize, config.lineStartIconArrangement, rowHeight)\n }\n\n if (config.lineEndIcon && lastItem) {\n iconBleed[1] = getIconBleed(lastItem, lastItemIdx, config.lineEndIcon, config.lineEndIconSize, config.lineEndIconArrangement, rowHeight)\n }\n\n this._rowIconBleed = iconBleed\n\n return {\n top: 0,\n bottom: 0,\n left: this._labelWidth + iconBleed[0] + (hasIcons ? maxIconSize : 0) + lineBleed[0],\n right: this._scrollBarWidth + this._scrollBarMargin + iconBleed[1] + lineBleed[1],\n }\n }\n\n _render (customDuration?: number): void {\n super._render(customDuration)\n const { config, datamodel: { data } } = this\n const duration = isNumber(customDuration) ? customDuration : config.duration\n const xRange = this.xScale.range()\n const yRange = this.yScale.range()\n const yStart = Math.min(...yRange)\n const yHeight = Math.abs(yRange[1] - yRange[0])\n const rowLabels = this._getRowLabels(data)\n const numRowLabels = rowLabels.length\n const rowHeight = config.rowHeight || (yHeight / numRowLabels)\n\n const yOrdinalScale = scaleOrdinal<string, number>()\n .range(arrayOfIndices(numRowLabels))\n .domain(rowLabels.map(l => l.label))\n\n const lineDataPrepared = this._prepareLinesData(data, yOrdinalScale, rowHeight)\n\n // Invisible Background rect to track events\n this._background\n .attr('width', this._width)\n .attr('height', this._height)\n .attr('opacity', 0)\n\n // Row Icons\n const rowIcons = this._rowIconsGroup.selectAll<SVGUseElement, TimelineRowLabel<Datum>>(`.${s.rowIcon}`)\n .data(rowLabels.filter(d => d.iconSize), l => l?.label)\n\n const rowIconsEnter = rowIcons.enter().append('use')\n .attr('class', s.rowIcon)\n .attr('x', 0)\n .attr('width', l => l.iconSize)\n .attr('height', l => l.iconSize)\n .attr('y', l => yStart + (yOrdinalScale(l.label) + 0.5) * rowHeight - l.iconSize / 2)\n .style('opacity', 0)\n\n smartTransition(rowIconsEnter.merge(rowIcons), duration)\n .attr('href', l => l.iconHref)\n .attr('x', 0)\n .attr('y', l => yStart + (yOrdinalScale(l.label) + 0.5) * rowHeight - l.iconSize / 2)\n .attr('width', l => l.iconSize)\n .attr('height', l => l.iconSize)\n .style('color', l => l.iconColor)\n .style('opacity', 1)\n\n smartTransition(rowIcons.exit(), duration)\n .style('opacity', 0)\n .remove()\n\n // Labels\n const labels = this._labelsGroup.selectAll<SVGTextElement, TimelineRowLabel<Datum>>(`.${s.label}`)\n .data((config.showRowLabels ?? config.showLabels) ? rowLabels : [], l => l?.label)\n\n const labelOffset = config.rowLabelTextAlign === TextAlign.Center ? this._labelWidth / 2\n : config.rowLabelTextAlign === TextAlign.Left ? this._labelWidth\n : this._labelMargin\n\n const xStart = xRange[0] - this._rowIconBleed[0] - this._lineBleed[0]\n const labelXStart = xStart - labelOffset\n const labelsEnter = labels.enter().append('text')\n .attr('class', s.label)\n .attr('x', labelXStart)\n .attr('y', l => yStart + (yOrdinalScale(l.label) + 0.5) * rowHeight)\n .style('opacity', 0)\n\n const labelsMerged = labelsEnter.merge(labels)\n .text(l => l.formattedLabel)\n .each((label, i, els) => {\n const labelSelection = select(els[i])\n trimSVGText(labelSelection, (config.rowLabelWidth ?? config.labelWidth) || (config.rowMaxLabelWidth ?? config.maxLabelWidth))\n\n // Apply custom label style if it has been provided\n const customStyle = getValue(label, config.rowLabelStyle)\n if (!isPlainObject(customStyle)) return\n\n for (const [prop, value] of Object.entries(customStyle)) {\n labelSelection.style(prop, value)\n }\n })\n .style('text-anchor', textAlignToAnchor(config.rowLabelTextAlign as TextAlign))\n\n smartTransition(labelsMerged, duration)\n .attr('x', labelXStart)\n .attr('y', l => yStart + (yOrdinalScale(l.label) + 0.5) * rowHeight)\n .style('opacity', 1)\n\n smartTransition(labels.exit(), duration)\n .style('opacity', 0)\n .remove()\n\n // Row background rects\n const timelineWidth = xRange[1] - xRange[0] + this._rowIconBleed[0] + this._rowIconBleed[1] + this._lineBleed[0] + this._lineBleed[1]\n const numRows = Math.max(Math.floor(yHeight / rowHeight), numRowLabels)\n const recordTypes = Array(numRows).fill(null).map((_, i) => rowLabels[i])\n const rects = this._rowsGroup.selectAll<SVGRectElement, number>(`.${s.row}`)\n .data(recordTypes)\n\n const rectsEnter = rects.enter().append('rect')\n .attr('class', s.row)\n .attr('x', xStart)\n .attr('width', timelineWidth)\n .attr('y', (_, i) => yStart + i * rowHeight)\n .attr('height', rowHeight)\n .style('opacity', 0)\n\n const rectsMerged = rectsEnter.merge(rects)\n .classed(s.rowOdd, config.alternatingRowColors ? (_, i) => !(i % 2) : null)\n\n smartTransition(rectsMerged, duration)\n .attr('x', xStart)\n .attr('width', timelineWidth)\n .attr('y', (_, i) => yStart + i * rowHeight)\n .attr('height', rowHeight)\n .style('opacity', 1)\n\n smartTransition(rects.exit(), duration)\n .style('opacity', 0)\n .remove()\n\n // Lines\n const lines = this._linesGroup.selectAll<SVGGElement, Datum & TimelineLineRenderState>(`.${s.lineGroup}`)\n .data(lineDataPrepared, (d: Datum & TimelineLineRenderState) => d._id)\n\n const linesEnter = lines.enter().append('g')\n .attr('class', s.lineGroup)\n .style('opacity', 0)\n .attr('transform', (d, i) => {\n const configuredPos = isFunction(config.animationLineEnterPosition)\n ? config.animationLineEnterPosition(d, i, lineDataPrepared)\n : config.animationLineEnterPosition\n const [x, y] = [configuredPos?.[0] ?? d._xPx, configuredPos?.[1] ?? d._yPx]\n return `translate(${x}, ${y})`\n })\n\n linesEnter.append('rect')\n .attr('class', s.line)\n .style('fill', (d, i) => getColor(d, config.color, yOrdinalScale(this._getRecordKey(d, i))))\n .call(this._renderLines.bind(this), rowHeight)\n\n linesEnter.append('use').attr('class', s.lineStartIcon)\n linesEnter.append('use').attr('class', s.lineEndIcon)\n\n const linesMerged = linesEnter.merge(lines)\n smartTransition(linesMerged, duration)\n .attr('transform', d => `translate(${d._xPx + d._xOffsetPx}, ${d._yPx})`)\n .style('opacity', 1)\n\n const lineRectElementsSelection = linesMerged.selectAll<SVGRectElement, Datum & TimelineLineRenderState>(`.${s.line}`)\n .data(d => [d])\n smartTransition(lineRectElementsSelection, duration)\n .style('fill', (d, i) => getColor(d, config.color, yOrdinalScale(this._getRecordKey(d, i))))\n .style('cursor', (d, i) => getString(d, config.lineCursor ?? config.cursor, i))\n .call(this._renderLines.bind(this), rowHeight)\n\n linesMerged.selectAll<SVGUseElement, Datum & TimelineLineRenderState>(`.${s.lineStartIcon}`)\n .data(d => [d])\n .attr('href', (d, i) => getString(d, config.lineStartIcon, i))\n .attr('x', (d, i) => {\n const iconSize = d._startIconSize\n const iconArrangement = d._startIconArrangement\n const offset = iconArrangement === Arrangement.Inside ? 0\n : iconArrangement === Arrangement.Center ? -iconSize / 2\n : -iconSize\n return offset\n })\n .attr('y', d => (-(d._startIconSize - d._height) / 2) || 0)\n .attr('width', d => d._startIconSize)\n .attr('height', d => d._startIconSize)\n .style('color', d => d._startIconColor)\n\n linesMerged.selectAll<SVGUseElement, Datum & TimelineLineRenderState>(`.${s.lineEndIcon}`)\n .data(d => [d])\n .attr('href', (d, i) => getString(d, config.lineEndIcon, i))\n .attr('x', (d, i) => {\n const lineLength = d._lengthCorrected\n const iconSize = d._endIconSize\n const iconArrangement = d._endIconArrangement\n const offset = iconArrangement === Arrangement.Inside ? -iconSize\n : iconArrangement === Arrangement.Center ? -iconSize / 2\n : 0\n return lineLength + offset\n })\n .attr('y', d => -((d._endIconSize - d._height) / 2) || 0)\n .attr('width', d => d._endIconSize)\n .attr('height', d => d._endIconSize)\n .style('color', d => d._endIconColor)\n\n const linesExit = lines.exit<Datum & TimelineLineRenderState>()\n smartTransition(linesExit, duration)\n .style('opacity', 0)\n .attr('transform', (d, i) => {\n const configuredPos = isFunction(config.animationLineExitPosition)\n ? config.animationLineExitPosition(d, i, lineDataPrepared)\n : config.animationLineExitPosition\n const [x, y] = [configuredPos?.[0] ?? d._xPx, configuredPos?.[1] ?? d._yPx]\n return `translate(${x}, ${y})`\n })\n .remove()\n\n // Arrows\n const arrowsData = this._prepareArrowsData(data, yOrdinalScale, rowHeight)\n const arrows = this._arrowsGroup.selectAll<SVGPathElement, TimelineArrow & TimelineArrowRenderState>(`.${s.arrow}`)\n .data(arrowsData ?? [], d => d.id)\n\n const arrowsEnter = arrows.enter().append('path')\n .attr('class', s.arrow)\n .style('opacity', 0)\n\n smartTransition(arrowsEnter.merge(arrows), duration)\n .attr('d', (d) => arrowPolylinePath(\n d._points,\n d.arrowHeadLength ?? TIMELINE_DEFAULT_ARROW_HEAD_LENGTH,\n d.arrowHeadWidth ?? TIMELINE_DEFAULT_ARROW_HEAD_WIDTH\n ))\n .style('opacity', 1)\n\n smartTransition(arrows.exit(), duration)\n .style('opacity', 0)\n .remove()\n\n // Scroll Bar\n const contentBBox = this._rowsGroup.node().getBBox() // We determine content size using the rects group because lines are animated\n const absoluteContentHeight = contentBBox.height\n this._scrollbarHeight = yHeight * yHeight / absoluteContentHeight || 0\n this._maxScroll = Math.max(absoluteContentHeight - yHeight, 0)\n\n this._scrollBarGroup\n .attr('transform', `translate(${this._width - this._scrollBarWidth}, ${yStart})`)\n .attr('opacity', this._maxScroll ? 1 : 0)\n\n this._scrollBarBackground\n .attr('width', this._scrollBarWidth)\n .attr('height', this._height)\n .attr('rx', this._scrollBarWidth / 2)\n .attr('ry', this._scrollBarWidth / 2)\n\n this._scrollBarHandle\n .attr('width', this._scrollBarWidth)\n .attr('height', this._scrollbarHeight)\n .attr('rx', this._scrollBarWidth / 2)\n .attr('ry', this._scrollBarWidth / 2)\n\n this._updateScrollPosition(0)\n\n // Clip path\n const clipPathRect = this._clipPath.select('rect')\n smartTransition(clipPathRect, clipPathRect.attr('width') ? duration : 0)\n .attr('x', xStart)\n .attr('width', timelineWidth)\n .attr('height', this._height)\n }\n\n private _getLineLength (d: Datum, i: number): number {\n const { config, xScale } = this\n const x = getNumber(d, config.x, i)\n const length = getNumber(d, config.lineDuration ?? config.length, i) ?? 0\n\n const lineLength = xScale(x + length) - xScale(x)\n return lineLength\n }\n\n private _getLineWidth (d: Datum, i: number, rowHeight: number): number {\n const { config } = this\n return getNumber(d, config.lineWidth, i) ?? Math.max(Math.floor(rowHeight / 2), 1)\n }\n\n private _getLineDuration (d: Datum, i: number): number {\n const { config } = this\n return getNumber(d, config.lineDuration ?? config.length, i) ?? 0\n }\n\n private _prepareLinesData (data: Datum[], rowOrdinalScale: ScaleOrdinal<string, number>, rowHeight: number): (Datum & TimelineLineRenderState)[] {\n const { config, xScale, yScale } = this\n const yRange = yScale.range()\n const yStart = Math.min(...yRange)\n\n return data.map((d, i) => {\n const id = getString(d, config.id, i) ?? [\n this._getRecordKey(d, i), getNumber(d, config.x, i),\n ].join('-')\n\n const lineHeight = this._getLineWidth(d, i, rowHeight)\n const lineLength = this._getLineLength(d, i)\n\n if (lineLength < 0) {\n console.warn('Unovis | Timeline: Line segments should not have negative lengths. Setting to 0.')\n }\n\n const isLineTooShort = config.showEmptySegments && config.lineCap && (lineLength < lineHeight)\n const lineLengthCorrected = config.showEmptySegments\n ? Math.max(config.lineCap ? lineHeight : 1, lineLength)\n : Math.max(0, lineLength)\n\n const x = xScale(getNumber(d, config.x, i))\n const y = yStart + rowOrdinalScale(this._getRecordKey(d, i)) * rowHeight + (rowHeight - lineHeight) / 2\n const xOffset = isLineTooShort ? -(lineLengthCorrected - lineLength) / 2 : 0\n\n return {\n ...d,\n _id: id,\n _xPx: x,\n _yPx: y,\n _xOffsetPx: xOffset,\n _length: lineLength,\n _height: lineHeight,\n _lengthCorrected: lineLengthCorrected,\n _startIconSize: getNumber(d, config.lineStartIconSize, i) ?? lineHeight,\n _endIconSize: getNumber(d, config.lineEndIconSize, i) ?? lineHeight,\n _startIconColor: getString(d, config.lineStartIconColor, i),\n _endIconColor: getString(d, config.lineEndIconColor, i),\n _startIconArrangement: getValue(d, config.lineStartIconArrangement, i) ?? Arrangement.Outside,\n _endIconArrangement: getValue(d, config.lineEndIconArrangement, i) ?? Arrangement.Outside,\n }\n })\n }\n\n private _prepareArrowsData (data: Datum[], rowOrdinalScale: ScaleOrdinal<string, number>, rowHeight: number): (TimelineArrow & TimelineArrowRenderState)[] {\n const { config } = this\n\n const arrowsData: (TimelineArrow & TimelineArrowRenderState)[] = config.arrows?.map(a => {\n const sourceLineIndex = data.findIndex((d, i) => getString(d, config.id, i) === a.lineSourceId)\n const targetLineIndex = data.findIndex((d, i) => getString(d, config.id, i) === a.lineTargetId)\n const sourceLine = data[sourceLineIndex]\n const targetLine = data[targetLineIndex]\n\n if (!sourceLine || !targetLine) {\n console.warn('Unovis | Timeline: Arrow references a non-existent line. Skipping...', a)\n return undefined\n }\n\n const sourceLineY = rowOrdinalScale(this._getRecordKey(sourceLine, sourceLineIndex)) * rowHeight + rowHeight / 2\n const targetLineY = rowOrdinalScale(this._getRecordKey(targetLine, targetLineIndex)) * rowHeight + rowHeight / 2\n const sourceLineWidth = this._getLineWidth(sourceLine, sourceLineIndex, rowHeight)\n const targetLineWidth = this._getLineWidth(targetLine, targetLineIndex, rowHeight)\n\n const x1 = (a.xSource\n ? this.xScale(a.xSource)\n : this.xScale(getNumber(sourceLine, config.x, sourceLineIndex)) + this._getLineLength(sourceLine, sourceLineIndex)\n ) + (a.xSourceOffsetPx ?? 0)\n const targetLineStart = this.xScale(getNumber(targetLine, config.x, targetLineIndex))\n const x2 = (a.xTarget ? this.xScale(a.xTarget) : targetLineStart) + (a.xTargetOffsetPx ?? 0)\n const isX2OutsideTargetLineStart = (x2 < targetLineStart) || (x2 > targetLineStart)\n\n // Points array\n const sourceMargin = a.lineSourceMarginPx ?? TIMELINE_DEFAULT_ARROW_MARGIN\n const targetMargin = a.lineTargetMarginPx ?? TIMELINE_DEFAULT_ARROW_MARGIN\n const y1 = sourceLineY < targetLineY ? sourceLineY + sourceLineWidth / 2 + sourceMargin : sourceLineY - sourceLineWidth / 2 - sourceMargin\n const y2 = sourceLineY < targetLineY ? targetLineY - targetLineWidth / 2 - targetMargin : targetLineY + targetLineWidth / 2 + targetMargin\n const points = [[x1, y1]] as [number, number][]\n const threshold = 5\n if (Math.abs(x2 - x1) > threshold) {\n if ((x1 < x2) && !isX2OutsideTargetLineStart) {\n points.push([x1, (y1 + targetLineY) / 2]) // A dummy point to enable smooth transitions when arrows change\n points.push([x1, targetLineY])\n points.push([x2 - targetMargin, targetLineY])\n } else {\n points.push([x1, y2 - Math.sign(targetLineY - sourceLineY) * (rowHeight / 4)])\n points.push([x2, y2 - Math.sign(targetLineY - sourceLineY) * (rowHeight / 4)])\n points.push([x2, y2])\n }\n } else {\n points.push([x1, y1 + (y2 - y1) / 4]) // A dummy point to enable smooth transitions\n points.push([x1, y1 + 3 * (y2 - y1) / 4]) // A dummy point to enable smooth transitions\n points.push([x1, y2])\n }\n\n return {\n ...a,\n _points: points,\n }\n }).filter(Boolean)\n return arrowsData\n }\n\n\n private _renderLines (\n selection: Selection<SVGRectElement, Datum & TimelineLineRenderState, SVGGElement, unknown> | Transition<SVGRectElement, Datum & TimelineLineRenderState, SVGGElement, unknown>\n ): void {\n const { config } = this\n\n selection\n .attr('width', d => d._lengthCorrected)\n .attr('height', d => d._height)\n .attr('rx', d => config.lineCap ? d._height / 2 : null)\n }\n\n private _onScrollbarDrag (event: D3DragEvent<any, any, any>): void {\n const yRange = this.yScale.range()\n const yHeight = Math.abs(yRange[1] - yRange[0])\n this._updateScrollPosition(event.dy * this._maxScroll / (yHeight - this._scrollbarHeight))\n }\n\n private _onMouseWheel (d: unknown, event: WheelEvent): void {\n const { config } = this\n\n this._updateScrollPosition(event?.deltaY)\n if (this._scrollDistance > 0 && this._scrollDistance < this._maxScroll) event?.preventDefault()\n\n config.onScroll?.(this._scrollDistance)\n\n // Programmatically trigger a mousemove event to update Tooltip or Crosshair if they were set up\n const e = new Event('mousemove')\n this.element.dispatchEvent(e)\n }\n\n private _updateScrollPosition (diff: number): void {\n const yRange = this.yScale.range()\n const yHeight = Math.abs(yRange[1] - yRange[0])\n\n this._scrollDistance += diff\n this._scrollDistance = Math.max(0, this._scrollDistance)\n this._scrollDistance = Math.min(this._maxScroll, this._scrollDistance)\n\n this._clipPath.attr('transform', `translate(0,${this._scrollDistance})`)\n this._linesGroup.attr('transform', `translate(0,${-this._scrollDistance})`)\n this._rowsGroup.attr('transform', `translate(0,${-this._scrollDistance})`)\n this._labelsGroup.attr('transform', `translate(0,${-this._scrollDistance})`)\n this._rowIconsGroup.attr('transform', `translate(0,${-this._scrollDistance})`)\n this._arrowsGroup.attr('transform', `translate(0,${-this._scrollDistance})`)\n const scrollBarPosition = (this._scrollDistance / this._maxScroll * (yHeight - this._scrollbarHeight)) || 0\n this._scrollBarHandle.attr('y', scrollBarPosition)\n }\n\n private _getRecordKey (d: Datum, i: number): string {\n return getString(d, this.config.lineRow ?? this.config.type) || `__${i}`\n }\n\n private _getRowLabels (data: Datum[]): TimelineRowLabel<Datum>[] {\n const grouped = groupBy(data, (d, i) => getString(d, this.config.lineRow ?? this.config.type) || `${i + 1}`)\n\n const rowLabels: TimelineRowLabel<Datum>[] = Object.entries(grouped).map(([key, items], i) => {\n const icon = this.config.rowIcon?.(key, items, i)\n return {\n label: key,\n formattedLabel: this.config.rowLabelFormatter?.(key, items, i) ?? key,\n iconHref: icon?.href,\n iconSize: icon?.size,\n iconColor: icon?.color,\n data: items,\n }\n })\n\n return rowLabels\n }\n\n // Override the default XYComponent getXDataExtent method to take into account line lengths\n getXDataExtent (): number[] {\n const { config, datamodel } = this\n const min = getMin(datamodel.data, config.x)\n const max = getMax(datamodel.data, (d, i) => getNumber(d, config.x, i) + (getNumber(d, config.lineDuration ?? config.length, i) ?? 0))\n return [min, max]\n }\n}\n"],"names":["s.background","s.rows","s.arrows","s.lines","s.labels","s.rowIcons","s.scrollbar","s.scrollbarBackground","s.scrollbarHandle","label","s.label","s.rowIcon","s.row","s.rowOdd","s.lineGroup","s.line","s.lineStartIcon","s.lineEndIcon","s.arrow","s"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/timeline/index.ts"],"sourcesContent":["import { select, Selection } from 'd3-selection'\nimport { Transition } from 'd3-transition'\nimport { max, min, minIndex } from 'd3-array'\nimport { scaleOrdinal, ScaleOrdinal } from 'd3-scale'\nimport { drag, D3DragEvent } from 'd3-drag'\n\n// Core\nimport { XYComponentCore } from 'core/xy-component'\n\n// Utils\nimport { isNumber, arrayOfIndices, getMin, getMax, getString, getNumber, getValue, groupBy, isPlainObject, isFunction } from 'utils/data'\nimport { smartTransition } from 'utils/d3'\nimport { getColor } from 'utils/color'\nimport { textAlignToAnchor, trimSVGText } from 'utils/text'\nimport { arrowPolylinePath } from 'utils/path'\nimport { guid } from 'utils/misc'\n\n// Types\nimport { TextAlign, Spacing, Arrangement } from 'types'\n\n// Config\nimport { TimelineDefaultConfig, TimelineConfigInterface } from './config'\n\n// Styles\nimport * as s from './style'\n\n// Local Types\nimport type { TimelineArrow, TimelineArrowRenderState, TimelineLineRenderState, TimelineRowLabel } from './types'\n\n// Constants\nimport { TIMELINE_DEFAULT_ARROW_HEAD_LENGTH, TIMELINE_DEFAULT_ARROW_HEAD_WIDTH, TIMELINE_DEFAULT_ARROW_MARGIN } from './constants'\n\n// Utils\nimport { getIconBleed } from './utils'\n\nexport class Timeline<Datum> extends XYComponentCore<Datum, TimelineConfigInterface<Datum>> {\n static selectors = s\n protected _defaultConfig = TimelineDefaultConfig as TimelineConfigInterface<Datum>\n public config: TimelineConfigInterface<Datum> = this._defaultConfig\n\n events = {\n [Timeline.selectors.background]: {\n wheel: this._onMouseWheel.bind(this),\n },\n [Timeline.selectors.label]: {\n wheel: this._onMouseWheel.bind(this),\n },\n [Timeline.selectors.rows]: {\n wheel: this._onMouseWheel.bind(this),\n },\n [Timeline.selectors.line]: {\n wheel: this._onMouseWheel.bind(this),\n },\n }\n\n private _background: Selection<SVGRectElement, unknown, SVGGElement, unknown>\n private _rowsGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _arrowsGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _linesGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _labelsGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _rowIconsGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _scrollBarGroup: Selection<SVGGElement, unknown, SVGGElement, unknown>\n private _scrollBarBackground: Selection<SVGRectElement, unknown, SVGGElement, unknown>\n private _scrollBarHandle: Selection<SVGRectElement, unknown, SVGGElement, unknown>\n private _scrollBarWidth = 5\n private _scrollDistance = 0\n private _scrollBarMargin = 5\n private _maxScroll = 0\n private _scrollbarHeight = 0\n private _labelMargin = 5\n private _labelWidth = 0 // Will be overridden in `get bleed ()`\n private _rowIconBleed: [number, number] = [0, 0]\n private _lineBleed: [number, number] = [0, 0]\n\n /** We define a dedicated clipping path for this component because it needs to behave\n * differently than the regular XYContainer's clipPath */\n private _clipPathId = guid()\n private _clipPath: Selection<SVGClipPathElement, unknown, null, undefined>\n\n constructor (config?: TimelineConfigInterface<Datum>) {\n super()\n if (config) this.setConfig(config)\n\n // Invisible background rect to track events\n this._background = this.g.append('rect').attr('class', s.background)\n\n // Clip path\n this._clipPath = this.g.append('clipPath')\n .attr('id', this._clipPathId)\n this._clipPath.append('rect')\n\n // Group for content\n this._rowsGroup = this.g.append('g').attr('class', s.rows)\n .style('clip-path', `url(#${this._clipPathId})`)\n this._arrowsGroup = this.g.append('g').attr('class', s.arrows)\n .style('clip-path', `url(#${this._clipPathId})`)\n this._linesGroup = this.g.append('g').attr('class', s.lines)\n .style('clip-path', `url(#${this._clipPathId})`)\n this._labelsGroup = this.g.append('g').attr('class', s.labels)\n this._rowIconsGroup = this.g.append('g').attr('class', s.rowIcons)\n this._scrollBarGroup = this.g.append('g').attr('class', s.scrollbar)\n\n // Scroll bar\n this._scrollBarBackground = this._scrollBarGroup.append('rect')\n .attr('class', s.scrollbarBackground)\n\n this._scrollBarHandle = this._scrollBarGroup.append('rect')\n .attr('class', s.scrollbarHandle)\n\n // Set up scrollbar drag event\n const dragBehaviour = drag<SVGRectElement, unknown>()\n .on('drag', this._onScrollbarDrag.bind(this))\n\n this._scrollBarHandle.call(dragBehaviour)\n }\n\n public setConfig (config: TimelineConfigInterface<Datum>): void {\n super.setConfig(config)\n }\n\n public setData (data: Datum[]): void {\n super.setData(data)\n }\n\n get bleed (): Spacing {\n const { config, datamodel: { data } } = this\n const rowLabels = this._getRowLabels(data)\n const rowHeight = config.rowHeight || (this._height / rowLabels.length)\n const hasIcons = rowLabels.some(l => l.iconHref)\n const maxIconSize = max(rowLabels.map(l => l.iconSize || 0))\n\n // We calculate the longest label width to set the bleed values accordingly\n if (config.showRowLabels ?? config.showLabels) {\n if (config.rowLabelWidth ?? config.labelWidth) this._labelWidth = (config.rowLabelWidth ?? config.labelWidth) + this._labelMargin\n else {\n const longestLabel = rowLabels.reduce((longestLabel, l) => longestLabel.formattedLabel.length > l.formattedLabel.length ? longestLabel : l, rowLabels[0])\n const label = this._labelsGroup.append('text')\n .attr('class', s.label)\n .text(longestLabel?.formattedLabel || '')\n .call(trimSVGText, config.rowMaxLabelWidth ?? config.maxLabelWidth)\n\n const labelWidth = label.node().getBBox().width\n label.remove()\n\n const tolerance = 1.15 // Some characters are wider than others so we add a little of extra space to take that into account\n this._labelWidth = labelWidth ? tolerance * labelWidth + this._labelMargin : 0\n }\n }\n\n // There can be multiple start / end items with the same timestamp, so we need to find the shortest one\n const minTimestamp = min(data, (d, i) => getNumber(d, config.x, i))\n const dataMin = data.filter((d, i) => getNumber(d, config.x, i) === minTimestamp)\n const dataMinShortestItemIdx = minIndex(dataMin, (d, i) => this._getLineDuration(d, i))\n const firstItemIdx = data.findIndex(d => d === dataMin[dataMinShortestItemIdx])\n const firstItem = data[firstItemIdx]\n\n const maxTimestamp = max(data, (d, i) => getNumber(d, config.x, i) + this._getLineDuration(d, i))\n const dataMax = data.filter((d, i) => getNumber(d, config.x, i) + this._getLineDuration(d, i) === maxTimestamp)\n const dataMaxShortestItemIdx = minIndex(dataMax, (d, i) => this._getLineDuration(d, i))\n const lastItemIdx = data.findIndex(d => d === dataMax[dataMaxShortestItemIdx])\n const lastItem = data[lastItemIdx]\n\n // Small segments bleed\n const lineBleed = [1, 1] as [number, number]\n if (config.showEmptySegments && config.lineCap && firstItem && lastItem) {\n const firstItemStart = getNumber(firstItem, config.x, firstItemIdx)\n const firstItemEnd = getNumber(firstItem, config.x, firstItemIdx) + this._getLineDuration(firstItem, firstItemIdx)\n const lastItemStart = getNumber(lastItem, config.x, lastItemIdx)\n const lastItemEnd = getNumber(lastItem, config.x, lastItemIdx) + this._getLineDuration(lastItem, lastItemIdx)\n const fullTimeRange = lastItemEnd - firstItemStart\n const firstItemHeight = this._getLineWidth(firstItem, firstItemIdx, rowHeight)\n const lastItemHeight = this._getLineWidth(lastItem, lastItemIdx, rowHeight)\n\n if ((firstItemEnd - firstItemStart) / fullTimeRange * this._width < firstItemHeight) lineBleed[0] = firstItemHeight / 2\n if ((lastItemEnd - lastItemStart) / fullTimeRange * this._width < lastItemHeight) lineBleed[1] = lastItemHeight / 2\n }\n this._lineBleed = lineBleed\n\n // Icon bleed\n const iconBleed = [0, 0] as [number, number]\n if (config.lineStartIcon) {\n iconBleed[0] = max(data, (d, i) => getIconBleed(d, i, config.lineStartIcon, config.lineStartIconSize, config.lineStartIconArrangement, rowHeight))\n }\n\n if (config.lineEndIcon) {\n iconBleed[1] = max(data, (d, i) => getIconBleed(d, i, config.lineEndIcon, config.lineEndIconSize, config.lineEndIconArrangement, rowHeight))\n }\n\n this._rowIconBleed = iconBleed\n\n return {\n top: 0,\n bottom: 0,\n left: this._labelWidth + iconBleed[0] + (hasIcons ? maxIconSize : 0) + lineBleed[0],\n right: this._scrollBarWidth + this._scrollBarMargin + iconBleed[1] + lineBleed[1],\n }\n }\n\n _render (customDuration?: number): void {\n super._render(customDuration)\n const { config, datamodel: { data } } = this\n const duration = isNumber(customDuration) ? customDuration : config.duration\n const xRange = this.xScale.range()\n const yRange = this.yScale.range()\n const yStart = Math.min(...yRange)\n const yHeight = Math.abs(yRange[1] - yRange[0])\n const rowLabels = this._getRowLabels(data)\n const numRowLabels = rowLabels.length\n const rowHeight = config.rowHeight || (yHeight / numRowLabels)\n\n const yOrdinalScale = scaleOrdinal<string, number>()\n .range(arrayOfIndices(numRowLabels))\n .domain(rowLabels.map(l => l.label))\n\n const lineDataPrepared = this._prepareLinesData(data, yOrdinalScale, rowHeight)\n\n // Invisible Background rect to track events\n this._background\n .attr('width', this._width)\n .attr('height', this._height)\n .attr('opacity', 0)\n\n // Row Icons\n const rowIcons = this._rowIconsGroup.selectAll<SVGUseElement, TimelineRowLabel<Datum>>(`.${s.rowIcon}`)\n .data(rowLabels.filter(d => d.iconSize), l => l?.label)\n\n const rowIconsEnter = rowIcons.enter().append('use')\n .attr('class', s.rowIcon)\n .attr('x', 0)\n .attr('width', l => l.iconSize)\n .attr('height', l => l.iconSize)\n .attr('y', l => yStart + (yOrdinalScale(l.label) + 0.5) * rowHeight - l.iconSize / 2)\n .style('opacity', 0)\n\n smartTransition(rowIconsEnter.merge(rowIcons), duration)\n .attr('href', l => l.iconHref)\n .attr('x', 0)\n .attr('y', l => yStart + (yOrdinalScale(l.label) + 0.5) * rowHeight - l.iconSize / 2)\n .attr('width', l => l.iconSize)\n .attr('height', l => l.iconSize)\n .style('color', l => l.iconColor)\n .style('opacity', 1)\n\n smartTransition(rowIcons.exit(), duration)\n .style('opacity', 0)\n .remove()\n\n // Labels\n const labels = this._labelsGroup.selectAll<SVGTextElement, TimelineRowLabel<Datum>>(`.${s.label}`)\n .data((config.showRowLabels ?? config.showLabels) ? rowLabels : [], l => l?.label)\n\n const labelOffset = config.rowLabelTextAlign === TextAlign.Center ? this._labelWidth / 2\n : config.rowLabelTextAlign === TextAlign.Left ? this._labelWidth\n : this._labelMargin\n\n const xStart = xRange[0] - this._rowIconBleed[0] - this._lineBleed[0]\n const labelXStart = xStart - labelOffset\n const labelsEnter = labels.enter().append('text')\n .attr('class', s.label)\n .attr('x', labelXStart)\n .attr('y', l => yStart + (yOrdinalScale(l.label) + 0.5) * rowHeight)\n .style('opacity', 0)\n\n const labelsMerged = labelsEnter.merge(labels)\n .text(l => l.formattedLabel)\n .each((label, i, els) => {\n const labelSelection = select(els[i])\n trimSVGText(labelSelection, (config.rowLabelWidth ?? config.labelWidth) || (config.rowMaxLabelWidth ?? config.maxLabelWidth))\n\n // Apply custom label style if it has been provided\n const customStyle = getValue(label, config.rowLabelStyle)\n if (!isPlainObject(customStyle)) return\n\n for (const [prop, value] of Object.entries(customStyle)) {\n labelSelection.style(prop, value)\n }\n })\n .style('text-anchor', textAlignToAnchor(config.rowLabelTextAlign as TextAlign))\n\n smartTransition(labelsMerged, duration)\n .attr('x', labelXStart)\n .attr('y', l => yStart + (yOrdinalScale(l.label) + 0.5) * rowHeight)\n .style('opacity', 1)\n\n smartTransition(labels.exit(), duration)\n .style('opacity', 0)\n .remove()\n\n // Row background rects\n const timelineWidth = xRange[1] - xRange[0] + this._rowIconBleed[0] + this._rowIconBleed[1] + this._lineBleed[0] + this._lineBleed[1]\n const numRows = Math.max(Math.floor(yHeight / rowHeight), numRowLabels)\n const recordTypes = Array(numRows).fill(null).map((_, i) => rowLabels[i])\n const rects = this._rowsGroup.selectAll<SVGRectElement, number>(`.${s.row}`)\n .data(recordTypes)\n\n const rectsEnter = rects.enter().append('rect')\n .attr('class', s.row)\n .attr('x', xStart)\n .attr('width', timelineWidth)\n .attr('y', (_, i) => yStart + i * rowHeight)\n .attr('height', rowHeight)\n .style('opacity', 0)\n\n const rectsMerged = rectsEnter.merge(rects)\n .classed(s.rowOdd, config.alternatingRowColors ? (_, i) => !(i % 2) : null)\n\n smartTransition(rectsMerged, duration)\n .attr('x', xStart)\n .attr('width', timelineWidth)\n .attr('y', (_, i) => yStart + i * rowHeight)\n .attr('height', rowHeight)\n .style('opacity', 1)\n\n smartTransition(rects.exit(), duration)\n .style('opacity', 0)\n .remove()\n\n // Lines\n const lines = this._linesGroup.selectAll<SVGGElement, Datum & TimelineLineRenderState>(`.${s.lineGroup}`)\n .data(lineDataPrepared, (d: Datum & TimelineLineRenderState) => d._id)\n\n const linesEnter = lines.enter().append('g')\n .attr('class', s.lineGroup)\n .style('opacity', 0)\n .attr('transform', (d, i) => {\n const configuredPos = isFunction(config.animationLineEnterPosition)\n ? config.animationLineEnterPosition(d, i, lineDataPrepared)\n : config.animationLineEnterPosition\n const [x, y] = [configuredPos?.[0] ?? d._xPx, configuredPos?.[1] ?? d._yPx]\n return `translate(${x}, ${y})`\n })\n\n linesEnter.append('rect')\n .attr('class', s.line)\n .style('fill', (d, i) => getColor(d, config.color, yOrdinalScale(this._getRecordKey(d, i))))\n .call(this._renderLines.bind(this), rowHeight)\n\n linesEnter.append('use').attr('class', s.lineStartIcon)\n linesEnter.append('use').attr('class', s.lineEndIcon)\n\n const linesMerged = linesEnter.merge(lines)\n smartTransition(linesMerged, duration)\n .attr('transform', d => `translate(${d._xPx + d._xOffsetPx}, ${d._yPx})`)\n .style('opacity', 1)\n\n const lineRectElementsSelection = linesMerged.selectAll<SVGRectElement, Datum & TimelineLineRenderState>(`.${s.line}`)\n .data(d => [d])\n smartTransition(lineRectElementsSelection, duration)\n .style('fill', (d, i) => getColor(d, config.color, yOrdinalScale(this._getRecordKey(d, i))))\n .style('cursor', (d, i) => getString(d, config.lineCursor ?? config.cursor, i))\n .call(this._renderLines.bind(this), rowHeight)\n\n linesMerged.selectAll<SVGUseElement, Datum & TimelineLineRenderState>(`.${s.lineStartIcon}`)\n .data(d => [d])\n .attr('href', (d, i) => getString(d, config.lineStartIcon, i))\n .attr('x', (d, i) => {\n const iconSize = d._startIconSize\n const iconArrangement = d._startIconArrangement\n const offset = iconArrangement === Arrangement.Inside ? 0\n : iconArrangement === Arrangement.Center ? -iconSize / 2\n : -iconSize\n return offset\n })\n .attr('y', d => (-(d._startIconSize - d._height) / 2) || 0)\n .attr('width', d => d._startIconSize)\n .attr('height', d => d._startIconSize)\n .style('color', d => d._startIconColor)\n\n linesMerged.selectAll<SVGUseElement, Datum & TimelineLineRenderState>(`.${s.lineEndIcon}`)\n .data(d => [d])\n .attr('href', (d, i) => getString(d, config.lineEndIcon, i))\n .attr('x', (d, i) => {\n const lineLength = d._lengthCorrected\n const iconSize = d._endIconSize\n const iconArrangement = d._endIconArrangement\n const offset = iconArrangement === Arrangement.Inside ? -iconSize\n : iconArrangement === Arrangement.Center ? -iconSize / 2\n : 0\n return lineLength + offset\n })\n .attr('y', d => -((d._endIconSize - d._height) / 2) || 0)\n .attr('width', d => d._endIconSize)\n .attr('height', d => d._endIconSize)\n .style('color', d => d._endIconColor)\n\n const linesExit = lines.exit<Datum & TimelineLineRenderState>()\n smartTransition(linesExit, duration)\n .style('opacity', 0)\n .attr('transform', (d, i) => {\n const configuredPos = isFunction(config.animationLineExitPosition)\n ? config.animationLineExitPosition(d, i, lineDataPrepared)\n : config.animationLineExitPosition\n const [x, y] = [configuredPos?.[0] ?? d._xPx, configuredPos?.[1] ?? d._yPx]\n return `translate(${x}, ${y})`\n })\n .remove()\n\n // Arrows\n const arrowsData = this._prepareArrowsData(data, yOrdinalScale, rowHeight)\n const arrows = this._arrowsGroup.selectAll<SVGPathElement, TimelineArrow & TimelineArrowRenderState>(`.${s.arrow}`)\n .data(arrowsData ?? [], d => d.id)\n\n const arrowsEnter = arrows.enter().append('path')\n .attr('class', s.arrow)\n .style('opacity', 0)\n\n smartTransition(arrowsEnter.merge(arrows), duration)\n .attr('d', (d) => arrowPolylinePath(\n d._points,\n d.arrowHeadLength ?? TIMELINE_DEFAULT_ARROW_HEAD_LENGTH,\n d.arrowHeadWidth ?? TIMELINE_DEFAULT_ARROW_HEAD_WIDTH\n ))\n .style('opacity', 1)\n\n smartTransition(arrows.exit(), duration)\n .style('opacity', 0)\n .remove()\n\n // Scroll Bar\n const contentBBox = this._rowsGroup.node().getBBox() // We determine content size using the rects group because lines are animated\n const absoluteContentHeight = contentBBox.height\n this._scrollbarHeight = yHeight * yHeight / absoluteContentHeight || 0\n this._maxScroll = Math.max(absoluteContentHeight - yHeight, 0)\n\n this._scrollBarGroup\n .attr('transform', `translate(${this._width - this._scrollBarWidth}, ${yStart})`)\n .attr('opacity', this._maxScroll ? 1 : 0)\n\n this._scrollBarBackground\n .attr('width', this._scrollBarWidth)\n .attr('height', this._height)\n .attr('rx', this._scrollBarWidth / 2)\n .attr('ry', this._scrollBarWidth / 2)\n\n this._scrollBarHandle\n .attr('width', this._scrollBarWidth)\n .attr('height', this._scrollbarHeight)\n .attr('rx', this._scrollBarWidth / 2)\n .attr('ry', this._scrollBarWidth / 2)\n\n this._updateScrollPosition(0)\n\n // Clip path\n const clipPathRect = this._clipPath.select('rect')\n smartTransition(clipPathRect, clipPathRect.attr('width') ? duration : 0)\n .attr('x', xStart)\n .attr('width', timelineWidth)\n .attr('height', this._height)\n }\n\n private _getLineLength (d: Datum, i: number): number {\n const { config, xScale } = this\n const x = getNumber(d, config.x, i)\n const length = getNumber(d, config.lineDuration ?? config.length, i) ?? 0\n\n const lineLength = xScale(x + length) - xScale(x)\n return lineLength\n }\n\n private _getLineWidth (d: Datum, i: number, rowHeight: number): number {\n const { config } = this\n return getNumber(d, config.lineWidth, i) ?? Math.max(Math.floor(rowHeight / 2), 1)\n }\n\n private _getLineDuration (d: Datum, i: number): number {\n const { config } = this\n return getNumber(d, config.lineDuration ?? config.length, i) ?? 0\n }\n\n private _prepareLinesData (data: Datum[], rowOrdinalScale: ScaleOrdinal<string, number>, rowHeight: number): (Datum & TimelineLineRenderState)[] {\n const { config, xScale, yScale } = this\n const yRange = yScale.range()\n const yStart = Math.min(...yRange)\n\n return data.map((d, i) => {\n const id = getString(d, config.id, i) ?? [\n this._getRecordKey(d, i), getNumber(d, config.x, i),\n ].join('-')\n\n const lineWidth = this._getLineWidth(d, i, rowHeight)\n const lineLength = this._getLineLength(d, i)\n\n if (lineLength < 0) {\n console.warn('Unovis | Timeline: Line segments should not have negative lengths. Setting to 0.')\n }\n\n const isLineTooShort = config.showEmptySegments && config.lineCap && (lineLength < lineWidth)\n const lineLengthCorrected = config.showEmptySegments\n ? Math.max(config.lineCap ? lineWidth : 1, lineLength)\n : Math.max(0, lineLength)\n\n const x = xScale(getNumber(d, config.x, i))\n const y = yStart + rowOrdinalScale(this._getRecordKey(d, i)) * rowHeight + (rowHeight - lineWidth) / 2\n const xOffset = isLineTooShort ? -(lineLengthCorrected - lineLength) / 2 : 0\n\n return {\n ...d,\n _id: id,\n _xPx: x,\n _yPx: y,\n _xOffsetPx: xOffset,\n _length: lineLength,\n _height: lineWidth,\n _lengthCorrected: lineLengthCorrected,\n _startIconSize: getNumber(d, config.lineStartIconSize, i) ?? lineWidth,\n _endIconSize: getNumber(d, config.lineEndIconSize, i) ?? lineWidth,\n _startIconColor: getString(d, config.lineStartIconColor, i),\n _endIconColor: getString(d, config.lineEndIconColor, i),\n _startIconArrangement: getValue(d, config.lineStartIconArrangement, i) ?? Arrangement.Outside,\n _endIconArrangement: getValue(d, config.lineEndIconArrangement, i) ?? Arrangement.Outside,\n }\n })\n }\n\n private _prepareArrowsData (data: Datum[], rowOrdinalScale: ScaleOrdinal<string, number>, rowHeight: number): (TimelineArrow & TimelineArrowRenderState)[] {\n const { config } = this\n\n const arrowsData: (TimelineArrow & TimelineArrowRenderState)[] = config.arrows?.map(a => {\n const sourceLineIndex = data.findIndex((d, i) => getString(d, config.id, i) === a.lineSourceId)\n const targetLineIndex = data.findIndex((d, i) => getString(d, config.id, i) === a.lineTargetId)\n const sourceLine = data[sourceLineIndex]\n const targetLine = data[targetLineIndex]\n\n if (!sourceLine || !targetLine) {\n console.warn('Unovis | Timeline: Arrow references a non-existent line. Skipping...', a)\n return undefined\n }\n\n const sourceLineY = rowOrdinalScale(this._getRecordKey(sourceLine, sourceLineIndex)) * rowHeight + rowHeight / 2\n const targetLineY = rowOrdinalScale(this._getRecordKey(targetLine, targetLineIndex)) * rowHeight + rowHeight / 2\n const sourceLineWidth = this._getLineWidth(sourceLine, sourceLineIndex, rowHeight)\n const targetLineWidth = this._getLineWidth(targetLine, targetLineIndex, rowHeight)\n\n const x1 = (a.xSource\n ? this.xScale(a.xSource)\n : this.xScale(getNumber(sourceLine, config.x, sourceLineIndex)) + this._getLineLength(sourceLine, sourceLineIndex)\n ) + (a.xSourceOffsetPx ?? 0)\n const targetLineLength = this._getLineLength(targetLine, targetLineIndex)\n const isTargetLineTooShort = config.showEmptySegments && config.lineCap && (targetLineLength < targetLineWidth)\n const targetLineStart = this.xScale(getNumber(targetLine, config.x, targetLineIndex)) + (isTargetLineTooShort ? -targetLineWidth / 2 : 0)\n const x2 = (a.xTarget ? this.xScale(a.xTarget) : targetLineStart) + (a.xTargetOffsetPx ?? 0)\n const isX2OutsideTargetLineStart = (x2 < targetLineStart) || (x2 > targetLineStart)\n\n // Points array\n const sourceMargin = a.lineSourceMarginPx ?? TIMELINE_DEFAULT_ARROW_MARGIN\n const targetMargin = a.lineTargetMarginPx ?? TIMELINE_DEFAULT_ARROW_MARGIN\n const y1 = sourceLineY < targetLineY ? sourceLineY + sourceLineWidth / 2 + sourceMargin : sourceLineY - sourceLineWidth / 2 - sourceMargin\n const y2 = sourceLineY < targetLineY ? targetLineY - targetLineWidth / 2 - targetMargin : targetLineY + targetLineWidth / 2 + targetMargin\n const points = [[x1, y1]] as [number, number][]\n const threshold = a.arrowHeadLength ?? TIMELINE_DEFAULT_ARROW_HEAD_LENGTH\n if (Math.abs(x2 - x1) > threshold) {\n if ((x1 < x2) && !isX2OutsideTargetLineStart) {\n points.push([x1, (y1 + targetLineY) / 2]) // A dummy point to enable smooth transitions when arrows change\n points.push([x1, targetLineY])\n points.push([x2 - targetMargin, targetLineY])\n } else {\n points.push([x1, y2 - Math.sign(targetLineY - sourceLineY) * (rowHeight / 4)])\n points.push([x2, y2 - Math.sign(targetLineY - sourceLineY) * (rowHeight / 4)])\n points.push([x2, y2])\n }\n } else {\n points.push([x1, y1 + (y2 - y1) / 4]) // A dummy point to enable smooth transitions\n points.push([x1, y1 + 3 * (y2 - y1) / 4]) // A dummy point to enable smooth transitions\n points.push([x1, y2])\n }\n\n return {\n ...a,\n _points: points,\n }\n }).filter(Boolean)\n return arrowsData\n }\n\n\n private _renderLines (\n selection: Selection<SVGRectElement, Datum & TimelineLineRenderState, SVGGElement, unknown> | Transition<SVGRectElement, Datum & TimelineLineRenderState, SVGGElement, unknown>\n ): void {\n const { config } = this\n\n selection\n .attr('width', d => d._lengthCorrected)\n .attr('height', d => d._height)\n .attr('rx', d => config.lineCap ? d._height / 2 : null)\n }\n\n private _onScrollbarDrag (event: D3DragEvent<any, any, any>): void {\n const yRange = this.yScale.range()\n const yHeight = Math.abs(yRange[1] - yRange[0])\n this._updateScrollPosition(event.dy * this._maxScroll / (yHeight - this._scrollbarHeight))\n }\n\n private _onMouseWheel (d: unknown, event: WheelEvent): void {\n const { config } = this\n\n this._updateScrollPosition(event?.deltaY)\n if (this._scrollDistance > 0 && this._scrollDistance < this._maxScroll) event?.preventDefault()\n\n config.onScroll?.(this._scrollDistance)\n\n // Programmatically trigger a mousemove event to update Tooltip or Crosshair if they were set up\n const e = new Event('mousemove')\n this.element.dispatchEvent(e)\n }\n\n private _updateScrollPosition (diff: number): void {\n const yRange = this.yScale.range()\n const yHeight = Math.abs(yRange[1] - yRange[0])\n\n this._scrollDistance += diff\n this._scrollDistance = Math.max(0, this._scrollDistance)\n this._scrollDistance = Math.min(this._maxScroll, this._scrollDistance)\n\n this._clipPath.attr('transform', `translate(0,${this._scrollDistance})`)\n this._linesGroup.attr('transform', `translate(0,${-this._scrollDistance})`)\n this._rowsGroup.attr('transform', `translate(0,${-this._scrollDistance})`)\n this._labelsGroup.attr('transform', `translate(0,${-this._scrollDistance})`)\n this._rowIconsGroup.attr('transform', `translate(0,${-this._scrollDistance})`)\n this._arrowsGroup.attr('transform', `translate(0,${-this._scrollDistance})`)\n const scrollBarPosition = (this._scrollDistance / this._maxScroll * (yHeight - this._scrollbarHeight)) || 0\n this._scrollBarHandle.attr('y', scrollBarPosition)\n }\n\n private _getRecordKey (d: Datum, i: number): string {\n return getString(d, this.config.lineRow ?? this.config.type) || `__${i}`\n }\n\n private _getRowLabels (data: Datum[]): TimelineRowLabel<Datum>[] {\n const grouped = groupBy(data, (d, i) => getString(d, this.config.lineRow ?? this.config.type) || `${i + 1}`)\n\n const rowLabels: TimelineRowLabel<Datum>[] = Object.entries(grouped).map(([key, items], i) => {\n const icon = this.config.rowIcon?.(key, items, i)\n return {\n label: key,\n formattedLabel: this.config.rowLabelFormatter?.(key, items, i) ?? key,\n iconHref: icon?.href,\n iconSize: icon?.size,\n iconColor: icon?.color,\n data: items,\n }\n })\n\n return rowLabels\n }\n\n // Override the default XYComponent getXDataExtent method to take into account line lengths\n getXDataExtent (): number[] {\n const { config, datamodel } = this\n const min = getMin(datamodel.data, config.x)\n const max = getMax(datamodel.data, (d, i) => getNumber(d, config.x, i) + (getNumber(d, config.lineDuration ?? config.length, i) ?? 0))\n return [min, max]\n }\n}\n"],"names":["s.background","s.rows","s.arrows","s.lines","s.labels","s.rowIcons","s.scrollbar","s.scrollbarBackground","s.scrollbarHandle","label","s.label","s.rowIcon","s.row","s.rowOdd","s.lineGroup","s.line","s.lineStartIcon","s.lineEndIcon","s.arrow","s"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sources":["../../../src/components/timeline/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\n\nexport const root = css`\n label: timeline-component;\n`\n\nexport const globalStyles = injectGlobal`\n :root {\n --vis-timeline-row-even-fill-color: #FFFFFF;\n --vis-timeline-row-odd-fill-color: #F7FAFC;\n --vis-timeline-row-background-opacity: 1;\n --vis-timeline-scrollbar-background-color: #E6E9F3;\n --vis-timeline-scrollbar-color: #9EA7B8;\n\n --vis-timeline-label-font-size: 12px;\n --vis-timeline-label-color: #6C778C;\n\n --vis-timeline-arrow-color: #6C778C;\n --vis-timeline-arrow-stroke-width: 1.5;\n\n --vis-timeline-cursor: default;\n --vis-timeline-line-color: var(--vis-color-main);\n --vis-timeline-line-stroke-width: 0;\n --vis-timeline-line-hover-stroke-width: 0;\n --vis-timeline-line-hover-stroke-color: #6C778C;\n\n // The line stroke color variable is not defined by default\n // to allow it to fallback to the corresponding row background color\n /* --vis-timeline-line-stroke-color: none; */\n\n --vis-dark-timeline-row-even-fill-color: #292B34;\n --vis-dark-timeline-row-odd-fill-color: #333742;\n --vis-dark-timeline-scrollbar-background-color: #292B34;\n --vis-dark-timeline-scrollbar-color: #6C778C;\n --vis-dark-timeline-label-color: #EFF5F8;\n --vis-dark-timeline-arrow-color: #EFF5F8;\n --vis-dark-timeline-line-hover-stroke-color: #EFF5F8;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-timeline-row-even-fill-color: var(--vis-dark-timeline-row-even-fill-color);\n --vis-timeline-row-odd-fill-color: var(--vis-dark-timeline-row-odd-fill-color);\n --vis-timeline-scrollbar-background-color: var(--vis-dark-timeline-scrollbar-background-color);\n --vis-timeline-scrollbar-color: var(--vis-dark-timeline-scrollbar-color);\n --vis-timeline-label-color: var(--vis-dark-timeline-label-color);\n --vis-timeline-arrow-color: var(--vis-dark-timeline-arrow-color);\n --vis-timeline-line-hover-stroke-color: var(--vis-dark-timeline-line-hover-stroke-color);\n }\n`\n\nexport const background = css`\n label: background;\n`\n\nexport const lines = css`\n label: lines;\n`\n\nexport const lineGroup = css`\n label: line-group;\n`\n\nexport const line = css`\n label: line;\n fill: var(--vis-timeline-line-color);\n cursor: var(--vis-timeline-cursor);\n\n stroke: var(--vis-timeline-line-stroke-color, var(--vis-timeline-row-even-fill-color));\n stroke-width: var(--vis-timeline-line-stroke-width);\n\n &.odd {\n stroke: var(--vis-timeline-line-stroke-color, var(--vis-timeline-row-odd-fill-color));\n }\n\n :hover {\n stroke-width: var(--vis-timeline-line-hover-stroke-width);\n stroke: var(--vis-timeline-line-hover-stroke-color);\n }\n`\n\nexport const lineStartIcon = css`\n label: line-start-icon;\n`\n\nexport const lineEndIcon = css`\n label: line-end-icon;\n`\n\nexport const arrows = css`\n label: arrows;\n`\n\nexport const arrow = css`\n label: arrow;\n fill: none;\n stroke: var(--vis-timeline-arrow-color);\n stroke-width: var(--vis-timeline-arrow-stroke-width);\n`\n\nexport const rows = css`\n label: rows;\n`\n\nexport const row = css`\n label: row;\n fill: var(--vis-timeline-row-even-fill-color);\n opacity: var(--vis-timeline-row-background-opacity);\n`\n\nexport const rowOdd = css`\n label: row-odd;\n fill: var(--vis-timeline-row-odd-fill-color);\n`\n\nexport const scrollbar = css`\n label: scroll-bar;\n`\n\nexport const scrollbarHandle = css`\n label: scroll-bar-handle;\n fill: var(--vis-timeline-scrollbar-color);\n`\n\nexport const scrollbarBackground = css`\n label: scroll-bar-background;\n fill: var(--vis-timeline-scrollbar-background-color);\n`\n\nexport const labels = css`\n label: labels;\n`\n\nexport const label = css`\n label: label;\n dominant-baseline: middle;\n font-size: var(--vis-timeline-label-font-size);\n fill: var(--vis-timeline-label-color);\n text-anchor: end;\n user-select: none;\n`\n\nexport const rowIcons = css`\n label: row-icons;\n`\n\nexport const rowIcon = css`\n label: row-icon;\n`\n"],"names":[],"mappings":";;AAEO,MAAM,IAAI,GAAG,GAAG,CAAA;;EAEtB;AAEM,MAAM,YAAY,GAAG,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCpB,kBAAA,EAAA,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,CAAA;;;;;;;;;EAS7B;AAEM,MAAM,UAAU,GAAG,GAAG,CAAA;;EAE5B;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA;;EAEvB;AAEM,MAAM,SAAS,GAAG,GAAG,CAAA;;EAE3B;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;EAgBtB;AAEM,MAAM,aAAa,GAAG,GAAG,CAAA;;EAE/B;AAEM,MAAM,WAAW,GAAG,GAAG,CAAA;;EAE7B;AAEM,MAAM,MAAM,GAAG,GAAG,CAAA;;EAExB;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;EAKvB;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA;;EAEtB;AAEM,MAAM,GAAG,GAAG,GAAG,CAAA;;;;EAIrB;AAEM,MAAM,MAAM,GAAG,GAAG,CAAA;;;EAGxB;AAEM,MAAM,SAAS,GAAG,GAAG,CAAA;;EAE3B;AAEM,MAAM,eAAe,GAAG,GAAG,CAAA;;;EAGjC;AAEM,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;EAGrC;AAEM,MAAM,MAAM,GAAG,GAAG,CAAA;;EAExB;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;EAOvB;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA;;EAE1B;AAEM,MAAM,OAAO,GAAG,GAAG,CAAA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"style.js","sources":["../../../src/components/timeline/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\n\nexport const root = css`\n label: timeline-component;\n`\n\nexport const globalStyles = injectGlobal`\n :root {\n --vis-timeline-row-even-fill-color: #FFFFFF;\n --vis-timeline-row-odd-fill-color: #F7FAFC;\n --vis-timeline-row-background-opacity: 1;\n --vis-timeline-scrollbar-background-color: #E6E9F3;\n --vis-timeline-scrollbar-color: #9EA7B8;\n\n --vis-timeline-label-font-size: 12px;\n --vis-timeline-label-color: #6C778C;\n\n --vis-timeline-arrow-color: #6C778C;\n --vis-timeline-arrow-stroke-width: 1.5;\n\n --vis-timeline-cursor: default;\n --vis-timeline-line-color: var(--vis-color-main);\n --vis-timeline-line-stroke-width: 0;\n --vis-timeline-line-hover-stroke-width: 0;\n --vis-timeline-line-hover-stroke-color: #6C778C;\n\n // The line stroke color variable is not defined by default\n // to allow it to fallback to the corresponding row background color\n /* --vis-timeline-line-stroke-color: none; */\n\n --vis-dark-timeline-row-even-fill-color: #292B34;\n --vis-dark-timeline-row-odd-fill-color: #333742;\n --vis-dark-timeline-scrollbar-background-color: #292B34;\n --vis-dark-timeline-scrollbar-color: #6C778C;\n --vis-dark-timeline-label-color: #EFF5F8;\n --vis-dark-timeline-arrow-color: #EFF5F8;\n --vis-dark-timeline-line-hover-stroke-color: #EFF5F8;\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-timeline-row-even-fill-color: var(--vis-dark-timeline-row-even-fill-color);\n --vis-timeline-row-odd-fill-color: var(--vis-dark-timeline-row-odd-fill-color);\n --vis-timeline-scrollbar-background-color: var(--vis-dark-timeline-scrollbar-background-color);\n --vis-timeline-scrollbar-color: var(--vis-dark-timeline-scrollbar-color);\n --vis-timeline-label-color: var(--vis-dark-timeline-label-color);\n --vis-timeline-arrow-color: var(--vis-dark-timeline-arrow-color);\n --vis-timeline-line-hover-stroke-color: var(--vis-dark-timeline-line-hover-stroke-color);\n }\n`\n\nexport const background = css`\n label: background;\n`\n\nexport const lines = css`\n label: lines;\n`\n\nexport const lineGroup = css`\n label: line-group;\n`\n\nexport const line = css`\n label: line;\n fill: var(--vis-timeline-line-color);\n cursor: var(--vis-timeline-cursor);\n\n stroke: var(--vis-timeline-line-stroke-color, var(--vis-timeline-row-even-fill-color));\n stroke-width: var(--vis-timeline-line-stroke-width);\n\n &.odd {\n stroke: var(--vis-timeline-line-stroke-color, var(--vis-timeline-row-odd-fill-color));\n }\n\n :hover {\n stroke-width: var(--vis-timeline-line-hover-stroke-width);\n stroke: var(--vis-timeline-line-hover-stroke-color);\n }\n`\n\nexport const lineStartIcon = css`\n label: line-start-icon;\n`\n\nexport const lineEndIcon = css`\n label: line-end-icon;\n`\n\nexport const arrows = css`\n label: arrows;\n`\n\nexport const arrow = css`\n label: arrow;\n fill: none;\n stroke: var(--vis-timeline-arrow-color);\n stroke-width: var(--vis-timeline-arrow-stroke-width);\n`\n\nexport const rows = css`\n label: rows;\n`\n\nexport const row = css`\n label: row;\n fill: var(--vis-timeline-row-even-fill-color);\n opacity: var(--vis-timeline-row-background-opacity);\n`\n\nexport const rowOdd = css`\n label: row-odd;\n fill: var(--vis-timeline-row-odd-fill-color);\n`\n\nexport const scrollbar = css`\n label: scroll-bar;\n`\n\nexport const scrollbarHandle = css`\n label: scroll-bar-handle;\n fill: var(--vis-timeline-scrollbar-color);\n`\n\nexport const scrollbarBackground = css`\n label: scroll-bar-background;\n fill: var(--vis-timeline-scrollbar-background-color);\n`\n\nexport const labels = css`\n label: labels;\n`\n\nexport const label = css`\n label: label;\n dominant-baseline: middle;\n font-size: var(--vis-timeline-label-font-size);\n fill: var(--vis-timeline-label-color);\n text-anchor: end;\n user-select: none;\n`\n\nexport const rowIcons = css`\n label: row-icons;\n`\n\nexport const rowIcon = css`\n label: row-icon;\n`\n"],"names":[],"mappings":";;AAEO,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;EAEtB;AAEM,MAAM,YAAY,GAAG,YAAY,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCpB,kBAAA,EAAA,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,CAAA;;;;;;;;;EAS7B;AAEM,MAAM,UAAU,GAAG,GAAG,CAAA,CAAA;;EAE5B;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA,CAAA;;EAEvB;AAEM,MAAM,SAAS,GAAG,GAAG,CAAA,CAAA;;EAE3B;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;;;;;;;;;;;;;;;EAgBtB;AAEM,MAAM,aAAa,GAAG,GAAG,CAAA,CAAA;;EAE/B;AAEM,MAAM,WAAW,GAAG,GAAG,CAAA,CAAA;;EAE7B;AAEM,MAAM,MAAM,GAAG,GAAG,CAAA,CAAA;;EAExB;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA,CAAA;;;;;EAKvB;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;EAEtB;AAEM,MAAM,GAAG,GAAG,GAAG,CAAA,CAAA;;;;EAIrB;AAEM,MAAM,MAAM,GAAG,GAAG,CAAA,CAAA;;;EAGxB;AAEM,MAAM,SAAS,GAAG,GAAG,CAAA,CAAA;;EAE3B;AAEM,MAAM,eAAe,GAAG,GAAG,CAAA,CAAA;;;EAGjC;AAEM,MAAM,mBAAmB,GAAG,GAAG,CAAA,CAAA;;;EAGrC;AAEM,MAAM,MAAM,GAAG,GAAG,CAAA,CAAA;;EAExB;AAEM,MAAM,KAAK,GAAG,GAAG,CAAA,CAAA;;;;;;;EAOvB;AAEM,MAAM,QAAQ,GAAG,GAAG,CAAA,CAAA;;EAE1B;AAEM,MAAM,OAAO,GAAG,GAAG,CAAA,CAAA;;;;;;"}
|
|
@@ -30,7 +30,7 @@ export declare type TimelineArrow = {
|
|
|
30
30
|
lineSourceMarginPx?: number;
|
|
31
31
|
/** The margin between the line target and the arrow in pixels. Default: `undefined` */
|
|
32
32
|
lineTargetMarginPx?: number;
|
|
33
|
-
/** The length of the arrowhead in pixels. Default: `
|
|
33
|
+
/** The length of the arrowhead in pixels. Default: `8` */
|
|
34
34
|
arrowHeadLength?: number;
|
|
35
35
|
/** The width of the arrowhead in pixels. Default: `6` */
|
|
36
36
|
arrowHeadWidth?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sources":["../../../src/components/tooltip/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\n\nexport const root = css`\n label: tooltip;\n display: inline-block;\n left: 0;\n bottom: 0;\n min-width: max-content;\n position: absolute;\n opacity: 0;\n transition: opacity;\n transition-duration: var(--vis-tooltip-transition-duration);\n z-index: 999999;\n padding: var(--vis-tooltip-padding);\n color: var(--vis-tooltip-text-color);\n border-radius: var(--vis-tooltip-border-radius);\n box-shadow: var(--vis-tooltip-box-shadow);\n border: solid 1px var(--vis-tooltip-border-color);\n background-color: var(--vis-tooltip-background-color);\n backdrop-filter: var(--vis-tooltip-backdrop-filter);\n`\n\n/**\n * @deprecated This selector is deprecated and will be removed in future versions. Use `root` instead.\n */\nexport const tooltip = root\n\nexport const variables = injectGlobal`\n :root {\n --vis-tooltip-background-color: rgba(255, 255, 255, 0.95);\n --vis-tooltip-border-color: #e5e9f7;\n --vis-tooltip-text-color: #000;\n --vis-tooltip-shadow-color: rgba(172, 179, 184, 0.35);\n --vis-tooltip-backdrop-filter: none;\n --vis-tooltip-padding: 10px 15px;\n --vis-tooltip-border-radius: 5px;\n --vis-tooltip-transition-duration: 300ms;\n --vis-tooltip-box-shadow: none;\n\n --vis-dark-tooltip-background-color: rgba(30,30,30, 0.95);\n --vis-dark-tooltip-text-color: #e5e9f7;\n --vis-dark-tooltip-border-color: var(--vis-color-grey);\n --vis-dark-tooltip-shadow-color: rgba(0,0,0, 0.95);\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-tooltip-background-color: var(--vis-dark-tooltip-background-color);\n --vis-tooltip-text-color: var(--vis-dark-tooltip-text-color);\n --vis-tooltip-border-color: var(--vis-dark-tooltip-border-color);\n --vis-tooltip-shadow-color: var(--vis-dark-tooltip-shadow-color);\n }\n\n body.theme-dark {\n --vis-tooltip-background-color: rgba(30,30,30, 0.95);\n --vis-tooltip-text-color: #e5e9f7;\n --vis-tooltip-border-color: var(--vis-color-grey);\n --vis-tooltip-shadow-color: rgba(0,0,0, 0.95);\n }\n`\n\nexport const positionFixed = css`\n bottom: unset;\n position: fixed;\n`\n\nexport const show = css`\n opacity: 1;\n`\n\nexport const hidden = css`\n display: none;\n`\n\nexport const nonInteractive = css`\n label: non-interactive;\n pointer-events: none;\n user-select: none;\n`\n"],"names":[],"mappings":";;AAEO,MAAM,IAAI,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;EAkBtB;AAED;;AAEG;AACI,MAAM,OAAO,GAAG,KAAI;AAEpB,MAAM,SAAS,GAAG,YAAY,CAAA;;;;;;;;;;;;;;;;;;AAkBjB,kBAAA,EAAA,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,CAAA;;;;;;;;;;;;;EAa7B;AAEM,MAAM,aAAa,GAAG,GAAG,CAAA;;;EAG/B;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA;;EAEtB;AAEM,MAAM,MAAM,GAAG,GAAG,CAAA;;EAExB;AAEM,MAAM,cAAc,GAAG,GAAG,CAAA;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"style.js","sources":["../../../src/components/tooltip/style.ts"],"sourcesContent":["import { css, injectGlobal } from '@emotion/css'\n\nexport const root = css`\n label: tooltip;\n display: inline-block;\n left: 0;\n bottom: 0;\n min-width: max-content;\n position: absolute;\n opacity: 0;\n transition: opacity;\n transition-duration: var(--vis-tooltip-transition-duration);\n z-index: 999999;\n padding: var(--vis-tooltip-padding);\n color: var(--vis-tooltip-text-color);\n border-radius: var(--vis-tooltip-border-radius);\n box-shadow: var(--vis-tooltip-box-shadow);\n border: solid 1px var(--vis-tooltip-border-color);\n background-color: var(--vis-tooltip-background-color);\n backdrop-filter: var(--vis-tooltip-backdrop-filter);\n`\n\n/**\n * @deprecated This selector is deprecated and will be removed in future versions. Use `root` instead.\n */\nexport const tooltip = root\n\nexport const variables = injectGlobal`\n :root {\n --vis-tooltip-background-color: rgba(255, 255, 255, 0.95);\n --vis-tooltip-border-color: #e5e9f7;\n --vis-tooltip-text-color: #000;\n --vis-tooltip-shadow-color: rgba(172, 179, 184, 0.35);\n --vis-tooltip-backdrop-filter: none;\n --vis-tooltip-padding: 10px 15px;\n --vis-tooltip-border-radius: 5px;\n --vis-tooltip-transition-duration: 300ms;\n --vis-tooltip-box-shadow: none;\n\n --vis-dark-tooltip-background-color: rgba(30,30,30, 0.95);\n --vis-dark-tooltip-text-color: #e5e9f7;\n --vis-dark-tooltip-border-color: var(--vis-color-grey);\n --vis-dark-tooltip-shadow-color: rgba(0,0,0, 0.95);\n }\n\n body.theme-dark ${`.${root}`} {\n --vis-tooltip-background-color: var(--vis-dark-tooltip-background-color);\n --vis-tooltip-text-color: var(--vis-dark-tooltip-text-color);\n --vis-tooltip-border-color: var(--vis-dark-tooltip-border-color);\n --vis-tooltip-shadow-color: var(--vis-dark-tooltip-shadow-color);\n }\n\n body.theme-dark {\n --vis-tooltip-background-color: rgba(30,30,30, 0.95);\n --vis-tooltip-text-color: #e5e9f7;\n --vis-tooltip-border-color: var(--vis-color-grey);\n --vis-tooltip-shadow-color: rgba(0,0,0, 0.95);\n }\n`\n\nexport const positionFixed = css`\n bottom: unset;\n position: fixed;\n`\n\nexport const show = css`\n opacity: 1;\n`\n\nexport const hidden = css`\n display: none;\n`\n\nexport const nonInteractive = css`\n label: non-interactive;\n pointer-events: none;\n user-select: none;\n`\n"],"names":[],"mappings":";;AAEO,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;;;;;;;;;;;;;;;;;EAkBtB;AAED;;AAEG;AACI,MAAM,OAAO,GAAG,KAAI;AAEpB,MAAM,SAAS,GAAG,YAAY,CAAA,CAAA;;;;;;;;;;;;;;;;;;AAkBjB,kBAAA,EAAA,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,CAAA;;;;;;;;;;;;;EAa7B;AAEM,MAAM,aAAa,GAAG,GAAG,CAAA,CAAA;;;EAG/B;AAEM,MAAM,IAAI,GAAG,GAAG,CAAA,CAAA;;EAEtB;AAEM,MAAM,MAAM,GAAG,GAAG,CAAA,CAAA;;EAExB;AAEM,MAAM,cAAc,GAAG,GAAG,CAAA,CAAA;;;;;;;;"}
|