@visactor/vutils 0.18.6 → 0.18.7

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.
Files changed (43) hide show
  1. package/cjs/angle.d.ts +1 -0
  2. package/cjs/angle.js +9 -2
  3. package/cjs/angle.js.map +1 -1
  4. package/cjs/common/bisect.d.ts +6 -0
  5. package/cjs/common/bisect.js +36 -3
  6. package/cjs/common/bisect.js.map +1 -1
  7. package/cjs/common/index.d.ts +1 -1
  8. package/cjs/common/index.js +17 -2
  9. package/cjs/common/index.js.map +1 -1
  10. package/cjs/dom.d.ts +1 -0
  11. package/cjs/dom.js +11 -2
  12. package/cjs/dom.js.map +1 -1
  13. package/cjs/fmin/index.d.ts +0 -1
  14. package/cjs/fmin/index.js +1 -1
  15. package/cjs/fmin/index.js.map +1 -1
  16. package/cjs/graphics/algorithm/intersect.js +7 -10
  17. package/cjs/graphics/algorithm/intersect.js.map +1 -1
  18. package/dist/index.js +195 -152
  19. package/dist/index.min.js +1 -1
  20. package/es/angle.d.ts +1 -0
  21. package/es/angle.js +6 -0
  22. package/es/angle.js.map +1 -1
  23. package/es/common/bisect.d.ts +6 -0
  24. package/es/common/bisect.js +31 -0
  25. package/es/common/bisect.js.map +1 -1
  26. package/es/common/index.d.ts +1 -1
  27. package/es/common/index.js +1 -1
  28. package/es/common/index.js.map +1 -1
  29. package/es/dom.d.ts +1 -0
  30. package/es/dom.js +9 -0
  31. package/es/dom.js.map +1 -1
  32. package/es/fmin/index.d.ts +0 -1
  33. package/es/fmin/index.js +0 -2
  34. package/es/fmin/index.js.map +1 -1
  35. package/es/graphics/algorithm/intersect.js +7 -9
  36. package/es/graphics/algorithm/intersect.js.map +1 -1
  37. package/package.json +3 -3
  38. package/cjs/fmin/bisect.d.ts +0 -1
  39. package/cjs/fmin/bisect.js +0 -27
  40. package/cjs/fmin/bisect.js.map +0 -1
  41. package/es/fmin/bisect.d.ts +0 -1
  42. package/es/fmin/bisect.js +0 -19
  43. package/es/fmin/bisect.js.map +0 -1
package/dist/index.js CHANGED
@@ -974,6 +974,118 @@
974
974
  return value0 + (value1 - value0) * (i - i0);
975
975
  }
976
976
 
