export type Scriptable<T, TContext> = T | ((ctx: TContext, options: AnyObject) => T | undefined);
export type ScriptableOptions<T, TContext> = { [P in keyof T]: Scriptable<T[P], TContext> };
+export type ScriptableAndScriptableOptions<T, TContext> = Scriptable<T, TContext> | ScriptableOptions<T, TContext>;
export type ScriptableAndArray<T, TContext> = readonly T[] | Scriptable<T, TContext>;
export type ScriptableAndArrayOptions<T, TContext> = { [P in keyof T]: ScriptableAndArray<T[P], TContext> };
* Font of label
* @see Defaults.font
*/
- font: FontSpec;
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableChartContext>;
/**
* Padding between rows of colored boxes.
* @default 10
/**
* see Fonts
*/
- font: FontSpec;
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableChartContext>;
position: 'center' | 'start' | 'end';
padding?: number | ChartArea;
/**
* @see Defaults.color
*/
color: Color;
- font: FontSpec;
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableChartContext>;
/**
* Marks that this box should take the full width/height of the canvas (moving other boxes). If set to `false`, places the box above/beside the
* See Fonts
* @default {weight: 'bold'}
*/
- titleFont: Scriptable<FontSpec, ScriptableTooltipContext<TType>>;
+ titleFont: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableTooltipContext<TType>>;
/**
* Spacing to add to top and bottom of each title line.
* @default 2
* See Fonts.
* @default {}
*/
- bodyFont: Scriptable<FontSpec, ScriptableTooltipContext<TType>>;
+ bodyFont: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableTooltipContext<TType>>;
/**
* Horizontal alignment of the body text lines.
* @default 'left'
* See Fonts
* @default {weight: 'bold'}
*/
- footerFont: Scriptable<FontSpec, ScriptableTooltipContext<TType>>;
+ footerFont: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableTooltipContext<TType>>;
/**
* Horizontal alignment of the footer text lines.
* @default 'left'
/**
* see Fonts
*/
- font: Scriptable<FontSpec, ScriptableScaleContext>;
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableScaleContext>;
/**
* Sets the offset of the tick labels from the axis
*/
maxTicksLimit: number;
}
+export interface ScriptableCartesianScaleContext {
+ scale: keyof CartesianScaleTypeRegistry;
+ type: string;
+}
+
+export interface ScriptableChartContext {
+ chart: Chart;
+ type: string;
+}
+
export interface CartesianScaleOptions extends CoreScaleOptions {
/**
* Scale boundary strategy (bypassed by min/max time options)
/** Color of the axis label. */
color: Color;
/** Information about the axis title font. */
- font: FontSpec;
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableCartesianScaleContext>;
/** Padding to apply around scale labels. */
padding: number | {
/** Padding on the (relative) top side of this axis label. */
color: Scriptable<Color, ScriptableScalePointLabelContext>;
/**
*/
- font: Scriptable<FontSpec, ScriptableScalePointLabelContext>;
+ font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableScalePointLabelContext>;
/**
* Callback function to transform data labels to point labels. The default implementation simply returns the current string.