@visactor/vutils 0.19.5 → 0.19.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 (78) hide show
  1. package/README.md +5 -12
  2. package/cjs/common/ascending.js +2 -1
  3. package/cjs/common/extent.d.ts +1 -0
  4. package/cjs/common/extent.js +30 -0
  5. package/cjs/common/extent.js.map +1 -0
  6. package/cjs/common/field.d.ts +12 -0
  7. package/cjs/common/field.js +35 -0
  8. package/cjs/common/field.js.map +1 -0
  9. package/cjs/common/index.d.ts +5 -0
  10. package/cjs/common/index.js +3 -1
  11. package/cjs/common/index.js.map +1 -1
  12. package/cjs/common/isArrayLike.js +2 -1
  13. package/cjs/common/isNumber.js +1 -2
  14. package/cjs/common/isShallowEqual.js +2 -1
  15. package/cjs/common/isString.js +1 -1
  16. package/cjs/common/isType.js +1 -1
  17. package/cjs/common/isUndefined.js +1 -1
  18. package/cjs/common/isValid.js +1 -1
  19. package/cjs/common/isValidNumber.js +1 -1
  20. package/cjs/common/isValidUrl.js +1 -1
  21. package/cjs/common/lowerFirst.js +1 -1
  22. package/cjs/common/random.d.ts +2 -0
  23. package/cjs/common/random.js +18 -1
  24. package/cjs/common/random.js.map +1 -1
  25. package/cjs/common/regression-linear.d.ts +8 -0
  26. package/cjs/common/regression-linear.js +50 -0
  27. package/cjs/common/regression-linear.js.map +1 -0
  28. package/cjs/common/toPercent.d.ts +1 -0
  29. package/cjs/common/toPercent.js +17 -0
  30. package/cjs/common/toPercent.js.map +1 -0
  31. package/cjs/common/zero.d.ts +1 -0
  32. package/cjs/common/zero.js +10 -0
  33. package/cjs/common/zero.js.map +1 -0
  34. package/cjs/data-structure/bounds.js +1 -1
  35. package/cjs/data-structure/hashTable.js +1 -2
  36. package/cjs/data-structure/index.js +1 -1
  37. package/cjs/data-structure/matrix.js +1 -1
  38. package/cjs/data-structure/point.js +1 -1
  39. package/dist/index.js +145 -2
  40. package/dist/index.min.js +1 -1
  41. package/es/common/ascending.js +2 -1
  42. package/es/common/extent.d.ts +1 -0
  43. package/es/common/extent.js +21 -0
  44. package/es/common/extent.js.map +1 -0
  45. package/es/common/field.d.ts +12 -0
  46. package/es/common/field.js +23 -0
  47. package/es/common/field.js.map +1 -0
  48. package/es/common/index.d.ts +5 -0
  49. package/es/common/index.js +10 -0
  50. package/es/common/index.js.map +1 -1
  51. package/es/common/isArrayLike.js +2 -1
  52. package/es/common/isNumber.js +1 -2
  53. package/es/common/isShallowEqual.js +2 -1
  54. package/es/common/isString.js +1 -1
  55. package/es/common/isType.js +1 -1
  56. package/es/common/isUndefined.js +1 -1
  57. package/es/common/isValid.js +1 -1
  58. package/es/common/isValidNumber.js +1 -1
  59. package/es/common/isValidUrl.js +1 -1
  60. package/es/common/lowerFirst.js +1 -1
  61. package/es/common/random.d.ts +2 -0
  62. package/es/common/random.js +13 -0
  63. package/es/common/random.js.map +1 -1
  64. package/es/common/regression-linear.d.ts +8 -0
  65. package/es/common/regression-linear.js +35 -0
  66. package/es/common/regression-linear.js.map +1 -0
  67. package/es/common/toPercent.d.ts +1 -0
  68. package/es/common/toPercent.js +6 -0
  69. package/es/common/toPercent.js.map +1 -0
  70. package/es/common/zero.d.ts +1 -0
  71. package/es/common/zero.js +2 -0
  72. package/es/common/zero.js.map +1 -0
  73. package/es/data-structure/bounds.js +1 -1
  74. package/es/data-structure/hashTable.js +1 -2
  75. package/es/data-structure/index.js +1 -1
  76. package/es/data-structure/matrix.js +1 -1
  77. package/es/data-structure/point.js +1 -1
  78. package/package.json +6 -3
package/README.md CHANGED
@@ -1,33 +1,26 @@
1
- # @visactor/vutils
1
+ # @visactor/vlayouts
2
2
 
3
3
  ## Installation
4
4
 