977
+ const hasConsole = typeof console !== 'undefined';
978
+ function log(method, level, input) {
979
+ const args = [level].concat([].slice.call(input));
980
+ if (hasConsole) {
981
+ console[method].apply(console, args);
982
+ }
983
+ }
984
+ exports.LoggerLevel = void 0;
985
+ (function (LoggerLevel) {
986
+ LoggerLevel[LoggerLevel["None"] = 0] = "None";
987
+ LoggerLevel[LoggerLevel["Error"] = 1] = "Error";
988
+ LoggerLevel[LoggerLevel["Warn"] = 2] = "Warn";
989
+ LoggerLevel[LoggerLevel["Info"] = 3] = "Info";
990
+ LoggerLevel[LoggerLevel["Debug"] = 4] = "Debug";
991
+ })(exports.LoggerLevel || (exports.LoggerLevel = {}));
992
+ class Logger {
993
+ static getInstance(level, method) {
994
+ if (Logger._instance && isNumber(level)) {
995
+ Logger._instance.level(level);
996
+ }
997
+ else if (!Logger._instance) {
998
+ Logger._instance = new Logger(level, method);
999
+ }
1000
+ return Logger._instance;
1001
+ }
1002
+ static setInstance(logger) {
1003
+ return (Logger._instance = logger);
1004
+ }
1005
+ static setInstanceLevel(level) {
1006
+ if (Logger._instance) {
1007
+ Logger._instance.level(level);
1008
+ }
1009
+ else {
1010
+ Logger._instance = new Logger(level);
1011
+ }
1012
+ }
1013
+ static clearInstance() {
1014
+ Logger._instance = null;
1015
+ }
1016
+ constructor(level = exports.LoggerLevel.None, method) {
1017
+ this._onErrorHandler = [];
1018
+ this._level = level;
1019
+ this._method = method;
1020
+ }
1021
+ addErrorHandler(handler) {
1022
+ if (this._onErrorHandler.find(h => h === handler)) {
1023
+ return;
1024
+ }
1025
+ this._onErrorHandler.push(handler);
1026
+ }
1027
+ removeErrorHandler(handler) {
1028
+ const index = this._onErrorHandler.findIndex(h => h === handler);
1029
+ if (index < 0) {
1030
+ return;
1031
+ }
1032
+ this._onErrorHandler.splice(index, 1);
1033
+ }
1034
+ callErrorHandler(...args) {
1035
+ this._onErrorHandler.forEach(h => h(...args));
1036
+ }
1037
+ canLogInfo() {
1038
+ return this._level >= exports.LoggerLevel.Info;
1039
+ }
1040
+ canLogDebug() {
1041
+ return this._level >= exports.LoggerLevel.Debug;
1042
+ }
1043
+ canLogError() {
1044
+ return this._level >= exports.LoggerLevel.Error;
1045
+ }
1046
+ canLogWarn() {
1047
+ return this._level >= exports.LoggerLevel.Warn;
1048
+ }
1049
+ level(levelValue) {
1050
+ if (arguments.length) {
1051
+ this._level = +levelValue;
1052
+ return this;
1053
+ }
1054
+ return this._level;
1055
+ }
1056
+ error(...args) {
1057
+ var _a;
1058
+ if (this._level >= exports.LoggerLevel.Error) {
1059
+ if (this._onErrorHandler.length) {
1060
+ this.callErrorHandler(...args);
1061
+ }
1062
+ else {
1063
+ log((_a = this._method) !== null && _a !== void 0 ? _a : 'error', 'ERROR', args);
1064
+ }
1065
+ }
1066
+ return this;
1067
+ }
1068
+ warn(...args) {
1069
+ if (this._level >= exports.LoggerLevel.Warn) {
1070
+ log(this._method || 'warn', 'WARN', args);
1071
+ }
1072
+ return this;
1073
+ }
1074
+ info(...args) {
1075
+ if (this._level >= exports.LoggerLevel.Info) {
1076
+ log(this._method || 'log', 'INFO', args);
1077
+ }
1078
+ return this;
1079
+ }
1080
+ debug(...args) {
1081
+ if (this._level >= exports.LoggerLevel.Debug) {
1082
+ log(this._method || 'log', 'DEBUG', args);
1083
+ }
1084
+ return this;
1085
+ }
1086
+ }
1087
+ Logger._instance = null;
1088
+
977
1089
  function bisect(a, x, lo = 0, hi) {
978
1090
  if (isNil(hi)) {
979
1091
  hi = a.length;
@@ -989,6 +1101,54 @@
989
1101
  }
990
1102
  return lo;
991
1103
  }
