From 697ec7c2c8dfd163573088eac7eb69e89647ca3a Mon Sep 17 00:00:00 2001 From: Howard Zhang Date: Thu, 28 Mar 2024 00:08:51 +0800 Subject: [PATCH 01/10] feat: add new properties `tooltipSpec` and `tooltipActual` to tooltip event params --- .../vchart/src/component/tooltip/constant.ts | 9 + .../src/component/tooltip/interface/common.ts | 7 +- .../src/component/tooltip/processor/base.ts | 107 +++++++++- .../vchart/src/component/tooltip/tooltip.ts | 33 ++- .../tooltip}/utils/compose.ts | 17 +- .../tooltip}/utils/get-spec.ts | 14 +- .../src/component/tooltip/utils/get-value.ts | 84 ++++++++ .../src/component/tooltip/utils/index.ts | 3 + .../plugin/components/tooltip-handler/base.ts | 200 +++--------------- .../canvas/canvas-tooltip-handler.ts | 6 +- .../components/tooltip-handler/constants.ts | 8 - .../dom/dom-tooltip-handler.ts | 15 +- .../tooltip-handler/utils/common.ts | 87 +------- .../components/tooltip-handler/utils/index.ts | 4 +- 14 files changed, 292 insertions(+), 302 deletions(-) rename packages/vchart/src/{plugin/components/tooltip-handler => component/tooltip}/utils/compose.ts (94%) rename packages/vchart/src/{plugin/components/tooltip-handler => component/tooltip}/utils/get-spec.ts (95%) create mode 100644 packages/vchart/src/component/tooltip/utils/get-value.ts diff --git a/packages/vchart/src/component/tooltip/constant.ts b/packages/vchart/src/component/tooltip/constant.ts index 354192abdc..6b0a805761 100644 --- a/packages/vchart/src/component/tooltip/constant.ts +++ b/packages/vchart/src/component/tooltip/constant.ts @@ -1,4 +1,5 @@ import { PREFIX } from '../../constant'; +import type { ITooltipLineActual } from '../../typings'; export class TooltipHandlerType { static dom = `${PREFIX}_TOOLTIP_HANDLER_DOM`; // 模拟 enum @@ -6,3 +7,11 @@ export class TooltipHandlerType { } export const TOOLTIP_EL_CLASS_NAME = 'vchart-tooltip-element'; + +export const TOOLTIP_MAX_LINE_COUNT = 20; + +export const TOOLTIP_OTHERS_LINE = { + // TODO: i18n + key: '其他', + value: '...' +} as ITooltipLineActual; diff --git a/packages/vchart/src/component/tooltip/interface/common.ts b/packages/vchart/src/component/tooltip/interface/common.ts index 46e338f80f..f0b1b619dd 100644 --- a/packages/vchart/src/component/tooltip/interface/common.ts +++ b/packages/vchart/src/component/tooltip/interface/common.ts @@ -1,13 +1,18 @@ import type { DimensionEventParams } from '../../../event/events/dimension/interface'; import type { DimensionTooltipInfo, MarkTooltipInfo } from '../processor/interface'; -import type { Datum, IShowTooltipOption } from '../../../typings'; +import type { Datum, IShowTooltipOption, ITooltipActual } from '../../../typings'; import type { IComponent } from '../../interface'; +import type { ITooltipSpec } from './spec'; export type TooltipHandlerParams = DimensionEventParams & { /** 本次触发的 tooltip 是否只改变了位置 */ changePositionOnly?: boolean; /** tooltip 组件实例 */ tooltip: ITooltip; + /** 本次触发的 tooltip 对应的最终 spec(可能经过了一些补全) */ + tooltipSpec?: ITooltipSpec; + /** 本次触发的 tooltip 的显示数据 */ + tooltipActual?: ITooltipActual; }; export interface ITooltipActiveTypeAsKeys { diff --git a/packages/vchart/src/component/tooltip/processor/base.ts b/packages/vchart/src/component/tooltip/processor/base.ts index ac6f3038f9..c310a23a9b 100644 --- a/packages/vchart/src/component/tooltip/processor/base.ts +++ b/packages/vchart/src/component/tooltip/processor/base.ts @@ -1,7 +1,7 @@ -import { isValid } from '@visactor/vutils'; +import { isNil, isValid } from '@visactor/vutils'; import type { BaseEventParams } from '../../../event/interface'; -import type { TooltipActiveType, TooltipData } from '../../../typings'; -import type { TooltipHandlerParams } from '../interface'; +import type { ITooltipActual, ITooltipPattern, TooltipActiveType, TooltipData } from '../../../typings'; +import type { ITooltipSpec, TooltipHandlerParams } from '../interface'; // eslint-disable-next-line no-duplicate-imports import { TooltipResult } from '../interface/common'; import type { Tooltip } from '../tooltip'; @@ -12,11 +12,17 @@ import type { IDimensionData, IDimensionInfo } from '../../../event/events/dimen import { getPolarDimensionInfo } from '../../../event/events/dimension/util/polar'; import { getCartesianDimensionInfo } from '../../../event/events/dimension/util/cartesian'; import { isDiscrete } from '@visactor/vscale'; -import type { ICartesianSeries } from '../../../series/interface'; +import type { ICartesianSeries, ISeries } from '../../../series/interface'; +import { getTooltipSpecForShow } from '../utils/get-spec'; +import { getShowContent } from '../utils/compose'; +import { getTooltipPatternValue } from '../utils/get-value'; export abstract class BaseTooltipProcessor { readonly component: Tooltip; - activeType: TooltipActiveType; + abstract activeType: TooltipActiveType; + + protected _cacheViewSpec: ITooltipSpec | undefined; + protected _cacheActualTooltip: ITooltipActual | undefined; constructor(component: Tooltip) { this.component = component; @@ -32,14 +38,49 @@ export abstract class BaseTooltipProcessor { abstract getMouseEventData(params: BaseEventParams): MouseEventData; protected _showTooltipByHandler = (data: TooltipData | undefined, params: TooltipHandlerParams): TooltipResult => { + if (isNil(data)) { + return TooltipResult.failed; + } + + if (!params.changePositionOnly) { + this.clearCache(); + } + + // 更新 this._cacheViewSpec + this._updateViewSpec(params); + const spec = this._cacheViewSpec; + if (isNil(spec?.[this.activeType]) || spec.visible === false) { + return TooltipResult.failed; + } + params.tooltipSpec = spec; + + // 更新 this._cacheActualTooltip + this._updateActualTooltip(data, params); + params.tooltipActual = this._cacheActualTooltip; + + // 触发事件 this.component.event.emit(ChartEvent.tooltipShow, { ...params, tooltipData: data, activeType: this.activeType, tooltip: this.component } as TooltipEventParams); - if (this.component.tooltipHandler?.showTooltip && isValid(data)) { - return this.component.tooltipHandler.showTooltip(this.activeType, data, params) ?? TooltipResult.success; + + // 判断 tooltip 是否为空 + const { title, content } = this._cacheActualTooltip; + if (isNil(title?.key) && isNil(title?.value) && !content?.length) { + return TooltipResult.failed; + } + + // 显示 tooltip + let showTooltip; + if (spec.handler?.showTooltip) { + showTooltip = spec.handler.showTooltip.bind(spec.handler); + } else if (this.component.tooltipHandler?.showTooltip) { + showTooltip = this.component.tooltipHandler.showTooltip.bind(this.component.tooltipHandler); + } + if (showTooltip) { + return showTooltip(this.activeType, data, params) ?? TooltipResult.success; } return TooltipResult.failed; }; @@ -130,4 +171,56 @@ export abstract class BaseTooltipProcessor { return targetDimensionInfo; } + + /** + * 合成实际显示的 tooltip spec + * @param params + */ + protected _updateViewSpec(params: TooltipHandlerParams) { + const { changePositionOnly, model, dimensionInfo } = params; + if (!changePositionOnly || !this._cacheViewSpec) { + /** spec 预处理 */ + this._cacheViewSpec = getTooltipSpecForShow( + this.activeType, + this.component.getSpec(), + model as ISeries, + dimensionInfo + ); + } + } + + /** + * 合成 tooltip 内容 + * @param data + * @param params + * @param changePositionOnly + */ + protected _updateActualTooltip(data: TooltipData, params: TooltipHandlerParams) { + const pattern = this._cacheViewSpec[this.activeType] as ITooltipPattern; + const { changePositionOnly } = params; + + if (!changePositionOnly || !this._cacheActualTooltip) { + // 合成 tooltip 内容 + const tooltipContent = getShowContent(pattern, data, params); + + // 判断可见性 + const visible = isValid(tooltipContent) ? getTooltipPatternValue(pattern.visible, data, params) !== false : false; // 最终展示数据为 null 则不展示 + + this._cacheActualTooltip = { + ...tooltipContent, + visible, + activeType: pattern.activeType, + data + }; + + const { title, content } = this._cacheActualTooltip; + this._cacheActualTooltip.title = pattern.updateTitle?.(title, data, params) ?? title; + this._cacheActualTooltip.content = pattern.updateContent?.(content, data, params) ?? content; + } + } + + clearCache() { + this._cacheViewSpec = undefined; + this._cacheActualTooltip = undefined; + } } diff --git a/packages/vchart/src/component/tooltip/tooltip.ts b/packages/vchart/src/component/tooltip/tooltip.ts index 99e7983886..47bd105c98 100644 --- a/packages/vchart/src/component/tooltip/tooltip.ts +++ b/packages/vchart/src/component/tooltip/tooltip.ts @@ -92,6 +92,7 @@ export class Tooltip extends BaseComponent implements ITooltip { private _cacheInfo: TooltipInfo | undefined; private _cacheParams: BaseEventParams | undefined; + private _cacheActiveType: TooltipActiveType | undefined; private _eventList: EventHandlerList = []; @@ -256,6 +257,7 @@ export class Tooltip extends BaseComponent implements ITooltip { }); this._cacheInfo = undefined; this._cacheParams = undefined; + this._cacheActiveType = undefined; } }; @@ -348,12 +350,13 @@ export class Tooltip extends BaseComponent implements ITooltip { success = !processor.showTooltip(this._cacheInfo as any, params, true); } else { const tooltipInfo = mouseEventData.tooltipInfo[activeType]; - const isSameAsCache = this._isSameAsCache(tooltipInfo, params); + const isSameAsCache = this._isSameAsCache(tooltipInfo, params, activeType); success = !processor.showTooltip(tooltipInfo as any, params, isSameAsCache); if (success) { // 成功显示 tooltip,则更新缓存 this._cacheInfo = tooltipInfo; this._cacheParams = params; + this._cacheActiveType = activeType; } } if (success) { @@ -388,13 +391,28 @@ export class Tooltip extends BaseComponent implements ITooltip { // 如果当前 tooltip 未显示,则提前退出 return TooltipResult.success; } + + // 触发事件 this.event.emit(ChartEvent.tooltipHide, { ...params, source: Event_Source_Type.chart, // 统一 event 的来源 tooltip: this }); - if (this.tooltipHandler?.hideTooltip) { - const result = this.tooltipHandler.hideTooltip(params); + + // 删除缓存 + Object.values(this._processor).forEach((processor: BaseTooltipProcessor) => { + processor.clearCache(); + }); + + // 隐藏 tooltip + let hideTooltip; + if (this._spec.handler?.hideTooltip) { + hideTooltip = this._spec.handler.hideTooltip.bind(this._spec.handler); + } else if (this.tooltipHandler?.hideTooltip) { + hideTooltip = this.tooltipHandler.hideTooltip.bind(this.tooltipHandler); + } + if (hideTooltip) { + const result = hideTooltip(params); if (!result) { this._isTooltipShown = false; } @@ -446,7 +464,14 @@ export class Tooltip extends BaseComponent implements ITooltip { return !this._hideTooltipByHandler(params); } - private _isSameAsCache(nextInfo?: TooltipInfo, nextParams?: BaseEventParams): boolean { + private _isSameAsCache( + nextInfo?: TooltipInfo, + nextParams?: BaseEventParams, + nextActiveType?: TooltipActiveType + ): boolean { + if (nextActiveType !== this._cacheActiveType) { + return false; + } if (nextInfo === this._cacheInfo) { return true; } diff --git a/packages/vchart/src/plugin/components/tooltip-handler/utils/compose.ts b/packages/vchart/src/component/tooltip/utils/compose.ts similarity index 94% rename from packages/vchart/src/plugin/components/tooltip-handler/utils/compose.ts rename to packages/vchart/src/component/tooltip/utils/compose.ts index 82164a8a93..445f8332cd 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/utils/compose.ts +++ b/packages/vchart/src/component/tooltip/utils/compose.ts @@ -1,20 +1,15 @@ import { isValid, isNil, TimeUtil } from '@visactor/vutils'; -import type { - ITooltipLinePattern, - ITooltipPattern, - TooltipData, - ITooltipLineActual -} from '../../../../typings/tooltip'; +import type { ITooltipLinePattern, ITooltipPattern, TooltipData, ITooltipLineActual } from '../../../typings/tooltip'; import { getFirstDatumFromTooltipData, getTooltipContentPattern, getTooltipContentValue, getTooltipPatternValue -} from './common'; -import type { IDimensionData, IDimensionInfo } from '../../../../event/events/dimension/interface'; -import { TOOLTIP_MAX_LINE_COUNT, TOOLTIP_OTHERS_LINE } from '../constants'; -import { getTooltipActualActiveType } from '../../../../component/tooltip/utils'; -import type { TooltipActualTitleContent, TooltipHandlerParams } from '../../../../component/tooltip'; +} from './get-value'; +import type { IDimensionData, IDimensionInfo } from '../../../event'; +import { TOOLTIP_MAX_LINE_COUNT, TOOLTIP_OTHERS_LINE } from '../constant'; +import { getTooltipActualActiveType } from '.'; +import type { TooltipActualTitleContent, TooltipHandlerParams } from '..'; const getTimeString = (value: any, timeFormat?: string, timeFormatMode?: 'local' | 'utc') => { if (!timeFormat && !timeFormatMode) { diff --git a/packages/vchart/src/plugin/components/tooltip-handler/utils/get-spec.ts b/packages/vchart/src/component/tooltip/utils/get-spec.ts similarity index 95% rename from packages/vchart/src/plugin/components/tooltip-handler/utils/get-spec.ts rename to packages/vchart/src/component/tooltip/utils/get-spec.ts index 0f3c5b2dcd..39515eeaf0 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/utils/get-spec.ts +++ b/packages/vchart/src/component/tooltip/utils/get-spec.ts @@ -5,18 +5,18 @@ import type { MaybeArray, TooltipActiveType, TooltipPatternProperty -} from '../../../../typings'; -import type { ISeries } from '../../../../series/interface'; +} from '../../../typings'; +import type { ISeries } from '../../../series/interface'; import { mergeSpec } from '@visactor/vutils-extension'; -import { makeDefaultPattern } from './pattern'; -import type { IDimensionInfo } from '../../../../event/events/dimension/interface'; +import { makeDefaultPattern } from '../../../plugin/components/tooltip-handler/utils/pattern'; +import type { IDimensionInfo } from '../../../event/events/dimension/interface'; import { memoize, isValid, array, isFunction, isNil, cloneDeep } from '@visactor/vutils'; -import type { ITooltipSpec, ITooltipTheme } from '../../../../component/tooltip'; -import { getTooltipActualActiveType } from '../../../../component/tooltip/utils'; +import type { ITooltipSpec, ITooltipTheme } from '..'; +import { getTooltipActualActiveType } from '.'; import { addExtraInfoToTooltipContentPattern, addExtraInfoToTooltipTitlePattern -} from '../../../../series/base/tooltip-helper'; +} from '../../../series/base/tooltip-helper'; export const getTooltipSpecForShow = ( activeType: TooltipActiveType, diff --git a/packages/vchart/src/component/tooltip/utils/get-value.ts b/packages/vchart/src/component/tooltip/utils/get-value.ts new file mode 100644 index 0000000000..ff40159d7f --- /dev/null +++ b/packages/vchart/src/component/tooltip/utils/get-value.ts @@ -0,0 +1,84 @@ +import { array, isFunction, isNil } from '@visactor/vutils'; +import type { + Datum, + ITooltipLinePattern, + ITooltipPattern, + TooltipContentProperty, + TooltipData, + TooltipPatternProperty +} from '../../../typings'; +import type { TooltipHandlerParams } from '../interface'; +import { getFormatFunction } from '../../util'; +import type { IDimensionData, IDimensionInfo } from '../../../event'; + +export const getTooltipContentValue = ( + field?: TooltipContentProperty, + datum?: any, + params?: TooltipHandlerParams, + formatter?: string +): T | undefined => { + let value: T; + if (isFunction(field)) { + value = field(datum, params); + } else { + value = field; + } + + if (formatter) { + const { formatFunc, args } = getFormatFunction(undefined, formatter, field as string, datum); + if (formatFunc && args) { + value = formatFunc(...args); + } + } + + return value; +}; + +export const getTooltipPatternValue = ( + field?: TooltipPatternProperty, + data?: TooltipData, + params?: TooltipHandlerParams +): T | undefined => { + if (isNil(field)) { + return field; + } + if (isFunction(field)) { + return field(data, params); + } + return field; +}; + +export const getTooltipContentPattern = ( + field?: ITooltipPattern['content'], + data?: TooltipData, + params?: TooltipHandlerParams +): Array | undefined => { + if (isNil(field)) { + return field; + } + let result: ITooltipLinePattern[] = []; + array(field).forEach(patternItem => { + if (isFunction(patternItem)) { + result = result.concat(array(patternItem(data, params))); + } else { + result.push(patternItem as ITooltipLinePattern); + } + }); + return result; +}; + +export function getFirstDatumFromTooltipData(data: TooltipData): Datum { + // 找到第一个可用的datum + const dimInfoList: IDimensionInfo[] = (data as IDimensionData[])[0]?.series + ? [{ data: data as IDimensionData[], value: '' }] + : (data as IDimensionInfo[]); + for (const { data: dataList } of dimInfoList) { + for (const { datum: datumList } of dataList) { + for (const datumItem of datumList ?? []) { + if (datumItem) { + return datumItem; + } + } + } + } +} diff --git a/packages/vchart/src/component/tooltip/utils/index.ts b/packages/vchart/src/component/tooltip/utils/index.ts index 1e731a618d..8e7aa32455 100644 --- a/packages/vchart/src/component/tooltip/utils/index.ts +++ b/packages/vchart/src/component/tooltip/utils/index.ts @@ -1,2 +1,5 @@ export * from './show-tooltip'; export * from './common'; +export * from './get-spec'; +export * from './get-value'; +export * from './compose'; diff --git a/packages/vchart/src/plugin/components/tooltip-handler/base.ts b/packages/vchart/src/plugin/components/tooltip-handler/base.ts index 63b6c1a8b8..f6897161a5 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/base.ts +++ b/packages/vchart/src/plugin/components/tooltip-handler/base.ts @@ -12,14 +12,12 @@ import type { ITooltipActual, TooltipActiveType, ITooltipHandler, - ITooltipPattern, ITooltipPositionActual, IGlobalTooltipPositionPattern } from '../../../typings/tooltip'; // eslint-disable-next-line no-duplicate-imports import type { TooltipFixedPosition } from '../../../typings/tooltip'; -import type { BaseEventParams } from '../../../event/interface'; -import { getTooltipPatternValue, getScale } from './utils/common'; +import { getScale } from './utils/common'; import { getActualTooltipPositionValue, getCartesianCrosshairRect, @@ -28,9 +26,7 @@ import { isFixedTooltipPositionPattern, isGlobalTooltipPositionPattern } from './utils/position'; -import { getShowContent } from './utils/compose'; -import { getTooltipSpecForShow } from './utils/get-spec'; -import type { ICartesianSeries, ISeries } from '../../../series/interface'; +import type { ICartesianSeries } from '../../../series/interface'; import type { IGroup } from '@visactor/vrender-core'; import type { AABBBounds } from '@visactor/vutils'; // eslint-disable-next-line no-duplicate-imports @@ -50,34 +46,19 @@ import type { ILayoutModel } from '../../../model/interface'; import type { Compiler } from '../../../compile/compiler'; import type { IContainerSize } from '@visactor/vrender-components'; import { getTooltipAttributes } from './utils/attribute'; -import type { DimensionEventParams } from '../../../event/events/dimension/interface'; import type { IChartOption } from '../../../chart/interface'; -import type { - ITooltipSpec, - Tooltip, - TooltipActualTitleContent, - TooltipHandlerParams -} from '../../../component/tooltip'; +import type { ITooltipSpec, Tooltip, TooltipHandlerParams } from '../../../component/tooltip'; // eslint-disable-next-line no-duplicate-imports import { TooltipResult } from '../../../component/tooltip'; import type { IComponentPlugin, IComponentPluginService } from '../interface'; import { BasePlugin } from '../../base/base-plugin'; import type { ITooltipAttributes } from './interface'; import { getFirstSeries } from '../../../util'; +import { getTooltipPatternValue } from '../../../component/tooltip/utils'; -type ChangeTooltipFunc = ( - visible: boolean, - params: TooltipHandlerParams, - changePositionOnly?: boolean, - activeType?: TooltipActiveType, - data?: TooltipData -) => TooltipResult; +type ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => TooltipResult; -type ChangeTooltipPositionFunc = ( - changePositionOnly: boolean, - data: TooltipData, - params: TooltipHandlerParams -) => TooltipResult; +type ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => TooltipResult; /** * The tooltip handler class. @@ -108,9 +89,6 @@ export abstract class BaseTooltipHandler extends BasePlugin implements ITooltipH protected _chartContainer: Maybe; protected _compiler: Compiler; - protected _cacheViewSpec: ITooltipSpec | undefined; - protected _cacheActualTooltip: ITooltipActual | undefined; - protected _isTooltipPaused: boolean; protected _isPointerEscaped: boolean; protected _cachePointerTimer: number; @@ -135,16 +113,12 @@ export abstract class BaseTooltipHandler extends BasePlugin implements ITooltipH } showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => { - let changePositionOnly = !!params.changePositionOnly; - if (!params.changePositionOnly || this._cacheActualTooltip?.activeType !== activeType) { - changePositionOnly = false; - this._clearCacheOfContent(); - } + const { changePositionOnly } = params; - if (changePositionOnly && this._cacheViewSpec && this._cacheActualTooltip) { - return this.changeTooltipPosition(changePositionOnly, data, params); + if (changePositionOnly) { + return this.changeTooltipPosition(params, data); } - return this.changeTooltip(true, params, changePositionOnly, activeType, data); + return this.changeTooltip(true, params, data); }; /** 改变 tooltip 内容和位置(带 throttle 版本),返回是否遇到异常 */ @@ -154,101 +128,35 @@ export abstract class BaseTooltipHandler extends BasePlugin implements ITooltipH protected _changeTooltip: ChangeTooltipFunc = ( visible: boolean, params: TooltipHandlerParams, - changePositionOnly?: boolean, - activeType?: TooltipActiveType, data?: TooltipData ) => { - const tooltipSpec = this._component.getSpec() as ITooltipSpec; - if (this._isReleased || !tooltipSpec) { + if (this._isReleased) { return TooltipResult.failed; } - /** 关闭 tooltip */ if (!visible) { this._clearAllCache(); - - /** 用户自定义逻辑 */ - if (tooltipSpec.handler) { - return tooltipSpec.handler.hideTooltip?.(params) ?? TooltipResult.success; - } - /** 默认逻辑 */ + /** 关闭 tooltip */ this._updateTooltip(false, params); return TooltipResult.success; } - if (isNil(activeType) || isNil(data)) { - return TooltipResult.failed; - } - - /** spec 预处理 */ - let spec: ITooltipSpec | undefined; - if (changePositionOnly && this._cacheViewSpec) { - spec = this._cacheViewSpec; - } else { - spec = getTooltipSpecForShow( - activeType!, - tooltipSpec, - (params as BaseEventParams).model as ISeries, - (params as DimensionEventParams).dimensionInfo - ); - this._cacheViewSpec = spec; - } - - if (spec.visible === false) { - return TooltipResult.failed; - } - - /** 用户自定义逻辑 */ - if (spec.handler) { - return spec.handler.showTooltip?.(activeType!, data!, params) ?? TooltipResult.success; - } - - /** 默认逻辑 */ - const pattern = spec[activeType!] as ITooltipPattern; - if (!pattern) { - return TooltipResult.failed; - } - - // 合成 tooltip 内容 - let actualTooltip: ITooltipActual | undefined; - if (changePositionOnly && this._cacheActualTooltip) { - actualTooltip = this._cacheActualTooltip; - } else { - actualTooltip = this._getActualTooltipContent(pattern, data!, params); - actualTooltip.title = pattern.updateTitle?.(actualTooltip.title, data, params) ?? actualTooltip.title; - actualTooltip.content = pattern.updateContent?.(actualTooltip.content, data, params) ?? actualTooltip.content; - } - - // 判断 tooltip 是否为空 - if (isNil(actualTooltip.title?.key) && isNil(actualTooltip.title?.value) && !actualTooltip.content?.length) { - return TooltipResult.failed; - } - - this._cacheActualTooltip = actualTooltip; - return this._changeTooltipPosition(!!changePositionOnly, data!, params); + return this._changeTooltipPosition(params, data); }; /** 改变 tooltip 位置(带 throttle 版本),返回是否遇到异常 */ protected changeTooltipPosition: ChangeTooltipPositionFunc; /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */ - protected _changeTooltipPosition: ChangeTooltipPositionFunc = ( - changePositionOnly: boolean, - data: TooltipData, - params: TooltipHandlerParams - ) => { + protected _changeTooltipPosition: ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => { if (this._isReleased) { return TooltipResult.failed; } const event = params.event as MouseEvent; - const spec = this._cacheViewSpec; - const actualTooltip = this._cacheActualTooltip; - if (!spec || !actualTooltip) { - return TooltipResult.failed; - } + const { tooltipSpec, tooltipActual, changePositionOnly } = params; - if (spec.enterable) { + if (tooltipSpec.enterable) { if (!this._isPointerEscaped && this._isPointerMovingToTooltip(params)) { if (!this._isTooltipPaused) { this._isTooltipPaused = true; @@ -264,28 +172,28 @@ export abstract class BaseTooltipHandler extends BasePlugin implements ITooltipH this._cachePointerPosition = this._getPointerPositionRelativeToTooltipParent(params); } - const activeType = actualTooltip.activeType; + const activeType = tooltipActual.activeType; /** 用户自定义逻辑 */ - if (spec.handler) { - return spec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success; + if (tooltipSpec.handler) { + return tooltipSpec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success; } /** 默认逻辑 */ - const pattern = spec[activeType]; + const pattern = tooltipSpec[activeType]; if (!pattern) { return TooltipResult.failed; } // 计算 tooltip 位置 const position = this._getActualTooltipPosition( - actualTooltip, + tooltipActual, params, - this._getTooltipBoxSize(actualTooltip, changePositionOnly) + this._getTooltipBoxSize(tooltipActual, changePositionOnly) ); - actualTooltip.position = position; + tooltipActual.position = position; if (pattern.updatePosition) { - actualTooltip.position = pattern.updatePosition(actualTooltip.position, data, params); + tooltipActual.position = pattern.updatePosition(tooltipActual.position, data, params); } // 判断 tooltip 可见性 @@ -293,20 +201,16 @@ export abstract class BaseTooltipHandler extends BasePlugin implements ITooltipH if ( !data || event.type === 'pointerout' || - !actualTooltip.visible || - (!actualTooltip.title && !actualTooltip.content) + !tooltipActual.visible || + (!tooltipActual.title && !tooltipActual.content) ) { tooltipVisible = false; } - this._updateTooltip( - tooltipVisible, - { - ...params, - changePositionOnly - }, - actualTooltip - ); + this._updateTooltip(tooltipVisible, { + ...params, + changePositionOnly + }); return TooltipResult.success; }; @@ -329,16 +233,6 @@ export abstract class BaseTooltipHandler extends BasePlugin implements ITooltipH } protected _clearAllCache() { - this._clearCacheOfContent(); - this._clearCacheOfPosition(); - } - - protected _clearCacheOfContent() { - this._cacheViewSpec = undefined; - this._cacheActualTooltip = undefined; - } - - protected _clearCacheOfPosition() { this._isTooltipPaused = false; this._isPointerEscaped = false; clearTimeout(this._cachePointerTimer); @@ -350,7 +244,7 @@ export abstract class BaseTooltipHandler extends BasePlugin implements ITooltipH /* -----需要子类继承的方法开始----- */ - protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams, domData?: ITooltipActual): void; + protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams): void; protected abstract _removeTooltip(): void; /* -----需要子类继承的方法结束----- */ @@ -379,34 +273,6 @@ export abstract class BaseTooltipHandler extends BasePlugin implements ITooltipH }; } - /** - * 计算实际的 tooltip 内容 - * @param pattern - * @param data - * @param event - */ - protected _getActualTooltipContent = ( - pattern: ITooltipPattern, - data: TooltipData, - params: TooltipHandlerParams - ): ITooltipActual => { - // 可见性 - const patternVisible = getTooltipPatternValue(pattern.visible, data, params); - - // 数据 - let tooltipContent: TooltipActualTitleContent | null = null; - tooltipContent = getShowContent(pattern, data, params); - - const actualTooltip: ITooltipActual = { - ...tooltipContent, - visible: isValid(tooltipContent) ? patternVisible !== false : false, // 最终展示数据为 null 则不展示 - activeType: pattern.activeType, - data - }; - - return actualTooltip; - }; - /** * 计算实际的 tooltip 位置 */ @@ -416,6 +282,7 @@ export abstract class BaseTooltipHandler extends BasePlugin implements ITooltipH tooltipBoxSize: IContainerSize | undefined ): ITooltipPositionActual => { const event = params.event as MouseEvent; + const { tooltipSpec } = params; const firstDimensionInfo = params.dimensionInfo?.[0]; const invalidPosition = { @@ -424,7 +291,6 @@ export abstract class BaseTooltipHandler extends BasePlugin implements ITooltipH }; let { offsetX, offsetY } = this._option; - const tooltipSpec = this._cacheViewSpec; if (!tooltipSpec) { this._cacheTooltipPosition = undefined; return invalidPosition; @@ -831,13 +697,13 @@ export abstract class BaseTooltipHandler extends BasePlugin implements ITooltipH protected _getPointerPositionRelativeToTooltipParent(params: TooltipHandlerParams) { let { canvasX: x, canvasY: y } = params.event; + const { tooltipSpec } = params; const invalidPosition = { x: Infinity, y: Infinity }; - const tooltipSpec = this._cacheViewSpec; const isCanvas = tooltipSpec.renderMode === 'canvas'; const tooltipParentElement = this._getParentElement(tooltipSpec); diff --git a/packages/vchart/src/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.ts b/packages/vchart/src/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.ts index b8e7efce09..ea9c375808 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.ts +++ b/packages/vchart/src/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.ts @@ -1,5 +1,4 @@ import type { ILayer, INode, Stage } from '@visactor/vrender-core'; -import type { ITooltipActual } from '../../../../typings/tooltip'; import { BaseTooltipHandler } from '../base'; import { Tooltip as TooltipComponent } from '@visactor/vrender-components'; import { isValid } from '@visactor/vutils'; @@ -64,7 +63,7 @@ export class CanvasTooltipHandler extends BaseTooltipHandler { this._attributes = null; } - protected _updateTooltip(visible: boolean, params: TooltipHandlerParams, actualTooltip: ITooltipActual) { + protected _updateTooltip(visible: boolean, params: TooltipHandlerParams) { this._visible = visible; const stage = this._compiler.getStage(); @@ -86,7 +85,8 @@ export class CanvasTooltipHandler extends BaseTooltipHandler { this._initTooltipComponent(stage); } - const pos = actualTooltip?.position; + const { tooltipActual } = params; + const pos = tooltipActual.position; if (!params.changePositionOnly) { this._tooltipComponent.setAttributes({ ...this._attributes, diff --git a/packages/vchart/src/plugin/components/tooltip-handler/constants.ts b/packages/vchart/src/plugin/components/tooltip-handler/constants.ts index 41fcbb5f04..7fae21d61d 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/constants.ts +++ b/packages/vchart/src/plugin/components/tooltip-handler/constants.ts @@ -1,16 +1,8 @@ -import type { ITooltipLineActual } from '../../../typings'; import { escapeHTML } from './utils/common'; export const TOOLTIP_CONTAINER_EL_CLASS_NAME = 'vchart-tooltip-container'; -export const TOOLTIP_MAX_LINE_COUNT = 20; export const TOOLTIP_EMPTY_STRING = ''; -export const TOOLTIP_OTHERS_LINE = { - // TODO: i18n - key: '其他', - value: '...' -} as ITooltipLineActual; - export const DEFAULT_OPTIONS = { /** * X offset. diff --git a/packages/vchart/src/plugin/components/tooltip-handler/dom/dom-tooltip-handler.ts b/packages/vchart/src/plugin/components/tooltip-handler/dom/dom-tooltip-handler.ts index 670a360882..cc95ec5170 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/dom/dom-tooltip-handler.ts +++ b/packages/vchart/src/plugin/components/tooltip-handler/dom/dom-tooltip-handler.ts @@ -87,13 +87,14 @@ export class DomTooltipHandler extends BaseTooltipHandler { this._container = null; } - protected _updateTooltip(visible: boolean, params: TooltipHandlerParams, actualTooltip: ITooltipActual) { + protected _updateTooltip(visible: boolean, params: TooltipHandlerParams) { + const { tooltipActual, tooltipSpec } = params; if (!visible || !this.model) { this.setVisibility(visible); this._cacheCustomTooltipPosition = undefined; } else { if (!params.changePositionOnly) { - this._tooltipActual = actualTooltip; + this._tooltipActual = tooltipActual; this._initStyle(); const firstInit = !this.model.product; @@ -109,14 +110,14 @@ export class DomTooltipHandler extends BaseTooltipHandler { // 位置 const el = this.model.product; if (el) { - const { x = 0, y = 0 } = actualTooltip.position ?? {}; - if (this._cacheViewSpec?.updateElement) { + const { x = 0, y = 0 } = tooltipActual.position ?? {}; + if (tooltipSpec.updateElement) { // 此处先设定一次位置,防止页面暂时出现滚动条(优先设置上次的位置) this._updatePosition(this._cacheCustomTooltipPosition ?? { x, y }); // 更新 tooltip dom - this._cacheViewSpec.updateElement(el, actualTooltip, params); + tooltipSpec.updateElement(el, tooltipActual, params); // 重新计算 tooltip 位置 - const position = this._getActualTooltipPosition(actualTooltip, params, { + const position = this._getActualTooltipPosition(tooltipActual, params, { width: el.offsetWidth, height: el.offsetHeight }); @@ -158,7 +159,7 @@ export class DomTooltipHandler extends BaseTooltipHandler { protected _initEvent(el: HTMLElement) { el.addEventListener('pointerleave', event => { - const { renderMode, enterable } = this._cacheViewSpec; + const { renderMode, enterable } = this._component.getSpec(); const relatedTarget = event.relatedTarget as HTMLElement; if (renderMode === 'html' && enterable) { if ( diff --git a/packages/vchart/src/plugin/components/tooltip-handler/utils/common.ts b/packages/vchart/src/plugin/components/tooltip-handler/utils/common.ts index 4158875177..a280ca1a00 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/utils/common.ts +++ b/packages/vchart/src/plugin/components/tooltip-handler/utils/common.ts @@ -1,14 +1,5 @@ -import type { Datum } from '@visactor/vgrammar-core'; -import type { - ITooltipLinePattern, - ITooltipPattern, - MaybeArray, - TooltipContentProperty, - TooltipData, - TooltipPatternProperty -} from '../../../../typings'; -import { isFunction, isObject, isString, isNil, array } from '@visactor/vutils'; -import type { IDimensionData, IDimensionInfo } from '../../../../event/events/dimension'; +import type { MaybeArray } from '../../../../typings'; +import { isObject, isString } from '@visactor/vutils'; import type { IRichTextParagraphCharacter } from '@visactor/vrender-core'; // eslint-disable-next-line no-duplicate-imports import { getRichTextBounds } from '@visactor/vrender-core'; @@ -16,8 +7,6 @@ import type { ITooltipTextStyle } from '../interface/style'; import type { TooltipRichTextAttrs } from '@visactor/vrender-components'; // eslint-disable-next-line no-duplicate-imports import type { IRichTextCharacter } from '@visactor/vrender-core'; -import type { TooltipHandlerParams } from '../../../../component/tooltip'; -import { getFormatFunction } from '../../../../component/util'; interface IGradientColor { [key: string]: any; @@ -41,78 +30,6 @@ export function escapeHTML(value: any): string { .replace(/ /g, '  '); // 转义符和真空格夹杂,在转义和正常换行之间取得平衡 } -export const getTooltipContentValue = ( - field?: TooltipContentProperty, - datum?: any, - params?: TooltipHandlerParams, - formatter?: string -): T | undefined => { - let value: T; - if (isFunction(field)) { - value = field(datum, params); - } else { - value = field; - } - - if (formatter) { - const { formatFunc, args } = getFormatFunction(undefined, formatter, field as string, datum); - if (formatFunc && args) { - value = formatFunc(...args); - } - } - - return value; -}; - -export const getTooltipPatternValue = ( - field?: TooltipPatternProperty, - data?: TooltipData, - params?: TooltipHandlerParams -): T | undefined => { - if (isNil(field)) { - return field; - } - if (isFunction(field)) { - return field(data, params); - } - return field; -}; - -export const getTooltipContentPattern = ( - field?: ITooltipPattern['content'], - data?: TooltipData, - params?: TooltipHandlerParams -): Array | undefined => { - if (isNil(field)) { - return field; - } - let result: ITooltipLinePattern[] = []; - array(field).forEach(patternItem => { - if (isFunction(patternItem)) { - result = result.concat(array(patternItem(data, params))); - } else { - result.push(patternItem as ITooltipLinePattern); - } - }); - return result; -}; - -export function getFirstDatumFromTooltipData(data: TooltipData): Datum { - // 找到第一个可用的datum - const dimInfoList: IDimensionInfo[] = (data as IDimensionData[])[0]?.series - ? [{ data: data as IDimensionData[], value: '' }] - : (data as IDimensionInfo[]); - for (const { data: dataList } of dimInfoList) { - for (const { datum: datumList } of dataList) { - for (const datumItem of datumList ?? []) { - if (datumItem) { - return datumItem; - } - } - } - } -} - export function pickFirstValidValue(isValid: (element?: T) => any, ...elements: T[]): T | undefined { for (const ele of elements) { if (isValid(ele)) { diff --git a/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts b/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts index f1084d8835..a5a268950d 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts +++ b/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts @@ -1,6 +1,6 @@ export * from './common'; -export * from './compose'; +export * from '../../../../component/tooltip/utils/compose'; export * from './pattern'; -export * from './get-spec'; +export * from '../../../../component/tooltip/utils/get-spec'; export * from './position'; export * from './attribute'; From e03d51df546f35a6cf23f927eb5a321df836b58c Mon Sep 17 00:00:00 2001 From: Howard Zhang Date: Thu, 28 Mar 2024 00:10:00 +0800 Subject: [PATCH 02/10] chore: update changelog --- .../vchart/feat-tooltip-actual_2024-03-27-16-09.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 common/changes/@visactor/vchart/feat-tooltip-actual_2024-03-27-16-09.json diff --git a/common/changes/@visactor/vchart/feat-tooltip-actual_2024-03-27-16-09.json b/common/changes/@visactor/vchart/feat-tooltip-actual_2024-03-27-16-09.json new file mode 100644 index 0000000000..c04cece4fe --- /dev/null +++ b/common/changes/@visactor/vchart/feat-tooltip-actual_2024-03-27-16-09.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@visactor/vchart", + "comment": "feat: add new properties `tooltipSpec` and `tooltipActual` to tooltip event params, related #2454", + "type": "none" + } + ], + "packageName": "@visactor/vchart" +} \ No newline at end of file From 72fc03a1ef0351571f1bc2fcbd6eef0000a19dc6 Mon Sep 17 00:00:00 2001 From: Howard Zhang Date: Thu, 28 Mar 2024 10:46:23 +0800 Subject: [PATCH 03/10] fix: fix eslint problems --- packages/vchart/src/component/tooltip/utils/get-value.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vchart/src/component/tooltip/utils/get-value.ts b/packages/vchart/src/component/tooltip/utils/get-value.ts index ff40159d7f..5621a178cc 100644 --- a/packages/vchart/src/component/tooltip/utils/get-value.ts +++ b/packages/vchart/src/component/tooltip/utils/get-value.ts @@ -81,4 +81,5 @@ export function getFirstDatumFromTooltipData(data: TooltipData): Datum { } } } + return undefined; } From c4e31797e2a739733071b347abe49a5547ba0732 Mon Sep 17 00:00:00 2001 From: Howard Zhang Date: Thu, 28 Mar 2024 11:07:20 +0800 Subject: [PATCH 04/10] fix: remove exports --- .../vchart/src/plugin/components/tooltip-handler/utils/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts b/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts index a5a268950d..d4ea4ee97a 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts +++ b/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts @@ -1,6 +1,4 @@ export * from './common'; -export * from '../../../../component/tooltip/utils/compose'; export * from './pattern'; -export * from '../../../../component/tooltip/utils/get-spec'; export * from './position'; export * from './attribute'; From c847ba440b92198807966d2b1efddc4825f517e6 Mon Sep 17 00:00:00 2001 From: Howard Zhang Date: Fri, 12 Apr 2024 16:57:34 +0800 Subject: [PATCH 05/10] feat: add `othersLine` to customize the the "Others" line content displayed after the tooltip content exceeds the maximum number of displayed lines --- common/config/rush/pnpm-lock.yaml | 356 +++++++++--------- .../runtime/browser/test-page/bar.ts | 9 + .../src/component/tooltip/utils/compose.ts | 10 +- .../vchart/src/typings/tooltip/tooltip.ts | 3 + 4 files changed, 198 insertions(+), 180 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index f890719da3..5700122ebe 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: vite: 3.2.6 yargs: ^17.1.1 dependencies: - '@arco-design/web-react': 2.46.1_jpxe6q6pjdlfydiod746fxru2y + '@arco-design/web-react': 2.46.1_ckivqqo7ufwu2ua5a43uu5bovu '@visactor/openinula-vchart': link:../packages/openinula-vchart '@visactor/react-vchart': link:../packages/react-vchart '@visactor/vchart': link:../packages/vchart @@ -62,7 +62,7 @@ importers: buble: 0.20.0 highlight.js: 11.9.0 markdown-it: 13.0.2 - openinula: 0.1.2-SNAPSHOT + openinula: 0.1.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-router-dom: 6.9.0_biqbaboplfbrettd7655fr4n2y @@ -73,8 +73,8 @@ importers: '@types/buble': 0.20.5 '@types/highlightjs': 9.12.6 '@types/markdown-it': 13.0.7 - '@types/react': 18.2.73 - '@types/react-dom': 18.2.23 + '@types/react': 18.2.77 + '@types/react-dom': 18.2.25 '@vitejs/plugin-react': 3.1.0_vite@3.2.6 canvas: 2.11.2 chalk: 3.0.0 @@ -169,7 +169,7 @@ importers: '@rollup/plugin-typescript': 11.1.0_3riap2emcx3rezd3j6fqob2ipq '@rushstack/eslint-patch': 1.1.4 '@types/jest': 26.0.24 - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/offscreencanvas': 2019.6.4 '@types/react-is': 17.0.7 '@vitejs/plugin-react': 3.1.0_vite@3.2.6 @@ -180,12 +180,12 @@ importers: eslint-plugin-prettier: 4.2.1_ohknqdiadpdc4n44qqsbqlxxwa eslint-plugin-react: 7.30.1_eslint@8.18.0 jest: 26.6.3 - openinula: 0.1.2-SNAPSHOT + openinula: 0.1.3 rollup: 3.20.5 ts-jest: 26.5.6_xuote2qreek47x2di7kesslrai tslib: 2.3.1 typescript: 4.9.5 - vite: 3.2.6_@types+node@20.12.2 + vite: 3.2.6_@types+node@20.12.7 ../../packages/react-vchart: specifiers: @@ -235,10 +235,10 @@ importers: '@rollup/plugin-typescript': 11.1.0_3riap2emcx3rezd3j6fqob2ipq '@rushstack/eslint-patch': 1.1.4 '@types/jest': 26.0.24 - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/offscreencanvas': 2019.6.4 - '@types/react': 18.2.73 - '@types/react-dom': 18.2.23 + '@types/react': 18.2.77 + '@types/react-dom': 18.2.25 '@types/react-is': 17.0.7 '@vitejs/plugin-react': 3.1.0_vite@3.2.6 eslint: 8.18.0 @@ -254,7 +254,7 @@ importers: ts-jest: 26.5.6_xuote2qreek47x2di7kesslrai tslib: 2.3.1 typescript: 4.9.5 - vite: 3.2.6_@types+node@20.12.2 + vite: 3.2.6_@types+node@20.12.7 ../../packages/taro-vchart: specifiers: @@ -322,7 +322,7 @@ importers: '@tarojs/runtime': 3.3.17 '@tarojs/taro': 3.3.17 '@tarojs/webpack-runner': 3.3.17 - '@types/react': 18.2.73 + '@types/react': 18.2.77 '@types/webpack-env': 1.18.4 '@typescript-eslint/eslint-plugin': 5.30.0_cow5zg7tx6c3eisi5a4ud5kwia '@typescript-eslint/parser': 5.30.0_vwud3sodsb5zxmzckoj7rdwdbq @@ -429,7 +429,7 @@ importers: '@rushstack/eslint-patch': 1.1.4 '@size-limit/file': 9.0.0_size-limit@9.0.0 '@types/jest': 26.0.24 - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/offscreencanvas': 2019.6.4 canvas: 2.11.2 d3-array: 1.2.4 @@ -457,11 +457,11 @@ importers: size-limit: 9.0.0 ts-jest: 26.5.6_xuote2qreek47x2di7kesslrai ts-loader: 8.0.2_typescript@4.9.5 - ts-node: 10.9.0_ffz2ghqtf4s7ni5ise425eb3va + ts-node: 10.9.0_misjo77sqtw74jgpkxp7bulu2q tslib: 2.3.1 tslint: 5.12.1_typescript@4.9.5 typescript: 4.9.5 - vite: 3.2.6_@types+node@20.12.2 + vite: 3.2.6_@types+node@20.12.7 ../../packages/vchart-schema: specifiers: @@ -489,7 +489,7 @@ importers: jest-electron: 0.1.12_jest@26.6.3 semver: 7.3.4 ts-jest: 26.5.6_jest@26.6.3 - ts-json-schema-generator: 1.5.0 + ts-json-schema-generator: 1.5.1 ../../packages/vchart-types: specifiers: @@ -544,7 +544,7 @@ importers: '@internal/ts-config': link:../../share/ts-config '@rushstack/eslint-patch': 1.1.4 '@types/jest': 26.0.24 - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/offscreencanvas': 2019.6.4 eslint: 8.18.0 husky: 7.0.4 @@ -556,11 +556,11 @@ importers: react-device-detect: 2.2.3 ts-jest: 26.5.6_xuote2qreek47x2di7kesslrai ts-loader: 8.0.2_typescript@4.9.5 - ts-node: 10.9.0_ffz2ghqtf4s7ni5ise425eb3va + ts-node: 10.9.0_misjo77sqtw74jgpkxp7bulu2q tslib: 2.3.1 tslint: 5.12.1_typescript@4.9.5 typescript: 4.9.5 - vite: 3.2.6_@types+node@20.12.2 + vite: 3.2.6_@types+node@20.12.7 ../../packages/wx-vchart: specifiers: @@ -758,7 +758,7 @@ importers: '@types/merge2': 1.4.0 '@types/minimist': 1.2.2 '@types/ms': 0.7.31 - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/semver': 7.3.12 '@types/terser': 3.12.0 '@types/through2': 2.0.38 @@ -767,7 +767,7 @@ importers: '@types/yargs-parser': 21.0.0 eslint: 8.18.0 rimraf: 3.0.2 - ts-node: 10.9.0_ffz2ghqtf4s7ni5ise425eb3va + ts-node: 10.9.0_misjo77sqtw74jgpkxp7bulu2q typescript: 4.9.5 vitest: 0.30.1_less@4.1.3+terser@5.17.1 @@ -807,7 +807,7 @@ importers: '@internal/ts-config': link:../../share/ts-config '@rushstack/eslint-patch': 1.1.4 '@types/jest': 26.0.24 - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@typescript-eslint/eslint-plugin': 5.30.0_cow5zg7tx6c3eisi5a4ud5kwia '@typescript-eslint/parser': 5.30.0_vwud3sodsb5zxmzckoj7rdwdbq cross-env: 7.0.3 @@ -815,10 +815,10 @@ importers: jest: 26.6.3_ts-node@10.9.0 prettier: 2.6.1 ts-jest: 26.5.6_xuote2qreek47x2di7kesslrai - ts-node: 10.9.0_ffz2ghqtf4s7ni5ise425eb3va + ts-node: 10.9.0_misjo77sqtw74jgpkxp7bulu2q tslint-config-prettier: 1.18.0 typescript: 4.9.5 - vite: 3.2.6_@types+node@20.12.2 + vite: 3.2.6_@types+node@20.12.7 ../../tools/typescript-json-schema: specifiers: @@ -841,11 +841,11 @@ importers: yargs: ^17.1.1 dependencies: '@types/json-schema': 7.0.15 - '@types/node': 20.12.2 + '@types/node': 20.12.7 glob: 7.2.3 path-equal: 1.2.5 safe-stable-stringify: 2.4.3 - ts-node: 10.9.0_ffz2ghqtf4s7ni5ise425eb3va + ts-node: 10.9.0_misjo77sqtw74jgpkxp7bulu2q typescript: 4.9.5 yargs: 17.7.2 devDependencies: @@ -878,7 +878,7 @@ packages: color: 3.2.1 dev: false - /@arco-design/web-react/2.46.1_jpxe6q6pjdlfydiod746fxru2y: + /@arco-design/web-react/2.46.1_ckivqqo7ufwu2ua5a43uu5bovu: resolution: {integrity: sha512-XjG44rODJklDu++OApvxjt/TbRrgkNqVq6grt/H+9skysm46jFn2SwhuSljBHmjo11LtIeB1m/OMPMaFtafeYg==} peerDependencies: react: '>=16' @@ -894,7 +894,7 @@ packages: number-precision: 1.6.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-focus-lock: 2.11.2_glxuhseaxnynb3wl34vdbiopru + react-focus-lock: 2.11.2_332exdt4eernuwtnyroj5m63py react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y resize-observer-polyfill: 1.5.1 scroll-into-view-if-needed: 2.2.20 @@ -916,8 +916,8 @@ packages: '@babel/highlight': 7.24.2 picocolors: 1.0.0 - /@babel/compat-data/7.24.1: - resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} + /@babel/compat-data/7.24.4: + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} /@babel/core/7.20.12: @@ -929,8 +929,8 @@ packages: '@babel/generator': 7.21.1 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-module-transforms': 7.23.3_@babel+core@7.20.12 - '@babel/helpers': 7.24.1 - '@babel/parser': 7.24.1 + '@babel/helpers': 7.24.4 + '@babel/parser': 7.24.4 '@babel/template': 7.24.0 '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 @@ -961,8 +961,8 @@ packages: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - /@babel/generator/7.24.1: - resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} + /@babel/generator/7.24.4: + resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 @@ -986,14 +986,14 @@ packages: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.24.1 + '@babel/compat-data': 7.24.4 '@babel/helper-validator-option': 7.23.5 browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin/7.24.1_@babel+core@7.20.12: - resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} + /@babel/helper-create-class-features-plugin/7.24.4_@babel+core@7.20.12: + resolution: {integrity: sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1174,8 +1174,8 @@ packages: '@babel/template': 7.24.0 '@babel/types': 7.24.0 - /@babel/helpers/7.24.1: - resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} + /@babel/helpers/7.24.4: + resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.24.0 @@ -1201,8 +1201,8 @@ packages: js-tokens: 4.0.0 picocolors: 1.0.0 - /@babel/parser/7.24.1: - resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} + /@babel/parser/7.24.4: + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} engines: {node: '>=6.0.0'} hasBin: true @@ -1246,7 +1246,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.24.1_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.24.4_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.24.0 dev: true @@ -1258,7 +1258,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.24.1_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.24.4_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.24.0 /@babel/plugin-proposal-class-static-block/7.21.0_@babel+core@7.20.12: @@ -1269,7 +1269,7 @@ packages: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.24.1_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.24.4_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 @@ -1279,7 +1279,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.24.1_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.24.4_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-decorators': 7.24.1_@babel+core@7.20.12 dev: true @@ -1367,7 +1367,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.24.1 + '@babel/compat-data': 7.24.4 '@babel/core': 7.20.12 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 @@ -1382,7 +1382,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.24.1 + '@babel/compat-data': 7.24.4 '@babel/core': 7.20.12 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 @@ -1420,7 +1420,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.24.1_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.24.4_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.24.0 /@babel/plugin-proposal-private-property-in-object/7.21.11_@babel+core@7.20.12: @@ -1432,7 +1432,7 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.24.4_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 @@ -1665,8 +1665,8 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-block-scoping/7.24.1_@babel+core@7.20.12: - resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} + /@babel/plugin-transform-block-scoping/7.24.4_@babel+core@7.20.12: + resolution: {integrity: sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2037,15 +2037,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-typescript/7.24.1_@babel+core@7.20.12: - resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} + /@babel/plugin-transform-typescript/7.24.4_@babel+core@7.20.12: + resolution: {integrity: sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.24.4_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-typescript': 7.24.1_@babel+core@7.20.12 @@ -2074,7 +2074,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.24.1 + '@babel/compat-data': 7.24.4 '@babel/core': 7.20.12 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 @@ -2114,7 +2114,7 @@ packages: '@babel/plugin-transform-arrow-functions': 7.24.1_@babel+core@7.20.12 '@babel/plugin-transform-async-to-generator': 7.24.1_@babel+core@7.20.12 '@babel/plugin-transform-block-scoped-functions': 7.24.1_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoping': 7.24.1_@babel+core@7.20.12 + '@babel/plugin-transform-block-scoping': 7.24.4_@babel+core@7.20.12 '@babel/plugin-transform-classes': 7.24.1_@babel+core@7.20.12 '@babel/plugin-transform-computed-properties': 7.24.1_@babel+core@7.20.12 '@babel/plugin-transform-destructuring': 7.24.1_@babel+core@7.20.12 @@ -2201,7 +2201,7 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-typescript': 7.24.1_@babel+core@7.20.12 + '@babel/plugin-transform-typescript': 7.24.4_@babel+core@7.20.12 dev: true /@babel/preset-typescript/7.18.6_@babel+core@7.20.12: @@ -2213,7 +2213,7 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-typescript': 7.24.1_@babel+core@7.20.12 + '@babel/plugin-transform-typescript': 7.24.4_@babel+core@7.20.12 dev: false /@babel/register/7.14.5_@babel+core@7.20.12: @@ -2233,8 +2233,8 @@ packages: /@babel/regjsgen/0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - /@babel/runtime-corejs3/7.24.1: - resolution: {integrity: sha512-T9ko/35G+Bkl+win48GduaPlhSlOjjE5s1TeiEcD+QpxlLQnoEfb/nO/T+TQqkm+ipFwORn+rB8w14iJ/uD0bg==} + /@babel/runtime-corejs3/7.24.4: + resolution: {integrity: sha512-VOQOexSilscN24VEY810G/PqtpFvx/z6UqDIjIWbDe2368HhDLkYN5TYwaEz/+eRCUkhJ2WaNLLmQAlxzfWj4w==} engines: {node: '>=6.9.0'} dependencies: core-js-pure: 3.36.1 @@ -2247,8 +2247,8 @@ packages: dependencies: regenerator-runtime: 0.13.11 - /@babel/runtime/7.24.1: - resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} + /@babel/runtime/7.24.4: + resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 @@ -2268,7 +2268,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@babel/types': 7.24.0 /@babel/traverse/7.0.0-beta.44: @@ -2291,12 +2291,12 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.1 + '@babel/generator': 7.24.4 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@babel/types': 7.24.0 debug: 4.3.4 globals: 11.12.0 @@ -2531,7 +2531,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 chalk: 4.1.2 jest-message-util: 26.6.2 jest-util: 26.6.2 @@ -2547,7 +2547,7 @@ packages: '@jest/test-result': 26.6.2 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 ansi-escapes: 4.3.2 chalk: 4.1.2 exit: 0.1.2 @@ -2587,7 +2587,7 @@ packages: '@jest/test-result': 26.6.2 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 ansi-escapes: 4.3.2 chalk: 4.1.2 exit: 0.1.2 @@ -2627,7 +2627,7 @@ packages: '@jest/test-result': 26.6.2 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 ansi-escapes: 4.3.2 chalk: 4.1.2 exit: 0.1.2 @@ -2676,7 +2676,7 @@ packages: dependencies: '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 jest-mock: 26.6.2 dev: true @@ -2695,7 +2695,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@sinonjs/fake-timers': 6.0.1 - '@types/node': 20.12.2 + '@types/node': 20.12.7 jest-message-util: 26.6.2 jest-mock: 26.6.2 jest-util: 26.6.2 @@ -2906,7 +2906,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/yargs': 15.0.19 chalk: 4.1.2 dev: true @@ -4028,7 +4028,7 @@ packages: /@types/babel__core/7.20.0: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@babel/types': 7.24.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -4042,7 +4042,7 @@ packages: /@types/babel__template/7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@babel/types': 7.24.0 /@types/babel__traverse/7.20.5: @@ -4073,7 +4073,7 @@ packages: /@types/clean-css/4.2.6: resolution: {integrity: sha512-Ze1tf+LnGPmG6hBFMi0B4TEB0mhF7EiMM5oyjLDNPE9hxrPU0W+5+bHvO+eFPA+bt0iC1zkQMoU/iGdRVjcRbw==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 source-map: 0.6.1 dev: true @@ -4092,19 +4092,19 @@ packages: /@types/fs-extra/8.1.5: resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/fs-extra/9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/glob-stream/8.0.2: resolution: {integrity: sha512-kyuRfGE+yiSJWzSO3t74rXxdZNdYfLcllO0IUha4eX1fl40pm9L02Q/TEc3mykTLjoWz4STBNwYnUWdFu3I0DA==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/picomatch': 2.3.3 '@types/streamx': 2.9.5 dev: true @@ -4112,26 +4112,26 @@ packages: /@types/glob-watcher/5.0.2: resolution: {integrity: sha512-MZeh2nIzibl/euv5UV0femkGzcKTSE4G2+zv48d6ymeitWwCx52+4X+FqzML9oH2mQnPs+N/JHp3CsBPj1x1Ug==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/glob/7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/graceful-fs/4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/gulp-if/0.0.34: resolution: {integrity: sha512-r2A04hHDC+ZWMRAm+3q6/UeC3ggvl+TZm9P1+2umnp4q9bOlBmUQnR178Io3c0DkZPQAwup8VNtOvmvaWCpP5w==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/vinyl': 2.0.7 dev: true @@ -4145,7 +4145,7 @@ packages: /@types/gulp-sourcemaps/0.0.35: resolution: {integrity: sha512-vUBuizwA4CAV3Mke0DJYHQxyN4YOB1aAql284qAO7Et7fe0hmnPi/R9Fhu2UhxMuSxAwFktsJUOQk5dJHOU1eA==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/vinyl': 2.0.7 dev: true @@ -4236,7 +4236,7 @@ packages: /@types/merge2/1.4.0: resolution: {integrity: sha512-MRHDvln2ldZELrUC8n1PGaQzZ33aNh8uDcsGehREW0zR1Fr818a4/JTZjO9eloHPPxnpUp8fz/YFTRc5CWm7Xw==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/minimatch/3.0.5: @@ -4271,8 +4271,8 @@ packages: resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} dev: true - /@types/node/20.12.2: - resolution: {integrity: sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==} + /@types/node/20.12.7: + resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} dependencies: undici-types: 5.26.5 @@ -4299,10 +4299,10 @@ packages: /@types/prop-types/15.7.12: resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - /@types/react-dom/18.2.23: - resolution: {integrity: sha512-ZQ71wgGOTmDYpnav2knkjr3qXdAFu0vsk8Ci5w3pGAIdj7/kKAyn+VsQDhXsmzzzepAiI9leWMmubXz690AI/A==} + /@types/react-dom/18.2.25: + resolution: {integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==} dependencies: - '@types/react': 18.2.73 + '@types/react': 18.2.77 dev: true /@types/react-is/17.0.7: @@ -4319,8 +4319,8 @@ packages: csstype: 3.1.3 dev: true - /@types/react/18.2.73: - resolution: {integrity: sha512-XcGdod0Jjv84HOC7N5ziY3x+qL0AfmubvKOZ9hJjJ2yd5EE+KYjWhdOjt387e9HPheHkdggF9atTifMRtyAaRA==} + /@types/react/18.2.77: + resolution: {integrity: sha512-CUT9KUUF+HytDM7WiXKLF9qUSg4tGImwy4FXTlfEDPEkkNUzJ7rVFolYweJ9fS1ljoIaP7M7Rdjc5eUm/Yu5AA==} dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 @@ -4329,7 +4329,7 @@ packages: resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==} dependencies: '@types/caseless': 0.12.5 - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/tough-cookie': 4.0.5 form-data: 2.5.1 dev: true @@ -4363,7 +4363,7 @@ packages: /@types/streamx/2.9.5: resolution: {integrity: sha512-IHYsa6jYrck8VEdSwpY141FTTf6D7boPeMq9jy4qazNrFMA4VbRz/sw5LSsfR7jwdDcx0QKWkUexZvsWBC2eIQ==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/terser/3.12.0: @@ -4376,7 +4376,7 @@ packages: /@types/through2/2.0.38: resolution: {integrity: sha512-YFu+nHmjxMurkH1BSzA0Z1WrKDAY8jUKPZctNQn7mc+/KKtp2XxnclHFXxdB1m7Iqnzb5aywgP8TMK283LezGQ==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /@types/tough-cookie/4.0.5: @@ -4390,7 +4390,7 @@ packages: /@types/undertaker/1.2.8: resolution: {integrity: sha512-gW3PRqCHYpo45XFQHJBhch7L6hytPsIe0QeLujlnFsjHPnXLhJcPdN6a9368d7aIQgH2I/dUTPFBlGeSNA3qOg==} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/undertaker-registry': 1.0.4 async-done: 1.3.2 dev: true @@ -4403,7 +4403,7 @@ packages: resolution: {integrity: sha512-ckYz9giHgV6U10RFuf9WsDQ3X86EFougapxHmmoxLK7e6ICQqO8CE+4V/3lBN148V5N1pb4nQMmMjyScleVsig==} dependencies: '@types/glob-stream': 8.0.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/vinyl': 2.0.7 dev: true @@ -4411,7 +4411,7 @@ packages: resolution: {integrity: sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==} dependencies: '@types/expect': 1.20.4 - '@types/node': 20.12.2 + '@types/node': 20.12.7 /@types/webpack-env/1.18.4: resolution: {integrity: sha512-I6e+9+HtWADAWeeJWDFQtdk4EVSAbj6Rtz4q8fJ7mSr1M0jzlFcs8/HZ+Xb5SHzVm1dxH7aUiI+A8kA8Gcrm0A==} @@ -4893,7 +4893,7 @@ packages: /@vitest/snapshot/0.30.1: resolution: {integrity: sha512-fJZqKrE99zo27uoZA/azgWyWbFvM1rw2APS05yB0JaLwUIg9aUtvvnBf4q7JWhEcAHmSwbrxKFgyBUga6tq9Tw==} dependencies: - magic-string: 0.30.8 + magic-string: 0.30.9 pathe: 1.1.2 pretty-format: 27.5.1 dev: true @@ -4953,7 +4953,7 @@ packages: '@babel/core': 7.20.12 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@vue/compiler-sfc': 3.4.21 dev: true @@ -5055,7 +5055,7 @@ packages: /@vue/compiler-core/3.4.21: resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} dependencies: - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@vue/shared': 3.4.21 entities: 4.5.0 estree-walker: 2.0.2 @@ -5072,13 +5072,13 @@ packages: /@vue/compiler-sfc/3.4.21: resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} dependencies: - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@vue/compiler-core': 3.4.21 '@vue/compiler-dom': 3.4.21 '@vue/compiler-ssr': 3.4.21 '@vue/shared': 3.4.21 estree-walker: 2.0.2 - magic-string: 0.30.8 + magic-string: 0.30.9 postcss: 8.4.38 source-map-js: 1.2.0 dev: true @@ -5991,7 +5991,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001605 + caniuse-lite: 1.0.30001609 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -6004,7 +6004,7 @@ packages: hasBin: true dependencies: browserslist: 3.2.8 - caniuse-lite: 1.0.30001605 + caniuse-lite: 1.0.30001609 normalize-range: 0.1.2 num2fraction: 1.2.2 postcss: 6.0.23 @@ -6017,7 +6017,7 @@ packages: hasBin: true dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001605 + caniuse-lite: 1.0.30001609 chalk: 2.4.2 normalize-range: 0.1.2 num2fraction: 1.2.2 @@ -6030,7 +6030,7 @@ packages: hasBin: true dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001605 + caniuse-lite: 1.0.30001609 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -6147,7 +6147,7 @@ packages: eslint: '>= 4.12.1' dependencies: '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 eslint: 6.8.0 @@ -6165,7 +6165,7 @@ packages: eslint: '>= 4.12.1' dependencies: '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 eslint: 8.18.0 @@ -6388,7 +6388,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.24.1 + '@babel/compat-data': 7.24.4 '@babel/core': 7.20.12 '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 semver: 6.3.1 @@ -6585,7 +6585,7 @@ packages: '@babel/preset-react': 7.12.13_@babel+core@7.20.12 '@babel/preset-typescript': 7.12.17_@babel+core@7.20.12 '@babel/runtime': 7.17.0 - '@babel/runtime-corejs3': 7.24.1 + '@babel/runtime-corejs3': 7.24.4 '@tarojs/helper': 3.3.17 '@tarojs/taro-h5': 3.3.17 '@vue/babel-plugin-jsx': 1.2.2_@babel+core@7.20.12 @@ -6979,8 +6979,8 @@ packages: resolution: {integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==} hasBin: true dependencies: - caniuse-lite: 1.0.30001605 - electron-to-chromium: 1.4.723 + caniuse-lite: 1.0.30001609 + electron-to-chromium: 1.4.735 dev: true /browserslist/4.23.0: @@ -6988,8 +6988,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001605 - electron-to-chromium: 1.4.723 + caniuse-lite: 1.0.30001609 + electron-to-chromium: 1.4.735 node-releases: 2.0.14 update-browserslist-db: 1.0.13_browserslist@4.23.0 @@ -7306,8 +7306,8 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: true - /caniuse-lite/1.0.30001605: - resolution: {integrity: sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==} + /caniuse-lite/1.0.30001609: + resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==} /canvas/2.11.2: resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} @@ -7836,9 +7836,9 @@ packages: dependencies: delayed-stream: 1.0.0 - /commander/11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} + /commander/12.0.0: + resolution: {integrity: sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==} + engines: {node: '>=18'} dev: true /commander/2.17.1: @@ -8901,7 +8901,7 @@ packages: engines: {node: '>=6'} hasBin: true dependencies: - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@babel/traverse': 7.24.1 builtin-modules: 3.3.0 deprecate: 1.1.1 @@ -9284,8 +9284,8 @@ packages: jake: 10.8.7 dev: true - /electron-to-chromium/1.4.723: - resolution: {integrity: sha512-rxFVtrMGMFROr4qqU6n95rUi9IlfIm+lIAt+hOToy/9r6CDv0XiEcQdC3VP71y1pE5CFTzKV0RvxOGYCPWWHPw==} + /electron-to-chromium/1.4.735: + resolution: {integrity: sha512-pkYpvwg8VyOTQAeBqZ7jsmpCjko1Qc6We1ZtZCjRyYbT5v4AIUKDy5cQTRotQlSSZmMr8jqpEt6JtOj5k7lR7A==} /electron/11.5.0: resolution: {integrity: sha512-WjNDd6lGpxyiNjE3LhnFCAk/D9GIj1rU3GSDealVShhkkkPR3Vh4q8ErXGDl1OAO/faomVa10KoFPUN/pLbNxg==} @@ -9947,7 +9947,7 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.4 aria-query: 5.3.0 array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 @@ -11131,8 +11131,8 @@ packages: inherits: 2.0.4 readable-stream: 2.3.8 - /focus-lock/1.3.4: - resolution: {integrity: sha512-Gv0N3mvej3pD+HWkNryrF8sExzEHqhQ6OSFxD4DPxm9n5HGCaHme98ZMBZroNEAJcsdtHxk+skvThGKyUeoEGA==} + /focus-lock/1.3.5: + resolution: {integrity: sha512-QFaHbhv9WPUeLYBDe/PAuLKJ4Dd9OPvKs9xZBr3yLXnUrDNaVXKu2baDBXe3naPY30hgHYSsf2JW4jzas2mDEQ==} engines: {node: '>=10'} dependencies: tslib: 2.3.1 @@ -11966,7 +11966,7 @@ packages: resolution: {integrity: sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==} engines: {node: '>=10'} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@types/vinyl': 2.0.7 istextorbinary: 3.3.0 replacestream: 4.0.3 @@ -13386,7 +13386,7 @@ packages: engines: {node: '>=6'} dependencies: '@babel/generator': 7.21.1 - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@babel/template': 7.24.0 '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 @@ -13413,7 +13413,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.20.12 - '@babel/parser': 7.24.1 + '@babel/parser': 7.24.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -13671,7 +13671,7 @@ packages: jest-validate: 26.6.2 micromatch: 4.0.5 pretty-format: 26.6.2 - ts-node: 10.9.0_ffz2ghqtf4s7ni5ise425eb3va + ts-node: 10.9.0_misjo77sqtw74jgpkxp7bulu2q transitivePeerDependencies: - bufferutil - canvas @@ -13706,7 +13706,7 @@ packages: jest-validate: 26.6.2 micromatch: 4.0.5 pretty-format: 26.6.2 - ts-node: 10.9.0_ffz2ghqtf4s7ni5ise425eb3va + ts-node: 10.9.0_misjo77sqtw74jgpkxp7bulu2q transitivePeerDependencies: - bufferutil - canvas @@ -13811,7 +13811,7 @@ packages: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 jest-mock: 26.6.2 jest-util: 26.6.2 jsdom: 16.7.0 @@ -13829,7 +13829,7 @@ packages: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 jest-mock: 26.6.2 jest-util: 26.6.2 jsdom: 16.7.0_canvas@2.11.2 @@ -13860,7 +13860,7 @@ packages: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 jest-mock: 26.6.2 jest-util: 26.6.2 dev: true @@ -13900,7 +13900,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.9 - '@types/node': 20.12.2 + '@types/node': 20.12.7 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -13948,7 +13948,7 @@ packages: '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 chalk: 4.1.2 co: 4.6.0 expect: 26.6.2 @@ -13978,7 +13978,7 @@ packages: '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 chalk: 4.1.2 co: 4.6.0 expect: 26.6.2 @@ -14008,7 +14008,7 @@ packages: '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 chalk: 4.1.2 co: 4.6.0 expect: 26.6.2 @@ -14106,7 +14106,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 dev: true /jest-pnp-resolver/1.2.3_jest-resolve@24.9.0: @@ -14212,7 +14212,7 @@ packages: '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 chalk: 4.1.2 emittery: 0.7.2 exit: 0.1.2 @@ -14244,7 +14244,7 @@ packages: '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 chalk: 4.1.2 emittery: 0.7.2 exit: 0.1.2 @@ -14276,7 +14276,7 @@ packages: '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 chalk: 4.1.2 emittery: 0.7.2 exit: 0.1.2 @@ -14461,7 +14461,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 graceful-fs: 4.2.11 dev: true @@ -14529,7 +14529,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 chalk: 4.1.2 graceful-fs: 4.2.11 is-ci: 2.0.0 @@ -14566,7 +14566,7 @@ packages: dependencies: '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.12.2 + '@types/node': 20.12.7 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 26.6.2 @@ -14585,7 +14585,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -15552,8 +15552,8 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - /magic-string/0.30.8: - resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} + /magic-string/0.30.9: + resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -15899,7 +15899,7 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 '@babel/plugin-transform-arrow-functions': 7.24.1_@babel+core@7.20.12 '@babel/plugin-transform-async-to-generator': 7.24.1_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoping': 7.24.1_@babel+core@7.20.12 + '@babel/plugin-transform-block-scoping': 7.24.4_@babel+core@7.20.12 '@babel/plugin-transform-classes': 7.24.1_@babel+core@7.20.12 '@babel/plugin-transform-computed-properties': 7.24.1_@babel+core@7.20.12 '@babel/plugin-transform-destructuring': 7.24.1_@babel+core@7.20.12 @@ -15921,7 +15921,7 @@ packages: '@babel/plugin-transform-spread': 7.24.1_@babel+core@7.20.12 '@babel/plugin-transform-sticky-regex': 7.24.1_@babel+core@7.20.12 '@babel/plugin-transform-template-literals': 7.24.1_@babel+core@7.20.12 - '@babel/plugin-transform-typescript': 7.24.1_@babel+core@7.20.12 + '@babel/plugin-transform-typescript': 7.24.4_@babel+core@7.20.12 '@babel/plugin-transform-unicode-regex': 7.24.1_@babel+core@7.20.12 '@babel/template': 7.24.0 react-refresh: 0.4.3 @@ -16881,8 +16881,8 @@ packages: is-wsl: 2.2.0 dev: true - /openinula/0.1.2-SNAPSHOT: - resolution: {integrity: sha512-dAw3TIvyPgAgYgYevKeYHo3EvONvSyhLY3xt5YUTUFIQ60aR4Sjgc0/pbIPn1k+4M3E9iQl+x2Fx1fAjUvh7Ug==} + /openinula/0.1.3: + resolution: {integrity: sha512-4jvbnbsLkXQtfGXEHSqMAdqYRyKKLtnn7ch2o9BvN2bL1RGCYXQWKkINHMf5LnoMjlz1NnBbhngj6/CmyvDCqg==} engines: {node: '>=0.10.0'} /opn/5.5.0: @@ -18323,7 +18323,7 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-focus-lock/2.11.2_glxuhseaxnynb3wl34vdbiopru: + /react-focus-lock/2.11.2_332exdt4eernuwtnyroj5m63py: resolution: {integrity: sha512-DDTbEiov0+RthESPVSTIdAWPPKic+op3sCcP+icbMRobvQNt7LuAlJ3KoarqQv5sCgKArru3kXmlmFTa27/CdQ==} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -18333,13 +18333,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.17.0 - '@types/react': 18.2.73 - focus-lock: 1.3.4 + '@types/react': 18.2.77 + focus-lock: 1.3.5 prop-types: 15.8.1 react: 18.2.0 react-clientside-effect: 1.2.6_react@18.2.0 - use-callback-ref: 1.3.2_glxuhseaxnynb3wl34vdbiopru - use-sidecar: 1.1.2_glxuhseaxnynb3wl34vdbiopru + use-callback-ref: 1.3.2_332exdt4eernuwtnyroj5m63py + use-sidecar: 1.1.2_332exdt4eernuwtnyroj5m63py dev: false /react-is/16.13.1: @@ -21317,18 +21317,18 @@ packages: yargs-parser: 20.2.9 dev: true - /ts-json-schema-generator/1.5.0: - resolution: {integrity: sha512-RkiaJ6YxGc5EWVPfyHxszTmpGxX8HC2XBvcFlAl1zcvpOG4tjjh+eXioStXJQYTvr9MoK8zCOWzAUlko3K0DiA==} + /ts-json-schema-generator/1.5.1: + resolution: {integrity: sha512-apX5qG2+NA66j7b4AJm8q/DpdTeOsjfh7A3LpKsUiil0FepkNwtN28zYgjrsiiya2/OPhsr/PSjX5FUYg79rCg==} engines: {node: '>=10.0.0'} hasBin: true dependencies: '@types/json-schema': 7.0.15 - commander: 11.1.0 + commander: 12.0.0 glob: 8.1.0 json5: 2.2.3 normalize-path: 3.0.0 safe-stable-stringify: 2.4.3 - typescript: 5.3.3 + typescript: 5.4.5 dev: true /ts-loader/8.0.2_typescript@4.9.5: @@ -21345,7 +21345,7 @@ packages: typescript: 4.9.5 dev: true - /ts-node/10.9.0_ffz2ghqtf4s7ni5ise425eb3va: + /ts-node/10.9.0_misjo77sqtw74jgpkxp7bulu2q: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -21364,7 +21364,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.2 + '@types/node': 20.12.7 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 @@ -21577,8 +21577,8 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - /typescript/5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + /typescript/5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -21965,7 +21965,7 @@ packages: qs: 6.12.0 dev: true - /use-callback-ref/1.3.2_glxuhseaxnynb3wl34vdbiopru: + /use-callback-ref/1.3.2_332exdt4eernuwtnyroj5m63py: resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} engines: {node: '>=10'} peerDependencies: @@ -21975,12 +21975,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.73 + '@types/react': 18.2.77 react: 18.2.0 tslib: 2.3.1 dev: false - /use-sidecar/1.1.2_glxuhseaxnynb3wl34vdbiopru: + /use-sidecar/1.1.2_332exdt4eernuwtnyroj5m63py: resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -21990,7 +21990,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.73 + '@types/react': 18.2.77 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.3.1 @@ -22190,7 +22190,7 @@ packages: remove-trailing-separator: 1.1.0 replace-ext: 1.0.1 - /vite-node/0.30.1_iwgrd66mxswut6l6xzn2kvw774: + /vite-node/0.30.1_avf3hzh5xzzvgsi2eg7ijvmrdi: resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} engines: {node: '>=v14.18.0'} hasBin: true @@ -22200,7 +22200,7 @@ packages: mlly: 1.6.1 pathe: 1.1.2 picocolors: 1.0.0 - vite: 3.2.6_iwgrd66mxswut6l6xzn2kvw774 + vite: 3.2.6_avf3hzh5xzzvgsi2eg7ijvmrdi transitivePeerDependencies: - '@types/node' - less @@ -22244,7 +22244,7 @@ packages: fsevents: 2.3.3 dev: true - /vite/3.2.6_@types+node@20.12.2: + /vite/3.2.6_@types+node@20.12.7: resolution: {integrity: sha512-nTXTxYVvaQNLoW5BQ8PNNQ3lPia57gzsQU/Khv+JvzKPku8kNZL6NMUR/qwXhMG6E+g1idqEPanomJ+VZgixEg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -22269,7 +22269,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 esbuild: 0.15.18 postcss: 8.4.21 resolve: 1.22.8 @@ -22278,7 +22278,7 @@ packages: fsevents: 2.3.3 dev: true - /vite/3.2.6_iwgrd66mxswut6l6xzn2kvw774: + /vite/3.2.6_avf3hzh5xzzvgsi2eg7ijvmrdi: resolution: {integrity: sha512-nTXTxYVvaQNLoW5BQ8PNNQ3lPia57gzsQU/Khv+JvzKPku8kNZL6NMUR/qwXhMG6E+g1idqEPanomJ+VZgixEg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -22303,7 +22303,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.12.2 + '@types/node': 20.12.7 esbuild: 0.15.18 less: 4.1.3 postcss: 8.4.21 @@ -22347,7 +22347,7 @@ packages: dependencies: '@types/chai': 4.3.14 '@types/chai-subset': 1.3.5 - '@types/node': 20.12.2 + '@types/node': 20.12.7 '@vitest/expect': 0.30.1 '@vitest/runner': 0.30.1 '@vitest/snapshot': 0.30.1 @@ -22360,7 +22360,7 @@ packages: concordance: 5.0.4 debug: 4.3.4 local-pkg: 0.4.3 - magic-string: 0.30.8 + magic-string: 0.30.9 pathe: 1.1.2 picocolors: 1.0.0 source-map: 0.6.1 @@ -22368,8 +22368,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.6.0 tinypool: 0.4.0 - vite: 3.2.6_iwgrd66mxswut6l6xzn2kvw774 - vite-node: 0.30.1_iwgrd66mxswut6l6xzn2kvw774 + vite: 3.2.6_avf3hzh5xzzvgsi2eg7ijvmrdi + vite-node: 0.30.1_avf3hzh5xzzvgsi2eg7ijvmrdi why-is-node-running: 2.2.2 transitivePeerDependencies: - less diff --git a/packages/vchart/__tests__/runtime/browser/test-page/bar.ts b/packages/vchart/__tests__/runtime/browser/test-page/bar.ts index e76fe04e2a..365244f8c7 100644 --- a/packages/vchart/__tests__/runtime/browser/test-page/bar.ts +++ b/packages/vchart/__tests__/runtime/browser/test-page/bar.ts @@ -101,6 +101,15 @@ const run = () => { barBackground: { visible: true, fieldLevel: 1 + }, + tooltip: { + dimension: { + maxLineCount: 5, + othersLine: { + key: 'others', + hasShape: false + } + } } }; diff --git a/packages/vchart/src/component/tooltip/utils/compose.ts b/packages/vchart/src/component/tooltip/utils/compose.ts index 445f8332cd..ea8ed054a1 100644 --- a/packages/vchart/src/component/tooltip/utils/compose.ts +++ b/packages/vchart/src/component/tooltip/utils/compose.ts @@ -79,6 +79,12 @@ export const getShowContent = ( /** content */ const patternContent = getTooltipContentPattern(pattern.content, data, params); const { maxLineCount = TOOLTIP_MAX_LINE_COUNT } = pattern; + const othersLine = pattern.othersLine + ? { + ...TOOLTIP_OTHERS_LINE, + ...pattern.othersLine + } + : TOOLTIP_OTHERS_LINE; if (pattern.activeType === 'mark') { for (const content of patternContent ?? []) { @@ -87,7 +93,7 @@ export const getShowContent = ( if (tooltipActualTitleContent.content.length === maxLineCount - 1) { tooltipActualTitleContent.content.push({ ...oneLineData, - ...TOOLTIP_OTHERS_LINE + ...othersLine }); break; } else if (tooltipActualTitleContent.content.length < maxLineCount) { @@ -116,7 +122,7 @@ export const getShowContent = ( if (tooltipActualTitleContent.content.length === maxLineCount - 1) { tooltipActualTitleContent.content.push({ ...oneLineData, - ...TOOLTIP_OTHERS_LINE + ...othersLine }); break; } else if (tooltipActualTitleContent.content.length < maxLineCount) { diff --git a/packages/vchart/src/typings/tooltip/tooltip.ts b/packages/vchart/src/typings/tooltip/tooltip.ts index 12d0517429..36e055c93e 100644 --- a/packages/vchart/src/typings/tooltip/tooltip.ts +++ b/packages/vchart/src/typings/tooltip/tooltip.ts @@ -23,6 +23,9 @@ export interface ITooltipPattern extends ITooltipShapePattern { /** tooltip content 保留的最大数据行数,默认为 20 */ maxLineCount?: number; + /** tooltip content 保留最大数据行数后,代表“其他”的数据行内容 */ + othersLine?: ITooltipLineActual; + /** 方便内部逻辑辨别 tooltip 类型,不暴露给用户 */ activeType?: TooltipActiveType; } From 1851ad0a2e0a0439c77e05e6f7ce70fbe2827862 Mon Sep 17 00:00:00 2001 From: Howard Zhang Date: Fri, 12 Apr 2024 16:58:55 +0800 Subject: [PATCH 06/10] chore: update changelog --- .../vchart/feat-tooltip-actual_2024-04-12-08-58.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 common/changes/@visactor/vchart/feat-tooltip-actual_2024-04-12-08-58.json diff --git a/common/changes/@visactor/vchart/feat-tooltip-actual_2024-04-12-08-58.json b/common/changes/@visactor/vchart/feat-tooltip-actual_2024-04-12-08-58.json new file mode 100644 index 0000000000..0e7e76d114 --- /dev/null +++ b/common/changes/@visactor/vchart/feat-tooltip-actual_2024-04-12-08-58.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@visactor/vchart", + "comment": "feat: add `othersLine` to customize the the \"Others\" line content displayed after the tooltip content exceeds the maximum number of displayed lines", + "type": "none" + } + ], + "packageName": "@visactor/vchart" +} \ No newline at end of file From b122b4fadf7f891adadaf42ff93330e0ac082072 Mon Sep 17 00:00:00 2001 From: Howard Zhang Date: Fri, 12 Apr 2024 18:05:11 +0800 Subject: [PATCH 07/10] feat: docs of othersLine --- .../tooltip-common/tooltip-line-pattern.md | 23 ++++++++++++++++++- .../tooltip-common/tooltip-pattern.md | 12 ++++++++++ .../tooltip-common/tooltip-line-pattern.md | 23 ++++++++++++++++++- .../tooltip-common/tooltip-pattern.md | 12 ++++++++++ 4 files changed, 68 insertions(+), 2 deletions(-) diff --git a/docs/assets/option/en/component/tooltip-common/tooltip-line-pattern.md b/docs/assets/option/en/component/tooltip-common/tooltip-line-pattern.md index 85530c5492..a78438a4c1 100644 --- a/docs/assets/option/en/component/tooltip-common/tooltip-line-pattern.md +++ b/docs/assets/option/en/component/tooltip-common/tooltip-line-pattern.md @@ -9,7 +9,11 @@ Whether the current line is displayed. {{ if: ${content} }} #${prefix} key(string|Function) -The content of the key column for the current line of the tooltip. If configured as a string, it will be displayed as the corresponding constant text. It can also be configured as a function callback, with the type: +The content of the key column for the current line of the tooltip. If configured as a string, it will be displayed as the corresponding constant text. + +{{ if: ${supportFunction} }} + +It can also be configured as a function callback, with the type: ```ts (datum: Datum) => string; @@ -17,6 +21,8 @@ The content of the key column for the current line of the tooltip. If configured Where `datum` is the default data item corresponding to the current line of the tooltip. +{{ /if }} + #${prefix} keyTimeFormat(string) = '%Y%m%d' Time conversion format of key label. @@ -65,6 +71,8 @@ It can also be configured as rich text configuration, the type is: } ``` +{{ if: ${supportFunction} }} + It can also be configured as a function callback, the type is: ```ts @@ -73,6 +81,8 @@ It can also be configured as a function callback, the type is: Where `datum` is the default data item corresponding to the current line of the tooltip. +{{ /if }} + #${prefix} valueTimeFormat(string) = '%Y%m%d' Time conversion format of value label. @@ -100,9 +110,20 @@ Time conversion mode of value label. Support `'utc' | 'local'` mode. {{ if: ${content} }} +{{ if: ${supportFunction} }} + {{ use: component-tooltip-shape-pattern( prefix = ${prefix}, type = 'pattern' ) }} +{{ else }} + +{{ use: component-tooltip-shape-pattern( + prefix = ${prefix}, + type = 'style' +) }} + +{{ /if }} + {{ /if }} diff --git a/docs/assets/option/en/component/tooltip-common/tooltip-pattern.md b/docs/assets/option/en/component/tooltip-common/tooltip-pattern.md index e8957b37a3..21bc95f823 100644 --- a/docs/assets/option/en/component/tooltip-common/tooltip-pattern.md +++ b/docs/assets/option/en/component/tooltip-common/tooltip-pattern.md @@ -12,6 +12,7 @@ Configuration of tooltip title. {{ use: component-tooltip-line-pattern( prefix = '#' + ${prefix}, + supportFunction = true, content = false ) }} @@ -21,6 +22,7 @@ Configuration of tooltip content, which can be an `IToolTipLinePattern` object o {{ use: component-tooltip-line-pattern( prefix = '#' + ${prefix}, + supportFunction = true, content = true ) }} @@ -152,3 +154,13 @@ Define the maximum number of displayed lines for tooltip content, and any conten prefix = ${prefix}, type = 'pattern' ) }} + +#${prefix} othersLine(Object) + +The "Others" line content displayed after the tooltip content exceeds the maximum number of displayed lines. + +{{ use: component-tooltip-line-pattern( + prefix = '#' + ${prefix}, + supportFunction = false, + content = true +) }} diff --git a/docs/assets/option/zh/component/tooltip-common/tooltip-line-pattern.md b/docs/assets/option/zh/component/tooltip-common/tooltip-line-pattern.md index ca870bc543..05f9381605 100644 --- a/docs/assets/option/zh/component/tooltip-common/tooltip-line-pattern.md +++ b/docs/assets/option/zh/component/tooltip-common/tooltip-line-pattern.md @@ -9,7 +9,11 @@ {{ if: ${content} }} #${prefix} key(string|Function) -tooltip 当前行 key 列的内容。如果配置为字符串,则显示为对应的常量文本。也可配置为函数回调,类型为: +tooltip 当前行 key 列的内容。如果配置为字符串,则显示为对应的常量文本。 + +{{ if: ${supportFunction} }} + +也可配置为函数回调,类型为: ```ts (datum: Datum) => string; @@ -17,6 +21,8 @@ tooltip 当前行 key 列的内容。如果配置为字符串,则显示为对 其中 `datum` 为 tooltip 当前行所默认对应的数据项。 +{{ /if }} + #${prefix} keyTimeFormat(string) = '%Y%m%d' key 的时间转换格式。 @@ -65,12 +71,16 @@ tooltip 当前行 value 列的内容。 } ``` +{{ if: ${supportFunction} }} + 也可配置为函数回调,类型为: ```ts (datum: Datum) => string; ``` +{{ /if }} + 其中 `datum` 为 tooltip 当前行所默认对应的数据项。 #${prefix} valueTimeFormat(string) = '%Y%m%d' @@ -100,9 +110,20 @@ value 的时间转换模式。支持`'utc' | 'local'`模式。 {{ if: ${content} }} +{{ if: ${supportFunction} }} + {{ use: component-tooltip-shape-pattern( prefix = ${prefix}, type = 'pattern' ) }} +{{ else }} + +{{ use: component-tooltip-shape-pattern( + prefix = ${prefix}, + type = 'style' +) }} + +{{ /if }} + {{ /if }} diff --git a/docs/assets/option/zh/component/tooltip-common/tooltip-pattern.md b/docs/assets/option/zh/component/tooltip-common/tooltip-pattern.md index 8d4a59ea8c..2db05d65f6 100644 --- a/docs/assets/option/zh/component/tooltip-common/tooltip-pattern.md +++ b/docs/assets/option/zh/component/tooltip-common/tooltip-pattern.md @@ -12,6 +12,7 @@ tooltip 标题配置 {{ use: component-tooltip-line-pattern( prefix = '#' + ${prefix}, + supportFunction = true, content = false ) }} @@ -21,6 +22,7 @@ tooltip 内容配置,配置项为`IToolTipLinePattern`对象或者该对象的 {{ use: component-tooltip-line-pattern( prefix = '#' + ${prefix}, + supportFunction = true, content = true ) }} @@ -152,3 +154,13 @@ tooltip 标题的回调,在最终显示 tooltip 前调用,可以在这个回 prefix = ${prefix}, type = 'pattern' ) }} + +#${prefix} othersLine(Object) + +tooltip 内容超过最大显示行数后,显示的“其他”行内容。 + +{{ use: component-tooltip-line-pattern( + prefix = '#' + ${prefix}, + supportFunction = false, + content = true +) }} From 314c37dc1d82be6338f46d2e56e416ae2225c8dc Mon Sep 17 00:00:00 2001 From: Howard Zhang Date: Mon, 15 Apr 2024 12:10:22 +0800 Subject: [PATCH 08/10] chore: move util file from plugin to component --- packages/vchart/src/component/tooltip/utils/get-spec.ts | 2 +- .../tooltip-handler => component/tooltip}/utils/pattern.ts | 6 +++--- .../src/plugin/components/tooltip-handler/utils/index.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) rename packages/vchart/src/{plugin/components/tooltip-handler => component/tooltip}/utils/pattern.ts (73%) diff --git a/packages/vchart/src/component/tooltip/utils/get-spec.ts b/packages/vchart/src/component/tooltip/utils/get-spec.ts index 39515eeaf0..a8301e2071 100644 --- a/packages/vchart/src/component/tooltip/utils/get-spec.ts +++ b/packages/vchart/src/component/tooltip/utils/get-spec.ts @@ -8,7 +8,7 @@ import type { } from '../../../typings'; import type { ISeries } from '../../../series/interface'; import { mergeSpec } from '@visactor/vutils-extension'; -import { makeDefaultPattern } from '../../../plugin/components/tooltip-handler/utils/pattern'; +import { makeDefaultPattern } from './pattern'; import type { IDimensionInfo } from '../../../event/events/dimension/interface'; import { memoize, isValid, array, isFunction, isNil, cloneDeep } from '@visactor/vutils'; import type { ITooltipSpec, ITooltipTheme } from '..'; diff --git a/packages/vchart/src/plugin/components/tooltip-handler/utils/pattern.ts b/packages/vchart/src/component/tooltip/utils/pattern.ts similarity index 73% rename from packages/vchart/src/plugin/components/tooltip-handler/utils/pattern.ts rename to packages/vchart/src/component/tooltip/utils/pattern.ts index 5ae77b378a..619d8f3469 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/utils/pattern.ts +++ b/packages/vchart/src/component/tooltip/utils/pattern.ts @@ -1,6 +1,6 @@ -import type { IDimensionInfo } from '../../../../event/events/dimension/interface'; -import type { ISeries } from '../../../../series/interface'; -import type { ITooltipPattern, TooltipActiveType } from '../../../../typings'; +import type { IDimensionInfo } from '../../../event/events/dimension/interface'; +import type { ISeries } from '../../../series/interface'; +import type { ITooltipPattern, TooltipActiveType } from '../../../typings'; /** * 根据图表上下文生成默认的tooltip pattern diff --git a/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts b/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts index d4ea4ee97a..79af9f7bff 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts +++ b/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts @@ -1,4 +1,4 @@ export * from './common'; -export * from './pattern'; +export * from '../../../../component/tooltip/utils/pattern'; export * from './position'; export * from './attribute'; From d0fcfcc973d777b113d34284c9cd90430fa9bfb7 Mon Sep 17 00:00:00 2001 From: Howard Zhang Date: Mon, 15 Apr 2024 12:11:23 +0800 Subject: [PATCH 09/10] chore: move util file from plugin to component --- packages/vchart/src/component/tooltip/utils/index.ts | 1 + .../vchart/src/plugin/components/tooltip-handler/utils/index.ts | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vchart/src/component/tooltip/utils/index.ts b/packages/vchart/src/component/tooltip/utils/index.ts index 8e7aa32455..abc0e7d040 100644 --- a/packages/vchart/src/component/tooltip/utils/index.ts +++ b/packages/vchart/src/component/tooltip/utils/index.ts @@ -3,3 +3,4 @@ export * from './common'; export * from './get-spec'; export * from './get-value'; export * from './compose'; +export * from './pattern'; diff --git a/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts b/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts index 79af9f7bff..7b746d5a77 100644 --- a/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts +++ b/packages/vchart/src/plugin/components/tooltip-handler/utils/index.ts @@ -1,4 +1,3 @@ export * from './common'; -export * from '../../../../component/tooltip/utils/pattern'; export * from './position'; export * from './attribute'; From 511d764a787108ce1d7cf254a9e2d920b83b6e1f Mon Sep 17 00:00:00 2001 From: Howard Zhang Date: Mon, 15 Apr 2024 12:11:49 +0800 Subject: [PATCH 10/10] chore: update dependencies --- common/config/rush/pnpm-lock.yaml | 89 +++++++++++++++---------------- 1 file changed, 44 insertions(+), 45 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 5700122ebe..fa18474657 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: vite: 3.2.6 yargs: ^17.1.1 dependencies: - '@arco-design/web-react': 2.46.1_ckivqqo7ufwu2ua5a43uu5bovu + '@arco-design/web-react': 2.46.1_6qcp4jokx32fjqh56b7wyl7qsu '@visactor/openinula-vchart': link:../packages/openinula-vchart '@visactor/react-vchart': link:../packages/react-vchart '@visactor/vchart': link:../packages/vchart @@ -73,7 +73,7 @@ importers: '@types/buble': 0.20.5 '@types/highlightjs': 9.12.6 '@types/markdown-it': 13.0.7 - '@types/react': 18.2.77 + '@types/react': 18.2.78 '@types/react-dom': 18.2.25 '@vitejs/plugin-react': 3.1.0_vite@3.2.6 canvas: 2.11.2 @@ -237,7 +237,7 @@ importers: '@types/jest': 26.0.24 '@types/node': 20.12.7 '@types/offscreencanvas': 2019.6.4 - '@types/react': 18.2.77 + '@types/react': 18.2.78 '@types/react-dom': 18.2.25 '@types/react-is': 17.0.7 '@vitejs/plugin-react': 3.1.0_vite@3.2.6 @@ -322,7 +322,7 @@ importers: '@tarojs/runtime': 3.3.17 '@tarojs/taro': 3.3.17 '@tarojs/webpack-runner': 3.3.17 - '@types/react': 18.2.77 + '@types/react': 18.2.78 '@types/webpack-env': 1.18.4 '@typescript-eslint/eslint-plugin': 5.30.0_cow5zg7tx6c3eisi5a4ud5kwia '@typescript-eslint/parser': 5.30.0_vwud3sodsb5zxmzckoj7rdwdbq @@ -878,7 +878,7 @@ packages: color: 3.2.1 dev: false - /@arco-design/web-react/2.46.1_ckivqqo7ufwu2ua5a43uu5bovu: + /@arco-design/web-react/2.46.1_6qcp4jokx32fjqh56b7wyl7qsu: resolution: {integrity: sha512-XjG44rODJklDu++OApvxjt/TbRrgkNqVq6grt/H+9skysm46jFn2SwhuSljBHmjo11LtIeB1m/OMPMaFtafeYg==} peerDependencies: react: '>=16' @@ -894,7 +894,7 @@ packages: number-precision: 1.6.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-focus-lock: 2.11.2_332exdt4eernuwtnyroj5m63py + react-focus-lock: 2.11.3_7fms6266e6sudc74vktmdr53wa react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y resize-observer-polyfill: 1.5.1 scroll-into-view-if-needed: 2.2.20 @@ -4302,7 +4302,7 @@ packages: /@types/react-dom/18.2.25: resolution: {integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==} dependencies: - '@types/react': 18.2.77 + '@types/react': 18.2.78 dev: true /@types/react-is/17.0.7: @@ -4319,8 +4319,8 @@ packages: csstype: 3.1.3 dev: true - /@types/react/18.2.77: - resolution: {integrity: sha512-CUT9KUUF+HytDM7WiXKLF9qUSg4tGImwy4FXTlfEDPEkkNUzJ7rVFolYweJ9fS1ljoIaP7M7Rdjc5eUm/Yu5AA==} + /@types/react/18.2.78: + resolution: {integrity: sha512-qOwdPnnitQY4xKlKayt42q5W5UQrSHjgoXNVEtxeqdITJ99k4VXJOP3vt8Rkm9HmgJpH50UNU+rlqfkfWOqp0A==} dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 @@ -5991,7 +5991,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001609 + caniuse-lite: 1.0.30001610 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -6004,7 +6004,7 @@ packages: hasBin: true dependencies: browserslist: 3.2.8 - caniuse-lite: 1.0.30001609 + caniuse-lite: 1.0.30001610 normalize-range: 0.1.2 num2fraction: 1.2.2 postcss: 6.0.23 @@ -6017,7 +6017,7 @@ packages: hasBin: true dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001609 + caniuse-lite: 1.0.30001610 chalk: 2.4.2 normalize-range: 0.1.2 num2fraction: 1.2.2 @@ -6030,7 +6030,7 @@ packages: hasBin: true dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001609 + caniuse-lite: 1.0.30001610 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -6979,8 +6979,8 @@ packages: resolution: {integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==} hasBin: true dependencies: - caniuse-lite: 1.0.30001609 - electron-to-chromium: 1.4.735 + caniuse-lite: 1.0.30001610 + electron-to-chromium: 1.4.736 dev: true /browserslist/4.23.0: @@ -6988,8 +6988,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001609 - electron-to-chromium: 1.4.735 + caniuse-lite: 1.0.30001610 + electron-to-chromium: 1.4.736 node-releases: 2.0.14 update-browserslist-db: 1.0.13_browserslist@4.23.0 @@ -7306,8 +7306,8 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: true - /caniuse-lite/1.0.30001609: - resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==} + /caniuse-lite/1.0.30001610: + resolution: {integrity: sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==} /canvas/2.11.2: resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} @@ -9276,16 +9276,16 @@ packages: requiresBuild: true dev: true - /ejs/3.1.9: - resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + /ejs/3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} hasBin: true dependencies: jake: 10.8.7 dev: true - /electron-to-chromium/1.4.735: - resolution: {integrity: sha512-pkYpvwg8VyOTQAeBqZ7jsmpCjko1Qc6We1ZtZCjRyYbT5v4AIUKDy5cQTRotQlSSZmMr8jqpEt6JtOj5k7lR7A==} + /electron-to-chromium/1.4.736: + resolution: {integrity: sha512-Rer6wc3ynLelKNM4lOCg7/zPQj8tPOCB2hzD32PX9wd3hgRRi9MxEbmkFCokzcEhRVMiOVLjnL9ig9cefJ+6+Q==} /electron/11.5.0: resolution: {integrity: sha512-WjNDd6lGpxyiNjE3LhnFCAk/D9GIj1rU3GSDealVShhkkkPR3Vh4q8ErXGDl1OAO/faomVa10KoFPUN/pLbNxg==} @@ -15767,7 +15767,7 @@ packages: dependencies: commondir: 1.0.1 deep-extend: 0.6.0 - ejs: 3.1.9 + ejs: 3.1.10 glob: 7.2.3 globby: 9.2.0 isbinaryfile: 4.0.10 @@ -18166,8 +18166,8 @@ packages: side-channel: 1.0.6 dev: true - /qs/6.12.0: - resolution: {integrity: sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==} + /qs/6.12.1: + resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.6 @@ -18323,8 +18323,8 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-focus-lock/2.11.2_332exdt4eernuwtnyroj5m63py: - resolution: {integrity: sha512-DDTbEiov0+RthESPVSTIdAWPPKic+op3sCcP+icbMRobvQNt7LuAlJ3KoarqQv5sCgKArru3kXmlmFTa27/CdQ==} + /react-focus-lock/2.11.3_7fms6266e6sudc74vktmdr53wa: + resolution: {integrity: sha512-CfWYS86y6KvAIGxYzO1/HlWI2zGON9Fa3L2xfREDGMNFAtYj3m/ZRvnsMH4H75dj5FpgDy2LWA1Vyx+twV80vw==} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -18333,13 +18333,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.17.0 - '@types/react': 18.2.77 + '@types/react': 18.2.78 focus-lock: 1.3.5 prop-types: 15.8.1 react: 18.2.0 react-clientside-effect: 1.2.6_react@18.2.0 - use-callback-ref: 1.3.2_332exdt4eernuwtnyroj5m63py - use-sidecar: 1.1.2_332exdt4eernuwtnyroj5m63py + use-callback-ref: 1.3.2_7fms6266e6sudc74vktmdr53wa + use-sidecar: 1.1.2_7fms6266e6sudc74vktmdr53wa dev: false /react-is/16.13.1: @@ -21009,11 +21009,11 @@ packages: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true - /through2-filter/3.0.0: - resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==} + /through2-filter/3.1.0: + resolution: {integrity: sha512-VhZsTsfrIJjyUi6GeecnwcOJlmoqgIdGFDjqnV5ape+F1DN8GejfPO66XyIhoinxmxGImiUTrq9RwpTN5yszGA==} + engines: {node: '>= 6'} dependencies: - through2: 2.0.5 - xtend: 4.0.2 + through2: 4.0.2 /through2/2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} @@ -21031,7 +21031,6 @@ packages: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: readable-stream: 3.6.2 - dev: false /thunky/1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} @@ -21066,8 +21065,8 @@ packages: next-tick: 1.1.0 dev: false - /tinybench/2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + /tinybench/2.7.0: + resolution: {integrity: sha512-Qgayeb106x2o4hNzNjsZEfFziw8IbKqtbXBjVh7VIZfBxfD5M4gWtpyx5+YTae2gJ6Y6Dz/KLepiv16RFeQWNA==} dev: true /tinypool/0.4.0: @@ -21763,7 +21762,7 @@ packages: resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==} dependencies: json-stable-stringify-without-jsonify: 1.0.1 - through2-filter: 3.0.0 + through2-filter: 3.1.0 /unique-string/1.0.0: resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} @@ -21962,10 +21961,10 @@ packages: resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} dependencies: punycode: 1.4.1 - qs: 6.12.0 + qs: 6.12.1 dev: true - /use-callback-ref/1.3.2_332exdt4eernuwtnyroj5m63py: + /use-callback-ref/1.3.2_7fms6266e6sudc74vktmdr53wa: resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} engines: {node: '>=10'} peerDependencies: @@ -21975,12 +21974,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.77 + '@types/react': 18.2.78 react: 18.2.0 tslib: 2.3.1 dev: false - /use-sidecar/1.1.2_332exdt4eernuwtnyroj5m63py: + /use-sidecar/1.1.2_7fms6266e6sudc74vktmdr53wa: resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -21990,7 +21989,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.77 + '@types/react': 18.2.78 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.3.1 @@ -22366,7 +22365,7 @@ packages: source-map: 0.6.1 std-env: 3.7.0 strip-literal: 1.3.0 - tinybench: 2.6.0 + tinybench: 2.7.0 tinypool: 0.4.0 vite: 3.2.6_avf3hzh5xzzvgsi2eg7ijvmrdi vite-node: 0.30.1_avf3hzh5xzzvgsi2eg7ijvmrdi