rapidograph 1.0.5 → 1.0.6
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataItem, Orientation, ValueFormatters } from '../../shared';
|
|
1
|
+
import { DataItem, Orientation, ShowLabels, Theme, ValueFormatters, XAxisPosition, YAxisPosition } from '../../shared';
|
|
2
2
|
import { LitElement, PropertyValues } from 'lit';
|
|
3
3
|
export declare class Rapidobar extends LitElement {
|
|
4
4
|
static get styles(): import('lit').CSSResult;
|
|
@@ -29,13 +29,13 @@ export declare class Rapidobar extends LitElement {
|
|
|
29
29
|
set data(value: DataItem[]);
|
|
30
30
|
formatters: ValueFormatters;
|
|
31
31
|
orientation: Orientation;
|
|
32
|
-
xAxisPosition:
|
|
33
|
-
yAxisPosition:
|
|
34
|
-
theme:
|
|
35
|
-
tooltipTheme:
|
|
32
|
+
xAxisPosition: XAxisPosition;
|
|
33
|
+
yAxisPosition: YAxisPosition;
|
|
34
|
+
theme: Theme;
|
|
35
|
+
tooltipTheme: Theme;
|
|
36
36
|
categoryLabel: string;
|
|
37
37
|
valueLabel: string;
|
|
38
|
-
showLabels:
|
|
38
|
+
showLabels: ShowLabels;
|
|
39
39
|
private get _wrapperClasses();
|
|
40
40
|
private get _wrapperStyles();
|
|
41
41
|
private get _barContainerClasses();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../lib/components/rapido-bar/index.ts"],"sourcesContent":["import {\n DATA_LENGTH_CSS_VAR,\n DEFAULT_Y_AXIS_WIDTH,\n type DataItem,\n MAX_Y_AXIS_WIDTH,\n MIN_Y_AXIS_WIDTH,\n Orientation,\n SCROLLBAR_WIDTH_CSS_VAR,\n ShowLabels,\n Theme,\n type ValueFormatters,\n XAxisPosition,\n X_AXIS_FIRST_LABEL_CSS_VAR,\n X_AXIS_HEIGHT_CSS_VAR,\n X_AXIS_LAST_LABEL_CSS_VAR,\n YAxisPosition,\n Y_AXIS_WIDTH_CSS_VAR,\n} from \"../../shared\";\nimport {\n LitElement,\n type PropertyValues,\n css,\n html,\n nothing,\n unsafeCSS,\n} from \"lit\";\nimport {\n calculateYAxisWidths,\n checkIfAllPositiveOrNegative,\n checkIfSomePositiveAndNegative,\n formatLabel,\n formatLabels,\n generateTicks,\n getMinAndMax,\n getScrollbarSize,\n getSizeInPercentages,\n getTextWidth,\n getUpdatedYAxisWidth,\n noop,\n} from \"../../utils\";\nimport {\n customElement,\n eventOptions,\n property,\n query,\n queryAll,\n state,\n} from \"lit/decorators.js\";\nimport { Tooltip } from \"../../helpers/tooltip\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport styles from \"./rapidobar.css?inline\";\n\n@customElement(\"rapido-bar\")\nexport class Rapidobar extends LitElement {\n static get styles() {\n return css`\n ${unsafeCSS(styles)}\n `;\n }\n\n private _data: DataItem[] = [];\n private _categoryLabels: (string | number)[] = [];\n private _ticks: number[] = [];\n private _tickLabels: (string | number)[] = [];\n private _hasPositive: boolean = true;\n private _hasNegative: boolean = false;\n private _allPositive: boolean = true;\n private _allNegative: boolean = false;\n private _yAxisMinWidth: number = MIN_Y_AXIS_WIDTH;\n private _yAxisMaxWidth: number = MAX_Y_AXIS_WIDTH;\n private _vObserver: IntersectionObserver | undefined;\n private _hObserver: IntersectionObserver | undefined;\n private _oldCursor?: string;\n\n private get _yAxisWidthPercentage() {\n const maxYAxisWidth = this._yAxisMaxWidth - this._yAxisMinWidth;\n const currentYAxisWidth = this._yAxisWidth - this._yAxisMinWidth;\n return ((currentYAxisWidth * 100) / maxYAxisWidth).toFixed(0);\n }\n\n private get _yAxisWidthDescription() {\n return `Y-axis offset ${this._yAxisWidthPercentage}%`;\n }\n\n @state()\n private _xAxisHeight: number = 0;\n @state()\n private _firstXAxisLabelWidth: number = 0;\n @state()\n private _lastXAxisLabelWidth: number = 0;\n @state()\n private _scrollbarSize: number = 0;\n @state()\n private _activeBar: HTMLElement | null = null;\n @state()\n private _yAxisWidth: number = DEFAULT_Y_AXIS_WIDTH;\n @state()\n private _isDraggingYAxis: boolean = false;\n @state()\n private _focusedBarIndex: number = 0;\n\n @property({ type: Array, attribute: false })\n get data(): DataItem[] {\n return this._data || [];\n }\n\n set data(value: DataItem[]) {\n const oldValue = this._data;\n this._data = value;\n this.requestUpdate(\"data\", oldValue);\n\n const length = this._data.length;\n const categories = new Array<string>(length);\n const values = new Array<number>(length);\n this.data.forEach(({ category, value }, index) => {\n categories[index] = category;\n values[index] = value;\n });\n this._categoryLabels = formatLabels(categories, this.formatters.category);\n const [minBarSize, maxBarSize] = getMinAndMax(values);\n this._ticks = generateTicks(minBarSize, maxBarSize);\n this._tickLabels = formatLabels(this._ticks, this.formatters.value);\n [this._hasPositive, this._hasNegative] =\n checkIfSomePositiveAndNegative(values);\n [this._allPositive, this._allNegative] =\n checkIfAllPositiveOrNegative(values);\n this._calculateTickWidths();\n }\n\n @property({ type: Object, attribute: false })\n formatters: ValueFormatters = {};\n\n @property({ type: Orientation, attribute: \"orientation\" })\n orientation: Orientation = Orientation.Vertical;\n\n @property({ type: XAxisPosition, attribute: \"x-axis-position\" })\n xAxisPosition = XAxisPosition.Bottom;\n\n @property({ type: YAxisPosition, attribute: \"y-axis-position\" })\n yAxisPosition = YAxisPosition.Left;\n\n @property({ type: Theme, attribute: \"theme\" })\n theme = Theme.Light;\n\n @property({ type: Theme, attribute: \"tooltip-theme\" })\n tooltipTheme = Theme.Light;\n\n @property({ type: String, attribute: \"category-label\" })\n categoryLabel: string = \"\";\n\n @property({ type: String, attribute: \"value-label\" })\n valueLabel: string = \"\";\n\n @property({ type: ShowLabels, attribute: \"show-labels\" })\n showLabels = ShowLabels.Always;\n\n private get _wrapperClasses() {\n return {\n rpg: true,\n [this.orientation]: true,\n [`x-axis-${this.xAxisPosition}`]: true,\n [`y-axis-${this.yAxisPosition}`]: true,\n [`labels-${this.showLabels}`]: true,\n };\n }\n private get _wrapperStyles() {\n return {\n [SCROLLBAR_WIDTH_CSS_VAR]: `${this._scrollbarSize}px`,\n [Y_AXIS_WIDTH_CSS_VAR]: `${this._yAxisWidth}px`,\n [X_AXIS_HEIGHT_CSS_VAR]: `${this._xAxisHeight}px`,\n [DATA_LENGTH_CSS_VAR]: this.data.length,\n [X_AXIS_FIRST_LABEL_CSS_VAR]: `${this._firstXAxisLabelWidth}px`,\n [X_AXIS_LAST_LABEL_CSS_VAR]: `${this._lastXAxisLabelWidth}px`,\n };\n }\n private get _barContainerClasses() {\n return {\n \"rpg-bar-container\": true,\n \"start-from-half\": this._hasPositive && this._hasNegative,\n };\n }\n\n @query(\".rpg\")\n private _wrapper!: HTMLElement;\n @query(\".rpg-scrollable\")\n private _scrollableElem!: HTMLElement;\n @query(\".rpg-bar-container\")\n private _barContainer!: HTMLElement;\n @query(\".rpg-x-axis\")\n private _xAxis!: HTMLElement;\n @query(\".rpg-y-axis\")\n private _yAxis!: HTMLElement;\n @query(\"#rpg-get-text-width\")\n private _textSizeDiv!: HTMLElement;\n @queryAll(\".rpg-bar\")\n private _bars!: HTMLElement[];\n\n render() {\n const isVertical = this.orientation === Orientation.Vertical;\n const xAxisLabel = isVertical ? this.categoryLabel : this.valueLabel;\n const yAxisLabel = isVertical ? this.valueLabel : this.categoryLabel;\n let xAxisLabels;\n let yAxisLabels;\n if (isVertical) {\n xAxisLabels = this._categoryLabels;\n yAxisLabels = this._tickLabels;\n } else {\n xAxisLabels = this._tickLabels;\n yAxisLabels = this._categoryLabels;\n }\n\n const xAxisLabelTemplates = [];\n for (const label of xAxisLabels) {\n xAxisLabelTemplates.push(html`\n <div class=\"rpg-axis-label\" title=${label}>${label}</div>\n `);\n }\n const xAxisTemplate = html`\n <div class=\"rpg-x-axis\">\n ${xAxisLabel\n ? html`<div class=\"rpg-axis-label rpg-axis-title\">\n <div class=\"rpg-axis-title-content\">${xAxisLabel}</div>\n </div>`\n : nothing}\n <div class=\"rpg-x-axis-labels\">${xAxisLabelTemplates}</div>\n </div>\n `;\n\n const yAxisLabelTemplates = [];\n for (const label of yAxisLabels) {\n yAxisLabelTemplates.push(html`\n <div class=\"rpg-axis-label\" title=${label}>${label}</div>\n `);\n }\n\n // tabindex matches flex order - visual and focus order are synchronized\n const yAxisTemplate = html`\n <div class=\"rpg-y-axis\">\n <div class=\"rpg-y-axis-labels\">${yAxisLabelTemplates}</div>\n <div\n class=\"rpg-y-axis-line-container\"\n role=\"slider\"\n tabindex=${this.yAxisPosition === YAxisPosition.Left ? \"1\" : \"0\"}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow=${this._yAxisWidthPercentage}\n aria-valuetext=${this._yAxisWidthDescription}\n aria-label=${`Y-axis positioned ${this.yAxisPosition}`}\n @dragstart=${noop}\n @pointerdown=${this.onYAxisPointerDown}\n @keydown=${this.onYAxisKeyDown}\n >\n ${yAxisLabel\n ? html`<div class=\"rpg-axis-label rpg-axis-title\">\n <div class=\"rpg-axis-title-content\">${yAxisLabel}</div>\n </div>`\n : nothing}\n <div class=\"rpg-y-axis-line\"></div>\n </div>\n </div>\n `;\n\n const gridlineTemplates = [];\n for (let i = 0; i < this._ticks.length - 1; i++) {\n gridlineTemplates.push(html`<div class=\"rpg-gridline\"></div>`);\n }\n\n const barTemplates = [];\n for (const [index, { value }] of this.data.entries()) {\n const isFocused = index === this._focusedBarIndex;\n const category = this._categoryLabels[index];\n const axisValue = this._tickLabels[index];\n const barValue = formatLabel(value, this.formatters.data);\n const tooltipValue = formatLabel(\n value,\n this.formatters.tooltip || this.formatters.value,\n );\n\n const isPositive =\n this._allPositive || !this._allNegative ? value >= 0 : value > 0;\n const barSize = getSizeInPercentages(\n value,\n this._ticks[0],\n this._ticks.at(-1),\n );\n\n barTemplates.push(\n html`<li\n class=\"rpg-bar ${isPositive ? \"positive\" : \"negative\"}\"\n tabindex=${isFocused ? 0 : -1}\n aria-current=${isFocused ? \"true\" : \"false\"}\n aria-label=\"${category}: ${axisValue}\"\n data-category=${category}\n data-value=${tooltipValue}\n >\n <div\n class=\"rpg-bar-content\"\n style=\"--rpg-bar-size: ${Math.abs(barSize)}%;\"\n >\n <div class=\"rpg-bar-label\">${barValue}</div>\n <div class=\"rpg-small-bar-label\">${barValue}</div>\n </div>\n </li>`,\n );\n }\n\n return html`\n <div\n class=${classMap(this._wrapperClasses)}\n style=${styleMap(this._wrapperStyles)}\n role=\"figure\"\n >\n <div class=\"rpg-scrollable\">\n <div class=\"rpg-scrollable-content\">\n ${isVertical ? xAxisTemplate : yAxisTemplate}\n <div class=\"rpg-content-container\">\n <div class=\"rpg-gridlines\">${gridlineTemplates}</div>\n <ul\n class=${classMap(this._barContainerClasses)}\n @mouseenter=${this.onBarEnter}\n @mouseleave=${this.onBarContainerMouseLeave}\n @focus=${this.onBarContainerFocus}\n @blur=${this.onBarContainerBlur}\n @keydown=${this.onBarContainerKeyDown}\n >\n ${this.data.length\n ? barTemplates\n : html`<div class=\"rpg-empty-state\">No data</div>`}\n </ul>\n </div>\n </div>\n </div>\n ${isVertical ? yAxisTemplate : xAxisTemplate}\n </div>\n <tool-tip\n .element=${this._isDraggingYAxis ? null : this._activeBar}\n .container=${this._scrollableElem}\n orientation=${this.orientation}\n theme=${this.tooltipTheme}\n ></tool-tip>\n <div aria-live=\"polite\">${this._yAxisWidthDescription}</div>\n <div id=\"rpg-get-text-width\" class=\"rpg-axis-label\"></div>\n `;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n if (!customElements.get(\"tool-tip\")) {\n customElements.define(\"tool-tip\", Tooltip);\n }\n }\n\n protected firstUpdated(_changedProperties: PropertyValues): void {\n super.firstUpdated(_changedProperties);\n\n this._calculateYAxisWidths();\n this.addObservers();\n }\n\n updated(changedProperties: Map<string, never>) {\n if (this._xAxis) {\n this._xAxisHeight = this._xAxis.getBoundingClientRect().height ?? 1 - 1;\n }\n\n if (changedProperties.get(\"orientation\") || changedProperties.get(\"data\")) {\n this._calculateYAxisWidths();\n }\n }\n\n private _calculateYAxisWidths(): void {\n const isVertical = this.orientation === Orientation.Vertical;\n [this._yAxisMinWidth, this._yAxisWidth, this._yAxisMaxWidth] =\n calculateYAxisWidths(\n this._textSizeDiv,\n this._wrapper,\n this._yAxis,\n isVertical ? this._tickLabels : this._categoryLabels,\n );\n }\n\n private _calculateTickWidths(): void {\n this._firstXAxisLabelWidth = getTextWidth(\n this._textSizeDiv,\n this._tickLabels[0].toString(),\n );\n this._lastXAxisLabelWidth = getTextWidth(\n this._textSizeDiv,\n this._tickLabels.at(-1)?.toString(),\n );\n }\n\n private addObservers() {\n const options = {\n root: this._scrollableElem,\n threshold: 1,\n };\n\n const callback = () => {\n this._scrollbarSize = getScrollbarSize(\n this.orientation,\n this._scrollableElem,\n );\n };\n this._vObserver = new IntersectionObserver(callback, {\n ...options,\n rootMargin: \"0px -16px\",\n });\n this._hObserver = new IntersectionObserver(callback, {\n ...options,\n rootMargin: \"-16px 0px\",\n });\n this._vObserver.observe(this._barContainer);\n this._hObserver.observe(this._barContainer);\n }\n\n @eventOptions({ capture: true })\n private onBarEnter(event: MouseEvent) {\n const target = event.target as HTMLElement;\n if (target.classList.contains(\"rpg-bar\")) {\n this._activeBar = target;\n }\n }\n\n @eventOptions({ capture: true })\n private onBarContainerMouseLeave(event: MouseEvent) {\n if (event.target === event.currentTarget) {\n this._activeBar = null;\n }\n }\n\n @eventOptions({ capture: true })\n private onBarContainerFocus(event: FocusEvent) {\n this._activeBar = event.target as HTMLElement;\n }\n\n @eventOptions({ capture: true })\n private onBarContainerBlur(event: FocusEvent) {\n const nextFocused = event.relatedTarget as HTMLElement;\n if (\n !nextFocused ||\n (nextFocused && !this._barContainer.contains(nextFocused))\n ) {\n this._activeBar = null;\n this._focusedBarIndex = 0;\n }\n }\n\n @eventOptions({ capture: true })\n private onBarContainerKeyDown(event: KeyboardEvent) {\n const isVertical = this.orientation === Orientation.Vertical;\n const nextKey = isVertical ? \"ArrowRight\" : \"ArrowDown\";\n const prevKey = isVertical ? \"ArrowLeft\" : \"ArrowUp\";\n const key = event.key;\n\n if (key === nextKey) {\n event.preventDefault();\n this._focusedBarIndex = Math.min(\n this._focusedBarIndex + 1,\n this.data.length - 1,\n );\n this._bars[this._focusedBarIndex].focus();\n } else if (key === prevKey) {\n event.preventDefault();\n this._focusedBarIndex = Math.max(this._focusedBarIndex - 1, 0);\n this._bars[this._focusedBarIndex].focus();\n } else if (key === \"Home\") {\n event.preventDefault();\n this._focusedBarIndex = 0;\n this._bars[this._focusedBarIndex].focus();\n } else if (key === \"End\") {\n event.preventDefault();\n this._focusedBarIndex = this.data.length - 1;\n this._bars[this._focusedBarIndex].focus();\n }\n }\n\n private onYAxisPointerDown(pointerDownEvent: PointerEvent) {\n pointerDownEvent.preventDefault();\n this._isDraggingYAxis = true;\n\n let newWidth = this._yAxisWidth;\n const self = this;\n\n const handlePointerMove = (pointerMoveEvent: PointerEvent) => {\n const parent = self._wrapper;\n\n const moveClientX = pointerMoveEvent.clientX;\n const downClientX = pointerDownEvent.clientX;\n\n newWidth =\n self._yAxisWidth +\n (self.yAxisPosition === YAxisPosition.Left\n ? moveClientX - downClientX\n : downClientX - moveClientX);\n let allowedMaxWidth = self._yAxisMaxWidth;\n\n // the pointer is out of slider => lock the thumb within the boundaries\n if (newWidth < self._yAxisMinWidth) {\n newWidth = self._yAxisMinWidth;\n }\n\n if (self._yAxisMaxWidth > parent.offsetWidth - MAX_Y_AXIS_WIDTH) {\n allowedMaxWidth = parent.offsetWidth - MAX_Y_AXIS_WIDTH;\n }\n if (newWidth > allowedMaxWidth) {\n newWidth = allowedMaxWidth;\n }\n this._wrapper.style.setProperty(Y_AXIS_WIDTH_CSS_VAR, `${newWidth}px`);\n };\n\n function handlePointerUp(): void {\n self._yAxisWidth = newWidth;\n self._isDraggingYAxis = false;\n if (self._oldCursor) {\n document.body.style.cursor = self._oldCursor;\n } else {\n document.body.style.removeProperty(\"cursor\");\n }\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n }\n\n self._oldCursor = document.body.style.cursor;\n document.body.style.cursor = \"col-resize\";\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n }\n\n private onYAxisKeyDown(event: KeyboardEvent): void {\n const percentage = parseInt(this._yAxisWidthPercentage ?? \"0\", 10);\n const key = event.key;\n const isLeftAxis = this.yAxisPosition === YAxisPosition.Left;\n const leftKey = isLeftAxis ? \"ArrowLeft\" : \"ArrowRight\";\n const rightKey = isLeftAxis ? \"ArrowRight\" : \"ArrowLeft\";\n const commonArgs = {\n currentPercentage: percentage,\n minWidth: this._yAxisMinWidth,\n maxWidth: this._yAxisMaxWidth,\n };\n\n if (key === leftKey) {\n event.preventDefault();\n this._yAxisWidth =\n getUpdatedYAxisWidth({\n ...commonArgs,\n widthPercentage: Math.max(percentage - 5, 0),\n }) ?? this._yAxisWidth;\n } else if (key === rightKey) {\n event.preventDefault();\n this._yAxisWidth =\n getUpdatedYAxisWidth({\n ...commonArgs,\n widthPercentage: Math.min(percentage + 5, 100),\n }) ?? this._yAxisWidth;\n } else if (key === \"Home\") {\n event.preventDefault();\n this._yAxisWidth =\n getUpdatedYAxisWidth({\n ...commonArgs,\n widthPercentage: 0,\n }) ?? this._yAxisWidth;\n } else if (key === \"End\") {\n event.preventDefault();\n this._yAxisWidth =\n getUpdatedYAxisWidth({\n ...commonArgs,\n widthPercentage: 100,\n }) ?? this._yAxisWidth;\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this._vObserver?.unobserve(this._barContainer);\n this._hObserver?.unobserve(this._barContainer);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"rapido-bar\": Rapidobar;\n }\n}\n"],"names":["Rapidobar","LitElement","MIN_Y_AXIS_WIDTH","MAX_Y_AXIS_WIDTH","DEFAULT_Y_AXIS_WIDTH","Orientation","XAxisPosition","YAxisPosition","Theme","ShowLabels","css","unsafeCSS","styles","maxYAxisWidth","value","oldValue","length","categories","values","category","index","formatLabels","minBarSize","maxBarSize","getMinAndMax","generateTicks","checkIfSomePositiveAndNegative","checkIfAllPositiveOrNegative","SCROLLBAR_WIDTH_CSS_VAR","Y_AXIS_WIDTH_CSS_VAR","X_AXIS_HEIGHT_CSS_VAR","DATA_LENGTH_CSS_VAR","X_AXIS_FIRST_LABEL_CSS_VAR","X_AXIS_LAST_LABEL_CSS_VAR","isVertical","xAxisLabel","yAxisLabel","xAxisLabels","yAxisLabels","xAxisLabelTemplates","label","html","xAxisTemplate","nothing","yAxisLabelTemplates","yAxisTemplate","noop","gridlineTemplates","i","barTemplates","isFocused","axisValue","barValue","formatLabel","tooltipValue","isPositive","barSize","getSizeInPercentages","classMap","styleMap","Tooltip","_changedProperties","changedProperties","calculateYAxisWidths","getTextWidth","options","callback","getScrollbarSize","event","target","nextFocused","nextKey","prevKey","key","pointerDownEvent","newWidth","self","handlePointerMove","pointerMoveEvent","parent","moveClientX","downClientX","allowedMaxWidth","handlePointerUp","percentage","isLeftAxis","leftKey","rightKey","commonArgs","getUpdatedYAxisWidth","__decorateClass","state","property","query","queryAll","eventOptions","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../lib/components/rapido-bar/index.ts"],"sourcesContent":["import {\n DATA_LENGTH_CSS_VAR,\n DEFAULT_Y_AXIS_WIDTH,\n type DataItem,\n MAX_Y_AXIS_WIDTH,\n MIN_Y_AXIS_WIDTH,\n Orientation,\n SCROLLBAR_WIDTH_CSS_VAR,\n ShowLabels,\n Theme,\n type ValueFormatters,\n XAxisPosition,\n X_AXIS_FIRST_LABEL_CSS_VAR,\n X_AXIS_HEIGHT_CSS_VAR,\n X_AXIS_LAST_LABEL_CSS_VAR,\n YAxisPosition,\n Y_AXIS_WIDTH_CSS_VAR,\n} from \"../../shared\";\nimport {\n LitElement,\n type PropertyValues,\n css,\n html,\n nothing,\n unsafeCSS,\n} from \"lit\";\nimport {\n calculateYAxisWidths,\n checkIfAllPositiveOrNegative,\n checkIfSomePositiveAndNegative,\n formatLabel,\n formatLabels,\n generateTicks,\n getMinAndMax,\n getScrollbarSize,\n getSizeInPercentages,\n getTextWidth,\n getUpdatedYAxisWidth,\n noop,\n} from \"../../utils\";\nimport {\n customElement,\n eventOptions,\n property,\n query,\n queryAll,\n state,\n} from \"lit/decorators.js\";\nimport { Tooltip } from \"../../helpers/tooltip\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport styles from \"./rapidobar.css?inline\";\n\n@customElement(\"rapido-bar\")\nexport class Rapidobar extends LitElement {\n static get styles() {\n return css`\n ${unsafeCSS(styles)}\n `;\n }\n\n private _data: DataItem[] = [];\n private _categoryLabels: (string | number)[] = [];\n private _ticks: number[] = [];\n private _tickLabels: (string | number)[] = [];\n private _hasPositive: boolean = true;\n private _hasNegative: boolean = false;\n private _allPositive: boolean = true;\n private _allNegative: boolean = false;\n private _yAxisMinWidth: number = MIN_Y_AXIS_WIDTH;\n private _yAxisMaxWidth: number = MAX_Y_AXIS_WIDTH;\n private _vObserver: IntersectionObserver | undefined;\n private _hObserver: IntersectionObserver | undefined;\n private _oldCursor?: string;\n\n private get _yAxisWidthPercentage() {\n const maxYAxisWidth = this._yAxisMaxWidth - this._yAxisMinWidth;\n const currentYAxisWidth = this._yAxisWidth - this._yAxisMinWidth;\n return ((currentYAxisWidth * 100) / maxYAxisWidth).toFixed(0);\n }\n\n private get _yAxisWidthDescription() {\n return `Y-axis offset ${this._yAxisWidthPercentage}%`;\n }\n\n @state()\n private _xAxisHeight: number = 0;\n @state()\n private _firstXAxisLabelWidth: number = 0;\n @state()\n private _lastXAxisLabelWidth: number = 0;\n @state()\n private _scrollbarSize: number = 0;\n @state()\n private _activeBar: HTMLElement | null = null;\n @state()\n private _yAxisWidth: number = DEFAULT_Y_AXIS_WIDTH;\n @state()\n private _isDraggingYAxis: boolean = false;\n @state()\n private _focusedBarIndex: number = 0;\n\n @property({ type: Array, attribute: false })\n get data(): DataItem[] {\n return this._data || [];\n }\n\n set data(value: DataItem[]) {\n const oldValue = this._data;\n this._data = value;\n this.requestUpdate(\"data\", oldValue);\n\n const length = this._data.length;\n const categories = new Array<string>(length);\n const values = new Array<number>(length);\n this.data.forEach(({ category, value }, index) => {\n categories[index] = category;\n values[index] = value;\n });\n this._categoryLabels = formatLabels(categories, this.formatters.category);\n const [minBarSize, maxBarSize] = getMinAndMax(values);\n this._ticks = generateTicks(minBarSize, maxBarSize);\n this._tickLabels = formatLabels(this._ticks, this.formatters.value);\n [this._hasPositive, this._hasNegative] =\n checkIfSomePositiveAndNegative(values);\n [this._allPositive, this._allNegative] =\n checkIfAllPositiveOrNegative(values);\n this._calculateTickWidths();\n }\n\n @property({ type: Object, attribute: false })\n formatters: ValueFormatters = {};\n\n @property({ type: Orientation, attribute: \"orientation\" })\n orientation: Orientation = Orientation.Vertical;\n\n @property({ type: XAxisPosition, attribute: \"x-axis-position\" })\n xAxisPosition: XAxisPosition = XAxisPosition.Bottom;\n\n @property({ type: YAxisPosition, attribute: \"y-axis-position\" })\n yAxisPosition: YAxisPosition = YAxisPosition.Left;\n\n @property({ type: Theme, attribute: \"theme\" })\n theme: Theme = Theme.Light;\n\n @property({ type: Theme, attribute: \"tooltip-theme\" })\n tooltipTheme: Theme = Theme.Light;\n\n @property({ type: String, attribute: \"category-label\" })\n categoryLabel: string = \"\";\n\n @property({ type: String, attribute: \"value-label\" })\n valueLabel: string = \"\";\n\n @property({ type: ShowLabels, attribute: \"show-labels\" })\n showLabels: ShowLabels = ShowLabels.Always;\n\n private get _wrapperClasses() {\n return {\n rpg: true,\n [this.orientation]: true,\n [`x-axis-${this.xAxisPosition}`]: true,\n [`y-axis-${this.yAxisPosition}`]: true,\n [`labels-${this.showLabels}`]: true,\n };\n }\n private get _wrapperStyles() {\n return {\n [SCROLLBAR_WIDTH_CSS_VAR]: `${this._scrollbarSize}px`,\n [Y_AXIS_WIDTH_CSS_VAR]: `${this._yAxisWidth}px`,\n [X_AXIS_HEIGHT_CSS_VAR]: `${this._xAxisHeight}px`,\n [DATA_LENGTH_CSS_VAR]: this.data.length,\n [X_AXIS_FIRST_LABEL_CSS_VAR]: `${this._firstXAxisLabelWidth}px`,\n [X_AXIS_LAST_LABEL_CSS_VAR]: `${this._lastXAxisLabelWidth}px`,\n };\n }\n private get _barContainerClasses() {\n return {\n \"rpg-bar-container\": true,\n \"start-from-half\": this._hasPositive && this._hasNegative,\n };\n }\n\n @query(\".rpg\")\n private _wrapper!: HTMLElement;\n @query(\".rpg-scrollable\")\n private _scrollableElem!: HTMLElement;\n @query(\".rpg-bar-container\")\n private _barContainer!: HTMLElement;\n @query(\".rpg-x-axis\")\n private _xAxis!: HTMLElement;\n @query(\".rpg-y-axis\")\n private _yAxis!: HTMLElement;\n @query(\"#rpg-get-text-width\")\n private _textSizeDiv!: HTMLElement;\n @queryAll(\".rpg-bar\")\n private _bars!: HTMLElement[];\n\n render() {\n const isVertical = this.orientation === Orientation.Vertical;\n const xAxisLabel = isVertical ? this.categoryLabel : this.valueLabel;\n const yAxisLabel = isVertical ? this.valueLabel : this.categoryLabel;\n let xAxisLabels;\n let yAxisLabels;\n if (isVertical) {\n xAxisLabels = this._categoryLabels;\n yAxisLabels = this._tickLabels;\n } else {\n xAxisLabels = this._tickLabels;\n yAxisLabels = this._categoryLabels;\n }\n\n const xAxisLabelTemplates = [];\n for (const label of xAxisLabels) {\n xAxisLabelTemplates.push(html`\n <div class=\"rpg-axis-label\" title=${label}>${label}</div>\n `);\n }\n const xAxisTemplate = html`\n <div class=\"rpg-x-axis\">\n ${xAxisLabel\n ? html`<div class=\"rpg-axis-label rpg-axis-title\">\n <div class=\"rpg-axis-title-content\">${xAxisLabel}</div>\n </div>`\n : nothing}\n <div class=\"rpg-x-axis-labels\">${xAxisLabelTemplates}</div>\n </div>\n `;\n\n const yAxisLabelTemplates = [];\n for (const label of yAxisLabels) {\n yAxisLabelTemplates.push(html`\n <div class=\"rpg-axis-label\" title=${label}>${label}</div>\n `);\n }\n\n // tabindex matches flex order - visual and focus order are synchronized\n const yAxisTemplate = html`\n <div class=\"rpg-y-axis\">\n <div class=\"rpg-y-axis-labels\">${yAxisLabelTemplates}</div>\n <div\n class=\"rpg-y-axis-line-container\"\n role=\"slider\"\n tabindex=${this.yAxisPosition === YAxisPosition.Left ? \"1\" : \"0\"}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow=${this._yAxisWidthPercentage}\n aria-valuetext=${this._yAxisWidthDescription}\n aria-label=${`Y-axis positioned ${this.yAxisPosition}`}\n @dragstart=${noop}\n @pointerdown=${this.onYAxisPointerDown}\n @keydown=${this.onYAxisKeyDown}\n >\n ${yAxisLabel\n ? html`<div class=\"rpg-axis-label rpg-axis-title\">\n <div class=\"rpg-axis-title-content\">${yAxisLabel}</div>\n </div>`\n : nothing}\n <div class=\"rpg-y-axis-line\"></div>\n </div>\n </div>\n `;\n\n const gridlineTemplates = [];\n for (let i = 0; i < this._ticks.length - 1; i++) {\n gridlineTemplates.push(html`<div class=\"rpg-gridline\"></div>`);\n }\n\n const barTemplates = [];\n for (const [index, { value }] of this.data.entries()) {\n const isFocused = index === this._focusedBarIndex;\n const category = this._categoryLabels[index];\n const axisValue = this._tickLabels[index];\n const barValue = formatLabel(value, this.formatters.data);\n const tooltipValue = formatLabel(\n value,\n this.formatters.tooltip || this.formatters.value,\n );\n\n const isPositive =\n this._allPositive || !this._allNegative ? value >= 0 : value > 0;\n const barSize = getSizeInPercentages(\n value,\n this._ticks[0],\n this._ticks.at(-1),\n );\n\n barTemplates.push(\n html`<li\n class=\"rpg-bar ${isPositive ? \"positive\" : \"negative\"}\"\n tabindex=${isFocused ? 0 : -1}\n aria-current=${isFocused ? \"true\" : \"false\"}\n aria-label=\"${category}: ${axisValue}\"\n data-category=${category}\n data-value=${tooltipValue}\n >\n <div\n class=\"rpg-bar-content\"\n style=\"--rpg-bar-size: ${Math.abs(barSize)}%;\"\n >\n <div class=\"rpg-bar-label\">${barValue}</div>\n <div class=\"rpg-small-bar-label\">${barValue}</div>\n </div>\n </li>`,\n );\n }\n\n return html`\n <div\n class=${classMap(this._wrapperClasses)}\n style=${styleMap(this._wrapperStyles)}\n role=\"figure\"\n >\n <div class=\"rpg-scrollable\">\n <div class=\"rpg-scrollable-content\">\n ${isVertical ? xAxisTemplate : yAxisTemplate}\n <div class=\"rpg-content-container\">\n <div class=\"rpg-gridlines\">${gridlineTemplates}</div>\n <ul\n class=${classMap(this._barContainerClasses)}\n @mouseenter=${this.onBarEnter}\n @mouseleave=${this.onBarContainerMouseLeave}\n @focus=${this.onBarContainerFocus}\n @blur=${this.onBarContainerBlur}\n @keydown=${this.onBarContainerKeyDown}\n >\n ${this.data.length\n ? barTemplates\n : html`<div class=\"rpg-empty-state\">No data</div>`}\n </ul>\n </div>\n </div>\n </div>\n ${isVertical ? yAxisTemplate : xAxisTemplate}\n </div>\n <tool-tip\n .element=${this._isDraggingYAxis ? null : this._activeBar}\n .container=${this._scrollableElem}\n orientation=${this.orientation}\n theme=${this.tooltipTheme}\n ></tool-tip>\n <div aria-live=\"polite\">${this._yAxisWidthDescription}</div>\n <div id=\"rpg-get-text-width\" class=\"rpg-axis-label\"></div>\n `;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n if (!customElements.get(\"tool-tip\")) {\n customElements.define(\"tool-tip\", Tooltip);\n }\n }\n\n protected firstUpdated(_changedProperties: PropertyValues): void {\n super.firstUpdated(_changedProperties);\n\n this._calculateYAxisWidths();\n this.addObservers();\n }\n\n updated(changedProperties: Map<string, never>) {\n if (this._xAxis) {\n this._xAxisHeight = this._xAxis.getBoundingClientRect().height ?? 1 - 1;\n }\n\n if (changedProperties.get(\"orientation\") || changedProperties.get(\"data\")) {\n this._calculateYAxisWidths();\n }\n }\n\n private _calculateYAxisWidths(): void {\n const isVertical = this.orientation === Orientation.Vertical;\n [this._yAxisMinWidth, this._yAxisWidth, this._yAxisMaxWidth] =\n calculateYAxisWidths(\n this._textSizeDiv,\n this._wrapper,\n this._yAxis,\n isVertical ? this._tickLabels : this._categoryLabels,\n );\n }\n\n private _calculateTickWidths(): void {\n this._firstXAxisLabelWidth = getTextWidth(\n this._textSizeDiv,\n this._tickLabels[0].toString(),\n );\n this._lastXAxisLabelWidth = getTextWidth(\n this._textSizeDiv,\n this._tickLabels.at(-1)?.toString(),\n );\n }\n\n private addObservers() {\n const options = {\n root: this._scrollableElem,\n threshold: 1,\n };\n\n const callback = () => {\n this._scrollbarSize = getScrollbarSize(\n this.orientation,\n this._scrollableElem,\n );\n };\n this._vObserver = new IntersectionObserver(callback, {\n ...options,\n rootMargin: \"0px -16px\",\n });\n this._hObserver = new IntersectionObserver(callback, {\n ...options,\n rootMargin: \"-16px 0px\",\n });\n this._vObserver.observe(this._barContainer);\n this._hObserver.observe(this._barContainer);\n }\n\n @eventOptions({ capture: true })\n private onBarEnter(event: MouseEvent) {\n const target = event.target as HTMLElement;\n if (target.classList.contains(\"rpg-bar\")) {\n this._activeBar = target;\n }\n }\n\n @eventOptions({ capture: true })\n private onBarContainerMouseLeave(event: MouseEvent) {\n if (event.target === event.currentTarget) {\n this._activeBar = null;\n }\n }\n\n @eventOptions({ capture: true })\n private onBarContainerFocus(event: FocusEvent) {\n this._activeBar = event.target as HTMLElement;\n }\n\n @eventOptions({ capture: true })\n private onBarContainerBlur(event: FocusEvent) {\n const nextFocused = event.relatedTarget as HTMLElement;\n if (\n !nextFocused ||\n (nextFocused && !this._barContainer.contains(nextFocused))\n ) {\n this._activeBar = null;\n this._focusedBarIndex = 0;\n }\n }\n\n @eventOptions({ capture: true })\n private onBarContainerKeyDown(event: KeyboardEvent) {\n const isVertical = this.orientation === Orientation.Vertical;\n const nextKey = isVertical ? \"ArrowRight\" : \"ArrowDown\";\n const prevKey = isVertical ? \"ArrowLeft\" : \"ArrowUp\";\n const key = event.key;\n\n if (key === nextKey) {\n event.preventDefault();\n this._focusedBarIndex = Math.min(\n this._focusedBarIndex + 1,\n this.data.length - 1,\n );\n this._bars[this._focusedBarIndex].focus();\n } else if (key === prevKey) {\n event.preventDefault();\n this._focusedBarIndex = Math.max(this._focusedBarIndex - 1, 0);\n this._bars[this._focusedBarIndex].focus();\n } else if (key === \"Home\") {\n event.preventDefault();\n this._focusedBarIndex = 0;\n this._bars[this._focusedBarIndex].focus();\n } else if (key === \"End\") {\n event.preventDefault();\n this._focusedBarIndex = this.data.length - 1;\n this._bars[this._focusedBarIndex].focus();\n }\n }\n\n private onYAxisPointerDown(pointerDownEvent: PointerEvent) {\n pointerDownEvent.preventDefault();\n this._isDraggingYAxis = true;\n\n let newWidth = this._yAxisWidth;\n const self = this;\n\n const handlePointerMove = (pointerMoveEvent: PointerEvent) => {\n const parent = self._wrapper;\n\n const moveClientX = pointerMoveEvent.clientX;\n const downClientX = pointerDownEvent.clientX;\n\n newWidth =\n self._yAxisWidth +\n (self.yAxisPosition === YAxisPosition.Left\n ? moveClientX - downClientX\n : downClientX - moveClientX);\n let allowedMaxWidth = self._yAxisMaxWidth;\n\n // the pointer is out of slider => lock the thumb within the boundaries\n if (newWidth < self._yAxisMinWidth) {\n newWidth = self._yAxisMinWidth;\n }\n\n if (self._yAxisMaxWidth > parent.offsetWidth - MAX_Y_AXIS_WIDTH) {\n allowedMaxWidth = parent.offsetWidth - MAX_Y_AXIS_WIDTH;\n }\n if (newWidth > allowedMaxWidth) {\n newWidth = allowedMaxWidth;\n }\n this._wrapper.style.setProperty(Y_AXIS_WIDTH_CSS_VAR, `${newWidth}px`);\n };\n\n function handlePointerUp(): void {\n self._yAxisWidth = newWidth;\n self._isDraggingYAxis = false;\n if (self._oldCursor) {\n document.body.style.cursor = self._oldCursor;\n } else {\n document.body.style.removeProperty(\"cursor\");\n }\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n }\n\n self._oldCursor = document.body.style.cursor;\n document.body.style.cursor = \"col-resize\";\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n }\n\n private onYAxisKeyDown(event: KeyboardEvent): void {\n const percentage = parseInt(this._yAxisWidthPercentage ?? \"0\", 10);\n const key = event.key;\n const isLeftAxis = this.yAxisPosition === YAxisPosition.Left;\n const leftKey = isLeftAxis ? \"ArrowLeft\" : \"ArrowRight\";\n const rightKey = isLeftAxis ? \"ArrowRight\" : \"ArrowLeft\";\n const commonArgs = {\n currentPercentage: percentage,\n minWidth: this._yAxisMinWidth,\n maxWidth: this._yAxisMaxWidth,\n };\n\n if (key === leftKey) {\n event.preventDefault();\n this._yAxisWidth =\n getUpdatedYAxisWidth({\n ...commonArgs,\n widthPercentage: Math.max(percentage - 5, 0),\n }) ?? this._yAxisWidth;\n } else if (key === rightKey) {\n event.preventDefault();\n this._yAxisWidth =\n getUpdatedYAxisWidth({\n ...commonArgs,\n widthPercentage: Math.min(percentage + 5, 100),\n }) ?? this._yAxisWidth;\n } else if (key === \"Home\") {\n event.preventDefault();\n this._yAxisWidth =\n getUpdatedYAxisWidth({\n ...commonArgs,\n widthPercentage: 0,\n }) ?? this._yAxisWidth;\n } else if (key === \"End\") {\n event.preventDefault();\n this._yAxisWidth =\n getUpdatedYAxisWidth({\n ...commonArgs,\n widthPercentage: 100,\n }) ?? this._yAxisWidth;\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this._vObserver?.unobserve(this._barContainer);\n this._hObserver?.unobserve(this._barContainer);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"rapido-bar\": Rapidobar;\n }\n}\n"],"names":["Rapidobar","LitElement","MIN_Y_AXIS_WIDTH","MAX_Y_AXIS_WIDTH","DEFAULT_Y_AXIS_WIDTH","Orientation","XAxisPosition","YAxisPosition","Theme","ShowLabels","css","unsafeCSS","styles","maxYAxisWidth","value","oldValue","length","categories","values","category","index","formatLabels","minBarSize","maxBarSize","getMinAndMax","generateTicks","checkIfSomePositiveAndNegative","checkIfAllPositiveOrNegative","SCROLLBAR_WIDTH_CSS_VAR","Y_AXIS_WIDTH_CSS_VAR","X_AXIS_HEIGHT_CSS_VAR","DATA_LENGTH_CSS_VAR","X_AXIS_FIRST_LABEL_CSS_VAR","X_AXIS_LAST_LABEL_CSS_VAR","isVertical","xAxisLabel","yAxisLabel","xAxisLabels","yAxisLabels","xAxisLabelTemplates","label","html","xAxisTemplate","nothing","yAxisLabelTemplates","yAxisTemplate","noop","gridlineTemplates","i","barTemplates","isFocused","axisValue","barValue","formatLabel","tooltipValue","isPositive","barSize","getSizeInPercentages","classMap","styleMap","Tooltip","_changedProperties","changedProperties","calculateYAxisWidths","getTextWidth","options","callback","getScrollbarSize","event","target","nextFocused","nextKey","prevKey","key","pointerDownEvent","newWidth","self","handlePointerMove","pointerMoveEvent","parent","moveClientX","downClientX","allowedMaxWidth","handlePointerUp","percentage","isLeftAxis","leftKey","rightKey","commonArgs","getUpdatedYAxisWidth","__decorateClass","state","property","query","queryAll","eventOptions","customElement"],"mappings":"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"}
|