1104
+ function findZeroOfFunction(f, a, b, parameters) {
1105
+ var _a, _b;
1106
+ const maxIterations = (_a = parameters === null || parameters === void 0 ? void 0 : parameters.maxIterations) !== null && _a !== void 0 ? _a : 100;
1107
+ const tolerance = (_b = parameters === null || parameters === void 0 ? void 0 : parameters.tolerance) !== null && _b !== void 0 ? _b : 1e-10;
1108
+ const fA = f(a);
1109
+ const fB = f(b);
1110
+ let delta = b - a;
1111
+ if (fA * fB > 0) {
1112
+ const logger = Logger.getInstance();
1113
+ logger.error('Initial bisect points must have opposite signs');
1114
+ return NaN;
1115
+ }
1116
+ if (fA === 0) {
1117
+ return a;
1118
+ }
1119
+ if (fB === 0) {
1120
+ return b;
1121
+ }
1122
+ for (let i = 0; i < maxIterations; ++i) {
1123
+ delta /= 2;
1124
+ const mid = a + delta;
1125
+ const fMid = f(mid);
1126
+ if (fMid * fA >= 0) {
1127
+ a = mid;
1128
+ }
1129
+ if (Math.abs(delta) < tolerance || fMid === 0) {
1130
+ return mid;
1131
+ }
1132
+ }
1133
+ return a + delta;
1134
+ }
1135
+ const binaryFuzzySearch = (arr, compareFn) => {
1136
+ return binaryFuzzySearchInNumberRange(0, arr.length, value => compareFn(arr[value]));
1137
+ };
1138
+ const binaryFuzzySearchInNumberRange = (x1, x2, compareFn) => {
1139
+ let left = x1;
1140
+ let right = x2;
1141
+ while (left < right) {
1142
+ const mid = Math.floor((left + right) / 2);
1143
+ if (compareFn(mid) >= 0) {
1144
+ right = mid;
1145
+ }
1146
+ else {
1147
+ left = mid + 1;
1148
+ }
1149
+ }
1150
+ return left;
1151
+ };
992
1152
 
