import { Dictionary, TooltipRenderMode, ColorString, TooltipOrderMode, DimensionType, CommonTooltipOption } from '../../util/types.js';
|
import { TooltipMarkerType } from '../../util/format.js';
|
import SeriesModel from '../../model/Series.js';
|
import Model from '../../model/Model.js';
|
import { TooltipOption } from './TooltipModel.js';
|
/**
|
* This is an abstract layer to insulate the upper usage of tooltip content
|
* from the different backends according to different `renderMode` ('html' or 'richText').
|
* With the help of the abstract layer, it does not need to consider how to create and
|
* assemble html or richText snippets when making tooltip content.
|
*
|
* @usage
|
*
|
* ```ts
|
* class XxxSeriesModel {
|
* formatTooltip(
|
* dataIndex: number,
|
* multipleSeries: boolean,
|
* dataType: string
|
* ) {
|
* ...
|
* return createTooltipMarkup('section', {
|
* header: header,
|
* blocks: [
|
* createTooltipMarkup('nameValue', {
|
* name: name,
|
* value: value,
|
* noValue: value == null
|
* })
|
* ]
|
* });
|
* }
|
* }
|
* ```
|
*/
|
export declare type TooltipMarkupBlockFragment = TooltipMarkupSection | TooltipMarkupNameValueBlock;
|
interface TooltipMarkupBlock {
|
sortParam?: unknown;
|
}
|
export interface TooltipMarkupSection extends TooltipMarkupBlock {
|
type: 'section';
|
header?: unknown;
|
noHeader?: boolean;
|
blocks?: TooltipMarkupBlockFragment[];
|
sortBlocks?: boolean;
|
valueFormatter?: CommonTooltipOption<unknown>['valueFormatter'];
|
}
|
export interface TooltipMarkupNameValueBlock extends TooltipMarkupBlock {
|
type: 'nameValue';
|
markerType?: TooltipMarkerType;
|
markerColor?: ColorString;
|
name?: string;
|
value?: unknown | unknown[];
|
valueType?: DimensionType | DimensionType[];
|
noName?: boolean;
|
noValue?: boolean;
|
valueFormatter?: CommonTooltipOption<unknown>['valueFormatter'];
|
}
|
/**
|
* Create tooltip markup by this function, we can get TS type check.
|
*/
|
export declare function createTooltipMarkup(type: 'section', option: Omit<TooltipMarkupSection, 'type'>): TooltipMarkupSection;
|
export declare function createTooltipMarkup(type: 'nameValue', option: Omit<TooltipMarkupNameValueBlock, 'type'>): TooltipMarkupNameValueBlock;
|
declare type MarkupText = string;
|
/**
|
* @return markupText. null/undefined means no content.
|
*/
|
export declare function buildTooltipMarkup(fragment: TooltipMarkupBlockFragment, markupStyleCreator: TooltipMarkupStyleCreator, renderMode: TooltipRenderMode, orderMode: TooltipOrderMode, useUTC: boolean, toolTipTextStyle: TooltipOption['textStyle']): MarkupText;
|
export declare function retrieveVisualColorForTooltipMarker(series: SeriesModel, dataIndex: number): ColorString;
|
export declare function getPaddingFromTooltipModel(model: Model<TooltipOption>, renderMode: TooltipRenderMode): number | number[];
|
/**
|
* The major feature is generate styles for `renderMode: 'richText'`.
|
* But it also serves `renderMode: 'html'` to provide
|
* "renderMode-independent" API.
|
*/
|
export declare class TooltipMarkupStyleCreator {
|
readonly richTextStyles: Dictionary<Dictionary<unknown>>;
|
private _nextStyleNameId;
|
private _generateStyleName;
|
makeTooltipMarker(markerType: TooltipMarkerType, colorStr: ColorString, renderMode: TooltipRenderMode): string;
|
/**
|
* @usage
|
* ```ts
|
* const styledText = markupStyleCreator.wrapRichTextStyle([
|
* // The styles will be auto merged.
|
* {
|
* fontSize: 12,
|
* color: 'blue'
|
* },
|
* {
|
* padding: 20
|
* }
|
* ]);
|
* ```
|
*/
|
wrapRichTextStyle(text: string, styles: Dictionary<unknown> | Dictionary<unknown>[]): string;
|
}
|
export {};
|