|  | /* | 
|  | * Licensed to the Apache Software Foundation (ASF) under one | 
|  | * or more contributor license agreements.  See the NOTICE file | 
|  | * distributed with this work for additional information | 
|  | * regarding copyright ownership.  The ASF licenses this file | 
|  | * to you under the Apache License, Version 2.0 (the | 
|  | * "License"); you may not use this file except in compliance | 
|  | * with the License.  You may obtain a copy of the License at | 
|  | * | 
|  | *   http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, | 
|  | * software distributed under the License is distributed on an | 
|  | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | * KIND, either express or implied.  See the License for the | 
|  | * specific language governing permissions and limitations | 
|  | * under the License. | 
|  | */ | 
|  |  | 
|  | import ComponentModel from '../../model/Component'; | 
|  | import { | 
|  | ComponentOption, | 
|  | LabelOption, | 
|  | LineStyleOption, | 
|  | CommonTooltipOption, | 
|  | TooltipRenderMode, | 
|  | CallbackDataParams, | 
|  | TooltipOrderMode | 
|  | } from '../../util/types'; | 
|  | import {AxisPointerOption} from '../axisPointer/AxisPointerModel'; | 
|  |  | 
|  |  | 
|  | export type TopLevelFormatterParams = CallbackDataParams | CallbackDataParams[]; | 
|  |  | 
|  | export interface TooltipOption extends CommonTooltipOption<TopLevelFormatterParams>, ComponentOption { | 
|  | mainType?: 'tooltip' | 
|  |  | 
|  | axisPointer?: AxisPointerOption & { | 
|  | axis?: 'auto' | 'x' | 'y' | 'angle' | 'radius' | 
|  | crossStyle?: LineStyleOption & { | 
|  | // TODO | 
|  | textStyle?: LabelOption | 
|  | } | 
|  | } | 
|  | /** | 
|  | * If show popup content | 
|  | */ | 
|  | showContent?: boolean | 
|  | /** | 
|  | * Trigger only works on coordinate system. | 
|  | */ | 
|  | trigger?: 'item' | 'axis' | 'none' | 
|  |  | 
|  | displayMode?: 'single' | 'multipleByCoordSys'; | 
|  |  | 
|  | /** | 
|  | * 'auto': use html by default, and use non-html if `document` is not defined | 
|  | * 'html': use html for tooltip | 
|  | * 'richText': use canvas, svg, and etc. for tooltip | 
|  | */ | 
|  | renderMode?: 'auto' | TooltipRenderMode   // TODO richText renamed canvas? | 
|  |  | 
|  | /** | 
|  | * If append popup dom to document.body | 
|  | * Only available when renderMode is html | 
|  | */ | 
|  | appendToBody?: boolean | 
|  |  | 
|  | /** | 
|  | * specified class name of tooltip dom | 
|  | * Only available when renderMode is html | 
|  | */ | 
|  | className?: string | 
|  |  | 
|  | order?: TooltipOrderMode | 
|  | } | 
|  |  | 
|  | class TooltipModel extends ComponentModel<TooltipOption> { | 
|  | static type = 'tooltip' as const; | 
|  | type = TooltipModel.type; | 
|  |  | 
|  | static dependencies = ['axisPointer']; | 
|  |  | 
|  | static defaultOption: TooltipOption = { | 
|  | // zlevel: 0, | 
|  |  | 
|  | z: 60, | 
|  |  | 
|  | show: true, | 
|  |  | 
|  | // tooltip main content | 
|  | showContent: true, | 
|  |  | 
|  | // 'trigger' only works on coordinate system. | 
|  | // 'item' | 'axis' | 'none' | 
|  | trigger: 'item', | 
|  |  | 
|  | // 'click' | 'mousemove' | 'none' | 
|  | triggerOn: 'mousemove|click', | 
|  |  | 
|  | alwaysShowContent: false, | 
|  |  | 
|  | displayMode: 'single', // 'single' | 'multipleByCoordSys' | 
|  |  | 
|  | renderMode: 'auto', // 'auto' | 'html' | 'richText' | 
|  |  | 
|  | // whether restraint content inside viewRect. | 
|  | // If renderMode: 'richText', default true. | 
|  | // If renderMode: 'html', defaut false (for backward compat). | 
|  | confine: null, | 
|  |  | 
|  | showDelay: 0, | 
|  |  | 
|  | hideDelay: 100, | 
|  |  | 
|  | // Animation transition time, unit is second | 
|  | transitionDuration: 0.4, | 
|  |  | 
|  | enterable: false, | 
|  |  | 
|  | backgroundColor: '#fff', | 
|  |  | 
|  | // box shadow | 
|  | shadowBlur: 10, | 
|  | shadowColor: 'rgba(0, 0, 0, .2)', | 
|  | shadowOffsetX: 1, | 
|  | shadowOffsetY: 2, | 
|  |  | 
|  | // tooltip border radius, unit is px, default is 4 | 
|  | borderRadius: 4, | 
|  |  | 
|  | // tooltip border width, unit is px, default is 0 (no border) | 
|  | borderWidth: 1, | 
|  |  | 
|  | // Tooltip inside padding, default is 5 for all direction | 
|  | // Array is allowed to set up, right, bottom, left, same with css | 
|  | // The default value: See `tooltip/tooltipMarkup.ts#getPaddingFromTooltipModel`. | 
|  | padding: null, | 
|  |  | 
|  | // Extra css text | 
|  | extraCssText: '', | 
|  |  | 
|  | // axis indicator, trigger by axis | 
|  | axisPointer: { | 
|  | // default is line | 
|  | // legal values: 'line' | 'shadow' | 'cross' | 
|  | type: 'line', | 
|  |  | 
|  | // Valid when type is line, appoint tooltip line locate on which line. Optional | 
|  | // legal values: 'x' | 'y' | 'angle' | 'radius' | 'auto' | 
|  | // default is 'auto', chose the axis which type is category. | 
|  | // for multiply y axis, cartesian coord chose x axis, polar chose angle axis | 
|  | axis: 'auto', | 
|  |  | 
|  | animation: 'auto', | 
|  | animationDurationUpdate: 200, | 
|  | animationEasingUpdate: 'exponentialOut', | 
|  |  | 
|  | crossStyle: { | 
|  | color: '#999', | 
|  | width: 1, | 
|  | type: 'dashed', | 
|  |  | 
|  | // TODO formatter | 
|  | textStyle: {} | 
|  | } | 
|  |  | 
|  | // lineStyle and shadowStyle should not be specified here, | 
|  | // otherwise it will always override those styles on option.axisPointer. | 
|  | }, | 
|  | textStyle: { | 
|  | color: '#666', | 
|  | fontSize: 14 | 
|  | } | 
|  | }; | 
|  | } | 
|  |  | 
|  | export default TooltipModel; |