993
1153
  function variance(values, valueof) {
994
1154
  let count = 0;
@@ -2071,6 +2231,15 @@
2071
2231
  function getAngleByPoint(center, point) {
2072
2232
  return Math.atan2(point.y - center.y, point.x - center.x);
2073
2233
  }
2234
+ function normalizeAngle(angle) {
2235
+ while (angle < 0) {
2236
+ angle += Math.PI * 2;
2237
+ }
2238
+ while (angle >= Math.PI * 2) {
2239
+ angle -= Math.PI * 2;
2240
+ }
2241
+ return angle;
2242
+ }
2074
2243
 
2075
2244
  class Matrix {
2076
2245
  constructor(a = 1, b = 0, c = 0, d = 1, e = 0, f = 0) {
@@ -3167,9 +3336,6 @@
3167
3336
  y: (x - origin.x) * Math.sin(deg) + (origin.y - y) * Math.cos(deg) + origin.y
3168
3337
  };
3169
3338
  }
3170
- function toDeg(angle) {
3171
- return (angle / 180) * Math.PI;
3172
- }
3173
3339
  function getCenterPoint(box) {
3174
3340
  return {
3175
3341
  x: (box.x1 + box.x2) / 2,
@@ -3177,7 +3343,7 @@
3177
3343
  };
3178
3344
  }
3179
3345
  function toRect(box, isDeg) {
3180
- const deg = isDeg ? box.angle : toDeg(box.angle);
3346
+ const deg = isDeg ? box.angle : degreeToRadian(box.angle);
3181
3347
  const cp = getCenterPoint(box);
3182
3348
  return [
3183
3349
  rotate({
@@ -3241,10 +3407,10 @@
3241
3407
  const BC = vector(rect1[1], rect1[2]);
3242
3408
  const A1B1 = vector(rect2[0], rect2[1]);
3243
3409
  const B1C1 = vector(rect2[1], rect2[2]);
3244
- const deg11 = isDeg ? box1.angle : toDeg(box1.angle);
3245
- let deg12 = isDeg ? box1.angle + halfPi : toDeg(90 - box1.angle);
3246
- const deg21 = isDeg ? box2.angle : toDeg(box2.angle);
3247
- let deg22 = isDeg ? box2.angle + halfPi : toDeg(90 - box2.angle);
3410
+ const deg11 = isDeg ? box1.angle : degreeToRadian(box1.angle);
3411
+ let deg12 = isDeg ? box1.angle + halfPi : degreeToRadian(90 - box1.angle);
3412
+ const deg21 = isDeg ? box2.angle : degreeToRadian(box2.angle);
3413
+ let deg22 = isDeg ? box2.angle + halfPi : degreeToRadian(90 - box2.angle);
3248
3414
  if (deg12 > pi2) {
3249
3415
  deg12 -= pi2;
3250
3416
  }
@@ -4168,118 +4334,6 @@
4168
4334
  return { x: anchorX, y: anchorY };
4169
4335
  };
4170
4336
 
4171
- const hasConsole = typeof console !== 'undefined';
4172
- function log(method, level, input) {
4173
- const args = [level].concat([].slice.call(input));
4174
- if (hasConsole) {
4175
- console[method].apply(console, args);
4176
- }
4177
- }
4178
- exports.LoggerLevel = void 0;
4179
- (function (LoggerLevel) {
4180
- LoggerLevel[LoggerLevel["None"] = 0] = "None";
4181
- LoggerLevel[LoggerLevel["Error"] = 1] = "Error";
4182
- LoggerLevel[LoggerLevel["Warn"] = 2] = "Warn";
4183
- LoggerLevel[LoggerLevel["Info"] = 3] = "Info";
4184
- LoggerLevel[LoggerLevel["Debug"] = 4] = "Debug";
4185
- })(exports.LoggerLevel || (exports.LoggerLevel = {}));
4186
- class Logger {
4187
- static getInstance(level, method) {
4188
- if (Logger._instance && isNumber(level)) {
4189
- Logger._instance.level(level);
4190
- }
4191
- else if (!Logger._instance) {
4192
- Logger._instance = new Logger(level, method);
4193
- }
4194
- return Logger._instance;
4195
- }
4196
- static setInstance(logger) {
4197
- return (Logger._instance = logger);
4198
- }
4199
- static setInstanceLevel(level) {
4200
- if (Logger._instance) {
4201
- Logger._instance.level(level);
4202
- }
4203
- else {
4204
- Logger._instance = new Logger(level);
4205
- }
4206
- }
4207
- static clearInstance() {
4208
- Logger._instance = null;
4209
- }
4210
- constructor(level = exports.LoggerLevel.None, method) {
4211
- this._onErrorHandler = [];
4212
- this._level = level;
4213
- this._method = method;
4214
- }
4215
- addErrorHandler(handler) {
4216
- if (this._onErrorHandler.find(h => h === handler)) {
4217
- return;
4218
- }
4219
- this._onErrorHandler.push(handler);
4220
- }
4221
- removeErrorHandler(handler) {
4222
- const index = this._onErrorHandler.findIndex(h => h === handler);
4223
- if (index < 0) {
4224
- return;
4225
- }
4226
- this._onErrorHandler.splice(index, 1);
4227
- }
4228
- callErrorHandler(...args) {
4229
- this._onErrorHandler.forEach(h => h(...args));
4230
- }
4231
- canLogInfo() {
4232
- return this._level >= exports.LoggerLevel.Info;
4233
- }
4234
- canLogDebug() {
4235
- return this._level >= exports.LoggerLevel.Debug;
4236
- }
4237
- canLogError() {
4238
- return this._level >= exports.LoggerLevel.Error;
4239
- }
4240
- canLogWarn() {
4241
- return this._level >= exports.LoggerLevel.Warn;
4242
- }
4243
- level(levelValue) {
4244
- if (arguments.length) {
4245
- this._level = +levelValue;
4246
- return this;
4247
- }
4248
- return this._level;
4249
- }
4250
- error(...args) {
4251
- var _a;
4252
- if (this._level >= exports.LoggerLevel.Error) {
4253
- if (this._onErrorHandler.length) {
4254
- this.callErrorHandler(...args);
4255
- }
4256
- else {
4257
- log((_a = this._method) !== null && _a !== void 0 ? _a : 'error', 'ERROR', args);
4258
- }
4259
- }
4260
- return this;
4261
- }
4262
- warn(...args) {
4263
- if (this._level >= exports.LoggerLevel.Warn) {
4264
- log(this._method || 'warn', 'WARN', args);
4265
- }
4266
- return this;
4267
- }
4268
- info(...args) {
4269
- if (this._level >= exports.LoggerLevel.Info) {
4270
- log(this._method || 'log', 'INFO', args);
4271
- }
4272
- return this;
4273
- }
4274
- debug(...args) {
4275
- if (this._level >= exports.LoggerLevel.Debug) {
4276
- log(this._method || 'log', 'DEBUG', args);
4277
- }
4278
- return this;
4279
- }
4280
- }
4281
- Logger._instance = null;
4282
-
4283
4337
  function normalizePadding(padding) {
4284
4338
  if (isValidNumber(padding)) {
4285
4339
  return [padding, padding, padding, padding];
@@ -4788,6 +4842,23 @@
4788
4842
  const lowerCamelCaseToMiddle = (str) => {
4789
4843
  return str.replace(/([A-Z])/g, '-$1').toLowerCase();
4790
4844
  };
4845
+ function isHTMLElement(obj) {
4846
+ try {
4847
+ return obj instanceof Element;
4848
+ }
4849
+ catch (_a) {
4850
+ const htmlElementKeys = [
4851
+ 'children',
4852
+ 'innerHTML',
4853
+ 'classList',
4854
+ 'setAttribute',
4855
+ 'tagName',
4856
+ 'getBoundingClientRect'
4857
+ ];
4858
+ const keys = Object.keys(obj);
4859
+ return htmlElementKeys.every(key => keys.includes(key));
4860
+ }
4861
+ }
4791
4862
 
4792
4863
  /**
4793
4864
  * @module helpers
@@ -5965,38 +6036,6 @@
5965
6036
  return current;
5966
6037
  }
5967
6038
 
5968
- function findZeroOfFunction(f, a, b, parameters) {
5969
- parameters = parameters || {};
5970
- const maxIterations = parameters.maxIterations || 100;
5971
- const tolerance = parameters.tolerance || 1e-10;
5972
- const fA = f(a);
5973
- const fB = f(b);
5974
- let delta = b - a;
5975
- if (fA * fB > 0) {
5976
- const logger = Logger.getInstance();
5977
- logger.error('Initial bisect points must have opposite signs');
5978
- return NaN;
5979
- }
5980
- if (fA === 0) {
5981
- return a;
5982
- }
5983
- if (fB === 0) {
5984
- return b;
5985
- }
5986
- for (let i = 0; i < maxIterations; ++i) {
5987
- delta /= 2;
5988
- const mid = a + delta;
5989
- const fMid = f(mid);
5990
- if (fMid * fA >= 0) {
5991
- a = mid;
5992
- }
5993
- if (Math.abs(delta) < tolerance || fMid === 0) {
5994
- return mid;
5995
- }
5996
- }
5997
- return a + delta;
5998
- }
5999
-
6000
6039
  exports.AABBBounds = AABBBounds;
6001
6040
  exports.Bounds = Bounds;
6002
6041
  exports.Color = Color;
@@ -6036,6 +6075,8 @@
6036
6075
  exports.ascending = ascending;
6037
6076
  exports.asin = asin;
6038
6077
  exports.atan2 = atan2;
6078
+ exports.binaryFuzzySearch = binaryFuzzySearch;
6079
+ exports.binaryFuzzySearchInNumberRange = binaryFuzzySearchInNumberRange;
6039
6080
  exports.bisect = bisect;
6040
6081
  exports.calculateAnchorOfArc = calculateAnchorOfArc;
6041
6082
  exports.calculateAnchorOfBounds = calculateAnchorOfBounds;
@@ -6132,6 +6173,7 @@
6132
6173
  exports.isEqual = isEqual;
6133
6174
  exports.isFunction = isFunction;
6134
6175
  exports.isGreater = isGreater;
6176
+ exports.isHTMLElement = isHTMLElement;
6135
6177
  exports.isIntersect = isIntersect;
6136
6178
  exports.isLess = isLess;
6137
6179
  exports.isNil = isNil;
@@ -6189,6 +6231,7 @@
6189
6231
  exports.nelderMead = nelderMead;
6190
6232
  exports.norm2 = norm2;
6191
6233
  exports.normalTransform = normalTransform;
6234
+ exports.normalizeAngle = normalizeAngle;
6192
6235
  exports.normalizePadding = normalizePadding;
6193
6236
  exports.numberSpecifierReg = numberSpecifierReg;
6194
6237
  exports.pad = pad;