5
- [npm package](https://www.npmjs.com/package/@visactor/vutils)
5
+ [npm package](https://www.npmjs.com/package/@visactor/vlayouts)
6
6
 
7
7
  ```bash
8
8
  // npm
9
- npm install @visactor/vutils
9
+ npm install @visactor/vlayouts
10
10
 
11
11
  // yarn
12
- yarn add @visactor/vutils
12
+ yarn add @visactor/vlayouts
13
13
  ```
14
14
 
15
15
  ##
16
16
 
17
- [More demos and detailed tutorials](https://visactor.io/vutil)
18
-
19
- # Related Links
20
-
21
- - [VGrammar](https://github.com/VisActor/VGrammar)
22
- - [VChart](https://visactor.io/vchart)
23
-
24
17
  # Contribution
25
18
 
26
19
  If you would like to contribute, please read the [Code of Conduct ](./CODE_OF_CONDUCT.md) 和 [ Guide](./CONTRIBUTING.zh-CN.md) first。
27
20
 
28
21
  Small streams converge to make great rivers and seas!
29
22
 
30
- <a href="https://github.com/visactor/vutil/graphs/contributors"><img src="https://contrib.rocks/image?repo=visactor/vutil" /></a>
23
+ <a href="https://github.com/visactor/vlayouts/graphs/contributors"><img src="https://contrib.rocks/image?repo=visactor/vlayouts" /></a>
31
24
 
32
25
  # License
33
26
 
@@ -6,4 +6,5 @@ function ascending(a, b) {
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: !0
9
- }), exports.ascending = void 0, exports.ascending = ascending;
9
+ }), exports.ascending = void 0, exports.ascending = ascending;
10
+ //# sourceMappingURL=ascending.js.map
@@ -0,0 +1 @@
1
+ export declare const extent: (array: any[], func?: (val: any) => number) => number[];
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ var __importDefault = this && this.__importDefault || function(mod) {
4
+ return mod && mod.__esModule ? mod : {
5
+ default: mod
6
+ };
7
+ };
8
+
9
+ Object.defineProperty(exports, "__esModule", {
10
+ value: !0
11
+ }), exports.extent = void 0;
12
+
13
+ const isFunction_1 = __importDefault(require("./isFunction")), isNil_1 = __importDefault(require("./isNil")), isNumber_1 = __importDefault(require("./isNumber")), extent = (array, func) => {
14
+ const valueGetter = (0, isFunction_1.default)(func) ? func : val => val;
15
+ let min, max;
16
+ if (array && array.length) {
17
+ const n = array.length;
18
+ for (let i = 0; i < n; i += 1) {
19
+ let value = valueGetter(array[i]);
20
+ (0, isNil_1.default)(value) || !(0, isNumber_1.default)(value = +value) || Number.isNaN(value) || ((0,
21
+ isNil_1.default)(min) ? (min = value, max = value) : (min = Math.min(min, value),
22
+ max = Math.max(max, value)));
23
+ }
24
+ return [ min, max ];
25
+ }
26
+ return [ min, max ];
27
+ };
28
+
29
+ exports.extent = extent;
30
+ //# sourceMappingURL=extent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/extent.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAsC;AACtC,oDAA4B;AAC5B,0DAAkC;AAK3B,MAAM,MAAM,GAAG,CAAC,KAAY,EAAE,IAA2B,EAAE,EAAE;IAClE,MAAM,WAAW,GAAG,IAAA,oBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC;IAChE,IAAI,GAAW,CAAC;IAChB,IAAI,GAAW,CAAC;IAEhB,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;QACzB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QAGvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YAC7B,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,IAAA,eAAK,EAAC,KAAK,CAAC,IAAI,IAAA,kBAAQ,EAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACvE,IAAI,IAAA,eAAK,EAAC,GAAG,CAAC,EAAE;oBACd,GAAG,GAAG,KAAK,CAAC;oBACZ,GAAG,GAAG,KAAK,CAAC;iBACb;qBAAM;oBACL,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC3B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAC5B;aACF;SACF;QAED,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACnB;IAED,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,CAAC,CAAC;AA1BW,QAAA,MAAM,UA0BjB","file":"extent.js","sourcesContent":["import isFunction from './isFunction';\nimport isNil from './isNil';\nimport isNumber from './isNumber';\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nexport const extent = (array: any[], func?: (val: any) => number) => {\n const valueGetter = isFunction(func) ? func : (val: any) => val;\n let min: number;\n let max: number;\n\n if (array && array.length) {\n const n = array.length;\n\n // find first valid value\n for (let i = 0; i < n; i += 1) {\n let value = valueGetter(array[i]);\n if (!isNil(value) && isNumber((value = +value)) && !Number.isNaN(value)) {\n if (isNil(min)) {\n min = value;\n max = value;\n } else {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n }\n\n return [min, max];\n }\n\n return [min, max];\n};\n"]}
@@ -0,0 +1,12 @@
1
+ export type FieldGetterFunction = (val: any) => any;
2
+ export type Getter = (path: string[]) => FieldGetterFunction;
3
+ export type FieldOption = {
4
+ field: string;
5
+ };
6
+ export type TagItemAttribute<T> = T | ((d?: any) => T);
7
+ export interface FieldGetterGeneratorOptions {
8
+ get?: Getter;
9
+ }
10
+ export declare const getter: (path: string[]) => any;
11
+ export declare const field: (fieldStr: string | string[] | FieldGetterFunction | FieldGetterFunction[], opt?: FieldGetterGeneratorOptions) => any;
12
+ export declare const simpleField: <T>(option: FieldOption | TagItemAttribute<T>) => (datum: any) => any;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var __importDefault = this && this.__importDefault || function(mod) {
4
+ return mod && mod.__esModule ? mod : {
5
+ default: mod
6
+ };
7
+ };
8
+
9
+ Object.defineProperty(exports, "__esModule", {
10
+ value: !0
11
+ }), exports.simpleField = exports.field = exports.getter = void 0;
12
+
13
+ const get_1 = __importDefault(require("./get")), isArray_1 = __importDefault(require("./isArray")), isFunction_1 = __importDefault(require("./isFunction")), getter = path => obj => (0,
14
+ get_1.default)(obj, path);
15
+
16
+ exports.getter = getter;
17
+
18
+ const fieldSingle = (fieldStr, opt = {}) => {
19
+ if ((0, isFunction_1.default)(fieldStr)) return fieldStr;
20
+ const path = [ fieldStr ];
21
+ return (opt && opt.get || exports.getter)(path);
22
+ }, field = (fieldStr, opt = {}) => {
23
+ if ((0, isArray_1.default)(fieldStr)) {
24
+ const funcs = fieldStr.map((entry => fieldSingle(entry, opt)));
25
+ return datum => funcs.map((func => func(datum)));
26
+ }
27
+ return fieldSingle(fieldStr, opt);
28
+ };
29
+
30
+ exports.field = field;
31
+
32
+ const simpleField = option => option ? "string" == typeof option || "number" == typeof option ? () => option : (0,
33
+ isFunction_1.default)(option) ? option : datum => datum[option.field] : null;
34
+
35
+ exports.simpleField = simpleField;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/field.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,wDAAgC;AAChC,8DAAsC;AAgB/B,MAAM,MAAM,GAAG,CAAC,IAAc,EAAO,EAAE;IAC5C,OAAO,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAA,aAAG,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC,CAAC;AAFW,QAAA,MAAM,UAEjB;AAEF,MAAM,WAAW,GAAG,CAAC,QAAsC,EAAE,MAAmC,EAAE,EAAE,EAAE;IACpG,IAAI,IAAA,oBAAU,EAAC,QAAQ,CAAC,EAAE;QACxB,OAAO,QAAQ,CAAC;KACjB;IAED,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAExB,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,cAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEK,MAAM,KAAK,GAAG,CACnB,QAAyE,EACzE,MAAmC,EAAE,EACrC,EAAE;IACF,IAAI,IAAA,iBAAO,EAAC,QAAQ,CAAC,EAAE;QACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAE7D,OAAO,CAAC,KAAU,EAAE,EAAE;YACpB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC;KACH;IAED,OAAO,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC,CAAC;AAbW,QAAA,KAAK,SAahB;AAKK,MAAM,WAAW,GAAG,CAAI,MAAyC,EAAE,EAAE;IAC1E,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC5D,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC;KACrB;SAAM,IAAI,IAAA,oBAAU,EAAC,MAAM,CAAC,EAAE;QAC7B,OAAO,MAA2B,CAAC;KACpC;IACD,OAAO,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAE,MAAsB,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC,CAAC;AAVW,QAAA,WAAW,eAUtB","file":"field.js","sourcesContent":["import get from './get';\nimport isArray from './isArray';\nimport isFunction from './isFunction';\n\n/** 获取字段值的函数 */\nexport type FieldGetterFunction = (val: any) => any;\n\n/** 根据字段路径,返回获取相应路径属性的函数 */\nexport type Getter = (path: string[]) => FieldGetterFunction;\n\nexport type FieldOption = { field: string };\nexport type TagItemAttribute<T> = T | ((d?: any) => T);\n\n/** field函数对应的参数 */\nexport interface FieldGetterGeneratorOptions {\n get?: Getter;\n}\n\nexport const getter = (path: string[]): any => {\n return (obj: any) => get(obj, path);\n};\n\nconst fieldSingle = (fieldStr: string | FieldGetterFunction, opt: FieldGetterGeneratorOptions = {}) => {\n if (isFunction(fieldStr)) {\n return fieldStr;\n }\n\n const path = [fieldStr];\n\n return ((opt && opt.get) || getter)(path);\n};\n\nexport const field = (\n fieldStr: string | string[] | FieldGetterFunction | FieldGetterFunction[],\n opt: FieldGetterGeneratorOptions = {}\n) => {\n if (isArray(fieldStr)) {\n const funcs = fieldStr.map(entry => fieldSingle(entry, opt));\n\n return (datum: any) => {\n return funcs.map(func => func(datum));\n };\n }\n\n return fieldSingle(fieldStr, opt);\n};\n\n/**\n * 取数逻辑\n */\nexport const simpleField = <T>(option: FieldOption | TagItemAttribute<T>) => {\n if (!option) {\n return null;\n }\n if (typeof option === 'string' || typeof option === 'number') {\n return () => option;\n } else if (isFunction(option)) {\n return option as (datum: any) => T;\n }\n return (datum: any) => datum[(option as FieldOption).field];\n};\n"]}
@@ -57,3 +57,8 @@ export { default as lowerFirst } from './lowerFirst';
57
57
  export { default as upperFirst } from './upperFirst';
58
58
  export { default as substitute } from './substitute';
59
59
  export * from './random';
60
+ export * from './field';
61
+ export * from './toPercent';
62
+ export * from './zero';
63
+ export * from './extent';
64
+ export * from './regression-linear';
@@ -519,5 +519,7 @@ Object.defineProperty(exports, "substitute", {
519
519
  get: function() {
520
520
  return __importDefault(substitute_1).default;
521
521
  }
522
- }), __exportStar(require("./random"), exports);
522
+ }), __exportStar(require("./random"), exports), __exportStar(require("./field"), exports),
523
+ __exportStar(require("./toPercent"), exports), __exportStar(require("./zero"), exports),
524
+ __exportStar(require("./extent"), exports), __exportStar(require("./regression-linear"), exports);
523
525
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// type check\nexport { default as isBoolean } from './isBoolean';\nexport { default as isFunction } from './isFunction';\nexport { default as isNil } from './isNil';\nexport { default as isNull } from './isNull';\nexport { default as isValid } from './isValid';\nexport { default as isObject } from './isObject';\nexport { default as isObjectLike } from './isObjectLike';\nexport { default as isPlainObject } from './isPlainObject';\nexport { default as isType } from './isType';\nexport { default as isUndefined } from './isUndefined';\nexport { default as isString } from './isString';\nexport { default as isArray } from './isArray';\nexport { default as isArrayLike } from './isArrayLike';\nexport { default as isDate } from './isDate';\nexport { default as isNumber } from './isNumber';\nexport { default as isNumeric } from './isNumeric';\nexport { default as isValidNumber } from './isValidNumber';\nexport { default as isValidUrl } from './isValidUrl';\nexport { default as isRegExp } from './isRegExp';\nexport { default as isBase64 } from './isBase64';\n\nexport { default as isEmpty } from './isEmpty';\n\n// object\nexport { default as get } from './get';\nexport { default as has } from './has';\nexport { default as clone } from './clone';\nexport { default as cloneDeep } from './cloneDeep';\nexport { default as merge, baseMerge } from './merge';\nexport { default as pick } from './pick';\nexport { default as pickWithout } from './pickWithout';\nexport { isEqual } from './isEqual';\nexport { isShallowEqual } from './isShallowEqual';\nexport * from './mixin';\n\n// array\nexport * from './array';\nexport { range } from './range';\nexport { ascending } from './ascending';\nexport * from './quantileSorted';\nexport { bisect, findZeroOfFunction, binaryFuzzySearch, binaryFuzzySearchInNumberRange } from './bisect';\nexport { deviation } from './deviation';\nexport { median } from './median';\nexport { variance } from './variance';\n\n// tick\nexport { tickStep } from './tickStep';\n\n// number\nexport * from './number';\n\n// function\nexport { default as constant } from './constant';\nexport { memoize } from './memoize';\n\n// pad\nexport { default as pad } from './pad';\nexport { default as truncate } from './truncate';\n\n// uuid\nexport { default as uuid } from './uuid';\n\n// clamp\nexport { default as clamp } from './clamp';\nexport { default as clampRange } from './clampRange';\nexport { clamper } from './clamper';\n\n// debounce & throttle\nexport { default as debounce } from './debounce';\nexport { default as throttle } from './throttle';\n\n// interpolate\nexport * from './interpolate';\n\n// type convert\nexport { toDate } from './toDate';\nexport { toNumber } from './toNumber';\nexport { toValidNumber } from './toValidNumber';\n\n// string\nexport { default as lowerFirst } from './lowerFirst';\nexport { default as upperFirst } from './upperFirst';\n\n// string format\nexport { default as substitute } from './substitute';\n\nexport * from './random';\n"]}
1
+ {"version":3,"sources":["../src/common/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// type check\nexport { default as isBoolean } from './isBoolean';\nexport { default as isFunction } from './isFunction';\nexport { default as isNil } from './isNil';\nexport { default as isNull } from './isNull';\nexport { default as isValid } from './isValid';\nexport { default as isObject } from './isObject';\nexport { default as isObjectLike } from './isObjectLike';\nexport { default as isPlainObject } from './isPlainObject';\nexport { default as isType } from './isType';\nexport { default as isUndefined } from './isUndefined';\nexport { default as isString } from './isString';\nexport { default as isArray } from './isArray';\nexport { default as isArrayLike } from './isArrayLike';\nexport { default as isDate } from './isDate';\nexport { default as isNumber } from './isNumber';\nexport { default as isNumeric } from './isNumeric';\nexport { default as isValidNumber } from './isValidNumber';\nexport { default as isValidUrl } from './isValidUrl';\nexport { default as isRegExp } from './isRegExp';\nexport { default as isBase64 } from './isBase64';\n\nexport { default as isEmpty } from './isEmpty';\n\n// object\nexport { default as get } from './get';\nexport { default as has } from './has';\nexport { default as clone } from './clone';\nexport { default as cloneDeep } from './cloneDeep';\nexport { default as merge, baseMerge } from './merge';\nexport { default as pick } from './pick';\nexport { default as pickWithout } from './pickWithout';\nexport { isEqual } from './isEqual';\nexport { isShallowEqual } from './isShallowEqual';\nexport * from './mixin';\n\n// array\nexport * from './array';\nexport { range } from './range';\nexport { ascending } from './ascending';\nexport * from './quantileSorted';\nexport { bisect, findZeroOfFunction, binaryFuzzySearch, binaryFuzzySearchInNumberRange } from './bisect';\nexport { deviation } from './deviation';\nexport { median } from './median';\nexport { variance } from './variance';\n\n// tick\nexport { tickStep } from './tickStep';\n\n// number\nexport * from './number';\n\n// function\nexport { default as constant } from './constant';\nexport { memoize } from './memoize';\n\n// pad\nexport { default as pad } from './pad';\nexport { default as truncate } from './truncate';\n\n// uuid\nexport { default as uuid } from './uuid';\n\n// clamp\nexport { default as clamp } from './clamp';\nexport { default as clampRange } from './clampRange';\nexport { clamper } from './clamper';\n\n// debounce & throttle\nexport { default as debounce } from './debounce';\nexport { default as throttle } from './throttle';\n\n// interpolate\nexport * from './interpolate';\n\n// type convert\nexport { toDate } from './toDate';\nexport { toNumber } from './toNumber';\nexport { toValidNumber } from './toValidNumber';\n\n// string\nexport { default as lowerFirst } from './lowerFirst';\nexport { default as upperFirst } from './upperFirst';\n\n// string format\nexport { default as substitute } from './substitute';\n\nexport * from './random';\nexport * from './field';\nexport * from './toPercent';\nexport * from './zero';\nexport * from './extent';\nexport * from './regression-linear';\n"]}
@@ -8,4 +8,5 @@ const isArrayLike = function(value) {
8
8
  return null !== value && "function" != typeof value && Number.isFinite(value.length);
9
9
  };
