UNPKG

1.11 MBSource Map (JSON)View Raw
1{"version":3,"file":"klinecharts.js","sources":["../../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/utils/id.ts","../../src/common/utils/dom.ts","../../src/common/utils/number.ts","../../src/common/LoadDataCallback.ts","../../src/common/VisibleRange.ts","../../src/store/TimeScaleStore.ts","../../src/extension/indicator/averagePrice.ts","../../src/extension/indicator/awesomeOscillator.ts","../../src/extension/indicator/bias.ts","../../src/extension/indicator/bollingerBands.ts","../../src/extension/indicator/brar.ts","../../src/extension/indicator/bullAndBearIndex.ts","../../src/extension/indicator/commodityChannelIndex.ts","../../src/extension/indicator/currentRatio.ts","../../src/extension/indicator/differentOfMovingAverage.ts","../../src/extension/indicator/directionalMovementIndex.ts","../../src/extension/indicator/easeOfMovementValue.ts","../../src/extension/indicator/exponentialMovingAverage.ts","../../src/extension/indicator/momentum.ts","../../src/extension/indicator/movingAverage.ts","../../src/extension/indicator/movingAverageConvergenceDivergence.ts","../../src/extension/indicator/onBalanceVolume.ts","../../src/extension/indicator/priceAndVolumeTrend.ts","../../src/extension/indicator/psychologicalLine.ts","../../src/extension/indicator/rateOfChange.ts","../../src/extension/indicator/relativeStrengthIndex.ts","../../src/extension/indicator/simpleMovingAverage.ts","../../src/extension/indicator/stoch.ts","../../src/extension/indicator/stopAndReverse.ts","../../src/extension/indicator/tripleExponentiallySmoothedAverage.ts","../../src/extension/indicator/volume.ts","../../src/extension/indicator/volumeRatio.ts","../../src/extension/indicator/williamsR.ts","../../src/extension/indicator/index.ts","../../src/store/IndicatorStore.ts","../../src/store/TooltipStore.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/pane/types.ts","../../src/store/OverlayStore.ts","../../src/store/ActionStore.ts","../../src/extension/styles/light.ts","../../src/extension/styles/dark.ts","../../src/extension/styles/index.ts","../../src/store/ChartStore.ts","../../src/widget/types.ts","../../src/common/utils/compatible.ts","../../src/common/Canvas.ts","../../src/common/Bounding.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/extension/figure/rectText.ts","../../src/common/Coordinate.ts","../../src/extension/figure/arc.ts","../../src/extension/figure/index.ts","../../src/view/View.ts","../../src/view/GridView.ts","../../src/view/ChildrenView.ts","../../src/view/CandleBarView.ts","../../src/view/IndicatorView.ts","../../src/view/CrosshairLineView.ts","../../src/view/IndicatorTooltipView.ts","../../src/view/OverlayView.ts","../../src/widget/IndicatorWidget.ts","../../src/common/Animation.ts","../../src/view/CandleAreaView.ts","../../src/view/CandleHighLowPriceView.ts","../../src/view/CandleLastPriceLineView.ts","../../src/extension/i18n/zh-CN.ts","../../src/extension/i18n/en-US.ts","../../src/extension/i18n/index.ts","../../src/view/CandleTooltipView.ts","../../src/widget/CandleWidget.ts","../../src/view/AxisView.ts","../../src/view/YAxisView.ts","../../src/view/CandleLastPriceLabelView.ts","../../src/view/IndicatorLastValueView.ts","../../src/view/OverlayYAxisView.ts","../../src/view/CrosshairHorizontalLabelView.ts","../../src/widget/YAxisWidget.ts","../../src/component/Axis.ts","../../src/component/YAxis.ts","../../src/extension/y-axis/default.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/default.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 */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport 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;\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 }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\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\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 function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\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 __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};\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 './KLineData'\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\n/**\n * @deprecated\n * Starting from v10, it will be deleted\n */\nexport type RectTextStyle = TextStyle\n\nexport interface StateTextStyle extends TextStyle {\n show: boolean\n}\n\n/**\n * @deprecated\n * Starting from v10, it will be deleted\n */\nexport type StateRectTextStyle = StateTextStyle\n\nexport type LastValueMarkTextStyle = Omit<StateTextStyle, 'backgroundColor'>\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<TextStyle, 'color' | 'size' | 'family' | 'weight'> & Margin\n\nexport interface TooltipLegendChild {\n text: string\n color: string\n}\n\n/**\n * @deprecated\n * Starting from v10, it will be deleted\n */\nexport type TooltipDataChild = TooltipLegendChild\n\nexport interface TooltipLegend {\n title: string | TooltipLegendChild\n value: string | TooltipLegendChild\n}\n\n/**\n * @deprecated\n * Starting from v10, it will be deleted\n */\nexport type TooltipData = TooltipLegend\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<StateLineStyle, 'color'>\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<RectStyle, 'style' | 'borderDashedValue' | 'borderStyle'>, Padding, Offset {\n position: CandleTooltipRectPosition\n}\n\nexport interface CandleTooltipCustomCallbackData {\n prev: Nullable<KLineData>\n current: KLineData\n next: Nullable<KLineData>\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<PolygonStyle, 'color' | 'borderColor'> & 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]: any\n}\n\nexport type AxisLineStyle = Omit<StateLineStyle, 'style' | 'dashedValue'>\n\nexport interface AxisTickLineStyle extends AxisLineStyle {\n length: number\n}\n\nexport interface AxisTickTextStyle extends Pick<StateTextStyle, 'show' | 'color' | 'weight' | 'family' | 'size'> {\n marginStart: number\n marginEnd: number\n}\n\nexport interface AxisStyle {\n show: boolean\n size: number | 'auto'\n axisLine: AxisLineStyle\n tickLine: AxisTickLineStyle\n tickText: AxisTickTextStyle\n}\n\nexport type XAxisStyle = AxisStyle\n\nexport enum YAxisPosition {\n Left = 'left',\n Right = 'right'\n}\n\nexport enum YAxisType {\n Normal = 'normal',\n Percentage = 'percentage',\n Log = 'log'\n}\n\nexport interface YAxisStyle extends AxisStyle {\n type: YAxisType\n position: YAxisPosition\n inside: boolean\n reverse: boolean\n}\n\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 /**\n * @deprecated\n * Starting from v10, it will be deleted\n */\n rectText: TextStyle\n [key: string]: any\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: XAxisStyle\n yAxis: YAxisStyle\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 getDefaultXAxisStyle (): XAxisStyle {\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: 4\n },\n tickLine: {\n show: true,\n size: 1,\n length: 3,\n color: axisLineColor\n }\n }\n}\n\nfunction getDefaultYAxisStyle (): YAxisStyle {\n const style = getDefaultXAxisStyle() as YAxisStyle\n style.type = YAxisType.Normal\n style.position = YAxisPosition.Right\n style.inside = false\n style.reverse = false\n return style\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 rectText: 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: getDefaultXAxisStyle(),\n yAxis: getDefaultYAxisStyle(),\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\nexport function merge (target: any, source: any): void {\n if ((!isObject(target) && !isObject(source))) {\n return\n }\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key) as boolean) {\n const targetProp = target[key]\n const sourceProp = source[key]\n if (\n isObject(sourceProp) &&\n isObject(targetProp)\n ) {\n merge(targetProp, sourceProp)\n } else {\n if (isValid(source[key])) {\n target[key] = clone(source[key])\n }\n }\n }\n }\n}\n\nexport function clone<T> (target: T): T {\n if (!isObject(target)) {\n return target\n }\n\n let copy\n if (isArray(target)) {\n copy = []\n } else {\n copy = {}\n }\n for (const key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key) as boolean) {\n const v = target[key]\n if (isObject(v)) {\n copy[key] = clone(v)\n } else {\n copy[key] = v\n }\n }\n }\n return copy\n}\n\nexport function isArray<T = any> (value: any): value is T[] {\n return Object.prototype.toString.call(value) === '[object Array]'\n}\n\nexport function isFunction<T = (...args: any) => any> (value: any): value is T {\n return typeof value === 'function'\n}\n\nexport function isObject (value: any): value is object {\n return (typeof value === 'object') && isValid(value)\n}\n\nexport function isNumber (value: any): value is number {\n return typeof value === 'number' && !isNaN(value)\n}\n\nexport function isValid<T> (value: T | null | undefined): value is T {\n return value !== null && value !== undefined\n}\n\nexport function isBoolean (value: any): value is boolean {\n return typeof value === 'boolean'\n}\n\nexport function isString (value: any): value is string {\n return typeof value === 'string'\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isNumber, isValid } from './typeChecks'\n\nconst reEscapeChar = /\\\\(\\\\)?/g\nconst rePropName = RegExp(\n '[^.[\\\\]]+' + '|' +\n '\\\\[(?:' +\n '([^\"\\'][^[]*)' + '|' +\n '([\"\\'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2' +\n ')\\\\]' + '|' +\n '(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))'\n , 'g')\n\nexport function formatValue (data: unknown, key: string, defaultValue?: unknown): unknown {\n if (isValid(data)) {\n const path: string[] = []\n key.replace(rePropName, (subString: string, ...args: any[]) => {\n let k = subString\n if (isValid(args[1])) {\n k = args[2].replace(reEscapeChar, '$1')\n } else if (isValid(args[0])) {\n k = args[0].trim()\n }\n path.push(k)\n return ''\n })\n let value = data\n let index = 0\n const length = path.length\n while (isValid(value) && index < length) {\n value = value?.[path[index++]]\n }\n return isValid(value) ? value : (defaultValue ?? '--')\n }\n return defaultValue ?? '--'\n}\n\nexport function formatDate (dateTimeFormat: Intl.DateTimeFormat, timestamp: number, format: string): string {\n const date: Record<string, string> = {}\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 }\n })\n return format.replace(/YYYY|MM|DD|HH|mm|ss/g, key => date[key])\n}\n\nexport function formatPrecision (value: string | number, precision?: number): string {\n const v = +value\n if (isNumber(v)) {\n return v.toFixed(precision ?? 2)\n }\n return `${value}`\n}\n\nexport function formatBigNumber (value: string | number): string {\n const v = +value\n if (isNumber(v)) {\n if (v > 1000000000) {\n return `${+((v / 1000000000).toFixed(3))}B`\n }\n if (v > 1000000) {\n return `${+((v / 1000000).toFixed(3))}M`\n }\n if (v > 1000) {\n return `${+((v / 1000).toFixed(3))}K`\n }\n }\n return `${value}`\n}\n\nexport function formatThousands (value: string | number, sign: string): string {\n const vl = `${value}`\n if (sign.length === 0) {\n return vl\n }\n if (vl.includes('.')) {\n const arr = vl.split('.')\n return `${arr[0].replace(/(\\d)(?=(\\d{3})+$)/g, $1 => `${$1}${sign}`)}.${arr[1]}`\n }\n return vl.replace(/(\\d)(?=(\\d{3})+$)/g, $1 => `${$1}${sign}`)\n}\n\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 v = result[result.length - 1]\n const match = v.match(/0*/)\n if (isValid(match)) {\n const count = match[0].length\n result[result.length - 1] = 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 { isValid } from './typeChecks'\n\nlet measureCtx: CanvasRenderingContext2D\n\n/**\n * Get pixel ratio\n * @param canvas\n * @returns {number}\n */\nexport function getPixelRatio (canvas: HTMLCanvasElement): number {\n return 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?: any) => void\n\nexport enum ActionType {\n OnDataReady = 'onDataReady',\n OnZoom = 'onZoom',\n OnScroll = 'onScroll',\n OnVisibleRangeChange = 'onVisibleRangeChange',\n OnTooltipIconClick = 'onTooltipIconClick',\n OnCrosshairChange = 'onCrosshairChange',\n OnCandleBarClick = 'onCandleBarClick',\n OnPaneDrag = 'onPaneDrag'\n}\n\nexport default class Delegate {\n private _callbacks: ActionCallback[] = []\n\n subscribe (callback: ActionCallback): void {\n const index = this._callbacks.indexOf(callback) ?? -1\n if (index < 0) {\n this._callbacks.push(callback)\n }\n }\n\n unsubscribe (callback?: ActionCallback): void {\n if (isFunction(callback)) {\n const index = this._callbacks.indexOf(callback) ?? -1\n if (index > -1) {\n this._callbacks.splice(index, 1)\n }\n } else {\n this._callbacks = []\n }\n }\n\n execute (data?: any): void {\n this._callbacks.forEach(callback => {\n callback(data)\n })\n }\n\n isEmpty (): boolean {\n return this._callbacks.length === 0\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type Nullable from '../common/Nullable'\nimport type ExcludePickPartial from '../common/ExcludePickPartial'\nimport type KLineData from '../common/KLineData'\nimport type Bounding from '../common/Bounding'\nimport type VisibleRange from '../common/VisibleRange'\nimport type BarSpace from '../common/BarSpace'\nimport type Crosshair from '../common/Crosshair'\nimport { type IndicatorStyle, type IndicatorPolygonStyle, type SmoothLineStyle, type RectStyle, type TextStyle, type TooltipIconStyle, type LineStyle, type LineType, type PolygonType, type TooltipLegend } from '../common/Styles'\n\nimport { type XAxis } from './XAxis'\nimport { type YAxis } from './YAxis'\n\nimport { formatValue } from '../common/utils/format'\nimport { isValid, merge, clone } from '../common/utils/typeChecks'\n\nimport { type ArcAttrs } from '../extension/figure/arc'\nimport { type RectAttrs } from '../extension/figure/rect'\nimport { type TextAttrs } from '../extension/figure/text'\n\nexport enum IndicatorSeries {\n Normal = 'normal',\n Price = 'price',\n Volume = 'volume'\n}\n\nexport type IndicatorFigureStyle = Partial<Omit<SmoothLineStyle, 'style'>> & Partial<Omit<RectStyle, 'style'>> & Partial<TextStyle> & Partial<{ style: LineType[keyof LineType] | PolygonType[keyof PolygonType] }> & Record<string, any>\n\nexport type IndicatorFigureAttrs = Partial<ArcAttrs> & Partial<LineStyle> & Partial<RectAttrs> & Partial<TextAttrs> & Record<string, any>\n\nexport interface IndicatorFigureCallbackBrother<PCN> {\n prev: PCN\n current: PCN\n next: PCN\n}\n\nexport type IndicatorFigureAttrsCallbackCoordinate<D> = IndicatorFigureCallbackBrother<Record<keyof D, number> & { x: number }>\n\nexport interface IndicatorFigureAttrsCallbackParams<D> {\n coordinate: IndicatorFigureAttrsCallbackCoordinate<D>\n bounding: Bounding\n barSpace: BarSpace\n xAxis: XAxis\n yAxis: YAxis\n}\n\nexport interface IndicatorFigureStylesCallbackDataChild<D> {\n kLineData?: KLineData\n indicatorData?: D\n}\n\nexport type IndicatorFigureStylesCallbackData<D> = IndicatorFigureCallbackBrother<IndicatorFigureStylesCallbackDataChild<D>>\n\nexport type IndicatorFigureAttrsCallback<D> = (params: IndicatorFigureAttrsCallbackParams<D>) => IndicatorFigureAttrs\nexport type IndicatorFigureStylesCallback<D> = (data: IndicatorFigureStylesCallbackData<D>, indicator: Indicator<D>, defaultStyles: IndicatorStyle) => IndicatorFigureStyle\n\nexport interface IndicatorFigure<D = any> {\n key: string\n title?: string\n type?: string\n baseValue?: number\n attrs?: IndicatorFigureAttrsCallback<D>\n styles?: IndicatorFigureStylesCallback<D>\n}\n\nexport type IndicatorRegenerateFiguresCallback<D = any> = (calcParams: any[]) => Array<IndicatorFigure<D>>\n\nexport interface IndicatorTooltipData {\n name: string\n calcParamsText: string\n icons: TooltipIconStyle[]\n values: TooltipLegend[]\n}\n\nexport interface IndicatorCreateTooltipDataSourceParams<D = any> {\n kLineDataList: KLineData[]\n indicator: Indicator<D>\n visibleRange: VisibleRange\n bounding: Bounding\n crosshair: Crosshair\n defaultStyles: IndicatorStyle\n xAxis: XAxis\n yAxis: YAxis\n}\n\nexport type IndicatorCreateTooltipDataSourceCallback<D = any> = (params: IndicatorCreateTooltipDataSourceParams<D>) => IndicatorTooltipData\n\nexport interface IndicatorDrawParams<D = any> {\n ctx: CanvasRenderingContext2D\n kLineDataList: KLineData[]\n indicator: Indicator<D>\n visibleRange: VisibleRange\n bounding: Bounding\n barSpace: BarSpace\n defaultStyles: IndicatorStyle\n xAxis: XAxis\n yAxis: YAxis\n}\n\nexport type IndicatorDrawCallback<D = any> = (params: IndicatorDrawParams<D>) => boolean\nexport type IndicatorCalcCallback<D> = (dataList: KLineData[], indicator: Indicator<D>) => Promise<D[]> | D[]\n\nexport interface Indicator<D = any> {\n /**\n * Indicator name\n */\n name: string\n\n /**\n * Short name, for display\n */\n shortName: string\n\n /**\n * Precision\n */\n precision: number\n\n /**\n * Calculation parameters\n */\n calcParams: any[]\n\n /**\n * Whether ohlc column is required\n */\n shouldOhlc: boolean\n\n /**\n * Whether large data values need to be formatted, starting from 1000, for example, whether 100000 needs to be formatted with 100K\n */\n shouldFormatBigNumber: boolean\n\n /**\n * Whether the indicator is visible\n */\n visible: boolean\n\n /**\n * Z index\n */\n zLevel: number\n\n /**\n * Extend data\n */\n extendData: any\n\n /**\n * Indicator series\n */\n series: IndicatorSeries\n\n /**\n * Figure configuration information\n */\n figures: Array<IndicatorFigure<D>>\n\n /**\n * Specified minimum value\n */\n minValue: Nullable<number>\n\n /**\n * Specified maximum value\n */\n maxValue: Nullable<number>\n\n /**\n * Style configuration\n */\n styles: Nullable<Partial<IndicatorStyle>>\n\n /**\n * Indicator calculation\n */\n calc: IndicatorCalcCallback<D>\n\n /**\n * Regenerate figure configuration\n */\n regenerateFigures: Nullable<IndicatorRegenerateFiguresCallback<D>>\n\n /**\n * Create custom tooltip text\n */\n createTooltipDataSource: Nullable<IndicatorCreateTooltipDataSourceCallback>\n\n /**\n * Custom draw\n */\n draw: Nullable<IndicatorDrawCallback<D>>\n\n /**\n * Calculation result\n */\n result: D[]\n}\n\nexport type IndicatorTemplate<D = any> = ExcludePickPartial<Omit<Indicator<D>, 'result'>, 'name' | 'calc'>\n\nexport type IndicatorCreate<D = any> = ExcludePickPartial<Omit<Indicator<D>, 'result'>, 'name'>\n\nexport type IndicatorConstructor<D = any> = new () => IndicatorImp<D>\n\nexport type EachFigureCallback = (figure: IndicatorFigure, figureStyles: IndicatorFigureStyle, index: number) => void\n\nexport function eachFigures<D> (\n kLineDataList: KLineData[],\n indicator: Indicator<D>,\n dataIndex: number,\n defaultStyles: IndicatorStyle,\n eachFigureCallback: EachFigureCallback\n): void {\n const result = indicator.result\n const figures = indicator.figures\n const styles = indicator.styles\n\n const circleStyles = formatValue(styles, 'circles', defaultStyles.circles) as IndicatorPolygonStyle[]\n const circleStyleCount = circleStyles.length\n\n const barStyles = formatValue(styles, 'bars', defaultStyles.bars) as IndicatorPolygonStyle[]\n const barStyleCount = barStyles.length\n\n const lineStyles = formatValue(styles, 'lines', defaultStyles.lines) as SmoothLineStyle[]\n const lineStyleCount = lineStyles.length\n\n let circleCount = 0\n let barCount = 0\n let lineCount = 0\n\n let defaultFigureStyles\n 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(defaultFigureStyles)) {\n const cbData = {\n prev: { kLineData: kLineDataList[dataIndex - 1], indicatorData: result[dataIndex - 1] },\n current: { kLineData: kLineDataList[dataIndex], indicatorData: result[dataIndex] },\n next: { kLineData: kLineDataList[dataIndex + 1], indicatorData: result[dataIndex + 1] }\n }\n const ss = figure.styles?.(cbData, indicator, defaultStyles)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eachFigureCallback(figure, { ...defaultFigureStyles, ...ss }, figureIndex)\n }\n })\n}\n\nexport default abstract class IndicatorImp<D = any> implements Indicator<D> {\n name: string\n shortName: string\n precision: number\n calcParams: any[]\n shouldOhlc: boolean\n shouldFormatBigNumber: boolean\n visible: boolean\n zLevel: number\n extendData: any\n series: IndicatorSeries\n figures: Array<IndicatorFigure<D>>\n minValue: Nullable<number>\n maxValue: Nullable<number>\n styles: Nullable<Partial<IndicatorStyle>>\n regenerateFigures: Nullable<IndicatorRegenerateFiguresCallback<D>>\n createTooltipDataSource: Nullable<IndicatorCreateTooltipDataSourceCallback>\n draw: Nullable<IndicatorDrawCallback<D>>\n\n result: D[] = []\n\n private _precisionFlag: boolean = false\n\n constructor (indicator: IndicatorTemplate) {\n const {\n name, shortName, series, calcParams, figures, precision,\n shouldOhlc, shouldFormatBigNumber, visible, zLevel,\n minValue, maxValue, styles, extendData,\n regenerateFigures, createTooltipDataSource, draw\n } = indicator\n this.name = name\n this.shortName = shortName ?? name\n this.series = series ?? IndicatorSeries.Normal\n this.precision = precision ?? 4\n this.calcParams = calcParams ?? []\n this.figures = figures ?? []\n this.shouldOhlc = shouldOhlc ?? false\n this.shouldFormatBigNumber = shouldFormatBigNumber ?? false\n this.visible = visible ?? true\n this.zLevel = zLevel ?? 0\n this.minValue = minValue ?? null\n this.maxValue = maxValue ?? null\n this.styles = clone(styles ?? {})\n this.extendData = extendData\n this.regenerateFigures = regenerateFigures ?? null\n this.createTooltipDataSource = createTooltipDataSource ?? null\n this.draw = draw ?? null\n }\n\n setShortName (shortName: string): boolean {\n if (this.shortName !== shortName) {\n this.shortName = shortName\n return true\n }\n return false\n }\n\n setSeries (series: IndicatorSeries): boolean {\n if (this.series !== series) {\n this.series = series\n return true\n }\n return false\n }\n\n setPrecision (precision: number, flag?: boolean): boolean {\n const f = flag ?? false\n const optimalPrecision = Math.floor(precision)\n if (optimalPrecision !== this.precision && precision >= 0 && (!f || (f && !this._precisionFlag))) {\n this.precision = optimalPrecision\n if (!f) {\n this._precisionFlag = true\n }\n return true\n }\n return false\n }\n\n setCalcParams (params: any[]): boolean {\n this.calcParams = params\n this.figures = this.regenerateFigures?.(params) ?? this.figures\n return true\n }\n\n setShouldOhlc (shouldOhlc: boolean): boolean {\n if (this.shouldOhlc !== shouldOhlc) {\n this.shouldOhlc = shouldOhlc\n return true\n }\n return false\n }\n\n setShouldFormatBigNumber (shouldFormatBigNumber: boolean): boolean {\n if (this.shouldFormatBigNumber !== shouldFormatBigNumber) {\n this.shouldFormatBigNumber = shouldFormatBigNumber\n return true\n }\n return false\n }\n\n setVisible (visible: boolean): boolean {\n if (this.visible !== visible) {\n this.visible = visible\n return true\n }\n return false\n }\n\n setZLevel (zLevel: number): boolean {\n if (this.zLevel !== zLevel) {\n this.zLevel = zLevel\n return true\n }\n return false\n }\n\n setStyles (styles: Partial<IndicatorStyle>): boolean {\n merge(this.styles, styles)\n return true\n }\n\n setExtendData (extendData: any): boolean {\n if (this.extendData !== extendData) {\n this.extendData = extendData\n return true\n }\n return false\n }\n\n setFigures (figures: IndicatorFigure[]): boolean {\n if (this.figures !== figures) {\n this.figures = figures\n return true\n }\n return false\n }\n\n setMinValue (value: Nullable<number>): boolean {\n if (this.minValue !== value) {\n this.minValue = value\n return true\n }\n return false\n }\n\n setMaxValue (value: Nullable<number>): boolean {\n if (this.maxValue !== value) {\n this.maxValue = value\n return true\n }\n return false\n }\n\n setRegenerateFigures (callback: Nullable<IndicatorRegenerateFiguresCallback>): boolean {\n if (this.regenerateFigures !== callback) {\n this.regenerateFigures = callback\n return true\n }\n return false\n }\n\n setCreateTooltipDataSource (callback: Nullable<IndicatorCreateTooltipDataSourceCallback>): boolean {\n if (this.createTooltipDataSource !== callback) {\n this.createTooltipDataSource = callback\n return true\n }\n return false\n }\n\n setDraw (callback: Nullable<IndicatorDrawCallback>): boolean {\n if (this.draw !== callback) {\n this.draw = callback\n return true\n }\n return false\n }\n\n async calcIndicator (dataList: KLineData[]): Promise<boolean> {\n try {\n const result = await this.calc(dataList, this)\n this.result = result\n return true\n } catch (e) {\n return false\n }\n }\n\n abstract calc (dataList: KLineData[], indicator: Indicator<D>): D[] | Promise<D[]>\n\n static extend<D> (template: IndicatorTemplate): IndicatorConstructor<D> {\n class Custom extends IndicatorImp<D> {\n constructor () {\n super(template)\n }\n\n calc (dataList: KLineData[], indicator: Indicator<D>): D[] | Promise<D[]> {\n return template.calc(dataList, indicator)\n }\n }\n return Custom\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 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 BarSpace from '../common/BarSpace'\nimport type Precision from '../common/Precision'\nimport { type OverlayStyle } from '../common/Styles'\nimport { type MouseTouchEvent } from '../common/SyntheticEvent'\nimport { clone, isNumber, isString, merge } from '../common/utils/typeChecks'\n\nimport type TimeScaleStore from '../store/TimeScaleStore'\n\nimport { type XAxis } from './XAxis'\nimport { type YAxis } from './YAxis'\n\nexport enum OverlayMode {\n Normal = 'normal',\n WeakMagnet = 'weak_magnet',\n StrongMagnet = 'strong_magnet'\n}\n\nexport interface OverlayPerformEventParams {\n currentStep: number\n mode: OverlayMode\n points: Array<Partial<Point>>\n performPointIndex: number\n performPoint: Partial<Point>\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: any\n styles?: any\n ignoreEvent?: boolean | OverlayFigureIgnoreEventType[]\n}\n\nexport interface OverlayPrecision extends Precision {\n max: number\n min: number\n excludePriceVolumeMax: number\n excludePriceVolumeMin: number\n [key: string]: number\n}\n\nexport interface OverlayCreateFiguresCallbackParams {\n overlay: Overlay\n coordinates: Coordinate[]\n bounding: Bounding\n barSpace: BarSpace\n precision: OverlayPrecision\n thousandsSeparator: string\n decimalFoldThreshold: number\n dateTimeFormat: Intl.DateTimeFormat\n defaultStyles: OverlayStyle\n xAxis: Nullable<XAxis>\n yAxis: Nullable<YAxis>\n}\n\nexport interface OverlayEvent extends Partial<MouseTouchEvent> {\n figureKey?: string\n figureIndex?: number\n overlay: Overlay\n}\n\nexport type OverlayEventCallback = (event: OverlayEvent) => boolean\n\nexport type OverlayCreateFiguresCallback = (params: OverlayCreateFiguresCallbackParams) => OverlayFigure | OverlayFigure[]\n\nexport interface Overlay {\n /**\n * Unique identification\n */\n id: string\n\n /**\n * Group id\n */\n groupId: string\n\n /**\n * Pane id\n */\n paneId: string\n\n /**\n * Name\n */\n name: string\n\n /**\n * Total number of steps required to complete mouse operation\n */\n totalStep: number\n\n /**\n * Current step\n */\n currentStep: number\n\n /**\n * Whether it is locked. When it is true, it will not respond to events\n */\n lock: boolean\n\n /**\n * Whether the overlay is visible\n */\n visible: boolean\n\n /**\n * 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<Partial<Point>>\n\n /**\n * Extended Data\n */\n extendData: any\n\n /**\n * The style information and format are consistent with the overlay in the unified configuration\n */\n styles: Nullable<DeepPartial<OverlayStyle>>\n\n /**\n * Create figures corresponding to points\n */\n createPointFigures: Nullable<OverlayCreateFiguresCallback>\n\n /**\n * Create figures on the Y axis\n */\n createXAxisFigures: Nullable<OverlayCreateFiguresCallback>\n\n /**\n * Create figures on the X axis\n */\n createYAxisFigures: Nullable<OverlayCreateFiguresCallback>\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<OverlayEventCallback>\n\n /**\n * In drawing event\n */\n onDrawing: Nullable<OverlayEventCallback>\n\n /**\n * Draw End Event\n */\n onDrawEnd: Nullable<OverlayEventCallback>\n\n /**\n * Click event\n */\n onClick: Nullable<OverlayEventCallback>\n\n /**\n * Double Click event\n */\n onDoubleClick: Nullable<OverlayEventCallback>\n\n /**\n * Right click event\n */\n onRightClick: Nullable<OverlayEventCallback>\n\n /**\n * Pressed move start event\n */\n onPressedMoveStart: Nullable<OverlayEventCallback>\n\n /**\n * Pressed moving event\n */\n onPressedMoving: Nullable<OverlayEventCallback>\n\n /**\n * Pressed move end event\n */\n onPressedMoveEnd: Nullable<OverlayEventCallback>\n\n /**\n * Mouse enter event\n */\n onMouseEnter: Nullable<OverlayEventCallback>\n\n /**\n * Mouse leave event\n */\n onMouseLeave: Nullable<OverlayEventCallback>\n\n /**\n * Removed event\n */\n onRemoved: Nullable<OverlayEventCallback>\n\n /**\n * Selected event\n */\n onSelected: Nullable<OverlayEventCallback>\n\n /**\n * Deselected event\n */\n onDeselected: Nullable<OverlayEventCallback>\n}\n\nexport type OverlayTemplate = ExcludePickPartial<Omit<Overlay, 'id' | 'groupId' | 'paneId' | 'points' | 'currentStep'>, 'name'>\nexport type OverlayCreate = ExcludePickPartial<Omit<Overlay, 'paneId' | 'currentStep' | 'totalStep' | 'createPointFigures' | 'createXAxisFigures' | 'createYAxisFigures' | 'performEventPressedMove' | 'performEventMoveForDrawing'>, 'name'>\nexport type OverlayRemove = Partial<Pick<Overlay, 'id' | 'groupId' | 'name'>>\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 const OVERLAY_ACTIVE_Z_LEVEL = Number.MAX_SAFE_INTEGER\n\nexport default abstract class OverlayImp implements Overlay {\n id: string\n groupId: string\n paneId: string\n name: string\n totalStep: number\n currentStep: number = OVERLAY_DRAW_STEP_START\n needDefaultPointFigure: boolean\n needDefaultXAxisFigure: boolean\n needDefaultYAxisFigure: boolean\n lock: boolean\n visible: boolean\n zLevel: number\n mode: OverlayMode\n modeSensitivity: number\n points: Array<Partial<Point>> = []\n extendData: any\n styles: Nullable<DeepPartial<OverlayStyle>>\n createPointFigures: Nullable<OverlayCreateFiguresCallback>\n createXAxisFigures: Nullable<OverlayCreateFiguresCallback>\n createYAxisFigures: Nullable<OverlayCreateFiguresCallback>\n performEventPressedMove: Nullable<(params: OverlayPerformEventParams) => void>\n performEventMoveForDrawing: Nullable<(params: OverlayPerformEventParams) => void>\n onDrawStart: Nullable<OverlayEventCallback>\n onDrawing: Nullable<OverlayEventCallback>\n onDrawEnd: Nullable<OverlayEventCallback>\n onClick: Nullable<OverlayEventCallback>\n onDoubleClick: Nullable<OverlayEventCallback>\n onRightClick: Nullable<OverlayEventCallback>\n onPressedMoveStart: Nullable<OverlayEventCallback>\n onPressedMoving: Nullable<OverlayEventCallback>\n onPressedMoveEnd: Nullable<OverlayEventCallback>\n onMouseEnter: Nullable<OverlayEventCallback>\n onMouseLeave: Nullable<OverlayEventCallback>\n onRemoved: Nullable<OverlayEventCallback>\n onSelected: Nullable<OverlayEventCallback>\n onDeselected: Nullable<OverlayEventCallback>\n\n private _prevPressedPoint: Nullable<Partial<Point>> = null\n private _prevPressedPoints: Array<Partial<Point>> = []\n\n constructor (overlay: OverlayTemplate) {\n const {\n mode, modeSensitivity, extendData, styles,\n name, totalStep, lock, visible, zLevel,\n needDefaultPointFigure, needDefaultXAxisFigure, needDefaultYAxisFigure,\n createPointFigures, createXAxisFigures, createYAxisFigures,\n performEventPressedMove, performEventMoveForDrawing,\n onDrawStart, onDrawing, onDrawEnd,\n onClick, onDoubleClick, onRightClick,\n onPressedMoveStart, onPressedMoving, onPressedMoveEnd,\n onMouseEnter, onMouseLeave, onRemoved,\n onSelected, onDeselected\n } = overlay\n this.name = name\n this.totalStep = (!isNumber(totalStep) || totalStep < 2) ? 1 : totalStep\n this.lock = lock ?? false\n this.visible = visible ?? true\n this.zLevel = zLevel ?? 0\n this.needDefaultPointFigure = needDefaultPointFigure ?? false\n this.needDefaultXAxisFigure = needDefaultXAxisFigure ?? false\n this.needDefaultYAxisFigure = needDefaultYAxisFigure ?? false\n this.mode = mode ?? OverlayMode.Normal\n this.modeSensitivity = modeSensitivity ?? 8\n this.extendData = extendData\n this.styles = clone(styles ?? {})\n this.createPointFigures = createPointFigures ?? null\n this.createXAxisFigures = createXAxisFigures ?? null\n this.createYAxisFigures = createYAxisFigures ?? null\n this.performEventPressedMove = performEventPressedMove ?? null\n this.performEventMoveForDrawing = performEventMoveForDrawing ?? null\n this.onDrawStart = onDrawStart ?? null\n this.onDrawing = onDrawing ?? null\n this.onDrawEnd = onDrawEnd ?? null\n this.onClick = onClick ?? null\n this.onDoubleClick = onDoubleClick ?? null\n this.onRightClick = onRightClick ?? null\n this.onPressedMoveStart = onPressedMoveStart ?? null\n this.onPressedMoving = onPressedMoving ?? null\n this.onPressedMoveEnd = onPressedMoveEnd ?? null\n this.onMouseEnter = onMouseEnter ?? null\n this.onMouseLeave = onMouseLeave ?? null\n this.onRemoved = onRemoved ?? null\n this.onSelected = onSelected ?? null\n this.onDeselected = onDeselected ?? null\n }\n\n setId (id: string): boolean {\n if (!isString(this.id)) {\n this.id = id\n return true\n }\n return false\n }\n\n setGroupId (groupId: string): boolean {\n if (!isString(this.groupId)) {\n this.groupId = groupId\n return true\n }\n return false\n }\n\n setPaneId (paneId: string): void {\n this.paneId = paneId\n }\n\n setExtendData (extendData: any): boolean {\n if (extendData !== this.extendData) {\n this.extendData = extendData\n return true\n }\n return false\n }\n\n setStyles (styles: DeepPartial<OverlayStyle>): boolean {\n merge(this.styles, styles)\n return true\n }\n\n setPoints (points: Array<Partial<Point>>): boolean {\n if (points.length > 0) {\n let repeatTotalStep: number\n this.points = [...points]\n if (points.length >= this.totalStep - 1) {\n this.currentStep = OVERLAY_DRAW_STEP_FINISHED\n repeatTotalStep = this.totalStep - 1\n } else {\n this.currentStep = points.length + 1\n repeatTotalStep = points.length\n }\n // Prevent wrong drawing due to wrong points\n if (this.performEventMoveForDrawing !== null) {\n for (let i = 0; i < repeatTotalStep; i++) {\n this.performEventMoveForDrawing({\n currentStep: i + 2,\n mode: this.mode,\n points: this.points,\n performPointIndex: i,\n performPoint: this.points[i]\n })\n }\n }\n if (this.currentStep === OVERLAY_DRAW_STEP_FINISHED && this.performEventPressedMove !== null) {\n this.performEventPressedMove({\n currentStep: this.currentStep,\n mode: this.mode,\n points: this.points,\n performPointIndex: this.points.length - 1,\n performPoint: this.points[this.points.length - 1]\n })\n }\n return true\n }\n return false\n }\n\n setLock (lock: boolean): boolean {\n if (this.lock !== lock) {\n this.lock = lock\n return true\n }\n return false\n }\n\n setVisible (visible: boolean): boolean {\n if (this.visible !== visible) {\n this.visible = visible\n return true\n }\n return false\n }\n\n setZLevel (zLevel: number): boolean {\n if (this.zLevel !== zLevel) {\n this.zLevel = zLevel\n return true\n }\n return false\n }\n\n setMode (mode: OverlayMode): boolean {\n if (this.mode !== mode) {\n this.mode = mode\n return true\n }\n return false\n }\n\n setModeSensitivity (modeSensitivity: number): boolean {\n if (this.modeSensitivity !== modeSensitivity) {\n this.modeSensitivity = modeSensitivity\n return true\n }\n return false\n }\n\n setOnDrawStartCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onDrawStart !== callback) {\n this.onDrawStart = callback\n return true\n }\n return false\n }\n\n setOnDrawingCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onDrawing !== callback) {\n this.onDrawing = callback\n return true\n }\n return false\n }\n\n setOnDrawEndCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onDrawEnd !== callback) {\n this.onDrawEnd = callback\n return true\n }\n return false\n }\n\n setOnClickCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onClick !== callback) {\n this.onClick = callback\n return true\n }\n return false\n }\n\n setOnDoubleClickCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onDoubleClick !== callback) {\n this.onDoubleClick = callback\n return true\n }\n return false\n }\n\n setOnRightClickCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onRightClick !== callback) {\n this.onRightClick = callback\n return true\n }\n return false\n }\n\n setOnPressedMoveStartCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onPressedMoveStart !== callback) {\n this.onPressedMoveStart = callback\n return true\n }\n return false\n }\n\n setOnPressedMovingCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onPressedMoving !== callback) {\n this.onPressedMoving = callback\n return true\n }\n return false\n }\n\n setOnPressedMoveEndCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onPressedMoveEnd !== callback) {\n this.onPressedMoveEnd = callback\n return true\n }\n return false\n }\n\n setOnMouseEnterCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onMouseEnter !== callback) {\n this.onMouseEnter = callback\n return true\n }\n return false\n }\n\n setOnMouseLeaveCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onMouseLeave !== callback) {\n this.onMouseLeave = callback\n return true\n }\n return false\n }\n\n setOnRemovedCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onRemoved !== callback) {\n this.onRemoved = callback\n return true\n }\n return false\n }\n\n setOnSelectedCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onSelected !== callback) {\n this.onSelected = callback\n return true\n }\n return false\n }\n\n setOnDeselectedCallback (callback: Nullable<OverlayEventCallback>): boolean {\n if (this.onDeselected !== callback) {\n this.onDeselected = callback\n return true\n }\n return false\n }\n\n nextStep (): void {\n if (this.currentStep === this.totalStep - 1) {\n this.currentStep = OVERLAY_DRAW_STEP_FINISHED\n } else {\n this.currentStep++\n }\n }\n\n forceComplete (): void {\n this.currentStep = OVERLAY_DRAW_STEP_FINISHED\n }\n\n isDrawing (): boolean {\n return this.currentStep !== OVERLAY_DRAW_STEP_FINISHED\n }\n\n isStart (): boolean {\n return this.currentStep === OVERLAY_DRAW_STEP_START\n }\n\n eventMoveForDrawing (point: Partial<Point>): void {\n const pointIndex = this.currentStep - 1\n const newPoint: Partial<Point> = {}\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<Point>, pointIndex: number): void {\n if (isNumber(point.dataIndex)) {\n this.points[pointIndex].dataIndex = point.dataIndex\n this.points[pointIndex].timestamp = point.timestamp\n }\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<Point>): void {\n this._prevPressedPoint = { ...point }\n this._prevPressedPoints = clone(this.points)\n }\n\n eventPressedOtherMove (point: Partial<Point>, timeScaleStore: TimeScaleStore): void {\n if (this._prevPressedPoint !== null) {\n let difDataIndex: number\n if (isNumber(point.dataIndex) && isNumber(this._prevPressedPoint.dataIndex)) {\n difDataIndex = point.dataIndex - this._prevPressedPoint.dataIndex\n }\n let difValue: number\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 = timeScaleStore.timestampToDataIndex(p.timestamp)\n }\n const newPoint = { ...p }\n if (isNumber(difDataIndex) && isNumber(p.dataIndex)) {\n newPoint.dataIndex = p.dataIndex + difDataIndex\n newPoint.timestamp = timeScaleStore.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'\nimport { formatDate, formatBigNumber } from './common/utils/format'\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 = (dateTimeFormat: Intl.DateTimeFormat, timestamp: number, format: string, type: FormatDateType) => string\n\nexport type FormatBigNumber = (value: string | number) => string\n\nexport interface CustomApi {\n formatDate: FormatDate\n formatBigNumber: FormatBigNumber\n}\n\nexport function getDefaultCustomApi (): CustomApi {\n return {\n formatDate,\n formatBigNumber\n }\n}\n\nexport const defaultLocale = 'en-US'\n\nexport interface Locales {\n time: string\n open: string\n high: string\n low: string\n close: string\n volume: string\n 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<string | IndicatorCreate>\n options?: PaneOptions\n}\n\nexport interface Options {\n layout?: LayoutChild[]\n locale?: string\n timezone?: string\n styles?: string | DeepPartial<Styles>\n customApi?: Partial<CustomApi>\n thousandsSeparator?: string\n decimalFoldThreshold?: 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\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<K extends keyof HTMLElementTagNameMap> (tagName: K, styles?: Partial<CSSStyleDeclaration>): HTMLElementTagNameMap[K] {\n const dom = document.createElement(tagName)\n const s = styles ?? {}\n for (const key in s) {\n (dom.style)[key] = s[key] ?? ''\n }\n return dom\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Binary search for the nearest result\n * @param dataList\n * @param valueKey\n * @param targetValue\n * @return {number}\n */\nexport function binarySearchNearest<T> (dataList: T[], valueKey: keyof T, targetValue: any): number {\n let left = 0\n let right = 0\n for (right = dataList.length - 1; left !== right;) {\n const midIndex = Math.floor((right + left) / 2)\n const mid = right - left\n const midValue = dataList[midIndex][valueKey]\n if (targetValue === dataList[left][valueKey]) {\n return left\n }\n if (targetValue === dataList[right][valueKey]) {\n return right\n }\n if (targetValue === midValue) {\n return midIndex\n }\n\n if (targetValue > midValue) {\n left = midIndex\n } else {\n right = midIndex\n }\n\n if (mid <= 2) {\n break\n }\n }\n return left\n}\n\n/**\n * 优化数字\n * @param value\n * @return {number|number}\n */\nexport function nice (value: number): number {\n const exponent = Math.floor(log10(value))\n const exp10 = index10(exponent)\n const f = value / exp10 // 1 <= f < 10\n let nf = 0\n if (f < 1.5) {\n nf = 1\n } else if (f < 2.5) {\n nf = 2\n } else if (f < 3.5) {\n nf = 3\n } else if (f < 4.5) {\n nf = 4\n } else if (f < 5.5) {\n nf = 5\n } else if (f < 6.5) {\n nf = 6\n } else {\n nf = 8\n }\n value = nf * exp10\n return exponent >= -20 ? +value.toFixed(exponent < 0 ? -exponent : 0) : value\n}\n\n/**\n * 四舍五入\n * @param value\n * @param precision\n * @return {number}\n */\nexport function round (value: number, precision: number): number {\n if (precision == null) {\n precision = 10\n }\n precision = Math.min(Math.max(0, precision), 20)\n const v = (+value).toFixed(precision)\n return +v\n}\n\n/**\n * 获取小数位数\n * @param value\n * @return {number|number}\n */\nexport function getPrecision (value: number): number {\n const str = value.toString()\n const eIndex = str.indexOf('e')\n if (eIndex > 0) {\n const precision = +str.slice(eIndex + 1)\n return precision < 0 ? -precision : 0\n } else {\n const dotIndex = str.indexOf('.')\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex\n }\n}\n\nexport function getMaxMin<D> (dataList: D[], maxKey: keyof D, minKey: keyof D): number[] {\n const maxMin = [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER]\n dataList.forEach(data => {\n maxMin[0] = Math.max((data[maxKey] ?? data) as number, maxMin[0])\n maxMin[1] = Math.min((data[minKey] ?? data) as number, maxMin[1])\n })\n return maxMin\n}\n\n/**\n * 10为底的对数函数\n * @param value\n * @return {number}\n */\nexport function log10 (value: number): number {\n return Math.log(value) / Math.log(10)\n}\n\n/**\n * 10的指数函数\n * @param value\n * @return {number}\n */\nexport function index10 (value: number): number {\n return Math.pow(10, value)\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type Nullable from './Nullable'\nimport type KLineData from './KLineData'\n\nenum LoadDataType {\n Init = 'init',\n Forward = 'forward',\n Backward = 'backward'\n}\n\ninterface LoadDataParams {\n type: LoadDataType\n data: Nullable<KLineData>\n callback: (dataList: KLineData[], more?: boolean) => void\n}\n\nexport { LoadDataType, type LoadDataParams }\n\ntype LoadDataCallback = (params: LoadDataParams) => void\n\nexport default LoadDataCallback\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 type Nullable from '../common/Nullable'\nimport type Coordinate from '../common/Coordinate'\nimport type KLineData from '../common/KLineData'\nimport type BarSpace from '../common/BarSpace'\nimport type VisibleRange from '../common/VisibleRange'\nimport { getDefaultVisibleRange } from '../common/VisibleRange'\nimport { ActionType } from '../common/Action'\n\nimport { logWarn } from '../common/utils/logger'\nimport { binarySearchNearest } from '../common/utils/number'\nimport { isNumber, isString } from '../common/utils/typeChecks'\n\nimport type ChartStore from './ChartStore'\nimport { LoadDataType } from '../common/LoadDataCallback'\n\ninterface LeftRightSide {\n left: number\n right: number\n}\n\nconst BarSpaceLimitConstants = {\n MIN: 1,\n MAX: 50\n}\n\nconst enum ScrollLimitRole {\n BarCount,\n Distance\n}\n\nconst DEFAULT_BAR_SPACE = 8\n\nconst DEFAULT_OFFSET_RIGHT_DISTANCE = 80\n\nexport default class TimeScaleStore {\n /**\n * Root store\n */\n private readonly _chartStore: ChartStore\n\n /**\n * Time format\n */\n private _dateTimeFormat: Intl.DateTimeFormat = this._buildDateTimeFormat()!\n\n /**\n * Scale enabled flag\n */\n private _zoomEnabled: boolean = true\n\n /**\n * Scroll enabled flag\n */\n private _scrollEnabled: boolean = true\n\n /**\n * Total space of drawing area\n */\n private _totalBarSpace: number = 0\n\n /**\n * Space occupied by a single piece of data\n */\n private _barSpace: number = DEFAULT_BAR_SPACE\n\n /**\n * The space of the draw bar\n */\n private _gapBarSpace: number\n\n /**\n * Distance from the last data to the right of the drawing area\n */\n private _offsetRightDistance = DEFAULT_OFFSET_RIGHT_DISTANCE\n\n /**\n * The number of bar calculated from the distance of the last data to the right of the drawing area\n */\n private _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 = ScrollLimitRole.BarCount\n\n /**\n * Scroll to the leftmost and rightmost visible bar\n */\n private readonly _minVisibleBarCount: LeftRightSide = { left: 2, right: 2 }\n\n /**\n * Scroll to the leftmost and rightmost distance\n */\n private readonly _maxOffsetDistance: LeftRightSide = { left: 50, right: 50 }\n\n /**\n * Start and end points of visible area data index\n */\n private _visibleRange: VisibleRange = getDefaultVisibleRange()\n\n constructor (chartStore: ChartStore) {\n this._chartStore = chartStore\n this._gapBarSpace = this._calcGapBarSpace()\n this._lastBarRightSideDiffBarCount = this._offsetRightDistance / this._barSpace\n }\n\n private _calcGapBarSpace (): number {\n const rateSpace = Math.floor(this._barSpace * 0.82)\n const floorSpace = Math.floor(this._barSpace)\n const optimalSpace = Math.min(rateSpace, floorSpace - 1)\n return Math.max(1, optimalSpace)\n }\n\n /**\n * adjust visible range\n */\n adjustVisibleRange (): void {\n const dataList = this._chartStore.getDataList()\n const totalBarCount = dataList.length\n const visibleBarCount = this._totalBarSpace / this._barSpace\n\n let leftMinVisibleBarCount: number\n let rightMinVisibleBarCount: number\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._chartStore.getActionStore().execute(ActionType.OnVisibleRangeChange, this._visibleRange)\n this._chartStore.adjustVisibleDataList()\n // More processing and loading, more loading if there are callback methods and no data is being loaded\n if (from === 0) {\n const firstData = dataList[0]\n this._chartStore.executeLoadMoreCallback(firstData?.timestamp ?? null)\n this._chartStore.executeLoadDataCallback({\n type: LoadDataType.Forward,\n data: firstData ?? null\n })\n }\n if (to === totalBarCount) {\n this._chartStore.executeLoadDataCallback({\n type: LoadDataType.Backward,\n data: dataList[totalBarCount - 1] ?? null\n })\n }\n }\n\n getDateTimeFormat (): Intl.DateTimeFormat {\n return this._dateTimeFormat\n }\n\n _buildDateTimeFormat (timezone?: string): Nullable<Intl.DateTimeFormat> {\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 (isString(timezone)) {\n options.timeZone = timezone\n }\n let dateTimeFormat: Nullable<Intl.DateTimeFormat> = null\n try {\n dateTimeFormat = new Intl.DateTimeFormat('en', options)\n } catch (e) {\n logWarn('', '', 'Timezone is error!!!')\n }\n return dateTimeFormat\n }\n\n setTimezone (timezone: string): void {\n const dateTimeFormat: Nullable<Intl.DateTimeFormat> = this._buildDateTimeFormat(timezone)\n if (dateTimeFormat !== null) {\n this._dateTimeFormat = dateTimeFormat\n }\n }\n\n getTimezone (): string {\n return this._dateTimeFormat.resolvedOptions().timeZone\n }\n\n getBarSpace (): BarSpace {\n return {\n bar: this._barSpace,\n halfBar: this._barSpace / 2,\n gapBar: this._gapBarSpace,\n halfGapBar: this._gapBarSpace / 2\n }\n }\n\n setBarSpace (barSpace: number, adjustBeforeFunc?: () => void): void {\n if (barSpace < BarSpaceLimitConstants.MIN || barSpace > BarSpaceLimitConstants.MAX || this._barSpace === barSpace) {\n return\n }\n this._barSpace = barSpace\n this._gapBarSpace = this._calcGapBarSpace()\n adjustBeforeFunc?.()\n this.adjustVisibleRange()\n this._chartStore.getTooltipStore().recalculateCrosshair(true)\n this._chartStore.getChart().adjustPaneViewport(false, true, true, true)\n }\n\n setTotalBarSpace (totalSpace: number): this {\n if (this._totalBarSpace !== totalSpace) {\n this._totalBarSpace = totalSpace\n this.adjustVisibleRange()\n this._chartStore.getTooltipStore().recalculateCrosshair(true)\n }\n return this\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._chartStore.getTooltipStore().recalculateCrosshair(true)\n this._chartStore.getChart().adjustPaneViewport(false, true, true, true)\n }\n return this\n }\n\n resetOffsetRightDistance (): void {\n this.setOffsetRightDistance(this._offsetRightDistance)\n }\n\n getInitialOffsetRightDistance (): number {\n return this._offsetRightDistance\n }\n\n getOffsetRightDistance (): number {\n return Math.max(0, this._lastBarRightSideDiffBarCount * this._barSpace)\n }\n\n getLastBarRightSideDiffBarCount (): number {\n return this._lastBarRightSideDiffBarCount\n }\n\n setLastBarRightSideDiffBarCount (barCount: number): this {\n this._lastBarRightSideDiffBarCount = barCount\n return this\n }\n\n setMaxOffsetLeftDistance (distance: number): this {\n this._scrollLimitRole = ScrollLimitRole.Distance\n this._maxOffsetDistance.left = distance\n return this\n }\n\n setMaxOffsetRightDistance (distance: number): this {\n this._scrollLimitRole = ScrollLimitRole.Distance\n this._maxOffsetDistance.right = distance\n return this\n }\n\n setLeftMinVisibleBarCount (barCount: number): this {\n this._scrollLimitRole = ScrollLimitRole.BarCount\n this._minVisibleBarCount.left = barCount\n return this\n }\n\n setRightMinVisibleBarCount (barCount: number): this {\n this._scrollLimitRole = ScrollLimitRole.BarCount\n this._minVisibleBarCount.right = barCount\n return this\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 this._chartStore.getActionStore().execute(ActionType.OnScroll)\n this._lastBarRightSideDiffBarCount = this._startLastBarRightSideDiffBarCount - distanceBarCount\n this.adjustVisibleRange()\n this._chartStore.getTooltipStore().recalculateCrosshair(true)\n this._chartStore.getChart().adjustPaneViewport(false, true, true, true)\n }\n\n getDataByDataIndex (dataIndex: number): Nullable<KLineData> {\n return this._chartStore.getDataList()[dataIndex] ?? null\n }\n\n coordinateToFloatIndex (x: number): number {\n const dataCount = this._chartStore.getDataList().length\n const deltaFromRight = (this._totalBarSpace - x) / this._barSpace\n const index = dataCount + this._lastBarRightSideDiffBarCount - deltaFromRight\n return Math.round(index * 1000000) / 1000000\n }\n\n dataIndexToTimestamp (dataIndex: number): Nullable<number> {\n const data = this.getDataByDataIndex(dataIndex)\n return data?.timestamp ?? null\n }\n\n timestampToDataIndex (timestamp: number): number {\n const dataList = this._chartStore.getDataList()\n if (dataList.length === 0) {\n return 0\n }\n return binarySearchNearest(dataList, 'timestamp', timestamp)\n }\n\n dataIndexToCoordinate (dataIndex: number): number {\n const dataCount = this._chartStore.getDataList().length\n const deltaFromRight = dataCount + this._lastBarRightSideDiffBarCount - dataIndex\n return Math.floor(this._totalBarSpace - (deltaFromRight - 0.5) * this._barSpace) - 0.5\n // return this._totalBarSpace - (deltaFromRight - 0.5) * this._barSpace\n }\n\n coordinateToDataIndex (x: number): number {\n return Math.ceil(this.coordinateToFloatIndex(x)) - 1\n }\n\n zoom (scale: number, coordinate?: Partial<Coordinate>): void {\n if (!this._zoomEnabled) {\n return\n }\n let zoomCoordinate: Nullable<Partial<Coordinate>> = coordinate ?? null\n if (!isNumber(zoomCoordinate?.x)) {\n const crosshair = this._chartStore.getTooltipStore().getCrosshair()\n zoomCoordinate = { x: crosshair?.x ?? this._totalBarSpace / 2 }\n }\n this._chartStore.getActionStore().execute(ActionType.OnZoom)\n const x = zoomCoordinate!.x!\n const floatIndex = this.coordinateToFloatIndex(x)\n const barSpace = this._barSpace + scale * (this._barSpace / 10)\n this.setBarSpace(barSpace, () => {\n this._lastBarRightSideDiffBarCount += (floatIndex - this.coordinateToFloatIndex(x))\n })\n }\n\n setZoomEnabled (enabled: boolean): this {\n this._zoomEnabled = enabled\n return this\n }\n\n getZoomEnabled (): boolean {\n return this._zoomEnabled\n }\n\n setScrollEnabled (enabled: boolean): this {\n this._scrollEnabled = enabled\n return this\n }\n\n getScrollEnabled (): boolean {\n return this._scrollEnabled\n }\n\n clear (): void {\n this._visibleRange = getDefaultVisibleRange()\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type KLineData from '../../common/KLineData'\nimport { type IndicatorTemplate, IndicatorSeries } from '../../component/Indicator'\n\ninterface Avp {\n avp?: number\n}\n\n/**\n * average price\n */\nconst averagePrice: IndicatorTemplate<Avp> = {\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/KLineData'\nimport { type IndicatorStyle, PolygonType } from '../../common/Styles'\nimport { formatValue } from '../../common/utils/format'\n\nimport { type Indicator, type IndicatorTemplate, type IndicatorFigureStylesCallbackData } from '../../component/Indicator'\n\ninterface Ao {\n ao?: number\n}\n\nconst awesomeOscillator: IndicatorTemplate<Ao> = {\n name: 'AO',\n shortName: 'AO',\n calcParams: [5, 34],\n figures: [{\n key: 'ao',\n title: 'AO: ',\n type: 'bar',\n baseValue: 0,\n styles: (data: IndicatorFigureStylesCallbackData<Ao>, indicator: Indicator<Ao>, defaultStyles: IndicatorStyle) => {\n const { prev, current } = data\n const prevAo = prev.indicatorData?.ao ?? Number.MIN_SAFE_INTEGER\n const currentAo = current.indicatorData?.ao ?? Number.MIN_SAFE_INTEGER\n let color: string\n if (currentAo > prevAo) {\n color = formatValue(indicator.styles, 'bars[0].upColor', (defaultStyles.bars)[0].upColor) as string\n } else {\n color = formatValue(indicator.styles, 'bars[0].downColor', (defaultStyles.bars)[0].downColor) as string\n }\n const style = currentAo > prevAo ? PolygonType.Stroke : PolygonType.Fill\n return { color, style, borderColor: color }\n }\n }],\n calc: (dataList: KLineData[], indicator: Indicator<Ao>) => {\n const params = indicator.calcParams\n const maxPeriod = Math.max(params[0] as number, params[1] as number)\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/KLineData'\nimport { type Indicator, type 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<Bias> = {\n name: 'BIAS',\n shortName: 'BIAS',\n calcParams: [6, 12, 24],\n figures: [\n { key: 'bias1', title: 'BIAS6: ', type: 'line' },\n { key: 'bias2', title: 'BIAS12: ', type: 'line' },\n { key: 'bias3', title: 'BIAS24: ', type: 'line' }\n ],\n regenerateFigures: (params: any[]) => {\n return params.map((p: number, i: number) => {\n return { key: `bias${i + 1}`, title: `BIAS${p}: `, type: 'line' }\n })\n },\n calc: (dataList: KLineData[], indicator: Indicator<Bias>) => {\n const { calcParams: params, figures } = indicator\n const closeSums: number[] = []\n return dataList.map((kLineData: KLineData, i: number) => {\n const bias: Bias = {}\n const close = kLineData.close\n params.forEach((p, index) => {\n closeSums[index] = (closeSums[index] ?? 0) + close\n if (i >= p - 1) {\n const mean = closeSums[index] / params[index]\n bias[figures[index].key] = (close - mean) / mean * 100\n\n closeSums[index] -= dataList[i - (p - 1)].close\n }\n })\n return bias\n })\n }\n}\n\nexport default bias\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type KLineData from '../../common/KLineData'\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<Boll> = {\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<Boll>) => {\n const params = indicator.calcParams\n const p = params[0] - 1\n let closeSum = 0\n return dataList.map((kLineData: KLineData, i: number) => {\n const close = kLineData.close\n const boll: Boll = {}\n closeSum += close\n if (i >= p) {\n boll.mid = closeSum / params[0]\n const md = getBollMd(dataList.slice(i - p, i + 1), boll.mid)\n boll.up = boll.mid + params[1] * md\n boll.dn = boll.mid - params[1] * md\n closeSum -= dataList[i - p].close\n }\n return boll\n })\n }\n}\n\nexport default bollingerBands\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type KLineData from '../../common/KLineData'\nimport { type Indicator, type 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<Brar> = {\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<Brar>) => {\n const params = indicator.calcParams\n let hcy = 0\n let cyl = 0\n let ho = 0\n let ol = 0\n return dataList.map((kLineData: KLineData, i: number) => {\n const brar: Brar = {}\n const high = kLineData.high\n const low = kLineData.low\n const open = kLineData.open\n const prevClose = (dataList[i - 1] ?? kLineData).close\n ho += (high - open)\n ol += (open - low)\n hcy += (high - prevClose)\n cyl += (prevClose - low)\n if (i >= params[0] - 1) {\n if (ol !== 0) {\n brar.ar = ho / ol * 100\n } else {\n brar.ar = 0\n }\n if (cyl !== 0) {\n brar.br = hcy / cyl * 100\n } else {\n brar.br = 0\n }\n const agoKLineData = dataList[i - (params[0] - 1)]\n const agoHigh = agoKLineData.high\n const agoLow = agoKLineData.low\n const agoOpen = agoKLineData.open\n const agoPreClose = (dataList[i - params[0]] ?? dataList[i - (params[0] - 1)]).close\n hcy -= (agoHigh - agoPreClose)\n cyl -= (agoPreClose - agoLow)\n ho -= (agoHigh - agoOpen)\n ol -= (agoOpen - agoLow)\n }\n return brar\n })\n }\n}\n\nexport default brar\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type KLineData from '../../common/KLineData'\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<Bbi> = {\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<Bbi>) => {\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/KLineData'\nimport { type Indicator, type 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<Cci> = {\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<Cci>) => {\n const params = indicator.calcParams\n const p = params[0] - 1\n let tpSum = 0\n const tpList: number[] = []\n return dataList.map((kLineData: KLineData, i: number) => {\n const cci: Cci = {}\n const tp = (kLineData.high + kLineData.low + kLineData.close) / 3\n tpSum += tp\n tpList.push(tp)\n if (i >= p) {\n const maTp = tpSum / params[0]\n const sliceTpList = tpList.slice(i - p, i + 1)\n let sum = 0\n sliceTpList.forEach(tp => {\n sum += Math.abs(tp - maTp)\n })\n const md = sum / params[0]\n cci.cci = md !== 0 ? (tp - maTp) / md / 0.015 : 0\n const agoTp = (dataList[i - p].high + dataList[i - p].low + dataList[i - p].close) / 3\n tpSum -= agoTp\n }\n return cci\n })\n }\n}\n\nexport default commodityChannelIndex\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http:*www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type KLineData from '../../common/KLineData'\nimport { type Indicator, type 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<Cr> = {\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<Cr>) => {\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/KLineData'\nimport { type Indicator, type 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<Dma> = {\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<Dma>) => {\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/KLineData'\nimport { type Indicator, type 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<Dmi> = {\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<Dmi>) => {\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/KLineData'\nimport { type Indicator, type 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<Emv> = {\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<Emv>) => {\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/KLineData'\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<Ema> = {\n name: 'EMA',\n shortName: 'EMA',\n series: IndicatorSeries.Price,\n calcParams: [6, 12, 20],\n precision: 2,\n shouldOhlc: true,\n figures: [\n { key: 'ema1', title: 'EMA6: ', type: 'line' },\n { key: 'ema2', title: 'EMA12: ', type: 'line' },\n { key: 'ema3', title: 'EMA20: ', type: 'line' }\n ],\n regenerateFigures: (params: any[]) => {\n return params.map((p: number, i: number) => {\n return { key: `ema${i + 1}`, title: `EMA${p}: `, type: 'line' }\n })\n },\n calc: (dataList: KLineData[], indicator: Indicator<Ema>) => {\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/KLineData'\nimport { type Indicator, type 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<Mtm> = {\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<Mtm>) => {\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/KLineData'\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<Ma> = {\n name: 'MA',\n shortName: 'MA',\n series: IndicatorSeries.Price,\n calcParams: [5, 10, 30, 60],\n precision: 2,\n shouldOhlc: true,\n figures: [\n { key: 'ma5', title: 'MA5: ', type: 'line' },\n { key: 'ma10', title: 'MA10: ', type: 'line' },\n { key: 'ma30', title: 'MA30: ', type: 'line' },\n { key: 'ma60', title: 'MA60: ', type: 'line' }\n ],\n regenerateFigures: (params: any[]) => {\n return params.map((p: number, i: number) => {\n return { key: `ma${i + 1}`, title: `MA${p}: `, type: 'line' }\n })\n },\n calc: (dataList: KLineData[], indicator: Indicator<Ma>) => {\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/KLineData'\nimport { type IndicatorStyle, PolygonType } from '../../common/Styles'\n\nimport { formatValue } from '../../common/utils/format'\n\nimport { type Indicator, type IndicatorTemplate, type IndicatorFigureStylesCallbackData } from '../../component/Indicator'\n\ninterface Macd {\n dif?: number\n dea?: number\n macd?: number\n}\n\n/**\n * MACD:参数快线移动平均、慢线移动平均、移动平均,\n * 默认参数值12、26、9。\n * 公式:⒈首先分别计算出收盘价12日指数平滑移动平均线与26日指数平滑移动平均线,分别记为EMA(12)与EMA(26)。\n * ⒉求这两条指数平滑移动平均线的差,即:DIFF = EMA(SHORT) - EMA(LONG)。\n * ⒊再计算DIFF的M日的平均的指数平滑移动平均线,记为DEA。\n * ⒋最后用DIFF减DEA,得MACD。MACD通常绘制成围绕零轴线波动的柱形图。MACD柱状大于0涨颜色,小于0跌颜色。\n */\nconst movingAverageConvergenceDivergence: IndicatorTemplate<Macd> = {\n name: 'MACD',\n shortName: 'MACD',\n calcParams: [12, 26, 9],\n figures: [\n { key: 'dif', title: 'DIF: ', type: 'line' },\n { key: 'dea', title: 'DEA: ', type: 'line' },\n {\n key: 'macd',\n title: 'MACD: ',\n type: 'bar',\n baseValue: 0,\n styles: (data: IndicatorFigureStylesCallbackData<Macd>, indicator: Indicator, defaultStyles: IndicatorStyle) => {\n const { prev, current } = data\n const prevMacd = prev.indicatorData?.macd ?? Number.MIN_SAFE_INTEGER\n const currentMacd = current.indicatorData?.macd ?? Number.MIN_SAFE_INTEGER\n let color: string\n if (currentMacd > 0) {\n color = formatValue(indicator.styles, 'bars[0].upColor', (defaultStyles.bars)[0].upColor) as string\n } else if (currentMacd < 0) {\n color = formatValue(indicator.styles, 'bars[0].downColor', (defaultStyles.bars)[0].downColor) as string\n } else {\n color = formatValue(indicator.styles, 'bars[0].noChangeColor', (defaultStyles.bars)[0].noChangeColor) as string\n }\n const style = prevMacd < currentMacd ? PolygonType.Stroke : PolygonType.Fill\n return { style, color, borderColor: color }\n }\n }\n ],\n calc: (dataList: KLineData[], indicator: Indicator<Macd>) => {\n const params = indicator.calcParams as number[]\n let closeSum = 0\n let emaShort: number\n let emaLong: number\n let dif = 0\n let difSum = 0\n let dea = 0\n const maxPeriod = Math.max(params[0], params[1])\n return dataList.map((kLineData: KLineData, i: number) => {\n const macd: Macd = {}\n const close = kLineData.close\n closeSum += close\n if (i >= params[0] - 1) {\n if (i > params[0] - 1) {\n emaShort = (2 * close + (params[0] - 1) * emaShort) / (params[0] + 1)\n } else {\n emaShort = closeSum / params[0]\n }\n }\n if (i >= params[1] - 1) {\n if (i > params[1] - 1) {\n emaLong = (2 * close + (params[1] - 1) * emaLong) / (params[1] + 1)\n } else {\n emaLong = closeSum / params[1]\n }\n }\n if (i >= maxPeriod - 1) {\n dif = emaShort - emaLong\n macd.dif = dif\n difSum += dif\n if (i >= maxPeriod + params[2] - 2) {\n if (i > maxPeriod + params[2] - 2) {\n dea = (dif * 2 + dea * (params[2] - 1)) / (params[2] + 1)\n } else {\n dea = difSum / params[2]\n }\n macd.macd = (dif - dea) * 2\n macd.dea = dea\n }\n }\n return macd\n })\n }\n}\n\nexport default movingAverageConvergenceDivergence\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type KLineData from '../../common/KLineData'\nimport { type Indicator, type 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<Obv> = {\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<Obv>) => {\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/KLineData'\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<Pvt> = {\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/KLineData'\nimport { type Indicator, type 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<Psy> = {\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<Psy>) => {\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/KLineData'\nimport { type Indicator, type 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<Roc> = {\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<Roc>) => {\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/KLineData'\nimport { type Indicator, type 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<Rsi> = {\n name: 'RSI',\n shortName: 'RSI',\n calcParams: [6, 12, 24],\n figures: [\n { key: 'rsi1', title: 'RSI1: ', type: 'line' },\n { key: 'rsi2', title: 'RSI2: ', type: 'line' },\n { key: 'rsi3', title: 'RSI3: ', type: 'line' }\n ],\n regenerateFigures: (params: any[]) => {\n return params.map((_: any, index: number) => {\n const num = index + 1\n return { key: `rsi${num}`, title: `RSI${num}: `, type: 'line' }\n })\n },\n calc: (dataList: KLineData[], indicator: Indicator<Rsi>) => {\n const { calcParams: params, figures } = indicator\n const sumCloseAs: number[] = []\n const sumCloseBs: number[] = []\n return dataList.map((kLineData, i) => {\n const rsi = {}\n const prevClose = (dataList[i - 1] ?? kLineData).close\n const tmp = kLineData.close - prevClose\n params.forEach((p, index) => {\n if (tmp > 0) {\n sumCloseAs[index] = (sumCloseAs[index] ?? 0) + tmp\n } else {\n sumCloseBs[index] = (sumCloseBs[index] ?? 0) + Math.abs(tmp)\n }\n if (i >= p - 1) {\n if (sumCloseBs[index] !== 0) {\n rsi[figures[index].key] = 100 - (100.0 / (1 + sumCloseAs[index] / sumCloseBs[index]))\n } else {\n rsi[figures[index].key] = 0\n }\n const agoData = dataList[i - (p - 1)]\n const agoPreData = dataList[i - p] ?? agoData\n const agoTmp = agoData.close - agoPreData.close\n if (agoTmp > 0) {\n sumCloseAs[index] -= agoTmp\n } else {\n sumCloseBs[index] -= Math.abs(agoTmp)\n }\n }\n })\n return rsi\n })\n }\n}\n\nexport default relativeStrengthIndex\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type KLineData from '../../common/KLineData'\nimport { type Indicator, type IndicatorTemplate, IndicatorSeries } from '../../component/Indicator'\n\ninterface Sma {\n sma?: number\n}\n\n/**\n * sma\n */\nconst simpleMovingAverage: IndicatorTemplate<Sma> = {\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<Sma>) => {\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/KLineData'\nimport { type Indicator, type 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<Kdj> = {\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<Kdj>) => {\n const params = indicator.calcParams\n const result: Kdj[] = []\n dataList.forEach((kLineData: KLineData, i: number) => {\n const kdj: Kdj = {}\n const close = kLineData.close\n if (i >= params[0] - 1) {\n const lhn = getMaxMin<KLineData>(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/KLineData'\nimport { type IndicatorStyle } from '../../common/Styles'\nimport { formatValue } from '../../common/utils/format'\n\nimport { type Indicator, type IndicatorTemplate, IndicatorSeries, type IndicatorFigureStylesCallbackData } from '../../component/Indicator'\n\ninterface Sar {\n sar?: number\n}\n\nconst stopAndReverse: IndicatorTemplate<Sar> = {\n name: 'SAR',\n shortName: 'SAR',\n series: IndicatorSeries.Price,\n calcParams: [2, 2, 20],\n precision: 2,\n shouldOhlc: true,\n figures: [\n {\n key: 'sar',\n title: 'SAR: ',\n type: 'circle',\n styles: (data: IndicatorFigureStylesCallbackData<Sar>, indicator: Indicator, defaultStyles: IndicatorStyle) => {\n const { current } = data\n const sar = current.indicatorData?.sar ?? Number.MIN_SAFE_INTEGER\n const kLineData = current.kLineData!\n const halfHL = (kLineData?.high + kLineData?.low) / 2\n const color = sar < halfHL\n ? formatValue(indicator.styles, 'circles[0].upColor', (defaultStyles.circles)[0].upColor) as string\n : formatValue(indicator.styles, 'circles[0].downColor', (defaultStyles.circles)[0].downColor) as string\n return { color }\n }\n }\n ],\n calc: (dataList: KLineData[], indicator: Indicator<Sar>) => {\n const params = indicator.calcParams\n const startAf = params[0] / 100\n const step = params[1] / 100\n const maxAf = params[2] / 100\n\n // 加速因子\n let af = startAf\n // 极值\n let ep = -100\n // 判断是上涨还是下跌 false:下跌\n let isIncreasing = false\n let sar = 0\n return dataList.map((kLineData: KLineData, i: number) => {\n // 上一个周期的sar\n const preSar = sar\n const high = kLineData.high\n const low = kLineData.low\n if (isIncreasing) {\n // 上涨\n if (ep === -100 || ep < high) {\n // 重新初始化值\n ep = high\n af = Math.min(af + step, maxAf)\n }\n sar = preSar + af * (ep - preSar)\n const lowMin = Math.min(dataList[Math.max(1, i) - 1].low, low)\n if (sar > kLineData.low) {\n sar = ep\n // 重新初始化值\n af = startAf\n ep = -100\n isIncreasing = !isIncreasing\n } else if (sar > lowMin) {\n sar = lowMin\n }\n } else {\n if (ep === -100 || ep > low) {\n // 重新初始化值\n ep = low\n af = Math.min(af + step, maxAf)\n }\n sar = preSar + af * (ep - preSar)\n const highMax = Math.max(dataList[Math.max(1, i) - 1].high, high)\n if (sar < kLineData.high) {\n sar = ep\n // 重新初始化值\n af = 0\n ep = -100\n isIncreasing = !isIncreasing\n } else if (sar < highMax) {\n sar = highMax\n }\n }\n return { sar }\n })\n }\n}\n\nexport default stopAndReverse\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http:*www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type KLineData from '../../common/KLineData'\nimport { type Indicator, type 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<Trix> = {\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<Trix>) => {\n const params = indicator.calcParams as number[]\n let closeSum = 0\n let ema1: number\n let ema2: number\n let oldTr: number\n let ema1Sum = 0\n let ema2Sum = 0\n let trixSum = 0\n const result: Trix[] = []\n dataList.forEach((kLineData: KLineData, i: number) => {\n const trix: Trix = {}\n const close = kLineData.close\n closeSum += close\n if (i >= params[0] - 1) {\n if (i > params[0] - 1) {\n ema1 = (2 * close + (params[0] - 1) * ema1) / (params[0] + 1)\n } else {\n ema1 = closeSum / params[0]\n }\n ema1Sum += ema1\n if (i >= params[0] * 2 - 2) {\n if (i > params[0] * 2 - 2) {\n ema2 = (2 * ema1 + (params[0] - 1) * ema2) / (params[0] + 1)\n } else {\n ema2 = ema1Sum / params[0]\n }\n ema2Sum += ema2\n if (i >= params[0] * 3 - 3) {\n let tr: number\n let trixValue = 0\n if (i > params[0] * 3 - 3) {\n tr = (2 * ema2 + (params[0] - 1) * oldTr) / (params[0] + 1)\n trixValue = (tr - oldTr) / oldTr * 100\n } else {\n tr = ema2Sum / params[0]\n }\n oldTr = tr\n trix.trix = trixValue\n trixSum += trixValue\n if (i >= params[0] * 3 + params[1] - 4) {\n trix.maTrix = trixSum / params[1]\n trixSum -= (result[i - (params[1] - 1)].trix ?? 0)\n }\n }\n }\n }\n result.push(trix)\n })\n return result\n }\n}\n\nexport default tripleExponentiallySmoothedAverage\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type KLineData from '../../common/KLineData'\nimport { type IndicatorStyle } from '../../common/Styles'\nimport { formatValue } from '../../common/utils/format'\nimport { isValid } from '../../common/utils/typeChecks'\n\nimport { type Indicator, type IndicatorTemplate, type IndicatorFigureStylesCallbackData, IndicatorSeries, type IndicatorFigure } from '../../component/Indicator'\n\ninterface Vol {\n volume?: number\n ma1?: number\n ma2?: number\n ma3?: number\n}\n\nfunction getVolumeFigure (): IndicatorFigure<Vol> {\n return {\n key: 'volume',\n title: 'VOLUME: ',\n type: 'bar',\n baseValue: 0,\n styles: (data: IndicatorFigureStylesCallbackData<Vol>, indicator: Indicator, defaultStyles: IndicatorStyle) => {\n const kLineData = data.current.kLineData\n let color = formatValue(indicator.styles, 'bars[0].noChangeColor', (defaultStyles.bars)[0].noChangeColor)\n if (isValid(kLineData)) {\n if (kLineData.close > kLineData.open) {\n color = formatValue(indicator.styles, 'bars[0].upColor', (defaultStyles.bars)[0].upColor)\n } else if (kLineData.close < kLineData.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<Vol> = {\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: any[]) => {\n const figures: Array<IndicatorFigure<Vol>> = params.map((p: number, i: number) => {\n return { key: `ma${i + 1}`, title: `MA${p}: `, type: 'line' }\n })\n figures.push(getVolumeFigure())\n return figures\n },\n calc: (dataList: KLineData[], indicator: Indicator<Vol>) => {\n const { calcParams: params, figures } = indicator\n const volSums: number[] = []\n return dataList.map((kLineData: KLineData, i: number) => {\n const volume = kLineData.volume ?? 0\n const vol: Vol = { volume }\n params.forEach((p, index) => {\n volSums[index] = (volSums[index] ?? 0) + volume\n if (i >= p - 1) {\n vol[figures[index].key] = volSums[index] / p\n volSums[index] -= (dataList[i - (p - 1)].volume ?? 0)\n }\n })\n return vol\n })\n }\n}\n\nexport default volume\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type KLineData from '../../common/KLineData'\nimport { type Indicator, type 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<Vr> = {\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<Vr>) => {\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/KLineData'\nimport { type Indicator, type 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<Wr> = {\n name: 'WR',\n shortName: 'WR',\n calcParams: [6, 10, 14],\n figures: [\n { key: 'wr1', title: 'WR1: ', type: 'line' },\n { key: 'wr2', title: 'WR2: ', type: 'line' },\n { key: 'wr3', title: 'WR3: ', type: 'line' }\n ],\n regenerateFigures: (params: any[]) => {\n return params.map((_, i: number) => {\n return { key: `wr${i + 1}`, title: `WR${i + 1}: `, type: 'line' }\n })\n },\n calc: (dataList: KLineData[], indicator: Indicator<Wr>) => {\n const { calcParams: params, figures } = indicator\n return dataList.map((kLineData, i) => {\n const wr: Wr = {}\n const close = kLineData.close\n params.forEach((param, index) => {\n const p = param - 1\n if (i >= p) {\n const hln = getMaxMin<KLineData>(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<string, IndicatorConstructor> = {}\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<D> (indicator: IndicatorTemplate<D>): void {\n indicators[indicator.name] = IndicatorImp.extend(indicator)\n}\n\nfunction getIndicatorClass (name: string): Nullable<IndicatorConstructor> {\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 type Nullable from '../common/Nullable'\nimport { isValid, isString, isArray, isNumber, isBoolean, isFunction } from '../common/utils/typeChecks'\n\nimport type ChartStore from './ChartStore'\n\nimport { type IndicatorCreate, type Indicator } from '../component/Indicator'\nimport type IndicatorImp from '../component/Indicator'\nimport { IndicatorSeries } from '../component/Indicator'\nimport { getIndicatorClass } from '../extension/indicator/index'\n\nexport default class IndicatorStore {\n private readonly _chartStore: ChartStore\n private readonly _instances = new Map<string, IndicatorImp[]>()\n\n constructor (chartStore: ChartStore) {\n this._chartStore = chartStore\n }\n\n private _overrideInstance (instance: IndicatorImp, indicator: Partial<Indicator>): [boolean, boolean, boolean] {\n const {\n shortName, series, calcParams, precision, figures, minValue, maxValue,\n shouldOhlc, shouldFormatBigNumber, visible, zLevel, styles, extendData,\n regenerateFigures, createTooltipDataSource, draw, calc\n } = indicator\n let updateFlag = false\n if (isString(shortName) && instance.setShortName(shortName)) {\n updateFlag = true\n }\n if (isValid(series) && instance.setSeries(series)) {\n updateFlag = true\n }\n let calcFlag = false\n if (isArray(calcParams) && instance.setCalcParams(calcParams)) {\n updateFlag = true\n calcFlag = true\n }\n if (isArray(figures) && instance.setFigures(figures)) {\n updateFlag = true\n calcFlag = true\n }\n if (minValue !== undefined && instance.setMinValue(minValue)) {\n updateFlag = true\n }\n if (maxValue !== undefined && instance.setMinValue(maxValue)) {\n updateFlag = true\n }\n if (isNumber(precision) && instance.setPrecision(precision)) {\n updateFlag = true\n }\n if (isBoolean(shouldOhlc) && instance.setShouldOhlc(shouldOhlc)) {\n updateFlag = true\n }\n if (isBoolean(shouldFormatBigNumber) && instance.setShouldFormatBigNumber(shouldFormatBigNumber)) {\n updateFlag = true\n }\n if (isBoolean(visible) && instance.setVisible(visible)) {\n updateFlag = true\n }\n let sortFlag = false\n if (isNumber(zLevel) && instance.setZLevel(zLevel)) {\n updateFlag = true\n sortFlag = true\n }\n if (isValid(styles) && instance.setStyles(styles)) {\n updateFlag = true\n }\n if (extendData !== undefined && instance.setExtendData(extendData)) {\n updateFlag = true\n calcFlag = true\n }\n if (regenerateFigures !== undefined && instance.setRegenerateFigures(regenerateFigures)) {\n updateFlag = true\n }\n if (createTooltipDataSource !== undefined && instance.setCreateTooltipDataSource(createTooltipDataSource)) {\n updateFlag = true\n }\n if (draw !== undefined && instance.setDraw(draw)) {\n updateFlag = true\n }\n if (isFunction(calc)) {\n instance.calc = calc\n calcFlag = true\n }\n return [updateFlag, calcFlag, sortFlag]\n }\n\n private _sort (paneId?: string): void {\n if (isString(paneId)) {\n this._instances.get(paneId)?.sort((i1, i2) => i1.zLevel - i2.zLevel)\n } else {\n this._instances.forEach(paneInstances => {\n paneInstances.sort((i1, i2) => i1.zLevel - i2.zLevel)\n })\n }\n }\n\n async addInstance (indicator: IndicatorCreate, paneId: string, isStack: boolean): Promise<boolean> {\n const { name } = indicator\n let paneInstances = this._instances.get(paneId)\n if (isValid(paneInstances)) {\n const instance = paneInstances.find(ins => ins.name === name)\n if (isValid(instance)) {\n return await Promise.reject(new Error('Duplicate indicators.'))\n }\n }\n if (!isValid(paneInstances)) {\n paneInstances = []\n }\n const IndicatorClazz = getIndicatorClass(name)!\n const instance = new IndicatorClazz()\n\n this.synchronizeSeriesPrecision(instance)\n this._overrideInstance(instance, indicator)\n if (!isStack) {\n paneInstances = []\n }\n paneInstances.push(instance)\n this._instances.set(paneId, paneInstances)\n this._sort(paneId)\n return await instance.calcIndicator(this._chartStore.getDataList())\n }\n\n getInstances (paneId: string): IndicatorImp[] {\n return this._instances.get(paneId) ?? []\n }\n\n removeInstance (paneId: string, name?: string): boolean {\n let removed = false\n const paneInstances = this._instances.get(paneId)\n if (isValid(paneInstances)) {\n if (isString(name)) {\n const index = paneInstances.findIndex(ins => ins.name === name)\n if (index > -1) {\n paneInstances.splice(index, 1)\n removed = true\n }\n } else {\n this._instances.set(paneId, [])\n removed = true\n }\n if (this._instances.get(paneId)?.length === 0) {\n this._instances.delete(paneId)\n }\n }\n return removed\n }\n\n hasInstances (paneId: string): boolean {\n return this._instances.has(paneId)\n }\n\n async calcInstance (name?: string, paneId?: string): Promise<boolean> {\n const tasks: Array<Promise<boolean>> = []\n if (isString(name)) {\n if (isString(paneId)) {\n const paneInstances = this._instances.get(paneId)\n if (isValid(paneInstances)) {\n const instance = paneInstances.find(ins => ins.name === name)\n if (isValid(instance)) {\n tasks.push(instance.calcIndicator(this._chartStore.getDataList()))\n }\n }\n } else {\n this._instances.forEach(paneInstances => {\n const instance = paneInstances.find(ins => ins.name === name)\n if (isValid(instance)) {\n tasks.push(instance.calcIndicator(this._chartStore.getDataList()))\n }\n })\n }\n } else {\n this._instances.forEach(paneInstances => {\n paneInstances.forEach(instance => {\n tasks.push(instance.calcIndicator(this._chartStore.getDataList()))\n })\n })\n }\n const result = await Promise.all(tasks)\n return result.includes(true)\n }\n\n getInstanceByPaneId (paneId?: string, name?: string): Nullable<Indicator> | Nullable<Map<string, Indicator>> | Map<string, Map<string, Indicator>> {\n const createMapping: ((instances: IndicatorImp[]) => Map<string, Indicator>) = (instances: IndicatorImp[]) => {\n const mapping = new Map<string, Indicator>()\n instances.forEach(ins => {\n mapping.set(ins.name, ins)\n })\n return mapping\n }\n\n if (isString(paneId)) {\n const paneInstances = this._instances.get(paneId) ?? []\n if (isString(name)) {\n return paneInstances?.find(ins => ins.name === name) ?? null\n }\n return createMapping(paneInstances)\n }\n const mapping = new Map<string, Map<string, Indicator>>()\n this._instances.forEach((instances, paneId) => {\n mapping.set(paneId, createMapping(instances))\n })\n return mapping\n }\n\n synchronizeSeriesPrecision (indicator?: IndicatorImp): void {\n const { price: pricePrecision, volume: volumePrecision } = this._chartStore.getPrecision()\n const synchronize: ((instance: IndicatorImp) => void) = instance => {\n switch (instance.series) {\n case IndicatorSeries.Price: {\n instance.setPrecision(pricePrecision, true)\n break\n }\n case IndicatorSeries.Volume: {\n instance.setPrecision(volumePrecision, true)\n break\n }\n default: { break }\n }\n }\n\n if (isValid(indicator)) {\n synchronize(indicator)\n } else {\n this._instances.forEach(paneInstances => {\n paneInstances.forEach(instance => {\n synchronize(instance)\n })\n })\n }\n }\n\n async override (indicator: IndicatorCreate, paneId: Nullable<string>): Promise<[boolean, boolean]> {\n const { name } = indicator\n let instances = new Map<string, IndicatorImp[]>()\n if (paneId !== null) {\n const paneInstances = this._instances.get(paneId)\n if (isValid(paneInstances)) {\n instances.set(paneId, paneInstances)\n }\n } else {\n instances = this._instances\n }\n let onlyUpdateFlag = false\n const tasks: Array<Promise<boolean>> = []\n let sortFlag = false\n instances.forEach(paneInstances => {\n const instance = paneInstances.find(ins => ins.name === name)\n if (isValid(instance)) {\n const overrideResult = this._overrideInstance(instance, indicator)\n if (overrideResult[2]) {\n sortFlag = true\n }\n if (overrideResult[1]) {\n tasks.push(instance.calcIndicator(this._chartStore.getDataList()))\n } else {\n if (overrideResult[0]) {\n onlyUpdateFlag = true\n }\n }\n }\n })\n if (sortFlag) {\n this._sort()\n }\n const result = await Promise.all(tasks)\n return [onlyUpdateFlag, result.includes(true)]\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type Nullable from '../common/Nullable'\nimport type KLineData from '../common/KLineData'\nimport type Crosshair from '../common/Crosshair'\nimport { UpdateLevel } from '../common/Updater'\nimport { isNumber } from '../common/utils/typeChecks'\n\nimport type ChartStore from './ChartStore'\n\nexport interface TooltipIcon {\n paneId: string\n indicatorName: string\n iconId: string\n}\n\nexport default class TooltipStore {\n private readonly _chartStore: ChartStore\n private _crosshair: Crosshair = {}\n private _activeIcon: Nullable<TooltipIcon> = null\n\n constructor (chartStore: ChartStore) {\n this._chartStore = chartStore\n }\n\n /**\n * 设置十字光标点信息\n * @param crosshair\n * @param notInvalidate\n */\n setCrosshair (crosshair?: Crosshair, notInvalidate?: boolean): void {\n const dataList = this._chartStore.getDataList()\n const cr = crosshair ?? {}\n let realDataIndex: number\n let dataIndex: number\n if (isNumber(cr.x)) {\n realDataIndex = this._chartStore.getTimeScaleStore().coordinateToDataIndex(cr.x)\n if (realDataIndex < 0) {\n dataIndex = 0\n } else if (realDataIndex > dataList.length - 1) {\n dataIndex = dataList.length - 1\n } else {\n dataIndex = realDataIndex\n }\n } else {\n realDataIndex = dataList.length - 1\n dataIndex = realDataIndex\n }\n const kLineData: Nullable<KLineData> = dataList[dataIndex]\n const realX = this._chartStore.getTimeScaleStore().dataIndexToCoordinate(realDataIndex)\n const prevCrosshair = { x: this._crosshair.x, y: this._crosshair.y, paneId: this._crosshair.paneId }\n this._crosshair = { ...cr, realX, kLineData, realDataIndex, dataIndex }\n if (\n prevCrosshair.x !== cr.x || prevCrosshair.y !== cr.y || prevCrosshair.paneId !== cr.paneId\n ) {\n if (kLineData !== null) {\n this._chartStore.getChart().crosshairChange(this._crosshair)\n }\n if (!(notInvalidate ?? false)) {\n this._chartStore.getChart().updatePane(UpdateLevel.Overlay)\n }\n }\n }\n\n /**\n * 重新计算十字光标\n * @param notInvalidate\n */\n recalculateCrosshair (notInvalidate: boolean): void {\n this.setCrosshair(this._crosshair, notInvalidate)\n }\n\n /**\n * 获取crosshair信息\n * @returns\n */\n getCrosshair (): Crosshair {\n return this._crosshair\n }\n\n setActiveIcon (icon?: TooltipIcon): void {\n this._activeIcon = icon ?? null\n }\n\n getActiveIcon (): Nullable<TooltipIcon> {\n return this._activeIcon\n }\n\n clear (): void {\n this.setCrosshair({}, true)\n this.setActiveIcon()\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 { formatThousands, formatFoldDecimal } from '../../common/utils/format'\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: ({ coordinates, bounding, overlay, precision, thousandsSeparator, decimalFoldThreshold, yAxis }) => {\n const points = overlay.points\n if (coordinates.length > 0) {\n const currentPrecision = (yAxis?.isInCandle() ?? true) ? precision.price : precision.excludePriceVolumeMax\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 = formatFoldDecimal(formatThousands(((points[1].value ?? 0) + valueDif * percent).toFixed(currentPrecision), thousandsSeparator), decimalFoldThreshold)\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 return [{\n type: 'line',\n attrs: {\n coordinates: [\n {\n x: 0,\n y: coordinates[0].y\n }, {\n x: bounding.width,\n y: coordinates[0].y\n }\n ]\n }\n }]\n }\n}\n\nexport default horizontalStraightLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isValid } from './utils/typeChecks'\n\nimport { type EventName, type MouseTouchEvent, type 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<EventName, MouseTouchEventCallback>()\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 eventful of this._children) {\n if (eventful.checkEventOn(event)) {\n return true\n }\n }\n return false\n }\n\n dispatchEvent (name: EventName, event: MouseTouchEvent, other?: number): boolean {\n const start = this._children.length - 1\n if (start > -1) {\n for (let i = start; i > -1; i--) {\n if (this._children[i].dispatchEvent(name, event, other)) {\n return true\n }\n }\n }\n return this.onEvent(name, event, other)\n }\n\n addChild (eventful: Eventful): 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<A = any, S = any> {\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<A = any, S = any> = Pick<Figure<A, S>, 'name' | 'draw' | 'checkEventOn'>\n\nexport type FigureCreate<A = any, S = any> = Pick<Figure<A, S>, 'name' | 'attrs' | 'styles'>\n\nexport type FigureInnerConstructor<A = any, S = any> = new (figure: FigureCreate<A, S>) => FigureImp<A, S>\n\nexport type FigureConstructor<A = any, S = any> = new (figure: FigureCreate<A, S>) => ({ draw: (ctx: CanvasRenderingContext2D) => void })\n\nexport default abstract class FigureImp<A = any, S = any> extends Eventful implements Omit<Figure<A, S>, '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<A, S> (figure: FigureTemplate<A, S>): new (figure: FigureCreate) => FigureImp<A, S> {\n class Custom extends FigureImp<A, S> {\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 (let i = 0; i < lines.length; i++) {\n const { coordinates } = lines[i]\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<number[]>, 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<number[]> {\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<SmoothLineStyle>): 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 lines.forEach(({ coordinates }) => {\n if (coordinates.length > 1) {\n ctx.beginPath()\n ctx.moveTo(coordinates[0].x, coordinates[0].y)\n lineTo(ctx, coordinates, smooth)\n ctx.stroke()\n ctx.closePath()\n }\n })\n}\n\nexport interface LineAttrs {\n coordinates: Coordinate[]\n}\n\nconst line: FigureTemplate<LineAttrs | LineAttrs[], Partial<SmoothLineStyle>> = {\n name: 'line',\n checkEventOn: checkCoordinateOnLine,\n draw: (ctx: CanvasRenderingContext2D, attrs: LineAttrs | LineAttrs[], styles: Partial<SmoothLineStyle>) => {\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 return [\n {\n type: 'line',\n attrs: getParallelLines(coordinates, bounding)\n }\n ]\n }\n}\n\nexport default parallelStraightLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { 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 return [\n {\n type: 'line',\n attrs: getParallelLines(coordinates, bounding, 1)\n }\n ]\n }\n}\n\nexport default priceChannelLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { type OverlayTemplate } from '../../component/Overlay'\n\nimport { formatThousands, formatFoldDecimal } from '../../common/utils/format'\n\nconst priceLine: OverlayTemplate = {\n name: 'priceLine',\n totalStep: 2,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding, precision, overlay, thousandsSeparator, decimalFoldThreshold, yAxis }) => {\n const { value = 0 } = (overlay.points)[0]\n const currentPrecision = (yAxis?.isInCandle() ?? true) ? precision.price : precision.excludePriceVolumeMax\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: formatFoldDecimal(formatThousands(value.toFixed(currentPrecision), thousandsSeparator), decimalFoldThreshold),\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: Coordinate\n if (coordinates[0].x === coordinates[1].x && coordinates[0].y !== coordinates[1].y) {\n if (coordinates[0].y < coordinates[1].y) {\n coordinate = {\n x: coordinates[0].x,\n y: bounding.height\n }\n } else {\n coordinate = {\n x: coordinates[0].x,\n y: 0\n }\n }\n } else if (coordinates[0].x > coordinates[1].x) {\n coordinate = {\n x: 0,\n y: getLinearYFromCoordinates(coordinates[0], coordinates[1], { x: 0, y: coordinates[0].y })\n }\n } else {\n coordinate = {\n x: bounding.width,\n y: getLinearYFromCoordinates(coordinates[0], coordinates[1], { x: bounding.width, y: coordinates[0].y })\n }\n }\n return { coordinates: [coordinates[0], coordinate] }\n }\n return []\n}\n\nconst rayLine: OverlayTemplate = {\n name: 'rayLine',\n totalStep: 3,\n needDefaultPointFigure: true,\n needDefaultXAxisFigure: true,\n needDefaultYAxisFigure: true,\n createPointFigures: ({ coordinates, bounding }) => {\n return [\n {\n type: 'line',\n attrs: getRayLine(coordinates, bounding)\n }\n ]\n }\n}\n\nexport default rayLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { 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 return [\n {\n type: 'line',\n attrs: {\n coordinates: [\n {\n x: coordinates[0].x,\n y: 0\n }, {\n x: coordinates[0].x,\n y: bounding.height\n }\n ]\n }\n }\n ]\n }\n}\n\nexport default verticalStraightLine\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { 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 ?? ''\n } else {\n text = overlay.extendData(overlay)\n }\n }\n const startX = coordinates[0].x\n const startY = coordinates[0].y - 6\n const lineEndY = startY - 50\n const arrowEndY = lineEndY - 5\n return [\n {\n type: 'line',\n attrs: { coordinates: [{ x: startX, y: startY }, { x: startX, y: lineEndY }] },\n ignoreEvent: true\n },\n {\n type: 'polygon',\n attrs: { coordinates: [{ x: startX, y: lineEndY }, { x: startX - 4, y: arrowEndY }, { x: startX + 4, y: arrowEndY }] },\n ignoreEvent: true\n },\n {\n type: 'text',\n attrs: { x: startX, y: arrowEndY, text: text ?? '', align: 'center', baseline: 'bottom' },\n ignoreEvent: true\n }\n ]\n }\n}\n\nexport default simpleAnnotation\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { formatPrecision } from '../../common/utils/format'\n\nimport { 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 return {\n type: 'line',\n attrs: {\n coordinates: [\n { x: 0, y: coordinates[0].y },\n { x: bounding.width, y: coordinates[0].y }\n ]\n },\n ignoreEvent: true\n }\n },\n createYAxisFigures: ({ overlay, coordinates, bounding, yAxis, precision }) => {\n const isFromZero = yAxis?.isFromZero() ?? false\n let textAlign: CanvasTextAlign\n let x: number\n if (isFromZero) {\n textAlign = 'left'\n x = 0\n } else {\n textAlign = 'right'\n x = bounding.width\n }\n let text\n if (isValid(overlay.extendData)) {\n if (!isFunction(overlay.extendData)) {\n text = overlay.extendData ?? ''\n } else {\n text = overlay.extendData(overlay)\n }\n }\n if (!isValid(text) && isNumber(overlay.points[0].value)) {\n text = formatPrecision(overlay.points[0].value, precision.price)\n }\n return { type: 'text', attrs: { x, y: coordinates[0].y, text: text ?? '', align: textAlign, baseline: 'middle' } }\n }\n}\n\nexport default simpleTag\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 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<string, OverlayInnerConstructor> = {}\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<OverlayInnerConstructor> {\n return overlays[name] ?? null\n}\n\nfunction getOverlayClass (name: string): Nullable<OverlayConstructor> {\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\nexport interface PaneGap {\n top?: number\n bottom?: number\n}\n\nexport interface PaneAxisOptions {\n name?: string\n scrollZoomEnabled?: boolean\n}\n\nexport const enum PanePosition {\n Top = 'top',\n Bottom = 'bottom'\n}\n\nexport interface PaneOptions {\n id?: string\n height?: number\n minHeight?: number\n dragEnabled?: boolean\n position?: PanePosition\n gap?: PaneGap\n axisOptions?: PaneAxisOptions\n}\n\nexport const PANE_MIN_HEIGHT = 30\n\nexport const PANE_DEFAULT_HEIGHT = 100\n\nexport const PaneIdConstants = {\n CANDLE: 'candle_pane',\n INDICATOR: '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 { UpdateLevel } from '../common/Updater'\nimport { type MouseTouchEvent } from '../common/SyntheticEvent'\nimport { isFunction, isValid, isString, isBoolean, isNumber, isArray } from '../common/utils/typeChecks'\nimport { createId } from '../common/utils/id'\nimport { LoadDataType } from '../common/LoadDataCallback'\n\nimport { type OverlayCreate, type OverlayRemove } from '../component/Overlay'\nimport type OverlayImp from '../component/Overlay'\nimport { OVERLAY_ID_PREFIX, OVERLAY_ACTIVE_Z_LEVEL } from '../component/Overlay'\n\nimport { getOverlayInnerClass } from '../extension/overlay/index'\n\nimport type ChartStore from './ChartStore'\n\nimport { PaneIdConstants } from '../pane/types'\n\nexport interface ProgressOverlayInfo {\n paneId: string\n instance: OverlayImp\n appointPaneFlag: boolean\n}\n\nexport const enum EventOverlayInfoFigureType {\n None, Point, Other\n}\n\nexport interface EventOverlayInfo {\n paneId: string\n instance: Nullable<OverlayImp>\n figureType: EventOverlayInfoFigureType\n figureKey: string\n figureIndex: number\n attrsIndex: number\n}\n\nexport default class OverlayStore {\n private readonly _chartStore: ChartStore\n\n private _instances = new Map<string, OverlayImp[]>()\n\n /**\n * Overlay information in painting\n */\n private _progressInstanceInfo: Nullable<ProgressOverlayInfo> = null\n\n /**\n * Overlay information by the mouse pressed\n */\n private _pressedInstanceInfo: EventOverlayInfo = {\n paneId: '',\n instance: null,\n figureType: EventOverlayInfoFigureType.None,\n figureKey: '',\n figureIndex: -1,\n attrsIndex: -1\n }\n\n /**\n * Overlay information by hover\n */\n private _hoverInstanceInfo: EventOverlayInfo = {\n paneId: '',\n instance: null,\n figureType: EventOverlayInfoFigureType.None,\n figureKey: '',\n figureIndex: -1,\n attrsIndex: -1\n }\n\n /**\n * Overlay information by the mouse click\n */\n private _clickInstanceInfo: EventOverlayInfo = {\n paneId: '',\n instance: null,\n figureType: EventOverlayInfoFigureType.None,\n figureKey: '',\n figureIndex: -1,\n attrsIndex: -1\n }\n\n constructor (chartStore: ChartStore) {\n this._chartStore = chartStore\n }\n\n private _overrideInstance (instance: OverlayImp, overlay: Partial<OverlayCreate>): [boolean, boolean] {\n const {\n id, groupId, points, styles, lock, visible,\n zLevel, mode, modeSensitivity, extendData,\n onDrawStart, onDrawing,\n onDrawEnd, onClick, onDoubleClick, onRightClick,\n onPressedMoveStart, onPressedMoving, onPressedMoveEnd,\n onMouseEnter, onMouseLeave,\n onRemoved, onSelected, onDeselected\n } = overlay\n let updateFlag = false\n let sortFlag = false\n if (isString(id)) {\n instance.setId(id)\n }\n if (isString(groupId)) {\n instance.setGroupId(groupId)\n }\n if (isArray(points) && instance.setPoints(points)) {\n updateFlag = true\n }\n if (isValid(styles) && instance.setStyles(styles)) {\n updateFlag = true\n }\n if (isBoolean(lock)) {\n instance.setLock(lock)\n }\n if (isBoolean(visible) && instance.setVisible(visible)) {\n updateFlag = true\n }\n if (isNumber(zLevel) && instance.setZLevel(zLevel)) {\n updateFlag = true\n sortFlag = true\n }\n if (isValid(mode)) {\n instance.setMode(mode)\n }\n if (isNumber(modeSensitivity)) {\n instance.setModeSensitivity(modeSensitivity)\n }\n if (extendData !== undefined && instance.setExtendData(extendData)) {\n updateFlag = true\n }\n if (onDrawStart !== undefined) {\n instance.setOnDrawStartCallback(onDrawStart)\n }\n if (onDrawing !== undefined) {\n instance.setOnDrawingCallback(onDrawing)\n }\n if (onDrawEnd !== undefined) {\n instance.setOnDrawEndCallback(onDrawEnd)\n }\n if (onClick !== undefined) {\n instance.setOnClickCallback(onClick)\n }\n if (onDoubleClick !== undefined) {\n instance.setOnDoubleClickCallback(onDoubleClick)\n }\n if (onRightClick !== undefined) {\n instance.setOnRightClickCallback(onRightClick)\n }\n if (onPressedMoveStart !== undefined) {\n instance.setOnPressedMoveStartCallback(onPressedMoveStart)\n }\n if (onPressedMoving !== undefined) {\n instance.setOnPressedMovingCallback(onPressedMoving)\n }\n if (onPressedMoveEnd !== undefined) {\n instance.setOnPressedMoveEndCallback(onPressedMoveEnd)\n }\n if (onMouseEnter !== undefined) {\n instance.setOnMouseEnterCallback(onMouseEnter)\n }\n if (onMouseLeave !== undefined) {\n instance.setOnMouseLeaveCallback(onMouseLeave)\n }\n if (onRemoved !== undefined) {\n instance.setOnRemovedCallback(onRemoved)\n }\n if (onSelected !== undefined) {\n instance.setOnSelectedCallback(onSelected)\n }\n if (onDeselected !== undefined) {\n instance.setOnDeselectedCallback(onDeselected)\n }\n return [updateFlag, sortFlag]\n }\n\n getInstanceById (id: string): Nullable<OverlayImp> {\n for (const entry of this._instances) {\n const paneShapes = entry[1]\n const overlay = paneShapes.find(s => s.id === id)\n if (isValid(overlay)) {\n return overlay\n }\n }\n if (this._progressInstanceInfo !== null) {\n if (this._progressInstanceInfo.instance.id === id) {\n return this._progressInstanceInfo.instance\n }\n }\n return null\n }\n\n private _sort (paneId?: string): void {\n if (isString(paneId)) {\n this._instances.get(paneId)?.sort((o1, o2) => o1.zLevel - o2.zLevel)\n } else {\n this._instances.forEach(paneInstances => {\n paneInstances.sort((o1, o2) => o1.zLevel - o2.zLevel)\n })\n }\n }\n\n addInstances (overlays: OverlayCreate[], paneId: string, appointPaneFlag: boolean): Array<Nullable<string>> {\n const ids = overlays.map(overlay => {\n const id = overlay.id ?? createId(OVERLAY_ID_PREFIX)\n if (this.getInstanceById(id) === null) {\n const OverlayClazz = getOverlayInnerClass(overlay.name)\n if (OverlayClazz !== null) {\n const instance = new OverlayClazz()\n instance.setPaneId(paneId)\n const groupId = overlay.groupId ?? id\n overlay.id = id\n overlay.groupId = groupId\n this._overrideInstance(instance, overlay)\n if (instance.isDrawing()) {\n this._progressInstanceInfo = { paneId, instance, appointPaneFlag }\n } else {\n if (!this._instances.has(paneId)) {\n this._instances.set(paneId, [])\n }\n this._instances.get(paneId)?.push(instance)\n }\n if (instance.isStart()) {\n instance.onDrawStart?.(({ overlay: instance }))\n }\n return id\n }\n }\n return null\n })\n if (ids.some(id => id !== null)) {\n this._sort()\n const chart = this._chartStore.getChart()\n chart.updatePane(UpdateLevel.Overlay, paneId)\n chart.updatePane(UpdateLevel.Overlay, PaneIdConstants.X_AXIS)\n }\n return ids\n }\n\n getProgressInstanceInfo (): Nullable<ProgressOverlayInfo> {\n return this._progressInstanceInfo\n }\n\n progressInstanceComplete (): void {\n if (this._progressInstanceInfo !== null) {\n const { instance, paneId } = this._progressInstanceInfo\n if (!instance.isDrawing()) {\n if (!this._instances.has(paneId)) {\n this._instances.set(paneId, [])\n }\n this._instances.get(paneId)?.push(instance)\n this._sort(paneId)\n this._progressInstanceInfo = null\n }\n }\n }\n\n updateProgressInstanceInfo (paneId: string, appointPaneFlag?: boolean): void {\n if (this._progressInstanceInfo !== null) {\n if (isBoolean(appointPaneFlag) && appointPaneFlag) {\n this._progressInstanceInfo.appointPaneFlag = appointPaneFlag\n }\n this._progressInstanceInfo.paneId = paneId\n this._progressInstanceInfo.instance.setPaneId(paneId)\n }\n }\n\n getInstances (paneId?: string): OverlayImp[] {\n if (!isString(paneId)) {\n let instances: OverlayImp[] = []\n this._instances.forEach(paneInstances => {\n instances = instances.concat(paneInstances)\n })\n return instances\n }\n return this._instances.get(paneId) ?? []\n }\n\n override (overlay: Partial<OverlayCreate>): void {\n const { id, groupId, name } = overlay\n let updateFlag = false\n let sortFlag = false\n\n const setFlag: (instance: OverlayImp) => void = (instance: OverlayImp) => {\n const flags = this._overrideInstance(instance, overlay)\n if (flags[0]) {\n updateFlag = true\n }\n if (flags[1]) {\n sortFlag = true\n }\n }\n\n if (isString(id)) {\n const instance = this.getInstanceById(id)\n if (instance !== null) {\n setFlag(instance)\n }\n } else {\n const nameValid = isString(name)\n const groupIdValid = isString(groupId)\n this._instances.forEach(paneInstances => {\n paneInstances.forEach(instance => {\n if (\n (nameValid && instance.name === name) ||\n (groupIdValid && instance.groupId === groupId) ||\n (!nameValid && !groupIdValid)\n ) {\n setFlag(instance)\n }\n })\n })\n if (this._progressInstanceInfo !== null) {\n const progressInstance = this._progressInstanceInfo.instance\n if (\n (nameValid && progressInstance.name === name) ||\n (groupIdValid && progressInstance.groupId === groupId) ||\n (!nameValid && !groupIdValid)\n ) {\n setFlag(progressInstance)\n }\n }\n }\n if (sortFlag) {\n this._sort()\n }\n if (updateFlag) {\n this._chartStore.getChart().updatePane(UpdateLevel.Overlay)\n }\n }\n\n removeInstance (overlayRemove?: OverlayRemove): void {\n const match: ((remove: OverlayRemove, overlay: OverlayImp) => boolean) = (remove: OverlayRemove, overlay: OverlayImp) => {\n if (isString(remove.id)) {\n if (overlay.id !== remove.id) {\n return false\n }\n } else {\n if (isString(remove.groupId)) {\n if (overlay.groupId !== remove.groupId) {\n return false\n }\n } else {\n if (isString(remove.name)) {\n if (overlay.name !== remove.name) {\n return false\n }\n }\n }\n }\n return true\n }\n\n const updatePaneIds: string[] = []\n const overlayRemoveValid = isValid(overlayRemove)\n if (this._progressInstanceInfo !== null) {\n const { instance } = this._progressInstanceInfo\n if (\n !overlayRemoveValid ||\n (overlayRemoveValid && match(overlayRemove, instance))\n ) {\n updatePaneIds.push(this._progressInstanceInfo.paneId)\n instance.onRemoved?.({ overlay: instance })\n this._progressInstanceInfo = null\n }\n }\n if (overlayRemoveValid) {\n const instances = new Map<string, OverlayImp[]>()\n for (const entry of this._instances) {\n const paneInstances = entry[1]\n const newPaneInstances = paneInstances.filter(instance => {\n if (match(overlayRemove, instance)) {\n if (!updatePaneIds.includes(entry[0])) {\n updatePaneIds.push(entry[0])\n }\n instance.onRemoved?.({ overlay: instance })\n return false\n }\n return true\n })\n if (newPaneInstances.length > 0) {\n instances.set(entry[0], newPaneInstances)\n }\n }\n this._instances = instances\n } else {\n this._instances.forEach((paneInstances, paneId) => {\n updatePaneIds.push(paneId)\n paneInstances.forEach(instance => {\n instance.onRemoved?.({ overlay: instance })\n })\n })\n this._instances.clear()\n }\n if (updatePaneIds.length > 0) {\n const chart = this._chartStore.getChart()\n updatePaneIds.forEach(paneId => {\n chart.updatePane(UpdateLevel.Overlay, paneId)\n })\n chart.updatePane(UpdateLevel.Overlay, PaneIdConstants.X_AXIS)\n }\n }\n\n setPressedInstanceInfo (info: EventOverlayInfo): void {\n this._pressedInstanceInfo = info\n }\n\n getPressedInstanceInfo (): EventOverlayInfo {\n return this._pressedInstanceInfo\n }\n\n updatePointPosition (dataChangeLength: number, type?: LoadDataType): void {\n if (dataChangeLength > 0) {\n const dataList = this._chartStore.getDataList()\n this._instances.forEach(overlays => {\n overlays.forEach(o => {\n const points = o.points\n points.forEach(point => {\n if (!isValid(point.timestamp) && isValid(point.dataIndex)) {\n if (type === LoadDataType.Forward) {\n point.dataIndex = point.dataIndex + dataChangeLength\n }\n const data = dataList[point.dataIndex]\n point.timestamp = data?.timestamp\n }\n })\n })\n })\n }\n }\n\n setHoverInstanceInfo (info: EventOverlayInfo, event: MouseTouchEvent): void {\n const { instance, figureType, figureKey, figureIndex } = this._hoverInstanceInfo\n if (\n instance?.id !== info.instance?.id ||\n figureType !== info.figureType ||\n figureIndex !== info.figureIndex\n ) {\n this._hoverInstanceInfo = info\n if (instance?.id !== info.instance?.id) {\n let ignoreUpdateFlag = false\n let sortFlag = false\n if (instance !== null) {\n sortFlag = true\n if (isFunction(instance.onMouseLeave)) {\n instance.onMouseLeave({ overlay: instance, figureKey, figureIndex, ...event })\n ignoreUpdateFlag = true\n }\n }\n\n if (info.instance !== null) {\n sortFlag = true\n info.instance.setZLevel(OVERLAY_ACTIVE_Z_LEVEL)\n if (isFunction(info.instance.onMouseEnter)) {\n info.instance.onMouseEnter({ overlay: info.instance, figureKey: info.figureKey, figureIndex: info.figureIndex, ...event })\n ignoreUpdateFlag = true\n }\n }\n if (sortFlag) {\n this._sort()\n }\n if (!ignoreUpdateFlag) {\n this._chartStore.getChart().updatePane(UpdateLevel.Overlay)\n }\n }\n }\n }\n\n getHoverInstanceInfo (): EventOverlayInfo {\n return this._hoverInstanceInfo\n }\n\n setClickInstanceInfo (info: EventOverlayInfo, event: MouseTouchEvent): void {\n const { paneId, instance, figureType, figureKey, figureIndex } = this._clickInstanceInfo\n if (!(info.instance?.isDrawing() ?? false)) {\n info.instance?.onClick?.({ overlay: info.instance, figureKey: info.figureKey, figureIndex: info.figureIndex, ...event })\n }\n if (instance?.id !== info.instance?.id || figureType !== info.figureType || figureIndex !== info.figureIndex) {\n this._clickInstanceInfo = info\n if (instance?.id !== info.instance?.id) {\n instance?.onDeselected?.({ overlay: instance, figureKey, figureIndex, ...event })\n info.instance?.onSelected?.({ overlay: info.instance, figureKey: info.figureKey, figureIndex: info.figureIndex, ...event })\n const chart = this._chartStore.getChart()\n chart.updatePane(UpdateLevel.Overlay, info.paneId)\n if (paneId !== info.paneId) {\n chart.updatePane(UpdateLevel.Overlay, paneId)\n }\n chart.updatePane(UpdateLevel.Overlay, PaneIdConstants.X_AXIS)\n }\n }\n }\n\n getClickInstanceInfo (): EventOverlayInfo {\n return this._clickInstanceInfo\n }\n\n isEmpty (): boolean {\n return this._instances.size === 0 && this._progressInstanceInfo === null\n }\n\n isDrawing (): boolean {\n return this._progressInstanceInfo !== null && (this._progressInstanceInfo?.instance.isDrawing() ?? false)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Action, { type ActionType, type ActionCallback } from '../common/Action'\nimport { isValid } from '../common/utils/typeChecks'\n\nexport default class ActionStore {\n /**\n * Chart action map\n */\n private readonly _actions = new Map<ActionType, Action>()\n\n execute (type: ActionType, data?: any): void {\n this._actions.get(type)?.execute(data)\n }\n\n subscribe (type: ActionType, callback: ActionCallback): void {\n if (!this._actions.has(type)) {\n this._actions.set(type, new Action())\n }\n this._actions.get(type)?.subscribe(callback)\n }\n\n /**\n * 取消事件订阅\n * @param type\n * @param callback\n * @return {boolean}\n */\n unsubscribe (type: ActionType, callback?: ActionCallback): void {\n const action = this._actions.get(type)\n if (isValid(action)) {\n action.unsubscribe(callback)\n if (action.isEmpty()) {\n this._actions.delete(type)\n }\n }\n }\n\n has (type: ActionType): boolean {\n const action = this._actions.get(type)\n return isValid(action) && !action.isEmpty()\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type DeepPartial from '../../common/DeepPartial'\nimport { type Styles } from '../../common/Styles'\n\nconst light: DeepPartial<Styles> = {\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<Styles> = {\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<string, DeepPartial<Styles>> = {\n light,\n dark\n}\n\nfunction registerStyles (name: string, ss: DeepPartial<Styles>): void {\n styles[name] = ss\n}\n\nfunction getStyles (name: string): Nullable<DeepPartial<Styles>> {\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 Nullable from '../common/Nullable'\nimport type KLineData from '../common/KLineData'\nimport type Precision from '../common/Precision'\nimport type VisibleData from '../common/VisibleData'\nimport type DeepPartial from '../common/DeepPartial'\nimport { getDefaultStyles, type Styles, type TooltipLegend } from '../common/Styles'\nimport { isArray, isNumber, isString, isValid, merge } from '../common/utils/typeChecks'\nimport { formatValue } from '../common/utils/format'\nimport type LoadDataCallback from '../common/LoadDataCallback'\nimport { type LoadDataParams, LoadDataType } from '../common/LoadDataCallback'\nimport type LoadMoreCallback from '../common/LoadMoreCallback'\nimport { ActionType } from '../common/Action'\n\nimport { getDefaultCustomApi, type CustomApi, defaultLocale, type Options } from '../Options'\n\nimport TimeScaleStore from './TimeScaleStore'\nimport IndicatorStore from './IndicatorStore'\nimport TooltipStore from './TooltipStore'\nimport OverlayStore from './OverlayStore'\nimport ActionStore from './ActionStore'\n\nimport { getStyles } from '../extension/styles/index'\n\nimport type Chart from '../Chart'\n\nexport default class ChartStore {\n /**\n * Internal chart\n */\n private readonly _chart: Chart\n\n /**\n * Style config\n */\n private readonly _styles = getDefaultStyles()\n\n /**\n * Custom api\n */\n private readonly _customApi = getDefaultCustomApi()\n\n /**\n * language\n */\n private _locale = defaultLocale\n\n /**\n * Price and volume precision\n */\n private _precision = { price: 2, volume: 0 }\n\n /**\n * Thousands separator\n */\n private _thousandsSeparator = ','\n\n // Decimal fold threshold\n private _decimalFoldThreshold = 3\n\n /**\n * Data source\n */\n private _dataList: KLineData[] = []\n\n /**\n * Load more data callback\n * Since v9.8.0 deprecated, since v10 removed\n * @deprecated\n */\n private _loadMoreCallback: Nullable<LoadMoreCallback> = null\n\n /**\n * Load data callback\n */\n private _loadDataCallback: Nullable<LoadDataCallback> = null\n\n /**\n * Is loading data flag\n */\n private _loading = true\n\n /**\n * Whether there are forward more flag\n */\n private _forwardMore = true\n\n /**\n * Whether there are forward more flag\n */\n private _backwardMore = true\n\n /**\n * Time scale store\n */\n private readonly _timeScaleStore = new TimeScaleStore(this)\n\n /**\n * Indicator store\n */\n private readonly _indicatorStore = new IndicatorStore(this)\n\n /**\n * Overlay store\n */\n private readonly _overlayStore = new OverlayStore(this)\n\n /**\n * Tooltip store\n */\n private readonly _tooltipStore = new TooltipStore(this)\n\n /**\n * Chart action store\n */\n private readonly _actionStore = new ActionStore()\n\n /**\n * Visible data array\n */\n private _visibleDataList: VisibleData[] = []\n\n constructor (chart: Chart, options?: Options) {\n this._chart = chart\n this.setOptions(options)\n }\n\n /**\n * @description Adjust visible data\n * @return {*}\n */\n adjustVisibleDataList (): void {\n this._visibleDataList = []\n const { realFrom, realTo } = this._timeScaleStore.getVisibleRange()\n for (let i = realFrom; i < realTo; i++) {\n const kLineData = this._dataList[i]\n const x = this._timeScaleStore.dataIndexToCoordinate(i)\n this._visibleDataList.push({\n dataIndex: i,\n x,\n data: kLineData\n })\n }\n }\n\n setOptions (options?: Options): this {\n if (isValid(options)) {\n const { locale, timezone, styles, customApi, thousandsSeparator, decimalFoldThreshold } = options\n if (isString(locale)) {\n this._locale = locale\n }\n if (isString(timezone)) {\n this._timeScaleStore.setTimezone(timezone)\n }\n if (isValid(styles)) {\n let ss: Nullable<DeepPartial<Styles>> = null\n if (isString(styles)) {\n ss = getStyles(styles)\n } else {\n ss = styles\n }\n merge(this._styles, ss)\n // `candle.tooltip.custom` should override\n if (isArray(ss?.candle?.tooltip?.custom)) {\n this._styles.candle.tooltip.custom = ss?.candle?.tooltip?.custom as unknown as TooltipLegend[]\n }\n }\n if (isValid(customApi)) {\n merge(this._customApi, customApi)\n }\n if (isString(thousandsSeparator)) {\n this._thousandsSeparator = thousandsSeparator\n }\n if (isNumber(decimalFoldThreshold) && decimalFoldThreshold > 0) {\n this._decimalFoldThreshold = decimalFoldThreshold\n }\n }\n return this\n }\n\n getStyles (): Styles {\n return this._styles\n }\n\n getLocale (): string {\n return this._locale\n }\n\n getCustomApi (): CustomApi {\n return this._customApi\n }\n\n getThousandsSeparator (): string {\n return this._thousandsSeparator\n }\n\n getDecimalFoldThreshold (): number {\n return this._decimalFoldThreshold\n }\n\n getPrecision (): Precision {\n return this._precision\n }\n\n setPrecision (precision: Precision): this {\n this._precision = precision\n this._indicatorStore.synchronizeSeriesPrecision()\n return this\n }\n\n getDataList (): KLineData[] {\n return this._dataList\n }\n\n getVisibleDataList (): VisibleData[] {\n return this._visibleDataList\n }\n\n async addData (data: KLineData | KLineData[], type?: LoadDataType, more?: boolean): Promise<void> {\n let success = false\n let adjustFlag = false\n let dataLengthChange = 0\n if (isArray<KLineData>(data)) {\n dataLengthChange = data.length\n switch (type) {\n case LoadDataType.Init: {\n this.clear()\n this._dataList = data\n this._forwardMore = more ?? true\n this._timeScaleStore.resetOffsetRightDistance()\n adjustFlag = true\n break\n }\n case LoadDataType.Backward: {\n this._dataList = this._dataList.concat(data)\n this._backwardMore = more ?? false\n adjustFlag = dataLengthChange > 0\n break\n }\n case LoadDataType.Forward: {\n this._dataList = data.concat(this._dataList)\n this._forwardMore = more ?? false\n adjustFlag = dataLengthChange > 0\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._dataList.push(data)\n let lastBarRightSideDiffBarCount = this._timeScaleStore.getLastBarRightSideDiffBarCount()\n if (lastBarRightSideDiffBarCount < 0) {\n this._timeScaleStore.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 try {\n this._overlayStore.updatePointPosition(dataLengthChange, type)\n if (adjustFlag) {\n this._timeScaleStore.adjustVisibleRange()\n this._tooltipStore.recalculateCrosshair(true)\n await this._indicatorStore.calcInstance()\n this._chart.adjustPaneViewport(false, true, true, true)\n }\n this._actionStore.execute(ActionType.OnDataReady)\n } catch {}\n }\n }\n\n setLoadMoreCallback (callback: LoadMoreCallback): void {\n this._loadMoreCallback = callback\n }\n\n executeLoadMoreCallback (timestamp: Nullable<number>): void {\n if (this._forwardMore && !this._loading && isValid(this._loadMoreCallback)) {\n this._loading = true\n this._loadMoreCallback(timestamp)\n }\n }\n\n setLoadDataCallback (callback: LoadDataCallback): void {\n this._loadDataCallback = callback\n }\n\n executeLoadDataCallback (params: Omit<LoadDataParams, 'callback'>): void {\n if (\n !this._loading &&\n isValid(this._loadDataCallback) &&\n (\n (this._forwardMore && params.type === LoadDataType.Forward) ||\n (this._backwardMore && params.type === LoadDataType.Backward)\n )\n ) {\n const cb: ((data: KLineData[], more?: boolean) => void) = (data: KLineData[], more?: boolean) => {\n this.addData(data, params.type, more).then(() => {}).catch(() => {})\n }\n this._loading = true\n this._loadDataCallback({ ...params, callback: cb })\n }\n }\n\n clear (): void {\n this._forwardMore = true\n this._backwardMore = true\n this._loading = true\n this._dataList = []\n this._visibleDataList = []\n this._timeScaleStore.clear()\n this._tooltipStore.clear()\n }\n\n getTimeScaleStore (): TimeScaleStore {\n return this._timeScaleStore\n }\n\n getIndicatorStore (): IndicatorStore {\n return this._indicatorStore\n }\n\n getOverlayStore (): OverlayStore {\n return this._overlayStore\n }\n\n getTooltipStore (): TooltipStore {\n return this._tooltipStore\n }\n\n getActionStore (): ActionStore {\n return this._actionStore\n }\n\n getChart (): Chart {\n return this._chart\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport 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 { isFunction } from './typeChecks'\n\nexport const DEFAULT_REQUEST_ID = -1\n\nexport function requestAnimationFrame (fn: (params: any) => any): 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 { 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<boolean> {\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<CSSStyleDeclaration>, listener: DrawListener) {\n this._listener = listener\n this._element = createDom('canvas', style)\n this._ctx = this._element.getContext('2d', { willReadFrequently: true })!\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 this._mediaQueryList.addListener(this._mediaQueryListener)\n }\n }).catch(_ => false)\n }\n\n private _resetPixelRatio (): void {\n this._executeListener(() => {\n const width = this._element.clientWidth\n const height = this._element.clientHeight\n const horizontalPixelRatio = this._nextPixelWidth / width\n const verticalPixelRatio = this._nextPixelHeight / height\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 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 this._resizeObserver?.unobserve(this._element)\n this._mediaQueryList?.removeListener(this._mediaQueryListener)\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, 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>): 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 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<P extends Pane = Pane> extends Eventful implements Updater {\n /**\n * root container\n */\n private _rootContainer: HTMLElement\n\n /**\n * Parent pane\n */\n private readonly _pane: P\n\n /**\n * wrapper container\n */\n private _container: HTMLElement\n\n private readonly _bounding: Bounding = createDefaultBounding()\n\n constructor (rootContainer: HTMLElement, pane: P) {\n super()\n this._pane = pane\n this.init(rootContainer)\n }\n\n init (rootContainer: HTMLElement): void {\n this._rootContainer = rootContainer\n this._container = this.createContainer()\n rootContainer.appendChild(this._container)\n }\n\n setBounding (bounding: Partial<Bounding>): 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<P extends DrawPane = DrawPane> extends Widget<P> {\n private _mainCanvas: Canvas\n private _overlayCanvas: Canvas\n\n override init (rootContainer: HTMLElement): void {\n super.init(rootContainer)\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 }\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 (let i = 0; i < circles.length; i++) {\n const { x, y, r } = circles[i]\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<PolygonStyle>): 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 if (\n (style === PolygonType.Fill || styles.style === PolygonType.StrokeFill) &&\n (!isString(color) || !isTransparent(color))\n ) {\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 ctx.beginPath()\n ctx.arc(x, y, r, 0, Math.PI * 2)\n ctx.closePath()\n ctx.stroke()\n })\n }\n}\n\nexport interface CircleAttrs {\n x: number\n y: number\n r: number\n}\n\nconst circle: FigureTemplate<CircleAttrs | CircleAttrs[], Partial<PolygonStyle>> = {\n name: 'circle',\n checkEventOn: checkCoordinateOnCircle,\n draw: (ctx: CanvasRenderingContext2D, attrs: CircleAttrs | CircleAttrs[], styles: Partial<PolygonStyle>) => {\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 (let i = 0; i < polygons.length; i++) {\n let on = false\n const { coordinates } = polygons[i]\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<PolygonStyle>): 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<PolygonAttrs | PolygonAttrs[], Partial<PolygonStyle>> = {\n name: 'polygon',\n checkEventOn: checkCoordinateOnPolygon,\n draw: (ctx: CanvasRenderingContext2D, attrs: PolygonAttrs | PolygonAttrs[], styles: Partial<PolygonStyle>) => {\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 (let i = 0; i < rects.length; i++) {\n const rect = rects[i]\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<RectStyle>): 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 if (\n (style === PolygonType.Fill || styles.style === PolygonType.StrokeFill) &&\n (!isString(color) || !isTransparent(color))\n ) {\n ctx.fillStyle = color\n rects.forEach(({ x, y, width: w, height: h }) => {\n ctx.beginPath()\n ctx.moveTo(x + r, y)\n ctx.arcTo(x + w, y, x + w, y + h, r)\n ctx.arcTo(x + w, y + h, x, y + h, r)\n ctx.arcTo(x, y + h, x, y, r)\n ctx.arcTo(x, y, x + w, y, r)\n ctx.closePath()\n ctx.fill()\n })\n }\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 rects.forEach(({ x, y, width: w, height: h }) => {\n ctx.beginPath()\n ctx.moveTo(x + r, y)\n ctx.arcTo(x + w, y, x + w, y + h, r)\n ctx.arcTo(x + w, y + h, x, y + h, r)\n ctx.arcTo(x, y + h, x, y, r)\n ctx.arcTo(x, y, x + w, y, r)\n ctx.closePath()\n ctx.stroke()\n })\n }\n}\n\nexport interface RectAttrs {\n x: number\n y: number\n width: number\n height: number\n}\n\nconst rect: FigureTemplate<RectAttrs | RectAttrs[], Partial<RectStyle>> = {\n name: 'rect',\n checkEventOn: checkCoordinateOnRect,\n draw: (ctx: CanvasRenderingContext2D, attrs: RectAttrs | RectAttrs[], styles: Partial<RectStyle>) => {\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<TextStyle>): 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: number\n switch (align) {\n case 'left':\n case 'start': {\n startX = x\n break\n }\n case 'right':\n case 'end': {\n startX = x - width\n break\n }\n default: {\n startX = x - width / 2\n break\n }\n }\n let startY: number\n switch (baseline) {\n case 'top':\n case 'hanging': {\n startY = y\n break\n }\n case 'bottom':\n case 'ideographic':\n case 'alphabetic': {\n startY = y - 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<TextStyle>): boolean {\n let texts: TextAttrs[] = []\n texts = texts.concat(attrs)\n for (let i = 0; i < texts.length; i++) {\n const { x, y, width, height } = getTextRect(texts[i], 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<TextStyle>): 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<TextAttrs | TextAttrs[], Partial<TextStyle>> = {\n name: 'text',\n checkEventOn: checkCoordinateOnText,\n draw: (ctx: CanvasRenderingContext2D, attrs: TextAttrs | TextAttrs[], styles: Partial<TextStyle>) => {\n drawText(ctx, attrs, styles)\n }\n}\n\nexport default text\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport text, { drawText } from './text'\n\n/**\n * @deprecated\n * Starting from v10, it will be deleted\n */\nconst rectText = text\n\n/**\n * @deprecated\n * Starting from v10, it will be deleted\n */\nconst drawRectText = drawText\n\n/**\n * @deprecated\n * Starting from v10, it will be deleted\n */\nexport {\n drawRectText\n}\n\nexport default rectText\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport default interface Coordinate {\n x: number\n y: number\n}\n\nexport function getDistance (coordinate1: Coordinate, coordinate2: Coordinate): number {\n const xDif = coordinate1.x - coordinate2.x\n const yDif = coordinate1.y - coordinate2.y\n return Math.sqrt(xDif * xDif + yDif * yDif)\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 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 (let i = 0; i < arcs.length; i++) {\n const arc = arcs[i]\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<LineStyle>): 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<ArcAttrs | ArcAttrs[], Partial<LineStyle>> = {\n name: 'arc',\n checkEventOn: checkCoordinateOnArc,\n draw: (ctx: CanvasRenderingContext2D, attrs: ArcAttrs | ArcAttrs[], styles: Partial<LineStyle>) => {\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 rectText from './rectText'\nimport arc from './arc'\n\nconst figures: Record<string, FigureInnerConstructor> = {}\n\nconst extensions = [circle, line, polygon, rect, text, rectText, arc]\nextensions.forEach((figure: FigureTemplate) => {\n figures[figure.name] = FigureImp.extend(figure)\n})\n\nfunction getSupportedFigures (): string[] {\n return Object.keys(figures)\n}\n\nfunction registerFigure<A = any, S = any> (figure: FigureTemplate<A, S>): void {\n figures[figure.name] = FigureImp.extend(figure)\n}\n\nfunction getInnerFigureClass<A = any, S = any> (name: string): Nullable<FigureInnerConstructor<A, S>> {\n return figures[name] ?? null\n}\n\nfunction getFigureClass<A = any, S = any> (name: string): Nullable<FigureConstructor<A, S>> {\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, type 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<C extends Axis = Axis> extends Eventful {\n /**\n * Parent widget\n */\n private readonly _widget: DrawWidget<DrawPane<C>>\n\n constructor (widget: DrawWidget<DrawPane<C>>) {\n super()\n this._widget = widget\n }\n\n getWidget (): DrawWidget<DrawPane<C>> { return this._widget }\n\n protected createFigure (figure: FigureCreate, eventHandler?: EventHandler): Nullable<Figure> {\n const FigureClazz = getInnerFigureClass(figure.name)\n if (FigureClazz !== null) {\n const instance = new FigureClazz(figure)\n if (isValid(eventHandler)) {\n for (const key in eventHandler) {\n // eslint-disable-next-line no-prototype-builtins\n if (eventHandler.hasOwnProperty(key)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n instance.registerEvent(key as EventName, eventHandler[key])\n }\n }\n this.addChild(instance)\n }\n return instance\n }\n return null\n }\n\n draw (ctx: CanvasRenderingContext2D): void {\n this.clear()\n this.drawImp(ctx)\n }\n\n protected abstract drawImp (ctx: CanvasRenderingContext2D): void\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { 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 gridStyles = chart.getStyles().grid\n const show = gridStyles.show\n\n if (show) {\n ctx.save()\n ctx.globalCompositeOperation = 'destination-over'\n const horizontalStyles = gridStyles.horizontal\n const horizontalShow = horizontalStyles.show\n if (horizontalShow) {\n const yAxis = pane.getAxisComponent()\n 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 = gridStyles.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 VisibleData from '../common/VisibleData'\nimport type BarSpace from '../common/BarSpace'\nimport type YAxis from '../component/YAxis'\n\nexport type EachChildCallback = (\n data: VisibleData,\n barSpace: BarSpace,\n index: number\n) => void\n\nexport default abstract class ChildrenView extends View<YAxis> {\n protected eachChildren (childCallback: EachChildCallback): void {\n const pane = this.getWidget().getPane()\n const chartStore = pane.getChart().getChartStore()\n const visibleDataList = chartStore.getVisibleDataList()\n const barSpace = chartStore.getTimeScaleStore().getBarSpace()\n visibleDataList.forEach((data: VisibleData, index: number) => {\n childCallback(data, barSpace, index)\n })\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type Nullable from '../common/Nullable'\nimport type VisibleData from '../common/VisibleData'\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 ChartStore from '../store/ChartStore'\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<CandleType, CandleType.Area>\n styles: CandleBarColor\n}\n\nexport default class CandleBarView extends ChildrenView {\n private readonly _boundCandleBarClickEvent = (data: VisibleData) => () => {\n this.getWidget().getPane().getChart().getChartStore().getActionStore().execute(ActionType.OnCandleBarClick, data)\n return false\n }\n\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const pane = this.getWidget().getPane()\n const isMain = pane.getId() === PaneIdConstants.CANDLE\n const chartStore = pane.getChart().getChartStore()\n const candleBarOptions = this.getCandleBarOptions(chartStore)\n if (candleBarOptions !== null) {\n const yAxis = pane.getAxisComponent()\n this.eachChildren((data: VisibleData, barSpace: BarSpace) => {\n 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 let rects: Array<FigureCreate<RectAttrs | RectAttrs[], Partial<RectStyle>>> = []\n switch (type) {\n case CandleType.CandleSolid: {\n rects = this._createSolidBar(x, priceY, barSpace, colors)\n break\n }\n case CandleType.CandleStroke: {\n rects = this._createStrokeBar(x, priceY, barSpace, colors)\n break\n }\n case CandleType.CandleUpStroke: {\n if (close > open) {\n rects = this._createStrokeBar(x, priceY, barSpace, colors)\n } else {\n rects = this._createSolidBar(x, priceY, barSpace, colors)\n }\n break\n }\n case CandleType.CandleDownStroke: {\n if (open > close) {\n rects = this._createStrokeBar(x, priceY, barSpace, colors)\n } else {\n rects = this._createSolidBar(x, priceY, barSpace, colors)\n }\n break\n }\n case CandleType.Ohlc: {\n const size = Math.min(Math.max(Math.round(barSpace.gapBar * 0.2), 1), 7)\n rects = [\n {\n name: 'rect',\n attrs: [\n {\n x: x - size / 2,\n y: priceY[0],\n width: size,\n height: priceY[3] - priceY[0]\n },\n {\n x: x - barSpace.halfGapBar,\n y: openY + size > priceY[3] ? priceY[3] - size : openY,\n width: barSpace.halfGapBar - size / 2,\n height: size\n },\n {\n x: x + size / 2,\n y: closeY + size > priceY[3] ? priceY[3] - size : closeY,\n width: barSpace.halfGapBar - size / 2,\n height: size\n }\n ],\n styles: { color: colors[0] }\n }\n ]\n break\n }\n }\n rects.forEach(rect => {\n let handler: EventHandler | undefined\n if (isMain) {\n handler = {\n mouseClickEvent: this._boundCandleBarClickEvent(data)\n }\n }\n this.createFigure(rect, handler)?.draw(ctx)\n })\n }\n })\n }\n }\n\n protected getCandleBarOptions (chartStore: ChartStore): Nullable<CandleBarOptions> {\n const candleStyles = chartStore.getStyles().candle\n return {\n type: candleStyles.type as Exclude<CandleType, CandleType.Area>,\n styles: candleStyles.bar\n }\n }\n\n private _createSolidBar (x: number, priceY: number[], barSpace: BarSpace, colors: string[]): Array<FigureCreate<RectAttrs | RectAttrs[], Partial<RectStyle>>> {\n return [\n {\n name: 'rect',\n attrs: {\n x: x - 0.5,\n y: priceY[0],\n width: 1,\n height: priceY[3] - priceY[0]\n },\n styles: { color: colors[2] }\n },\n {\n name: 'rect',\n attrs: {\n x: x - barSpace.halfGapBar + 0.5,\n y: priceY[1],\n width: barSpace.gapBar - 1,\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[]): Array<FigureCreate<RectAttrs | RectAttrs[], Partial<RectStyle>>> {\n return [\n {\n name: 'rect',\n attrs: [\n {\n x: x - 0.5,\n y: priceY[0],\n width: 1,\n height: priceY[1] - priceY[0]\n },\n {\n x: x - 0.5,\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 + 0.5,\n y: priceY[1],\n width: barSpace.gapBar - 1,\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 type VisibleData from '../common/VisibleData'\nimport type BarSpace from '../common/BarSpace'\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 type ChartStore from '../store/ChartStore'\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 (chartStore: ChartStore): Nullable<CandleBarOptions> {\n const pane = this.getWidget().getPane()\n const yAxis = pane.getAxisComponent()\n if (!yAxis.isInCandle()) {\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n for (const 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 dataList = chartStore.getDataList()\n const timeScaleStore = chartStore.getTimeScaleStore()\n const visibleRange = timeScaleStore.getVisibleRange()\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n const defaultStyles = chartStore.getStyles().indicator\n 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 kLineDataList: dataList,\n indicator,\n visibleRange,\n bounding,\n barSpace: timeScaleStore.getBarSpace(),\n defaultStyles,\n xAxis,\n yAxis\n }) ?? false\n ctx.restore()\n }\n if (!isCover) {\n const result = indicator.result\n const lines: Array<Array<{ coordinates: Coordinate[], styles: SmoothLineStyle }>> = []\n\n this.eachChildren((data: VisibleData, barSpace: BarSpace) => {\n const { halfGapBar, gapBar } = barSpace\n const { dataIndex, x } = data\n const prevX = xAxis.convertToPixel(dataIndex - 1)\n const nextX = xAxis.convertToPixel(dataIndex + 1)\n const prevIndicatorData = result[dataIndex - 1] ?? {}\n const currentIndicatorData = result[dataIndex] ?? {}\n const nextIndicatorData = result[dataIndex + 1] ?? {}\n const prevCoordinate = { x: prevX }\n const currentCoordinate = { x }\n const nextCoordinate = { x: nextX }\n indicator.figures.forEach(({ key }) => {\n const prevValue = prevIndicatorData[key]\n if (isNumber(prevValue)) {\n prevCoordinate[key] = yAxis.convertToPixel(prevValue)\n }\n const currentValue = currentIndicatorData[key]\n if (isNumber(currentValue)) {\n currentCoordinate[key] = yAxis.convertToPixel(currentValue)\n }\n const nextValue = nextIndicatorData[key]\n if (isNumber(nextValue)) {\n nextCoordinate[key] = yAxis.convertToPixel(nextValue)\n }\n })\n eachFigures(dataList, indicator, dataIndex, defaultStyles, (figure: IndicatorFigure, figureStyles: IndicatorFigureStyle, figureIndex: number) => {\n if (isValid(currentIndicatorData[figure.key])) {\n const valueY = currentCoordinate[figure.key]\n let attrs = figure.attrs?.({\n coordinate: { prev: prevCoordinate, current: currentCoordinate, next: nextCoordinate },\n bounding,\n barSpace,\n xAxis,\n yAxis\n })\n if (!isValid<IndicatorFigureAttrs>(attrs)) {\n switch (figure.type) {\n case 'circle': {\n attrs = { x, y: valueY, r: halfGapBar }\n break\n }\n case 'rect':\n case 'bar': {\n const baseValue = figure.baseValue ?? yAxis.getRange().from\n const baseValueY = yAxis.convertToPixel(baseValue)\n let height = Math.abs(baseValueY - (valueY as number))\n if (baseValue !== currentIndicatorData[figure.key]) {\n height = Math.max(1, height)\n }\n let y: number\n if (valueY > baseValueY) {\n y = baseValueY\n } else {\n y = valueY\n }\n attrs = {\n x: x - halfGapBar,\n y,\n width: gapBar,\n height\n }\n break\n }\n case 'line': {\n if (!isValid(lines[figureIndex])) {\n lines[figureIndex] = []\n }\n if (isNumber(currentCoordinate[figure.key]) && isNumber(nextCoordinate[figure.key])) {\n lines[figureIndex].push({\n coordinates: [\n { x: currentCoordinate.x, y: currentCoordinate[figure.key] },\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<IndicatorFigureAttrs>(attrs) && type !== 'line') {\n this.createFigure({\n name: type === 'bar' ? 'rect' : type,\n attrs,\n styles: figureStyles\n })?.draw(ctx)\n }\n // merge line render\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.getTooltipStore().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 Nullable from '../common/Nullable'\nimport type KLineData from '../common/KLineData'\nimport type Crosshair from '../common/Crosshair'\nimport { type IndicatorStyle, type TooltipStyle, type TooltipIconStyle, type TooltipTextStyle, type TooltipLegend, TooltipShowRule, type TooltipLegendChild, TooltipIconPosition } from '../common/Styles'\nimport { ActionType } from '../common/Action'\nimport { formatPrecision, formatThousands, formatFoldDecimal } from '../common/utils/format'\nimport { isValid, isObject, isString, isNumber } from '../common/utils/typeChecks'\nimport { createFont } from '../common/utils/canvas'\nimport type Coordinate from '../common/Coordinate'\n\nimport { type CustomApi } from '../Options'\n\nimport type YAxis from '../component/YAxis'\n\nimport { type Indicator, type IndicatorFigure, type IndicatorFigureStyle, type IndicatorTooltipData } from '../component/Indicator'\nimport type IndicatorImp from '../component/Indicator'\nimport { eachFigures } from '../component/Indicator'\n\nimport { type TooltipIcon } from '../store/TooltipStore'\n\nimport View from './View'\n\nexport default class IndicatorTooltipView extends View<YAxis> {\n private readonly _boundIconClickEvent = (currentIcon: TooltipIcon) => () => {\n const pane = this.getWidget().getPane()\n pane.getChart().getChartStore().getActionStore().execute(ActionType.OnTooltipIconClick, { ...currentIcon })\n return true\n }\n\n private readonly _boundIconMouseMoveEvent = (currentIconInfo: TooltipIcon) => () => {\n const pane = this.getWidget().getPane()\n const tooltipStore = pane.getChart().getChartStore().getTooltipStore()\n tooltipStore.setActiveIcon({ ...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.getTooltipStore().getCrosshair()\n if (isValid(crosshair.kLineData)) {\n const bounding = widget.getBounding()\n const customApi = chartStore.getCustomApi()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const decimalFoldThreshold = chartStore.getDecimalFoldThreshold()\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n const activeIcon = chartStore.getTooltipStore().getActiveIcon()\n const defaultStyles = chartStore.getStyles().indicator\n const { offsetLeft, offsetTop, offsetRight } = defaultStyles.tooltip\n this.drawIndicatorTooltip(\n ctx, pane.getId(), chartStore.getDataList(),\n crosshair, activeIcon, indicators, customApi,\n thousandsSeparator, decimalFoldThreshold,\n offsetLeft, offsetTop,\n bounding.width - offsetRight, defaultStyles\n )\n }\n }\n\n protected drawIndicatorTooltip (\n ctx: CanvasRenderingContext2D,\n paneId: string,\n dataList: KLineData[],\n crosshair: Crosshair,\n activeTooltipIcon: Nullable<TooltipIcon>,\n indicators: IndicatorImp[],\n customApi: CustomApi,\n thousandsSeparator: string,\n decimalFoldThreshold: number,\n left: number,\n top: number,\n maxWidth: number,\n styles: IndicatorStyle\n ): number {\n const tooltipStyles = styles.tooltip\n if (this.isDrawTooltip(crosshair, tooltipStyles)) {\n const tooltipTextStyles = tooltipStyles.text\n indicators.forEach(indicator => {\n let prevRowHeight = 0\n const coordinate = { x: left, y: top }\n const { name, calcParamsText, values: legends, icons } = this.getIndicatorTooltipData(dataList, crosshair, indicator, customApi, thousandsSeparator, decimalFoldThreshold, styles)\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, activeTooltipIcon, leftIcons,\n coordinate, paneId, 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, activeTooltipIcon, middleIcons,\n coordinate, paneId, 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, activeTooltipIcon, rightIcons,\n coordinate, paneId, 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 activeIcon: Nullable<TooltipIcon>,\n icons: TooltipIconStyle[],\n coordinate: Coordinate,\n paneId: string,\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 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 (\n dataList: KLineData[],\n crosshair: Crosshair,\n indicator: Indicator,\n customApi: CustomApi,\n thousandsSeparator: string,\n decimalFoldThreshold: number,\n styles: IndicatorStyle\n ): IndicatorTooltipData {\n const tooltipStyles = styles.tooltip\n const name = tooltipStyles.showName ? indicator.shortName : ''\n let calcParamsText = ''\n const calcParams = indicator.calcParams\n if (calcParams.length > 0 && tooltipStyles.showParams) {\n calcParamsText = `(${calcParams.join(',')})`\n }\n\n const tooltipData: IndicatorTooltipData = { name, calcParamsText, values: [], icons: tooltipStyles.icons }\n\n const dataIndex = crosshair.dataIndex!\n const result = indicator.result ?? []\n\n const legends: TooltipLegend[] = []\n if (indicator.visible) {\n const indicatorData = result[dataIndex] ?? {}\n eachFigures(dataList, indicator, dataIndex, styles, (figure: IndicatorFigure, figureStyles: Required<IndicatorFigureStyle>) => {\n if (isString(figure.title)) {\n const color = figureStyles.color\n let value = indicatorData[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: formatFoldDecimal(formatThousands((value ?? tooltipStyles.defaultValue) as string, thousandsSeparator), decimalFoldThreshold), color } })\n }\n })\n tooltipData.values = legends\n }\n\n if (indicator.createTooltipDataSource !== null) {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chartStore = pane.getChart().getChartStore()\n const { name: customName, calcParamsText: customCalcParamsText, values: customLegends, icons: customIcons } = indicator.createTooltipDataSource({\n kLineDataList: dataList,\n indicator,\n visibleRange: chartStore.getTimeScaleStore().getVisibleRange(),\n bounding: widget.getBounding(),\n crosshair,\n defaultStyles: styles,\n xAxis: pane.getChart().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 value.text = formatFoldDecimal(formatThousands(value.text, thousandsSeparator), decimalFoldThreshold)\n optimizedLegends.push({ title, value })\n })\n tooltipData.values = 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 Bounding from '../common/Bounding'\nimport type BarSpace from '../common/BarSpace'\nimport { type OverlayStyle } from '../common/Styles'\nimport { type EventHandler, type EventName, type MouseTouchEvent, type MouseTouchEventCallback } from '../common/SyntheticEvent'\nimport { isBoolean, isNumber, isValid } from '../common/utils/typeChecks'\n\nimport { type CustomApi } from '../Options'\n\nimport type Axis from '../component/Axis'\nimport type XAxis from '../component/XAxis'\nimport type YAxis from '../component/YAxis'\nimport { type OverlayPrecision, type OverlayFigure, type OverlayFigureIgnoreEventType } from '../component/Overlay'\nimport type Overlay from '../component/Overlay'\nimport { OVERLAY_FIGURE_KEY_PREFIX, OverlayMode, getAllOverlayFigureIgnoreEventTypes } from '../component/Overlay'\n\nimport { type ProgressOverlayInfo, type EventOverlayInfo } from '../store/OverlayStore'\nimport type OverlayStore from '../store/OverlayStore'\nimport { EventOverlayInfoFigureType } from '../store/OverlayStore'\nimport type TimeScaleStore from '../store/TimeScaleStore'\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<C extends Axis = YAxis> extends View<C> {\n constructor (widget: DrawWidget<DrawPane<C>>) {\n super(widget)\n this._initEvent()\n }\n\n private _initEvent (): void {\n const pane = this.getWidget().getPane()\n const paneId = pane.getId()\n const overlayStore = pane.getChart().getChartStore().getOverlayStore()\n this.registerEvent('mouseMoveEvent', (event: MouseTouchEvent) => {\n const progressInstanceInfo = overlayStore.getProgressInstanceInfo()\n if (progressInstanceInfo !== null) {\n const overlay = progressInstanceInfo.instance\n let progressInstancePaneId = progressInstanceInfo.paneId\n if (overlay.isStart()) {\n overlayStore.updateProgressInstanceInfo(paneId)\n progressInstancePaneId = paneId\n }\n const index = overlay.points.length - 1\n const key = `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`\n if (overlay.isDrawing() && progressInstancePaneId === paneId) {\n overlay.eventMoveForDrawing(this._coordinateToPoint(progressInstanceInfo.instance, event))\n overlay.onDrawing?.({ overlay, figureKey: key, figureIndex: index, ...event })\n }\n return this._figureMouseMoveEvent(\n overlay,\n EventOverlayInfoFigureType.Point,\n key,\n index,\n 0\n )(event)\n }\n overlayStore.setHoverInstanceInfo({\n paneId, instance: null, figureType: EventOverlayInfoFigureType.None, figureKey: '', figureIndex: -1, attrsIndex: -1\n }, event)\n return false\n }).registerEvent('mouseClickEvent', (event: MouseTouchEvent) => {\n const progressInstanceInfo = overlayStore.getProgressInstanceInfo()\n if (progressInstanceInfo !== null) {\n const overlay = progressInstanceInfo.instance\n let progressInstancePaneId = progressInstanceInfo.paneId\n if (overlay.isStart()) {\n overlayStore.updateProgressInstanceInfo(paneId, true)\n progressInstancePaneId = paneId\n }\n const index = overlay.points.length - 1\n const key = `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`\n if (overlay.isDrawing() && progressInstancePaneId === paneId) {\n overlay.eventMoveForDrawing(this._coordinateToPoint(overlay, event))\n overlay.onDrawing?.({ overlay, figureKey: key, figureIndex: index, ...event })\n overlay.nextStep()\n if (!overlay.isDrawing()) {\n overlayStore.progressInstanceComplete()\n overlay.onDrawEnd?.({ overlay, figureKey: key, figureIndex: index, ...event })\n }\n }\n return this._figureMouseClickEvent(\n overlay,\n EventOverlayInfoFigureType.Point,\n key,\n index,\n 0\n )(event)\n }\n overlayStore.setClickInstanceInfo({\n paneId, instance: null, figureType: EventOverlayInfoFigureType.None, figureKey: '', figureIndex: -1, attrsIndex: -1\n }, event)\n return false\n }).registerEvent('mouseDoubleClickEvent', (event: MouseTouchEvent) => {\n const progressInstanceInfo = overlayStore.getProgressInstanceInfo()\n if (progressInstanceInfo !== null) {\n const overlay = progressInstanceInfo.instance\n const progressInstancePaneId = progressInstanceInfo.paneId\n if (overlay.isDrawing() && progressInstancePaneId === paneId) {\n overlay.forceComplete()\n if (!overlay.isDrawing()) {\n overlayStore.progressInstanceComplete()\n const index = overlay.points.length - 1\n const key = `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`\n overlay.onDrawEnd?.({ overlay, figureKey: key, figureIndex: index, ...event })\n }\n }\n 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 progressInstanceInfo = overlayStore.getProgressInstanceInfo()\n if (progressInstanceInfo !== null) {\n const overlay = progressInstanceInfo.instance\n if (overlay.isDrawing()) {\n const index = overlay.points.length - 1\n return this._figureMouseRightClickEvent(\n overlay,\n EventOverlayInfoFigureType.Point,\n `${OVERLAY_FIGURE_KEY_PREFIX}point_${index}`,\n index,\n 0\n )(event)\n }\n }\n return false\n }).registerEvent('mouseUpEvent', (event: MouseTouchEvent) => {\n const { instance, figureIndex, figureKey } = overlayStore.getPressedInstanceInfo()\n if (instance !== null) {\n instance.onPressedMoveEnd?.({ overlay: instance, figureKey, figureIndex, ...event })\n }\n overlayStore.setPressedInstanceInfo({\n paneId, instance: null, figureType: EventOverlayInfoFigureType.None, figureKey: '', figureIndex: -1, attrsIndex: -1\n })\n return false\n }).registerEvent('pressedMouseMoveEvent', (event: MouseTouchEvent) => {\n const { instance, figureType, figureIndex, figureKey } = overlayStore.getPressedInstanceInfo()\n if (instance !== null) {\n if (!instance.lock) {\n if (!(instance.onPressedMoving?.({ overlay: instance, figureIndex, figureKey, ...event }) ?? false)) {\n const point = this._coordinateToPoint(instance, event)\n if (figureType === EventOverlayInfoFigureType.Point) {\n instance.eventPressedPointMove(point, figureIndex)\n } else {\n instance.eventPressedOtherMove(point, this.getWidget().getPane().getChart().getChartStore().getTimeScaleStore())\n }\n }\n }\n return true\n }\n return false\n })\n }\n\n private _createFigureEvents (\n overlay: Overlay,\n figureType: EventOverlayInfoFigureType,\n figureKey: string,\n figureIndex: number,\n attrsIndex: number,\n ignoreEvent?: boolean | OverlayFigureIgnoreEventType[]\n ): EventHandler | undefined {\n let eventHandler\n if (!overlay.isDrawing()) {\n let eventTypes: OverlayFigureIgnoreEventType[] = []\n if (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\n }\n\n private _figureMouseMoveEvent (overlay: Overlay, figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n const pane = this.getWidget().getPane()\n const overlayStore = pane.getChart().getChartStore().getOverlayStore()\n overlayStore.setHoverInstanceInfo(\n { paneId: pane.getId(), instance: overlay, figureType, figureKey, figureIndex, attrsIndex }, event\n )\n return true\n }\n }\n\n private _figureMouseDownEvent (overlay: Overlay, figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n const pane = this.getWidget().getPane()\n const paneId = pane.getId()\n const overlayStore = pane.getChart().getChartStore().getOverlayStore()\n overlay.startPressedMove(this._coordinateToPoint(overlay, event))\n overlay.onPressedMoveStart?.({ overlay, figureIndex, figureKey, ...event })\n overlayStore.setPressedInstanceInfo({ paneId, instance: overlay, figureType, figureKey, figureIndex, attrsIndex })\n return true\n }\n }\n\n private _figureMouseClickEvent (overlay: Overlay, figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n const pane = this.getWidget().getPane()\n const paneId = pane.getId()\n const overlayStore = pane.getChart().getChartStore().getOverlayStore()\n overlayStore.setClickInstanceInfo({ paneId, instance: overlay, figureType, figureKey, figureIndex, attrsIndex }, event)\n return true\n }\n }\n\n private _figureMouseDoubleClickEvent (overlay: Overlay, _figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, _attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n overlay.onDoubleClick?.({ ...event, figureIndex, figureKey, overlay })\n return true\n }\n }\n\n private _figureMouseRightClickEvent (overlay: Overlay, _figureType: EventOverlayInfoFigureType, figureKey: string, figureIndex: number, _attrsIndex: number): MouseTouchEventCallback {\n return (event: MouseTouchEvent) => {\n if (!(overlay.onRightClick?.({ overlay, figureIndex, figureKey, ...event }) ?? false)) {\n const pane = this.getWidget().getPane()\n const overlayStore = pane.getChart().getChartStore().getOverlayStore()\n overlayStore.removeInstance(overlay)\n }\n return true\n }\n }\n\n private _coordinateToPoint (overlay: Overlay, coordinate: Coordinate): Partial<Point> {\n const point: Partial<Point> = {}\n const pane = this.getWidget().getPane()\n const chart = pane.getChart()\n const paneId = pane.getId()\n const timeScaleStore = chart.getChartStore().getTimeScaleStore()\n if (this.coordinateToPointTimestampDataIndexFlag()) {\n const xAxis = chart.getXAxisPane().getAxisComponent()\n const dataIndex = xAxis.convertFromPixel(coordinate.x)\n const timestamp = timeScaleStore.dataIndexToTimestamp(dataIndex) ?? undefined\n point.dataIndex = dataIndex\n point.timestamp = timestamp\n }\n if (this.coordinateToPointValueFlag()) {\n const yAxis = pane.getAxisComponent()\n let value = yAxis.convertFromPixel(coordinate.y)\n if (overlay.mode !== OverlayMode.Normal && paneId === PaneIdConstants.CANDLE && isNumber(point.dataIndex)) {\n const kLineData = timeScaleStore.getDataByDataIndex(point.dataIndex)\n if (kLineData !== null) {\n const modeSensitivity = overlay.modeSensitivity\n if (value > kLineData.high) {\n if (overlay.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 (overlay.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().getOverlayStore().isDrawing()) {\n return this.onEvent(name, event, other)\n }\n return super.dispatchEvent(name, event, other)\n }\n\n override checkEventOn (): boolean {\n return true\n }\n\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const paneId = pane.getId()\n const chart = pane.getChart()\n const yAxis = pane.getAxisComponent() as unknown as Nullable<YAxis>\n const xAxis = chart.getXAxisPane().getAxisComponent()\n const bounding = widget.getBounding()\n const chartStore = chart.getChartStore()\n const customApi = chartStore.getCustomApi()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const decimalFoldThreshold = chartStore.getDecimalFoldThreshold()\n const timeScaleStore = chartStore.getTimeScaleStore()\n const dateTimeFormat = timeScaleStore.getDateTimeFormat()\n const barSpace = timeScaleStore.getBarSpace()\n const precision = chartStore.getPrecision()\n const defaultStyles = chartStore.getStyles().overlay\n const overlayStore = chartStore.getOverlayStore()\n const hoverInstanceInfo = overlayStore.getHoverInstanceInfo()\n const clickInstanceInfo = overlayStore.getClickInstanceInfo()\n const overlays = this.getCompleteOverlays(overlayStore, paneId)\n const paneIndicators = chartStore.getIndicatorStore().getInstances(paneId)\n const overlayPrecision = paneIndicators.reduce((prev, indicator) => {\n const precision = indicator.precision\n prev[indicator.name] = precision\n prev.max = Math.max(prev.max, precision)\n prev.min = Math.min(prev.min, precision)\n prev.excludePriceVolumeMax = Math.max(prev.excludePriceVolumeMax, precision)\n prev.excludePriceVolumeMin = Math.min(prev.excludePriceVolumeMin, precision)\n return prev\n }, {\n ...precision,\n max: Math.max(precision.price, precision.volume),\n min: Math.min(precision.price, precision.volume),\n excludePriceVolumeMax: Number.MIN_SAFE_INTEGER,\n excludePriceVolumeMin: Number.MAX_SAFE_INTEGER\n })\n overlays.forEach(overlay => {\n if (overlay.visible) {\n this._drawOverlay(\n ctx, overlay, bounding, barSpace, overlayPrecision,\n dateTimeFormat, customApi, thousandsSeparator, decimalFoldThreshold,\n defaultStyles, xAxis, yAxis,\n hoverInstanceInfo, clickInstanceInfo, timeScaleStore\n )\n }\n })\n const progressInstanceInfo = overlayStore.getProgressInstanceInfo()\n if (progressInstanceInfo !== null) {\n const overlay = this.getProgressOverlay(progressInstanceInfo, paneId)\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (overlay !== null && overlay.visible) {\n this._drawOverlay(\n ctx, overlay, bounding, barSpace,\n overlayPrecision, dateTimeFormat, customApi, thousandsSeparator, decimalFoldThreshold,\n defaultStyles, xAxis, yAxis,\n hoverInstanceInfo, clickInstanceInfo, timeScaleStore\n )\n }\n }\n }\n\n private _drawOverlay (\n ctx: CanvasRenderingContext2D,\n overlay: Overlay,\n bounding: Bounding,\n barSpace: BarSpace,\n precision: OverlayPrecision,\n dateTimeFormat: Intl.DateTimeFormat,\n customApi: CustomApi,\n thousandsSeparator: string,\n decimalFoldThreshold: number,\n defaultStyles: OverlayStyle,\n xAxis: Nullable<XAxis>,\n yAxis: Nullable<YAxis>,\n hoverInstanceInfo: EventOverlayInfo,\n clickInstanceInfo: EventOverlayInfo,\n timeScaleStore: TimeScaleStore\n ): void {\n const { points } = overlay\n const coordinates = points.map(point => {\n let dataIndex = point.dataIndex\n if (isNumber(point.timestamp)) {\n dataIndex = timeScaleStore.timestampToDataIndex(point.timestamp)\n }\n const coordinate = { x: 0, y: 0 }\n if (isNumber(dataIndex)) {\n coordinate.x = xAxis?.convertToPixel(dataIndex) ?? 0\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 const figures = new Array<OverlayFigure>().concat(\n this.getFigures(\n overlay, coordinates, bounding, barSpace, precision, thousandsSeparator, decimalFoldThreshold, dateTimeFormat, defaultStyles, xAxis, yAxis\n )\n )\n this.drawFigures(\n ctx,\n overlay,\n figures,\n defaultStyles\n )\n }\n this.drawDefaultFigures(\n ctx,\n overlay,\n coordinates,\n bounding,\n precision,\n dateTimeFormat,\n customApi,\n thousandsSeparator,\n decimalFoldThreshold,\n defaultStyles,\n xAxis,\n yAxis,\n hoverInstanceInfo,\n clickInstanceInfo\n )\n }\n\n protected drawFigures (ctx: CanvasRenderingContext2D, overlay: Overlay, figures: OverlayFigure[], defaultStyles: OverlayStyle): void {\n figures.forEach((figure, figureIndex) => {\n const { type, styles, attrs, ignoreEvent } = figure\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const attrsArray = [].concat(attrs)\n attrsArray.forEach((ats, attrsIndex) => {\n const events = this._createFigureEvents(overlay, EventOverlayInfoFigureType.Other, figure.key ?? '', figureIndex, attrsIndex, ignoreEvent)\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 (overlayStore: OverlayStore, paneId: string): Overlay[] {\n return overlayStore.getInstances(paneId)\n }\n\n protected getProgressOverlay (info: ProgressOverlayInfo, paneId: string): Nullable<Overlay> {\n if (info.paneId === paneId) {\n return info.instance\n }\n return null\n }\n\n protected getFigures (\n overlay: Overlay,\n coordinates: Coordinate[],\n bounding: Bounding,\n barSpace: BarSpace,\n precision: OverlayPrecision,\n thousandsSeparator: string,\n decimalFoldThreshold: number,\n dateTimeFormat: Intl.DateTimeFormat,\n defaultStyles: OverlayStyle,\n xAxis: Nullable<XAxis>,\n yAxis: Nullable<YAxis>\n ): OverlayFigure | OverlayFigure[] {\n return overlay.createPointFigures?.({ overlay, coordinates, bounding, barSpace, precision, thousandsSeparator, decimalFoldThreshold, dateTimeFormat, defaultStyles, xAxis, yAxis }) ?? []\n }\n\n protected drawDefaultFigures (\n ctx: CanvasRenderingContext2D,\n overlay: Overlay,\n coordinates: Coordinate[],\n _bounding: Bounding,\n _precision: OverlayPrecision,\n _dateTimeFormat: Intl.DateTimeFormat,\n _customApi: CustomApi,\n _thousandsSeparator: string,\n _drawDefaultFigures: number,\n defaultStyles: OverlayStyle,\n _xAxis: Nullable<XAxis>,\n _yAxis: Nullable<YAxis>,\n hoverInstanceInfo: EventOverlayInfo,\n clickInstanceInfo: EventOverlayInfo\n ): void {\n if (overlay.needDefaultPointFigure) {\n if (\n (hoverInstanceInfo.instance?.id === overlay.id && hoverInstanceInfo.figureType !== EventOverlayInfoFigureType.None) ||\n (clickInstanceInfo.instance?.id === overlay.id && clickInstanceInfo.figureType !== EventOverlayInfoFigureType.None)\n ) {\n const styles = overlay.styles\n const pointStyles = { ...defaultStyles.point, ...styles?.point }\n coordinates.forEach(({ x, y }, index) => {\n let radius = pointStyles.radius\n let color = pointStyles.color\n let borderColor = pointStyles.borderColor\n let borderSize = pointStyles.borderSize\n if (\n hoverInstanceInfo.instance?.id === overlay.id &&\n hoverInstanceInfo.figureType === EventOverlayInfoFigureType.Point &&\n hoverInstanceInfo.figureIndex === index\n ) {\n radius = pointStyles.activeRadius\n color = pointStyles.activeColor\n borderColor = pointStyles.activeBorderColor\n borderSize = pointStyles.activeBorderSize\n }\n this.createFigure({\n 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'\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<DrawPane<YAxis>> {\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<YAxis>) {\n super(rootContainer, pane)\n this.addChild(this._tooltipView)\n this.addChild(this._overlayView)\n this.getContainer().style.cursor = 'crosshair'\n this.registerEvent('mouseMoveEvent', () => {\n pane.getChart().getChartStore().getTooltipStore().setActiveIcon()\n return false\n })\n }\n\n getName (): string {\n return WidgetNameConstants.MAIN\n }\n\n protected updateMain (ctx: CanvasRenderingContext2D): void {\n this.updateMainContent(ctx)\n this._indicatorView.draw(ctx)\n this._gridView.draw(ctx)\n }\n\n protected createTooltipView (): IndicatorTooltipView {\n return new IndicatorTooltipView(this)\n }\n\n protected updateMainContent (_ctx: CanvasRenderingContext2D): void {}\n\n override updateOverlay (ctx: CanvasRenderingContext2D): void {\n this._overlayView.draw(ctx)\n this._crosshairLineView.draw(ctx)\n this._tooltipView.draw(ctx)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 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<AnimationDoFrameCallback>\n\n private _currentIterationCount = 0\n private _running = false\n\n private _time = 0\n\n constructor (options?: Partial<AnimationOptions>) {\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\nimport type Coordinate from '../common/Coordinate'\nimport type VisibleData from '../common/VisibleData'\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<Coordinate> = null\n this.eachChildren((data: VisibleData) => {\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<GradientColor>(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 VisibleData from '../common/VisibleData'\nimport { type CandleHighLowPriceMarkStyle } from '../common/Styles'\n\nimport ChildrenView from './ChildrenView'\n\nimport { formatPrecision, formatThousands, formatFoldDecimal } from '../common/utils/format'\nimport { isValid } from '../common/utils/typeChecks'\n\nexport default class CandleHighLowPriceView extends ChildrenView {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const chartStore = pane.getChart().getChartStore()\n const priceMarkStyles = chartStore.getStyles().candle.priceMark\n const highPriceMarkStyles = priceMarkStyles.high\n const lowPriceMarkStyles = priceMarkStyles.low\n if (priceMarkStyles.show && (highPriceMarkStyles.show || lowPriceMarkStyles.show)) {\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const decimalFoldThreshold = chartStore.getDecimalFoldThreshold()\n const precision = chartStore.getPrecision()\n const yAxis = pane.getAxisComponent()\n let high = Number.MIN_SAFE_INTEGER\n let highX = 0\n let low = Number.MAX_SAFE_INTEGER\n let lowX = 0\n this.eachChildren((data: VisibleData) => {\n const { data: kLineData, x } = data\n if (isValid(kLineData)) {\n if (high < kLineData.high) {\n high = kLineData.high\n highX = x\n }\n if (low > kLineData.low) {\n low = kLineData.low\n lowX = x\n }\n }\n })\n const highY = yAxis.convertToPixel(high)\n const lowY = yAxis.convertToPixel(low)\n if (highPriceMarkStyles.show && high !== Number.MIN_SAFE_INTEGER) {\n this._drawMark(\n ctx,\n formatFoldDecimal(formatThousands(formatPrecision(high, precision.price), thousandsSeparator), decimalFoldThreshold),\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 formatFoldDecimal(formatThousands(formatPrecision(low, precision.price), thousandsSeparator), decimalFoldThreshold),\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: number\n let textStartX: number\n let textAlign: string\n const { width } = this.getWidget().getBounding()\n if (startX > width / 2) {\n lineEndX = startX - 5\n textStartX = lineEndX - styles.textOffset\n textAlign = 'right'\n } else {\n lineEndX = startX + 5\n textAlign = 'left'\n textStartX = lineEndX + styles.textOffset\n }\n\n const y = startY + offsets[1]\n this.createFigure({\n 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 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 (data != null) {\n const { close, open } = data\n const priceY = yAxis.convertToNicePixel(close)\n let color: string\n if (close > open) {\n color = lastPriceMarkStyles.upColor\n } else if (close < open) {\n color = lastPriceMarkStyles.downColor\n } else {\n color = lastPriceMarkStyles.noChangeColor\n }\n this.createFigure({\n 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 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<string, Locales> = {\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 type Nullable from '../common/Nullable'\nimport type Bounding from '../common/Bounding'\nimport type KLineData from '../common/KLineData'\nimport type Precision from '../common/Precision'\nimport type Crosshair from '../common/Crosshair'\nimport {\n type Styles, type CandleStyle, type TooltipLegend, type TooltipLegendChild, TooltipShowType, CandleTooltipRectPosition,\n type CandleTooltipCustomCallbackData, YAxisPosition, PolygonType\n} from '../common/Styles'\nimport { formatPrecision, formatThousands, formatFoldDecimal } from '../common/utils/format'\nimport { createFont } from '../common/utils/canvas'\nimport { isFunction, isObject, isValid } from '../common/utils/typeChecks'\n\nimport { type CustomApi, FormatDateType } from '../Options'\n\nimport { PaneIdConstants } from '../pane/types'\n\nimport type Indicator from '../component/Indicator'\n\nimport IndicatorTooltipView from './IndicatorTooltipView'\n\nimport { type TooltipIcon } from '../store/TooltipStore'\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 pane = widget.getPane()\n const paneId = pane.getId()\n const chartStore = pane.getChart().getChartStore()\n const crosshair = chartStore.getTooltipStore().getCrosshair()\n if (isValid(crosshair.kLineData)) {\n const bounding = widget.getBounding()\n const yAxisBounding = pane.getYAxisWidget()!.getBounding()\n const dataList = chartStore.getDataList()\n const precision = chartStore.getPrecision()\n const locale = chartStore.getLocale()\n const customApi = chartStore.getCustomApi()\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const decimalFoldThreshold = chartStore.getDecimalFoldThreshold()\n const activeIcon = chartStore.getTooltipStore().getActiveIcon()\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n const dateTimeFormat = chartStore.getTimeScaleStore().getDateTimeFormat()\n const styles = chartStore.getStyles()\n const candleStyles = styles.candle\n const indicatorStyles = styles.indicator\n if (\n candleStyles.tooltip.showType === TooltipShowType.Rect &&\n indicatorStyles.tooltip.showType === TooltipShowType.Rect\n ) {\n const isDrawCandleTooltip = this.isDrawTooltip(crosshair, candleStyles.tooltip)\n const isDrawIndicatorTooltip = this.isDrawTooltip(crosshair, indicatorStyles.tooltip)\n this._drawRectTooltip(\n ctx, dataList, indicators,\n bounding, yAxisBounding,\n crosshair, precision,\n dateTimeFormat, locale, customApi, thousandsSeparator, decimalFoldThreshold,\n isDrawCandleTooltip, isDrawIndicatorTooltip,\n candleStyles.tooltip.offsetTop, styles\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, dataList, paneId, crosshair, activeIcon, precision,\n dateTimeFormat, locale, customApi, thousandsSeparator, decimalFoldThreshold,\n offsetLeft, offsetTop, maxWidth, candleStyles\n )\n this.drawIndicatorTooltip(\n ctx, paneId, dataList, crosshair,\n activeIcon, indicators, customApi,\n thousandsSeparator, decimalFoldThreshold,\n offsetLeft, top, maxWidth, indicatorStyles\n )\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, paneId, dataList, crosshair,\n activeIcon, indicators, customApi,\n thousandsSeparator, decimalFoldThreshold,\n offsetLeft, offsetTop, maxWidth, indicatorStyles\n )\n const isDrawCandleTooltip = this.isDrawTooltip(crosshair, candleStyles.tooltip)\n this._drawRectTooltip(\n ctx, dataList, indicators,\n bounding, yAxisBounding,\n crosshair, precision, dateTimeFormat,\n locale, customApi, thousandsSeparator, decimalFoldThreshold,\n isDrawCandleTooltip, false, top, styles\n )\n } else {\n const { offsetLeft, offsetTop, offsetRight } = candleStyles.tooltip\n const maxWidth = bounding.width - offsetRight\n const top = this._drawCandleStandardTooltip(\n ctx, dataList, paneId, crosshair, activeIcon, precision,\n dateTimeFormat, locale, customApi, thousandsSeparator, decimalFoldThreshold,\n offsetLeft, offsetTop, maxWidth, candleStyles\n )\n const isDrawIndicatorTooltip = this.isDrawTooltip(crosshair, indicatorStyles.tooltip)\n this._drawRectTooltip(\n ctx, dataList, indicators,\n bounding, yAxisBounding,\n crosshair, precision, dateTimeFormat,\n locale, customApi, thousandsSeparator, decimalFoldThreshold,\n false, isDrawIndicatorTooltip, top, styles\n )\n }\n }\n }\n\n private _drawCandleStandardTooltip (\n ctx: CanvasRenderingContext2D,\n dataList: KLineData[],\n paneId: string,\n crosshair: Crosshair,\n activeTooltipIcon: Nullable<TooltipIcon>,\n precision: Precision,\n dateTimeFormat: Intl.DateTimeFormat,\n locale: string,\n customApi: CustomApi,\n thousandsSeparator: string,\n decimalFoldThreshold: number,\n left: number,\n top: number,\n maxWidth: number,\n styles: CandleStyle\n ): number {\n const tooltipStyles = styles.tooltip\n const tooltipTextStyles = tooltipStyles.text\n let prevRowHeight = 0\n const coordinate = { x: left, y: top }\n if (this.isDrawTooltip(crosshair, tooltipStyles)) {\n const dataIndex = crosshair.dataIndex ?? 0\n const legends = this._getCandleTooltipLegends(\n { prev: dataList[dataIndex - 1] ?? null, current: crosshair.kLineData!, next: dataList[dataIndex + 1] ?? null },\n precision, dateTimeFormat, locale, customApi, thousandsSeparator, decimalFoldThreshold, styles\n )\n\n const [leftIcons, middleIcons, rightIcons] = this.classifyTooltipIcons(tooltipStyles.icons)\n\n prevRowHeight = this.drawStandardTooltipIcons(\n ctx, activeTooltipIcon, leftIcons, coordinate,\n paneId, '', left, prevRowHeight, maxWidth\n )\n\n prevRowHeight = this.drawStandardTooltipIcons(\n ctx, activeTooltipIcon, middleIcons, coordinate,\n paneId, '', 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, activeTooltipIcon, rightIcons, coordinate,\n paneId, '', left, prevRowHeight, maxWidth\n )\n }\n return coordinate.y + prevRowHeight\n }\n\n private _drawRectTooltip (\n ctx: CanvasRenderingContext2D,\n dataList: KLineData[],\n indicators: Indicator[],\n bounding: Bounding,\n yAxisBounding: Bounding,\n crosshair: Crosshair,\n precision: Precision,\n dateTimeFormat: Intl.DateTimeFormat,\n locale: string,\n customApi: CustomApi,\n thousandsSeparator: string,\n decimalFoldThreshold: number,\n isDrawCandleTooltip: boolean,\n isDrawIndicatorTooltip: boolean,\n top: number,\n styles: Styles\n ): void {\n const candleStyles = styles.candle\n const indicatorStyles = styles.indicator\n const candleTooltipStyles = candleStyles.tooltip\n const indicatorTooltipStyles = indicatorStyles.tooltip\n if (isDrawCandleTooltip || isDrawIndicatorTooltip) {\n const dataIndex = crosshair.dataIndex ?? 0\n const candleLegends = this._getCandleTooltipLegends(\n { prev: dataList[dataIndex - 1] ?? null, current: crosshair.kLineData!, next: dataList[dataIndex + 1] ?? null },\n precision, dateTimeFormat, locale, customApi, thousandsSeparator, decimalFoldThreshold, candleStyles\n )\n\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 ctx.font = createFont(indicatorTextSize, indicatorTextWeight, indicatorTextFamily)\n indicators.forEach(indicator => {\n const tooltipDataValues = this.getIndicatorTooltipData(dataList, crosshair, indicator, customApi, thousandsSeparator, decimalFoldThreshold, indicatorStyles).values ?? []\n indicatorLegendsArray.push(tooltipDataValues)\n tooltipDataValues.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 rectWidth += (rectBorderSize * 2 + rectPaddingLeft + rectPaddingRight)\n rectHeight += (rectBorderSize * 2 + rectPaddingTop + rectPaddingBottom)\n const centerX = bounding.width / 2\n const isPointer = rectPosition === CandleTooltipRectPosition.Pointer && crosshair.paneId === PaneIdConstants.CANDLE\n const isLeft = (crosshair.realX ?? 0) > centerX\n let rectX: number = 0\n if (isPointer) {\n const realX = crosshair.realX!\n if (isLeft) {\n rectX = realX - rectOffsetRight - rectWidth\n } else {\n rectX = realX + rectOffsetLeft\n }\n } else {\n if (isLeft) {\n rectX = rectOffsetLeft + offsetLeft\n if (styles.yAxis.inside && styles.yAxis.position === YAxisPosition.Left) {\n rectX += yAxisBounding.width\n }\n } else {\n rectX = bounding.width - rectOffsetRight - rectWidth - offsetRight\n if (styles.yAxis.inside && styles.yAxis.position === YAxisPosition.Right) {\n rectX -= yAxisBounding.width\n }\n }\n }\n\n let rectY = top + rectOffsetTop\n if (isPointer) {\n const y = crosshair.y!\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 (\n data: CandleTooltipCustomCallbackData,\n precision: Precision,\n dateTimeFormat: Intl.DateTimeFormat,\n locale: string,\n customApi: CustomApi,\n thousandsSeparator: string,\n decimalFoldThreshold: number,\n styles: CandleStyle\n ): TooltipLegend[] {\n const tooltipStyles = styles.tooltip\n const textColor = tooltipStyles.text.color\n const current = data.current\n const prevClose = data.prev?.close ?? current.close\n const changeValue = current.close - prevClose\n const { price: pricePrecision, volume: volumePrecision } = precision\n const mapping = {\n '{time}': customApi.formatDate(dateTimeFormat, current.timestamp, 'YYYY-MM-DD HH:mm', FormatDateType.Tooltip),\n '{open}': formatFoldDecimal(formatThousands(formatPrecision(current.open, pricePrecision), thousandsSeparator), decimalFoldThreshold),\n '{high}': formatFoldDecimal(formatThousands(formatPrecision(current.high, pricePrecision), thousandsSeparator), decimalFoldThreshold),\n '{low}': formatFoldDecimal(formatThousands(formatPrecision(current.low, pricePrecision), thousandsSeparator), decimalFoldThreshold),\n '{close}': formatFoldDecimal(formatThousands(formatPrecision(current.close, pricePrecision), thousandsSeparator), decimalFoldThreshold),\n '{volume}': formatFoldDecimal(formatThousands(\n customApi.formatBigNumber(formatPrecision(current.volume ?? tooltipStyles.defaultValue, volumePrecision)),\n thousandsSeparator\n ), decimalFoldThreshold),\n '{turnover}': formatFoldDecimal(formatThousands(\n formatPrecision(current.turnover ?? tooltipStyles.defaultValue, pricePrecision),\n thousandsSeparator\n ), decimalFoldThreshold),\n '{change}': prevClose === 0 ? tooltipStyles.defaultValue : `${formatThousands(formatPrecision(changeValue / prevClose * 100), thousandsSeparator)}%`\n }\n const legends = (\n isFunction(tooltipStyles.custom)\n ? tooltipStyles.custom(data, 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 = v.text.match(/{(\\S*)}/)\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<YAxis>) {\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, type 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 Axis from '../component/Axis'\n\nimport View from './View'\n\nexport default abstract class AxisView<C extends Axis = Axis> extends View<C> {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const bounding = widget.getBounding()\n const axis = pane.getAxisComponent()\n const styles: AxisStyle = this.getAxisStyles(pane.getChart().getStyles())\n if (styles.show) {\n if (styles.axisLine.show) {\n this.createFigure({\n name: 'line',\n attrs: this.createAxisLine(bounding, styles),\n styles: styles.axisLine\n })?.draw(ctx)\n }\n const ticks = axis.getTicks()\n if (styles.tickLine.show) {\n const lines = this.createTickLines(ticks, bounding, styles)\n lines.forEach(line => {\n this.createFigure({\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 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, type 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<YAxis> {\n override getAxisStyles (styles: Styles): AxisStyle {\n return styles.yAxis\n }\n\n override createAxisLine (bounding: Bounding, styles: AxisStyle): LineAttrs {\n const yAxis = this.getWidget().getPane().getAxisComponent()\n const size = styles.axisLine.size\n let x: number\n if (yAxis.isFromZero()) {\n x = size / 2\n } else {\n x = bounding.width - size\n }\n return {\n coordinates: [\n { x, y: 0 },\n { x, y: bounding.height }\n ]\n }\n }\n\n override createTickLines (ticks: AxisTick[], bounding: Bounding, styles: AxisStyle): LineAttrs[] {\n const yAxis = this.getWidget().getPane().getAxisComponent()\n const axisLineStyles = styles.axisLine\n const tickLineStyles = styles.tickLine\n\n let startX = 0\n let endX = 0\n if (yAxis.isFromZero()) {\n startX = 0\n if (axisLineStyles.show) {\n startX += axisLineStyles.size\n }\n endX = startX + tickLineStyles.length\n } else {\n startX = bounding.width\n if (axisLineStyles.show) {\n startX -= axisLineStyles.size\n }\n endX = startX - tickLineStyles.length\n }\n return ticks.map(tick => ({\n coordinates: [\n { x: startX, y: tick.coord },\n { x: endX, y: tick.coord }\n ]\n }))\n }\n\n override createTickTexts (ticks: AxisTick[], bounding: Bounding, styles: AxisStyle): TextAttrs[] {\n const yAxis = this.getWidget().getPane().getAxisComponent()\n const axisLineStyles = styles.axisLine\n const tickLineStyles = styles.tickLine\n const tickTextStyles = styles.tickText\n\n let x = 0\n if (yAxis.isFromZero()) {\n x = tickTextStyles.marginStart\n if (axisLineStyles.show) {\n x += axisLineStyles.size\n }\n if (tickLineStyles.show) {\n x += tickLineStyles.length\n }\n } else {\n x = bounding.width - tickTextStyles.marginEnd\n if (axisLineStyles.show) {\n x -= axisLineStyles.size\n }\n if (tickLineStyles.show) {\n x -= tickLineStyles.length\n }\n }\n const textAlign = this.getWidget().getPane().getAxisComponent().isFromZero() ? 'left' : 'right'\n return ticks.map(tick => ({\n x,\n y: tick.coord,\n text: tick.text,\n align: textAlign,\n baseline: 'middle'\n }))\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { YAxisType } from '../common/Styles'\nimport { formatPrecision, formatThousands, formatFoldDecimal } from '../common/utils/format'\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 visibleDataList = chartStore.getVisibleDataList()\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: string\n if (close > open) {\n backgroundColor = lastPriceMarkStyles.upColor\n } else if (close < open) {\n backgroundColor = lastPriceMarkStyles.downColor\n } else {\n backgroundColor = lastPriceMarkStyles.noChangeColor\n }\n let text: string\n if (yAxis.getType() === YAxisType.Percentage) {\n const fromData = visibleDataList[0].data\n const fromClose = fromData!.close\n text = `${((close - fromClose) / fromClose * 100).toFixed(2)}%`\n } else {\n text = formatPrecision(close, precision.price)\n }\n text = formatFoldDecimal(formatThousands(text, chartStore.getThousandsSeparator()), chartStore.getDecimalFoldThreshold())\n let x: number\n let textAlgin: CanvasTextAlign\n if (yAxis.isFromZero()) {\n x = 0\n textAlgin = 'left'\n } else {\n x = bounding.width\n textAlgin = 'right'\n }\n this.createFigure({\n 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 { formatPrecision, formatThousands, formatFoldDecimal } from '../common/utils/format'\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<YAxis> {\n override drawImp (ctx: CanvasRenderingContext2D): void {\n const widget = this.getWidget()\n const pane = widget.getPane()\n const bounding = widget.getBounding()\n const chartStore = pane.getChart().getChartStore()\n const customApi = chartStore.getCustomApi()\n const defaultStyles = chartStore.getStyles().indicator\n const lastValueMarkStyles = defaultStyles.lastValueMark\n const lastValueMarkTextStyles = lastValueMarkStyles.text\n if (lastValueMarkStyles.show) {\n const yAxis = pane.getAxisComponent()\n const dataList = chartStore.getDataList()\n const dataIndex = dataList.length - 1\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const decimalFoldThreshold = chartStore.getDecimalFoldThreshold()\n indicators.forEach(indicator => {\n const result = indicator.result\n const indicatorData = result[dataIndex]\n if (isValid(indicatorData) && indicator.visible) {\n const precision = indicator.precision\n eachFigures(dataList, indicator, dataIndex, defaultStyles, (figure: IndicatorFigure, figureStyles: Required<IndicatorFigureStyle>) => {\n const value = indicatorData[figure.key]\n if (isNumber(value)) {\n const y = yAxis.convertToNicePixel(value)\n let text = formatPrecision(value, precision)\n if (indicator.shouldFormatBigNumber) {\n text = customApi.formatBigNumber(text)\n }\n text = formatFoldDecimal(formatThousands(text, thousandsSeparator), decimalFoldThreshold)\n let x: number\n let textAlign: CanvasTextAlign\n if (yAxis.isFromZero()) {\n x = 0\n textAlign = 'left'\n } else {\n x = bounding.width\n textAlign = 'right'\n }\n\n this.createFigure({\n 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 type Bounding from '../common/Bounding'\nimport type BarSpace from '../common/BarSpace'\nimport { type OverlayStyle } from '../common/Styles'\nimport { type CustomApi } from '../Options'\nimport { formatPrecision, formatThousands, formatFoldDecimal } from '../common/utils/format'\nimport { isNumber } from '../common/utils/typeChecks'\n\nimport type Axis from '../component/Axis'\nimport type XAxis from '../component/XAxis'\nimport type YAxis from '../component/YAxis'\nimport { type OverlayPrecision, type OverlayFigure } from '../component/Overlay'\nimport type Overlay from '../component/Overlay'\n\nimport { type EventOverlayInfo } from '../store/OverlayStore'\n\nimport OverlayView from './OverlayView'\n\nexport default class OverlayYAxisView<C extends Axis = YAxis> extends OverlayView<C> {\n override coordinateToPointTimestampDataIndexFlag (): boolean {\n return false\n }\n\n override drawDefaultFigures (\n ctx: CanvasRenderingContext2D,\n overlay: Overlay,\n coordinates: Coordinate[],\n bounding: Bounding,\n precision: OverlayPrecision,\n dateTimeFormat: Intl.DateTimeFormat,\n customApi: CustomApi,\n thousandsSeparator: string,\n decimalFoldThreshold: number,\n defaultStyles: OverlayStyle,\n xAxis: Nullable<XAxis>,\n yAxis: Nullable<YAxis>,\n _hoverInstanceInfo: EventOverlayInfo,\n clickInstanceInfo: EventOverlayInfo\n ): void {\n this.drawFigures(\n ctx,\n overlay,\n this.getDefaultFigures(overlay, coordinates, bounding, precision, dateTimeFormat, customApi, thousandsSeparator, decimalFoldThreshold, xAxis, yAxis, clickInstanceInfo),\n defaultStyles\n )\n }\n\n protected getDefaultFigures (\n overlay: Overlay,\n coordinates: Coordinate[],\n bounding: Bounding,\n precision: OverlayPrecision,\n _dateTimeFormat: Intl.DateTimeFormat,\n _customApi: CustomApi,\n thousandsSeparator: string,\n decimalFoldThreshold: number,\n _xAxis: Nullable<XAxis>,\n yAxis: Nullable<YAxis>,\n clickInstanceInfo: EventOverlayInfo\n ): OverlayFigure[] {\n const figures: OverlayFigure[] = []\n if (\n overlay.needDefaultYAxisFigure &&\n overlay.id === clickInstanceInfo.instance?.id &&\n clickInstanceInfo.paneId === this.getWidget().getPane().getId()\n ) {\n let topY = Number.MAX_SAFE_INTEGER\n let bottomY = Number.MIN_SAFE_INTEGER\n const isFromZero = yAxis?.isFromZero() ?? false\n let textAlign: CanvasTextAlign\n let x: number\n if (isFromZero) {\n textAlign = 'left'\n x = 0\n } else {\n textAlign = 'right'\n x = bounding.width\n }\n coordinates.forEach((coordinate, index) => {\n const point = overlay.points[index]\n if (isNumber(point.value)) {\n topY = Math.min(topY, coordinate.y)\n bottomY = Math.max(bottomY, coordinate.y)\n const text = formatFoldDecimal(formatThousands(formatPrecision(point.value, precision.price), thousandsSeparator), decimalFoldThreshold)\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 bounding: Bounding,\n barSpace: BarSpace,\n precision: OverlayPrecision,\n thousandsSeparator: string,\n decimalFoldThreshold: number,\n dateTimeFormat: Intl.DateTimeFormat,\n defaultStyles: OverlayStyle,\n xAxis: Nullable<XAxis>,\n yAxis: Nullable<YAxis>\n ): OverlayFigure | OverlayFigure[] {\n return overlay.createYAxisFigures?.({ overlay, coordinates, bounding, barSpace, precision, thousandsSeparator, decimalFoldThreshold, dateTimeFormat, defaultStyles, xAxis, yAxis }) ?? []\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type Bounding from '../common/Bounding'\nimport type Crosshair from '../common/Crosshair'\nimport { type CrosshairStyle, type CrosshairDirectionStyle, YAxisType, type StateTextStyle } from '../common/Styles'\nimport { isString } from '../common/utils/typeChecks'\nimport { formatPrecision, formatThousands, formatFoldDecimal } from '../common/utils/format'\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/ChartStore'\n\nimport View from './View'\n\nexport default class CrosshairHorizontalLabelView<C extends Axis = YAxis> extends View<C> {\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.getTooltipStore().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 text: string\n if (yAxis.getType() === YAxisType.Percentage) {\n const visibleDataList = chartStore.getVisibleDataList()\n const fromData = visibleDataList[0]?.data\n text = `${((value - fromData!.close) / fromData!.close * 100).toFixed(2)}%`\n } else {\n const indicators = chartStore.getIndicatorStore().getInstances(crosshair.paneId!)\n let precision = 0\n let shouldFormatBigNumber = false\n if (yAxis.isInCandle()) {\n precision = chartStore.getPrecision().price\n } else {\n indicators.forEach(indicator => {\n precision = Math.max(indicator.precision, precision)\n if (!shouldFormatBigNumber) {\n shouldFormatBigNumber = indicator.shouldFormatBigNumber\n }\n })\n }\n text = formatPrecision(value, precision)\n if (shouldFormatBigNumber) {\n text = chartStore.getCustomApi().formatBigNumber(text)\n }\n }\n return formatFoldDecimal(formatThousands(text, chartStore.getThousandsSeparator()), chartStore.getDecimalFoldThreshold())\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: number\n let textAlign: CanvasTextAlign\n if (yAxis.isFromZero()) {\n x = 0\n textAlign = 'left'\n } else {\n x = bounding.width\n textAlign = 'right'\n }\n\n return { x, y: crosshair.y!, 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'\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<DrawPane<YAxis>> {\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<YAxis>) {\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 this._yAxisView.draw(ctx)\n if (this.getPane().getAxisComponent().isInCandle()) {\n this._candleLastPriceLabelView.draw(ctx)\n }\n this._indicatorLastValueView.draw(ctx)\n }\n\n override updateOverlay (ctx: CanvasRenderingContext2D): void {\n this._overlayYAxisView.draw(ctx)\n this._crosshairHorizontalLabelView.draw(ctx)\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type VisibleRange from '../common/VisibleRange'\n\nimport type DrawPane from '../pane/DrawPane'\n\nimport { getPrecision, nice, round } from '../common/utils/number'\nimport type Bounding from '../common/Bounding'\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}\n\nexport interface Axis {\n convertToPixel: (value: number) => number\n convertFromPixel: (px: number) => number\n}\n\nexport interface AxisCreateTicksParams {\n range: AxisRange\n bounding: Bounding\n defaultTicks: AxisTick[]\n}\n\nexport type AxisCreateTicksCallback = (params: AxisCreateTicksParams) => AxisTick[]\n\nexport interface AxisTemplate {\n name: string\n createTicks: AxisCreateTicksCallback\n}\n\nexport default abstract class AxisImp implements Pick<AxisTemplate, 'createTicks'>, Axis {\n private readonly _parent: DrawPane<AxisImp>\n\n private _range: AxisRange = { from: 0, to: 0, range: 0, realFrom: 0, realTo: 0, realRange: 0 }\n private _prevRange: AxisRange = { from: 0, to: 0, range: 0, realFrom: 0, realTo: 0, realRange: 0 }\n private _ticks: AxisTick[] = []\n\n private _autoCalcTickFlag = true\n\n constructor (parent: DrawPane<AxisImp>) {\n this._parent = parent\n }\n\n getParent (): DrawPane<AxisImp> { return this._parent }\n\n buildTicks (force: boolean): boolean {\n if (this._autoCalcTickFlag) {\n this._range = this.calcRange()\n }\n if (this._prevRange.from !== this._range.from || this._prevRange.to !== this._range.to || force) {\n this._prevRange = this._range\n const defaultTicks = this.optimalTicks(this._calcTicks())\n this._ticks = this.createTicks({\n range: this._range,\n bounding: this.getSelfBounding(),\n defaultTicks\n })\n return true\n }\n return false\n }\n\n getTicks (): AxisTick[] {\n return this._ticks\n }\n\n getScrollZoomEnabled (): boolean {\n return this.getParent().getOptions().axisOptions.scrollZoomEnabled ?? true\n }\n\n 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 private _calcTicks (): AxisTick[] {\n const { realFrom, realTo, realRange } = this._range\n const ticks: AxisTick[] = []\n\n if (realRange >= 0) {\n const [interval, precision] = this._calcTickInterval(realRange)\n const first = round(Math.ceil(realFrom / interval) * interval, precision)\n const last = round(Math.floor(realTo / interval) * interval, precision)\n let n = 0\n let f = first\n\n if (interval !== 0) {\n while (f <= last) {\n const v = f.toFixed(precision)\n ticks[n] = { text: v, coord: 0, value: v }\n ++n\n f += interval\n }\n }\n }\n return ticks\n }\n\n private _calcTickInterval (range: number): number[] {\n const interval = nice(range / 8.0)\n const precision = getPrecision(interval)\n return [interval, precision]\n }\n\n protected abstract calcRange (): AxisRange\n\n protected abstract optimalTicks (ticks: AxisTick[]): AxisTick[]\n\n abstract createTicks (params: AxisCreateTicksParams): AxisTick[]\n\n abstract getAutoSize (): number\n\n abstract getSelfBounding (): Bounding\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 { YAxisType, YAxisPosition, CandleType } from '../common/Styles'\nimport type Bounding from '../common/Bounding'\nimport { isNumber, isValid } from '../common/utils/typeChecks'\nimport { index10, log10 } from '../common/utils/number'\nimport { calcTextWidth } from '../common/utils/canvas'\nimport { formatPrecision, formatThousands, formatFoldDecimal } from '../common/utils/format'\n\nimport AxisImp, { type AxisTemplate, type Axis, type AxisRange, type AxisTick, type AxisCreateTicksParams } from './Axis'\n\nimport { type IndicatorFigure } from './Indicator'\n\nimport type DrawPane from '../pane/DrawPane'\n\nimport { PaneIdConstants } from '../pane/types'\n\ninterface FiguresResult {\n figures: IndicatorFigure[]\n result: any[]\n}\n\nexport interface YAxis extends Axis {\n isFromZero: () => boolean\n isInCandle: () => boolean\n}\n\nexport type YAxisConstructor = new (parent: DrawPane<AxisImp>) => YAxisImp\n\nexport default abstract class YAxisImp extends AxisImp implements YAxis {\n protected calcRange (): AxisRange {\n const parent = this.getParent()\n const chart = parent.getChart()\n const chartStore = chart.getChartStore()\n let min = Number.MAX_SAFE_INTEGER\n let max = Number.MIN_SAFE_INTEGER\n const figuresResultList: FiguresResult[] = []\n let shouldOhlc = false\n let specifyMin = Number.MAX_SAFE_INTEGER\n let specifyMax = Number.MIN_SAFE_INTEGER\n let indicatorPrecision = Number.MAX_SAFE_INTEGER\n const indicators = chartStore.getIndicatorStore().getInstances(parent.getId())\n indicators.forEach(indicator => {\n if (!shouldOhlc) {\n shouldOhlc = indicator.shouldOhlc ?? false\n }\n indicatorPrecision = Math.min(indicatorPrecision, indicator.precision)\n if (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 figuresResultList.push({\n figures: indicator.figures ?? [],\n result: indicator.result ?? []\n })\n })\n\n let precision = 4\n const inCandle = this.isInCandle()\n if (inCandle) {\n const { price: pricePrecision } = chartStore.getPrecision()\n if (indicatorPrecision !== Number.MAX_SAFE_INTEGER) {\n precision = Math.min(indicatorPrecision, pricePrecision)\n } else {\n precision = pricePrecision\n }\n } else {\n if (indicatorPrecision !== Number.MAX_SAFE_INTEGER) {\n precision = indicatorPrecision\n }\n }\n const visibleDataList = chartStore.getVisibleDataList()\n const candleStyles = chart.getStyles().candle\n const isArea = candleStyles.type === CandleType.Area\n const areaValueKey = candleStyles.area.value\n const shouldCompareHighLow = (inCandle && !isArea) || (!inCandle && shouldOhlc)\n visibleDataList.forEach(({ dataIndex, data }) => {\n if (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 figuresResultList.forEach(({ figures, result }) => {\n const indicatorData = result[dataIndex] ?? {}\n figures.forEach(figure => {\n const value = indicatorData[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\n const type = this.getType()\n let dif: number\n switch (type) {\n case YAxisType.Percentage: {\n const fromData = visibleDataList[0]?.data\n if (isValid(fromData) && isNumber(fromData.close)) {\n min = (min - fromData.close) / fromData.close * 100\n max = (max - fromData.close) / fromData.close * 100\n }\n dif = Math.pow(10, -2)\n break\n }\n case YAxisType.Log: {\n min = log10(min)\n max = log10(max)\n dif = 0.05 * index10(-precision)\n break\n }\n default: {\n dif = index10(-precision)\n }\n }\n if (\n min === max ||\n Math.abs(min - max) < dif\n ) {\n const minCheck = specifyMin === min\n const maxCheck = specifyMax === max\n min = minCheck ? min : (maxCheck ? min - 8 * dif : min - 4 * dif)\n max = maxCheck ? max : (minCheck ? max + 8 * dif : max + 4 * dif)\n }\n\n const height = this.getParent().getYAxisWidget()?.getBounding().height ?? 0\n const { gap: paneGap } = parent.getOptions()\n let topRate = paneGap?.top ?? 0.2\n if (topRate >= 1) {\n topRate = topRate / height\n }\n let bottomRate = paneGap?.bottom ?? 0.1\n if (bottomRate >= 1) {\n bottomRate = bottomRate / height\n }\n let range = Math.abs(max - min)\n // gap\n min = min - range * bottomRate\n max = max + range * topRate\n range = Math.abs(max - min)\n let realMin: number\n let realMax: number\n let realRange: number\n if (type === YAxisType.Log) {\n realMin = index10(min)\n realMax = index10(max)\n realRange = Math.abs(realMax - realMin)\n } else {\n realMin = min\n realMax = max\n realRange = range\n }\n\n return {\n from: min, to: max, range, realFrom: realMin, realTo: realMax, realRange\n }\n }\n\n /**\n * 内部值转换成坐标\n * @param value\n * @return {number}\n * @private\n */\n _innerConvertToPixel (value: number): number {\n const height = this.getParent().getYAxisWidget()?.getBounding().height ?? 0\n const { from, range } = this.getRange()\n const rate = (value - from) / range\n return this.isReverse() ? Math.round(rate * height) : Math.round((1 - rate) * height)\n }\n\n /**\n * 是否是蜡烛图轴\n * @return {boolean}\n */\n isInCandle (): boolean {\n return this.getParent().getId() === PaneIdConstants.CANDLE\n }\n\n /**\n * y轴类型\n * @return {YAxisType}\n */\n getType (): YAxisType {\n if (this.isInCandle()) {\n return this.getParent().getChart().getStyles().yAxis.type\n }\n return YAxisType.Normal\n }\n\n getPosition (): string {\n return this.getParent().getChart().getStyles().yAxis.position\n }\n\n /**\n * 是否反转\n * @return {boolean}\n */\n isReverse (): boolean {\n if (this.isInCandle()) {\n return this.getParent().getChart().getStyles().yAxis.reverse\n }\n return false\n }\n\n /**\n * 是否从y轴0开始\n * @return {boolean}\n */\n isFromZero (): boolean {\n const yAxisStyles = this.getParent().getChart().getStyles().yAxis\n const inside = yAxisStyles.inside\n return (\n (yAxisStyles.position === YAxisPosition.Left && inside) ||\n (yAxisStyles.position === YAxisPosition.Right && !inside)\n )\n }\n\n protected optimalTicks (ticks: AxisTick[]): AxisTick[] {\n const pane = this.getParent()\n const height = pane.getYAxisWidget()?.getBounding().height ?? 0\n const chartStore = pane.getChart().getChartStore()\n const customApi = chartStore.getCustomApi()\n const optimalTicks: AxisTick[] = []\n const type = this.getType()\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n const thousandsSeparator = chartStore.getThousandsSeparator()\n const decimalFoldThreshold = chartStore.getDecimalFoldThreshold()\n let precision = 0\n let shouldFormatBigNumber = false\n if (this.isInCandle()) {\n precision = chartStore.getPrecision().price\n } else {\n indicators.forEach(tech => {\n precision = Math.max(precision, tech.precision)\n if (!shouldFormatBigNumber) {\n shouldFormatBigNumber = tech.shouldFormatBigNumber\n }\n })\n }\n const textHeight = chartStore.getStyles().xAxis.tickText.size\n let validY: number\n ticks.forEach(({ value }) => {\n let v: string\n let y = this._innerConvertToPixel(+value)\n switch (type) {\n case YAxisType.Percentage: {\n v = `${formatPrecision(value, 2)}%`\n break\n }\n case YAxisType.Log: {\n y = this._innerConvertToPixel(log10(+value))\n v = formatPrecision(value, precision)\n break\n }\n default: {\n v = formatPrecision(value, precision)\n if (shouldFormatBigNumber) {\n v = customApi.formatBigNumber(value)\n }\n break\n }\n }\n v = formatFoldDecimal(formatThousands(v, thousandsSeparator), decimalFoldThreshold)\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 return optimalTicks\n }\n\n override getAutoSize (): number {\n const pane = this.getParent()\n const chart = pane.getChart()\n const styles = chart.getStyles()\n const yAxisStyles = styles.yAxis\n const width = yAxisStyles.size\n if (width !== 'auto') {\n return width\n }\n const chartStore = chart.getChartStore()\n const customApi = chartStore.getCustomApi()\n let yAxisWidth = 0\n if (yAxisStyles.show) {\n if (yAxisStyles.axisLine.show) {\n yAxisWidth += yAxisStyles.axisLine.size\n }\n if (yAxisStyles.tickLine.show) {\n yAxisWidth += yAxisStyles.tickLine.length\n }\n if (yAxisStyles.tickText.show) {\n let textWidth = 0\n this.getTicks().forEach(tick => {\n textWidth = Math.max(textWidth, calcTextWidth(tick.text, yAxisStyles.tickText.size, yAxisStyles.tickText.weight, yAxisStyles.tickText.family))\n })\n yAxisWidth += (yAxisStyles.tickText.marginStart + yAxisStyles.tickText.marginEnd + textWidth)\n }\n }\n const crosshairStyles = styles.crosshair\n let crosshairVerticalTextWidth = 0\n if (\n crosshairStyles.show &&\n crosshairStyles.horizontal.show &&\n crosshairStyles.horizontal.text.show\n ) {\n const indicators = chartStore.getIndicatorStore().getInstances(pane.getId())\n let techPrecision = 0\n let shouldFormatBigNumber = false\n indicators.forEach(tech => {\n techPrecision = Math.max(tech.precision, techPrecision)\n if (!shouldFormatBigNumber) {\n shouldFormatBigNumber = tech.shouldFormatBigNumber\n }\n })\n let precision = 2\n if (this.getType() !== YAxisType.Percentage) {\n if (this.isInCandle()) {\n const { price: pricePrecision } = chartStore.getPrecision()\n const lastValueMarkStyles = styles.indicator.lastValueMark\n if (lastValueMarkStyles.show && lastValueMarkStyles.text.show) {\n precision = Math.max(techPrecision, pricePrecision)\n } else {\n precision = pricePrecision\n }\n } else {\n precision = techPrecision\n }\n }\n let valueText = formatPrecision(this.getRange().to, precision)\n if (shouldFormatBigNumber) {\n valueText = customApi.formatBigNumber(valueText)\n }\n valueText = formatFoldDecimal(valueText, chartStore.getDecimalFoldThreshold())\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 getSelfBounding (): Bounding {\n return this.getParent().getYAxisWidget()!.getBounding()\n }\n\n convertFromPixel (pixel: number): number {\n const height = this.getParent().getYAxisWidget()?.getBounding().height ?? 0\n const { from, range } = this.getRange()\n const rate = this.isReverse() ? pixel / height : 1 - pixel / height\n const value = rate * range + from\n switch (this.getType()) {\n case YAxisType.Percentage: {\n const chartStore = this.getParent().getChart().getChartStore()\n const visibleDataList = chartStore.getVisibleDataList()\n const fromData = visibleDataList[0]?.data\n if (isValid(fromData) && isNumber(fromData.close)) {\n return fromData.close * value / 100 + fromData.close\n }\n return 0\n }\n case YAxisType.Log: {\n return index10(value)\n }\n default: {\n return value\n }\n }\n }\n\n convertToRealValue (value: number): number {\n let v = value\n if (this.getType() === YAxisType.Log) {\n v = index10(value)\n }\n return v\n }\n\n convertToPixel (value: number): number {\n let v = value\n switch (this.getType()) {\n case YAxisType.Percentage: {\n const chartStore = this.getParent().getChart().getChartStore()\n const visibleDataList = chartStore.getVisibleDataList()\n const fromData = visibleDataList[0]?.data\n if (isValid(fromData) && isNumber(fromData.close)) {\n v = (value - fromData.close) / fromData.close * 100\n }\n break\n }\n case YAxisType.Log: {\n v = log10(value)\n break\n }\n default: {\n v = value\n }\n }\n return this._innerConvertToPixel(v)\n }\n\n convertToNicePixel (value: number): number {\n const height = this.getParent().getYAxisWidget()?.getBounding().height ?? 0\n const pixel = this.convertToPixel(value)\n return Math.round(Math.max(height * 0.05, Math.min(pixel, height * 0.98)))\n }\n\n static extend (template: AxisTemplate): YAxisConstructor {\n class Custom extends YAxisImp {\n createTicks (params: AxisCreateTicksParams): AxisTick[] {\n return template.createTicks(params)\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 defaultYAxis: AxisTemplate = {\n name: 'default',\n createTicks: ({ defaultTicks }) => defaultTicks\n}\n\nexport default defaultYAxis\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'\nimport YAxisImp, { type YAxisConstructor } from '../../component/YAxis'\n\nimport defaultYAxis from './default'\n\nconst yAxises: Record<string, YAxisConstructor> = {\n default: YAxisImp.extend(defaultYAxis)\n}\n\nfunction registerYAxis (axis: AxisTemplate): void {\n yAxises[axis.name] = YAxisImp.extend(axis)\n}\n\nfunction getYAxisClass (name: string): YAxisConstructor {\n return yAxises[name] ?? yAxises.default\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'\n\nimport type Chart from '../Chart'\n\nimport { createDom } from '../common/utils/dom'\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: Bounding = createDefaultBounding()\n\n constructor (rootContainer: HTMLElement, afterElement: Nullable<HTMLElement>, 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<HTMLElement>): 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 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 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<Partial<Bounding>>): 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 { isString, isValid, merge } from '../common/utils/typeChecks'\n\nimport 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_MIN_HEIGHT, PaneIdConstants } from './types'\n\nimport type Chart from '../Chart'\n\nimport { createDom } from '../common/utils/dom'\nimport { getPixelRatio } from '../common/utils/canvas'\nimport type PickPartial from '../common/PickPartial'\n\nexport default abstract class DrawPane<C extends Axis = Axis> extends Pane {\n private readonly _mainWidget: DrawWidget<DrawPane<C>>\n private readonly _yAxisWidget: Nullable<YAxisWidget> = null\n\n private _axis: C\n\n private readonly _options: PickPartial<DeepRequired<Omit<PaneOptions, 'id' | 'height'>>, 'position'> = { minHeight: PANE_MIN_HEIGHT, dragEnabled: true, gap: { top: 0.2, bottom: 0.1 }, axisOptions: { name: 'default', scrollZoomEnabled: true } }\n\n constructor (rootContainer: HTMLElement, afterElement: Nullable<HTMLElement>, chart: Chart, id: string, options: Omit<PaneOptions, 'id' | 'height'>) {\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: Omit<PaneOptions, 'id' | 'height'>): this {\n const name = options.axisOptions?.name\n if (\n (this._options.axisOptions.name !== name && isString(name)) ||\n !isValid(this._axis)\n ) {\n this._axis = this.createAxisComponent(name ?? 'default')\n }\n merge(this._options, options)\n let container: HTMLElement\n let cursor: string\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.axisOptions?.scrollZoomEnabled ?? true) {\n container.style.cursor = cursor\n } else {\n container.style.cursor = 'default'\n }\n return this\n }\n\n getOptions (): PickPartial<DeepRequired<Omit<PaneOptions, 'id' | 'height'>>, 'position'> { return this._options }\n\n getAxisComponent (): C {\n return this._axis\n }\n\n override setBounding (rootBounding: Partial<Bounding>, mainBounding?: Partial<Bounding>, yAxisBounding?: Partial<Bounding>): this {\n merge(this.getBounding(), rootBounding)\n const contentBounding: Partial<Bounding> = {}\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 this._yAxisWidget?.setBounding(contentBounding)\n if (isValid(mainBounding)) {\n this._mainWidget.setBounding(mainBounding)\n }\n if (isValid(yAxisBounding)) {\n this._yAxisWidget?.setBounding(yAxisBounding)\n }\n return this\n }\n\n getMainWidget (): DrawWidget<DrawPane<C>> { return this._mainWidget }\n\n getYAxisWidget (): Nullable<YAxisWidget> { 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<YAxisWidget> { return null }\n\n protected abstract createMainWidget (container: HTMLElement): DrawWidget<DrawPane<C>>\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<YAxis> {\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<DrawPane<YAxis>> {\n return new IndicatorWidget(container, this)\n }\n\n override createYAxisWidget (container: HTMLElement): Nullable<YAxisWidget> {\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<DrawPane<YAxis>> {\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, type 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<XAxis> {\n override getAxisStyles (styles: Styles): AxisStyle {\n return styles.xAxis\n }\n\n override createAxisLine (bounding: Bounding, styles: AxisStyle): LineAttrs {\n const correction = styles.axisLine.size / 2\n return {\n coordinates: [\n { x: 0, y: correction },\n { x: bounding.width, y: correction }\n ]\n }\n }\n\n override createTickLines (ticks: AxisTick[], _bounding: Bounding, styles: AxisStyle): LineAttrs[] {\n const tickLineStyles = styles.tickLine\n const axisLineSize = styles.axisLine.size\n return ticks.map(tick => ({\n coordinates: [\n { x: tick.coord, y: 0 },\n { x: tick.coord, y: axisLineSize + tickLineStyles.length }\n ]\n }))\n }\n\n override createTickTexts (ticks: AxisTick[], _bounding: Bounding, styles: AxisStyle): TextAttrs[] {\n const tickTickStyles = styles.tickText\n const axisLineSize = styles.axisLine.size\n const tickLineLength = styles.tickLine.length\n return ticks.map(tick => ({\n x: tick.coord,\n y: axisLineSize + tickLineLength + tickTickStyles.marginStart,\n text: tick.text,\n align: 'center',\n baseline: 'top'\n }))\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type Nullable from '../common/Nullable'\nimport type Coordinate from '../common/Coordinate'\nimport type Bounding from '../common/Bounding'\nimport type BarSpace from '../common/BarSpace'\nimport type Precision from '../common/Precision'\nimport { type OverlayStyle } from '../common/Styles'\nimport { isNumber } from '../common/utils/typeChecks'\n\nimport { type CustomApi, FormatDateType } from '../Options'\n\nimport type XAxis from '../component/XAxis'\nimport type YAxis from '../component/YAxis'\nimport { type OverlayPrecision, type OverlayFigure } from '../component/Overlay'\nimport type Overlay from '../component/Overlay'\n\nimport { type EventOverlayInfo, type ProgressOverlayInfo } from '../store/OverlayStore'\nimport type OverlayStore from '../store/OverlayStore'\n\nimport OverlayYAxisView from './OverlayYAxisView'\n\nexport default class OverlayXAxisView extends OverlayYAxisView<XAxis> {\n override coordinateToPointTimestampDataIndexFlag (): boolean {\n return true\n }\n\n override coordinateToPointValueFlag (): boolean {\n return false\n }\n\n override getCompleteOverlays (overlayStore: OverlayStore): Overlay[] {\n return overlayStore.getInstances()\n }\n\n override getProgressOverlay (info: ProgressOverlayInfo): Overlay {\n return info.instance\n }\n\n override getDefaultFigures (\n overlay: Overlay,\n coordinates: Coordinate[],\n bounding: Bounding,\n _precision: Precision,\n dateTimeFormat: Intl.DateTimeFormat,\n customApi: CustomApi,\n _thousandsSeparator: string,\n _decimalFoldThreshold: number,\n _xAxis: Nullable<XAxis>,\n _yAxis: Nullable<YAxis>,\n clickInstanceInfo: EventOverlayInfo\n ): OverlayFigure[] {\n const figures: OverlayFigure[] = []\n if (overlay.needDefaultXAxisFigure && overlay.id === clickInstanceInfo.instance?.id) {\n let leftX = Number.MAX_SAFE_INTEGER\n let rightX = Number.MIN_SAFE_INTEGER\n coordinates.forEach((coordinate, index) => {\n leftX = Math.min(leftX, coordinate.x)\n rightX = Math.max(rightX, coordinate.x)\n const point = overlay.points[index]\n if (isNumber(point.timestamp)) {\n const text = customApi.formatDate(dateTimeFormat, 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: bounding.height }, ignoreEvent: true })\n }\n }\n return figures\n }\n\n override getFigures (\n overlay: Overlay,\n coordinates: Coordinate[],\n bounding: Bounding,\n barSpace: BarSpace,\n precision: OverlayPrecision,\n thousandsSeparator: string,\n decimalFoldThreshold: number,\n dateTimeFormat: Intl.DateTimeFormat,\n defaultStyles: OverlayStyle,\n xAxis: Nullable<XAxis>,\n yAxis: Nullable<YAxis>\n ): OverlayFigure | OverlayFigure[] {\n return overlay.createXAxisFigures?.({ overlay, coordinates, bounding, barSpace, precision, thousandsSeparator, decimalFoldThreshold, dateTimeFormat, defaultStyles, xAxis, yAxis }) ?? []\n }\n}\n","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n\n * http://www.apache.org/licenses/LICENSE-2.0\n\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type Bounding from '../common/Bounding'\nimport type Crosshair from '../common/Crosshair'\nimport { type CrosshairStyle, type CrosshairDirectionStyle, type 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/ChartStore'\n\nimport CrosshairHorizontalLabelView from './CrosshairHorizontalLabelView'\nimport { type TextAttrs } from '../extension/figure/text'\n\nexport default class CrosshairVerticalLabelView extends CrosshairHorizontalLabelView<XAxis> {\n override compare (crosshair: Crosshair): boolean {\n return isValid(crosshair.kLineData) && crosshair.dataIndex === crosshair.realDataIndex\n }\n\n override getDirectionStyles (styles: CrosshairStyle): CrosshairDirectionStyle {\n return styles.vertical\n }\n\n override getText (crosshair: Crosshair, chartStore: ChartStore): string {\n const timestamp = crosshair.kLineData?.timestamp\n return chartStore.getCustomApi().formatDate(chartStore.getTimeScaleStore().getDateTimeFormat(), timestamp!, 'YYYY-MM-DD HH:mm', FormatDateType.Crosshair)\n }\n\n override getTextAttrs (text: string, textWidth: number, crosshair: Crosshair, bounding: Bounding, _axis: Axis, styles: StateTextStyle): TextAttrs {\n const x = crosshair.realX!\n let optimalX: number\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<DrawPane<XAxis>> {\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<XAxis>) {\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 { calcTextWidth } from '../common/utils/canvas'\nimport { isValid } from '../common/utils/typeChecks'\n\nimport { type FormatDate, FormatDateType } from '../Options'\n\nimport AxisImp, { type AxisTemplate, type Axis, type AxisRange, type AxisTick, type AxisCreateTicksParams } from './Axis'\n\nimport type DrawPane from '../pane/DrawPane'\n\nexport type XAxis = Axis\n\nexport type XAxisConstructor = new (parent: DrawPane<AxisImp>) => XAxisImp\n\nexport default abstract class XAxisImp extends AxisImp {\n protected calcRange (): AxisRange {\n const chartStore = this.getParent().getChart().getChartStore()\n const { from, to } = chartStore.getTimeScaleStore().getVisibleRange()\n const af = from\n const at = to - 1\n const range = to - from\n return {\n from: af, to: at, range, realFrom: af, realTo: at, realRange: range\n }\n }\n\n protected optimalTicks (ticks: AxisTick[]): AxisTick[] {\n const chart = this.getParent().getChart()\n const chartStore = chart.getChartStore()\n const formatDate = chartStore.getCustomApi().formatDate\n const optimalTicks: AxisTick[] = []\n const tickLength = ticks.length\n const dataList = chartStore.getDataList()\n if (tickLength > 0) {\n const dateTimeFormat = chartStore.getTimeScaleStore().getDateTimeFormat()\n const tickTextStyles = chart.getStyles().xAxis.tickText\n const defaultLabelWidth = calcTextWidth('00-00 00:00', tickTextStyles.size, tickTextStyles.weight, tickTextStyles.family)\n const pos = parseInt(ticks[0].value as string, 10)\n const x = this.convertToPixel(pos)\n let tickCountDif = 1\n if (tickLength > 1) {\n const nextPos = parseInt(ticks[1].value as string, 10)\n const nextX = this.convertToPixel(nextPos)\n const xDif = Math.abs(nextX - x)\n if (xDif < defaultLabelWidth) {\n tickCountDif = Math.ceil(defaultLabelWidth / xDif)\n }\n }\n for (let i = 0; i < tickLength; i += tickCountDif) {\n const pos = parseInt(ticks[i].value as string, 10)\n const kLineData = dataList[pos]\n const timestamp = kLineData.timestamp\n let text = formatDate(dateTimeFormat, timestamp, 'HH:mm', FormatDateType.XAxis)\n if (i !== 0) {\n const prevPos = parseInt(ticks[i - tickCountDif].value as string, 10)\n const prevKLineData = dataList[prevPos]\n const prevTimestamp = prevKLineData.timestamp\n text = this._optimalTickLabel(formatDate, dateTimeFormat, timestamp, prevTimestamp) ?? text\n }\n const x = this.convertToPixel(pos)\n optimalTicks.push({ text, coord: x, value: timestamp })\n }\n const optimalTickLength = optimalTicks.length\n if (optimalTickLength === 1) {\n optimalTicks[0].text = formatDate(dateTimeFormat, optimalTicks[0].value as number, 'YYYY-MM-DD HH:mm', FormatDateType.XAxis)\n } else {\n const firstTimestamp = optimalTicks[0].value as number\n const secondTimestamp = optimalTicks[1].value as number\n if (isValid(optimalTicks[2])) {\n const thirdText = optimalTicks[2].text\n if (/^[0-9]{2}-[0-9]{2}$/.test(thirdText)) {\n optimalTicks[0].text = formatDate(dateTimeFormat, firstTimestamp, 'MM-DD', FormatDateType.XAxis)\n } else if (/^[0-9]{4}-[0-9]{2}$/.test(thirdText)) {\n optimalTicks[0].text = formatDate(dateTimeFormat, firstTimestamp, 'YYYY-MM', FormatDateType.XAxis)\n } else if (/^[0-9]{4}$/.test(thirdText)) {\n optimalTicks[0].text = formatDate(dateTimeFormat, firstTimestamp, 'YYYY', FormatDateType.XAxis)\n }\n } else {\n optimalTicks[0].text = this._optimalTickLabel(formatDate, dateTimeFormat, firstTimestamp, secondTimestamp) ?? optimalTicks[0].text\n }\n }\n }\n return optimalTicks\n }\n\n private _optimalTickLabel (formatDate: FormatDate, dateTimeFormat: Intl.DateTimeFormat, timestamp: number, comparedTimestamp: number): Nullable<string> {\n const year = formatDate(dateTimeFormat, timestamp, 'YYYY', FormatDateType.XAxis)\n const month = formatDate(dateTimeFormat, timestamp, 'YYYY-MM', FormatDateType.XAxis)\n const day = formatDate(dateTimeFormat, timestamp, 'MM-DD', FormatDateType.XAxis)\n if (year !== formatDate(dateTimeFormat, comparedTimestamp, 'YYYY', FormatDateType.XAxis)) {\n return year\n } else if (month !== formatDate(dateTimeFormat, comparedTimestamp, 'YYYY-MM', FormatDateType.XAxis)) {\n return month\n } else if (day !== formatDate(dateTimeFormat, comparedTimestamp, 'MM-DD', FormatDateType.XAxis)) {\n return day\n }\n return null\n }\n\n 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 getSelfBounding (): Bounding {\n return this.getParent().getMainWidget().getBounding()\n }\n\n convertTimestampFromPixel (pixel: number): Nullable<number> {\n const timeScaleStore = this.getParent().getChart().getChartStore().getTimeScaleStore()\n const dataIndex = timeScaleStore.coordinateToDataIndex(pixel)\n return timeScaleStore.dataIndexToTimestamp(dataIndex)\n }\n\n convertTimestampToPixel (timestamp: number): number {\n const timeScaleStore = this.getParent().getChart().getChartStore().getTimeScaleStore()\n const dataIndex = timeScaleStore.timestampToDataIndex(timestamp)\n return timeScaleStore.dataIndexToCoordinate(dataIndex)\n }\n\n convertFromPixel (pixel: number): number {\n return this.getParent().getChart().getChartStore().getTimeScaleStore().coordinateToDataIndex(pixel)\n }\n\n convertToPixel (value: number): number {\n return this.getParent().getChart().getChartStore().getTimeScaleStore().dataIndexToCoordinate(value)\n }\n\n static extend (template: AxisTemplate): XAxisConstructor {\n class Custom extends XAxisImp {\n createTicks (params: AxisCreateTicksParams): AxisTick[] {\n return template.createTicks(params)\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 defaultXAxis: AxisTemplate = {\n name: 'default',\n createTicks: ({ defaultTicks }) => defaultTicks\n}\n\nexport default defaultXAxis\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'\nimport XAxisImp, { type XAxisConstructor } from '../../component/XAxis'\n\nimport defaultXAxis from './default'\n\nconst xAxises: Record<string, XAxisConstructor> = {\n default: XAxisImp.extend(defaultXAxis)\n}\n\nfunction registerXAxis (axis: AxisTemplate): void {\n xAxises[axis.name] = XAxisImp.extend(axis)\n}\n\nfunction getXAxisClass (name: string): XAxisConstructor {\n return xAxises[name] ?? xAxises.default\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<XAxis> {\n override createAxisComponent (name: string): XAxis {\n const XAxisClass = getXAxisClass(name)\n return new XAxisClass(this)\n }\n\n override createMainWidget (container: HTMLElement): DrawWidget<DrawPane<XAxis>> {\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: any[]) => any, wait?: number): () => void {\n let previous = 0\n return function () {\n const now = Date.now()\n if (now - previous > (wait ?? 20)) {\n func.apply(this, arguments)\n previous = now\n }\n }\n}\n\n// export function memoize<R1 = any, R2 = any> (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'\n\nimport Widget from './Widget'\nimport { WidgetNameConstants, REAL_SEPARATOR_HEIGHT } from './types'\n\nimport type SeparatorPane from '../pane/SeparatorPane'\n\nimport type AxisPane from '../pane/DrawPane'\n\nexport default class SeparatorWidget extends Widget<SeparatorPane> {\n private _dragFlag = false\n private _dragStartY = 0\n\n private _topPaneHeight = 0\n private _bottomPaneHeight = 0\n\n constructor (rootContainer: HTMLElement, pane: SeparatorPane) {\n super(rootContainer, pane)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.registerEvent('touchStartEvent', this._mouseDownEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n .registerEvent('touchMoveEvent', this._pressedMouseMoveEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n .registerEvent('touchEndEvent', this._mouseUpEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n .registerEvent('mouseDownEvent', this._mouseDownEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n .registerEvent('mouseUpEvent', this._mouseUpEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n .registerEvent('pressedMouseMoveEvent', this._pressedMouseMoveEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n .registerEvent('mouseEnterEvent', this._mouseEnterEvent.bind(this))\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n .registerEvent('mouseLeaveEvent', this._mouseLeaveEvent.bind(this))\n }\n\n override getName (): string {\n return WidgetNameConstants.SEPARATOR\n }\n\n override checkEventOn (): boolean {\n return true\n }\n\n private _mouseDownEvent (event: MouseTouchEvent): boolean {\n this._dragFlag = true\n this._dragStartY = event.pageY\n const pane = this.getPane()\n this._topPaneHeight = pane.getTopPane().getBounding().height\n this._bottomPaneHeight = pane.getBottomPane().getBounding().height\n return true\n }\n\n private _mouseUpEvent (): boolean {\n this._dragFlag = false\n return this._mouseLeaveEvent()\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n private readonly _pressedMouseMoveEvent = throttle(this._pressedTouchMouseMoveEvent, 20)\n\n private _pressedTouchMouseMoveEvent (event: MouseTouchEvent): boolean {\n const dragDistance = event.pageY - this._dragStartY\n const currentPane = this.getPane()\n const topPane = currentPane.getTopPane()\n const bottomPane = currentPane.getBottomPane()\n const isUpDrag = dragDistance < 0\n if (\n topPane !== null &&\n bottomPane?.getOptions().dragEnabled\n ) {\n let reducedPane: AxisPane\n let increasedPane: AxisPane\n let startDragReducedPaneHeight: number\n let startDragIncreasedPaneHeight: number\n if (isUpDrag) {\n reducedPane = topPane\n increasedPane = bottomPane\n startDragReducedPaneHeight = this._topPaneHeight\n startDragIncreasedPaneHeight = this._bottomPaneHeight\n } else {\n reducedPane = bottomPane\n increasedPane = 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 chart = currentPane.getChart()\n chart.getChartStore().getActionStore().execute(ActionType.OnPaneDrag, { paneId: currentPane.getId() })\n chart.adjustPaneViewport(true, true, true, true, true)\n }\n }\n return true\n }\n\n private _mouseEnterEvent (): boolean {\n const pane = this.getPane()\n const bottomPane = pane.getBottomPane()\n if (bottomPane?.getOptions().dragEnabled ?? false) {\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 = ''\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<HTMLElement>, 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<Bounding>): 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().indexOf('firefox') ?? -1) > -1\n}\n\nexport function isIOS (): boolean {\n if (typeof window === 'undefined') {\n return false\n }\n return /iPhone|iPad|iPod/.test(window.navigator.platform)\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\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 * </licenses/LICENSE-lightweight-charts>).\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 type MouseTouchEventCallback = (event: MouseTouchEvent, other?: number) => boolean\n\nexport interface EventHandler {\n pinchStartEvent?: MouseTouchEventCallback\n pinchEvent?: MouseTouchEventCallback\n pinchEndEvent?: MouseTouchEventCallback\n\n mouseWheelHortEvent?: MouseTouchEventCallback\n mouseWheelVertEvent?: MouseTouchEventCallback\n\n mouseClickEvent?: MouseTouchEventCallback\n mouseRightClickEvent?: MouseTouchEventCallback\n tapEvent?: MouseTouchEventCallback\n\n mouseDoubleClickEvent?: MouseTouchEventCallback\n doubleTapEvent?: MouseTouchEventCallback\n\n mouseDownEvent?: MouseTouchEventCallback\n touchStartEvent?: MouseTouchEventCallback\n\n mouseUpEvent?: MouseTouchEventCallback\n touchEndEvent?: MouseTouchEventCallback\n\n mouseDownOutsideEvent?: MouseTouchEventCallback\n\n mouseEnterEvent?: MouseTouchEventCallback\n mouseLeaveEvent?: MouseTouchEventCallback\n\n mouseMoveEvent?: MouseTouchEventCallback\n\n pressedMouseMoveEvent?: MouseTouchEventCallback\n touchMoveEvent?: MouseTouchEventCallback\n\n longTapEvent?: MouseTouchEventCallback\n}\n\nexport type EventName = keyof EventHandler\n\nexport interface MouseTouchEvent extends Coordinate {\n pageX: number\n pageY: number\n isTouch?: boolean\n preventDefault?: () => void\n}\n\nexport interface EventOptions {\n treatVertDragAsPageScroll: () => boolean\n treatHorzDragAsPageScroll: () => boolean\n}\n\n// we can use `const name = 500;` but with `const enum` this values will be inlined into code\n// so we do not need to have it as variables\nconst enum Delay {\n ResetClick = 500,\n LongTap = 500,\n PreventFiresTouchEvents = 500,\n}\n\nconst enum ManhattanDistance {\n CancelClick = 5,\n CancelTap = 5,\n DoubleClick = 5,\n DoubleTap = 30,\n}\n\nconst enum MouseEventButton {\n Left = 0,\n Middle = 1,\n Right = 2,\n}\n\nexport const TOUCH_MIN_RADIUS = 10\n\ntype TimerId = ReturnType<typeof setTimeout>\n\ninterface MouseTouchMoveWithDownInfo {\n xOffset: number\n yOffset: number\n manhattanDistance: number\n}\n\n// TODO: get rid of a lot of boolean flags, probably we should replace it with some enum\nexport default class SyntheticEvent {\n private readonly _target: HTMLElement\n private readonly _handler: EventHandler\n\n private readonly _options: EventOptions\n\n private _clickCount: number = 0\n private _clickTimeoutId: Nullable<TimerId> = null\n private _clickCoordinate: Coordinate = { x: Number.NEGATIVE_INFINITY, y: Number.POSITIVE_INFINITY }\n\n private _tapCount: number = 0\n private _tapTimeoutId: Nullable<TimerId> = null\n private _tapCoordinate: Coordinate = { x: Number.NEGATIVE_INFINITY, y: Number.POSITIVE_INFINITY }\n\n private _longTapTimeoutId: Nullable<TimerId> = null\n private _longTapActive: boolean = false\n\n private _mouseMoveStartCoordinate: Nullable<Coordinate> = null\n\n private _touchMoveStartCoordinate: Nullable<Coordinate> = null\n private _touchMoveExceededManhattanDistance: boolean = false\n\n private _cancelClick: boolean = false\n private _cancelTap: boolean = false\n\n private _unsubscribeOutsideMouseEvents: Nullable<() => void> = null\n private _unsubscribeOutsideTouchEvents: Nullable<() => void> = null\n private _unsubscribeMobileSafariEvents: Nullable<() => void> = null\n\n private _unsubscribeMousemove: Nullable<() => void> = null\n\n private _unsubscribeMouseWheel: Nullable<() => void> = null\n\n private _unsubscribeContextMenu: Nullable<() => void> = null\n\n private _unsubscribeRootMouseEvents: Nullable<() => void> = null\n private _unsubscribeRootTouchEvents: Nullable<() => void> = null\n\n private _startPinchMiddleCoordinate: Nullable<Coordinate> = null\n private _startPinchDistance: number = 0\n private _pinchPrevented: boolean = false\n private _preventTouchDragProcess: boolean = false\n\n private _mousePressed: boolean = false\n\n private _lastTouchEventTimeStamp: number = 0\n\n // for touchstart/touchmove/touchend events we handle only first touch\n // i.e. we don't support several active touches at the same time (except pinch event)\n private _activeTouchId: Nullable<number> = null\n\n // accept all mouse leave events if it's not an iOS device\n // see _mouseEnterHandler, _mouseMoveHandler, _mouseLeaveHandler\n private _acceptMouseLeave: boolean = !isIOS()\n\n constructor (\n target: HTMLElement,\n handler: EventHandler,\n options: EventOptions\n ) {\n this._target = target\n this._handler = handler\n this._options = options\n\n this._init()\n }\n\n destroy (): void {\n if (this._unsubscribeOutsideMouseEvents !== null) {\n this._unsubscribeOutsideMouseEvents()\n this._unsubscribeOutsideMouseEvents = null\n }\n\n if (this._unsubscribeOutsideTouchEvents !== null) {\n this._unsubscribeOutsideTouchEvents()\n this._unsubscribeOutsideTouchEvents = null\n }\n\n if (this._unsubscribeMousemove !== null) {\n this._unsubscribeMousemove()\n this._unsubscribeMousemove = null\n }\n\n if (this._unsubscribeMouseWheel !== null) {\n this._unsubscribeMouseWheel()\n this._unsubscribeMouseWheel = null\n }\n\n if (this._unsubscribeContextMenu !== null) {\n this._unsubscribeContextMenu()\n this._unsubscribeContextMenu = null\n }\n\n if (this._unsubscribeRootMouseEvents !== null) {\n this._unsubscribeRootMouseEvents()\n this._unsubscribeRootMouseEvents = null\n }\n\n if (this._unsubscribeRootTouchEvents !== null) {\n this._unsubscribeRootTouchEvents()\n this._unsubscribeRootTouchEvents = null\n }\n\n if (this._unsubscribeMobileSafariEvents !== null) {\n this._unsubscribeMobileSafariEvents()\n this._unsubscribeMobileSafariEvents = null\n }\n\n this._clearLongTapTimeout()\n this._resetClickTimeout()\n }\n\n private _mouseEnterHandler (enterEvent: MouseEvent): void {\n this._unsubscribeMousemove?.()\n this._unsubscribeMouseWheel?.()\n this._unsubscribeContextMenu?.()\n\n const boundMouseMoveHandler = this._mouseMoveHandler.bind(this)\n this._unsubscribeMousemove = () => {\n this._target.removeEventListener('mousemove', boundMouseMoveHandler)\n }\n this._target.addEventListener('mousemove', boundMouseMoveHandler)\n\n const boundMouseWheel = this._mouseWheelHandler.bind(this)\n this._unsubscribeMouseWheel = () => {\n this._target.removeEventListener('wheel', boundMouseWheel)\n }\n this._target.addEventListener('wheel', boundMouseWheel, { passive: false })\n\n const boundContextMenu = this._contextMenuHandler.bind(this)\n this._unsubscribeContextMenu = () => {\n this._target.removeEventListener('contextmenu', boundContextMenu)\n }\n this._target.addEventListener('contextmenu', boundContextMenu, { passive: false })\n\n if (this._firesTouchEvents(enterEvent)) {\n return\n }\n\n this._processEvent(this._makeCompatEvent(enterEvent), this._handler.mouseEnterEvent)\n this._acceptMouseLeave = true\n }\n\n private _resetClickTimeout (): void {\n if (this._clickTimeoutId !== null) {\n clearTimeout(this._clickTimeoutId)\n }\n\n this._clickCount = 0\n this._clickTimeoutId = null\n this._clickCoordinate = { x: Number.NEGATIVE_INFINITY, y: Number.POSITIVE_INFINITY }\n }\n\n private _resetTapTimeout (): void {\n if (this._tapTimeoutId !== null) {\n clearTimeout(this._tapTimeoutId)\n }\n\n this._tapCount = 0\n this._tapTimeoutId = null\n this._tapCoordinate = { x: Number.NEGATIVE_INFINITY, y: Number.POSITIVE_INFINITY }\n }\n\n private _mouseMoveHandler (moveEvent: MouseEvent): void {\n if (this._mousePressed || this._touchMoveStartCoordinate !== null) {\n return\n }\n\n if (this._firesTouchEvents(moveEvent)) {\n return\n }\n\n this._processEvent(this._makeCompatEvent(moveEvent), this._handler.mouseMoveEvent)\n this._acceptMouseLeave = true\n }\n\n private _mouseWheelHandler (wheelEvent: WheelEvent): void {\n if (Math.abs(wheelEvent.deltaX) > Math.abs(wheelEvent.deltaY)) {\n if (!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 case wheelEvent.DOM_DELTA_LINE:\n deltaY *= 32\n break\n }\n\n if (deltaY !== 0) {\n const scale = Math.sign(deltaY) * Math.min(1, Math.abs(deltaY))\n this._handler.mouseWheelVertEvent(this._makeCompatEvent(wheelEvent), scale)\n }\n }\n }\n\n private _contextMenuHandler (mouseEvent: MouseEvent): void {\n this._preventDefault(mouseEvent)\n }\n\n private _touchMoveHandler (moveEvent: TouchEvent): void {\n const touch = this._touchWithId(moveEvent.changedTouches, this._activeTouchId)\n if (touch === null) {\n return\n }\n\n this._lastTouchEventTimeStamp = this._eventTimeStamp(moveEvent)\n\n if (this._startPinchMiddleCoordinate !== null) {\n return\n }\n\n if (this._preventTouchDragProcess) {\n return\n }\n\n // prevent pinch if move event comes faster than the second touch\n this._pinchPrevented = true\n\n const moveInfo = this._mouseTouchMoveWithDownInfo(this._getCoordinate(touch), this._touchMoveStartCoordinate!)\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 if (manhattanDistance < ManhattanDistance.DoubleTap && !this._cancelTap) {\n this._processEvent(this._makeCompatEvent(dblClickEvent), this._handler.doubleTapEvent)\n }\n this._resetTapTimeout()\n }\n } else {\n ++this._clickCount\n\n if (this._clickTimeoutId !== null && this._clickCount > 1) {\n const { manhattanDistance } = this._mouseTouchMoveWithDownInfo(this._getCoordinate(dblClickEvent), this._clickCoordinate)\n if (manhattanDistance < ManhattanDistance.DoubleClick && !this._cancelClick) {\n this._processEvent(this._makeCompatEvent(dblClickEvent), this._handler.mouseDoubleClickEvent)\n }\n this._resetClickTimeout()\n }\n }\n }\n\n // eslint-disable-next-line complexity\n private _touchEndHandler (touchEndEvent: TouchEvent): void {\n let touch = this._touchWithId(touchEndEvent.changedTouches, this._activeTouchId)\n if (touch === null && touchEndEvent.touches.length === 0) {\n // something went wrong, somehow we missed the required touchend event\n // probably the browser has not sent this event\n touch = touchEndEvent.changedTouches[0]\n }\n\n if (touch === null) {\n return\n }\n\n this._activeTouchId = null\n this._lastTouchEventTimeStamp = this._eventTimeStamp(touchEndEvent)\n this._clearLongTapTimeout()\n this._touchMoveStartCoordinate = null\n\n if (this._unsubscribeRootTouchEvents !== null) {\n this._unsubscribeRootTouchEvents()\n this._unsubscribeRootTouchEvents = null\n }\n\n const compatEvent = this._makeCompatEvent(touchEndEvent, touch)\n this._processEvent(compatEvent, this._handler.touchEndEvent)\n ++this._tapCount\n\n if (this._tapTimeoutId !== null && this._tapCount > 1) {\n // check that both clicks are near enough\n const { manhattanDistance } = this._mouseTouchMoveWithDownInfo(this._getCoordinate(touch), this._tapCoordinate)\n if (manhattanDistance < ManhattanDistance.DoubleTap && !this._cancelTap) {\n this._processEvent(compatEvent, this._handler.doubleTapEvent)\n }\n this._resetTapTimeout()\n } else {\n if (!this._cancelTap) {\n this._processEvent(compatEvent, this._handler.tapEvent)\n\n // do not fire mouse events if tap handler was executed\n // prevent click event on new dom element (who appeared after tap)\n if (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 const boundTouchMoveWithDownHandler = this._touchMoveHandler.bind(this)\n const boundTouchEndHandler = this._touchEndHandler.bind(this)\n\n this._unsubscribeRootTouchEvents = () => {\n rootElement.removeEventListener('touchmove', boundTouchMoveWithDownHandler)\n rootElement.removeEventListener('touchend', boundTouchEndHandler)\n }\n\n rootElement.addEventListener('touchmove', boundTouchMoveWithDownHandler, { passive: false })\n rootElement.addEventListener('touchend', boundTouchEndHandler, { passive: false })\n\n this._clearLongTapTimeout()\n this._longTapTimeoutId = setTimeout(this._longTapHandler.bind(this, downEvent), Delay.LongTap)\n }\n\n this._processEvent(this._makeCompatEvent(downEvent, touch), this._handler.touchStartEvent)\n\n if (this._tapTimeoutId === null) {\n this._tapCount = 0\n this._tapTimeoutId = setTimeout(this._resetTapTimeout.bind(this), Delay.ResetClick)\n this._tapCoordinate = this._getCoordinate(touch)\n }\n }\n\n private _mouseDownHandler (downEvent: MouseEvent): void {\n if (downEvent.button === MouseEventButton.Right) {\n this._preventDefault(downEvent)\n this._processEvent(this._makeCompatEvent(downEvent), this._handler.mouseRightClickEvent)\n return\n }\n\n if (downEvent.button !== MouseEventButton.Left) {\n return\n }\n\n const rootElement = this._target.ownerDocument.documentElement\n if (isFF()) {\n rootElement.addEventListener('mouseleave', this._onFirefoxOutsideMouseUp)\n }\n\n this._cancelClick = false\n\n this._mouseMoveStartCoordinate = this._getCoordinate(downEvent)\n\n if (this._unsubscribeRootMouseEvents !== null) {\n this._unsubscribeRootMouseEvents()\n this._unsubscribeRootMouseEvents = null\n }\n\n {\n const boundMouseMoveWithDownHandler = this._mouseMoveWithDownHandler.bind(this)\n const boundMouseUpHandler = this._mouseUpHandler.bind(this)\n\n this._unsubscribeRootMouseEvents = () => {\n rootElement.removeEventListener('mousemove', boundMouseMoveWithDownHandler)\n rootElement.removeEventListener('mouseup', boundMouseUpHandler)\n }\n\n rootElement.addEventListener('mousemove', boundMouseMoveWithDownHandler)\n rootElement.addEventListener('mouseup', boundMouseUpHandler)\n }\n\n this._mousePressed = true\n\n if (this._firesTouchEvents(downEvent)) {\n return\n }\n\n this._processEvent(this._makeCompatEvent(downEvent), this._handler.mouseDownEvent)\n\n if (this._clickTimeoutId === null) {\n this._clickCount = 0\n this._clickTimeoutId = setTimeout(this._resetClickTimeout.bind(this), Delay.ResetClick)\n this._clickCoordinate = this._getCoordinate(downEvent)\n }\n }\n\n private _init (): void {\n this._target.addEventListener('mouseenter', this._mouseEnterHandler.bind(this))\n\n // Do not show context menu when something went wrong\n this._target.addEventListener('touchcancel', this._clearLongTapTimeout.bind(this))\n\n {\n const doc = this._target.ownerDocument\n\n const outsideHandler = (event: MouseEvent | TouchEvent): void => {\n if (this._handler.mouseDownOutsideEvent == null) {\n return\n }\n\n if (event.composed && this._target.contains(event.composedPath()[0] as Element)) {\n return\n }\n\n if ((event.target !== null) && this._target.contains(event.target as Element)) {\n return\n }\n\n this._handler.mouseDownOutsideEvent({ x: 0, y: 0, pageX: 0, pageY: 0 })\n }\n\n this._unsubscribeOutsideTouchEvents = () => {\n doc.removeEventListener('touchstart', outsideHandler)\n }\n\n this._unsubscribeOutsideMouseEvents = () => {\n doc.removeEventListener('mousedown', outsideHandler)\n }\n\n doc.addEventListener('mousedown', outsideHandler)\n doc.addEventListener('touchstart', outsideHandler, { passive: true })\n }\n\n if (isIOS()) {\n this._unsubscribeMobileSafariEvents = () => {\n this._target.removeEventListener('dblclick', this._onMobileSafariDoubleClick)\n }\n this._target.addEventListener('dblclick', this._onMobileSafariDoubleClick)\n }\n\n this._target.addEventListener('mouseleave', this._mouseLeaveHandler.bind(this))\n\n this._target.addEventListener('touchstart', this._touchStartHandler.bind(this), { passive: true })\n\n this._target.addEventListener('mousedown', (e: MouseEvent) => {\n if (e.button === MouseEventButton.Middle) {\n // prevent incorrect scrolling event\n e.preventDefault()\n return false\n }\n return undefined\n })\n\n this._target.addEventListener('mousedown', this._mouseDownHandler.bind(this))\n this._initPinch()\n\n // Hey mobile Safari, what's up?\n // If mobile Safari doesn't have any touchmove handler with passive=false\n // it treats a touchstart and the following touchmove events as cancelable=false,\n // so we can't prevent them (as soon we subscribe on touchmove inside touchstart's handler).\n // And we'll get scroll of the page along with chart's one instead of only chart's scroll.\n this._target.addEventListener('touchmove', () => {}, { passive: false })\n }\n\n private _initPinch (): void {\n if (!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() ?? { left: 0, top: 0 }\n this._startPinchMiddleCoordinate = {\n x: ((touches[0].clientX - box.left) + (touches[1].clientX - box.left)) / 2,\n y: ((touches[0].clientY - box.top) + (touches[1].clientY - box.top)) / 2\n }\n\n this._startPinchDistance = this._getTouchDistance(touches[0], touches[1])\n\n if (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 if (isValid(e.sourceCapabilities?.firesTouchEvents)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n return e.sourceCapabilities.firesTouchEvents\n }\n\n return this._eventTimeStamp(e) < this._lastTouchEventTimeStamp + Delay.PreventFiresTouchEvents\n }\n\n private _processEvent (event: MouseTouchEvent, callback?: MouseTouchEventCallback): void {\n callback?.call(this._handler, event)\n }\n\n private _makeCompatEvent (event: MouseEvent | TouchEvent, touch?: Touch): MouseTouchEvent {\n // TouchEvent has no clientX/Y coordinates:\n // We have to use the last Touch instead\n const eventLike = touch ?? (event as MouseEvent)\n const box = this._target.getBoundingClientRect() ?? { left: 0, top: 0 }\n 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 return e.timeStamp ?? performance.now()\n }\n\n private _touchWithId (touches: TouchList, id: Nullable<number>): Nullable<Touch> {\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'\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<Pane>\n widget: Nullable<Widget>\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<number> = null\n // 开始滚动时坐标点\n private _startScrollCoordinate: Nullable<Coordinate> = null\n // 开始触摸时坐标\n private _touchCoordinate: Nullable<Coordinate> = null\n // 是否是取消了十字光标\n private _touchCancelCrosshair = false\n // 是否缩放过\n private _touchZoomed = false\n // 用来记录捏合缩放的尺寸\n private _pinchScale = 1\n\n private _mouseDownWidget: Nullable<Widget> = null\n\n private _prevYAxisRange: Nullable<AxisRange> = null\n\n private _xAxisStartScaleCoordinate: Nullable<Coordinate> = null\n private _xAxisStartScaleDistance = 0\n private _xAxisScale = 1\n\n private _yAxisStartScaleDistance = 0\n\n private _mouseMoveTriggerWidgetInfo: EventTriggerWidgetInfo = { pane: null, widget: null }\n\n private readonly _boundKeyBoardDownEvent: ((event: KeyboardEvent) => void) = (event: KeyboardEvent) => {\n if (event.shiftKey) {\n switch (event.code) {\n case 'Equal': {\n this._chart.getChartStore().getTimeScaleStore().zoom(0.5)\n break\n }\n case 'Minus': {\n this._chart.getChartStore().getTimeScaleStore().zoom(-0.5)\n break\n }\n case 'ArrowLeft': {\n const timeScaleStore = this._chart.getChartStore().getTimeScaleStore()\n timeScaleStore.startScroll()\n timeScaleStore.scroll(-3 * timeScaleStore.getBarSpace().bar)\n break\n }\n case 'ArrowRight': {\n const timeScaleStore = this._chart.getChartStore().getTimeScaleStore()\n timeScaleStore.startScroll()\n timeScaleStore.scroll(3 * timeScaleStore.getBarSpace().bar)\n break\n }\n default: {\n break\n }\n }\n }\n }\n\n constructor (container: HTMLElement, chart: Chart) {\n this._container = container\n this._chart = chart\n this._event = new SyntheticEvent(container, this, {\n treatVertDragAsPageScroll: () => false,\n treatHorzDragAsPageScroll: () => false\n })\n container.addEventListener('keydown', this._boundKeyBoardDownEvent)\n }\n\n pinchStartEvent (): boolean {\n this._touchZoomed = true\n this._pinchScale = 1\n return true\n }\n\n pinchEvent (e: MouseTouchEvent, scale: number): boolean {\n const { pane, widget } = this._findWidgetByEvent(e)\n if (pane?.getId() !== PaneIdConstants.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().getTimeScaleStore().zoom(zoomScale, { x: event.x, y: event.y })\n return true\n }\n return false\n }\n\n mouseWheelHortEvent (_: MouseTouchEvent, distance: number): boolean {\n const timeScaleStore = this._chart.getChartStore().getTimeScaleStore()\n timeScaleStore.startScroll()\n timeScaleStore.scroll(distance)\n return true\n }\n\n mouseWheelVertEvent (e: MouseTouchEvent, scale: number): boolean {\n const { widget } = this._findWidgetByEvent(e)\n const event = this._makeWidgetEvent(e, widget)\n const name = widget?.getName()\n if (name === WidgetNameConstants.MAIN) {\n this._chart.getChartStore().getTimeScaleStore().zoom(scale, { x: event.x, y: event.y })\n return true\n }\n return false\n }\n\n mouseDownEvent (e: MouseTouchEvent): boolean {\n const { pane, widget } = this._findWidgetByEvent(e)\n this._mouseDownWidget = widget\n if (widget !== null) {\n const event = this._makeWidgetEvent(e, widget)\n const name = widget.getName()\n switch (name) {\n case WidgetNameConstants.SEPARATOR: {\n return widget.dispatchEvent('mouseDownEvent', event)\n }\n case WidgetNameConstants.MAIN: {\n const range = (pane as DrawPane<YAxis>).getAxisComponent().getRange() ?? null\n this._prevYAxisRange = range === null ? range : { ...range }\n this._startScrollCoordinate = { x: event.x, y: event.y }\n this._chart.getChartStore().getTimeScaleStore().startScroll()\n return widget.dispatchEvent('mouseDownEvent', event)\n }\n case WidgetNameConstants.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<YAxis>).getAxisComponent().getRange() ?? null\n this._prevYAxisRange = range === null ? range : { ...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.getTooltipStore().getActiveIcon() !== null) {\n crosshair = undefined\n if (widget !== null) {\n widget.getContainer().style.cursor = 'pointer'\n }\n }\n this._chart.getChartStore().getTooltipStore().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().getTooltipStore().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<YAxis>).getAxisComponent()\n if (this._prevYAxisRange !== null && !yAxis.getAutoCalcTickFlag() && yAxis.getScrollZoomEnabled()) {\n const { from, to, range } = this._prevYAxisRange\n let distance: number\n if (yAxis?.isReverse() ?? false) {\n distance = this._startScrollCoordinate.y - event.y\n } else {\n distance = event.y - this._startScrollCoordinate.y\n }\n const scale = distance / bounding.height\n const difRange = range * scale\n const newFrom = from + difRange\n const newTo = to + difRange\n const newRealFrom = yAxis.convertToRealValue(newFrom)\n const newRealTo = yAxis.convertToRealValue(newTo)\n yAxis.setRange({\n from: newFrom,\n to: newTo,\n range: newTo - newFrom,\n realFrom: newRealFrom,\n realTo: newRealTo,\n realRange: newRealTo - newRealFrom\n })\n }\n const distance = event.x - this._startScrollCoordinate.x\n this._chart.getChartStore().getTimeScaleStore().scroll(distance)\n }\n this._chart.getChartStore().getTooltipStore().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<XAxis>).getAxisComponent()\n if (xAxis?.getScrollZoomEnabled() ?? true) {\n const scale = this._xAxisStartScaleDistance / event.pageX\n const zoomScale = (scale - this._xAxisScale) * 10\n this._xAxisScale = scale\n this._chart.getChartStore().getTimeScaleStore().zoom(zoomScale, this._xAxisStartScaleCoordinate ?? undefined)\n }\n } else {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n return consumed\n }\n case WidgetNameConstants.Y_AXIS: {\n const consumed = widget.dispatchEvent('pressedMouseMoveEvent', event)\n if (!consumed) {\n const yAxis = (pane as DrawPane<YAxis>).getAxisComponent()\n if (this._prevYAxisRange !== null && yAxis.getScrollZoomEnabled()) {\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.convertToRealValue(newFrom)\n const newRealTo = yAxis.convertToRealValue(newTo)\n yAxis.setRange({\n from: newFrom,\n to: newTo,\n range: newRange,\n realFrom: newRealFrom,\n realTo: newRealTo,\n realRange: newRealTo - newRealFrom\n })\n this._chart.adjustPaneViewport(false, true, true, true)\n }\n } else {\n this._chart.updatePane(UpdateLevel.Overlay)\n }\n return consumed\n }\n }\n }\n return false\n }\n\n mouseUpEvent (e: MouseTouchEvent): boolean {\n const { widget } = this._findWidgetByEvent(e)\n let consumed: boolean = false\n if (widget !== null) {\n const event = this._makeWidgetEvent(e, widget)\n const name = widget.getName()\n switch (name) {\n case WidgetNameConstants.MAIN:\n case WidgetNameConstants.SEPARATOR:\n case WidgetNameConstants.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: boolean = false\n if (widget !== null) {\n const event = this._makeWidgetEvent(e, widget)\n const name = widget.getName()\n switch (name) {\n case WidgetNameConstants.MAIN:\n case WidgetNameConstants.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<YAxis>).getAxisComponent()\n if (!yAxis.getAutoCalcTickFlag()) {\n yAxis.setAutoCalcTickFlag(true)\n this._chart.adjustPaneViewport(false, true, true, true)\n return true\n }\n break\n }\n }\n }\n return false\n }\n\n mouseLeaveEvent (): boolean {\n this._chart.getChartStore().getTooltipStore().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 const tooltipStore = chartStore.getTooltipStore()\n if (widget.dispatchEvent('mouseDownEvent', event)) {\n this._touchCancelCrosshair = true\n this._touchCoordinate = null\n tooltipStore.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.getTimeScaleStore().startScroll()\n this._touchZoomed = false\n if (this._touchCoordinate !== null) {\n const xDif = event.x - this._touchCoordinate.x\n const yDif = event.y - this._touchCoordinate.y\n const radius = Math.sqrt(xDif * xDif + yDif * yDif)\n if (radius < TOUCH_MIN_RADIUS) {\n this._touchCoordinate = { x: event.x, y: event.y }\n tooltipStore.setCrosshair({ x: event.x, y: event.y, paneId: pane?.getId() })\n } else {\n this._touchCoordinate = null\n this._touchCancelCrosshair = true\n tooltipStore.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 const tooltipStore = chartStore.getTooltipStore()\n switch (name) {\n case WidgetNameConstants.MAIN: {\n if (widget.dispatchEvent('pressedMouseMoveEvent', event)) {\n event.preventDefault?.()\n tooltipStore.setCrosshair(undefined, true)\n this._chart.updatePane(UpdateLevel.Overlay)\n return true\n }\n if (this._touchCoordinate !== null) {\n event.preventDefault?.()\n tooltipStore.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.getTimeScaleStore().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 timeScaleStore = this._chart.getChartStore().getTimeScaleStore()\n const flingScroll: (() => void) = () => {\n this._flingScrollRequestId = requestAnimationFrame(() => {\n timeScaleStore.startScroll()\n timeScaleStore.scroll(v)\n v = v * (1 - 0.025)\n if (Math.abs(v) < 1) {\n if (this._flingScrollRequestId !== null) {\n cancelAnimationFrame(this._flingScrollRequestId)\n this._flingScrollRequestId = null\n }\n } else {\n flingScroll()\n }\n })\n }\n flingScroll()\n }\n }\n return true\n }\n case WidgetNameConstants.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 const tooltipStore = chartStore.getTooltipStore()\n if (result) {\n this._touchCancelCrosshair = true\n this._touchCoordinate = null\n tooltipStore.setCrosshair(undefined, true)\n consumed = true\n } else {\n if (!this._touchCancelCrosshair && !this._touchZoomed) {\n this._touchCoordinate = { x: event.x, y: event.y }\n tooltipStore.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().getTooltipStore().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.getAllSeparatorPanes()\n const separatorSize = this._chart.getChartStore().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.getAllDrawPanes()\n\n let pane: Nullable<DrawPane> = 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<Widget> = null\n if (pane !== null) {\n if (widget === null) {\n const mainWidget = pane.getMainWidget()\n const mainBounding = mainWidget.getBounding()\n if (\n x >= mainBounding.left && x <= mainBounding.left + mainBounding.width &&\n y >= mainBounding.top && y <= mainBounding.top + mainBounding.height\n ) {\n widget = mainWidget\n }\n }\n if (widget === null) {\n const yAxisWidget = pane.getYAxisWidget()\n if (yAxisWidget !== null) {\n const yAxisBounding = yAxisWidget.getBounding()\n if (\n x >= yAxisBounding.left && x <= yAxisBounding.left + yAxisBounding.width &&\n y >= yAxisBounding.top && y <= yAxisBounding.top + yAxisBounding.height\n ) {\n widget = yAxisWidget\n }\n }\n }\n }\n return { pane, widget }\n }\n\n private _makeWidgetEvent (event: MouseTouchEvent, widget: Nullable<Widget>): 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 DeepPartial from './common/DeepPartial'\nimport type Bounding from './common/Bounding'\nimport type KLineData from './common/KLineData'\nimport type Coordinate from './common/Coordinate'\nimport type Point from './common/Point'\nimport { UpdateLevel } from './common/Updater'\nimport { type Styles, YAxisPosition } from './common/Styles'\nimport type Crosshair from './common/Crosshair'\nimport { ActionType, type ActionCallback } from './common/Action'\nimport type LoadMoreCallback from './common/LoadMoreCallback'\nimport type LoadDataCallback from './common/LoadDataCallback'\nimport type Precision from './common/Precision'\nimport type VisibleRange from './common/VisibleRange'\n\nimport { createId } from './common/utils/id'\nimport { createDom } from './common/utils/dom'\nimport { getPixelRatio } from './common/utils/canvas'\nimport { isString, isArray, isValid, merge, isNumber } from './common/utils/typeChecks'\nimport { logWarn } from './common/utils/logger'\nimport { binarySearchNearest } from './common/utils/number'\nimport { LoadDataType } from './common/LoadDataCallback'\n\nimport ChartStore from './store/ChartStore'\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, PanePosition, PANE_DEFAULT_HEIGHT, PaneIdConstants } from './pane/types'\n\nimport type Axis from './component/Axis'\n\nimport { type Indicator, type IndicatorCreate } from './component/Indicator'\nimport { type Overlay, type OverlayCreate, type OverlayRemove } from './component/Overlay'\n\nimport { getIndicatorClass } from './extension/indicator/index'\nimport { getStyles as getExtensionStyles } from './extension/styles/index'\n\nimport Event from './Event'\n\nimport { type CustomApi, LayoutChildType, type Options } from './Options'\n\nexport enum DomPosition {\n Root = 'root',\n Main = 'main',\n YAxis = 'yAxis'\n}\n\nexport interface ConvertFinder {\n paneId?: string\n absolute?: boolean\n}\n\nexport interface Chart {\n id: string\n getDom: (paneId?: string, position?: DomPosition) => Nullable<HTMLElement>\n getSize: (paneId?: string, position?: DomPosition) => Nullable<Bounding>\n setLocale: (locale: string) => void\n getLocale: () => string\n setStyles: (styles: string | DeepPartial<Styles>) => void\n getStyles: () => Styles\n setCustomApi: (customApi: Partial<CustomApi>) => void\n setPriceVolumePrecision: (pricePrecision: number, volumePrecision: number) => void\n getPriceVolumePrecision: () => Precision\n setTimezone: (timezone: string) => void\n getTimezone: () => string\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: () => number\n getVisibleRange: () => VisibleRange\n clearData: () => void\n getDataList: () => KLineData[]\n applyNewData: (dataList: KLineData[], more?: boolean, callback?: () => void) => void\n /**\n * @deprecated\n * Since v9.8.0 deprecated, since v10 removed\n */\n applyMoreData: (dataList: KLineData[], more?: boolean, callback?: () => void) => void\n updateData: (data: KLineData, callback?: () => void) => void\n /**\n * @deprecated\n * Since v9.8.0 deprecated, since v10 removed\n */\n loadMore: (cb: LoadMoreCallback) => void\n setLoadDataCallback: (cb: LoadDataCallback) => void\n createIndicator: (value: string | IndicatorCreate, isStack?: boolean, paneOptions?: PaneOptions, callback?: () => void) => Nullable<string>\n overrideIndicator: (override: IndicatorCreate, paneId?: string, callback?: () => void) => void\n getIndicatorByPaneId: (paneId?: string, name?: string) => Nullable<Indicator> | Nullable<Map<string, Indicator>> | Map<string, Map<string, Indicator>>\n removeIndicator: (paneId: string, name?: string) => void\n createOverlay: (value: string | OverlayCreate | Array<string | OverlayCreate>, paneId?: string) => Nullable<string> | Array<Nullable<string>>\n getOverlayById: (id: string) => Nullable<Overlay>\n overrideOverlay: (override: Partial<OverlayCreate>) => void\n removeOverlay: (remove?: string | OverlayRemove) => void\n setPaneOptions: (options: PaneOptions) => void\n setZoomEnabled: (enabled: boolean) => void\n isZoomEnabled: () => boolean\n setScrollEnabled: (enabled: boolean) => void\n isScrollEnabled: () => boolean\n scrollByDistance: (distance: number, animationDuration?: number) => void\n scrollToRealTime: (animationDuration?: number) => void\n scrollToDataIndex: (dataIndex: number, animationDuration?: number) => void\n scrollToTimestamp: (timestamp: number, animationDuration?: number) => void\n zoomAtCoordinate: (scale: number, coordinate?: Coordinate, animationDuration?: number) => void\n zoomAtDataIndex: (scale: number, dataIndex: number, animationDuration?: number) => void\n zoomAtTimestamp: (scale: number, timestamp: number, animationDuration?: number) => void\n convertToPixel: (points: Partial<Point> | Array<Partial<Point>>, finder: ConvertFinder) => Partial<Coordinate> | Array<Partial<Coordinate>>\n convertFromPixel: (coordinates: Array<Partial<Coordinate>>, finder: ConvertFinder) => Partial<Point> | Array<Partial<Point>>\n executeAction: (type: ActionType, data: any) => void\n subscribeAction: (type: ActionType, callback: ActionCallback) => void\n unsubscribeAction: (type: ActionType, callback?: ActionCallback) => void\n getConvertPictureUrl: (includeOverlay?: boolean, type?: string, backgroundColor?: string) => string\n resize: () => void\n}\n\nexport default class ChartImp implements Chart {\n id: string\n\n private _container: HTMLElement\n private _chartContainer: HTMLElement\n private readonly _chartEvent: Event\n private readonly _chartStore: ChartStore\n private _drawPanes: DrawPane[] = []\n private _candlePane: Nullable<CandlePane>\n private _xAxisPane: XAxisPane\n private readonly _separatorPanes = new Map<DrawPane, SeparatorPane>()\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.adjustPaneViewport(true, true, true)\n }\n\n private _initContainer (container: HTMLElement): void {\n this._container = container\n this._chartContainer = createDom('div', {\n position: 'relative',\n width: '100%',\n outline: 'none',\n borderStyle: 'none',\n cursor: 'crosshair',\n boxSizing: 'border-box',\n userSelect: 'none',\n webkitUserSelect: 'none',\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n msUserSelect: 'none',\n MozUserSelect: 'none',\n webkitTapHighlightColor: 'transparent'\n })\n this._chartContainer.tabIndex = 1\n container.appendChild(this._chartContainer)\n }\n\n private _initPanes (options?: Options): void {\n const layout = options?.layout ?? [{ type: LayoutChildType.Candle }]\n let candlePaneInitialized = false\n let xAxisPaneInitialized = false\n\n const createXAxisPane: ((ops?: PaneOptions) => void) = (ops?: PaneOptions) => {\n if (!xAxisPaneInitialized) {\n const pane = this._createPane<XAxisPane>(XAxisPane, PaneIdConstants.X_AXIS, ops ?? {})\n this._xAxisPane = pane\n xAxisPaneInitialized = true\n }\n }\n\n layout.forEach(child => {\n switch (child.type) {\n case LayoutChildType.Candle: {\n if (!candlePaneInitialized) {\n const paneOptions = child.options ?? {}\n merge(paneOptions, { id: PaneIdConstants.CANDLE })\n this._candlePane = this._createPane<CandlePane>(CandlePane, PaneIdConstants.CANDLE, paneOptions)\n const content = child.content ?? []\n content.forEach(v => {\n this.createIndicator(v, true, paneOptions)\n })\n candlePaneInitialized = true\n }\n break\n }\n case LayoutChildType.Indicator: {\n const content = child.content ?? []\n if (content.length > 0) {\n let paneId: Nullable<string>\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 createXAxisPane({ position: PanePosition.Bottom })\n }\n\n private _createPane<P extends DrawPane> (\n DrawPaneClass: new (rootContainer: HTMLElement, afterElement: Nullable<HTMLElement>, chart: Chart, id: string, options: Omit<PaneOptions, 'id' | 'height'>) => P,\n id: string,\n options?: PaneOptions\n ): P {\n let index: Nullable<number> = null\n let pane: Nullable<P> = null\n const position = options?.position\n switch (position) {\n case PanePosition.Top: {\n const firstPane = this._drawPanes[0]\n if (isValid(firstPane)) {\n pane = new DrawPaneClass(this._chartContainer, firstPane.getContainer(), this, id, options ?? {})\n index = 0\n }\n break\n }\n case PanePosition.Bottom: { break }\n default: {\n for (let i = this._drawPanes.length - 1; i > -1; i--) {\n const p = this._drawPanes[i]\n const prevP = this._drawPanes[i - 1]\n if (\n p?.getOptions().position === PanePosition.Bottom &&\n prevP?.getOptions().position !== PanePosition.Bottom\n ) {\n pane = new DrawPaneClass(this._chartContainer, p.getContainer(), this, id, options ?? {})\n index = i\n break\n }\n }\n }\n }\n if (!isValid(pane)) {\n pane = new DrawPaneClass(this._chartContainer, null, this, id, options ?? {})\n }\n let newIndex: number\n if (isNumber(index)) {\n this._drawPanes.splice(index, 0, pane)\n newIndex = index\n } else {\n this._drawPanes.push(pane)\n newIndex = this._drawPanes.length - 1\n }\n if (pane.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(pane)\n } else {\n separatorPane = new SeparatorPane(this._chartContainer, nextPane.getContainer(), this, '', pane, 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, pane.getContainer(), this, '', prevPane, pane)\n this._separatorPanes.set(pane, separatorPane)\n }\n }\n return pane\n }\n\n private _measurePaneHeight (): void {\n const totalHeight = Math.floor(this._container.clientHeight)\n const separatorSize = this._chartStore.getStyles().separator.size\n const xAxisHeight = this._xAxisPane.getAxisComponent().getAutoSize()\n let paneExcludeXAxisHeight = totalHeight - xAxisHeight - this._separatorPanes.size * separatorSize\n if (paneExcludeXAxisHeight < 0) {\n paneExcludeXAxisHeight = 0\n }\n let indicatorPaneTotalHeight = 0\n\n this._drawPanes.forEach(pane => {\n if (pane.getId() !== PaneIdConstants.CANDLE && pane.getId() !== PaneIdConstants.X_AXIS) {\n let paneHeight = pane.getBounding().height\n const paneMinHeight = pane.getOptions().minHeight\n if (paneHeight < paneMinHeight) {\n paneHeight = paneMinHeight\n }\n if (indicatorPaneTotalHeight + paneHeight > paneExcludeXAxisHeight) {\n indicatorPaneTotalHeight = paneExcludeXAxisHeight\n paneHeight = Math.max(paneExcludeXAxisHeight - indicatorPaneTotalHeight, 0)\n } else {\n indicatorPaneTotalHeight += paneHeight\n }\n pane.setBounding({ height: paneHeight })\n }\n })\n const candlePaneHeight = paneExcludeXAxisHeight - indicatorPaneTotalHeight\n this._candlePane?.setBounding({ height: candlePaneHeight })\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\n private _measurePaneWidth (): void {\n const totalWidth = Math.floor(this._container.clientWidth)\n const styles = this._chartStore.getStyles()\n const yAxisStyles = styles.yAxis\n const isYAxisLeft = yAxisStyles.position === YAxisPosition.Left\n const isOutside = !yAxisStyles.inside\n let mainWidth = 0\n let yAxisWidth = 0\n let yAxisLeft = 0\n let mainLeft = 0\n this._drawPanes.forEach(pane => {\n if (pane.getId() !== PaneIdConstants.X_AXIS) {\n yAxisWidth = Math.max(yAxisWidth, pane.getAxisComponent().getAutoSize())\n }\n })\n if (yAxisWidth > totalWidth) {\n yAxisWidth = totalWidth\n }\n if (isOutside) {\n mainWidth = totalWidth - yAxisWidth\n if (isYAxisLeft) {\n yAxisLeft = 0\n mainLeft = yAxisWidth\n } else {\n yAxisLeft = totalWidth - yAxisWidth\n mainLeft = 0\n }\n } else {\n mainWidth = totalWidth\n mainLeft = 0\n if (isYAxisLeft) {\n yAxisLeft = 0\n } else {\n yAxisLeft = totalWidth - yAxisWidth\n }\n }\n\n this._chartStore.getTimeScaleStore().setTotalBarSpace(mainWidth)\n\n const paneBounding = { width: totalWidth }\n const mainBounding = { width: mainWidth, left: mainLeft }\n const yAxisBounding = { width: yAxisWidth, left: yAxisLeft }\n const separatorFill = styles.separator.fill\n let separatorBounding: Partial<Bounding>\n if (isOutside && !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, yAxisBounding)\n })\n }\n\n private _setPaneOptions (options: PaneOptions, forceShouldAdjust: boolean): void {\n if (isString(options.id)) {\n const pane = this.getDrawPaneById(options.id)\n let shouldMeasureHeight = false\n if (pane !== null) {\n let shouldAdjust = forceShouldAdjust\n if (options.id !== PaneIdConstants.CANDLE && isNumber(options.height) && options.height > 0) {\n const minHeight = Math.max(options.minHeight ?? pane.getOptions().minHeight, 0)\n const height = Math.max(minHeight, options.height)\n pane.setBounding({ height })\n shouldAdjust = true\n shouldMeasureHeight = true\n }\n if (isString(options.axisOptions?.name) || isValid(options.gap)) {\n shouldAdjust = true\n }\n pane.setOptions(options)\n if (shouldAdjust) {\n this.adjustPaneViewport(shouldMeasureHeight, true, true, true, true)\n }\n }\n }\n }\n\n getDrawPaneById (paneId: string): Nullable<DrawPane<Axis>> {\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 getAllDrawPanes (): DrawPane[] { return this._drawPanes }\n\n getAllSeparatorPanes (): Map<DrawPane, SeparatorPane> { return this._separatorPanes }\n\n adjustPaneViewport (\n shouldMeasureHeight: boolean,\n shouldMeasureWidth: boolean,\n shouldUpdate: boolean,\n shouldAdjustYAxis?: boolean,\n shouldForceAdjustYAxis?: boolean\n ): void {\n if (shouldMeasureHeight) {\n this._measurePaneHeight()\n }\n let forceMeasureWidth = shouldMeasureWidth\n const adjustYAxis = shouldAdjustYAxis ?? false\n const forceAdjustYAxis = shouldForceAdjustYAxis ?? false\n if (adjustYAxis || forceAdjustYAxis) {\n this._drawPanes.forEach(pane => {\n const adjust = pane.getAxisComponent().buildTicks(forceAdjustYAxis)\n if (!forceMeasureWidth) {\n forceMeasureWidth = adjust\n }\n })\n }\n if (forceMeasureWidth) {\n this._measurePaneWidth()\n }\n if (shouldUpdate ?? false) {\n this._xAxisPane.getAxisComponent().buildTicks(true)\n this.updatePane(UpdateLevel.All)\n }\n }\n\n updatePane (level: UpdateLevel, paneId?: string): void {\n if (isValid(paneId)) {\n const pane = this.getDrawPaneById(paneId)\n pane?.update(level)\n } else {\n this._separatorPanes.forEach(pane => {\n pane.update(level)\n })\n this._drawPanes.forEach(pane => {\n pane.update(level)\n })\n }\n }\n\n crosshairChange (crosshair: Crosshair): void {\n const actionStore = this._chartStore.getActionStore()\n if (actionStore.has(ActionType.OnCrosshairChange)) {\n const indicatorData = {}\n this._drawPanes.forEach(pane => {\n const id = pane.getId()\n const paneIndicatorData = {}\n const indicators = this._chartStore.getIndicatorStore().getInstances(id)\n indicators.forEach(indicator => {\n const result = indicator.result\n paneIndicatorData[indicator.name] = result[crosshair.dataIndex ?? result.length - 1]\n })\n indicatorData[id] = paneIndicatorData\n })\n if (isString(crosshair.paneId)) {\n actionStore.execute(ActionType.OnCrosshairChange, {\n ...crosshair,\n indicatorData\n })\n }\n }\n }\n\n getDom (paneId?: string, position?: DomPosition): Nullable<HTMLElement> {\n if (isString(paneId)) {\n const pane = this.getDrawPaneById(paneId)\n if (pane !== null) {\n const pos = position ?? DomPosition.Root\n switch (pos) {\n case DomPosition.Root: {\n return pane.getContainer()\n }\n case DomPosition.Main: {\n return pane.getMainWidget().getContainer()\n }\n case DomPosition.YAxis: {\n return pane.getYAxisWidget()?.getContainer() ?? null\n }\n }\n }\n } else {\n return this._chartContainer\n }\n return null\n }\n\n getSize (paneId?: string, position?: DomPosition): Nullable<Bounding> {\n if (isValid(paneId)) {\n const pane = this.getDrawPaneById(paneId)\n if (pane !== null) {\n const pos = position ?? DomPosition.Root\n switch (pos) {\n case DomPosition.Root: {\n return pane.getBounding()\n }\n case DomPosition.Main: {\n return pane.getMainWidget().getBounding()\n }\n case DomPosition.YAxis: {\n return pane.getYAxisWidget()?.getBounding() ?? null\n }\n }\n }\n } else {\n return {\n width: Math.floor(this._chartContainer.clientWidth),\n height: Math.floor(this._chartContainer.clientHeight),\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n }\n }\n return null\n }\n\n setStyles (styles: string | DeepPartial<Styles>): void {\n this._chartStore.setOptions({ styles })\n let realStyles: Nullable<DeepPartial<Styles>>\n if (isString(styles)) {\n realStyles = getExtensionStyles(styles)\n } else {\n realStyles = styles\n }\n if (isValid(realStyles?.yAxis?.type)) {\n this._candlePane?.getAxisComponent().setAutoCalcTickFlag(true)\n }\n this.adjustPaneViewport(true, true, true, true, true)\n }\n\n getStyles (): Styles {\n return this._chartStore.getStyles()\n }\n\n setLocale (locale: string): void {\n this._chartStore.setOptions({ locale })\n this.adjustPaneViewport(true, true, true, true, true)\n }\n\n getLocale (): string {\n return this._chartStore.getLocale()\n }\n\n setCustomApi (customApi: Partial<CustomApi>): void {\n this._chartStore.setOptions({ customApi })\n this.adjustPaneViewport(true, true, true, true, true)\n }\n\n setPriceVolumePrecision (pricePrecision: number, volumePrecision: number): void {\n this._chartStore.setPrecision({ price: pricePrecision, volume: volumePrecision })\n }\n\n getPriceVolumePrecision (): Precision {\n return this._chartStore.getPrecision()\n }\n\n setTimezone (timezone: string): void {\n this._chartStore.setOptions({ timezone })\n this._xAxisPane.getAxisComponent().buildTicks(true)\n this._xAxisPane.update(UpdateLevel.Drawer)\n }\n\n getTimezone (): string {\n return this._chartStore.getTimeScaleStore().getTimezone()\n }\n\n setOffsetRightDistance (distance: number): void {\n this._chartStore.getTimeScaleStore().setOffsetRightDistance(distance, true)\n }\n\n getOffsetRightDistance (): number {\n return this._chartStore.getTimeScaleStore().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.getTimeScaleStore().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.getTimeScaleStore().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.getTimeScaleStore().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.getTimeScaleStore().setRightMinVisibleBarCount(Math.ceil(barCount))\n }\n\n setBarSpace (space: number): void {\n this._chartStore.getTimeScaleStore().setBarSpace(space)\n }\n\n getBarSpace (): number {\n return this._chartStore.getTimeScaleStore().getBarSpace().bar\n }\n\n getVisibleRange (): VisibleRange {\n return this._chartStore.getTimeScaleStore().getVisibleRange()\n }\n\n clearData (): void {\n this._chartStore.clear()\n }\n\n getDataList (): KLineData[] {\n return this._chartStore.getDataList()\n }\n\n applyNewData (data: KLineData[], more?: boolean, callback?: () => void): void {\n if (isValid(callback)) {\n logWarn('applyNewData', '', 'param `callback` has been deprecated since version 9.8.0, use `subscribeAction(\\'onDataReady\\')` instead.')\n }\n this._chartStore.addData(data, LoadDataType.Init, more).then(() => {}).catch(() => {}).finally(() => { callback?.() })\n }\n\n /**\n * @deprecated\n * Since v9.8.0 deprecated, since v10 removed\n */\n applyMoreData (data: KLineData[], more?: boolean, callback?: () => void): void {\n logWarn('', '', 'Api `applyMoreData` has been deprecated since version 9.8.0.')\n this._chartStore.addData(data, LoadDataType.Forward, more ?? true).then(() => {}).catch(() => {}).finally(() => { callback?.() })\n }\n\n updateData (data: KLineData, callback?: () => void): void {\n if (isValid(callback)) {\n logWarn('updateData', '', 'param `callback` has been deprecated since version 9.8.0, use `subscribeAction(\\'onDataReady\\')` instead.')\n }\n this._chartStore.addData(data).then(() => {}).catch(() => {}).finally(() => { callback?.() })\n }\n\n /**\n * @deprecated\n * Since v9.8.0 deprecated, since v10 removed\n */\n loadMore (cb: LoadMoreCallback): void {\n logWarn('', '', 'Api `loadMore` has been deprecated since version 9.8.0, use `setLoadDataCallback` instead.')\n this._chartStore.setLoadMoreCallback(cb)\n }\n\n setLoadDataCallback (cb: LoadDataCallback): void {\n this._chartStore.setLoadDataCallback(cb)\n }\n\n createIndicator (value: string | IndicatorCreate, isStack?: boolean, paneOptions?: Nullable<PaneOptions>, callback?: () => void): Nullable<string> {\n const indicator = isString(value) ? { name: value } : value\n if (getIndicatorClass(indicator.name) === null) {\n logWarn('createIndicator', 'value', 'indicator not supported, you may need to use registerIndicator to add one!!!')\n return null\n }\n\n let paneId = paneOptions?.id\n const currentPane = this.getDrawPaneById(paneId ?? '')\n if (currentPane !== null) {\n this._chartStore.getIndicatorStore().addInstance(indicator, paneId ?? '', isStack ?? false).then(_ => {\n this._setPaneOptions(paneOptions ?? {}, currentPane.getAxisComponent().buildTicks(true) ?? false)\n }).catch(_ => {})\n } else {\n paneId ??= createId(PaneIdConstants.INDICATOR)\n const pane = this._createPane(IndicatorPane, paneId, paneOptions ?? {})\n const height = paneOptions?.height ?? PANE_DEFAULT_HEIGHT\n pane.setBounding({ height })\n void this._chartStore.getIndicatorStore().addInstance(indicator, paneId, isStack ?? false).finally(() => {\n this.adjustPaneViewport(true, true, true, true, true)\n callback?.()\n })\n }\n return paneId ?? null\n }\n\n overrideIndicator (override: IndicatorCreate, paneId?: Nullable<string>, callback?: () => void): void {\n this._chartStore.getIndicatorStore().override(override, paneId ?? null).then(\n ([onlyUpdateFlag, resizeFlag]) => {\n if (onlyUpdateFlag || resizeFlag) {\n this.adjustPaneViewport(false, resizeFlag, true, resizeFlag)\n callback?.()\n }\n }\n ).catch(() => {})\n }\n\n getIndicatorByPaneId (paneId?: string, name?: string): Nullable<Indicator> | Nullable<Map<string, Indicator>> | Map<string, Map<string, Indicator>> {\n return this._chartStore.getIndicatorStore().getInstanceByPaneId(paneId, name)\n }\n\n removeIndicator (paneId: string, name?: string): void {\n const indicatorStore = this._chartStore.getIndicatorStore()\n const removed = indicatorStore.removeInstance(paneId, name)\n if (removed) {\n let shouldMeasureHeight = false\n if (paneId !== PaneIdConstants.CANDLE) {\n if (!indicatorStore.hasInstances(paneId)) {\n const pane = this.getDrawPaneById(paneId)\n const index = this._drawPanes.findIndex(p => p.getId() === paneId)\n if (pane !== null) {\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() === pane.getId()) {\n item[1].setTopPane(topPane)\n break\n }\n }\n separatorPane.destroy()\n this._separatorPanes.delete(pane)\n }\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 this.adjustPaneViewport(shouldMeasureHeight, true, true, true, true)\n }\n }\n\n createOverlay (value: string | OverlayCreate | Array<string | OverlayCreate>, paneId?: string): Nullable<string> | Array<Nullable<string>> {\n let overlays: OverlayCreate[] = []\n if (isString(value)) {\n overlays = [{ name: value }]\n } else if (isArray<Array<string | OverlayCreate>>(value)) {\n overlays = (value as Array<string | OverlayCreate>).map((v: string | OverlayCreate) => {\n if (isString(v)) {\n return { name: v }\n }\n return v\n })\n } else {\n const overlay = value as OverlayCreate\n overlays = [overlay]\n }\n let appointPaneFlag = true\n if (!isValid(paneId) || this.getDrawPaneById(paneId) === null) {\n paneId = PaneIdConstants.CANDLE\n appointPaneFlag = false\n }\n const ids = this._chartStore.getOverlayStore().addInstances(overlays, paneId, appointPaneFlag)\n if (isArray(value)) {\n return ids\n }\n return ids[0]\n }\n\n getOverlayById (id: string): Nullable<Overlay> {\n return this._chartStore.getOverlayStore().getInstanceById(id)\n }\n\n overrideOverlay (override: Partial<OverlayCreate>): void {\n this._chartStore.getOverlayStore().override(override)\n }\n\n removeOverlay (remove?: string | OverlayRemove): void {\n let overlayRemove: OverlayRemove\n if (isValid(remove)) {\n if (isString(remove)) {\n overlayRemove = { id: remove }\n } else {\n overlayRemove = remove\n }\n }\n this._chartStore.getOverlayStore().removeInstance(overlayRemove!)\n }\n\n setPaneOptions (options: PaneOptions): void {\n this._setPaneOptions(options, false)\n }\n\n setZoomEnabled (enabled: boolean): void {\n this._chartStore.getTimeScaleStore().setZoomEnabled(enabled)\n }\n\n isZoomEnabled (): boolean {\n return this._chartStore.getTimeScaleStore().getZoomEnabled()\n }\n\n setScrollEnabled (enabled: boolean): void {\n this._chartStore.getTimeScaleStore().setScrollEnabled(enabled)\n }\n\n isScrollEnabled (): boolean {\n return this._chartStore.getTimeScaleStore().getScrollEnabled()\n }\n\n scrollByDistance (distance: number, animationDuration?: number): void {\n const duration = isNumber(animationDuration) && animationDuration > 0 ? animationDuration : 0\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n if (duration > 0) {\n timeScaleStore.startScroll()\n const startTime = new Date().getTime()\n const animation: (() => void) = () => {\n const progress = (new Date().getTime() - startTime) / duration\n const finished = progress >= 1\n const dis = finished ? distance : distance * progress\n timeScaleStore.scroll(dis)\n if (!finished) {\n requestAnimationFrame(animation)\n }\n }\n animation()\n } else {\n timeScaleStore.startScroll()\n timeScaleStore.scroll(distance)\n }\n }\n\n scrollToRealTime (animationDuration?: number): void {\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n const { bar: barSpace } = timeScaleStore.getBarSpace()\n const difBarCount = timeScaleStore.getLastBarRightSideDiffBarCount() - timeScaleStore.getInitialOffsetRightDistance() / barSpace\n const distance = difBarCount * barSpace\n this.scrollByDistance(distance, animationDuration)\n }\n\n scrollToDataIndex (dataIndex: number, animationDuration?: number): void {\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n const distance = (\n timeScaleStore.getLastBarRightSideDiffBarCount() + (this.getDataList().length - 1 - dataIndex)\n ) * timeScaleStore.getBarSpace().bar\n this.scrollByDistance(distance, animationDuration)\n }\n\n scrollToTimestamp (timestamp: number, animationDuration?: number): void {\n const dataIndex = binarySearchNearest(this.getDataList(), 'timestamp', timestamp)\n this.scrollToDataIndex(dataIndex, animationDuration)\n }\n\n zoomAtCoordinate (scale: number, coordinate?: Coordinate, animationDuration?: number): void {\n const duration = isNumber(animationDuration) && animationDuration > 0 ? animationDuration : 0\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n if (duration > 0) {\n const { bar: barSpace } = timeScaleStore.getBarSpace()\n const scaleDataSpace = barSpace * scale\n const difSpace = scaleDataSpace - barSpace\n const startTime = new Date().getTime()\n const animation: (() => void) = () => {\n const progress = (new Date().getTime() - startTime) / duration\n const finished = progress >= 1\n const progressDataSpace = finished ? difSpace : difSpace * progress\n timeScaleStore.zoom(progressDataSpace / barSpace, coordinate)\n if (!finished) {\n requestAnimationFrame(animation)\n }\n }\n animation()\n } else {\n timeScaleStore.zoom(scale, coordinate)\n }\n }\n\n zoomAtDataIndex (scale: number, dataIndex: number, animationDuration?: number): void {\n const x = this._chartStore.getTimeScaleStore().dataIndexToCoordinate(dataIndex)\n this.zoomAtCoordinate(scale, { x, y: 0 }, animationDuration)\n }\n\n zoomAtTimestamp (scale: number, timestamp: number, animationDuration?: number): void {\n const dataIndex = binarySearchNearest(this.getDataList(), 'timestamp', timestamp)\n this.zoomAtDataIndex(scale, dataIndex, animationDuration)\n }\n\n convertToPixel (points: Partial<Point> | Array<Partial<Point>>, finder: ConvertFinder): Partial<Coordinate> | Array<Partial<Coordinate>> {\n const { paneId = PaneIdConstants.CANDLE, absolute = false } = finder\n let coordinates: Array<Partial<Coordinate>> = []\n if (paneId !== PaneIdConstants.X_AXIS) {\n const pane = this.getDrawPaneById(paneId)\n if (pane !== null) {\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n const bounding = pane.getBounding()\n const ps = new Array<Partial<Point>>().concat(points)\n const xAxis = this._xAxisPane.getAxisComponent()\n const yAxis = pane.getAxisComponent()\n coordinates = ps.map(point => {\n const coordinate: Partial<Coordinate> = {}\n let dataIndex = point.dataIndex\n if (isNumber(point.timestamp)) {\n dataIndex = timeScaleStore.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<Partial<Coordinate>>, finder: ConvertFinder): Partial<Point> | Array<Partial<Point>> {\n const { paneId = PaneIdConstants.CANDLE, absolute = false } = finder\n let points: Array<Partial<Point>> = []\n if (paneId !== PaneIdConstants.X_AXIS) {\n const pane = this.getDrawPaneById(paneId)\n if (pane !== null) {\n const timeScaleStore = this._chartStore.getTimeScaleStore()\n const bounding = pane.getBounding()\n const cs = new Array<Partial<Coordinate>>().concat(coordinates)\n const xAxis = this._xAxisPane.getAxisComponent()\n const yAxis = pane.getAxisComponent()\n points = cs.map(coordinate => {\n const point: Partial<Point> = {}\n if (isNumber(coordinate.x)) {\n const dataIndex = xAxis?.convertFromPixel(coordinate.x) ?? -1\n point.dataIndex = dataIndex\n point.timestamp = timeScaleStore.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: any): void {\n switch (type) {\n case ActionType.OnCrosshairChange: {\n const crosshair: Crosshair = { ...data }\n crosshair.paneId = crosshair.paneId ?? PaneIdConstants.CANDLE\n this._chartStore.getTooltipStore().setCrosshair(crosshair)\n break\n }\n }\n }\n\n subscribeAction (type: ActionType, callback: ActionCallback): void {\n this._chartStore.getActionStore().subscribe(type, callback)\n }\n\n unsubscribeAction (type: ActionType, callback?: ActionCallback): void {\n this._chartStore.getActionStore().unsubscribe(type, callback)\n }\n\n getConvertPictureUrl (includeOverlay?: boolean, type?: string, backgroundColor?: string): string {\n const width = this._chartContainer.clientWidth\n const height = this._chartContainer.clientHeight\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.adjustPaneViewport(true, true, true, true, true)\n }\n\n destroy (): void {\n this._chartEvent.destroy()\n this._drawPanes.forEach(pane => {\n pane.destroy()\n })\n this._drawPanes = []\n this._separatorPanes.forEach(pane => {\n pane.destroy()\n })\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, YAxisPosition, YAxisType\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 { formatValue, formatPrecision, formatBigNumber, formatDate, formatThousands, formatFoldDecimal } 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 { type Options, FormatDateType } from './Options'\nimport ChartImp, { type Chart, DomPosition } from './Chart'\n\nimport { checkCoordinateOnArc, drawArc } from './extension/figure/arc'\nimport { checkCoordinateOnCircle, drawCircle } from './extension/figure/circle'\nimport {\n checkCoordinateOnLine, drawLine,\n getLinearYFromSlopeIntercept, getLinearSlopeIntercept, getLinearYFromCoordinates\n} from './extension/figure/line'\nimport { checkCoordinateOnPolygon, drawPolygon } from './extension/figure/polygon'\nimport { checkCoordinateOnRect, drawRect } from './extension/figure/rect'\nimport { drawRectText } from './extension/figure/rectText'\nimport { checkCoordinateOnText, drawText } from './extension/figure/text'\n\nimport { registerFigure, getSupportedFigures, getFigureClass } from './extension/figure/index'\nimport { registerIndicator, getSupportedIndicators } from './extension/indicator/index'\nimport { registerLocale, getSupportedLocales } from './extension/i18n/index'\nimport { registerOverlay, 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 instances = new Map<string, ChartImp>()\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<Chart> {\n logTag()\n let dom: Nullable<HTMLElement>\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 = instances.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 instances.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<string>\n if (dcs instanceof ChartImp) {\n id = dcs.id\n } else {\n let dom: Nullable<HTMLElement>\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 instances.get(id)?.destroy()\n instances.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,\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 drawArc,\n drawCircle,\n drawLine,\n drawPolygon,\n drawRect,\n drawText,\n drawRectText\n}\n\nexport {\n version, init, dispose,\n registerFigure, getSupportedFigures, getFigureClass,\n registerIndicator, getSupportedIndicators,\n registerOverlay, getSupportedOverlays, getOverlayClass,\n registerLocale, getSupportedLocales,\n registerStyles,\n registerXAxis, registerYAxis,\n utils,\n LineType, PolygonType, TooltipShowRule, TooltipShowType, TooltipIconPosition,\n CandleType, YAxisPosition, YAxisType, FormatDateType,\n DomPosition, ActionType, IndicatorSeries, OverlayMode\n}\n"],"names":["LineType","PolygonType","TooltipShowRule","TooltipShowType","TooltipIconPosition","CandleType","YAxisPosition","YAxisType","ActionType","IndicatorSeries","OverlayMode","FormatDateType","extensions","Action","requestAnimationFrame","CandleLastPriceLineView","DomPosition","getExtensionStyles"],"mappings":"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","x_google_ignoreList":[0]}
\No newline at end of file