{"version":3,"file":"klinecharts.js","sources":["../../node_modules/.pnpm/@rollup+plugin-typescript@11.1.6_rollup@4.28.1_tslib@2.8.1_typescript@5.7.2/node_modules/tslib/tslib.es6.js","../../src/common/Styles.ts","../../src/common/utils/logger.ts","../../src/common/utils/typeChecks.ts","../../src/common/utils/format.ts","../../src/common/utils/canvas.ts","../../src/common/Action.ts","../../src/component/Indicator.ts","../../src/component/Overlay.ts","../../src/Options.ts","../../src/common/Bounding.ts","../../src/common/utils/compatible.ts","../../src/common/Animation.ts","../../src/common/utils/id.ts","../../src/common/utils/dom.ts","../../src/common/utils/number.ts","../../src/common/LoadDataCallback.ts","../../src/common/VisibleRange.ts","../../src/common/TaskScheduler.ts","../../src/common/TimeWeightTick.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/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/extension/styles/light.ts","../../src/extension/styles/dark.ts","../../src/extension/styles/index.ts","../../src/pane/types.ts","../../src/Store.ts","../../src/widget/types.ts","../../src/common/Canvas.ts","../../src/widget/Widget.ts","../../src/widget/DrawWidget.ts","../../src/common/utils/color.ts","../../src/extension/figure/circle.ts","../../src/extension/figure/polygon.ts","../../src/extension/figure/rect.ts","../../src/extension/figure/text.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/component/Axis.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/YAxis.ts","../../src/extension/y-axis/normal.ts","../../src/extension/y-axis/percentage.ts","../../src/extension/y-axis/logarithm.ts","../../src/extension/y-axis/index.ts","../../src/pane/Pane.ts","../../src/pane/DrawPane.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/extension/x-axis/normal.ts","../../src/extension/x-axis/index.ts","../../src/pane/XAxisPane.ts","../../src/common/utils/performance.ts","../../src/widget/SeparatorWidget.ts","../../src/pane/SeparatorPane.ts","../../src/common/utils/platform.ts","../../src/common/SyntheticEvent.ts","../../src/Event.ts","../../src/Chart.ts","../../src/index.ts"],"sourcesContent":["/******************************************************************************\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, SuppressedError, Symbol, Iterator */\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 = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\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\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\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 = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\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 function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\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\nimport type Nullable from './Nullable'\nimport type { KLineData } from './Data'\n\nexport interface Margin {\n marginLeft: number\n marginTop: number\n marginRight: number\n marginBottom: number\n}\n\nexport interface Padding {\n paddingLeft: number\n paddingTop: number\n paddingRight: number\n paddingBottom: number\n}\n\nexport interface Offset {\n offsetLeft: number\n offsetTop: number\n offsetRight: number\n offsetBottom: number\n}\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 | number\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 extends Padding {\n style: PolygonType\n color: string\n size: number\n family: string\n weight: number | string\n borderStyle: LineType\n borderDashedValue: number[]\n borderSize: number\n borderColor: string\n borderRadius: number\n backgroundColor: string | CanvasGradient\n}\n\nexport interface StateTextStyle extends TextStyle {\n show: boolean\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 = Pick & Margin\n\nexport interface TooltipLegendChild {\n text: string\n color: string\n}\n\nexport interface TooltipLegend {\n title: string | TooltipLegendChild\n value: string | TooltipLegendChild\n}\n\nexport enum TooltipIconPosition {\n Left = 'left',\n Middle = 'middle',\n Right = 'right'\n}\nexport interface TooltipIconStyle extends Padding, Margin {\n id: string\n position: TooltipIconPosition\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\nexport interface CandleAreaPointStyle {\n show: boolean\n color: string\n radius: number\n rippleColor: string\n rippleRadius: number\n animation: boolean\n animationDuration: number\n}\n\nexport interface CandleAreaStyle {\n lineSize: number\n lineColor: string\n value: string\n smooth: boolean\n backgroundColor: string | GradientColor[]\n point: CandleAreaPointStyle\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, Padding, Offset {\n position: CandleTooltipRectPosition\n}\n\nexport interface CandleTooltipCustomCallbackData {\n prev: Nullable\n current: KLineData\n next: Nullable\n}\n\nexport type CandleTooltipCustomCallback = (data: CandleTooltipCustomCallbackData, styles: CandleStyle) => TooltipLegend[]\n\nexport interface CandleTooltipStyle extends TooltipStyle, Offset {\n custom: CandleTooltipCustomCallback | TooltipLegend[]\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\nexport type IndicatorPolygonStyle = Omit & ChangeColor\n\nexport interface IndicatorLastValueMarkStyle {\n show: boolean\n text: LastValueMarkTextStyle\n}\n\nexport interface IndicatorTooltipStyle extends TooltipStyle, Offset {\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]: unknown\n}\n\nexport type AxisLineStyle = Omit\n\nexport interface AxisTickLineStyle extends AxisLineStyle {\n length: number\n}\n\nexport interface AxisTickTextStyle extends Pick {\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 interface CrosshairDirectionStyle {\n show: boolean\n line: StateLineStyle\n text: StateTextStyle\n}\n\nexport interface CrosshairStyle {\n show: boolean\n horizontal: CrosshairDirectionStyle\n vertical: CrosshairDirectionStyle\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 [key: string]: unknown\n}\n\nexport interface SeparatorStyle {\n size: number\n color: string\n fill: boolean\n activeBackgroundColor: string\n}\n\nexport interface Styles {\n grid: GridStyle\n candle: CandleStyle\n indicator: IndicatorStyle\n xAxis: AxisStyle\n yAxis: AxisStyle\n separator: SeparatorStyle\n crosshair: CrosshairStyle\n overlay: OverlayStyle\n}\n\nconst red = '#F92855'\nconst alphaRed = 'rgba(249, 40, 85, .7)'\nconst green = '#2DC08E'\nconst alphaGreen = 'rgba(45, 192, 142, .7)'\nconst grey = '#888888'\nconst white = '#FFFFFF'\nconst blue = '#1677FF'\nconst textColor = '#76808F'\nconst axisLineColor = '#DDDDDD'\n\nfunction getAlphaBlue (alpha: number): string {\n return `rgba(22, 119, 255, ${alpha})`\n}\n\nfunction getDefaultGridStyle (): GridStyle {\n function item (): StateLineStyle {\n return {\n show: true,\n size: 1,\n color: '#EDEDED',\n style: LineType.Dashed,\n dashedValue: [2, 2]\n }\n }\n return {\n show: true,\n horizontal: item(),\n vertical: item()\n }\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 const highLow = {\n show: true,\n color: textColor,\n textOffset: 5,\n textSize: 10,\n textFamily: 'Helvetica Neue',\n textWeight: 'normal'\n }\n return {\n type: CandleType.CandleSolid,\n bar: {\n upColor: green,\n downColor: red,\n noChangeColor: grey,\n upBorderColor: green,\n downBorderColor: red,\n noChangeBorderColor: grey,\n upWickColor: green,\n downWickColor: red,\n noChangeWickColor: grey\n },\n area: {\n lineSize: 2,\n lineColor: blue,\n smooth: false,\n value: 'close',\n backgroundColor: [{\n offset: 0,\n color: getAlphaBlue(0.01)\n }, {\n offset: 1,\n color: getAlphaBlue(0.2)\n }],\n point: {\n show: true,\n color: blue,\n radius: 4,\n rippleColor: getAlphaBlue(0.3),\n rippleRadius: 8,\n animation: true,\n animationDuration: 1000\n }\n },\n priceMark: {\n show: true,\n high: { ...highLow },\n low: { ...highLow },\n last: {\n show: true,\n upColor: green,\n downColor: red,\n noChangeColor: grey,\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 borderColor: 'transparent',\n borderStyle: LineType.Solid,\n borderSize: 0,\n borderDashedValue: [2, 2],\n color: white,\n family: 'Helvetica Neue',\n weight: 'normal',\n borderRadius: 2\n }\n }\n },\n tooltip: {\n offsetLeft: 4,\n offsetTop: 6,\n offsetRight: 4,\n offsetBottom: 6,\n showRule: TooltipShowRule.Always,\n showType: TooltipShowType.Standard,\n custom: [\n { title: 'time', value: '{time}' },\n { title: 'open', value: '{open}' },\n { title: 'high', value: '{high}' },\n { title: 'low', value: '{low}' },\n { title: 'close', value: '{close}' },\n { title: 'volume', value: '{volume}' }\n ],\n defaultValue: 'n/a',\n rect: {\n position: CandleTooltipRectPosition.Fixed,\n paddingLeft: 4,\n paddingRight: 4,\n paddingTop: 4,\n paddingBottom: 4,\n offsetLeft: 4,\n offsetTop: 4,\n offsetRight: 4,\n offsetBottom: 4,\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: textColor,\n marginLeft: 8,\n marginTop: 4,\n marginRight: 8,\n marginBottom: 4\n },\n icons: []\n }\n }\n}\n\n/**\n * Get default indicator style\n */\nfunction getDefaultIndicatorStyle (): IndicatorStyle {\n const lines = ['#FF9600', '#935EBD', blue, '#E11D74', '#01C5C4'].map(color => ({\n style: LineType.Solid,\n smooth: false,\n size: 1,\n dashedValue: [2, 2],\n color\n }))\n\n return {\n ohlc: {\n upColor: alphaGreen,\n downColor: alphaRed,\n noChangeColor: grey\n },\n bars: [{\n style: PolygonType.Fill,\n borderStyle: LineType.Solid,\n borderSize: 1,\n borderDashedValue: [2, 2],\n upColor: alphaGreen,\n downColor: alphaRed,\n noChangeColor: grey\n }],\n lines,\n circles: [{\n style: PolygonType.Fill,\n borderStyle: LineType.Solid,\n borderSize: 1,\n borderDashedValue: [2, 2],\n upColor: alphaGreen,\n downColor: alphaRed,\n noChangeColor: grey\n }],\n lastValueMark: {\n show: false,\n text: {\n show: false,\n style: PolygonType.Fill,\n color: white,\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal',\n borderStyle: LineType.Solid,\n borderColor: 'transparent',\n borderSize: 0,\n borderDashedValue: [2, 2],\n paddingLeft: 4,\n paddingTop: 4,\n paddingRight: 4,\n paddingBottom: 4,\n borderRadius: 2\n }\n },\n tooltip: {\n offsetLeft: 4,\n offsetTop: 6,\n offsetRight: 4,\n offsetBottom: 6,\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: textColor,\n marginLeft: 8,\n marginTop: 4,\n marginRight: 8,\n marginBottom: 4\n },\n icons: []\n }\n }\n}\n\nfunction getDefaultAxisStyle (): AxisStyle {\n return {\n show: true,\n size: 'auto',\n axisLine: {\n show: true,\n color: axisLineColor,\n size: 1\n },\n tickText: {\n show: true,\n color: textColor,\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal',\n marginStart: 4,\n marginEnd: 6\n },\n tickLine: {\n show: true,\n size: 1,\n length: 3,\n color: axisLineColor\n }\n }\n}\n\nfunction getDefaultCrosshairStyle (): CrosshairStyle {\n function item (): CrosshairDirectionStyle {\n return {\n show: true,\n line: {\n show: true,\n style: LineType.Dashed,\n dashedValue: [4, 2],\n size: 1,\n color: textColor\n },\n text: {\n show: true,\n style: PolygonType.Fill,\n color: white,\n size: 12,\n family: 'Helvetica Neue',\n weight: 'normal',\n borderStyle: LineType.Solid,\n borderDashedValue: [2, 2],\n borderSize: 1,\n borderColor: textColor,\n borderRadius: 2,\n paddingLeft: 4,\n paddingRight: 4,\n paddingTop: 4,\n paddingBottom: 4,\n backgroundColor: textColor\n }\n }\n }\n\n return {\n show: true,\n horizontal: item(),\n vertical: item()\n }\n}\n\nfunction getDefaultOverlayStyle (): OverlayStyle {\n const pointBorderColor = getAlphaBlue(0.35)\n const alphaBg = getAlphaBlue(0.25)\n function text (): TextStyle {\n return {\n style: PolygonType.Fill,\n color: white,\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: blue,\n paddingLeft: 4,\n paddingRight: 4,\n paddingTop: 4,\n paddingBottom: 4,\n backgroundColor: blue\n }\n }\n return {\n point: {\n color: blue,\n borderColor: pointBorderColor,\n borderSize: 1,\n radius: 5,\n activeColor: blue,\n activeBorderColor: pointBorderColor,\n activeBorderSize: 3,\n activeRadius: 5\n },\n line: {\n style: LineType.Solid,\n smooth: false,\n color: blue,\n size: 1,\n dashedValue: [2, 2]\n },\n rect: {\n style: PolygonType.Fill,\n color: alphaBg,\n borderColor: blue,\n borderSize: 1,\n borderRadius: 0,\n borderStyle: LineType.Solid,\n borderDashedValue: [2, 2]\n },\n polygon: {\n style: PolygonType.Fill,\n color: blue,\n borderColor: blue,\n borderSize: 1,\n borderStyle: LineType.Solid,\n borderDashedValue: [2, 2]\n },\n circle: {\n style: PolygonType.Fill,\n color: alphaBg,\n borderColor: blue,\n borderSize: 1,\n borderStyle: LineType.Solid,\n borderDashedValue: [2, 2]\n },\n arc: {\n style: LineType.Solid,\n color: blue,\n size: 1,\n dashedValue: [2, 2]\n },\n text: text()\n }\n}\n\nfunction getDefaultSeparatorStyle (): SeparatorStyle {\n return {\n size: 1,\n color: axisLineColor,\n fill: true,\n activeBackgroundColor: getAlphaBlue(0.08)\n }\n}\n\nexport function getDefaultStyles (): Styles {\n return {\n grid: getDefaultGridStyle(),\n candle: getDefaultCandleStyle(),\n indicator: getDefaultIndicatorStyle(),\n xAxis: getDefaultAxisStyle(),\n yAxis: getDefaultAxisStyle(),\n separator: getDefaultSeparatorStyle(),\n crosshair: getDefaultCrosshairStyle(),\n overlay: getDefaultOverlayStyle()\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\nconst DEV = process.env.NODE_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:#F92855;',\n 'color:#F92855;',\n api, invalidParam, append ?? ''\n )\n}\n\nexport function logTag (): void {\n log(\n '%c❤️ Welcome to klinecharts. Version is __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// eslint-disable-next-line @typescript-eslint/no-explicit-any -- ignore\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- ignore\n const targetProp = target[key]\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- ignore\n const sourceProp = source[key]\n if (\n isObject(sourceProp) &&\n isObject(targetProp)\n ) {\n merge(targetProp, sourceProp)\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- ignore\n if (isValid(source[key])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- ignore\n target[key] = clone(source[key])\n }\n }\n }\n }\n}\n\nexport function clone (target: T): T {\n if (!isObject(target)) {\n return target\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- ignore\n let copy: any = null\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- ignore\n copy[key] = clone(v)\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- ignore\n copy[key] = v\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- ignore\n return copy\n}\n\nexport function isArray (value: unknown): value is T[] {\n return Object.prototype.toString.call(value) === '[object Array]'\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- ignore\nexport function isFunction unknown> (value: unknown): value is T {\n return typeof value === 'function'\n}\n\nexport function isObject (value: unknown): value is object {\n return (typeof value === 'object') && isValid(value)\n}\n\nexport function isNumber (value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(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: unknown): value is boolean {\n return typeof value === 'boolean'\n}\n\nexport function isString (value: unknown): 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\nexport interface DateTime {\n YYYY: string\n MM: string\n DD: string\n HH: string\n mm: string\n ss: string\n}\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: unknown[]) => {\n let k = subString\n if (isValid(args[1])) {\n k = (args[2] as string).replace(reEscapeChar, '$1')\n } else if (isValid(args[0])) {\n k = (args[0] as string).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 formatTimestampToDateTime (dateTimeFormat: Intl.DateTimeFormat, timestamp: number): DateTime {\n const date: Record = {}\n dateTimeFormat.formatToParts(new Date(timestamp)).forEach(({ type, value }) => {\n switch (type) {\n case 'year': {\n date.YYYY = value\n break\n }\n case 'month': {\n date.MM = value\n break\n }\n case 'day': {\n date.DD = value\n break\n }\n case 'hour': {\n date.HH = value === '24' ? '00' : value\n break\n }\n case 'minute': {\n date.mm = value\n break\n }\n case 'second': {\n date.ss = value\n break\n }\n default: { break }\n }\n })\n return date as unknown as DateTime\n}\n\nexport function formatTimestampToString (dateTimeFormat: Intl.DateTimeFormat, timestamp: number, format: string): string {\n const date = formatTimestampToDateTime(dateTimeFormat, timestamp)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- ignore\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\nexport function formatFoldDecimal (value: string | number, threshold: number): string {\n const vl = `${value}`\n const reg = new RegExp('\\\\.0{' + threshold + ',}[1-9][0-9]*$')\n if (reg.test(vl)) {\n const result = vl.split('.')\n const lastIndex = result.length - 1\n const v = result[lastIndex]\n const match = /0*/.exec(v)\n if (isValid(match)) {\n const count = match[0].length\n result[lastIndex] = v.replace(/0*/, `0{${count}}`)\n return result.join('.')\n }\n }\n return vl\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 type Nullable from '../Nullable'\nimport { isValid } from './typeChecks'\n\nlet measureCtx: Nullable = null\n\n/**\n * Get pixel ratio\n * @param canvas\n * @returns {number}\n */\nexport function getPixelRatio (canvas: HTMLCanvasElement): number {\n return canvas.ownerDocument.defaultView?.devicePixelRatio ?? 1\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 (!isValid(measureCtx)) {\n const canvas = document.createElement('canvas')\n const pixelRatio = getPixelRatio(canvas)\n measureCtx = canvas.getContext('2d')!\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\nimport { isFunction } from './utils/typeChecks'\n\nexport type ActionCallback = (data?: unknown) => 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 Action {\n private _callbacks: ActionCallback[] = []\n\n subscribe (callback: ActionCallback): void {\n const index = this._callbacks.indexOf(callback)\n if (index < 0) {\n this._callbacks.push(callback)\n }\n }\n\n unsubscribe (callback?: ActionCallback): void {\n if (isFunction(callback)) {\n const index = this._callbacks.indexOf(callback)\n if (index > -1) {\n this._callbacks.splice(index, 1)\n }\n } else {\n this._callbacks = []\n }\n }\n\n execute (data?: unknown): 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\nimport type Nullable from '../common/Nullable'\nimport type DeepPartial from '../common/DeepPartial'\nimport type ExcludePickPartial from '../common/ExcludePickPartial'\nimport type { KLineData } from '../common/Data'\nimport type Bounding from '../common/Bounding'\nimport type BarSpace from '../common/BarSpace'\nimport type Crosshair from '../common/Crosshair'\nimport type { IndicatorStyle, IndicatorPolygonStyle, SmoothLineStyle, RectStyle, TextStyle, TooltipIconStyle, LineStyle, LineType, TooltipLegend } from '../common/Styles'\nimport { isNumber, isValid, merge, isBoolean, isString, clone, isFunction } from '../common/utils/typeChecks'\n\nimport type { XAxis } from './XAxis'\nimport type { YAxis } from './YAxis'\n\nimport { formatValue } from '../common/utils/format'\n\nimport type { ArcAttrs } from '../extension/figure/arc'\nimport type { RectAttrs } from '../extension/figure/rect'\nimport type { TextAttrs } from '../extension/figure/text'\nimport type { LoadDataType } from '../common/LoadDataCallback'\nimport type { Chart } from '../Chart'\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] }> & Record\n\nexport type IndicatorFigureAttrs = Partial & Partial & Partial & Partial & Record\n\nexport interface IndicatorFigureCallbackBrother {\n prev: PCN\n current: PCN\n next: PCN\n}\n\nexport interface IndicatorFigureAttrsCallbackParams {\n data: IndicatorFigureCallbackBrother>\n coordinate: IndicatorFigureCallbackBrother & { x: number }>\n bounding: Bounding\n barSpace: BarSpace\n xAxis: XAxis\n yAxis: YAxis\n}\n\nexport interface IndicatorFigureStylesCallbackParams {\n data: IndicatorFigureCallbackBrother>\n\n indicator: Indicator\n defaultStyles?: IndicatorStyle\n}\n\nexport type IndicatorFigureAttrsCallback = (params: IndicatorFigureAttrsCallbackParams) => IndicatorFigureAttrs\nexport type IndicatorFigureStylesCallback = (params: IndicatorFigureStylesCallbackParams) => 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 = (calcParams: unknown[]) => Array>\n\nexport interface IndicatorTooltipData {\n name: string\n calcParamsText: string\n icons: TooltipIconStyle[]\n legends: TooltipLegend[]\n}\n\nexport interface IndicatorCreateTooltipDataSourceParams {\n chart: Chart\n\n indicator: Indicator\n bounding: Bounding\n crosshair: Crosshair\n xAxis: XAxis\n yAxis: YAxis\n}\n\nexport type IndicatorCreateTooltipDataSourceCallback = (params: IndicatorCreateTooltipDataSourceParams) => IndicatorTooltipData\n\nexport interface IndicatorDrawParams {\n ctx: CanvasRenderingContext2D\n chart: Chart\n\n indicator: Indicator\n bounding: Bounding\n xAxis: XAxis\n yAxis: YAxis\n}\n\nexport type IndicatorDrawCallback = (params: IndicatorDrawParams) => boolean\n\nexport type IndicatorCalcCallback = (dataList: KLineData[], indicator: Indicator) => Promise | D[]\n\nexport type IndicatorShouldUpdateCallback = (prev: Indicator, current: Indicator) => (boolean | { calc: boolean, draw: boolean })\n\nexport enum IndicatorDataState {\n Loading = 'loading',\n Error = 'error',\n Ready = 'ready'\n}\n\nexport interface IndicatorOnDataStateChangeParams {\n state: IndicatorDataState\n type: LoadDataType\n\n indicator: Indicator\n}\nexport type IndicatorOnDataStateChangeCallback = (params: IndicatorOnDataStateChangeParams) => void\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: unknown[]\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 * Z index\n */\n zLevel: number\n\n /**\n * Extend data\n */\n extendData: unknown\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 * Should update, should calc or draw\n */\n shouldUpdate: 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 * Data state change\n */\n onDataStateChange: Nullable>\n\n /**\n * Calculation result\n */\n result: D[]\n}\n\nexport type IndicatorTemplate = ExcludePickPartial, 'result'>, 'name' | 'calc'>\n\nexport type IndicatorCreate = ExcludePickPartial, 'result'>, 'name'>\n\nexport interface IndicatorFilter {\n name?: string\n paneId?: string\n}\n\nexport type IndicatorConstructor = new () => IndicatorImp\n\nexport type EachFigureCallback = (figure: IndicatorFigure, figureStyles: IndicatorFigureStyle, index: number) => void\n\nexport function eachFigures (\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 // eslint-disable-next-line @typescript-eslint/init-declarations -- ignore\n let defaultFigureStyles\n let figureIndex = 0\n figures.forEach(figure => {\n switch (figure.type) {\n case 'circle': {\n figureIndex = circleCount\n const styles = circleStyles[circleCount % circleStyleCount]\n defaultFigureStyles = { ...styles, color: styles.noChangeColor }\n circleCount++\n break\n }\n case 'bar': {\n figureIndex = barCount\n const styles = barStyles[barCount % barStyleCount]\n defaultFigureStyles = { ...styles, color: styles.noChangeColor }\n barCount++\n break\n }\n case 'line': {\n figureIndex = lineCount\n defaultFigureStyles = lineStyles[lineCount % lineStyleCount]\n lineCount++\n break\n }\n default: { break }\n }\n if (isValid(figure.type)) {\n const ss = figure.styles?.({\n data: {\n prev: result[dataIndex - 1],\n current: result[dataIndex],\n next: result[dataIndex + 1]\n },\n indicator,\n defaultStyles\n })\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ignore\n eachFigureCallback(figure, { ...defaultFigureStyles, ...ss }, figureIndex)\n }\n })\n}\n\nexport default class IndicatorImp implements Indicator {\n name: string\n shortName: string\n precision = 4\n calcParams: unknown[] = []\n shouldOhlc = false\n shouldFormatBigNumber = false\n visible = true\n zLevel = 0\n extendData: unknown\n series = IndicatorSeries.Normal\n figures: Array> = []\n minValue: Nullable = null\n maxValue: Nullable = null\n styles: Nullable> = null\n shouldUpdate: IndicatorShouldUpdateCallback = (prev, current) => {\n const calc = JSON.stringify(prev.calcParams) !== JSON.stringify(current.calcParams) ||\n prev.figures !== current.figures ||\n prev.calc !== current.calc\n const draw = calc ||\n prev.shortName !== current.shortName ||\n prev.series !== current.series ||\n prev.minValue !== current.minValue ||\n prev.maxValue !== current.maxValue ||\n prev.precision !== current.precision ||\n prev.shouldOhlc !== current.shouldOhlc ||\n prev.shouldFormatBigNumber !== current.shouldFormatBigNumber ||\n prev.visible !== current.visible ||\n prev.zLevel !== current.zLevel ||\n prev.extendData !== current.extendData ||\n prev.regenerateFigures !== current.regenerateFigures ||\n prev.createTooltipDataSource !== current.createTooltipDataSource ||\n prev.draw !== current.draw\n\n return { calc, draw }\n }\n\n calc: IndicatorCalcCallback = () => []\n regenerateFigures: Nullable> = null\n createTooltipDataSource: Nullable> = null\n draw: Nullable> = null\n\n onDataStateChange: Nullable> = null\n\n result: D[] = []\n\n private _prevIndicator: Indicator\n private _lockSeriesPrecision = false\n\n constructor (indicator: IndicatorTemplate) {\n this.override(indicator)\n this._lockSeriesPrecision = false\n }\n\n override (indicator: Partial>): void {\n const { result, ...currentOthers } = this\n this._prevIndicator = { ...clone(currentOthers), result }\n const {\n name,\n shortName,\n precision,\n styles,\n figures,\n calcParams,\n ...others\n } = indicator\n if (!isString(this.name)) {\n this.name = name ?? ''\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- ignore\n this.shortName = shortName ?? this.shortName ?? this.name\n if (isNumber(precision)) {\n this.precision = precision\n this._lockSeriesPrecision = true\n }\n\n if (isValid(styles)) {\n this.styles ??= {}\n merge(this.styles, styles)\n }\n merge(this, others)\n if (isValid(calcParams)) {\n this.calcParams = calcParams\n if (isFunction(this.regenerateFigures)) {\n this.figures = this.regenerateFigures(this.calcParams)\n }\n }\n this.figures = figures ?? this.figures\n }\n\n setSeriesPrecision (precision: number): void {\n if (!this._lockSeriesPrecision) {\n this.precision = precision\n }\n }\n\n shouldUpdateImp (): ({ calc: boolean, draw: boolean, sort: boolean }) {\n const sort = this._prevIndicator.zLevel !== this.zLevel\n const result = this.shouldUpdate(this._prevIndicator, this)\n if (isBoolean(result)) {\n return { calc: result, draw: result, sort }\n }\n return { ...result, sort }\n }\n\n async calcImp (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 static extend (template: IndicatorTemplate): IndicatorConstructor {\n class Custom extends IndicatorImp {\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 type Nullable from '../common/Nullable'\nimport type DeepPartial from '../common/DeepPartial'\nimport type ExcludePickPartial from '../common/ExcludePickPartial'\nimport type Point from '../common/Point'\nimport type Coordinate from '../common/Coordinate'\nimport type Bounding from '../common/Bounding'\nimport type { OverlayStyle } from '../common/Styles'\nimport type { MouseTouchEvent } from '../common/SyntheticEvent'\nimport { clone, isArray, isFunction, isNumber, isString, isValid, merge } from '../common/utils/typeChecks'\n\nimport type { XAxis } from './XAxis'\nimport type { YAxis } from './YAxis'\nimport type ChartStore from '../Store'\nimport type { Chart } from '../Chart'\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' | 'doubleTapEvent' | 'mouseDownEvent' | 'touchStartEvent' | 'mouseMoveEvent' | 'touchMoveEvent' | 'mouseDoubleClickEvent'\n\nexport function getAllOverlayFigureIgnoreEventTypes (): OverlayFigureIgnoreEventType[] {\n return [\n 'mouseClickEvent',\n 'mouseDoubleClickEvent',\n 'mouseRightClickEvent',\n 'tapEvent',\n 'doubleTapEvent',\n 'mouseDownEvent',\n 'touchStartEvent',\n 'mouseMoveEvent',\n 'touchMoveEvent'\n ]\n}\n\nexport interface OverlayFigure {\n key?: string\n type: string\n attrs: unknown\n styles?: unknown\n ignoreEvent?: boolean | OverlayFigureIgnoreEventType[]\n}\n\nexport interface OverlayCreateFiguresCallbackParams {\n chart: Chart\n\n overlay: Overlay\n coordinates: Coordinate[]\n bounding: Bounding\n xAxis: Nullable\n yAxis: Nullable\n}\n\nexport interface OverlayEvent extends Partial {\n figureKey?: string\n figureIndex?: number\n\n overlay: Overlay\n chart: Chart\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 * 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 * When mode is weak_magnet is the response distance\n */\n modeSensitivity: number\n\n /**\n * Time and value information\n */\n points: Array>\n\n /**\n * Extended Data\n */\n extendData: unknown\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 * Double Click event\n */\n onDoubleClick: 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'>\n\nexport type OverlayCreate = ExcludePickPartial, 'name'>\nexport type OverlayFilter = Partial>\n\nexport type OverlayInnerConstructor = new () => OverlayImp\nexport type OverlayConstructor = new () => Overlay\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 default class OverlayImp implements Overlay {\n id: string\n groupId = ''\n paneId: string\n name: string\n totalStep = 1\n currentStep = OVERLAY_DRAW_STEP_START\n lock = false\n visible = true\n zLevel = 0\n needDefaultPointFigure = false\n needDefaultXAxisFigure = false\n needDefaultYAxisFigure = false\n mode = OverlayMode.Normal\n modeSensitivity = 8\n points: Array>> = []\n extendData: unknown = null\n styles: Nullable> = null\n createPointFigures: Nullable = null\n createXAxisFigures: Nullable = null\n createYAxisFigures: Nullable = null\n performEventPressedMove: Nullable<(params: OverlayPerformEventParams) => void> = null\n performEventMoveForDrawing: Nullable<(params: OverlayPerformEventParams) => void> = null\n onDrawStart: Nullable = null\n onDrawing: Nullable = null\n onDrawEnd: Nullable = null\n onClick: Nullable = null\n onDoubleClick: Nullable = null\n onRightClick: Nullable = null\n onPressedMoveStart: Nullable = null\n onPressedMoving: Nullable = null\n onPressedMoveEnd: Nullable = null\n onMouseEnter: Nullable = null\n onMouseLeave: Nullable = null\n onRemoved: Nullable = null\n onSelected: Nullable = null\n onDeselected: Nullable = null\n\n private _prevOverlay: Overlay\n\n private _prevPressedPoint: Nullable> = null\n private _prevPressedPoints: Array> = []\n\n constructor (overlay: OverlayTemplate) {\n this.override(overlay)\n }\n\n override (overlay: Partial): void {\n this._prevOverlay = clone(this)\n\n const {\n id,\n name,\n currentStep: _,\n points,\n styles,\n ...others\n } = overlay\n\n merge(this, others)\n\n if (!isString(this.name)) {\n this.name = name ?? ''\n }\n\n if (!isString(this.id) && isString(id)) {\n this.id = id\n }\n\n if (isValid(styles)) {\n this.styles ??= {}\n merge(this.styles, styles)\n }\n\n if (isArray(points) && points.length > 0) {\n let repeatTotalStep = 0\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 (isFunction(this.performEventMoveForDrawing)) {\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\n if (this.currentStep === OVERLAY_DRAW_STEP_FINISHED) {\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 }\n }\n\n shouldUpdate (): { draw: boolean, sort: boolean } {\n const sort = this._prevOverlay.zLevel !== this.zLevel\n const draw = sort ||\n JSON.stringify(this._prevOverlay) !== JSON.stringify(this.points) ||\n this._prevOverlay.visible !== this.visible ||\n this._prevOverlay.extendData !== this.extendData ||\n this._prevOverlay.styles !== this.styles\n\n return { sort, draw }\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 (isNumber(point.timestamp)) {\n newPoint.timestamp = point.timestamp\n }\n if (isNumber(point.dataIndex)) {\n newPoint.dataIndex = point.dataIndex\n }\n if (isNumber(point.value)) {\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 this.points[pointIndex].timestamp = point.timestamp\n if (isNumber(point.value)) {\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, chartStore: ChartStore): void {\n if (this._prevPressedPoint !== null) {\n let difDataIndex: Nullable = null\n if (isNumber(point.dataIndex) && isNumber(this._prevPressedPoint.dataIndex)) {\n difDataIndex = point.dataIndex - this._prevPressedPoint.dataIndex\n }\n let difValue: Nullable = null\n if (isNumber(point.value) && isNumber(this._prevPressedPoint.value)) {\n difValue = point.value - this._prevPressedPoint.value\n }\n this.points = this._prevPressedPoints.map(p => {\n if (isNumber(p.timestamp)) {\n p.dataIndex = chartStore.timestampToDataIndex(p.timestamp)\n }\n const newPoint = { ...p }\n if (isNumber(difDataIndex) && isNumber(p.dataIndex)) {\n newPoint.dataIndex = p.dataIndex + difDataIndex\n newPoint.timestamp = chartStore.dataIndexToTimestamp(newPoint.dataIndex) ?? undefined\n }\n if (isNumber(difValue) && isNumber(p.value)) {\n newPoint.value = p.value + difValue\n }\n return newPoint\n })\n }\n }\n\n static extend (template: OverlayTemplate): OverlayInnerConstructor {\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 type DeepPartial from './common/DeepPartial'\nimport type { Styles } from './common/Styles'\n\nimport type { IndicatorCreate } from './component/Indicator'\nimport type { PaneOptions } from './pane/types'\n\nexport enum FormatDateType {\n Tooltip,\n Crosshair,\n XAxis\n}\n\nexport type FormatDate = (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 interface Locales {\n time: string\n open: string\n high: string\n low: string\n close: string\n volume: string\n change: string\n turnover: string\n [key: string]: string\n}\n\nexport const enum LayoutChildType {\n Candle = 'candle',\n Indicator = 'indicator',\n XAxis = 'xAxis'\n}\n\nexport interface LayoutChild {\n type: LayoutChildType\n content?: Array\n options?: PaneOptions\n}\n\nexport interface DecimalFold {\n threshold: number\n format: (value: string | number) => string\n}\n\nexport interface ThousandsSeparator {\n sign: string\n format: (value: string | number) => string\n}\n\nexport interface Options {\n locale?: string\n timezone?: string\n styles?: string | DeepPartial\n customApi?: Partial\n thousandsSeparator?: Partial\n decimalFold?: Partial\n layout?: LayoutChild[]\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 { isValid, 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 createDefaultBounding (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 (isValid(bounding)) {\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 { isFunction } from './typeChecks'\n\nexport const DEFAULT_REQUEST_ID = -1\n\nexport function requestAnimationFrame (fn: (params: unknown) => unknown): number {\n if (isFunction(window.requestAnimationFrame)) {\n return window.requestAnimationFrame(fn)\n }\n return window.setTimeout(fn, 20)\n}\n\nexport function cancelAnimationFrame (id: number): void {\n if (isFunction(window.cancelAnimationFrame)) {\n window.cancelAnimationFrame(id)\n } else {\n window.clearTimeout(id)\n }\n}\n\nexport function requestIdleCallback (fn: IdleRequestCallback): number {\n if (isFunction(window.requestIdleCallback)) {\n return window.requestIdleCallback(fn)\n }\n const startTime = performance.now()\n return window.setTimeout(function () {\n fn({\n didTimeout: false,\n timeRemaining () {\n return Math.max(0, 50 - (performance.now() - startTime))\n }\n })\n }, 1)\n}\n\nexport function cancelIdleCallback (id: number): void {\n if (isFunction(window.cancelIdleCallback)) {\n window.cancelIdleCallback(id)\n } else {\n window.clearTimeout(id)\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 type Nullable from './Nullable'\nimport { requestAnimationFrame } from './utils/compatible'\nimport { merge } from './utils/typeChecks'\n\ntype AnimationDoFrameCallback = (frameTime: number) => void\n\ninterface AnimationOptions {\n duration: number\n iterationCount: number\n}\n\nexport default class Animation {\n private readonly _options = { duration: 500, iterationCount: 1 }\n\n private _doFrameCallback: Nullable\n\n private _currentIterationCount = 0\n private _running = false\n\n private _time = 0\n\n constructor (options?: Partial) {\n merge(this._options, options)\n }\n\n _loop (): void {\n this._running = true\n const step: (() => void) = () => {\n if (this._running) {\n const diffTime = new Date().getTime() - this._time\n if (diffTime < this._options.duration) {\n this._doFrameCallback?.(diffTime)\n requestAnimationFrame(step)\n } else {\n this.stop()\n this._currentIterationCount++\n if (this._currentIterationCount < this._options.iterationCount) {\n this.start()\n }\n }\n }\n }\n requestAnimationFrame(step)\n }\n\n doFrame (callback: AnimationDoFrameCallback): this {\n this._doFrameCallback = callback\n return this\n }\n\n setDuration (duration: number): this {\n this._options.duration = duration\n return this\n }\n\n setIterationCount (iterationCount: number): this {\n this._options.iterationCount = iterationCount\n return this\n }\n\n start (): void {\n if (!this._running) {\n this._time = new Date().getTime()\n this._loop()\n }\n }\n\n stop (): void {\n if (this._running) {\n this._doFrameCallback?.(this._options.duration)\n }\n this._running = 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\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 // eslint-disable-next-line guard-for-in -- ignore\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\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: T[], valueKey: keyof T, targetValue: T[keyof T]): 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 +value.toFixed(Math.abs(exponent))\n}\n\n/**\n * Round\n * @param value\n * @param precision\n * @return {number}\n */\nexport function round (value: number, precision?: number): number {\n precision = Math.max(0, precision ?? 0)\n const pow = Math.pow(10, precision)\n return Math.round(value * pow) / pow\n}\n\n/**\n * Get precision\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 }\n const dotIndex = str.indexOf('.')\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex\n}\n\nexport function getMaxMin (dataList: D[], maxKey: keyof D, minKey: keyof D): number[] {\n const maxMin = [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER]\n const dataLength = dataList.length\n let index = 0\n while (index < dataLength) {\n const data = dataList[index]\n maxMin[0] = Math.max((data[maxKey] ?? Number.MIN_SAFE_INTEGER) as number, maxMin[0])\n maxMin[1] = Math.min((data[minKey] ?? Number.MAX_SAFE_INTEGER) as number, maxMin[1])\n ++index\n }\n return maxMin\n}\n\n/**\n * log10\n * @param value\n * @return {number}\n */\nexport function log10 (value: number): number {\n if (value === 0) {\n return 0\n }\n return Math.log10(value)\n}\n\n/**\n * index 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\nimport type Nullable from './Nullable'\nimport type { KLineData } from './Data'\n\nexport enum LoadDataType {\n Init = 'init',\n Forward = 'forward',\n Backward = 'backward',\n Update = 'update'\n}\n\nexport interface LoadDataParams {\n type: LoadDataType\n data: Nullable\n callback: (dataList: KLineData[], more?: boolean) => void\n}\n\nexport interface LoadDataMore {\n [LoadDataType.Backward]: boolean\n [LoadDataType.Forward]: boolean\n}\n\nexport type LoadDataCallback = (params: LoadDataParams) => void\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 { requestIdleCallback, cancelIdleCallback, DEFAULT_REQUEST_ID } from './utils/compatible'\ninterface Task {\n id: string\n handler: () => void\n}\n\nexport function generateTaskId (...params: string[]): string {\n return params.join('_')\n}\n\nexport default class TaskScheduler {\n private readonly _tasks: Task[]\n\n private _requestIdleCallbackId = DEFAULT_REQUEST_ID\n\n constructor (tasks?: Task[]) {\n this._tasks = tasks ?? []\n this._operateTasks()\n }\n\n private _operateTasks (fn?: () => void): void {\n if (this._requestIdleCallbackId !== DEFAULT_REQUEST_ID) {\n cancelIdleCallback(this._requestIdleCallbackId)\n this._requestIdleCallbackId = DEFAULT_REQUEST_ID\n }\n fn?.()\n this._requestIdleCallbackId = requestIdleCallback(deadline => { this._runTasks(deadline) })\n }\n\n private _runTasks (deadline: IdleDeadline): void {\n while (deadline.timeRemaining() > 0 && this._tasks.length > 0) {\n const task = this._tasks.shift()\n task?.handler()\n }\n if (this._tasks.length > 0) {\n this._requestIdleCallbackId = requestIdleCallback(deadline => { this._runTasks(deadline) })\n }\n }\n\n addTask (task: Task): this {\n this._operateTasks(() => {\n const index = this._tasks.findIndex(t => t.id === task.id)\n if (index > -1) {\n this._tasks[index] = task\n } else {\n this._tasks.push(task)\n }\n })\n return this\n }\n\n removeTask (id: string): this {\n this._operateTasks(() => {\n const index = this._tasks.findIndex(t => t.id === id)\n if (index > -1) {\n this._tasks.splice(index, 1)\n }\n })\n return 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 type { KLineData } from './Data'\nimport type Nullable from './Nullable'\nimport type { TextStyle } from './Styles'\nimport { calcTextWidth } from './utils/canvas'\nimport { formatTimestampToDateTime, type DateTime } from './utils/format'\nimport { isNumber, isValid } from './utils/typeChecks'\n\nexport default interface TimeWeightTick {\n weight: number\n dataIndex: number\n timestamp: number\n}\n\nexport const TimeWeightConstants = {\n Year: 365 * 24 * 3600,\n Month: 30 * 24 * 3600,\n Day: 24 * 3600,\n Hour: 3600,\n Minute: 60,\n Second: 1\n}\n\nexport function classifyTimeWeightTicks (\n map: Map,\n dataList: Array>,\n dateTimeFormat: Intl.DateTimeFormat,\n baseDataIndex = 0,\n minTimeDifference?: { value: number },\n startTimestamp?: Nullable\n): void {\n let prevDateTime: Nullable = null\n let prevTimestamp: Nullable = startTimestamp ?? null\n for (let i = 0; i < dataList.length; i++) {\n const timestamp = dataList[i].timestamp\n let weight = TimeWeightConstants.Second\n const dateTime = formatTimestampToDateTime(dateTimeFormat, timestamp)\n if (isValid(prevDateTime)) {\n if (dateTime.YYYY !== prevDateTime.YYYY) {\n weight = TimeWeightConstants.Year\n } else if (dateTime.MM !== prevDateTime.MM) {\n weight = TimeWeightConstants.Month\n } else if (dateTime.DD !== prevDateTime.DD) {\n weight = TimeWeightConstants.Day\n } else if (dateTime.HH !== prevDateTime.HH) {\n weight = TimeWeightConstants.Hour\n } else if (dateTime.mm !== prevDateTime.mm) {\n weight = TimeWeightConstants.Minute\n } else {\n weight = TimeWeightConstants.Second\n }\n }\n if (isNumber(prevTimestamp) && isNumber(minTimeDifference?.value)) {\n minTimeDifference.value = Math.min(minTimeDifference.value, timestamp - prevTimestamp)\n }\n const currentTimeWeightList = map.get(weight) ?? []\n currentTimeWeightList.push({ dataIndex: i + baseDataIndex, weight, timestamp })\n map.set(weight, currentTimeWeightList)\n prevDateTime = dateTime\n prevTimestamp = timestamp\n }\n}\n\nexport function calcBetweenTimeWeightTickBarCount (\n barSpace: number,\n textStyles: Partial>\n): number {\n const space = Math.max(calcTextWidth('0000-00-00 00:00:00', textStyles.size, textStyles.weight, textStyles.family), 146)\n return Math.ceil(space / barSpace)\n}\n\nexport function createTimeWeightTickList (\n map: Map,\n barSpace: number,\n textStyles: Partial>\n): TimeWeightTick[] {\n const barCount = calcBetweenTimeWeightTickBarCount(barSpace, textStyles)\n let optTimeWeightTickList: TimeWeightTick[] = []\n Array.from(map.keys()).sort((w1, w2) => w2 - w1).forEach(weight => {\n const currentTimeWeightTickList = map.get(weight)!\n const prevOptTimeWeightTickList = optTimeWeightTickList\n optTimeWeightTickList = []\n\n const prevOptTimeWeightTickListLength = prevOptTimeWeightTickList.length\n let prevOptTimeWeightTickListPointer = 0\n const currentTimeWeightTickListLength = currentTimeWeightTickList.length\n\n let rightIndex = Infinity\n let leftIndex = -Infinity\n for (let i = 0; i < currentTimeWeightTickListLength; i++) {\n const timeWeightTick = currentTimeWeightTickList[i]\n const currentIndex = timeWeightTick.dataIndex\n\n while (prevOptTimeWeightTickListPointer < prevOptTimeWeightTickListLength) {\n const lastTimeWeightTick = prevOptTimeWeightTickList[prevOptTimeWeightTickListPointer]\n const lastIndex = lastTimeWeightTick.dataIndex\n if (lastIndex < currentIndex) {\n prevOptTimeWeightTickListPointer++\n optTimeWeightTickList.push(lastTimeWeightTick)\n leftIndex = lastIndex\n rightIndex = Infinity\n } else {\n rightIndex = lastIndex\n break\n }\n }\n\n if (rightIndex - currentIndex >= barCount && currentIndex - leftIndex >= barCount) {\n optTimeWeightTickList.push(timeWeightTick)\n leftIndex = currentIndex\n }\n }\n\n for (; prevOptTimeWeightTickListPointer < prevOptTimeWeightTickListLength; prevOptTimeWeightTickListPointer++) {\n optTimeWeightTickList.push(prevOptTimeWeightTickList[prevOptTimeWeightTickListPointer])\n }\n })\n\n return optTimeWeightTickList\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 type { KLineData } from '../../common/Data'\nimport { type IndicatorTemplate, IndicatorSeries } from '../../component/Indicator'\n\ninterface Avp {\n avp?: number\n}\n\n/**\n * average 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 type { KLineData } from '../../common/Data'\nimport { PolygonType } from '../../common/Styles'\nimport { formatValue } from '../../common/utils/format'\n\nimport type { Indicator, IndicatorTemplate } 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, indicator, defaultStyles }) => {\n const { prev, current } = data\n const prevAo = prev?.ao ?? Number.MIN_SAFE_INTEGER\n const currentAo = current?.ao ?? Number.MIN_SAFE_INTEGER\n let color = ''\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 as number[]\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 type { KLineData } from '../../common/Data'\nimport type { 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: unknown[]) => params.map((p: number, i: number) => ({ key: `bias${i + 1}`, title: `BIAS${p}: `, type: 'line' })),\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const { calcParams, figures } = indicator\n const params = calcParams as number[]\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 type { KLineData } from '../../common/Data'\nimport { type Indicator, type 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 as number[]\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 type { KLineData } from '../../common/Data'\nimport type { 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 as number[]\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 type { KLineData } from '../../common/Data'\nimport { type Indicator, type 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 as number[]\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 type { KLineData } from '../../common/Data'\nimport type { 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 as number[]\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 type { KLineData } from '../../common/Data'\nimport type { 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 type { KLineData } from '../../common/Data'\nimport type { 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 type { KLineData } from '../../common/Data'\nimport type { 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 type { KLineData } from '../../common/Data'\nimport type { 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 type { KLineData } from '../../common/Data'\nimport { type Indicator, type 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: unknown[]) => params.map((p: number, i: number) => ({ key: `ema${i + 1}`, title: `EMA${p}: `, type: 'line' })),\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 type { KLineData } from '../../common/Data'\nimport type { 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 type { KLineData } from '../../common/Data'\nimport { type Indicator, type 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: 'ma1', title: 'MA5: ', type: 'line' },\n { key: 'ma2', title: 'MA10: ', type: 'line' },\n { key: 'ma3', title: 'MA30: ', type: 'line' },\n { key: 'ma4', title: 'MA60: ', type: 'line' }\n ],\n regenerateFigures: (params: unknown[]) => params.map((p: number, i: number) => ({ key: `ma${i + 1}`, title: `MA${p}: `, type: 'line' })),\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 type { KLineData } from '../../common/Data'\nimport { PolygonType } from '../../common/Styles'\n\nimport { formatValue } from '../../common/utils/format'\n\nimport type { Indicator, IndicatorTemplate } 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, indicator, defaultStyles }) => {\n const { prev, current } = data\n const prevMacd = prev?.macd ?? Number.MIN_SAFE_INTEGER\n const currentMacd = current?.macd ?? Number.MIN_SAFE_INTEGER\n let color = ''\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 = 0\n let emaLong = 0\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 type { KLineData } from '../../common/Data'\nimport type { 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 type { KLineData } from '../../common/Data'\nimport type { 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 type { KLineData } from '../../common/Data'\nimport type { 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 type { KLineData } from '../../common/Data'\nimport type { 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 type { KLineData } from '../../common/Data'\nimport type { 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: unknown[]) => params.map((_: unknown, index: number) => {\n const num = index + 1\n return { key: `rsi${num}`, title: `RSI${num}: `, type: 'line' }\n }),\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const { calcParams, figures } = indicator\n const params = calcParams as number[]\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 type { KLineData } from '../../common/Data'\nimport { type Indicator, type 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 type { KLineData } from '../../common/Data'\nimport type { 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 as number[]\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 type { KLineData } from '../../common/Data'\nimport { formatValue } from '../../common/utils/format'\n\nimport { type Indicator, type IndicatorTemplate, IndicatorSeries } from '../../component/Indicator'\n\ninterface Sar {\n sar?: number\n high: number\n low: 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, indicator, defaultStyles }) => {\n const { current } = data\n const sar = current?.sar ?? Number.MIN_SAFE_INTEGER\n const halfHL = ((current?.high ?? 0) + (current?.low ?? 0)) / 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 as number[]\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 { high, low, 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 type { KLineData } from '../../common/Data'\nimport type { 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 = 0\n let ema2 = 0\n let oldTr = 0\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 = 0\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 type { KLineData } from '../../common/Data'\nimport { formatValue } from '../../common/utils/format'\nimport { isValid } from '../../common/utils/typeChecks'\n\nimport { type Indicator, type IndicatorTemplate, IndicatorSeries, type IndicatorFigure } from '../../component/Indicator'\n\ninterface Vol {\n open: number\n close: number\n volume?: number\n ma1?: number\n ma2?: number\n ma3?: number\n}\n\nfunction getVolumeFigure (): IndicatorFigure {\n return {\n key: 'volume',\n title: 'VOLUME: ',\n type: 'bar',\n baseValue: 0,\n styles: ({ data, indicator, defaultStyles }) => {\n const current = data.current\n let color = formatValue(indicator.styles, 'bars[0].noChangeColor', (defaultStyles!.bars)[0].noChangeColor)\n if (isValid(current)) {\n if (current.close > current.open) {\n color = formatValue(indicator.styles, 'bars[0].upColor', (defaultStyles!.bars)[0].upColor)\n } else if (current.close < current.open) {\n color = formatValue(indicator.styles, 'bars[0].downColor', (defaultStyles!.bars)[0].downColor)\n }\n }\n return { color: color as string }\n }\n }\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 getVolumeFigure()\n ],\n regenerateFigures: (params: unknown[]) => {\n const figures: Array> = params.map((p: number, i: number) => ({ key: `ma${i + 1}`, title: `MA${p}: `, type: 'line' }))\n figures.push(getVolumeFigure())\n return figures\n },\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const { calcParams, figures } = indicator\n const params = calcParams as number[]\n const volSums: number[] = []\n return dataList.map((kLineData: KLineData, i: number) => {\n const volume = kLineData.volume ?? 0\n const vol: Vol = { volume, open: kLineData.open, close: kLineData.close }\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 type { KLineData } from '../../common/Data'\nimport type { 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 type { KLineData } from '../../common/Data'\nimport type { 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: unknown[]) => params.map((_, i: number) => ({ key: `wr${i + 1}`, title: `WR${i + 1}: `, type: 'line' })),\n calc: (dataList: KLineData[], indicator: Indicator) => {\n const { calcParams, figures } = indicator\n const params = calcParams as number[]\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 type Nullable from '../../common/Nullable'\n\nimport IndicatorImp, { type IndicatorTemplate, type 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 { isNumber } from '../../common/utils/typeChecks'\n\nimport type { OverlayTemplate } from '../../component/Overlay'\n\nimport type { LineAttrs } from '../figure/line'\nimport type { TextAttrs } from '../figure/text'\n\nconst fibonacciLine: OverlayTemplate = {\n name: 'fibonacciLine',\n totalStep: 3,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ chart, coordinates, bounding, overlay, yAxis }) => {\n const points = overlay.points\n\n if (coordinates.length > 0) {\n let precision = 0\n if (yAxis?.isInCandle() ?? true) {\n precision = chart.getPrecision().price\n } else {\n const indicators = chart.getIndicators({ paneId: overlay.paneId }).get(overlay.paneId) ?? []\n indicators.forEach(indicator => {\n precision = Math.max(precision, indicator.precision)\n })\n }\n const lines: LineAttrs[] = []\n const texts: TextAttrs[] = []\n const startX = 0\n const endX = bounding.width\n if (coordinates.length > 1 && isNumber(points[0].value) && isNumber(points[1].value)) {\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 = chart.getDecimalFold().format(chart.getThousandsSeparator().format(((points[1].value ?? 0) + valueDif * percent).toFixed(precision)))\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 { isValid } from '../../common/utils/typeChecks'\nimport type { 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 (isValid(coordinates[1]) && 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 type { OverlayTemplate } from '../../component/Overlay'\n\nimport type { 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 type { 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 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\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 { isValid } from './utils/typeChecks'\n\nimport type { 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): this {\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 (isValid(callback) && this.checkEventOn(event)) {\n return callback(event, other)\n }\n return false\n }\n\n checkEventOn (event: MouseTouchEvent): boolean {\n for (const ful of this._children) {\n if (ful.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): this {\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 type Coordinate from '../common/Coordinate'\n\nimport Eventful from '../common/Eventful'\nimport type { 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 FigureConstructor = new (figure: FigureCreate) => ({ draw: (ctx: CanvasRenderingContext2D) => void })\nexport type FigureInnerConstructor = new (figure: FigureCreate) => FigureImp\nexport default abstract class FigureImp extends Eventful implements Omit, 'name' | 'draw' | 'checkEventOn'> {\n attrs: A\n 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 setAttrs (attrs: A): this {\n this.attrs = attrs\n return this\n }\n\n setStyles (styles: S): this {\n this.styles = styles\n return this\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 type Nullable from '../../common/Nullable'\nimport type Coordinate from '../../common/Coordinate'\nimport { type SmoothLineStyle, LineType } from '../../common/Styles'\n\nimport { type FigureTemplate, DEVIATION } from '../../component/Figure'\nimport { isNumber } from '../../common/utils/typeChecks'\n\nexport function checkCoordinateOnLine (coordinate: Coordinate, attrs: LineAttrs | LineAttrs[]): boolean {\n let lines: LineAttrs[] = []\n lines = lines.concat(attrs)\n\n for (const line of lines) {\n const { coordinates } = line\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)!\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 }\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 lineTo (ctx: CanvasRenderingContext2D, coordinates: Coordinate[], smooth: number | boolean): void {\n const length = coordinates.length\n const smoothParam = isNumber(smooth) ? (smooth > 0 && smooth < 1 ? smooth : 0) : (smooth ? 0.5 : 0)\n if ((smoothParam > 0) && length > 2) {\n let cpx0 = coordinates[0].x\n let cpy0 = coordinates[0].y\n for (let i = 1; i < length - 1; i++) {\n const prevCoordinate = coordinates[i - 1]\n const coordinate = coordinates[i]\n const nextCoordinate = coordinates[i + 1]\n const dx01 = coordinate.x - prevCoordinate.x\n const dy01 = coordinate.y - prevCoordinate.y\n const dx12 = nextCoordinate.x - coordinate.x\n const dy12 = nextCoordinate.y - coordinate.y\n let dx02 = nextCoordinate.x - prevCoordinate.x\n let dy02 = nextCoordinate.y - prevCoordinate.y\n const prevSegmentLength = Math.sqrt(dx01 * dx01 + dy01 * dy01)\n const nextSegmentLength = Math.sqrt(dx12 * dx12 + dy12 * dy12)\n const segmentLengthRatio = nextSegmentLength / (nextSegmentLength + prevSegmentLength)\n\n let nextCpx = coordinate.x + dx02 * smoothParam * segmentLengthRatio\n let nextCpy = coordinate.y + dy02 * smoothParam * segmentLengthRatio\n nextCpx = Math.min(nextCpx, Math.max(nextCoordinate.x, coordinate.x))\n nextCpy = Math.min(nextCpy, Math.max(nextCoordinate.y, coordinate.y))\n nextCpx = Math.max(nextCpx, Math.min(nextCoordinate.x, coordinate.x))\n nextCpy = Math.max(nextCpy, Math.min(nextCoordinate.y, coordinate.y))\n\n dx02 = nextCpx - coordinate.x\n dy02 = nextCpy - coordinate.y\n\n let cpx1 = coordinate.x - dx02 * prevSegmentLength / nextSegmentLength\n let cpy1 = coordinate.y - dy02 * prevSegmentLength / nextSegmentLength\n\n cpx1 = Math.min(cpx1, Math.max(prevCoordinate.x, coordinate.x))\n cpy1 = Math.min(cpy1, Math.max(prevCoordinate.y, coordinate.y))\n cpx1 = Math.max(cpx1, Math.min(prevCoordinate.x, coordinate.x))\n cpy1 = Math.max(cpy1, Math.min(prevCoordinate.y, coordinate.y))\n\n dx02 = coordinate.x - cpx1\n dy02 = coordinate.y - cpy1\n nextCpx = coordinate.x + dx02 * nextSegmentLength / prevSegmentLength\n nextCpy = coordinate.y + dy02 * nextSegmentLength / prevSegmentLength\n\n ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, coordinate.x, coordinate.y)\n\n cpx0 = nextCpx\n cpy0 = nextCpy\n }\n const lastCoordinate = coordinates[length - 1]\n ctx.bezierCurveTo(cpx0, cpy0, lastCoordinate.x, lastCoordinate.y, lastCoordinate.x, lastCoordinate.y)\n } else {\n for (let i = 1; i < length; i++) {\n ctx.lineTo(coordinates[i].x, coordinates[i].y)\n }\n }\n}\n\nexport function drawLine (ctx: CanvasRenderingContext2D, attrs: LineAttrs | LineAttrs[], styles: Partial): void {\n let lines: LineAttrs[] = []\n lines = lines.concat(attrs)\n const { style = LineType.Solid, smooth = false, 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 const correction = size % 2 === 1 ? 0.5 : 0\n lines.forEach(({ coordinates }) => {\n if (coordinates.length > 1) {\n if (\n coordinates.length === 2 &&\n (\n coordinates[0].x === coordinates[1].x ||\n coordinates[0].y === coordinates[1].y\n )\n ) {\n ctx.beginPath()\n if (coordinates[0].x === coordinates[1].x) {\n ctx.moveTo(coordinates[0].x + correction, coordinates[0].y)\n ctx.lineTo(coordinates[1].x + correction, coordinates[1].y)\n } else {\n ctx.moveTo(coordinates[0].x, coordinates[0].y + correction)\n ctx.lineTo(coordinates[1].x, coordinates[1].y + correction)\n }\n ctx.stroke()\n ctx.closePath()\n } else {\n ctx.save()\n if (size % 2 === 1) {\n ctx.translate(0.5, 0.5)\n }\n ctx.beginPath()\n ctx.moveTo(coordinates[0].x, coordinates[0].y)\n lineTo(ctx, coordinates, smooth)\n ctx.stroke()\n ctx.closePath()\n ctx.restore()\n }\n }\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 | 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 type Coordinate from '../../common/Coordinate'\nimport type Bounding from '../../common/Bounding'\n\nimport type { OverlayTemplate } from '../../component/Overlay'\n\nimport { type 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])!\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 {\n type: 'line',\n attrs: getParallelLines(coordinates, bounding)\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 type { 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 {\n type: 'line',\n attrs: getParallelLines(coordinates, bounding, 1)\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 type { OverlayTemplate } from '../../component/Overlay'\n\nconst priceLine: OverlayTemplate = {\n name: 'priceLine',\n totalStep: 2,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ chart, coordinates, bounding, overlay, yAxis }) => {\n let precision = 0\n if (yAxis?.isInCandle() ?? true) {\n precision = chart.getPrecision().price\n } else {\n const indicators = chart.getIndicators({ paneId: overlay.paneId }).get(overlay.paneId) ?? []\n indicators.forEach(indicator => {\n precision = Math.max(precision, indicator.precision)\n })\n }\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: {\n x: coordinates[0].x,\n y: coordinates[0].y,\n text: chart.getDecimalFold().format(chart.getThousandsSeparator().format(value.toFixed(precision))),\n baseline: 'bottom'\n }\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 type Coordinate from '../../common/Coordinate'\nimport type Bounding from '../../common/Bounding'\n\nimport type { OverlayTemplate } from '../../component/Overlay'\n\nimport { getLinearYFromCoordinates, type LineAttrs } from '../figure/line'\n\nexport function getRayLine (coordinates: Coordinate[], bounding: Bounding): LineAttrs | LineAttrs[] {\n if (coordinates.length > 1) {\n let coordinate = { x: 0, y: 0 }\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 {\n type: 'line',\n attrs: getRayLine(coordinates, bounding)\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 type { 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 type { 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 type { 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 type { 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 type { 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 {\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\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 type { OverlayTemplate } from '../../component/Overlay'\nimport { isFunction, isValid } from '../../common/utils/typeChecks'\nimport { LineType } from '../../common/Styles'\n\nconst simpleAnnotation: OverlayTemplate = {\n name: 'simpleAnnotation',\n totalStep: 2,\n styles: {\n line: { style: LineType.Dashed }\n },\n createPointFigures: ({ overlay, coordinates }) => {\n let text = ''\n if (isValid(overlay.extendData)) {\n if (!isFunction(overlay.extendData)) {\n text = (overlay.extendData ?? '') as string\n } else {\n text = (overlay.extendData(overlay)) as string\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: 'text',\n attrs: { x: startX, y: arrowEndY, 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 type { OverlayTemplate } from '../../component/Overlay'\n\nimport { isFunction, isNumber, isValid } from '../../common/utils/typeChecks'\n\nimport { LineType } from '../../common/Styles'\n\nconst simpleTag: OverlayTemplate = {\n name: 'simpleTag',\n totalStep: 2,\n styles: {\n line: { style: LineType.Dashed }\n },\n createPointFigures: ({ bounding, coordinates }) => ({\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 createYAxisFigures: ({ chart, overlay, coordinates, bounding, yAxis }) => {\n const isFromZero = yAxis?.isFromZero() ?? false\n let textAlign: CanvasTextAlign = 'left'\n let x = 0\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 ?? '') as string\n } else {\n text = overlay.extendData(overlay) as string\n }\n }\n if (!isValid(text) && isNumber(overlay.points[0].value)) {\n text = formatPrecision(overlay.points[0].value, chart.getPrecision().price)\n }\n return { type: 'text', attrs: { x, y: coordinates[0].y, 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 type Nullable from '../../common/Nullable'\n\nimport OverlayImp, { type OverlayTemplate, type OverlayConstructor, type OverlayInnerConstructor } 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 getOverlayInnerClass (name: string): Nullable {\n return overlays[name] ?? null\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, getOverlayInnerClass, 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 type DeepPartial from '../../common/DeepPartial'\nimport type { Styles } from '../../common/Styles'\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 type DeepPartial from '../../common/DeepPartial'\nimport type { Styles } from '../../common/Styles'\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 type Nullable from '../../common/Nullable'\nimport type DeepPartial from '../../common/DeepPartial'\nimport type { Styles } from '../../common/Styles'\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 type { AxisCreate } from '../component/Axis'\n\nexport const enum PaneState {\n Normal = 'normal',\n Maximize = 'maximize',\n Minimize = 'minimize'\n}\n\nexport interface PaneOptions {\n id?: string\n height?: number\n minHeight?: number\n dragEnabled?: boolean\n order?: number\n state?: PaneState,\n axis?: Partial\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: 'indicator_pane_',\n X_AXIS: 'x_axis_pane'\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 type Nullable from './common/Nullable'\nimport type DeepPartial from './common/DeepPartial'\nimport type { KLineData, VisibleRangeData } from './common/Data'\nimport type VisibleRange from './common/VisibleRange'\nimport type Coordinate from './common/Coordinate'\nimport { getDefaultVisibleRange } from './common/VisibleRange'\nimport TaskScheduler, { generateTaskId } from './common/TaskScheduler'\nimport type Crosshair from './common/Crosshair'\nimport type BarSpace from './common/BarSpace'\nimport type Precision from './common/Precision'\nimport Action from './common/Action'\nimport { ActionType, type ActionCallback } from './common/Action'\nimport { formatValue, formatTimestampToString, formatBigNumber, formatThousands, formatFoldDecimal } from './common/utils/format'\nimport { getDefaultStyles, type Styles, type TooltipLegend } from './common/Styles'\nimport { isArray, isString, isValid, isNumber, isBoolean, isFunction, merge } from './common/utils/typeChecks'\nimport { createId } from './common/utils/id'\nimport { binarySearchNearest } from './common/utils/number'\nimport { logWarn } from './common/utils/logger'\nimport { UpdateLevel } from './common/Updater'\nimport type { MouseTouchEvent } from './common/SyntheticEvent'\nimport { type LoadDataCallback, type LoadDataParams, LoadDataType } from './common/LoadDataCallback'\nimport type TimeWeightTick from './common/TimeWeightTick'\nimport { classifyTimeWeightTicks, createTimeWeightTickList } from './common/TimeWeightTick'\n\nimport type { Options, CustomApi, ThousandsSeparator, DecimalFold } from './Options'\n\nimport { IndicatorDataState, type IndicatorCreate, type IndicatorFilter } from './component/Indicator'\nimport type IndicatorImp from './component/Indicator'\nimport { IndicatorSeries } from './component/Indicator'\nimport { getIndicatorClass } from './extension/indicator/index'\n\nimport type OverlayImp from './component/Overlay'\nimport { type OverlayCreate, OVERLAY_ID_PREFIX, type OverlayFilter } from './component/Overlay'\nimport { getOverlayInnerClass } from './extension/overlay/index'\n\nimport { getStyles as getExtensionStyles } from './extension/styles/index'\n\nimport { PaneIdConstants } from './pane/types'\n\nimport type Chart from './Chart'\n\nconst BarSpaceLimitConstants = {\n MIN: 1,\n MAX: 50\n}\n\nconst enum ScrollLimitRole {\n BarCount,\n Distance\n}\n\nexport interface TooltipIcon {\n paneId: string\n indicatorName: string\n iconId: string\n}\n\nexport interface ProgressOverlayInfo {\n paneId: string\n overlay: OverlayImp\n appointPaneFlag: boolean\n}\n\nexport const enum EventOverlayInfoFigureType {\n None, Point, Other\n}\n\nexport interface EventOverlayInfo {\n paneId: string\n overlay: Nullable\n figureType: EventOverlayInfoFigureType\n figureKey: string\n figureIndex: number\n attrsIndex: number\n}\n\nconst DEFAULT_BAR_SPACE = 10\n\nconst DEFAULT_OFFSET_RIGHT_DISTANCE = 80\n\nconst BAR_GAP_RATIO = 0.2\n\nexport const SCALE_MULTIPLIER = 10\n\nexport interface Store {\n setStyles: (value: string | DeepPartial) => void\n getStyles: () => Styles\n setCustomApi: (api: Partial) => void\n getCustomApi: () => CustomApi\n setLocale: (locale: string) => void\n getLocale: () => string\n setTimezone: (timezone: string) => void\n getTimezone: () => string\n setThousandsSeparator: (thousandsSeparator: Partial) => void\n getThousandsSeparator: () => ThousandsSeparator\n setDecimalFold: (decimalFold: Partial) => void\n getDecimalFold: () => DecimalFold\n getPrecision: () => Precision\n setPrecision: (precision: Partial) => void\n getDataList: () => KLineData[]\n setOffsetRightDistance: (distance: number) => void\n getOffsetRightDistance: () => number\n setMaxOffsetLeftDistance: (distance: number) => void\n setMaxOffsetRightDistance: (distance: number) => void\n setLeftMinVisibleBarCount: (barCount: number) => void\n setRightMinVisibleBarCount: (barCount: number) => void\n setBarSpace: (space: number) => void\n getBarSpace: () => BarSpace\n getVisibleRange: () => VisibleRange\n setLoadMoreDataCallback: (callback: LoadDataCallback) => void\n overrideIndicator: (override: IndicatorCreate, paneId?: string) => boolean\n removeIndicator: (filter?: IndicatorFilter) => boolean\n overrideOverlay: (override: Partial) => boolean\n removeOverlay: (filter?: OverlayFilter) => boolean\n setZoomEnabled: (enabled: boolean) => void\n isZoomEnabled: () => boolean\n setScrollEnabled: (enabled: boolean) => void\n isScrollEnabled: () => boolean\n clearData: () => void\n}\n\nexport default class StoreImp implements Store {\n /**\n * Internal chart\n */\n private readonly _chart: Chart\n\n /**\n * Styles\n */\n private readonly _styles = getDefaultStyles()\n\n /**\n * Custom api\n */\n private readonly _customApi = {\n formatDate: (timestamp: number, format: string) => formatTimestampToString(this._dateTimeFormat, timestamp, format),\n formatBigNumber\n }\n\n /**\n * Locale\n */\n private _locale = 'en-US'\n\n /**\n * Thousands separator\n */\n private readonly _thousandsSeparator = {\n sign: ',',\n format: (value: string | number) => formatThousands(value, this._thousandsSeparator.sign)\n }\n\n /**\n * Decimal fold\n */\n private readonly _decimalFold = {\n threshold: 3,\n format: (value: string | number) => formatFoldDecimal(value, this._decimalFold.threshold)\n }\n\n /**\n * Price and volume precision\n */\n private readonly _precision = { price: 2, volume: 0 }\n\n /**\n * Data source\n */\n private _dataList: KLineData[] = []\n\n /**\n * Load more data callback\n */\n private _loadMoreDataCallback: Nullable = null\n\n /**\n * Is loading data flag\n */\n private _loading = true\n\n /**\n * Whether there are forward and backward more flag\n */\n private readonly _loadDataMore = { forward: false, backward: false }\n\n /**\n * Time format\n */\n private _dateTimeFormat: Intl.DateTimeFormat\n\n /**\n * Scale enabled flag\n */\n private _zoomEnabled = true\n\n /**\n * Scroll enabled flag\n */\n private _scrollEnabled = true\n\n /**\n * Total space of drawing area\n */\n private _totalBarSpace = 0\n\n /**\n * Space occupied by a single piece of data\n */\n private _barSpace = 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 _lastBarRightSideDiffBarCount: 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 _startLastBarRightSideDiffBarCount = 0\n\n /**\n * Scroll limit role\n */\n private _scrollLimitRole = ScrollLimitRole.BarCount\n\n /**\n * Scroll to the leftmost and rightmost visible bar\n */\n private readonly _minVisibleBarCount = { left: 2, right: 2 }\n\n /**\n * Scroll to the leftmost and rightmost distance\n */\n private readonly _maxOffsetDistance = { left: 50, right: 50 }\n\n /**\n * Start and end points of visible area data index\n */\n private _visibleRange = getDefaultVisibleRange()\n\n private readonly _timeWeightTickMap = new Map()\n\n private _timeWeightTickList: TimeWeightTick[] = []\n\n private _minTimeDifference = Number.MAX_SAFE_INTEGER\n\n /**\n * Visible data array\n */\n private _visibleRangeDataList: VisibleRangeData[] = []\n\n /**\n * Visible highest lowest price data\n */\n private _visibleRangeHighLowPrice = [\n { x: 0, price: Number.MIN_SAFE_INTEGER },\n { x: 0, price: Number.MAX_SAFE_INTEGER }\n ]\n\n /**\n * Crosshair info\n */\n private _crosshair: Crosshair = {}\n\n /**\n * Active tooltip icon info\n */\n private _activeTooltipIcon: Nullable = null\n\n /**\n * Actions\n */\n private readonly _actions = new Map()\n\n /**\n * Indicator\n */\n private readonly _indicators = new Map()\n\n /**\n * Task scheduler\n */\n private readonly _taskScheduler = new TaskScheduler()\n\n /**\n * Overlay\n */\n private readonly _overlays = new Map()\n\n /**\n * Overlay information in painting\n */\n private _progressOverlayInfo: Nullable = null\n\n /**\n * Overlay information by the mouse pressed\n */\n private _pressedOverlayInfo: EventOverlayInfo = {\n paneId: '',\n overlay: null,\n figureType: EventOverlayInfoFigureType.None,\n figureKey: '',\n figureIndex: -1,\n attrsIndex: -1\n }\n\n /**\n * Overlay information by hover\n */\n private _hoverOverlayInfo: EventOverlayInfo = {\n paneId: '',\n overlay: 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 _clickOverlayInfo: EventOverlayInfo = {\n paneId: '',\n overlay: null,\n figureType: EventOverlayInfoFigureType.None,\n figureKey: '',\n figureIndex: -1,\n attrsIndex: -1\n }\n\n constructor (chart: Chart, options?: Options) {\n this._chart = chart\n this._calcOptimalBarSpace()\n this._lastBarRightSideDiffBarCount = this._offsetRightDistance / this._barSpace\n const { styles, locale, timezone, customApi, thousandsSeparator, decimalFold } = options ?? {}\n if (isValid(styles)) {\n this.setStyles(styles)\n }\n if (isString(locale)) {\n this.setLocale(locale)\n }\n this.setTimezone(timezone ?? '')\n if (isValid(customApi)) {\n this.setCustomApi(customApi)\n }\n if (isValid(thousandsSeparator)) {\n this.setThousandsSeparator(thousandsSeparator)\n }\n if (isValid(decimalFold)) {\n this.setDecimalFold(decimalFold)\n }\n }\n\n setStyles (value: string | DeepPartial): void {\n let styles: Nullable> = null\n if (isString(value)) {\n styles = getExtensionStyles(value)\n } else {\n styles = value\n }\n merge(this._styles, styles)\n // `candle.tooltip.custom` should override\n if (isArray(styles?.candle?.tooltip?.custom)) {\n this._styles.candle.tooltip.custom = styles.candle.tooltip.custom as TooltipLegend[]\n }\n }\n\n getStyles (): Styles { return this._styles }\n\n setCustomApi (api: Partial): void {\n merge(this._customApi, api)\n }\n\n getCustomApi (): CustomApi { return this._customApi }\n\n setLocale (locale: string): void { this._locale = locale }\n\n getLocale (): string { return this._locale }\n\n setTimezone (timezone: string): void {\n if (\n !isValid(this._dateTimeFormat) ||\n (this.getTimezone() !== timezone)\n ) {\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.length > 0) {\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 if (dateTimeFormat !== null) {\n this._classifyTimeWeightTicks(this._dataList)\n this._dateTimeFormat = dateTimeFormat\n }\n }\n }\n\n getTimezone (): string { return this._dateTimeFormat.resolvedOptions().timeZone }\n\n getDateTimeFormat (): Intl.DateTimeFormat {\n return this._dateTimeFormat\n }\n\n setThousandsSeparator (thousandsSeparator: Partial): void {\n merge(this._thousandsSeparator, thousandsSeparator)\n }\n\n getThousandsSeparator (): ThousandsSeparator { return this._thousandsSeparator }\n\n setDecimalFold (decimalFold: Partial): void { merge(this._decimalFold, decimalFold) }\n\n getDecimalFold (): DecimalFold { return this._decimalFold }\n\n getPrecision (): Precision {\n return this._precision\n }\n\n setPrecision (precision: Partial): void {\n merge(this._precision, precision)\n this._synchronizeIndicatorSeriesPrecision()\n }\n\n getDataList (): KLineData[] {\n return this._dataList\n }\n\n getVisibleRangeDataList (): VisibleRangeData[] {\n return this._visibleRangeDataList\n }\n\n getVisibleRangeHighLowPrice (): Array<{ price: number; x: number }> {\n return this._visibleRangeHighLowPrice\n }\n\n addData (\n data: KLineData | KLineData[],\n type: LoadDataType,\n more?: { forward: boolean, backward: boolean }\n ): void {\n let success = false\n let adjustFlag = false\n let dataLengthChange = 0\n if (isArray(data)) {\n dataLengthChange = data.length\n switch (type) {\n case LoadDataType.Init: {\n this.clearData()\n this._dataList = data\n this._loadDataMore.backward = more?.forward ?? false\n this._loadDataMore.forward = more?.forward ?? false\n this._classifyTimeWeightTicks(this._dataList)\n this.setOffsetRightDistance(this._offsetRightDistance)\n adjustFlag = true\n break\n }\n case LoadDataType.Backward: {\n this._classifyTimeWeightTicks(data, true)\n this._dataList = this._dataList.concat(data)\n this._loadDataMore.backward = more?.backward ?? false\n adjustFlag = dataLengthChange > 0\n break\n }\n case LoadDataType.Forward: {\n this._dataList = data.concat(this._dataList)\n this._classifyTimeWeightTicks(this._dataList)\n this._loadDataMore.forward = more?.forward ?? false\n adjustFlag = dataLengthChange > 0\n break\n }\n default: {\n break\n }\n }\n this._loading = false\n success = true\n } else {\n const dataCount = this._dataList.length\n // Determine where individual data should be added\n const timestamp = data.timestamp\n const lastDataTimestamp = formatValue(this._dataList[dataCount - 1], 'timestamp', 0) as number\n if (timestamp > lastDataTimestamp) {\n this._classifyTimeWeightTicks([data], true)\n this._dataList.push(data)\n let lastBarRightSideDiffBarCount = this.getLastBarRightSideDiffBarCount()\n if (lastBarRightSideDiffBarCount < 0) {\n this.setLastBarRightSideDiffBarCount(--lastBarRightSideDiffBarCount)\n }\n dataLengthChange = 1\n success = true\n adjustFlag = true\n } else if (timestamp === lastDataTimestamp) {\n this._dataList[dataCount - 1] = data\n success = true\n adjustFlag = true\n }\n }\n if (success) {\n if (adjustFlag) {\n this._adjustVisibleRange()\n this.setCrosshair(this._crosshair, true)\n const filterMap = this.getIndicatorsByFilter({})\n filterMap.forEach((indicators, paneId) => {\n indicators.forEach(indicator => {\n this._addIndicatorCalcTask(paneId, indicator, type)\n })\n })\n this._chart.layout({\n measureWidth: true,\n update: true,\n buildYAxisTick: true\n })\n }\n }\n }\n\n setLoadMoreDataCallback (callback: LoadDataCallback): void {\n this._loadMoreDataCallback = callback\n }\n\n private _calcOptimalBarSpace (): void {\n const specialBarSpace = 4\n const ratio = 1 - BAR_GAP_RATIO * Math.atan(Math.max(specialBarSpace, this._barSpace) - specialBarSpace) / (Math.PI * 0.5)\n let gapBarSpace = Math.min(Math.floor(this._barSpace * ratio), Math.floor(this._barSpace))\n if (gapBarSpace % 2 === 0 && gapBarSpace + 2 >= this._barSpace) {\n --gapBarSpace\n }\n this._gapBarSpace = Math.max(1, gapBarSpace)\n }\n\n private _classifyTimeWeightTicks (newDataList: KLineData[], isUpdate?: boolean): void {\n let baseDataIndex = 0\n let prevTimestamp: Nullable = null\n if (isUpdate ?? false) {\n baseDataIndex = this._dataList.length\n prevTimestamp = this._dataList[baseDataIndex - 1].timestamp\n } else {\n this._timeWeightTickMap.clear()\n this._minTimeDifference = Number.MAX_SAFE_INTEGER\n }\n\n const minTimeDifferenceObj = { value: this._minTimeDifference }\n classifyTimeWeightTicks(\n this._timeWeightTickMap,\n newDataList,\n this._dateTimeFormat,\n baseDataIndex,\n minTimeDifferenceObj,\n prevTimestamp\n )\n this._minTimeDifference = minTimeDifferenceObj.value\n this._timeWeightTickList = createTimeWeightTickList(this._timeWeightTickMap, this._barSpace, this._styles.xAxis.tickText)\n }\n\n getTimeWeightTickList (): TimeWeightTick[] {\n return this._timeWeightTickList\n }\n\n private _adjustVisibleRange (): void {\n const totalBarCount = this._dataList.length\n const visibleBarCount = this._totalBarSpace / this._barSpace\n\n let leftMinVisibleBarCount = 0\n let rightMinVisibleBarCount = 0\n\n if (this._scrollLimitRole === ScrollLimitRole.Distance) {\n leftMinVisibleBarCount = (this._totalBarSpace - this._maxOffsetDistance.right) / this._barSpace\n rightMinVisibleBarCount = (this._totalBarSpace - this._maxOffsetDistance.left) / this._barSpace\n } else {\n leftMinVisibleBarCount = this._minVisibleBarCount.left\n rightMinVisibleBarCount = this._minVisibleBarCount.right\n }\n\n leftMinVisibleBarCount = Math.max(0, leftMinVisibleBarCount)\n rightMinVisibleBarCount = Math.max(0, rightMinVisibleBarCount)\n\n const maxRightOffsetBarCount = visibleBarCount - Math.min(leftMinVisibleBarCount, totalBarCount)\n if (this._lastBarRightSideDiffBarCount > maxRightOffsetBarCount) {\n this._lastBarRightSideDiffBarCount = maxRightOffsetBarCount\n }\n\n const minRightOffsetBarCount = -totalBarCount + Math.min(rightMinVisibleBarCount, totalBarCount)\n if (this._lastBarRightSideDiffBarCount < minRightOffsetBarCount) {\n this._lastBarRightSideDiffBarCount = minRightOffsetBarCount\n }\n\n let to = Math.round(this._lastBarRightSideDiffBarCount + totalBarCount + 0.5)\n const realTo = to\n if (to > totalBarCount) {\n to = totalBarCount\n }\n let from = Math.round(to - visibleBarCount) - 1\n if (from < 0) {\n from = 0\n }\n const realFrom = this._lastBarRightSideDiffBarCount > 0 ? Math.round(totalBarCount + this._lastBarRightSideDiffBarCount - visibleBarCount) - 1 : from\n this._visibleRange = { from, to, realFrom, realTo }\n this.executeAction(ActionType.OnVisibleRangeChange, this._visibleRange)\n this._visibleRangeDataList = []\n this._visibleRangeHighLowPrice = [\n { x: 0, price: Number.MIN_SAFE_INTEGER },\n { x: 0, price: Number.MAX_SAFE_INTEGER }\n ]\n for (let i = realFrom; i < realTo; i++) {\n const kLineData = this._dataList[i]\n const x = this.dataIndexToCoordinate(i)\n this._visibleRangeDataList.push({\n dataIndex: i,\n x,\n data: kLineData\n })\n if (isValid(kLineData)) {\n if (this._visibleRangeHighLowPrice[0].price < kLineData.high) {\n this._visibleRangeHighLowPrice[0].price = kLineData.high\n this._visibleRangeHighLowPrice[0].x = x\n }\n if (this._visibleRangeHighLowPrice[1].price > kLineData.low) {\n this._visibleRangeHighLowPrice[1].price = kLineData.low\n this._visibleRangeHighLowPrice[1].x = x\n }\n }\n }\n // More processing and loading, more loading if there are callback methods and no data is being loaded\n if (!this._loading && isValid(this._loadMoreDataCallback)) {\n let params: Nullable = null\n if (from === 0) {\n if (this._loadDataMore.forward) {\n this._loading = true\n params = {\n type: LoadDataType.Forward,\n data: this._dataList[0] ?? null,\n callback: (data: KLineData[], more?: boolean) => {\n this.addData(data, LoadDataType.Forward, { forward: more ?? false, backward: more ?? false })\n }\n }\n }\n } else if (to === totalBarCount) {\n if (this._loadDataMore.backward) {\n this._loading = true\n params = {\n type: LoadDataType.Backward,\n data: this._dataList[totalBarCount - 1] ?? null,\n callback: (data: KLineData[], more?: boolean) => {\n this.addData(data, LoadDataType.Backward, { forward: more ?? false, backward: more ?? false })\n }\n }\n }\n }\n if (isValid(params)) {\n this._loadMoreDataCallback(params)\n }\n }\n }\n\n getBarSpace (): BarSpace {\n return {\n bar: this._barSpace,\n halfBar: this._barSpace / 2,\n gapBar: this._gapBarSpace,\n halfGapBar: Math.floor(this._gapBarSpace / 2)\n }\n }\n\n setBarSpace (barSpace: number, adjustBeforeFunc?: () => void): void {\n if (barSpace < BarSpaceLimitConstants.MIN || barSpace > BarSpaceLimitConstants.MAX || this._barSpace === barSpace) {\n return\n }\n this._barSpace = barSpace\n this._timeWeightTickList = createTimeWeightTickList(this._timeWeightTickMap, this._barSpace, this._styles.xAxis.tickText)\n this._calcOptimalBarSpace()\n adjustBeforeFunc?.()\n this._adjustVisibleRange()\n this.setCrosshair(this._crosshair, true)\n this._chart.layout({\n measureWidth: true,\n update: true,\n buildYAxisTick: true\n })\n }\n\n setTotalBarSpace (totalSpace: number): void {\n if (this._totalBarSpace !== totalSpace) {\n this._totalBarSpace = totalSpace\n this._adjustVisibleRange()\n this.setCrosshair(this._crosshair, true)\n }\n }\n\n setOffsetRightDistance (distance: number, isUpdate?: boolean): this {\n this._offsetRightDistance = this._scrollLimitRole === ScrollLimitRole.Distance ? Math.min(this._maxOffsetDistance.right, distance) : distance\n this._lastBarRightSideDiffBarCount = this._offsetRightDistance / this._barSpace\n if (isUpdate ?? false) {\n this._adjustVisibleRange()\n this.setCrosshair(this._crosshair, true)\n this._chart.layout({\n measureWidth: true,\n update: true,\n buildYAxisTick: true\n })\n }\n return this\n }\n\n getInitialOffsetRightDistance (): number {\n return this._offsetRightDistance\n }\n\n getOffsetRightDistance (): number {\n return Math.max(0, this._lastBarRightSideDiffBarCount * this._barSpace)\n }\n\n getLastBarRightSideDiffBarCount (): number {\n return this._lastBarRightSideDiffBarCount\n }\n\n setLastBarRightSideDiffBarCount (barCount: number): void {\n this._lastBarRightSideDiffBarCount = barCount\n }\n\n setMaxOffsetLeftDistance (distance: number): void {\n this._scrollLimitRole = ScrollLimitRole.Distance\n this._maxOffsetDistance.left = distance\n }\n\n setMaxOffsetRightDistance (distance: number): void {\n this._scrollLimitRole = ScrollLimitRole.Distance\n this._maxOffsetDistance.right = distance\n }\n\n setLeftMinVisibleBarCount (barCount: number): void {\n this._scrollLimitRole = ScrollLimitRole.BarCount\n this._minVisibleBarCount.left = barCount\n }\n\n setRightMinVisibleBarCount (barCount: number): void {\n this._scrollLimitRole = ScrollLimitRole.BarCount\n this._minVisibleBarCount.right = barCount\n }\n\n getVisibleRange (): VisibleRange {\n return this._visibleRange\n }\n\n startScroll (): void {\n this._startLastBarRightSideDiffBarCount = this._lastBarRightSideDiffBarCount\n }\n\n scroll (distance: number): void {\n if (!this._scrollEnabled) {\n return\n }\n const distanceBarCount = distance / this._barSpace\n const prevLastBarRightSideDistance = this._lastBarRightSideDiffBarCount * this._barSpace\n this._lastBarRightSideDiffBarCount = this._startLastBarRightSideDiffBarCount - distanceBarCount\n this._adjustVisibleRange()\n this.setCrosshair(this._crosshair, true)\n this._chart.layout({\n measureWidth: true,\n update: true,\n buildYAxisTick: true\n })\n const realDistance = Math.round(\n prevLastBarRightSideDistance - this._lastBarRightSideDiffBarCount * this._barSpace\n )\n if (realDistance !== 0) {\n this.executeAction(ActionType.OnScroll, { distance: realDistance })\n }\n }\n\n getDataByDataIndex (dataIndex: number): Nullable {\n return this._dataList[dataIndex] ?? null\n }\n\n coordinateToFloatIndex (x: number): number {\n const dataCount = this._dataList.length\n const deltaFromRight = (this._totalBarSpace - x) / this._barSpace\n const index = dataCount + this._lastBarRightSideDiffBarCount - deltaFromRight\n return Math.round(index * 1000000) / 1000000\n }\n\n dataIndexToTimestamp (dataIndex: number): Nullable {\n const length = this._dataList.length\n if (length === 0) {\n return null\n }\n const data = this.getDataByDataIndex(dataIndex)\n if (isValid(data)) {\n return data.timestamp\n }\n const lastIndex = length - 1\n if (dataIndex > lastIndex) {\n return this._dataList[lastIndex].timestamp + this._minTimeDifference * (dataIndex - lastIndex)\n }\n if (dataIndex < 0) {\n return this._dataList[0].timestamp - this._minTimeDifference * Math.abs(dataIndex)\n }\n return null\n }\n\n timestampToDataIndex (timestamp: number): number {\n const length = this._dataList.length\n if (length === 0) {\n return 0\n }\n const lastIndex = length - 1\n const lastTimestamp = this._dataList[lastIndex].timestamp\n if (timestamp > lastTimestamp) {\n return lastIndex + Math.floor((timestamp - lastTimestamp) / this._minTimeDifference)\n }\n const firstTimestamp = this._dataList[0].timestamp\n if (timestamp < firstTimestamp) {\n return Math.floor((timestamp - firstTimestamp) / this._minTimeDifference)\n }\n return binarySearchNearest(this._dataList, 'timestamp', timestamp)\n }\n\n dataIndexToCoordinate (dataIndex: number): number {\n const dataCount = this._dataList.length\n const deltaFromRight = dataCount + this._lastBarRightSideDiffBarCount - dataIndex\n return Math.floor(this._totalBarSpace - (deltaFromRight - 0.5) * this._barSpace + 0.5)\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 let zoomCoordinate: Nullable> = coordinate ?? null\n if (!isNumber(zoomCoordinate?.x)) {\n zoomCoordinate = { x: this._crosshair.x ?? this._totalBarSpace / 2 }\n }\n const x = zoomCoordinate.x!\n const floatIndex = this.coordinateToFloatIndex(x)\n const prevBarSpace = this._barSpace\n const barSpace = this._barSpace + scale * (this._barSpace / SCALE_MULTIPLIER)\n this.setBarSpace(barSpace, () => {\n this._lastBarRightSideDiffBarCount += (floatIndex - this.coordinateToFloatIndex(x))\n })\n const realScale = this._barSpace / prevBarSpace\n if (realScale !== 1) {\n this.executeAction(ActionType.OnZoom, { scale: realScale })\n }\n }\n\n setZoomEnabled (enabled: boolean): void {\n this._zoomEnabled = enabled\n }\n\n isZoomEnabled (): boolean {\n return this._zoomEnabled\n }\n\n setScrollEnabled (enabled: boolean): void {\n this._scrollEnabled = enabled\n }\n\n isScrollEnabled (): boolean {\n return this._scrollEnabled\n }\n\n setCrosshair (crosshair?: Crosshair, notInvalidate?: boolean): void {\n const cr = crosshair ?? {}\n let realDataIndex = 0\n let dataIndex = 0\n if (isNumber(cr.x)) {\n realDataIndex = this.coordinateToDataIndex(cr.x)\n if (realDataIndex < 0) {\n dataIndex = 0\n } else if (realDataIndex > this._dataList.length - 1) {\n dataIndex = this._dataList.length - 1\n } else {\n dataIndex = realDataIndex\n }\n } else {\n realDataIndex = this._dataList.length - 1\n dataIndex = realDataIndex\n }\n const kLineData: Nullable = this._dataList[dataIndex]\n const realX = this.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, timestamp: this.dataIndexToTimestamp(realDataIndex) ?? undefined }\n if (\n prevCrosshair.x !== cr.x || prevCrosshair.y !== cr.y || prevCrosshair.paneId !== cr.paneId\n ) {\n if (isValid(kLineData)) {\n this._chart.crosshairChange(this._crosshair)\n }\n if (!(notInvalidate ?? false)) {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n }\n }\n\n /**\n * 获取crosshair信息\n * @returns\n */\n getCrosshair (): Crosshair {\n return this._crosshair\n }\n\n setActiveTooltipIcon (icon?: TooltipIcon): void {\n this._activeTooltipIcon = icon ?? null\n }\n\n getActiveTooltipIcon (): Nullable {\n return this._activeTooltipIcon\n }\n\n executeAction (type: ActionType, data?: unknown): void {\n this._actions.get(type)?.execute(data)\n }\n\n subscribeAction (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 unsubscribeAction (type: ActionType, callback?: ActionCallback): void {\n const action = this._actions.get(type)\n if (isValid(action)) {\n action.unsubscribe(callback)\n if (action.isEmpty()) {\n this._actions.delete(type)\n }\n }\n }\n\n hasAction (type: ActionType): boolean {\n const action = this._actions.get(type)\n return isValid(action) && !action.isEmpty()\n }\n\n private _sortIndicators (paneId?: string): void {\n if (isString(paneId)) {\n this._indicators.get(paneId)?.sort((i1, i2) => i1.zLevel - i2.zLevel)\n } else {\n this._indicators.forEach(paneIndicators => {\n paneIndicators.sort((i1, i2) => i1.zLevel - i2.zLevel)\n })\n }\n }\n\n private _addIndicatorCalcTask (paneId: string, indicator: IndicatorImp, loadDataType: LoadDataType): void {\n this._taskScheduler.addTask({\n id: generateTaskId(paneId, indicator.name),\n handler: () => {\n indicator.onDataStateChange?.({\n state: IndicatorDataState.Loading,\n type: loadDataType,\n indicator\n })\n indicator.calcImp(this._dataList).then(result => {\n if (result) {\n this._chart.layout({\n measureWidth: true,\n update: true,\n buildYAxisTick: true\n })\n indicator.onDataStateChange?.({\n state: IndicatorDataState.Ready,\n type: loadDataType,\n indicator\n })\n }\n }).catch(() => {\n indicator.onDataStateChange?.({\n state: IndicatorDataState.Error,\n type: loadDataType,\n indicator\n })\n })\n }\n })\n }\n\n addIndicator (create: IndicatorCreate, paneId: string, isStack: boolean): boolean {\n const { name } = create\n let paneIndicators = this._indicators.get(paneId)\n if (isValid(paneIndicators)) {\n if (isValid(paneIndicators.find(i => i.name === name))) {\n return false\n }\n }\n if (!isValid(paneIndicators)) {\n paneIndicators = []\n }\n const IndicatorClazz = getIndicatorClass(name)!\n const indicator = new IndicatorClazz()\n\n this._synchronizeIndicatorSeriesPrecision(indicator)\n indicator.override(create)\n if (!isStack) {\n this.removeIndicator({ paneId })\n paneIndicators = []\n }\n paneIndicators.push(indicator)\n this._indicators.set(paneId, paneIndicators)\n this._sortIndicators(paneId)\n this._addIndicatorCalcTask(paneId, indicator, LoadDataType.Init)\n return true\n }\n\n getIndicatorsByPaneId (paneId: string): IndicatorImp[] {\n return this._indicators.get(paneId) ?? []\n }\n\n getIndicatorsByFilter (filter: IndicatorFilter): Map {\n const find: ((indicators: IndicatorImp[], name?: string) => IndicatorImp[]) = (indicators, name) => indicators.filter(indicator => (!isValid(name) || indicator.name === name))\n const { paneId, name } = filter\n const map = new Map()\n if (isValid(paneId)) {\n const indicators = this.getIndicatorsByPaneId(paneId)\n map.set(paneId, find(indicators, name))\n } else {\n if (isValid(name)) {\n this._indicators.forEach((indicators, paneId) => {\n map.set(paneId, find(indicators, name))\n })\n } else {\n this._indicators.forEach((indicators, paneId) => {\n map.set(paneId, find(indicators))\n })\n }\n }\n return map\n }\n\n removeIndicator (filter: IndicatorFilter): boolean {\n let removed = false\n const filterMap = this.getIndicatorsByFilter(filter)\n filterMap.forEach((indicators, paneId) => {\n const paneIndicators = this.getIndicatorsByPaneId(paneId)\n indicators.forEach(indicator => {\n const index = paneIndicators.findIndex(ins => ins.name === indicator.name)\n if (index > -1) {\n this._taskScheduler.removeTask(generateTaskId(paneId, indicator.name))\n paneIndicators.splice(index, 1)\n removed = true\n }\n })\n if (paneIndicators.length === 0) {\n this._indicators.delete(paneId)\n }\n })\n return removed\n }\n\n hasIndicators (paneId: string): boolean {\n return this._indicators.has(paneId)\n }\n\n private _synchronizeIndicatorSeriesPrecision (indicator?: IndicatorImp): void {\n const { price: pricePrecision, volume: volumePrecision } = this._precision\n const synchronize: ((indicator: IndicatorImp) => void) = indicator => {\n switch (indicator.series) {\n case IndicatorSeries.Price: {\n indicator.setSeriesPrecision(pricePrecision)\n break\n }\n case IndicatorSeries.Volume: {\n indicator.setSeriesPrecision(volumePrecision)\n break\n }\n default: { break }\n }\n }\n\n if (isValid(indicator)) {\n synchronize(indicator)\n } else {\n this._indicators.forEach(paneIndicators => {\n paneIndicators.forEach(indicator => {\n synchronize(indicator)\n })\n })\n }\n }\n\n overrideIndicator (create: IndicatorCreate, paneId?: string): boolean {\n const { name } = create\n let indictors = new Map()\n if (isValid(paneId)) {\n const paneIndicators = this._indicators.get(paneId)\n if (isValid(paneIndicators)) {\n indictors.set(paneId, paneIndicators)\n }\n } else {\n indictors = this._indicators\n }\n let updateFlag = false\n let sortFlag = false\n indictors.forEach((paneIndicators, paneId) => {\n const indicator = paneIndicators.find(i => i.name === name)\n if (isValid(indicator)) {\n indicator.override(create)\n const { calc, draw, sort } = indicator.shouldUpdateImp()\n if (sort) {\n sortFlag = true\n }\n if (calc) {\n this._addIndicatorCalcTask(paneId, indicator, LoadDataType.Update)\n } else {\n if (draw) {\n updateFlag = true\n }\n }\n }\n })\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- ignore\n if (sortFlag) {\n this._sortIndicators()\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- ignore\n if (updateFlag) {\n this._chart.layout({ update: true })\n return true\n }\n return false\n }\n\n getOverlaysByFilter (filter: OverlayFilter): Map {\n const { id, groupId, paneId, name } = filter\n const find: ((overlays: OverlayImp[]) => OverlayImp[]) = (overlays) => overlays.filter(overlay => {\n if (isValid(id)) {\n return overlay.id === id\n } else {\n if (isValid(groupId)) {\n return overlay.groupId === groupId && (!isValid(name) || overlay.name === name)\n }\n }\n return !isValid(name) || overlay.name === name\n })\n\n const map = new Map()\n if (isValid(paneId)) {\n const overlays = this.getOverlaysByPaneId(paneId)\n map.set(paneId, find(overlays))\n } else {\n this._overlays.forEach((overlays, paneId) => {\n map.set(paneId, find(overlays))\n })\n }\n const progressOverlay = this._progressOverlayInfo?.overlay\n if (isValid(progressOverlay)) {\n const paneOverlays = map.get(progressOverlay.paneId) ?? []\n paneOverlays.push(progressOverlay)\n map.set(progressOverlay.paneId, paneOverlays)\n }\n return map\n }\n\n getOverlaysByPaneId (paneId?: string): OverlayImp[] {\n if (!isString(paneId)) {\n let overlays: OverlayImp[] = []\n this._overlays.forEach(paneOverlays => {\n overlays = overlays.concat(paneOverlays)\n })\n return overlays\n }\n return this._overlays.get(paneId) ?? []\n }\n\n private _sortOverlays (paneId?: string): void {\n if (isString(paneId)) {\n this._overlays.get(paneId)?.sort((o1, o2) => o1.zLevel - o2.zLevel)\n } else {\n this._overlays.forEach(paneOverlays => {\n paneOverlays.sort((o1, o2) => o1.zLevel - o2.zLevel)\n })\n }\n }\n\n addOverlays (os: OverlayCreate[], appointPaneFlags: boolean[]): Array> {\n const updatePaneIds: string[] = []\n const ids = os.map((create, index) => {\n if (isValid(create.id)) {\n let findOverlay: Nullable = null\n for (const [, overlays] of this._overlays) {\n const overlay = overlays.find(o => o.id === create.id)\n if (isValid(overlay)) {\n findOverlay = overlay\n break\n }\n }\n if (isValid(findOverlay)) {\n return create.id\n }\n }\n const OverlayClazz = getOverlayInnerClass(create.name)\n if (isValid(OverlayClazz)) {\n const id = create.id ?? createId(OVERLAY_ID_PREFIX)\n const overlay = new OverlayClazz()\n create.id = id\n create.groupId ??= id\n overlay.override(create)\n const paneId = overlay.paneId\n if (!updatePaneIds.includes(paneId)) {\n updatePaneIds.push(paneId)\n }\n if (overlay.isDrawing()) {\n this._progressOverlayInfo = { paneId, overlay, appointPaneFlag: appointPaneFlags[index] }\n } else {\n if (!this._overlays.has(paneId)) {\n this._overlays.set(paneId, [])\n }\n this._overlays.get(paneId)?.push(overlay)\n }\n if (overlay.isStart()) {\n overlay.onDrawStart?.(({ overlay, chart: this._chart }))\n }\n return id\n }\n return null\n })\n if (updatePaneIds.length > 0) {\n this._sortOverlays()\n updatePaneIds.forEach(paneId => {\n this._chart.updatePane(UpdateLevel.Overlay, paneId)\n })\n this._chart.updatePane(UpdateLevel.Overlay, PaneIdConstants.X_AXIS)\n }\n return ids\n }\n\n getProgressOverlayInfo (): Nullable {\n return this._progressOverlayInfo\n }\n\n progressOverlayComplete (): void {\n if (this._progressOverlayInfo !== null) {\n const { overlay, paneId } = this._progressOverlayInfo\n if (!overlay.isDrawing()) {\n if (!this._overlays.has(paneId)) {\n this._overlays.set(paneId, [])\n }\n this._overlays.get(paneId)?.push(overlay)\n this._sortOverlays(paneId)\n this._progressOverlayInfo = null\n }\n }\n }\n\n updateProgressOverlayInfo (paneId: string, appointPaneFlag?: boolean): void {\n if (this._progressOverlayInfo !== null) {\n if (isBoolean(appointPaneFlag) && appointPaneFlag) {\n this._progressOverlayInfo.appointPaneFlag = appointPaneFlag\n }\n this._progressOverlayInfo.paneId = paneId\n this._progressOverlayInfo.overlay.override({ paneId })\n }\n }\n\n overrideOverlay (create: Partial): boolean {\n let sortFlag = false\n const updatePaneIds: string[] = []\n const filterMap = this.getOverlaysByFilter(create)\n filterMap.forEach((overlays, paneId) => {\n overlays.forEach(overlay => {\n overlay.override(create)\n const { sort, draw } = overlay.shouldUpdate()\n if (sort) {\n sortFlag = true\n }\n if (sort || draw) {\n if (!updatePaneIds.includes(paneId)) {\n updatePaneIds.push(paneId)\n }\n }\n })\n })\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- ignore\n if (sortFlag) {\n this._sortOverlays()\n }\n if (updatePaneIds.length > 0) {\n updatePaneIds.forEach(paneId => {\n this._chart.updatePane(UpdateLevel.Overlay, paneId)\n })\n this._chart.updatePane(UpdateLevel.Overlay, PaneIdConstants.X_AXIS)\n return true\n }\n return false\n }\n\n removeOverlay (filter: OverlayFilter): boolean {\n const updatePaneIds: string[] = []\n const filterMap = this.getOverlaysByFilter(filter)\n filterMap.forEach((overlays, paneId) => {\n const paneOverlays = this.getOverlaysByPaneId(paneId)\n overlays.forEach(overlay => {\n overlay.onRemoved?.({ overlay, chart: this._chart })\n if (!updatePaneIds.includes(paneId)) {\n updatePaneIds.push(paneId)\n }\n if (overlay.isDrawing()) {\n this._progressOverlayInfo = null\n } else {\n const index = paneOverlays.findIndex(o => o.id === overlay.id)\n if (index > -1) {\n paneOverlays.splice(index, 1)\n }\n }\n if (paneOverlays.length === 0) {\n this._overlays.delete(paneId)\n }\n })\n })\n if (updatePaneIds.length > 0) {\n updatePaneIds.forEach(paneId => {\n this._chart.updatePane(UpdateLevel.Overlay, paneId)\n })\n this._chart.updatePane(UpdateLevel.Overlay, PaneIdConstants.X_AXIS)\n return true\n }\n return false\n }\n\n setPressedOverlayInfo (info: EventOverlayInfo): void {\n this._pressedOverlayInfo = info\n }\n\n getPressedOverlayInfo (): EventOverlayInfo {\n return this._pressedOverlayInfo\n }\n\n setHoverOverlayInfo (info: EventOverlayInfo, event: MouseTouchEvent): void {\n const { overlay, figureType, figureKey, figureIndex } = this._hoverOverlayInfo\n const infoOverlay = info.overlay\n if (\n overlay?.id !== infoOverlay?.id ||\n figureType !== info.figureType ||\n figureIndex !== info.figureIndex\n ) {\n this._hoverOverlayInfo = info\n if (overlay?.id !== infoOverlay?.id) {\n let ignoreUpdateFlag = false\n let sortFlag = false\n if (overlay !== null) {\n sortFlag = true\n if (isFunction(overlay.onMouseLeave)) {\n overlay.onMouseLeave({ chart: this._chart, overlay, figureKey, figureIndex, ...event })\n ignoreUpdateFlag = true\n }\n }\n\n if (infoOverlay !== null) {\n sortFlag = true\n if (isFunction(infoOverlay.onMouseEnter)) {\n infoOverlay.onMouseEnter({ chart: this._chart, overlay: infoOverlay, figureKey: info.figureKey, figureIndex: info.figureIndex, ...event })\n ignoreUpdateFlag = true\n }\n }\n if (sortFlag) {\n this._sortOverlays()\n }\n if (!ignoreUpdateFlag) {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n }\n }\n }\n\n getHoverOverlayInfo (): EventOverlayInfo {\n return this._hoverOverlayInfo\n }\n\n setClickOverlayInfo (info: EventOverlayInfo, event: MouseTouchEvent): void {\n const { paneId, overlay, figureType, figureKey, figureIndex } = this._clickOverlayInfo\n const infoOverlay = info.overlay\n if (!(infoOverlay?.isDrawing() ?? false)) {\n infoOverlay?.onClick?.({ chart: this._chart, overlay: infoOverlay, figureKey: info.figureKey, figureIndex: info.figureIndex, ...event })\n }\n if (overlay?.id !== infoOverlay?.id || figureType !== info.figureType || figureIndex !== info.figureIndex) {\n this._clickOverlayInfo = info\n if (overlay?.id !== infoOverlay?.id) {\n overlay?.onDeselected?.({ chart: this._chart, overlay, figureKey, figureIndex, ...event })\n infoOverlay?.onSelected?.({ chart: this._chart, overlay: infoOverlay, figureKey: info.figureKey, figureIndex: info.figureIndex, ...event })\n this._chart.updatePane(UpdateLevel.Overlay, info.paneId)\n if (paneId !== info.paneId) {\n this._chart.updatePane(UpdateLevel.Overlay, paneId)\n }\n this._chart.updatePane(UpdateLevel.Overlay, PaneIdConstants.X_AXIS)\n }\n }\n }\n\n getClickOverlayInfo (): EventOverlayInfo {\n return this._clickOverlayInfo\n }\n\n isOverlayEmpty (): boolean {\n return this._overlays.size === 0 && this._progressOverlayInfo === null\n }\n\n isOverlayDrawing (): boolean {\n return this._progressOverlayInfo?.overlay.isDrawing() ?? false\n }\n\n clearData (): void {\n this._loadDataMore.backward = false\n this._loadDataMore.forward = false\n this._loading = true\n this._dataList = []\n this._visibleRangeDataList = []\n this._visibleRangeHighLowPrice = [\n { x: 0, price: Number.MIN_SAFE_INTEGER },\n { x: 0, price: Number.MAX_SAFE_INTEGER }\n ]\n this._visibleRange = getDefaultVisibleRange()\n this._timeWeightTickMap.clear()\n this._timeWeightTickList = []\n this._crosshair = {}\n this._activeTooltipIcon = null\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 const WidgetNameConstants = {\n MAIN: 'main',\n X_AXIS: 'xAxis',\n Y_AXIS: 'yAxis',\n SEPARATOR: 'separator'\n}\n\nexport const REAL_SEPARATOR_HEIGHT = 7\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 { getPixelRatio } from './utils/canvas'\nimport { createDom } from './utils/dom'\nimport { isValid } from './utils/typeChecks'\nimport { requestAnimationFrame, DEFAULT_REQUEST_ID } from './utils/compatible'\n\ntype DrawListener = () => void\n\nasync function isSupportedDevicePixelContentBox (): Promise {\n // eslint-disable-next-line promise/avoid-new -- ignore\n return await new Promise((resolve: (val: boolean) => void) => {\n const ro = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n resolve(entries.every(entry => 'devicePixelContentBoxSize' in entry))\n ro.disconnect()\n })\n ro.observe(document.body, { box: 'device-pixel-content-box' })\n }).catch(() => false)\n}\n\nexport default class Canvas {\n private readonly _element: HTMLCanvasElement\n private _resizeObserver: ResizeObserver\n private _mediaQueryList: MediaQueryList\n\n private readonly _ctx: CanvasRenderingContext2D\n\n private readonly _listener: DrawListener\n\n private _supportedDevicePixelContentBox = false\n\n private _width = 0\n private _height = 0\n\n private _pixelWidth = 0\n private _pixelHeight = 0\n\n private _nextPixelWidth = 0\n private _nextPixelHeight = 0\n\n private _requestAnimationId = DEFAULT_REQUEST_ID\n\n private readonly _mediaQueryListener: () => void = () => {\n const pixelRatio = getPixelRatio(this._element)\n this._nextPixelWidth = Math.round(this._element.clientWidth * pixelRatio)\n this._nextPixelHeight = Math.round(this._element.clientHeight * pixelRatio)\n this._resetPixelRatio()\n }\n\n constructor (style: Partial, listener: DrawListener) {\n this._listener = listener\n this._element = createDom('canvas', style)\n this._ctx = this._element.getContext('2d')!\n isSupportedDevicePixelContentBox().then(result => {\n this._supportedDevicePixelContentBox = result\n if (result) {\n this._resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n const entry = entries.find((entry: ResizeObserverEntry) => entry.target === this._element)\n const size = entry?.devicePixelContentBoxSize[0]\n if (isValid(size)) {\n this._nextPixelWidth = size.inlineSize\n this._nextPixelHeight = size.blockSize\n if (this._pixelWidth !== this._nextPixelWidth || this._pixelHeight !== this._nextPixelHeight) {\n this._resetPixelRatio()\n }\n }\n })\n this._resizeObserver.observe(this._element, { box: 'device-pixel-content-box' })\n } else {\n this._mediaQueryList = window.matchMedia(`(resolution: ${getPixelRatio(this._element)}dppx)`)\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- ignore\n this._mediaQueryList.addListener(this._mediaQueryListener)\n }\n }).catch((_: unknown) => false)\n }\n\n private _resetPixelRatio (): void {\n this._executeListener(() => {\n const width = this._element.clientWidth\n const height = this._element.clientHeight\n this._width = width\n this._height = height\n this._pixelWidth = this._nextPixelWidth\n this._pixelHeight = this._nextPixelHeight\n this._element.width = this._nextPixelWidth\n this._element.height = this._nextPixelHeight\n const horizontalPixelRatio = this._nextPixelWidth / width\n const verticalPixelRatio = this._nextPixelHeight / height\n this._ctx.scale(horizontalPixelRatio, verticalPixelRatio)\n })\n }\n\n private _executeListener (fn?: () => void): void {\n if (this._requestAnimationId === DEFAULT_REQUEST_ID) {\n this._requestAnimationId = requestAnimationFrame(() => {\n this._ctx.clearRect(0, 0, this._width, this._height)\n fn?.()\n this._listener()\n this._requestAnimationId = DEFAULT_REQUEST_ID\n })\n }\n }\n\n update (w: number, h: number): void {\n if (this._width !== w || this._height !== h) {\n this._element.style.width = `${w}px`\n this._element.style.height = `${h}px`\n if (!this._supportedDevicePixelContentBox) {\n const pixelRatio = getPixelRatio(this._element)\n this._nextPixelWidth = Math.round(w * pixelRatio)\n this._nextPixelHeight = Math.round(h * pixelRatio)\n this._resetPixelRatio()\n }\n } else {\n this._executeListener()\n }\n }\n\n getElement (): HTMLCanvasElement {\n return this._element\n }\n\n getContext (): CanvasRenderingContext2D {\n return this._ctx\n }\n\n destroy (): void {\n if (isValid(this._resizeObserver)) {\n this._resizeObserver.unobserve(this._element)\n }\n if (isValid(this._mediaQueryList)) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- ignore\n this._mediaQueryList.removeListener(this._mediaQueryListener)\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 type Bounding from '../common/Bounding'\nimport { createDefaultBounding } from '../common/Bounding'\nimport type Updater from '../common/Updater'\nimport { UpdateLevel } from '../common/Updater'\nimport Eventful from '../common/Eventful'\n\nimport type Pane from '../pane/Pane'\n\nimport { merge } from '../common/utils/typeChecks'\n\nexport default abstract class Widget

extends Eventful implements Updater {\n /**\n * root container\n */\n private readonly _rootContainer: HTMLElement\n\n /**\n * Parent pane\n */\n private readonly _pane: P\n\n /**\n * wrapper container\n */\n private readonly _container: HTMLElement\n\n private readonly _bounding: Bounding = createDefaultBounding()\n\n constructor (rootContainer: HTMLElement, pane: P) {\n super()\n this._pane = pane\n this._rootContainer = rootContainer\n this._container = this.createContainer()\n rootContainer.appendChild(this._container)\n }\n\n setBounding (bounding: Partial): this {\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 (): P {\n return this._pane\n }\n\n update (level?: UpdateLevel): void {\n this.updateImp(this._container, this._bounding, level ?? UpdateLevel.Drawer)\n }\n\n destroy (): void {\n this._rootContainer.removeChild(this._container)\n }\n\n abstract getName (): string\n\n protected abstract createContainer (): HTMLElement\n\n protected abstract updateImp (container: HTMLElement, bounding: Bounding, level: UpdateLevel): 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 type Bounding from '../common/Bounding'\nimport { UpdateLevel } from '../common/Updater'\nimport Canvas from '../common/Canvas'\n\nimport type DrawPane from '../pane/DrawPane'\n\nimport Widget from './Widget'\n\nimport { createDom } from '../common/utils/dom'\nimport { getPixelRatio } from '../common/utils/canvas'\n\nexport default abstract class DrawWidget

extends Widget

{\n private readonly _mainCanvas: Canvas\n private readonly _overlayCanvas: Canvas\n\n constructor (rootContainer: HTMLElement, pane: P) {\n super(rootContainer, pane)\n this._mainCanvas = new Canvas({\n position: 'absolute',\n top: '0',\n left: '0',\n zIndex: '2',\n boxSizing: 'border-box'\n }, () => {\n this.updateMain(this._mainCanvas.getContext())\n })\n this._overlayCanvas = new Canvas({\n position: 'absolute',\n top: '0',\n left: '0',\n zIndex: '2',\n boxSizing: 'border-box'\n }, () => {\n this.updateOverlay(this._overlayCanvas.getContext())\n })\n const container = this.getContainer()\n container.appendChild(this._mainCanvas.getElement())\n container.appendChild(this._overlayCanvas.getElement())\n }\n\n override createContainer (): HTMLElement {\n return createDom('div', {\n margin: '0',\n padding: '0',\n position: 'absolute',\n top: '0',\n overflow: 'hidden',\n boxSizing: 'border-box',\n zIndex: '1'\n })\n }\n\n override updateImp (container: HTMLElement, bounding: Bounding, level: UpdateLevel): void {\n const { width, height, left } = bounding\n container.style.left = `${left}px`\n\n let l = level\n const w = container.clientWidth\n const h = container.clientHeight\n if (width !== w || height !== h) {\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._mainCanvas.update(width, height)\n break\n }\n case UpdateLevel.Overlay: {\n this._overlayCanvas.update(width, height)\n break\n }\n case UpdateLevel.Drawer:\n case UpdateLevel.All: {\n this._mainCanvas.update(width, height)\n this._overlayCanvas.update(width, height)\n break\n }\n default: {\n break\n }\n }\n }\n\n destroy (): void {\n this._mainCanvas.destroy()\n this._overlayCanvas.destroy()\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')!\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.getElement(), 0, 0, width, height)\n\n if (includeOverlay) {\n ctx.drawImage(this._overlayCanvas.getElement(), 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\nexport function isRgba (color: string): boolean {\n return (/^[rR][gG][Bb][Aa]\\(([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){3}[\\s]*(1|1.0|0|0.[0-9])[\\s]*\\){1}$/).test(color)\n}\n\nexport function isHsla (color: string): boolean {\n return (/^[hH][Ss][Ll][Aa]\\(([\\s]*(360|3[0-5][0-9]|[012]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,){2}([\\s]*(1|1.0|0|0.[0-9])[\\s]*)\\)$/).test(color)\n}\n\nexport function isTransparent (color: string): boolean {\n return color === 'transparent' ||\n color === 'none' ||\n /^[rR][gG][Bb][Aa]\\(([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){3}[\\s]*0[\\s]*\\)$/.test(color) ||\n /^[hH][Ss][Ll][Aa]\\(([\\s]*(360|3[0-5][0-9]|[012]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,){2}([\\s]*0[\\s]*)\\)$/.test(color)\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 type Coordinate from '../../common/Coordinate'\nimport { type PolygonStyle, PolygonType, LineType } from '../../common/Styles'\nimport { isString } from '../../common/utils/typeChecks'\nimport { isTransparent } from '../../common/utils/color'\n\nimport type { FigureTemplate } from '../../component/Figure'\n\nexport function checkCoordinateOnCircle (coordinate: Coordinate, attrs: CircleAttrs | CircleAttrs[]): boolean {\n let circles: CircleAttrs[] = []\n circles = circles.concat(attrs)\n\n for (const circle of circles) {\n const { x, y, r } = circle\n const difX = coordinate.x - x\n const difY = coordinate.y - y\n if (!(difX * difX + difY * difY > r * r)) {\n return true\n }\n }\n return false\n}\n\nexport function drawCircle (ctx: CanvasRenderingContext2D, attrs: CircleAttrs | CircleAttrs[], styles: Partial): void {\n let circles: CircleAttrs[] = []\n circles = circles.concat(attrs)\n\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\n const solid = (style === PolygonType.Fill || styles.style === PolygonType.StrokeFill) && (!isString(color) || !isTransparent(color))\n if (solid) {\n ctx.fillStyle = color\n circles.forEach(({ x, y, r }) => {\n ctx.beginPath()\n ctx.arc(x, y, r, 0, Math.PI * 2)\n ctx.closePath()\n ctx.fill()\n })\n }\n if ((style === PolygonType.Stroke || styles.style === PolygonType.StrokeFill) && borderSize > 0 && !isTransparent(borderColor)) {\n ctx.strokeStyle = borderColor\n ctx.lineWidth = borderSize\n if (borderStyle === LineType.Dashed) {\n ctx.setLineDash(borderDashedValue)\n } else {\n ctx.setLineDash([])\n }\n circles.forEach(({ x, y, r }) => {\n if (!solid || r > borderSize) {\n ctx.beginPath()\n ctx.arc(x, y, r, 0, Math.PI * 2)\n ctx.closePath()\n ctx.stroke()\n }\n })\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 | 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 type Coordinate from '../../common/Coordinate'\nimport { type PolygonStyle, PolygonType, LineType } from '../../common/Styles'\nimport { isString } from '../../common/utils/typeChecks'\nimport { isTransparent } from '../../common/utils/color'\n\nimport type { FigureTemplate } from '../../component/Figure'\n\nexport function checkCoordinateOnPolygon (coordinate: Coordinate, attrs: PolygonAttrs | PolygonAttrs[]): boolean {\n let polygons: PolygonAttrs[] = []\n polygons = polygons.concat(attrs)\n for (const polygon of polygons) {\n let on = false\n const { coordinates } = polygon\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 if (on) {\n return true\n }\n }\n return false\n}\n\nexport function drawPolygon (ctx: CanvasRenderingContext2D, attrs: PolygonAttrs | PolygonAttrs[], styles: Partial): void {\n let polygons: PolygonAttrs[] = []\n polygons = polygons.concat(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 (\n (style === PolygonType.Fill || styles.style === PolygonType.StrokeFill) &&\n (!isString(color) || !isTransparent(color))) {\n ctx.fillStyle = color\n polygons.forEach(({ coordinates }) => {\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 }\n if ((style === PolygonType.Stroke || styles.style === PolygonType.StrokeFill) && borderSize > 0 && !isTransparent(borderColor)) {\n ctx.strokeStyle = borderColor\n ctx.lineWidth = borderSize\n if (borderStyle === LineType.Dashed) {\n ctx.setLineDash(borderDashedValue)\n } else {\n ctx.setLineDash([])\n }\n polygons.forEach(({ coordinates }) => {\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}\n\nexport interface PolygonAttrs {\n coordinates: Coordinate[]\n}\n\nconst polygon: FigureTemplate> = {\n name: 'polygon',\n checkEventOn: checkCoordinateOnPolygon,\n draw: (ctx: CanvasRenderingContext2D, attrs: PolygonAttrs | 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 type Coordinate from '../../common/Coordinate'\nimport { type RectStyle, PolygonType, LineType } from '../../common/Styles'\nimport { isTransparent } from '../../common/utils/color'\nimport { isString } from '../../common/utils/typeChecks'\n\nimport { type FigureTemplate, DEVIATION } from '../../component/Figure'\n\nexport function checkCoordinateOnRect (coordinate: Coordinate, attrs: RectAttrs | RectAttrs[]): boolean {\n let rects: RectAttrs[] = []\n rects = rects.concat(attrs)\n for (const rect of rects) {\n let x = rect.x\n let width = rect.width\n if (width < DEVIATION * 2) {\n x -= DEVIATION\n width = DEVIATION * 2\n }\n let y = rect.y\n let height = rect.height\n if (height < DEVIATION * 2) {\n y -= DEVIATION\n height = DEVIATION * 2\n }\n if (\n coordinate.x >= x &&\n coordinate.x <= x + width &&\n coordinate.y >= y &&\n coordinate.y <= y + height\n ) {\n return true\n }\n }\n return false\n}\n\nexport function drawRect (ctx: CanvasRenderingContext2D, attrs: RectAttrs | RectAttrs[], styles: Partial): void {\n let rects: RectAttrs[] = []\n rects = rects.concat(attrs)\n const {\n style = PolygonType.Fill,\n color = 'transparent',\n borderSize = 1,\n borderColor = 'transparent',\n borderStyle = LineType.Solid,\n borderRadius: r = 0,\n borderDashedValue = [2, 2]\n } = styles\n // eslint-disable-next-line @typescript-eslint/unbound-method, @typescript-eslint/no-unnecessary-condition -- ignore\n const draw = ctx.roundRect ?? ctx.rect\n const solid = (style === PolygonType.Fill || styles.style === PolygonType.StrokeFill) && (!isString(color) || !isTransparent(color))\n if (solid) {\n ctx.fillStyle = color\n rects.forEach(({ x, y, width: w, height: h }) => {\n ctx.beginPath()\n draw.call(ctx, x, y, w, h, r)\n ctx.closePath()\n ctx.fill()\n })\n }\n if ((style === PolygonType.Stroke || styles.style === PolygonType.StrokeFill) && borderSize > 0 && !isTransparent(borderColor)) {\n ctx.strokeStyle = borderColor\n ctx.fillStyle = borderColor\n ctx.lineWidth = borderSize\n if (borderStyle === LineType.Dashed) {\n ctx.setLineDash(borderDashedValue)\n } else {\n ctx.setLineDash([])\n }\n const correction = borderSize % 2 === 1 ? 0.5 : 0\n const doubleCorrection = Math.round(correction * 2)\n rects.forEach(({ x, y, width: w, height: h }) => {\n if (w > borderSize * 2 && h > borderSize * 2) {\n ctx.beginPath()\n draw.call(ctx, x + correction, y + correction, w - doubleCorrection, h - doubleCorrection, r)\n ctx.closePath()\n ctx.stroke()\n } else {\n if (!solid) {\n ctx.fillRect(x, y, w, h)\n }\n }\n })\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 | 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 type Coordinate from '../../common/Coordinate'\nimport type { TextStyle } from '../../common/Styles'\n\nimport { createFont, calcTextWidth } from '../../common/utils/canvas'\n\nimport type { FigureTemplate } from '../../component/Figure'\n\nimport { type RectAttrs, drawRect } from './rect'\n\nexport function getTextRect (attrs: TextAttrs, styles: Partial): RectAttrs {\n const { size = 12, paddingLeft = 0, paddingTop = 0, paddingRight = 0, paddingBottom = 0, weight = 'normal', family } = styles\n const { x, y, text, align = 'left', baseline = 'top', width: w, height: h } = attrs\n const width = w ?? (paddingLeft + calcTextWidth(text, size, weight, family) + paddingRight)\n const height = h ?? (paddingTop + size + paddingBottom)\n let startX = 0\n switch (align) {\n case 'left':\n case 'start': {\n startX = x\n break\n }\n case 'right':\n case 'end': {\n startX = x - width\n break\n }\n default: {\n startX = x - width / 2\n break\n }\n }\n let startY = 0\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 - height\n break\n }\n default: {\n startY = y - height / 2\n break\n }\n }\n return { x: startX, y: startY, width, height }\n}\n\nexport function checkCoordinateOnText (coordinate: Coordinate, attrs: TextAttrs | TextAttrs[], styles: Partial): boolean {\n let texts: TextAttrs[] = []\n texts = texts.concat(attrs)\n for (const text of texts) {\n const { x, y, width, height } = getTextRect(text, styles)\n if (\n coordinate.x >= x &&\n coordinate.x <= x + width &&\n coordinate.y >= y &&\n coordinate.y <= y + height\n ) {\n return true\n }\n }\n return false\n}\n\nexport function drawText (ctx: CanvasRenderingContext2D, attrs: TextAttrs | TextAttrs[], styles: Partial): void {\n let texts: TextAttrs[] = []\n texts = texts.concat(attrs)\n const {\n color = 'currentColor',\n size = 12,\n family,\n weight,\n paddingLeft = 0,\n paddingTop = 0,\n paddingRight = 0\n } = styles\n const rects = texts.map(text => getTextRect(text, styles))\n drawRect(ctx, rects, { ...styles, color: styles.backgroundColor })\n\n ctx.textAlign = 'left'\n ctx.textBaseline = 'top'\n ctx.font = createFont(size, weight, family)\n ctx.fillStyle = color\n\n texts.forEach((text, index) => {\n const rect = rects[index]\n ctx.fillText(text.text, rect.x + paddingLeft, rect.y + paddingTop, rect.width - paddingLeft - paddingRight)\n })\n}\n\nexport interface TextAttrs {\n x: number\n y: number\n text: string\n width?: number\n height?: number\n align?: CanvasTextAlign\n baseline?: CanvasTextBaseline\n}\n\nconst text: FigureTemplate> = {\n name: 'text',\n checkEventOn: checkCoordinateOnText,\n draw: (ctx: CanvasRenderingContext2D, attrs: TextAttrs | 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\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 type Coordinate from '../../common/Coordinate'\nimport { getDistance } from '../../common/Coordinate'\nimport { type LineStyle, LineType } from '../../common/Styles'\n\nimport { type FigureTemplate, DEVIATION } from '../../component/Figure'\n\nimport type { CircleAttrs } from './circle'\n\nexport function checkCoordinateOnArc (coordinate: Coordinate, attrs: ArcAttrs | ArcAttrs[]): boolean {\n let arcs: ArcAttrs[] = []\n arcs = arcs.concat(attrs)\n for (const arc of arcs) {\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 if (\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 return true\n }\n }\n }\n\n return false\n}\n\nexport function drawArc (ctx: CanvasRenderingContext2D, attrs: ArcAttrs | ArcAttrs[], styles: Partial): void {\n let arcs: ArcAttrs[] = []\n arcs = arcs.concat(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 arcs.forEach(({ x, y, r, startAngle, endAngle }) => {\n ctx.beginPath()\n ctx.arc(x, y, r, startAngle, endAngle)\n ctx.stroke()\n ctx.closePath()\n })\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 | 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 type Nullable from '../../common/Nullable'\n\nimport FigureImp, { type FigureTemplate, type FigureConstructor, type 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 arc from './arc'\n\nconst figures: Record = {}\n\nconst extensions = [circle, line, polygon, rect, text, 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 type Nullable from '../common/Nullable'\nimport type { EventHandler, EventName } from '../common/SyntheticEvent'\nimport Eventful from '../common/Eventful'\nimport { isValid } from '../common/utils/typeChecks'\n\nimport type Figure from '../component/Figure'\nimport type { Axis } from '../component/Axis'\nimport type { FigureCreate } from '../component/Figure'\n\nimport { getInnerFigureClass } from '../extension/figure/index'\n\nimport type DrawWidget from '../widget/DrawWidget'\nimport type DrawPane from '../pane/DrawPane'\n\nexport default abstract class View extends Eventful {\n /**\n * Parent widget\n */\n private readonly _widget: DrawWidget>\n\n constructor (widget: DrawWidget>) {\n super()\n this._widget = widget\n }\n\n getWidget (): DrawWidget> { return this._widget }\n\n protected createFigure (create: FigureCreate, eventHandler?: EventHandler): Nullable

{\n const FigureClazz = getInnerFigureClass(create.name)\n if (FigureClazz !== null) {\n const figure = new FigureClazz(create)\n if (isValid(eventHandler)) {\n for (const key in eventHandler) {\n // eslint-disable-next-line no-prototype-builtins -- ignore\n if (eventHandler.hasOwnProperty(key)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ignore\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, ...extend: unknown[]): void {\n this.clear()\n this.drawImp(ctx, extend)\n }\n\n protected abstract drawImp (ctx: CanvasRenderingContext2D, ...extend: unknown[]): 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 type { LineAttrs } from '../extension/figure/line'\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 styles = chart.getStyles().grid\n const show = styles.show\n\n if (show) {\n ctx.save()\n ctx.globalCompositeOperation = 'destination-over'\n const horizontalStyles = styles.horizontal\n const horizontalShow = horizontalStyles.show\n if (horizontalShow) {\n const yAxis = pane.getAxisComponent()\n const attrs: LineAttrs[] = yAxis.getTicks().map(tick => ({\n coordinates: [\n { x: 0, y: tick.coord },\n { x: bounding.width, y: tick.coord }\n ]\n }))\n this.createFigure({\n name: 'line',\n attrs,\n styles: horizontalStyles\n })?.draw(ctx)\n }\n const verticalStyles = styles.vertical\n const verticalShow = verticalStyles.show\n if (verticalShow) {\n const xAxis = chart.getXAxisPane().getAxisComponent()\n const attrs: LineAttrs[] = xAxis.getTicks().map(tick => ({\n coordinates: [\n { x: tick.coord, y: 0 },\n { x: tick.coord, y: bounding.height }\n ]\n }))\n this.createFigure({\n name: 'line',\n attrs,\n styles: verticalStyles\n })?.draw(ctx)\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 type { VisibleRangeData } from '../common/Data'\nimport type BarSpace from '../common/BarSpace'\nimport type { YAxis } from '../component/YAxis'\n\nexport type EachChildCallback = (\n data: VisibleRangeData,\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 visibleRangeDataList = chartStore.getVisibleRangeDataList()\n const barSpace = chartStore.getBarSpace()\n const dataLength = visibleRangeDataList.length\n let index = 0\n while (index < dataLength) {\n childCallback(visibleRangeDataList[index], barSpace, index)\n ++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 type Nullable from '../common/Nullable'\nimport type { VisibleRangeData } from '../common/Data'\nimport type BarSpace from '../common/BarSpace'\nimport type { EventHandler } from '../common/SyntheticEvent'\nimport { ActionType } from '../common/Action'\nimport { CandleType, type CandleBarColor, type RectStyle, PolygonType } from '../common/Styles'\n\nimport type { FigureCreate } from '../component/Figure'\nimport type { RectAttrs } from '../extension/figure/rect'\n\nimport ChildrenView from './ChildrenView'\n\nimport { PaneIdConstants } from '../pane/types'\nimport { isValid } from '../common/utils/typeChecks'\n\nexport interface CandleBarOptions {\n type: Exclude\n styles: CandleBarColor\n}\n\nexport default class CandleBarView extends ChildrenView {\n private readonly _boundCandleBarClickEvent = (data: VisibleRangeData) => () => {\n this.getWidget().getPane().getChart().getChartStore().executeAction(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()\n if (candleBarOptions !== null) {\n let ohlcSize = 0\n let halfOhlcSize = 0\n if (candleBarOptions.type === CandleType.Ohlc) {\n const { gapBar } = chartStore.getBarSpace()\n ohlcSize = Math.min(Math.max(Math.round(gapBar * 0.2), 1), 8)\n if (ohlcSize > 2 && ohlcSize % 2 === 1) {\n ohlcSize--\n }\n halfOhlcSize = Math.floor(halfOhlcSize / 2)\n }\n const yAxis = pane.getAxisComponent()\n this.eachChildren((data, barSpace) => {\n const { data: kLineData, x } = data\n if (isValid(kLineData)) {\n const { open, high, low, close } = kLineData\n const { type, styles } = candleBarOptions\n const colors: string[] = []\n if (close > open) {\n colors[0] = styles.upColor\n colors[1] = styles.upBorderColor\n colors[2] = styles.upWickColor\n } else if (close < open) {\n colors[0] = styles.downColor\n colors[1] = styles.downBorderColor\n colors[2] = styles.downWickColor\n } else {\n colors[0] = styles.noChangeColor\n colors[1] = styles.noChangeBorderColor\n colors[2] = styles.noChangeWickColor\n }\n const openY = yAxis.convertToPixel(open)\n const closeY = yAxis.convertToPixel(close)\n const priceY = [\n openY, closeY,\n yAxis.convertToPixel(high),\n yAxis.convertToPixel(low)\n ]\n priceY.sort((a, b) => a - b)\n\n const correction = barSpace.gapBar % 2 === 0 ? 1 : 0\n let rects: Array>> = []\n switch (type) {\n case CandleType.CandleSolid: {\n rects = this._createSolidBar(x, priceY, barSpace, colors, correction)\n break\n }\n case CandleType.CandleStroke: {\n rects = this._createStrokeBar(x, priceY, barSpace, colors, correction)\n break\n }\n case CandleType.CandleUpStroke: {\n if (close > open) {\n rects = this._createStrokeBar(x, priceY, barSpace, colors, correction)\n } else {\n rects = this._createSolidBar(x, priceY, barSpace, colors, correction)\n }\n break\n }\n case CandleType.CandleDownStroke: {\n if (open > close) {\n rects = this._createStrokeBar(x, priceY, barSpace, colors, correction)\n } else {\n rects = this._createSolidBar(x, priceY, barSpace, colors, correction)\n }\n break\n }\n case CandleType.Ohlc: {\n rects = [\n {\n name: 'rect',\n attrs: [\n {\n x: x - halfOhlcSize,\n y: priceY[0],\n width: ohlcSize,\n height: priceY[3] - priceY[0]\n },\n {\n x: x - barSpace.halfGapBar,\n y: openY + ohlcSize > priceY[3] ? priceY[3] - ohlcSize : openY,\n width: barSpace.halfGapBar,\n height: ohlcSize\n },\n {\n x: x + halfOhlcSize,\n y: closeY + ohlcSize > priceY[3] ? priceY[3] - ohlcSize : closeY,\n width: barSpace.halfGapBar - halfOhlcSize,\n height: ohlcSize\n }\n ],\n styles: { color: colors[0] }\n }\n ]\n break\n }\n }\n rects.forEach(rect => {\n let handler: Nullable = null\n if (isMain) {\n handler = {\n mouseClickEvent: this._boundCandleBarClickEvent(data)\n }\n }\n this.createFigure(rect, handler ?? undefined)?.draw(ctx)\n })\n }\n })\n }\n }\n\n protected getCandleBarOptions (): Nullable {\n const candleStyles = this.getWidget().getPane().getChart().getStyles().candle\n return {\n type: candleStyles.type as Exclude,\n styles: candleStyles.bar\n }\n }\n\n private _createSolidBar (x: number, priceY: number[], barSpace: BarSpace, colors: string[], correction: number): Array>> {\n return [\n {\n name: 'rect',\n attrs: {\n x,\n y: priceY[0],\n width: 1,\n height: priceY[3] - priceY[0]\n },\n styles: { color: colors[2] }\n },\n {\n name: 'rect',\n attrs: {\n x: x - barSpace.halfGapBar,\n y: priceY[1],\n width: barSpace.gapBar + correction,\n height: Math.max(1, priceY[2] - priceY[1])\n },\n styles: {\n style: PolygonType.StrokeFill,\n color: colors[0],\n borderColor: colors[1]\n }\n }\n ]\n }\n\n private _createStrokeBar (x: number, priceY: number[], barSpace: BarSpace, colors: string[], correction: number): Array>> {\n return [\n {\n name: 'rect',\n attrs: [\n {\n x,\n y: priceY[0],\n width: 1,\n height: priceY[1] - priceY[0]\n },\n {\n x,\n y: priceY[2],\n width: 1,\n height: priceY[3] - priceY[2]\n }\n ],\n styles: { color: colors[2] }\n },\n {\n name: 'rect',\n attrs: {\n x: x - barSpace.halfGapBar,\n y: priceY[1],\n width: barSpace.gapBar + correction,\n height: Math.max(1, priceY[2] - priceY[1])\n },\n styles: {\n style: PolygonType.Stroke,\n borderColor: colors[1]\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 type Nullable from '../common/Nullable'\nimport { CandleType, type SmoothLineStyle } from '../common/Styles'\nimport { formatValue } from '../common/utils/format'\nimport { isNumber, isValid } from '../common/utils/typeChecks'\nimport type Coordinate from '../common/Coordinate'\n\nimport { eachFigures, type IndicatorFigure, type IndicatorFigureAttrs, type IndicatorFigureStyle } from '../component/Indicator'\n\nimport CandleBarView, { type CandleBarOptions } from './CandleBarView'\n\nexport default class IndicatorView extends CandleBarView {\n override getCandleBarOptions (): Nullable {\n const pane = this.getWidget().getPane()\n const yAxis = pane.getAxisComponent()\n if (!yAxis.isInCandle()) {\n const chartStore = pane.getChart().getChartStore()\n const indicators = chartStore.getIndicatorsByPaneId(pane.getId())\n for (const indicator of indicators) {\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.getXAxisPane().getAxisComponent()\n const yAxis = pane.getAxisComponent()\n const chartStore = chart.getChartStore()\n const indicators = chartStore.getIndicatorsByPaneId(pane.getId())\n const defaultStyles = chartStore.getStyles().indicator\n ctx.save()\n indicators.forEach(indicator => {\n if (indicator.visible) {\n if (indicator.zLevel < 0) {\n ctx.globalCompositeOperation = 'destination-over'\n } else {\n ctx.globalCompositeOperation = 'source-over'\n }\n let isCover = false\n if (indicator.draw !== null) {\n ctx.save()\n isCover = indicator.draw({\n ctx,\n chart,\n indicator,\n bounding,\n xAxis,\n yAxis\n })\n ctx.restore()\n }\n if (!isCover) {\n const result = indicator.result\n const lines: Array }>> = []\n\n this.eachChildren((data, barSpace) => {\n const { halfGapBar } = barSpace\n const { dataIndex, x } = data\n const prevX = xAxis.convertToPixel(dataIndex - 1)\n const nextX = xAxis.convertToPixel(dataIndex + 1)\n const prevData = result[dataIndex - 1] ?? null\n const currentData = result[dataIndex] ?? null\n const nextData = result[dataIndex + 1] ?? null\n const prevCoordinate = { x: prevX }\n const currentCoordinate = { x }\n const nextCoordinate = { x: nextX }\n indicator.figures.forEach(({ key }) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n const prevValue = prevData?.[key]\n if (isNumber(prevValue)) {\n prevCoordinate[key] = yAxis.convertToPixel(prevValue)\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n const currentValue = currentData?.[key]\n if (isNumber(currentValue)) {\n currentCoordinate[key] = yAxis.convertToPixel(currentValue)\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n const nextValue = nextData?.[key]\n if (isNumber(nextValue)) {\n nextCoordinate[key] = yAxis.convertToPixel(nextValue)\n }\n })\n eachFigures(indicator, dataIndex, defaultStyles, (figure: IndicatorFigure, figureStyles: IndicatorFigureStyle, figureIndex: number) => {\n if (isValid(currentData?.[figure.key])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n const valueY = currentCoordinate[figure.key]\n let attrs = figure.attrs?.({\n data: { prev: prevData, current: currentData, next: nextData },\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n attrs = { x, y: valueY, r: Math.max(1, halfGapBar) }\n break\n }\n case 'rect':\n case 'bar': {\n const baseValue = figure.baseValue ?? yAxis.getRange().from\n const baseValueY = yAxis.convertToPixel(baseValue)\n let height = Math.abs(baseValueY - (valueY as number))\n if (baseValue !== currentData?.[figure.key]) {\n height = Math.max(1, height)\n }\n let y = 0\n if (valueY > baseValueY) {\n y = baseValueY\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n y = valueY\n }\n attrs = {\n x: x - halfGapBar,\n y,\n width: Math.max(1, halfGapBar * 2),\n height\n }\n break\n }\n case 'line': {\n if (!isValid(lines[figureIndex])) {\n lines[figureIndex] = []\n }\n if (isNumber(currentCoordinate[figure.key]) && isNumber(nextCoordinate[figure.key])) {\n lines[figureIndex].push({\n coordinates: [\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n { x: currentCoordinate.x, y: currentCoordinate[figure.key] },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n { x: nextCoordinate.x, y: nextCoordinate[figure.key] }\n ],\n styles: figureStyles as unknown as SmoothLineStyle\n })\n }\n break\n }\n default: { break }\n }\n }\n const type = figure.type!\n if (isValid(attrs) && type !== 'line') {\n this.createFigure({\n name: type === 'bar' ? 'rect' : type,\n attrs,\n styles: figureStyles\n })?.draw(ctx)\n }\n }\n })\n })\n\n // merge line and render\n lines.forEach(items => {\n if (items.length > 1) {\n const mergeLines = [\n {\n coordinates: [items[0].coordinates[0], items[0].coordinates[1]],\n styles: items[0].styles\n }\n ]\n for (let i = 1; i < items.length; i++) {\n const lastMergeLine = mergeLines[mergeLines.length - 1]\n const current = items[i]\n const lastMergeLineLastCoordinate = lastMergeLine.coordinates[lastMergeLine.coordinates.length - 1]\n if (\n lastMergeLineLastCoordinate.x === current.coordinates[0].x &&\n lastMergeLineLastCoordinate.y === current.coordinates[0].y &&\n lastMergeLine.styles.style === current.styles.style &&\n lastMergeLine.styles.color === current.styles.color &&\n lastMergeLine.styles.size === current.styles.size &&\n lastMergeLine.styles.smooth === current.styles.smooth &&\n lastMergeLine.styles.dashedValue?.[0] === current.styles.dashedValue?.[0] &&\n lastMergeLine.styles.dashedValue?.[1] === current.styles.dashedValue?.[1]\n ) {\n lastMergeLine.coordinates.push(current.coordinates[1])\n } else {\n mergeLines.push({\n coordinates: [current.coordinates[0], current.coordinates[1]],\n styles: current.styles\n })\n }\n }\n mergeLines.forEach(({ coordinates, styles }) => {\n this.createFigure({\n name: 'line',\n attrs: { coordinates },\n styles\n })?.draw(ctx)\n })\n }\n })\n }\n }\n })\n ctx.restore()\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 type Coordinate from '../common/Coordinate'\nimport type { CrosshairDirectionStyle } from '../common/Styles'\nimport { isString } from '../common/utils/typeChecks'\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.getCrosshair()\n const styles = chartStore.getStyles().crosshair\n if (isString(crosshair.paneId) && styles.show) {\n if (crosshair.paneId === pane.getId()) {\n const y = crosshair.y!\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!\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({\n name: 'line',\n attrs: { coordinates },\n styles: lineStyles\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 type Crosshair from '../common/Crosshair'\nimport { type TooltipStyle, type TooltipIconStyle, type TooltipTextStyle, type TooltipLegend, TooltipShowRule, type TooltipLegendChild, TooltipIconPosition } from '../common/Styles'\nimport { ActionType } from '../common/Action'\nimport { formatPrecision } from '../common/utils/format'\nimport { isValid, isObject, isString, isNumber, isFunction } from '../common/utils/typeChecks'\nimport { createFont } from '../common/utils/canvas'\nimport type Coordinate from '../common/Coordinate'\n\nimport type { YAxis } from '../component/YAxis'\n\nimport type { Indicator, IndicatorFigure, IndicatorFigureStyle, IndicatorTooltipData } from '../component/Indicator'\nimport { eachFigures } from '../component/Indicator'\n\nimport type { TooltipIcon } from '../Store'\n\nimport View from './View'\n\nexport default class IndicatorTooltipView extends View {\n private readonly _boundIconClickEvent = (currentIcon: TooltipIcon) => () => {\n const pane = this.getWidget().getPane()\n pane.getChart().getChartStore().executeAction(ActionType.OnTooltipIconClick, { ...currentIcon })\n return true\n }\n\n private readonly _boundIconMouseMoveEvent = (currentIconInfo: TooltipIcon) => () => {\n this.getWidget().getPane().getChart().getChartStore().setActiveTooltipIcon({ ...currentIconInfo })\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.getCrosshair()\n if (isValid(crosshair.kLineData)) {\n const bounding = widget.getBounding()\n const { offsetLeft, offsetTop, offsetRight } = chartStore.getStyles().indicator.tooltip\n this.drawIndicatorTooltip(\n ctx, offsetLeft, offsetTop,\n bounding.width - offsetRight\n )\n }\n }\n\n protected drawIndicatorTooltip (\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n maxWidth: number\n ): number {\n const pane = this.getWidget().getPane()\n const chartStore = pane.getChart().getChartStore()\n const styles = chartStore.getStyles().indicator\n const tooltipStyles = styles.tooltip\n if (this.isDrawTooltip(chartStore.getCrosshair(), tooltipStyles)) {\n const indicators = chartStore.getIndicatorsByPaneId(pane.getId())\n const tooltipTextStyles = tooltipStyles.text\n indicators.forEach(indicator => {\n let prevRowHeight = 0\n const coordinate = { x: left, y: top }\n const { name, calcParamsText, legends, icons } = this.getIndicatorTooltipData(indicator)\n const nameValid = name.length > 0\n const legendValid = legends.length > 0\n if (nameValid || legendValid) {\n const [leftIcons, middleIcons, rightIcons] = this.classifyTooltipIcons(icons)\n prevRowHeight = this.drawStandardTooltipIcons(\n ctx, leftIcons,\n coordinate, indicator.name,\n left, prevRowHeight, maxWidth\n )\n\n if (nameValid) {\n let text = name\n if (calcParamsText.length > 0) {\n text = `${text}${calcParamsText}`\n }\n prevRowHeight = this.drawStandardTooltipLegends(\n ctx,\n [\n {\n title: { text: '', color: tooltipTextStyles.color },\n value: { text, color: tooltipTextStyles.color }\n }\n ],\n coordinate, left, prevRowHeight, maxWidth, tooltipTextStyles\n )\n }\n\n prevRowHeight = this.drawStandardTooltipIcons(\n ctx, middleIcons,\n coordinate, indicator.name,\n left, prevRowHeight, maxWidth\n )\n\n if (legendValid) {\n prevRowHeight = this.drawStandardTooltipLegends(\n ctx, legends, coordinate,\n left, prevRowHeight, maxWidth, tooltipStyles.text\n )\n }\n\n // draw right icons\n prevRowHeight = this.drawStandardTooltipIcons(\n ctx, rightIcons,\n coordinate, indicator.name,\n left, prevRowHeight, maxWidth\n )\n top = coordinate.y + prevRowHeight\n }\n })\n }\n return top\n }\n\n protected drawStandardTooltipIcons (\n ctx: CanvasRenderingContext2D,\n icons: TooltipIconStyle[],\n coordinate: Coordinate,\n indicatorName: string,\n left: number,\n prevRowHeight: number,\n maxWidth: number\n ): number {\n if (icons.length > 0) {\n let width = 0\n let height = 0\n icons.forEach(icon => {\n const {\n marginLeft = 0, marginTop = 0, marginRight = 0, marginBottom = 0,\n paddingLeft = 0, paddingTop = 0, paddingRight = 0, paddingBottom = 0,\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 height = Math.max(height, marginTop + paddingTop + size + paddingBottom + marginBottom)\n })\n if (coordinate.x + width > maxWidth) {\n coordinate.x = left\n coordinate.y += prevRowHeight\n prevRowHeight = height\n } else {\n prevRowHeight = Math.max(prevRowHeight, height)\n }\n const pane = this.getWidget().getPane()\n const paneId = pane.getId()\n const activeIcon = pane.getChart().getChartStore().getActiveTooltipIcon()\n\n icons.forEach(icon => {\n const {\n marginLeft = 0, marginTop = 0, marginRight = 0,\n paddingLeft = 0, paddingTop = 0, paddingRight = 0, paddingBottom = 0,\n color, activeColor, size, fontFamily, icon: text,\n backgroundColor, activeBackgroundColor\n } = icon\n const active = activeIcon?.paneId === paneId && activeIcon.indicatorName === indicatorName && activeIcon.iconId === icon.id\n this.createFigure({\n name: 'text',\n attrs: { text, x: coordinate.x + marginLeft, y: coordinate.y + marginTop },\n styles: {\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({ paneId, indicatorName, iconId: icon.id }),\n mouseMoveEvent: this._boundIconMouseMoveEvent({ paneId, indicatorName, iconId: icon.id })\n })?.draw(ctx)\n coordinate.x += (marginLeft + paddingLeft + ctx.measureText(text).width + paddingRight + marginRight)\n })\n }\n return prevRowHeight\n }\n\n protected drawStandardTooltipLegends (\n ctx: CanvasRenderingContext2D,\n legends: TooltipLegend[],\n coordinate: Coordinate,\n left: number,\n prevRowHeight: number,\n maxWidth: number,\n styles: TooltipTextStyle\n ): number {\n if (legends.length > 0) {\n const { marginLeft, marginTop, marginRight, marginBottom, size, family, weight } = styles\n ctx.font = createFont(size, weight, family)\n legends.forEach(data => {\n const title = data.title as TooltipLegendChild\n const value = data.value as TooltipLegendChild\n const titleTextWidth = ctx.measureText(title.text).width\n const valueTextWidth = ctx.measureText(value.text).width\n const totalTextWidth = titleTextWidth + valueTextWidth\n const h = marginTop + size + marginBottom\n if (coordinate.x + marginLeft + totalTextWidth + marginRight > maxWidth) {\n coordinate.x = left\n coordinate.y += prevRowHeight\n prevRowHeight = h\n } else {\n prevRowHeight = Math.max(prevRowHeight, h)\n }\n if (title.text.length > 0) {\n this.createFigure({\n name: 'text',\n attrs: { x: coordinate.x + marginLeft, y: coordinate.y + marginTop, text: title.text },\n styles: { color: title.color, size, family, weight }\n })?.draw(ctx)\n }\n this.createFigure({\n name: 'text',\n attrs: { x: coordinate.x + marginLeft + titleTextWidth, y: coordinate.y + marginTop, text: value.text },\n styles: { color: value.color, size, family, weight }\n })?.draw(ctx)\n coordinate.x += (marginLeft + totalTextWidth + marginRight)\n })\n }\n return prevRowHeight\n }\n\n protected isDrawTooltip (crosshair: Crosshair, styles: TooltipStyle): boolean {\n const showRule = styles.showRule\n return showRule === TooltipShowRule.Always ||\n (showRule === TooltipShowRule.FollowCross && isString(crosshair.paneId))\n }\n\n protected getIndicatorTooltipData (indicator: Indicator): IndicatorTooltipData {\n const chartStore = this.getWidget().getPane().getChart().getChartStore()\n const styles = chartStore.getStyles().indicator\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, legends: [], icons: tooltipStyles.icons }\n\n const dataIndex = chartStore.getCrosshair().dataIndex!\n const result = indicator.result\n\n const customApi = chartStore.getCustomApi()\n const decimalFold = chartStore.getDecimalFold()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const legends: TooltipLegend[] = []\n if (indicator.visible) {\n const data = result[dataIndex] ?? result[dataIndex - 1] ?? {}\n eachFigures(indicator, dataIndex, styles, (figure: IndicatorFigure, figureStyles: Required) => {\n if (isString(figure.title)) {\n const color = figureStyles.color\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n let value = data[figure.key]\n if (isNumber(value)) {\n value = formatPrecision(value, indicator.precision)\n if (indicator.shouldFormatBigNumber) {\n value = customApi.formatBigNumber(value as string)\n }\n }\n legends.push({ title: { text: figure.title, color }, value: { text: decimalFold.format(thousandsSeparator.format((value ?? tooltipStyles.defaultValue) as string)), color } })\n }\n })\n tooltipData.legends = legends\n }\n\n if (isFunction(indicator.createTooltipDataSource)) {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chart = pane.getChart()\n const { name: customName, calcParamsText: customCalcParamsText, legends: customLegends, icons: customIcons } = indicator.createTooltipDataSource({\n chart,\n indicator,\n crosshair: chartStore.getCrosshair(),\n bounding: widget.getBounding(),\n xAxis: pane.getChart().getXAxisPane().getAxisComponent(),\n yAxis: pane.getAxisComponent()\n })\n if (isString(customName) && tooltipStyles.showName) {\n tooltipData.name = customName\n }\n if (isString(customCalcParamsText) && tooltipStyles.showParams) {\n tooltipData.calcParamsText = customCalcParamsText\n }\n if (isValid(customIcons)) {\n tooltipData.icons = customIcons\n }\n if (isValid(customLegends) && indicator.visible) {\n const optimizedLegends: TooltipLegend[] = []\n const color = styles.tooltip.text.color\n customLegends.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 if (isNumber(Number(value.text))) {\n value.text = decimalFold.format(thousandsSeparator.format(value.text))\n }\n optimizedLegends.push({ title, value })\n })\n tooltipData.legends = optimizedLegends\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 type Nullable from '../common/Nullable'\nimport type Coordinate from '../common/Coordinate'\nimport type Point from '../common/Point'\nimport type { EventHandler, EventName, MouseTouchEvent, MouseTouchEventCallback } from '../common/SyntheticEvent'\nimport { isBoolean, isNumber, isValid } from '../common/utils/typeChecks'\n\nimport type { Axis } from '../component/Axis'\nimport type { YAxis } from '../component/YAxis'\nimport type { OverlayFigure, OverlayFigureIgnoreEventType, Overlay } from '../component/Overlay'\nimport type OverlayImp from '../component/Overlay'\nimport { OVERLAY_FIGURE_KEY_PREFIX, OverlayMode, getAllOverlayFigureIgnoreEventTypes } from '../component/Overlay'\n\nimport { EventOverlayInfoFigureType } from '../Store'\n\nimport { PaneIdConstants } from '../pane/types'\n\nimport type DrawWidget from '../widget/DrawWidget'\nimport type DrawPane from '../pane/DrawPane'\n\nimport View from './View'\n\nexport default class OverlayView extends View {\n constructor (widget: DrawWidget>) {\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 chart = pane.getChart()\n const chartStore = chart.getChartStore()\n this.registerEvent('mouseMoveEvent', (event: MouseTouchEvent) => {\n const progressOverlayInfo = chartStore.getProgressOverlayInfo()\n if (progressOverlayInfo !== null) {\n const overlay = progressOverlayInfo.overlay\n let progressOverlayPaneId = progressOverlayInfo.paneId\n if (overlay.isStart()) {\n chartStore.updateProgressOverlayInfo(paneId)\n progressOverlayPaneId = paneId\n }\n const index = overlay.points.length - 1\n const key = `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`\n if (overlay.isDrawing() && progressOverlayPaneId === paneId) {\n overlay.eventMoveForDrawing(this._coordinateToPoint(overlay, event))\n overlay.onDrawing?.({ chart, 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 chartStore.setHoverOverlayInfo({\n paneId,\n overlay: null,\n figureType: EventOverlayInfoFigureType.None,\n figureKey: '',\n figureIndex: -1,\n attrsIndex: -1\n }, event)\n return false\n }).registerEvent('mouseClickEvent', (event: MouseTouchEvent) => {\n const progressOverlayInfo = chartStore.getProgressOverlayInfo()\n if (progressOverlayInfo !== null) {\n const overlay = progressOverlayInfo.overlay\n let progressOverlayPaneId = progressOverlayInfo.paneId\n if (overlay.isStart()) {\n chartStore.updateProgressOverlayInfo(paneId, true)\n progressOverlayPaneId = paneId\n }\n const index = overlay.points.length - 1\n const key = `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`\n if (overlay.isDrawing() && progressOverlayPaneId === paneId) {\n overlay.eventMoveForDrawing(this._coordinateToPoint(overlay, event))\n overlay.onDrawing?.({ chart, overlay, figureKey: key, figureIndex: index, ...event })\n overlay.nextStep()\n if (!overlay.isDrawing()) {\n chartStore.progressOverlayComplete()\n overlay.onDrawEnd?.({ chart, 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 chartStore.setClickOverlayInfo({\n paneId,\n overlay: null,\n figureType: EventOverlayInfoFigureType.None,\n figureKey: '',\n figureIndex: -1,\n attrsIndex: -1\n }, event)\n return false\n }).registerEvent('mouseDoubleClickEvent', (event: MouseTouchEvent) => {\n const progressOverlayInfo = chartStore.getProgressOverlayInfo()\n if (progressOverlayInfo !== null) {\n const overlay = progressOverlayInfo.overlay\n const progressOverlayPaneId = progressOverlayInfo.paneId\n if (overlay.isDrawing() && progressOverlayPaneId === paneId) {\n overlay.forceComplete()\n if (!overlay.isDrawing()) {\n chartStore.progressOverlayComplete()\n const index = overlay.points.length - 1\n const key = `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`\n overlay.onDrawEnd?.({ chart, overlay, figureKey: key, figureIndex: index, ...event })\n }\n }\n const index = overlay.points.length - 1\n return this._figureMouseClickEvent(\n overlay,\n EventOverlayInfoFigureType.Point,\n `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`,\n index,\n 0\n )(event)\n }\n return false\n }).registerEvent('mouseRightClickEvent', (event: MouseTouchEvent) => {\n const progressOverlayInfo = chartStore.getProgressOverlayInfo()\n if (progressOverlayInfo !== null) {\n const overlay = progressOverlayInfo.overlay\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 { overlay, figureIndex, figureKey } = chartStore.getPressedOverlayInfo()\n if (overlay !== null) {\n overlay.onPressedMoveEnd?.({ chart, overlay, figureKey, figureIndex, ...event })\n }\n chartStore.setPressedOverlayInfo({\n paneId,\n overlay: null,\n figureType: EventOverlayInfoFigureType.None,\n figureKey: '',\n figureIndex: -1,\n attrsIndex: -1\n })\n return false\n }).registerEvent('pressedMouseMoveEvent', (event: MouseTouchEvent) => {\n const { overlay, figureType, figureIndex, figureKey } = chartStore.getPressedOverlayInfo()\n if (overlay !== null) {\n if (!overlay.lock) {\n if (!(overlay.onPressedMoving?.({ chart, overlay, figureIndex, figureKey, ...event }) ?? false)) {\n const point = this._coordinateToPoint(overlay, event)\n if (figureType === EventOverlayInfoFigureType.Point) {\n overlay.eventPressedPointMove(point, figureIndex)\n } else {\n overlay.eventPressedOtherMove(point, this.getWidget().getPane().getChart().getChartStore())\n }\n }\n }\n return true\n }\n return false\n })\n }\n\n private _createFigureEvents (\n overlay: OverlayImp,\n figureType: EventOverlayInfoFigureType,\n figureKey: string,\n figureIndex: number,\n attrsIndex: number,\n ignoreEvent?: boolean | OverlayFigureIgnoreEventType[]\n ): EventHandler | undefined {\n let eventHandler: Nullable = null\n if (!overlay.isDrawing()) {\n let eventTypes: OverlayFigureIgnoreEventType[] = []\n if (isValid(ignoreEvent)) {\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 mouseDoubleClickEvent: this._figureMouseDoubleClickEvent(overlay, figureType, figureKey, figureIndex, attrsIndex)\n }\n }\n eventHandler = {}\n // [\n // 'mouseClickEvent', mouseDoubleClickEvent, 'mouseRightClickEvent',\n // 'tapEvent', 'doubleTapEvent', '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('mouseDoubleClickEvent') && !eventTypes.includes('doubleTapEvent')) {\n eventHandler.mouseDoubleClickEvent = this._figureMouseDoubleClickEvent(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 ?? undefined\n }\n\n private _figureMouseMoveEvent (overlay: OverlayImp, figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n const pane = this.getWidget().getPane()\n pane.getChart().getChartStore().setHoverOverlayInfo(\n { paneId: pane.getId(), overlay, figureType, figureKey, figureIndex, attrsIndex }, event\n )\n return true\n }\n }\n\n private _figureMouseDownEvent (overlay: OverlayImp, 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 overlay.startPressedMove(this._coordinateToPoint(overlay, event))\n overlay.onPressedMoveStart?.({ chart: pane.getChart(), overlay, figureIndex, figureKey, ...event })\n pane.getChart().getChartStore().setPressedOverlayInfo({ paneId, overlay, figureType, figureKey, figureIndex, attrsIndex })\n return true\n }\n }\n\n private _figureMouseClickEvent (overlay: OverlayImp, 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 pane.getChart().getChartStore().setClickOverlayInfo({ paneId, overlay, figureType, figureKey, figureIndex, attrsIndex }, event)\n return true\n }\n }\n\n private _figureMouseDoubleClickEvent (overlay: OverlayImp, _figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, _attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n overlay.onDoubleClick?.({ ...event, chart: this.getWidget().getPane().getChart(), figureIndex, figureKey, overlay })\n return true\n }\n }\n\n private _figureMouseRightClickEvent (overlay: OverlayImp, _figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, _attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n if (!(overlay.onRightClick?.({ chart: this.getWidget().getPane().getChart(), overlay, figureIndex, figureKey, ...event }) ?? false)) {\n this.getWidget().getPane().getChart().getChartStore().removeOverlay(overlay)\n }\n return true\n }\n }\n\n private _coordinateToPoint (o: 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 chartStore = chart.getChartStore()\n if (this.coordinateToPointTimestampDataIndexFlag()) {\n const xAxis = chart.getXAxisPane().getAxisComponent()\n const dataIndex = xAxis.convertFromPixel(coordinate.x)\n const timestamp = chartStore.dataIndexToTimestamp(dataIndex) ?? undefined\n point.timestamp = timestamp\n point.dataIndex = dataIndex\n }\n if (this.coordinateToPointValueFlag()) {\n const yAxis = pane.getAxisComponent()\n let value = yAxis.convertFromPixel(coordinate.y)\n if (o.mode !== OverlayMode.Normal && paneId === PaneIdConstants.CANDLE && isNumber(point.dataIndex)) {\n const kLineData = chartStore.getDataByDataIndex(point.dataIndex)\n if (kLineData !== null) {\n const modeSensitivity = o.modeSensitivity\n if (value > kLineData.high) {\n if (o.mode === OverlayMode.WeakMagnet) {\n const highY = yAxis.convertToPixel(kLineData.high)\n const buffValue = yAxis.convertFromPixel(highY - modeSensitivity)\n if (value < buffValue) {\n value = kLineData.high\n }\n } else {\n value = kLineData.high\n }\n } else if (value < kLineData.low) {\n if (o.mode === OverlayMode.WeakMagnet) {\n const lowY = yAxis.convertToPixel(kLineData.low)\n const buffValue = yAxis.convertFromPixel(lowY - modeSensitivity)\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().isOverlayDrawing()) {\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 overlays = this.getCompleteOverlays()\n overlays.forEach(overlay => {\n if (overlay.visible) {\n this._drawOverlay(ctx, overlay)\n }\n })\n const progressOverlay = this.getProgressOverlay()\n if (isValid(progressOverlay) && progressOverlay.visible) {\n this._drawOverlay(ctx, progressOverlay)\n }\n }\n\n private _drawOverlay (\n ctx: CanvasRenderingContext2D,\n overlay: OverlayImp\n ): void {\n const { points } = overlay\n const pane = this.getWidget().getPane()\n const chart = pane.getChart()\n const chartStore = chart.getChartStore()\n const yAxis = pane.getAxisComponent() as unknown as Nullable\n const xAxis = chart.getXAxisPane().getAxisComponent()\n const coordinates = points.map(point => {\n let dataIndex: Nullable = null\n if (isNumber(point.timestamp)) {\n dataIndex = chartStore.timestampToDataIndex(point.timestamp)\n }\n const coordinate = { x: 0, y: 0 }\n if (isNumber(dataIndex)) {\n coordinate.x = xAxis.convertToPixel(dataIndex)\n }\n if (isNumber(point.value)) {\n coordinate.y = yAxis?.convertToPixel(point.value) ?? 0\n }\n return coordinate\n })\n if (coordinates.length > 0) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- ignore\n // @ts-expect-error\n const figures = [].concat(this.getFigures(overlay, coordinates))\n this.drawFigures(\n ctx,\n overlay,\n figures\n )\n }\n this.drawDefaultFigures(\n ctx,\n overlay,\n coordinates\n )\n }\n\n protected drawFigures (ctx: CanvasRenderingContext2D, overlay: OverlayImp, figures: OverlayFigure[]): void {\n const defaultStyles = this.getWidget().getPane().getChart().getStyles().overlay\n figures.forEach((figure, figureIndex) => {\n const { type, styles, attrs, ignoreEvent } = figure\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- ignore\n // @ts-expect-error\n const attrsArray = [].concat(attrs)\n attrsArray.forEach((ats, attrsIndex) => {\n const events = this._createFigureEvents(overlay, EventOverlayInfoFigureType.Other, figure.key ?? '', figureIndex, attrsIndex, ignoreEvent)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- ignore\n // @ts-expect-error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n const ss = { ...defaultStyles[type], ...overlay.styles?.[type], ...styles }\n this.createFigure({\n name: type, attrs: ats, styles: ss\n }, events)?.draw(ctx)\n })\n })\n }\n\n protected getCompleteOverlays (): OverlayImp[] {\n const pane = this.getWidget().getPane()\n return pane.getChart().getChartStore().getOverlaysByPaneId(pane.getId())\n }\n\n protected getProgressOverlay (): Nullable {\n const pane = this.getWidget().getPane()\n const info = pane.getChart().getChartStore().getProgressOverlayInfo()\n if (isValid(info) && info.paneId === pane.getId()) {\n return info.overlay\n }\n return null\n }\n\n protected getFigures (\n o: Overlay,\n coordinates: Coordinate[]\n ): OverlayFigure | OverlayFigure[] {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chart = pane.getChart()\n const yAxis = pane.getAxisComponent() as unknown as Nullable\n const xAxis = chart.getXAxisPane().getAxisComponent()\n const bounding = widget.getBounding()\n return o.createPointFigures?.({ chart, overlay: o, coordinates, bounding, xAxis, yAxis }) ?? []\n }\n\n protected drawDefaultFigures (\n ctx: CanvasRenderingContext2D,\n overlay: OverlayImp,\n coordinates: Coordinate[]\n ): void {\n if (overlay.needDefaultPointFigure) {\n const chartStore = this.getWidget().getPane().getChart().getChartStore()\n const hoverOverlayInfo = chartStore.getHoverOverlayInfo()\n const clickOverlayInfo = chartStore.getClickOverlayInfo()\n if (\n (hoverOverlayInfo.overlay?.id === overlay.id && hoverOverlayInfo.figureType !== EventOverlayInfoFigureType.None) ||\n (clickOverlayInfo.overlay?.id === overlay.id && clickOverlayInfo.figureType !== EventOverlayInfoFigureType.None)\n ) {\n const defaultStyles = chartStore.getStyles().overlay\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 hoverOverlayInfo.overlay?.id === overlay.id &&\n hoverOverlayInfo.figureType === EventOverlayInfoFigureType.Point &&\n hoverOverlayInfo.figureIndex === index\n ) {\n radius = pointStyles.activeRadius\n color = pointStyles.activeColor\n borderColor = pointStyles.activeBorderColor\n borderSize = pointStyles.activeBorderSize\n }\n this.createFigure({\n name: 'circle',\n attrs: { x, y, r: radius + borderSize },\n styles: { color: borderColor }\n }, this._createFigureEvents(overlay, EventOverlayInfoFigureType.Point, `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`, index, 0))?.draw(ctx)\n this.createFigure({\n name: 'circle',\n attrs: { x, y, r: radius },\n styles: { 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 type DrawPane from '../pane/DrawPane'\n\nimport { WidgetNameConstants } from './types'\nimport DrawWidget from './DrawWidget'\nimport { PaneState } from '../pane/types'\n\nimport type { 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: DrawPane) {\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().setActiveTooltipIcon()\n return false\n })\n }\n\n getName (): string {\n return WidgetNameConstants.MAIN\n }\n\n protected updateMain (ctx: CanvasRenderingContext2D): void {\n if (this.getPane().getOptions().state !== PaneState.Minimize) {\n this.updateMainContent(ctx)\n this._indicatorView.draw(ctx)\n this._gridView.draw(ctx)\n }\n }\n\n protected createTooltipView (): IndicatorTooltipView {\n return new IndicatorTooltipView(this)\n }\n\n protected updateMainContent (_ctx: CanvasRenderingContext2D): void {\n // to do it\n }\n\n override updateOverlay (ctx: CanvasRenderingContext2D): void {\n if (this.getPane().getOptions().state !== PaneState.Minimize) {\n this._overlayView.draw(ctx)\n this._crosshairLineView.draw(ctx)\n }\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 type Coordinate from '../common/Coordinate'\nimport type { VisibleRangeData } from '../common/Data'\nimport type { GradientColor } from '../common/Styles'\nimport Animation from '../common/Animation'\nimport { isNumber, isArray, isValid } from '../common/utils/typeChecks'\nimport { UpdateLevel } from '../common/Updater'\n\nimport ChildrenView from './ChildrenView'\n\nimport { lineTo } from '../extension/figure/line'\nimport type Nullable from '../common/Nullable'\n\nexport default class CandleAreaView extends ChildrenView {\n private readonly _ripplePoint = this.createFigure({\n name: 'circle',\n attrs: {\n x: 0,\n y: 0,\n r: 0\n },\n styles: {\n style: 'fill'\n }\n })\n\n private _animationFrameTime = 0\n\n private readonly _animation = new Animation({ iterationCount: Infinity }).doFrame((time) => {\n this._animationFrameTime = time\n const pane = this.getWidget().getPane()\n pane.getChart().updatePane(UpdateLevel.Main, pane.getId())\n })\n\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chart = pane.getChart()\n const dataList = chart.getDataList()\n const lastDataIndex = dataList.length - 1\n const bounding = widget.getBounding()\n const yAxis = pane.getAxisComponent()\n const styles = chart.getStyles().candle.area\n const coordinates: Coordinate[] = []\n let minY = Number.MAX_SAFE_INTEGER\n let areaStartX: number = Number.MIN_SAFE_INTEGER\n let ripplePointCoordinate: Nullable = null\n this.eachChildren((data: VisibleRangeData) => {\n const { data: kLineData, x } = data\n const value = kLineData?.[styles.value]\n if (isNumber(value)) {\n const y = yAxis.convertToPixel(value)\n if (areaStartX === Number.MIN_SAFE_INTEGER) {\n areaStartX = x\n }\n coordinates.push({ x, y })\n minY = Math.min(minY, y)\n if (data.dataIndex === lastDataIndex) {\n ripplePointCoordinate = { x, y }\n }\n }\n })\n\n if (coordinates.length > 0) {\n this.createFigure({\n name: 'line',\n attrs: { coordinates },\n styles: {\n color: styles.lineColor,\n size: styles.lineSize,\n smooth: styles.smooth\n }\n }\n )?.draw(ctx)\n\n // render area\n const backgroundColor = styles.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 ctx.fillStyle = color\n ctx.beginPath()\n ctx.moveTo(areaStartX, bounding.height)\n ctx.lineTo(coordinates[0].x, coordinates[0].y)\n lineTo(ctx, coordinates, styles.smooth)\n ctx.lineTo(coordinates[coordinates.length - 1].x, bounding.height)\n ctx.closePath()\n ctx.fill()\n }\n\n const pointStyles = styles.point\n if (pointStyles.show && isValid(ripplePointCoordinate)) {\n this.createFigure({\n name: 'circle',\n attrs: {\n x: ripplePointCoordinate!.x,\n y: ripplePointCoordinate!.y,\n r: pointStyles.radius\n },\n styles: {\n style: 'fill',\n color: pointStyles.color\n }\n })?.draw(ctx)\n let rippleRadius = pointStyles.rippleRadius\n if (pointStyles.animation) {\n rippleRadius = pointStyles.radius + this._animationFrameTime / pointStyles.animationDuration * (pointStyles.rippleRadius - pointStyles.radius)\n this._animation.setDuration(pointStyles.animationDuration).start()\n }\n this._ripplePoint\n ?.setAttrs({\n x: ripplePointCoordinate!.x,\n y: ripplePointCoordinate!.y,\n r: rippleRadius\n })\n .setStyles({ style: 'fill', color: pointStyles.rippleColor }).draw(ctx)\n } else {\n this.stopAnimation()\n }\n }\n\n stopAnimation (): void {\n this._animation.stop()\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 type Coordinate from '../common/Coordinate'\nimport type { CandleHighLowPriceMarkStyle } from '../common/Styles'\n\nimport View from './View'\n\nimport type { YAxis } from '../component/YAxis'\n\nimport { formatPrecision } from '../common/utils/format'\n\nexport default class CandleHighLowPriceView extends View {\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 highestLowestPrice = chartStore.getVisibleRangeHighLowPrice()\n const precision = chartStore.getPrecision()\n const yAxis = pane.getAxisComponent()\n\n const { price: high, x: highX } = highestLowestPrice[0]\n const { price: low, x: lowX } = highestLowestPrice[1]\n const highY = yAxis.convertToPixel(high)\n const lowY = yAxis.convertToPixel(low)\n const decimalFold = chartStore.getDecimalFold()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n if (highPriceMarkStyles.show && high !== Number.MIN_SAFE_INTEGER) {\n this._drawMark(\n ctx,\n decimalFold.format(thousandsSeparator.format(formatPrecision(high, precision.price))),\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 decimalFold.format(thousandsSeparator.format(formatPrecision(low, precision.price))),\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 name: 'line',\n attrs: {\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 styles: { color: styles.color }\n })?.draw(ctx)\n\n let lineEndX = 0\n let textStartX = 0\n let textAlign = 'left'\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 name: 'line',\n attrs: {\n coordinates: [\n { x: startX, y: startY },\n { x: startX, y },\n { x: lineEndX, y }\n ]\n },\n styles: { color: styles.color }\n })?.draw(ctx)\n this.createFigure({\n name: 'text',\n attrs: {\n x: textStartX,\n y,\n text,\n align: textAlign,\n baseline: 'middle'\n },\n styles: {\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 { isValid } from '../common/utils/typeChecks'\nimport type 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 (isValid(data)) {\n const { close, open } = data\n const priceY = yAxis.convertToNicePixel(close)\n let color = ''\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 name: 'line',\n attrs: {\n coordinates: [\n { x: 0, y: priceY },\n { x: bounding.width, y: priceY }\n ]\n },\n styles: {\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 type VisibleRange from '../common/VisibleRange'\n\nimport type DrawPane from '../pane/DrawPane'\n\nimport type Bounding from '../common/Bounding'\nimport type { Chart } from '../Chart'\n\nexport interface AxisTick {\n coord: number\n value: number | string\n text: string\n}\n\nexport interface AxisRange extends VisibleRange {\n readonly range: number\n readonly realRange: number\n readonly displayFrom: number\n readonly displayTo: number\n readonly displayRange: number\n}\n\nexport interface AxisGap {\n top?: number\n bottom?: number\n}\n\nexport enum AxisPosition {\n Left = 'left',\n Right = 'right'\n}\n\nexport interface AxisValueToValueParams {\n range: AxisRange\n}\n\nexport type AxisValueToValueCallback = (value: number, params: AxisValueToValueParams) => number\n\nexport interface AxisCreateRangeParams {\n chart: Chart\n paneId: string\n defaultRange: AxisRange\n}\n\nexport type AxisCreateRangeCallback = (params: AxisCreateRangeParams) => AxisRange\n\nexport interface AxisCreateTicksParams {\n range: AxisRange\n bounding: Bounding\n defaultTicks: AxisTick[]\n}\n\nexport type AxisCreateTicksCallback = (params: AxisCreateTicksParams) => AxisTick[]\n\nexport type AxisMinSpanCallback = (value: number) => number\n\nexport interface AxisTemplate {\n name: string\n reverse?: boolean\n inside?: boolean\n position?: AxisPosition\n scrollZoomEnabled?: boolean\n gap?: AxisGap\n valueToRealValue?: AxisValueToValueCallback\n realValueToDisplayValue?: AxisValueToValueCallback\n displayValueToRealValue?: AxisValueToValueCallback\n realValueToValue?: AxisValueToValueCallback\n displayValueToText?: (value: number, precision: number) => string\n minSpan?: AxisMinSpanCallback\n createRange?: AxisCreateRangeCallback\n createTicks?: AxisCreateTicksCallback\n}\n\nexport interface Axis {\n override: (axis: AxisTemplate) => void\n getTicks: () => AxisTick[]\n getRange: () => AxisRange\n getAutoSize: () => number\n convertToPixel: (value: number) => number\n convertFromPixel: (px: number) => number\n}\n\nexport type AxisCreate = Omit\n\nfunction getDefaultAxisRange (): AxisRange {\n return {\n from: 0,\n to: 0,\n range: 0,\n realFrom: 0,\n realTo: 0,\n realRange: 0,\n displayFrom: 0,\n displayTo: 0,\n displayRange: 0\n }\n}\n\nexport default abstract class AxisImp implements Axis {\n name: string\n scrollZoomEnabled = true\n createTicks: AxisCreateTicksCallback\n\n private readonly _parent: DrawPane\n\n private _range = getDefaultAxisRange()\n private _prevRange = getDefaultAxisRange()\n private _ticks: AxisTick[] = []\n\n private _autoCalcTickFlag = true\n\n constructor (parent: DrawPane) {\n this._parent = parent\n }\n\n getParent (): DrawPane { return this._parent }\n\n buildTicks (force: boolean): boolean {\n if (this._autoCalcTickFlag) {\n this._range = this.createRangeImp()\n }\n if (this._prevRange.from !== this._range.from || this._prevRange.to !== this._range.to || force) {\n this._prevRange = this._range\n this._ticks = this.createTicksImp()\n return true\n }\n return false\n }\n\n getTicks (): AxisTick[] {\n return this._ticks\n }\n\n setRange (range: AxisRange): void {\n this._autoCalcTickFlag = false\n this._range = range\n }\n\n getRange (): AxisRange { return this._range }\n\n setAutoCalcTickFlag (flag: boolean): void {\n this._autoCalcTickFlag = flag\n }\n\n getAutoCalcTickFlag (): boolean { return this._autoCalcTickFlag }\n\n protected abstract createRangeImp (): AxisRange\n\n protected abstract createTicksImp (): AxisTick[]\n\n protected abstract getBounding (): Bounding\n\n abstract override (axis: AxisTemplate): void\n\n abstract getAutoSize (): number\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 type { Locales } from '../../Options'\n\nconst zhCN: Locales = {\n time: '时间:',\n open: '开:',\n high: '高:',\n low: '低:',\n close: '收:',\n volume: '成交量:',\n turnover: '成交额:',\n change: '涨幅:'\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 type { Locales } from '../../Options'\n\nconst enUS: Locales = {\n time: 'Time: ',\n open: 'Open: ',\n high: 'High: ',\n low: 'Low: ',\n close: 'Close: ',\n volume: 'Volume: ',\n turnover: 'Turnover: ',\n change: 'Change: '\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 type { Locales } from '../../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 {\n type TooltipLegend, type TooltipLegendChild, TooltipShowType, CandleTooltipRectPosition, PolygonType\n} from '../common/Styles'\nimport { formatPrecision } from '../common/utils/format'\nimport { createFont } from '../common/utils/canvas'\nimport { isFunction, isObject, isValid } from '../common/utils/typeChecks'\n\nimport { FormatDateType } from '../Options'\n\nimport { PaneIdConstants } from '../pane/types'\n\nimport { AxisPosition } from '../component/Axis'\n\nimport IndicatorTooltipView from './IndicatorTooltipView'\n\nimport { i18n } from '../extension/i18n/index'\n\nexport default class CandleTooltipView extends IndicatorTooltipView {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const chartStore = widget.getPane().getChart().getChartStore()\n const crosshair = chartStore.getCrosshair()\n if (isValid(crosshair.kLineData)) {\n const bounding = widget.getBounding()\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, isDrawCandleTooltip, isDrawIndicatorTooltip,\n candleStyles.tooltip.offsetTop\n )\n } else if (\n candleStyles.tooltip.showType === TooltipShowType.Standard &&\n indicatorStyles.tooltip.showType === TooltipShowType.Standard\n ) {\n const { offsetLeft, offsetTop, offsetRight } = candleStyles.tooltip\n const maxWidth = bounding.width - offsetRight\n const top = this._drawCandleStandardTooltip(\n ctx, offsetLeft, offsetTop, maxWidth\n )\n this.drawIndicatorTooltip(ctx, offsetLeft, top, maxWidth)\n } else if (\n candleStyles.tooltip.showType === TooltipShowType.Rect &&\n indicatorStyles.tooltip.showType === TooltipShowType.Standard\n ) {\n const { offsetLeft, offsetTop, offsetRight } = candleStyles.tooltip\n const maxWidth = bounding.width - offsetRight\n const top = this.drawIndicatorTooltip(\n ctx, offsetLeft, offsetTop, maxWidth\n )\n const isDrawCandleTooltip = this.isDrawTooltip(crosshair, candleStyles.tooltip)\n this._drawRectTooltip(\n ctx, isDrawCandleTooltip, false, top\n )\n } else {\n const { offsetLeft, offsetTop, offsetRight } = candleStyles.tooltip\n const maxWidth = bounding.width - offsetRight\n const top = this._drawCandleStandardTooltip(\n ctx, offsetLeft, offsetTop, maxWidth\n )\n const isDrawIndicatorTooltip = this.isDrawTooltip(crosshair, indicatorStyles.tooltip)\n this._drawRectTooltip(\n ctx, false, isDrawIndicatorTooltip, top\n )\n }\n }\n }\n\n private _drawCandleStandardTooltip (\n ctx: CanvasRenderingContext2D,\n left: number,\n top: number,\n maxWidth: number\n ): number {\n const chartStore = this.getWidget().getPane().getChart().getChartStore()\n const styles = chartStore.getStyles().candle\n const tooltipStyles = styles.tooltip\n const tooltipTextStyles = tooltipStyles.text\n let prevRowHeight = 0\n const coordinate = { x: left, y: top }\n const crosshair = chartStore.getCrosshair()\n if (this.isDrawTooltip(crosshair, tooltipStyles)) {\n const legends = this._getCandleTooltipLegends()\n\n const [leftIcons, middleIcons, rightIcons] = this.classifyTooltipIcons(tooltipStyles.icons)\n\n prevRowHeight = this.drawStandardTooltipIcons(\n ctx, leftIcons, coordinate,\n '', left, prevRowHeight, maxWidth\n )\n\n prevRowHeight = this.drawStandardTooltipIcons(\n ctx, middleIcons, coordinate,\n '', left, prevRowHeight, maxWidth\n )\n\n if (legends.length > 0) {\n prevRowHeight = this.drawStandardTooltipLegends(\n ctx, legends, coordinate, left,\n prevRowHeight, maxWidth, tooltipTextStyles\n )\n }\n\n prevRowHeight = this.drawStandardTooltipIcons(\n ctx, rightIcons, coordinate,\n '', left, prevRowHeight, maxWidth\n )\n }\n return coordinate.y + prevRowHeight\n }\n\n private _drawRectTooltip (\n ctx: CanvasRenderingContext2D,\n isDrawCandleTooltip: boolean,\n isDrawIndicatorTooltip: boolean,\n top: number\n ): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chartStore = pane.getChart().getChartStore()\n\n const styles = chartStore.getStyles()\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 candleLegends = this._getCandleTooltipLegends()\n const { offsetLeft, offsetTop, offsetRight, offsetBottom } = candleTooltipStyles\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 candleLegends.forEach(data => {\n const title = data.title as TooltipLegendChild\n const value = data.value as TooltipLegendChild\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) * candleLegends.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 indicatorLegendsArray: TooltipLegend[][] = []\n if (isDrawIndicatorTooltip) {\n const indicators = chartStore.getIndicatorsByPaneId(pane.getId())\n ctx.font = createFont(indicatorTextSize, indicatorTextWeight, indicatorTextFamily)\n indicators.forEach(indicator => {\n const tooltipDataLegends = this.getIndicatorTooltipData(indicator).legends\n indicatorLegendsArray.push(tooltipDataLegends)\n tooltipDataLegends.forEach(data => {\n const title = data.title as TooltipLegendChild\n const value = data.value as TooltipLegendChild\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 const crosshair = chartStore.getCrosshair()\n const bounding = widget.getBounding()\n const yAxisBounding = pane.getYAxisWidget()!.getBounding()\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 = 0\n if (isPointer) {\n const realX = crosshair.realX!\n if (isLeft) {\n rectX = realX - rectOffsetRight - rectWidth\n } else {\n rectX = realX + rectOffsetLeft\n }\n } else {\n const yAxis = this.getWidget().getPane().getAxisComponent()\n if (isLeft) {\n rectX = rectOffsetLeft + offsetLeft\n if (yAxis.inside && yAxis.position === AxisPosition.Left) {\n rectX += yAxisBounding.width\n }\n } else {\n rectX = bounding.width - rectOffsetRight - rectWidth - offsetRight\n if (yAxis.inside && yAxis.position === AxisPosition.Right) {\n rectX -= yAxisBounding.width\n }\n }\n }\n\n let rectY = top + rectOffsetTop\n if (isPointer) {\n const y = crosshair.y!\n rectY = y - rectHeight / 2\n if (rectY + rectHeight > bounding.height - rectOffsetBottom - offsetBottom) {\n rectY = bounding.height - rectOffsetBottom - rectHeight - offsetBottom\n }\n if (rectY < top + rectOffsetTop) {\n rectY = top + rectOffsetTop + offsetTop\n }\n }\n this.createFigure({\n name: 'rect',\n attrs: {\n x: rectX,\n y: rectY,\n width: rectWidth,\n height: rectHeight\n },\n styles: {\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 candleLegends.forEach(data => {\n textY += baseTextMarginTop\n const title = data.title as TooltipLegendChild\n this.createFigure({\n name: 'text',\n attrs: {\n x: candleTextX,\n y: textY,\n text: title.text\n },\n styles: {\n color: title.color,\n size: baseTextSize,\n family: baseTextFamily,\n weight: baseTextWeight\n }\n })?.draw(ctx)\n const value = data.value as TooltipLegendChild\n this.createFigure({\n name: 'text',\n attrs: {\n x: rectX + rectWidth - rectBorderSize - baseTextMarginRight - rectPaddingRight,\n y: textY,\n text: value.text,\n align: 'right'\n },\n styles: {\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 indicatorLegendsArray.forEach(legends => {\n legends.forEach(data => {\n textY += indicatorTextMarginTop\n const title = data.title as TooltipLegendChild\n const value = data.value as TooltipLegendChild\n this.createFigure({\n name: 'text',\n attrs: {\n x: indicatorTextX,\n y: textY,\n text: title.text\n },\n styles: {\n color: title.color,\n size: indicatorTextSize,\n family: indicatorTextFamily,\n weight: indicatorTextWeight\n }\n })?.draw(ctx)\n\n this.createFigure({\n name: 'text',\n attrs: {\n x: rectX + rectWidth - rectBorderSize - indicatorTextMarginRight - rectPaddingRight,\n y: textY,\n text: value.text,\n align: 'right'\n },\n styles: {\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 _getCandleTooltipLegends (): TooltipLegend[] {\n const chartStore = this.getWidget().getPane().getChart().getChartStore()\n const styles = chartStore.getStyles().candle\n const dataList = chartStore.getDataList()\n const customApi = chartStore.getCustomApi()\n const decimalFold = chartStore.getDecimalFold()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const locale = chartStore.getLocale()\n const { price: pricePrecision, volume: volumePrecision } = chartStore.getPrecision()\n const dataIndex = chartStore.getCrosshair().dataIndex ?? 0\n\n const tooltipStyles = styles.tooltip\n const textColor = tooltipStyles.text.color\n const prev = dataList[dataIndex - 1] ?? null\n const current = dataList[dataIndex]\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- ignore\n const prevClose = prev?.close ?? current.close\n const changeValue = current.close - prevClose\n const mapping = {\n '{time}': customApi.formatDate(current.timestamp, 'YYYY-MM-DD HH:mm', FormatDateType.Tooltip),\n '{open}': decimalFold.format(thousandsSeparator.format(formatPrecision(current.open, pricePrecision))),\n '{high}': decimalFold.format(thousandsSeparator.format(formatPrecision(current.high, pricePrecision))),\n '{low}': decimalFold.format(thousandsSeparator.format(formatPrecision(current.low, pricePrecision))),\n '{close}': decimalFold.format(thousandsSeparator.format(formatPrecision(current.close, pricePrecision))),\n '{volume}': decimalFold.format(thousandsSeparator.format(\n customApi.formatBigNumber(formatPrecision(current.volume ?? tooltipStyles.defaultValue, volumePrecision))\n )),\n '{turnover}': decimalFold.format(thousandsSeparator.format(\n formatPrecision(current.turnover ?? tooltipStyles.defaultValue, pricePrecision)\n )),\n '{change}': prevClose === 0 ? tooltipStyles.defaultValue : `${thousandsSeparator.format(formatPrecision(changeValue / prevClose * 100))}%`\n }\n const legends = (\n isFunction(tooltipStyles.custom)\n ? tooltipStyles.custom({ prev, current, next: dataList[dataIndex + 1] ?? null }, styles)\n : tooltipStyles.custom\n )\n return legends.map(({ title, value }) => {\n let t: TooltipLegendChild = { 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: TooltipLegendChild = { text: tooltipStyles.defaultValue, color: '' }\n if (isObject(value)) {\n v = { ...value }\n } else {\n v.text = value\n v.color = textColor\n }\n const match = /{(\\S*)}/.exec(v.text)\n if (match !== null && match.length > 1) {\n const key = `{${match[1]}}`\n v.text = v.text.replace(key, (mapping[key] ?? tooltipStyles.defaultValue) as string)\n if (key === '{change}') {\n v.color = changeValue === 0 ? styles.priceMark.last.noChangeColor : (changeValue > 0 ? styles.priceMark.last.upColor : styles.priceMark.last.downColor)\n }\n }\n return { title: t, value: v }\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 IndicatorWidget from './IndicatorWidget'\n\nimport CandleBarView from '../view/CandleBarView'\nimport CandleAreaView from '../view/CandleAreaView'\nimport CandleHighLowPriceView from '../view/CandleHighLowPriceView'\nimport CandleLastPriceLineView from '../view/CandleLastPriceLineView'\n\nimport type IndicatorTooltipView from '../view/IndicatorTooltipView'\nimport CandleTooltipView from '../view/CandleTooltipView'\n\nimport { CandleType } from '../common/Styles'\n\nimport type AxisPane from '../pane/DrawPane'\n\nimport type { YAxis } from '../component/YAxis'\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: AxisPane) {\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._candleAreaView.stopAnimation()\n } else {\n this._candleAreaView.draw(ctx)\n }\n this._candleLastPriceLineView.draw(ctx)\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 type Bounding from '../common/Bounding'\nimport type { AxisStyle, Styles } from '../common/Styles'\n\nimport type { LineAttrs } from '../extension/figure/line'\nimport type { TextAttrs } from '../extension/figure/text'\n\nimport type { AxisTick, Axis } from '../component/Axis'\n\nimport View from './View'\n\nexport default abstract class AxisView extends View {\n override drawImp (ctx: CanvasRenderingContext2D, extend: unknown[]): 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({\n name: 'line',\n attrs: this.createAxisLine(bounding, styles),\n styles: styles.axisLine\n })?.draw(ctx)\n }\n if (!(extend[0] as boolean)) {\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({\n name: 'line',\n attrs: line,\n styles: styles.tickLine\n })?.draw(ctx)\n })\n }\n if (styles.tickText.show) {\n const texts = this.createTickTexts(ticks, bounding, styles)\n this.createFigure({\n name: 'text',\n attrs: texts,\n styles: styles.tickText\n })?.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 type Bounding from '../common/Bounding'\nimport type { AxisStyle, Styles } from '../common/Styles'\n\nimport type { LineAttrs } from '../extension/figure/line'\nimport type { TextAttrs } from '../extension/figure/text'\n\nimport type { AxisTick } from '../component/Axis'\nimport type { YAxis } from '../component/YAxis'\n\nimport AxisView from './AxisView'\n\nexport default class YAxisView 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 = 0\n if (yAxis.isFromZero()) {\n x = 0\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 { isValid } from '../common/utils/typeChecks'\n\nimport View from './View'\n\nimport type YAxis from '../component/YAxis'\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 data = dataList[dataList.length - 1]\n if (isValid(data)) {\n const { close, open } = data\n const priceY = yAxis.convertToNicePixel(close)\n let backgroundColor = ''\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 const yAxisRange = yAxis.getRange()\n let text = yAxis.displayValueToText(\n yAxis.realValueToDisplayValue(\n yAxis.valueToRealValue(close, { range: yAxisRange }),\n { range: yAxisRange }\n ),\n precision.price\n )\n text = chartStore.getDecimalFold().format(chartStore.getThousandsSeparator().format(text))\n let x = 0\n let textAlgin: CanvasTextAlign = 'left'\n if (yAxis.isFromZero()) {\n x = 0\n textAlgin = 'left'\n } else {\n x = bounding.width\n textAlgin = 'right'\n }\n this.createFigure({\n name: 'text',\n attrs: {\n x,\n y: priceY,\n text,\n align: textAlgin,\n baseline: 'middle'\n },\n styles: {\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 { isNumber, isValid } from '../common/utils/typeChecks'\n\nimport { eachFigures, type IndicatorFigure, type IndicatorFigureStyle } from '../component/Indicator'\n\nimport View from './View'\n\nimport type { YAxis } from '../component/YAxis'\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 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 yAxisRange = yAxis.getRange()\n const dataList = chartStore.getDataList()\n const dataIndex = dataList.length - 1\n const indicators = chartStore.getIndicatorsByPaneId(pane.getId())\n const customApi = chartStore.getCustomApi()\n const decimalFold = chartStore.getDecimalFold()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n indicators.forEach(indicator => {\n const result = indicator.result\n const data = result[dataIndex] ?? result[dataIndex - 1] ?? {}\n if (isValid(data) && indicator.visible) {\n const precision = indicator.precision\n eachFigures(indicator, dataIndex, defaultStyles, (figure: IndicatorFigure, figureStyles: Required) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n const value = data[figure.key]\n if (isNumber(value)) {\n const y = yAxis.convertToNicePixel(value)\n let text = yAxis.displayValueToText(\n yAxis.realValueToDisplayValue(\n yAxis.valueToRealValue(value, { range: yAxisRange }),\n { range: yAxisRange }\n ),\n precision\n )\n if (indicator.shouldFormatBigNumber) {\n text = customApi.formatBigNumber(text)\n }\n text = decimalFold.format(thousandsSeparator.format(text))\n let x = 0\n let textAlign: CanvasTextAlign = 'left'\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 name: 'text',\n attrs: {\n x,\n y,\n text,\n align: textAlign,\n baseline: 'middle'\n },\n styles: {\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 type Nullable from '../common/Nullable'\nimport type Coordinate from '../common/Coordinate'\nimport { formatPrecision } from '../common/utils/format'\nimport { isNumber } from '../common/utils/typeChecks'\n\nimport type { Axis } from '../component/Axis'\nimport type { YAxis } from '../component/YAxis'\nimport type { OverlayFigure, Overlay } from '../component/Overlay'\nimport type OverlayImp from '../component/Overlay'\n\nimport OverlayView from './OverlayView'\n\nimport type YAxisImp from '../component/YAxis'\n\nexport default class OverlayYAxisView extends OverlayView {\n override coordinateToPointTimestampDataIndexFlag (): boolean {\n return false\n }\n\n override drawDefaultFigures (\n ctx: CanvasRenderingContext2D,\n overlay: OverlayImp,\n coordinates: Coordinate[]\n ): void {\n this.drawFigures(\n ctx,\n overlay,\n this.getDefaultFigures(overlay, coordinates)\n )\n }\n\n protected getDefaultFigures (\n overlay: Overlay,\n coordinates: Coordinate[]\n ): OverlayFigure[] {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chartStore = pane.getChart().getChartStore()\n const clickOverlayInfo = chartStore.getClickOverlayInfo()\n const figures: OverlayFigure[] = []\n if (\n overlay.needDefaultYAxisFigure &&\n overlay.id === clickOverlayInfo.overlay?.id &&\n clickOverlayInfo.paneId === pane.getId()\n ) {\n const yAxis = pane.getAxisComponent() as unknown as YAxisImp\n const bounding = widget.getBounding()\n let topY = Number.MAX_SAFE_INTEGER\n let bottomY = Number.MIN_SAFE_INTEGER\n const isFromZero = yAxis.isFromZero()\n let textAlign: CanvasTextAlign = 'left'\n let x = 0\n if (isFromZero) {\n textAlign = 'left'\n x = 0\n } else {\n textAlign = 'right'\n x = bounding.width\n }\n const decimalFold = chartStore.getDecimalFold()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n coordinates.forEach((coordinate, index) => {\n const point = overlay.points[index]\n if (isNumber(point.value)) {\n topY = Math.min(topY, coordinate.y)\n bottomY = Math.max(bottomY, coordinate.y)\n const text = decimalFold.format(thousandsSeparator.format(formatPrecision(point.value, chartStore.getPrecision().price)))\n figures.push({ type: 'text', 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 ): OverlayFigure | OverlayFigure[] {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chart = pane.getChart()\n const yAxis = pane.getAxisComponent() as unknown as Nullable\n const xAxis = chart.getXAxisPane().getAxisComponent()\n const bounding = widget.getBounding()\n return overlay.createYAxisFigures?.({ chart, overlay, coordinates, bounding, 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 type Bounding from '../common/Bounding'\nimport type Crosshair from '../common/Crosshair'\nimport type { CrosshairStyle, CrosshairDirectionStyle, StateTextStyle } from '../common/Styles'\nimport { isString } from '../common/utils/typeChecks'\nimport { createFont } from '../common/utils/canvas'\n\nimport type { Axis } from '../component/Axis'\nimport type YAxis from '../component/YAxis'\n\nimport type { TextAttrs } from '../extension/figure/text'\n\nimport type ChartStore from '../Store'\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.getCrosshair()\n const styles = chartStore.getStyles().crosshair\n if (isString(crosshair.paneId) && 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 name: 'text',\n attrs: this.getTextAttrs(text, ctx.measureText(text).width, crosshair, bounding, axis, textStyles),\n styles: 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 (styles: CrosshairStyle): CrosshairDirectionStyle {\n return styles.horizontal\n }\n\n protected getText (crosshair: Crosshair, chartStore: ChartStore, axis: Axis): string {\n const yAxis = axis as unknown as YAxis\n const value = axis.convertFromPixel(crosshair.y!)\n let precision = 0\n let shouldFormatBigNumber = false\n if (yAxis.isInCandle()) {\n precision = chartStore.getPrecision().price\n } else {\n const indicators = chartStore.getIndicatorsByPaneId(crosshair.paneId!)\n indicators.forEach(indicator => {\n precision = Math.max(indicator.precision, precision)\n shouldFormatBigNumber ||= indicator.shouldFormatBigNumber\n })\n }\n const yAxisRange = yAxis.getRange()\n let text = yAxis.displayValueToText(\n yAxis.realValueToDisplayValue(\n yAxis.valueToRealValue(value, { range: yAxisRange }),\n { range: yAxisRange }\n ),\n precision\n )\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- ignore\n if (shouldFormatBigNumber) {\n text = chartStore.getCustomApi().formatBigNumber(text)\n }\n return chartStore.getDecimalFold().format(chartStore.getThousandsSeparator().format(text))\n }\n\n protected getTextAttrs (text: string, _textWidth: number, crosshair: Crosshair, bounding: Bounding, axis: Axis, _styles: StateTextStyle): TextAttrs {\n const yAxis = axis as unknown as YAxis\n let x = 0\n let textAlign: CanvasTextAlign = 'left'\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!, 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 type DrawPane from '../pane/DrawPane'\n\nimport { WidgetNameConstants } from './types'\nimport DrawWidget from './DrawWidget'\nimport { PaneState } from '../pane/types'\n\nimport type { 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: DrawPane) {\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.Y_AXIS\n }\n\n override updateMain (ctx: CanvasRenderingContext2D): void {\n const minimize = this.getPane().getOptions().state === PaneState.Minimize\n this._yAxisView.draw(ctx, minimize)\n if (!minimize) {\n if (this.getPane().getAxisComponent().isInCandle()) {\n this._candleLastPriceLabelView.draw(ctx)\n }\n this._indicatorLastValueView.draw(ctx)\n }\n }\n\n override updateOverlay (ctx: CanvasRenderingContext2D): void {\n if (this.getPane().getOptions().state !== PaneState.Minimize) {\n this._overlayYAxisView.draw(ctx)\n this._crosshairHorizontalLabelView.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 { CandleType } from '../common/Styles'\nimport type Bounding from '../common/Bounding'\nimport { isFunction, isNumber, isString, isValid, merge } from '../common/utils/typeChecks'\nimport { index10, getPrecision, nice, round } from '../common/utils/number'\nimport { calcTextWidth } from '../common/utils/canvas'\nimport { formatPrecision } from '../common/utils/format'\n\nimport AxisImp, {\n type AxisTemplate, type Axis, type AxisRange,\n type AxisTick, type AxisValueToValueCallback,\n type AxisMinSpanCallback, type AxisCreateRangeCallback,\n AxisPosition\n} from './Axis'\n\nimport type DrawPane from '../pane/DrawPane'\n\nimport { PaneIdConstants } from '../pane/types'\n\nexport type YAxisTemplate = AxisTemplate\n\nconst TICK_COUNT = 8\n\nexport interface YAxis extends Axis, Required {\n isFromZero: () => boolean\n isInCandle: () => boolean\n convertToNicePixel: (value: number) => number\n}\n\nexport type YAxisConstructor = new (parent: DrawPane) => YAxis\n\nexport default abstract class YAxisImp extends AxisImp implements YAxis {\n reverse = false\n inside = false\n position = AxisPosition.Right\n gap = {\n top: 0.2,\n bottom: 0.1\n }\n\n createRange: AxisCreateRangeCallback = params => params.defaultRange\n minSpan: AxisMinSpanCallback = precision => index10(-precision)\n valueToRealValue: AxisValueToValueCallback = value => value\n realValueToDisplayValue: AxisValueToValueCallback = value => value\n displayValueToRealValue: AxisValueToValueCallback = value => value\n realValueToValue: AxisValueToValueCallback = value => value\n displayValueToText: ((value: number, precision: number) => string) = (value, precision) => formatPrecision(value, precision)\n\n constructor (parent: DrawPane, yAxis: YAxisTemplate) {\n super(parent)\n this.override(yAxis)\n }\n\n override (yAxis: YAxisTemplate): void {\n const {\n name,\n gap,\n ...others\n } = yAxis\n if (!isString(this.name)) {\n this.name = name\n }\n merge(this.gap, gap)\n merge(this, others)\n }\n\n protected override createRangeImp (): AxisRange {\n const parent = this.getParent()\n const chart = parent.getChart()\n const chartStore = chart.getChartStore()\n const paneId = parent.getId()\n let min = Number.MAX_SAFE_INTEGER\n let max = Number.MIN_SAFE_INTEGER\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.getIndicatorsByPaneId(paneId)\n indicators.forEach(indicator => {\n shouldOhlc ||= indicator.shouldOhlc\n indicatorPrecision = Math.min(indicatorPrecision, indicator.precision)\n if (isNumber(indicator.minValue)) {\n specifyMin = Math.min(specifyMin, indicator.minValue)\n }\n if (isNumber(indicator.maxValue)) {\n specifyMax = Math.max(specifyMax, indicator.maxValue)\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 visibleRangeDataList = chartStore.getVisibleRangeDataList()\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 visibleRangeDataList.forEach(({ dataIndex, data }) => {\n if (isValid(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 if (isNumber(value)) {\n min = Math.min(min, value)\n max = Math.max(max, value)\n }\n }\n }\n indicators.forEach(({ result, figures }) => {\n const data = result[dataIndex] ?? {}\n figures.forEach(figure => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ignore\n const value = data[figure.key]\n if (isNumber(value)) {\n min = Math.min(min, value)\n max = Math.max(max, value)\n }\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 const defaultDiff = max - min\n const defaultRange = {\n from: min,\n to: max,\n range: defaultDiff,\n realFrom: min,\n realTo: max,\n realRange: defaultDiff,\n displayFrom: min,\n displayTo: max,\n displayRange: defaultDiff\n }\n\n const range = this.createRange({\n chart,\n paneId,\n defaultRange\n })\n let realFrom = range.realFrom\n let realTo = range.realTo\n let realRange = range.realRange\n const minSpan = this.minSpan(precision)\n if (\n realFrom === realTo || realRange < minSpan\n ) {\n const minCheck = specifyMin === realFrom\n const maxCheck = specifyMax === realTo\n const halfTickCount = TICK_COUNT / 2\n realFrom = minCheck ? realFrom : (maxCheck ? realFrom - TICK_COUNT * minSpan : realFrom - halfTickCount * minSpan)\n realTo = maxCheck ? realTo : (minCheck ? realTo + TICK_COUNT * minSpan : realTo + halfTickCount * minSpan)\n }\n\n const height = this.getBounding().height\n const { top, bottom } = this.gap\n let topRate = top\n if (topRate >= 1) {\n topRate = topRate / height\n }\n let bottomRate = bottom\n if (bottomRate >= 1) {\n bottomRate = bottomRate / height\n }\n realRange = realTo - realFrom\n realFrom = realFrom - realRange * bottomRate\n realTo = realTo + realRange * topRate\n\n const from = this.realValueToValue(realFrom, { range })\n const to = this.realValueToValue(realTo, { range })\n const displayFrom = this.realValueToDisplayValue(realFrom, { range })\n const displayTo = this.realValueToDisplayValue(realTo, { range })\n return {\n from,\n to,\n range: to - from,\n realFrom,\n realTo,\n realRange: realTo - realFrom,\n displayFrom,\n displayTo,\n displayRange: displayTo - displayFrom\n }\n }\n\n /**\n * 是否是蜡烛图轴\n * @return {boolean}\n */\n isInCandle (): boolean {\n return this.getParent().getId() === PaneIdConstants.CANDLE\n }\n\n /**\n * 是否从y轴0开始\n * @return {boolean}\n */\n isFromZero (): boolean {\n return (\n (this.position === AxisPosition.Left && this.inside) ||\n (this.position === AxisPosition.Right && !this.inside)\n )\n }\n\n protected override createTicksImp (): AxisTick[] {\n const range = this.getRange()\n const { displayFrom, displayTo, displayRange } = range\n const ticks: AxisTick[] = []\n\n if (displayRange >= 0) {\n const interval = nice(displayRange / TICK_COUNT)\n const precision = getPrecision(interval)\n\n const first = round(Math.ceil(displayFrom / interval) * interval, precision)\n const last = round(Math.floor(displayTo / 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\n const pane = this.getParent()\n const height = pane.getYAxisWidget()?.getBounding().height ?? 0\n const chartStore = pane.getChart().getChartStore()\n const optimalTicks: AxisTick[] = []\n const indicators = chartStore.getIndicatorsByPaneId(pane.getId())\n const styles = chartStore.getStyles()\n let precision = 0\n let shouldFormatBigNumber = false\n if (this.isInCandle()) {\n precision = chartStore.getPrecision().price\n } else {\n indicators.forEach(indicator => {\n precision = Math.max(precision, indicator.precision)\n shouldFormatBigNumber ||= indicator.shouldFormatBigNumber\n })\n }\n const customApi = chartStore.getCustomApi()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const decimalFold = chartStore.getDecimalFold()\n const textHeight = styles.xAxis.tickText.size\n let validY = NaN\n ticks.forEach(({ value }) => {\n let v = this.displayValueToText(+value, precision)\n const y = this.convertToPixel(\n this.realValueToValue(\n this.displayValueToRealValue(+value, { range }),\n { range }\n )\n )\n if (shouldFormatBigNumber) {\n v = customApi.formatBigNumber(value)\n }\n v = decimalFold.format(thousandsSeparator.format(v))\n const validYNumber = isNumber(validY)\n if (\n y > textHeight &&\n y < height - textHeight &&\n ((validYNumber && (Math.abs(validY - y) > textHeight * 2)) || !validYNumber)) {\n optimalTicks.push({ text: v, coord: y, value })\n validY = y\n }\n })\n if (isFunction(this.createTicks)) {\n return this.createTicks({\n range: this.getRange(),\n bounding: this.getBounding(),\n defaultTicks: optimalTicks\n })\n }\n return optimalTicks\n }\n\n override getAutoSize (): number {\n const pane = this.getParent()\n const chart = pane.getChart()\n const chartStore = chart.getChartStore()\n const styles = chartStore.getStyles()\n const yAxisStyles = styles.yAxis\n const width = yAxisStyles.size\n if (width !== 'auto') {\n return width\n }\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.getIndicatorsByPaneId(pane.getId())\n let indicatorPrecision = 0\n let shouldFormatBigNumber = false\n indicators.forEach(indicator => {\n indicatorPrecision = Math.max(indicator.precision, indicatorPrecision)\n shouldFormatBigNumber ||= indicator.shouldFormatBigNumber\n })\n let precision = 2\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(indicatorPrecision, pricePrecision)\n } else {\n precision = pricePrecision\n }\n } else {\n precision = indicatorPrecision\n }\n let valueText = formatPrecision(this.getRange().displayTo, precision)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- ignore\n if (shouldFormatBigNumber) {\n valueText = chartStore.getCustomApi().formatBigNumber(valueText)\n }\n valueText = chartStore.getDecimalFold().format(valueText)\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 protected override getBounding (): Bounding {\n return this.getParent().getYAxisWidget()!.getBounding()\n }\n\n convertFromPixel (pixel: number): number {\n const height = this.getBounding().height\n const range = this.getRange()\n const { realFrom, realRange } = range\n const rate = this.reverse ? pixel / height : 1 - pixel / height\n const realValue = rate * realRange + realFrom\n return this.realValueToValue(realValue, { range })\n }\n\n convertToPixel (value: number): number {\n const range = this.getRange()\n const realValue = this.valueToRealValue(value, { range })\n const height = this.getParent().getYAxisWidget()?.getBounding().height ?? 0\n const { realFrom, realRange } = range\n const rate = (realValue - realFrom) / realRange\n return this.reverse ? Math.round(rate * height) : Math.round((1 - rate) * height)\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 static extend (template: YAxisTemplate): YAxisConstructor {\n class Custom extends YAxisImp {\n constructor (parent: DrawPane) {\n super(parent, 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 type { AxisTemplate } from '../../component/Axis'\n\nconst normal: AxisTemplate = {\n name: 'normal'\n}\n\nexport default normal\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'\nimport { isValid } from '../../common/utils/typeChecks'\nimport type { AxisTemplate } from '../../component/Axis'\n\nconst percentage: AxisTemplate = {\n name: 'percentage',\n minSpan: () => Math.pow(10, -2),\n displayValueToText: value => `${formatPrecision(value, 2)}%`,\n valueToRealValue: (value, { range }) => (value - range.from) / range.range * range.realRange + range.realFrom,\n realValueToValue: (value, { range }) => (value - range.realFrom) / range.realRange * range.range + range.from,\n createRange: ({ chart, defaultRange }) => {\n const kLineDataList = chart.getDataList()\n const visibleRange = chart.getVisibleRange()\n const kLineData = kLineDataList[visibleRange.from]\n if (isValid(kLineData)) {\n const { from, to, range } = defaultRange\n const realFrom = (defaultRange.from - kLineData.close) / kLineData.close * 100\n const realTo = (defaultRange.to - kLineData.close) / kLineData.close * 100\n const realRange = realTo - realFrom\n return {\n from,\n to,\n range,\n realFrom,\n realTo,\n realRange,\n displayFrom: realFrom,\n displayTo: realTo,\n displayRange: realRange\n }\n }\n return defaultRange\n }\n}\n\nexport default percentage\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 { log10, index10 } from '../../common/utils/number'\nimport type { AxisTemplate } from '../../component/Axis'\n\nconst logarithm: AxisTemplate = {\n name: 'logarithm',\n minSpan: (precision) => 0.05 * index10(-precision),\n valueToRealValue: (value) => value < 0 ? -log10(Math.abs(value)) : log10(value),\n realValueToDisplayValue: (value) => value < 0 ? -index10(Math.abs(value)) : index10(value),\n displayValueToRealValue: (value) => value < 0 ? -log10(Math.abs(value)) : log10(value),\n realValueToValue: (value) => value < 0 ? -index10(Math.abs(value)) : index10(value),\n createRange: ({ defaultRange }) => {\n const { from, to, range } = defaultRange\n const realFrom = from < 0 ? -log10(Math.abs(from)) : log10(from)\n const realTo = to < 0 ? -log10(Math.abs(to)) : log10(to)\n return {\n from,\n to,\n range,\n realFrom,\n realTo,\n realRange: realTo - realFrom,\n displayFrom: from,\n displayTo: to,\n displayRange: range\n }\n }\n}\n\nexport default logarithm\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 YAxisImp, { type YAxisTemplate, type YAxisConstructor } from '../../component/YAxis'\n\nimport normal from './normal'\nimport percentage from './percentage'\nimport logarithm from './logarithm'\n\nconst yAxises: Record = {\n normal: YAxisImp.extend(normal),\n percentage: YAxisImp.extend(percentage),\n logarithm: YAxisImp.extend(logarithm)\n}\n\nfunction registerYAxis (axis: YAxisTemplate): void {\n yAxises[axis.name] = YAxisImp.extend(axis)\n}\n\nfunction getYAxisClass (name: string): YAxisConstructor {\n return yAxises[name] ?? yAxises.normal\n}\n\nexport {\n registerYAxis,\n getYAxisClass\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 */\nimport type Nullable from '../common/Nullable'\nimport type Updater from '../common/Updater'\nimport { UpdateLevel } from '../common/Updater'\nimport type Bounding from '../common/Bounding'\nimport { createDefaultBounding } from '../common/Bounding'\nimport { createDom } from '../common/utils/dom'\nimport { merge } from '../common/utils/typeChecks'\n\nimport type Chart from '../Chart'\n\nexport default abstract class Pane implements Updater {\n private _rootContainer: HTMLElement\n private _container: HTMLElement\n private readonly _id: string\n private readonly _chart: Chart\n\n private readonly _bounding = createDefaultBounding()\n\n private readonly _originalBounding = createDefaultBounding()\n\n private _visible = true\n\n constructor (rootContainer: HTMLElement, afterElement: Nullable, chart: Chart, id: string) {\n this._chart = chart\n this._id = id\n this._init(rootContainer, afterElement)\n }\n\n private _init (rootContainer: HTMLElement, afterElement: Nullable): void {\n this._rootContainer = rootContainer\n this._container = createDom('div', {\n width: '100%',\n margin: '0',\n padding: '0',\n position: 'relative',\n overflow: 'hidden',\n boxSizing: 'border-box'\n })\n if (afterElement !== null) {\n rootContainer.insertBefore(this._container, afterElement)\n } else {\n rootContainer.appendChild(this._container)\n }\n }\n\n getContainer (): HTMLElement {\n return this._container\n }\n\n setVisible (visible: boolean): void {\n if (this._visible !== visible) {\n this._container.style.display = visible ? 'block' : 'none'\n this._visible = visible\n }\n }\n\n getVisible (): boolean {\n return this._visible\n }\n\n getId (): string {\n return this._id\n }\n\n getChart (): Chart {\n return this._chart\n }\n\n getBounding (): Bounding {\n return this._bounding\n }\n\n setOriginalBounding (bounding: Partial): void {\n merge(this._originalBounding, bounding)\n }\n\n getOriginalBounding (): Bounding {\n return this._originalBounding\n }\n\n update (level?: UpdateLevel): void {\n if (this._bounding.height !== this._container.clientHeight) {\n this._container.style.height = `${this._bounding.height}px`\n }\n this.updateImp(level ?? UpdateLevel.Drawer, this._container, this._bounding)\n }\n\n destroy (): void {\n this._rootContainer.removeChild(this._container)\n }\n\n abstract setBounding (...bounding: Array>): Pane\n\n abstract getImage (includeOverlay: boolean): HTMLCanvasElement\n\n 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\nimport type DeepRequired from '../common/DeepRequired'\nimport type Nullable from '../common/Nullable'\nimport type { UpdateLevel } from '../common/Updater'\nimport type Bounding from '../common/Bounding'\n\nimport { isValid, merge } from '../common/utils/typeChecks'\n\nimport { AxisPosition, type Axis } from '../component/Axis'\n\nimport type DrawWidget from '../widget/DrawWidget'\nimport type YAxisWidget from '../widget/YAxisWidget'\n\nimport Pane from './Pane'\nimport { type PaneOptions, PANE_DEFAULT_HEIGHT, PANE_MIN_HEIGHT, PaneIdConstants, PaneState } from './types'\n\nimport type Chart from '../Chart'\n\nimport { createDom } from '../common/utils/dom'\nimport { getPixelRatio } from '../common/utils/canvas'\nimport YAxisImp, { type YAxis } from '../component/YAxis'\n\nexport default abstract class DrawPane extends Pane {\n private readonly _mainWidget: DrawWidget>\n private readonly _yAxisWidget: Nullable = null\n\n private _axis: C\n\n private readonly _options: DeepRequired = {\n id: '',\n minHeight: PANE_MIN_HEIGHT,\n dragEnabled: true,\n order: 0,\n height: PANE_DEFAULT_HEIGHT,\n state: PaneState.Normal,\n axis: { name: 'normal', scrollZoomEnabled: true }\n }\n\n constructor (rootContainer: HTMLElement, afterElement: Nullable, chart: Chart, id: string, options: Omit) {\n super(rootContainer, afterElement, chart, id)\n const container = this.getContainer()\n this._mainWidget = this.createMainWidget(container)\n this._yAxisWidget = this.createYAxisWidget(container)\n this.setOptions(options)\n }\n\n setOptions (options: PaneOptions): this {\n const paneId = this.getId()\n if (paneId === PaneIdConstants.CANDLE || paneId === PaneIdConstants.X_AXIS) {\n const axisName = options.axis?.name\n if (\n !isValid(this._axis) ||\n (isValid(axisName) && this._options.axis.name !== axisName)\n ) {\n this._axis = this.createAxisComponent(axisName ?? 'normal')\n }\n } else {\n if (!isValid(this._axis)) {\n this._axis = this.createAxisComponent('normal')\n }\n }\n if (this._axis instanceof YAxisImp) {\n this._axis.setAutoCalcTickFlag(true)\n }\n merge(this._options, options)\n this._axis.override({\n ...this._options.axis,\n name: options.axis?.name ?? 'normal'\n })\n let container: Nullable = null\n let cursor = 'default'\n if (this.getId() === PaneIdConstants.X_AXIS) {\n container = this.getMainWidget().getContainer()\n cursor = 'ew-resize'\n } else {\n container = this.getYAxisWidget()!.getContainer()\n cursor = 'ns-resize'\n }\n if (options.axis?.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 getAxisComponent (): C {\n return this._axis\n }\n\n override setBounding (\n rootBounding: Partial,\n mainBounding?: Partial,\n leftYAxisBounding?: Partial,\n rightYAxisBounding?: Partial\n ): this {\n merge(this.getBounding(), rootBounding)\n const contentBounding: Partial = {}\n if (isValid(rootBounding.height)) {\n contentBounding.height = rootBounding.height\n }\n if (isValid(rootBounding.top)) {\n contentBounding.top = rootBounding.top\n }\n this._mainWidget.setBounding(contentBounding)\n const mainBoundingValid = isValid(mainBounding)\n if (mainBoundingValid) {\n this._mainWidget.setBounding(mainBounding)\n }\n if (isValid(this._yAxisWidget)) {\n this._yAxisWidget.setBounding(contentBounding)\n const yAxis = this._axis as unknown as YAxis\n if (yAxis.position === AxisPosition.Left) {\n if (isValid(leftYAxisBounding)) {\n this._yAxisWidget.setBounding({ ...leftYAxisBounding, left: 0 })\n }\n } else {\n if (isValid(rightYAxisBounding)) {\n this._yAxisWidget.setBounding(rightYAxisBounding)\n if (mainBoundingValid) {\n this._yAxisWidget.setBounding({\n left: (mainBounding.left ?? 0) +\n (mainBounding.width ?? 0) +\n (mainBounding.right ?? 0) -\n (rightYAxisBounding.width ?? 0)\n })\n }\n }\n }\n }\n return this\n }\n\n getMainWidget (): DrawWidget> { return this._mainWidget }\n\n getYAxisWidget (): Nullable { return this._yAxisWidget }\n\n override updateImp (level: UpdateLevel): void {\n this._mainWidget.update(level)\n this._yAxisWidget?.update(level)\n }\n\n destroy (): void {\n super.destroy()\n this._mainWidget.destroy()\n this._yAxisWidget?.destroy()\n }\n\n override 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')!\n const pixelRatio = getPixelRatio(canvas)\n canvas.width = width * pixelRatio\n canvas.height = height * pixelRatio\n ctx.scale(pixelRatio, pixelRatio)\n\n const mainBounding = this._mainWidget.getBounding()\n ctx.drawImage(\n this._mainWidget.getImage(includeOverlay),\n mainBounding.left, 0,\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, 0,\n yAxisBounding.width, yAxisBounding.height\n )\n }\n return canvas\n }\n\n protected abstract createAxisComponent (name: string): C\n\n protected createYAxisWidget (_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 type Nullable from '../common/Nullable'\n\nimport type DrawWidget from '../widget/DrawWidget'\nimport IndicatorWidget from '../widget/IndicatorWidget'\nimport YAxisWidget from '../widget/YAxisWidget'\n\nimport type { YAxis } from '../component/YAxis'\n\nimport { getYAxisClass } from '../extension/y-axis'\n\nimport DrawPane from './DrawPane'\n\nexport default class IndicatorPane extends DrawPane {\n override createAxisComponent (name?: string): YAxis {\n const YAxisClass = getYAxisClass(name ?? 'default')\n return new YAxisClass(this)\n }\n\n override createMainWidget (container: HTMLElement): DrawWidget> {\n return new IndicatorWidget(container, this)\n }\n\n override createYAxisWidget (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 type DrawWidget from '../widget/DrawWidget'\nimport CandleWidget from '../widget/CandleWidget'\n\nimport type DrawPane from './DrawPane'\nimport IndicatorPane from './IndicatorPane'\nimport type { YAxis } from '../component/YAxis'\n\nexport default class CandlePane extends IndicatorPane {\n override createMainWidget (container: HTMLElement): DrawWidget> {\n return new CandleWidget(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 type Bounding from '../common/Bounding'\nimport type { AxisStyle, Styles } from '../common/Styles'\n\nimport type { LineAttrs } from '../extension/figure/line'\nimport type { TextAttrs } from '../extension/figure/text'\n\nimport type { AxisTick } from '../component/Axis'\nimport type { 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): LineAttrs {\n return {\n coordinates: [\n { x: 0, y: 0 },\n { x: bounding.width, y: 0 }\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 type Nullable from '../common/Nullable'\nimport type Coordinate from '../common/Coordinate'\n\nimport { isNumber } from '../common/utils/typeChecks'\n\nimport { FormatDateType } from '../Options'\n\nimport type { XAxis } from '../component/XAxis'\nimport type { YAxis } from '../component/YAxis'\nimport type { OverlayFigure, Overlay } from '../component/Overlay'\nimport type OverlayImp from '../component/Overlay'\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 (): OverlayImp[] {\n return this.getWidget().getPane().getChart().getChartStore().getOverlaysByPaneId()\n }\n\n override getProgressOverlay (): Nullable {\n return this.getWidget().getPane().getChart().getChartStore().getProgressOverlayInfo()?.overlay ?? null\n }\n\n override getDefaultFigures (\n overlay: Overlay,\n coordinates: Coordinate[]\n ): OverlayFigure[] {\n const figures: OverlayFigure[] = []\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chartStore = pane.getChart().getChartStore()\n const clickOverlayInfo = chartStore.getClickOverlayInfo()\n if (overlay.needDefaultXAxisFigure && overlay.id === clickOverlayInfo.overlay?.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 (isNumber(point.timestamp)) {\n const text = chartStore.getCustomApi().formatDate(point.timestamp, 'YYYY-MM-DD HH:mm', FormatDateType.Crosshair)\n figures.push({ type: 'text', 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: widget.getBounding().height }, ignoreEvent: true })\n }\n }\n return figures\n }\n\n override getFigures (\n o: Overlay,\n coordinates: Coordinate[]\n ): OverlayFigure | OverlayFigure[] {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chart = pane.getChart()\n const yAxis = pane.getAxisComponent() as unknown as Nullable\n const xAxis = chart.getXAxisPane().getAxisComponent()\n const bounding = widget.getBounding()\n return o.createXAxisFigures?.({ chart, overlay: o, coordinates, bounding, 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 type Bounding from '../common/Bounding'\nimport type Crosshair from '../common/Crosshair'\nimport type { CrosshairStyle, CrosshairDirectionStyle, StateTextStyle } from '../common/Styles'\nimport { isValid } from '../common/utils/typeChecks'\n\nimport { FormatDateType } from '../Options'\n\nimport type { Axis } from '../component/Axis'\nimport type { XAxis } from '../component/XAxis'\n\nimport type ChartStore from '../Store'\n\nimport CrosshairHorizontalLabelView from './CrosshairHorizontalLabelView'\nimport type { TextAttrs } from '../extension/figure/text'\n\nexport default class CrosshairVerticalLabelView extends CrosshairHorizontalLabelView {\n override compare (crosshair: Crosshair): boolean {\n return isValid(crosshair.timestamp)\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.timestamp!\n return chartStore.getCustomApi().formatDate(timestamp, 'YYYY-MM-DD HH:mm', FormatDateType.Crosshair)\n }\n\n override getTextAttrs (text: string, textWidth: number, crosshair: Crosshair, bounding: Bounding, _axis: Axis, styles: StateTextStyle): TextAttrs {\n const x = crosshair.realX!\n let optimalX = 0\n let align: CanvasTextAlign = 'center'\n if (x - textWidth / 2 - styles.paddingLeft < 0) {\n optimalX = 0\n align = 'left'\n } else if (x + textWidth / 2 + styles.paddingRight > bounding.width) {\n optimalX = bounding.width\n align = 'right'\n } else {\n optimalX = x\n }\n return { x: optimalX, y: 0, text, align, 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 { WidgetNameConstants } from './types'\nimport DrawWidget from './DrawWidget'\n\nimport type DrawPane from '../pane/DrawPane'\n\nimport type { 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: DrawPane) {\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.X_AXIS\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 type Nullable from '../common/Nullable'\nimport type Bounding from '../common/Bounding'\nimport { isFunction, isNumber, isString } from '../common/utils/typeChecks'\nimport type TimeWeightTick from '../common/TimeWeightTick'\nimport { calcBetweenTimeWeightTickBarCount, classifyTimeWeightTicks, createTimeWeightTickList, TimeWeightConstants } from '../common/TimeWeightTick'\nimport { FormatDateType } from '../Options'\nimport type { KLineData } from '../common/Data'\n\nimport AxisImp, { type AxisTemplate, type Axis, type AxisRange, type AxisTick } from './Axis'\n\nimport type DrawPane from '../pane/DrawPane'\n\nexport type XAxisTemplate = Pick\n\nexport interface XAxis extends Axis, Required {\n convertTimestampFromPixel: (pixel: number) => Nullable\n convertTimestampToPixel: (timestamp: number) => number\n}\n\nexport type XAxisConstructor = new (parent: DrawPane) => XAxis\n\nexport default abstract class XAxisImp extends AxisImp implements XAxis {\n constructor (parent: DrawPane, xAxis: XAxisTemplate) {\n super(parent)\n this.override(xAxis)\n }\n\n override (xAxis: XAxisTemplate): void {\n const {\n name,\n scrollZoomEnabled,\n createTicks\n } = xAxis\n if (!isString(this.name)) {\n this.name = name\n }\n this.scrollZoomEnabled = scrollZoomEnabled ?? this.scrollZoomEnabled\n this.createTicks = createTicks ?? this.createTicks\n }\n\n protected override createRangeImp (): AxisRange {\n const chartStore = this.getParent().getChart().getChartStore()\n const visibleDataRange = chartStore.getVisibleRange()\n const { realFrom, realTo } = visibleDataRange\n const af = realFrom\n const at = realTo\n const diff = realTo - realFrom + 1\n const range = {\n from: af,\n to: at,\n range: diff,\n realFrom: af,\n realTo: at,\n realRange: diff,\n displayFrom: af,\n displayTo: at,\n displayRange: diff\n }\n return range\n }\n\n protected override createTicksImp (): AxisTick[] {\n const { realFrom, realTo } = this.getRange()\n const chartStore = this.getParent().getChart().getChartStore()\n const formatDate = chartStore.getCustomApi().formatDate\n const timeWeightTickList = chartStore.getTimeWeightTickList()\n const ticks: AxisTick[] = []\n\n const fitTicks: ((list: TimeWeightTick[], start: number) => void) = (list, start) => {\n for (const timeWeightTick of list) {\n if (timeWeightTick.dataIndex >= start && timeWeightTick.dataIndex < realTo) {\n const { timestamp, weight, dataIndex } = timeWeightTick\n let text = ''\n switch (weight) {\n case TimeWeightConstants.Year: {\n text = formatDate(timestamp, 'YYYY', FormatDateType.XAxis)\n break\n }\n case TimeWeightConstants.Month: {\n text = formatDate(timestamp, 'YYYY-MM', FormatDateType.XAxis)\n break\n }\n case TimeWeightConstants.Day: {\n text = formatDate(timestamp, 'MM-DD', FormatDateType.XAxis)\n break\n }\n case TimeWeightConstants.Hour:\n case TimeWeightConstants.Minute: {\n text = formatDate(timestamp, 'HH:mm', FormatDateType.XAxis)\n break\n }\n case TimeWeightConstants.Second: {\n text = formatDate(timestamp, 'mm:ss', FormatDateType.XAxis)\n break\n }\n default: {\n text = formatDate(timestamp, 'YYYY-MM-DD HH:mm', FormatDateType.XAxis)\n break\n }\n }\n ticks.push({\n coord: this.convertToPixel(dataIndex),\n value: timestamp,\n text\n })\n }\n }\n }\n\n fitTicks(timeWeightTickList, realFrom)\n\n // Future time tick\n if (timeWeightTickList.length > 0) {\n const barSpace = chartStore.getBarSpace().bar\n const textStyles = chartStore.getStyles().xAxis.tickText\n const barCount = calcBetweenTimeWeightTickBarCount(barSpace, textStyles)\n const startDataIndex = timeWeightTickList[timeWeightTickList.length - 1].dataIndex + barCount - 1\n const dataList: Array> = []\n for (let i = startDataIndex; i < realTo; i++) {\n const timestamp = chartStore.dataIndexToTimestamp(i)\n if (isNumber(timestamp)) {\n dataList.push({ timestamp })\n }\n }\n\n if (dataList.length > 0) {\n const map = new Map()\n classifyTimeWeightTicks(map, dataList, chartStore.getDateTimeFormat(), startDataIndex)\n fitTicks(createTimeWeightTickList(map, barSpace, textStyles), startDataIndex)\n }\n }\n\n if (isFunction(this.createTicks)) {\n return this.createTicks({\n range: this.getRange(),\n bounding: this.getBounding(),\n defaultTicks: ticks\n })\n }\n return ticks\n }\n\n override 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 protected override getBounding (): Bounding {\n return this.getParent().getMainWidget().getBounding()\n }\n\n convertTimestampFromPixel (pixel: number): Nullable {\n const chartStore = this.getParent().getChart().getChartStore()\n const dataIndex = chartStore.coordinateToDataIndex(pixel)\n return chartStore.dataIndexToTimestamp(dataIndex)\n }\n\n convertTimestampToPixel (timestamp: number): number {\n const chartStore = this.getParent().getChart().getChartStore()\n const dataIndex = chartStore.timestampToDataIndex(timestamp)\n return chartStore.dataIndexToCoordinate(dataIndex)\n }\n\n convertFromPixel (pixel: number): number {\n return this.getParent().getChart().getChartStore().coordinateToDataIndex(pixel)\n }\n\n convertToPixel (value: number): number {\n return this.getParent().getChart().getChartStore().dataIndexToCoordinate(value)\n }\n\n static extend (template: XAxisTemplate): XAxisConstructor {\n class Custom extends XAxisImp {\n constructor (parent: DrawPane) {\n super(parent, 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 type { AxisTemplate } from '../../component/Axis'\n\nconst normal: AxisTemplate = {\n name: 'normal'\n}\n\nexport default normal\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 XAxisImp, { type XAxisTemplate, type XAxisConstructor } from '../../component/XAxis'\n\nimport normal from './normal'\n\nconst xAxises: Record = {\n normal: XAxisImp.extend(normal)\n}\n\nfunction registerXAxis (axis: XAxisTemplate): void {\n xAxises[axis.name] = XAxisImp.extend(axis)\n}\n\nfunction getXAxisClass (name: string): XAxisConstructor {\n return xAxises[name] ?? xAxises.normal\n}\n\nexport {\n registerXAxis,\n getXAxisClass\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 type DrawWidget from '../widget/DrawWidget'\nimport XAxisWidget from '../widget/XAxisWidget'\n\nimport type { XAxis } from '../component/XAxis'\n\nimport DrawPane from './DrawPane'\n\nimport { getXAxisClass } from '../extension/x-axis'\n\nexport default class XAxisPane extends DrawPane {\n override createAxisComponent (name: string): XAxis {\n const XAxisClass = getXAxisClass(name)\n return new XAxisClass(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 throttle (func: (...args: unknown[]) => unknown, 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// export function memoize (func: (...args: any[]) => R1, resolver?: (...args: any[]) => R2): (...args: any[]) => R1 {\n// if (!isFunction(func) || (isValid(resolver) && !isFunction(resolver))) {\n// throw new TypeError('Expected a function')\n// }\n// const memoized = function (...args: any[]): any {\n// const key = isFunction(resolver) ? resolver.apply(this, args) : args[0]\n// const cache = memoized.cache\n\n// if (cache.has(key)) {\n// return cache.get(key)\n// }\n// const result = func.apply(this, args)\n// // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n// memoized.cache = cache.set(key, result) || cache\n// return result\n// }\n// // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n// memoized.cache = new (memoize.Cache || Map)()\n// return memoized\n// }\n// memoize.Cache = Map\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 type Bounding from '../common/Bounding'\nimport { UpdateLevel } from '../common/Updater'\nimport type { MouseTouchEvent } from '../common/SyntheticEvent'\nimport { ActionType } from '../common/Action'\nimport { createDom } from '../common/utils/dom'\nimport { throttle } from '../common/utils/performance'\nimport type Nullable from '../common/Nullable'\n\nimport Widget from './Widget'\nimport { WidgetNameConstants, REAL_SEPARATOR_HEIGHT } from './types'\n\nimport type SeparatorPane from '../pane/SeparatorPane'\nimport type DrawPane from '../pane/DrawPane'\nimport { PaneState } from '../pane/types'\nimport { isValid } from '../common/utils/typeChecks'\n\nexport default class SeparatorWidget extends Widget {\n private _dragFlag = false\n private _dragStartY = 0\n\n private _topPaneHeight = 0\n private _bottomPaneHeight = 0\n\n private _topPane: Nullable = null\n private _bottomPane: Nullable = null\n\n constructor (rootContainer: HTMLElement, pane: SeparatorPane) {\n super(rootContainer, pane)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ignore\n this.registerEvent('touchStartEvent', this._mouseDownEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ignore\n .registerEvent('touchMoveEvent', this._pressedMouseMoveEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ignore\n .registerEvent('touchEndEvent', this._mouseUpEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ignore\n .registerEvent('mouseDownEvent', this._mouseDownEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ignore\n .registerEvent('mouseUpEvent', this._mouseUpEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ignore\n .registerEvent('pressedMouseMoveEvent', this._pressedMouseMoveEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ignore\n .registerEvent('mouseEnterEvent', this._mouseEnterEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ignore\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 const chart = pane.getChart()\n this._topPane = pane.getTopPane()\n this._bottomPane = pane.getBottomPane()\n const drawPanes = chart.getDrawPanes()\n if (this._topPane.getOptions().state === PaneState.Minimize) {\n const index = drawPanes.findIndex(pane => pane.getId() === this._topPane?.getId())\n for (let i = index - 1; i > -1; i--) {\n const pane = drawPanes[i]\n if (pane.getOptions().state !== PaneState.Minimize) {\n this._topPane = pane\n break\n }\n }\n }\n if (this._bottomPane.getOptions().state === PaneState.Minimize) {\n const index = drawPanes.findIndex(pane => pane.getId() === this._bottomPane?.getId())\n for (let i = index + 1; i < drawPanes.length; i++) {\n const pane = drawPanes[i]\n if (pane.getOptions().state !== PaneState.Minimize) {\n this._bottomPane = pane\n break\n }\n }\n }\n this._topPaneHeight = this._topPane.getBounding().height\n this._bottomPaneHeight = this._bottomPane.getBounding().height\n return true\n }\n\n private _mouseUpEvent (): boolean {\n this._dragFlag = false\n this._topPane = null\n this._bottomPane = null\n this._topPaneHeight = 0\n this._bottomPaneHeight = 0\n return this._mouseLeaveEvent()\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method -- ignore\n private readonly _pressedMouseMoveEvent = throttle(this._pressedTouchMouseMoveEvent, 20)\n\n private _pressedTouchMouseMoveEvent (event: MouseTouchEvent): boolean {\n const dragDistance = event.pageY - this._dragStartY\n\n const isUpDrag = dragDistance < 0\n if (isValid(this._topPane) && isValid(this._bottomPane)) {\n const bottomPaneOptions = this._bottomPane.getOptions()\n if (\n this._topPane.getOptions().state !== PaneState.Minimize &&\n bottomPaneOptions.state !== PaneState.Minimize &&\n bottomPaneOptions.dragEnabled\n ) {\n let reducedPane: Nullable = null\n let increasedPane: Nullable = null\n let startDragReducedPaneHeight = 0\n let startDragIncreasedPaneHeight = 0\n if (isUpDrag) {\n reducedPane = this._topPane\n increasedPane = this._bottomPane\n startDragReducedPaneHeight = this._topPaneHeight\n startDragIncreasedPaneHeight = this._bottomPaneHeight\n } else {\n reducedPane = this._bottomPane\n increasedPane = this._topPane\n startDragReducedPaneHeight = this._bottomPaneHeight\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 currentPane = this.getPane()\n const chart = currentPane.getChart()\n chart.getChartStore().executeAction(ActionType.OnPaneDrag, { paneId: currentPane.getId() })\n chart.layout({\n measureHeight: true,\n measureWidth: true,\n update: true,\n buildYAxisTick: true,\n forceBuildYAxisTick: true\n })\n }\n }\n }\n\n return true\n }\n\n private _mouseEnterEvent (): boolean {\n const pane = this.getPane()\n const bottomPane = pane.getBottomPane()\n if (bottomPane.getOptions().dragEnabled) {\n const chart = pane.getChart()\n const styles = chart.getStyles().separator\n this.getContainer().style.background = styles.activeBackgroundColor\n return true\n }\n return false\n }\n\n private _mouseLeaveEvent (): boolean {\n if (!this._dragFlag) {\n this.getContainer().style.background = 'transparent'\n return true\n }\n return false\n }\n\n override createContainer (): HTMLElement {\n return 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 }\n\n override updateImp (container: HTMLElement, _bounding: Bounding, level: UpdateLevel): void {\n if (level === UpdateLevel.All || level === UpdateLevel.Separator) {\n const styles = this.getPane().getChart().getStyles().separator\n container.style.top = `${-Math.floor((REAL_SEPARATOR_HEIGHT - styles.size) / 2)}px`\n container.style.height = `${REAL_SEPARATOR_HEIGHT}px`\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 type Nullable from '../common/Nullable'\nimport { UpdateLevel } from '../common/Updater'\nimport type Bounding from '../common/Bounding'\nimport { merge } from '../common/utils/typeChecks'\nimport { createDom } from '../common/utils/dom'\nimport { getPixelRatio } from '../common/utils/canvas'\n\nimport type Chart from '../Chart'\n\nimport type DrawPane from './DrawPane'\nimport Pane from './Pane'\n\nimport SeparatorWidget from '../widget/SeparatorWidget'\n\nexport default class SeparatorPane extends Pane {\n private _topPane: DrawPane\n private _bottomPane: DrawPane\n\n private readonly _separatorWidget: SeparatorWidget\n\n constructor (rootContainer: HTMLElement, afterElement: Nullable, chart: Chart, id: string, topPane: DrawPane, bottomPane: DrawPane) {\n super(rootContainer, afterElement, chart, id)\n this.getContainer().style.overflow = ''\n this._topPane = topPane\n this._bottomPane = bottomPane\n this._separatorWidget = new SeparatorWidget(this.getContainer(), this)\n }\n\n override setBounding (rootBounding: Partial): Pane {\n merge(this.getBounding(), rootBounding)\n return this\n }\n\n getTopPane (): DrawPane {\n return this._topPane\n }\n\n setTopPane (pane: DrawPane): Pane {\n this._topPane = pane\n return this\n }\n\n getBottomPane (): DrawPane {\n return this._bottomPane\n }\n\n setBottomPane (pane: DrawPane): Pane {\n this._bottomPane = pane\n return this\n }\n\n getWidget (): SeparatorWidget { return this._separatorWidget }\n\n override getImage (_includeOverlay: boolean): HTMLCanvasElement {\n const { width, height } = this.getBounding()\n\n const styles = this.getChart().getStyles().separator\n const canvas = createDom('canvas', {\n width: `${width}px`,\n height: `${height}px`,\n boxSizing: 'border-box'\n })\n const ctx = canvas.getContext('2d')!\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(0, 0, width, height)\n return canvas\n }\n\n override updateImp (level: UpdateLevel, container: HTMLElement, bounding: Bounding): void {\n if (level === UpdateLevel.All || level === UpdateLevel.Separator) {\n const styles = this.getChart().getStyles().separator\n container.style.backgroundColor = styles.color\n container.style.height = `${bounding.height}px`\n container.style.marginLeft = `${bounding.left}px`\n container.style.width = `${bounding.width}px`\n this._separatorWidget.update(level)\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\nexport function isFF (): boolean {\n if (typeof window === 'undefined') {\n return false\n }\n return window.navigator.userAgent.toLowerCase().includes('firefox')\n}\n\nexport function isIOS (): boolean {\n if (typeof window === 'undefined') {\n return false\n }\n return /iPhone|iPad|iPod|iOS/.test(window.navigator.userAgent)\n}\n","/* eslint-disable eslint-comments/require-description -- ignore */\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 type Coordinate from './Coordinate'\n\nimport type Nullable from './Nullable'\n\nimport { isFF, isIOS } from './utils/platform'\nimport { isValid } from './utils/typeChecks'\n\nexport interface MouseTouchEvent extends Coordinate {\n pageX: number\n pageY: number\n isTouch?: boolean\n preventDefault?: () => void\n}\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 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 // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n LongTap = 500,\n // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n PreventFiresTouchEvents = 500,\n}\n\nconst ManhattanDistance = {\n CancelClick: 5,\n CancelTap: 5,\n DoubleClick: 5,\n DoubleTap: 30\n}\n\nconst 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 = 0\n private _clickTimeoutId: Nullable = null\n private _clickCoordinate: Coordinate = { x: Number.NEGATIVE_INFINITY, y: Number.POSITIVE_INFINITY }\n\n private _tapCount = 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 = false\n\n private _mouseMoveStartCoordinate: Nullable = null\n\n private _touchMoveStartCoordinate: Nullable = null\n private _touchMoveExceededManhattanDistance = false\n\n private _cancelClick = false\n private _cancelTap = 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 = 0\n private _pinchPrevented = false\n private _preventTouchDragProcess = false\n\n private _mousePressed = false\n\n private _lastTouchEventTimeStamp = 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 = !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 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const boundMouseMoveHandler = this._mouseMoveHandler.bind(this)\n this._unsubscribeMousemove = () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this._target.removeEventListener('mousemove', boundMouseMoveHandler)\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this._target.addEventListener('mousemove', boundMouseMoveHandler)\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const boundMouseWheel = this._mouseWheelHandler.bind(this)\n this._unsubscribeMouseWheel = () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this._target.removeEventListener('wheel', boundMouseWheel)\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this._target.addEventListener('wheel', boundMouseWheel, { passive: false })\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const boundContextMenu = this._contextMenuHandler.bind(this)\n this._unsubscribeContextMenu = () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this._target.removeEventListener('contextmenu', boundContextMenu)\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\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 (!isValid(this._handler.mouseWheelHortEvent)) {\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 (!isValid(this._handler.mouseWheelVertEvent)) {\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\n case wheelEvent.DOM_DELTA_LINE: {\n deltaY *= 32\n break\n }\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!)\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!)\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\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\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 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 (isValid(this._handler.tapEvent)) {\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const boundTouchMoveWithDownHandler = this._touchMoveHandler.bind(this)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const boundTouchEndHandler = this._touchEndHandler.bind(this)\n\n this._unsubscribeRootTouchEvents = () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n rootElement.removeEventListener('touchmove', boundTouchMoveWithDownHandler)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n rootElement.removeEventListener('touchend', boundTouchEndHandler)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n rootElement.addEventListener('touchmove', boundTouchMoveWithDownHandler, { passive: false })\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n rootElement.addEventListener('touchend', boundTouchEndHandler, { passive: false })\n\n this._clearLongTapTimeout()\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const boundMouseMoveWithDownHandler = this._mouseMoveWithDownHandler.bind(this)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const boundMouseUpHandler = this._mouseUpHandler.bind(this)\n\n this._unsubscribeRootMouseEvents = () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n rootElement.removeEventListener('mousemove', boundMouseMoveWithDownHandler)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n rootElement.removeEventListener('mouseup', boundMouseUpHandler)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n rootElement.addEventListener('mousemove', boundMouseMoveWithDownHandler)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this._clickTimeoutId = setTimeout(this._resetClickTimeout.bind(this), Delay.ResetClick)\n this._clickCoordinate = this._getCoordinate(downEvent)\n }\n }\n\n private _init (): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this._target.addEventListener('mouseenter', this._mouseEnterHandler.bind(this))\n\n // Do not show context menu when something went wrong\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this._target.addEventListener('mouseleave', this._mouseLeaveHandler.bind(this))\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\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 // eslint-disable-next-line @typescript-eslint/no-empty-function\n this._target.addEventListener('touchmove', () => {}, { passive: false })\n }\n\n private _initPinch (): void {\n if (!isValid(this._handler.pinchStartEvent) &&\n !isValid(this._handler.pinchEvent) &&\n !isValid(this._handler.pinchEndEvent)\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 (isValid(this._handler.pinchEvent)) {\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()\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 (isValid(this._handler.pinchStartEvent)) {\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 (isValid(this._handler.pinchEndEvent)) {\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 // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isValid(e.sourceCapabilities?.firesTouchEvents)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\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()\n return {\n x: eventLike.clientX - box.left,\n y: eventLike.clientY - box.top,\n\n pageX: eventLike.pageX,\n pageY: eventLike.pageY,\n isTouch: !event.type.startsWith('mouse') && event.type !== 'contextmenu' && event.type !== 'click' && event.type !== 'wheel',\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 // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return e.timeStamp ?? performance.now()\n }\n\n private _touchWithId (touches: TouchList, id: Nullable): Nullable {\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\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 type Nullable from './common/Nullable'\nimport SyntheticEvent, { type EventHandler, type MouseTouchEvent, TOUCH_MIN_RADIUS } from './common/SyntheticEvent'\nimport type Coordinate from './common/Coordinate'\nimport { UpdateLevel } from './common/Updater'\nimport type Crosshair from './common/Crosshair'\nimport { requestAnimationFrame, cancelAnimationFrame } from './common/utils/compatible'\nimport { isValid } from './common/utils/typeChecks'\n\nimport type { AxisRange } from './component/Axis'\nimport type YAxis from './component/YAxis'\nimport type XAxis from './component/XAxis'\n\nimport type Chart from './Chart'\nimport type Pane from './pane/Pane'\nimport { PaneIdConstants } from './pane/types'\nimport type Widget from './widget/Widget'\nimport { WidgetNameConstants, REAL_SEPARATOR_HEIGHT } from './widget/types'\nimport type DrawPane from './pane/DrawPane'\n\ninterface EventTriggerWidgetInfo {\n pane: Nullable\n widget: Nullable\n}\n\nexport default class Event 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 _prevYAxisRange: 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().zoom(0.5)\n break\n }\n case 'Minus': {\n this._chart.getChartStore().zoom(-0.5)\n break\n }\n case 'ArrowLeft': {\n const store = this._chart.getChartStore()\n store.startScroll()\n store.scroll(-3 * store.getBarSpace().bar)\n break\n }\n case 'ArrowRight': {\n const store = this._chart.getChartStore()\n store.startScroll()\n store.scroll(3 * store.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.X_AXIS && 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().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 store = this._chart.getChartStore()\n store.startScroll()\n store.scroll(distance)\n return true\n }\n\n mouseWheelVertEvent (e: MouseTouchEvent, scale: number): boolean {\n const { widget } = this._findWidgetByEvent(e)\n const event = this._makeWidgetEvent(e, widget)\n const name = widget?.getName()\n if (name === WidgetNameConstants.MAIN) {\n this._chart.getChartStore().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 range = (pane as DrawPane).getAxisComponent().getRange()\n this._prevYAxisRange = { ...range }\n this._startScrollCoordinate = { x: event.x, y: event.y }\n this._chart.getChartStore().startScroll()\n return widget.dispatchEvent('mouseDownEvent', event)\n }\n case WidgetNameConstants.X_AXIS: {\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.Y_AXIS: {\n const consumed = widget.dispatchEvent('mouseDownEvent', event)\n if (consumed) {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n const range = (pane as DrawPane).getAxisComponent().getRange()\n this._prevYAxisRange = { ...range }\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.getActiveTooltipIcon() !== null) {\n crosshair = undefined\n widget.getContainer().style.cursor = 'pointer'\n }\n this._chart.getChartStore().setCrosshair(crosshair)\n return consumed\n }\n case WidgetNameConstants.SEPARATOR:\n case WidgetNameConstants.X_AXIS:\n case WidgetNameConstants.Y_AXIS: {\n const consumed = widget.dispatchEvent('mouseMoveEvent', event)\n this._chart.getChartStore().setCrosshair()\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 as DrawPane).getAxisComponent()\n if (this._prevYAxisRange !== null && !yAxis.getAutoCalcTickFlag() && yAxis.scrollZoomEnabled) {\n const { from, to, range } = this._prevYAxisRange\n let distance = 0\n if (yAxis.reverse) {\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 newFrom = from + difRange\n const newTo = to + difRange\n const newRealFrom = yAxis.valueToRealValue(newFrom, { range: this._prevYAxisRange })\n const newRealTo = yAxis.valueToRealValue(newTo, { range: this._prevYAxisRange })\n const newDisplayFrom = yAxis.realValueToDisplayValue(newRealFrom, { range: this._prevYAxisRange })\n const newDisplayTo = yAxis.realValueToDisplayValue(newRealTo, { range: this._prevYAxisRange })\n yAxis.setRange({\n from: newFrom,\n to: newTo,\n range: newTo - newFrom,\n realFrom: newRealFrom,\n realTo: newRealTo,\n realRange: newRealTo - newRealFrom,\n displayFrom: newDisplayFrom,\n displayTo: newDisplayTo,\n displayRange: newDisplayTo - newDisplayFrom\n })\n }\n const distance = event.x - this._startScrollCoordinate.x\n this._chart.getChartStore().scroll(distance)\n }\n this._chart.getChartStore().setCrosshair({ x: event.x, y: event.y, paneId: pane?.getId() })\n return consumed\n }\n case WidgetNameConstants.X_AXIS: {\n const consumed = widget.dispatchEvent('pressedMouseMoveEvent', event)\n if (!consumed) {\n const xAxis = (pane as DrawPane).getAxisComponent()\n if ((xAxis.scrollZoomEnabled)) {\n const scale = this._xAxisStartScaleDistance / event.pageX\n if (Number.isFinite(scale)) {\n const zoomScale = (scale - this._xAxisScale) * 10\n this._xAxisScale = scale\n this._chart.getChartStore().zoom(zoomScale, this._xAxisStartScaleCoordinate ?? undefined)\n }\n }\n } else {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n return consumed\n }\n case WidgetNameConstants.Y_AXIS: {\n const consumed = widget.dispatchEvent('pressedMouseMoveEvent', event)\n if (!consumed) {\n const yAxis = (pane as DrawPane).getAxisComponent()\n if (this._prevYAxisRange !== null && yAxis.scrollZoomEnabled) {\n const { from, to, range } = this._prevYAxisRange\n const scale = event.pageY / this._yAxisStartScaleDistance\n const newRange = range * scale\n const difRange = (newRange - range) / 2\n const newFrom = from - difRange\n const newTo = to + difRange\n const newRealFrom = yAxis.valueToRealValue(newFrom, { range: this._prevYAxisRange })\n const newRealTo = yAxis.valueToRealValue(newTo, { range: this._prevYAxisRange })\n const newDisplayFrom = yAxis.realValueToDisplayValue(newRealFrom, { range: this._prevYAxisRange })\n const newDisplayTo = yAxis.realValueToDisplayValue(newRealTo, { range: this._prevYAxisRange })\n yAxis.setRange({\n from: newFrom,\n to: newTo,\n range: newRange,\n realFrom: newRealFrom,\n realTo: newRealTo,\n realRange: newRealTo - newRealFrom,\n displayFrom: newDisplayFrom,\n displayTo: newDisplayTo,\n displayRange: newDisplayTo - newDisplayFrom\n })\n this._chart.layout({\n measureWidth: true,\n update: true,\n buildYAxisTick: true\n })\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 = 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.X_AXIS:\n case WidgetNameConstants.Y_AXIS: {\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._prevYAxisRange = 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 = 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.X_AXIS:\n case WidgetNameConstants.Y_AXIS: {\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.Y_AXIS: {\n const yAxis = (pane as DrawPane).getAxisComponent()\n if (!yAxis.getAutoCalcTickFlag()) {\n yAxis.setAutoCalcTickFlag(true)\n this._chart.layout({\n measureWidth: true,\n update: true,\n buildYAxisTick: true\n })\n return true\n }\n break\n }\n }\n }\n return false\n }\n\n mouseLeaveEvent (): boolean {\n this._chart.getChartStore().setCrosshair()\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 if (widget.dispatchEvent('mouseDownEvent', event)) {\n this._touchCancelCrosshair = true\n this._touchCoordinate = null\n chartStore.setCrosshair(undefined, true)\n this._chart.updatePane(UpdateLevel.Overlay)\n return true\n }\n if (this._flingScrollRequestId !== null) {\n cancelAnimationFrame(this._flingScrollRequestId)\n this._flingScrollRequestId = null\n }\n this._flingStartTime = new Date().getTime()\n this._startScrollCoordinate = { x: event.x, y: event.y }\n chartStore.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 chartStore.setCrosshair({ x: event.x, y: event.y, paneId: pane?.getId() })\n } else {\n this._touchCoordinate = null\n this._touchCancelCrosshair = true\n chartStore.setCrosshair()\n }\n }\n return true\n }\n case WidgetNameConstants.X_AXIS:\n case WidgetNameConstants.Y_AXIS: {\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 switch (name) {\n case WidgetNameConstants.MAIN: {\n if (widget.dispatchEvent('pressedMouseMoveEvent', event)) {\n event.preventDefault?.()\n chartStore.setCrosshair(undefined, true)\n this._chart.updatePane(UpdateLevel.Overlay)\n return true\n }\n if (this._touchCoordinate !== null) {\n event.preventDefault?.()\n chartStore.setCrosshair({ 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.scroll(distance)\n }\n }\n return true\n }\n case WidgetNameConstants.X_AXIS:\n case WidgetNameConstants.Y_AXIS: {\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 store = this._chart.getChartStore()\n const flingScroll: (() => void) = () => {\n this._flingScrollRequestId = requestAnimationFrame(() => {\n store.startScroll()\n store.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.X_AXIS:\n case WidgetNameConstants.Y_AXIS: {\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 if (result) {\n this._touchCancelCrosshair = true\n this._touchCoordinate = null\n chartStore.setCrosshair(undefined, true)\n consumed = true\n } else {\n if (!this._touchCancelCrosshair && !this._touchZoomed) {\n this._touchCoordinate = { x: event.x, y: event.y }\n chartStore.setCrosshair({ 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().setCrosshair({ 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 { x, y } = event\n const separatorPanes = this._chart.getSeparatorPanes()\n const separatorSize = this._chart.getStyles().separator.size\n for (const [, pane] of separatorPanes) {\n const bounding = pane.getBounding()\n const top = bounding.top - Math.round((REAL_SEPARATOR_HEIGHT - separatorSize) / 2)\n if (\n x >= bounding.left && x <= bounding.left + bounding.width &&\n y >= top && y <= top + REAL_SEPARATOR_HEIGHT\n ) {\n return { pane, widget: pane.getWidget() }\n }\n }\n\n const drawPanes = this._chart.getDrawPanes()\n\n let pane: Nullable = null\n for (const p of drawPanes) {\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 let widget: Nullable = null\n if (pane !== null) {\n if (!isValid(widget)) {\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 (!isValid(widget)) {\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 type Nullable from './common/Nullable'\nimport type Bounding from './common/Bounding'\nimport { createDefaultBounding } from './common/Bounding'\nimport type { KLineData } from './common/Data'\nimport type Coordinate from './common/Coordinate'\nimport type Point from './common/Point'\nimport { UpdateLevel } from './common/Updater'\nimport type Crosshair from './common/Crosshair'\nimport { ActionType, type ActionCallback } from './common/Action'\nimport type { LoadDataCallback, LoadDataMore } from './common/LoadDataCallback'\nimport type Precision from './common/Precision'\nimport type VisibleRange from './common/VisibleRange'\nimport { type CustomApi, type DecimalFold, type LayoutChild, LayoutChildType, type Options, type ThousandsSeparator } from './Options'\nimport Animation from './common/Animation'\n\nimport { createId } from './common/utils/id'\nimport { createDom } from './common/utils/dom'\nimport { getPixelRatio } from './common/utils/canvas'\nimport { isString, isArray, isValid, merge, isNumber, isBoolean } from './common/utils/typeChecks'\nimport { logWarn } from './common/utils/logger'\nimport { binarySearchNearest } from './common/utils/number'\nimport { LoadDataType } from './common/LoadDataCallback'\n\nimport ChartStore, { SCALE_MULTIPLIER, type Store } from './Store'\n\nimport CandlePane from './pane/CandlePane'\nimport IndicatorPane from './pane/IndicatorPane'\nimport XAxisPane from './pane/XAxisPane'\nimport type DrawPane from './pane/DrawPane'\nimport SeparatorPane from './pane/SeparatorPane'\n\nimport { type PaneOptions, PANE_DEFAULT_HEIGHT, PaneIdConstants, PaneState, PANE_MIN_HEIGHT } from './pane/types'\n\nimport type AxisImp from './component/Axis'\nimport { AxisPosition } from './component/Axis'\nimport type { YAxis } from './component/YAxis'\n\nimport type { IndicatorFilter, Indicator, IndicatorCreate } from './component/Indicator'\nimport type { OverlayFilter, Overlay, OverlayCreate } from './component/Overlay'\n\nimport { getIndicatorClass } from './extension/indicator/index'\n\nimport Event from './Event'\nimport type DeepPartial from './common/DeepPartial'\nimport type { Styles } from './common/Styles'\nimport type BarSpace from './common/BarSpace'\n\nexport enum DomPosition {\n Root = 'root',\n Main = 'main',\n YAxis = 'yAxis'\n}\n\nexport interface ConvertFilter {\n paneId?: string\n absolute?: boolean\n}\n\nexport interface DomFilter {\n paneId: string\n position?: DomPosition\n}\n\nexport interface Chart extends Store {\n id: string\n getDom: (paneId?: string, position?: DomPosition) => Nullable\n getSize: (paneId?: string, position?: DomPosition) => Nullable\n applyNewData: (dataList: KLineData[], more?: boolean | Partial) => void\n updateData: (data: KLineData) => void\n createIndicator: (value: string | IndicatorCreate, isStack?: boolean, paneOptions?: PaneOptions) => Nullable\n getIndicators: (filter?: IndicatorFilter) => Map\n createOverlay: (value: string | OverlayCreate | Array) => Nullable | Array>\n getOverlays: (filter?: OverlayFilter) => Map\n setPaneOptions: (options: PaneOptions) => void\n getPaneOptions: (id?: string) => Nullable | PaneOptions[]\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>, filter?: ConvertFilter) => Partial | Array>\n convertFromPixel: (coordinates: Array>, filter?: ConvertFilter) => Partial | Array>\n executeAction: (type: ActionType, data: Crosshair) => void\n subscribeAction: (type: ActionType, callback: ActionCallback) => void\n unsubscribeAction: (type: ActionType, callback?: ActionCallback) => void\n getConvertPictureUrl: (includeOverlay?: boolean, type?: 'png' | 'jpeg' | 'bmp', backgroundColor?: string) => string\n resize: () => void\n}\n\nexport default class ChartImp implements Chart {\n id: string\n\n private _container: HTMLElement\n private _chartContainer: HTMLElement\n private readonly _chartBounding = createDefaultBounding()\n private readonly _chartEvent: Event\n private readonly _chartStore: ChartStore\n private _drawPanes: DrawPane[] = []\n private _candlePane: CandlePane\n private _xAxisPane: XAxisPane\n private readonly _separatorPanes = new Map()\n\n private _layoutOptions = {\n measureHeight: true,\n measureWidth: true,\n update: true,\n buildYAxisTick: false,\n forceBuildYAxisTick: false\n }\n\n private _layoutPending = false\n\n constructor (container: HTMLElement, options?: Options) {\n this._initContainer(container)\n this._chartEvent = new Event(this._chartContainer, this)\n this._chartStore = new ChartStore(this, options)\n this._initPanes(options)\n this._layout()\n }\n\n private _initContainer (container: HTMLElement): void {\n this._container = container\n this._chartContainer = createDom('div', {\n position: 'relative',\n width: '100%',\n height: '100%',\n outline: 'none',\n borderStyle: 'none',\n cursor: 'crosshair',\n boxSizing: 'border-box',\n userSelect: 'none',\n webkitUserSelect: 'none',\n overflow: 'hidden',\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- ignore\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 this._cacheChartBounding()\n }\n\n _cacheChartBounding (): void {\n this._chartBounding.width = Math.floor(this._chartContainer.clientWidth)\n this._chartBounding.height = Math.floor(this._chartContainer.clientHeight)\n }\n\n private _initPanes (options?: Options): void {\n const layout = options?.layout ?? [{ type: LayoutChildType.Candle }]\n\n const createCandlePane: ((child: LayoutChild) => void) = child => {\n if (!isValid(this._candlePane)) {\n const paneOptions = child.options ?? {}\n merge(paneOptions, { id: PaneIdConstants.CANDLE })\n this._candlePane = this._createPane(CandlePane, PaneIdConstants.CANDLE, paneOptions)\n const content = child.content ?? []\n content.forEach(v => {\n this.createIndicator(v, true, paneOptions)\n })\n }\n }\n\n const createXAxisPane: ((ops?: PaneOptions) => void) = (ops?: PaneOptions) => {\n if (!isValid(this._xAxisPane)) {\n const pane = this._createPane(XAxisPane, PaneIdConstants.X_AXIS, ops ?? {})\n this._xAxisPane = pane\n }\n }\n\n layout.forEach(child => {\n switch (child.type) {\n case LayoutChildType.Candle: {\n createCandlePane(child)\n break\n }\n case LayoutChildType.Indicator: {\n const content = child.content ?? []\n if (content.length > 0) {\n let paneId: Nullable = null\n content.forEach(v => {\n if (isValid(paneId)) {\n this.createIndicator(v, true, { id: paneId })\n } else {\n paneId = this.createIndicator(v, true, child.options)\n }\n })\n }\n break\n }\n case LayoutChildType.XAxis: {\n createXAxisPane(child.options)\n break\n }\n }\n })\n createCandlePane({ type: LayoutChildType.Candle })\n createXAxisPane({ order: Number.MAX_SAFE_INTEGER })\n }\n\n private _createPane

(\n DrawPaneClass: new (rootContainer: HTMLElement, afterElement: Nullable, chart: Chart, id: string, options: Omit) => P,\n id: string,\n options?: PaneOptions\n ): P {\n let index: Nullable = null\n let newPane: Nullable

= null\n const order = options?.order ?? 0\n const paneCount = this._drawPanes.length\n if (paneCount > 0) {\n if (order < this._drawPanes[0].getOptions().order) {\n newPane = new DrawPaneClass(this._chartContainer, this._drawPanes[0].getContainer(), this, id, options ?? {})\n index = 0\n }\n if (!isValid(newPane)) {\n for (let i = 1; i < this._drawPanes.length; i++) {\n const prevPane = this._drawPanes[i - 1]\n const currentPane = this._drawPanes[i]\n if (order >= prevPane.getOptions().order && order < currentPane.getOptions().order) {\n let afterElement: Nullable = null\n if (currentPane.getId() !== PaneIdConstants.X_AXIS) {\n afterElement = this._separatorPanes.get(currentPane)?.getContainer() ?? null\n } else {\n afterElement = currentPane.getContainer()\n }\n newPane = new DrawPaneClass(this._chartContainer, afterElement, this, id, options ?? {})\n index = i\n break\n }\n }\n }\n }\n if (!isValid(newPane)) {\n newPane = new DrawPaneClass(this._chartContainer, null, this, id, options ?? {})\n }\n let newIndex = 0\n if (isNumber(index)) {\n this._drawPanes.splice(index, 0, newPane)\n newIndex = index\n } else {\n this._drawPanes.push(newPane)\n newIndex = this._drawPanes.length - 1\n }\n if (newPane.getId() !== PaneIdConstants.X_AXIS) {\n let nextPane = this._drawPanes[newIndex + 1]\n if (isValid(nextPane)) {\n if (nextPane.getId() === PaneIdConstants.X_AXIS) {\n nextPane = this._drawPanes[newIndex + 2]\n }\n }\n if (isValid(nextPane)) {\n let separatorPane = this._separatorPanes.get(nextPane)\n if (isValid(separatorPane)) {\n separatorPane.setTopPane(newPane)\n } else {\n separatorPane = new SeparatorPane(this._chartContainer, nextPane.getContainer(), this, '', newPane, nextPane)\n this._separatorPanes.set(nextPane, separatorPane)\n }\n }\n let prevPane = this._drawPanes[newIndex - 1]\n if (isValid(prevPane)) {\n if (prevPane.getId() === PaneIdConstants.X_AXIS) {\n prevPane = this._drawPanes[newIndex - 2]\n }\n }\n if (isValid(prevPane)) {\n const separatorPane = new SeparatorPane(this._chartContainer, newPane.getContainer(), this, '', prevPane, newPane)\n this._separatorPanes.set(newPane, separatorPane)\n }\n }\n return newPane\n }\n\n _recalculatePaneHeight (currentPane: DrawPane, currentHeight: number, changeHeight: number): boolean {\n if (changeHeight === 0) {\n return false\n }\n const normalStatePanes = this._drawPanes.filter(pane => {\n const paneId = pane.getId()\n return (\n pane.getOptions().state === PaneState.Normal &&\n paneId !== currentPane.getId() &&\n paneId !== PaneIdConstants.X_AXIS\n )\n })\n\n const count = normalStatePanes.length\n if (count === 0) {\n return false\n }\n if (\n currentPane.getId() !== PaneIdConstants.CANDLE &&\n isValid(this._candlePane) &&\n this._candlePane.getOptions().state === PaneState.Normal\n ) {\n const height = this._candlePane.getBounding().height\n if (height > 0) {\n const minHeight = this._candlePane.getOptions().minHeight\n let newHeight = height + changeHeight\n if (newHeight < minHeight) {\n newHeight = minHeight\n currentHeight -= (height + changeHeight - newHeight)\n }\n this._candlePane.setBounding({ height: newHeight })\n }\n } else {\n let remainingHeight = changeHeight\n const normalStatePaneChangeHeight = Math.floor(changeHeight / count)\n normalStatePanes.forEach((pane, index) => {\n const height = pane.getBounding().height\n let newHeight = 0\n if (index === count - 1) {\n newHeight = height + remainingHeight\n } else {\n newHeight = height + normalStatePaneChangeHeight\n }\n if (newHeight < pane.getOptions().minHeight) {\n newHeight = pane.getOptions().minHeight\n }\n pane.setBounding({ height: newHeight })\n remainingHeight -= (newHeight - height)\n })\n if (Math.abs(remainingHeight) > 0) {\n currentHeight -= remainingHeight\n }\n }\n currentPane.setBounding({ height: currentHeight })\n return true\n }\n\n getDrawPaneById (paneId: string): Nullable {\n if (paneId === PaneIdConstants.CANDLE) {\n return this._candlePane\n }\n if (paneId === PaneIdConstants.X_AXIS) {\n return this._xAxisPane\n }\n const pane = this._drawPanes.find(p => p.getId() === paneId)\n return pane ?? null\n }\n\n getContainer (): HTMLElement { return this._container }\n\n getChartStore (): ChartStore { return this._chartStore }\n\n getXAxisPane (): XAxisPane { return this._xAxisPane }\n\n getDrawPanes (): DrawPane[] { return this._drawPanes }\n\n getSeparatorPanes (): Map { return this._separatorPanes }\n\n layout (options: {\n measureHeight?: boolean\n measureWidth?: boolean\n update?: boolean\n buildYAxisTick?: boolean\n forceBuildYAxisTick?: boolean\n }): void {\n if (options.measureHeight ?? false) {\n this._layoutOptions.measureHeight = options.measureHeight!\n }\n if (options.measureWidth ?? false) {\n this._layoutOptions.measureWidth = options.measureWidth!\n }\n if (options.update ?? false) {\n this._layoutOptions.update = options.update!\n }\n if (options.buildYAxisTick ?? false) {\n this._layoutOptions.buildYAxisTick = options.buildYAxisTick!\n }\n if (options.buildYAxisTick ?? false) {\n this._layoutOptions.forceBuildYAxisTick = options.forceBuildYAxisTick!\n }\n if (!this._layoutPending) {\n this._layoutPending = true\n Promise.resolve().then(_ => {\n this._layout()\n this._layoutPending = false\n }).catch((_: unknown) => {\n // to do it\n })\n }\n }\n\n private _layout (): void {\n const { measureHeight, measureWidth, update, buildYAxisTick, forceBuildYAxisTick } = this._layoutOptions\n if (measureHeight) {\n const totalHeight = this._chartBounding.height\n const separatorSize = this.getStyles().separator.size\n const xAxisHeight = this._xAxisPane.getAxisComponent().getAutoSize()\n let remainingHeight = totalHeight - xAxisHeight\n if (remainingHeight < 0) {\n remainingHeight = 0\n }\n this._drawPanes.forEach(pane => {\n const paneId = pane.getId()\n if (isValid(this._separatorPanes.get(pane))) {\n remainingHeight -= separatorSize\n }\n if (paneId !== PaneIdConstants.X_AXIS && paneId !== PaneIdConstants.CANDLE && pane.getVisible()) {\n let paneHeight = pane.getBounding().height\n if (paneHeight > remainingHeight) {\n paneHeight = remainingHeight\n remainingHeight = 0\n } else {\n remainingHeight -= paneHeight\n }\n pane.setBounding({ height: paneHeight })\n }\n })\n\n this._candlePane.setBounding({ height: Math.max(remainingHeight, 0) })\n this._xAxisPane.setBounding({ height: xAxisHeight })\n\n let top = 0\n this._drawPanes.forEach(pane => {\n const separatorPane = this._separatorPanes.get(pane)\n if (isValid(separatorPane)) {\n separatorPane.setBounding({ height: separatorSize, top })\n top += separatorSize\n }\n pane.setBounding({ top })\n top += pane.getBounding().height\n })\n }\n let forceMeasureWidth = measureWidth\n if (buildYAxisTick || forceBuildYAxisTick) {\n this._drawPanes.forEach(pane => {\n const success = (pane.getAxisComponent() as AxisImp).buildTicks(forceBuildYAxisTick)\n forceMeasureWidth ||= success\n })\n }\n if (forceMeasureWidth) {\n const totalWidth = this._chartBounding.width\n const styles = this.getStyles()\n\n let leftYAxisWidth = 0\n let leftYAxisOutside = true\n let rightYAxisWidth = 0\n let rightYAxisOutside = true\n\n this._drawPanes.forEach(pane => {\n if (pane.getId() !== PaneIdConstants.X_AXIS) {\n const yAxis = pane.getAxisComponent() as YAxis\n const inside = yAxis.inside\n const yAxisWidth = yAxis.getAutoSize()\n if (yAxis.position === AxisPosition.Left) {\n leftYAxisWidth = Math.max(leftYAxisWidth, yAxisWidth)\n if (inside) {\n leftYAxisOutside = false\n }\n } else {\n rightYAxisWidth = Math.max(rightYAxisWidth, yAxisWidth)\n if (inside) {\n rightYAxisOutside = false\n }\n }\n }\n })\n\n let mainWidth = totalWidth\n let mainLeft = 0\n let mainRight = 0\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- ignore\n if (leftYAxisOutside) {\n mainWidth -= leftYAxisWidth\n mainLeft = leftYAxisWidth\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- ignore\n if (rightYAxisOutside) {\n mainWidth -= rightYAxisWidth\n mainRight = rightYAxisWidth\n }\n\n this._chartStore.setTotalBarSpace(mainWidth)\n\n const paneBounding = { width: totalWidth }\n const mainBounding = { width: mainWidth, left: mainLeft, right: mainRight }\n const leftYAxisBounding = { width: leftYAxisWidth }\n const rightYAxisBounding = { width: rightYAxisWidth }\n const separatorFill = styles.separator.fill\n let separatorBounding: Partial = {}\n if (!separatorFill) {\n separatorBounding = mainBounding\n } else {\n separatorBounding = paneBounding\n }\n this._drawPanes.forEach((pane) => {\n this._separatorPanes.get(pane)?.setBounding(separatorBounding)\n pane.setBounding(paneBounding, mainBounding, leftYAxisBounding, rightYAxisBounding)\n })\n }\n if (update) {\n (this._xAxisPane.getAxisComponent() as unknown as AxisImp).buildTicks(true)\n this.updatePane(UpdateLevel.All)\n }\n this._layoutOptions = {\n measureHeight: false,\n measureWidth: false,\n update: false,\n buildYAxisTick: false,\n forceBuildYAxisTick: false\n }\n }\n\n updatePane (level: UpdateLevel, paneId?: string): void {\n if (isValid(paneId)) {\n const pane = this.getDrawPaneById(paneId)\n pane?.update(level)\n } else {\n this._drawPanes.forEach(pane => {\n pane.update(level)\n this._separatorPanes.get(pane)?.update(level)\n })\n }\n }\n\n crosshairChange (crosshair: Crosshair): void {\n if (this._chartStore.hasAction(ActionType.OnCrosshairChange)) {\n const indicatorData = {}\n this._drawPanes.forEach(pane => {\n const id = pane.getId()\n const paneIndicatorData = {}\n const indicators = this._chartStore.getIndicatorsByPaneId(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 (isString(crosshair.paneId)) {\n this._chartStore.executeAction(ActionType.OnCrosshairChange, {\n ...crosshair,\n indicatorData\n })\n }\n }\n }\n\n getDom (paneId?: string, position?: DomPosition): Nullable {\n if (isValid(paneId)) {\n const pane = this.getDrawPaneById(paneId)\n if (isValid(pane)) {\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 (isValid(paneId)) {\n const pane = this.getDrawPaneById(paneId)\n if (isValid(pane)) {\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 this._chartBounding\n }\n return null\n }\n\n setPrecision (precision: Partial): void {\n this._chartStore.setPrecision(precision)\n }\n\n getPrecision (): Precision {\n return this._chartStore.getPrecision()\n }\n\n setStyles (value: string | DeepPartial): void {\n this._setOptions(() => {\n this._chartStore.setStyles(value)\n })\n }\n\n getStyles (): Styles { return this._chartStore.getStyles() }\n\n setCustomApi (api: Partial): void {\n this._setOptions(() => {\n this._chartStore.setCustomApi(api)\n })\n }\n\n getCustomApi (): CustomApi { return this._chartStore.getCustomApi() }\n\n setLocale (locale: string): void {\n this._setOptions(() => {\n this._chartStore.setLocale(locale)\n })\n }\n\n getLocale (): string { return this._chartStore.getLocale() }\n\n setTimezone (timezone: string): void {\n this._setOptions(() => {\n this._chartStore.setTimezone(timezone)\n })\n }\n\n getTimezone (): string { return this._chartStore.getTimezone() }\n\n setThousandsSeparator (thousandsSeparator: Partial): void {\n this._setOptions(() => {\n this._chartStore.setThousandsSeparator(thousandsSeparator)\n })\n }\n\n getThousandsSeparator (): ThousandsSeparator { return this._chartStore.getThousandsSeparator() }\n\n setDecimalFold (decimalFold: Partial): void {\n this._setOptions(() => {\n this._chartStore.setDecimalFold(decimalFold)\n })\n }\n\n getDecimalFold (): DecimalFold { return this._chartStore.getDecimalFold() }\n\n private _setOptions (fuc: () => void): void {\n fuc()\n this.layout({\n measureHeight: true,\n measureWidth: true,\n update: true,\n buildYAxisTick: true,\n forceBuildYAxisTick: true\n })\n }\n\n setOffsetRightDistance (distance: number): void {\n this._chartStore.setOffsetRightDistance(distance, true)\n }\n\n getOffsetRightDistance (): number {\n return this._chartStore.getOffsetRightDistance()\n }\n\n setMaxOffsetLeftDistance (distance: number): void {\n if (distance < 0) {\n logWarn('setMaxOffsetLeftDistance', 'distance', 'distance must greater than zero!!!')\n return\n }\n this._chartStore.setMaxOffsetLeftDistance(distance)\n }\n\n setMaxOffsetRightDistance (distance: number): void {\n if (distance < 0) {\n logWarn('setMaxOffsetRightDistance', 'distance', 'distance must greater than zero!!!')\n return\n }\n this._chartStore.setMaxOffsetRightDistance(distance)\n }\n\n setLeftMinVisibleBarCount (barCount: number): void {\n if (barCount < 0) {\n logWarn('setLeftMinVisibleBarCount', 'barCount', 'barCount must greater than zero!!!')\n return\n }\n this._chartStore.setLeftMinVisibleBarCount(Math.ceil(barCount))\n }\n\n setRightMinVisibleBarCount (barCount: number): void {\n if (barCount < 0) {\n logWarn('setRightMinVisibleBarCount', 'barCount', 'barCount must greater than zero!!!')\n return\n }\n this._chartStore.setRightMinVisibleBarCount(Math.ceil(barCount))\n }\n\n setBarSpace (space: number): void {\n this._chartStore.setBarSpace(space)\n }\n\n getBarSpace (): BarSpace {\n return this._chartStore.getBarSpace()\n }\n\n getVisibleRange (): VisibleRange {\n return this._chartStore.getVisibleRange()\n }\n\n clearData (): void {\n this._chartStore.clearData()\n }\n\n getDataList (): KLineData[] {\n return this._chartStore.getDataList()\n }\n\n applyNewData (data: KLineData[], more?: boolean | Partial): void {\n this._drawPanes.forEach(pane => {\n (pane.getAxisComponent() as AxisImp).setAutoCalcTickFlag(true)\n })\n let loadDataMore = { forward: false, backward: false }\n if (isBoolean(more)) {\n loadDataMore.forward = more\n loadDataMore.backward = more\n } else {\n loadDataMore = { ...loadDataMore, ...more }\n }\n this._chartStore.addData(data, LoadDataType.Init, loadDataMore)\n }\n\n updateData (data: KLineData): void {\n this._chartStore.addData(data, LoadDataType.Update)\n }\n\n setLoadMoreDataCallback (cb: LoadDataCallback): void {\n this._chartStore.setLoadMoreDataCallback(cb)\n }\n\n createIndicator (value: string | IndicatorCreate, isStack?: boolean, paneOptions?: Nullable): 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 const options = { ...paneOptions }\n if (!isString(options.id)) {\n options.id = createId(PaneIdConstants.INDICATOR)\n }\n\n let pane = this.getDrawPaneById(options.id)\n if (!isValid(pane)) {\n pane = this._createPane(IndicatorPane, options.id, options)\n options.height ??= PANE_DEFAULT_HEIGHT\n }\n this.setPaneOptions(options)\n const result = this._chartStore.addIndicator(indicator, options.id, isStack ?? false)\n if (result) {\n this.layout({\n measureHeight: true,\n measureWidth: true,\n update: true,\n buildYAxisTick: true,\n forceBuildYAxisTick: true\n })\n }\n\n return options.id\n }\n\n overrideIndicator (override: IndicatorCreate, paneId?: string): boolean {\n return this._chartStore.overrideIndicator(override, paneId)\n }\n\n getIndicators (filter?: IndicatorFilter): Map {\n return this._chartStore.getIndicatorsByFilter(filter ?? {})\n }\n\n removeIndicator (filter?: IndicatorFilter): boolean {\n const removed = this._chartStore.removeIndicator(filter ?? {})\n if (removed) {\n let shouldMeasureHeight = false\n const paneIds: string[] = []\n this._drawPanes.forEach(pane => {\n const paneId = pane.getId()\n if (paneId !== PaneIdConstants.CANDLE && paneId !== PaneIdConstants.X_AXIS) {\n paneIds.push(paneId)\n }\n })\n\n paneIds.forEach(paneId => {\n if (!this._chartStore.hasIndicators(paneId)) {\n const index = this._drawPanes.findIndex(pane => pane.getId() === paneId)\n const pane = this._drawPanes[index]\n if (isValid(pane)) {\n shouldMeasureHeight = true\n const separatorPane = this._separatorPanes.get(pane)\n if (isValid(separatorPane)) {\n const topPane = separatorPane.getTopPane()\n for (const item of this._separatorPanes) {\n if (item[1].getTopPane().getId() === paneId) {\n item[1].setTopPane(topPane)\n break\n }\n }\n separatorPane.destroy()\n this._separatorPanes.delete(pane)\n }\n this._recalculatePaneHeight(pane, 0, pane.getBounding().height)\n this._drawPanes.splice(index, 1)\n pane.destroy()\n\n let firstPane = this._drawPanes[0]\n if (isValid(firstPane)) {\n if (firstPane.getId() === PaneIdConstants.X_AXIS) {\n firstPane = this._drawPanes[1]\n }\n }\n this._separatorPanes.get(firstPane)?.destroy()\n this._separatorPanes.delete(firstPane)\n }\n }\n })\n if (this._drawPanes.length === 2) {\n this._candlePane.setVisible(true)\n this._candlePane.setBounding({ height: this._chartBounding.height - this._xAxisPane.getBounding().height })\n }\n this.layout({\n measureHeight: shouldMeasureHeight,\n measureWidth: true,\n update: true,\n buildYAxisTick: true,\n forceBuildYAxisTick: true\n })\n }\n return removed\n }\n\n createOverlay (value: string | OverlayCreate | Array): Nullable | Array> {\n const overlays: OverlayCreate[] = []\n const appointPaneFlags: boolean[] = []\n\n const build: ((overlay: OverlayCreate) => void) = overlay => {\n if (!isValid(overlay.paneId) || this.getDrawPaneById(overlay.paneId) === null) {\n overlay.paneId = PaneIdConstants.CANDLE\n appointPaneFlags.push(false)\n } else {\n appointPaneFlags.push(true)\n }\n overlays.push(overlay)\n }\n\n if (isString(value)) {\n build({ name: value })\n } else if (isArray>(value)) {\n (value as Array).forEach(v => {\n let overlay: Nullable = null\n if (isString(v)) {\n overlay = { name: v }\n } else {\n overlay = v\n }\n build(overlay)\n })\n } else {\n build(value as OverlayCreate)\n }\n const ids = this._chartStore.addOverlays(overlays, appointPaneFlags)\n if (isArray(value)) {\n return ids\n }\n return ids[0]\n }\n\n getOverlays (filter?: OverlayFilter): Map {\n return this._chartStore.getOverlaysByFilter(filter ?? {})\n }\n\n overrideOverlay (override: Partial): boolean {\n return this._chartStore.overrideOverlay(override)\n }\n\n removeOverlay (filter?: OverlayFilter): boolean {\n return this._chartStore.removeOverlay(filter ?? {})\n }\n\n setPaneOptions (options: PaneOptions): void {\n let shouldMeasureHeight = false\n let shouldLayout = false\n const validId = isValid(options.id)\n for (const currentPane of this._drawPanes) {\n const currentPaneId = currentPane.getId()\n if ((validId && options.id === currentPaneId) || !validId) {\n if (currentPaneId !== PaneIdConstants.X_AXIS) {\n if (isNumber(options.height) && options.height > 0) {\n const minHeight = Math.max(options.minHeight ?? currentPane.getOptions().minHeight, 0)\n const height = Math.max(minHeight, options.height)\n shouldLayout = true\n shouldMeasureHeight = true\n currentPane.setOriginalBounding({ height })\n this._recalculatePaneHeight(currentPane, height, -height)\n }\n if (\n isValid(options.state) &&\n currentPane.getOptions().state !== options.state\n ) {\n shouldMeasureHeight = true\n shouldLayout = true\n const state = options.state\n switch (state) {\n case PaneState.Maximize: {\n const maximizePane = this._drawPanes.find(pane => {\n const paneId = pane.getId()\n return pane.getOptions().state === PaneState.Maximize && paneId !== PaneIdConstants.X_AXIS\n })\n if (!isValid(maximizePane)) {\n if (currentPane.getOptions().state === PaneState.Normal) {\n currentPane.setOriginalBounding({ height: currentPane.getBounding().height })\n }\n currentPane.setOptions({ state })\n const totalHeight = this._chartBounding.height\n currentPane.setBounding({ height: totalHeight - this._xAxisPane.getBounding().height })\n this._drawPanes.forEach(pane => {\n if (pane.getId() !== PaneIdConstants.X_AXIS && pane.getId() !== currentPaneId) {\n pane.setBounding({ height: pane.getOriginalBounding().height })\n pane.setVisible(false)\n this._separatorPanes.get(pane)?.setVisible(false)\n }\n })\n }\n break\n }\n case PaneState.Minimize: {\n const height = currentPane.getBounding().height\n const currentState = currentPane.getOptions().state\n let changeHeight = height - PANE_MIN_HEIGHT\n if (currentState === PaneState.Maximize) {\n changeHeight = currentPane.getOriginalBounding().height - PANE_MIN_HEIGHT\n }\n if (\n this._recalculatePaneHeight(\n currentPane,\n PANE_MIN_HEIGHT,\n changeHeight\n )\n ) {\n if (currentState === PaneState.Normal) {\n currentPane.setOriginalBounding({ height })\n }\n currentPane.setOptions({ state })\n }\n this._drawPanes.forEach(pane => {\n if (pane.getId() !== PaneIdConstants.X_AXIS) {\n pane.setVisible(true)\n this._separatorPanes.get(pane)?.setVisible(true)\n }\n })\n break\n }\n default: {\n const height = currentPane.getOriginalBounding().height\n if (\n this._recalculatePaneHeight(\n currentPane,\n height,\n currentPane.getBounding().height - height\n )\n ) {\n currentPane.setOptions({ state })\n }\n this._drawPanes.forEach(pane => {\n if (pane.getId() !== PaneIdConstants.X_AXIS) {\n pane.setVisible(true)\n this._separatorPanes.get(pane)?.setVisible(true)\n }\n })\n break\n }\n }\n }\n }\n if (isValid(options.axis)) {\n shouldLayout = true\n }\n const ops = { ...options }\n delete ops.state\n currentPane.setOptions(ops)\n if (currentPaneId === options.id) {\n break\n }\n }\n }\n if (shouldLayout) {\n this.layout({\n measureHeight: shouldMeasureHeight,\n measureWidth: true,\n update: true,\n buildYAxisTick: true,\n forceBuildYAxisTick: true\n })\n }\n }\n\n getPaneOptions (id?: string): Nullable | PaneOptions[] {\n if (isValid(id)) {\n const pane = this.getDrawPaneById(id)\n return pane?.getOptions() ?? null\n }\n return this._drawPanes.map(pane => pane.getOptions())\n }\n\n setZoomEnabled (enabled: boolean): void {\n this._chartStore.setZoomEnabled(enabled)\n }\n\n isZoomEnabled (): boolean {\n return this._chartStore.isZoomEnabled()\n }\n\n setScrollEnabled (enabled: boolean): void {\n this._chartStore.setScrollEnabled(enabled)\n }\n\n isScrollEnabled (): boolean {\n return this._chartStore.isScrollEnabled()\n }\n\n scrollByDistance (distance: number, animationDuration?: number): void {\n const duration = isNumber(animationDuration) && animationDuration > 0 ? animationDuration : 0\n this._chartStore.startScroll()\n if (duration > 0) {\n const animation = new Animation({ duration })\n animation.doFrame(frameTime => {\n const progressDistance = distance * (frameTime / duration)\n this._chartStore.scroll(progressDistance)\n })\n animation.start()\n } else {\n this._chartStore.scroll(distance)\n }\n }\n\n scrollToRealTime (animationDuration?: number): void {\n const { bar: barSpace } = this._chartStore.getBarSpace()\n const difBarCount = this._chartStore.getLastBarRightSideDiffBarCount() - this._chartStore.getInitialOffsetRightDistance() / barSpace\n const distance = difBarCount * barSpace\n this.scrollByDistance(distance, animationDuration)\n }\n\n scrollToDataIndex (dataIndex: number, animationDuration?: number): void {\n const distance = (\n this._chartStore.getLastBarRightSideDiffBarCount() + (this.getDataList().length - 1 - dataIndex)\n ) * this._chartStore.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 = isNumber(animationDuration) && animationDuration > 0 ? animationDuration : 0\n const { bar: barSpace } = this._chartStore.getBarSpace()\n const scaleBarSpace = barSpace * scale\n const difSpace = scaleBarSpace - barSpace\n if (duration > 0) {\n let prevProgressBarSpace = 0\n const animation = new Animation({ duration })\n animation.doFrame(frameTime => {\n const progressBarSpace = difSpace * (frameTime / duration)\n const scale = (progressBarSpace - prevProgressBarSpace) / this._chartStore.getBarSpace().bar * SCALE_MULTIPLIER\n this._chartStore.zoom(scale, coordinate)\n prevProgressBarSpace = progressBarSpace\n })\n animation.start()\n } else {\n this._chartStore.zoom(difSpace / barSpace * SCALE_MULTIPLIER, coordinate)\n }\n }\n\n zoomAtDataIndex (scale: number, dataIndex: number, animationDuration?: number): void {\n const x = this._chartStore.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>, filter?: ConvertFilter): Partial | Array> {\n const { paneId = PaneIdConstants.CANDLE, absolute = false } = filter ?? {}\n let coordinates: Array> = []\n if (paneId !== PaneIdConstants.X_AXIS) {\n const pane = this.getDrawPaneById(paneId)\n if (pane !== null) {\n const bounding = pane.getBounding()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- ignore\n // @ts-expect-error\n const ps: 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 (isNumber(point.timestamp)) {\n dataIndex = this._chartStore.timestampToDataIndex(point.timestamp)\n }\n if (isNumber(dataIndex)) {\n coordinate.x = xAxis.convertToPixel(dataIndex)\n }\n if (isNumber(point.value)) {\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>, filter?: ConvertFilter): Partial | Array> {\n const { paneId = PaneIdConstants.CANDLE, absolute = false } = filter ?? {}\n let points: Array> = []\n if (paneId !== PaneIdConstants.X_AXIS) {\n const pane = this.getDrawPaneById(paneId)\n if (pane !== null) {\n const bounding = pane.getBounding()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- ignore\n // @ts-expect-error\n const cs: 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 (isNumber(coordinate.x)) {\n const dataIndex = xAxis.convertFromPixel(coordinate.x)\n point.dataIndex = dataIndex\n point.timestamp = this._chartStore.dataIndexToTimestamp(dataIndex) ?? undefined\n }\n if (isNumber(coordinate.y)) {\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: Crosshair): void {\n switch (type) {\n case ActionType.OnCrosshairChange: {\n const crosshair: Crosshair = { ...data }\n crosshair.paneId ??= PaneIdConstants.CANDLE\n this._chartStore.setCrosshair(crosshair)\n break\n }\n default: { break }\n }\n }\n\n subscribeAction (type: ActionType, callback: ActionCallback): void {\n this._chartStore.subscribeAction(type, callback)\n }\n\n unsubscribeAction (type: ActionType, callback?: ActionCallback): void {\n this._chartStore.unsubscribeAction(type, callback)\n }\n\n getConvertPictureUrl (includeOverlay?: boolean, type?: 'png' | 'jpeg' | 'bmp', backgroundColor?: string): string {\n const { width, height } = this._chartBounding\n const canvas = createDom('canvas', {\n width: `${width}px`,\n height: `${height}px`,\n boxSizing: 'border-box'\n })\n const ctx = canvas.getContext('2d')!\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._drawPanes.forEach(pane => {\n const separatorPane = this._separatorPanes.get(pane)\n if (isValid(separatorPane)) {\n const separatorBounding = separatorPane.getBounding()\n ctx.drawImage(\n separatorPane.getImage(overlayFlag),\n separatorBounding.left, separatorBounding.top, separatorBounding.width, separatorBounding.height\n )\n }\n\n const bounding = pane.getBounding()\n ctx.drawImage(\n pane.getImage(overlayFlag),\n 0, bounding.top, width, bounding.height\n )\n })\n return canvas.toDataURL(`image/${type ?? 'jpeg'}`)\n }\n\n resize (): void {\n this._cacheChartBounding()\n this.layout({\n measureHeight: true,\n measureWidth: true,\n update: true,\n buildYAxisTick: true,\n forceBuildYAxisTick: true\n\n })\n }\n\n destroy (): void {\n this._chartEvent.destroy()\n this._drawPanes.forEach(pane => {\n pane.destroy()\n this._separatorPanes.get(pane)?.destroy()\n })\n this._drawPanes = []\n this._separatorPanes.clear()\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 LineType, PolygonType, TooltipShowRule, TooltipShowType, TooltipIconPosition,\n CandleType, CandleTooltipRectPosition\n} from './common/Styles'\nimport type 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 {\n formatValue,\n formatPrecision,\n formatBigNumber,\n formatTimestampToString,\n formatThousands,\n formatFoldDecimal\n} from './common/utils/format'\nimport { calcTextWidth } from './common/utils/canvas'\nimport { ActionType } from './common/Action'\nimport { IndicatorSeries } from './component/Indicator'\nimport { OverlayMode } from './component/Overlay'\n\nimport { FormatDateType, type Options } from './Options'\nimport ChartImp, { type Chart, DomPosition } from './Chart'\n\nimport { checkCoordinateOnArc } from './extension/figure/arc'\nimport { checkCoordinateOnCircle } from './extension/figure/circle'\nimport {\n checkCoordinateOnLine,\n getLinearYFromSlopeIntercept,\n getLinearSlopeIntercept,\n getLinearYFromCoordinates\n} from './extension/figure/line'\nimport { checkCoordinateOnPolygon } from './extension/figure/polygon'\nimport { checkCoordinateOnRect } from './extension/figure/rect'\nimport { checkCoordinateOnText } 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, getOverlayClass, getSupportedOverlays } from './extension/overlay/index'\nimport { registerStyles } from './extension/styles/index'\nimport { registerXAxis } from './extension/x-axis'\nimport { registerYAxis } from './extension/y-axis'\n\nconst charts = new Map()\nlet chartBaseId = 1\n\n/**\n * Chart version\n * @return {string}\n */\nfunction version (): string {\n return '__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): Nullable {\n logTag()\n let dom: Nullable = null\n if (isString(ds)) {\n dom = document.getElementById(ds)\n } else {\n dom = ds\n }\n if (dom === null) {\n logError('', '', 'The chart cannot be initialized correctly. Please check the parameters. The chart container cannot be null and child elements need to be added!!!')\n return null\n }\n let chart = charts.get(dom.id)\n if (isValid(chart)) {\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 chart.id = id\n dom.setAttribute('k-line-chart-id', id)\n charts.set(id, chart)\n return chart\n}\n\n/**\n * Destroy chart instance\n * @param dcs\n */\nfunction dispose (dcs: HTMLElement | Chart | string): void {\n let id: Nullable = null\n if (dcs instanceof ChartImp) {\n id = dcs.id\n } else {\n let dom: Nullable = null\n if (isString(dcs)) {\n dom = document.getElementById(dcs)\n } else {\n dom = dcs as HTMLElement\n }\n id = dom?.getAttribute('k-line-chart-id') ?? null\n }\n if (id !== null) {\n charts.get(id)?.destroy()\n charts.delete(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: formatTimestampToString,\n formatThousands,\n formatFoldDecimal,\n calcTextWidth,\n getLinearSlopeIntercept,\n getLinearYFromSlopeIntercept,\n getLinearYFromCoordinates,\n checkCoordinateOnArc,\n checkCoordinateOnCircle,\n checkCoordinateOnLine,\n checkCoordinateOnPolygon,\n checkCoordinateOnRect,\n checkCoordinateOnText\n}\n\nexport {\n version, init, dispose,\n registerFigure, getSupportedFigures, getFigureClass,\n registerIndicator, getSupportedIndicators,\n registerOverlay, getSupportedOverlays, getOverlayClass,\n registerLocale, getSupportedLocales,\n registerStyles,\n registerXAxis, registerYAxis,\n utils,\n LineType, PolygonType, TooltipShowRule, TooltipShowType, TooltipIconPosition, CandleTooltipRectPosition,\n CandleType, FormatDateType,\n DomPosition, ActionType, IndicatorSeries, OverlayMode\n}\n"],"names":["LineType","PolygonType","TooltipShowRule","TooltipShowType","TooltipIconPosition","CandleTooltipRectPosition","CandleType","ActionType","IndicatorSeries","OverlayMode","FormatDateType","extensions","getExtensionStyles","CandleLastPriceLineView","normal","DomPosition","ChartStore"],"mappings":"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","x_google_ignoreList":[0]}