10
10
 
11
- exports.default = isArrayLike;
11
+ exports.default = isArrayLike;
12
+ //# sourceMappingURL=isArrayLike.js.map
@@ -15,5 +15,4 @@ const isType_1 = __importDefault(require("./isType")), isNumber = (value, fuzzy
15
15
  return fuzzy ? "number" === type : "number" === type || (0, isType_1.default)(value, "Number");
16
16
  };
17
17
 
18
- exports.default = isNumber;
19
- //# sourceMappingURL=isNumber.js.map
18
+ exports.default = isNumber;
@@ -30,4 +30,5 @@ function isShallowEqual(objA, objB) {
30
30
  ret;
31
31
  }
32
32
 
33
- exports.isShallowEqual = isShallowEqual;
33
+ exports.isShallowEqual = isShallowEqual;
34
+ //# sourceMappingURL=isShallowEqual.js.map
@@ -16,4 +16,4 @@ const isType_1 = __importDefault(require("./isType")), isString = (value, fuzzy
16
16
  };
17
17
 
18
18
  exports.default = isString;
19
- //# sourceMappingURL=isString.js.map
19
+ //# sourceMappingURL=isString.js.map
@@ -7,4 +7,4 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const isType = (value, type) => Object.prototype.toString.call(value) === `[object ${type}]`;
8
8
 
