hyperprop-charting-library 0.1.108 → 0.1.109
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hyperprop-charting-library.cjs +52 -26
- package/dist/hyperprop-charting-library.js +52 -26
- package/dist/index.cjs +52 -26
- package/dist/index.js +52 -26
- package/package.json +1 -1
|
@@ -951,30 +951,54 @@ function createChart(element, options = {}) {
|
|
|
951
951
|
}
|
|
952
952
|
};
|
|
953
953
|
};
|
|
954
|
-
const
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
954
|
+
const bumpGeneratedDrawingIdPast = (id) => {
|
|
955
|
+
const match = /^drawing-(\d+)$/.exec(id);
|
|
956
|
+
if (!match) return;
|
|
957
|
+
const n = Number(match[1]);
|
|
958
|
+
if (Number.isFinite(n) && n >= generatedDrawingId) {
|
|
959
|
+
generatedDrawingId = n + 1;
|
|
960
|
+
}
|
|
961
|
+
};
|
|
962
|
+
const normalizeDrawingState = (drawing) => {
|
|
963
|
+
const id = drawing.id ?? `drawing-${generatedDrawingId++}`;
|
|
964
|
+
bumpGeneratedDrawingIdPast(id);
|
|
965
|
+
return {
|
|
966
|
+
id,
|
|
967
|
+
type: drawing.type,
|
|
968
|
+
points: drawing.points.map((point) => ({
|
|
969
|
+
index: Number(point.index) || 0,
|
|
970
|
+
price: Number(point.price) || 0,
|
|
971
|
+
...point.time ? { time: point.time } : {}
|
|
972
|
+
})),
|
|
973
|
+
visible: drawing.visible ?? true,
|
|
974
|
+
color: drawing.color ?? "#94a3b8",
|
|
975
|
+
colors: Array.isArray(drawing.colors) ? drawing.colors.filter((value) => typeof value === "string") : [],
|
|
976
|
+
style: drawing.style ?? "dotted",
|
|
977
|
+
width: Math.max(1, Number(drawing.width) || 1),
|
|
978
|
+
locked: drawing.locked ?? false,
|
|
979
|
+
accountSize: Number(drawing.accountSize) || 0,
|
|
980
|
+
lotSize: Number(drawing.lotSize) || 1,
|
|
981
|
+
risk: Number(drawing.risk) || 0,
|
|
982
|
+
riskMode: drawing.riskMode === "amount" ? "amount" : "percent",
|
|
983
|
+
leverage: Number(drawing.leverage) || 1,
|
|
984
|
+
pointValue: Number(drawing.pointValue) || 1,
|
|
985
|
+
qtyPrecision: Number.isFinite(drawing.qtyPrecision) ? Math.max(0, Math.floor(Number(drawing.qtyPrecision))) : 0,
|
|
986
|
+
fontSize: Math.max(6, Number(drawing.fontSize) || 14),
|
|
987
|
+
...drawing.label === void 0 ? {} : { label: drawing.label }
|
|
988
|
+
};
|
|
989
|
+
};
|
|
990
|
+
const dedupeDrawingIds = (list) => {
|
|
991
|
+
const seen = /* @__PURE__ */ new Set();
|
|
992
|
+
return list.map((drawing) => {
|
|
993
|
+
if (!seen.has(drawing.id)) {
|
|
994
|
+
seen.add(drawing.id);
|
|
995
|
+
return drawing;
|
|
996
|
+
}
|
|
997
|
+
const id = `drawing-${generatedDrawingId++}`;
|
|
998
|
+
seen.add(id);
|
|
999
|
+
return { ...drawing, id };
|
|
1000
|
+
});
|
|
1001
|
+
};
|
|
978
1002
|
const serializeDrawing = (drawing) => ({
|
|
979
1003
|
id: drawing.id,
|
|
980
1004
|
type: drawing.type,
|
|
@@ -997,7 +1021,9 @@ function createChart(element, options = {}) {
|
|
|
997
1021
|
});
|
|
998
1022
|
let tradeMarkers = [];
|
|
999
1023
|
let indicators = (options.indicators ?? []).map((indicator) => normalizeIndicatorState(indicator));
|
|
1000
|
-
let drawings = (
|
|
1024
|
+
let drawings = dedupeDrawingIds(
|
|
1025
|
+
(options.drawings ?? []).map((drawing) => normalizeDrawingState(drawing))
|
|
1026
|
+
);
|
|
1001
1027
|
let activeDrawingTool = null;
|
|
1002
1028
|
let draftDrawing = null;
|
|
1003
1029
|
let drawingDragState = null;
|
|
@@ -5336,7 +5362,7 @@ function createChart(element, options = {}) {
|
|
|
5336
5362
|
const getMagnetMode = () => magnetMode;
|
|
5337
5363
|
const getDrawings = () => drawings.map((drawing) => serializeDrawing(drawing));
|
|
5338
5364
|
const setDrawings = (nextDrawings) => {
|
|
5339
|
-
drawings = nextDrawings.map((drawing) => normalizeDrawingState(drawing));
|
|
5365
|
+
drawings = dedupeDrawingIds(nextDrawings.map((drawing) => normalizeDrawingState(drawing)));
|
|
5340
5366
|
draftDrawing = null;
|
|
5341
5367
|
emitDrawingsChange();
|
|
5342
5368
|
scheduleDraw();
|
|
@@ -925,30 +925,54 @@ function createChart(element, options = {}) {
|
|
|
925
925
|
}
|
|
926
926
|
};
|
|
927
927
|
};
|
|
928
|
-
const
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
928
|
+
const bumpGeneratedDrawingIdPast = (id) => {
|
|
929
|
+
const match = /^drawing-(\d+)$/.exec(id);
|
|
930
|
+
if (!match) return;
|
|
931
|
+
const n = Number(match[1]);
|
|
932
|
+
if (Number.isFinite(n) && n >= generatedDrawingId) {
|
|
933
|
+
generatedDrawingId = n + 1;
|
|
934
|
+
}
|
|
935
|
+
};
|
|
936
|
+
const normalizeDrawingState = (drawing) => {
|
|
937
|
+
const id = drawing.id ?? `drawing-${generatedDrawingId++}`;
|
|
938
|
+
bumpGeneratedDrawingIdPast(id);
|
|
939
|
+
return {
|
|
940
|
+
id,
|
|
941
|
+
type: drawing.type,
|
|
942
|
+
points: drawing.points.map((point) => ({
|
|
943
|
+
index: Number(point.index) || 0,
|
|
944
|
+
price: Number(point.price) || 0,
|
|
945
|
+
...point.time ? { time: point.time } : {}
|
|
946
|
+
})),
|
|
947
|
+
visible: drawing.visible ?? true,
|
|
948
|
+
color: drawing.color ?? "#94a3b8",
|
|
949
|
+
colors: Array.isArray(drawing.colors) ? drawing.colors.filter((value) => typeof value === "string") : [],
|
|
950
|
+
style: drawing.style ?? "dotted",
|
|
951
|
+
width: Math.max(1, Number(drawing.width) || 1),
|
|
952
|
+
locked: drawing.locked ?? false,
|
|
953
|
+
accountSize: Number(drawing.accountSize) || 0,
|
|
954
|
+
lotSize: Number(drawing.lotSize) || 1,
|
|
955
|
+
risk: Number(drawing.risk) || 0,
|
|
956
|
+
riskMode: drawing.riskMode === "amount" ? "amount" : "percent",
|
|
957
|
+
leverage: Number(drawing.leverage) || 1,
|
|
958
|
+
pointValue: Number(drawing.pointValue) || 1,
|
|
959
|
+
qtyPrecision: Number.isFinite(drawing.qtyPrecision) ? Math.max(0, Math.floor(Number(drawing.qtyPrecision))) : 0,
|
|
960
|
+
fontSize: Math.max(6, Number(drawing.fontSize) || 14),
|
|
961
|
+
...drawing.label === void 0 ? {} : { label: drawing.label }
|
|
962
|
+
};
|
|
963
|
+
};
|
|
964
|
+
const dedupeDrawingIds = (list) => {
|
|
965
|
+
const seen = /* @__PURE__ */ new Set();
|
|
966
|
+
return list.map((drawing) => {
|
|
967
|
+
if (!seen.has(drawing.id)) {
|
|
968
|
+
seen.add(drawing.id);
|
|
969
|
+
return drawing;
|
|
970
|
+
}
|
|
971
|
+
const id = `drawing-${generatedDrawingId++}`;
|
|
972
|
+
seen.add(id);
|
|
973
|
+
return { ...drawing, id };
|
|
974
|
+
});
|
|
975
|
+
};
|
|
952
976
|
const serializeDrawing = (drawing) => ({
|
|
953
977
|
id: drawing.id,
|
|
954
978
|
type: drawing.type,
|
|
@@ -971,7 +995,9 @@ function createChart(element, options = {}) {
|
|
|
971
995
|
});
|
|
972
996
|
let tradeMarkers = [];
|
|
973
997
|
let indicators = (options.indicators ?? []).map((indicator) => normalizeIndicatorState(indicator));
|
|
974
|
-
let drawings = (
|
|
998
|
+
let drawings = dedupeDrawingIds(
|
|
999
|
+
(options.drawings ?? []).map((drawing) => normalizeDrawingState(drawing))
|
|
1000
|
+
);
|
|
975
1001
|
let activeDrawingTool = null;
|
|
976
1002
|
let draftDrawing = null;
|
|
977
1003
|
let drawingDragState = null;
|
|
@@ -5310,7 +5336,7 @@ function createChart(element, options = {}) {
|
|
|
5310
5336
|
const getMagnetMode = () => magnetMode;
|
|
5311
5337
|
const getDrawings = () => drawings.map((drawing) => serializeDrawing(drawing));
|
|
5312
5338
|
const setDrawings = (nextDrawings) => {
|
|
5313
|
-
drawings = nextDrawings.map((drawing) => normalizeDrawingState(drawing));
|
|
5339
|
+
drawings = dedupeDrawingIds(nextDrawings.map((drawing) => normalizeDrawingState(drawing)));
|
|
5314
5340
|
draftDrawing = null;
|
|
5315
5341
|
emitDrawingsChange();
|
|
5316
5342
|
scheduleDraw();
|
package/dist/index.cjs
CHANGED
|
@@ -951,30 +951,54 @@ function createChart(element, options = {}) {
|
|
|
951
951
|
}
|
|
952
952
|
};
|
|
953
953
|
};
|
|
954
|
-
const
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
954
|
+
const bumpGeneratedDrawingIdPast = (id) => {
|
|
955
|
+
const match = /^drawing-(\d+)$/.exec(id);
|
|
956
|
+
if (!match) return;
|
|
957
|
+
const n = Number(match[1]);
|
|
958
|
+
if (Number.isFinite(n) && n >= generatedDrawingId) {
|
|
959
|
+
generatedDrawingId = n + 1;
|
|
960
|
+
}
|
|
961
|
+
};
|
|
962
|
+
const normalizeDrawingState = (drawing) => {
|
|
963
|
+
const id = drawing.id ?? `drawing-${generatedDrawingId++}`;
|
|
964
|
+
bumpGeneratedDrawingIdPast(id);
|
|
965
|
+
return {
|
|
966
|
+
id,
|
|
967
|
+
type: drawing.type,
|
|
968
|
+
points: drawing.points.map((point) => ({
|
|
969
|
+
index: Number(point.index) || 0,
|
|
970
|
+
price: Number(point.price) || 0,
|
|
971
|
+
...point.time ? { time: point.time } : {}
|
|
972
|
+
})),
|
|
973
|
+
visible: drawing.visible ?? true,
|
|
974
|
+
color: drawing.color ?? "#94a3b8",
|
|
975
|
+
colors: Array.isArray(drawing.colors) ? drawing.colors.filter((value) => typeof value === "string") : [],
|
|
976
|
+
style: drawing.style ?? "dotted",
|
|
977
|
+
width: Math.max(1, Number(drawing.width) || 1),
|
|
978
|
+
locked: drawing.locked ?? false,
|
|
979
|
+
accountSize: Number(drawing.accountSize) || 0,
|
|
980
|
+
lotSize: Number(drawing.lotSize) || 1,
|
|
981
|
+
risk: Number(drawing.risk) || 0,
|
|
982
|
+
riskMode: drawing.riskMode === "amount" ? "amount" : "percent",
|
|
983
|
+
leverage: Number(drawing.leverage) || 1,
|
|
984
|
+
pointValue: Number(drawing.pointValue) || 1,
|
|
985
|
+
qtyPrecision: Number.isFinite(drawing.qtyPrecision) ? Math.max(0, Math.floor(Number(drawing.qtyPrecision))) : 0,
|
|
986
|
+
fontSize: Math.max(6, Number(drawing.fontSize) || 14),
|
|
987
|
+
...drawing.label === void 0 ? {} : { label: drawing.label }
|
|
988
|
+
};
|
|
989
|
+
};
|
|
990
|
+
const dedupeDrawingIds = (list) => {
|
|
991
|
+
const seen = /* @__PURE__ */ new Set();
|
|
992
|
+
return list.map((drawing) => {
|
|
993
|
+
if (!seen.has(drawing.id)) {
|
|
994
|
+
seen.add(drawing.id);
|
|
995
|
+
return drawing;
|
|
996
|
+
}
|
|
997
|
+
const id = `drawing-${generatedDrawingId++}`;
|
|
998
|
+
seen.add(id);
|
|
999
|
+
return { ...drawing, id };
|
|
1000
|
+
});
|
|
1001
|
+
};
|
|
978
1002
|
const serializeDrawing = (drawing) => ({
|
|
979
1003
|
id: drawing.id,
|
|
980
1004
|
type: drawing.type,
|
|
@@ -997,7 +1021,9 @@ function createChart(element, options = {}) {
|
|
|
997
1021
|
});
|
|
998
1022
|
let tradeMarkers = [];
|
|
999
1023
|
let indicators = (options.indicators ?? []).map((indicator) => normalizeIndicatorState(indicator));
|
|
1000
|
-
let drawings = (
|
|
1024
|
+
let drawings = dedupeDrawingIds(
|
|
1025
|
+
(options.drawings ?? []).map((drawing) => normalizeDrawingState(drawing))
|
|
1026
|
+
);
|
|
1001
1027
|
let activeDrawingTool = null;
|
|
1002
1028
|
let draftDrawing = null;
|
|
1003
1029
|
let drawingDragState = null;
|
|
@@ -5336,7 +5362,7 @@ function createChart(element, options = {}) {
|
|
|
5336
5362
|
const getMagnetMode = () => magnetMode;
|
|
5337
5363
|
const getDrawings = () => drawings.map((drawing) => serializeDrawing(drawing));
|
|
5338
5364
|
const setDrawings = (nextDrawings) => {
|
|
5339
|
-
drawings = nextDrawings.map((drawing) => normalizeDrawingState(drawing));
|
|
5365
|
+
drawings = dedupeDrawingIds(nextDrawings.map((drawing) => normalizeDrawingState(drawing)));
|
|
5340
5366
|
draftDrawing = null;
|
|
5341
5367
|
emitDrawingsChange();
|
|
5342
5368
|
scheduleDraw();
|
package/dist/index.js
CHANGED
|
@@ -925,30 +925,54 @@ function createChart(element, options = {}) {
|
|
|
925
925
|
}
|
|
926
926
|
};
|
|
927
927
|
};
|
|
928
|
-
const
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
928
|
+
const bumpGeneratedDrawingIdPast = (id) => {
|
|
929
|
+
const match = /^drawing-(\d+)$/.exec(id);
|
|
930
|
+
if (!match) return;
|
|
931
|
+
const n = Number(match[1]);
|
|
932
|
+
if (Number.isFinite(n) && n >= generatedDrawingId) {
|
|
933
|
+
generatedDrawingId = n + 1;
|
|
934
|
+
}
|
|
935
|
+
};
|
|
936
|
+
const normalizeDrawingState = (drawing) => {
|
|
937
|
+
const id = drawing.id ?? `drawing-${generatedDrawingId++}`;
|
|
938
|
+
bumpGeneratedDrawingIdPast(id);
|
|
939
|
+
return {
|
|
940
|
+
id,
|
|
941
|
+
type: drawing.type,
|
|
942
|
+
points: drawing.points.map((point) => ({
|
|
943
|
+
index: Number(point.index) || 0,
|
|
944
|
+
price: Number(point.price) || 0,
|
|
945
|
+
...point.time ? { time: point.time } : {}
|
|
946
|
+
})),
|
|
947
|
+
visible: drawing.visible ?? true,
|
|
948
|
+
color: drawing.color ?? "#94a3b8",
|
|
949
|
+
colors: Array.isArray(drawing.colors) ? drawing.colors.filter((value) => typeof value === "string") : [],
|
|
950
|
+
style: drawing.style ?? "dotted",
|
|
951
|
+
width: Math.max(1, Number(drawing.width) || 1),
|
|
952
|
+
locked: drawing.locked ?? false,
|
|
953
|
+
accountSize: Number(drawing.accountSize) || 0,
|
|
954
|
+
lotSize: Number(drawing.lotSize) || 1,
|
|
955
|
+
risk: Number(drawing.risk) || 0,
|
|
956
|
+
riskMode: drawing.riskMode === "amount" ? "amount" : "percent",
|
|
957
|
+
leverage: Number(drawing.leverage) || 1,
|
|
958
|
+
pointValue: Number(drawing.pointValue) || 1,
|
|
959
|
+
qtyPrecision: Number.isFinite(drawing.qtyPrecision) ? Math.max(0, Math.floor(Number(drawing.qtyPrecision))) : 0,
|
|
960
|
+
fontSize: Math.max(6, Number(drawing.fontSize) || 14),
|
|
961
|
+
...drawing.label === void 0 ? {} : { label: drawing.label }
|
|
962
|
+
};
|
|
963
|
+
};
|
|
964
|
+
const dedupeDrawingIds = (list) => {
|
|
965
|
+
const seen = /* @__PURE__ */ new Set();
|
|
966
|
+
return list.map((drawing) => {
|
|
967
|
+
if (!seen.has(drawing.id)) {
|
|
968
|
+
seen.add(drawing.id);
|
|
969
|
+
return drawing;
|
|
970
|
+
}
|
|
971
|
+
const id = `drawing-${generatedDrawingId++}`;
|
|
972
|
+
seen.add(id);
|
|
973
|
+
return { ...drawing, id };
|
|
974
|
+
});
|
|
975
|
+
};
|
|
952
976
|
const serializeDrawing = (drawing) => ({
|
|
953
977
|
id: drawing.id,
|
|
954
978
|
type: drawing.type,
|
|
@@ -971,7 +995,9 @@ function createChart(element, options = {}) {
|
|
|
971
995
|
});
|
|
972
996
|
let tradeMarkers = [];
|
|
973
997
|
let indicators = (options.indicators ?? []).map((indicator) => normalizeIndicatorState(indicator));
|
|
974
|
-
let drawings = (
|
|
998
|
+
let drawings = dedupeDrawingIds(
|
|
999
|
+
(options.drawings ?? []).map((drawing) => normalizeDrawingState(drawing))
|
|
1000
|
+
);
|
|
975
1001
|
let activeDrawingTool = null;
|
|
976
1002
|
let draftDrawing = null;
|
|
977
1003
|
let drawingDragState = null;
|
|
@@ -5310,7 +5336,7 @@ function createChart(element, options = {}) {
|
|
|
5310
5336
|
const getMagnetMode = () => magnetMode;
|
|
5311
5337
|
const getDrawings = () => drawings.map((drawing) => serializeDrawing(drawing));
|
|
5312
5338
|
const setDrawings = (nextDrawings) => {
|
|
5313
|
-
drawings = nextDrawings.map((drawing) => normalizeDrawingState(drawing));
|
|
5339
|
+
drawings = dedupeDrawingIds(nextDrawings.map((drawing) => normalizeDrawingState(drawing)));
|
|
5314
5340
|
draftDrawing = null;
|
|
5315
5341
|
emitDrawingsChange();
|
|
5316
5342
|
scheduleDraw();
|