# Variwide

Show two measures through bar height and width.

Canonical: https://chart.syidax.com/docs/components/variwide/

<a id="overview"></a>

## sy-variwide-chart

Use to express the relationship between two magnitudes, such as unit price and quantity.

Label both units so readers do not confuse height with area when widths vary.

Base chart tier: Community. Features such as additional renderers and custom branding have separate entitlement requirements.

| Input | Data description |
| --- | --- |
| `data` | An array of { category, value, weight }. value determines height; weight determines width. |

- [Run in Components](https://chart.syidax.com/charts/variwide) — Change options and view framework-specific code
- [Shared installation and integration](https://chart.syidax.com/docs/getting-started.md)

<a id="example"></a>

## Complete implementation example

```html
<div id="chart-container" style="width: 100%; min-width: 0;"></div>

<script type="module">
  import { defineCustomElement as define0 } from '@syidax/advanced/components/sy-variwide-chart.js';
  define0();

  const specs = [
    {
      "id": "example-chart",
      "tag": "sy-variwide-chart",
      "props": {
        "engine": "standard",
        "data": [
          {
            "category": "A",
            "value": 42,
            "weight": 30
          },
          {
            "category": "B",
            "value": 28,
            "weight": 60
          },
          {
            "category": "C",
            "value": 18,
            "weight": 20
          }
        ],
        "width": 640,
        "height": 360,
        "brandPosition": "bottom-right",
        "brandLogo": ""
      }
    }
  ];
  const container = document.querySelector('#chart-container');
  const elements = specs.map(({ tag, id, props }) => {
    const element = document.createElement(tag);
    element.id = id;
    Object.assign(element, props);
    element.setAttribute('aria-label', 'variwide example chart');
    return element;
  });
  container.replaceChildren(...elements);
  const chart = elements.at(-1);
  const onEvent = event => {
    console.log('pointClick', event.detail);
  };
  chart.addEventListener('pointClick', onEvent);
  const observer = new ResizeObserver(([entry]) => {
    const width = Math.max(160, Math.floor(entry.contentRect.width));
    elements.forEach(element => { element.width = width; });
  });
  observer.observe(container);

  // In an SPA, call this function when the view is disposed.
  function disposeChart() {
    observer.disconnect();
    chart.removeEventListener('pointClick', onEvent);
    container.replaceChildren();
  }
</script>
```

<a id="props"></a>

## Properties

<a id="property-data"></a>

### data

An array of { category, value, weight }. value determines height; weight determines width.

| Item | Value |
| --- | --- |
| JavaScript property | `data` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `ReadonlyArray<VariwideDatum>` |
| Default | `[]` |

- [VariwideDatum](https://chart.syidax.com/docs/types/VariwideDatum.md) — Type definition

<a id="property-values"></a>

### values

Values for a single series. Use the data type required by the selected chart, such as a number array for Line or coordinate array for Scatter. Assign arrays and objects as JavaScript properties.

| Item | Value |
| --- | --- |
| JavaScript property | `values` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `VariwideChartValues` |
| Default | `new Float32Array(0)` |

- [VariwideChartValues](https://chart.syidax.com/docs/types/VariwideChartValues.md) — Type definition

<a id="property-weights"></a>

### weights

Deprecated fallback: prefer `data` rows with `{ category, value, weight, color? }`.

| Item | Value |
| --- | --- |
| JavaScript property | `weights` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `VariwideChartValues` |
| Default | `new Float32Array(0)` |

- [VariwideChartValues](https://chart.syidax.com/docs/types/VariwideChartValues.md) — Type definition

<a id="property-categories"></a>

### categories

Deprecated fallback: prefer `data` rows with `{ category, value, weight, color? }`.

| Item | Value |
| --- | --- |
| JavaScript property | `categories` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `ReadonlyArray<string>` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

<a id="property-width"></a>

### width

Chart width in pixels. If the container width changes, update width from a ResizeObserver.

| Item | Value |
| --- | --- |
| JavaScript property | `width` |
| HTML attribute | `width` |
| Type | `number` |
| Default | `640` |

<a id="property-height"></a>

### height

Chart height in pixels. Allow space for axes, titles, and the legend.

| Item | Value |
| --- | --- |
| JavaScript property | `height` |
| HTML attribute | `height` |
| Type | `number` |
| Default | `360` |

<a id="property-brandLogo"></a>

### brandLogo

The default is the Syidax symbol and wordmark. With the Pro chart.branding entitlement, set none to remove it or provide a PNG, JPEG, or WebP data URL to replace it.

| Item | Value |
| --- | --- |
| JavaScript property | `brandLogo` |
| HTML attribute | `brand-logo` |
| Type | `string` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

<a id="property-brandPosition"></a>

### brandPosition

The corner where the logo is anchored. Community and Pro both support all four corners, using the same position on screen and in image exports.

| Item | Value |
| --- | --- |
| JavaScript property | `brandPosition` |
| HTML attribute | `brand-position` |
| Type | `'top-left' \| 'top-right' \| 'bottom-left' \| 'bottom-right'` |
| Default | `'bottom-right'` |
| Allowed values | `top-left`, `top-right`, `bottom-left`, `bottom-right` |

<a id="property-color"></a>

### color

Fallback fill colour for rows without `color`. Accepts a single CSS colour, an array, or a comma-separated string (the first colour is used).

| Item | Value |
| --- | --- |
| JavaScript property | `color` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `string \| ReadonlyArray<string>` |
| Default | `'#2563eb'` |

<a id="property-colorful"></a>

### colorful

Fallback palette mode for rows without `color`.

| Item | Value |
| --- | --- |
| JavaScript property | `colorful` |
| HTML attribute | `colorful` |
| Type | `boolean` |
| Default | `false` |

<a id="property-columnGap"></a>

### columnGap

Gap between columns as a fraction of each column slot (0..0.45).

| Item | Value |
| --- | --- |
| JavaScript property | `columnGap` |
| HTML attribute | `column-gap` |
| Type | `number` |
| Default | `0.04` |

<a id="property-baseline"></a>

### baseline

Set as an HTML attribute or JavaScript property. type: number.

| Item | Value |
| --- | --- |
| JavaScript property | `baseline` |
| HTML attribute | `baseline` |
| Type | `number` |
| Default | `0` |

<a id="property-sortDescending"></a>

### sortDescending

Set as an HTML attribute or JavaScript property. type: boolean.

| Item | Value |
| --- | --- |
| JavaScript property | `sortDescending` |
| HTML attribute | `sort-descending` |
| Type | `boolean` |
| Default | `false` |

<a id="property-valueAxisLabel"></a>

### valueAxisLabel

Set as an HTML attribute or JavaScript property. type: string.

| Item | Value |
| --- | --- |
| JavaScript property | `valueAxisLabel` |
| HTML attribute | `value-axis-label` |
| Type | `string` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

<a id="property-xAxis"></a>

### xAxis

Configure the horizontal axis type, categories, range, and formatting. For a category axis, match the categories order to the value array indices. Charts supporting multiple axes can accept an axis array.

| Item | Value |
| --- | --- |
| JavaScript property | `xAxis` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `CartesianAxisInput \| ReadonlyArray<CartesianAxisInput>` |
| Default | `undefined` |
| Literals in the type | `auto`, `off` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

- [CartesianAxisInput](https://chart.syidax.com/docs/types/CartesianAxisInput.md) — Type definition

<a id="property-yAxis"></a>

### yAxis

Configure the vertical axis range, ticks, labels, and direction. Use consistent units for comparisons, and consider a zero baseline when comparing bar lengths.

| Item | Value |
| --- | --- |
| JavaScript property | `yAxis` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `CartesianAxisInput` |
| Default | `undefined` |
| Literals in the type | `auto`, `off` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

- [CartesianAxisInput](https://chart.syidax.com/docs/types/CartesianAxisInput.md) — Type definition

<a id="property-xLabelMode"></a>

### xLabelMode

How crowded category-axis (column) labels are decluttered. Default 'auto' thins labels horizontally.

| Item | Value |
| --- | --- |
| JavaScript property | `xLabelMode` |
| HTML attribute | `x-label-mode` |
| Type | `'auto' \| 'all' \| 'thin' \| 'rotate' \| 'none'` |
| Default | `undefined` |
| Allowed values | `none`, `auto`, `all`, `thin`, `rotate` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

<a id="property-xLabelRotation"></a>

### xLabelRotation

Explicit category-label rotation in degrees (respected as a floor).

| Item | Value |
| --- | --- |
| JavaScript property | `xLabelRotation` |
| HTML attribute | `x-label-rotation` |
| Type | `number` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

<a id="property-xLabelMaxCount"></a>

### xLabelMaxCount

Hard cap on the number of category labels shown.

| Item | Value |
| --- | --- |
| JavaScript property | `xLabelMaxCount` |
| HTML attribute | `x-label-max` |
| Type | `number` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

<a id="property-gridLines"></a>

### gridLines

Allowed values: auto, off. Default: undefined.

| Item | Value |
| --- | --- |
| JavaScript property | `gridLines` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `CartesianGridLinesInput` |
| Default | `undefined` |
| Literals in the type | `auto`, `off` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

- [CartesianGridLinesInput](https://chart.syidax.com/docs/types/CartesianGridLinesInput.md) — Type definition

<a id="property-crosshair"></a>

### crosshair

Crosshair that follows the cursor across the plot. `true`/`'auto'` enables a snapping line; pass an object to set mode/snap/color/dash.

| Item | Value |
| --- | --- |
| JavaScript property | `crosshair` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `CartesianCrosshairInput` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

- [CartesianCrosshairInput](https://chart.syidax.com/docs/types/CartesianCrosshairInput.md) — Type definition

<a id="property-chartTitle"></a>

### chartTitle

The title inside the chart. Explain the data's unit and meaning alongside it.

| Item | Value |
| --- | --- |
| JavaScript property | `chartTitle` |
| HTML attribute | `chart-title` |
| Type | `string` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

<a id="property-chartSubtitle"></a>

### chartSubtitle

The subtitle inside the chart.

| Item | Value |
| --- | --- |
| JavaScript property | `chartSubtitle` |
| HTML attribute | `chart-subtitle` |
| Type | `string` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

<a id="property-tooltipEnabled"></a>

### tooltipEnabled

Set as an HTML attribute or JavaScript property. type: boolean.

| Item | Value |
| --- | --- |
| JavaScript property | `tooltipEnabled` |
| HTML attribute | `tooltip-show` |
| Type | `boolean` |
| Default | `true` |

<a id="property-tooltipFormat"></a>

### tooltipFormat

Pass as a JavaScript property. type: (detail: VariwideChartPointerEventDetail) => string.

| Item | Value |
| --- | --- |
| JavaScript property | `tooltipFormat` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `(detail: VariwideChartPointerEventDetail) => string` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

- [VariwideChartPointerEventDetail](https://chart.syidax.com/docs/types/VariwideChartPointerEventDetail.md) — Type definition

<a id="property-tooltip"></a>

### tooltip

Rich tooltip configuration (matches the line/area/column/lollipop family). Pass an object to set `show`/`mode`/`side`/`format`/`html`/`style`/`connector`/`draggable`/`interactive`/`trigger`/`openMode`. The legacy `tooltipEnabled`/`tooltipFormat` props remain the fallback when `tooltip` is omitted.

| Item | Value |
| --- | --- |
| JavaScript property | `tooltip` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `CartesianTooltipInput` |
| Default | `undefined` |
| Literals in the type | `auto`, `off` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

- [CartesianTooltipInput](https://chart.syidax.com/docs/types/CartesianTooltipInput.md) — Type definition

<a id="property-enableMouseTracking"></a>

### enableMouseTracking

Set as an HTML attribute or JavaScript property. type: boolean.

| Item | Value |
| --- | --- |
| JavaScript property | `enableMouseTracking` |
| HTML attribute | `enable-mouse-tracking` |
| Type | `boolean` |
| Default | `true` |

<a id="property-animated"></a>

### animated

Whether to animate initial display and data changes.

| Item | Value |
| --- | --- |
| JavaScript property | `animated` |
| HTML attribute | `animate` |
| Type | `boolean` |
| Default | `false` |

<a id="property-animationDuration"></a>

### animationDuration

Animation duration in milliseconds.

| Item | Value |
| --- | --- |
| JavaScript property | `animationDuration` |
| HTML attribute | `animation-duration` |
| Type | `number` |
| Default | `600` |

<a id="property-animationEasing"></a>

### animationEasing

Allowed values: linear, ease-out, ease-in, ease-in-out. Default: 'ease-out'.

| Item | Value |
| --- | --- |
| JavaScript property | `animationEasing` |
| HTML attribute | `animation-easing` |
| Type | `VariwideChartEasing` |
| Default | `'ease-out'` |
| Allowed values | `linear`, `ease-out`, `ease-in`, `ease-in-out` |

- [VariwideChartEasing](https://chart.syidax.com/docs/types/VariwideChartEasing.md) — Type definition

<a id="property-animationType"></a>

### animationType

Allowed values: initial, update. Default: undefined.

| Item | Value |
| --- | --- |
| JavaScript property | `animationType` |
| HTML attribute | `animation-type` |
| Type | `VariwideChartAnimationType` |
| Default | `undefined` |
| Allowed values | `initial`, `update` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

- [VariwideChartAnimationType](https://chart.syidax.com/docs/types/VariwideChartAnimationType.md) — Type definition

<a id="property-streamSource"></a>

### streamSource

A stream source for live data. Check the contract for the specific type.

| Item | Value |
| --- | --- |
| JavaScript property | `streamSource` |
| HTML attribute | Pass objects, arrays, and callbacks as JavaScript properties |
| Type | `VariwideChartStreamSource` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

- [VariwideChartStreamSource](https://chart.syidax.com/docs/types/VariwideChartStreamSource.md) — Type definition

<a id="property-streamWindow"></a>

### streamWindow

The streaming data range to keep visible.

| Item | Value |
| --- | --- |
| JavaScript property | `streamWindow` |
| HTML attribute | `stream-window` |
| Type | `number` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

<a id="property-streamMax"></a>

### streamMax

The maximum number of streaming data points to retain.

| Item | Value |
| --- | --- |
| JavaScript property | `streamMax` |
| HTML attribute | `stream-max` |
| Type | `number` |
| Default | `undefined` |

undefined means this property was not explicitly set. The effective value may depend on the chart type and other settings.

<a id="property-engine"></a>

### engine

Renderer selection: auto, standard, or pro. Engine selection is separate from permission to use a Pro chart type.

| Item | Value |
| --- | --- |
| JavaScript property | `engine` |
| HTML attribute | `engine` |
| Type | `VariwideChartEngineMode` |
| Default | `'auto'` |
| Allowed values | `auto`, `standard`, `pro` |

- [VariwideChartEngineMode](https://chart.syidax.com/docs/types/VariwideChartEngineMode.md) — Type definition

<a id="property-proThreshold"></a>

### proThreshold

Set as an HTML attribute or JavaScript property. type: number.

| Item | Value |
| --- | --- |
| JavaScript property | `proThreshold` |
| HTML attribute | `pro-threshold` |
| Type | `number` |
| Default | `50_000` |

<a id="property-unavailable"></a>

### unavailable

Allowed values: fallback, error, throw. Default: 'fallback'.

| Item | Value |
| --- | --- |
| JavaScript property | `unavailable` |
| HTML attribute | `unavailable` |
| Type | `VariwideChartUnavailableBehaviour` |
| Default | `'fallback'` |
| Allowed values | `fallback`, `error`, `throw` |

- [VariwideChartUnavailableBehaviour](https://chart.syidax.com/docs/types/VariwideChartUnavailableBehaviour.md) — Type definition

<a id="events"></a>

## Events

<a id="event-rendered"></a>

### rendered

Emits rendering results in detail when chart drawing completes.

Event name: `rendered`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<VariwideChartRenderResult & { tier: VariwideChartEngineTier }>`.

```javascript
chart.addEventListener('rendered', event => {
  console.log(event.detail); // VariwideChartRenderResult & { tier: VariwideChartEngineTier }
});
```

- [VariwideChartRenderResult](https://chart.syidax.com/docs/types/VariwideChartRenderResult.md) — Type definition
- [VariwideChartEngineTier](https://chart.syidax.com/docs/types/VariwideChartEngineTier.md) — Type definition

<a id="event-pointClick"></a>

### pointClick

A point selection event. Read the selected data and index from CustomEvent.detail.

Event name: `pointClick`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<VariwideChartPointerEventDetail>`.

```javascript
chart.addEventListener('pointClick', event => {
  console.log(event.detail); // VariwideChartPointerEventDetail
});
```

- [VariwideChartPointerEventDetail](https://chart.syidax.com/docs/types/VariwideChartPointerEventDetail.md) — Type definition

<a id="event-pointHover"></a>

### pointHover

CustomEvent.detail type: VariwideChartPointerEventDetail | null. Event names are case-sensitive.

Event name: `pointHover`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<VariwideChartPointerEventDetail | null>`.

```javascript
chart.addEventListener('pointHover', event => {
  console.log(event.detail); // VariwideChartPointerEventDetail | null
});
```

- [VariwideChartPointerEventDetail](https://chart.syidax.com/docs/types/VariwideChartPointerEventDetail.md) — Type definition

<a id="event-crosshairMove"></a>

### crosshairMove

CustomEvent.detail type: CartesianCrosshairEventDetail | null. Event names are case-sensitive.

Event name: `crosshairMove`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<CartesianCrosshairEventDetail | null>`.

```javascript
chart.addEventListener('crosshairMove', event => {
  console.log(event.detail); // CartesianCrosshairEventDetail | null
});
```

- [CartesianCrosshairEventDetail](https://chart.syidax.com/docs/types/CartesianCrosshairEventDetail.md) — Type definition

<a id="event-pointContextMenu"></a>

### pointContextMenu

CustomEvent.detail type: ChartPointContextMenuEventDetail<VariwideChartPointerEventDetail>. Event names are case-sensitive.

Event name: `pointContextMenu`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<ChartPointContextMenuEventDetail<VariwideChartPointerEventDetail>>`.

```javascript
chart.addEventListener('pointContextMenu', event => {
  console.log(event.detail); // ChartPointContextMenuEventDetail<VariwideChartPointerEventDetail>
});
```

- [ChartPointContextMenuEventDetail](https://chart.syidax.com/docs/types/ChartPointContextMenuEventDetail.md) — Type definition
- [VariwideChartPointerEventDetail](https://chart.syidax.com/docs/types/VariwideChartPointerEventDetail.md) — Type definition

<a id="event-tooltipShow"></a>

### tooltipShow

Whether to display the built-in tooltip.

Event name: `tooltipShow`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<CartesianTooltipEventDetail>`.

```javascript
chart.addEventListener('tooltipShow', event => {
  console.log(event.detail); // CartesianTooltipEventDetail
});
```

- [CartesianTooltipEventDetail](https://chart.syidax.com/docs/types/CartesianTooltipEventDetail.md) — Type definition

<a id="event-tooltipHide"></a>

### tooltipHide

CustomEvent.detail type: void. Event names are case-sensitive.

Event name: `tooltipHide`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<void>`.

```javascript
chart.addEventListener('tooltipHide', event => {
  console.log(event.detail); // void
});
```

<a id="event-tooltipAction"></a>

### tooltipAction

CustomEvent.detail type: CartesianTooltipActionEventDetail. Event names are case-sensitive.

Event name: `tooltipAction`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<CartesianTooltipActionEventDetail>`.

```javascript
chart.addEventListener('tooltipAction', event => {
  console.log(event.detail); // CartesianTooltipActionEventDetail
});
```

- [CartesianTooltipActionEventDetail](https://chart.syidax.com/docs/types/CartesianTooltipActionEventDetail.md) — Type definition

<a id="event-seriesOutsideClick"></a>

### seriesOutsideClick

CustomEvent.detail type: CartesianSeriesOutsideClickEventDetail. Event names are case-sensitive.

Event name: `seriesOutsideClick`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<CartesianSeriesOutsideClickEventDetail>`.

```javascript
chart.addEventListener('seriesOutsideClick', event => {
  console.log(event.detail); // CartesianSeriesOutsideClickEventDetail
});
```

- [CartesianSeriesOutsideClickEventDetail](https://chart.syidax.com/docs/types/CartesianSeriesOutsideClickEventDetail.md) — Type definition

<a id="event-appended"></a>

### appended

CustomEvent.detail type: { count: number }. Event names are case-sensitive.

Event name: `appended`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<{ count: number }>`.

```javascript
chart.addEventListener('appended', event => {
  console.log(event.detail); // { count: number }
});
```

<a id="event-windowSlid"></a>

### windowSlid

CustomEvent.detail type: { dropped: number }. Event names are case-sensitive.

Event name: `windowSlid`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<{ dropped: number }>`.

```javascript
chart.addEventListener('windowSlid', event => {
  console.log(event.detail); // { dropped: number }
});
```

<a id="event-chartAnimationStart"></a>

### chartAnimationStart

CustomEvent.detail type: void. Event names are case-sensitive.

Event name: `chartAnimationStart`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<void>`.

```javascript
chart.addEventListener('chartAnimationStart', event => {
  console.log(event.detail); // void
});
```

<a id="event-chartAnimationEnd"></a>

### chartAnimationEnd

CustomEvent.detail type: void. Event names are case-sensitive.

Event name: `chartAnimationEnd`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<void>`.

```javascript
chart.addEventListener('chartAnimationEnd', event => {
  console.log(event.detail); // void
});
```

<a id="event-chartAnimationInterrupted"></a>

### chartAnimationInterrupted

CustomEvent.detail type: void. Event names are case-sensitive.

Event name: `chartAnimationInterrupted`. Names are case-sensitive. Read the payload from `detail` on `CustomEvent<void>`.

```javascript
chart.addEventListener('chartAnimationInterrupted', event => {
  console.log(event.detail); // void
});
```

<a id="methods"></a>

## Methods

<a id="method-redraw"></a>

### redraw

Redraw the chart using its current data and options. Inspect the rendered result after the returned Promise resolves.

```typescript
redraw(): Promise<VariwideChartRenderResult>
```

Return type: `Promise<VariwideChartRenderResult>`. Call the method after element registration and await its Promise result.

- [VariwideChartRenderResult](https://chart.syidax.com/docs/types/VariwideChartRenderResult.md) — Type definition

<a id="method-getActiveTier"></a>

### getActiveTier

An asynchronous method. Check the argument and return types below.

```typescript
getActiveTier(): Promise<VariwideChartEngineTier>
```

Return type: `Promise<VariwideChartEngineTier>`. Call the method after element registration and await its Promise result.

- [VariwideChartEngineTier](https://chart.syidax.com/docs/types/VariwideChartEngineTier.md) — Type definition

<a id="method-setData"></a>

### setData

Replace the bar set.

```typescript
setData(data: ReadonlyArray<VariwideDatum> | VariwideChartValues, weights?: VariwideChartValues): Promise<void>
```

| Arguments | Type | Required |
| --- | --- | --- |
| `data` | `ReadonlyArray<VariwideDatum> \| VariwideChartValues` | Required |
| `weights` | `VariwideChartValues` | Optional |

Return type: `Promise<void>`. Call the method after element registration and await its Promise result.

- [VariwideDatum](https://chart.syidax.com/docs/types/VariwideDatum.md) — Type definition
- [VariwideChartValues](https://chart.syidax.com/docs/types/VariwideChartValues.md) — Type definition

<a id="method-appendPoint"></a>

### appendPoint

Append one value to the stream. Check the argument type and the licensing requirements for streaming.

```typescript
appendPoint(datum: VariwideColumnDatum): Promise<void>
```

| Arguments | Type | Required |
| --- | --- | --- |
| `datum` | `VariwideColumnDatum` | Required |

Return type: `Promise<void>`. Call the method after element registration and await its Promise result.

- [VariwideColumnDatum](https://chart.syidax.com/docs/types/VariwideColumnDatum.md) — Type definition

<a id="method-appendBatch"></a>

### appendBatch

Append multiple values to the stream. Check the argument type and the licensing requirements for streaming.

```typescript
appendBatch(data: ReadonlyArray<VariwideColumnDatum>): Promise<void>
```

| Arguments | Type | Required |
| --- | --- | --- |
| `data` | `ReadonlyArray<VariwideColumnDatum>` | Required |

Return type: `Promise<void>`. Call the method after element registration and await its Promise result.

- [VariwideColumnDatum](https://chart.syidax.com/docs/types/VariwideColumnDatum.md) — Type definition

<a id="method-shift"></a>

### shift

Drop the oldest streamed categories (the `data` boxes are not the stream).

```typescript
shift(count: number): Promise<void>
```

| Arguments | Type | Required |
| --- | --- | --- |
| `count` | `number` | Required |

Return type: `Promise<void>`. Call the method after element registration and await its Promise result.

<a id="method-replace"></a>

### replace

Swap the streamed set (`replace([])` clears it); the base `values` never leave. Without `chart.streaming` the dies upsert into the base like a batch (quietly: no `appended`, no `binChanged`, as a ring replace).

```typescript
replace(data: ReadonlyArray<VariwideColumnDatum>): Promise<void>
```

| Arguments | Type | Required |
| --- | --- | --- |
| `data` | `ReadonlyArray<VariwideColumnDatum>` | Required |

Return type: `Promise<void>`. Call the method after element registration and await its Promise result.

- [VariwideColumnDatum](https://chart.syidax.com/docs/types/VariwideColumnDatum.md) — Type definition

<a id="method-getStreamSource"></a>

### getStreamSource

The stream session's source (Chart Pro): like the stream methods it waits for a license still being confirmed.

```typescript
getStreamSource(): Promise<VariwideChartStreamSource | undefined>
```

Return type: `Promise<VariwideChartStreamSource | undefined>`. Call the method after element registration and await its Promise result.

- [VariwideChartStreamSource](https://chart.syidax.com/docs/types/VariwideChartStreamSource.md) — Type definition

<a id="method-setAnimation"></a>

### setAnimation

An asynchronous method. Check the argument and return types below.

```typescript
setAnimation(options: { duration?: number; easing?: VariwideChartEasing; enabled?: boolean; type?: VariwideChartAnimationType }): Promise<void>
```

| Arguments | Type | Required |
| --- | --- | --- |
| `options` | `{ duration?: number; easing?: VariwideChartEasing; enabled?: boolean; type?: VariwideChartAnimationType }` | Required |

Return type: `Promise<void>`. Call the method after element registration and await its Promise result.

- [VariwideChartEasing](https://chart.syidax.com/docs/types/VariwideChartEasing.md) — Type definition
- [VariwideChartAnimationType](https://chart.syidax.com/docs/types/VariwideChartAnimationType.md) — Type definition

<a id="method-pauseAnimation"></a>

### pauseAnimation

Pause the current animation.

```typescript
pauseAnimation(): Promise<void>
```

Return type: `Promise<void>`. Call the method after element registration and await its Promise result.

<a id="method-resumeAnimation"></a>

### resumeAnimation

Resume a paused animation.

```typescript
resumeAnimation(): Promise<void>
```

Return type: `Promise<void>`. Call the method after element registration and await its Promise result.

<a id="method-replayAnimation"></a>

### replayAnimation

Replay the initial sweep from min → value(s). No-op when animation is off / reduced.

```typescript
replayAnimation(): Promise<void>
```

Return type: `Promise<void>`. Call the method after element registration and await its Promise result.

<a id="method-hitTest"></a>

### hitTest

The box under a host-local CSS point (the nearest slot, within half a pitch), or null.

```typescript
hitTest(cssX: number, cssY: number): Promise<VariwideChartPointerEventDetail | null>
```

| Arguments | Type | Required |
| --- | --- | --- |
| `cssX` | `number` | Required |
| `cssY` | `number` | Required |

Return type: `Promise<VariwideChartPointerEventDetail | null>`. Call the method after element registration and await its Promise result.

- [VariwideChartPointerEventDetail](https://chart.syidax.com/docs/types/VariwideChartPointerEventDetail.md) — Type definition

<a id="method-showTooltipAtPoint"></a>

### showTooltipAtPoint

Open the tooltip for a dot programmatically. `pointIndex` is the category (row) index; the optional `seriesIndex` selects a group within that row (defaults to the first visible group's dot in the row). Returns the emitted tooltip detail, or null when no dot resolves / the tooltip is disabled.

```typescript
showTooltipAtPoint(index: number): Promise<CartesianTooltipEventDetail | null>
```

| Arguments | Type | Required |
| --- | --- | --- |
| `index` | `number` | Required |

Return type: `Promise<CartesianTooltipEventDetail | null>`. Call the method after element registration and await its Promise result.

- [CartesianTooltipEventDetail](https://chart.syidax.com/docs/types/CartesianTooltipEventDetail.md) — Type definition

<a id="method-hideTooltip"></a>

### hideTooltip

Close the currently visible tooltip.

```typescript
hideTooltip(): Promise<void>
```

Return type: `Promise<void>`. Call the method after element registration and await its Promise result.

<a id="method-getEngineStatus"></a>

### getEngineStatus

Requested engine vs what runs, and why (CHART-ADD-08): always Standard (this type has no WebGPU renderer); read without side effects, never consults the license.

```typescript
getEngineStatus(): Promise<ChartEngineStatus>
```

Return type: `Promise<ChartEngineStatus>`. Call the method after element registration and await its Promise result.

- [ChartEngineStatus](https://chart.syidax.com/docs/types/ChartEngineStatus.md) — Type definition
