diff --git a/src/charts/shape.js b/src/charts/shape.js index f957bcd..8422b7e 100644 --- a/src/charts/shape.js +++ b/src/charts/shape.js @@ -2,6 +2,7 @@ import {invokeCallback, mixin} from "@/common.js"; import {chart, createShape, deleteShapeId, dragging, draggingShapeIds, drawShape, widget} from "@/charts/chart.js"; +import {unique} from "@/misc.js"; // @@ -263,7 +264,8 @@ function dirtyKeys(propsA, propsB) { return propsA === null ? [] : [...Object.keys(propsA)] if (propsA===null) return [...Object.keys(propsB)] - return [...(new Set(Object.keys(propsB)).union(new Set(Object.keys(propsA))))].filter((k)=> !(k in propsA) || propsA[k] !== propsB[k]) + const keys = unique([...Object.keys(propsA), ...Object.keys(propsB)]) + return keys.filter((k)=> !(k in propsA) || propsA[k] !== propsB[k]) } diff --git a/src/misc.js b/src/misc.js index 0131e63..b053381 100644 --- a/src/misc.js +++ b/src/misc.js @@ -218,3 +218,14 @@ export function lineColor(buy, index) { return c.string() } + +export function unique(arr) { + const u = {}, a = []; + for(let i = 0, l = arr.length; i < l; ++i){ + if(!u.hasOwnProperty(arr[i])) { + a.push(arr[i]); + u[arr[i]] = 1; + } + } + return a; +}