]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
refactor: move batch of helpers to ts (#10722)
authorDan Onoshko <danon0404@gmail.com>
Fri, 30 Sep 2022 13:48:12 +0000 (20:48 +0700)
committerGitHub <noreply@github.com>
Fri, 30 Sep 2022 13:48:12 +0000 (09:48 -0400)
* refactor: move batch of helpers to ts

* refactor: review fixes

19 files changed:
src/core/core.animation.js
src/core/core.datasetController.js
src/elements/element.arc.js
src/helpers/helpers.collection.ts [moved from src/helpers/helpers.collection.js with 62% similarity]
src/helpers/helpers.color.js [deleted file]
src/helpers/helpers.color.ts [new file with mode: 0644]
src/helpers/helpers.interpolation.js [deleted file]
src/helpers/helpers.interpolation.ts [new file with mode: 0644]
src/helpers/helpers.intl.ts [moved from src/helpers/helpers.intl.js with 58% similarity]
src/helpers/helpers.math.ts [moved from src/helpers/helpers.math.js with 71% similarity]
src/helpers/helpers.rtl.ts [moved from src/helpers/helpers.rtl.js with 52% similarity]
src/helpers/types.ts
types/helpers/helpers.collection.d.ts [deleted file]
types/helpers/helpers.color.d.ts [deleted file]
types/helpers/helpers.interpolation.d.ts [deleted file]
types/helpers/helpers.intl.d.ts [deleted file]
types/helpers/helpers.math.d.ts [deleted file]
types/helpers/helpers.rtl.d.ts [deleted file]
types/helpers/index.d.ts

index 76f726a8e78d8187c2929c8c6487f1db07ab173e..88514e416b17e3e53b561e50679fea7af70a9a3b 100644 (file)
@@ -7,6 +7,11 @@ const interpolators = {
   boolean(from, to, factor) {
     return factor > 0.5 ? to : from;
   },
+  /**
+   * @param {string} from
+   * @param {string} to
+   * @param {number} factor
+   */
   color(from, to, factor) {
     const c0 = helpersColor(from || transparent);
     const c1 = c0.valid && helpersColor(to || transparent);
index d241ec8f31a5259da9c40fbc1fdf3707fcd77d2e..a825d24a70fa893a9b28bc3afd090fcfeb04291d 100644 (file)
@@ -1030,31 +1030,19 @@ export default class DatasetController {
     this.chart._dataChanges.push([this.index, ...args]);
   }
 
-  /**
-        * @private
-        */
   _onDataPush() {
     const count = arguments.length;
     this._sync(['_insertElements', this.getDataset().data.length - count, count]);
   }
 
-  /**
-        * @private
-        */
   _onDataPop() {
     this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);
   }
 
-  /**
-        * @private
-        */
   _onDataShift() {
     this._sync(['_removeElements', 0, 1]);
   }
 
-  /**
-        * @private
-        */
   _onDataSplice(start, count) {
     if (count) {
       this._sync(['_removeElements', start, count]);
@@ -1065,9 +1053,6 @@ export default class DatasetController {
     }
   }
 
-  /**
-        * @private
-        */
   _onDataUnshift() {
     this._sync(['_insertElements', 0, arguments.length]);
   }
index 42ca16738b3b8ce7a4a89c4b3dab0ee834edc147..7996330872a58f541b2c112896080062cb823d81 100644 (file)
@@ -4,6 +4,7 @@ import {PI, _isBetween, _limitValue} from '../helpers/helpers.math';
 import {_readValueToProps} from '../helpers/helpers.options';
 
 /** @typedef {{ x: number, y: number, startAngle: number, endAngle: number, innerRadius: number, outerRadius: number, circumference: number }} ArcProps */
+/** @typedef {import('../../types/geometric').Point} Point */
 
 function clipArc(ctx, element, endAngle) {
   const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;
@@ -310,7 +311,7 @@ export default class ArcElement extends Element {
         * @param {boolean} [useFinalPosition]
         */
   inRange(chartX, chartY, useFinalPosition) {
-    const point = this.getProps(['x', 'y'], useFinalPosition);
+    const point = /** @type {Point} */ (this.getProps(['x', 'y'], useFinalPosition));
     const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});
     const {startAngle, endAngle, innerRadius, outerRadius, circumference} = /** @type {ArcProps} */ (this.getProps([
       'startAngle',
similarity index 62%
rename from src/helpers/helpers.collection.js
rename to src/helpers/helpers.collection.ts
index 8e77b06aa81bd9fc877cf2956cb107259f7f1bff..4f925b4dcf069b39fd2dc2e7879036b4ff956a8f 100644 (file)
@@ -2,16 +2,30 @@ import {_capitalize} from './helpers.core';
 
 /**
  * Binary search
- * @param {array} table - the table search. must be sorted!
- * @param {number} value - value to find
- * @param {function} [cmp]
+ * @param table - the table search. must be sorted!
+ * @param value - value to find
+ * @param cmp
  * @private
  */
-export function _lookup(table, value, cmp) {
+export function _lookup(
+  table: number[],
+  value: number,
+  cmp?: (value: number) => boolean
+): {lo: number, hi: number};
+export function _lookup<T>(
+  table: T[],
+  value: number,
+  cmp: (value: number) => boolean
+): {lo: number, hi: number};
+export function _lookup(
+  table: unknown[],
+  value: number,
+  cmp?: (value: number) => boolean
+) {
   cmp = cmp || ((index) => table[index] < value);
   let hi = table.length - 1;
   let lo = 0;
-  let mid;
+  let mid: number;
 
   while (hi - lo > 1) {
     mid = (lo + hi) >> 1;
@@ -27,13 +41,18 @@ export function _lookup(table, value, cmp) {
 
 /**
  * Binary search
- * @param {array} table - the table search. must be sorted!
- * @param {string} key - property name for the value in each entry
- * @param {number} value - value to find
- * @param {boolean} [last] - lookup last index
+ * @param table - the table search. must be sorted!
+ * @param key - property name for the value in each entry
+ * @param value - value to find
+ * @param last - lookup last index
  * @private
  */
-export const _lookupByKey = (table, key, value, last) =>
+export const _lookupByKey = (
+  table: Record<string, number>[],
+  key: string,
+  value: number,
+  last?: boolean
+) =>
   _lookup(table, value, last
     ? index => {
       const ti = table[index][key];
@@ -43,22 +62,26 @@ export const _lookupByKey = (table, key, value, last) =>
 
 /**
  * Reverse binary search
- * @param {array} table - the table search. must be sorted!
- * @param {string} key - property name for the value in each entry
- * @param {number} value - value to find
+ * @param table - the table search. must be sorted!
+ * @param key - property name for the value in each entry
+ * @param value - value to find
  * @private
  */
-export const _rlookupByKey = (table, key, value) =>
+export const _rlookupByKey = (
+  table: Record<string, number>[],
+  key: string,
+  value: number
+) =>
   _lookup(table, value, index => table[index][key] >= value);
 
 /**
  * Return subset of `values` between `min` and `max` inclusive.
  * Values are assumed to be in sorted order.
- * @param {number[]} values - sorted array of values
- * @param {number} min - min value
- * @param {number} max - max value
+ * @param values - sorted array of values
+ * @param min - min value
+ * @param max - max value
  */
-export function _filterBetween(values, min, max) {
+export function _filterBetween(values: number[], min: number, max: number) {
   let start = 0;
   let end = values.length;
 
@@ -74,13 +97,22 @@ export function _filterBetween(values, min, max) {
     : values;
 }
 
-const arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];
+const arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;
+
+export interface ArrayListener<T> {
+  _onDataPush?(...item: T[]): void;
+  _onDataPop?(): void;
+  _onDataShift?(): void;
+  _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;
+  _onDataUnshift?(...item: T[]): void;
+}
 
 /**
  * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',
  * 'unshift') and notify the listener AFTER the array has been altered. Listeners are
  * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.
  */
+export function listenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;
 export function listenArrayEvents(array, listener) {
   if (array._chartjs) {
     array._chartjs.listeners.push(listener);
@@ -122,6 +154,7 @@ export function listenArrayEvents(array, listener) {
  * Removes the given array event listener and cleanup extra attached properties (such as
  * the _chartjs stub and overridden methods) if array doesn't have any more listeners.
  */
+export function unlistenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;
 export function unlistenArrayEvents(array, listener) {
   const stub = array._chartjs;
   if (!stub) {
@@ -146,11 +179,11 @@ export function unlistenArrayEvents(array, listener) {
 }
 
 /**
- * @param {Array} items
+ * @param items
  */
-export function _arrayUnique(items) {
-  const set = new Set();
-  let i, ilen;
+export function _arrayUnique<T>(items: T[]) {
+  const set = new Set<T>();
+  let i: number, ilen: number;
 
   for (i = 0, ilen = items.length; i < ilen; ++i) {
     set.add(items[i]);
diff --git a/src/helpers/helpers.color.js b/src/helpers/helpers.color.js
deleted file mode 100644 (file)
index 9394751..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-import colorLib from '@kurkle/color';
-
-export function isPatternOrGradient(value) {
-  if (value && typeof value === 'object') {
-    const type = value.toString();
-    return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';
-  }
-
-  return false;
-}
-
-export function color(value) {
-  return isPatternOrGradient(value) ? value : colorLib(value);
-}
-
-export function getHoverColor(value) {
-  return isPatternOrGradient(value)
-    ? value
-    : colorLib(value).saturate(0.5).darken(0.1).hexString();
-}
diff --git a/src/helpers/helpers.color.ts b/src/helpers/helpers.color.ts
new file mode 100644 (file)
index 0000000..f2fa5c5
--- /dev/null
@@ -0,0 +1,32 @@
+import colorLib, {Color} from '@kurkle/color';
+
+export function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {
+  if (value && typeof value === 'object') {
+    const type = value.toString();
+    return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';
+  }
+
+  return false;
+}
+
+export function color(value: CanvasGradient): CanvasGradient;
+export function color(value: CanvasPattern): CanvasPattern;
+export function color(
+  value:
+  | string
+  | { r: number; g: number; b: number; a: number }
+  | [number, number, number]
+  | [number, number, number, number]
+): Color;
+export function color(value) {
+  return isPatternOrGradient(value) ? value : colorLib(value);
+}
+
+export function getHoverColor(value: CanvasGradient): CanvasGradient;
+export function getHoverColor(value: CanvasPattern): CanvasPattern;
+export function getHoverColor(value: string): string;
+export function getHoverColor(value) {
+  return isPatternOrGradient(value)
+    ? value
+    : colorLib(value).saturate(0.5).darken(0.1).hexString();
+}
diff --git a/src/helpers/helpers.interpolation.js b/src/helpers/helpers.interpolation.js
deleted file mode 100644 (file)
index 563b0d3..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * @private
- */
-export function _pointInLine(p1, p2, t, mode) { // eslint-disable-line no-unused-vars
-  return {
-    x: p1.x + t * (p2.x - p1.x),
-    y: p1.y + t * (p2.y - p1.y)
-  };
-}
-
-/**
- * @private
- */
-export function _steppedInterpolation(p1, p2, t, mode) {
-  return {
-    x: p1.x + t * (p2.x - p1.x),
-    y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y
-    : mode === 'after' ? t < 1 ? p1.y : p2.y
-    : t > 0 ? p2.y : p1.y
-  };
-}
-
-/**
- * @private
- */
-export function _bezierInterpolation(p1, p2, t, mode) { // eslint-disable-line no-unused-vars
-  const cp1 = {x: p1.cp2x, y: p1.cp2y};
-  const cp2 = {x: p2.cp1x, y: p2.cp1y};
-  const a = _pointInLine(p1, cp1, t);
-  const b = _pointInLine(cp1, cp2, t);
-  const c = _pointInLine(cp2, p2, t);
-  const d = _pointInLine(a, b, t);
-  const e = _pointInLine(b, c, t);
-  return _pointInLine(d, e, t);
-}
diff --git a/src/helpers/helpers.interpolation.ts b/src/helpers/helpers.interpolation.ts
new file mode 100644 (file)
index 0000000..9d86528
--- /dev/null
@@ -0,0 +1,42 @@
+import type {Point} from '../../types/geometric';
+import type {MonotoneSplinePoint} from '../../types/helpers';
+
+/**
+ * @private
+ */
+export function _pointInLine(p1: Point, p2: Point, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars
+  return {
+    x: p1.x + t * (p2.x - p1.x),
+    y: p1.y + t * (p2.y - p1.y)
+  };
+}
+
+/**
+ * @private
+ */
+export function _steppedInterpolation(
+  p1: Point,
+  p2: Point,
+  t: number, mode: 'middle' | 'after' | unknown
+) {
+  return {
+    x: p1.x + t * (p2.x - p1.x),
+    y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y
+      : mode === 'after' ? t < 1 ? p1.y : p2.y
+        : t > 0 ? p2.y : p1.y
+  };
+}
+
+/**
+ * @private
+ */
+export function _bezierInterpolation(p1: MonotoneSplinePoint, p2: MonotoneSplinePoint, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars
+  const cp1 = {x: p1.cp2x, y: p1.cp2y};
+  const cp2 = {x: p2.cp1x, y: p2.cp1y};
+  const a = _pointInLine(p1, cp1, t);
+  const b = _pointInLine(cp1, cp2, t);
+  const c = _pointInLine(cp2, p2, t);
+  const d = _pointInLine(a, b, t);
+  const e = _pointInLine(b, c, t);
+  return _pointInLine(d, e, t);
+}
similarity index 58%
rename from src/helpers/helpers.intl.js
rename to src/helpers/helpers.intl.ts
index 83374f971afc396f6f84e1bff138b9356f917166..24bd4eec359251ede08008e1de55d7fd5544b3cf 100644 (file)
@@ -1,7 +1,7 @@
 
-const intlCache = new Map();
+const intlCache = new Map<string, Intl.NumberFormat>();
 
-function getNumberFormat(locale, options) {
+function getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {
   options = options || {};
   const cacheKey = locale + JSON.stringify(options);
   let formatter = intlCache.get(cacheKey);
@@ -12,6 +12,6 @@ function getNumberFormat(locale, options) {
   return formatter;
 }
 
-export function formatNumber(num, locale, options) {
+export function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {
   return getNumberFormat(locale, options).format(num);
 }
similarity index 71%
rename from src/helpers/helpers.math.js
rename to src/helpers/helpers.math.ts
index 1b1e4ff53552abb9180101e9ef4d40a452a1011c..b9de9eed5acf472061a8a2b90c15471b3c01a7d6 100644 (file)
@@ -1,3 +1,4 @@
+import type {Point} from '../../types/geometric';
 import {isFinite as isFiniteNumber} from './helpers.core';
 
 /**
@@ -17,11 +18,14 @@ export const TWO_THIRDS_PI = PI * 2 / 3;
 export const log10 = Math.log10;
 export const sign = Math.sign;
 
+export function almostEquals(x: number, y: number, epsilon: number) {
+  return Math.abs(x - y) < epsilon;
+}
+
 /**
  * Implementation of the nice number algorithm used in determining where axis labels will go
- * @return {number}
  */
-export function niceNum(range) {
+export function niceNum(range: number) {
   const roundedRange = Math.round(range);
   range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;
   const niceRange = Math.pow(10, Math.floor(log10(range)));
@@ -34,10 +38,10 @@ export function niceNum(range) {
  * Returns an array of factors sorted from 1 to sqrt(value)
  * @private
  */
-export function _factorize(value) {
-  const result = [];
+export function _factorize(value: number) {
+  const result: number[] = [];
   const sqrt = Math.sqrt(value);
-  let i;
+  let i: number;
 
   for (i = 1; i < sqrt; i++) {
     if (value % i === 0) {
@@ -53,15 +57,11 @@ export function _factorize(value) {
   return result;
 }
 
-export function isNumber(n) {
-  return !isNaN(parseFloat(n)) && isFinite(n);
-}
-
-export function almostEquals(x, y, epsilon) {
-  return Math.abs(x - y) < epsilon;
+export function isNumber(n: unknown): n is number {
+  return !isNaN(parseFloat(n as string)) && isFinite(n as number);
 }
 
-export function almostWhole(x, epsilon) {
+export function almostWhole(x: number, epsilon: number) {
   const rounded = Math.round(x);
   return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);
 }
@@ -69,8 +69,12 @@ export function almostWhole(x, epsilon) {
 /**
  * @private
  */
-export function _setMinAndMaxByKey(array, target, property) {
-  let i, ilen, value;
+export function _setMinAndMaxByKey(
+  array: Record<string, number>[],
+  target: { min: number, max: number },
+  property: string
+) {
+  let i: number, ilen: number, value: number;
 
   for (i = 0, ilen = array.length; i < ilen; i++) {
     value = array[i][property];
@@ -81,22 +85,22 @@ export function _setMinAndMaxByKey(array, target, property) {
   }
 }
 
-export function toRadians(degrees) {
+export function toRadians(degrees: number) {
   return degrees * (PI / 180);
 }
 
-export function toDegrees(radians) {
+export function toDegrees(radians: number) {
   return radians * (180 / PI);
 }
 
 /**
  * Returns the number of decimal places
  * i.e. the number of digits after the decimal point, of the value of this Number.
- * @param {number} x - A number.
- * @returns {number} The number of decimal places.
+ * @param x - A number.
+ * @returns The number of decimal places.
  * @private
  */
-export function _decimalPlaces(x) {
+export function _decimalPlaces(x: number) {
   if (!isFiniteNumber(x)) {
     return;
   }
@@ -110,7 +114,10 @@ export function _decimalPlaces(x) {
 }
 
 // Gets the angle from vertical upright to the point about a centre.
-export function getAngleFromPoint(centrePoint, anglePoint) {
+export function getAngleFromPoint(
+  centrePoint: Point,
+  anglePoint: Point
+) {
   const distanceFromXCenter = anglePoint.x - centrePoint.x;
   const distanceFromYCenter = anglePoint.y - centrePoint.y;
   const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);
@@ -127,7 +134,7 @@ export function getAngleFromPoint(centrePoint, anglePoint) {
   };
 }
 
-export function distanceBetweenPoints(pt1, pt2) {
+export function distanceBetweenPoints(pt1: Point, pt2: Point) {
   return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));
 }
 
@@ -135,7 +142,7 @@ export function distanceBetweenPoints(pt1, pt2) {
  * Shortest distance between angles, in either direction.
  * @private
  */
-export function _angleDiff(a, b) {
+export function _angleDiff(a: number, b: number) {
   return (a - b + PITAU) % TAU - PI;
 }
 
@@ -143,14 +150,14 @@ export function _angleDiff(a, b) {
  * Normalize angle to be between 0 and 2*PI
  * @private
  */
-export function _normalizeAngle(a) {
+export function _normalizeAngle(a: number) {
   return (a % TAU + TAU) % TAU;
 }
 
 /**
  * @private
  */
-export function _angleBetween(angle, start, end, sameAngleIsFullCircle) {
+export function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {
   const a = _normalizeAngle(angle);
   const s = _normalizeAngle(start);
   const e = _normalizeAngle(end);
@@ -164,12 +171,12 @@ export function _angleBetween(angle, start, end, sameAngleIsFullCircle) {
 
 /**
  * Limit `value` between `min` and `max`
- * @param {number} value
- * @param {number} min
- * @param {number} max
+ * @param value
+ * @param min
+ * @param max
  * @private
  */
-export function _limitValue(value, min, max) {
+export function _limitValue(value: number, min: number, max: number) {
   return Math.max(min, Math.min(max, value));
 }
 
@@ -177,17 +184,17 @@ export function _limitValue(value, min, max) {
  * @param {number} value
  * @private
  */
-export function _int16Range(value) {
+export function _int16Range(value: number) {
   return _limitValue(value, -32768, 32767);
 }
 
 /**
- * @param {number} value
- * @param {number} start
- * @param {number} end
- * @param {number} [epsilon]
+ * @param value
+ * @param start
+ * @param end
+ * @param [epsilon]
  * @private
  */
-export function _isBetween(value, start, end, epsilon = 1e-6) {
+export function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {
   return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;
 }
similarity index 52%
rename from src/helpers/helpers.rtl.js
rename to src/helpers/helpers.rtl.ts
index eb11224f8cb3bc83af8c5378adb8f74361e0188b..121c6e7f540330124367de986e7f41a34444390a 100644 (file)
@@ -1,4 +1,12 @@
-const getRightToLeftAdapter = function(rectX, width) {
+export interface RTLAdapter {
+  x(x: number): number;
+  setWidth(w: number): void;
+  textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';
+  xPlus(x: number, value: number): number;
+  leftForLtr(x: number, itemWidth: number): number;
+}
+
+const getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {
   return {
     x(x) {
       return rectX + rectX + width - x;
@@ -21,7 +29,7 @@ const getRightToLeftAdapter = function(rectX, width) {
   };
 };
 
-const getLeftToRightAdapter = function() {
+const getLeftToRightAdapter = function(): RTLAdapter {
   return {
     x(x) {
       return x;
@@ -34,18 +42,18 @@ const getLeftToRightAdapter = function() {
     xPlus(x, value) {
       return x + value;
     },
-    leftForLtr(x, _itemWidth) { // eslint-disable-line no-unused-vars
+    leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars
       return x;
     },
   };
 };
 
-export function getRtlAdapter(rtl, rectX, width) {
+export function getRtlAdapter(rtl: boolean, rectX: number, width: number) {
   return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();
 }
 
-export function overrideTextDirection(ctx, direction) {
-  let style, original;
+export function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {
+  let style: CSSStyleDeclaration, original: [string, string];
   if (direction === 'ltr' || direction === 'rtl') {
     style = ctx.canvas.style;
     original = [
@@ -54,13 +62,13 @@ export function overrideTextDirection(ctx, direction) {
     ];
 
     style.setProperty('direction', direction, 'important');
-    ctx.prevTextDirection = original;
+    (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;
   }
 }
 
-export function restoreTextDirection(ctx, original) {
+export function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {
   if (original !== undefined) {
-    delete ctx.prevTextDirection;
+    delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;
     ctx.canvas.style.setProperty('direction', original[0], original[1]);
   }
 }
index d69c088d69a0c29fe011f5915900a706f1d7b19b..81d586e4173925988944d506da3b411950010b25 100644 (file)
@@ -4,6 +4,12 @@
  */
 
 // export * from '.';
+export * from './helpers.color';
+export * from './helpers.collection';
 export * from './helpers.core';
 export * from './helpers.easing';
+export * from './helpers.interpolation';
+export * from './helpers.intl';
+export * from './helpers.math';
+export * from './helpers.rtl';
 export * from '../../types/helpers';
diff --git a/types/helpers/helpers.collection.d.ts b/types/helpers/helpers.collection.d.ts
deleted file mode 100644 (file)
index 6a51597..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-export interface ArrayListener<T> {
-  _onDataPush?(...item: T[]): void;
-  _onDataPop?(): void;
-  _onDataShift?(): void;
-  _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;
-  _onDataUnshift?(...item: T[]): void;
-}
-
-/**
- * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',
- * 'unshift') and notify the listener AFTER the array has been altered. Listeners are
- * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.
- */
-export function listenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;
-
-/**
- * Removes the given array event listener and cleanup extra attached properties (such as
- * the _chartjs stub and overridden methods) if array doesn't have any more listeners.
- */
-export function unlistenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;
diff --git a/types/helpers/helpers.color.d.ts b/types/helpers/helpers.color.d.ts
deleted file mode 100644 (file)
index 556f8f4..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-import { AnyObject } from '../basic';
-
-export function color(value: CanvasGradient): CanvasGradient;
-export function color(value: CanvasPattern): CanvasPattern;
-export function color(
-  value:
-  | string
-  | { r: number; g: number; b: number; a: number }
-  | [number, number, number]
-  | [number, number, number, number]
-): ColorModel;
-
-export function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient;
-
-export interface ColorModel {
-  rgbString(): string;
-  hexString(): string;
-  hslString(): string;
-  rgb: { r: number; g: number; b: number; a: number };
-  valid: boolean;
-  mix(color: ColorModel, weight: number): this;
-  clone(): ColorModel;
-  alpha(a: number): ColorModel;
-  clearer(ration: number): ColorModel;
-  greyscale(): ColorModel;
-  opaquer(ratio: number): ColorModel;
-  negate(): ColorModel;
-  lighten(ratio: number): ColorModel;
-  darken(ratio: number): ColorModel;
-  saturate(ratio: number): ColorModel;
-  desaturate(ratio: number): ColorModel;
-  rotate(deg: number): this;
-}
-
-export function getHoverColor(value: CanvasGradient): CanvasGradient;
-export function getHoverColor(value: CanvasPattern): CanvasPattern;
-export function getHoverColor(value: string): string;
diff --git a/types/helpers/helpers.interpolation.d.ts b/types/helpers/helpers.interpolation.d.ts
deleted file mode 100644 (file)
index cb0ff5c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-export {};
diff --git a/types/helpers/helpers.intl.d.ts b/types/helpers/helpers.intl.d.ts
deleted file mode 100644 (file)
index 3a896f4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Format a number using a localized number formatter.
- * @param num The number to format
- * @param locale The locale to pass to the Intl.NumberFormat constructor
- * @param options Number format options
- */
-export function formatNumber(num: number, locale: string, options: Intl.NumberFormatOptions): string;
diff --git a/types/helpers/helpers.math.d.ts b/types/helpers/helpers.math.d.ts
deleted file mode 100644 (file)
index 63439d4..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-export function log10(x: number): number;
-export function isNumber(v: unknown): v is Number;
-export function almostEquals(x: number, y: number, epsilon: number): boolean;
-export function almostWhole(x: number, epsilon: number): number;
-export function sign(x: number): number;
-export function niceNum(range: number): number;
-export function toRadians(degrees: number): number;
-export function toDegrees(radians: number): number;
-/**
- * Gets the angle from vertical upright to the point about a centre.
- */
-export function getAngleFromPoint(
-  centrePoint: { x: number; y: number },
-  anglePoint: { x: number; y: number }
-): { angle: number; distance: number };
-
-export function distanceBetweenPoints(pt1: { x: number; y: number }, pt2: { x: number; y: number }): number;
diff --git a/types/helpers/helpers.rtl.d.ts b/types/helpers/helpers.rtl.d.ts
deleted file mode 100644 (file)
index ed0b924..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-export interface RTLAdapter {
-  x(x: number): number;
-  setWidth(w: number): void;
-  textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';
-  xPlus(x: number, value: number): number;
-  leftForLtr(x: number, itemWidth: number): number;
-}
-export function getRtlAdapter(rtl: boolean, rectX: number, width: number): RTLAdapter;
-
-export function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl'): void;
-
-export function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]): void;
index 98139076573c97fe9880202459df52e3149ee3c2..5db25e24e94cc7580549189cb7427bdbf8bc2b63 100644 (file)
@@ -1,13 +1,7 @@
 export * from './helpers.canvas';
-export * from './helpers.collection';
-export * from './helpers.color';
 export * from './helpers.curve';
 export * from './helpers.dom';
 export * from './helpers.extras';
-export * from './helpers.interpolation';
-export * from './helpers.intl';
-export * from './helpers.math';
 export * from './helpers.options';
 export * from './helpers.canvas';
-export * from './helpers.rtl';
 export * from './helpers.segment';