9
9
  exports.default = isType;
10
- //# sourceMappingURL=isType.js.map
10
+ //# sourceMappingURL=isType.js.map
@@ -7,4 +7,4 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const isUndefined = value => void 0 === value;
8
8
 
9
9
  exports.default = isUndefined;
10
- //# sourceMappingURL=isUndefined.js.map
10
+ //# sourceMappingURL=isUndefined.js.map
@@ -7,4 +7,4 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const isValid = value => null != value;
8
8
 
9
9
  exports.default = isValid;
10
- //# sourceMappingURL=isValid.js.map
10
+ //# sourceMappingURL=isValid.js.map
@@ -14,4 +14,4 @@ const isNumber_1 = __importDefault(require("./isNumber")), isValidNumber = value
14
14
  isNumber_1.default)(value) && Number.isFinite(value);
15
15
 
16
16
  exports.default = isValidNumber;
17
- //# sourceMappingURL=isValidNumber.js.map
17
+ //# sourceMappingURL=isValidNumber.js.map
@@ -7,4 +7,4 @@ Object.defineProperty(exports, "__esModule", {
7
7
  const isValidUrl = value => new RegExp(/^(http(s)?:\/\/)\w+[^\s]+(\.[^\s]+){1,}$/).test(value);
8
8
 
9
9
  exports.isValidUrl = isValidUrl, exports.default = exports.isValidUrl;
10
- //# sourceMappingURL=isValidUrl.js.map
10
+ //# sourceMappingURL=isValidUrl.js.map
@@ -9,4 +9,4 @@ const lowerFirst = function(str) {
9
9
  };
10
10
 
11
11
  exports.default = lowerFirst;
12
- //# sourceMappingURL=lowerFirst.js.map
12
+ //# sourceMappingURL=lowerFirst.js.map
@@ -1 +1,3 @@
1
1
  export declare function seedRandom(seed: number): number;
2
+ export declare function randomLCG(initS?: number): () => number;
3
+ export declare const fakeRandom: () => () => number;
@@ -6,5 +6,22 @@ function seedRandom(seed) {
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: !0
9
- }), exports.seedRandom = void 0, exports.seedRandom = seedRandom;
9
+ }), exports.fakeRandom = exports.randomLCG = exports.seedRandom = void 0, exports.seedRandom = seedRandom;
10
+
11
+ const a = 1664525, c = 1013904223, m = 4294967296;
12
+
13
+ function randomLCG(initS = 1) {
14
+ let s = initS;
15
+ return () => (s = (a * s + c) % m) / m;
16
+ }
17
+
18
+ exports.randomLCG = randomLCG;
19
+
20
+ const fakeRandom = () => {
21
+ let i = -1;
22
+ const arr = [ 0, .1, .2, .3, .4, .5, .6, .7, .8, .9 ];
23
+ return () => (i = (i + 1) % arr.length, arr[i]);
24
+ };
25
+
26
+ exports.fakeRandom = fakeRandom;
10
27
  //# sourceMappingURL=random.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/random.ts"],"names":[],"mappings":";;;AAAA,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAFD,gCAEC","file":"random.js","sourcesContent":["export function seedRandom(seed: number) {\n return parseFloat('0.' + Math.sin(seed).toString().substring(6));\n}\n"]}
