Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion packages/devextreme/js/common/charts.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { HorizontalAlignment } from '../common';
import { Format } from '../localization';
import { BaseLegendItem } from '../viz/common';
import { baseSeriesObject } from '../viz/chart';
import { RepeatUnion } from '../core';

/**
* @public
Expand Down Expand Up @@ -48,8 +49,9 @@ export type ChartsDataType = 'datetime' | 'numeric' | 'string';
/**
* @public
* @namespace DevExpress.common.charts
* @type 'dash'|'dot'|'longDash'|'solid'
*/
export type DashStyle = 'dash' | 'dot' | 'longDash' | 'solid';
export type DashStyle = 'solid' | RepeatUnion<'dash' | 'dot' | 'longDash', 5>;

/**
* @public
Expand Down
18 changes: 18 additions & 0 deletions packages/devextreme/js/core/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,24 @@ export type AllPermutations<T extends string> = UnionLength<T> extends PermutedU
[K in T]: Permutations<T> | AllPermutations<Exclude<T, K>>
}[T] : string;

type BuildTuple<Length extends number, Result extends unknown[] = []> = Result['length'] extends Length
? Result
: BuildTuple<Length, [...Result, unknown]>;

type Tail<T extends unknown[]> = T extends [unknown, ...infer Rest] ? Rest : [];

type RepeatUnionInternal<
T extends string,
DepthTuple extends unknown[],
> = DepthTuple['length'] extends 0
? never
: T | `${T}${RepeatUnionInternal<T, Tail<DepthTuple>>}`;

export type RepeatUnion<
T extends string,
Depth extends number,
> = RepeatUnionInternal<T, BuildTuple<Depth>>;

/// #DEBUG

export type EventProps<T> = Extract<keyof T, `on${any}`>;
Expand Down
Loading