{"version":3,"file":"klinecharts.js","sources":["../src/common/utils/typeChecks.ts","../src/common/utils/format.ts","../src/common/Options.ts","../node_modules/tslib/tslib.es6.js","../src/common/Action.ts","../src/common/utils/id.ts","../src/common/utils/dom.ts","../src/common/utils/canvas.ts","../src/common/utils/logger.ts","../src/common/utils/number.ts","../src/common/VisibleRange.ts","../src/store/TimeScaleStore.ts","../src/component/Indicator.ts","../src/extension/indicator/averagePrice.ts","../src/extension/indicator/awesomeOscillator.ts","../src/extension/indicator/bias.ts","../src/extension/indicator/bollingerBands.ts","../src/extension/indicator/brar.ts","../src/extension/indicator/bullAndBearIndex.ts","../src/extension/indicator/commodityChannelIndex.ts","../src/extension/indicator/currentRatio.ts","../src/extension/indicator/differentOfMovingAverage.ts","../src/extension/indicator/directionalMovementIndex.ts","../src/extension/indicator/easeOfMovementValue.ts","../src/extension/indicator/exponentialMovingAverage.ts","../src/extension/indicator/momentum.ts","../src/extension/indicator/movingAverage.ts","../src/extension/indicator/movingAverageConvergenceDivergence.ts","../src/extension/indicator/onBalanceVolume.ts","../src/extension/indicator/priceAndVolumeTrend.ts","../src/extension/indicator/psychologicalLine.ts","../src/extension/indicator/rateOfChange.ts","../src/extension/indicator/relativeStrengthIndex.ts","../src/extension/indicator/simpleMovingAverage.ts","../src/extension/indicator/stoch.ts","../src/extension/indicator/stopAndReverse.ts","../src/extension/indicator/tripleExponentiallySmoothedAverage.ts","../src/extension/indicator/volume.ts","../src/extension/indicator/volumeRatio.ts","../src/extension/indicator/williamsR.ts","../src/extension/indicator/index.ts","../src/store/IndicatorStore.ts","../src/store/CrosshairStore.ts","../src/store/TooltipStore.ts","../src/component/Overlay.ts","../src/extension/overlay/fibonacciLine.ts","../src/extension/overlay/horizontalRayLine.ts","../src/extension/overlay/horizontalSegment.ts","../src/extension/overlay/horizontalStraightLine.ts","../src/common/Eventful.ts","../src/component/Figure.ts","../src/extension/figure/line.ts","../src/extension/overlay/parallelStraightLine.ts","../src/extension/overlay/priceChannelLine.ts","../src/extension/overlay/priceLine.ts","../src/extension/overlay/rayLine.ts","../src/extension/overlay/segment.ts","../src/extension/overlay/straightLine.ts","../src/extension/overlay/verticalRayLine.ts","../src/extension/overlay/verticalSegment.ts","../src/extension/overlay/verticalStraightLine.ts","../src/extension/overlay/simpleAnnotation.ts","../src/extension/overlay/simpleTag.ts","../src/extension/overlay/index.ts","../src/common/Bounding.ts","../src/widget/Widget.ts","../src/common/utils/performance.ts","../src/widget/SeparatorWidget.ts","../src/pane/Pane.ts","../src/store/OverlayStore.ts","../src/store/ActionStore.ts","../src/extension/styles/light.ts","../src/extension/styles/dark.ts","../src/extension/styles/index.ts","../src/store/ChartStore.ts","../src/common/utils/compatible.ts","../src/widget/DrawWidget.ts","../src/extension/figure/circle.ts","../src/extension/figure/polygon.ts","../src/extension/figure/rect.ts","../src/extension/figure/text.ts","../src/extension/figure/rectText.ts","../src/common/Coordinate.ts","../src/extension/figure/arc.ts","../src/extension/figure/index.ts","../src/view/View.ts","../src/view/GridView.ts","../src/view/ChildrenView.ts","../src/view/CandleBarView.ts","../src/view/IndicatorView.ts","../src/view/CrosshairLineView.ts","../src/view/IndicatorTooltipView.ts","../src/view/OverlayView.ts","../src/widget/IndicatorWidget.ts","../src/view/CandleAreaView.ts","../src/view/CandleHighLowPriceView.ts","../src/view/CandleLastPriceLineView.ts","../src/extension/i18n/zh-CN.ts","../src/extension/i18n/en-US.ts","../src/extension/i18n/index.ts","../src/view/CandleTooltipView.ts","../src/widget/CandleWidget.ts","../src/view/AxisView.ts","../src/view/YAxisView.ts","../src/view/CandleLastPriceLabelView.ts","../src/view/IndicatorLastValueView.ts","../src/view/OverlayYAxisView.ts","../src/view/CrosshairHorizontalLabelView.ts","../src/widget/YAxisWidget.ts","../src/component/Axis.ts","../src/component/YAxis.ts","../src/pane/IndicatorPane.ts","../src/pane/CandlePane.ts","../src/view/XAxisView.ts","../src/view/OverlayXAxisView.ts","../src/view/CrosshairVerticalLabelView.ts","../src/widget/XAxisWidget.ts","../src/component/XAxis.ts","../src/pane/XAxisPane.ts","../src/common/utils/platform.ts","../src/common/SyntheticEvent.ts","../src/ChartEvent.ts","../src/Chart.ts","../src/index.ts"],"sourcesContent":["/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function merge (target: any, source: any): void {\n if ((!isObject(target) && !isObject(source))) {\n return\n }\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key) as boolean) {\n const targetProp = target[key]\n const sourceProp = source[key]\n if (\n isObject(sourceProp) &&\n isObject(targetProp) &&\n !isArray(sourceProp) &&\n !isArray(targetProp)\n ) {\n merge(targetProp, sourceProp)\n } else {\n if (isValid(source[key])) {\n target[key] = source[key]\n }\n }\n }\n }\n}\n\nexport function clone (target: T): T {\n if (!isObject(target) || !isArray(target)) {\n return target\n }\n\n let copy\n if (isArray(target)) {\n copy = []\n } else {\n copy = {}\n }\n for (const key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key) as boolean) {\n const v = target[key]\n if (isObject(v)) {\n copy[key] = clone(v)\n } else {\n copy[key] = v\n }\n }\n }\n return copy\n}\n\nexport function isArray (value: any): value is T[] {\n return Object.prototype.toString.call(value) === '[object Array]'\n}\n\nexport function isFunction any> (value: any): value is T {\n return typeof value === 'function'\n}\n\nexport function isObject (value: any): value is object {\n return (typeof value === 'object')\n}\n\nexport function isNumber (value: any): value is number {\n return typeof value === 'number' && !isNaN(value)\n}\n\nexport function isValid (value: T | null | undefined): value is T {\n return value !== null && value !== undefined\n}\n\nexport function isBoolean (value: any): value is boolean {\n return typeof value === 'boolean'\n}\n\nexport function isString (value: any): value is string {\n return typeof value === 'string'\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isNumber, isValid } from './typeChecks'\n\nconst reEscapeChar = /\\\\(\\\\)?/g\nconst rePropName = RegExp(\n '[^.[\\\\]]+' + '|' +\n '\\\\[(?:' +\n '([^\"\\'][^[]*)' + '|' +\n '([\"\\'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2' +\n ')\\\\]' + '|' +\n '(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))'\n , 'g')\n\nexport function formatValue (data: unknown, key: string, defaultValue?: unknown): unknown {\n if (isValid(data)) {\n const path: string[] = []\n key.replace(rePropName, (subString: string, ...args: any[]) => {\n let k = subString\n if (isValid(args[1])) {\n k = args[2].replace(reEscapeChar, '$1')\n } else if (isValid(args[0])) {\n k = args[0].trim()\n }\n path.push(k)\n return ''\n })\n let value = data\n let index = 0\n const length = path.length\n while (isValid(value) && index < length) {\n value = value?.[path[index++]]\n }\n return isValid(value) ? value : (defaultValue ?? '--')\n }\n return defaultValue ?? '--'\n}\n\nexport function formatDate (dateTimeFormat: Intl.DateTimeFormat, timestamp: number, format: string): string {\n const dateTimeString = dateTimeFormat.format(new Date(timestamp))\n const dateTimeStringArray = dateTimeString.split(', ')\n const dateStringArray = dateTimeStringArray[0].split('/')\n const timeStringArray = dateTimeStringArray[1].split(':')\n const date = {\n YYYY: dateStringArray[2],\n MM: dateStringArray[0],\n DD: dateStringArray[1],\n HH: timeStringArray[0] === '24' ? '00' : timeStringArray[0],\n mm: timeStringArray[1],\n ss: timeStringArray[2]\n }\n return format.replace(/YYYY|MM|DD|HH|mm|ss/g, key => date[key])\n}\n\nexport function formatPrecision (value: string | number, precision?: number): string {\n const v = +value\n if (isNumber(v)) {\n return v.toFixed(precision ?? 2)\n }\n return `${value}`\n}\n\nexport function formatBigNumber (value: string | number): string {\n const v = +value\n if (isNumber(v)) {\n if (v > 1000000000) {\n return `${+((v / 1000000000).toFixed(3))}B`\n }\n if (v > 1000000) {\n return `${+((v / 1000000).toFixed(3))}M`\n }\n if (v > 1000) {\n return `${+((v / 1000).toFixed(3))}K`\n }\n }\n return `${value}`\n}\n\nexport function formatThousands (value: string | number, sign: string): string {\n const vl = `${value}`\n if (sign.length === 0) {\n return vl\n }\n if (vl.includes('.')) {\n const arr = vl.split('.')\n return `${arr[0].replace(/(\\d)(?=(\\d{3})+$)/g, $1 => `${$1}${sign}`)}.${arr[1]}`\n }\n return vl.replace(/(\\d)(?=(\\d{3})+$)/g, $1 => `${$1}${sign}`)\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport DeepPartial from './DeepPartial'\nimport Nullable from './Nullable'\nimport KLineData from './KLineData'\n\nimport { formatDate, formatBigNumber } from './utils/format'\n\n/**\n * line type\n */\nexport enum LineType {\n Dashed = 'dashed',\n Solid = 'solid'\n}\n\nexport interface LineStyle {\n style: LineType\n size: number\n color: string\n dashedValue: number[]\n}\n\nexport interface SmoothLineStyle extends LineStyle {\n smooth: boolean\n}\n\nexport interface StateLineStyle extends LineStyle {\n show: boolean\n}\n\nexport enum PolygonType {\n Stroke = 'stroke',\n Fill = 'fill',\n StrokeFill = 'stroke_fill'\n}\n\nexport interface PolygonStyle {\n style: PolygonType\n color: string | CanvasGradient\n borderColor: string\n borderSize: number\n borderStyle: LineType\n borderDashedValue: number[]\n}\n\nexport interface RectStyle extends PolygonStyle {\n borderRadius: number\n}\n\nexport interface TextStyle {\n color: string\n size: number\n family: string\n weight: number | string\n}\n\nexport interface StateTextStyle extends TextStyle {\n show: boolean\n}\n\nexport interface RectTextStyle extends TextStyle {\n style: PolygonType\n paddingLeft: number\n paddingTop: number\n paddingRight: number\n paddingBottom: number\n borderStyle: LineType\n borderDashedValue: number[]\n borderSize: number\n borderColor: string\n borderRadius: number\n backgroundColor: string\n}\n\nexport interface StateRectTextStyle extends RectTextStyle {\n show: boolean\n}\n\nexport interface MarginTextStyle extends StateTextStyle {\n marginLeft: number\n marginTop: number\n marginRight: number\n marginBottom: number\n}\n\nexport type LastValueMarkTextStyle = Omit\n\nexport enum TooltipShowRule {\n Always = 'always',\n FollowCross = 'follow_cross',\n None = 'none'\n}\n\nexport enum TooltipShowType {\n Standard = 'standard',\n Rect = 'rect'\n}\n\nexport interface ChangeColor {\n upColor: string\n downColor: string\n noChangeColor: string\n}\n\nexport interface GradientColor {\n offset: number\n color: string\n}\n\nexport interface GridStyle {\n show: boolean\n horizontal: StateLineStyle\n vertical: StateLineStyle\n}\n\nexport type TooltipTextStyle = Omit\n\nexport interface TooltipDataChild {\n text: string\n color: string\n}\n\nexport interface TooltipData {\n title: string | TooltipDataChild\n value: string | TooltipDataChild\n}\n\nexport enum TooltipIconPosition {\n Left = 'left',\n Middle = 'middle',\n Right = 'right'\n}\nexport interface TooltipIconStyle {\n id: string\n position: TooltipIconPosition\n marginLeft: number\n marginTop: number\n marginRight: number\n marginBottom: number\n paddingLeft: number\n paddingTop: number\n paddingRight: number\n paddingBottom: number\n color: string\n activeColor: string\n size: number\n fontFamily: string\n icon: string\n backgroundColor: string\n activeBackgroundColor: string\n}\n\nexport interface TooltipStyle {\n showRule: TooltipShowRule\n showType: TooltipShowType\n defaultValue: string\n text: TooltipTextStyle\n icons: TooltipIconStyle[]\n}\n\nfunction getDefaultGridStyle (): GridStyle {\n return {\n show: true,\n horizontal: {\n show: true,\n size: 1,\n color: '#EDEDED',\n style: LineType.Dashed,\n dashedValue: [2, 2]\n },\n vertical: {\n show: true,\n size: 1,\n color: '#EDEDED',\n style: LineType.Dashed,\n dashedValue: [2, 2]\n }\n }\n}\n\nexport interface CandleAreaStyle {\n lineSize: number\n lineColor: string\n value: string\n backgroundColor: string | GradientColor[]\n}\n\nexport interface CandleHighLowPriceMarkStyle {\n show: boolean\n color: string\n textOffset: number\n textSize: number\n textFamily: string\n textWeight: string\n}\n\nexport type CandleLastPriceMarkLineStyle = Omit\nexport interface CandleLastPriceMarkStyle extends ChangeColor {\n show: boolean\n line: CandleLastPriceMarkLineStyle\n text: LastValueMarkTextStyle\n}\n\nexport interface CandlePriceMarkStyle {\n show: boolean\n high: CandleHighLowPriceMarkStyle\n low: CandleHighLowPriceMarkStyle\n last: CandleLastPriceMarkStyle\n}\n\nexport enum CandleTooltipRectPosition {\n Fixed = 'fixed',\n Pointer = 'pointer'\n}\n\nexport interface CandleTooltipRectStyle extends Omit {\n position: CandleTooltipRectPosition\n paddingLeft: number\n paddingRight: number\n paddingTop: number\n paddingBottom: number\n offsetLeft: number\n offsetTop: number\n offsetRight: number\n offsetBottom: number\n}\n\nexport interface CandleTooltipCustomCallbackData {\n prev: Nullable\n current: KLineData\n next: Nullable\n}\n\nexport type CandleTooltipCustomCallback = (data: CandleTooltipCustomCallbackData, styles: CandleStyle) => TooltipData[]\n\nexport interface CandleTooltipStyle extends TooltipStyle {\n custom: Nullable\n rect: CandleTooltipRectStyle\n}\n\nexport enum CandleType {\n CandleSolid = 'candle_solid',\n CandleStroke = 'candle_stroke',\n CandleUpStroke = 'candle_up_stroke',\n CandleDownStroke = 'candle_down_stroke',\n Ohlc = 'ohlc',\n Area = 'area'\n}\n\nexport interface CandleBarColor extends ChangeColor {\n upBorderColor: string\n downBorderColor: string\n noChangeBorderColor: string\n upWickColor: string\n downWickColor: string\n noChangeWickColor: string\n}\n\nexport interface CandleStyle {\n type: CandleType\n bar: CandleBarColor\n area: CandleAreaStyle\n priceMark: CandlePriceMarkStyle\n tooltip: CandleTooltipStyle\n}\n\n/**\n * Get default candle style\n * @type {{area: {backgroundColor: [{offset: number, color: string}, {offset: number, color: string}], lineColor: string, lineSize: number, value: string}, bar: {noChangeColor: string, upColor: string, downColor: string}, tooltip: {rect: {offsetTop: number, fillColor: string, borderColor: string, paddingBottom: number, borderRadius: number, paddingRight: number, borderSize: number, offsetLeft: number, paddingTop: number, paddingLeft: number, offsetRight: number}, showRule: string, values: null, showType: string, text: {marginRight: number, size: number, color: string, weight: string, marginBottom: number, family: string, marginTop: number, marginLeft: number}, labels: string[]}, type: string, priceMark: {high: {textMargin: number, textSize: number, color: string, textFamily: string, show: boolean, textWeight: string}, last: {noChangeColor: string, upColor: string, line: {dashValue: number[], size: number, show: boolean, style: string}, show: boolean, text: {paddingBottom: number, size: number, color: string, paddingRight: number, show: boolean, weight: string, paddingTop: number, family: string, paddingLeft: number}, downColor: string}, low: {textMargin: number, textSize: number, color: string, textFamily: string, show: boolean, textWeight: string}, show: boolean}}}\n */\nfunction getDefaultCandleStyle (): CandleStyle {\n return {\n type: CandleType.CandleSolid,\n bar: {\n upColor: '#2DC08E',\n downColor: '#F92855',\n noChangeColor: '#888888',\n upBorderColor: '#2DC08E',\n downBorderColor: '#F92855',\n noChangeBorderColor: '#888888',\n upWickColor: '#2DC08E',\n downWickColor: '#F92855',\n noChangeWickColor: '#888888'\n },\n area: {\n lineSize: 2,\n lineColor: '#1677FF',\n value: 'close',\n backgroundColor: [{\n offset: 0,\n color: 'rgba(22, 119, 255, 0.01)'\n }, {\n offset: 1,\n color: 'rgba(22, 119, 255, 0.2)'\n }]\n },\n priceMark: {\n show: true,\n high: {\n show: true,\n color: '#76808F',\n textOffset: 5,\n textSize: 10,\n textFamily: 'Helvetica Neue',\n textWeight: 'normal'\n },\n low: {\n show: true,\n color: '#76808F',\n textOffset: 5,\n textSize: 10,\n textFamily: 'Helvetica Neue',\n textWeight: 'normal'\n },\n last: {\n show: true,\n upColor: '#2DC08E',\n downColor: '#F92855',\n noChangeColor: '#888888',\n line: {\n show: true,\n style: LineType.Dashed,\n dashedValue: [4, 4],\n size: 1\n },\n text: {\n show: true,\n style: PolygonType.Fill,\n size: 12,\n paddingLeft: 4,\n paddingTop: 4,\n paddingRight: 4,\n paddingBottom: 4,\n borderStyle: LineType.Solid,\n borderSize: 1,\n borderDashedValue: [2, 2],\n color: '#FFFFFF',\n family: 'Helvetica Neue',\n weight: 'normal',\n borderRadius: 2\n }\n }\n },\n tooltip: {\n showRule: TooltipShowRule.Always,\n showType: TooltipShowType.Standard,\n custom: null,\n defaultValue: 'n/a',\n rect: {\n position: CandleTooltipRectPosition.Fixed,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n paddingBottom: 8,\n offsetLeft: 10,\n offsetTop: 8,\n offsetRight: 10,\n offsetBottom: 8,\n borderRadius: 4,\n borderSize: 1,\n borderColor: '#F2F3F5',\n color: '#FEFEFE'\n },\n text: {\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal',\n color: '#76808F',\n marginLeft: 10,\n marginTop: 8,\n marginRight: 6,\n marginBottom: 0\n },\n icons: []\n }\n }\n}\n\nexport type IndicatorPolygonStyle = Omit & ChangeColor\n\nexport interface IndicatorLastValueMarkStyle {\n show: boolean\n text: LastValueMarkTextStyle\n}\n\nexport interface IndicatorTooltipStyle extends TooltipStyle {\n showName: boolean\n showParams: boolean\n}\n\nexport interface IndicatorStyle {\n ohlc: ChangeColor\n bars: IndicatorPolygonStyle[]\n lines: SmoothLineStyle[]\n circles: IndicatorPolygonStyle[]\n lastValueMark: IndicatorLastValueMarkStyle\n tooltip: IndicatorTooltipStyle\n [key: string]: any\n}\n\n/**\n * Get default indicator style\n */\nfunction getDefaultIndicatorStyle (): IndicatorStyle {\n return {\n ohlc: {\n upColor: 'rgba(45, 192, 142, .7)',\n downColor: 'rgba(249, 40, 85, .7)',\n noChangeColor: '#888888'\n },\n bars: [{\n style: PolygonType.Fill,\n borderStyle: LineType.Solid,\n borderSize: 1,\n borderDashedValue: [2, 2],\n upColor: 'rgba(45, 192, 142, .7)',\n downColor: 'rgba(249, 40, 85, .7)',\n noChangeColor: '#888888'\n }],\n lines: [\n {\n style: LineType.Solid,\n smooth: false,\n size: 1,\n dashedValue: [2, 2],\n color: '#FF9600'\n }, {\n style: LineType.Solid,\n smooth: false,\n size: 1,\n dashedValue: [2, 2],\n color: '#935EBD'\n }, {\n style: LineType.Solid,\n smooth: false,\n size: 1,\n dashedValue: [2, 2],\n color: '#1677FF'\n }, {\n style: LineType.Solid,\n smooth: false,\n size: 1,\n dashedValue: [2, 2],\n color: '#E11D74'\n }, {\n style: LineType.Solid,\n smooth: false,\n size: 1,\n dashedValue: [2, 2],\n color: '#01C5C4'\n }\n ],\n circles: [{\n style: PolygonType.Fill,\n borderStyle: LineType.Solid,\n borderSize: 1,\n borderDashedValue: [2, 2],\n upColor: 'rgba(45, 192, 142, .7)',\n downColor: 'rgba(249, 40, 85, .7)',\n noChangeColor: '#888888'\n }],\n lastValueMark: {\n show: false,\n text: {\n show: false,\n style: PolygonType.Fill,\n color: '#FFFFFF',\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal',\n borderStyle: LineType.Solid,\n borderSize: 1,\n borderDashedValue: [2, 2],\n paddingLeft: 4,\n paddingTop: 4,\n paddingRight: 4,\n paddingBottom: 4,\n borderRadius: 2\n }\n },\n tooltip: {\n showRule: TooltipShowRule.Always,\n showType: TooltipShowType.Standard,\n showName: true,\n showParams: true,\n defaultValue: 'n/a',\n text: {\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal',\n color: '#76808F',\n marginLeft: 10,\n marginTop: 8,\n marginRight: 6,\n marginBottom: 0\n },\n icons: []\n }\n }\n}\n\nexport type AxisLineStyle = Omit\n\nexport interface AxisTickLineStyle extends AxisLineStyle {\n length: number\n}\n\nexport interface AxisTickTextStyle extends StateTextStyle {\n marginStart: number\n marginEnd: number\n}\n\nexport interface AxisStyle {\n show: boolean\n size: number | 'auto'\n axisLine: AxisLineStyle\n tickLine: AxisTickLineStyle\n tickText: AxisTickTextStyle\n}\n\nexport type XAxisStyle = AxisStyle\n\nfunction getDefaultXAxisStyle (): XAxisStyle {\n return {\n show: true,\n size: 'auto',\n axisLine: {\n show: true,\n color: '#DDDDDD',\n size: 1\n },\n tickText: {\n show: true,\n color: '#76808F',\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal',\n marginStart: 4,\n marginEnd: 4\n },\n tickLine: {\n show: true,\n size: 1,\n length: 3,\n color: '#DDDDDD'\n }\n }\n}\n\nexport enum YAxisPosition {\n Left = 'left',\n Right = 'right'\n}\n\nexport enum YAxisType {\n Normal = 'normal',\n Percentage = 'percentage',\n Log = 'log'\n}\n\nexport interface YAxisStyle extends AxisStyle {\n type: YAxisType\n position: YAxisPosition\n inside: boolean\n reverse: boolean\n}\n\nfunction getDefaultYAxisStyle (): YAxisStyle {\n return {\n show: true,\n size: 'auto',\n type: YAxisType.Normal,\n position: YAxisPosition.Right,\n inside: false,\n reverse: false,\n axisLine: {\n show: true,\n color: '#DDDDDD',\n size: 1\n },\n tickText: {\n show: true,\n color: '#76808F',\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal',\n marginStart: 4,\n marginEnd: 4\n },\n tickLine: {\n show: true,\n size: 1,\n length: 3,\n color: '#DDDDDD'\n }\n }\n}\n\nexport interface CrosshairDirectionStyle {\n show: boolean\n line: StateLineStyle\n text: StateRectTextStyle\n}\n\nexport interface CrosshairStyle {\n show: boolean\n horizontal: CrosshairDirectionStyle\n vertical: CrosshairDirectionStyle\n}\n\nfunction getDefaultCrosshairStyle (): CrosshairStyle {\n return {\n show: true,\n horizontal: {\n show: true,\n line: {\n show: true,\n style: LineType.Dashed,\n dashedValue: [4, 2],\n size: 1,\n color: '#76808F'\n },\n text: {\n show: true,\n style: PolygonType.Fill,\n color: '#FFFFFF',\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal',\n borderStyle: LineType.Solid,\n borderDashedValue: [2, 2],\n borderSize: 1,\n borderColor: '#686D76',\n borderRadius: 2,\n paddingLeft: 4,\n paddingRight: 4,\n paddingTop: 4,\n paddingBottom: 4,\n backgroundColor: '#686D76'\n }\n },\n vertical: {\n show: true,\n line: {\n show: true,\n style: LineType.Dashed,\n dashedValue: [4, 2],\n size: 1,\n color: '#76808F'\n },\n text: {\n show: true,\n style: PolygonType.Fill,\n color: '#FFFFFF',\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal',\n borderStyle: LineType.Solid,\n borderDashedValue: [2, 2],\n borderSize: 1,\n borderRadius: 2,\n borderColor: '#686D76',\n paddingLeft: 4,\n paddingRight: 4,\n paddingTop: 4,\n paddingBottom: 4,\n backgroundColor: '#686D76'\n }\n }\n }\n}\n\nexport interface OverlayPointStyle {\n color: string\n borderColor: string\n borderSize: number\n radius: number\n activeColor: string\n activeBorderColor: string\n activeBorderSize: number\n activeRadius: number\n}\n\nexport interface OverlayStyle {\n point: OverlayPointStyle\n line: SmoothLineStyle\n rect: RectStyle\n polygon: PolygonStyle\n circle: PolygonStyle\n arc: LineStyle\n text: TextStyle\n rectText: RectTextStyle\n [key: string]: any\n}\n\nfunction getDefaultOverlayStyle (): OverlayStyle {\n return {\n point: {\n color: '#1677FF',\n borderColor: 'rgba(22, 119, 255, 0.35)',\n borderSize: 1,\n radius: 5,\n activeColor: '#1677FF',\n activeBorderColor: 'rgba(22, 119, 255, 0.35)',\n activeBorderSize: 3,\n activeRadius: 5\n },\n line: {\n style: LineType.Solid,\n smooth: false,\n color: '#1677FF',\n size: 1,\n dashedValue: [2, 2]\n },\n rect: {\n style: PolygonType.Fill,\n color: 'rgba(22, 119, 255, 0.25)',\n borderColor: '#1677FF',\n borderSize: 1,\n borderRadius: 0,\n borderStyle: LineType.Solid,\n borderDashedValue: [2, 2]\n },\n polygon: {\n style: PolygonType.Fill,\n color: '#1677FF',\n borderColor: '#1677FF',\n borderSize: 1,\n borderStyle: LineType.Solid,\n borderDashedValue: [2, 2]\n },\n circle: {\n style: PolygonType.Fill,\n color: 'rgba(22, 119, 255, 0.25)',\n borderColor: '#1677FF',\n borderSize: 1,\n borderStyle: LineType.Solid,\n borderDashedValue: [2, 2]\n },\n arc: {\n style: LineType.Solid,\n color: '#1677FF',\n size: 1,\n dashedValue: [2, 2]\n },\n text: {\n color: '#1677FF',\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal'\n },\n rectText: {\n style: PolygonType.Fill,\n color: '#FFFFFF',\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal',\n borderStyle: LineType.Solid,\n borderDashedValue: [2, 2],\n borderSize: 1,\n borderRadius: 2,\n borderColor: '#1677FF',\n paddingLeft: 4,\n paddingRight: 4,\n paddingTop: 4,\n paddingBottom: 4,\n backgroundColor: '#1677FF'\n }\n }\n}\n\nexport interface SeparatorStyle {\n size: number\n color: string\n fill: boolean\n activeBackgroundColor: string\n}\n\nfunction getDefaultSeparatorStyle (): SeparatorStyle {\n return {\n size: 1,\n color: '#DDDDDD',\n fill: true,\n activeBackgroundColor: 'rgba(33, 150, 243, 0.08)'\n }\n}\n\nexport interface Styles {\n grid: GridStyle\n candle: CandleStyle\n indicator: IndicatorStyle\n xAxis: XAxisStyle\n yAxis: YAxisStyle\n separator: SeparatorStyle\n crosshair: CrosshairStyle\n overlay: OverlayStyle\n}\n\nexport function getDefaultStyles (): Styles {\n return {\n grid: getDefaultGridStyle(),\n candle: getDefaultCandleStyle(),\n indicator: getDefaultIndicatorStyle(),\n xAxis: getDefaultXAxisStyle(),\n yAxis: getDefaultYAxisStyle(),\n separator: getDefaultSeparatorStyle(),\n crosshair: getDefaultCrosshairStyle(),\n overlay: getDefaultOverlayStyle()\n }\n}\n\nexport enum FormatDateType {\n Tooltip,\n Crosshair,\n XAxis\n}\n\nexport type FormatDate = (dateTimeFormat: Intl.DateTimeFormat, timestamp: number, format: string, type: FormatDateType) => string\n\nexport type FormatBigNumber = (value: string | number) => string\n\nexport interface CustomApi {\n formatDate: FormatDate\n formatBigNumber: FormatBigNumber\n}\n\nexport function getDefaultCustomApi (): CustomApi {\n return {\n formatDate,\n formatBigNumber\n }\n}\n\nexport const defaultLocale = 'en-US'\n\nexport interface Locales {\n time: string\n open: string\n high: string\n low: string\n close: string\n volume: string\n}\n\nexport interface Options {\n locale?: string\n timezone?: string\n styles?: string | DeepPartial\n customApi?: Partial\n thousandsSeparator?: string\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport default {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __createBinding,\r\n __exportStar,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n};\r\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type ActionCallback = (data?: any) => void\n\nexport enum ActionType {\n OnZoom = 'onZoom',\n OnScroll = 'onScroll',\n OnVisibleRangeChange = 'onVisibleRangeChange',\n OnTooltipIconClick = 'onTooltipIconClick',\n OnCrosshairChange = 'onCrosshairChange',\n OnCandleBarClick = 'onCandleBarClick',\n OnPaneDrag = 'onPaneDrag'\n}\n\nexport default class Delegate {\n private _callbacks: ActionCallback[] = []\n\n subscribe (callback: ActionCallback): void {\n const index = this._callbacks.indexOf(callback) ?? -1\n if (index < 0) {\n this._callbacks.push(callback)\n }\n }\n\n unsubscribe (callback?: ActionCallback): void {\n if (callback !== undefined) {\n const index = this._callbacks.indexOf(callback) ?? -1\n if (index > -1) {\n this._callbacks.splice(index, 1)\n }\n } else {\n this._callbacks = []\n }\n }\n\n execute (data?: any): void {\n this._callbacks.forEach(callback => {\n callback(data)\n })\n }\n\n isEmpty (): boolean {\n return this._callbacks.length === 0\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet baseId = 1\nlet prevIdTimestamp = new Date().getTime()\n\nexport function createId (prefix?: string): string {\n const timestamp = new Date().getTime()\n if (timestamp === prevIdTimestamp) {\n ++baseId\n } else {\n baseId = 1\n }\n prevIdTimestamp = timestamp\n return `${prefix ?? ''}${timestamp}_${baseId}`\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Create dom\n * @param tagName\n * @param styles\n * @return {*}\n */\nexport function createDom (tagName: K, styles?: Partial): HTMLElementTagNameMap[K] {\n const dom = document.createElement(tagName)\n const s = styles ?? {}\n for (const key in s) {\n (dom.style)[key] = s[key] ?? ''\n }\n return dom\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet measureCtx: CanvasRenderingContext2D\n\n/**\n * Get pixel ratio\n * @param canvas\n * @returns {number}\n */\nexport function getPixelRatio (canvas: HTMLCanvasElement): number {\n return Math.ceil(canvas.ownerDocument?.defaultView?.devicePixelRatio ?? 2)\n}\n\nexport function createFont (size?: number, weight?: string | number, family?: string): string {\n return `${weight ?? 'normal'} ${size ?? 12}px ${family ?? 'Helvetica Neue'}`\n}\n\n/**\n * Measure the width of text\n * @param text\n * @returns {number}\n */\nexport function calcTextWidth (text: string, size?: number, weight?: string | number, family?: string): number {\n if (measureCtx === undefined) {\n const canvas = document.createElement('canvas')\n const pixelRatio = getPixelRatio(canvas)\n measureCtx = canvas.getContext('2d') as CanvasRenderingContext2D\n measureCtx.scale(pixelRatio, pixelRatio)\n }\n measureCtx.font = createFont(size, weight, family)\n return Math.round(measureCtx.measureText(text).width)\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// @ts-expect-error\nconst DEV = '__BUILD_ENV__' === 'development'\n\nfunction log (templateText: string, tagStyle: string, messageStyle: string, api: string, invalidParam: string, append: string): void {\n if (DEV) {\n const apiStr = api !== '' ? `Call api ${api}${invalidParam !== '' || append !== '' ? ', ' : '.'}` : ''\n const invalidParamStr = invalidParam !== '' ? `invalid parameter ${invalidParam}${append !== '' ? ', ' : '.'}` : ''\n const appendStr = append !== '' ? append : ''\n console.log(templateText, tagStyle, messageStyle, apiStr, invalidParamStr, appendStr)\n }\n}\n\nexport function logWarn (api: string, invalidParam: string, append?: string): void {\n log(\n '%c😑 klinecharts warning%c %s%s%s',\n 'padding:3px 4px;border-radius:2px;color:#ffffff;background-color:#FF9600',\n 'color:#FF9600',\n api, invalidParam, append ?? ''\n )\n}\n\nexport function logError (api: string, invalidParam: string, append?: string): void {\n log(\n '%c😟 klinecharts error%c %s%s%s',\n 'padding:3px 4px;border-radius:2px;color:#ffffff;background-color:#EF5350;',\n 'color:#EF5350;',\n api, invalidParam, append ?? ''\n )\n}\n\nexport function logTag (): void {\n log(\n '%c❤️ Welcome to klinecharts. Version is __BUILD_VERSION__',\n 'border-radius:4px;border:dashed 1px #1677FF;line-height:70px;padding:0 20px;margin:16px 0;font-size:14px;color:#1677FF;',\n '',\n '',\n '',\n ''\n )\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Binary search for the nearest result\n * @param dataList\n * @param valueKey\n * @param targetValue\n * @return {number}\n */\nexport function binarySearchNearest (dataList: any[], valueKey: string, targetValue: any): number {\n let left = 0\n let right = 0\n for (right = dataList.length - 1; left !== right;) {\n const midIndex = Math.floor((right + left) / 2)\n const mid = right - left\n const midValue = dataList[midIndex][valueKey]\n if (targetValue === dataList[left][valueKey]) {\n return left\n }\n if (targetValue === dataList[right][valueKey]) {\n return right\n }\n if (targetValue === midValue) {\n return midIndex\n }\n\n if (targetValue > midValue) {\n left = midIndex\n } else {\n right = midIndex\n }\n\n if (mid <= 2) {\n break\n }\n }\n return left\n}\n\n/**\n * 优化数字\n * @param value\n * @return {number|number}\n */\nexport function nice (value: number): number {\n const exponent = Math.floor(log10(value))\n const exp10 = index10(exponent)\n const f = value / exp10 // 1 <= f < 10\n let nf = 0\n if (f < 1.5) {\n nf = 1\n } else if (f < 2.5) {\n nf = 2\n } else if (f < 3.5) {\n nf = 3\n } else if (f < 4.5) {\n nf = 4\n } else if (f < 5.5) {\n nf = 5\n } else if (f < 6.5) {\n nf = 6\n } else {\n nf = 8\n }\n value = nf * exp10\n return exponent >= -20 ? +value.toFixed(exponent < 0 ? -exponent : 0) : value\n}\n\n/**\n * 四舍五入\n * @param value\n * @param precision\n * @return {number}\n */\nexport function round (value: number, precision: number): number {\n if (precision == null) {\n precision = 10\n }\n precision = Math.min(Math.max(0, precision), 20)\n const v = (+value).toFixed(precision)\n return +v\n}\n\n/**\n * 获取小数位数\n * @param value\n * @return {number|number}\n */\nexport function getPrecision (value: number): number {\n const str = value.toString()\n const eIndex = str.indexOf('e')\n if (eIndex > 0) {\n const precision = +str.slice(eIndex + 1)\n return precision < 0 ? -precision : 0\n } else {\n const dotIndex = str.indexOf('.')\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex\n }\n}\n\nexport function getMaxMin (dataList: D[], maxKey: string, minKey: string): number[] {\n const maxMin = [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER]\n dataList.forEach(data => {\n maxMin[0] = Math.max(data[maxKey] ?? data, maxMin[0])\n maxMin[1] = Math.min(data[minKey] ?? data, maxMin[1])\n })\n return maxMin\n}\n\n/**\n * 10为底的对数函数\n * @param value\n * @return {number}\n */\nexport function log10 (value: number): number {\n return Math.log(value) / Math.log(10)\n}\n\n/**\n * 10的指数函数\n * @param value\n * @return {number}\n */\nexport function index10 (value: number): number {\n return Math.pow(10, value)\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport default interface VisibleRange {\n readonly from: number\n readonly to: number\n readonly realFrom: number\n readonly realTo: number\n}\n\nexport function getDefaultVisibleRange (): VisibleRange {\n return { from: 0, to: 0, realFrom: 0, realTo: 0 }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport Coordinate from '../common/Coordinate'\nimport KLineData from '../common/KLineData'\nimport BarSpace from '../common/BarSpace'\nimport VisibleRange, { getDefaultVisibleRange } from '../common/VisibleRange'\nimport LoadMoreCallback from '../common/LoadMoreCallback'\nimport { ActionType } from '../common/Action'\n\nimport { logWarn } from '../common/utils/logger'\nimport { binarySearchNearest } from '../common/utils/number'\n\nimport ChartStore from './ChartStore'\n\ninterface MinVisibleBarCount {\n left: number\n right: number\n}\n\nconst BarSpaceLimitContants = {\n MIN: 1,\n MAX: 50\n}\n\nconst DEFAULT_BAR_SPACE = 6\n\nconst DEFAULT_OFFSET_RIGHT_DISTANCE = 50\n\nexport default class TimeScaleStore {\n /**\n * Root store\n */\n private readonly _chartStore: ChartStore\n\n /**\n * Time foramt\n */\n private _dateTimeFormat: Intl.DateTimeFormat = this._buildDateTimeFormat() as Intl.DateTimeFormat\n\n /**\n * Scale enabled flag\n */\n private _zoomEnabled: boolean = true\n\n /**\n * Scroll enabled flag\n */\n private _scrollEnabled: boolean = true\n\n /**\n * Is loding data flag\n */\n private _loading: boolean = true\n\n /**\n * Load more data callback\n */\n private _loadMoreCallback: Nullable = null\n\n /**\n * Whether there are more flag\n */\n private _more: boolean = true\n\n /**\n * Total space of drawing area\n */\n private _totalBarSpace: number = 0\n\n /**\n * Space occupied by a single piece of data\n */\n private _barSpace: number = DEFAULT_BAR_SPACE\n\n /**\n * The space of the draw bar\n */\n private _gapBarSpace: number\n\n /**\n * Distance from the last data to the right of the drawing area\n */\n private _offsetRightDistance = DEFAULT_OFFSET_RIGHT_DISTANCE\n\n /**\n * The number of bar calculated from the distance of the last data to the right of the drawing area\n */\n private _offsetRightBarCount: number\n\n /**\n * The number of bar to the right of the drawing area from the last data when scrolling starts\n */\n private _startScrollOffsetRightBarCount = 0\n\n /**\n * Scroll to the leftmost and rightmost visible bar\n */\n private readonly _minVisibleBarCount: MinVisibleBarCount = { left: 2, right: 2 }\n\n /**\n * Start and end points of visible area data index\n */\n private _visibleRange: VisibleRange = getDefaultVisibleRange()\n\n constructor (chartStore: ChartStore) {\n this._chartStore = chartStore\n this._gapBarSpace = this._calcGapBarSpace()\n this._offsetRightBarCount = this._offsetRightDistance / this._barSpace\n }\n\n private _calcGapBarSpace (): number {\n const rateSpace = Math.floor(this._barSpace * 0.82)\n const floorSpace = Math.floor(this._barSpace)\n const optimalSpace = Math.min(rateSpace, floorSpace - 1)\n return Math.max(1, optimalSpace)\n }\n\n /**\n * adjust visible range\n */\n adjustVisibleRange (): void {\n const dataList = this._chartStore.getDataList()\n const dataCount = dataList.length\n const barCount = this._totalBarSpace / this._barSpace\n const maxRightOffsetBarCount = barCount - Math.min(this._minVisibleBarCount.left, dataCount)\n if (this._offsetRightBarCount > maxRightOffsetBarCount) {\n this._offsetRightBarCount = maxRightOffsetBarCount\n }\n\n const minRightOffsetBarCount = -dataCount + Math.min(this._minVisibleBarCount.right, dataCount)\n if (this._offsetRightBarCount < minRightOffsetBarCount) {\n this._offsetRightBarCount = minRightOffsetBarCount\n }\n let to = Math.round(this._offsetRightBarCount + dataCount + 0.5)\n if (to > dataCount) {\n to = dataCount\n }\n let from = Math.round(to - barCount) - 1\n if (from < 0) {\n from = 0\n }\n const realFrom = this._offsetRightBarCount > 0 ? Math.round(dataCount + this._offsetRightBarCount - barCount) - 1 : from\n this._visibleRange = { from, to, realFrom, realTo: to }\n this._chartStore.getActionStore().execute(ActionType.OnVisibleRangeChange, this._visibleRange)\n this._chartStore.adjustVisibleDataList()\n // More processing and loading, more loading if there are callback methods and no data is being loaded\n if (from === 0 && this._more && !this._loading && this._loadMoreCallback !== null) {\n this._loading = true\n const firstData = dataList[0]\n this._loadMoreCallback(firstData?.timestamp ?? null)\n }\n }\n\n setMore (more: boolean): TimeScaleStore {\n this._more = more\n return this\n }\n\n setLoading (loading: boolean): TimeScaleStore {\n this._loading = loading\n return this\n }\n\n getDateTimeFormat (): Intl.DateTimeFormat {\n return this._dateTimeFormat\n }\n\n _buildDateTimeFormat (timezone?: string): Nullable {\n const options: Intl.DateTimeFormatOptions = {\n hour12: false,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit'\n }\n if (timezone !== undefined) {\n options.timeZone = timezone\n }\n let dateTimeFormat: Nullable = null\n try {\n dateTimeFormat = new Intl.DateTimeFormat('en', options)\n } catch (e) {\n logWarn('', '', 'Timezone is error!!!')\n }\n return dateTimeFormat\n }\n\n setTimezone (timezone: string): void {\n const dateTimeFormat: Nullable = this._buildDateTimeFormat(timezone)\n if (dateTimeFormat !== null) {\n this._dateTimeFormat = dateTimeFormat\n }\n }\n\n getTimezone (): string {\n return this._dateTimeFormat.resolvedOptions().timeZone\n }\n\n getBarSpace (): BarSpace {\n return {\n bar: this._barSpace,\n halfBar: this._barSpace / 2,\n gapBar: this._gapBarSpace,\n halfGapBar: this._gapBarSpace / 2\n }\n }\n\n setBarSpace (barSpace: number, adjustBeforeFunc?: () => void): void {\n if (barSpace < BarSpaceLimitContants.MIN || barSpace > BarSpaceLimitContants.MAX || this._barSpace === barSpace) {\n return\n }\n this._barSpace = barSpace\n this._gapBarSpace = this._calcGapBarSpace()\n adjustBeforeFunc?.()\n this.adjustVisibleRange()\n this._chartStore.getCrosshairStore().recalculate(true)\n this._chartStore.getChart().adjustPaneViewport(false, true, true, true)\n }\n\n setTotalBarSpace (totalSpace: number): TimeScaleStore {\n if (this._totalBarSpace !== totalSpace) {\n this._totalBarSpace = totalSpace\n this.adjustVisibleRange()\n this._chartStore.getCrosshairStore().recalculate(true)\n }\n return this\n }\n\n setOffsetRightDistance (distance: number, isUpdate?: boolean): TimeScaleStore {\n this._offsetRightDistance = distance\n this._offsetRightBarCount = distance / this._barSpace\n if (isUpdate ?? false) {\n this.adjustVisibleRange()\n this._chartStore.getCrosshairStore().recalculate(true)\n this._chartStore.getChart().adjustPaneViewport(false, true, true, true)\n }\n return this\n }\n\n resetOffsetRightDistance (): void {\n this.setOffsetRightDistance(this._offsetRightDistance)\n }\n\n getInitialOffsetRightDistance (): number {\n return this._offsetRightDistance\n }\n\n getOffsetRightDistance (): number {\n return Math.max(0, this._offsetRightBarCount * this._barSpace)\n }\n\n getOffsetRightBarCount (): number {\n return this._offsetRightBarCount\n }\n\n setOffsetRightBarCount (barCount: number): TimeScaleStore {\n this._offsetRightBarCount = barCount\n return this\n }\n\n setLeftMinVisibleBarCount (barCount: number): TimeScaleStore {\n this._minVisibleBarCount.left = barCount\n return this\n }\n\n setRightMinVisibleBarCount (barCount: number): TimeScaleStore {\n this._minVisibleBarCount.right = barCount\n return this\n }\n\n getVisibleRange (): VisibleRange {\n return this._visibleRange\n }\n\n startScroll (): void {\n this._startScrollOffsetRightBarCount = this._offsetRightBarCount\n }\n\n scroll (distance: number): void {\n if (!this._scrollEnabled) {\n return\n }\n const distanceBarCount = distance / this._barSpace\n this._chartStore.getActionStore().execute(ActionType.OnScroll)\n this._offsetRightBarCount = this._startScrollOffsetRightBarCount - distanceBarCount\n this.adjustVisibleRange()\n this._chartStore.getCrosshairStore().recalculate(true)\n this._chartStore.getChart().adjustPaneViewport(false, true, true, true)\n }\n\n getDataByDataIndex (dataIndex: number): Nullable {\n return this._chartStore.getDataList()[dataIndex] ?? null\n }\n\n coordinateToFloatIndex (x: number): number {\n const dataCount = this._chartStore.getDataList().length\n const deltaFromRight = (this._totalBarSpace - x) / this._barSpace\n const index = dataCount + this._offsetRightBarCount - deltaFromRight\n return Math.round(index * 1000000) / 1000000\n }\n\n dataIndexToTimestamp (dataIndex: number): Nullable {\n const data = this.getDataByDataIndex(dataIndex)\n return data?.timestamp ?? null\n }\n\n timestampToDataIndex (timestamp: number): number {\n const dataList = this._chartStore.getDataList()\n if (dataList.length === 0) {\n return 0\n }\n return binarySearchNearest(dataList, 'timestamp', timestamp)\n }\n\n dataIndexToCoordinate (dataIndex: number): number {\n const dataCount = this._chartStore.getDataList().length\n const deltaFromRight = dataCount + this._offsetRightBarCount - dataIndex\n return this._totalBarSpace - (deltaFromRight - 0.5) * this._barSpace\n }\n\n coordinateToDataIndex (x: number): number {\n return Math.ceil(this.coordinateToFloatIndex(x)) - 1\n }\n\n zoom (scale: number, coordinate?: Partial): void {\n if (!this._zoomEnabled) {\n return\n }\n if (coordinate?.x === undefined) {\n const crosshair = this._chartStore.getCrosshairStore().get()\n coordinate = { x: crosshair?.x ?? this._totalBarSpace / 2 }\n }\n this._chartStore.getActionStore().execute(ActionType.OnZoom)\n const floatIndex = this.coordinateToFloatIndex(coordinate.x as number)\n const barSpace = this._barSpace + scale * (this._barSpace / 10)\n this.setBarSpace(barSpace, () => {\n this._offsetRightBarCount += (floatIndex - this.coordinateToFloatIndex(coordinate?.x as number))\n })\n }\n\n setZoomEnabled (enabled: boolean): TimeScaleStore {\n this._zoomEnabled = enabled\n return this\n }\n\n getZoomEnabled (): boolean {\n return this._zoomEnabled\n }\n\n setScrollEnabled (enabled: boolean): TimeScaleStore {\n this._scrollEnabled = enabled\n return this\n }\n\n getScrollEnabled (): boolean {\n return this._scrollEnabled\n }\n\n setLoadMoreCallback (callback: LoadMoreCallback): TimeScaleStore {\n this._loadMoreCallback = callback\n return this\n }\n\n clear (): void {\n this._more = true\n this._loading = true\n this._visibleRange = getDefaultVisibleRange()\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport ExcludePickPartial from '../common/ExcludePickPartial'\nimport KLineData from '../common/KLineData'\nimport Bounding from '../common/Bounding'\nimport VisibleRange from '../common/VisibleRange'\nimport BarSpace from '../common/BarSpace'\nimport Crosshair from '../common/Crosshair'\nimport { IndicatorStyle, IndicatorPolygonStyle, SmoothLineStyle, RectStyle, RectTextStyle, TooltipData, TooltipIconStyle, LineStyle, LineType, PolygonType } from '../common/Options'\n\nimport { XAxis } from './XAxis'\nimport { YAxis } from './YAxis'\n\nimport { formatValue } from '../common/utils/format'\nimport { isValid } from '../common/utils/typeChecks'\n\nimport { ArcAttrs } from '../extension/figure/arc'\nimport { RectAttrs } from '../extension/figure/rect'\nimport { TextAttrs } from '../extension/figure/text'\n\nexport enum IndicatorSeries {\n Normal = 'normal',\n Price = 'price',\n Volume = 'volume'\n}\n\nexport type IndicatorFigureStyle = Partial> & Partial> & Partial & Partial<{ style: LineType[keyof LineType] | PolygonType[keyof PolygonType] }> & {[key: string]: any }\n\nexport type IndicatorFigureAttrs = Partial & Partial & Partial & Partial & { [key: string]: any }\n\nexport interface IndicatorFigureCallbackBrother {\n prev: PCN\n current: PCN\n next: PCN\n}\n\nexport type IndicatorFigureAttrsCallbackCoordinate = IndicatorFigureCallbackBrother & { x: number }>\n\nexport interface IndicatorFigureAttrsCallbackParams {\n coordinate: IndicatorFigureAttrsCallbackCoordinate\n bounding: Bounding\n barSpace: BarSpace\n xAxis: XAxis\n yAxis: YAxis\n}\n\nexport interface IndicatorFigureStylesCallbackDataChild {\n kLineData?: KLineData\n indicatorData?: D\n}\n\nexport type IndicatorFigureStylesCallbackData = IndicatorFigureCallbackBrother>\n\nexport type IndicatorFigureAttrsCallback = (params: IndicatorFigureAttrsCallbackParams) => IndicatorFigureAttrs\nexport type IndicatorFigureStylesCallback = (data: IndicatorFigureStylesCallbackData, indicator: Indicator, defaultStyles: IndicatorStyle) => IndicatorFigureStyle\n\nexport interface IndicatorFigure {\n key: string\n title?: string\n type?: string\n baseValue?: number\n attrs?: IndicatorFigureAttrsCallback\n styles?: IndicatorFigureStylesCallback\n}\n\nexport type IndicatorRegenerateFiguresCallback = (calcParms: any[]) => Array>\n\nexport interface IndicatorTooltipData {\n name: string\n calcParamsText: string\n icons: TooltipIconStyle[]\n values: TooltipData[]\n}\n\nexport interface IndicatorCreateTooltipDataSourceParams {\n kLineDataList: KLineData[]\n indicator: Indicator\n visibleRange: VisibleRange\n bounding: Bounding\n crosshair: Crosshair\n defaultStyles: IndicatorStyle\n xAxis: XAxis\n yAxis: YAxis\n}\n\nexport type IndicatorCreateTooltipDataSourceCallback = (params: IndicatorCreateTooltipDataSourceParams) => IndicatorTooltipData\n\nexport interface IndicatorDrawParams {\n ctx: CanvasRenderingContext2D\n kLineDataList: KLineData[]\n indicator: Indicator\n visibleRange: VisibleRange\n bounding: Bounding\n barSpace: BarSpace\n defaultStyles: IndicatorStyle\n xAxis: XAxis\n yAxis: YAxis\n}\n\nexport type IndicatorDrawCallback = (params: IndicatorDrawParams) => boolean\nexport type IndicatorCalcCallback = (dataList: KLineData[], indicator: Indicator) => Promise | D[]\n\nexport interface Indicator {\n /**\n * Indicator name\n */\n name: string\n\n /**\n * Short name, for display\n */\n shortName: string\n\n /**\n * Precision\n */\n precision: number\n\n /**\n * Calculation parameters\n */\n calcParams: any[]\n\n /**\n * Whether ohlc column is required\n */\n shouldOhlc: boolean\n\n /**\n * Whether large data values need to be formatted, starting from 1000, for example, whether 100000 needs to be formatted with 100K\n */\n shouldFormatBigNumber: boolean\n\n /**\n * Whether the indicator is visible\n */\n visible: boolean\n\n /**\n * Extend data\n */\n extendData: any\n\n /**\n * Indicator series\n */\n series: IndicatorSeries\n\n /**\n * Figure configuration information\n */\n figures: Array>\n\n /**\n * Specified minimum value\n */\n minValue: Nullable\n\n /**\n * Specified maximum value\n */\n maxValue: Nullable\n\n /**\n * Style configuration\n */\n styles: Nullable>\n\n /**\n * Indicator calculation\n */\n calc: IndicatorCalcCallback\n\n /**\n * Regenerate figure configuration\n */\n regenerateFigures: Nullable>\n\n /**\n * Create custom tooltip text\n */\n createTooltipDataSource: Nullable\n\n /**\n * Custom draw\n */\n draw: Nullable>\n\n /**\n * Calculation result\n */\n result: D[]\n}\n\nexport type IndicatorTemplate = ExcludePickPartial, 'reult'>, 'name' | 'calc'>\n\nexport type IndicatorCreate = ExcludePickPartial, 'reult'>, 'name'>\n\nexport type IndicatorConstructor = new () => IndicatorImp\n\nexport type EachFigureCallback = (figure: IndicatorFigure, figureStyles: IndicatorFigureStyle) => void\n\nexport function eachFigures (\n kLineDataList: KLineData[],\n indicator: Indicator,\n dataIndex: number,\n defaultStyles: IndicatorStyle,\n eachFigureCallback: EachFigureCallback\n): void {\n const result = indicator.result\n const figures = indicator.figures\n const styles = indicator.styles\n\n const circleStyles = formatValue(styles, 'circles', defaultStyles.circles) as IndicatorPolygonStyle[]\n const circleStyleCount = circleStyles.length\n\n const barStyles = formatValue(styles, 'bars', defaultStyles.bars) as IndicatorPolygonStyle[]\n const barStyleCount = barStyles.length\n\n const lineStyles = formatValue(styles, 'lines', defaultStyles.lines) as SmoothLineStyle[]\n const lineStyleCount = lineStyles.length\n\n let circleCount = 0\n let barCount = 0\n let lineCount = 0\n\n let defaultFigureStyles\n figures.forEach(figure => {\n switch (figure.type) {\n case 'circle': {\n const styles = circleStyles[circleCount % circleStyleCount]\n defaultFigureStyles = { ...styles, color: styles.noChangeColor }\n circleCount++\n break\n }\n case 'bar': {\n const styles = barStyles[barCount % barStyleCount]\n defaultFigureStyles = { ...styles, color: styles.noChangeColor }\n barCount++\n break\n }\n case 'line': {\n defaultFigureStyles = lineStyles[lineCount % lineStyleCount]\n lineCount++\n break\n }\n default: { break }\n }\n if (isValid(defaultFigureStyles)) {\n const cbData = {\n prev: { kLineData: kLineDataList[dataIndex - 1], indicatorData: result[dataIndex - 1] },\n current: { kLineData: kLineDataList[dataIndex], indicatorData: result[dataIndex] },\n next: { kLineData: kLineDataList[dataIndex + 1], indicatorData: result[dataIndex + 1] }\n }\n const ss = figure.styles?.(cbData, indicator, defaultStyles)\n eachFigureCallback(figure, { ...defaultFigureStyles, ...ss })\n }\n })\n}\n\nexport default abstract class IndicatorImp implements Indicator {\n name: string\n shortName: string\n precision: number\n calcParams: any[]\n shouldOhlc: boolean\n shouldFormatBigNumber: boolean\n visible: boolean\n extendData: any\n series: IndicatorSeries\n figures: Array>\n minValue: Nullable\n maxValue: Nullable\n styles: Nullable>\n regenerateFigures: Nullable>\n createTooltipDataSource: Nullable\n draw: Nullable>\n\n result: D[] = []\n\n private _precisionFlag: boolean = false\n\n constructor (indicator: IndicatorTemplate) {\n const {\n name, shortName, series, calcParams, figures, precision,\n shouldOhlc, shouldFormatBigNumber, visible,\n minValue, maxValue, styles, extendData,\n regenerateFigures, createTooltipDataSource, draw\n } = indicator\n this.name = name\n this.shortName = shortName ?? name\n this.series = series ?? IndicatorSeries.Normal\n this.precision = precision ?? 4\n this.calcParams = calcParams ?? []\n this.figures = figures ?? []\n this.shouldOhlc = shouldOhlc ?? false\n this.shouldFormatBigNumber = shouldFormatBigNumber ?? false\n this.visible = visible ?? true\n this.minValue = minValue ?? null\n this.maxValue = maxValue ?? null\n this.styles = styles ?? null\n this.extendData = extendData\n this.regenerateFigures = regenerateFigures ?? null\n this.createTooltipDataSource = createTooltipDataSource ?? null\n this.draw = draw ?? null\n }\n\n setShortName (shortName: string): boolean {\n if (this.shortName !== shortName) {\n this.shortName = shortName\n return true\n }\n return false\n }\n\n setSeries (series: IndicatorSeries): boolean {\n if (this.series !== series) {\n this.series = series\n return true\n }\n return false\n }\n\n setPrecision (precision: number, flag?: boolean): boolean {\n const f = flag ?? false\n const optimalPrecision = Math.floor(precision)\n if (optimalPrecision !== this.precision && precision >= 0 && (!f || (f && !this._precisionFlag))) {\n this.precision = optimalPrecision\n if (!f) {\n this._precisionFlag = true\n }\n return true\n }\n return false\n }\n\n setCalcParams (params: any[]): boolean {\n this.calcParams = params\n this.figures = this.regenerateFigures?.(params) ?? this.figures\n return true\n }\n\n setShouldOhlc (shouldOhlc: boolean): boolean {\n if (this.shouldOhlc !== shouldOhlc) {\n this.shouldOhlc = shouldOhlc\n return true\n }\n return false\n }\n\n setShouldFormatBigNumber (shouldFormatBigNumber: boolean): boolean {\n if (this.shouldFormatBigNumber !== shouldFormatBigNumber) {\n this.shouldFormatBigNumber = shouldFormatBigNumber\n return true\n }\n return false\n }\n\n setVisible (visible: boolean): boolean {\n if (this.visible !== visible) {\n this.visible = visible\n return true\n }\n return false\n }\n\n setStyles (styles: Nullable>): boolean {\n if (this.styles !== styles) {\n this.styles = styles\n return true\n }\n return false\n }\n\n setExtendData (extendData: any): boolean {\n if (this.extendData !== extendData) {\n this.extendData = extendData\n return true\n }\n return false\n }\n\n setFigures (figures: IndicatorFigure[]): boolean {\n if (this.figures !== figures) {\n this.figures = figures\n return true\n }\n return false\n }\n\n setMinValue (value: Nullable): boolean {\n if (this.minValue !== value) {\n this.minValue = value\n return true\n }\n return false\n }\n\n setMaxValue (value: Nullable): boolean {\n if (this.maxValue !== value) {\n this.maxValue = value\n return true\n }\n return false\n }\n\n setRegenerateFigures (callback: Nullable): boolean {\n if (this.regenerateFigures !== callback) {\n this.regenerateFigures = callback\n return true\n }\n return false\n }\n\n setCreateTooltipDataSource (callback: Nullable): boolean {\n if (this.createTooltipDataSource !== callback) {\n this.createTooltipDataSource = callback\n return true\n }\n return false\n }\n\n setDraw (callback: Nullable): boolean {\n if (this.draw !== callback) {\n this.draw = callback\n return true\n }\n return false\n }\n\n async calcIndicator (dataList: KLineData[]): Promise {\n try {\n const result = await this.calc(dataList, this)\n this.result = result\n return true\n } catch (e) {\n return false\n }\n }\n\n abstract calc (dataList: KLineData[], indicator: Indicator): D[] | Promise\n\n static extend (template: IndicatorTemplate): IndicatorConstructor {\n class Custom extends IndicatorImp {\n constructor () {\n super(template)\n }\n\n calc (dataList: KLineData[], indicator: Indicator): D[] | Promise {\n return template.calc(dataList, indicator)\n }\n }\n return Custom\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { IndicatorTemplate, IndicatorSeries } from '../../component/Indicator'\n\ninterface Avp {\n avp?: number\n}\n\n/**\n * averager price\n */\nconst averagePrice: IndicatorTemplate = {\n name: 'AVP',\n shortName: 'AVP',\n series: IndicatorSeries.Price,\n precision: 2,\n figures: [\n { key: 'avp', title: 'AVP: ', type: 'line' }\n ],\n calc: (dataList: KLineData[]) => {\n let totalTurnover = 0\n let totalVolume = 0\n return dataList.map((kLineData: KLineData) => {\n const avp: Avp = {}\n const turnover = kLineData?.turnover ?? 0\n const volume = kLineData?.volume ?? 0\n totalTurnover += turnover\n totalVolume += volume\n if (totalVolume !== 0) {\n avp.avp = totalTurnover / totalVolume\n }\n return avp\n })\n }\n}\n\nexport default averagePrice\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { IndicatorStyle, PolygonType } from '../../common/Options'\nimport { formatValue } from '../../common/utils/format'\n\nimport { Indicator, IndicatorTemplate, IndicatorFigureStylesCallbackData } from '../../component/Indicator'\n\ninterface Ao {\n ao?: number\n}\n\nconst awesomeOscillator: IndicatorTemplate = {\n name: 'AO',\n shortName: 'AO',\n calcParams: [5, 34],\n figures: [{\n key: 'ao',\n title: 'AO: ',\n type: 'bar',\n baseValue: 0,\n styles: (data: IndicatorFigureStylesCallbackData, indicator: Indicator, defaultStyles: IndicatorStyle) => {\n const { prev, current } = data\n const prevAo = prev.indicatorData?.ao ?? Number.MIN_SAFE_INTEGER\n const currentAo = current.indicatorData?.ao ?? Number.MIN_SAFE_INTEGER\n let color: string\n if (currentAo > prevAo) {\n color = formatValue(indicator.styles, 'bars[0].upColor', (defaultStyles.bars)[0].upColor) as string\n } else {\n color = formatValue(indicator.styles, 'bars[0].downColor', (defaultStyles.bars)[0].downColor) as string\n }\n const style = currentAo > prevAo ? PolygonType.Stroke : PolygonType.Fill\n return { color, style, borderColor: color }\n }\n }],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams\n const maxPeriod = Math.max(params[0], params[1])\n let shortSum = 0\n let longSum = 0\n let short = 0\n let long = 0\n return dataList.map((kLineData: KLineData, i: number) => {\n const ao: Ao = {}\n const middle = (kLineData.low + kLineData.high) / 2\n shortSum += middle\n longSum += middle\n if (i >= params[0] - 1) {\n short = shortSum / params[0]\n const agoKLineData = dataList[i - (params[0] - 1)]\n shortSum -= ((agoKLineData.low + agoKLineData.high) / 2)\n }\n if (i >= params[1] - 1) {\n long = longSum / params[1]\n const agoKLineData = dataList[i - (params[1] - 1)]\n longSum -= ((agoKLineData.low + agoKLineData.high) / 2)\n }\n if (i >= maxPeriod - 1) {\n ao.ao = short - long\n }\n return ao\n })\n }\n}\n\nexport default awesomeOscillator\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Bias {\n bias1?: number\n bias2?: number\n bias3?: number\n}\n\n/**\n * BIAS\n * 乖离率=[(当日收盘价-N日平均价)/N日平均价]*100%\n */\nconst bias: IndicatorTemplate = {\n name: 'BIAS',\n shortName: 'BIAS',\n calcParams: [6, 12, 24],\n figures: [\n { key: 'bias1', title: 'BIAS6: ', type: 'line' },\n { key: 'bias2', title: 'BIAS12: ', type: 'line' },\n { key: 'bias3', title: 'BIAS24: ', type: 'line' }\n ],\n regenerateFigures: (params: any[]) => {\n return params.map((p: number, i: number) => {\n return { key: `bias${i + 1}`, title: `BIAS${p}: `, type: 'line' }\n })\n },\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const { calcParams: params, figures } = indicator\n const closeSums: number[] = []\n return dataList.map((kLineData: KLineData, i: number) => {\n const bias: Bias = {}\n const close = kLineData.close\n params.forEach((p, index) => {\n closeSums[index] = (closeSums[index] ?? 0) + close\n if (i >= p - 1) {\n const mean = closeSums[index] / params[index]\n bias[figures[index].key] = (close - mean) / mean * 100\n\n closeSums[index] -= dataList[i - (p - 1)].close\n }\n })\n return bias\n })\n }\n}\n\nexport default bias\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate, IndicatorSeries } from '../../component/Indicator'\n\ninterface Boll {\n up?: number\n mid?: number\n dn?: number\n}\n\n/**\n * 计算布林指标中的标准差\n * @param dataList\n * @param ma\n * @return {number}\n */\nfunction getBollMd (dataList: KLineData[], ma: number): number {\n const dataSize = dataList.length\n let sum = 0\n dataList.forEach(data => {\n const closeMa = data.close - ma\n sum += closeMa * closeMa\n })\n sum = Math.abs(sum)\n return Math.sqrt(sum / dataSize)\n}\n\n/**\n * BOLL\n */\nconst bollingerBands: IndicatorTemplate = {\n name: 'BOLL',\n shortName: 'BOLL',\n series: IndicatorSeries.Price,\n calcParams: [20, 2],\n precision: 2,\n shouldOhlc: true,\n figures: [\n { key: 'up', title: 'UP: ', type: 'line' },\n { key: 'mid', title: 'MID: ', type: 'line' },\n { key: 'dn', title: 'DN: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams\n const p = params[0] - 1\n let closeSum = 0\n return dataList.map((kLineData: KLineData, i: number) => {\n const close = kLineData.close\n const boll: Boll = {}\n closeSum += close\n if (i >= p) {\n boll.mid = closeSum / params[0]\n const md = getBollMd(dataList.slice(i - p, i + 1), boll.mid)\n boll.up = boll.mid + params[1] * md\n boll.dn = boll.mid - params[1] * md\n closeSum -= dataList[i - p].close\n }\n return boll\n })\n }\n}\n\nexport default bollingerBands\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Brar {\n br?: number\n ar?: number\n}\n\n/**\n * BRAR\n * 默认参数是26。\n * 公式N日BR=N日内(H-CY)之和除以N日内(CY-L)之和*100,\n * 其中,H为当日最高价,L为当日最低价,CY为前一交易日的收盘价,N为设定的时间参数。\n * N日AR=(N日内(H-O)之和除以N日内(O-L)之和)*100,\n * 其中,H为当日最高价,L为当日最低价,O为当日开盘价,N为设定的时间参数\n *\n */\nconst brar: IndicatorTemplate = {\n name: 'BRAR',\n shortName: 'BRAR',\n calcParams: [26],\n figures: [\n { key: 'br', title: 'BR: ', type: 'line' },\n { key: 'ar', title: 'AR: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams\n let hcy = 0\n let cyl = 0\n let ho = 0\n let ol = 0\n return dataList.map((kLineData: KLineData, i: number) => {\n const brar: Brar = {}\n const high = kLineData.high\n const low = kLineData.low\n const open = kLineData.open\n const prevClose = (dataList[i - 1] ?? kLineData).close\n ho += (high - open)\n ol += (open - low)\n hcy += (high - prevClose)\n cyl += (prevClose - low)\n if (i >= params[0] - 1) {\n if (ol !== 0) {\n brar.ar = ho / ol * 100\n } else {\n brar.ar = 0\n }\n if (cyl !== 0) {\n brar.br = hcy / cyl * 100\n } else {\n brar.br = 0\n }\n const agoKLineData = dataList[i - (params[0] - 1)]\n const agoHigh = agoKLineData.high\n const agoLow = agoKLineData.low\n const agoOpen = agoKLineData.open\n const agoPreClose = (dataList[i - params[0]] ?? dataList[i - (params[0] - 1)]).close\n hcy -= (agoHigh - agoPreClose)\n cyl -= (agoPreClose - agoLow)\n ho -= (agoHigh - agoOpen)\n ol -= (agoOpen - agoLow)\n }\n return brar\n })\n }\n}\n\nexport default brar\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate, IndicatorSeries } from '../../component/Indicator'\n\ninterface Bbi {\n bbi?: number\n}\n\n/**\n * 多空指标\n * 公式: BBI = (MA(CLOSE, M) + MA(CLOSE, N) + MA(CLOSE, O) + MA(CLOSE, P)) / 4\n *\n */\nconst bullAndBearIndex: IndicatorTemplate = {\n name: 'BBI',\n shortName: 'BBI',\n series: IndicatorSeries.Price,\n precision: 2,\n calcParams: [3, 6, 12, 24],\n shouldOhlc: true,\n figures: [\n { key: 'bbi', title: 'BBI: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams\n const maxPeriod = Math.max(...params)\n const closeSums: number[] = []\n const mas: number[] = []\n return dataList.map((kLineData: KLineData, i: number) => {\n const bbi: Bbi = {}\n const close = kLineData.close\n params.forEach((p: number, index: number) => {\n closeSums[index] = (closeSums[index] ?? 0) + close\n if (i >= p - 1) {\n mas[index] = closeSums[index] / p\n closeSums[index] -= dataList[i - (p - 1)].close\n }\n })\n if (i >= maxPeriod - 1) {\n let maSum = 0\n mas.forEach(ma => {\n maSum += ma\n })\n bbi.bbi = maSum / 4\n }\n return bbi\n })\n }\n}\n\nexport default bullAndBearIndex\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Cci {\n cci?: number\n}\n\n/**\n * CCI\n * CCI(N日)=(TP-MA)÷MD÷0.015\n * 其中,TP=(最高价+最低价+收盘价)÷3\n * MA=近N日TP价的累计之和÷N\n * MD=近N日TP - 当前MA绝对值的累计之和÷N\n *\n */\nconst commodityChannelIndex: IndicatorTemplate = {\n name: 'CCI',\n shortName: 'CCI',\n calcParams: [20],\n figures: [\n { key: 'cci', title: 'CCI: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams\n const p = params[0] - 1\n let tpSum = 0\n const tpList: number[] = []\n return dataList.map((kLineData: KLineData, i: number) => {\n const cci: Cci = {}\n const tp = (kLineData.high + kLineData.low + kLineData.close) / 3\n tpSum += tp\n tpList.push(tp)\n if (i >= p) {\n const maTp = tpSum / params[0]\n const sliceTpList = tpList.slice(i - p, i + 1)\n let sum = 0\n sliceTpList.forEach(tp => {\n sum += Math.abs(tp - maTp)\n })\n const md = sum / params[0]\n cci.cci = md !== 0 ? (tp - maTp) / md / 0.015 : 0\n const agoTp = (dataList[i - p].high + dataList[i - p].low + dataList[i - p].close) / 3\n tpSum -= agoTp\n }\n return cci\n })\n }\n}\n\nexport default commodityChannelIndex\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http:*www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Cr {\n cr?: number\n ma1?: number\n ma2?: number\n ma3?: number\n ma4?: number\n}\n\n/**\n * MID:=REF(HIGH+LOW,1)/2;\n * CR:SUM(MAX(0,HIGH-MID),N)/SUM(MAX(0,MID-LOW),N)*100;\n * MA1:REF(MA(CR,M1),M1/2.5+1);\n * MA2:REF(MA(CR,M2),M2/2.5+1);\n * MA3:REF(MA(CR,M3),M3/2.5+1);\n * MA4:REF(MA(CR,M4),M4/2.5+1);\n * MID赋值:(昨日最高价+昨日最低价)/2\n * 输出带状能量线:0和最高价-MID的较大值的N日累和/0和MID-最低价的较大值的N日累和*100\n * 输出MA1:M1(5)/2.5+1日前的CR的M1(5)日简单移动平均\n * 输出MA2:M2(10)/2.5+1日前的CR的M2(10)日简单移动平均\n * 输出MA3:M3(20)/2.5+1日前的CR的M3(20)日简单移动平均\n * 输出MA4:M4/2.5+1日前的CR的M4日简单移动平均\n *\n */\nconst currentRatio: IndicatorTemplate = {\n name: 'CR',\n shortName: 'CR',\n calcParams: [26, 10, 20, 40, 60],\n figures: [\n { key: 'cr', title: 'CR: ', type: 'line' },\n { key: 'ma1', title: 'MA1: ', type: 'line' },\n { key: 'ma2', title: 'MA2: ', type: 'line' },\n { key: 'ma3', title: 'MA3: ', type: 'line' },\n { key: 'ma4', title: 'MA4: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n\n const ma1ForwardPeriod = Math.ceil(params[1] / 2.5 + 1)\n const ma2ForwardPeriod = Math.ceil(params[2] / 2.5 + 1)\n const ma3ForwardPeriod = Math.ceil(params[3] / 2.5 + 1)\n const ma4ForwardPeriod = Math.ceil(params[4] / 2.5 + 1)\n let ma1Sum = 0\n const ma1List: number[] = []\n let ma2Sum = 0\n const ma2List: number[] = []\n let ma3Sum = 0\n const ma3List: number[] = []\n let ma4Sum = 0\n const ma4List: number[] = []\n const result: Cr[] = []\n dataList.forEach((kLineData: KLineData, i: number) => {\n const cr: Cr = {}\n const prevData = dataList[i - 1] ?? kLineData\n const prevMid = (prevData.high + prevData.close + prevData.low + prevData.open) / 4\n\n const highSubPreMid = Math.max(0, kLineData.high - prevMid)\n\n const preMidSubLow = Math.max(0, prevMid - kLineData.low)\n\n if (i >= params[0] - 1) {\n if (preMidSubLow !== 0) {\n cr.cr = highSubPreMid / preMidSubLow * 100\n } else {\n cr.cr = 0\n }\n ma1Sum += cr.cr\n ma2Sum += cr.cr\n ma3Sum += cr.cr\n ma4Sum += cr.cr\n if (i >= params[0] + params[1] - 2) {\n ma1List.push(ma1Sum / params[1])\n if (i >= params[0] + params[1] + ma1ForwardPeriod - 3) {\n cr.ma1 = ma1List[ma1List.length - 1 - ma1ForwardPeriod]\n }\n ma1Sum -= (result[i - (params[1] - 1)].cr ?? 0)\n }\n if (i >= params[0] + params[2] - 2) {\n ma2List.push(ma2Sum / params[2])\n if (i >= params[0] + params[2] + ma2ForwardPeriod - 3) {\n cr.ma2 = ma2List[ma2List.length - 1 - ma2ForwardPeriod]\n }\n ma2Sum -= (result[i - (params[2] - 1)].cr ?? 0)\n }\n if (i >= params[0] + params[3] - 2) {\n ma3List.push(ma3Sum / params[3])\n if (i >= params[0] + params[3] + ma3ForwardPeriod - 3) {\n cr.ma3 = ma3List[ma3List.length - 1 - ma3ForwardPeriod]\n }\n ma3Sum -= (result[i - (params[3] - 1)].cr ?? 0)\n }\n if (i >= params[0] + params[4] - 2) {\n ma4List.push(ma4Sum / params[4])\n if (i >= params[0] + params[4] + ma4ForwardPeriod - 3) {\n cr.ma4 = ma4List[ma4List.length - 1 - ma4ForwardPeriod]\n }\n ma4Sum -= (result[i - (params[4] - 1)].cr ?? 0)\n }\n }\n result.push(cr)\n })\n return result\n }\n}\nexport default currentRatio\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Dma {\n dma?: number\n ama?: number\n}\n\n/**\n * DMA\n * 公式:DIF:MA(CLOSE,N1)-MA(CLOSE,N2);DIFMA:MA(DIF,M)\n */\nconst differentOfMovingAverage: IndicatorTemplate = {\n name: 'DMA',\n shortName: 'DMA',\n calcParams: [10, 50, 10],\n figures: [\n { key: 'dma', title: 'DMA: ', type: 'line' },\n { key: 'ama', title: 'AMA: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n const maxPeriod = Math.max(params[0], params[1])\n let closeSum1 = 0\n let closeSum2 = 0\n let dmaSum = 0\n const result: Dma[] = []\n dataList.forEach((kLineData: KLineData, i: number) => {\n const dma: Dma = {}\n const close = kLineData.close\n closeSum1 += close\n closeSum2 += close\n let ma1 = 0\n let ma2 = 0\n if (i >= params[0] - 1) {\n ma1 = closeSum1 / params[0]\n closeSum1 -= dataList[i - (params[0] - 1)].close\n }\n if (i >= params[1] - 1) {\n ma2 = closeSum2 / params[1]\n closeSum2 -= dataList[i - (params[1] - 1)].close\n }\n\n if (i >= maxPeriod - 1) {\n const dif = ma1 - ma2\n dma.dma = dif\n dmaSum += dif\n if (i >= maxPeriod + params[2] - 2) {\n dma.ama = dmaSum / params[2]\n dmaSum -= (result[i - (params[2] - 1)].dma ?? 0)\n }\n }\n result.push(dma)\n })\n return result\n }\n}\n\nexport default differentOfMovingAverage\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Dmi {\n pdi?: number\n mdi?: number\n adx?: number\n adxr?: number\n}\n\n/**\n * DMI\n *\n * MTR:=EXPMEMA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(REF(CLOSE,1)-LOW)),N)\n * HD :=HIGH-REF(HIGH,1);\n * LD :=REF(LOW,1)-LOW;\n * DMP:=EXPMEMA(IF(HD>0&&HD>LD,HD,0),N);\n * DMM:=EXPMEMA(IF(LD>0&&LD>HD,LD,0),N);\n *\n * PDI: DMP*100/MTR;\n * MDI: DMM*100/MTR;\n * ADX: EXPMEMA(ABS(MDI-PDI)/(MDI+PDI)*100,MM);\n * ADXR:EXPMEMA(ADX,MM);\n * 公式含义:\n * MTR赋值:最高价-最低价和最高价-昨收的绝对值的较大值和昨收-最低价的绝对值的较大值的N日指数平滑移动平均\n * HD赋值:最高价-昨日最高价\n * LD赋值:昨日最低价-最低价\n * DMP赋值:如果HD>0并且HD>LD,返回HD,否则返回0的N日指数平滑移动平均\n * DMM赋值:如果LD>0并且LD>HD,返回LD,否则返回0的N日指数平滑移动平均\n * 输出PDI:DMP*100/MTR\n * 输出MDI:DMM*100/MTR\n * 输出ADX:MDI-PDI的绝对值/(MDI+PDI)*100的MM日指数平滑移动平均\n * 输出ADXR:ADX的MM日指数平滑移动平均\n *\n */\nconst directionalMovementIndex: IndicatorTemplate = {\n name: 'DMI',\n shortName: 'DMI',\n calcParams: [14, 6],\n figures: [\n { key: 'pdi', title: 'PDI: ', type: 'line' },\n { key: 'mdi', title: 'MDI: ', type: 'line' },\n { key: 'adx', title: 'ADX: ', type: 'line' },\n { key: 'adxr', title: 'ADXR: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n let trSum = 0\n let hSum = 0\n let lSum = 0\n let mtr = 0\n let dmp = 0\n let dmm = 0\n let dxSum = 0\n let adx = 0\n const result: Dmi[] = []\n dataList.forEach((kLineData: KLineData, i: number) => {\n const dmi: Dmi = {}\n const prevKLineData = dataList[i - 1] ?? kLineData\n const preClose = prevKLineData.close\n const high = kLineData.high\n const low = kLineData.low\n const hl = high - low\n const hcy = Math.abs(high - preClose)\n const lcy = Math.abs(preClose - low)\n const hhy = high - prevKLineData.high\n const lyl = prevKLineData.low - low\n const tr = Math.max(Math.max(hl, hcy), lcy)\n const h = (hhy > 0 && hhy > lyl) ? hhy : 0\n const l = (lyl > 0 && lyl > hhy) ? lyl : 0\n trSum += tr\n hSum += h\n lSum += l\n if (i >= params[0] - 1) {\n if (i > params[0] - 1) {\n mtr = mtr - mtr / params[0] + tr\n dmp = dmp - dmp / params[0] + h\n dmm = dmm - dmm / params[0] + l\n } else {\n mtr = trSum\n dmp = hSum\n dmm = lSum\n }\n let pdi = 0\n let mdi = 0\n if (mtr !== 0) {\n pdi = dmp * 100 / mtr\n mdi = dmm * 100 / mtr\n }\n dmi.pdi = pdi\n dmi.mdi = mdi\n let dx = 0\n if (mdi + pdi !== 0) {\n dx = Math.abs((mdi - pdi)) / (mdi + pdi) * 100\n }\n dxSum += dx\n if (i >= params[0] * 2 - 2) {\n if (i > params[0] * 2 - 2) {\n adx = (adx * (params[0] - 1) + dx) / params[0]\n } else {\n adx = dxSum / params[0]\n }\n dmi.adx = adx\n if (i >= params[0] * 2 + params[1] - 3) {\n dmi.adxr = ((result[i - (params[1] - 1)].adx ?? 0) + adx) / 2\n }\n }\n }\n result.push(dmi)\n })\n return result\n }\n}\n\nexport default directionalMovementIndex\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Emv {\n emv?: number\n maEmv?: number\n}\n\n/**\n *\n * EMV 简易波动指标\n * 公式:\n * A=(今日最高+今日最低)/2\n * B=(前日最高+前日最低)/2\n * C=今日最高-今日最低\n * EM=(A-B)*C/今日成交额\n * EMV=N日内EM的累和\n * MAEMV=EMV的M日的简单移动平均\n *\n */\nconst easeOfMovementValue: IndicatorTemplate = {\n name: 'EMV',\n shortName: 'EMV',\n calcParams: [14, 9],\n figures: [\n { key: 'emv', title: 'EMV: ', type: 'line' },\n { key: 'maEmv', title: 'MAEMV: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n let emvValueSum = 0\n const emvValueList: number[] = []\n return dataList.map((kLineData: KLineData, i: number) => {\n const emv: Emv = {}\n if (i > 0) {\n const prevKLineData = dataList[i - 1]\n const high = kLineData.high\n const low = kLineData.low\n const volume = kLineData.volume ?? 0\n const distanceMoved = (high + low) / 2 - (prevKLineData.high + prevKLineData.low) / 2\n\n if (volume === 0 || high - low === 0) {\n emv.emv = 0\n } else {\n const ratio = volume / 100000000 / (high - low)\n emv.emv = distanceMoved / ratio\n }\n emvValueSum += emv.emv\n emvValueList.push(emv.emv)\n if (i >= params[0]) {\n emv.maEmv = emvValueSum / params[0]\n emvValueSum -= emvValueList[i - params[0]]\n }\n }\n return emv\n })\n }\n}\n\nexport default easeOfMovementValue\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate, IndicatorSeries } from '../../component/Indicator'\n\ninterface Ema {\n ema1?: number\n ema2?: number\n ema3?: number\n}\n\n/**\n * EMA 指数移动平均\n */\nconst exponentialMovingAverage: IndicatorTemplate = {\n name: 'EMA',\n shortName: 'EMA',\n series: IndicatorSeries.Price,\n calcParams: [6, 12, 20],\n precision: 2,\n shouldOhlc: true,\n figures: [\n { key: 'ema1', title: 'EMA6: ', type: 'line' },\n { key: 'ema2', title: 'EMA12: ', type: 'line' },\n { key: 'ema3', title: 'EMA20: ', type: 'line' }\n ],\n regenerateFigures: (params: any[]) => {\n return params.map((p: number, i: number) => {\n return { key: `ema${i + 1}`, title: `EMA${p}: `, type: 'line' }\n })\n },\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const { calcParams: params, figures } = indicator\n let closeSum = 0\n const emaValues: number[] = []\n return dataList.map((kLineData: KLineData, i: number) => {\n const ema = {}\n const close = kLineData.close\n closeSum += close\n params.forEach((p: number, index: number) => {\n if (i >= p - 1) {\n if (i > p - 1) {\n emaValues[index] = (2 * close + (p - 1) * emaValues[index]) / (p + 1)\n } else {\n emaValues[index] = closeSum / p\n }\n ema[figures[index].key] = emaValues[index]\n }\n })\n return ema\n })\n }\n}\n\nexport default exponentialMovingAverage\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Mtm {\n mtm?: number\n maMtm?: number\n}\n\n/**\n * mtm\n * 公式 MTM(N日)=C-CN\n */\nconst momentum: IndicatorTemplate = {\n name: 'MTM',\n shortName: 'MTM',\n calcParams: [12, 6],\n figures: [\n { key: 'mtm', title: 'MTM: ', type: 'line' },\n { key: 'maMtm', title: 'MAMTM: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n let mtmSum = 0\n const result: Mtm[] = []\n dataList.forEach((kLineData: KLineData, i: number) => {\n const mtm: Mtm = {}\n if (i >= params[0]) {\n const close = kLineData.close\n const agoClose = dataList[i - params[0]].close\n mtm.mtm = close - agoClose\n mtmSum += mtm.mtm\n if (i >= params[0] + params[1] - 1) {\n mtm.maMtm = mtmSum / params[1]\n mtmSum -= (result[i - (params[1] - 1)].mtm ?? 0)\n }\n }\n result.push(mtm)\n })\n return result\n }\n}\n\nexport default momentum\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate, IndicatorSeries } from '../../component/Indicator'\n\ninterface Ma {\n ma1?: number\n ma2?: number\n ma3?: number\n ma4?: number\n}\n\n/**\n * MA 移动平均\n */\nconst movingAverage: IndicatorTemplate = {\n name: 'MA',\n shortName: 'MA',\n series: IndicatorSeries.Price,\n calcParams: [5, 10, 30, 60],\n precision: 2,\n shouldOhlc: true,\n figures: [\n { key: 'ma5', title: 'MA5: ', type: 'line' },\n { key: 'ma10', title: 'MA10: ', type: 'line' },\n { key: 'ma30', title: 'MA30: ', type: 'line' },\n { key: 'ma60', title: 'MA60: ', type: 'line' }\n ],\n regenerateFigures: (params: any[]) => {\n return params.map((p: number, i: number) => {\n return { key: `ma${i + 1}`, title: `MA${p}: `, type: 'line' }\n })\n },\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const { calcParams: params, figures } = indicator\n const closeSums: number[] = []\n return dataList.map((kLineData: KLineData, i: number) => {\n const ma = {}\n const close = kLineData.close\n params.forEach((p: number, index: number) => {\n closeSums[index] = (closeSums[index] ?? 0) + close\n if (i >= p - 1) {\n ma[figures[index].key] = closeSums[index] / p\n closeSums[index] -= dataList[i - (p - 1)].close\n }\n })\n return ma\n })\n }\n}\n\nexport default movingAverage\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { IndicatorStyle, PolygonType } from '../../common/Options'\n\nimport { formatValue } from '../../common/utils/format'\n\nimport { Indicator, IndicatorTemplate, IndicatorFigureStylesCallbackData } from '../../component/Indicator'\n\ninterface Macd {\n dif?: number\n dea?: number\n macd?: number\n}\n\n/**\n * MACD:参数快线移动平均、慢线移动平均、移动平均,\n * 默认参数值12、26、9。\n * 公式:⒈首先分别计算出收盘价12日指数平滑移动平均线与26日指数平滑移动平均线,分别记为EMA(12)与EMA(26)。\n * ⒉求这两条指数平滑移动平均线的差,即:DIFF = EMA(SHORT) - EMA(LONG)。\n * ⒊再计算DIFF的M日的平均的指数平滑移动平均线,记为DEA。\n * ⒋最后用DIFF减DEA,得MACD。MACD通常绘制成围绕零轴线波动的柱形图。MACD柱状大于0涨颜色,小于0跌颜色。\n */\nconst movingAverageConvergenceDivergence: IndicatorTemplate = {\n name: 'MACD',\n shortName: 'MACD',\n calcParams: [12, 26, 9],\n figures: [\n { key: 'dif', title: 'DIF: ', type: 'line' },\n { key: 'dea', title: 'DEA: ', type: 'line' },\n {\n key: 'macd',\n title: 'MACD: ',\n type: 'bar',\n baseValue: 0,\n styles: (data: IndicatorFigureStylesCallbackData, indicator: Indicator, defaultStyles: IndicatorStyle) => {\n const { prev, current } = data\n const prevMacd = prev.indicatorData?.macd ?? Number.MIN_SAFE_INTEGER\n const currentMacd = current.indicatorData?.macd ?? Number.MIN_SAFE_INTEGER\n let color: string\n if (currentMacd > 0) {\n color = formatValue(indicator.styles, 'bars[0].upColor', (defaultStyles.bars)[0].upColor) as string\n } else if (currentMacd < 0) {\n color = formatValue(indicator.styles, 'bars[0].downColor', (defaultStyles.bars)[0].downColor) as string\n } else {\n color = formatValue(indicator.styles, 'bars[0].noChangeColor', (defaultStyles.bars)[0].noChangeColor) as string\n }\n const style = prevMacd < currentMacd ? PolygonType.Stroke : PolygonType.Fill\n return { style, color, borderColor: color }\n }\n }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n let closeSum = 0\n let emaShort: number\n let emaLong: number\n let dif = 0\n let difSum = 0\n let dea = 0\n const maxPeriod = Math.max(params[0], params[1])\n return dataList.map((kLineData: KLineData, i: number) => {\n const macd: Macd = {}\n const close = kLineData.close\n closeSum += close\n if (i >= params[0] - 1) {\n if (i > params[0] - 1) {\n emaShort = (2 * close + (params[0] - 1) * emaShort) / (params[0] + 1)\n } else {\n emaShort = closeSum / params[0]\n }\n }\n if (i >= params[1] - 1) {\n if (i > params[1] - 1) {\n emaLong = (2 * close + (params[1] - 1) * emaLong) / (params[1] + 1)\n } else {\n emaLong = closeSum / params[1]\n }\n }\n if (i >= maxPeriod - 1) {\n dif = emaShort - emaLong\n macd.dif = dif\n difSum += dif\n if (i >= maxPeriod + params[2] - 2) {\n if (i > maxPeriod + params[2] - 2) {\n dea = (dif * 2 + dea * (params[2] - 1)) / (params[2] + 1)\n } else {\n dea = difSum / params[2]\n }\n macd.macd = (dif - dea) * 2\n macd.dea = dea\n }\n }\n return macd\n })\n }\n}\n\nexport default movingAverageConvergenceDivergence\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Obv {\n obv?: number\n maObv?: number\n}\n\n/**\n * OBV\n * OBV = REF(OBV) + sign * V\n */\nconst onBalanceVolume: IndicatorTemplate = {\n name: 'OBV',\n shortName: 'OBV',\n calcParams: [30],\n figures: [\n { key: 'obv', title: 'OBV: ', type: 'line' },\n { key: 'maObv', title: 'MAOBV: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n let obvSum = 0\n let oldObv = 0\n const result: Obv[] = []\n dataList.forEach((kLineData: KLineData, i: number) => {\n const prevKLineData = dataList[i - 1] ?? kLineData\n if (kLineData.close < prevKLineData.close) {\n oldObv -= (kLineData.volume ?? 0)\n } else if (kLineData.close > prevKLineData.close) {\n oldObv += (kLineData.volume ?? 0)\n }\n const obv: Obv = { obv: oldObv }\n obvSum += oldObv\n if (i >= params[0] - 1) {\n obv.maObv = obvSum / params[0]\n obvSum -= (result[i - (params[0] - 1)].obv ?? 0)\n }\n result.push(obv)\n })\n return result\n }\n}\n\nexport default onBalanceVolume\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { IndicatorTemplate } from '../../component/Indicator'\n\ninterface Pvt {\n pvt?: number\n}\n\n/**\n * 价量趋势指标\n * 公式:\n * X = (CLOSE - REF(CLOSE, 1)) / REF(CLOSE, 1) * VOLUME\n * PVT = SUM(X)\n *\n */\nconst priceAndVolumeTrend: IndicatorTemplate = {\n name: 'PVT',\n shortName: 'PVT',\n figures: [\n { key: 'pvt', title: 'PVT: ', type: 'line' }\n ],\n calc: (dataList: KLineData[]) => {\n let sum = 0\n return dataList.map((kLineData, i) => {\n const pvt: Pvt = {}\n const close = kLineData.close\n const volume = kLineData.volume ?? 1\n const prevClose = (dataList[i - 1] ?? kLineData).close\n let x = 0\n const total = prevClose * volume\n if (total !== 0) {\n x = (close - prevClose) / total\n }\n sum += x\n pvt.pvt = sum\n return pvt\n })\n }\n}\n\nexport default priceAndVolumeTrend\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Psy {\n psy?: number\n maPsy?: number\n}\n\n/**\n * PSY\n * 公式:PSY=N日内的上涨天数/N×100%。\n */\nconst psychologicalLine: IndicatorTemplate = {\n name: 'PSY',\n shortName: 'PSY',\n calcParams: [12, 6],\n figures: [\n { key: 'psy', title: 'PSY: ', type: 'line' },\n { key: 'maPsy', title: 'MAPSY: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n let upCount = 0\n let psySum = 0\n const upList: number[] = []\n const result: Psy[] = []\n dataList.forEach((kLineData: KLineData, i: number) => {\n const psy: Psy = {}\n const prevClose = (dataList[i - 1] ?? kLineData).close\n const upFlag = kLineData.close - prevClose > 0 ? 1 : 0\n upList.push(upFlag)\n upCount += upFlag\n if (i >= params[0] - 1) {\n psy.psy = upCount / params[0] * 100\n psySum += psy.psy\n if (i >= params[0] + params[1] - 2) {\n psy.maPsy = psySum / params[1]\n psySum -= (result[i - (params[1] - 1)].psy ?? 0)\n }\n upCount -= upList[i - (params[0] - 1)]\n }\n result.push(psy)\n })\n return result\n }\n}\n\nexport default psychologicalLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Roc {\n roc?: number\n maRoc?: number\n}\n\n/**\n * 变动率指标\n * 公式:ROC = (CLOSE - REF(CLOSE, N)) / REF(CLOSE, N)\n */\nconst rateOfChange: IndicatorTemplate = {\n name: 'ROC',\n shortName: 'ROC',\n calcParams: [12, 6],\n figures: [\n { key: 'roc', title: 'ROC: ', type: 'line' },\n { key: 'maRoc', title: 'MAROC: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n const result: Roc[] = []\n let rocSum = 0\n dataList.forEach((kLineData: KLineData, i: number) => {\n const roc: Roc = {}\n if (i >= params[0] - 1) {\n const close = kLineData.close\n const agoClose = (dataList[i - params[0]] ?? dataList[i - (params[0] - 1)]).close\n if (agoClose !== 0) {\n roc.roc = (close - agoClose) / agoClose * 100\n } else {\n roc.roc = 0\n }\n rocSum += roc.roc\n if (i >= params[0] - 1 + params[1] - 1) {\n roc.maRoc = rocSum / params[1]\n rocSum -= (result[i - (params[1] - 1)].roc ?? 0)\n }\n }\n result.push(roc)\n })\n return result\n }\n}\n\nexport default rateOfChange\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Rsi {\n rsi1?: number\n rsi2?: number\n rsi3?: number\n}\n\n/**\n * RSI\n * RSI = SUM(MAX(CLOSE - REF(CLOSE,1),0),N) / SUM(ABS(CLOSE - REF(CLOSE,1)),N) × 100\n */\nconst relativeStrengthIndex: IndicatorTemplate = {\n name: 'RSI',\n shortName: 'RSI',\n calcParams: [6, 12, 24],\n figures: [\n { key: 'rsi1', title: 'RSI1: ', type: 'line' },\n { key: 'rsi2', title: 'RSI2: ', type: 'line' },\n { key: 'rsi3', title: 'RSI3: ', type: 'line' }\n ],\n regenerateFigures: (params: any[]) => {\n return params.map((_: any, index: number) => {\n const num = index + 1\n return { key: `rsi${num}`, title: `RSI${num}: `, type: 'line' }\n })\n },\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const { calcParams: params, figures } = indicator\n const sumCloseAs: number[] = []\n const sumCloseBs: number[] = []\n return dataList.map((kLineData, i) => {\n const rsi = {}\n const prevClose = (dataList[i - 1] ?? kLineData).close\n const tmp = kLineData.close - prevClose\n params.forEach((p, index) => {\n if (tmp > 0) {\n sumCloseAs[index] = (sumCloseAs[index] ?? 0) + tmp\n } else {\n sumCloseBs[index] = (sumCloseBs[index] ?? 0) + Math.abs(tmp)\n }\n if (i >= p - 1) {\n if (sumCloseBs[index] !== 0) {\n rsi[figures[index].key] = 100 - (100.0 / (1 + sumCloseAs[index] / sumCloseBs[index]))\n } else {\n rsi[figures[index].key] = 0\n }\n const agoData = dataList[i - (p - 1)]\n const agoPreData = dataList[i - p] ?? agoData\n const agoTmp = agoData.close - agoPreData.close\n if (agoTmp > 0) {\n sumCloseAs[index] -= agoTmp\n } else {\n sumCloseBs[index] -= Math.abs(agoTmp)\n }\n }\n })\n return rsi\n })\n }\n}\n\nexport default relativeStrengthIndex\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate, IndicatorSeries } from '../../component/Indicator'\n\ninterface Sma {\n sma?: number\n}\n\n/**\n * sma\n */\nconst simpleMovingAverage: IndicatorTemplate = {\n name: 'SMA',\n shortName: 'SMA',\n series: IndicatorSeries.Price,\n calcParams: [12, 2],\n precision: 2,\n figures: [\n { key: 'sma', title: 'SMA: ', type: 'line' }\n ],\n shouldOhlc: true,\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n let closeSum = 0\n let smaValue = 0\n return dataList.map((kLineData: KLineData, i: number) => {\n const sma: Sma = {}\n const close = kLineData.close\n closeSum += close\n if (i >= params[0] - 1) {\n if (i > params[0] - 1) {\n smaValue = (close * params[1] + smaValue * (params[0] - params[1] + 1)) / (params[0] + 1)\n } else {\n smaValue = closeSum / params[0]\n }\n sma.sma = smaValue\n }\n return sma\n })\n }\n}\n\nexport default simpleMovingAverage\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\nimport { getMaxMin } from '../../common/utils/number'\n\ninterface Kdj {\n k?: number\n d?: number\n j?: number\n}\n\n/**\n * KDJ\n *\n * 当日K值=2/3×前一日K值+1/3×当日RSV\n * 当日D值=2/3×前一日D值+1/3×当日K值\n * 若无前一日K 值与D值,则可分别用50来代替。\n * J值=3*当日K值-2*当日D值\n */\nconst stoch: IndicatorTemplate = {\n name: 'KDJ',\n shortName: 'KDJ',\n calcParams: [9, 3, 3],\n figures: [\n { key: 'k', title: 'K: ', type: 'line' },\n { key: 'd', title: 'D: ', type: 'line' },\n { key: 'j', title: 'J: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams\n const result: Kdj[] = []\n dataList.forEach((kLineData: KLineData, i: number) => {\n const kdj: Kdj = {}\n const close = kLineData.close\n if (i >= params[0] - 1) {\n const lhn = getMaxMin(dataList.slice(i - (params[0] - 1), i + 1), 'high', 'low')\n const hn = lhn[0]\n const ln = lhn[1]\n const hnSubLn = hn - ln\n const rsv = (close - ln) / (hnSubLn === 0 ? 1 : hnSubLn) * 100\n kdj.k = ((params[1] - 1) * (result[i - 1]?.k ?? 50) + rsv) / params[1]\n kdj.d = ((params[2] - 1) * (result[i - 1]?.d ?? 50) + kdj.k) / params[2]\n kdj.j = 3.0 * kdj.k - 2.0 * kdj.d\n }\n result.push(kdj)\n })\n return result\n }\n}\n\nexport default stoch\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { IndicatorStyle } from '../../common/Options'\nimport { formatValue } from '../../common/utils/format'\n\nimport { Indicator, IndicatorTemplate, IndicatorSeries, IndicatorFigureStylesCallbackData } from '../../component/Indicator'\n\ninterface Sar {\n sar?: number\n}\n\nconst stopAndReverse: IndicatorTemplate = {\n name: 'SAR',\n shortName: 'SAR',\n series: IndicatorSeries.Price,\n calcParams: [2, 2, 20],\n precision: 2,\n shouldOhlc: true,\n figures: [\n {\n key: 'sar',\n title: 'SAR: ',\n type: 'circle',\n styles: (data: IndicatorFigureStylesCallbackData, indicator: Indicator, defaultStyles: IndicatorStyle) => {\n const { current } = data\n const sar = current.indicatorData?.sar ?? Number.MIN_SAFE_INTEGER\n const kLineData = current.kLineData as KLineData\n const halfHL = (kLineData?.high + kLineData?.low) / 2\n const color = sar < halfHL\n ? formatValue(indicator.styles, 'circles[0].upColor', (defaultStyles.circles)[0].upColor) as string\n : formatValue(indicator.styles, 'circles[0].downColor', (defaultStyles.circles)[0].downColor) as string\n return { color }\n }\n }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams\n const startAf = params[0] / 100\n const step = params[1] / 100\n const maxAf = params[2] / 100\n\n // 加速因子\n let af = startAf\n // 极值\n let ep = -100\n // 判断是上涨还是下跌 false:下跌\n let isIncreasing = false\n let sar = 0\n return dataList.map((kLineData: KLineData, i: number) => {\n // 上一个周期的sar\n const preSar = sar\n const high = kLineData.high\n const low = kLineData.low\n if (isIncreasing) {\n // 上涨\n if (ep === -100 || ep < high) {\n // 重新初始化值\n ep = high\n af = Math.min(af + step, maxAf)\n }\n sar = preSar + af * (ep - preSar)\n const lowMin = Math.min(dataList[Math.max(1, i) - 1].low, low)\n if (sar > kLineData.low) {\n sar = ep\n // 重新初始化值\n af = startAf\n ep = -100\n isIncreasing = !isIncreasing\n } else if (sar > lowMin) {\n sar = lowMin\n }\n } else {\n if (ep === -100 || ep > low) {\n // 重新初始化值\n ep = low\n af = Math.min(af + step, maxAf)\n }\n sar = preSar + af * (ep - preSar)\n const highMax = Math.max(dataList[Math.max(1, i) - 1].high, high)\n if (sar < kLineData.high) {\n sar = ep\n // 重新初始化值\n af = 0\n ep = -100\n isIncreasing = !isIncreasing\n } else if (sar < highMax) {\n sar = highMax\n }\n }\n return { sar }\n })\n }\n}\n\nexport default stopAndReverse\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http:*www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Trix {\n trix?: number\n maTrix?: number\n}\n\n/**\n * trix\n *\n * TR=收盘价的N日指数移动平均的N日指数移动平均的N日指数移动平均;\n * TRIX=(TR-昨日TR)/昨日TR*100;\n * MATRIX=TRIX的M日简单移动平均;\n * 默认参数N设为12,默认参数M设为9;\n * 默认参数12、9\n * 公式:MTR:=EMA(EMA(EMA(CLOSE,N),N),N)\n * TRIX:(MTR-REF(MTR,1))/REF(MTR,1)*100;\n * TRMA:MA(TRIX,M)\n *\n */\nconst tripleExponentiallySmoothedAverage: IndicatorTemplate = {\n name: 'TRIX',\n shortName: 'TRIX',\n calcParams: [12, 9],\n figures: [\n { key: 'trix', title: 'TRIX: ', type: 'line' },\n { key: 'maTrix', title: 'MATRIX: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n let closeSum = 0\n let ema1: number\n let ema2: number\n let oldTr: number\n let ema1Sum = 0\n let ema2Sum = 0\n let trixSum = 0\n const result: Trix[] = []\n dataList.forEach((kLineData: KLineData, i: number) => {\n const trix: Trix = {}\n const close = kLineData.close\n closeSum += close\n if (i >= params[0] - 1) {\n if (i > params[0] - 1) {\n ema1 = (2 * close + (params[0] - 1) * ema1) / (params[0] + 1)\n } else {\n ema1 = closeSum / params[0]\n }\n ema1Sum += ema1\n if (i >= params[0] * 2 - 2) {\n if (i > params[0] * 2 - 2) {\n ema2 = (2 * ema1 + (params[0] - 1) * ema2) / (params[0] + 1)\n } else {\n ema2 = ema1Sum / params[0]\n }\n ema2Sum += ema2\n if (i >= params[0] * 3 - 3) {\n let tr: number\n let trixValue = 0\n if (i > params[0] * 3 - 3) {\n tr = (2 * ema2 + (params[0] - 1) * oldTr) / (params[0] + 1)\n trixValue = (tr - oldTr) / oldTr * 100\n } else {\n tr = ema2Sum / params[0]\n }\n oldTr = tr\n trix.trix = trixValue\n trixSum += trixValue\n if (i >= params[0] * 3 + params[1] - 4) {\n trix.maTrix = trixSum / params[1]\n trixSum -= (result[i - (params[1] - 1)].trix ?? 0)\n }\n }\n }\n }\n result.push(trix)\n })\n return result\n }\n}\n\nexport default tripleExponentiallySmoothedAverage\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { IndicatorStyle } from '../../common/Options'\nimport { formatValue } from '../../common/utils/format'\n\nimport { Indicator, IndicatorTemplate, IndicatorFigureStylesCallbackData, IndicatorSeries, IndicatorFigure } from '../../component/Indicator'\n\ninterface Vol {\n volume?: number\n ma1?: number\n ma2?: number\n ma3?: number\n}\n\nconst volume: IndicatorTemplate = {\n name: 'VOL',\n shortName: 'VOL',\n series: IndicatorSeries.Volume,\n calcParams: [5, 10, 20],\n shouldFormatBigNumber: true,\n precision: 0,\n minValue: 0,\n figures: [\n { key: 'ma1', title: 'MA5: ', type: 'line' },\n { key: 'ma2', title: 'MA10: ', type: 'line' },\n { key: 'ma3', title: 'MA20: ', type: 'line' },\n {\n key: 'volume',\n title: 'VOLUME: ',\n type: 'bar',\n baseValue: 0,\n styles: (data: IndicatorFigureStylesCallbackData, indicator: Indicator, defaultStyles: IndicatorStyle) => {\n const kLineData = data.current.kLineData as KLineData\n let color: string\n if (kLineData.close > kLineData.open) {\n color = formatValue(indicator.styles, 'bars[0].upColor', (defaultStyles.bars)[0].upColor) as string\n } else if (kLineData.close < kLineData.open) {\n color = formatValue(indicator.styles, 'bars[0].downColor', (defaultStyles.bars)[0].downColor) as string\n } else {\n color = formatValue(indicator.styles, 'bars[0].noChangeColor', (defaultStyles.bars)[0].noChangeColor) as string\n }\n return { color }\n }\n }\n ],\n regenerateFigures: (params: any[]) => {\n const figures: Array> = params.map((p: number, i: number) => {\n return { key: `ma${i + 1}`, title: `MA${p}: `, type: 'line' }\n })\n figures.push({\n key: 'volume',\n title: 'VOLUME: ',\n type: 'bar',\n baseValue: 0,\n styles: (data: IndicatorFigureStylesCallbackData, indicator: Indicator, defaultStyles: IndicatorStyle) => {\n const kLineData = data.current.kLineData as KLineData\n let color: string\n if (kLineData.close > kLineData.open) {\n color = formatValue(indicator.styles, 'bars[0].upColor', (defaultStyles.bars)[0].upColor) as string\n } else if (kLineData.close < kLineData.open) {\n color = formatValue(indicator.styles, 'bars[0].downColor', (defaultStyles.bars)[0].downColor) as string\n } else {\n color = formatValue(indicator.styles, 'bars[0].noChangeColor', (defaultStyles.bars)[0].noChangeColor) as string\n }\n return { color }\n }\n })\n return figures\n },\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const { calcParams: params, figures } = indicator\n const volSums: number[] = []\n return dataList.map((kLineData: KLineData, i: number) => {\n const volume = kLineData.volume ?? 0\n const vol: Vol = { volume }\n params.forEach((p, index) => {\n volSums[index] = (volSums[index] ?? 0) + volume\n if (i >= p - 1) {\n vol[figures[index].key] = volSums[index] / p\n volSums[index] -= (dataList[i - (p - 1)].volume ?? 0)\n }\n })\n return vol\n })\n }\n}\n\nexport default volume\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\ninterface Vr {\n vr?: number\n maVr?: number\n}\n\n/**\n * VR\n * VR=(UVS+1/2PVS)/(DVS+1/2PVS)\n * 24天以来凡是股价上涨那一天的成交量都称为AV,将24天内的AV总和相加后称为UVS\n * 24天以来凡是股价下跌那一天的成交量都称为BV,将24天内的BV总和相加后称为DVS\n * 24天以来凡是股价不涨不跌,则那一天的成交量都称为CV,将24天内的CV总和相加后称为PVS\n *\n */\nconst volumeRatio: IndicatorTemplate = {\n name: 'VR',\n shortName: 'VR',\n calcParams: [26, 6],\n figures: [\n { key: 'vr', title: 'VR: ', type: 'line' },\n { key: 'maVr', title: 'MAVR: ', type: 'line' }\n ],\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const params = indicator.calcParams as number[]\n let uvs = 0\n let dvs = 0\n let pvs = 0\n let vrSum = 0\n const result: Vr[] = []\n dataList.forEach((kLineData: KLineData, i: number) => {\n const vr: Vr = {}\n const close = kLineData.close\n const preClose = (dataList[i - 1] ?? kLineData).close\n const volume = kLineData.volume ?? 0\n if (close > preClose) {\n uvs += volume\n } else if (close < preClose) {\n dvs += volume\n } else {\n pvs += volume\n }\n if (i >= params[0] - 1) {\n const halfPvs = pvs / 2\n if (dvs + halfPvs === 0) {\n vr.vr = 0\n } else {\n vr.vr = (uvs + halfPvs) / (dvs + halfPvs) * 100\n }\n vrSum += vr.vr\n if (i >= params[0] + params[1] - 2) {\n vr.maVr = vrSum / params[1]\n vrSum -= (result[i - (params[1] - 1)].vr ?? 0)\n }\n\n const agoData = dataList[i - (params[0] - 1)]\n const agoPreData = dataList[i - params[0]] ?? agoData\n const agoClose = agoData.close\n const agoVolume = agoData.volume ?? 0\n if (agoClose > agoPreData.close) {\n uvs -= agoVolume\n } else if (agoClose < agoPreData.close) {\n dvs -= agoVolume\n } else {\n pvs -= agoVolume\n }\n }\n result.push(vr)\n })\n return result\n }\n}\n\nexport default volumeRatio\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../../common/KLineData'\nimport { Indicator, IndicatorTemplate } from '../../component/Indicator'\n\nimport { getMaxMin } from '../../common/utils/number'\n\ninterface Wr {\n wr1?: number\n wr2?: number\n wr3?: number\n}\n\n/**\n * WR\n * 公式 WR(N) = 100 * [ C - HIGH(N) ] / [ HIGH(N)-LOW(N) ]\n */\nconst williamsR: IndicatorTemplate = {\n name: 'WR',\n shortName: 'WR',\n calcParams: [6, 10, 14],\n figures: [\n { key: 'wr1', title: 'WR1: ', type: 'line' },\n { key: 'wr2', title: 'WR2: ', type: 'line' },\n { key: 'wr3', title: 'WR3: ', type: 'line' }\n ],\n regenerateFigures: (params: any[]) => {\n return params.map((_, i: number) => {\n return { key: `wr${i + 1}`, title: `WR${i + 1}: `, type: 'line' }\n })\n },\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const { calcParams: params, figures } = indicator\n return dataList.map((kLineData, i) => {\n const wr: Wr = {}\n const close = kLineData.close\n params.forEach((param, index) => {\n const p = param - 1\n if (i >= p) {\n const hln = getMaxMin(dataList.slice(i - p, i + 1), 'high', 'low')\n const hn = hln[0]\n const ln = hln[1]\n const hnSubLn = hn - ln\n wr[figures[index].key] = hnSubLn === 0 ? 0 : (close - hn) / hnSubLn * 100\n }\n })\n return wr\n })\n }\n}\n\nexport default williamsR\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../../common/Nullable'\n\nimport IndicatorImp, { IndicatorTemplate, IndicatorConstructor } from '../../component/Indicator'\n\nimport averagePrice from './averagePrice'\nimport awesomeOscillator from './awesomeOscillator'\nimport bias from './bias'\nimport bollingerBands from './bollingerBands'\nimport brar from './brar'\nimport bullAndBearIndex from './bullAndBearIndex'\nimport commodityChannelIndex from './commodityChannelIndex'\nimport currentRatio from './currentRatio'\nimport differentOfMovingAverage from './differentOfMovingAverage'\nimport directionalMovementIndex from './directionalMovementIndex'\nimport easeOfMovementValue from './easeOfMovementValue'\nimport exponentialMovingAverage from './exponentialMovingAverage'\nimport momentum from './momentum'\nimport movingAverage from './movingAverage'\nimport movingAverageConvergenceDivergence from './movingAverageConvergenceDivergence'\nimport onBalanceVolume from './onBalanceVolume'\nimport priceAndVolumeTrend from './priceAndVolumeTrend'\nimport psychologicalLine from './psychologicalLine'\nimport rateOfChange from './rateOfChange'\nimport relativeStrengthIndex from './relativeStrengthIndex'\nimport simpleMovingAverage from './simpleMovingAverage'\nimport stoch from './stoch'\nimport stopAndReverse from './stopAndReverse'\nimport tripleExponentiallySmoothedAverage from './tripleExponentiallySmoothedAverage'\nimport volume from './volume'\nimport volumeRatio from './volumeRatio'\nimport williamsR from './williamsR'\n\nconst indicators: Record = {}\n\nconst extensions = [\n averagePrice, awesomeOscillator, bias, bollingerBands, brar,\n bullAndBearIndex, commodityChannelIndex, currentRatio, differentOfMovingAverage,\n directionalMovementIndex, easeOfMovementValue, exponentialMovingAverage, momentum,\n movingAverage, movingAverageConvergenceDivergence, onBalanceVolume, priceAndVolumeTrend,\n psychologicalLine, rateOfChange, relativeStrengthIndex, simpleMovingAverage,\n stoch, stopAndReverse, tripleExponentiallySmoothedAverage, volume, volumeRatio, williamsR\n]\n\nextensions.forEach((indicator: IndicatorTemplate) => {\n indicators[indicator.name] = IndicatorImp.extend(indicator)\n})\n\nfunction registerIndicator (indicator: IndicatorTemplate): void {\n indicators[indicator.name] = IndicatorImp.extend(indicator)\n}\n\nfunction getIndicatorClass (name: string): Nullable {\n return indicators[name] ?? null\n}\n\nfunction getSupportedIndicators (): string[] {\n return Object.keys(indicators)\n}\n\nexport { registerIndicator, getIndicatorClass, getSupportedIndicators }\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport Precision from '../common/Precision'\n\nimport ChartStore from './ChartStore'\n\nimport IndicatorImp, { IndicatorCreate, IndicatorConstructor, Indicator, IndicatorSeries } from '../component/Indicator'\nimport { getIndicatorClass } from '../extension/indicator/index'\n\nexport default class IndicatorStore {\n private readonly _chartStore: ChartStore\n private readonly _instances: Map> = new Map()\n\n constructor (chartStore: ChartStore) {\n this._chartStore = chartStore\n }\n\n private _overrideInstance (instance: IndicatorImp, indicator: Partial): boolean[] {\n const {\n shortName, series, calcParams, precision, figures, minValue, maxValue,\n shouldOhlc, shouldFormatBigNumber, visible, styles, extendData,\n regenerateFigures, createTooltipDataSource, draw, calc\n } = indicator\n let updateFlag = false\n if (shortName !== undefined && instance.setShortName(shortName)) {\n updateFlag = true\n }\n if (series !== undefined && instance.setSeries(series)) {\n updateFlag = true\n }\n let calcFlag = false\n if (calcParams !== undefined && instance.setCalcParams(calcParams)) {\n updateFlag = true\n calcFlag = true\n }\n if (figures !== undefined && instance.setFigures(figures)) {\n updateFlag = true\n calcFlag = true\n }\n if (minValue !== undefined && instance.setMinValue(minValue)) {\n updateFlag = true\n }\n if (maxValue !== undefined && instance.setMinValue(maxValue)) {\n updateFlag = true\n }\n if (precision !== undefined && instance.setPrecision(precision)) {\n updateFlag = true\n }\n if (shouldOhlc !== undefined && instance.setShouldOhlc(shouldOhlc)) {\n updateFlag = true\n }\n if (shouldFormatBigNumber !== undefined && instance.setShouldFormatBigNumber(shouldFormatBigNumber)) {\n updateFlag = true\n }\n if (visible !== undefined && instance.setVisible(visible)) {\n updateFlag = true\n }\n if (styles !== undefined && instance.setStyles(styles)) {\n updateFlag = true\n }\n if (extendData !== undefined && instance.setExtendData(extendData)) {\n updateFlag = true\n calcFlag = true\n }\n if (regenerateFigures !== undefined && instance.setRegenerateFigures(regenerateFigures)) {\n updateFlag = true\n }\n if (createTooltipDataSource !== undefined && instance.setCreateTooltipDataSource(createTooltipDataSource)) {\n updateFlag = true\n }\n if (draw !== undefined && instance.setDraw(draw)) {\n updateFlag = true\n }\n if (calc !== undefined) {\n instance.calc = calc\n calcFlag = true\n }\n return [updateFlag, calcFlag]\n }\n\n async addInstance (indicator: IndicatorCreate, paneId: string, isStack: boolean): Promise {\n const { name } = indicator\n let paneInstances = this._instances.get(paneId)\n if (paneInstances?.has(name) ?? false) {\n return await Promise.reject(new Error('Duplicate indicators.'))\n }\n if (paneInstances === undefined) {\n paneInstances = new Map()\n this._instances.set(paneId, paneInstances)\n }\n const IndicatorClazz = getIndicatorClass(name) as IndicatorConstructor\n const instance = new IndicatorClazz()\n this._overrideInstance(instance, indicator)\n if (!isStack) {\n paneInstances.clear()\n }\n paneInstances.set(name, instance)\n return await instance.calcIndicator(this._chartStore.getDataList())\n }\n\n getInstances (paneId: string): Map {\n return this._instances.get(paneId) ?? new Map()\n }\n\n removeInstance (paneId: string, name?: string): boolean {\n let removed = false\n const paneInstances = this._instances.get(paneId)\n if (paneInstances !== undefined) {\n if (name !== undefined) {\n if (paneInstances.has(name)) {\n paneInstances.delete(name)\n removed = true\n }\n } else {\n paneInstances.clear()\n removed = true\n }\n if (paneInstances.size === 0) {\n this._instances.delete(paneId)\n }\n }\n return removed\n }\n\n hasInstances (paneId: string): boolean {\n return this._instances.has(paneId)\n }\n\n async calcInstance (name?: string, paneId?: string): Promise {\n const tasks: Array> = []\n if (name !== undefined) {\n if (paneId !== undefined) {\n const paneInstances = this._instances.get(paneId)\n if (paneInstances?.has(name) ?? false) {\n const instance = paneInstances?.get(name) as IndicatorImp\n tasks.push(instance.calcIndicator(this._chartStore.getDataList()))\n }\n } else {\n this._instances.forEach(paneInstances => {\n if (paneInstances.has(name)) {\n const instance = paneInstances?.get(name) as IndicatorImp\n tasks.push(instance.calcIndicator(this._chartStore.getDataList()))\n }\n })\n }\n } else {\n this._instances.forEach(paneInstances => {\n paneInstances.forEach(instance => {\n tasks.push(instance.calcIndicator(this._chartStore.getDataList()))\n })\n })\n }\n const result = await Promise.all(tasks)\n return result.includes(true)\n }\n\n getInstanceByPaneId (paneId?: string, name?: string): Nullable | Nullable> | Map> {\n if (paneId !== undefined) {\n const paneInstances = this._instances.get(paneId)\n if (name !== undefined) {\n return paneInstances?.get(name) ?? null\n }\n return paneInstances ?? null\n }\n return this._instances\n }\n\n setSeriesPrecision (precision: Precision): void {\n this._instances.forEach(paneInstances => {\n paneInstances.forEach(instance => {\n if (instance.series === IndicatorSeries.Price) {\n instance.setPrecision(precision.price, true)\n }\n if (instance.series === IndicatorSeries.Volume) {\n instance.setPrecision(precision.volume, true)\n }\n })\n })\n }\n\n async override (indicator: IndicatorCreate, paneId: Nullable): Promise<[boolean, boolean]> {\n const { name } = indicator\n let instances: Map> = new Map()\n if (paneId !== null) {\n const paneInstances = this._instances.get(paneId)\n if (paneInstances !== undefined) {\n instances.set(paneId, paneInstances)\n }\n } else {\n instances = this._instances\n }\n let onlyUpdateFlag = false\n const tasks: Array> = []\n instances.forEach(paneInstances => {\n const instance = paneInstances.get(name)\n if (instance !== undefined) {\n const overrideResult = this._overrideInstance(instance, indicator)\n if (overrideResult[1]) {\n tasks.push(instance.calcIndicator(this._chartStore.getDataList()))\n } else {\n if (overrideResult[0]) {\n onlyUpdateFlag = true\n }\n }\n }\n })\n const result = await Promise.all(tasks)\n return [onlyUpdateFlag, result.includes(true)]\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport KLineData from '../common/KLineData'\nimport Crosshair from '../common/Crosshair'\nimport { UpdateLevel } from '../common/Updater'\n\nimport ChartStore from './ChartStore'\n\nexport default class CrosshairStore {\n private readonly _chartStore: ChartStore\n private _crosshair: Crosshair = {}\n\n constructor (chartStore: ChartStore) {\n this._chartStore = chartStore\n }\n\n /**\n * 设置十字光标点信息\n * @param crosshair\n * @param notInvalidate\n */\n set (crosshair?: Crosshair, notInvalidate?: boolean): CrosshairStore {\n const dataList = this._chartStore.getDataList()\n const cr = crosshair ?? {}\n let realDataIndex: number\n let dataIndex: number\n if (cr.x !== undefined) {\n realDataIndex = this._chartStore.getTimeScaleStore().coordinateToDataIndex(cr.x)\n if (realDataIndex < 0) {\n dataIndex = 0\n } else if (realDataIndex > dataList.length - 1) {\n dataIndex = dataList.length - 1\n } else {\n dataIndex = realDataIndex\n }\n } else {\n realDataIndex = dataList.length - 1\n dataIndex = realDataIndex\n }\n const kLineData: Nullable = dataList[dataIndex]\n const realX = this._chartStore.getTimeScaleStore().dataIndexToCoordinate(realDataIndex)\n const prevCrosshair = { x: this._crosshair.x, y: this._crosshair.y, paneId: this._crosshair.paneId }\n this._crosshair = { ...cr, realX, kLineData, realDataIndex, dataIndex }\n if (\n prevCrosshair.x !== cr.x || prevCrosshair.y !== cr.y || prevCrosshair.paneId !== cr.paneId\n ) {\n if (kLineData !== null) {\n this._chartStore.getChart().crosshairChange(this._crosshair)\n }\n if (!(notInvalidate ?? false)) {\n this._chartStore.getChart().updatePane(UpdateLevel.Overlay)\n }\n }\n return this\n }\n\n /**\n * 重新计算十字光标\n * @param notInvalidate\n */\n recalculate (notInvalidate: boolean): void {\n this.set(this._crosshair, notInvalidate)\n }\n\n /**\n * 获取crosshair信息\n * @returns\n */\n get (): Crosshair {\n return this._crosshair\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\n\nexport interface TooltipIconInfo {\n paneId: string\n indicatorName: string\n iconId: string\n}\n\nexport default class TooltipStore {\n private _activeIconInfo: Nullable = null\n\n setActiveIconInfo (info?: TooltipIconInfo): void {\n this._activeIconInfo = info ?? null\n }\n\n getActiveIconInfo (): Nullable {\n return this._activeIconInfo\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport DeepPartial from '../common/DeepPartial'\nimport ExcludePickPartial from '../common/ExcludePickPartial'\nimport Point from '../common/Point'\nimport Coordinate from '../common/Coordinate'\nimport Bounding from '../common/Bounding'\nimport BarSpace from '../common/BarSpace'\nimport Precision from '../common/Precision'\nimport { OverlayStyle } from '../common/Options'\nimport { MouseTouchEvent } from '../common/SyntheticEvent'\n\nimport { clone } from '../common/utils/typeChecks'\n\nimport TimeScaleStore from '../store/TimeScaleStore'\n\nimport { XAxis } from './XAxis'\nimport { YAxis } from './YAxis'\n\nexport enum OverlayMode {\n Normal = 'normal',\n WeakMagnet = 'weak_magnet',\n StrongMagnet = 'strong_magnet'\n}\n\nexport interface OverlayPerformEventParams {\n currentStep: number\n mode: OverlayMode\n points: Array>\n performPointIndex: number\n performPoint: Partial\n}\n\nexport type OverlayFigureIgnoreEventType = 'mouseClickEvent' | 'mouseRightClickEvent' | 'tapEvent' | 'mouseDownEvent' | 'touchStartEvent' | 'mouseMoveEvent' | 'touchMoveEvent'\n\nexport function getAllOverlayFigureIgnoreEventTypes (): OverlayFigureIgnoreEventType[] {\n return [\n 'mouseClickEvent',\n 'mouseRightClickEvent',\n 'tapEvent',\n 'mouseDownEvent',\n 'touchStartEvent',\n 'mouseMoveEvent',\n 'touchMoveEvent'\n ]\n}\n\nexport interface OverlayFigure {\n key?: string\n type: string\n attrs: any | any[]\n styles?: any\n ignoreEvent?: boolean | OverlayFigureIgnoreEventType[]\n}\n\nexport interface OverlayCreateFiguresCallbackParams {\n overlay: Overlay\n coordinates: Coordinate[]\n bounding: Bounding\n barSpace: BarSpace\n precision: Precision\n thousandsSeparator: string\n dateTimeFormat: Intl.DateTimeFormat\n defaultStyles: OverlayStyle\n xAxis: Nullable\n yAxis: Nullable\n}\n\nexport interface OverlayEvent extends Partial {\n figureKey?: string\n figureIndex?: number\n overlay: Overlay\n}\n\nexport type OverlayEventCallback = (event: OverlayEvent) => boolean\n\nexport type OverlayCreateFiguresCallback = (params: OverlayCreateFiguresCallbackParams) => OverlayFigure | OverlayFigure[]\n\nexport interface Overlay {\n /**\n * Unique identification\n */\n id: string\n\n /**\n * Group id\n */\n groupId: string\n\n /**\n * Pane id\n */\n paneId: string\n\n /**\n * Name\n */\n name: string\n\n /**\n * Total number of steps required to complete mouse operation\n */\n totalStep: number\n\n /**\n * Current step\n */\n currentStep: number\n\n /**\n * Whether it is locked. When it is true, it will not respond to events\n */\n lock: boolean\n\n /**\n * Whether the overlay is visible\n */\n visible: boolean\n\n /**\n * Default draw level\n */\n defaultZLevel: number\n\n /**\n * Draw level\n */\n zLevel: number\n\n /**\n * Whether the default figure corresponding to the point is required\n */\n needDefaultPointFigure: boolean\n\n /**\n * Whether the default figure on the Y axis is required\n */\n needDefaultXAxisFigure: boolean\n\n /**\n * Whether the default figure on the X axis is required\n */\n needDefaultYAxisFigure: boolean\n\n /**\n * Mode\n */\n mode: OverlayMode\n\n /**\n * Time and value information\n */\n points: Array>\n\n /**\n * Extended Data\n */\n extendData: any\n\n /**\n * The style information and format are consistent with the overlay in the unified configuration\n */\n styles: Nullable>\n\n /**\n * Create figures corresponding to points\n */\n createPointFigures: Nullable\n\n /**\n * Create figures on the Y axis\n */\n createXAxisFigures: Nullable\n\n /**\n * Create figures on the X axis\n */\n createYAxisFigures: Nullable\n\n /**\n * Special handling callbacks when pressing events\n */\n performEventPressedMove: Nullable<(params: OverlayPerformEventParams) => void>\n\n /**\n * In drawing, special handling callback when moving events\n */\n performEventMoveForDrawing: Nullable<(params: OverlayPerformEventParams) => void>\n\n /**\n * Start drawing event\n */\n onDrawStart: Nullable\n\n /**\n * In drawing event\n */\n onDrawing: Nullable\n\n /**\n * Draw End Event\n */\n onDrawEnd: Nullable\n\n /**\n * Click event\n */\n onClick: Nullable\n\n /**\n * Right click event\n */\n onRightClick: Nullable\n\n /**\n * Pressed move start event\n */\n onPressedMoveStart: Nullable\n\n /**\n * Pressed moving event\n */\n onPressedMoving: Nullable\n\n /**\n * Pressed move end event\n */\n onPressedMoveEnd: Nullable\n\n /**\n * Mouse enter event\n */\n onMouseEnter: Nullable\n\n /**\n * Mouse leave event\n */\n onMouseLeave: Nullable\n\n /**\n * Removed event\n */\n onRemoved: Nullable\n\n /**\n * Selected event\n */\n onSelected: Nullable\n\n /**\n * Deselected event\n */\n onDeselected: Nullable\n}\n\nexport type OverlayTemplate = ExcludePickPartial, 'name'>\nexport type OverlayCreate = ExcludePickPartial, 'name'>\nexport type OverlayRemove = Partial>\nexport type OverlayConstructor = new () => OverlayImp\n\nconst OVERLAY_DRAW_STEP_START = 1\nconst OVERLAY_DRAW_STEP_FINISHED = -1\n\nexport const OVERLAY_ID_PREFIX = 'overlay_'\n\nexport const OVERLAY_FIGURE_KEY_PREFIX = 'overlay_figure_'\n\nexport const OVERLAY_ACTIVE_Z_LEVEL = Number.MAX_SAFE_INTEGER\n\nexport default abstract class OverlayImp implements Overlay {\n id: string\n groupId: string\n paneId: string\n name: string\n totalStep: number\n currentStep: number = OVERLAY_DRAW_STEP_START\n needDefaultPointFigure: boolean\n needDefaultXAxisFigure: boolean\n needDefaultYAxisFigure: boolean\n lock: boolean\n visible: boolean\n zLevel: number\n defaultZLevel: number\n mode: OverlayMode\n points: Array> = []\n extendData: any\n styles: Nullable>\n createPointFigures: Nullable\n createXAxisFigures: Nullable\n createYAxisFigures: Nullable\n performEventPressedMove: Nullable<(params: OverlayPerformEventParams) => void>\n performEventMoveForDrawing: Nullable<(params: OverlayPerformEventParams) => void>\n onDrawStart: Nullable\n onDrawing: Nullable\n onDrawEnd: Nullable\n onClick: Nullable\n onRightClick: Nullable\n onPressedMoveStart: Nullable\n onPressedMoving: Nullable\n onPressedMoveEnd: Nullable\n onMouseEnter: Nullable\n onMouseLeave: Nullable\n onRemoved: Nullable\n onSelected: Nullable\n onDeselected: Nullable\n\n private _prevPressedPoint: Nullable> = null\n private _prevPressedPoints: Array> = []\n\n constructor (overlay: OverlayTemplate) {\n const {\n mode, extendData, styles,\n name, totalStep, lock, visible, zLevel,\n needDefaultPointFigure, needDefaultXAxisFigure, needDefaultYAxisFigure,\n createPointFigures, createXAxisFigures, createYAxisFigures,\n performEventPressedMove, performEventMoveForDrawing,\n onDrawStart, onDrawing, onDrawEnd,\n onClick, onRightClick,\n onPressedMoveStart, onPressedMoving, onPressedMoveEnd,\n onMouseEnter, onMouseLeave, onRemoved,\n onSelected, onDeselected\n } = overlay\n this.name = name\n this.totalStep = (totalStep === undefined || totalStep < 2) ? 1 : totalStep\n this.lock = lock ?? false\n this.visible = visible ?? true\n this.zLevel = zLevel ?? 0\n this.needDefaultPointFigure = needDefaultPointFigure ?? false\n this.needDefaultXAxisFigure = needDefaultXAxisFigure ?? false\n this.needDefaultYAxisFigure = needDefaultYAxisFigure ?? false\n this.mode = mode ?? OverlayMode.Normal\n this.extendData = extendData\n this.styles = styles ?? null\n this.createPointFigures = createPointFigures ?? null\n this.createXAxisFigures = createXAxisFigures ?? null\n this.createYAxisFigures = createYAxisFigures ?? null\n this.performEventPressedMove = performEventPressedMove ?? null\n this.performEventMoveForDrawing = performEventMoveForDrawing ?? null\n this.onDrawStart = onDrawStart ?? null\n this.onDrawing = onDrawing ?? null\n this.onDrawEnd = onDrawEnd ?? null\n this.onClick = onClick ?? null\n this.onRightClick = onRightClick ?? null\n this.onPressedMoveStart = onPressedMoveStart ?? null\n this.onPressedMoving = onPressedMoving ?? null\n this.onPressedMoveEnd = onPressedMoveEnd ?? null\n this.onMouseEnter = onMouseEnter ?? null\n this.onMouseLeave = onMouseLeave ?? null\n this.onRemoved = onRemoved ?? null\n this.onSelected = onSelected ?? null\n this.onDeselected = onDeselected ?? null\n }\n\n setId (id: string): boolean {\n if (this.id === undefined) {\n this.id = id\n return true\n }\n return false\n }\n\n setGroupId (groupId: string): boolean {\n if (this.groupId === undefined) {\n this.groupId = groupId\n return true\n }\n return false\n }\n\n setDefaultZLevel (defaultZLevel: number): boolean {\n if (this.defaultZLevel === undefined) {\n this.defaultZLevel = defaultZLevel\n return true\n }\n return false\n }\n\n setPaneId (paneId: string): void {\n this.paneId = paneId\n }\n\n setExtendData (extendData: any): boolean {\n if (extendData !== this.extendData) {\n this.extendData = extendData\n return true\n }\n return false\n }\n\n setStyles (styles: Nullable>): boolean {\n if (styles !== this.styles) {\n this.styles = styles\n return true\n }\n return false\n }\n\n setPoints (points: Array>): boolean {\n if (points.length > 0) {\n let repeatTotalStep: number\n this.points = [...points]\n if (points.length >= this.totalStep - 1) {\n this.currentStep = OVERLAY_DRAW_STEP_FINISHED\n repeatTotalStep = this.totalStep - 1\n } else {\n this.currentStep = points.length + 1\n repeatTotalStep = points.length\n }\n // Prevent wrong drawing due to wrong points\n if (this.performEventMoveForDrawing !== null) {\n for (let i = 0; i < repeatTotalStep; i++) {\n this.performEventMoveForDrawing({\n currentStep: i + 2,\n mode: this.mode,\n points: this.points,\n performPointIndex: i,\n performPoint: this.points[i]\n })\n }\n }\n if (this.currentStep === OVERLAY_DRAW_STEP_FINISHED && this.performEventPressedMove !== null) {\n this.performEventPressedMove({\n currentStep: this.currentStep,\n mode: this.mode,\n points: this.points,\n performPointIndex: this.points.length - 1,\n performPoint: this.points[this.points.length - 1]\n })\n }\n return true\n }\n return false\n }\n\n setLock (lock: boolean): boolean {\n if (this.lock !== lock) {\n this.lock = lock\n return true\n }\n return false\n }\n\n setVisible (visible: boolean): boolean {\n if (this.visible !== visible) {\n this.visible = visible\n return true\n }\n return false\n }\n\n resetZLevel (): void {\n this.zLevel = this.defaultZLevel\n }\n\n setZLevel (zLevel: number): boolean {\n if (this.zLevel !== zLevel) {\n this.zLevel = zLevel\n return true\n }\n return false\n }\n\n setMode (mode: OverlayMode): boolean {\n if (mode !== this.mode) {\n this.mode = mode\n return true\n }\n return false\n }\n\n setOnDrawStartCallback (callback: Nullable): boolean {\n if (this.onDrawStart !== callback) {\n this.onDrawStart = callback\n return true\n }\n return false\n }\n\n setOnDrawingCallback (callback: Nullable): boolean {\n if (this.onDrawing !== callback) {\n this.onDrawing = callback\n return true\n }\n return false\n }\n\n setOnDrawEndCallback (callback: Nullable): boolean {\n if (this.onDrawEnd !== callback) {\n this.onDrawEnd = callback\n return true\n }\n return false\n }\n\n setOnClickCallback (callback: Nullable): boolean {\n if (this.onClick !== callback) {\n this.onClick = callback\n return true\n }\n return false\n }\n\n setOnRightClickCallback (callback: Nullable): boolean {\n if (this.onRightClick !== callback) {\n this.onRightClick = callback\n return true\n }\n return false\n }\n\n setOnPressedMoveStartCallback (callback: Nullable): boolean {\n if (this.onPressedMoveStart !== callback) {\n this.onPressedMoveStart = callback\n return true\n }\n return false\n }\n\n setOnPressedMovingCallback (callback: Nullable): boolean {\n if (this.onPressedMoving !== callback) {\n this.onPressedMoving = callback\n return true\n }\n return false\n }\n\n setOnPressedMoveEndCallback (callback: Nullable): boolean {\n if (this.onPressedMoveEnd !== callback) {\n this.onPressedMoveEnd = callback\n return true\n }\n return false\n }\n\n setOnMouseEnterCallback (callback: Nullable): boolean {\n if (this.onMouseEnter !== callback) {\n this.onMouseEnter = callback\n return true\n }\n return false\n }\n\n setOnMouseLeaveCallback (callback: Nullable): boolean {\n if (this.onMouseLeave !== callback) {\n this.onMouseLeave = callback\n return true\n }\n return false\n }\n\n setOnRemovedCallback (callback: Nullable): boolean {\n if (this.onRemoved !== callback) {\n this.onRemoved = callback\n return true\n }\n return false\n }\n\n setOnSelectedCallback (callback: Nullable): boolean {\n if (this.onSelected !== callback) {\n this.onSelected = callback\n return true\n }\n return false\n }\n\n setOnDeselectedCallback (callback: Nullable): boolean {\n if (this.onDeselected !== callback) {\n this.onDeselected = callback\n return true\n }\n return false\n }\n\n nextStep (): void {\n if (this.currentStep === this.totalStep - 1) {\n this.currentStep = OVERLAY_DRAW_STEP_FINISHED\n } else {\n this.currentStep++\n }\n }\n\n forceComplete (): void {\n this.currentStep = OVERLAY_DRAW_STEP_FINISHED\n }\n\n isDrawing (): boolean {\n return this.currentStep !== OVERLAY_DRAW_STEP_FINISHED\n }\n\n isStart (): boolean {\n return this.currentStep === OVERLAY_DRAW_STEP_START\n }\n\n eventMoveForDrawing (point: Partial): void {\n const pointIndex = this.currentStep - 1\n const newPoint: Partial = {}\n if (point.timestamp !== undefined) {\n newPoint.timestamp = point.timestamp\n }\n if (point.dataIndex !== undefined) {\n newPoint.dataIndex = point.dataIndex\n }\n if (point.value !== undefined) {\n newPoint.value = point.value\n }\n this.points[pointIndex] = newPoint\n this.performEventMoveForDrawing?.({\n currentStep: this.currentStep,\n mode: this.mode,\n points: this.points,\n performPointIndex: pointIndex,\n performPoint: newPoint\n })\n }\n\n eventPressedPointMove (point: Partial, pointIndex: number): void {\n if (point.dataIndex !== undefined) {\n this.points[pointIndex].dataIndex = point.dataIndex\n this.points[pointIndex].timestamp = point.timestamp\n }\n if (point.value !== undefined) {\n this.points[pointIndex].value = point.value\n }\n this.performEventPressedMove?.({\n currentStep: this.currentStep,\n points: this.points,\n mode: this.mode,\n performPointIndex: pointIndex,\n performPoint: this.points[pointIndex]\n })\n }\n\n startPressedMove (point: Partial): void {\n this._prevPressedPoint = { ...point }\n this._prevPressedPoints = clone(this.points)\n }\n\n eventPressedOtherMove (point: Partial, timeScaleStore: TimeScaleStore): void {\n if (this._prevPressedPoint !== null) {\n let difDataIndex: number\n if (point.dataIndex !== undefined && this._prevPressedPoint.dataIndex !== undefined) {\n difDataIndex = point.dataIndex - this._prevPressedPoint.dataIndex\n }\n let difValue: number\n if (point.value !== undefined && this._prevPressedPoint.value !== undefined) {\n difValue = point.value - this._prevPressedPoint.value\n }\n this.points = this._prevPressedPoints.map(p => {\n if (p.dataIndex === undefined && p.timestamp !== undefined) {\n p.dataIndex = timeScaleStore.timestampToDataIndex(p.timestamp)\n }\n const newPoint = { ...p }\n if (difDataIndex !== undefined && p.dataIndex !== undefined) {\n newPoint.dataIndex = p.dataIndex + difDataIndex\n newPoint.timestamp = timeScaleStore.dataIndexToTimestamp(newPoint.dataIndex) ?? undefined\n }\n if (difValue !== undefined && p.value !== undefined) {\n newPoint.value = p.value + difValue\n }\n return newPoint\n })\n }\n }\n\n static extend (template: OverlayTemplate): OverlayConstructor {\n class Custom extends OverlayImp {\n constructor () {\n super(template)\n }\n }\n return Custom\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nimport { LineAttrs } from '../figure/line'\nimport { TextAttrs } from '../figure/text'\n\nimport { formatThousands } from '../../common/utils/format'\n\nconst fibonacciLine: OverlayTemplate = {\n name: 'fibonacciLine',\n totalStep: 3,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding, overlay, precision, thousandsSeparator }) => {\n const points = overlay.points\n if (coordinates.length > 0) {\n const lines: LineAttrs[] = []\n const texts: TextAttrs[] = []\n const startX = 0\n const endX = bounding.width\n if (coordinates.length > 1 && points[0].value !== undefined && points[1].value !== undefined) {\n const percents = [1, 0.786, 0.618, 0.5, 0.382, 0.236, 0]\n const yDif = coordinates[0].y - coordinates[1].y\n const valueDif = points[0].value - points[1].value\n percents.forEach(percent => {\n const y = coordinates[1].y + yDif * percent\n const value = formatThousands(((points[1].value ?? 0) + valueDif * percent).toFixed(precision.price), thousandsSeparator)\n lines.push({ coordinates: [{ x: startX, y }, { x: endX, y }] })\n texts.push({\n x: startX,\n y,\n text: `${value} (${(percent * 100).toFixed(1)}%)`,\n baseline: 'bottom'\n })\n })\n }\n return [\n {\n type: 'line',\n attrs: lines\n }, {\n type: 'text',\n isCheckEvent: false,\n attrs: texts\n }\n ]\n }\n return []\n }\n}\n\nexport default fibonacciLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nconst horizontalRayLine: OverlayTemplate = {\n name: 'horizontalRayLine',\n totalStep: 3,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding }) => {\n const coordinate = { x: 0, y: coordinates[0].y }\n if (coordinates[1] !== undefined && coordinates[0].x < coordinates[1].x) {\n coordinate.x = bounding.width\n }\n return [\n {\n type: 'line',\n attrs: { coordinates: [coordinates[0], coordinate] }\n }\n ]\n },\n performEventPressedMove: ({ points, performPoint }) => {\n points[0].value = performPoint.value\n points[1].value = performPoint.value\n },\n performEventMoveForDrawing: ({ currentStep, points, performPoint }) => {\n if (currentStep === 2) {\n points[0].value = performPoint.value\n }\n }\n}\n\nexport default horizontalRayLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nimport { LineAttrs } from '../figure/line'\n\nconst horizontalSegment: OverlayTemplate = {\n name: 'horizontalSegment',\n totalStep: 3,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates }) => {\n const lines: LineAttrs[] = []\n if (coordinates.length === 2) {\n lines.push({ coordinates })\n }\n return [\n {\n type: 'line',\n attrs: lines\n }\n ]\n },\n performEventPressedMove: ({ points, performPoint }) => {\n points[0].value = performPoint.value\n points[1].value = performPoint.value\n },\n performEventMoveForDrawing: ({ currentStep, points, performPoint }) => {\n if (currentStep === 2) {\n points[0].value = performPoint.value\n }\n }\n}\n\nexport default horizontalSegment\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nconst horizontalStraightLine: OverlayTemplate = {\n name: 'horizontalStraightLine',\n totalStep: 2,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding }) => {\n return [{\n type: 'line',\n attrs: {\n coordinates: [\n {\n x: 0,\n y: coordinates[0].y\n }, {\n x: bounding.width,\n y: coordinates[0].y\n }\n ]\n }\n }]\n }\n}\n\nexport default horizontalStraightLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EventName, MouseTouchEvent, MouseTouchEventCallback } from './SyntheticEvent'\n\nexport interface EventDispatcher {\n dispatchEvent: (name: EventName, event: MouseTouchEvent, other?: number) => boolean\n}\n\nexport default abstract class Eventful implements EventDispatcher {\n private _children: Eventful[] = []\n\n private readonly _callbacks = new Map()\n\n registerEvent (name: EventName, callback: MouseTouchEventCallback): Eventful {\n this._callbacks.set(name, callback)\n return this\n }\n\n onEvent (name: EventName, event: MouseTouchEvent, other?: number): boolean {\n const callback = this._callbacks.get(name)\n if (callback !== undefined && this.checkEventOn(event)) {\n return callback(event, other)\n }\n return false\n }\n\n checkEventOn (event: MouseTouchEvent): boolean {\n for (const eventful of this._children) {\n if (eventful.checkEventOn(event)) {\n return true\n }\n }\n return false\n }\n\n dispatchEvent (name: EventName, event: MouseTouchEvent, other?: number): boolean {\n const start = this._children.length - 1\n if (start > -1) {\n for (let i = start; i > -1; i--) {\n if (this._children[i].dispatchEvent(name, event, other)) {\n return true\n }\n }\n }\n return this.onEvent(name, event, other)\n }\n\n addChild (eventful: Eventful): Eventful {\n this._children.push(eventful)\n return this\n }\n\n clear (): void {\n this._children = []\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate from '../common/Coordinate'\n\nimport Eventful from '../common/Eventful'\nimport { MouseTouchEvent } from '../common/SyntheticEvent'\n\nexport const DEVIATION = 2\n\nexport interface Figure {\n name: string\n attrs: A\n styles: S\n draw: (ctx: CanvasRenderingContext2D, attrs: A, styles: S) => void\n checkEventOn: (coordinate: Coordinate, attrs: A, styles: S) => boolean\n}\n\nexport type FigureTemplate = Pick, 'name' | 'draw' | 'checkEventOn'>\n\nexport type FigureCreate = Pick, 'name' | 'attrs' | 'styles'>\n\nexport type FigureInnerConstructor = new (figure: FigureCreate) => FigureImp\n\nexport type FigureConstructor = new (figure: FigureCreate) => ({ draw: (ctx: CanvasRenderingContext2D) => void })\n\nexport default abstract class FigureImp extends Eventful implements Omit, 'name' | 'draw' | 'checkEventOn'> {\n readonly attrs: A\n readonly styles: S\n\n constructor (figure: FigureCreate) {\n super()\n this.attrs = figure.attrs\n this.styles = figure.styles\n }\n\n checkEventOn (event: MouseTouchEvent): boolean {\n return this.checkEventOnImp(event, this.attrs, this.styles)\n }\n\n draw (ctx: CanvasRenderingContext2D): void {\n this.drawImp(ctx, this.attrs, this.styles)\n }\n\n abstract checkEventOnImp (event: MouseTouchEvent, attrs: A, styles: S): boolean\n\n abstract drawImp (ctx: CanvasRenderingContext2D, attrs: A, styles: S): void\n\n static extend (figure: FigureTemplate): new (figure: FigureCreate) => FigureImp {\n class Custom extends FigureImp {\n checkEventOnImp (coordinate: Coordinate, attrs: A, styles: S): boolean {\n return figure.checkEventOn(coordinate, attrs, styles)\n }\n\n drawImp (ctx: CanvasRenderingContext2D, attrs: A, styles: S): void {\n figure.draw(ctx, attrs, styles)\n }\n }\n return Custom\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../../common/Nullable'\nimport Coordinate from '../../common/Coordinate'\nimport { SmoothLineStyle, LineType } from '../../common/Options'\n\nimport { FigureTemplate, DEVIATION } from '../../component/Figure'\n\nfunction getDistance (coordinate1: Coordinate, coordinate2: Coordinate): number {\n return Math.sqrt(Math.pow(coordinate1.x + coordinate2.x, 2) + Math.pow(coordinate1.y + coordinate2.y, 2))\n}\n\nfunction getSmoothControlCoordinate (coordinates: Coordinate[]): Coordinate[] {\n const d01 = getDistance(coordinates[0], coordinates[1])\n const d12 = getDistance(coordinates[1], coordinates[2])\n const d02 = d01 + d12\n const vector = [coordinates[2].x - coordinates[0].x, coordinates[2].y - coordinates[0].y]\n return [\n {\n x: coordinates[1].x - vector[0] * 0.5 * d01 / d02,\n y: coordinates[1].y - vector[1] * 0.5 * d01 / d02\n }, {\n x: coordinates[1].x + vector[0] * 0.5 * d01 / d02,\n y: coordinates[1].y + vector[1] * 0.5 * d01 / d02\n }\n ]\n}\n\nexport function checkCoordinateOnLine (coordinate: Coordinate, line: LineAttrs): boolean {\n const coordinates = line.coordinates\n if (coordinates.length > 1) {\n for (let i = 1; i < coordinates.length; i++) {\n const prevCoordinate = coordinates[i - 1]\n const currentCoordinate = coordinates[i]\n if (prevCoordinate.x === currentCoordinate.x) {\n if (\n Math.abs(prevCoordinate.y - coordinate.y) + Math.abs(currentCoordinate.y - coordinate.y) - Math.abs(prevCoordinate.y - currentCoordinate.y) < DEVIATION + DEVIATION &&\n Math.abs(coordinate.x - prevCoordinate.x) < DEVIATION\n ) {\n return true\n }\n } else {\n const kb = getLinearSlopeIntercept(prevCoordinate, currentCoordinate) as number[]\n const y = getLinearYFromSlopeIntercept(kb, coordinate)\n const yDif = Math.abs(y - coordinate.y)\n if (\n Math.abs(prevCoordinate.x - coordinate.x) + Math.abs(currentCoordinate.x - coordinate.x) - Math.abs(prevCoordinate.x - currentCoordinate.x) < DEVIATION + DEVIATION &&\n yDif * yDif / (kb[0] * kb[0] + 1) < DEVIATION * DEVIATION\n ) {\n return true\n }\n }\n }\n }\n return false\n}\n\nexport function getLinearYFromSlopeIntercept (kb: Nullable, coordinate: Coordinate): number {\n if (kb != null) {\n return coordinate.x * kb[0] + kb[1]\n }\n return coordinate.y\n}\n\n/**\n * 获取点在两点决定的一次函数上的y值\n * @param coordinate1\n * @param coordinate2\n * @param targetCoordinate\n */\nexport function getLinearYFromCoordinates (coordinate1: Coordinate, coordinate2: Coordinate, targetCoordinate: Coordinate): number {\n const kb = getLinearSlopeIntercept(coordinate1, coordinate2)\n return getLinearYFromSlopeIntercept(kb, targetCoordinate)\n}\n\nexport function getLinearSlopeIntercept (coordinate1: Coordinate, coordinate2: Coordinate): Nullable {\n const difX = coordinate1.x - coordinate2.x\n if (difX !== 0) {\n const k = (coordinate1.y - coordinate2.y) / difX\n const b = coordinate1.y - k * coordinate1.x\n return [k, b]\n }\n return null\n}\n\nexport function drawLine (ctx: CanvasRenderingContext2D, attrs: LineAttrs, styles: Partial): void {\n const { coordinates } = attrs\n const length = coordinates.length\n if (length > 1) {\n const { style = LineType.Solid, smooth, size = 1, color = 'currentColor', dashedValue = [2, 2] } = styles\n ctx.lineWidth = size\n ctx.strokeStyle = color\n if (style === LineType.Dashed) {\n ctx.setLineDash(dashedValue)\n } else {\n ctx.setLineDash([])\n }\n ctx.beginPath()\n ctx.moveTo(coordinates[0].x, coordinates[0].y)\n\n if (smooth ?? false) {\n let controlCoordinates: Coordinate[] = []\n for (let i = 1; i < length - 1; i++) {\n controlCoordinates = controlCoordinates.concat(getSmoothControlCoordinate([coordinates[i - 1], coordinates[i], coordinates[i + 1]]))\n }\n ctx.quadraticCurveTo(controlCoordinates[0].x, controlCoordinates[0].y, coordinates[1].x, coordinates[1].y)\n let i = 2\n for (; i < length - 1; i++) {\n ctx.bezierCurveTo(\n controlCoordinates[(i - 2) * 2 + 1].x,\n controlCoordinates[(i - 2) * 2 + 1].y,\n controlCoordinates[(i - 1) * 2].x,\n controlCoordinates[(i - 1) * 2].y,\n coordinates[i].x,\n coordinates[i].y\n )\n }\n ctx.quadraticCurveTo(\n controlCoordinates[(i - 2) * 2 + 1].x,\n controlCoordinates[(i - 2) * 2 + 1].y,\n coordinates[i].x,\n coordinates[i].y\n )\n } else {\n for (let i = 1; i < coordinates.length; i++) {\n ctx.lineTo(coordinates[i].x, coordinates[i].y)\n }\n }\n ctx.stroke()\n ctx.closePath()\n }\n}\n\nexport interface LineAttrs {\n coordinates: Coordinate[]\n}\n\nconst line: FigureTemplate> = {\n name: 'line',\n checkEventOn: checkCoordinateOnLine,\n draw: (ctx: CanvasRenderingContext2D, attrs: LineAttrs, styles: Partial) => {\n drawLine(ctx, attrs, styles)\n }\n}\n\nexport default line\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate from '../../common/Coordinate'\nimport Bounding from '../../common/Bounding'\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nimport { LineAttrs, getLinearSlopeIntercept } from '../figure/line'\n\n/**\n * 获取平行线\n * @param coordinates\n * @param bounding\n * @param extendParallelLineCount\n * @returns {Array}\n */\nexport function getParallelLines (coordinates: Coordinate[], bounding: Bounding, extendParallelLineCount?: number): LineAttrs[] {\n const count = extendParallelLineCount ?? 0\n const lines: LineAttrs[] = []\n if (coordinates.length > 1) {\n if (coordinates[0].x === coordinates[1].x) {\n const startY = 0\n const endY = bounding.height\n lines.push({ coordinates: [{ x: coordinates[0].x, y: startY }, { x: coordinates[0].x, y: endY }] })\n if (coordinates.length > 2) {\n lines.push({ coordinates: [{ x: coordinates[2].x, y: startY }, { x: coordinates[2].x, y: endY }] })\n const distance = coordinates[0].x - coordinates[2].x\n for (let i = 0; i < count; i++) {\n const d = distance * (i + 1)\n lines.push({ coordinates: [{ x: coordinates[0].x + d, y: startY }, { x: coordinates[0].x + d, y: endY }] })\n }\n }\n } else {\n const startX = 0\n const endX = bounding.width\n const kb = getLinearSlopeIntercept(coordinates[0], coordinates[1]) as number[]\n const k = kb[0]\n const b = kb[1]\n lines.push({ coordinates: [{ x: startX, y: startX * k + b }, { x: endX, y: endX * k + b }] })\n if (coordinates.length > 2) {\n const b1 = coordinates[2].y - k * coordinates[2].x\n lines.push({ coordinates: [{ x: startX, y: startX * k + b1 }, { x: endX, y: endX * k + b1 }] })\n const distance = b - b1\n for (let i = 0; i < count; i++) {\n const b2 = b + distance * (i + 1)\n lines.push({ coordinates: [{ x: startX, y: startX * k + b2 }, { x: endX, y: endX * k + b2 }] })\n }\n }\n }\n }\n return lines\n}\n\nconst parallelStraightLine: OverlayTemplate = {\n name: 'parallelStraightLine',\n totalStep: 4,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding }) => {\n return [\n {\n type: 'line',\n attrs: getParallelLines(coordinates, bounding)\n }\n ]\n }\n}\n\nexport default parallelStraightLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nimport { getParallelLines } from './parallelStraightLine'\n\nconst priceChannelLine: OverlayTemplate = {\n name: 'priceChannelLine',\n totalStep: 4,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding }) => {\n return [\n {\n type: 'line',\n attrs: getParallelLines(coordinates, bounding, 1)\n }\n ]\n }\n}\n\nexport default priceChannelLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nimport { formatThousands } from '../../common/utils/format'\n\nconst priceLine: OverlayTemplate = {\n name: 'priceLine',\n totalStep: 2,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding, precision, overlay, thousandsSeparator }) => {\n const { value = 0 } = (overlay.points)[0]\n return [\n {\n type: 'line',\n attrs: { coordinates: [coordinates[0], { x: bounding.width, y: coordinates[0].y }] }\n },\n {\n type: 'text',\n ignoreEvent: true,\n attrs: { x: coordinates[0].x, y: coordinates[0].y, text: formatThousands(value.toFixed(precision.price), thousandsSeparator), baseline: 'bottom' }\n }\n ]\n }\n}\n\nexport default priceLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate from '../../common/Coordinate'\nimport Bounding from '../../common/Bounding'\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nimport { getLinearYFromCoordinates, LineAttrs } from '../figure/line'\n\nexport function getRayLine (coordinates: Coordinate[], bounding: Bounding): LineAttrs | LineAttrs[] {\n if (coordinates.length > 1) {\n let coordinate: Coordinate\n if (coordinates[0].x === coordinates[1].x && coordinates[0].y !== coordinates[1].y) {\n if (coordinates[0].y < coordinates[1].y) {\n coordinate = {\n x: coordinates[0].x,\n y: bounding.height\n }\n } else {\n coordinate = {\n x: coordinates[0].x,\n y: 0\n }\n }\n } else if (coordinates[0].x > coordinates[1].x) {\n coordinate = {\n x: 0,\n y: getLinearYFromCoordinates(coordinates[0], coordinates[1], { x: 0, y: coordinates[0].y })\n }\n } else {\n coordinate = {\n x: bounding.width,\n y: getLinearYFromCoordinates(coordinates[0], coordinates[1], { x: bounding.width, y: coordinates[0].y })\n }\n }\n return { coordinates: [coordinates[0], coordinate] }\n }\n return []\n}\n\nconst rayLine: OverlayTemplate = {\n name: 'rayLine',\n totalStep: 3,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding }) => {\n return [\n {\n type: 'line',\n attrs: getRayLine(coordinates, bounding)\n }\n ]\n }\n}\n\nexport default rayLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nconst segment: OverlayTemplate = {\n name: 'segment',\n totalStep: 3,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates }) => {\n if (coordinates.length === 2) {\n return [\n {\n type: 'line',\n attrs: { coordinates }\n }\n ]\n }\n return []\n }\n}\n\nexport default segment\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLinearYFromCoordinates } from '../figure/line'\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nconst straightLine: OverlayTemplate = {\n name: 'straightLine',\n totalStep: 3,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding }) => {\n if (coordinates.length === 2) {\n if (coordinates[0].x === coordinates[1].x) {\n return [\n {\n type: 'line',\n attrs: {\n coordinates: [\n {\n x: coordinates[0].x,\n y: 0\n }, {\n x: coordinates[0].x,\n y: bounding.height\n }\n ]\n }\n }\n ]\n }\n return [\n {\n type: 'line',\n attrs: {\n coordinates: [\n {\n x: 0,\n y: getLinearYFromCoordinates(coordinates[0], coordinates[1], { x: 0, y: coordinates[0].y })\n }, {\n x: bounding.width,\n y: getLinearYFromCoordinates(coordinates[0], coordinates[1], { x: bounding.width, y: coordinates[0].y })\n }\n ]\n }\n }\n ]\n }\n return []\n }\n}\n\nexport default straightLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nconst verticalRayLine: OverlayTemplate = {\n name: 'verticalRayLine',\n totalStep: 3,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding }) => {\n if (coordinates.length === 2) {\n const coordinate = { x: coordinates[0].x, y: 0 }\n if (coordinates[0].y < coordinates[1].y) {\n coordinate.y = bounding.height\n }\n return [\n {\n type: 'line',\n attrs: { coordinates: [coordinates[0], coordinate] }\n }\n ]\n }\n return []\n },\n performEventPressedMove: ({ points, performPoint }) => {\n points[0].timestamp = performPoint.timestamp\n points[0].dataIndex = performPoint.dataIndex\n points[1].timestamp = performPoint.timestamp\n points[1].dataIndex = performPoint.dataIndex\n },\n performEventMoveForDrawing: ({ currentStep, points, performPoint }) => {\n if (currentStep === 2) {\n points[0].timestamp = performPoint.timestamp\n points[0].dataIndex = performPoint.dataIndex\n }\n }\n}\n\nexport default verticalRayLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nconst verticalSegment: OverlayTemplate = {\n name: 'verticalSegment',\n totalStep: 3,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates }) => {\n if (coordinates.length === 2) {\n return [\n {\n type: 'line',\n attrs: { coordinates }\n }\n ]\n }\n return []\n },\n performEventPressedMove: ({ points, performPoint }) => {\n points[0].timestamp = performPoint.timestamp\n points[0].dataIndex = performPoint.dataIndex\n points[1].timestamp = performPoint.timestamp\n points[1].dataIndex = performPoint.dataIndex\n },\n performEventMoveForDrawing: ({ currentStep, points, performPoint }) => {\n if (currentStep === 2) {\n points[0].timestamp = performPoint.timestamp\n points[0].dataIndex = performPoint.dataIndex\n }\n }\n}\n\nexport default verticalSegment\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nconst verticalStraightLine: OverlayTemplate = {\n name: 'verticalStraightLine',\n totalStep: 2,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding }) => {\n return [\n {\n type: 'line',\n attrs: {\n coordinates: [\n {\n x: coordinates[0].x,\n y: 0\n }, {\n x: coordinates[0].x,\n y: bounding.height\n }\n ]\n }\n }\n ]\n }\n}\n\nexport default verticalStraightLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OverlayTemplate } from '../../component/Overlay'\nimport { isFunction, isValid } from '../../common/utils/typeChecks'\n\nconst simpleAnnotation: OverlayTemplate = {\n name: 'simpleAnnotation',\n totalStep: 2,\n createPointFigures: ({ overlay, coordinates }) => {\n let text\n if (isValid(overlay.extendData)) {\n if (!isFunction(overlay.extendData)) {\n text = overlay.extendData ?? ''\n } else {\n text = overlay.extendData(overlay)\n }\n }\n const startX = coordinates[0].x\n const startY = coordinates[0].y - 6\n const lineEndY = startY - 50\n const arrowEndY = lineEndY - 5\n return [\n {\n type: 'line',\n attrs: { coordinates: [{ x: startX, y: startY }, { x: startX, y: lineEndY }] },\n ignoreEvent: true\n },\n {\n type: 'polygon',\n attrs: { coordinates: [{ x: startX, y: lineEndY }, { x: startX - 4, y: arrowEndY }, { x: startX + 4, y: arrowEndY }] },\n ignoreEvent: true\n },\n {\n type: 'rectText',\n attrs: { x: startX, y: arrowEndY, text: text ?? '', align: 'center', baseline: 'bottom' },\n ignoreEvent: true\n }\n ]\n }\n}\n\nexport default simpleAnnotation\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { formatPrecision } from '../../common/utils/format'\n\nimport { OverlayTemplate } from '../../component/Overlay'\n\nimport { isFunction, isValid } from '../../common/utils/typeChecks'\n\nconst simpleTag: OverlayTemplate = {\n name: 'simpleTag',\n totalStep: 2,\n createPointFigures: ({ bounding, coordinates }) => {\n return {\n type: 'line',\n attrs: {\n coordinates: [\n { x: 0, y: coordinates[0].y },\n { x: bounding.width, y: coordinates[0].y }\n ]\n },\n ignoreEvent: true\n }\n },\n createYAxisFigures: ({ overlay, coordinates, bounding, yAxis, precision }) => {\n const isFromZero = yAxis?.isFromZero() ?? false\n let textAlign: CanvasTextAlign\n let x: number\n if (isFromZero) {\n textAlign = 'left'\n x = 0\n } else {\n textAlign = 'right'\n x = bounding.width\n }\n let text\n if (isValid(overlay.extendData)) {\n if (!isFunction(overlay.extendData)) {\n text = overlay.extendData ?? ''\n } else {\n text = overlay.extendData(overlay)\n }\n }\n if (!isValid(text) && overlay.points[0].value !== undefined) {\n text = formatPrecision(overlay.points[0].value, precision.price)\n }\n return { type: 'rectText', attrs: { x, y: coordinates[0].y, text: text ?? '', align: textAlign, baseline: 'middle' } }\n }\n}\n\nexport default simpleTag\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../../common/Nullable'\n\nimport OverlayImp, { OverlayTemplate, OverlayConstructor } from '../../component/Overlay'\n\nimport fibonacciLine from './fibonacciLine'\nimport horizontalRayLine from './horizontalRayLine'\nimport horizontalSegment from './horizontalSegment'\nimport horizontalStraightLine from './horizontalStraightLine'\nimport parallelStraightLine from './parallelStraightLine'\nimport priceChannelLine from './priceChannelLine'\nimport priceLine from './priceLine'\nimport rayLine from './rayLine'\nimport segment from './segment'\nimport straightLine from './straightLine'\nimport verticalRayLine from './verticalRayLine'\nimport verticalSegment from './verticalSegment'\nimport verticalStraightLine from './verticalStraightLine'\n\nimport simpleAnnotation from './simpleAnnotation'\nimport simpleTag from './simpleTag'\n\nconst overlays: Record = {}\n\nconst extensions = [\n fibonacciLine, horizontalRayLine, horizontalSegment, horizontalStraightLine,\n parallelStraightLine, priceChannelLine, priceLine, rayLine, segment,\n straightLine, verticalRayLine, verticalSegment, verticalStraightLine,\n simpleAnnotation, simpleTag\n]\n\nextensions.forEach((template: OverlayTemplate) => {\n overlays[template.name] = OverlayImp.extend(template)\n})\n\nfunction registerOverlay (template: OverlayTemplate): void {\n overlays[template.name] = OverlayImp.extend(template)\n}\n\nfunction getOverlayClass (name: string): Nullable {\n return overlays[name] ?? null\n}\n\nfunction getSupportedOverlays (): string[] {\n return Object.keys(overlays)\n}\n\nexport { registerOverlay, getOverlayClass, getSupportedOverlays }\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { merge } from './utils/typeChecks'\n\nexport default interface Bounding {\n width: number\n height: number\n left: number\n right: number\n top: number\n bottom: number\n}\n\nexport function getDefaultBounding (bounding?: Partial): Bounding {\n const defaultBounding: Bounding = {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }\n if (bounding !== undefined) {\n merge(defaultBounding, bounding)\n }\n return defaultBounding\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Bounding, { getDefaultBounding } from '../common/Bounding'\nimport Updater, { UpdateLevel } from '../common/Updater'\nimport Eventful from '../common/Eventful'\n\nimport Axis from '../component/Axis'\n\nimport Pane from '../pane/Pane'\n\nimport { createDom } from '../common/utils/dom'\nimport { merge } from '../common/utils/typeChecks'\n\nexport const WidgetNameConstants = {\n MAIN: 'main',\n XAXIS: 'xAxis',\n YAXIS: 'yAxis',\n SEPARATOR: 'separator'\n}\n\nexport default abstract class Widget extends Eventful implements Updater {\n /**\n * Parent pane\n */\n private readonly _pane: Pane\n\n /**\n * Root dom container\n */\n private _container: HTMLElement\n\n private readonly _bounding: Bounding = getDefaultBounding()\n\n constructor (rootContainer: HTMLElement, pane: Pane) {\n super()\n this._pane = pane\n this._init(rootContainer)\n }\n\n private _init (rootContainer: HTMLElement): void {\n this._container = createDom('div', this.getContainerStyle())\n if (this.insertBefore()) {\n const lastElement = rootContainer.lastChild\n if (lastElement !== null) {\n rootContainer.insertBefore(this._container, lastElement)\n } else {\n rootContainer.appendChild(this._container)\n }\n } else {\n rootContainer.appendChild(this._container)\n }\n this.initDom(this._container)\n }\n\n setBounding (bounding: Partial): Widget {\n merge(this._bounding, bounding)\n return this\n }\n\n getContainer (): HTMLElement { return this._container }\n\n getBounding (): Bounding {\n return this._bounding\n }\n\n getPane (): Pane {\n return this._pane\n }\n\n update (level: UpdateLevel): void {\n this.updateImp(level, this._container, this._bounding)\n }\n\n abstract getName (): string\n\n protected insertBefore (): boolean { return false }\n\n protected abstract getContainerStyle (): Partial\n\n protected abstract initDom (container: HTMLElement): void\n\n protected abstract updateImp (level: UpdateLevel, container: HTMLElement, bounding: Bounding): void\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function throttle (func: (...args: any[]) => any, wait?: number): () => void {\n let previous = 0\n return function () {\n const now = Date.now()\n if (now - previous > (wait ?? 20)) {\n func.apply(this, arguments)\n previous = now\n }\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Bounding from '../common/Bounding'\nimport { UpdateLevel } from '../common/Updater'\nimport { MouseTouchEvent } from '../common/SyntheticEvent'\nimport { ActionType } from '../common/Action'\n\nimport Axis from '../component/Axis'\nimport YAxis from '../component/YAxis'\n\nimport Widget, { WidgetNameConstants } from './Widget'\nimport Pane from '../pane/Pane'\n\nimport { createDom } from '../common/utils/dom'\nimport { getPixelRatio } from '../common/utils/canvas'\nimport { throttle } from '../common/utils/performance'\n\nexport const REAL_SEPARATOR_HEIGHT = 7\n\nexport default class SeparatorWidget extends Widget {\n private _moveDom: HTMLElement\n\n private _dragFlag = false\n private _dragStartY = 0\n\n private _topPaneHeight = 0\n private _currentPaneHeight = 0\n\n constructor (rootContainer: HTMLElement, pane: Pane) {\n super(rootContainer, pane)\n this.registerEvent('touchStartEvent', this._mouseDownEvent.bind(this))\n .registerEvent('touchMoveEvent', this._pressedMouseMoveEvent.bind(this))\n .registerEvent('touchEndEvent', this._mouseUpEvent.bind(this))\n .registerEvent('mouseDownEvent', this._mouseDownEvent.bind(this))\n .registerEvent('mouseUpEvent', this._mouseUpEvent.bind(this))\n .registerEvent('pressedMouseMoveEvent', this._pressedMouseMoveEvent.bind(this))\n .registerEvent('mouseEnterEvent', this._mouseEnterEvent.bind(this))\n .registerEvent('mouseLeaveEvent', this._mouseLeaveEvent.bind(this))\n }\n\n override getName (): string {\n return WidgetNameConstants.SEPARATOR\n }\n\n override checkEventOn (): boolean {\n return true\n }\n\n private _mouseDownEvent (event: MouseTouchEvent): boolean {\n this._dragFlag = true\n this._dragStartY = event.pageY\n const pane = this.getPane()\n this._topPaneHeight = pane.getTopPane()?.getBounding().height ?? 0\n this._currentPaneHeight = pane.getBounding().height\n return true\n }\n\n private _mouseUpEvent (): boolean {\n this._dragFlag = false\n return this._mouseLeaveEvent()\n }\n\n private readonly _pressedMouseMoveEvent = throttle(this._pressedTouchMouseMoveEvent, 20)\n\n private _pressedTouchMouseMoveEvent (event: MouseTouchEvent): boolean {\n const dragDistance = event.pageY - this._dragStartY\n const currentPane = this.getPane()\n const topPane = currentPane.getTopPane()\n const isUpDrag = dragDistance < 0\n if (topPane !== null && currentPane.getOptions().dragEnabled) {\n let reducedPane: Pane\n let increasedPane: Pane\n let startDragReducedPaneHeight: number\n let startDragIncreasedPaneHeight: number\n if (isUpDrag) {\n reducedPane = topPane\n increasedPane = currentPane\n startDragReducedPaneHeight = this._topPaneHeight\n startDragIncreasedPaneHeight = this._currentPaneHeight\n } else {\n reducedPane = currentPane\n increasedPane = topPane\n startDragReducedPaneHeight = this._currentPaneHeight\n startDragIncreasedPaneHeight = this._topPaneHeight\n }\n const reducedPaneMinHeight = reducedPane.getOptions().minHeight\n if (startDragReducedPaneHeight > reducedPaneMinHeight) {\n const reducedPaneHeight = Math.max(startDragReducedPaneHeight - Math.abs(dragDistance), reducedPaneMinHeight)\n const diffHeight = startDragReducedPaneHeight - reducedPaneHeight\n reducedPane.setBounding({ height: reducedPaneHeight })\n increasedPane.setBounding({ height: startDragIncreasedPaneHeight + diffHeight })\n const chart = currentPane.getChart()\n chart.getChartStore().getActionStore().execute(ActionType.OnPaneDrag, { paneId: currentPane.getId })\n chart.adjustPaneViewport(true, true, true, true, true)\n }\n }\n return true\n }\n\n private _mouseEnterEvent (): boolean {\n const pane = this.getPane()\n if (pane.getOptions().dragEnabled) {\n const chart = pane.getChart()\n const styles = chart.getStyles().separator\n this._moveDom.style.background = styles.activeBackgroundColor\n return true\n }\n return false\n }\n\n private _mouseLeaveEvent (): boolean {\n if (!this._dragFlag) {\n this._moveDom.style.background = ''\n return true\n }\n return false\n }\n\n override getContainerStyle (): Partial {\n return {\n margin: '0',\n padding: '0',\n position: 'relative',\n boxSizing: 'border-box'\n }\n }\n\n override insertBefore (): boolean { return true }\n\n override initDom (container: HTMLElement): void {\n this._moveDom = createDom('div', {\n width: '100%',\n height: `${REAL_SEPARATOR_HEIGHT}px`,\n margin: '0',\n padding: '0',\n position: 'absolute',\n top: '-3px',\n zIndex: '20',\n boxSizing: 'border-box',\n cursor: 'ns-resize'\n })\n container.appendChild(this._moveDom)\n }\n\n override updateImp (level: UpdateLevel, container: HTMLElement, bounding: Bounding): void {\n if (level === UpdateLevel.All || level === UpdateLevel.Separator) {\n const styles = this.getPane().getChart().getStyles().separator\n this._moveDom.style.top = `${-Math.floor((REAL_SEPARATOR_HEIGHT - styles.size) / 2)}px`\n this._moveDom.style.height = `${REAL_SEPARATOR_HEIGHT}px`\n const fill = styles.fill\n container.style.backgroundColor = styles.color\n container.style.height = `${styles.size}px`\n container.style.marginLeft = `${fill ? 0 : bounding.left}px`\n container.style.width = fill ? '100%' : `${bounding.width}px`\n }\n }\n\n getImage (): HTMLCanvasElement {\n const styles = this.getPane().getChart().getStyles().separator\n const width = this.getContainer().offsetWidth\n const height = styles.size\n const canvas = createDom('canvas', {\n width: `${width}px`,\n height: `${height}px`,\n boxSizing: 'border-box'\n })\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D\n const pixelRatio = getPixelRatio(canvas)\n canvas.width = width * pixelRatio\n canvas.height = height * pixelRatio\n ctx.scale(pixelRatio, pixelRatio)\n ctx.fillStyle = styles.color\n ctx.fillRect(this.getBounding().left, 0, width, height)\n return canvas\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport DeepRequired from '../common/DeepRequired'\nimport Nullable from '../common/Nullable'\nimport Updater, { UpdateLevel } from '../common/Updater'\nimport Bounding, { getDefaultBounding } from '../common/Bounding'\n\nimport { merge } from '../common/utils/typeChecks'\n\nimport Axis from '../component/Axis'\n\nimport DrawWidget from '../widget/DrawWidget'\nimport SeparatorWidget, { REAL_SEPARATOR_HEIGHT } from '../widget/SeparatorWidget'\nimport YAxisWidget from '../widget/YAxisWidget'\n\nimport Chart from '../Chart'\n\nimport { createDom } from '../common/utils/dom'\nimport { getPixelRatio } from '../common/utils/canvas'\n\nexport interface PaneGap {\n top?: number\n bottom?: number\n}\n\nexport interface PaneAxisOptions {\n scrollZoomEnabled?: boolean\n}\n\nexport interface PaneOptions {\n id?: string\n height?: number\n minHeight?: number\n dragEnabled?: boolean\n gap?: PaneGap\n axisOptions?: PaneAxisOptions\n}\n\nexport const PANE_MIN_HEIGHT = 30\n\nexport const PANE_DEFAULT_HEIGHT = 100\n\nexport const PaneIdConstants = {\n CANDLE: 'candle_pane',\n INDICATOR: 'indcator_pane_',\n XAXIS: 'xaxis_pane'\n}\n\nexport default abstract class Pane implements Updater {\n private _container: HTMLElement\n private _seriesContiainer: HTMLElement\n private readonly _id: string\n private readonly _chart: Chart\n private _mainWidget: DrawWidget\n private _yAxisWidget: Nullable = null\n private _separatorWidget: Nullable = null\n private readonly _axis: C = this.createAxisComponent()\n\n private readonly _bounding: Bounding = getDefaultBounding()\n\n private _topPane: Nullable\n private _bottomPane: Nullable\n\n private readonly _options: DeepRequired> = { minHeight: PANE_MIN_HEIGHT, dragEnabled: true, gap: { top: 0.2, bottom: 0.1 }, axisOptions: { scrollZoomEnabled: true } }\n\n constructor (rootContainer: HTMLElement, chart: Chart, id: string, topPane?: Pane, bottomPane?: Pane) {\n this._chart = chart\n this._id = id\n this._topPane = topPane ?? null\n this._bottomPane = bottomPane ?? null\n this._init(rootContainer)\n }\n\n private _init (rootContainer: HTMLElement): void {\n this._container = rootContainer\n this._seriesContiainer = createDom('div', {\n width: '100%',\n margin: '0',\n padding: '0',\n position: 'relative',\n overflow: 'hidden',\n boxSizing: 'border-box'\n })\n this._separatorWidget = this.createSeparatorWidget(rootContainer)\n const lastElement = rootContainer.lastChild\n if (lastElement !== null) {\n rootContainer.insertBefore(this._seriesContiainer, lastElement)\n } else {\n rootContainer.appendChild(this._seriesContiainer)\n }\n this._mainWidget = this.createMainWidget(this._seriesContiainer)\n this._yAxisWidget = this.creatYAxisWidget(this._seriesContiainer)\n }\n\n getContainer (): HTMLElement {\n return this._seriesContiainer\n }\n\n getId (): string {\n return this._id\n }\n\n setOptions (options: Omit): Pane {\n merge(this._options, options)\n let container: HTMLElement\n let cursor: string\n if (this.getId() === PaneIdConstants.XAXIS) {\n container = this.getMainWidget().getContainer()\n cursor = 'ew-resize'\n } else {\n container = this.getYAxisWidget()?.getContainer() as HTMLElement\n cursor = 'ns-resize'\n }\n if (options.axisOptions?.scrollZoomEnabled ?? true) {\n container.style.cursor = cursor\n } else {\n container.style.cursor = 'default'\n }\n return this\n }\n\n getOptions (): DeepRequired> { return this._options }\n\n getChart (): Chart {\n return this._chart\n }\n\n getAxisComponent (): C {\n return this._axis\n }\n\n setBounding (rootBounding: Partial, mainBounding?: Partial, yAxisBounding?: Partial): Pane {\n merge(this._bounding, rootBounding)\n let separatorSize = 0\n if (this._separatorWidget !== null) {\n separatorSize = this._chart.getStyles().separator.size\n const separatorBounding: Partial = { ...rootBounding, height: REAL_SEPARATOR_HEIGHT }\n if (rootBounding.top !== undefined) {\n separatorBounding.top = rootBounding.top - Math.floor((REAL_SEPARATOR_HEIGHT - separatorSize) / 2)\n }\n this._separatorWidget.setBounding(separatorBounding)\n }\n const contentBounding: Partial = {}\n if (rootBounding.height !== undefined) {\n contentBounding.height = rootBounding.height - separatorSize\n }\n if (rootBounding.top !== undefined) {\n contentBounding.top = rootBounding.top + separatorSize\n }\n this._mainWidget.setBounding(contentBounding)\n this._yAxisWidget?.setBounding(contentBounding)\n if (mainBounding !== undefined) {\n this._mainWidget.setBounding(mainBounding)\n this._separatorWidget?.setBounding(mainBounding)\n }\n if (yAxisBounding !== undefined) {\n this._yAxisWidget?.setBounding(yAxisBounding)\n }\n return this\n }\n\n getTopPane (): Nullable {\n return this._topPane\n }\n\n setTopPane (pane: Nullable): Pane {\n this._topPane = pane\n return this\n }\n\n getBottomPane (): Nullable {\n return this._bottomPane\n }\n\n setBottomPane (pane: Nullable): Pane {\n this._bottomPane = pane\n return this\n }\n\n getBounding (): Bounding {\n return this._bounding\n }\n\n getMainWidget (): DrawWidget { return this._mainWidget }\n\n getYAxisWidget (): Nullable { return this._yAxisWidget }\n\n getSeparatorWidget (): Nullable { return this._separatorWidget }\n\n update (level?: UpdateLevel): void {\n if (this._bounding.width !== this._seriesContiainer.offsetWidth) {\n this._seriesContiainer.style.width = `${this._bounding.width}px`\n }\n const seriesHeight = this._mainWidget.getBounding().height\n if (seriesHeight !== this._seriesContiainer.offsetHeight) {\n this._seriesContiainer.style.height = `${seriesHeight}px`\n }\n const l = level ?? UpdateLevel.Drawer\n this._mainWidget.update(l)\n this._yAxisWidget?.update(l)\n this._separatorWidget?.update(l)\n }\n\n getImage (includeOverlay: boolean): HTMLCanvasElement {\n const { width, height } = this._bounding\n const canvas = createDom('canvas', {\n width: `${width}px`,\n height: `${height}px`,\n boxSizing: 'border-box'\n })\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D\n const pixelRatio = getPixelRatio(canvas)\n canvas.width = width * pixelRatio\n canvas.height = height * pixelRatio\n ctx.scale(pixelRatio, pixelRatio)\n\n let top = 0\n if (this._separatorWidget != null) {\n const separatorHeight = this.getChart().getStyles().separator.size\n top = separatorHeight\n ctx.drawImage(\n this._separatorWidget.getImage(),\n 0, 0,\n width, separatorHeight\n )\n }\n\n const mainBounding = this._mainWidget.getBounding()\n ctx.drawImage(\n this._mainWidget.getImage(includeOverlay),\n mainBounding.left, top,\n mainBounding.width, mainBounding.height\n )\n if (this._yAxisWidget !== null) {\n const yAxisBounding = this._yAxisWidget.getBounding()\n ctx.drawImage(\n this._yAxisWidget.getImage(includeOverlay),\n yAxisBounding.left, top,\n yAxisBounding.width, yAxisBounding.height\n )\n }\n return canvas\n }\n\n destroy (): void {\n this._container.removeChild(this._seriesContiainer)\n if (this._separatorWidget !== null) {\n this._container.removeChild(this._separatorWidget.getContainer())\n }\n }\n\n abstract getName (): string\n\n protected abstract createAxisComponent (): C\n\n protected createSeparatorWidget (_container: HTMLElement): Nullable { return null }\n\n protected creatYAxisWidget (_container: HTMLElement): Nullable { return null }\n\n protected abstract createMainWidget (container: HTMLElement): DrawWidget\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport { UpdateLevel } from '../common/Updater'\nimport { MouseTouchEvent } from '../common/SyntheticEvent'\n\nimport { createId } from '../common/utils/id'\n\nimport OverlayImp, { OVERLAY_ID_PREFIX, OVERLAY_ACTIVE_Z_LEVEL, OverlayCreate, OverlayRemove } from '../component/Overlay'\n\nimport { getOverlayClass } from '../extension/overlay/index'\n\nimport ChartStore from './ChartStore'\n\nimport { PaneIdConstants } from '../pane/Pane'\nimport { isFunction } from '../common/utils/typeChecks'\n\nexport interface ProgressOverlayInfo {\n paneId: string\n instance: OverlayImp\n appointPaneFlag: boolean\n}\n\nexport const enum EventOverlayInfoFigureType {\n None, Point, Other\n}\n\nexport interface EventOverlayInfo {\n paneId: string\n instance: Nullable\n figureType: EventOverlayInfoFigureType\n figureKey: string\n figureIndex: number\n attrsIndex: number\n}\n\nexport default class OverlayStore {\n private readonly _chartStore: ChartStore\n\n private _instances = new Map()\n\n private readonly _counter = new Map()\n\n /**\n * Overlay information in painting\n */\n private _progressInstanceInfo: Nullable = null\n\n /**\n * Overlay information by the mouse pressed\n */\n private _pressedInstanceInfo: EventOverlayInfo = {\n paneId: '',\n instance: null,\n figureType: EventOverlayInfoFigureType.None,\n figureKey: '',\n figureIndex: -1,\n attrsIndex: -1\n }\n\n /**\n * Overlay information by hover\n */\n private _hoverInstanceInfo: EventOverlayInfo = {\n paneId: '',\n instance: null,\n figureType: EventOverlayInfoFigureType.None,\n figureKey: '',\n figureIndex: -1,\n attrsIndex: -1\n }\n\n /**\n * Overlay information by the mouse click\n */\n private _clickInstanceInfo: EventOverlayInfo = {\n paneId: '',\n instance: null,\n figureType: EventOverlayInfoFigureType.None,\n figureKey: '',\n figureIndex: -1,\n attrsIndex: -1\n }\n\n constructor (chartStore: ChartStore) {\n this._chartStore = chartStore\n }\n\n private _overrideInstance (instance: OverlayImp, overlay: Partial): [boolean, boolean] {\n const {\n id, groupId, points, styles, lock, visible, zLevel, mode, extendData,\n onDrawStart, onDrawing,\n onDrawEnd, onClick, onRightClick,\n onPressedMoveStart, onPressedMoving, onPressedMoveEnd,\n onMouseEnter, onMouseLeave,\n onRemoved, onSelected, onDeselected\n } = overlay\n let updateFlag = false\n let sortFlag = false\n if (id !== undefined) {\n instance.setId(id)\n }\n if (groupId !== undefined) {\n instance.setGroupId(groupId)\n }\n if (points !== undefined && instance.setPoints(points)) {\n updateFlag = true\n }\n if (styles !== undefined && instance.setStyles(styles)) {\n updateFlag = true\n }\n if (lock !== undefined) {\n instance.setLock(lock)\n }\n if (visible !== undefined && instance.setVisible(visible)) {\n updateFlag = true\n }\n if (zLevel !== undefined && instance.setZLevel(zLevel)) {\n updateFlag = true\n sortFlag = true\n }\n if (mode !== undefined) {\n instance.setMode(mode)\n }\n if (extendData !== undefined && instance.setExtendData(extendData)) {\n updateFlag = true\n }\n if (onDrawStart !== undefined) {\n instance.setOnDrawStartCallback(onDrawStart)\n }\n if (onDrawing !== undefined) {\n instance.setOnDrawingCallback(onDrawing)\n }\n if (onDrawEnd !== undefined) {\n instance.setOnDrawEndCallback(onDrawEnd)\n }\n if (onClick !== undefined) {\n instance.setOnClickCallback(onClick)\n }\n if (onRightClick !== undefined) {\n instance.setOnRightClickCallback(onRightClick)\n }\n if (onPressedMoveStart !== undefined) {\n instance.setOnPressedMoveStartCallback(onPressedMoveStart)\n }\n if (onPressedMoving !== undefined) {\n instance.setOnPressedMovingCallback(onPressedMoving)\n }\n if (onPressedMoveEnd !== undefined) {\n instance.setOnPressedMoveEndCallback(onPressedMoveEnd)\n }\n if (onMouseEnter !== undefined) {\n instance.setOnMouseEnterCallback(onMouseEnter)\n }\n if (onMouseLeave !== undefined) {\n instance.setOnMouseLeaveCallback(onMouseLeave)\n }\n if (onRemoved !== undefined) {\n instance.setOnRemovedCallback(onRemoved)\n }\n if (onSelected !== undefined) {\n instance.setOnSelectedCallback(onSelected)\n }\n if (onDeselected !== undefined) {\n instance.setOnDeselectedCallback(onDeselected)\n }\n return [updateFlag, sortFlag]\n }\n\n getInstanceById (id: string): Nullable {\n for (const entry of this._instances) {\n const paneShapes = entry[1]\n const shape = paneShapes.find(s => s.id === id)\n if (shape !== undefined) {\n return shape\n }\n }\n if (this._progressInstanceInfo !== null) {\n if (this._progressInstanceInfo.instance.id === id) {\n return this._progressInstanceInfo.instance\n }\n }\n return null\n }\n\n private _sort (paneId?: string): void {\n if (paneId !== undefined) {\n this._instances.get(paneId)?.sort((o1, o2) => o1.defaultZLevel - o2.defaultZLevel).sort((o1, o2) => o1.zLevel - o2.zLevel)\n } else {\n this._instances.forEach(paneInstances => {\n paneInstances.sort((o1, o2) => o1.defaultZLevel - o2.defaultZLevel).sort((o1, o2) => o1.zLevel - o2.zLevel)\n })\n }\n }\n\n addInstances (overlays: OverlayCreate[], paneId: string, appointPaneFlag: boolean): Array> {\n const ids = overlays.map(overlay => {\n const id = overlay.id ?? createId(OVERLAY_ID_PREFIX)\n if (this.getInstanceById(id) === null) {\n const OverlayClazz = getOverlayClass(overlay.name)\n if (OverlayClazz !== null) {\n const instance = new OverlayClazz()\n const count = (this._counter.get(paneId) ?? 0) + 1\n this._counter.set(paneId, count)\n instance.setDefaultZLevel(count)\n instance.setPaneId(paneId)\n const groupId = overlay.groupId ?? id\n overlay.id = id\n overlay.groupId = groupId\n this._overrideInstance(instance, overlay)\n if (instance.isDrawing()) {\n this._progressInstanceInfo = { paneId, instance, appointPaneFlag }\n } else {\n if (!this._instances.has(paneId)) {\n this._instances.set(paneId, [])\n }\n this._instances.get(paneId)?.push(instance)\n }\n if (instance.isStart()) {\n instance.onDrawStart?.(({ overlay: instance }))\n }\n return id\n }\n }\n return null\n })\n if (ids.some(id => id !== null)) {\n this._sort()\n this._chartStore.getChart().updatePane(UpdateLevel.Overlay, paneId)\n }\n return ids\n }\n\n getProgressInstanceInfo (): Nullable {\n return this._progressInstanceInfo\n }\n\n progressInstanceComplete (): void {\n if (this._progressInstanceInfo !== null) {\n const { instance, paneId } = this._progressInstanceInfo\n if (!instance.isDrawing()) {\n if (!this._instances.has(paneId)) {\n this._instances.set(paneId, [])\n }\n this._instances.get(paneId)?.push(instance)\n this._sort(paneId)\n this._progressInstanceInfo = null\n }\n }\n }\n\n updateProgressInstanceInfo (paneId: string, appointPaneFlag?: boolean): void {\n if (this._progressInstanceInfo !== null) {\n if (appointPaneFlag !== undefined && appointPaneFlag) {\n this._progressInstanceInfo.appointPaneFlag = appointPaneFlag\n }\n this._progressInstanceInfo.paneId = paneId\n this._progressInstanceInfo.instance.setPaneId(paneId)\n }\n }\n\n getInstances (paneId?: string): OverlayImp[] {\n if (paneId === undefined) {\n let instances: OverlayImp[] = []\n this._instances.forEach(paneInstances => {\n instances = instances.concat(paneInstances)\n })\n return instances\n }\n return this._instances.get(paneId) ?? []\n }\n\n override (overlay: Partial): void {\n const { id, groupId, name } = overlay\n let updateFlag = false\n let sortFlag = false\n\n const setFlag: (instance: OverlayImp) => void = (instance: OverlayImp) => {\n const flags = this._overrideInstance(instance, overlay)\n if (flags[0]) {\n updateFlag = true\n }\n if (flags[1]) {\n sortFlag = true\n }\n }\n\n if (id !== undefined) {\n const instance = this.getInstanceById(id)\n if (instance !== null) {\n setFlag(instance)\n }\n } else {\n this._instances.forEach(paneInstances => {\n paneInstances.forEach(instance => {\n if (\n (name !== undefined && instance.name === name) ||\n (groupId !== undefined && instance.groupId === groupId) ||\n (name === undefined && groupId === undefined)\n ) {\n setFlag(instance)\n }\n })\n })\n if (this._progressInstanceInfo !== null) {\n const progressInstance = this._progressInstanceInfo.instance\n if (\n (name !== undefined && progressInstance.name === name) ||\n (groupId !== undefined && progressInstance.groupId === groupId) ||\n (name === undefined && groupId === undefined)\n ) {\n setFlag(progressInstance)\n }\n }\n }\n if (sortFlag) {\n this._sort()\n }\n if (updateFlag) {\n this._chartStore.getChart().updatePane(UpdateLevel.Overlay)\n }\n }\n\n removeInstance (overlayRemove?: OverlayRemove): void {\n const match: ((remove: OverlayRemove, overlay: OverlayImp) => boolean) = (remove: OverlayRemove, overlay: OverlayImp) => {\n if (remove.id !== undefined) {\n if (overlay.id !== remove.id) {\n return false\n }\n } else {\n if (remove.groupId !== undefined) {\n if (overlay.groupId !== remove.groupId) {\n return false\n }\n } else {\n if (remove.name !== undefined) {\n if (overlay.name !== remove.name) {\n return false\n }\n }\n }\n }\n return true\n }\n\n const updatePaneIds: string[] = []\n if (this._progressInstanceInfo !== null) {\n const { instance } = this._progressInstanceInfo\n if (\n overlayRemove === undefined ||\n (overlayRemove !== undefined && match(overlayRemove, instance))\n ) {\n updatePaneIds.push(this._progressInstanceInfo.paneId)\n instance.onRemoved?.({ overlay: instance })\n this._progressInstanceInfo = null\n }\n }\n if (overlayRemove !== undefined) {\n const instances = new Map()\n for (const entry of this._instances) {\n const paneInstances = entry[1]\n const newPaneInstances = paneInstances.filter(instance => {\n if (match(overlayRemove, instance)) {\n if (!updatePaneIds.includes(entry[0])) {\n updatePaneIds.push(entry[0])\n }\n instance.onRemoved?.({ overlay: instance })\n return false\n }\n return true\n })\n if (newPaneInstances.length > 0) {\n instances.set(entry[0], newPaneInstances)\n }\n }\n this._instances = instances\n } else {\n this._instances.forEach((paneInstances, paneId) => {\n updatePaneIds.push(paneId)\n paneInstances.forEach(instance => {\n instance.onRemoved?.({ overlay: instance })\n })\n })\n this._instances.clear()\n }\n if (updatePaneIds.length > 0) {\n const chart = this._chartStore.getChart()\n updatePaneIds.forEach(paneId => {\n chart.updatePane(UpdateLevel.Overlay, paneId)\n })\n chart.updatePane(UpdateLevel.Overlay, PaneIdConstants.XAXIS)\n }\n }\n\n setPressedInstanceInfo (info: EventOverlayInfo): void {\n this._pressedInstanceInfo = info\n }\n\n getPressedInstanceInfo (): EventOverlayInfo {\n return this._pressedInstanceInfo\n }\n\n setHoverInstanceInfo (info: EventOverlayInfo, event: MouseTouchEvent): void {\n const { instance, figureType, figureKey, figureIndex } = this._hoverInstanceInfo\n if (\n instance?.id !== info.instance?.id ||\n figureType !== info.figureType ||\n figureIndex !== info.figureIndex\n ) {\n this._hoverInstanceInfo = info\n if (instance?.id !== info.instance?.id) {\n let ignoreUpdateFlag = false\n let sortFlag = false\n if (instance !== null) {\n sortFlag = true\n instance.resetZLevel()\n if (isFunction(instance.onMouseLeave)) {\n instance.onMouseLeave({ overlay: instance, figureKey, figureIndex, ...event })\n ignoreUpdateFlag = true\n }\n }\n\n if (info.instance !== null) {\n sortFlag = true\n info.instance.setZLevel(OVERLAY_ACTIVE_Z_LEVEL)\n if (isFunction(info.instance.onMouseEnter)) {\n info.instance.onMouseEnter({ overlay: info.instance, figureKey: info.figureKey, figureIndex: info.figureIndex, ...event })\n ignoreUpdateFlag = true\n }\n }\n if (sortFlag) {\n this._sort()\n }\n if (!ignoreUpdateFlag) {\n this._chartStore.getChart().updatePane(UpdateLevel.Overlay)\n }\n }\n }\n }\n\n getHoverInstanceInfo (): EventOverlayInfo {\n return this._hoverInstanceInfo\n }\n\n setClickInstanceInfo (info: EventOverlayInfo, event: MouseTouchEvent): void {\n const { paneId, instance, figureType, figureKey, figureIndex } = this._clickInstanceInfo\n if (!(info.instance?.isDrawing() ?? false)) {\n info.instance?.onClick?.({ overlay: info.instance, figureKey: info.figureKey, figureIndex: info.figureIndex, ...event })\n }\n if (instance?.id !== info.instance?.id || figureType !== info.figureType || figureIndex !== info.figureIndex) {\n this._clickInstanceInfo = info\n if (instance?.id !== info.instance?.id) {\n instance?.onDeselected?.({ overlay: instance, figureKey, figureIndex, ...event })\n info.instance?.onSelected?.({ overlay: info.instance, figureKey: info.figureKey, figureIndex: info.figureIndex, ...event })\n const chart = this._chartStore.getChart()\n chart.updatePane(UpdateLevel.Overlay, info.paneId)\n if (paneId !== info.paneId) {\n chart.updatePane(UpdateLevel.Overlay, paneId)\n }\n chart.updatePane(UpdateLevel.Overlay, PaneIdConstants.XAXIS)\n }\n }\n }\n\n getClickInstanceInfo (): EventOverlayInfo {\n return this._clickInstanceInfo\n }\n\n isEmpty (): boolean {\n return this._instances.size === 0 && this._progressInstanceInfo === null\n }\n\n isDrawing (): boolean {\n return this._progressInstanceInfo !== null && (this._progressInstanceInfo?.instance.isDrawing() ?? false)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Action, { ActionType, ActionCallback } from '../common/Action'\n\nexport default class ActionStore {\n /**\n * Chart action map\n */\n private readonly _actions: Map = new Map()\n\n execute (type: ActionType, data?: any): void {\n this._actions.get(type)?.execute(data)\n }\n\n subscribe (type: ActionType, callback: ActionCallback): void {\n if (!this._actions.has(type)) {\n this._actions.set(type, new Action())\n }\n this._actions.get(type)?.subscribe(callback)\n }\n\n /**\n * 取消事件订阅\n * @param type\n * @param callback\n * @return {boolean}\n */\n unsubscribe (type: ActionType, callback?: ActionCallback): void {\n const action = this._actions.get(type)\n if (action !== undefined) {\n action.unsubscribe(callback)\n if (action.isEmpty()) {\n this._actions.delete(type)\n }\n }\n }\n\n has (type: ActionType): boolean {\n const action = this._actions.get(type)\n return action !== undefined && !action.isEmpty()\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport DeepPartial from '../../common/DeepPartial'\nimport { Styles } from '../../common/Options'\n\nconst light: DeepPartial = {\n grid: {\n horizontal: {\n color: '#EDEDED'\n },\n vertical: {\n color: '#EDEDED'\n }\n },\n candle: {\n priceMark: {\n high: {\n color: '#76808F'\n },\n low: {\n color: '#76808F'\n }\n },\n tooltip: {\n rect: {\n color: '#FEFEFE',\n borderColor: '#F2F3F5'\n },\n text: {\n color: '#76808F'\n }\n }\n },\n indicator: {\n tooltip: {\n text: {\n color: '#76808F'\n }\n }\n },\n xAxis: {\n axisLine: {\n color: '#DDDDDD'\n },\n tickText: {\n color: '#76808F'\n },\n tickLine: {\n color: '#DDDDDD'\n }\n },\n yAxis: {\n axisLine: {\n color: '#DDDDDD'\n },\n tickText: {\n color: '#76808F'\n },\n tickLine: {\n color: '#DDDDDD'\n }\n },\n separator: {\n color: '#DDDDDD'\n },\n crosshair: {\n horizontal: {\n line: {\n color: '#76808F'\n },\n text: {\n borderColor: '#686D76',\n backgroundColor: '#686D76'\n }\n },\n vertical: {\n line: {\n color: '#76808F'\n },\n text: {\n borderColor: '#686D76',\n backgroundColor: '#686D76'\n }\n }\n }\n}\n\nexport default light\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport DeepPartial from '../../common/DeepPartial'\nimport { Styles } from '../../common/Options'\n\nconst dark: DeepPartial = {\n grid: {\n horizontal: {\n color: '#292929'\n },\n vertical: {\n color: '#292929'\n }\n },\n candle: {\n priceMark: {\n high: {\n color: '#929AA5'\n },\n low: {\n color: '#929AA5'\n }\n },\n tooltip: {\n rect: {\n color: 'rgba(10, 10, 10, .6)',\n borderColor: 'rgba(10, 10, 10, .6)'\n },\n text: {\n color: '#929AA5'\n }\n }\n },\n indicator: {\n tooltip: {\n text: {\n color: '#929AA5'\n }\n }\n },\n xAxis: {\n axisLine: {\n color: '#333333'\n },\n tickText: {\n color: '#929AA5'\n },\n tickLine: {\n color: '#333333'\n }\n },\n yAxis: {\n axisLine: {\n color: '#333333'\n },\n tickText: {\n color: '#929AA5'\n },\n tickLine: {\n color: '#333333'\n }\n },\n separator: {\n color: '#333333'\n },\n crosshair: {\n horizontal: {\n line: {\n color: '#929AA5'\n },\n text: {\n borderColor: '#373a40',\n backgroundColor: '#373a40'\n }\n },\n vertical: {\n line: {\n color: '#929AA5'\n },\n text: {\n borderColor: '#373a40',\n backgroundColor: '#373a40'\n }\n }\n }\n}\n\nexport default dark\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../../common/Nullable'\nimport DeepPartial from '../../common/DeepPartial'\nimport { Styles } from '../../common/Options'\n\nimport light from './light'\nimport dark from './dark'\n\nconst styles: Record> = {\n light,\n dark\n}\n\nfunction registerStyles (name: string, ss: DeepPartial): void {\n styles[name] = ss\n}\n\nfunction getStyles (name: string): Nullable> {\n return styles[name] ?? null\n}\n\nexport {\n registerStyles,\n getStyles\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport KLineData from '../common/KLineData'\nimport Precision from '../common/Precision'\nimport VisibleData from '../common/VisibleData'\nimport { getDefaultStyles, Styles, getDefaultCustomApi, CustomApi, defaultLocale, Options } from '../common/Options'\n\nimport { isArray, isString, merge } from '../common/utils/typeChecks'\n\nimport TimeScaleStore from './TimeScaleStore'\nimport IndicatorStore from './IndicatorStore'\nimport CrosshairStore from './CrosshairStore'\nimport TooltipStore from './TooltipStore'\nimport OverlayStore from './OverlayStore'\nimport ActionStore from './ActionStore'\n\nimport { getStyles } from '../extension/styles/index'\n\nimport Chart from '../Chart'\n\nexport default class ChartStore {\n /**\n * Internal chart\n */\n private readonly _chart: Chart\n\n /**\n * Style config\n */\n private readonly _styles: Styles = getDefaultStyles()\n\n /**\n * Custom api\n */\n private readonly _customApi: CustomApi = getDefaultCustomApi()\n\n /**\n * language\n */\n private _locale: string = defaultLocale\n\n /**\n * Price and volume precision\n */\n private _precision: Precision = { price: 2, volume: 0 }\n\n /**\n * Thousands separator\n */\n private _thousandsSeparator: string = ','\n\n /**\n * Data source\n */\n private _dataList: KLineData[] = []\n\n /**\n * Time scale store\n */\n private readonly _timeScaleStore = new TimeScaleStore(this)\n\n /**\n * Indicator store\n */\n private readonly _indicatorStore = new IndicatorStore(this)\n\n /**\n * Overlay store\n */\n private readonly _overlayStore = new OverlayStore(this)\n\n /**\n * Crosshair store\n */\n private readonly _crosshairStore = new CrosshairStore(this)\n\n /**\n * Tooltip store\n */\n private readonly _tooltipStore = new TooltipStore()\n\n /**\n * Chart action store\n */\n private readonly _actionStore = new ActionStore()\n\n /**\n * Visible data array\n */\n private _visibleDataList: VisibleData[] = []\n\n constructor (chart: Chart, options?: Options) {\n this._chart = chart\n this.setOptions(options)\n }\n\n /**\n * @description Adjust visible data\n * @return {*}\n */\n adjustVisibleDataList (): void {\n this._visibleDataList = []\n const { from, to } = this._timeScaleStore.getVisibleRange()\n for (let i = from; i < to; i++) {\n const kLineData = this._dataList[i]\n const x = this._timeScaleStore.dataIndexToCoordinate(i)\n this._visibleDataList.push({\n dataIndex: i,\n x,\n data: kLineData\n })\n }\n }\n\n setOptions (options?: Options): ChartStore {\n if (options !== undefined) {\n const { locale, timezone, styles, customApi } = options\n if (locale !== undefined) {\n this._locale = locale\n }\n if (timezone !== undefined) {\n this._timeScaleStore.setTimezone(timezone)\n }\n if (styles !== undefined) {\n if (isString(styles)) {\n merge(this._styles, getStyles(styles))\n } else {\n merge(this._styles, styles)\n }\n }\n if (customApi !== undefined) {\n merge(this._customApi, customApi)\n }\n if (options.thousandsSeparator !== undefined) {\n this._thousandsSeparator = options.thousandsSeparator\n }\n }\n return this\n }\n\n getStyles (): Styles {\n return this._styles\n }\n\n getLocale (): string {\n return this._locale\n }\n\n getCustomApi (): CustomApi {\n return this._customApi\n }\n\n getThousandsSeparator (): string {\n return this._thousandsSeparator\n }\n\n getPrecision (): Precision {\n return this._precision\n }\n\n setPrecision (precision: Precision): ChartStore {\n this._precision = precision\n this._indicatorStore.setSeriesPrecision(precision)\n return this\n }\n\n getDataList (): KLineData[] {\n return this._dataList\n }\n\n getVisibleDataList (): VisibleData[] {\n return this._visibleDataList\n }\n\n addData (data: KLineData | KLineData[], pos: number, more?: boolean): void {\n if (isArray(data)) {\n this._timeScaleStore.setLoading(false)\n this._timeScaleStore.setMore(more ?? true)\n const isFirstAdd = this._dataList.length === 0\n this._dataList = data.concat(this._dataList)\n if (isFirstAdd) {\n this._timeScaleStore.resetOffsetRightDistance()\n }\n this._timeScaleStore.adjustVisibleRange()\n } else {\n const dataSize = this._dataList.length\n if (pos >= dataSize) {\n this._dataList.push(data)\n let offsetRightBarCount = this._timeScaleStore.getOffsetRightBarCount()\n if (offsetRightBarCount < 0) {\n this._timeScaleStore.setOffsetRightBarCount(--offsetRightBarCount)\n }\n this._timeScaleStore.adjustVisibleRange()\n } else {\n this._dataList[pos] = data\n this.adjustVisibleDataList()\n }\n }\n this._crosshairStore.recalculate(true)\n }\n\n clearDataList (): void {\n this._dataList = []\n this._visibleDataList = []\n this._timeScaleStore.clear()\n }\n\n getTimeScaleStore (): TimeScaleStore {\n return this._timeScaleStore\n }\n\n getIndicatorStore (): IndicatorStore {\n return this._indicatorStore\n }\n\n getOverlayStore (): OverlayStore {\n return this._overlayStore\n }\n\n getCrosshairStore (): CrosshairStore {\n return this._crosshairStore\n }\n\n getTooltipStore (): TooltipStore {\n return this._tooltipStore\n }\n\n getActionStore (): ActionStore {\n return this._actionStore\n }\n\n getChart (): Chart {\n return this._chart\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function requestAnimationFrame (fn: (params: any) => any): number {\n if (window.requestAnimationFrame == null) {\n return window.setTimeout(fn, 20)\n }\n return window.requestAnimationFrame(fn)\n}\n\nexport function cancelAnimationFrame (id: number): void {\n if (window.cancelAnimationFrame == null) {\n window.clearTimeout(id)\n }\n window.cancelAnimationFrame(id)\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Bounding from '../common/Bounding'\nimport { UpdateLevel } from '../common/Updater'\n\nimport Axis from '../component/Axis'\n\nimport Widget from './Widget'\n\nimport { createDom } from '../common/utils/dom'\nimport { getPixelRatio } from '../common/utils/canvas'\nimport { requestAnimationFrame, cancelAnimationFrame } from '../common/utils/compatible'\n\nconst DEFAULT_REQUEST_ID = -1\n\nexport default abstract class DrawWidget extends Widget {\n private _mainCanvas: HTMLCanvasElement\n private _mainCtx: CanvasRenderingContext2D\n private _overlayCanvas: HTMLCanvasElement\n private _overlayCtx: CanvasRenderingContext2D\n\n private _mainRequestAnimationId: number = DEFAULT_REQUEST_ID\n private _overlayRequestAnimationId: number = DEFAULT_REQUEST_ID\n\n override getContainerStyle (): Partial {\n return {\n margin: '0',\n padding: '0',\n position: 'absolute',\n top: '0',\n overflow: 'hidden',\n boxSizing: 'border-box'\n }\n }\n\n override initDom (container: HTMLElement): void {\n this._mainCanvas = createDom('canvas', {\n position: 'absolute',\n top: '0',\n left: '0',\n zIndex: '2',\n boxSizing: 'border-box'\n })\n this._mainCtx = this._mainCanvas.getContext('2d') as CanvasRenderingContext2D\n this._overlayCanvas = createDom('canvas', {\n position: 'absolute',\n top: '0',\n left: '0',\n zIndex: '2',\n boxSizing: 'border-box'\n })\n this._overlayCtx = this._overlayCanvas.getContext('2d') as CanvasRenderingContext2D\n container.appendChild(this._mainCanvas)\n container.appendChild(this._overlayCanvas)\n }\n\n private _optimalUpdateMain (width: number, height: number): void {\n if (this._mainRequestAnimationId !== DEFAULT_REQUEST_ID) {\n cancelAnimationFrame(this._mainRequestAnimationId)\n this._mainRequestAnimationId = DEFAULT_REQUEST_ID\n }\n this._mainRequestAnimationId = requestAnimationFrame(() => {\n if (width !== this._mainCanvas.offsetWidth || height !== this._mainCanvas.offsetHeight) {\n this._mainCtx.clearRect(0, 0, this._mainCanvas.offsetWidth, this._mainCanvas.offsetHeight)\n\n const pixelRatio = getPixelRatio(this._mainCanvas)\n const scaleWidth = Math.floor(width * pixelRatio)\n const scaleHeight = Math.floor(height * pixelRatio)\n\n this._mainCanvas.style.width = `${width}px`\n this._mainCanvas.style.height = `${height}px`\n this._mainCanvas.width = scaleWidth\n this._mainCanvas.height = scaleHeight\n this._mainCtx.scale(pixelRatio, pixelRatio)\n } else {\n this._mainCtx.clearRect(0, 0, this._mainCanvas.offsetWidth, this._mainCanvas.offsetHeight)\n }\n this.updateMain(this._mainCtx)\n })\n }\n\n private _optimalUpdateOverlay (width: number, height: number): void {\n if (this._overlayRequestAnimationId !== DEFAULT_REQUEST_ID) {\n cancelAnimationFrame(this._overlayRequestAnimationId)\n this._overlayRequestAnimationId = DEFAULT_REQUEST_ID\n }\n this._overlayRequestAnimationId = requestAnimationFrame(() => {\n if (width !== this._overlayCanvas.offsetWidth || height !== this._overlayCanvas.offsetHeight) {\n this._overlayCtx.clearRect(0, 0, this._overlayCanvas.offsetWidth, this._overlayCanvas.offsetHeight)\n\n const pixelRatio = getPixelRatio(this._overlayCanvas)\n const scaleWidth = Math.floor(width * pixelRatio)\n const scaleHeight = Math.floor(height * pixelRatio)\n\n this._overlayCanvas.style.width = `${width}px`\n this._overlayCanvas.style.height = `${height}px`\n this._overlayCanvas.width = scaleWidth\n this._overlayCanvas.height = scaleHeight\n this._overlayCtx.scale(pixelRatio, pixelRatio)\n } else {\n this._overlayCtx.clearRect(0, 0, this._overlayCanvas.offsetWidth, this._overlayCanvas.offsetHeight)\n }\n this.updateOverlay(this._overlayCtx)\n })\n }\n\n override updateImp (level: UpdateLevel, container: HTMLElement, bounding: Bounding): void {\n const { width, height, left } = bounding\n container.style.left = `${left}px`\n\n let l = level\n if (width !== container.offsetWidth || height !== container.offsetHeight) {\n container.style.width = `${width}px`\n container.style.height = `${height}px`\n l = UpdateLevel.Drawer\n }\n switch (l) {\n case UpdateLevel.Main: {\n this._optimalUpdateMain(width, height)\n break\n }\n case UpdateLevel.Overlay: {\n this._optimalUpdateOverlay(width, height)\n break\n }\n case UpdateLevel.Drawer:\n case UpdateLevel.All: {\n this._optimalUpdateMain(width, height)\n this._optimalUpdateOverlay(width, height)\n break\n }\n }\n }\n\n getImage (includeOverlay: boolean): HTMLCanvasElement {\n const { width, height } = this.getBounding()\n const canvas = createDom('canvas', {\n width: `${width}px`,\n height: `${height}px`,\n boxSizing: 'border-box'\n })\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D\n const pixelRatio = getPixelRatio(canvas)\n canvas.width = width * pixelRatio\n canvas.height = height * pixelRatio\n ctx.scale(pixelRatio, pixelRatio)\n\n ctx.drawImage(this._mainCanvas, 0, 0, width, height)\n\n if (includeOverlay) {\n ctx.drawImage(this._overlayCanvas, 0, 0, width, height)\n }\n return canvas\n }\n\n protected abstract updateMain (ctx: CanvasRenderingContext2D): void\n protected abstract updateOverlay (ctx: CanvasRenderingContext2D): void\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate from '../../common/Coordinate'\nimport { PolygonStyle, PolygonType, LineType } from '../../common/Options'\n\nimport { FigureTemplate } from '../../component/Figure'\n\nexport function checkCoordinateOnCircle (coordinate: Coordinate, circle: CircleAttrs): boolean {\n const difX = coordinate.x - circle.x\n const difY = coordinate.y - circle.y\n const r = circle.r\n return !(difX * difX + difY * difY > r * r)\n}\n\nexport function drawCircle (ctx: CanvasRenderingContext2D, attrs: CircleAttrs, styles: Partial): void {\n const { x, y, r } = attrs\n const {\n style = PolygonType.Fill,\n color = 'currentColor',\n borderSize = 1,\n borderColor = 'currentColor',\n borderStyle = LineType.Solid,\n borderDashedValue = [2, 2]\n } = styles\n if (style === PolygonType.Fill || styles.style === PolygonType.StrokeFill) {\n ctx.fillStyle = color\n ctx.beginPath()\n ctx.arc(x, y, r, 0, Math.PI * 2)\n ctx.closePath()\n ctx.fill()\n }\n if (style === PolygonType.Stroke || styles.style === PolygonType.StrokeFill) {\n ctx.strokeStyle = borderColor\n ctx.lineWidth = borderSize\n if (borderStyle === LineType.Dashed) {\n ctx.setLineDash(borderDashedValue)\n } else {\n ctx.setLineDash([])\n }\n ctx.beginPath()\n ctx.arc(x, y, r, 0, Math.PI * 2)\n ctx.closePath()\n ctx.stroke()\n }\n}\n\nexport interface CircleAttrs {\n x: number\n y: number\n r: number\n}\n\nconst circle: FigureTemplate> = {\n name: 'circle',\n checkEventOn: checkCoordinateOnCircle,\n draw: (ctx: CanvasRenderingContext2D, attrs: CircleAttrs, styles: Partial) => {\n drawCircle(ctx, attrs, styles)\n }\n}\n\nexport default circle\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate from '../../common/Coordinate'\nimport { PolygonStyle, PolygonType, LineType } from '../../common/Options'\n\nimport { FigureTemplate } from '../../component/Figure'\n\nexport function checkCoordinateOnPolygon (coordinate: Coordinate, polygon: PolygonAttrs): boolean {\n let on = false\n const coordinates = polygon.coordinates\n for (let i = 0, j = coordinates.length - 1; i < coordinates.length; j = i++) {\n if (\n (coordinates[i].y > coordinate.y) !== (coordinates[j].y > coordinate.y) &&\n (coordinate.x < (coordinates[j].x - coordinates[i].x) * (coordinate.y - coordinates[i].y) / (coordinates[j].y - coordinates[i].y) + coordinates[i].x)\n ) {\n on = !on\n }\n }\n return on\n}\n\nexport function drawPolygon (ctx: CanvasRenderingContext2D, attrs: PolygonAttrs, styles: Partial): void {\n const { coordinates } = attrs\n const {\n style = PolygonType.Fill,\n color = 'currentColor',\n borderSize = 1,\n borderColor = 'currentColor',\n borderStyle = LineType.Solid,\n borderDashedValue = [2, 2]\n } = styles\n if (style === PolygonType.Fill || styles.style === PolygonType.StrokeFill) {\n ctx.fillStyle = color\n ctx.beginPath()\n ctx.moveTo(coordinates[0].x, coordinates[0].y)\n for (let i = 1; i < coordinates.length; i++) {\n ctx.lineTo(coordinates[i].x, coordinates[i].y)\n }\n ctx.closePath()\n ctx.fill()\n }\n if (style === PolygonType.Stroke || styles.style === PolygonType.StrokeFill) {\n ctx.strokeStyle = borderColor\n ctx.lineWidth = borderSize\n if (borderStyle === LineType.Dashed) {\n ctx.setLineDash(borderDashedValue)\n } else {\n ctx.setLineDash([])\n }\n ctx.beginPath()\n ctx.moveTo(coordinates[0].x, coordinates[0].y)\n for (let i = 1; i < coordinates.length; i++) {\n ctx.lineTo(coordinates[i].x, coordinates[i].y)\n }\n ctx.closePath()\n ctx.stroke()\n }\n}\n\nexport interface PolygonAttrs {\n coordinates: Coordinate[]\n}\n\nconst polygon: FigureTemplate> = {\n name: 'polygon',\n checkEventOn: checkCoordinateOnPolygon,\n draw: (ctx: CanvasRenderingContext2D, attrs: PolygonAttrs, styles: Partial) => {\n drawPolygon(ctx, attrs, styles)\n }\n}\n\nexport default polygon\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate from '../../common/Coordinate'\nimport { RectStyle, PolygonType, LineType } from '../../common/Options'\n\nimport { FigureTemplate } from '../../component/Figure'\n\nexport function checkCoordinateOnRect (coordinate: Coordinate, rect: RectAttrs): boolean {\n return (\n coordinate.x >= rect.x &&\n coordinate.x <= rect.x + rect.width &&\n coordinate.y >= rect.y &&\n coordinate.y <= rect.y + rect.height\n )\n}\n\nexport function drawRect (ctx: CanvasRenderingContext2D, attrs: RectAttrs, styles: Partial): void {\n const { x, y, width: w, height: h } = attrs\n const {\n style = PolygonType.Fill,\n color = 'currentColor',\n borderSize = 1,\n borderColor = 'currentColor',\n borderStyle = LineType.Solid,\n borderRadius: r = 0,\n borderDashedValue = [2, 2]\n } = styles\n if (style === PolygonType.Fill || styles.style === PolygonType.StrokeFill) {\n ctx.fillStyle = color\n ctx.beginPath()\n ctx.moveTo(x + r, y)\n ctx.arcTo(x + w, y, x + w, y + h, r)\n ctx.arcTo(x + w, y + h, x, y + h, r)\n ctx.arcTo(x, y + h, x, y, r)\n ctx.arcTo(x, y, x + w, y, r)\n ctx.closePath()\n ctx.fill()\n }\n if (style === PolygonType.Stroke || styles.style === PolygonType.StrokeFill) {\n ctx.strokeStyle = borderColor\n ctx.lineWidth = borderSize\n if (borderStyle === LineType.Dashed) {\n ctx.setLineDash(borderDashedValue)\n } else {\n ctx.setLineDash([])\n }\n ctx.beginPath()\n ctx.moveTo(x + r, y)\n ctx.arcTo(x + w, y, x + w, y + h, r)\n ctx.arcTo(x + w, y + h, x, y + h, r)\n ctx.arcTo(x, y + h, x, y, r)\n ctx.arcTo(x, y, x + w, y, r)\n ctx.closePath()\n ctx.stroke()\n }\n}\n\nexport interface RectAttrs {\n x: number\n y: number\n width: number\n height: number\n}\n\nconst rect: FigureTemplate> = {\n name: 'rect',\n checkEventOn: checkCoordinateOnRect,\n draw: (ctx: CanvasRenderingContext2D, attrs: RectAttrs, styles: Partial) => {\n drawRect(ctx, attrs, styles)\n }\n}\n\nexport default rect\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate from '../../common/Coordinate'\nimport { TextStyle, RectTextStyle } from '../../common/Options'\n\nimport { createFont } from '../../common/utils/canvas'\n\nimport { FigureTemplate } from '../../component/Figure'\n\nimport { RectAttrs } from './rect'\n\nexport function getTextRect (attrs: TextAttrs, styles: Partial, textWidth?: number): RectAttrs {\n const { size = 12, paddingLeft = 0, paddingTop = 0, paddingRight = 0, paddingBottom = 0 } = styles\n const { x, y, text, align = 'left', baseline = 'top' } = attrs\n const length = text.length\n textWidth = textWidth ?? size * length\n const textHeight = size\n let startX: number\n switch (align) {\n case 'left':\n case 'start': {\n startX = x\n break\n }\n case 'right':\n case 'end': {\n startX = x - paddingRight - textWidth - paddingLeft\n break\n }\n default: {\n startX = x - textWidth / 2 - paddingLeft\n break\n }\n }\n let startY: number\n switch (baseline) {\n case 'top':\n case 'hanging': {\n startY = y\n break\n }\n case 'bottom':\n case 'ideographic':\n case 'alphabetic': {\n startY = y - textHeight - paddingTop - paddingBottom\n break\n }\n default: {\n startY = y - textHeight / 2 - paddingTop\n break\n }\n }\n return { x: startX, y: startY, width: paddingLeft + textWidth + paddingRight, height: paddingTop + textHeight + paddingBottom }\n}\n\nexport function checkCoordinateOnText (coordinate: Coordinate, attrs: TextAttrs, styles: Partial): boolean {\n const { x, y, width, height } = getTextRect(attrs, styles)\n return (\n coordinate.x >= x &&\n coordinate.x <= x + width &&\n coordinate.y >= y &&\n coordinate.y <= y + height\n )\n}\n\nexport function drawText (ctx: CanvasRenderingContext2D, attrs: TextAttrs, styles: Partial): void {\n const { x, y, text, align = 'left', baseline = 'top' } = attrs\n const {\n color = 'currentColor',\n size = 12,\n family, weight\n } = styles\n ctx.textAlign = align\n ctx.textBaseline = baseline\n ctx.font = createFont(size, weight, family)\n\n ctx.fillStyle = color\n ctx.fillText(text, x, y)\n}\n\nexport interface TextAttrs {\n x: number\n y: number\n text: string\n align?: CanvasTextAlign\n baseline?: CanvasTextBaseline\n}\n\nconst text: FigureTemplate> = {\n name: 'text',\n checkEventOn: (coordinate: Coordinate, attrs: TextAttrs, styles: Partial) => {\n return checkCoordinateOnText(coordinate, attrs, styles)\n },\n draw: (ctx: CanvasRenderingContext2D, attrs: TextAttrs, styles: Partial) => {\n drawText(ctx, attrs, styles)\n }\n}\n\nexport default text\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate from '../../common/Coordinate'\nimport { RectTextStyle } from '../../common/Options'\n\nimport { createFont } from '../../common/utils/canvas'\n\nimport { FigureTemplate } from '../../component/Figure'\n\nimport { TextAttrs, getTextRect, drawText, checkCoordinateOnText } from './text'\nimport { drawRect } from './rect'\n\nexport function drawRectText (ctx: CanvasRenderingContext2D, attrs: TextAttrs, styles: Partial): void {\n const { text } = attrs\n const {\n size = 12,\n family,\n weight,\n paddingLeft = 0,\n paddingTop = 0\n } = styles\n ctx.font = createFont(size, weight, family)\n const textWidth = ctx.measureText(text).width\n const rect = getTextRect(attrs, styles, textWidth)\n drawRect(ctx, rect, { ...styles, color: styles.backgroundColor })\n drawText(ctx, { x: rect.x + paddingLeft, y: rect.y + paddingTop, text, align: 'left', baseline: 'top' }, styles)\n}\n\nconst rectText: FigureTemplate> = {\n name: 'rectText',\n checkEventOn: (coordinate: Coordinate, attrs: TextAttrs, styles: Partial) => {\n return checkCoordinateOnText(coordinate, attrs, styles)\n },\n draw: (ctx: CanvasRenderingContext2D, attrs: TextAttrs, styles: Partial) => {\n drawRectText(ctx, attrs, styles)\n }\n}\n\nexport default rectText\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport default interface Coordinate {\n x: number\n y: number\n}\n\nexport function getDistance (coordinate1: Coordinate, coordinate2: Coordinate): number {\n const xDif = coordinate1.x - coordinate2.x\n const yDif = coordinate1.y - coordinate2.y\n return Math.sqrt(xDif * xDif + yDif * yDif)\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate, { getDistance } from '../../common/Coordinate'\nimport { LineStyle, LineType } from '../../common/Options'\n\nimport { FigureTemplate, DEVIATION } from '../../component/Figure'\n\nimport { CircleAttrs } from './circle'\n\nexport function checkCoordinateOnArc (coordinate: Coordinate, arc: ArcAttrs): boolean {\n if (Math.abs(getDistance(coordinate, arc) - arc.r) < DEVIATION) {\n const { r, startAngle, endAngle } = arc\n const startCoordinateX = r * Math.cos(startAngle) + arc.x\n const startCoordinateY = r * Math.sin(startAngle) + arc.y\n const endCoordinateX = r * Math.cos(endAngle) + arc.x\n const endCoordinateY = r * Math.sin(endAngle) + arc.y\n return (\n coordinate.x <= Math.max(startCoordinateX, endCoordinateX) + DEVIATION &&\n coordinate.x >= Math.min(startCoordinateX, endCoordinateX) - DEVIATION &&\n coordinate.y <= Math.max(startCoordinateY, endCoordinateY) + DEVIATION &&\n coordinate.y >= Math.min(startCoordinateY, endCoordinateY) - DEVIATION\n )\n }\n return false\n}\n\nexport function drawArc (ctx: CanvasRenderingContext2D, attrs: ArcAttrs, styles: Partial): void {\n const { x, y, r, startAngle, endAngle } = attrs\n const { style = LineType.Solid, size = 1, color = 'currentColor', dashedValue = [2, 2] } = styles\n ctx.lineWidth = size\n ctx.strokeStyle = color\n if (style === LineType.Dashed) {\n ctx.setLineDash(dashedValue)\n } else {\n ctx.setLineDash([])\n }\n ctx.beginPath()\n ctx.arc(x, y, r, startAngle, endAngle)\n ctx.stroke()\n ctx.closePath()\n}\n\nexport interface ArcAttrs extends CircleAttrs {\n startAngle: number\n endAngle: number\n}\n\nconst arc: FigureTemplate> = {\n name: 'arc',\n checkEventOn: checkCoordinateOnArc,\n draw: (ctx: CanvasRenderingContext2D, attrs: ArcAttrs, styles: Partial) => {\n drawArc(ctx, attrs, styles)\n }\n}\n\nexport default arc\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../../common/Nullable'\n\nimport FigureImp, { FigureTemplate, FigureConstructor, FigureInnerConstructor } from '../../component/Figure'\n\nimport circle from './circle'\nimport line from './line'\nimport polygon from './polygon'\nimport rect from './rect'\nimport text from './text'\nimport rectText from './rectText'\nimport arc from './arc'\n\nconst figures: Record = {}\n\nconst extensions = [circle, line, polygon, rect, text, rectText, arc]\nextensions.forEach((figure: FigureTemplate) => {\n figures[figure.name] = FigureImp.extend(figure)\n})\n\nfunction getSupportedFigures (): string[] {\n return Object.keys(figures)\n}\n\nfunction registerFigure (figure: FigureTemplate): void {\n figures[figure.name] = FigureImp.extend(figure)\n}\n\nfunction getInnerFigureClass (name: string): Nullable> {\n return figures[name] ?? null\n}\n\nfunction getFigureClass (name: string): Nullable> {\n return figures[name] ?? null\n}\n\nexport { getSupportedFigures, getFigureClass, getInnerFigureClass, registerFigure }\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport { EventHandler, EventName } from '../common/SyntheticEvent'\nimport Eventful from '../common/Eventful'\n\nimport Figure from '../component/Figure'\nimport { getInnerFigureClass } from '../extension/figure/index'\n\nimport Axis from '../component/Axis'\n\nimport Widget from '../widget/Widget'\n\nexport default abstract class View extends Eventful {\n /**\n * Parent widget\n */\n private readonly _widget: Widget\n\n constructor (widget: Widget) {\n super()\n this._widget = widget\n }\n\n getWidget (): Widget { return this._widget }\n\n protected createFigure (name: string, attrs: any, styles: any, eventHandler?: EventHandler): Nullable
{\n const FigureClazz = getInnerFigureClass(name)\n if (FigureClazz !== null) {\n const figure = new FigureClazz({ name, attrs, styles })\n if (eventHandler !== undefined) {\n for (const key in eventHandler) {\n // eslint-disable-next-line no-prototype-builtins\n if (eventHandler.hasOwnProperty(key)) {\n figure.registerEvent(key as EventName, eventHandler[key])\n }\n }\n this.addChild(figure)\n }\n return figure\n }\n return null\n }\n\n draw (ctx: CanvasRenderingContext2D): void {\n this.clear()\n this.drawImp(ctx)\n }\n\n protected abstract drawImp (ctx: CanvasRenderingContext2D): void\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport XAxis from '../component/XAxis'\nimport YAxis from '../component/YAxis'\n\nimport { PaneIdConstants } from '../pane/Pane'\n\nimport View from './View'\n\nexport default class GridView extends View {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = this.getWidget().getPane()\n const chart = pane.getChart()\n const bounding = widget.getBounding()\n\n const gridStyles = chart.getStyles().grid\n const show = gridStyles.show\n\n if (show) {\n ctx.save()\n ctx.globalCompositeOperation = 'destination-over'\n const horizontalStyles = gridStyles.horizontal\n const horizontalShow = horizontalStyles.show\n if (horizontalShow) {\n const yAxis = pane.getAxisComponent()\n yAxis.getTicks().forEach(tick => {\n this.createFigure(\n 'line',\n {\n coordinates: [\n { x: 0, y: tick.coord },\n { x: bounding.width, y: tick.coord }\n ]\n },\n horizontalStyles\n )?.draw(ctx)\n })\n }\n const verticalStyles = gridStyles.vertical\n const verticalShow = verticalStyles.show\n if (verticalShow) {\n const xAxis = chart.getPaneById(PaneIdConstants.XAXIS)?.getAxisComponent() as XAxis\n xAxis.getTicks().forEach(tick => {\n this.createFigure(\n 'line',\n {\n coordinates: [\n { x: tick.coord, y: 0 },\n { x: tick.coord, y: bounding.height }\n ]\n },\n verticalStyles\n )?.draw(ctx)\n })\n }\n ctx.restore()\n }\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport View from './View'\nimport VisibleData from '../common/VisibleData'\nimport BarSpace from '../common/BarSpace'\nimport YAxis from '../component/YAxis'\n\nexport type EachChildCallback = (\n data: VisibleData,\n barSpace: BarSpace,\n index: number\n) => void\n\nexport default abstract class ChildrenView extends View {\n protected eachChildren (childCallback: EachChildCallback): void {\n const pane = this.getWidget().getPane()\n const chartStore = pane.getChart().getChartStore()\n const visibleDataList = chartStore.getVisibleDataList()\n const barSpace = chartStore.getTimeScaleStore().getBarSpace()\n visibleDataList.forEach((data: VisibleData, index: number) => {\n childCallback(data, barSpace, index)\n })\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport VisibleData from '../common/VisibleData'\nimport BarSpace from '../common/BarSpace'\nimport { EventHandler } from '../common/SyntheticEvent'\nimport { ActionType } from '../common/Action'\nimport { CandleType, CandleBarColor, RectStyle, PolygonType } from '../common/Options'\n\nimport ChartStore from '../store/ChartStore'\n\nimport Axis from '../component/Axis'\n\nimport { FigureCreate } from '../component/Figure'\nimport { RectAttrs } from '../extension/figure/rect'\n\nimport ChildrenView from './ChildrenView'\n\nimport { PaneIdConstants } from '../pane/Pane'\n\nexport interface CandleBarOptions {\n type: Exclude\n styles: CandleBarColor\n}\n\nexport default class CandleBarView extends ChildrenView {\n private readonly _boundCandleBarClickEvent = (data: VisibleData) => () => {\n this.getWidget().getPane().getChart().getChartStore().getActionStore().execute(ActionType.OnCandleBarClick, data)\n return false\n }\n\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const pane = this.getWidget().getPane()\n const isMain = pane.getId() === PaneIdConstants.CANDLE\n const chartStore = pane.getChart().getChartStore()\n const candleBarOptions = this.getCandleBarOptions(chartStore)\n if (candleBarOptions !== null) {\n const yAxis = pane.getAxisComponent()\n this.eachChildren((data: VisibleData, barSpace: BarSpace) => {\n this._drawCandleBar(ctx, yAxis, data, barSpace, candleBarOptions, isMain)\n })\n }\n }\n\n protected getCandleBarOptions (chartStore: ChartStore): Nullable {\n const candleStyles = chartStore.getStyles().candle\n return {\n type: candleStyles.type as Exclude,\n styles: candleStyles.bar\n }\n }\n\n private _drawCandleBar (\n ctx: CanvasRenderingContext2D,\n axis: Axis,\n data: VisibleData,\n barSpace: BarSpace,\n candleBarOptions: CandleBarOptions,\n isMain: boolean\n ): void {\n const { data: kLineData, x } = data\n const { open, high, low, close } = kLineData\n const { halfGapBar, gapBar } = barSpace\n const { type, styles } = candleBarOptions\n let color: string\n let borderColor: string\n let wickColor: string\n if (close > open) {\n color = styles.upColor\n borderColor = styles.upBorderColor\n wickColor = styles.upWickColor\n } else if (close < open) {\n color = styles.downColor\n borderColor = styles.downBorderColor\n wickColor = styles.downWickColor\n } else {\n color = styles.noChangeColor\n borderColor = styles.noChangeBorderColor\n wickColor = styles.noChangeWickColor\n }\n const openY = axis.convertToPixel(open)\n const closeY = axis.convertToPixel(close)\n const priceY = [\n openY, closeY,\n axis.convertToPixel(high),\n axis.convertToPixel(low)\n ]\n priceY.sort((a, b) => a - b)\n\n const barHeight = Math.max(1, priceY[2] - priceY[1])\n\n let rects: Array>> = []\n if (type !== CandleType.Ohlc) {\n rects.push({\n name: 'rect',\n attrs: {\n x: x - 0.5,\n y: priceY[0],\n width: 1,\n height: priceY[1] - priceY[0]\n },\n styles: { color: wickColor }\n })\n if (\n type === CandleType.CandleStroke ||\n (type === CandleType.CandleUpStroke && open < close) ||\n (type === CandleType.CandleDownStroke && open > close)\n ) {\n rects.push({\n name: 'rect',\n attrs: {\n x: x - halfGapBar + 0.5,\n y: priceY[1],\n width: gapBar - 1,\n height: barHeight\n },\n styles: {\n style: PolygonType.Stroke,\n borderColor\n }\n })\n } else {\n rects.push({\n name: 'rect',\n attrs: {\n x: x - halfGapBar + 0.5,\n y: priceY[1],\n width: gapBar - 1,\n height: barHeight\n },\n styles: {\n style: PolygonType.StrokeFill,\n color,\n borderColor\n }\n })\n }\n rects.push({\n name: 'rect',\n attrs: {\n x: x - 0.5,\n y: priceY[2],\n width: 1,\n height: priceY[3] - priceY[2]\n },\n styles: { color: wickColor }\n })\n } else {\n rects = [\n {\n name: 'rect',\n attrs: {\n x: x - 0.5,\n y: priceY[0],\n width: 1,\n height: priceY[3] - priceY[0]\n },\n styles: { color }\n }, {\n name: 'rect',\n attrs: {\n x: x - halfGapBar,\n y: openY,\n width: halfGapBar,\n height: 1\n },\n styles: { color }\n }, {\n name: 'rect',\n attrs: {\n x,\n y: closeY,\n width: halfGapBar,\n height: 1\n },\n styles: { color }\n }\n ]\n }\n rects.forEach(({ attrs, styles }) => {\n let handler: EventHandler | undefined\n if (isMain) {\n handler = {\n mouseClickEvent: this._boundCandleBarClickEvent(data)\n }\n }\n this.createFigure('rect', attrs, styles, handler)?.draw(ctx)\n })\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport VisibleData from '../common/VisibleData'\nimport BarSpace from '../common/BarSpace'\nimport { CandleType } from '../common/Options'\n\nimport { PaneIdConstants } from '../pane/Pane'\n\nimport ChartStore from '../store/ChartStore'\n\nimport Axis from '../component/Axis'\n\nimport { eachFigures, IndicatorFigure, IndicatorFigureAttrs, IndicatorFigureStyle } from '../component/Indicator'\n\nimport CandleBarView, { CandleBarOptions } from './CandleBarView'\n\nimport { formatValue } from '../common/utils/format'\nimport { isNumber, isValid } from '../common/utils/typeChecks'\n\nexport default class IndicatorView extends CandleBarView {\n override getCandleBarOptions (chartStore: ChartStore): Nullable {\n const pane = this.getWidget().getPane()\n const yAxis = pane.getAxisComponent()\n if (!yAxis.isInCandle()) {\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n for (const entries of indicators) {\n const indicator = entries[1]\n if (indicator.shouldOhlc && indicator.visible) {\n const indicatorStyles = indicator.styles\n const defaultStyles = chartStore.getStyles().indicator\n const upColor = formatValue(indicatorStyles, 'ohlc.upColor', defaultStyles.ohlc.upColor) as string\n const downColor = formatValue(indicatorStyles, 'ohlc.downColor', defaultStyles.ohlc.downColor) as string\n const noChangeColor = formatValue(indicatorStyles, 'ohlc.noChangeColor', defaultStyles.ohlc.noChangeColor) as string\n return {\n type: CandleType.Ohlc,\n styles: {\n upColor,\n downColor,\n noChangeColor,\n upBorderColor: upColor,\n downBorderColor: downColor,\n noChangeBorderColor: noChangeColor,\n upWickColor: upColor,\n downWickColor: downColor,\n noChangeWickColor: noChangeColor\n }\n }\n }\n }\n }\n return null\n }\n\n override drawImp (ctx: CanvasRenderingContext2D): void {\n super.drawImp(ctx)\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chart = pane.getChart()\n const bounding = widget.getBounding()\n const xAxis = chart.getPaneById(PaneIdConstants.XAXIS)?.getAxisComponent() as Axis\n const yAxis = pane.getAxisComponent()\n const chartStore = chart.getChartStore()\n const dataList = chartStore.getDataList()\n const timeScaleStore = chartStore.getTimeScaleStore()\n const visibleRange = timeScaleStore.getVisibleRange()\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n const defaultStyles = chartStore.getStyles().indicator\n indicators.forEach(indicator => {\n if (indicator.visible) {\n let isCover = false\n if (indicator.draw !== null) {\n ctx.save()\n isCover = indicator.draw({\n ctx,\n kLineDataList: dataList,\n indicator,\n visibleRange,\n bounding,\n barSpace: timeScaleStore.getBarSpace(),\n defaultStyles,\n xAxis,\n yAxis\n }) ?? false\n ctx.restore()\n }\n if (!isCover) {\n const result = indicator.result\n\n this.eachChildren((data: VisibleData, barSpace: BarSpace) => {\n const { halfGapBar, gapBar } = barSpace\n const { dataIndex, x } = data\n const prevX = xAxis.convertToPixel(dataIndex - 1)\n const nextX = xAxis.convertToPixel(dataIndex + 1)\n const prevIndicatorData = result[dataIndex - 1] ?? {}\n const currentIndicatorData = result[dataIndex] ?? {}\n const nextIndicatorData = result[dataIndex + 1] ?? {}\n const prevCoordinate = { x: prevX }\n const currentCoordinate = { x }\n const nextCoordinate = { x: nextX }\n indicator.figures.forEach(({ key }) => {\n prevCoordinate[key] = yAxis.convertToPixel(prevIndicatorData[key])\n currentCoordinate[key] = yAxis.convertToPixel(currentIndicatorData[key])\n nextCoordinate[key] = yAxis.convertToPixel(nextIndicatorData[key])\n })\n eachFigures(dataList, indicator, dataIndex, defaultStyles, (figure: IndicatorFigure, figureStyles: IndicatorFigureStyle) => {\n if (isValid(currentIndicatorData[figure.key])) {\n const valueY = currentCoordinate[figure.key]\n let attrs = figure.attrs?.({\n coordinate: { prev: prevCoordinate, current: currentCoordinate, next: nextCoordinate },\n bounding,\n barSpace,\n xAxis,\n yAxis\n })\n if (!isValid(attrs)) {\n switch (figure.type) {\n case 'circle': {\n attrs = { x, y: valueY, r: halfGapBar }\n break\n }\n case 'rect':\n case 'bar': {\n const baseValue = figure.baseValue ?? yAxis.getExtremum().min\n const baseValueY = yAxis.convertToPixel(baseValue)\n let height = Math.abs(baseValueY - (valueY as number))\n if (baseValue !== currentIndicatorData[figure.key]) {\n height = Math.max(1, height)\n }\n let y: number\n if (valueY > baseValueY) {\n y = baseValueY\n } else {\n y = valueY\n }\n attrs = {\n x: x - halfGapBar,\n y,\n width: gapBar,\n height\n }\n break\n }\n case 'line': {\n if (isNumber(currentCoordinate[figure.key]) && isNumber(nextCoordinate[figure.key])) {\n attrs = {\n coordinates: [\n { x: currentCoordinate.x, y: currentCoordinate[figure.key] },\n { x: nextCoordinate.x, y: nextCoordinate[figure.key] }\n ]\n }\n }\n break\n }\n default: { break }\n }\n }\n if (isValid(attrs)) {\n const name = figure.type as string\n this.createFigure(name === 'bar' ? 'rect' : name, attrs, figureStyles)?.draw(ctx)\n }\n }\n })\n })\n }\n }\n })\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate from '../common/Coordinate'\nimport { CrosshairDirectionStyle } from '../common/Options'\n\nimport View from './View'\n\nexport default class CrosshairLineView extends View {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const bounding = widget.getBounding()\n const chartStore = widget.getPane().getChart().getChartStore()\n const crosshair = chartStore.getCrosshairStore().get()\n const styles = chartStore.getStyles().crosshair\n if (crosshair.paneId !== undefined && styles.show) {\n if (crosshair.paneId === pane.getId()) {\n const y = crosshair.y as number\n this._drawLine(\n ctx,\n [\n { x: 0, y },\n { x: bounding.width, y }\n ],\n styles.horizontal\n )\n }\n const x = crosshair.realX as number\n this._drawLine(\n ctx,\n [\n { x, y: 0 },\n { x, y: bounding.height }\n ],\n styles.vertical\n )\n }\n }\n\n private _drawLine (ctx: CanvasRenderingContext2D, coordinates: Coordinate[], styles: CrosshairDirectionStyle): void {\n if (styles.show) {\n const lineStyles = styles.line\n if (lineStyles.show) {\n this.createFigure('line', { coordinates }, lineStyles)?.draw(ctx)\n }\n }\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport Bounding from '../common/Bounding'\nimport KLineData from '../common/KLineData'\nimport Crosshair from '../common/Crosshair'\nimport { IndicatorStyle, TooltipStyle, TooltipIconStyle, MarginTextStyle, TooltipData, TooltipShowRule, TooltipDataChild, TooltipIconPosition, CustomApi } from '../common/Options'\nimport { ActionType } from '../common/Action'\n\nimport XAxis from '../component/XAxis'\nimport YAxis from '../component/YAxis'\n\nimport IndicatorImp, { eachFigures, Indicator, IndicatorFigure, IndicatorFigureStyle, IndicatorTooltipData } from '../component/Indicator'\n\nimport { PaneIdConstants } from '../pane/Pane'\n\nimport { formatPrecision, formatThousands } from '../common/utils/format'\nimport { isValid, isObject } from '../common/utils/typeChecks'\nimport { createFont } from '../common/utils/canvas'\n\nimport { TooltipIconInfo } from '../store/TooltipStore'\n\nimport View from './View'\n\nexport default class IndicatorTooltipView extends View {\n private readonly _boundIconClickEvent = (currentIconInfo: TooltipIconInfo, iconId: string) => () => {\n const pane = this.getWidget().getPane()\n pane.getChart().getChartStore().getActionStore().execute(ActionType.OnTooltipIconClick, { ...currentIconInfo, iconId })\n return true\n }\n\n private readonly _boundIconMouseMoveEvent = (currentIconInfo: TooltipIconInfo, iconId: string) => () => {\n const pane = this.getWidget().getPane()\n const tooltipStore = pane.getChart().getChartStore().getTooltipStore()\n tooltipStore.setActiveIconInfo({ ...currentIconInfo, iconId })\n return true\n }\n\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chartStore = pane.getChart().getChartStore()\n const crosshair = chartStore.getCrosshairStore().get()\n if (crosshair.kLineData !== undefined) {\n const bounding = widget.getBounding()\n const customApi = chartStore.getCustomApi()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n const activeIconInfo = chartStore.getTooltipStore().getActiveIconInfo()\n const defaultStyles = chartStore.getStyles().indicator\n this.drawIndicatorTooltip(\n ctx, pane.getId(), chartStore.getDataList(), crosshair, activeIconInfo, indicators, customApi, thousandsSeparator, bounding, defaultStyles\n )\n }\n }\n\n protected drawIndicatorTooltip (\n ctx: CanvasRenderingContext2D,\n paneId: string,\n dataList: KLineData[],\n crosshair: Crosshair,\n activeTooltipIconInfo: Nullable,\n indicators: Map,\n customApi: CustomApi,\n formatThousands: string,\n bounding: Bounding,\n styles: IndicatorStyle,\n top?: number\n ): number {\n const tooltipStyles = styles.tooltip\n let height = 0\n if (this.isDrawTooltip(crosshair, tooltipStyles)) {\n const tooltipTextStyles = tooltipStyles.text\n let x = 0\n let y = top ?? 0\n let prevRowHeight = 0\n indicators.forEach(indicator => {\n const { name, calcParamsText, values, icons } = this.getIndicatorTooltipData(dataList, crosshair, indicator, customApi, formatThousands, styles)\n const nameValid = name.length > 0\n const valuesValid = values.length > 0\n if (nameValid || valuesValid) {\n const [leftIcons, middleIcons, rightIcons] = this.classifyTooltipIcons(icons)\n\n // draw left icons\n const [leftIconsNextStartX, leftIconsNextStartY, leftIconsLastRowHeight, leftIconsIncreaseHeight] = this.drawStandardTooltipIcons(\n ctx, bounding, { paneId, indicatorName: indicator.name, iconId: '' },\n activeTooltipIconInfo, leftIcons, x, y, prevRowHeight\n )\n x = leftIconsNextStartX\n y = leftIconsNextStartY\n height += leftIconsIncreaseHeight\n prevRowHeight = leftIconsLastRowHeight\n\n if (nameValid) {\n let text = name\n if (calcParamsText.length > 0) {\n text = `${text}${calcParamsText}`\n }\n const [nameStartX, nameStartY, nameLastRowHeight, nameIncreaseHeight] = this.drawStandardTooltipLabels(\n ctx,\n bounding,\n [{ title: { text: '', color: tooltipTextStyles.color }, value: { text, color: tooltipTextStyles.color } }],\n x,\n y,\n prevRowHeight,\n tooltipTextStyles\n )\n x = nameStartX\n y = nameStartY\n height += nameIncreaseHeight\n prevRowHeight = nameLastRowHeight\n }\n\n // draw middle icons\n const [middleIconsNextStartX, middleIconsNextStartY, middleIconsLastRowHeight, middleIconsIncreaseHeight] = this.drawStandardTooltipIcons(\n ctx, bounding, { paneId, indicatorName: indicator.name, iconId: '' },\n activeTooltipIconInfo, middleIcons, x, y, prevRowHeight\n )\n x = middleIconsNextStartX\n y = middleIconsNextStartY\n height += middleIconsIncreaseHeight\n prevRowHeight = middleIconsLastRowHeight\n\n if (valuesValid) {\n const [valuesStartX, valuestartY, valuesLastRowHeight, valuesIncreaseHeight] = this.drawStandardTooltipLabels(ctx, bounding, values, x, y, prevRowHeight, tooltipTextStyles)\n x = valuesStartX\n y = valuestartY\n height += valuesIncreaseHeight\n prevRowHeight = valuesLastRowHeight\n }\n\n // draw right icons\n const [, rightIconsNextStartY, rightIconsLastRowHeight, rightIconsIncreaseHeight] = this.drawStandardTooltipIcons(\n ctx, bounding, { paneId, indicatorName: indicator.name, iconId: '' },\n activeTooltipIconInfo, rightIcons, x, y, prevRowHeight\n )\n x = 0\n height += rightIconsIncreaseHeight\n y = rightIconsNextStartY + rightIconsLastRowHeight\n prevRowHeight = 0\n }\n })\n }\n return height\n }\n\n protected drawStandardTooltipIcons (\n ctx: CanvasRenderingContext2D,\n bounding: Bounding,\n currentIconInfo: TooltipIconInfo,\n activeIconInfo: Nullable,\n icons: TooltipIconStyle[],\n startX: number,\n startY: number,\n prevRowHeight: number\n ): [number, number, number, number] {\n let x = startX\n let y = startY\n let width = 0\n let rowHeight = 0\n let increaseHeight = 0\n if (icons.length > 0) {\n icons.forEach(icon => {\n const {\n marginLeft, marginTop, marginRight, marginBottom,\n paddingLeft, paddingTop, paddingRight, paddingBottom,\n size, fontFamily, icon: text\n } = icon\n ctx.font = createFont(size, 'normal', fontFamily)\n width += (marginLeft + paddingLeft + ctx.measureText(text).width + paddingRight + marginRight)\n rowHeight = Math.max(rowHeight, marginTop + paddingTop + size + paddingBottom + marginBottom)\n })\n if (x + width > bounding.width) {\n x = icons[0].marginLeft\n y += prevRowHeight\n increaseHeight = rowHeight\n } else {\n increaseHeight = Math.max(0, rowHeight - prevRowHeight)\n }\n icons.forEach(icon => {\n const {\n marginLeft, marginTop, marginRight,\n paddingLeft, paddingTop, paddingRight, paddingBottom,\n color, activeColor, size, fontFamily, icon: text, backgroundColor, activeBackgroundColor\n } = icon\n x += marginLeft\n const active = activeIconInfo?.paneId === currentIconInfo.paneId && activeIconInfo?.indicatorName === currentIconInfo.indicatorName && activeIconInfo?.iconId === icon.id\n this.createFigure(\n 'rectText',\n { text, x, y: y + marginTop },\n {\n paddingLeft,\n paddingTop,\n paddingRight,\n paddingBottom,\n color: active ? activeColor : color,\n size,\n family: fontFamily,\n backgroundColor: active ? activeBackgroundColor : backgroundColor\n },\n {\n mouseClickEvent: this._boundIconClickEvent(currentIconInfo, icon.id),\n mouseMoveEvent: this._boundIconMouseMoveEvent(currentIconInfo, icon.id)\n }\n )?.draw(ctx)\n x += (paddingLeft + ctx.measureText(text).width + paddingRight + marginRight)\n })\n }\n return [x, y, Math.max(prevRowHeight, rowHeight), increaseHeight]\n }\n\n protected drawStandardTooltipLabels (\n ctx: CanvasRenderingContext2D,\n bounding: Bounding,\n labels: TooltipData[],\n startX: number,\n startY: number,\n prevRowHeight: number,\n styles: Omit\n ): [number, number, number, number] {\n let x = startX\n let y = startY\n let rowHeight = 0\n let increaseHeight = 0\n let currentPrevRowHeight = prevRowHeight\n if (labels.length > 0) {\n const { marginLeft, marginTop, marginRight, marginBottom, size, family, weight } = styles\n ctx.font = createFont(size, weight, family)\n labels.forEach(data => {\n const title = data.title as TooltipDataChild\n const value = data.value as TooltipDataChild\n const titleTextWidth = ctx.measureText(title.text).width\n const valueTextWidth = ctx.measureText(value.text).width\n const totalTextWidth = titleTextWidth + valueTextWidth\n const height = size + marginTop + marginBottom\n if (x + marginLeft + totalTextWidth + marginRight > bounding.width) {\n x = marginLeft\n y += height\n increaseHeight += height\n } else {\n x += marginLeft\n increaseHeight += Math.max(0, height - currentPrevRowHeight)\n }\n rowHeight = Math.max(currentPrevRowHeight, height)\n currentPrevRowHeight = rowHeight\n if (title.text.length > 0) {\n this.createFigure(\n 'text',\n { x, y: y + marginTop, text: title.text },\n { color: title.color, size, family, weight }\n )?.draw(ctx)\n x += titleTextWidth\n }\n this.createFigure(\n 'text',\n { x, y: y + marginTop, text: value.text },\n { color: value.color, size, family, weight }\n )?.draw(ctx)\n x += (valueTextWidth + marginRight)\n })\n }\n return [x, y, rowHeight, increaseHeight]\n }\n\n protected isDrawTooltip (crosshair: Crosshair, styles: TooltipStyle): boolean {\n const showRule = styles.showRule\n return showRule === TooltipShowRule.Always ||\n (showRule === TooltipShowRule.FollowCross && (crosshair.paneId !== undefined))\n }\n\n protected getIndicatorTooltipData (\n dataList: KLineData[],\n crosshair: Crosshair,\n indicator: Indicator,\n customApi: CustomApi,\n thousandsSeparator: string,\n styles: IndicatorStyle\n ): IndicatorTooltipData {\n const tooltipStyles = styles.tooltip\n const name = tooltipStyles.showName ? indicator.shortName : ''\n let calcParamsText = ''\n const calcParams = indicator.calcParams\n if (calcParams.length > 0 && tooltipStyles.showParams) {\n calcParamsText = `(${calcParams.join(',')})`\n }\n\n const tooltipData: IndicatorTooltipData = { name, calcParamsText, values: [], icons: tooltipStyles.icons }\n\n const dataIndex = crosshair.dataIndex as number\n const result = indicator.result ?? []\n\n const values: TooltipData[] = []\n if (indicator.visible) {\n const indicatorData = result[dataIndex] ?? {}\n eachFigures(dataList, indicator, dataIndex, styles, (figure: IndicatorFigure, figureStyles: Required) => {\n if (figure.title !== undefined) {\n const color = figureStyles.color\n let value = indicatorData[figure.key]\n if (isValid(value)) {\n value = formatPrecision(value, indicator.precision)\n if (indicator.shouldFormatBigNumber) {\n value = customApi.formatBigNumber(value)\n }\n }\n values.push({ title: { text: figure.title, color }, value: { text: formatThousands(value ?? tooltipStyles.defaultValue, thousandsSeparator), color } })\n }\n })\n tooltipData.values = values\n }\n\n if (indicator.createTooltipDataSource !== null) {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chartStore = pane.getChart().getChartStore()\n const { name: customName, calcParamsText: customCalcParamsText, values: customValues, icons: customIcons } = indicator.createTooltipDataSource({\n kLineDataList: dataList,\n indicator,\n visibleRange: chartStore.getTimeScaleStore().getVisibleRange(),\n bounding: widget.getBounding(),\n crosshair,\n defaultStyles: styles,\n xAxis: pane.getChart().getPaneById(PaneIdConstants.XAXIS)?.getAxisComponent() as XAxis,\n yAxis: pane.getAxisComponent()\n })\n if (customName !== undefined && tooltipStyles.showName) {\n tooltipData.name = customName\n }\n if (customCalcParamsText !== undefined && tooltipStyles.showParams) {\n tooltipData.calcParamsText = customCalcParamsText\n }\n if (customIcons !== undefined) {\n tooltipData.icons = customIcons\n }\n if (customValues !== undefined && indicator.visible) {\n const optimizedValues: TooltipData[] = []\n const color = styles.tooltip.text.color\n customValues.forEach(data => {\n let title = { text: '', color }\n if (isObject(data.title)) {\n title = data.title\n } else {\n title.text = data.title\n }\n let value = { text: '', color }\n if (isObject(data.value)) {\n value = data.value\n } else {\n value.text = data.value\n }\n value.text = formatThousands(value.text, thousandsSeparator)\n optimizedValues.push({ title, value })\n })\n tooltipData.values = optimizedValues\n }\n }\n return tooltipData\n }\n\n protected classifyTooltipIcons (icons: TooltipIconStyle[]): TooltipIconStyle[][] {\n const leftIcons: TooltipIconStyle[] = []\n const middleIcons: TooltipIconStyle[] = []\n const rightIcons: TooltipIconStyle[] = []\n icons.forEach(icon => {\n switch (icon.position) {\n case TooltipIconPosition.Left: {\n leftIcons.push(icon)\n break\n }\n case TooltipIconPosition.Middle: {\n middleIcons.push(icon)\n break\n }\n case TooltipIconPosition.Right: {\n rightIcons.push(icon)\n break\n }\n }\n })\n return [leftIcons, middleIcons, rightIcons]\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport Coordinate from '../common/Coordinate'\nimport Point from '../common/Point'\nimport Bounding from '../common/Bounding'\nimport BarSpace from '../common/BarSpace'\nimport Precision from '../common/Precision'\nimport { OverlayStyle, CustomApi } from '../common/Options'\nimport { EventHandler, EventName, MouseTouchEvent, MouseTouchEventCallback } from '../common/SyntheticEvent'\nimport { isBoolean } from '../common/utils/typeChecks'\n\nimport Axis from '../component/Axis'\nimport XAxis from '../component/XAxis'\nimport YAxis from '../component/YAxis'\nimport Overlay, { OVERLAY_FIGURE_KEY_PREFIX, OverlayFigure, OverlayFigureIgnoreEventType, OverlayMode, getAllOverlayFigureIgnoreEventTypes } from '../component/Overlay'\n\nimport OverlayStore, { ProgressOverlayInfo, EventOverlayInfo, EventOverlayInfoFigureType } from '../store/OverlayStore'\nimport TimeScaleStore from '../store/TimeScaleStore'\n\nimport { PaneIdConstants } from '../pane/Pane'\n\nimport Widget from '../widget/Widget'\n\nimport View from './View'\n\nexport default class OverlayView extends View {\n constructor (widget: Widget) {\n super(widget)\n this._initEvent()\n }\n\n private _initEvent (): void {\n const pane = this.getWidget().getPane()\n const paneId = pane.getId()\n const overlayStore = pane.getChart().getChartStore().getOverlayStore()\n this.registerEvent('mouseMoveEvent', (event: MouseTouchEvent) => {\n const progressInstanceInfo = overlayStore.getProgressInstanceInfo()\n if (progressInstanceInfo !== null) {\n const overlay = progressInstanceInfo.instance\n let progressInstancePaneId = progressInstanceInfo.paneId\n if (overlay.isStart()) {\n overlayStore.updateProgressInstanceInfo(paneId)\n progressInstancePaneId = paneId\n }\n const index = overlay.points.length - 1\n const key = `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`\n if (overlay.isDrawing() && progressInstancePaneId === paneId) {\n overlay.eventMoveForDrawing(this._coordinateToPoint(progressInstanceInfo.instance, event))\n overlay.onDrawing?.({ overlay, figureKey: key, figureIndex: index, ...event })\n }\n return this._figureMouseMoveEvent(\n overlay,\n EventOverlayInfoFigureType.Point,\n key,\n index,\n 0\n )(event)\n }\n overlayStore.setHoverInstanceInfo({\n paneId, instance: null, figureType: EventOverlayInfoFigureType.None, figureKey: '', figureIndex: -1, attrsIndex: -1\n }, event)\n return false\n }).registerEvent('mouseClickEvent', (event: MouseTouchEvent) => {\n const progressInstanceInfo = overlayStore.getProgressInstanceInfo()\n if (progressInstanceInfo !== null) {\n const overlay = progressInstanceInfo.instance\n let progressInstancePaneId = progressInstanceInfo.paneId\n if (overlay.isStart()) {\n overlayStore.updateProgressInstanceInfo(paneId, true)\n progressInstancePaneId = paneId\n }\n const index = overlay.points.length - 1\n const key = `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`\n if (overlay.isDrawing() && progressInstancePaneId === paneId) {\n overlay.eventMoveForDrawing(this._coordinateToPoint(overlay, event))\n overlay.onDrawing?.({ overlay, figureKey: key, figureIndex: index, ...event })\n overlay.nextStep()\n if (!overlay.isDrawing()) {\n overlayStore.progressInstanceComplete()\n overlay.onDrawEnd?.({ overlay, figureKey: key, figureIndex: index, ...event })\n }\n }\n return this._figureMouseClickEvent(\n overlay,\n EventOverlayInfoFigureType.Point,\n key,\n index,\n 0\n )(event)\n }\n overlayStore.setClickInstanceInfo({\n paneId, instance: null, figureType: EventOverlayInfoFigureType.None, figureKey: '', figureIndex: -1, attrsIndex: -1\n }, event)\n return false\n }).registerEvent('mouseDoubleClickEvent', (event: MouseTouchEvent) => {\n const progressInstanceInfo = overlayStore.getProgressInstanceInfo()\n if (progressInstanceInfo !== null) {\n const overlay = progressInstanceInfo.instance\n const progressInstancePaneId = progressInstanceInfo.paneId\n if (overlay.isDrawing() && progressInstancePaneId === paneId) {\n overlay.forceComplete()\n if (!overlay.isDrawing()) {\n overlayStore.progressInstanceComplete()\n const index = overlay.points.length - 1\n const key = `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`\n overlay.onDrawEnd?.({ overlay, figureKey: key, figureIndex: index, ...event })\n }\n }\n return true\n }\n return false\n }).registerEvent('mouseRightClickEvent', (event: MouseTouchEvent) => {\n const progressInstanceInfo = overlayStore.getProgressInstanceInfo()\n if (progressInstanceInfo !== null) {\n const overlay = progressInstanceInfo.instance\n if (overlay.isDrawing()) {\n const index = overlay.points.length - 1\n return this._figureMouseRightClickEvent(\n overlay,\n EventOverlayInfoFigureType.Point,\n `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`,\n index,\n 0\n )(event)\n }\n }\n return false\n }).registerEvent('mouseUpEvent', (event: MouseTouchEvent) => {\n const { instance, figureIndex, figureKey } = overlayStore.getPressedInstanceInfo()\n if (instance !== null) {\n instance.onPressedMoveEnd?.({ overlay: instance, figureKey, figureIndex, ...event })\n }\n overlayStore.setPressedInstanceInfo({\n paneId, instance: null, figureType: EventOverlayInfoFigureType.None, figureKey: '', figureIndex: -1, attrsIndex: -1\n })\n return false\n }).registerEvent('pressedMouseMoveEvent', (event: MouseTouchEvent) => {\n const { instance, figureType, figureIndex, figureKey } = overlayStore.getPressedInstanceInfo()\n if (instance !== null) {\n if (!instance.lock) {\n if (!(instance.onPressedMoving?.({ overlay: instance, figureIndex, figureKey, ...event }) ?? false)) {\n const point = this._coordinateToPoint(instance, event)\n if (figureType === EventOverlayInfoFigureType.Point) {\n instance.eventPressedPointMove(point, figureIndex)\n } else {\n instance.eventPressedOtherMove(point, this.getWidget().getPane().getChart().getChartStore().getTimeScaleStore())\n }\n }\n }\n return true\n }\n return false\n })\n }\n\n private _createFigureEvents (\n overlay: Overlay,\n figureType: EventOverlayInfoFigureType,\n figureKey: string,\n figureIndex: number,\n attrsIndex: number,\n ignoreEvent?: boolean | OverlayFigureIgnoreEventType[]\n ): EventHandler | undefined {\n let eventHandler\n if (!overlay.isDrawing()) {\n let eventTypes: OverlayFigureIgnoreEventType[] = []\n if (ignoreEvent !== undefined) {\n if (isBoolean(ignoreEvent)) {\n if (ignoreEvent) {\n eventTypes = getAllOverlayFigureIgnoreEventTypes()\n }\n } else {\n eventTypes = ignoreEvent\n }\n }\n if (eventTypes.length === 0) {\n return {\n mouseMoveEvent: this._figureMouseMoveEvent(overlay, figureType, figureKey, figureIndex, attrsIndex),\n mouseDownEvent: this._figureMouseDownEvent(overlay, figureType, figureKey, figureIndex, attrsIndex),\n mouseClickEvent: this._figureMouseClickEvent(overlay, figureType, figureKey, figureIndex, attrsIndex),\n mouseRightClickEvent: this._figureMouseRightClickEvent(overlay, figureType, figureKey, figureIndex, attrsIndex)\n }\n }\n eventHandler = {}\n // [\n // 'mouseClickEvent', 'mouseRightClickEvent', 'tapEvent', 'mouseDownEvent',\n // 'touchStartEvent', 'mouseMoveEvent', 'touchMoveEvent'\n // ]\n if (!eventTypes.includes('mouseMoveEvent') && !eventTypes.includes('touchMoveEvent')) {\n eventHandler.mouseMoveEvent = this._figureMouseMoveEvent(overlay, figureType, figureKey, figureIndex, attrsIndex)\n }\n if (!eventTypes.includes('mouseDownEvent') && !eventTypes.includes('touchStartEvent')) {\n eventHandler.mouseDownEvent = this._figureMouseDownEvent(overlay, figureType, figureKey, figureIndex, attrsIndex)\n }\n if (!eventTypes.includes('mouseClickEvent') && !eventTypes.includes('tapEvent')) {\n eventHandler.mouseClickEvent = this._figureMouseClickEvent(overlay, figureType, figureKey, figureIndex, attrsIndex)\n }\n if (!eventTypes.includes('mouseRightClickEvent')) {\n eventHandler.mouseRightClickEvent = this._figureMouseRightClickEvent(overlay, figureType, figureKey, figureIndex, attrsIndex)\n }\n }\n return eventHandler\n }\n\n private _figureMouseMoveEvent (overlay: Overlay, figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n const pane = this.getWidget().getPane()\n const overlayStore = pane.getChart().getChartStore().getOverlayStore()\n overlayStore.setHoverInstanceInfo(\n { paneId: pane.getId(), instance: overlay, figureType, figureKey, figureIndex, attrsIndex }, event\n )\n return true\n }\n }\n\n private _figureMouseDownEvent (overlay: Overlay, figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n const pane = this.getWidget().getPane()\n const paneId = pane.getId()\n const overlayStore = pane.getChart().getChartStore().getOverlayStore()\n overlay.startPressedMove(this._coordinateToPoint(overlay, event))\n overlay.onPressedMoveStart?.({ overlay, figureIndex, figureKey, ...event })\n overlayStore.setPressedInstanceInfo({ paneId, instance: overlay, figureType, figureKey, figureIndex, attrsIndex })\n return true\n }\n }\n\n private _figureMouseClickEvent (overlay: Overlay, figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n const pane = this.getWidget().getPane()\n const paneId = pane.getId()\n const overlayStore = pane.getChart().getChartStore().getOverlayStore()\n overlayStore.setClickInstanceInfo({ paneId, instance: overlay, figureType, figureKey, figureIndex, attrsIndex }, event)\n return true\n }\n }\n\n private _figureMouseRightClickEvent (overlay: Overlay, _figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, _attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n if (!(overlay.onRightClick?.({ overlay, figureIndex, figureKey, ...event }) ?? false)) {\n const pane = this.getWidget().getPane()\n const overlayStore = pane.getChart().getChartStore().getOverlayStore()\n overlayStore.removeInstance(overlay)\n }\n return true\n }\n }\n\n private _coordinateToPoint (overlay: Overlay, coordinate: Coordinate): Partial {\n const point: Partial = {}\n const pane = this.getWidget().getPane()\n const chart = pane.getChart()\n const paneId = pane.getId()\n const timeScaleStore = chart.getChartStore().getTimeScaleStore()\n if (this.coordinateToPointTimestampDataIndexFlag()) {\n const xAxis = chart.getPaneById(PaneIdConstants.XAXIS)?.getAxisComponent() as Axis\n const dataIndex = xAxis.convertFromPixel(coordinate.x)\n const timestamp = timeScaleStore.dataIndexToTimestamp(dataIndex) ?? undefined\n point.dataIndex = dataIndex\n point.timestamp = timestamp\n }\n if (this.coordinateToPointValueFlag()) {\n const yAxis = pane.getAxisComponent()\n let value = yAxis.convertFromPixel(coordinate.y)\n if (overlay.mode !== OverlayMode.Normal && paneId === PaneIdConstants.CANDLE && point.dataIndex !== undefined) {\n const kLineData = timeScaleStore.getDataByDataIndex(point.dataIndex)\n if (kLineData !== null) {\n if (value > kLineData.high) {\n if (overlay.mode === OverlayMode.WeakMagnet) {\n const highY = yAxis.convertToPixel(kLineData.high)\n const buffValue = yAxis.convertFromPixel(highY - 8)\n if (value < buffValue) {\n value = kLineData.high\n }\n } else {\n value = kLineData.high\n }\n } else if (value < kLineData.low) {\n if (overlay.mode === OverlayMode.WeakMagnet) {\n const lowY = yAxis.convertToPixel(kLineData.low)\n const buffValue = yAxis.convertFromPixel(lowY - 8)\n if (value > buffValue) {\n value = kLineData.low\n }\n } else {\n value = kLineData.low\n }\n } else {\n const max = Math.max(kLineData.open, kLineData.close)\n const min = Math.min(kLineData.open, kLineData.close)\n if (value > max) {\n if (value - max < kLineData.high - value) {\n value = max\n } else {\n value = kLineData.high\n }\n } else if (value < min) {\n if (value - kLineData.low < min - value) {\n value = kLineData.low\n } else {\n value = min\n }\n } else if (max - value < value - min) {\n value = max\n } else {\n value = min\n }\n }\n }\n }\n point.value = value\n }\n return point\n }\n\n protected coordinateToPointValueFlag (): boolean {\n return true\n }\n\n protected coordinateToPointTimestampDataIndexFlag (): boolean {\n return true\n }\n\n override dispatchEvent (name: EventName, event: MouseTouchEvent, other?: number): boolean {\n if (this.getWidget().getPane().getChart().getChartStore().getOverlayStore().isDrawing()) {\n return this.onEvent(name, event, other)\n }\n return super.dispatchEvent(name, event, other)\n }\n\n override checkEventOn (): boolean {\n return true\n }\n\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const paneId = pane.getId()\n const chart = pane.getChart()\n const yAxis = pane.getAxisComponent() as unknown as Nullable\n const xAxis = chart.getPaneById(PaneIdConstants.XAXIS)?.getAxisComponent() as Nullable\n const bounding = widget.getBounding()\n const chartStore = chart.getChartStore()\n const customApi = chartStore.getCustomApi()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const timeScaleStore = chartStore.getTimeScaleStore()\n const dateTimeFormat = timeScaleStore.getDateTimeFormat()\n const barSpace = timeScaleStore.getBarSpace()\n const precision = chartStore.getPrecision()\n const defaultStyles = chartStore.getStyles().overlay\n const overlayStore = chartStore.getOverlayStore()\n const hoverInstanceInfo = overlayStore.getHoverInstanceInfo()\n const clickInstanceInfo = overlayStore.getClickInstanceInfo()\n const overlays = this.getCompleteOverlays(overlayStore, paneId)\n overlays.forEach(overlay => {\n if (overlay.visible) {\n this._drawOverlay(\n ctx, overlay, bounding, barSpace, precision,\n dateTimeFormat, customApi, thousandsSeparator,\n defaultStyles, xAxis, yAxis,\n hoverInstanceInfo, clickInstanceInfo, timeScaleStore\n )\n }\n })\n const progressInstanceInfo = overlayStore.getProgressInstanceInfo()\n if (progressInstanceInfo !== null) {\n const overlay = this.getProgressOverlay(progressInstanceInfo, paneId)\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (overlay !== null && overlay.visible) {\n this._drawOverlay(\n ctx, overlay, bounding, barSpace,\n precision, dateTimeFormat, customApi, thousandsSeparator,\n defaultStyles, xAxis, yAxis,\n hoverInstanceInfo, clickInstanceInfo, timeScaleStore\n )\n }\n }\n }\n\n private _drawOverlay (\n ctx: CanvasRenderingContext2D,\n overlay: Overlay,\n bounding: Bounding,\n barSpace: BarSpace,\n precision: Precision,\n dateTimeFormat: Intl.DateTimeFormat,\n customApi: CustomApi,\n thousandsSeparator: string,\n defaultStyles: OverlayStyle,\n xAxis: Nullable,\n yAxis: Nullable,\n hoverInstanceInfo: EventOverlayInfo,\n clickInstanceInfo: EventOverlayInfo,\n timeScaleStore: TimeScaleStore\n ): void {\n const { points } = overlay\n const coordinates = points.map(point => {\n let dataIndex = point.dataIndex\n if (point.timestamp !== undefined) {\n dataIndex = timeScaleStore.timestampToDataIndex(point.timestamp)\n }\n const coordinate = { x: 0, y: 0 }\n if (dataIndex !== undefined) {\n coordinate.x = xAxis?.convertToPixel(dataIndex) ?? 0\n }\n if (point.value !== undefined) {\n coordinate.y = yAxis?.convertToPixel(point.value) ?? 0\n }\n return coordinate\n })\n if (coordinates.length > 0) {\n const figures = new Array().concat(\n this.getFigures(\n overlay, coordinates, bounding, barSpace, precision, thousandsSeparator, dateTimeFormat, defaultStyles, xAxis, yAxis\n )\n )\n this.drawFigures(\n ctx,\n overlay,\n figures,\n defaultStyles\n )\n }\n this.drawDefaultFigures(\n ctx,\n overlay,\n coordinates,\n bounding,\n precision,\n dateTimeFormat,\n customApi,\n thousandsSeparator,\n defaultStyles,\n xAxis,\n yAxis,\n hoverInstanceInfo,\n clickInstanceInfo\n )\n }\n\n protected drawFigures (ctx: CanvasRenderingContext2D, overlay: Overlay, figures: OverlayFigure[], defaultStyles: OverlayStyle): void {\n figures.forEach((figure, figureIndex) => {\n const { type, styles, attrs, ignoreEvent } = figure\n const attrsArray = [].concat(attrs)\n attrsArray.forEach((ats, attrsIndex) => {\n const evnets = this._createFigureEvents(overlay, EventOverlayInfoFigureType.Other, figure.key ?? '', figureIndex, attrsIndex, ignoreEvent)\n const ss = { ...defaultStyles[type], ...overlay.styles?.[type], ...styles }\n this.createFigure(\n type, ats, ss, evnets\n )?.draw(ctx)\n })\n })\n }\n\n protected getCompleteOverlays (overlayStore: OverlayStore, paneId: string): Overlay[] {\n return overlayStore.getInstances(paneId)\n }\n\n protected getProgressOverlay (info: ProgressOverlayInfo, paneId: string): Nullable {\n if (info.paneId === paneId) {\n return info.instance\n }\n return null\n }\n\n protected getFigures (\n overlay: Overlay,\n coordinates: Coordinate[],\n bounding: Bounding,\n barSpace: BarSpace,\n precision: Precision,\n thousandsSeparator: string,\n dateTimeFormat: Intl.DateTimeFormat,\n defaultStyles: OverlayStyle,\n xAxis: Nullable,\n yAxis: Nullable\n ): OverlayFigure | OverlayFigure[] {\n return overlay.createPointFigures?.({ overlay, coordinates, bounding, barSpace, precision, thousandsSeparator, dateTimeFormat, defaultStyles, xAxis, yAxis }) ?? []\n }\n\n protected drawDefaultFigures (\n ctx: CanvasRenderingContext2D,\n overlay: Overlay,\n coordinates: Coordinate[],\n _bounding: Bounding,\n _precision: Precision,\n _dateTimeFormat: Intl.DateTimeFormat,\n _customApi: CustomApi,\n _thousandsSeparator: string,\n defaultStyles: OverlayStyle,\n _xAxis: Nullable,\n _yAxis: Nullable,\n hoverInstanceInfo: EventOverlayInfo,\n clickInstanceInfo: EventOverlayInfo\n ): void {\n if (overlay.needDefaultPointFigure) {\n if (\n (hoverInstanceInfo.instance?.id === overlay.id && hoverInstanceInfo.figureType !== EventOverlayInfoFigureType.None) ||\n (clickInstanceInfo.instance?.id === overlay.id && clickInstanceInfo.figureType !== EventOverlayInfoFigureType.None)\n ) {\n const styles = overlay.styles\n const pointStyles = { ...defaultStyles.point, ...styles?.point }\n coordinates.forEach(({ x, y }, index) => {\n let radius = pointStyles.radius\n let color = pointStyles.color\n let borderColor = pointStyles.borderColor\n let borderSize = pointStyles.borderSize\n if (\n hoverInstanceInfo.instance?.id === overlay.id &&\n hoverInstanceInfo.figureType === EventOverlayInfoFigureType.Point &&\n hoverInstanceInfo.figureIndex === index\n ) {\n radius = pointStyles.activeRadius\n color = pointStyles.activeColor\n borderColor = pointStyles.activeBorderColor\n borderSize = pointStyles.activeBorderSize\n }\n this.createFigure(\n 'circle',\n { x, y, r: radius + borderSize },\n { color: borderColor },\n this._createFigureEvents(overlay, EventOverlayInfoFigureType.Point, `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`, index, 0)\n )?.draw(ctx)\n this.createFigure(\n 'circle',\n { x, y, r: radius },\n { color }\n )?.draw(ctx)\n })\n }\n }\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Pane from '../pane/Pane'\n\nimport { WidgetNameConstants } from './Widget'\nimport DrawWidget from './DrawWidget'\n\nimport YAxis from '../component/YAxis'\n\nimport GridView from '../view/GridView'\nimport IndicatorView from '../view/IndicatorView'\nimport CrosshairLineView from '../view/CrosshairLineView'\nimport IndicatorTooltipView from '../view/IndicatorTooltipView'\nimport OverlayView from '../view/OverlayView'\n\nexport default class IndicatorWidget extends DrawWidget {\n private readonly _gridView = new GridView(this)\n private readonly _indicatorView = new IndicatorView(this)\n private readonly _crosshairLineView = new CrosshairLineView(this)\n private readonly _tooltipView = this.createTooltipView()\n private readonly _overlayView = new OverlayView(this)\n\n constructor (rootContainer: HTMLElement, pane: Pane) {\n super(rootContainer, pane)\n this.addChild(this._tooltipView)\n this.addChild(this._overlayView)\n this.getContainer().style.cursor = 'crosshair'\n this.registerEvent('mouseMoveEvent', () => {\n pane.getChart().getChartStore().getTooltipStore().setActiveIconInfo()\n return false\n })\n }\n\n getName (): string {\n return WidgetNameConstants.MAIN\n }\n\n protected updateMain (ctx: CanvasRenderingContext2D): void {\n this.updateMainContent(ctx)\n this._indicatorView.draw(ctx)\n this._gridView.draw(ctx)\n }\n\n protected createTooltipView (): IndicatorTooltipView {\n return new IndicatorTooltipView(this)\n }\n\n protected updateMainContent (_ctx: CanvasRenderingContext2D): void {}\n\n override updateOverlay (ctx: CanvasRenderingContext2D): void {\n this._overlayView.draw(ctx)\n this._crosshairLineView.draw(ctx)\n this._tooltipView.draw(ctx)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate from '../common/Coordinate'\nimport VisibleData from '../common/VisibleData'\nimport BarSpace from '../common/BarSpace'\nimport { GradientColor } from '../common/Options'\n\nimport ChildrenView from './ChildrenView'\n\nimport { isNumber, isArray } from '../common/utils/typeChecks'\n\nexport default class CandleAreaView extends ChildrenView {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chart = pane.getChart()\n const bounding = widget.getBounding()\n const yAxis = pane.getAxisComponent()\n const candleAreaStyles = chart.getStyles().candle.area\n const lineCoordinates: Coordinate[] = []\n const areaCoordinates: Coordinate[] = []\n let minY = Number.MAX_SAFE_INTEGER\n this.eachChildren((data: VisibleData, barSpace: BarSpace, i: number) => {\n const { data: kLineData, x } = data\n const { halfGapBar } = barSpace\n const value = kLineData[candleAreaStyles.value]\n if (isNumber(value)) {\n const y = yAxis.convertToPixel(value)\n if (i === 0) {\n const startX = x - halfGapBar\n areaCoordinates.push({ x: startX, y: bounding.height })\n areaCoordinates.push({ x: startX, y })\n lineCoordinates.push({ x: startX, y })\n }\n lineCoordinates.push({ x, y })\n areaCoordinates.push({ x, y })\n minY = Math.min(minY, y)\n }\n })\n const areaCoordinateCount = areaCoordinates.length\n if (areaCoordinateCount > 0) {\n const lastCoordinate: Coordinate = areaCoordinates[areaCoordinateCount - 1]\n const endX = lastCoordinate.x\n lineCoordinates.push({ x: endX, y: lastCoordinate.y })\n areaCoordinates.push({ x: endX, y: lastCoordinate.y })\n areaCoordinates.push({ x: endX, y: bounding.height })\n }\n\n if (lineCoordinates.length > 0) {\n this.createFigure(\n 'line',\n { coordinates: lineCoordinates },\n {\n color: candleAreaStyles.lineColor,\n size: candleAreaStyles.lineSize\n }\n )?.draw(ctx)\n }\n\n if (areaCoordinates.length > 0) {\n // Draw real-time background\n const backgroundColor = candleAreaStyles.backgroundColor\n let color: string | CanvasGradient\n if (isArray(backgroundColor)) {\n const gradient = ctx.createLinearGradient(0, bounding.height, 0, minY)\n try {\n backgroundColor.forEach(({ offset, color }) => {\n gradient.addColorStop(offset, color)\n })\n } catch (e) {\n }\n color = gradient\n } else {\n color = backgroundColor\n }\n this.createFigure(\n 'polygon',\n { coordinates: areaCoordinates },\n { color }\n )?.draw(ctx)\n }\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Coordinate from '../common/Coordinate'\nimport VisibleData from '../common/VisibleData'\nimport { CandleHighLowPriceMarkStyle } from '../common/Options'\n\nimport ChildrenView from './ChildrenView'\n\nimport { formatPrecision, formatThousands } from '../common/utils/format'\n\nexport default class CandleHighLowPriceView extends ChildrenView {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chartStore = pane.getChart().getChartStore()\n const priceMarkStyles = chartStore.getStyles().candle.priceMark\n const highPriceMarkStyles = priceMarkStyles.high\n const lowPriceMarkStyles = priceMarkStyles.low\n if (priceMarkStyles.show && (highPriceMarkStyles.show || lowPriceMarkStyles.show)) {\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const precision = chartStore.getPrecision()\n const yAxis = pane.getAxisComponent()\n let high = Number.MIN_SAFE_INTEGER\n let highX = 0\n let low = Number.MAX_SAFE_INTEGER\n let lowX = 0\n this.eachChildren((data: VisibleData) => {\n const { data: kLineData, x } = data\n if (high < kLineData.high) {\n high = kLineData.high\n highX = x\n }\n if (low > kLineData.low) {\n low = kLineData.low\n lowX = x\n }\n })\n const highY = yAxis.convertToPixel(high)\n const lowY = yAxis.convertToPixel(low)\n if (highPriceMarkStyles.show && high !== Number.MIN_SAFE_INTEGER) {\n this._drawMark(\n ctx,\n formatThousands(formatPrecision(high, precision.price), thousandsSeparator),\n { x: highX, y: highY },\n highY < lowY ? [-2, -5] : [2, 5],\n highPriceMarkStyles\n )\n }\n if (lowPriceMarkStyles.show && low !== Number.MAX_SAFE_INTEGER) {\n this._drawMark(\n ctx,\n formatThousands(formatPrecision(low, precision.price), thousandsSeparator),\n { x: lowX, y: lowY },\n highY < lowY ? [2, 5] : [-2, -5],\n lowPriceMarkStyles\n )\n }\n }\n }\n\n private _drawMark (\n ctx: CanvasRenderingContext2D,\n text: string,\n coordinate: Coordinate,\n offsets: number[],\n styles: CandleHighLowPriceMarkStyle\n ): void {\n const startX = coordinate.x\n const startY = coordinate.y + offsets[0]\n this.createFigure(\n 'line',\n {\n coordinates: [\n { x: startX - 2, y: startY + offsets[0] },\n { x: startX, y: startY },\n { x: startX + 2, y: startY + offsets[0] }\n ]\n },\n { color: styles.color }\n )?.draw(ctx)\n\n let lineEndX: number\n let textStartX: number\n let textAlign: string\n const { width } = this.getWidget().getBounding()\n if (startX > width / 2) {\n lineEndX = startX - 5\n textStartX = lineEndX - styles.textOffset\n textAlign = 'right'\n } else {\n lineEndX = startX + 5\n textAlign = 'left'\n textStartX = lineEndX + styles.textOffset\n }\n\n const y = startY + offsets[1]\n this.createFigure(\n 'line',\n {\n coordinates: [\n { x: startX, y: startY },\n { x: startX, y },\n { x: lineEndX, y }\n ]\n },\n { color: styles.color }\n )?.draw(ctx)\n this.createFigure(\n 'text',\n {\n x: textStartX,\n y,\n text,\n align: textAlign,\n baseline: 'middle'\n },\n {\n color: styles.color,\n size: styles.textSize,\n family: styles.textFamily,\n weight: styles.textWeight\n }\n )?.draw(ctx)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport YAxis from '../component/YAxis'\n\nimport View from './View'\n\nexport default class CandleLastPriceView extends View {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const bounding = widget.getBounding()\n const chartStore = pane.getChart().getChartStore()\n const priceMarkStyles = chartStore.getStyles().candle.priceMark\n const lastPriceMarkStyles = priceMarkStyles.last\n const lastPriceMarkLineStyles = lastPriceMarkStyles.line\n if (priceMarkStyles.show && lastPriceMarkStyles.show && lastPriceMarkLineStyles.show) {\n const yAxis = pane.getAxisComponent() as YAxis\n const dataList = chartStore.getDataList()\n const data = dataList[dataList.length - 1]\n if (data != null) {\n const { close, open } = data\n const priceY = yAxis.convertToNicePixel(close)\n let color: string\n if (close > open) {\n color = lastPriceMarkStyles.upColor\n } else if (close < open) {\n color = lastPriceMarkStyles.downColor\n } else {\n color = lastPriceMarkStyles.noChangeColor\n }\n this.createFigure(\n 'line',\n {\n coordinates: [\n { x: 0, y: priceY },\n { x: bounding.width, y: priceY }\n ]\n },\n {\n style: lastPriceMarkLineStyles.style,\n color,\n size: lastPriceMarkLineStyles.size,\n dashedValue: lastPriceMarkLineStyles.dashedValue\n }\n )?.draw(ctx)\n }\n }\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Locales } from '../../common/Options'\n\nconst zhCN: Locales = {\n time: '时间:',\n open: '开:',\n high: '高:',\n low: '低:',\n close: '收:',\n volume: '成交量:'\n}\n\nexport default zhCN\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Locales } from '../../common/Options'\n\nconst enUS: Locales = {\n time: 'Time: ',\n open: 'Open: ',\n high: 'High: ',\n low: 'Low: ',\n close: 'Close: ',\n volume: 'Volume: '\n}\n\nexport default enUS\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Locales } from '../../common/Options'\n\nimport zhCN from './zh-CN'\nimport enUS from './en-US'\n\nconst locales: Record = {\n 'zh-CN': zhCN,\n 'en-US': enUS\n}\n\nfunction registerLocale (locale: string, ls: Locales): void {\n locales[locale] = { ...locales[locale], ...ls }\n}\n\nfunction getSupportedLocales (): string[] {\n return Object.keys(locales)\n}\n\nfunction i18n (key: string, locale: string): string {\n return locales[locale]?.[key] ?? key\n}\n\nexport { i18n, registerLocale, getSupportedLocales }\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport Bounding from '../common/Bounding'\nimport KLineData from '../common/KLineData'\nimport Precision from '../common/Precision'\nimport Crosshair from '../common/Crosshair'\nimport {\n Styles, CandleStyle, TooltipData, TooltipDataChild, TooltipShowType, CandleTooltipRectPosition,\n CandleTooltipCustomCallbackData, YAxisPosition, PolygonType, CustomApi, FormatDateType\n} from '../common/Options'\n\nimport { PaneIdConstants } from '../pane/Pane'\n\nimport Indicator from '../component/Indicator'\n\nimport IndicatorTooltipView from './IndicatorTooltipView'\n\nimport { TooltipIconInfo } from '../store/TooltipStore'\n\nimport { i18n } from '../extension/i18n/index'\n\nimport { formatPrecision, formatThousands } from '../common/utils/format'\nimport { createFont } from '../common/utils/canvas'\nimport { isFunction, isObject } from '../common/utils/typeChecks'\n\nexport default class CandleTooltipView extends IndicatorTooltipView {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const paneId = pane.getId()\n const chartStore = pane.getChart().getChartStore()\n const crosshair = chartStore.getCrosshairStore().get()\n if (crosshair.kLineData !== undefined) {\n const bounding = widget.getBounding()\n const yAxisBounding = pane.getYAxisWidget()?.getBounding() as Bounding\n const dataList = chartStore.getDataList()\n const precision = chartStore.getPrecision()\n const locale = chartStore.getLocale()\n const customApi = chartStore.getCustomApi()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const activeIconInfo = chartStore.getTooltipStore().getActiveIconInfo()\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n const dateTimeFormat = chartStore.getTimeScaleStore().getDateTimeFormat()\n const styles = chartStore.getStyles()\n const candleStyles = styles.candle\n const indicatorStyles = styles.indicator\n if (\n candleStyles.tooltip.showType === TooltipShowType.Rect &&\n indicatorStyles.tooltip.showType === TooltipShowType.Rect\n ) {\n const isDrawCandleTooltip = this.isDrawTooltip(crosshair, candleStyles.tooltip)\n const isDrawIndicatorTooltip = this.isDrawTooltip(crosshair, indicatorStyles.tooltip)\n this._drawRectTooltip(\n ctx, dataList, indicators,\n bounding, yAxisBounding,\n crosshair, precision,\n dateTimeFormat, locale, customApi, thousandsSeparator,\n isDrawCandleTooltip, isDrawIndicatorTooltip,\n styles, 0\n )\n } else if (\n candleStyles.tooltip.showType === TooltipShowType.Standard &&\n indicatorStyles.tooltip.showType === TooltipShowType.Standard\n ) {\n const top = this._drawCandleStandardTooltip(\n ctx, dataList, paneId, bounding, crosshair, activeIconInfo, precision,\n dateTimeFormat, locale, customApi, thousandsSeparator, candleStyles\n )\n this.drawIndicatorTooltip(ctx, paneId, dataList, crosshair, activeIconInfo, indicators, customApi, thousandsSeparator, bounding, indicatorStyles, top)\n } else if (\n candleStyles.tooltip.showType === TooltipShowType.Rect &&\n indicatorStyles.tooltip.showType === TooltipShowType.Standard\n ) {\n const top = this.drawIndicatorTooltip(ctx, paneId, dataList, crosshair, activeIconInfo, indicators, customApi, thousandsSeparator, bounding, indicatorStyles, 0)\n const isDrawCandleTooltip = this.isDrawTooltip(crosshair, candleStyles.tooltip)\n this._drawRectTooltip(\n ctx, dataList, indicators,\n bounding, yAxisBounding,\n crosshair, precision, dateTimeFormat,\n locale, customApi, thousandsSeparator,\n isDrawCandleTooltip, false,\n styles, top\n )\n } else {\n const top = this._drawCandleStandardTooltip(\n ctx, dataList, paneId, bounding, crosshair, activeIconInfo, precision,\n dateTimeFormat, locale, customApi, thousandsSeparator, candleStyles\n )\n const isDrawIndicatorTooltip = this.isDrawTooltip(crosshair, indicatorStyles.tooltip)\n this._drawRectTooltip(\n ctx, dataList, indicators,\n bounding, yAxisBounding,\n crosshair, precision, dateTimeFormat,\n locale, customApi, thousandsSeparator,\n false, isDrawIndicatorTooltip,\n styles, top\n )\n }\n }\n }\n\n private _drawCandleStandardTooltip (\n ctx: CanvasRenderingContext2D,\n dataList: KLineData[],\n paneId: string,\n bounding: Bounding,\n crosshair: Crosshair,\n activeTooltipIconInfo: Nullable,\n precision: Precision,\n dateTimeFormat: Intl.DateTimeFormat,\n locale: string,\n customApi: CustomApi,\n thousandsSeparator: string,\n styles: CandleStyle\n ): number {\n const tooltipStyles = styles.tooltip\n const tooltipTextStyles = tooltipStyles.text\n let height = 0\n if (this.isDrawTooltip(crosshair, tooltipStyles)) {\n const dataIndex = crosshair.dataIndex ?? 0\n const values = this._getCandleTooltipData(\n { prev: dataList[dataIndex - 1] ?? null, current: crosshair.kLineData as KLineData, next: dataList[dataIndex + 1] ?? null },\n precision, dateTimeFormat, locale, customApi, thousandsSeparator, styles\n )\n let x = 0\n let y = 0\n let prevRowHeight = 0\n const [leftIcons, middleIcons, rightIcons] = this.classifyTooltipIcons(tooltipStyles.icons)\n const [leftIconsNextStartX, leftIconsNextStartY, leftIconsLastRowHeight, leftIconsIncreaseHeight] = this.drawStandardTooltipIcons(\n ctx, bounding, { paneId, indicatorName: '', iconId: '' },\n activeTooltipIconInfo, leftIcons, x, y, 0\n )\n x = leftIconsNextStartX\n y = leftIconsNextStartY\n height += leftIconsIncreaseHeight\n prevRowHeight = leftIconsLastRowHeight\n\n const [middleIconsNextStartX, middleIconsNextStartY, middleIconsLastRowHeight, middleIconsIncreaseHeight] = this.drawStandardTooltipIcons(\n ctx, bounding, { paneId, indicatorName: '', iconId: '' },\n activeTooltipIconInfo, middleIcons, x, y, prevRowHeight\n )\n x = middleIconsNextStartX\n y = middleIconsNextStartY\n height += middleIconsIncreaseHeight\n prevRowHeight = middleIconsLastRowHeight\n\n if (values.length > 0) {\n const [valuesNextStartX, valuesIconsNextStartY, valuesIconsLastRowHeight, valuesIconsIncreaseHeight] = this.drawStandardTooltipLabels(ctx, bounding, values, x, y, prevRowHeight, tooltipTextStyles)\n x = valuesNextStartX\n y = valuesIconsNextStartY\n height += valuesIconsIncreaseHeight\n prevRowHeight = valuesIconsLastRowHeight\n }\n\n const [rightIconsNextStartX, rightIconsNextStartY, rightIconsLastRowHeight, rightIconsIncreaseHeight] = this.drawStandardTooltipIcons(\n ctx, bounding, { paneId, indicatorName: '', iconId: '' },\n activeTooltipIconInfo, rightIcons, x, y, prevRowHeight\n )\n x = rightIconsNextStartX\n y = rightIconsNextStartY\n height += rightIconsIncreaseHeight\n prevRowHeight = rightIconsLastRowHeight\n }\n return height\n }\n\n private _drawRectTooltip (\n ctx: CanvasRenderingContext2D,\n dataList: KLineData[],\n indicators: Map,\n bounding: Bounding,\n yAxisBounding: Bounding,\n crosshair: Crosshair,\n precision: Precision,\n dateTimeFormat: Intl.DateTimeFormat,\n locale: string,\n customApi: CustomApi,\n thousandsSeparator: string,\n isDrawCandleTooltip: boolean,\n isDrawIndicatorTooltip: boolean,\n styles: Styles,\n top: number\n ): void {\n const candleStyles = styles.candle\n const indicatorStyles = styles.indicator\n const candleTooltipStyles = candleStyles.tooltip\n const indicatorTooltipStyles = indicatorStyles.tooltip\n if (isDrawCandleTooltip || isDrawIndicatorTooltip) {\n const dataIndex = crosshair.dataIndex ?? 0\n const candleTooltipDatas = this._getCandleTooltipData(\n { prev: dataList[dataIndex - 1] ?? null, current: crosshair.kLineData as KLineData, next: dataList[dataIndex + 1] ?? null },\n precision, dateTimeFormat, locale, customApi, thousandsSeparator, candleStyles\n )\n const {\n marginLeft: baseTextMarginLeft,\n marginRight: baseTextMarginRight,\n marginTop: baseTextMarginTop,\n marginBottom: baseTextMarginBottom,\n size: baseTextSize,\n weight: baseTextWeight,\n family: baseTextFamily\n } = candleTooltipStyles.text\n\n const {\n position: rectPosition,\n paddingLeft: rectPaddingLeft,\n paddingRight: rectPaddingRight,\n paddingTop: rectPaddingTop,\n paddingBottom: rectPaddingBottom,\n offsetLeft: rectOffsetLeft,\n offsetRight: rectOffsetRight,\n offsetTop: rectOffsetTop,\n offsetBottom: rectOffsetBottom,\n borderSize: rectBorderSize,\n borderRadius: rectBorderRadius,\n borderColor: rectBorderColor,\n color: rectBackgroundColor\n } = candleTooltipStyles.rect\n\n let maxTextWidth = 0\n let rectWidth = 0\n let rectHeight = 0\n if (isDrawCandleTooltip) {\n ctx.font = createFont(baseTextSize, baseTextWeight, baseTextFamily)\n candleTooltipDatas.forEach(data => {\n const title = data.title as TooltipDataChild\n const value = data.value as TooltipDataChild\n const text = `${title.text}${value.text}`\n const labelWidth = ctx.measureText(text).width + baseTextMarginLeft + baseTextMarginRight\n maxTextWidth = Math.max(maxTextWidth, labelWidth)\n })\n rectHeight += ((baseTextMarginBottom + baseTextMarginTop + baseTextSize) * candleTooltipDatas.length)\n }\n\n const {\n marginLeft: indicatorTextMarginLeft,\n marginRight: indicatorTextMarginRight,\n marginTop: indicatorTextMarginTop,\n marginBottom: indicatorTextMarginBottom,\n size: indicatorTextSize,\n weight: indicatorTextWeight,\n family: indicatorTextFamily\n } = indicatorTooltipStyles.text\n const indicatorTooltipDataValuess: TooltipData[][] = []\n if (isDrawIndicatorTooltip) {\n ctx.font = createFont(indicatorTextSize, indicatorTextWeight, indicatorTextFamily)\n indicators.forEach(indicator => {\n const tooltipDataValues = this.getIndicatorTooltipData(dataList, crosshair, indicator, customApi, thousandsSeparator, indicatorStyles).values ?? []\n indicatorTooltipDataValuess.push(tooltipDataValues)\n tooltipDataValues.forEach(data => {\n const title = data.title as TooltipDataChild\n const value = data.value as TooltipDataChild\n const text = `${title.text}${value.text}`\n const textWidth = ctx.measureText(text).width + indicatorTextMarginLeft + indicatorTextMarginRight\n maxTextWidth = Math.max(maxTextWidth, textWidth)\n rectHeight += (indicatorTextMarginTop + indicatorTextMarginBottom + indicatorTextSize)\n })\n })\n }\n rectWidth += maxTextWidth\n if (rectWidth !== 0 && rectHeight !== 0) {\n rectWidth += (rectBorderSize * 2 + rectPaddingLeft + rectPaddingRight)\n rectHeight += (rectBorderSize * 2 + rectPaddingTop + rectPaddingBottom)\n const centerX = bounding.width / 2\n const isPointer = rectPosition === CandleTooltipRectPosition.Pointer && crosshair.paneId === PaneIdConstants.CANDLE\n const isLeft = (crosshair.realX ?? 0) > centerX\n let rectX: number = 0\n if (isPointer) {\n const realX = crosshair.realX as number\n if (isLeft) {\n rectX = realX - rectOffsetRight - rectWidth\n } else {\n rectX = realX + rectOffsetLeft\n }\n } else {\n if (isLeft) {\n rectX = rectOffsetLeft\n if (styles.yAxis.inside && styles.yAxis.position === YAxisPosition.Left) {\n rectX += yAxisBounding.width\n }\n } else {\n rectX = bounding.width - rectOffsetRight - rectWidth\n if (styles.yAxis.inside && styles.yAxis.position === YAxisPosition.Right) {\n rectX -= yAxisBounding.width\n }\n }\n }\n\n let rectY = top + rectOffsetTop\n if (isPointer) {\n const y = crosshair.y as number\n rectY = y - rectHeight / 2\n if (rectY + rectHeight > bounding.height - rectOffsetBottom) {\n rectY = bounding.height - rectOffsetBottom - rectHeight\n }\n if (rectY < top + rectOffsetTop) {\n rectY = top + rectOffsetTop\n }\n }\n this.createFigure(\n 'rect',\n {\n x: rectX,\n y: rectY,\n width: rectWidth,\n height: rectHeight\n },\n {\n style: PolygonType.StrokeFill,\n color: rectBackgroundColor,\n borderColor: rectBorderColor,\n borderSize: rectBorderSize,\n borderRadius: rectBorderRadius\n }\n )?.draw(ctx)\n const candleTextX = rectX + rectBorderSize + rectPaddingLeft + baseTextMarginLeft\n let textY = rectY + rectBorderSize + rectPaddingTop\n if (isDrawCandleTooltip) {\n // render candle texts\n candleTooltipDatas.forEach(data => {\n textY += baseTextMarginTop\n const title = data.title as TooltipDataChild\n this.createFigure(\n 'text',\n {\n x: candleTextX,\n y: textY,\n text: title.text\n },\n {\n color: title.color,\n size: baseTextSize,\n family: baseTextFamily,\n weight: baseTextWeight\n }\n )?.draw(ctx)\n const value = data.value as TooltipDataChild\n this.createFigure(\n 'text',\n {\n x: rectX + rectWidth - rectBorderSize - baseTextMarginRight - rectPaddingRight,\n y: textY,\n text: value.text,\n align: 'right'\n },\n {\n color: value.color,\n size: baseTextSize,\n family: baseTextFamily,\n weight: baseTextWeight\n }\n )?.draw(ctx)\n textY += (baseTextSize + baseTextMarginBottom)\n })\n }\n if (isDrawIndicatorTooltip) {\n // render indicator texts\n const indicatorTextX = rectX + rectBorderSize + rectPaddingLeft + indicatorTextMarginLeft\n indicatorTooltipDataValuess.forEach(datas => {\n datas.forEach(data => {\n textY += indicatorTextMarginTop\n const title = data.title as TooltipDataChild\n const value = data.value as TooltipDataChild\n this.createFigure(\n 'text',\n {\n x: indicatorTextX,\n y: textY,\n text: title.text\n },\n {\n color: title.color,\n size: indicatorTextSize,\n family: indicatorTextFamily,\n weight: indicatorTextWeight\n }\n )?.draw(ctx)\n\n this.createFigure(\n 'text',\n {\n x: rectX + rectWidth - rectBorderSize - indicatorTextMarginRight - rectPaddingRight,\n y: textY,\n text: value.text,\n align: 'right'\n },\n {\n color: value.color,\n size: indicatorTextSize,\n family: indicatorTextFamily,\n weight: indicatorTextWeight\n }\n )?.draw(ctx)\n textY += (indicatorTextSize + indicatorTextMarginBottom)\n })\n })\n }\n }\n }\n }\n\n private _getCandleTooltipData (\n data: CandleTooltipCustomCallbackData,\n precision: Precision,\n dateTimeFormat: Intl.DateTimeFormat,\n locale: string,\n customApi: CustomApi,\n thousandsSeparator: string,\n styles: CandleStyle\n ): TooltipData[] {\n const tooltipStyles = styles.tooltip\n const textColor = tooltipStyles.text.color\n let tooltipData: TooltipData[] = []\n if (isFunction(tooltipStyles.custom)) {\n const labelValues = tooltipStyles.custom?.(data, styles) ?? []\n labelValues.forEach(({ title, value }) => {\n let t: TooltipDataChild = { text: '', color: '' }\n if (isObject(title)) {\n t = title\n } else {\n t.text = title\n t.color = textColor\n }\n t.text = i18n(t.text, locale)\n let v: TooltipDataChild = { text: '', color: '' }\n if (isObject(value)) {\n v = value\n } else {\n v.text = value\n v.color = textColor\n }\n tooltipData.push({ title: t, value: v })\n })\n } else {\n const { price: pricePrecision, volume: volumePrecision } = precision\n const current = data.current\n tooltipData = [\n {\n title: { text: i18n('time', locale), color: textColor },\n value: { text: customApi.formatDate(dateTimeFormat, current.timestamp, 'YYYY-MM-DD HH:mm', FormatDateType.Tooltip), color: textColor }\n }, {\n title: { text: i18n('open', locale), color: textColor },\n value: { text: formatThousands(formatPrecision(current.open, pricePrecision), thousandsSeparator), color: textColor }\n }, {\n title: { text: i18n('high', locale), color: textColor },\n value: { text: formatThousands(formatPrecision(current.high, pricePrecision), thousandsSeparator), color: textColor }\n }, {\n title: { text: i18n('low', locale), color: textColor },\n value: { text: formatThousands(formatPrecision(current.low, pricePrecision), thousandsSeparator), color: textColor }\n }, {\n title: { text: i18n('close', locale), color: textColor },\n value: { text: formatThousands(formatPrecision(current.close, pricePrecision), thousandsSeparator), color: textColor }\n }, {\n title: { text: i18n('volume', locale), color: textColor },\n value: {\n text: formatThousands(\n customApi.formatBigNumber(formatPrecision(current.volume ?? tooltipStyles.defaultValue, volumePrecision)),\n thousandsSeparator\n ),\n color: textColor\n }\n }\n ]\n }\n return tooltipData\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Pane from '../pane/Pane'\n\nimport IndicatorWidget from './IndicatorWidget'\n\nimport YAxis from '../component/YAxis'\n\nimport CandleBarView from '../view/CandleBarView'\nimport CandleAreaView from '../view/CandleAreaView'\nimport CandleHighLowPriceView from '../view/CandleHighLowPriceView'\nimport CandleLastPriceLineView from '../view/CandleLastPriceLineView'\n\nimport IndicatorTooltipView from '../view/IndicatorTooltipView'\nimport CandleTooltipView from '../view/CandleTooltipView'\n\nimport { CandleType } from '../common/Options'\n\nexport default class CandleWidget extends IndicatorWidget {\n private readonly _candleBarView = new CandleBarView(this)\n private readonly _candleAreaView = new CandleAreaView(this)\n private readonly _candleHighLowPriceView = new CandleHighLowPriceView(this)\n private readonly _candleLastPriceLineView = new CandleLastPriceLineView(this)\n\n constructor (rootContainer: HTMLElement, pane: Pane) {\n super(rootContainer, pane)\n this.addChild(this._candleBarView)\n }\n\n override updateMainContent (ctx: CanvasRenderingContext2D): void {\n const candleStyles = this.getPane().getChart().getStyles().candle\n if (candleStyles.type !== CandleType.Area) {\n this._candleBarView.draw(ctx)\n this._candleHighLowPriceView.draw(ctx)\n this._candleLastPriceLineView.draw(ctx)\n } else {\n this._candleAreaView.draw(ctx)\n }\n }\n\n override createTooltipView (): IndicatorTooltipView {\n return new CandleTooltipView(this)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Bounding from '../common/Bounding'\nimport { AxisStyle, Styles } from '../common/Options'\n\nimport { LineAttrs } from '../extension/figure/line'\nimport { TextAttrs } from '../extension/figure/text'\n\nimport Axis, { AxisTick } from '../component/Axis'\n\nimport View from './View'\n\nexport default abstract class AxisView extends View {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const bounding = widget.getBounding()\n const axis = pane.getAxisComponent()\n const styles: AxisStyle = this.getAxisStyles(pane.getChart().getStyles())\n if (styles.show) {\n if (styles.axisLine.show) {\n this.createFigure('line', this.createAxisLine(bounding, styles), styles.axisLine)?.draw(ctx)\n }\n const ticks = axis.getTicks()\n if (styles.tickLine.show) {\n const lines = this.createTickLines(ticks, bounding, styles)\n lines.forEach(line => {\n this.createFigure('line', line, styles.tickLine)?.draw(ctx)\n })\n }\n if (styles.tickText.show) {\n const texts = this.createTickTexts(ticks, bounding, styles)\n texts.forEach(text => {\n this.createFigure('text', text, styles.tickText)?.draw(ctx)\n })\n }\n }\n }\n\n protected abstract getAxisStyles (styles: Styles): AxisStyle\n\n protected abstract createAxisLine (bounding: Bounding, styles: AxisStyle): LineAttrs\n protected abstract createTickLines (ticks: AxisTick[], bounding: Bounding, styles: AxisStyle): LineAttrs[]\n protected abstract createTickTexts (tick: AxisTick[], bounding: Bounding, styles: AxisStyle): TextAttrs[]\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Bounding from '../common/Bounding'\nimport { AxisStyle, Styles } from '../common/Options'\n\nimport { LineAttrs } from '../extension/figure/line'\nimport { TextAttrs } from '../extension/figure/text'\n\nimport { AxisTick } from '../component/Axis'\nimport YAxis from '../component/YAxis'\n\nimport AxisView from './AxisView'\n\nexport default class YxisView extends AxisView {\n override getAxisStyles (styles: Styles): AxisStyle {\n return styles.yAxis\n }\n\n override createAxisLine (bounding: Bounding, styles: AxisStyle): LineAttrs {\n const yAxis = this.getWidget().getPane().getAxisComponent()\n const size = styles.axisLine.size\n let x: number\n if (yAxis.isFromZero()) {\n x = size / 2\n } else {\n x = bounding.width - size\n }\n return {\n coordinates: [\n { x, y: 0 },\n { x, y: bounding.height }\n ]\n }\n }\n\n override createTickLines (ticks: AxisTick[], bounding: Bounding, styles: AxisStyle): LineAttrs[] {\n const yAxis = this.getWidget().getPane().getAxisComponent()\n const axisLineStyles = styles.axisLine\n const tickLineStyles = styles.tickLine\n\n let startX = 0\n let endX = 0\n if (yAxis.isFromZero()) {\n startX = 0\n if (axisLineStyles.show) {\n startX += axisLineStyles.size\n }\n endX = startX + tickLineStyles.length\n } else {\n startX = bounding.width\n if (axisLineStyles.show) {\n startX -= axisLineStyles.size\n }\n endX = startX - tickLineStyles.length\n }\n return ticks.map(tick => ({\n coordinates: [\n { x: startX, y: tick.coord },\n { x: endX, y: tick.coord }\n ]\n }))\n }\n\n override createTickTexts (ticks: AxisTick[], bounding: Bounding, styles: AxisStyle): TextAttrs[] {\n const yAxis = this.getWidget().getPane().getAxisComponent()\n const axisLineStyles = styles.axisLine\n const tickLineStyles = styles.tickLine\n const tickTextStyles = styles.tickText\n\n let x = 0\n if (yAxis.isFromZero()) {\n x = tickTextStyles.marginStart\n if (axisLineStyles.show) {\n x += axisLineStyles.size\n }\n if (tickLineStyles.show) {\n x += tickLineStyles.length\n }\n } else {\n x = bounding.width - tickTextStyles.marginEnd\n if (axisLineStyles.show) {\n x -= axisLineStyles.size\n }\n if (tickLineStyles.show) {\n x -= tickLineStyles.length\n }\n }\n const textAlign = this.getWidget().getPane().getAxisComponent().isFromZero() ? 'left' : 'right'\n return ticks.map(tick => ({\n x,\n y: tick.coord,\n text: tick.text,\n align: textAlign,\n baseline: 'middle'\n }))\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { YAxisType } from '../common/Options'\n\nimport View from './View'\n\nimport YAxis from '../component/YAxis'\n\nimport { formatPrecision, formatThousands } from '../common/utils/format'\n\nexport default class CandleLastPriceLabelView extends View {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const bounding = widget.getBounding()\n const chartStore = pane.getChart().getChartStore()\n const priceMarkStyles = chartStore.getStyles().candle.priceMark\n const lastPriceMarkStyles = priceMarkStyles.last\n const lastPriceMarkTextStyles = lastPriceMarkStyles.text\n if (priceMarkStyles.show && lastPriceMarkStyles.show && lastPriceMarkTextStyles.show) {\n const precision = chartStore.getPrecision()\n const yAxis = pane.getAxisComponent() as YAxis\n const dataList = chartStore.getDataList()\n const visibleDataList = chartStore.getVisibleDataList()\n const data = dataList[dataList.length - 1]\n if (data !== undefined) {\n const { close, open } = data\n const priceY = yAxis.convertToNicePixel(close)\n let backgroundColor: string\n if (close > open) {\n backgroundColor = lastPriceMarkStyles.upColor\n } else if (close < open) {\n backgroundColor = lastPriceMarkStyles.downColor\n } else {\n backgroundColor = lastPriceMarkStyles.noChangeColor\n }\n let text: string\n if (yAxis.getType() === YAxisType.Percentage) {\n const fromData = visibleDataList[0].data\n const fromClose = fromData.close\n text = `${((close - fromClose) / fromClose * 100).toFixed(2)}%`\n } else {\n text = formatPrecision(close, precision.price)\n }\n text = formatThousands(text, chartStore.getThousandsSeparator())\n let x: number\n let textAlgin: CanvasTextAlign\n if (yAxis.isFromZero()) {\n x = 0\n textAlgin = 'left'\n } else {\n x = bounding.width\n textAlgin = 'right'\n }\n this.createFigure(\n 'rectText',\n {\n x,\n y: priceY,\n text,\n align: textAlgin,\n baseline: 'middle'\n },\n {\n ...lastPriceMarkTextStyles,\n backgroundColor\n }\n )?.draw(ctx)\n }\n }\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport YAxis from '../component/YAxis'\n\nimport { eachFigures, IndicatorFigure, IndicatorFigureStyle } from '../component/Indicator'\n\nimport View from './View'\n\nimport { formatPrecision, formatThousands } from '../common/utils/format'\nimport { isValid } from '../common/utils/typeChecks'\n\nexport default class IndicatorLastValueView extends View {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const bounding = widget.getBounding()\n const chartStore = pane.getChart().getChartStore()\n const customApi = chartStore.getCustomApi()\n const defaultStyles = chartStore.getStyles().indicator\n const lastValueMarkStyles = defaultStyles.lastValueMark\n const lastValueMarkTextStyles = lastValueMarkStyles.text\n if (lastValueMarkStyles.show) {\n const yAxis = pane.getAxisComponent()\n const dataList = chartStore.getDataList()\n const dataIndex = dataList.length - 1\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n const thousandsSeparator = chartStore.getThousandsSeparator()\n indicators.forEach(indicator => {\n const result = indicator.result\n const indicatorData = result[dataIndex]\n if (indicatorData !== undefined && indicator.visible) {\n const precision = indicator.precision\n eachFigures(dataList, indicator, dataIndex, defaultStyles, (figure: IndicatorFigure, figureStyles: Required) => {\n const value = indicatorData[figure.key]\n if (isValid(value)) {\n const y = yAxis.convertToNicePixel(value)\n let text = formatPrecision(value, precision)\n if (indicator.shouldFormatBigNumber) {\n text = customApi.formatBigNumber(text)\n }\n text = formatThousands(text, thousandsSeparator)\n let x: number\n let textAlign: CanvasTextAlign\n if (yAxis.isFromZero()) {\n x = 0\n textAlign = 'left'\n } else {\n x = bounding.width\n textAlign = 'right'\n }\n\n this.createFigure(\n 'rectText',\n {\n x,\n y,\n text,\n align: textAlign,\n baseline: 'middle'\n },\n {\n ...lastValueMarkTextStyles,\n backgroundColor: figureStyles.color\n }\n )?.draw(ctx)\n }\n })\n }\n })\n }\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport Coordinate from '../common/Coordinate'\nimport Bounding from '../common/Bounding'\nimport BarSpace from '../common/BarSpace'\nimport Precision from '../common/Precision'\nimport { OverlayStyle, CustomApi } from '../common/Options'\n\nimport { formatPrecision, formatThousands } from '../common/utils/format'\n\nimport Axis from '../component/Axis'\nimport XAxis from '../component/XAxis'\nimport YAxis from '../component/YAxis'\nimport Overlay, { OverlayFigure } from '../component/Overlay'\n\nimport { EventOverlayInfo } from '../store/OverlayStore'\n\nimport OverlayView from './OverlayView'\n\nexport default class OverlayYAxisView extends OverlayView {\n override coordinateToPointTimestampDataIndexFlag (): boolean {\n return false\n }\n\n override drawDefaultFigures (\n ctx: CanvasRenderingContext2D,\n overlay: Overlay,\n coordinates: Coordinate[],\n bounding: Bounding,\n precision: Precision,\n dateTimeFormat: Intl.DateTimeFormat,\n customApi: CustomApi,\n thousandsSeparator: string,\n defaultStyles: OverlayStyle,\n xAxis: Nullable,\n yAxis: Nullable,\n _hoverInstanceInfo: EventOverlayInfo,\n clickInstanceInfo: EventOverlayInfo\n ): void {\n this.drawFigures(\n ctx,\n overlay,\n this.getDefaultFigures(overlay, coordinates, bounding, precision, dateTimeFormat, customApi, thousandsSeparator, xAxis, yAxis, clickInstanceInfo),\n defaultStyles\n )\n }\n\n protected getDefaultFigures (\n overlay: Overlay,\n coordinates: Coordinate[],\n bounding: Bounding,\n precision: Precision,\n _dateTimeFormat: Intl.DateTimeFormat,\n _customApi: CustomApi,\n thousandsSeparator: string,\n _xAxis: Nullable,\n yAxis: Nullable,\n clickInstanceInfo: EventOverlayInfo\n ): OverlayFigure[] {\n const figures: OverlayFigure[] = []\n if (\n overlay.needDefaultYAxisFigure &&\n overlay.id === clickInstanceInfo.instance?.id &&\n clickInstanceInfo.paneId === this.getWidget().getPane().getId()\n ) {\n let topY = Number.MAX_SAFE_INTEGER\n let bottomY = Number.MIN_SAFE_INTEGER\n const isFromZero = yAxis?.isFromZero() ?? false\n let textAlign: CanvasTextAlign\n let x: number\n if (isFromZero) {\n textAlign = 'left'\n x = 0\n } else {\n textAlign = 'right'\n x = bounding.width\n }\n coordinates.forEach((coordinate, index) => {\n const point = overlay.points[index]\n if (point.value !== undefined) {\n topY = Math.min(topY, coordinate.y)\n bottomY = Math.max(bottomY, coordinate.y)\n const text = formatThousands(formatPrecision(point.value, precision.price), thousandsSeparator)\n figures.push({ type: 'rectText', attrs: { x, y: coordinate.y, text, align: textAlign, baseline: 'middle' }, ignoreEvent: true })\n }\n })\n if (coordinates.length > 1) {\n figures.unshift({ type: 'rect', attrs: { x: 0, y: topY, width: bounding.width, height: bottomY - topY }, ignoreEvent: true })\n }\n }\n return figures\n }\n\n override getFigures (\n overlay: Overlay,\n coordinates: Coordinate[],\n bounding: Bounding,\n barSpace: BarSpace,\n precision: Precision,\n thousandsSeparator: string,\n dateTimeFormat: Intl.DateTimeFormat,\n defaultStyles: OverlayStyle,\n xAxis: Nullable,\n yAxis: Nullable\n ): OverlayFigure | OverlayFigure[] {\n return overlay.createYAxisFigures?.({ overlay, coordinates, bounding, barSpace, precision, thousandsSeparator, dateTimeFormat, defaultStyles, xAxis, yAxis }) ?? []\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Bounding from '../common/Bounding'\nimport Crosshair from '../common/Crosshair'\nimport { CrosshairStyle, CrosshairDirectionStyle, YAxisType, StateRectTextStyle } from '../common/Options'\n\nimport Axis from '../component/Axis'\nimport YAxis from '../component/YAxis'\n\nimport { TextAttrs } from '../extension/figure/text'\n\nimport ChartStore from '../store/ChartStore'\n\nimport { formatPrecision, formatThousands } from '../common/utils/format'\nimport { createFont } from '../common/utils/canvas'\n\nimport View from './View'\n\nexport default class CrosshairHorizontalLabelView extends View {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const bounding = widget.getBounding()\n const chartStore = widget.getPane().getChart().getChartStore()\n const crosshair = chartStore.getCrosshairStore().get()\n const styles = chartStore.getStyles().crosshair\n if (crosshair.paneId !== undefined && this.compare(crosshair, pane.getId())) {\n if (styles.show) {\n const directionStyles = this.getDirectionStyles(styles)\n const textStyles = directionStyles.text\n if (directionStyles.show && textStyles.show) {\n const axis = pane.getAxisComponent()\n const text = this.getText(crosshair, chartStore, axis)\n ctx.font = createFont(textStyles.size, textStyles.weight, textStyles.family)\n this.createFigure(\n 'rectText',\n this.getTextAttrs(text, ctx.measureText(text).width, crosshair, bounding, axis, textStyles),\n textStyles\n )?.draw(ctx)\n }\n }\n }\n }\n\n protected compare (crosshair: Crosshair, paneId: string): boolean {\n return crosshair.paneId === paneId\n }\n\n protected getDirectionStyles (styels: CrosshairStyle): CrosshairDirectionStyle {\n return styels.horizontal\n }\n\n protected getText (crosshair: Crosshair, chartStore: ChartStore, axis: C): string {\n const yAxis = axis as unknown as YAxis\n const value = axis.convertFromPixel(crosshair.y as number)\n let text: string\n if (yAxis.getType() === YAxisType.Percentage) {\n const visibleDataList = chartStore.getVisibleDataList()\n const fromData = visibleDataList[0]?.data ?? {}\n text = `${((value - fromData.close) / fromData.close * 100).toFixed(2)}%`\n } else {\n const indicators = chartStore.getIndicatorStore().getInstances(crosshair.paneId as string)\n let precision = 0\n let shouldFormatBigNumber = false\n if (yAxis.isInCandle()) {\n precision = chartStore.getPrecision().price\n } else {\n indicators.forEach(indicator => {\n precision = Math.max(indicator.precision, precision)\n if (!shouldFormatBigNumber) {\n shouldFormatBigNumber = indicator.shouldFormatBigNumber\n }\n })\n }\n text = formatPrecision(value, precision)\n if (shouldFormatBigNumber) {\n text = chartStore.getCustomApi().formatBigNumber(text)\n }\n }\n return formatThousands(text, chartStore.getThousandsSeparator())\n }\n\n protected getTextAttrs (text: string, _textWidth: number, crosshair: Crosshair, bounding: Bounding, axis: C, _styles: StateRectTextStyle): TextAttrs {\n const yAxis = axis as unknown as YAxis\n let x: number\n let textAlign: CanvasTextAlign\n if (yAxis.isFromZero()) {\n x = 0\n textAlign = 'left'\n } else {\n x = bounding.width\n textAlign = 'right'\n }\n\n return { x, y: crosshair.y as number, text, align: textAlign, baseline: 'middle' }\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Pane from '../pane/Pane'\n\nimport { WidgetNameConstants } from './Widget'\nimport DrawWidget from './DrawWidget'\n\nimport YAxis from '../component/YAxis'\n\nimport YAxisView from '../view/YAxisView'\nimport CandleLastPriceLabelView from '../view/CandleLastPriceLabelView'\nimport IndicatorLastValueView from '../view/IndicatorLastValueView'\nimport OverlayYAxisView from '../view/OverlayYAxisView'\nimport CrosshairHorizontalLabelView from '../view/CrosshairHorizontalLabelView'\n\nexport default class YAxisWidget extends DrawWidget {\n private readonly _yAxisView = new YAxisView(this)\n private readonly _candleLastPriceLabelView = new CandleLastPriceLabelView(this)\n private readonly _indicatorLastValueView = new IndicatorLastValueView(this)\n private readonly _overlayYAxisView = new OverlayYAxisView(this)\n private readonly _crosshairHorizontalLabelView = new CrosshairHorizontalLabelView(this)\n\n constructor (rootContainer: HTMLElement, pane: Pane) {\n super(rootContainer, pane)\n this.getContainer().style.cursor = 'ns-resize'\n this.addChild(this._overlayYAxisView)\n }\n\n override getName (): string {\n return WidgetNameConstants.YAXIS\n }\n\n override updateMain (ctx: CanvasRenderingContext2D): void {\n this._yAxisView.draw(ctx)\n if (this.getPane().getAxisComponent().isInCandle()) {\n this._candleLastPriceLabelView.draw(ctx)\n }\n this._indicatorLastValueView.draw(ctx)\n }\n\n override updateOverlay (ctx: CanvasRenderingContext2D): void {\n this._overlayYAxisView.draw(ctx)\n this._crosshairHorizontalLabelView.draw(ctx)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Pane from '../pane/Pane'\n\nimport { getPrecision, nice, round } from '../common/utils/number'\n\nexport interface AxisTick {\n coord: number\n value: number | string\n text: string\n}\n\nexport interface AxisExtremum {\n min: number\n max: number\n range: number\n realMin: number\n realMax: number\n realRange: number\n}\n\nexport interface Axis {\n convertToPixel: (value: number) => number\n convertFromPixel: (px: number) => number\n}\n\nexport default abstract class AxisImp {\n private readonly _parent: Pane\n\n private _extremum: AxisExtremum = { min: 0, max: 0, range: 0, realMin: 0, realMax: 0, realRange: 0 }\n private _prevExtremum: AxisExtremum = { min: 0, max: 0, range: 0, realMin: 0, realMax: 0, realRange: 0 }\n private _ticks: AxisTick[] = []\n\n private _autoCalcTickFlag = true\n\n constructor (parent: Pane) {\n this._parent = parent\n }\n\n getParent (): Pane { return this._parent }\n\n buildTicks (force: boolean): boolean {\n if (this._autoCalcTickFlag) {\n this._extremum = this.calcExtremum()\n }\n if (this._prevExtremum.min !== this._extremum.min || this._prevExtremum.max !== this._extremum.max || force) {\n this._prevExtremum = this._extremum\n this._ticks = this.optimalTicks(this._calcTicks())\n return true\n }\n return false\n }\n\n getTicks (): AxisTick[] {\n return this._ticks\n }\n\n getScrollZoomEnabled (): boolean {\n return this.getParent().getOptions().axisOptions.scrollZoomEnabled ?? true\n }\n\n setExtremum (extremum: AxisExtremum): void {\n this._autoCalcTickFlag = false\n this._extremum = extremum\n }\n\n getExtremum (): AxisExtremum { return this._extremum }\n\n setAutoCalcTickFlag (flag: boolean): void {\n this._autoCalcTickFlag = flag\n }\n\n getAutoCalcTickFlag (): boolean { return this._autoCalcTickFlag }\n\n private _calcTicks (): AxisTick[] {\n const { realMin, realMax, realRange } = this._extremum\n const ticks: AxisTick[] = []\n\n if (realRange >= 0) {\n const [interval, precision] = this._calcTickInterval(realRange)\n const first = round(Math.ceil(realMin / interval) * interval, precision)\n const last = round(Math.floor(realMax / interval) * interval, precision)\n let n = 0\n let f = first\n\n if (interval !== 0) {\n while (f <= last) {\n const v = f.toFixed(precision)\n ticks[n] = { text: v, coord: 0, value: v }\n ++n\n f += interval\n }\n }\n }\n return ticks\n }\n\n private _calcTickInterval (range: number): number[] {\n const interval = nice(range / 8.0)\n const precision = getPrecision(interval)\n return [interval, precision]\n }\n\n protected abstract calcExtremum (): AxisExtremum\n\n protected abstract optimalTicks (ticks: AxisTick[]): AxisTick[]\n\n abstract convertToPixel (value: number): number\n abstract convertFromPixel (px: number): number\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport AxisImp, { Axis, AxisExtremum, AxisTick } from './Axis'\n\nimport { IndicatorFigure } from './Indicator'\n\nimport { YAxisType, YAxisPosition, CandleType } from '../common/Options'\n\nimport { isValid } from '../common/utils/typeChecks'\nimport { index10, log10 } from '../common/utils/number'\nimport { calcTextWidth } from '../common/utils/canvas'\nimport { formatPrecision, formatThousands } from '../common/utils/format'\n\ninterface FiguresResult {\n figures: IndicatorFigure[]\n result: any[]\n}\n\nexport interface YAxis extends Axis {\n isFromZero: () => boolean\n}\n\nexport default class YAxisImp extends AxisImp implements YAxis {\n protected calcExtremum (): AxisExtremum {\n const parent = this.getParent()\n const chart = parent.getChart()\n const chartStore = chart.getChartStore()\n let min = Number.MAX_SAFE_INTEGER\n let max = Number.MIN_SAFE_INTEGER\n const figuresResultList: FiguresResult[] = []\n let shouldOhlc = false\n let specifyMin = Number.MAX_SAFE_INTEGER\n let specifyMax = Number.MIN_SAFE_INTEGER\n let indicatorPrecision = Number.MAX_SAFE_INTEGER\n const indicators = chartStore.getIndicatorStore().getInstances(parent.getId())\n indicators.forEach(indicator => {\n if (!shouldOhlc) {\n shouldOhlc = indicator.shouldOhlc ?? false\n }\n indicatorPrecision = Math.min(indicatorPrecision, indicator.precision)\n if (indicator.minValue !== null) {\n specifyMin = Math.min(specifyMin, indicator.minValue)\n }\n if (indicator.maxValue !== null) {\n specifyMax = Math.max(specifyMax, indicator.maxValue)\n }\n figuresResultList.push({\n figures: indicator.figures ?? [],\n result: indicator.result ?? []\n })\n })\n\n let precision = 4\n const inCandle = this.isInCandle()\n if (inCandle) {\n const { price: pricePrecision } = chartStore.getPrecision()\n if (indicatorPrecision !== Number.MAX_SAFE_INTEGER) {\n precision = Math.min(indicatorPrecision, pricePrecision)\n } else {\n precision = pricePrecision\n }\n } else {\n if (indicatorPrecision !== Number.MAX_SAFE_INTEGER) {\n precision = indicatorPrecision\n }\n }\n const visibleDataList = chartStore.getVisibleDataList()\n const candleStyles = chart.getStyles().candle\n const isArea = candleStyles.type === CandleType.Area\n const areaValueKey = candleStyles.area.value\n const shouldCompareHighLow = (inCandle && !isArea) || (!inCandle && shouldOhlc)\n visibleDataList.forEach(({ dataIndex, data }) => {\n if (shouldCompareHighLow) {\n min = Math.min(min, data.low)\n max = Math.max(max, data.high)\n }\n if (inCandle && isArea) {\n const value = data[areaValueKey]\n min = Math.min(min, value)\n max = Math.max(max, value)\n }\n figuresResultList.forEach(({ figures, result }) => {\n const indicatorData = result[dataIndex] ?? {}\n figures.forEach(figure => {\n const value = indicatorData[figure.key]\n if (isValid(value)) {\n min = Math.min(min, value)\n max = Math.max(max, value)\n }\n })\n })\n })\n if (min !== Number.MAX_SAFE_INTEGER && max !== Number.MIN_SAFE_INTEGER) {\n min = Math.min(specifyMin, min)\n max = Math.max(specifyMax, max)\n } else {\n min = 0\n max = 10\n }\n\n const type = this.getType()\n let dif: number\n switch (type) {\n case YAxisType.Percentage: {\n const fromData = visibleDataList[0]?.data\n if (fromData?.close !== undefined) {\n min = (min - fromData.close) / fromData.close * 100\n max = (max - fromData.close) / fromData.close * 100\n }\n dif = Math.pow(10, -2)\n break\n }\n case YAxisType.Log: {\n min = log10(min)\n max = log10(max)\n dif = 0.05 * index10(-precision)\n break\n }\n default: {\n dif = index10(-precision)\n }\n }\n if (\n min === max ||\n Math.abs(min - max) < dif\n ) {\n const minCheck = specifyMin === min\n const maxCheck = specifyMax === max\n min = minCheck ? min : (maxCheck ? min - 8 * dif : min - 4 * dif)\n max = maxCheck ? max : (minCheck ? max + 8 * dif : max + 4 * dif)\n }\n\n const height = this.getParent().getYAxisWidget()?.getBounding().height ?? 0\n const { gap: paneGap } = parent.getOptions()\n let topRate = paneGap?.top ?? 0.2\n if (topRate >= 1) {\n topRate = topRate / height\n }\n let bottomRate = paneGap?.bottom ?? 0.1\n if (bottomRate >= 1) {\n bottomRate = bottomRate / height\n }\n let range = Math.abs(max - min)\n // 保证每次图形绘制上下都留间隙\n min = min - range * bottomRate\n max = max + range * topRate\n range = Math.abs(max - min)\n let realMin: number\n let realMax: number\n let realRange: number\n if (type === YAxisType.Log) {\n realMin = index10(min)\n realMax = index10(max)\n realRange = Math.abs(realMax - realMin)\n } else {\n realMin = min\n realMax = max\n realRange = range\n }\n return {\n min, max, range, realMin, realMax, realRange\n }\n }\n\n /**\n * 内部值转换成坐标\n * @param value\n * @return {number}\n * @private\n */\n _innerConvertToPixel (value: number): number {\n const height = this.getParent().getYAxisWidget()?.getBounding().height ?? 0\n const { min, range } = this.getExtremum()\n const rate = (value - min) / range\n return this.isReverse() ? Math.round(rate * height) : Math.round((1 - rate) * height)\n }\n\n /**\n * 是否是蜡烛图轴\n * @return {boolean}\n */\n isInCandle (): boolean {\n return this.getParent().getName() === 'candle'\n }\n\n /**\n * y轴类型\n * @return {YAxisType}\n */\n getType (): YAxisType {\n if (this.isInCandle()) {\n return this.getParent().getChart().getStyles().yAxis.type\n }\n return YAxisType.Normal\n }\n\n getPosition (): string {\n return this.getParent().getChart().getStyles().yAxis.position\n }\n\n /**\n * 是否反转\n * @return {boolean}\n */\n isReverse (): boolean {\n if (this.isInCandle()) {\n return this.getParent().getChart().getStyles().yAxis.reverse\n }\n return false\n }\n\n /**\n * 是否从y轴0开始\n * @return {boolean}\n */\n isFromZero (): boolean {\n const yAxisStyles = this.getParent().getChart().getStyles().yAxis\n const inside = yAxisStyles.inside\n return (\n (yAxisStyles.position === YAxisPosition.Left && inside) ||\n (yAxisStyles.position === YAxisPosition.Right && !inside)\n )\n }\n\n protected optimalTicks (ticks: AxisTick[]): AxisTick[] {\n const pane = this.getParent()\n const height = pane.getYAxisWidget()?.getBounding().height ?? 0\n const chartStore = pane.getChart().getChartStore()\n const customApi = chartStore.getCustomApi()\n const optimalTicks: AxisTick[] = []\n const type = this.getType()\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n const thousandsSeparator = chartStore.getThousandsSeparator()\n let precision = 0\n let shouldFormatBigNumber = false\n if (this.isInCandle()) {\n precision = chartStore.getPrecision().price\n } else {\n indicators.forEach(tech => {\n precision = Math.max(precision, tech.precision)\n if (!shouldFormatBigNumber) {\n shouldFormatBigNumber = tech.shouldFormatBigNumber\n }\n })\n }\n const textHeight = chartStore.getStyles().xAxis.tickText.size\n let validY: number\n ticks.forEach(({ value }) => {\n let v: string\n let y = this._innerConvertToPixel(+value)\n switch (type) {\n case YAxisType.Percentage: {\n v = `${formatPrecision(value, 2)}%`\n break\n }\n case YAxisType.Log: {\n y = this._innerConvertToPixel(log10(+value))\n v = formatPrecision(value, precision)\n break\n }\n default: {\n v = formatPrecision(value, precision)\n if (shouldFormatBigNumber) {\n v = customApi.formatBigNumber(value)\n }\n break\n }\n }\n v = formatThousands(v, thousandsSeparator)\n if (y > textHeight && y < height - textHeight && ((validY !== undefined && (Math.abs(validY - y) > textHeight * 2)) || validY === undefined)) {\n optimalTicks.push({ text: v, coord: y, value })\n validY = y\n }\n })\n return optimalTicks\n }\n\n getAutoSize (): number {\n const pane = this.getParent()\n const chart = pane.getChart()\n const styles = chart.getStyles()\n const yAxisStyles = styles.yAxis\n const width = yAxisStyles.size\n if (width !== 'auto') {\n return width\n }\n const chartStore = chart.getChartStore()\n const customApi = chartStore.getCustomApi()\n let yAxisWidth = 0\n if (yAxisStyles.show) {\n if (yAxisStyles.axisLine.show) {\n yAxisWidth += yAxisStyles.axisLine.size\n }\n if (yAxisStyles.tickLine.show) {\n yAxisWidth += yAxisStyles.tickLine.length\n }\n if (yAxisStyles.tickText.show) {\n let textWidth = 0\n this.getTicks().forEach(tick => {\n textWidth = Math.max(textWidth, calcTextWidth(tick.text, yAxisStyles.tickText.size, yAxisStyles.tickText.weight, yAxisStyles.tickText.family))\n })\n yAxisWidth += (yAxisStyles.tickText.marginStart + yAxisStyles.tickText.marginEnd + textWidth)\n }\n }\n const crosshairStyles = styles.crosshair\n let crosshairVerticalTextWidth = 0\n if (\n crosshairStyles.show &&\n crosshairStyles.horizontal.show &&\n crosshairStyles.horizontal.text.show\n ) {\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n let techPrecision = 0\n let shouldFormatBigNumber = false\n indicators.forEach(tech => {\n techPrecision = Math.max(tech.precision, techPrecision)\n if (!shouldFormatBigNumber) {\n shouldFormatBigNumber = tech.shouldFormatBigNumber\n }\n })\n let precision = 2\n if (this.getType() !== YAxisType.Percentage) {\n if (this.isInCandle()) {\n const { price: pricePrecision } = chartStore.getPrecision()\n const lastValueMarkStyles = styles.indicator.lastValueMark\n if (lastValueMarkStyles.show && lastValueMarkStyles.text.show) {\n precision = Math.max(techPrecision, pricePrecision)\n } else {\n precision = pricePrecision\n }\n } else {\n precision = techPrecision\n }\n }\n let valueText = formatPrecision(this.getExtremum().max, precision)\n if (shouldFormatBigNumber) {\n valueText = customApi.formatBigNumber(valueText)\n }\n crosshairVerticalTextWidth += (\n crosshairStyles.horizontal.text.paddingLeft +\n crosshairStyles.horizontal.text.paddingRight +\n crosshairStyles.horizontal.text.borderSize * 2 +\n calcTextWidth(\n valueText,\n crosshairStyles.horizontal.text.size,\n crosshairStyles.horizontal.text.weight,\n crosshairStyles.horizontal.text.family\n )\n )\n }\n return Math.max(yAxisWidth, crosshairVerticalTextWidth)\n }\n\n convertFromPixel (pixel: number): number {\n const height = this.getParent().getYAxisWidget()?.getBounding().height ?? 0\n const { min, range } = this.getExtremum()\n const rate = this.isReverse() ? pixel / height : 1 - pixel / height\n const value = rate * range + min\n switch (this.getType()) {\n case YAxisType.Percentage: {\n const chartStore = this.getParent().getChart().getChartStore()\n const visibleDataList = chartStore.getVisibleDataList()\n const fromData = visibleDataList[0]?.data\n if (fromData?.close !== undefined) {\n return fromData.close * value / 100 + fromData.close\n }\n return 0\n }\n case YAxisType.Log: {\n return index10(value)\n }\n default: {\n return value\n }\n }\n }\n\n convertToRealValue (value: number): number {\n let v = value\n if (this.getType() === YAxisType.Log) {\n v = index10(value)\n }\n return v\n }\n\n convertToPixel (value: number): number {\n let v = value\n switch (this.getType()) {\n case YAxisType.Percentage: {\n const chartStore = this.getParent().getChart().getChartStore()\n const visibleDataList = chartStore.getVisibleDataList()\n const fromData = visibleDataList[0]?.data\n if (fromData?.close !== undefined) {\n v = (value - fromData.close) / fromData.close * 100\n }\n break\n }\n case YAxisType.Log: {\n v = log10(value)\n break\n }\n default: {\n v = value\n }\n }\n return this._innerConvertToPixel(v)\n }\n\n convertToNicePixel (value: number): number {\n const height = this.getParent().getYAxisWidget()?.getBounding().height ?? 0\n const pixel = this.convertToPixel(value)\n return Math.round(Math.max(height * 0.05, Math.min(pixel, height * 0.98)))\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\n\nimport SeparatorWidget from '../widget/SeparatorWidget'\nimport DrawWidget from '../widget/DrawWidget'\nimport IndicatorWidget from '../widget/IndicatorWidget'\nimport YAxisWidget from '../widget/YAxisWidget'\n\nimport YAxis from '../component/YAxis'\n\nimport Pane from './Pane'\n\nexport default class IndicatorPane extends Pane {\n override getName (): string {\n return 'indicator'\n }\n\n override createAxisComponent (): YAxis {\n return new YAxis(this)\n }\n\n override createMainWidget (container: HTMLElement): DrawWidget {\n return new IndicatorWidget(container, this)\n }\n\n override createSeparatorWidget (container: HTMLElement): Nullable {\n return new SeparatorWidget(container, this)\n }\n\n override creatYAxisWidget (container: HTMLElement): Nullable {\n return new YAxisWidget(container, this)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\n\nimport DrawWidget from '../widget/DrawWidget'\nimport CandleWidget from '../widget/CandleWidget'\nimport SeparatorWidget from '../widget/SeparatorWidget'\n\nimport IndicatorPane from './IndicatorPane'\nimport YAxis from '../component/YAxis'\n\nexport default class CandlePane extends IndicatorPane {\n override getName (): string {\n return 'candle'\n }\n\n override createMainWidget (container: HTMLElement): DrawWidget {\n return new CandleWidget(container, this)\n }\n\n override createSeparatorWidget (): Nullable {\n return null\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Bounding from '../common/Bounding'\nimport { AxisStyle, Styles } from '../common/Options'\n\nimport { LineAttrs } from '../extension/figure/line'\nimport { TextAttrs } from '../extension/figure/text'\n\nimport { AxisTick } from '../component/Axis'\nimport XAxis from '../component/XAxis'\n\nimport AxisView from './AxisView'\n\nexport default class XAxisView extends AxisView {\n override getAxisStyles (styles: Styles): AxisStyle {\n return styles.xAxis\n }\n\n override createAxisLine (bounding: Bounding, styles: AxisStyle): LineAttrs {\n const correction = styles.axisLine.size / 2\n return {\n coordinates: [\n { x: 0, y: correction },\n { x: bounding.width, y: correction }\n ]\n }\n }\n\n override createTickLines (ticks: AxisTick[], _bounding: Bounding, styles: AxisStyle): LineAttrs[] {\n const tickLineStyles = styles.tickLine\n const axisLineSize = styles.axisLine.size\n return ticks.map(tick => ({\n coordinates: [\n { x: tick.coord, y: 0 },\n { x: tick.coord, y: axisLineSize + tickLineStyles.length }\n ]\n }))\n }\n\n override createTickTexts (ticks: AxisTick[], _bounding: Bounding, styles: AxisStyle): TextAttrs[] {\n const tickTickStyles = styles.tickText\n const axisLineSize = styles.axisLine.size\n const tickLineLength = styles.tickLine.length\n return ticks.map(tick => ({\n x: tick.coord,\n y: axisLineSize + tickLineLength + tickTickStyles.marginStart,\n text: tick.text,\n align: 'center',\n baseline: 'top'\n }))\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport Coordinate from '../common/Coordinate'\nimport Bounding from '../common/Bounding'\nimport BarSpace from '../common/BarSpace'\nimport Precision from '../common/Precision'\nimport { OverlayStyle, CustomApi, FormatDateType } from '../common/Options'\n\nimport XAxis from '../component/XAxis'\nimport YAxis from '../component/YAxis'\nimport Overlay, { OverlayFigure } from '../component/Overlay'\n\nimport OverlayStore, { EventOverlayInfo, ProgressOverlayInfo } from '../store/OverlayStore'\n\nimport OverlayYAxisView from './OverlayYAxisView'\n\nexport default class OverlayXAxisView extends OverlayYAxisView {\n override coordinateToPointTimestampDataIndexFlag (): boolean {\n return true\n }\n\n override coordinateToPointValueFlag (): boolean {\n return false\n }\n\n override getCompleteOverlays (overlayStore: OverlayStore): Overlay[] {\n return overlayStore.getInstances()\n }\n\n override getProgressOverlay (info: ProgressOverlayInfo): Overlay {\n return info.instance\n }\n\n override getDefaultFigures (\n overlay: Overlay,\n coordinates: Coordinate[],\n bounding: Bounding,\n _precision: Precision,\n dateTimeFormat: Intl.DateTimeFormat,\n customApi: CustomApi,\n _thousandsSeparator: string,\n _xAxis: Nullable,\n _yAxis: Nullable,\n clickInstanceInfo: EventOverlayInfo\n ): OverlayFigure[] {\n const figures: OverlayFigure[] = []\n if (overlay.needDefaultXAxisFigure && overlay.id === clickInstanceInfo.instance?.id) {\n let leftX = Number.MAX_SAFE_INTEGER\n let rightX = Number.MIN_SAFE_INTEGER\n coordinates.forEach((coordinate, index) => {\n leftX = Math.min(leftX, coordinate.x)\n rightX = Math.max(rightX, coordinate.x)\n const point = overlay.points[index]\n if (point.timestamp !== undefined) {\n const text = customApi.formatDate(dateTimeFormat, point.timestamp, 'YYYY-MM-DD HH:mm', FormatDateType.Crosshair)\n figures.push({ type: 'rectText', attrs: { x: coordinate.x, y: 0, text, align: 'center' }, ignoreEvent: true })\n }\n })\n if (coordinates.length > 1) {\n figures.unshift({ type: 'rect', attrs: { x: leftX, y: 0, width: rightX - leftX, height: bounding.height }, ignoreEvent: true })\n }\n }\n return figures\n }\n\n override getFigures (\n overlay: Overlay,\n coordinates: Coordinate[],\n bounding: Bounding,\n barSpace: BarSpace,\n precision: Precision,\n thousandsSeparator: string,\n dateTimeFormat: Intl.DateTimeFormat,\n defaultStyles: OverlayStyle,\n xAxis: Nullable,\n yAxis: Nullable\n ): OverlayFigure | OverlayFigure[] {\n return overlay.createXAxisFigures?.({ overlay, coordinates, bounding, barSpace, precision, thousandsSeparator, dateTimeFormat, defaultStyles, xAxis, yAxis }) ?? []\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Bounding from '../common/Bounding'\nimport Crosshair from '../common/Crosshair'\nimport { CrosshairStyle, CrosshairDirectionStyle, StateRectTextStyle, FormatDateType } from '../common/Options'\n\nimport XAxis from '../component/XAxis'\n\nimport ChartStore from '../store/ChartStore'\n\nimport CrosshairHorizontalLabelView from './CrosshairHorizontalLabelView'\nimport { TextAttrs } from '../extension/figure/text'\n\nexport default class CrosshairVerticalLabelView extends CrosshairHorizontalLabelView {\n override compare (crosshair: Crosshair): boolean {\n return crosshair.kLineData !== undefined && crosshair.dataIndex === crosshair.realDataIndex\n }\n\n override getDirectionStyles (styles: CrosshairStyle): CrosshairDirectionStyle {\n return styles.vertical\n }\n\n override getText (crosshair: Crosshair, chartStore: ChartStore): string {\n const timestamp = crosshair.kLineData?.timestamp as number\n return chartStore.getCustomApi().formatDate(chartStore.getTimeScaleStore().getDateTimeFormat(), timestamp, 'YYYY-MM-DD HH:mm', FormatDateType.Crosshair)\n }\n\n override getTextAttrs (text: string, textWidth: number, crosshair: Crosshair, bounding: Bounding, _axis: XAxis, styles: StateRectTextStyle): TextAttrs {\n const x = crosshair.realX as number\n let optimalX: number\n if (x - textWidth / 2 - styles.paddingLeft < 0) {\n optimalX = styles.paddingLeft + textWidth / 2\n } else if (x + textWidth / 2 + styles.paddingRight > bounding.width) {\n optimalX = bounding.width - styles.paddingRight - textWidth / 2\n } else {\n optimalX = x\n }\n return { x: optimalX, y: 0, text, align: 'center', baseline: 'top' }\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Pane from '../pane/Pane'\n\nimport { WidgetNameConstants } from './Widget'\nimport DrawWidget from './DrawWidget'\n\nimport XAxis from '../component/XAxis'\n\nimport XAxisView from '../view/XAxisView'\nimport OverlayXAxisView from '../view/OverlayXAxisView'\nimport CrosshairVerticalLabelView from '../view/CrosshairVerticalLabelView'\n\nexport default class XAxisWidget extends DrawWidget {\n private readonly _xAxisView = new XAxisView(this)\n private readonly _overlayXAxisView = new OverlayXAxisView(this)\n private readonly _crosshairVerticalLabelView = new CrosshairVerticalLabelView(this)\n\n constructor (rootContainer: HTMLElement, pane: Pane) {\n super(rootContainer, pane)\n this.getContainer().style.cursor = 'ew-resize'\n this.addChild(this._overlayXAxisView)\n }\n\n override getName (): string {\n return WidgetNameConstants.XAXIS\n }\n\n override updateMain (ctx: CanvasRenderingContext2D): void {\n this._xAxisView.draw(ctx)\n }\n\n override updateOverlay (ctx: CanvasRenderingContext2D): void {\n this._overlayXAxisView.draw(ctx)\n this._crosshairVerticalLabelView.draw(ctx)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from '../common/Nullable'\nimport { FormatDate, FormatDateType } from '../common/Options'\n\nimport AxisImp, { Axis, AxisExtremum, AxisTick } from './Axis'\n\nimport { calcTextWidth } from '../common/utils/canvas'\n\nexport type XAxis = Axis\n\nexport default class XAxisImp extends AxisImp {\n protected calcExtremum (): AxisExtremum {\n const chartStore = this.getParent().getChart().getChartStore()\n const { from, to } = chartStore.getTimeScaleStore().getVisibleRange()\n const min = from\n const max = to - 1\n const range = to - from\n return {\n min, max, range, realMin: min, realMax: max, realRange: range\n }\n }\n\n protected optimalTicks (ticks: AxisTick[]): AxisTick[] {\n const chart = this.getParent().getChart()\n const chartStore = chart.getChartStore()\n const formatDate = chartStore.getCustomApi().formatDate\n const optimalTicks: AxisTick[] = []\n const tickLength = ticks.length\n const dataList = chartStore.getDataList()\n if (tickLength > 0) {\n const dateTimeFormat = chartStore.getTimeScaleStore().getDateTimeFormat()\n const tickTextStyles = chart.getStyles().xAxis.tickText\n const defaultLabelWidth = calcTextWidth('00-00 00:00', tickTextStyles.size, tickTextStyles.weight, tickTextStyles.family)\n const pos = parseInt(ticks[0].value as string, 10)\n const x = this.convertToPixel(pos)\n let tickCountDif = 1\n if (tickLength > 1) {\n const nextPos = parseInt(ticks[1].value as string, 10)\n const nextX = this.convertToPixel(nextPos)\n const xDif = Math.abs(nextX - x)\n if (xDif < defaultLabelWidth) {\n tickCountDif = Math.ceil(defaultLabelWidth / xDif)\n }\n }\n for (let i = 0; i < tickLength; i += tickCountDif) {\n const pos = parseInt(ticks[i].value as string, 10)\n const kLineData = dataList[pos]\n const timestamp = kLineData.timestamp\n let text = formatDate(dateTimeFormat, timestamp, 'HH:mm', FormatDateType.XAxis)\n if (i !== 0) {\n const prevPos = parseInt(ticks[i - tickCountDif].value as string, 10)\n const prevKLineData = dataList[prevPos]\n const prevTimestamp = prevKLineData.timestamp\n text = this._optimalTickLabel(formatDate, dateTimeFormat, timestamp, prevTimestamp) ?? text\n }\n const x = this.convertToPixel(pos)\n optimalTicks.push({ text, coord: x, value: timestamp })\n }\n const optimalTickLength = optimalTicks.length\n if (optimalTickLength === 1) {\n optimalTicks[0].text = formatDate(dateTimeFormat, optimalTicks[0].value as number, 'YYYY-MM-DD HH:mm', FormatDateType.XAxis)\n } else {\n const firstTimestamp = optimalTicks[0].value as number\n const secondTimestamp = optimalTicks[1].value as number\n if (optimalTicks[2] !== undefined) {\n const thirdText = optimalTicks[2].text\n if (/^[0-9]{2}-[0-9]{2}$/.test(thirdText)) {\n optimalTicks[0].text = formatDate(dateTimeFormat, firstTimestamp, 'MM-DD', FormatDateType.XAxis)\n } else if (/^[0-9]{4}-[0-9]{2}$/.test(thirdText)) {\n optimalTicks[0].text = formatDate(dateTimeFormat, firstTimestamp, 'YYYY-MM', FormatDateType.XAxis)\n } else if (/^[0-9]{4}$/.test(thirdText)) {\n optimalTicks[0].text = formatDate(dateTimeFormat, firstTimestamp, 'YYYY', FormatDateType.XAxis)\n }\n } else {\n optimalTicks[0].text = this._optimalTickLabel(formatDate, dateTimeFormat, firstTimestamp, secondTimestamp) ?? optimalTicks[0].text\n }\n }\n }\n return optimalTicks\n }\n\n private _optimalTickLabel (formatDate: FormatDate, dateTimeFormat: Intl.DateTimeFormat, timestamp: number, comparedTimestamp: number): Nullable {\n const year = formatDate(dateTimeFormat, timestamp, 'YYYY', FormatDateType.XAxis)\n const month = formatDate(dateTimeFormat, timestamp, 'YYYY-MM', FormatDateType.XAxis)\n const day = formatDate(dateTimeFormat, timestamp, 'MM-DD', FormatDateType.XAxis)\n if (year !== formatDate(dateTimeFormat, comparedTimestamp, 'YYYY', FormatDateType.XAxis)) {\n return year\n } else if (month !== formatDate(dateTimeFormat, comparedTimestamp, 'YYYY-MM', FormatDateType.XAxis)) {\n return month\n } else if (day !== formatDate(dateTimeFormat, comparedTimestamp, 'MM-DD', FormatDateType.XAxis)) {\n return day\n }\n return null\n }\n\n getAutoSize (): number {\n const styles = this.getParent().getChart().getStyles()\n const xAxisStyles = styles.xAxis\n const height = xAxisStyles.size\n if (height !== 'auto') {\n return height\n }\n const crosshairStyles = styles.crosshair\n let xAxisHeight = 0\n if (xAxisStyles.show) {\n if (xAxisStyles.axisLine.show) {\n xAxisHeight += xAxisStyles.axisLine.size\n }\n if (xAxisStyles.tickLine.show) {\n xAxisHeight += xAxisStyles.tickLine.length\n }\n if (xAxisStyles.tickText.show) {\n xAxisHeight += (xAxisStyles.tickText.marginStart + xAxisStyles.tickText.marginEnd + xAxisStyles.tickText.size)\n }\n }\n let crosshairVerticalTextHeight = 0\n if (\n crosshairStyles.show &&\n crosshairStyles.vertical.show &&\n crosshairStyles.vertical.text.show\n ) {\n crosshairVerticalTextHeight += (\n crosshairStyles.vertical.text.paddingTop +\n crosshairStyles.vertical.text.paddingBottom +\n crosshairStyles.vertical.text.borderSize * 2 +\n crosshairStyles.vertical.text.size\n )\n }\n return Math.max(xAxisHeight, crosshairVerticalTextHeight)\n }\n\n convertTimestampFromPixel (pixel: number): Nullable {\n const timeScaleStore = this.getParent().getChart().getChartStore().getTimeScaleStore()\n const dataIndex = timeScaleStore.coordinateToDataIndex(pixel)\n return timeScaleStore.dataIndexToTimestamp(dataIndex)\n }\n\n convertTimestampToPixel (timestamp: number): number {\n const timeScaleStore = this.getParent().getChart().getChartStore().getTimeScaleStore()\n const dataIndex = timeScaleStore.timestampToDataIndex(timestamp)\n return timeScaleStore.dataIndexToCoordinate(dataIndex)\n }\n\n convertFromPixel (pixel: number): number {\n return this.getParent().getChart().getChartStore().getTimeScaleStore().coordinateToDataIndex(pixel)\n }\n\n convertToPixel (value: number): number {\n return this.getParent().getChart().getChartStore().getTimeScaleStore().dataIndexToCoordinate(value)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport DrawWidget from '../widget/DrawWidget'\nimport XAxisWidget from '../widget/XAxisWidget'\n\nimport XAxis from '../component/XAxis'\n\nimport Pane from './Pane'\n\nexport default class XAxisPane extends Pane {\n override getName (): string {\n return 'xAxis'\n }\n\n override createAxisComponent (): XAxis {\n return new XAxis(this)\n }\n\n override createMainWidget (container: HTMLElement): DrawWidget {\n return new XAxisWidget(container, this)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function isFF (): boolean {\n if (typeof window === 'undefined') {\n return false\n }\n return (window.navigator.userAgent.toLowerCase().indexOf('firefox') ?? -1) > -1\n}\n\nexport function isIOS (): boolean {\n if (typeof window === 'undefined') {\n return false\n }\n return /iPhone|iPad|iPod/.test(window.navigator.platform)\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * This file uses most of the logic of lightweight-charts/mouse-event-handler.ts(https://github.com/tradingview/lightweight-charts) for reference.\n * Makes some modifications to add some events.\n * The use of the source code of this file is also subject to the terms\n * and consitions of the license of \"lightweight-charts\" (Apache License V2, see\n * ).\n */\n\nimport Coordinate from './Coordinate'\n\nimport Nullable from './Nullable'\n\nimport { isFF, isIOS } from './utils/platform'\n\nexport type MouseTouchEventCallback = (event: MouseTouchEvent, other?: number) => boolean\n\nexport interface EventHandler {\n pinchStartEvent?: MouseTouchEventCallback\n pinchEvent?: MouseTouchEventCallback\n pinchEndEvent?: MouseTouchEventCallback\n\n mouseWheelHortEvent?: MouseTouchEventCallback\n mouseWheelVertEvent?: MouseTouchEventCallback\n\n mouseClickEvent?: MouseTouchEventCallback\n mouseRightClickEvent?: MouseTouchEventCallback\n tapEvent?: MouseTouchEventCallback\n\n mouseDoubleClickEvent?: MouseTouchEventCallback\n doubleTapEvent?: MouseTouchEventCallback\n\n mouseDownEvent?: MouseTouchEventCallback\n touchStartEvent?: MouseTouchEventCallback\n\n mouseUpEvent?: MouseTouchEventCallback\n touchEndEvent?: MouseTouchEventCallback\n\n mouseDownOutsideEvent?: MouseTouchEventCallback\n\n mouseEnterEvent?: MouseTouchEventCallback\n mouseLeaveEvent?: MouseTouchEventCallback\n\n mouseMoveEvent?: MouseTouchEventCallback\n\n pressedMouseMoveEvent?: MouseTouchEventCallback\n touchMoveEvent?: MouseTouchEventCallback\n\n longTapEvent?: MouseTouchEventCallback\n}\n\nexport type EventName = keyof EventHandler\n\nexport interface MouseTouchEvent extends Coordinate {\n pageX: number\n pageY: number\n isTouch?: boolean\n preventDefault?: () => void\n}\n\nexport interface EventOptions {\n treatVertDragAsPageScroll: () => boolean\n treatHorzDragAsPageScroll: () => boolean\n}\n\n// we can use `const name = 500;` but with `const enum` this values will be inlined into code\n// so we do not need to have it as variables\nconst enum Delay {\n ResetClick = 500,\n LongTap = 500,\n PreventFiresTouchEvents = 500,\n}\n\nconst enum ManhattanDistance {\n CancelClick = 5,\n CancelTap = 5,\n DoubleClick = 5,\n DoubleTap = 30,\n}\n\nconst enum MouseEventButton {\n Left = 0,\n Middle = 1,\n Right = 2,\n}\n\nexport const TOUCH_MIN_RADIUS = 10\n\ntype TimerId = ReturnType\n\ninterface MouseTouchMoveWithDownInfo {\n xOffset: number\n yOffset: number\n manhattanDistance: number\n}\n\n// TODO: get rid of a lot of boolean flags, probably we should replace it with some enum\nexport default class SyntheticEvent {\n private readonly _target: HTMLElement\n private readonly _handler: EventHandler\n\n private readonly _options: EventOptions\n\n private _clickCount: number = 0\n private _clickTimeoutId: Nullable = null\n private _clickCoordinate: Coordinate = { x: Number.NEGATIVE_INFINITY, y: Number.POSITIVE_INFINITY }\n\n private _tapCount: number = 0\n private _tapTimeoutId: Nullable = null\n private _tapCoordinate: Coordinate = { x: Number.NEGATIVE_INFINITY, y: Number.POSITIVE_INFINITY }\n\n private _longTapTimeoutId: Nullable = null\n private _longTapActive: boolean = false\n\n private _mouseMoveStartCoordinate: Nullable = null\n\n private _touchMoveStartCoordinate: Nullable = null\n private _touchMoveExceededManhattanDistance: boolean = false\n\n private _cancelClick: boolean = false\n private _cancelTap: boolean = false\n\n private _unsubscribeOutsideMouseEvents: Nullable<() => void> = null\n private _unsubscribeOutsideTouchEvents: Nullable<() => void> = null\n private _unsubscribeMobileSafariEvents: Nullable<() => void> = null\n\n private _unsubscribeMousemove: Nullable<() => void> = null\n\n private _unsubscribeMouseWheel: Nullable<() => void> = null\n\n private _unsubscribeContextMenu: Nullable<() => void> = null\n\n private _unsubscribeRootMouseEvents: Nullable<() => void> = null\n private _unsubscribeRootTouchEvents: Nullable<() => void> = null\n\n private _startPinchMiddleCoordinate: Nullable = null\n private _startPinchDistance: number = 0\n private _pinchPrevented: boolean = false\n private _preventTouchDragProcess: boolean = false\n\n private _mousePressed: boolean = false\n\n private _lastTouchEventTimeStamp: number = 0\n\n // for touchstart/touchmove/touchend events we handle only first touch\n // i.e. we don't support several active touches at the same time (except pinch event)\n private _activeTouchId: Nullable = null\n\n // accept all mouse leave events if it's not an iOS device\n // see _mouseEnterHandler, _mouseMoveHandler, _mouseLeaveHandler\n private _acceptMouseLeave: boolean = !isIOS()\n\n constructor (\n target: HTMLElement,\n handler: EventHandler,\n options: EventOptions\n ) {\n this._target = target\n this._handler = handler\n this._options = options\n\n this._init()\n }\n\n destroy (): void {\n if (this._unsubscribeOutsideMouseEvents !== null) {\n this._unsubscribeOutsideMouseEvents()\n this._unsubscribeOutsideMouseEvents = null\n }\n\n if (this._unsubscribeOutsideTouchEvents !== null) {\n this._unsubscribeOutsideTouchEvents()\n this._unsubscribeOutsideTouchEvents = null\n }\n\n if (this._unsubscribeMousemove !== null) {\n this._unsubscribeMousemove()\n this._unsubscribeMousemove = null\n }\n\n if (this._unsubscribeMouseWheel !== null) {\n this._unsubscribeMouseWheel()\n this._unsubscribeMouseWheel = null\n }\n\n if (this._unsubscribeContextMenu !== null) {\n this._unsubscribeContextMenu()\n this._unsubscribeContextMenu = null\n }\n\n if (this._unsubscribeRootMouseEvents !== null) {\n this._unsubscribeRootMouseEvents()\n this._unsubscribeRootMouseEvents = null\n }\n\n if (this._unsubscribeRootTouchEvents !== null) {\n this._unsubscribeRootTouchEvents()\n this._unsubscribeRootTouchEvents = null\n }\n\n if (this._unsubscribeMobileSafariEvents !== null) {\n this._unsubscribeMobileSafariEvents()\n this._unsubscribeMobileSafariEvents = null\n }\n\n this._clearLongTapTimeout()\n this._resetClickTimeout()\n }\n\n private _mouseEnterHandler (enterEvent: MouseEvent): void {\n this._unsubscribeMousemove?.()\n this._unsubscribeMouseWheel?.()\n this._unsubscribeContextMenu?.()\n\n const boundMouseMoveHandler = this._mouseMoveHandler.bind(this)\n this._unsubscribeMousemove = () => {\n this._target.removeEventListener('mousemove', boundMouseMoveHandler)\n }\n this._target.addEventListener('mousemove', boundMouseMoveHandler)\n\n const boundMouseWheel = this._mouseWheelHandler.bind(this)\n this._unsubscribeMouseWheel = () => {\n this._target.removeEventListener('wheel', boundMouseWheel)\n }\n this._target.addEventListener('wheel', boundMouseWheel, { passive: false })\n\n const boundContextMenu = this._contextMenuHandler.bind(this)\n this._unsubscribeContextMenu = () => {\n this._target.removeEventListener('contextmenu', boundContextMenu)\n }\n this._target.addEventListener('contextmenu', boundContextMenu, { passive: false })\n\n if (this._firesTouchEvents(enterEvent)) {\n return\n }\n\n this._processEvent(this._makeCompatEvent(enterEvent), this._handler.mouseEnterEvent)\n this._acceptMouseLeave = true\n }\n\n private _resetClickTimeout (): void {\n if (this._clickTimeoutId !== null) {\n clearTimeout(this._clickTimeoutId)\n }\n\n this._clickCount = 0\n this._clickTimeoutId = null\n this._clickCoordinate = { x: Number.NEGATIVE_INFINITY, y: Number.POSITIVE_INFINITY }\n }\n\n private _resetTapTimeout (): void {\n if (this._tapTimeoutId !== null) {\n clearTimeout(this._tapTimeoutId)\n }\n\n this._tapCount = 0\n this._tapTimeoutId = null\n this._tapCoordinate = { x: Number.NEGATIVE_INFINITY, y: Number.POSITIVE_INFINITY }\n }\n\n private _mouseMoveHandler (moveEvent: MouseEvent): void {\n if (this._mousePressed || this._touchMoveStartCoordinate !== null) {\n return\n }\n\n if (this._firesTouchEvents(moveEvent)) {\n return\n }\n\n this._processEvent(this._makeCompatEvent(moveEvent), this._handler.mouseMoveEvent)\n this._acceptMouseLeave = true\n }\n\n private _mouseWheelHandler (wheelEvent: WheelEvent): void {\n if (Math.abs(wheelEvent.deltaX) > Math.abs(wheelEvent.deltaY)) {\n if (this._handler.mouseWheelHortEvent === undefined) {\n return\n }\n this._preventDefault(wheelEvent)\n if (Math.abs(wheelEvent.deltaX) === 0) {\n return\n }\n this._handler.mouseWheelHortEvent(this._makeCompatEvent(wheelEvent), -wheelEvent.deltaX)\n } else {\n if (this._handler.mouseWheelVertEvent === undefined) {\n return\n }\n let deltaY = -(wheelEvent.deltaY / 100)\n if (deltaY === 0) {\n return\n }\n this._preventDefault(wheelEvent)\n\n switch (wheelEvent.deltaMode) {\n case wheelEvent.DOM_DELTA_PAGE:\n deltaY *= 120\n break\n\n case wheelEvent.DOM_DELTA_LINE:\n deltaY *= 32\n break\n }\n\n if (deltaY !== 0) {\n const scale = Math.sign(deltaY) * Math.min(1, Math.abs(deltaY))\n this._handler.mouseWheelVertEvent(this._makeCompatEvent(wheelEvent), scale)\n }\n }\n }\n\n private _contextMenuHandler (mouseEvent: MouseEvent): void {\n this._preventDefault(mouseEvent)\n }\n\n private _touchMoveHandler (moveEvent: TouchEvent): void {\n const touch = this._touchWithId(moveEvent.changedTouches, this._activeTouchId)\n if (touch === null) {\n return\n }\n\n this._lastTouchEventTimeStamp = this._eventTimeStamp(moveEvent)\n\n if (this._startPinchMiddleCoordinate !== null) {\n return\n }\n\n if (this._preventTouchDragProcess) {\n return\n }\n\n // prevent pinch if move event comes faster than the second touch\n this._pinchPrevented = true\n\n const moveInfo = this._mouseTouchMoveWithDownInfo(this._getCoordinate(touch), this._touchMoveStartCoordinate as Coordinate)\n const { xOffset, yOffset, manhattanDistance } = moveInfo\n\n if (!this._touchMoveExceededManhattanDistance && manhattanDistance < ManhattanDistance.CancelTap) {\n return\n }\n\n if (!this._touchMoveExceededManhattanDistance) {\n // first time when current position exceeded manhattan distance\n\n // vertical drag is more important than horizontal drag\n // because we scroll the page vertically often than horizontally\n const correctedXOffset = xOffset * 0.5\n\n // a drag can be only if touch page scroll isn't allowed\n const isVertDrag = yOffset >= correctedXOffset && !this._options.treatVertDragAsPageScroll()\n const isHorzDrag = correctedXOffset > yOffset && !this._options.treatHorzDragAsPageScroll()\n\n // if drag event happened then we should revert preventDefault state to original one\n // and try to process the drag event\n // else we shouldn't prevent default of the event and ignore processing the drag event\n if (!isVertDrag && !isHorzDrag) {\n this._preventTouchDragProcess = true\n }\n\n this._touchMoveExceededManhattanDistance = true\n // if manhattan distance is more that 5 - we should cancel tap event\n this._cancelTap = true\n this._clearLongTapTimeout()\n this._resetTapTimeout()\n }\n\n if (!this._preventTouchDragProcess) {\n this._processEvent(this._makeCompatEvent(moveEvent, touch), this._handler.touchMoveEvent)\n\n // we should prevent default in case of touch only\n // to prevent scroll of the page\n // preventDefault(moveEvent)\n }\n }\n\n private _mouseMoveWithDownHandler (moveEvent: MouseEvent): void {\n if (moveEvent.button !== MouseEventButton.Left) {\n return\n }\n\n const moveInfo = this._mouseTouchMoveWithDownInfo(this._getCoordinate(moveEvent), this._mouseMoveStartCoordinate as Coordinate)\n const { manhattanDistance } = moveInfo\n\n if (manhattanDistance >= ManhattanDistance.CancelClick) {\n // if manhattan distance is more that 5 - we should cancel click event\n this._cancelClick = true\n this._resetClickTimeout()\n }\n if (this._cancelClick) {\n // if this._cancelClick is true, that means that minimum manhattan distance is already exceeded\n this._processEvent(this._makeCompatEvent(moveEvent), this._handler.pressedMouseMoveEvent)\n }\n }\n\n private _mouseTouchMoveWithDownInfo (currentCoordinate: Coordinate, startCoordinate: Coordinate): MouseTouchMoveWithDownInfo {\n const xOffset = Math.abs(startCoordinate.x - currentCoordinate.x)\n const yOffset = Math.abs(startCoordinate.y - currentCoordinate.y)\n\n const manhattanDistance = xOffset + yOffset\n\n return { xOffset, yOffset, manhattanDistance }\n }\n\n /**\n * In Firefox mouse events dont't fire if the mouse position is outside of the browser's border.\n * To prevent the mouse from hanging while pressed we're subscribing on the mouseleave event of the document element.\n * We're subscribing on mouseleave, but this event is actually fired on mouseup outside of the browser's border.\n */\n private readonly _onFirefoxOutsideMouseUp = (mouseUpEvent: MouseEvent): void => {\n this._mouseUpHandler(mouseUpEvent)\n }\n\n /**\n * Safari doesn't fire touchstart/mousedown events on double tap since iOS 13.\n * There are two possible solutions:\n * 1) Call preventDefault in touchEnd handler. But it also prevents click event from firing.\n * 2) Add listener on dblclick event that fires with the preceding mousedown/mouseup.\n * https://developer.apple.com/forums/thread/125073\n */\n private readonly _onMobileSafariDoubleClick = (dblClickEvent: MouseEvent): void => {\n if (this._firesTouchEvents(dblClickEvent)) {\n ++this._tapCount\n\n if (this._tapTimeoutId !== null && this._tapCount > 1) {\n const { manhattanDistance } = this._mouseTouchMoveWithDownInfo(this._getCoordinate(dblClickEvent), this._tapCoordinate)\n if (manhattanDistance < ManhattanDistance.DoubleTap && !this._cancelTap) {\n this._processEvent(this._makeCompatEvent(dblClickEvent), this._handler.doubleTapEvent)\n }\n this._resetTapTimeout()\n }\n } else {\n ++this._clickCount\n\n if (this._clickTimeoutId !== null && this._clickCount > 1) {\n const { manhattanDistance } = this._mouseTouchMoveWithDownInfo(this._getCoordinate(dblClickEvent), this._clickCoordinate)\n if (manhattanDistance < ManhattanDistance.DoubleClick && !this._cancelClick) {\n this._processEvent(this._makeCompatEvent(dblClickEvent), this._handler.mouseDoubleClickEvent)\n }\n this._resetClickTimeout()\n }\n }\n }\n\n // eslint-disable-next-line complexity\n private _touchEndHandler (touchEndEvent: TouchEvent): void {\n let touch = this._touchWithId(touchEndEvent.changedTouches, this._activeTouchId)\n if (touch === null && touchEndEvent.touches.length === 0) {\n // something went wrong, somehow we missed the required touchend event\n // probably the browser has not sent this event\n touch = touchEndEvent.changedTouches[0]\n }\n\n if (touch === null) {\n return\n }\n\n this._activeTouchId = null\n this._lastTouchEventTimeStamp = this._eventTimeStamp(touchEndEvent)\n this._clearLongTapTimeout()\n this._touchMoveStartCoordinate = null\n\n if (this._unsubscribeRootTouchEvents !== null) {\n this._unsubscribeRootTouchEvents()\n this._unsubscribeRootTouchEvents = null\n }\n\n const compatEvent = this._makeCompatEvent(touchEndEvent, touch)\n this._processEvent(compatEvent, this._handler.touchEndEvent)\n ++this._tapCount\n\n if (this._tapTimeoutId !== null && this._tapCount > 1) {\n // check that both clicks are near enough\n const { manhattanDistance } = this._mouseTouchMoveWithDownInfo(this._getCoordinate(touch), this._tapCoordinate)\n if (manhattanDistance < ManhattanDistance.DoubleTap && !this._cancelTap) {\n this._processEvent(compatEvent, this._handler.doubleTapEvent)\n }\n this._resetTapTimeout()\n } else {\n if (!this._cancelTap) {\n this._processEvent(compatEvent, this._handler.tapEvent)\n\n // do not fire mouse events if tap handler was executed\n // prevent click event on new dom element (who appeared after tap)\n if (this._handler.tapEvent !== undefined) {\n this._preventDefault(touchEndEvent)\n }\n }\n }\n\n // prevent, for example, safari's dblclick-to-zoom or fast-click after long-tap\n // we handle mouseDoubleClickEvent here ourselves\n if (this._tapCount === 0) {\n this._preventDefault(touchEndEvent)\n }\n\n if (touchEndEvent.touches.length === 0) {\n if (this._longTapActive) {\n this._longTapActive = false\n // prevent native click event\n this._preventDefault(touchEndEvent)\n }\n }\n }\n\n private _mouseUpHandler (mouseUpEvent: MouseEvent): void {\n if (mouseUpEvent.button !== MouseEventButton.Left) {\n return\n }\n\n const compatEvent = this._makeCompatEvent(mouseUpEvent)\n\n this._mouseMoveStartCoordinate = null\n this._mousePressed = false\n\n if (this._unsubscribeRootMouseEvents !== null) {\n this._unsubscribeRootMouseEvents()\n this._unsubscribeRootMouseEvents = null\n }\n\n if (isFF()) {\n const rootElement = this._target.ownerDocument.documentElement\n rootElement.removeEventListener('mouseleave', this._onFirefoxOutsideMouseUp)\n }\n\n if (this._firesTouchEvents(mouseUpEvent)) {\n return\n }\n\n this._processEvent(compatEvent, this._handler.mouseUpEvent)\n ++this._clickCount\n\n if (this._clickTimeoutId !== null && this._clickCount > 1) {\n // check that both clicks are near enough\n const { manhattanDistance } = this._mouseTouchMoveWithDownInfo(this._getCoordinate(mouseUpEvent), this._clickCoordinate)\n if (manhattanDistance < ManhattanDistance.DoubleClick && !this._cancelClick) {\n this._processEvent(compatEvent, this._handler.mouseDoubleClickEvent)\n }\n this._resetClickTimeout()\n } else {\n if (!this._cancelClick) {\n this._processEvent(compatEvent, this._handler.mouseClickEvent)\n }\n }\n }\n\n private _clearLongTapTimeout (): void {\n if (this._longTapTimeoutId === null) {\n return\n }\n\n clearTimeout(this._longTapTimeoutId)\n this._longTapTimeoutId = null\n }\n\n private _touchStartHandler (downEvent: TouchEvent): void {\n if (this._activeTouchId !== null) {\n return\n }\n const touch = downEvent.changedTouches[0]\n this._activeTouchId = touch.identifier\n\n this._lastTouchEventTimeStamp = this._eventTimeStamp(downEvent)\n\n const rootElement = this._target.ownerDocument.documentElement\n\n this._cancelTap = false\n this._touchMoveExceededManhattanDistance = false\n this._preventTouchDragProcess = false\n\n this._touchMoveStartCoordinate = this._getCoordinate(touch)\n\n if (this._unsubscribeRootTouchEvents !== null) {\n this._unsubscribeRootTouchEvents()\n this._unsubscribeRootTouchEvents = null\n }\n\n {\n const boundTouchMoveWithDownHandler = this._touchMoveHandler.bind(this)\n const boundTouchEndHandler = this._touchEndHandler.bind(this)\n\n this._unsubscribeRootTouchEvents = () => {\n rootElement.removeEventListener('touchmove', boundTouchMoveWithDownHandler)\n rootElement.removeEventListener('touchend', boundTouchEndHandler)\n }\n\n rootElement.addEventListener('touchmove', boundTouchMoveWithDownHandler, { passive: false })\n rootElement.addEventListener('touchend', boundTouchEndHandler, { passive: false })\n\n this._clearLongTapTimeout()\n this._longTapTimeoutId = setTimeout(this._longTapHandler.bind(this, downEvent), Delay.LongTap)\n }\n\n this._processEvent(this._makeCompatEvent(downEvent, touch), this._handler.touchStartEvent)\n\n if (this._tapTimeoutId === null) {\n this._tapCount = 0\n this._tapTimeoutId = setTimeout(this._resetTapTimeout.bind(this), Delay.ResetClick)\n this._tapCoordinate = this._getCoordinate(touch)\n }\n }\n\n private _mouseDownHandler (downEvent: MouseEvent): void {\n if (downEvent.button === MouseEventButton.Right) {\n this._preventDefault(downEvent)\n this._processEvent(this._makeCompatEvent(downEvent), this._handler.mouseRightClickEvent)\n return\n }\n\n if (downEvent.button !== MouseEventButton.Left) {\n return\n }\n\n const rootElement = this._target.ownerDocument.documentElement\n if (isFF()) {\n rootElement.addEventListener('mouseleave', this._onFirefoxOutsideMouseUp)\n }\n\n this._cancelClick = false\n\n this._mouseMoveStartCoordinate = this._getCoordinate(downEvent)\n\n if (this._unsubscribeRootMouseEvents !== null) {\n this._unsubscribeRootMouseEvents()\n this._unsubscribeRootMouseEvents = null\n }\n\n {\n const boundMouseMoveWithDownHandler = this._mouseMoveWithDownHandler.bind(this)\n const boundMouseUpHandler = this._mouseUpHandler.bind(this)\n\n this._unsubscribeRootMouseEvents = () => {\n rootElement.removeEventListener('mousemove', boundMouseMoveWithDownHandler)\n rootElement.removeEventListener('mouseup', boundMouseUpHandler)\n }\n\n rootElement.addEventListener('mousemove', boundMouseMoveWithDownHandler)\n rootElement.addEventListener('mouseup', boundMouseUpHandler)\n }\n\n this._mousePressed = true\n\n if (this._firesTouchEvents(downEvent)) {\n return\n }\n\n this._processEvent(this._makeCompatEvent(downEvent), this._handler.mouseDownEvent)\n\n if (this._clickTimeoutId === null) {\n this._clickCount = 0\n this._clickTimeoutId = setTimeout(this._resetClickTimeout.bind(this), Delay.ResetClick)\n this._clickCoordinate = this._getCoordinate(downEvent)\n }\n }\n\n private _init (): void {\n this._target.addEventListener('mouseenter', this._mouseEnterHandler.bind(this))\n\n // Do not show context menu when something went wrong\n this._target.addEventListener('touchcancel', this._clearLongTapTimeout.bind(this))\n\n {\n const doc = this._target.ownerDocument\n\n const outsideHandler = (event: MouseEvent | TouchEvent): void => {\n if (this._handler.mouseDownOutsideEvent == null) {\n return\n }\n\n if (event.composed && this._target.contains(event.composedPath()[0] as Element)) {\n return\n }\n\n if ((event.target !== null) && this._target.contains(event.target as Element)) {\n return\n }\n\n this._handler.mouseDownOutsideEvent({ x: 0, y: 0, pageX: 0, pageY: 0 })\n }\n\n this._unsubscribeOutsideTouchEvents = () => {\n doc.removeEventListener('touchstart', outsideHandler)\n }\n\n this._unsubscribeOutsideMouseEvents = () => {\n doc.removeEventListener('mousedown', outsideHandler)\n }\n\n doc.addEventListener('mousedown', outsideHandler)\n doc.addEventListener('touchstart', outsideHandler, { passive: true })\n }\n\n if (isIOS()) {\n this._unsubscribeMobileSafariEvents = () => {\n this._target.removeEventListener('dblclick', this._onMobileSafariDoubleClick)\n }\n this._target.addEventListener('dblclick', this._onMobileSafariDoubleClick)\n }\n\n this._target.addEventListener('mouseleave', this._mouseLeaveHandler.bind(this))\n\n this._target.addEventListener('touchstart', this._touchStartHandler.bind(this), { passive: true })\n\n this._target.addEventListener('mousedown', (e: MouseEvent) => {\n if (e.button === MouseEventButton.Middle) {\n // prevent incorrect scrolling event\n e.preventDefault()\n return false\n }\n return undefined\n })\n\n this._target.addEventListener('mousedown', this._mouseDownHandler.bind(this))\n this._initPinch()\n\n // Hey mobile Safari, what's up?\n // If mobile Safari doesn't have any touchmove handler with passive=false\n // it treats a touchstart and the following touchmove events as cancelable=false,\n // so we can't prevent them (as soon we subscribe on touchmove inside touchstart's handler).\n // And we'll get scroll of the page along with chart's one instead of only chart's scroll.\n this._target.addEventListener('touchmove', () => {}, { passive: false })\n }\n\n private _initPinch (): void {\n if (this._handler.pinchStartEvent === undefined &&\n this._handler.pinchEvent === undefined &&\n this._handler.pinchEndEvent === undefined\n ) {\n return\n }\n\n this._target.addEventListener(\n 'touchstart',\n (event: TouchEvent) => this._checkPinchState(event.touches),\n { passive: true }\n )\n\n this._target.addEventListener(\n 'touchmove',\n (event: TouchEvent) => {\n if (event.touches.length !== 2 || this._startPinchMiddleCoordinate === null) {\n return\n }\n if (this._handler.pinchEvent !== undefined) {\n const currentDistance = this._getTouchDistance(event.touches[0], event.touches[1])\n const scale = currentDistance / this._startPinchDistance\n this._handler.pinchEvent({ ...this._startPinchMiddleCoordinate, pageX: 0, pageY: 0 }, scale)\n this._preventDefault(event)\n }\n },\n { passive: false }\n )\n\n this._target.addEventListener('touchend', (event: TouchEvent) => {\n this._checkPinchState(event.touches)\n })\n }\n\n private _checkPinchState (touches: TouchList): void {\n if (touches.length === 1) {\n this._pinchPrevented = false\n }\n\n if (touches.length !== 2 || this._pinchPrevented || this._longTapActive) {\n this._stopPinch()\n } else {\n this._startPinch(touches)\n }\n }\n\n private _startPinch (touches: TouchList): void {\n const box = this._target.getBoundingClientRect() ?? { left: 0, top: 0 }\n this._startPinchMiddleCoordinate = {\n x: ((touches[0].clientX - box.left) + (touches[1].clientX - box.left)) / 2,\n y: ((touches[0].clientY - box.top) + (touches[1].clientY - box.top)) / 2\n }\n\n this._startPinchDistance = this._getTouchDistance(touches[0], touches[1])\n\n if (this._handler.pinchStartEvent !== undefined) {\n this._handler.pinchStartEvent({ x: 0, y: 0, pageX: 0, pageY: 0 })\n }\n\n this._clearLongTapTimeout()\n }\n\n private _stopPinch (): void {\n if (this._startPinchMiddleCoordinate === null) {\n return\n }\n\n this._startPinchMiddleCoordinate = null\n\n if (this._handler.pinchEndEvent !== undefined) {\n this._handler.pinchEndEvent({ x: 0, y: 0, pageX: 0, pageY: 0 })\n }\n }\n\n private _mouseLeaveHandler (event: MouseEvent): void {\n this._unsubscribeMousemove?.()\n this._unsubscribeMouseWheel?.()\n this._unsubscribeContextMenu?.()\n\n if (this._firesTouchEvents(event)) {\n return\n }\n\n if (!this._acceptMouseLeave) {\n // mobile Safari sometimes emits mouse leave event for no reason, there is no way to handle it in other way\n // just ignore this event if there was no mouse move or mouse enter events\n return\n }\n\n this._processEvent(this._makeCompatEvent(event), this._handler.mouseLeaveEvent)\n\n // accept all mouse leave events if it's not an iOS device\n this._acceptMouseLeave = !isIOS()\n }\n\n private _longTapHandler (event: TouchEvent): void {\n const touch = this._touchWithId(event.touches, this._activeTouchId)\n if (touch === null) {\n return\n }\n\n this._processEvent(this._makeCompatEvent(event, touch), this._handler.longTapEvent)\n this._cancelTap = true\n\n // long tap is active until touchend event with 0 touches occurred\n this._longTapActive = true\n }\n\n private _firesTouchEvents (e: MouseEvent): boolean {\n // @ts-expect-error\n if (e.sourceCapabilities?.firesTouchEvents !== undefined) {\n // @ts-expect-error\n return e.sourceCapabilities.firesTouchEvents\n }\n\n return this._eventTimeStamp(e) < this._lastTouchEventTimeStamp + Delay.PreventFiresTouchEvents\n }\n\n private _processEvent (event: MouseTouchEvent, callback?: MouseTouchEventCallback): void {\n callback?.call(this._handler, event)\n }\n\n private _makeCompatEvent (event: MouseEvent | TouchEvent, touch?: Touch): MouseTouchEvent {\n // TouchEvent has no clientX/Y coordinates:\n // We have to use the last Touch instead\n const eventLike = touch ?? (event as MouseEvent)\n const box = this._target.getBoundingClientRect() ?? { left: 0, top: 0 }\n\n return {\n x: eventLike.clientX - box.left,\n y: eventLike.clientY - box.top,\n\n pageX: eventLike.pageX,\n pageY: eventLike.pageY,\n\n isTouch: !event.type.startsWith('mouse') && event.type !== 'contextmenu' && event.type !== 'click',\n\n preventDefault: () => {\n if (event.type !== 'touchstart') {\n // touchstart is passive and cannot be prevented\n this._preventDefault(event)\n }\n }\n }\n }\n\n private _getTouchDistance (p1: Touch, p2: Touch): number {\n const xDiff = p1.clientX - p2.clientX\n const yDiff = p1.clientY - p2.clientY\n return Math.sqrt(xDiff * xDiff + yDiff * yDiff)\n }\n\n private _preventDefault (event: Event): void {\n if (event.cancelable) {\n event.preventDefault()\n }\n }\n\n private _getCoordinate (eventLike: Touch | MouseEvent): Coordinate {\n return {\n x: eventLike.pageX,\n y: eventLike.pageY\n }\n }\n\n private _eventTimeStamp (e: TouchEvent | MouseEvent): number {\n // for some reason e.timestamp is always 0 on iPad with magic mouse, so we use performance.now() as a fallback\n return e.timeStamp ?? performance.now()\n }\n\n private _touchWithId (touches: TouchList, id: Nullable): Nullable {\n for (let i = 0; i < touches.length; ++i) {\n if (touches[i].identifier === id) {\n return touches[i]\n }\n }\n return null\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from './common/Nullable'\nimport SyntheticEvent, { EventHandler, MouseTouchEvent, TOUCH_MIN_RADIUS } from './common/SyntheticEvent'\nimport Coordinate from './common/Coordinate'\nimport { UpdateLevel } from './common/Updater'\nimport Bounding from './common/Bounding'\nimport Crosshair from './common/Crosshair'\nimport { requestAnimationFrame, cancelAnimationFrame } from './common/utils/compatible'\n\nimport { AxisExtremum } from './component/Axis'\nimport YAxis from './component/YAxis'\n\nimport Chart from './Chart'\nimport Pane, { PaneIdConstants } from './pane/Pane'\nimport Widget, { WidgetNameConstants } from './widget/Widget'\nimport { REAL_SEPARATOR_HEIGHT } from './widget/SeparatorWidget'\n\ninterface EventTriggerWidgetInfo {\n pane: Nullable\n widget: Nullable\n}\n\nexport default class ChartEvent implements EventHandler {\n private readonly _container: HTMLElement\n private readonly _chart: Chart\n private readonly _event: SyntheticEvent\n\n // 惯性滚动开始时间\n private _flingStartTime = new Date().getTime()\n // 惯性滚动定时器\n private _flingScrollRequestId: Nullable = null\n // 开始滚动时坐标点\n private _startScrollCoordinate: Nullable = null\n // 开始触摸时坐标\n private _touchCoordinate: Nullable = null\n // 是否是取消了十字光标\n private _touchCancelCrosshair = false\n // 是否缩放过\n private _touchZoomed = false\n // 用来记录捏合缩放的尺寸\n private _pinchScale = 1\n\n private _mouseDownWidget: Nullable = null\n\n private _prevYAxisExtremum: Nullable = null\n\n private _xAxisStartScaleCoordinate: Nullable = null\n private _xAxisStartScaleDistance = 0\n private _xAxisScale = 1\n\n private _yAxisStartScaleDistance = 0\n\n private _mouseMoveTriggerWidgetInfo: EventTriggerWidgetInfo = { pane: null, widget: null }\n\n private readonly _boundKeyBoardDownEvent: ((event: KeyboardEvent) => void) = (event: KeyboardEvent) => {\n if (event.shiftKey) {\n switch (event.code) {\n case 'Equal': {\n this._chart.getChartStore().getTimeScaleStore().zoom(0.5)\n break\n }\n case 'Minus': {\n this._chart.getChartStore().getTimeScaleStore().zoom(-0.5)\n break\n }\n case 'ArrowLeft': {\n const timeScaleStore = this._chart.getChartStore().getTimeScaleStore()\n timeScaleStore.startScroll()\n timeScaleStore.scroll(-3 * timeScaleStore.getBarSpace().bar)\n break\n }\n case 'ArrowRight': {\n const timeScaleStore = this._chart.getChartStore().getTimeScaleStore()\n timeScaleStore.startScroll()\n timeScaleStore.scroll(3 * timeScaleStore.getBarSpace().bar)\n break\n }\n default: {\n break\n }\n }\n }\n }\n\n constructor (container: HTMLElement, chart: Chart) {\n this._container = container\n this._chart = chart\n this._event = new SyntheticEvent(container, this, {\n treatVertDragAsPageScroll: () => false,\n treatHorzDragAsPageScroll: () => false\n })\n container.addEventListener('keydown', this._boundKeyBoardDownEvent)\n }\n\n pinchStartEvent (): boolean {\n this._touchZoomed = true\n this._pinchScale = 1\n return true\n }\n\n pinchEvent (e: MouseTouchEvent, scale: number): boolean {\n const { pane, widget } = this._findWidgetByEvent(e)\n if (pane?.getId() !== PaneIdConstants.XAXIS && widget?.getName() === WidgetNameConstants.MAIN) {\n const event = this._makeWidgetEvent(e, widget)\n const zoomScale = (scale - this._pinchScale) * 5\n this._pinchScale = scale\n this._chart.getChartStore().getTimeScaleStore().zoom(zoomScale, { x: event.x, y: event.y })\n return true\n }\n return false\n }\n\n mouseWheelHortEvent (_: MouseTouchEvent, distance: number): boolean {\n const timeScaleStore = this._chart.getChartStore().getTimeScaleStore()\n timeScaleStore.startScroll()\n timeScaleStore.scroll(distance)\n return true\n }\n\n mouseWheelVertEvent (e: MouseTouchEvent, scale: number): boolean {\n const { widget } = this._findWidgetByEvent(e)\n const isTouch = e.isTouch ?? false\n const event = this._makeWidgetEvent(e, widget)\n let zoomCoordinate: Nullable = null\n const name = widget?.getName()\n if (isTouch) {\n if (name === WidgetNameConstants.MAIN || name === WidgetNameConstants.XAXIS) {\n zoomCoordinate = { x: event.x, y: event.y }\n } else {\n const bounding = this._chart.getPaneById(PaneIdConstants.CANDLE)?.getBounding() as Bounding\n zoomCoordinate = { x: bounding.width / 2, y: bounding.height / 2 }\n }\n } else {\n if (name === WidgetNameConstants.MAIN) {\n zoomCoordinate = { x: event.x, y: event.y }\n }\n }\n if (zoomCoordinate !== null) {\n this._chart.getChartStore().getTimeScaleStore().zoom(scale, { x: event.x, y: event.y })\n return true\n }\n return false\n }\n\n mouseDownEvent (e: MouseTouchEvent): boolean {\n const { pane, widget } = this._findWidgetByEvent(e)\n this._mouseDownWidget = widget\n if (widget !== null) {\n const event = this._makeWidgetEvent(e, widget)\n const name = widget.getName()\n switch (name) {\n case WidgetNameConstants.SEPARATOR: {\n return widget.dispatchEvent('mouseDownEvent', event)\n }\n case WidgetNameConstants.MAIN: {\n const extremum = pane?.getAxisComponent().getExtremum() ?? null\n this._prevYAxisExtremum = extremum === null ? extremum : { ...extremum }\n this._startScrollCoordinate = { x: event.x, y: event.y }\n this._chart.getChartStore().getTimeScaleStore().startScroll()\n return widget.dispatchEvent('mouseDownEvent', event)\n }\n case WidgetNameConstants.XAXIS: {\n const consumed = widget.dispatchEvent('mouseDownEvent', event)\n if (consumed) {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n this._xAxisStartScaleCoordinate = { x: event.x, y: event.y }\n this._xAxisStartScaleDistance = event.pageX\n return consumed\n }\n case WidgetNameConstants.YAXIS: {\n const consumed = widget.dispatchEvent('mouseDownEvent', event)\n if (consumed) {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n const extremum = pane?.getAxisComponent().getExtremum() ?? null\n this._prevYAxisExtremum = extremum === null ? extremum : { ...extremum }\n this._yAxisStartScaleDistance = event.pageY\n return consumed\n }\n }\n }\n return false\n }\n\n mouseMoveEvent (e: MouseTouchEvent): boolean {\n const { pane, widget } = this._findWidgetByEvent(e)\n const event = this._makeWidgetEvent(e, widget)\n if (\n this._mouseMoveTriggerWidgetInfo.pane?.getId() !== pane?.getId() ||\n this._mouseMoveTriggerWidgetInfo.widget?.getName() !== widget?.getName()\n ) {\n widget?.dispatchEvent('mouseEnterEvent', event)\n this._mouseMoveTriggerWidgetInfo.widget?.dispatchEvent('mouseLeaveEvent', event)\n this._mouseMoveTriggerWidgetInfo = { pane, widget }\n }\n if (widget !== null) {\n const name = widget.getName()\n switch (name) {\n case WidgetNameConstants.MAIN: {\n const consumed = widget.dispatchEvent('mouseMoveEvent', event)\n const chartStore = this._chart.getChartStore()\n let crosshair: Crosshair | undefined = { x: event.x, y: event.y, paneId: pane?.getId() }\n if (consumed && chartStore.getTooltipStore().getActiveIconInfo() !== null) {\n crosshair = undefined\n if (widget !== null) {\n widget.getContainer().style.cursor = 'pointer'\n }\n }\n this._chart.getChartStore().getCrosshairStore().set(crosshair)\n return consumed\n }\n case WidgetNameConstants.SEPARATOR:\n case WidgetNameConstants.XAXIS:\n case WidgetNameConstants.YAXIS: {\n const consumed = widget.dispatchEvent('mouseMoveEvent', event)\n this._chart.getChartStore().getCrosshairStore().set()\n return consumed\n }\n }\n }\n return false\n }\n\n pressedMouseMoveEvent (e: MouseTouchEvent): boolean {\n if (this._mouseDownWidget !== null && this._mouseDownWidget.getName() === WidgetNameConstants.SEPARATOR) {\n return this._mouseDownWidget.dispatchEvent('pressedMouseMoveEvent', e)\n }\n const { pane, widget } = this._findWidgetByEvent(e)\n if (\n widget !== null &&\n this._mouseDownWidget?.getPane().getId() === pane?.getId() &&\n this._mouseDownWidget?.getName() === widget.getName()\n ) {\n const event = this._makeWidgetEvent(e, widget)\n const name = widget.getName()\n switch (name) {\n case WidgetNameConstants.MAIN: {\n const bounding = widget.getBounding()\n const consumed = widget.dispatchEvent('pressedMouseMoveEvent', event)\n if (!consumed && this._startScrollCoordinate !== null) {\n const yAxis = pane?.getAxisComponent() as YAxis\n if (this._prevYAxisExtremum !== null && !yAxis.getAutoCalcTickFlag() && yAxis.getScrollZoomEnabled()) {\n const { min, max, range } = this._prevYAxisExtremum\n let distance: number\n if (yAxis?.isReverse() ?? false) {\n distance = this._startScrollCoordinate.y - event.y\n } else {\n distance = event.y - this._startScrollCoordinate.y\n }\n const scale = distance / bounding.height\n const difRange = range * scale\n const newMin = min + difRange\n const newMax = max + difRange\n const newRealMin = yAxis.convertToRealValue(newMin)\n const newRealMax = yAxis.convertToRealValue(newMax)\n yAxis.setExtremum({\n min: newMin,\n max: newMax,\n range: newMax - newMin,\n realMin: newRealMin,\n realMax: newRealMax,\n realRange: newRealMax - newRealMin\n })\n }\n const distance = event.x - this._startScrollCoordinate.x\n this._chart.getChartStore().getTimeScaleStore().scroll(distance)\n }\n this._chart.getChartStore().getCrosshairStore().set({ x: event.x, y: event.y, paneId: pane?.getId() })\n return consumed\n }\n case WidgetNameConstants.XAXIS: {\n const consumed = widget.dispatchEvent('pressedMouseMoveEvent', event)\n if (!consumed) {\n const xAxis = pane?.getAxisComponent()\n if (xAxis?.getScrollZoomEnabled() ?? true) {\n const scale = this._xAxisStartScaleDistance / event.pageX\n const zoomScale = (scale - this._xAxisScale) * 10\n this._xAxisScale = scale\n this._chart.getChartStore().getTimeScaleStore().zoom(zoomScale, this._xAxisStartScaleCoordinate ?? undefined)\n }\n } else {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n return consumed\n }\n case WidgetNameConstants.YAXIS: {\n const consumed = widget.dispatchEvent('pressedMouseMoveEvent', event)\n if (!consumed) {\n const yAxis = pane?.getAxisComponent() as YAxis\n if (this._prevYAxisExtremum !== null && yAxis.getScrollZoomEnabled()) {\n const { min, max, range } = this._prevYAxisExtremum\n const scale = event.pageY / this._yAxisStartScaleDistance\n const newRange = range * scale\n const difRange = (newRange - range) / 2\n const newMin = min - difRange\n const newMax = max + difRange\n const yAxis = pane?.getAxisComponent() as YAxis\n const newRealMin = yAxis.convertToRealValue(newMin)\n const newRealMax = yAxis.convertToRealValue(newMax)\n yAxis.setExtremum({\n min: newMin,\n max: newMax,\n range: newRange,\n realMin: newRealMin,\n realMax: newRealMax,\n realRange: newRealMax - newRealMin\n })\n this._chart.adjustPaneViewport(false, true, true, true)\n }\n } else {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n return consumed\n }\n }\n }\n return false\n }\n\n mouseUpEvent (e: MouseTouchEvent): boolean {\n const { widget } = this._findWidgetByEvent(e)\n let consumed: boolean = false\n if (widget !== null) {\n const event = this._makeWidgetEvent(e, widget)\n const name = widget.getName()\n switch (name) {\n case WidgetNameConstants.MAIN:\n case WidgetNameConstants.SEPARATOR:\n case WidgetNameConstants.XAXIS:\n case WidgetNameConstants.YAXIS: {\n consumed = widget.dispatchEvent('mouseUpEvent', event)\n break\n }\n }\n if (consumed) {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n }\n this._mouseDownWidget = null\n this._startScrollCoordinate = null\n this._prevYAxisExtremum = null\n this._xAxisStartScaleCoordinate = null\n this._xAxisStartScaleDistance = 0\n this._xAxisScale = 1\n this._yAxisStartScaleDistance = 0\n return consumed\n }\n\n mouseClickEvent (e: MouseTouchEvent): boolean {\n const { widget } = this._findWidgetByEvent(e)\n if (widget !== null) {\n const event = this._makeWidgetEvent(e, widget)\n return widget.dispatchEvent('mouseClickEvent', event)\n }\n return false\n }\n\n mouseRightClickEvent (e: MouseTouchEvent): boolean {\n const { widget } = this._findWidgetByEvent(e)\n let consumed: boolean = false\n if (widget !== null) {\n const event = this._makeWidgetEvent(e, widget)\n const name = widget.getName()\n switch (name) {\n case WidgetNameConstants.MAIN:\n case WidgetNameConstants.XAXIS:\n case WidgetNameConstants.YAXIS: {\n consumed = widget.dispatchEvent('mouseRightClickEvent', event)\n break\n }\n }\n if (consumed) {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n }\n return false\n }\n\n mouseDoubleClickEvent (e: MouseTouchEvent): boolean {\n const { pane, widget } = this._findWidgetByEvent(e)\n if (widget !== null) {\n const name = widget.getName()\n switch (name) {\n case WidgetNameConstants.MAIN: {\n const event = this._makeWidgetEvent(e, widget)\n return widget.dispatchEvent('mouseDoubleClickEvent', event)\n }\n case WidgetNameConstants.YAXIS: {\n const yAxis = pane?.getAxisComponent() as YAxis\n if (!yAxis.getAutoCalcTickFlag()) {\n yAxis.setAutoCalcTickFlag(true)\n this._chart.adjustPaneViewport(false, true, true, true)\n return true\n }\n break\n }\n }\n }\n return false\n }\n\n mouseLeaveEvent (): boolean {\n this._chart.getChartStore().getCrosshairStore().set()\n return true\n }\n\n touchStartEvent (e: MouseTouchEvent): boolean {\n const { pane, widget } = this._findWidgetByEvent(e)\n if (widget !== null) {\n const event = this._makeWidgetEvent(e, widget)\n const name = widget.getName()\n switch (name) {\n case WidgetNameConstants.MAIN: {\n const chartStore = this._chart.getChartStore()\n const crosshairStore = chartStore.getCrosshairStore()\n if (widget.dispatchEvent('mouseDownEvent', event)) {\n this._touchCancelCrosshair = true\n this._touchCoordinate = null\n crosshairStore.set(undefined, true)\n this._chart.updatePane(UpdateLevel.Overlay)\n return true\n }\n if (this._flingScrollRequestId !== null) {\n clearTimeout(this._flingScrollRequestId)\n this._flingScrollRequestId = null\n }\n this._flingStartTime = new Date().getTime()\n this._startScrollCoordinate = { x: event.x, y: event.y }\n chartStore.getTimeScaleStore().startScroll()\n this._touchZoomed = false\n if (this._touchCoordinate !== null) {\n const xDif = event.x - this._touchCoordinate.x\n const yDif = event.y - this._touchCoordinate.y\n const radius = Math.sqrt(xDif * xDif + yDif * yDif)\n if (radius < TOUCH_MIN_RADIUS) {\n this._touchCoordinate = { x: event.x, y: event.y }\n crosshairStore.set({ x: event.x, y: event.y, paneId: pane?.getId() })\n } else {\n this._touchCoordinate = null\n this._touchCancelCrosshair = true\n crosshairStore.set()\n }\n }\n return true\n }\n case WidgetNameConstants.XAXIS:\n case WidgetNameConstants.YAXIS: {\n const consumed = widget.dispatchEvent('mouseDownEvent', event)\n if (consumed) {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n return consumed\n }\n }\n }\n return false\n }\n\n touchMoveEvent (e: MouseTouchEvent): boolean {\n const { pane, widget } = this._findWidgetByEvent(e)\n if (widget !== null) {\n const event = this._makeWidgetEvent(e, widget)\n const name = widget.getName()\n const chartStore = this._chart.getChartStore()\n const crosshairStore = chartStore.getCrosshairStore()\n switch (name) {\n case WidgetNameConstants.MAIN: {\n if (widget.dispatchEvent('pressedMouseMoveEvent', event)) {\n event.preventDefault?.()\n crosshairStore.set(undefined, true)\n this._chart.updatePane(UpdateLevel.Overlay)\n return true\n }\n if (this._touchCoordinate !== null) {\n event.preventDefault?.()\n crosshairStore.set({ x: event.x, y: event.y, paneId: pane?.getId() })\n } else {\n if (\n this._startScrollCoordinate !== null &&\n Math.abs(this._startScrollCoordinate.x - event.x) > this._startScrollCoordinate.y - event.y\n ) {\n const distance = event.x - this._startScrollCoordinate.x\n chartStore.getTimeScaleStore().scroll(distance)\n }\n }\n return true\n }\n case WidgetNameConstants.XAXIS:\n case WidgetNameConstants.YAXIS: {\n const consumed = widget.dispatchEvent('pressedMouseMoveEvent', event)\n if (consumed) {\n event.preventDefault?.()\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n return consumed\n }\n }\n }\n return false\n }\n\n touchEndEvent (e: MouseTouchEvent): boolean {\n const { widget } = this._findWidgetByEvent(e)\n if (widget !== null) {\n const event = this._makeWidgetEvent(e, widget)\n const name = widget.getName()\n switch (name) {\n case WidgetNameConstants.MAIN: {\n widget.dispatchEvent('mouseUpEvent', event)\n if (this._startScrollCoordinate !== null) {\n const time = new Date().getTime() - this._flingStartTime\n const distance = event.x - this._startScrollCoordinate.x\n let v = distance / (time > 0 ? time : 1) * 20\n if (time < 200 && Math.abs(v) > 0) {\n const timeScaleStore = this._chart.getChartStore().getTimeScaleStore()\n const flingScroll: (() => void) = () => {\n this._flingScrollRequestId = requestAnimationFrame(() => {\n timeScaleStore.startScroll()\n timeScaleStore.scroll(v)\n v = v * (1 - 0.025)\n if (Math.abs(v) < 1) {\n if (this._flingScrollRequestId !== null) {\n cancelAnimationFrame(this._flingScrollRequestId)\n this._flingScrollRequestId = null\n }\n } else {\n flingScroll()\n }\n })\n }\n flingScroll()\n }\n }\n return true\n }\n case WidgetNameConstants.XAXIS:\n case WidgetNameConstants.YAXIS: {\n const consumed = widget.dispatchEvent('mouseUpEvent', event)\n if (consumed) {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n }\n }\n }\n return false\n }\n\n tapEvent (e: MouseTouchEvent): boolean {\n const { pane, widget } = this._findWidgetByEvent(e)\n let consumed = false\n if (widget !== null) {\n const event = this._makeWidgetEvent(e, widget)\n const result = widget.dispatchEvent('mouseClickEvent', event)\n if (widget.getName() === WidgetNameConstants.MAIN) {\n const event = this._makeWidgetEvent(e, widget)\n const chartStore = this._chart.getChartStore()\n const crosshairStore = chartStore.getCrosshairStore()\n if (result) {\n this._touchCancelCrosshair = true\n this._touchCoordinate = null\n crosshairStore.set(undefined, true)\n consumed = true\n } else {\n if (!this._touchCancelCrosshair && !this._touchZoomed) {\n this._touchCoordinate = { x: event.x, y: event.y }\n crosshairStore.set({ x: event.x, y: event.y, paneId: pane?.getId() }, true)\n consumed = true\n }\n this._touchCancelCrosshair = false\n }\n }\n if (consumed || result) {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n }\n return consumed\n }\n\n doubleTapEvent (e: MouseTouchEvent): boolean {\n return this.mouseDoubleClickEvent(e)\n }\n\n longTapEvent (e: MouseTouchEvent): boolean {\n const { pane, widget } = this._findWidgetByEvent(e)\n if (widget !== null && widget.getName() === WidgetNameConstants.MAIN) {\n const event = this._makeWidgetEvent(e, widget)\n this._touchCoordinate = { x: event.x, y: event.y }\n this._chart.getChartStore().getCrosshairStore().set({ x: event.x, y: event.y, paneId: pane?.getId() })\n return true\n }\n return false\n }\n\n private _findWidgetByEvent (event: MouseTouchEvent): EventTriggerWidgetInfo {\n const panes = this._chart.getAllPanes()\n const { x, y } = event\n let pane: Nullable = null\n for (const [, p] of panes) {\n const bounding = p.getBounding()\n if (\n x >= bounding.left && x <= bounding.left + bounding.width &&\n y >= bounding.top && y <= bounding.top + bounding.height\n ) {\n pane = p\n break\n }\n }\n if (pane === null) {\n pane = this._chart.getPaneById(PaneIdConstants.XAXIS)\n }\n let widget: Nullable = null\n if (pane !== null) {\n const separatorWidget = pane.getSeparatorWidget()\n if (separatorWidget !== null) {\n const separatorBounding = separatorWidget.getBounding()\n if (\n x >= separatorBounding.left && x <= separatorBounding.left + separatorBounding.width &&\n y >= separatorBounding.top && y <= separatorBounding.top + REAL_SEPARATOR_HEIGHT\n ) {\n widget = separatorWidget\n }\n }\n if (widget === null) {\n const mainWidget = pane.getMainWidget()\n const mainBounding = mainWidget.getBounding()\n if (\n x >= mainBounding.left && x <= mainBounding.left + mainBounding.width &&\n y >= mainBounding.top && y <= mainBounding.top + mainBounding.height\n ) {\n widget = mainWidget\n }\n }\n if (widget === null) {\n const yAxisWidget = pane.getYAxisWidget()\n if (yAxisWidget !== null) {\n const yAxisBounding = yAxisWidget.getBounding()\n if (\n x >= yAxisBounding.left && x <= yAxisBounding.left + yAxisBounding.width &&\n y >= yAxisBounding.top && y <= yAxisBounding.top + yAxisBounding.height\n ) {\n widget = yAxisWidget\n }\n }\n }\n }\n return { pane, widget }\n }\n\n private _makeWidgetEvent (event: MouseTouchEvent, widget: Nullable): MouseTouchEvent {\n const bounding = widget?.getBounding() ?? null\n return {\n ...event,\n x: event.x - (bounding?.left ?? 0),\n y: event.y - (bounding?.top ?? 0)\n }\n }\n\n destroy (): void {\n this._container.removeEventListener('keydown', this._boundKeyBoardDownEvent)\n this._event.destroy()\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Nullable from './common/Nullable'\nimport DeepPartial from './common/DeepPartial'\nimport Bounding from './common/Bounding'\nimport KLineData from './common/KLineData'\nimport Coordinate from './common/Coordinate'\nimport Point from './common/Point'\nimport { UpdateLevel } from './common/Updater'\nimport { Styles, YAxisPosition, CustomApi, Options } from './common/Options'\nimport Crosshair from './common/Crosshair'\nimport { ActionType, ActionCallback } from './common/Action'\nimport LoadMoreCallback from './common/LoadMoreCallback'\nimport Precision from './common/Precision'\nimport VisibleRange from './common/VisibleRange'\n\nimport { createId } from './common/utils/id'\nimport { createDom } from './common/utils/dom'\nimport { getPixelRatio } from './common/utils/canvas'\nimport { isString, isArray, isValid } from './common/utils/typeChecks'\nimport { logWarn } from './common/utils/logger'\nimport { formatValue } from './common/utils/format'\nimport { binarySearchNearest } from './common/utils/number'\n\nimport ChartStore from './store/ChartStore'\n\nimport Pane, { PaneOptions, PANE_DEFAULT_HEIGHT, PaneIdConstants } from './pane/Pane'\nimport CandlePane from './pane/CandlePane'\nimport IndicatorPane from './pane/IndicatorPane'\nimport XAxisPane from './pane/XAxisPane'\n\nimport Axis from './component/Axis'\n\nimport { Indicator, IndicatorCreate } from './component/Indicator'\nimport { Overlay, OverlayCreate, OverlayRemove } from './component/Overlay'\n\nimport { getIndicatorClass } from './extension/indicator/index'\nimport { getStyles as getExtensionStyles } from './extension/styles/index'\n\nimport ChartEvent from './ChartEvent'\n\nexport enum DomPosition {\n Root = 'root',\n Main = 'main',\n YAxis = 'yAxis'\n}\n\nexport interface ConvertFinder {\n paneId?: string\n absolute?: boolean\n}\n\nexport interface Chart {\n getDom: (paneId?: string, position?: DomPosition) => Nullable\n getSize: (paneId?: string, position?: DomPosition) => Nullable\n setLocale: (locale: string) => void\n getLocale: () => string\n setStyles: (styles: string | DeepPartial) => void\n getStyles: () => Styles\n setCustomApi: (customApi: Partial) => void\n setPriceVolumePrecision: (pricePrecision: number, volumePrecision: number) => void\n getPriceVolumePrecision: () => Precision\n setTimezone: (timezone: string) => void\n getTimezone: () => string\n setOffsetRightDistance: (space: number) => void\n getOffsetRightDistance: () => number\n setLeftMinVisibleBarCount: (barCount: number) => void\n setRightMinVisibleBarCount: (barCount: number) => void\n setBarSpace: (space: number) => void\n getBarSpace: () => number\n getVisibleRange: () => VisibleRange\n clearData: () => void\n getDataList: () => KLineData[]\n applyNewData: (dataList: KLineData[], more?: boolean, callback?: () => void) => void\n applyMoreData: (dataList: KLineData[], more?: boolean, callback?: () => void) => void\n updateData: (data: KLineData, callback?: () => void) => void\n loadMore: (cb: LoadMoreCallback) => void\n createIndicator: (value: string | IndicatorCreate, isStack?: boolean, paneOptions?: PaneOptions, callback?: () => void) => Nullable\n overrideIndicator: (override: IndicatorCreate, paneId?: string, callback?: () => void) => void\n getIndicatorByPaneId: (paneId?: string, name?: string) => Nullable | Nullable> | Map>\n removeIndicator: (paneId: string, name?: string) => void\n createOverlay: (value: string | OverlayCreate | Array, paneId?: string) => Nullable | Array>\n getOverlayById: (id: string) => Nullable\n overrideOverlay: (override: Partial) => void\n removeOverlay: (remove?: string | OverlayRemove) => void\n setPaneOptions: (options: PaneOptions) => void\n setZoomEnabled: (enabled: boolean) => void\n isZoomEnabled: () => boolean\n setScrollEnabled: (enabled: boolean) => void\n isScrollEnabled: () => boolean\n scrollByDistance: (distance: number, animationDuration?: number) => void\n scrollToRealTime: (animationDuration?: number) => void\n scrollToDataIndex: (dataIndex: number, animationDuration?: number) => void\n scrollToTimestamp: (timestamp: number, animationDuration?: number) => void\n zoomAtCoordinate: (scale: number, coordinate?: Coordinate, animationDuration?: number) => void\n zoomAtDataIndex: (scale: number, dataIndex: number, animationDuration?: number) => void\n zoomAtTimestamp: (scale: number, timestamp: number, animationDuration?: number) => void\n convertToPixel: (points: Partial | Array>, finder: ConvertFinder) => Partial | Array>\n convertFromPixel: (coordinates: Array>, finder: ConvertFinder) => Partial | Array>\n executeAction: (type: ActionType, data: any) => void\n subscribeAction: (type: ActionType, callback: ActionCallback) => void\n unsubscribeAction: (type: ActionType, callback?: ActionCallback) => void\n getConvertPictureUrl: (includeOverlay?: boolean, type?: string, backgroundColor?: string) => string\n resize: () => void\n destroy: () => void\n}\n\nexport default class ChartImp implements Chart {\n private _container: HTMLElement\n private _chartContainer: HTMLElement\n private readonly _chartEvent: ChartEvent\n private readonly _chartStore: ChartStore\n private readonly _xAxisPane: XAxisPane\n private readonly _panes: Map = new Map()\n\n constructor (container: HTMLElement, options?: Options) {\n this._initContainer(container)\n this._chartEvent = new ChartEvent(this._chartContainer, this)\n this._chartStore = new ChartStore(this, options)\n this._xAxisPane = new XAxisPane(this._chartContainer, this, PaneIdConstants.XAXIS)\n this._panes.set(PaneIdConstants.CANDLE, new CandlePane(this._chartContainer, this, PaneIdConstants.CANDLE))\n this.adjustPaneViewport(true, true, true)\n }\n\n private _initContainer (container: HTMLElement): void {\n this._container = container\n this._chartContainer = createDom('div', {\n position: 'relative',\n width: '100%',\n outline: 'none',\n borderStyle: 'none',\n cursor: 'crosshair',\n boxSizing: 'border-box',\n userSelect: 'none',\n webkitUserSelect: 'none',\n // @ts-expect-error\n msUserSelect: 'none',\n MozUserSelect: 'none',\n webkitTapHighlightColor: 'transparent'\n })\n this._chartContainer.tabIndex = 1\n container.appendChild(this._chartContainer)\n }\n\n private _measurePaneHeight (): void {\n const totalHeight = this._container.offsetHeight\n const xAxisHeight = this._xAxisPane.getAxisComponent().getAutoSize()\n let paneExcludeXAxisHeight = totalHeight - xAxisHeight\n if (paneExcludeXAxisHeight < 0) {\n paneExcludeXAxisHeight = 0\n }\n let indicatorPaneTotalHeight = 0\n this._panes.forEach(pane => {\n if (pane.getId() !== PaneIdConstants.CANDLE) {\n let paneHeight = pane.getBounding().height\n const paneMinHeight = pane.getOptions().minHeight\n if (paneHeight < paneMinHeight) {\n paneHeight = paneMinHeight\n }\n if (indicatorPaneTotalHeight + paneHeight > paneExcludeXAxisHeight) {\n indicatorPaneTotalHeight = paneExcludeXAxisHeight\n paneHeight = Math.max(paneExcludeXAxisHeight - indicatorPaneTotalHeight, 0)\n } else {\n indicatorPaneTotalHeight += paneHeight\n }\n pane.setBounding({ height: paneHeight })\n }\n })\n\n const candlePaneHeight = paneExcludeXAxisHeight - indicatorPaneTotalHeight\n this._panes.get(PaneIdConstants.CANDLE)?.setBounding({ height: candlePaneHeight })\n\n let top = 0\n this._panes.forEach(pane => {\n pane.setBounding({ top })\n top += pane.getBounding().height\n })\n this._xAxisPane.setBounding({ height: xAxisHeight, top })\n }\n\n private _measurePaneWidth (): void {\n const styles = this._chartStore.getStyles()\n const yAxisStyles = styles.yAxis\n const isYAxisLeft = yAxisStyles.position === YAxisPosition.Left\n const isOutside = !yAxisStyles.inside\n const totolWidth = this._container.offsetWidth\n let mainWidth = 0\n let yAxisWidth = Number.MIN_SAFE_INTEGER\n let yAxisLeft = 0\n let mainLeft = 0\n this._panes.forEach(pane => {\n yAxisWidth = Math.max(yAxisWidth, pane.getAxisComponent().getAutoSize())\n })\n if (yAxisWidth > totolWidth) {\n yAxisWidth = totolWidth\n }\n if (isOutside) {\n mainWidth = totolWidth - yAxisWidth\n if (isYAxisLeft) {\n yAxisLeft = 0\n mainLeft = yAxisWidth\n } else {\n yAxisLeft = totolWidth - yAxisWidth\n mainLeft = 0\n }\n } else {\n mainWidth = totolWidth\n mainLeft = 0\n if (isYAxisLeft) {\n yAxisLeft = 0\n } else {\n yAxisLeft = totolWidth - yAxisWidth\n }\n }\n\n this._chartStore.getTimeScaleStore().setTotalBarSpace(mainWidth)\n\n const paneBounding = { width: totolWidth }\n const mainBounding = { width: mainWidth, left: mainLeft }\n const yAxisBounding = { width: yAxisWidth, left: yAxisLeft }\n this._panes.forEach((pane) => {\n pane.setBounding(paneBounding, mainBounding, yAxisBounding)\n })\n this._xAxisPane.setBounding(paneBounding, mainBounding, yAxisBounding)\n }\n\n private _setPaneOptions (options: PaneOptions, forceShouldAdjust: boolean): void {\n const pane = this._panes.get(options?.id ?? '')\n let shouldMeasureHeight = false\n if (pane !== undefined) {\n let shouldAdjust = forceShouldAdjust\n if (options.id !== PaneIdConstants.CANDLE && options.height !== undefined && options.height > 0) {\n const minHeight = Math.max(options.minHeight ?? pane.getOptions().minHeight, 0)\n const height = Math.max(minHeight, options.height)\n pane.setBounding({ height })\n shouldAdjust = true\n shouldMeasureHeight = true\n }\n pane.setOptions(options)\n if (shouldAdjust) {\n this.adjustPaneViewport(shouldMeasureHeight, true, true, true, true)\n }\n }\n }\n\n getContainer (): HTMLElement { return this._container }\n\n getChartStore (): ChartStore { return this._chartStore }\n\n getAllPanes (): Map { return this._panes }\n\n adjustPaneViewport (\n shouldMeasureHeight: boolean,\n shouldMeasureWidth: boolean,\n shouldUpdate: boolean,\n shouldAdjustYAxis?: boolean,\n shouldForceAdjustYAxis?: boolean\n ): void {\n if (shouldMeasureHeight) {\n this._measurePaneHeight()\n }\n let forceMeasureWidth = shouldMeasureWidth\n const adjustYAxis = shouldAdjustYAxis ?? false\n const forceAdjustYAxis = shouldForceAdjustYAxis ?? false\n if (adjustYAxis || forceAdjustYAxis) {\n this._panes.forEach(pane => {\n const adjust = pane.getAxisComponent().buildTicks(forceAdjustYAxis)\n if (!forceMeasureWidth) {\n forceMeasureWidth = adjust\n }\n })\n }\n if (forceMeasureWidth) {\n this._measurePaneWidth()\n }\n if (shouldUpdate ?? false) {\n this._xAxisPane.getAxisComponent().buildTicks(true)\n this.updatePane(UpdateLevel.All)\n }\n }\n\n updatePane (level: UpdateLevel, paneId?: string): void {\n if (paneId !== undefined) {\n this.getPaneById(paneId)?.update(level)\n } else {\n this._xAxisPane.update(level)\n this._panes.forEach(pane => {\n pane.update(level)\n })\n }\n }\n\n getPaneById (paneId: string): Nullable> {\n if (paneId === PaneIdConstants.XAXIS) {\n return this._xAxisPane\n }\n return this._panes.get(paneId) ?? null\n }\n\n crosshairChange (crosshair: Crosshair): void {\n const actionStore = this._chartStore.getActionStore()\n if (actionStore.has(ActionType.OnCrosshairChange)) {\n const indicatorData = {}\n this._panes.forEach((_, id) => {\n const paneIndicatorData = {}\n const indicators = this._chartStore.getIndicatorStore().getInstances(id)\n indicators.forEach(indicator => {\n const result = indicator.result\n paneIndicatorData[indicator.name] = result[crosshair.dataIndex ?? result.length - 1]\n })\n indicatorData[id] = paneIndicatorData\n })\n if (crosshair.paneId !== undefined) {\n actionStore.execute(ActionType.OnCrosshairChange, {\n ...crosshair,\n indicatorData\n })\n }\n }\n }\n\n getDom (paneId?: string, position?: DomPosition): Nullable {\n if (paneId !== undefined) {\n const pane = this.getPaneById(paneId)\n if (pane !== null) {\n const pos = position ?? DomPosition.Root\n switch (pos) {\n case DomPosition.Root: {\n return pane.getContainer()\n }\n case DomPosition.Main: {\n return pane.getMainWidget().getContainer()\n }\n case DomPosition.YAxis: {\n return pane.getYAxisWidget()?.getContainer() ?? null\n }\n }\n }\n } else {\n return this._chartContainer\n }\n return null\n }\n\n getSize (paneId?: string, position?: DomPosition): Nullable {\n if (paneId !== undefined) {\n const pane = this.getPaneById(paneId)\n if (pane !== null) {\n const pos = position ?? DomPosition.Root\n switch (pos) {\n case DomPosition.Root: {\n return pane.getBounding()\n }\n case DomPosition.Main: {\n return pane.getMainWidget().getBounding()\n }\n case DomPosition.YAxis: {\n return pane.getYAxisWidget()?.getBounding() ?? null\n }\n }\n }\n } else {\n return {\n width: this._chartContainer.offsetWidth,\n height: this._chartContainer.offsetHeight,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n }\n }\n return null\n }\n\n setStyles (styles: string | DeepPartial): void {\n this._chartStore.setOptions({ styles })\n let realStyles: Nullable>\n if (isString(styles)) {\n realStyles = getExtensionStyles(styles)\n } else {\n realStyles = styles\n }\n if (realStyles?.yAxis?.type !== undefined) {\n this.getPaneById(PaneIdConstants.CANDLE)?.getAxisComponent().setAutoCalcTickFlag(true)\n }\n this.adjustPaneViewport(true, true, true, true, true)\n }\n\n getStyles (): Styles {\n return this._chartStore.getStyles()\n }\n\n setLocale (locale: string): void {\n this._chartStore.setOptions({ locale })\n this.adjustPaneViewport(true, true, true, true, true)\n }\n\n getLocale (): string {\n return this._chartStore.getLocale()\n }\n\n setCustomApi (customApi: Partial): void {\n this._chartStore.setOptions({ customApi })\n this.adjustPaneViewport(true, true, true, true, true)\n }\n\n setPriceVolumePrecision (pricePrecision: number, volumePrecision: number): void {\n this._chartStore.setPrecision({ price: pricePrecision, volume: volumePrecision })\n }\n\n getPriceVolumePrecision (): Precision {\n return this._chartStore.getPrecision()\n }\n\n setTimezone (timezone: string): void {\n this._chartStore.setOptions({ timezone })\n this._xAxisPane.getAxisComponent().buildTicks(true)\n this._xAxisPane.update(UpdateLevel.Drawer)\n }\n\n getTimezone (): string {\n return this._chartStore.getTimeScaleStore().getTimezone()\n }\n\n setOffsetRightDistance (space: number): void {\n this._chartStore.getTimeScaleStore().setOffsetRightDistance(space, true)\n }\n\n getOffsetRightDistance (): number {\n return this._chartStore.getTimeScaleStore().getOffsetRightDistance()\n }\n\n setLeftMinVisibleBarCount (barCount: number): void {\n if (barCount > 0) {\n this._chartStore.getTimeScaleStore().setLeftMinVisibleBarCount(Math.ceil(barCount))\n } else {\n logWarn('setLeftMinVisibleBarCount', 'barCount', 'barCount must greater than zero!!!')\n }\n }\n\n setRightMinVisibleBarCount (barCount: number): void {\n if (barCount > 0) {\n this._chartStore.getTimeScaleStore().setRightMinVisibleBarCount(Math.ceil(barCount))\n } else {\n logWarn('setRightMinVisibleBarCount', 'barCount', 'barCount must be a number and greater than zero!!!')\n }\n }\n\n setBarSpace (space: number): void {\n this._chartStore.getTimeScaleStore().setBarSpace(space)\n }\n\n getBarSpace (): number {\n return this._chartStore.getTimeScaleStore().getBarSpace().bar\n }\n\n getVisibleRange (): VisibleRange {\n return this._chartStore.getTimeScaleStore().getVisibleRange()\n }\n\n clearData (): void {\n this._chartStore.clearDataList()\n }\n\n getDataList (): KLineData[] {\n return this._chartStore.getDataList()\n }\n\n applyNewData (dataList: KLineData[], more?: boolean, callback?: () => void): void {\n this._chartStore.clearDataList()\n if (dataList.length === 0) {\n this.adjustPaneViewport(false, true, true, true)\n } else {\n this.applyMoreData(dataList, more, callback)\n }\n }\n\n applyMoreData (dataList: KLineData[], more?: boolean, callback?: () => void): void {\n this._chartStore.addData(dataList, 0, more)\n if (dataList.length > 0) {\n this._chartStore.getIndicatorStore().calcInstance().then(\n _ => {\n this.adjustPaneViewport(false, true, true, true)\n callback?.()\n }\n ).catch(_ => {})\n }\n }\n\n updateData (data: KLineData, callback?: () => void): void {\n const dataList = this._chartStore.getDataList()\n const dataCount = dataList.length\n // Determine where individual data should be added\n const timestamp = data.timestamp\n const lastDataTimestamp = formatValue(dataList[dataCount - 1], 'timestamp', 0) as number\n if (timestamp >= lastDataTimestamp) {\n let pos = dataCount\n if (timestamp === lastDataTimestamp) {\n pos = dataCount - 1\n }\n this._chartStore.addData(data, pos)\n this._chartStore.getIndicatorStore().calcInstance().then(\n _ => {\n this.adjustPaneViewport(false, true, true, true)\n callback?.()\n }\n ).catch(_ => {})\n }\n }\n\n loadMore (cb: LoadMoreCallback): void {\n this._chartStore.getTimeScaleStore().setLoadMoreCallback(cb)\n }\n\n createIndicator (value: string | IndicatorCreate, isStack?: boolean, paneOptions?: Nullable, callback?: () => void): Nullable {\n const indicator = isString(value) ? { name: value } : value\n if (getIndicatorClass(indicator.name) === null) {\n logWarn('createIndicator', 'value', 'indicator not supported, you may need to use registerIndicator to add one!!!')\n return null\n }\n\n let paneId: string\n if (isValid(paneOptions) && isString(paneOptions?.id) && this._panes.has(paneOptions.id)) {\n paneId = paneOptions.id\n this._chartStore.getIndicatorStore().addInstance(indicator, paneId, isStack ?? false).then(_ => {\n this._setPaneOptions(paneOptions, this._panes.get(paneId)?.getAxisComponent().buildTicks(true) ?? false)\n }).catch(_ => {})\n } else {\n paneId = paneOptions?.id ?? createId(PaneIdConstants.INDICATOR)\n const topPane = Array.from(this._panes.values()).pop() as unknown as Pane\n const pane = new IndicatorPane(this._chartContainer, this, paneId, topPane)\n topPane.setBottomPane(pane)\n const height = paneOptions?.height ?? PANE_DEFAULT_HEIGHT\n pane.setBounding({ height })\n if (isValid(paneOptions)) {\n pane.setOptions(paneOptions)\n }\n this._panes.set(paneId, pane)\n this._chartStore.getIndicatorStore().addInstance(indicator, paneId, isStack ?? false).finally(() => {\n this.adjustPaneViewport(true, true, true, true, true)\n callback?.()\n })\n }\n return paneId\n }\n\n overrideIndicator (override: IndicatorCreate, paneId?: Nullable, callback?: () => void): void {\n this._chartStore.getIndicatorStore().override(override, paneId ?? null).then(\n ([onlyUpdateFlag, resizeFlag]) => {\n if (onlyUpdateFlag || resizeFlag) {\n this.adjustPaneViewport(false, resizeFlag, true, resizeFlag)\n callback?.()\n }\n }\n ).catch(() => {})\n }\n\n getIndicatorByPaneId (paneId?: string, name?: string): Nullable | Nullable> | Map> {\n return this._chartStore.getIndicatorStore().getInstanceByPaneId(paneId, name)\n }\n\n removeIndicator (paneId: string, name?: string): void {\n const indicatorStore = this._chartStore.getIndicatorStore()\n const removed = indicatorStore.removeInstance(paneId, name)\n if (removed) {\n let shouldMeasureHeight = false\n if (paneId !== PaneIdConstants.CANDLE) {\n if (!indicatorStore.hasInstances(paneId)) {\n const deletePane = this._panes.get(paneId)\n if (deletePane !== undefined) {\n shouldMeasureHeight = true\n const deleteTopPane = deletePane.getTopPane()\n const deleteBottomPane = deletePane.getBottomPane()\n deleteBottomPane?.setTopPane(deleteTopPane)\n deleteTopPane?.setBottomPane(deleteBottomPane)\n deletePane?.destroy()\n this._panes.delete(paneId)\n }\n }\n }\n this.adjustPaneViewport(shouldMeasureHeight, true, true, true, true)\n }\n }\n\n createOverlay (value: string | OverlayCreate | Array, paneId?: string): Nullable | Array> {\n let overlays: OverlayCreate[] = []\n if (isString(value)) {\n overlays = [{ name: value }]\n } else if (isArray>(value)) {\n overlays = (value as Array).map((v: string | OverlayCreate) => {\n if (isString(v)) {\n return { name: v }\n }\n return v\n })\n } else {\n const overlay = value as OverlayCreate\n overlays = [overlay]\n }\n let appointPaneFlag = true\n if (paneId === undefined || this.getPaneById(paneId) === null) {\n paneId = PaneIdConstants.CANDLE\n appointPaneFlag = false\n }\n const ids = this._chartStore.getOverlayStore().addInstances(overlays, paneId, appointPaneFlag)\n if (isArray(value)) {\n return ids\n }\n return ids[0]\n }\n\n getOverlayById (id: string): Nullable {\n return this._chartStore.getOverlayStore().getInstanceById(id)\n }\n\n overrideOverlay (override: Partial): void {\n this._chartStore.getOverlayStore().override(override)\n }\n\n removeOverlay (remove?: string | OverlayRemove): void {\n let overlayRemove\n if (remove !== undefined) {\n if (isString(remove)) {\n overlayRemove = { id: remove }\n } else {\n overlayRemove = remove\n }\n }\n this._chartStore.getOverlayStore().removeInstance(overlayRemove)\n }\n\n setPaneOptions (options: PaneOptions): void {\n this._setPaneOptions(options, false)\n }\n\n setZoomEnabled (enabled: boolean): void {\n this._chartStore.getTimeScaleStore().setZoomEnabled(enabled)\n }\n\n isZoomEnabled (): boolean {\n return this._chartStore.getTimeScaleStore().getZoomEnabled()\n }\n\n setScrollEnabled (enabled: boolean): void {\n this._chartStore.getTimeScaleStore().setScrollEnabled(enabled)\n }\n\n isScrollEnabled (): boolean {\n return this._chartStore.getTimeScaleStore().getScrollEnabled()\n }\n\n scrollByDistance (distance: number, animationDuration?: number): void {\n const duration = animationDuration === undefined || animationDuration < 0 ? 0 : animationDuration\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n if (duration > 0) {\n timeScaleStore.startScroll()\n const startTime = new Date().getTime()\n const animation: (() => void) = () => {\n const progress = (new Date().getTime() - startTime) / duration\n const finished = progress >= 1\n const dis = finished ? distance : distance * progress\n timeScaleStore.scroll(dis)\n if (!finished) {\n requestAnimationFrame(animation)\n }\n }\n animation()\n } else {\n timeScaleStore.startScroll()\n timeScaleStore.scroll(distance)\n }\n }\n\n scrollToRealTime (animationDuration?: number): void {\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n const { bar: barSpace } = timeScaleStore.getBarSpace()\n const difBarCount = timeScaleStore.getOffsetRightBarCount() - timeScaleStore.getInitialOffsetRightDistance() / barSpace\n const distance = difBarCount * barSpace\n this.scrollByDistance(distance, animationDuration)\n }\n\n scrollToDataIndex (dataIndex: number, animationDuration?: number): void {\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n const distance = (\n timeScaleStore.getOffsetRightBarCount() + (this.getDataList().length - 1 - dataIndex)\n ) * timeScaleStore.getBarSpace().bar\n this.scrollByDistance(distance, animationDuration)\n }\n\n scrollToTimestamp (timestamp: number, animationDuration?: number): void {\n const dataIndex = binarySearchNearest(this.getDataList(), 'timestamp', timestamp)\n this.scrollToDataIndex(dataIndex, animationDuration)\n }\n\n zoomAtCoordinate (scale: number, coordinate?: Coordinate, animationDuration?: number): void {\n const duration = animationDuration === undefined || animationDuration < 0 ? 0 : animationDuration\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n if (duration > 0) {\n const { bar: barSpace } = timeScaleStore.getBarSpace()\n const scaleDataSpace = barSpace * scale\n const difSpace = scaleDataSpace - barSpace\n const startTime = new Date().getTime()\n const animation: (() => void) = () => {\n const progress = (new Date().getTime() - startTime) / duration\n const finished = progress >= 1\n const progressDataSpace = finished ? difSpace : difSpace * progress\n timeScaleStore.zoom(progressDataSpace / barSpace, coordinate)\n if (!finished) {\n requestAnimationFrame(animation)\n }\n }\n animation()\n } else {\n timeScaleStore.zoom(scale, coordinate)\n }\n }\n\n zoomAtDataIndex (scale: number, dataIndex: number, animationDuration?: number): void {\n const x = this._chartStore.getTimeScaleStore().dataIndexToCoordinate(dataIndex)\n this.zoomAtCoordinate(scale, { x, y: 0 }, animationDuration)\n }\n\n zoomAtTimestamp (scale: number, timestamp: number, animationDuration?: number): void {\n const dataIndex = binarySearchNearest(this.getDataList(), 'timestamp', timestamp)\n this.zoomAtDataIndex(scale, dataIndex, animationDuration)\n }\n\n convertToPixel (points: Partial | Array>, finder: ConvertFinder): Partial | Array> {\n const { paneId = PaneIdConstants.CANDLE, absolute = false } = finder\n let coordinates: Array> = []\n if (paneId !== PaneIdConstants.XAXIS) {\n const pane = this.getPaneById(paneId)\n if (pane !== null) {\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n const bounding = pane.getBounding()\n const ps = new Array>().concat(points)\n const xAxis = this._xAxisPane.getAxisComponent()\n const yAxis = pane.getAxisComponent()\n coordinates = ps.map(point => {\n const coordinate: Partial = {}\n let dataIndex = point.dataIndex\n if (point.timestamp !== undefined) {\n dataIndex = timeScaleStore.timestampToDataIndex(point.timestamp)\n }\n if (dataIndex !== undefined) {\n coordinate.x = xAxis?.convertToPixel(dataIndex)\n }\n if (point.value !== undefined) {\n const y = yAxis?.convertToPixel(point.value)\n coordinate.y = absolute ? bounding.top + y : y\n }\n return coordinate\n })\n }\n }\n return isArray(points) ? coordinates : (coordinates[0] ?? {})\n }\n\n convertFromPixel (coordinates: Array>, finder: ConvertFinder): Partial | Array> {\n const { paneId = PaneIdConstants.CANDLE, absolute = false } = finder\n let points: Array> = []\n if (paneId !== PaneIdConstants.XAXIS) {\n const pane = this.getPaneById(paneId)\n if (pane !== null) {\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n const bounding = pane.getBounding()\n const cs = new Array>().concat(coordinates)\n const xAxis = this._xAxisPane.getAxisComponent()\n const yAxis = pane.getAxisComponent()\n points = cs.map(coordinate => {\n const point: Partial = {}\n if (coordinate.x !== undefined) {\n const dataIndex = xAxis.convertFromPixel(coordinate.x)\n point.dataIndex = dataIndex\n point.timestamp = timeScaleStore.dataIndexToTimestamp(dataIndex) ?? undefined\n }\n if (coordinate.y !== undefined) {\n const y = absolute ? coordinate.y - bounding.top : coordinate.y\n point.value = yAxis.convertFromPixel(y)\n }\n return point\n })\n }\n }\n return isArray(coordinates) ? points : (points[0] ?? {})\n }\n\n executeAction (type: ActionType, data: any): void {\n switch (type) {\n case ActionType.OnCrosshairChange: {\n const crosshair = { ...data }\n crosshair.paneId = crosshair.paneId ?? PaneIdConstants.CANDLE\n this._chartStore.getCrosshairStore().set(crosshair)\n break\n }\n }\n }\n\n subscribeAction (type: ActionType, callback: ActionCallback): void {\n this._chartStore.getActionStore().subscribe(type, callback)\n }\n\n unsubscribeAction (type: ActionType, callback?: ActionCallback): void {\n this._chartStore.getActionStore().unsubscribe(type, callback)\n }\n\n getConvertPictureUrl (includeOverlay?: boolean, type?: string, backgroundColor?: string): string {\n const width = this._chartContainer.offsetWidth\n const height = this._chartContainer.offsetHeight\n const canvas = createDom('canvas', {\n width: `${width}px`,\n height: `${height}px`,\n boxSizing: 'border-box'\n })\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D\n const pixelRatio = getPixelRatio(canvas)\n canvas.width = width * pixelRatio\n canvas.height = height * pixelRatio\n ctx.scale(pixelRatio, pixelRatio)\n\n ctx.fillStyle = backgroundColor ?? '#FFFFFF'\n ctx.fillRect(0, 0, width, height)\n const overlayFlag = includeOverlay ?? false\n this._panes.forEach(pane => {\n const bounding = pane.getBounding()\n ctx.drawImage(\n pane.getImage(overlayFlag),\n 0, bounding.top, width, bounding.height\n )\n })\n const xAxisBounding = this._xAxisPane.getBounding()\n ctx.drawImage(\n this._xAxisPane.getImage(overlayFlag),\n 0, xAxisBounding.top, width, xAxisBounding.height\n )\n return canvas.toDataURL(`image/${type ?? 'jpeg'}`)\n }\n\n resize (): void {\n this.adjustPaneViewport(true, true, true, true, true)\n }\n\n destroy (): void {\n this._chartEvent.destroy()\n this._panes.forEach(pane => {\n pane.destroy()\n })\n this._panes.clear()\n this._xAxisPane.destroy()\n this._container.removeChild(this._chartContainer)\n }\n}\n","/**\n * ___ ___ ___ ___ ___ ___ ___ ___ ___\n * /\\__\\ /\\__\\ ___ /\\__\\ /\\ \\ /\\ \\ /\\__\\ /\\ \\ /\\ \\ /\\ \\\n * /:/ / /:/ / /\\ \\ /::| | /::\\ \\ /::\\ \\ /:/ / /::\\ \\ /::\\ \\ \\:\\ \\\n * /:/__/ /:/ / \\:\\ \\ /:|:| | /:/\\:\\ \\ /:/\\:\\ \\ /:/__/ /:/\\:\\ \\ /:/\\:\\ \\ \\:\\ \\\n * /::\\__\\____ /:/ / /::\\__\\ /:/|:| |__ /::\\~\\:\\ \\ /:/ \\:\\ \\ /::\\ \\ ___ /::\\~\\:\\ \\ /::\\~\\:\\ \\ /::\\ \\\n * /:/\\:::::\\__\\ /:/__/ __/:/\\/__/ /:/ |:| /\\__\\ /:/\\:\\ \\:\\__\\ /:/__/ \\:\\__\\ /:/\\:\\ /\\__\\ /:/\\:\\ \\:\\__\\ /:/\\:\\ \\:\\__\\ /:/\\:\\__\\\n * \\/_|:|~~|~ \\:\\ \\ /\\/:/ / \\/__|:|/:/ / \\:\\~\\:\\ \\/__/ \\:\\ \\ \\/__/ \\/__\\:\\/:/ / \\/__\\:\\/:/ / \\/_|::\\/:/ / /:/ \\/__/\n * |:| | \\:\\ \\ \\::/__/ |:/:/ / \\:\\ \\:\\__\\ \\:\\ \\ \\::/ / \\::/ / |:|::/ / /:/ /\n * |:| | \\:\\ \\ \\:\\__\\ |::/ / \\:\\ \\/__/ \\:\\ \\ /:/ / /:/ / |:|\\/__/ \\/__/\n * |:| | \\:\\__\\ \\/__/ /:/ / \\:\\__\\ \\:\\__\\ /:/ / /:/ / |:| |\n * \\|__| \\/__/ \\/__/ \\/__/ \\/__/ \\/__/ \\/__/ \\|__|\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Options, LineType, PolygonType, TooltipShowRule, TooltipShowType, TooltipIconPosition,\n CandleType, YAxisPosition, YAxisType, FormatDateType\n} from './common/Options'\nimport ChartImp, { Chart, DomPosition } from './Chart'\n\nimport { ActionType } from './common/Action'\nimport { IndicatorSeries } from './component/Indicator'\nimport { OverlayMode } from './component/Overlay'\n\nimport { checkCoordinateOnArc, drawArc } from './extension/figure/arc'\nimport { checkCoordinateOnCircle, drawCircle } from './extension/figure/circle'\nimport {\n checkCoordinateOnLine, drawLine,\n getLinearYFromSlopeIntercept, getLinearSlopeIntercept, getLinearYFromCoordinates\n} from './extension/figure/line'\nimport { checkCoordinateOnPolygon, drawPolygon } from './extension/figure/polygon'\nimport { checkCoordinateOnRect, drawRect } from './extension/figure/rect'\nimport { drawRectText } from './extension/figure/rectText'\nimport { checkCoordinateOnText, drawText } from './extension/figure/text'\n\nimport { registerFigure, getSupportedFigures, getFigureClass } from './extension/figure/index'\nimport { registerIndicator, getSupportedIndicators } from './extension/indicator/index'\nimport { registerLocale, getSupportedLocales } from './extension/i18n/index'\nimport { registerOverlay, getSupportedOverlays } from './extension/overlay/index'\nimport { registerStyles } from './extension/styles/index'\n\nimport Nullable from './common/Nullable'\n\nimport { logError, logTag, logWarn } from './common/utils/logger'\n\nimport {\n clone, merge, isString, isNumber, isValid, isObject, isArray, isFunction, isBoolean\n} from './common/utils/typeChecks'\nimport { formatValue, formatPrecision, formatBigNumber, formatDate, formatThousands } from './common/utils/format'\nimport { calcTextWidth } from './common/utils/canvas'\n\nconst instances: {[id: string]: Chart} = {}\nlet chartBaseId = 1\n\n/**\n * Chart version\n * @return {string}\n */\nfunction version (): string {\n return '__BUILD_VERSION__'\n}\n\n/**\n * Init chart instance\n * @param ds\n * @param options\n * @returns {Chart}\n */\nfunction init (ds: HTMLElement | string, options?: Options): Chart | null {\n logTag()\n const errorMessage = 'The chart cannot be initialized correctly. Please check the parameters. The chart container cannot be null and child elements need to be added!!!'\n let dom: Nullable\n if (isString(ds)) {\n dom = document.getElementById(ds)\n } else {\n dom = ds\n }\n if (dom === null) {\n logError('', '', errorMessage)\n return null\n }\n // @ts-expect-error\n let chart = instances[dom.chartId ?? '']\n if (chart !== undefined) {\n logWarn('', '', 'The chart has been initialized on the dom!!!')\n return chart\n }\n const id = `k_line_chart_${chartBaseId++}`\n chart = new ChartImp(dom, options)\n // @ts-expect-error\n chart.id = id\n // @ts-expect-error\n dom.chartId = id\n instances[id] = chart\n return chart\n}\n\n/**\n * Destory chart instace\n * @param dcs\n */\nfunction dispose (dcs: HTMLElement | Chart | string): void {\n let id: Nullable\n if (isString(dcs)) {\n const dom = document.getElementById(dcs)\n id = dom?.getAttribute('chartId') ?? null\n } else if (dcs instanceof ChartImp) {\n // @ts-expect-error\n id = dcs.id\n } else {\n // @ts-expect-error\n id = dcs ?? dcs.chartId\n }\n if (id !== null) {\n instances[id].destroy()\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete instances[id]\n }\n}\n\nconst utils = {\n clone,\n merge,\n isString,\n isNumber,\n isValid,\n isObject,\n isArray,\n isFunction,\n isBoolean,\n formatValue,\n formatPrecision,\n formatBigNumber,\n formatDate,\n formatThousands,\n calcTextWidth,\n getLinearSlopeIntercept,\n getLinearYFromSlopeIntercept,\n getLinearYFromCoordinates,\n checkCoordinateOnArc,\n checkCoordinateOnCircle,\n checkCoordinateOnLine,\n checkCoordinateOnPolygon,\n checkCoordinateOnRect,\n checkCoordinateOnText,\n drawArc,\n drawCircle,\n drawLine,\n drawPolygon,\n drawRect,\n drawText,\n drawRectText\n}\n\nexport {\n version, init, dispose,\n registerFigure, getSupportedFigures, getFigureClass,\n registerIndicator, getSupportedIndicators,\n registerOverlay, getSupportedOverlays,\n registerLocale, getSupportedLocales,\n registerStyles, utils,\n LineType, PolygonType, TooltipShowRule, TooltipShowType, TooltipIconPosition,\n CandleType, YAxisPosition, YAxisType, FormatDateType,\n DomPosition, ActionType, IndicatorSeries, OverlayMode\n}\n"],"names":["LineType","PolygonType","TooltipShowRule","TooltipShowType","TooltipIconPosition","CandleType","YAxisPosition","YAxisType","FormatDateType","ActionType","IndicatorSeries","extensions","OverlayMode","getDistance","Action","requestAnimationFrame","CandleLastPriceLineView","YAxisView","YAxis","XAxis","DomPosition","getExtensionStyles"],"mappings":"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","x_google_ignoreList":[3]}