1
+ {"version":3,"sources":["../src/common/random.ts"],"names":[],"mappings":";;;AAAA,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAFD,gCAEC;AAYD,MAAM,CAAC,GAAG,OAAO,CAAC;AAClB,MAAM,CAAC,GAAG,UAAU,CAAC;AACrB,MAAM,CAAC,GAAG,UAAU,CAAC;AAErB,SAAgB,SAAS,CAAC,QAAgB,CAAC;IACzC,IAAI,CAAC,GAAG,KAAK,CAAC;IACd,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAHD,8BAGC;AAKM,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACX,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7D,OAAO,GAAG,EAAE;QACV,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,UAAU,cAOrB","file":"random.js","sourcesContent":["export function seedRandom(seed: number) {\n return parseFloat('0.' + Math.sin(seed).toString().substring(6));\n}\n\n/* Adapted from vega by University of Washington Interactive Data Lab\n * https://vega.github.io/vega/\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/vega/vega/blob/main/packages/vega-statistics/src/lcg.js\n * License: https://github.com/vega/vega/blob/main/LICENSE\n * @license\n */\n\n// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport function randomLCG(initS: number = 1) {\n let s = initS;\n return () => (s = (a * s + c) % m) / m;\n}\n\n/**\n * 随机拟合\n */\nexport const fakeRandom = () => {\n let i = -1;\n const arr = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9];\n return () => {\n i = (i + 1) % arr.length;\n return arr[i];\n };\n};\n"]}
@@ -0,0 +1,8 @@
1
+ export declare function ordinaryLeastSquares(uX: number, uY: number, uXY: number, uX2: number): number[];
2
+ export declare function visitPoints(data: any[], x: (datum: any) => number, y: (datum: any) => number, callback: (x: number, y: number, index: number) => void): void;
3
+ export declare function rSquared(data: any[], x: (datum: any) => number, y: (datum: any) => number, uY: number, predict: (x: number) => number): number;
4
+ export declare function regressionLinear(data: any[], x?: (datum: any) => number, y?: (datum: any) => number): {
5
+ coef: number[];
6
+ predict: (x: number) => number;
7
+ rSquared: number;
8
+ };
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var __importDefault = this && this.__importDefault || function(mod) {
4
+ return mod && mod.__esModule ? mod : {
5
+ default: mod
6
+ };
7
+ };
8
+
9
+ Object.defineProperty(exports, "__esModule", {
10
+ value: !0
11
+ }), exports.regressionLinear = exports.rSquared = exports.visitPoints = exports.ordinaryLeastSquares = void 0;
12
+
13
+ const isNil_1 = __importDefault(require("./isNil"));
14
+
15
+ function ordinaryLeastSquares(uX, uY, uXY, uX2) {
16
+ const delta = uX2 - uX * uX, slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta;
17
+ return [ uY - slope * uX, slope ];
18
+ }
19
+
20
+ function visitPoints(data, x, y, callback) {
21
+ let u, v, i = -1;
22
+ data.forEach((d => {
23
+ u = x(d), v = y(d), !(0, isNil_1.default)(u) && (u = +u) >= u && !(0, isNil_1.default)(v) && (v = +v) >= v && callback(u, v, ++i);
24
+ }));
25
+ }
26
+
27
+ function rSquared(data, x, y, uY, predict) {
28
+ let SSE = 0, SST = 0;
29
+ return visitPoints(data, x, y, ((dx, dy) => {
30
+ const sse = dy - predict(dx), sst = dy - uY;
31
+ SSE += sse * sse, SST += sst * sst;
32
+ })), 1 - SSE / SST;
33
+ }
34
+
35
+ function regressionLinear(data, x = (datum => datum.x), y = (datum => datum.y)) {
36
+ let X = 0, Y = 0, XY = 0, X2 = 0, n = 0;
37
+ visitPoints(data, x, y, ((dx, dy) => {
38
+ ++n, X += (dx - X) / n, Y += (dy - Y) / n, XY += (dx * dy - XY) / n, X2 += (dx * dx - X2) / n;
39
+ }));
40
+ const coef = ordinaryLeastSquares(X, Y, XY, X2), predict = x => coef[0] + coef[1] * x;
41
+ return {
42
+ coef: coef,
43
+ predict: predict,
44
+ rSquared: rSquared(data, x, y, Y, predict)
45
+ };
46
+ }
47
+
48
+ exports.ordinaryLeastSquares = ordinaryLeastSquares, exports.visitPoints = visitPoints,
49
+ exports.rSquared = rSquared, exports.regressionLinear = regressionLinear;
50
+ //# sourceMappingURL=regression-linear.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/regression-linear.ts"],"names":[],"mappings":"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","file":"regression-linear.js","sourcesContent":["import isNil from './isNil';\n/* Adapted from vega by University of Washington Interactive Data Lab\n * https://vega.github.io/vega/\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/vega/vega/blob/main/packages/vega-statistics/src/regression/ols.js\n * License: https://github.com/vega/vega/blob/main/LICENSE\n * @license\n */\nexport function ordinaryLeastSquares(uX: number, uY: number, uXY: number, uX2: number) {\n const delta = uX2 - uX * uX;\n const slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta;\n const intercept = uY - slope * uX;\n\n return [intercept, slope];\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nexport function visitPoints(\n data: any[],\n x: (datum: any) => number,\n y: (datum: any) => number,\n callback: (x: number, y: number, index: number) => void\n) {\n let i = -1;\n let u;\n let v;\n\n data.forEach(d => {\n u = x(d);\n v = y(d);\n if (!isNil(u) && (u = +u) >= u && !isNil(v) && (v = +v) >= v) {\n callback(u, v, ++i);\n }\n });\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nexport function rSquared(\n data: any[],\n x: (datum: any) => number,\n y: (datum: any) => number,\n uY: number,\n predict: (x: number) => number\n) {\n let SSE = 0;\n let SST = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n const sse = dy - predict(dx);\n const sst = dy - uY;\n\n SSE += sse * sse;\n SST += sst * sst;\n });\n\n return 1 - SSE / SST;\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nexport function regressionLinear(\n data: any[],\n x: (datum: any) => number = datum => datum.x,\n y: (datum: any) => number = datum => datum.y\n) {\n let X = 0;\n let Y = 0;\n let XY = 0;\n let X2 = 0;\n let n = 0;\n\n visitPoints(data, x, y, (dx, dy) => {\n ++n;\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n });\n\n const coef = ordinaryLeastSquares(X, Y, XY, X2);\n const predict = (x: number) => coef[0] + coef[1] * x;\n\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare const toPercent: (percent: string | number, total: number) => number;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var __importDefault = this && this.__importDefault || function(mod) {
4
+ return mod && mod.__esModule ? mod : {
5
+ default: mod
6
+ };
7
+ };
8
+
9
+ Object.defineProperty(exports, "__esModule", {
10
+ value: !0
11
+ }), exports.toPercent = void 0;
12
+
13
+ const isNil_1 = __importDefault(require("./isNil")), isString_1 = __importDefault(require("./isString")), toPercent = (percent, total) => (0,
14
+ isNil_1.default)(percent) ? total : (0, isString_1.default)(percent) ? total * parseFloat(percent) / 100 : percent;
15
+
16
+ exports.toPercent = toPercent;
17
+ //# sourceMappingURL=toPercent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/toPercent.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,0DAAkC;AAE3B,MAAM,SAAS,GAAG,CAAC,OAAwB,EAAE,KAAa,EAAE,EAAE;IACnE,IAAI,IAAA,eAAK,EAAC,OAAO,CAAC,EAAE;QAClB,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAA,kBAAQ,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,OAAiB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AACrF,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB","file":"toPercent.js","sourcesContent":["import isNil from './isNil';\nimport isString from './isString';\n\nexport const toPercent = (percent: string | number, total: number) => {\n if (isNil(percent)) {\n return total;\n }\n\n return isString(percent) ? (total * parseFloat(percent as string)) / 100 : percent;\n};\n"]}
@@ -0,0 +1 @@
1
+ export declare const zero: (_: any) => number;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.zero = void 0;
6
+
7
+ const zero = _ => 0;
8
+
9
+ exports.zero = zero;
10
+ //# sourceMappingURL=zero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/zero.ts"],"names":[],"mappings":";;;AAAO,MAAM,IAAI,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAArB,QAAA,IAAI,QAAiB","file":"zero.js","sourcesContent":["export const zero = (_: any) => 0;\n"]}
@@ -169,4 +169,4 @@ class OBBBounds extends Bounds {
169
169
  }
170
170
 
171
171
  exports.OBBBounds = OBBBounds;
172
- //# sourceMappingURL=bounds.js.map
172
+ //# sourceMappingURL=bounds.js.map
@@ -111,5 +111,4 @@ class HashTable {
111
111
  toImmutableMap() {}
112
112
  }
113
113
 
114
- exports.HashTable = HashTable;
115
- //# sourceMappingURL=hashTable.js.map
114
+ exports.HashTable = HashTable;
@@ -19,4 +19,4 @@ Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), __exportStar(require("./hashTable"), exports), __exportStar(require("./point"), exports),
21
21
  __exportStar(require("./bounds"), exports), __exportStar(require("./matrix"), exports);
22
- //# sourceMappingURL=index.js.map
22
+ //# sourceMappingURL=index.js.map
@@ -110,4 +110,4 @@ function normalTransform(out, origin, x, y, scaleX, scaleY, angle, rotateCenter)
110
110
  }
111
111
 
112
112
  exports.Matrix = Matrix, exports.normalTransform = normalTransform;
113
- //# sourceMappingURL=matrix.js.map
113
+ //# sourceMappingURL=matrix.js.map
@@ -78,4 +78,4 @@ class PolarPoint {
78
78
  }
79
79
 
80
80
  exports.PolarPoint = PolarPoint;
81
- //# sourceMappingURL=point.js.map
81
+ //# sourceMappingURL=point.js.map