@visactor/vutils 1.0.24 → 1.0.26
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/README.zh-CN.md +12 -0
- package/REGRESSION.md +36 -0
- package/cjs/angle.d.ts +61 -0
- package/cjs/angle.js +73 -7
- package/cjs/angle.js.map +1 -1
- package/cjs/color/Color.d.ts +3 -0
- package/cjs/color/Color.js +64 -10
- package/cjs/color/Color.js.map +1 -1
- package/cjs/color/hexToRgb.d.ts +5 -0
- package/cjs/color/hexToRgb.js +5 -0
- package/cjs/color/hexToRgb.js.map +1 -1
- package/cjs/color/rgbToHsl.js +5 -1
- package/cjs/color/rgbToHsl.js.map +1 -1
- package/cjs/common/array.d.ts +43 -0
- package/cjs/common/array.js +44 -0
- package/cjs/common/array.js.map +1 -1
- package/cjs/common/bisect.d.ts +21 -0
- package/cjs/common/bisect.js +29 -0
- package/cjs/common/bisect.js.map +1 -1
- package/cjs/common/bootstrap.d.ts +5 -0
- package/cjs/common/bootstrap.js +22 -0
- package/cjs/common/bootstrap.js.map +1 -0
- package/cjs/common/clone.js +6 -0
- package/cjs/common/clone.js.map +1 -1
- package/cjs/common/cloneDeep.js +4 -1
- package/cjs/common/cloneDeep.js.map +1 -1
- package/cjs/common/correlation.d.ts +3 -0
- package/cjs/common/correlation.js +83 -0
- package/cjs/common/correlation.js.map +1 -0
- package/cjs/common/debounce.js +22 -4
- package/cjs/common/debounce.js.map +1 -1
- package/cjs/common/deviation.js +1 -2
- package/cjs/common/ecdf.d.ts +8 -0
- package/cjs/common/ecdf.js +11 -2
- package/cjs/common/ecdf.js.map +1 -1
- package/cjs/common/extent.d.ts +4 -0
- package/cjs/common/extent.js +4 -2
- package/cjs/common/extent.js.map +1 -1
- package/cjs/common/field.d.ts +6 -0
- package/cjs/common/field.js +3 -0
- package/cjs/common/field.js.map +1 -1
- package/cjs/common/has.d.ts +17 -0
- package/cjs/common/has.js +18 -1
- package/cjs/common/has.js.map +1 -1
- package/cjs/common/index.d.ts +5 -0
- package/cjs/common/index.js +34 -6
- package/cjs/common/index.js.map +1 -1
- package/cjs/common/interpolate.js +16 -3
- package/cjs/common/interpolate.js.map +1 -1
- package/cjs/common/isBase64.d.ts +6 -0
- package/cjs/common/isBase64.js +6 -0
- package/cjs/common/isBase64.js.map +1 -1
- package/cjs/common/isBoolean.d.ts +13 -0
- package/cjs/common/isBoolean.js +13 -1
- package/cjs/common/isBoolean.js.map +1 -1
- package/cjs/common/isEmpty.js +11 -1
- package/cjs/common/isEmpty.js.map +1 -1
- package/cjs/common/isEqual.js +19 -7
- package/cjs/common/isEqual.js.map +1 -1
- package/cjs/common/isFunction.d.ts +25 -0
- package/cjs/common/isFunction.js +27 -2
- package/cjs/common/isFunction.js.map +1 -1
- package/cjs/common/isNull.js +2 -1
- package/cjs/common/isNumber.d.ts +23 -0
- package/cjs/common/isNumber.js +23 -1
- package/cjs/common/isNumber.js.map +1 -1
- package/cjs/common/isNumeric.d.ts +25 -0
- package/cjs/common/isNumeric.js +25 -0
- package/cjs/common/isNumeric.js.map +1 -1
- package/cjs/common/isObject.d.ts +21 -0
- package/cjs/common/isObject.js +22 -0
- package/cjs/common/isObject.js.map +1 -1
- package/cjs/common/isObjectLike.d.ts +20 -0
- package/cjs/common/isObjectLike.js +21 -0
- package/cjs/common/isObjectLike.js.map +1 -1
- package/cjs/common/isPlainObject.d.ts +25 -0
- package/cjs/common/isPlainObject.js.map +1 -1
- package/cjs/common/isPrototype.js +1 -1
- package/cjs/common/isRegExp.js +1 -1
- package/cjs/common/isShallowEqual.js +1 -0
- package/cjs/common/isShallowEqual.js.map +1 -1
- package/cjs/common/isString.d.ts +13 -0
- package/cjs/common/isString.js +13 -1
- package/cjs/common/isString.js.map +1 -1
- package/cjs/common/isType.d.ts +6 -0
- package/cjs/common/isType.js +6 -0
- package/cjs/common/isType.js.map +1 -1
- package/cjs/common/isValidNumber.js.map +1 -1
- package/cjs/common/isValidUrl.js.map +1 -1
- package/cjs/common/kde.d.ts +28 -0
- package/cjs/common/kde.js +29 -5
- package/cjs/common/kde.js.map +1 -1
- package/cjs/common/mean.d.ts +2 -0
- package/cjs/common/mean.js +25 -0
- package/cjs/common/mean.js.map +1 -0
- package/cjs/common/merge.js +20 -4
- package/cjs/common/merge.js.map +1 -1
- package/cjs/common/mixin.js +14 -3
- package/cjs/common/mixin.js.map +1 -1
- package/cjs/common/normalQuantile.d.ts +5 -0
- package/cjs/common/normalQuantile.js +21 -0
- package/cjs/common/normalQuantile.js.map +1 -0
- package/cjs/common/number.d.ts +24 -0
- package/cjs/common/number.js +24 -1
- package/cjs/common/number.js.map +1 -1
- package/cjs/common/pad.d.ts +21 -0
- package/cjs/common/pad.js +21 -1
- package/cjs/common/pad.js.map +1 -1
- package/cjs/common/random.d.ts +3 -0
- package/cjs/common/random.js +13 -0
- package/cjs/common/random.js.map +1 -1
- package/cjs/common/regression-bootstrap.d.ts +14 -0
- package/cjs/common/regression-bootstrap.js +37 -0
- package/cjs/common/regression-bootstrap.js.map +1 -0
- package/cjs/common/regression-linear.d.ts +5 -0
- package/cjs/common/regression-linear.js +28 -39
- package/cjs/common/regression-linear.js.map +1 -1
- package/cjs/common/regression-logistic.d.ts +6 -0
- package/cjs/common/regression-logistic.js +25 -14
- package/cjs/common/regression-logistic.js.map +1 -1
- package/cjs/common/regression-lowess.d.ts +11 -1
- package/cjs/common/regression-lowess.js +125 -118
- package/cjs/common/regression-lowess.js.map +1 -1
- package/cjs/common/regression-polynomial.d.ts +1 -0
- package/cjs/common/regression-polynomial.js +24 -94
- package/cjs/common/regression-polynomial.js.map +1 -1
- package/cjs/common/regression-solver.d.ts +26 -0
- package/cjs/common/regression-solver.js +180 -0
- package/cjs/common/regression-solver.js.map +1 -0
- package/cjs/common/regression-utils.d.ts +13 -1
- package/cjs/common/regression-utils.js +27 -12
- package/cjs/common/regression-utils.js.map +1 -1
- package/cjs/common/throttle.js +3 -0
- package/cjs/common/throttle.js.map +1 -1
- package/cjs/common/toDate.js +22 -3
- package/cjs/common/toDate.js.map +1 -1
- package/cjs/common/uuid.d.ts +7 -0
- package/cjs/common/uuid.js +15 -1
- package/cjs/common/uuid.js.map +1 -1
- package/cjs/data-structure/bounds.d.ts +101 -0
- package/cjs/data-structure/bounds.js +74 -7
- package/cjs/data-structure/bounds.js.map +1 -1
- package/cjs/data-structure/hashTable.d.ts +4 -0
- package/cjs/data-structure/hashTable.js +11 -2
- package/cjs/data-structure/hashTable.js.map +1 -1
- package/cjs/data-structure/index.js +6 -2
- package/cjs/data-structure/index.js.map +1 -1
- package/cjs/data-structure/matrix.d.ts +91 -0
- package/cjs/data-structure/matrix.js +52 -4
- package/cjs/data-structure/matrix.js.map +1 -1
- package/cjs/data-structure/point.d.ts +3 -0
- package/cjs/data-structure/point.js +5 -1
- package/cjs/data-structure/point.js.map +1 -1
- package/cjs/dom.d.ts +36 -0
- package/cjs/dom.js +43 -1
- package/cjs/dom.js.map +1 -1
- package/cjs/fmin/blas1.js +10 -1
- package/cjs/fmin/blas1.js.map +1 -1
- package/cjs/fmin/conjugate-gradient.js +18 -3
- package/cjs/fmin/conjugate-gradient.js.map +1 -1
- package/cjs/fmin/linesearch.js +15 -1
- package/cjs/fmin/linesearch.js.map +1 -1
- package/cjs/fmin/nelder-mead.d.ts +1 -0
- package/cjs/fmin/nelder-mead.js +30 -10
- package/cjs/fmin/nelder-mead.js.map +1 -1
- package/cjs/format/number/formatDecimal.js +9 -1
- package/cjs/format/number/formatDecimal.js.map +1 -1
- package/cjs/format/number/formatGroup.js +7 -0
- package/cjs/format/number/formatGroup.js.map +1 -1
- package/cjs/format/number/formatPrefixAuto.js +8 -0
- package/cjs/format/number/formatPrefixAuto.js.map +1 -1
- package/cjs/format/number/formatRounded.js +7 -0
- package/cjs/format/number/formatRounded.js.map +1 -1
- package/cjs/format/number/formatTrim.js +7 -0
- package/cjs/format/number/formatTrim.js.map +1 -1
- package/cjs/format/number/number.js +39 -9
- package/cjs/format/number/number.js.map +1 -1
- package/cjs/format/time.js +23 -6
- package/cjs/format/time.js.map +1 -1
- package/cjs/geo/circle-intersection.d.ts +12 -0
- package/cjs/geo/circle-intersection.js +54 -9
- package/cjs/geo/circle-intersection.js.map +1 -1
- package/cjs/geo/constant.js +8 -1
- package/cjs/geo/constant.js.map +1 -1
- package/cjs/geo/invariant.d.ts +22 -0
- package/cjs/geo/invariant.js +24 -1
- package/cjs/geo/invariant.js.map +1 -1
- package/cjs/graphics/algorithm/aabb.js +7 -3
- package/cjs/graphics/algorithm/aabb.js.map +1 -1
- package/cjs/graphics/algorithm/intersect.d.ts +48 -0
- package/cjs/graphics/algorithm/intersect.js +75 -7
- package/cjs/graphics/algorithm/intersect.js.map +1 -1
- package/cjs/graphics/bounds-util.js +4 -2
- package/cjs/graphics/bounds-util.js.map +1 -1
- package/cjs/graphics/graph-util.js +4 -0
- package/cjs/graphics/graph-util.js.map +1 -1
- package/cjs/graphics/index.js +7 -4
- package/cjs/graphics/index.js.map +1 -1
- package/cjs/graphics/polygon.d.ts +12 -0
- package/cjs/graphics/polygon.js +28 -5
- package/cjs/graphics/polygon.js.map +1 -1
- package/cjs/graphics/text/measure/interface.d.ts +12 -0
- package/cjs/graphics/text/measure/textMeasure.d.ts +23 -0
- package/cjs/graphics/text/measure/textMeasure.js +50 -22
- package/cjs/graphics/text/measure/textMeasure.js.map +1 -1
- package/cjs/graphics/text/measure/util.js +1 -0
- package/cjs/graphics/text/measure/util.js.map +1 -1
- package/cjs/graphics/text/stringWidth.js +7 -3
- package/cjs/graphics/text/stringWidth.js.map +1 -1
- package/cjs/index.d.ts +6 -0
- package/cjs/index.js +19 -4
- package/cjs/index.js.map +1 -1
- package/cjs/logger.js +12 -2
- package/cjs/logger.js.map +1 -1
- package/cjs/lru.js +14 -6
- package/cjs/lru.js.map +1 -1
- package/cjs/math.d.ts +9 -0
- package/cjs/math.js +10 -0
- package/cjs/math.js.map +1 -1
- package/cjs/padding.d.ts +5 -0
- package/cjs/padding.js +5 -0
- package/cjs/padding.js.map +1 -1
- package/cjs/time/formatUtils.d.ts +6 -0
- package/cjs/time/formatUtils.js +7 -0
- package/cjs/time/formatUtils.js.map +1 -1
- package/dist/index.js +2035 -411
- package/dist/index.min.js +128 -1
- package/es/angle.d.ts +61 -0
- package/es/angle.js +66 -10
- package/es/angle.js.map +1 -1
- package/es/color/Color.d.ts +3 -0
- package/es/color/Color.js +64 -9
- package/es/color/Color.js.map +1 -1
- package/es/color/hexToRgb.d.ts +5 -0
- package/es/color/hexToRgb.js +5 -0
- package/es/color/hexToRgb.js.map +1 -1
- package/es/color/rgbToHsl.js +5 -1
- package/es/color/rgbToHsl.js.map +1 -1
- package/es/common/array.d.ts +43 -0
- package/es/common/array.js +44 -8
- package/es/common/array.js.map +1 -1
- package/es/common/bisect.d.ts +21 -0
- package/es/common/bisect.js +29 -4
- package/es/common/bisect.js.map +1 -1
- package/es/common/bootstrap.d.ts +5 -0
- package/es/common/bootstrap.js +14 -0
- package/es/common/bootstrap.js.map +1 -0
- package/es/common/clone.js +6 -0
- package/es/common/clone.js.map +1 -1
- package/es/common/cloneDeep.js +4 -1
- package/es/common/cloneDeep.js.map +1 -1
- package/es/common/correlation.d.ts +3 -0
- package/es/common/correlation.js +77 -0
- package/es/common/correlation.js.map +1 -0
- package/es/common/debounce.js +22 -4
- package/es/common/debounce.js.map +1 -1
- package/es/common/deviation.js +1 -2
- package/es/common/ecdf.d.ts +8 -0
- package/es/common/ecdf.js +11 -1
- package/es/common/ecdf.js.map +1 -1
- package/es/common/extent.d.ts +4 -0
- package/es/common/extent.js +8 -3
- package/es/common/extent.js.map +1 -1
- package/es/common/field.d.ts +6 -0
- package/es/common/field.js +3 -1
- package/es/common/field.js.map +1 -1
- package/es/common/has.d.ts +17 -0
- package/es/common/has.js +18 -1
- package/es/common/has.js.map +1 -1
- package/es/common/index.d.ts +5 -0
- package/es/common/index.js +24 -0
- package/es/common/index.js.map +1 -1
- package/es/common/interpolate.js +16 -3
- package/es/common/interpolate.js.map +1 -1
- package/es/common/isBase64.d.ts +6 -0
- package/es/common/isBase64.js +6 -0
- package/es/common/isBase64.js.map +1 -1
- package/es/common/isBoolean.d.ts +13 -0
- package/es/common/isBoolean.js +13 -1
- package/es/common/isBoolean.js.map +1 -1
- package/es/common/isEmpty.js +11 -1
- package/es/common/isEmpty.js.map +1 -1
- package/es/common/isEqual.js +19 -7
- package/es/common/isEqual.js.map +1 -1
- package/es/common/isFunction.d.ts +25 -0
- package/es/common/isFunction.js +27 -2
- package/es/common/isFunction.js.map +1 -1
- package/es/common/isNull.js +2 -1
- package/es/common/isNumber.d.ts +23 -0
- package/es/common/isNumber.js +23 -1
- package/es/common/isNumber.js.map +1 -1
- package/es/common/isNumeric.d.ts +25 -0
- package/es/common/isNumeric.js +25 -0
- package/es/common/isNumeric.js.map +1 -1
- package/es/common/isObject.d.ts +21 -0
- package/es/common/isObject.js +22 -0
- package/es/common/isObject.js.map +1 -1
- package/es/common/isObjectLike.d.ts +20 -0
- package/es/common/isObjectLike.js +21 -0
- package/es/common/isObjectLike.js.map +1 -1
- package/es/common/isPlainObject.d.ts +25 -0
- package/es/common/isPlainObject.js +26 -0
- package/es/common/isPlainObject.js.map +1 -1
- package/es/common/isPrototype.js +1 -1
- package/es/common/isRegExp.js +1 -1
- package/es/common/isShallowEqual.js +1 -0
- package/es/common/isShallowEqual.js.map +1 -1
- package/es/common/isString.d.ts +13 -0
- package/es/common/isString.js +13 -1
- package/es/common/isString.js.map +1 -1
- package/es/common/isType.d.ts +6 -0
- package/es/common/isType.js +6 -0
- package/es/common/isType.js.map +1 -1
- package/es/common/isValidNumber.js.map +1 -1
- package/es/common/isValidUrl.js.map +1 -1
- package/es/common/kde.d.ts +28 -0
- package/es/common/kde.js +29 -7
- package/es/common/kde.js.map +1 -1
- package/es/common/mean.d.ts +2 -0
- package/es/common/mean.js +19 -0
- package/es/common/mean.js.map +1 -0
- package/es/common/merge.js +22 -5
- package/es/common/merge.js.map +1 -1
- package/es/common/mixin.js +14 -3
- package/es/common/mixin.js.map +1 -1
- package/es/common/normalQuantile.d.ts +5 -0
- package/es/common/normalQuantile.js +15 -0
- package/es/common/normalQuantile.js.map +1 -0
- package/es/common/number.d.ts +24 -0
- package/es/common/number.js +24 -2
- package/es/common/number.js.map +1 -1
- package/es/common/pad.d.ts +21 -0
- package/es/common/pad.js +21 -1
- package/es/common/pad.js.map +1 -1
- package/es/common/random.d.ts +3 -0
- package/es/common/random.js +13 -1
- package/es/common/random.js.map +1 -1
- package/es/common/regression-bootstrap.d.ts +14 -0
- package/es/common/regression-bootstrap.js +31 -0
- package/es/common/regression-bootstrap.js.map +1 -0
- package/es/common/regression-linear.d.ts +5 -0
- package/es/common/regression-linear.js +25 -39
- package/es/common/regression-linear.js.map +1 -1
- package/es/common/regression-logistic.d.ts +6 -0
- package/es/common/regression-logistic.js +24 -16
- package/es/common/regression-logistic.js.map +1 -1
- package/es/common/regression-lowess.d.ts +11 -1
- package/es/common/regression-lowess.js +120 -118
- package/es/common/regression-lowess.js.map +1 -1
- package/es/common/regression-polynomial.d.ts +1 -0
- package/es/common/regression-polynomial.js +21 -89
- package/es/common/regression-polynomial.js.map +1 -1
- package/es/common/regression-solver.d.ts +26 -0
- package/es/common/regression-solver.js +168 -0
- package/es/common/regression-solver.js.map +1 -0
- package/es/common/regression-utils.d.ts +13 -1
- package/es/common/regression-utils.js +18 -9
- package/es/common/regression-utils.js.map +1 -1
- package/es/common/throttle.js +3 -0
- package/es/common/throttle.js.map +1 -1
- package/es/common/toDate.js +23 -3
- package/es/common/toDate.js.map +1 -1
- package/es/common/uuid.d.ts +7 -0
- package/es/common/uuid.js +15 -1
- package/es/common/uuid.js.map +1 -1
- package/es/data-structure/bounds.d.ts +101 -0
- package/es/data-structure/bounds.js +74 -8
- package/es/data-structure/bounds.js.map +1 -1
- package/es/data-structure/hashTable.d.ts +4 -0
- package/es/data-structure/hashTable.js +11 -2
- package/es/data-structure/hashTable.js.map +1 -1
- package/es/data-structure/index.js +2 -0
- package/es/data-structure/index.js.map +1 -1
- package/es/data-structure/matrix.d.ts +91 -0
- package/es/data-structure/matrix.js +52 -5
- package/es/data-structure/matrix.js.map +1 -1
- package/es/data-structure/point.d.ts +3 -0
- package/es/data-structure/point.js +5 -1
- package/es/data-structure/point.js.map +1 -1
- package/es/dom.d.ts +36 -0
- package/es/dom.js +43 -8
- package/es/dom.js.map +1 -1
- package/es/fmin/blas1.js +10 -0
- package/es/fmin/blas1.js.map +1 -1
- package/es/fmin/conjugate-gradient.js +18 -2
- package/es/fmin/conjugate-gradient.js.map +1 -1
- package/es/fmin/linesearch.js +15 -0
- package/es/fmin/linesearch.js.map +1 -1
- package/es/fmin/nelder-mead.d.ts +1 -0
- package/es/fmin/nelder-mead.js +29 -9
- package/es/fmin/nelder-mead.js.map +1 -1
- package/es/format/number/formatDecimal.js +9 -1
- package/es/format/number/formatDecimal.js.map +1 -1
- package/es/format/number/formatGroup.js +7 -0
- package/es/format/number/formatGroup.js.map +1 -1
- package/es/format/number/formatPrefixAuto.js +8 -0
- package/es/format/number/formatPrefixAuto.js.map +1 -1
- package/es/format/number/formatRounded.js +7 -0
- package/es/format/number/formatRounded.js.map +1 -1
- package/es/format/number/formatTrim.js +7 -0
- package/es/format/number/formatTrim.js.map +1 -1
- package/es/format/number/number.js +40 -8
- package/es/format/number/number.js.map +1 -1
- package/es/format/time.js +23 -5
- package/es/format/time.js.map +1 -1
- package/es/geo/circle-intersection.d.ts +12 -0
- package/es/geo/circle-intersection.js +54 -14
- package/es/geo/circle-intersection.js.map +1 -1
- package/es/geo/constant.js +8 -0
- package/es/geo/constant.js.map +1 -1
- package/es/geo/invariant.d.ts +22 -0
- package/es/geo/invariant.js +24 -0
- package/es/geo/invariant.js.map +1 -1
- package/es/graphics/algorithm/aabb.js +7 -3
- package/es/graphics/algorithm/aabb.js.map +1 -1
- package/es/graphics/algorithm/intersect.d.ts +48 -0
- package/es/graphics/algorithm/intersect.js +75 -12
- package/es/graphics/algorithm/intersect.js.map +1 -1
- package/es/graphics/bounds-util.js +4 -2
- package/es/graphics/bounds-util.js.map +1 -1
- package/es/graphics/graph-util.js +4 -0
- package/es/graphics/graph-util.js.map +1 -1
- package/es/graphics/index.js +2 -0
- package/es/graphics/index.js.map +1 -1
- package/es/graphics/polygon.d.ts +12 -0
- package/es/graphics/polygon.js +28 -6
- package/es/graphics/polygon.js.map +1 -1
- package/es/graphics/text/measure/interface.d.ts +12 -0
- package/es/graphics/text/measure/textMeasure.d.ts +23 -0
- package/es/graphics/text/measure/textMeasure.js +46 -21
- package/es/graphics/text/measure/textMeasure.js.map +1 -1
- package/es/graphics/text/measure/util.js +1 -0
- package/es/graphics/text/measure/util.js.map +1 -1
- package/es/graphics/text/stringWidth.js +7 -3
- package/es/graphics/text/stringWidth.js.map +1 -1
- package/es/index.d.ts +6 -0
- package/es/index.js +15 -1
- package/es/index.js.map +1 -1
- package/es/logger.js +12 -1
- package/es/logger.js.map +1 -1
- package/es/lru.js +14 -6
- package/es/lru.js.map +1 -1
- package/es/math.d.ts +9 -0
- package/es/math.js +10 -1
- package/es/math.js.map +1 -1
- package/es/padding.d.ts +5 -0
- package/es/padding.js +5 -1
- package/es/padding.js.map +1 -1
- package/es/time/formatUtils.d.ts +6 -0
- package/es/time/formatUtils.js +7 -1
- package/es/time/formatUtils.js.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/cloneDeep.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAChC,4DAAoC;AACpC,sDAA8B;AAC9B,0DAAkC;AAClC,0DAAkC;AAClC,wDAAgC;AAEhC,SAAwB,SAAS,CAAC,KAAU,EAAE,UAAoC,EAAE,WAAsB;IACxG,IAAI,MAAM,CAAC;IACX,IAAI,CAAC,IAAA,iBAAO,EAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;QACrF,OAAO,KAAK,CAAC;KACd;IAED,MAAM,KAAK,GAAG,IAAA,iBAAO,EAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/common/cloneDeep.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAChC,4DAAoC;AACpC,sDAA8B;AAC9B,0DAAkC;AAClC,0DAAkC;AAClC,wDAAgC;AAEhC,SAAwB,SAAS,CAAC,KAAU,EAAE,UAAoC,EAAE,WAAsB;IACxG,IAAI,MAAM,CAAC;IACX,IAAI,CAAC,IAAA,iBAAO,EAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;QACrF,OAAO,KAAK,CAAC;KACd;IAED,MAAM,KAAK,GAAG,IAAA,iBAAO,EAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,eAAe;IACf,IAAI,KAAK,EAAE;QACT,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;KAC5B;IACD,iDAAiD;SAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAClC,MAAM,GAAG,EAAE,CAAC;KACb;IACD,0CAA0C;SACrC,IAAI,IAAA,mBAAS,EAAC,KAAK,CAAC,IAAI,IAAA,kBAAQ,EAAC,KAAK,CAAC,IAAI,IAAA,kBAAQ,EAAC,KAAK,CAAC,EAAE;QAC/D,MAAM,GAAG,KAAK,CAAC;KAChB;SAAM,IAAI,IAAA,gBAAM,EAAC,KAAK,CAAC,EAAE;QACxB,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;KAC3B;IACD,2EAA2E;SACtE;QACH,MAAM,GAAG,SAAS,CAAC;KACpB;IAED,mCAAmC;IAEnC,mBAAmB;IACnB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7D,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,IAAI,MAAM,EAAE;QACV,OAAO,EAAE,KAAK,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE;YACxC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAE5B,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACvD,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;aACxB;iBAAM;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;aAC5D;SACF;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AA9CD,4BA8CC","file":"cloneDeep.js","sourcesContent":["import isArray from './isArray';\nimport isBoolean from './isBoolean';\nimport isDate from './isDate';\nimport isNumber from './isNumber';\nimport isString from './isString';\nimport isValid from './isValid';\n\nexport default function cloneDeep(value: any, ignoreWhen?: (value: any) => boolean, excludeKeys?: string[]): any {\n let result;\n if (!isValid(value) || typeof value !== 'object' || (ignoreWhen && ignoreWhen(value))) {\n return value;\n }\n\n const isArr = isArray(value);\n const length = value.length;\n // 不考虑特殊数组的额外处理\n if (isArr) {\n result = new Array(length);\n }\n // 不考虑 buffer / arguments 类型的处理以及 prototype 的额外处理\n else if (typeof value === 'object') {\n result = {};\n }\n // 不建议使用作为 Boolean / Number / String 作为构造器\n else if (isBoolean(value) || isNumber(value) || isString(value)) {\n result = value;\n } else if (isDate(value)) {\n result = new Date(+value);\n }\n // 不考虑 ArrayBuffer / DataView / TypedArray / map / set / regexp / symbol 类型\n else {\n result = undefined;\n }\n\n // 不考虑 map / set / TypedArray 类型的赋值\n\n // 不考虑对象的 symbol 属性\n const props = isArr ? undefined : Object.keys(Object(value));\n\n let index = -1;\n if (result) {\n while (++index < (props || value).length) {\n const key = props ? props[index] : index;\n const subValue = value[key];\n\n if (excludeKeys && excludeKeys.includes(key.toString())) {\n result[key] = subValue;\n } else {\n result[key] = cloneDeep(subValue, ignoreWhen, excludeKeys);\n }\n }\n }\n return result;\n}\n"]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function pearson(x, y) {
|
|
4
|
+
let sx = 0, sy = 0;
|
|
5
|
+
for (let i = 0; i < x.length; i++) sx = Math.max(sx, Math.abs(x[i])), sy = Math.max(sy, Math.abs(y[i]));
|
|
6
|
+
if (!sx || !sy) return;
|
|
7
|
+
let mx = 0, my = 0, cx = 0, cy = 0;
|
|
8
|
+
for (let i = 0; i < x.length; i++) {
|
|
9
|
+
const vx = x[i] / sx - cx, vy = y[i] / sy - cy, tx = mx + vx, ty = my + vy;
|
|
10
|
+
cx = tx - mx - vx, cy = ty - my - vy, mx = tx, my = ty;
|
|
11
|
+
}
|
|
12
|
+
mx /= x.length, my /= x.length;
|
|
13
|
+
let xx = 0, yy = 0, xy = 0;
|
|
14
|
+
for (let i = 0; i < x.length; i++) {
|
|
15
|
+
const dx = x[i] / sx - mx, dy = y[i] / sy - my;
|
|
16
|
+
xx += dx * dx, yy += dy * dy, xy += dx * dy;
|
|
17
|
+
}
|
|
18
|
+
if (0 === xx || 0 === yy) return;
|
|
19
|
+
const result = xy / Math.sqrt(xx * yy);
|
|
20
|
+
// 仅修正浮点舍入越过理论端点的几个 ulp。
|
|
21
|
+
return Math.abs(result) > 1 && Math.abs(result) <= 1 + 8 * Number.EPSILON ? Math.sign(result) : result;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function ranks(values) {
|
|
25
|
+
const order = values.map(((value, index) => ({
|
|
26
|
+
value: value,
|
|
27
|
+
index: index
|
|
28
|
+
}))).sort(((a, b) => a.value - b.value)), result = new Array(values.length);
|
|
29
|
+
for (let start = 0; start < order.length; ) {
|
|
30
|
+
let end = start + 1;
|
|
31
|
+
for (;end < order.length && order[end].value === order[start].value; ) end++;
|
|
32
|
+
const rank = (start + end + 1) / 2;
|
|
33
|
+
for (let i = start; i < end; i++) result[order[i].index] = rank;
|
|
34
|
+
start = end;
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function kendall(x, y) {
|
|
40
|
+
const pairs = x.map(((value, index) => ({
|
|
41
|
+
x: value,
|
|
42
|
+
y: y[index]
|
|
43
|
+
}))).sort(((a, b) => a.x - b.x || a.y - b.y)), sortedY = [ ...y ].sort(((a, b) => a - b)), yRanks = new Map;
|
|
44
|
+
let tiesY = 0;
|
|
45
|
+
for (let start = 0; start < sortedY.length; ) {
|
|
46
|
+
let end = start + 1;
|
|
47
|
+
for (;end < sortedY.length && sortedY[end] === sortedY[start]; ) end++;
|
|
48
|
+
tiesY += (end - start) * (end - start - 1) / 2, yRanks.set(sortedY[start], yRanks.size + 1),
|
|
49
|
+
start = end;
|
|
50
|
+
}
|
|
51
|
+
const tree = new Float64Array(yRanks.size + 1);
|
|
52
|
+
let tiesX = 0, tiesBoth = 0, discordant = 0;
|
|
53
|
+
for (let start = 0; start < pairs.length; ) {
|
|
54
|
+
let end = start + 1;
|
|
55
|
+
for (;end < pairs.length && pairs[end].x === pairs[start].x; ) end++;
|
|
56
|
+
tiesX += (end - start) * (end - start - 1) / 2;
|
|
57
|
+
for (let i = start; i < end; ) {
|
|
58
|
+
let j = i + 1;
|
|
59
|
+
for (;j < end && pairs[j].y === pairs[i].y; ) j++;
|
|
60
|
+
tiesBoth += (j - i) * (j - i - 1) / 2, i = j;
|
|
61
|
+
}
|
|
62
|
+
// 同 x 组先查询再更新,避免将 x ties 算成逆序。
|
|
63
|
+
for (let i = start; i < end; i++) {
|
|
64
|
+
let lessOrEqual = 0;
|
|
65
|
+
for (let rank = yRanks.get(pairs[i].y); rank > 0; rank -= rank & -rank) lessOrEqual += tree[rank];
|
|
66
|
+
discordant += start - lessOrEqual;
|
|
67
|
+
}
|
|
68
|
+
for (let i = start; i < end; i++) for (let rank = yRanks.get(pairs[i].y); rank < tree.length; rank += rank & -rank) tree[rank]++;
|
|
69
|
+
start = end;
|
|
70
|
+
}
|
|
71
|
+
const total = x.length * (x.length - 1) / 2;
|
|
72
|
+
if (total !== tiesX && total !== tiesY) return (total - tiesX - tiesY + tiesBoth - 2 * discordant) / Math.sqrt((total - tiesX) * (total - tiesY));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** 等长有限样本的相关系数;常量/不足两条返回 undefined,不修改数组。 */ function correlation(x, y, method = "pearson") {
|
|
76
|
+
if (x.length !== y.length || ![ "pearson", "spearman", "kendall" ].includes(method) || x.some((value => !Number.isFinite(value))) || y.some((value => !Number.isFinite(value)))) throw new RangeError("correlation requires equal finite arrays and a supported method");
|
|
77
|
+
if (!(x.length < 2)) return "kendall" === method ? kendall(x, y) : "spearman" === method ? pearson(ranks(x), ranks(y)) : pearson(x, y);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
Object.defineProperty(exports, "__esModule", {
|
|
81
|
+
value: !0
|
|
82
|
+
}), exports.correlation = void 0, exports.correlation = correlation;
|
|
83
|
+
//# sourceMappingURL=correlation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/correlation.ts"],"names":[],"mappings":"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","file":"correlation.js","sourcesContent":["export type CorrelationMethod = 'pearson' | 'spearman' | 'kendall';\n\nfunction pearson(x: readonly number[], y: readonly number[]): number | undefined {\n let sx = 0;\n let sy = 0;\n for (let i = 0; i < x.length; i++) {\n sx = Math.max(sx, Math.abs(x[i]));\n sy = Math.max(sy, Math.abs(y[i]));\n }\n if (!sx || !sy) {\n return undefined;\n }\n let mx = 0;\n let my = 0;\n let cx = 0;\n let cy = 0;\n for (let i = 0; i < x.length; i++) {\n const vx = x[i] / sx - cx;\n const vy = y[i] / sy - cy;\n const tx = mx + vx;\n const ty = my + vy;\n cx = tx - mx - vx;\n cy = ty - my - vy;\n mx = tx;\n my = ty;\n }\n mx /= x.length;\n my /= x.length;\n let xx = 0;\n let yy = 0;\n let xy = 0;\n for (let i = 0; i < x.length; i++) {\n const dx = x[i] / sx - mx;\n const dy = y[i] / sy - my;\n xx += dx * dx;\n yy += dy * dy;\n xy += dx * dy;\n }\n if (xx === 0 || yy === 0) {\n return undefined;\n }\n const result = xy / Math.sqrt(xx * yy);\n // 仅修正浮点舍入越过理论端点的几个 ulp。\n if (Math.abs(result) > 1 && Math.abs(result) <= 1 + 8 * Number.EPSILON) {\n return Math.sign(result);\n }\n return result;\n}\n\nfunction ranks(values: readonly number[]): number[] {\n const order = values.map((value, index) => ({ value, index })).sort((a, b) => a.value - b.value);\n const result = new Array<number>(values.length);\n for (let start = 0; start < order.length; ) {\n let end = start + 1;\n while (end < order.length && order[end].value === order[start].value) {\n end++;\n }\n const rank = (start + end + 1) / 2;\n for (let i = start; i < end; i++) {\n result[order[i].index] = rank;\n }\n start = end;\n }\n return result;\n}\n\nfunction kendall(x: readonly number[], y: readonly number[]): number | undefined {\n const pairs = x.map((value, index) => ({ x: value, y: y[index] })).sort((a, b) => a.x - b.x || a.y - b.y);\n const sortedY = [...y].sort((a, b) => a - b);\n const yRanks = new Map<number, number>();\n let tiesY = 0;\n for (let start = 0; start < sortedY.length; ) {\n let end = start + 1;\n while (end < sortedY.length && sortedY[end] === sortedY[start]) {\n end++;\n }\n tiesY += ((end - start) * (end - start - 1)) / 2;\n yRanks.set(sortedY[start], yRanks.size + 1);\n start = end;\n }\n const tree = new Float64Array(yRanks.size + 1);\n let tiesX = 0;\n let tiesBoth = 0;\n let discordant = 0;\n for (let start = 0; start < pairs.length; ) {\n let end = start + 1;\n while (end < pairs.length && pairs[end].x === pairs[start].x) {\n end++;\n }\n tiesX += ((end - start) * (end - start - 1)) / 2;\n for (let i = start; i < end; ) {\n let j = i + 1;\n while (j < end && pairs[j].y === pairs[i].y) {\n j++;\n }\n tiesBoth += ((j - i) * (j - i - 1)) / 2;\n i = j;\n }\n // 同 x 组先查询再更新,避免将 x ties 算成逆序。\n for (let i = start; i < end; i++) {\n let lessOrEqual = 0;\n for (let rank = yRanks.get(pairs[i].y)!; rank > 0; rank -= rank & -rank) {\n lessOrEqual += tree[rank];\n }\n discordant += start - lessOrEqual;\n }\n for (let i = start; i < end; i++) {\n for (let rank = yRanks.get(pairs[i].y)!; rank < tree.length; rank += rank & -rank) {\n tree[rank]++;\n }\n }\n start = end;\n }\n const total = (x.length * (x.length - 1)) / 2;\n if (total === tiesX || total === tiesY) {\n return undefined;\n }\n return (total - tiesX - tiesY + tiesBoth - 2 * discordant) / Math.sqrt((total - tiesX) * (total - tiesY));\n}\n\n/** 等长有限样本的相关系数;常量/不足两条返回 undefined,不修改数组。 */\nexport function correlation(\n x: readonly number[],\n y: readonly number[],\n method: CorrelationMethod = 'pearson'\n): number | undefined {\n if (\n x.length !== y.length ||\n !['pearson', 'spearman', 'kendall'].includes(method) ||\n x.some(value => !Number.isFinite(value)) ||\n y.some(value => !Number.isFinite(value))\n ) {\n throw new RangeError('correlation requires equal finite arrays and a supported method');\n }\n if (x.length < 2) {\n return undefined;\n }\n return method === 'kendall' ? kendall(x, y) : method === 'spearman' ? pearson(ranks(x), ranks(y)) : pearson(x, y);\n}\n"]}
|
package/cjs/common/debounce.js
CHANGED
|
@@ -10,6 +10,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
10
10
|
value: !0
|
|
11
11
|
});
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* @see https://github.com/lodash/lodash/blob/master/debounce.js
|
|
15
|
+
*/
|
|
13
16
|
const isObject_1 = __importDefault(require("./isObject")), isValidNumber_1 = __importDefault(require("./isValidNumber"));
|
|
14
17
|
|
|
15
18
|
let hasRaf = !1;
|
|
@@ -22,6 +25,7 @@ try {
|
|
|
22
25
|
|
|
23
26
|
function debounce(func, wait, options) {
|
|
24
27
|
let lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = !1, maxing = !1, trailing = !0;
|
|
28
|
+
// Bypass `requestAnimationFrame` by explicitly setting `wait=0`.
|
|
25
29
|
const useRAF = !wait && 0 !== wait && hasRaf;
|
|
26
30
|
if ("function" != typeof func) throw new TypeError("Expected a function");
|
|
27
31
|
function invokeFunc(time) {
|
|
@@ -34,27 +38,41 @@ function debounce(func, wait, options) {
|
|
|
34
38
|
}
|
|
35
39
|
function shouldInvoke(time) {
|
|
36
40
|
const timeSinceLastCall = time - lastCallTime;
|
|
41
|
+
// Either this is the first call, activity has stopped and we're at the
|
|
42
|
+
// trailing edge, the system time has gone backwards and we're treating
|
|
43
|
+
// it as the trailing edge, or we've hit the `maxWait` limit.
|
|
37
44
|
return void 0 === lastCallTime || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && time - lastInvokeTime >= maxWait;
|
|
38
45
|
}
|
|
39
46
|
function timerExpired() {
|
|
40
47
|
const time = Date.now();
|
|
41
48
|
if (shouldInvoke(time)) return trailingEdge(time);
|
|
42
|
-
|
|
49
|
+
// Restart the timer.
|
|
50
|
+
timerId = startTimer(timerExpired, function(time) {
|
|
43
51
|
const timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - (time - lastCallTime);
|
|
44
52
|
return maxing ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
|
|
45
53
|
}(time));
|
|
46
54
|
}
|
|
47
55
|
function trailingEdge(time) {
|
|
56
|
+
// Only invoke if we have `lastArgs` which means `func` has been
|
|
57
|
+
// debounced at least once.
|
|
48
58
|
return timerId = void 0, trailing && lastArgs ? invokeFunc(time) : (lastArgs = lastThis = void 0,
|
|
49
59
|
result);
|
|
50
60
|
}
|
|
51
61
|
function debounced(...args) {
|
|
52
62
|
const time = Date.now(), isInvoking = shouldInvoke(time);
|
|
53
|
-
if (lastArgs = args,
|
|
63
|
+
if (lastArgs = args,
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
lastThis = this, lastCallTime = time, isInvoking) {
|
|
54
66
|
if (void 0 === timerId) return function(time) {
|
|
55
|
-
|
|
67
|
+
// Invoke the leading edge.
|
|
68
|
+
// Reset any `maxWait` timer.
|
|
69
|
+
return lastInvokeTime = time,
|
|
70
|
+
// Start the timer for the trailing edge.
|
|
71
|
+
timerId = startTimer(timerExpired, wait), leading ? invokeFunc(time) : result;
|
|
56
72
|
}(lastCallTime);
|
|
57
|
-
if (maxing)
|
|
73
|
+
if (maxing)
|
|
74
|
+
// Handle invocations in a tight loop.
|
|
75
|
+
return timerId = startTimer(timerExpired, wait), invokeFunc(lastCallTime);
|
|
58
76
|
}
|
|
59
77
|
return void 0 === timerId && (timerId = startTimer(timerExpired, wait)), result;
|
|
60
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/debounce.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"sources":["../src/common/debounce.ts"],"names":[],"mappings":";;;;;AAAA;;GAEG;AACH,0DAAkC;AAClC,oEAA4C;AAW5C,IAAI,MAAM,GAAY,KAAK,CAAC;AAC5B,IAAI;IACF,MAAM,GAAG,OAAO,qBAAqB,KAAK,UAAU,IAAI,OAAO,oBAAoB,KAAK,UAAU,CAAC;CACpG;AAAC,OAAO,GAAG,EAAE;IACZ,MAAM,GAAG,KAAK,CAAC;CAChB;AACD,MAAM,GAAG,KAAK,CAAC;AAEf,SAAS,QAAQ,CACf,IAAyB,EACzB,IAAY,EACZ,OAAgC;IAEhC,IAAI,QAAa,CAAC;IAClB,IAAI,QAAa,CAAC;IAClB,IAAI,OAAe,CAAC;IACpB,IAAI,MAAW,CAAC;IAChB,oCAAoC;IACpC,IAAI,OAA4C,CAAC;IACjD,IAAI,YAAgC,CAAC;IAErC,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,iEAAiE;IACjE,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC;IAE7C,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;QAC9B,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;KAC5C;IACD,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;IAClB,IAAI,IAAA,kBAAQ,EAAC,OAAO,CAAC,EAAE;QACrB,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAC5B,MAAM,GAAG,SAAS,IAAI,OAAO,CAAC;QAC9B,IAAI,MAAM,EAAE;YACV,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAA,uBAAa,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SAChF;QAED,QAAQ,GAAG,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;KAClE;IAED,SAAS,UAAU,CAAC,IAAY;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC;QACtB,MAAM,OAAO,GAAG,QAAQ,CAAC;QAEzB,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAChC,cAAc,GAAG,IAAI,CAAC;QACtB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,UAAU,CAAC,WAAgB,EAAE,IAAY;QAChD,IAAI,MAAM,EAAE;YACV,oBAAoB,CAAC,OAAiB,CAAC,CAAC;YACxC,OAAO,qBAAqB,CAAC,WAAW,CAAC,CAAC;SAC3C;QACD,OAAO,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,SAAS,WAAW,CAAC,EAAU;QAC7B,IAAI,MAAM,EAAE;YACV,OAAO,oBAAoB,CAAC,EAAE,CAAC,CAAC;SACjC;QACD,YAAY,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,SAAS,WAAW,CAAC,IAAY;QAC/B,6BAA6B;QAC7B,cAAc,GAAG,IAAI,CAAC;QACtB,yCAAyC;QACzC,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzC,2BAA2B;QAC3B,OAAO,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7C,CAAC;IAED,SAAS,aAAa,CAAC,IAAY;QACjC,MAAM,iBAAiB,GAAG,IAAI,GAAI,YAAuB,CAAC;QAC1D,MAAM,mBAAmB,GAAG,IAAI,GAAG,cAAc,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,GAAG,iBAAiB,CAAC;QAE7C,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IACrF,CAAC;IAED,SAAS,YAAY,CAAC,IAAY;QAChC,MAAM,iBAAiB,GAAG,IAAI,GAAI,YAAuB,CAAC;QAC1D,MAAM,mBAAmB,GAAG,IAAI,GAAG,cAAc,CAAC;QAElD,uEAAuE;QACvE,uEAAuE;QACvE,6DAA6D;QAC7D,OAAO,CACL,YAAY,KAAK,SAAS;YAC1B,iBAAiB,IAAI,IAAI;YACzB,iBAAiB,GAAG,CAAC;YACrB,CAAC,MAAM,IAAI,mBAAmB,IAAI,OAAO,CAAC,CAC3C,CAAC;IACJ,CAAC;IAED,SAAS,YAAY;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;YACtB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;SAC3B;QACD,qBAAqB;QACrB,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,SAAS,YAAY,CAAC,IAAY;QAChC,OAAO,GAAG,SAAS,CAAC;QAEpB,gEAAgE;QAChE,2BAA2B;QAC3B,IAAI,QAAQ,IAAI,QAAQ,EAAE;YACxB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;SACzB;QACD,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,MAAM;QACb,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,WAAW,CAAC,OAAiB,CAAC,CAAC;SAChC;QACD,cAAc,GAAG,CAAC,CAAC;QACnB,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IAC3D,CAAC;IAED,SAAS,KAAK;QACZ,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,SAAS,OAAO;QACd,OAAO,OAAO,KAAK,SAAS,CAAC;IAC/B,CAAC;IAED,SAAS,SAAS,CAAC,GAAG,IAAW;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAEtC,QAAQ,GAAG,IAAI,CAAC;QAChB,aAAa;QACb,QAAQ,GAAG,IAAI,CAAC;QAChB,YAAY,GAAG,IAAI,CAAC;QAEpB,IAAI,UAAU,EAAE;YACd,IAAI,OAAO,KAAK,SAAS,EAAE;gBACzB,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC;aAClC;YACD,IAAI,MAAM,EAAE;gBACV,sCAAsC;gBACtC,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBACzC,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;aACjC;SACF;QACD,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;SAC1C;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACxB,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAC5B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,kBAAe,QAAQ,CAAC","file":"debounce.js","sourcesContent":["/**\n * @see https://github.com/lodash/lodash/blob/master/debounce.js\n */\nimport isObject from './isObject';\nimport isValidNumber from './isValidNumber';\n\nexport type FunctionControlOptions = {\n // 是否在等待开始时调用\n leading?: boolean;\n // 是否在等待结束后调用\n trailing?: boolean;\n // 最长等待时间\n maxWait?: number;\n};\n\nlet hasRaf: boolean = false;\ntry {\n hasRaf = typeof requestAnimationFrame === 'function' && typeof cancelAnimationFrame === 'function';\n} catch (err) {\n hasRaf = false;\n}\nhasRaf = false;\n\nfunction debounce<T, S>(\n func: (...args: T[]) => S,\n wait: number,\n options?: FunctionControlOptions\n): (...args: T[]) => S {\n let lastArgs: any;\n let lastThis: any;\n let maxWait: number;\n let result: any;\n // eslint-disable-next-line no-undef\n let timerId: number | NodeJS.Timeout | undefined;\n let lastCallTime: number | undefined;\n\n let lastInvokeTime = 0;\n let leading = false;\n let maxing = false;\n let trailing = true;\n\n // Bypass `requestAnimationFrame` by explicitly setting `wait=0`.\n const useRAF = !wait && wait !== 0 && hasRaf;\n\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function');\n }\n wait = +wait || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n if (maxing) {\n maxWait = Math.max(isValidNumber(options.maxWait) ? options.maxWait : 0, wait);\n }\n\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time: number) {\n const args = lastArgs;\n const thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function startTimer(pendingFunc: any, wait: number) {\n if (useRAF) {\n cancelAnimationFrame(timerId as number);\n return requestAnimationFrame(pendingFunc);\n }\n return setTimeout(pendingFunc, wait);\n }\n\n function cancelTimer(id: number) {\n if (useRAF) {\n return cancelAnimationFrame(id);\n }\n clearTimeout(id);\n }\n\n function leadingEdge(time: number) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = startTimer(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time: number) {\n const timeSinceLastCall = time - (lastCallTime as number);\n const timeSinceLastInvoke = time - lastInvokeTime;\n const timeWaiting = wait - timeSinceLastCall;\n\n return maxing ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n\n function shouldInvoke(time: number) {\n const timeSinceLastCall = time - (lastCallTime as number);\n const timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (\n lastCallTime === undefined ||\n timeSinceLastCall >= wait ||\n timeSinceLastCall < 0 ||\n (maxing && timeSinceLastInvoke >= maxWait)\n );\n }\n\n function timerExpired() {\n const time = Date.now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = startTimer(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time: number) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n cancelTimer(timerId as number);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(Date.now());\n }\n\n function pending() {\n return timerId !== undefined;\n }\n\n function debounced(...args: any[]) {\n const time = Date.now();\n const isInvoking = shouldInvoke(time);\n\n lastArgs = args;\n // @ts-ignore\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = startTimer(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = startTimer(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n debounced.pending = pending;\n return debounced;\n}\n\nexport default debounce;\n"]}
|
package/cjs/common/deviation.js
CHANGED
package/cjs/common/ecdf.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Empirical Cumulative Distribution Function (ECDF)
|
|
3
|
+
* Returns a factory that builds an evaluator over provided samples.
|
|
4
|
+
* The evaluator exposes:
|
|
5
|
+
* - evaluate(x:number) => proportion of samples <= x
|
|
6
|
+
* - evaluate(xs:number[]) => number[]
|
|
7
|
+
* - evaluateGrid(N:number) => { points: number[], cdf: number[] } over sample range
|
|
8
|
+
*/
|
|
1
9
|
export interface ECDFEvaluator {
|
|
2
10
|
evaluate: (x: number | number[]) => number | number[];
|
|
3
11
|
evaluateGrid: (N: number) => {
|
package/cjs/common/ecdf.js
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Empirical Cumulative Distribution Function (ECDF)
|
|
5
|
+
* Returns a factory that builds an evaluator over provided samples.
|
|
6
|
+
* The evaluator exposes:
|
|
7
|
+
* - evaluate(x:number) => proportion of samples <= x
|
|
8
|
+
* - evaluate(xs:number[]) => number[]
|
|
9
|
+
* - evaluateGrid(N:number) => { points: number[], cdf: number[] } over sample range
|
|
10
|
+
*/ function ecdf(data) {
|
|
4
11
|
const n = data.length, sorted = data.slice().sort(((a, b) => a - b));
|
|
5
12
|
function evaluateSingle(x) {
|
|
6
13
|
if (0 === n) return 0;
|
|
7
|
-
|
|
14
|
+
// count of values <= x (upper bound index)
|
|
15
|
+
let lo = 0, hi = n;
|
|
16
|
+
// exclusive
|
|
8
17
|
for (;lo < hi; ) {
|
|
9
18
|
const mid = lo + hi >>> 1;
|
|
10
19
|
sorted[mid] <= x ? lo = mid + 1 : hi = mid;
|
package/cjs/common/ecdf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/ecdf.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"sources":["../src/common/ecdf.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAQH,SAAgB,IAAI,CAAC,IAAc;IACjC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAElD,SAAS,cAAc,CAAC,CAAS;QAC/B,IAAI,CAAC,KAAK,CAAC,EAAE;YACX,OAAO,CAAC,CAAC;SACV;QACD,2CAA2C;QAC3C,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY;QACxB,OAAO,EAAE,GAAG,EAAE,EAAE;YACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACpB,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;aACd;iBAAM;gBACL,EAAE,GAAG,GAAG,CAAC;aACV;SACF;QACD,OAAO,EAAE,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,SAAS,QAAQ,CAAC,CAAoB;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACjC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChC;YACD,OAAO,GAAG,CAAC;SACZ;QACD,OAAO,cAAc,CAAC,CAAW,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,YAAY,CAAC,CAAS;QAC7B,MAAM,GAAG,GAA+B,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,EAAE;YACV,OAAO,GAAG,CAAC;SACZ;QACD,IAAI,CAAC,KAAK,CAAC,EAAE;YACX,OAAO,GAAG,CAAC;SACZ;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,GAAG,EAAE;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aAC5B;YACD,OAAO,GAAG,CAAC;SACZ;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;YAE7C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACvC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,QAAe;QACzB,YAAY;QACZ,CAAC;KACF,CAAC;AACJ,CAAC;AA/DD,oBA+DC;AAED,kBAAe,IAAI,CAAC","file":"ecdf.js","sourcesContent":["/**\n * Empirical Cumulative Distribution Function (ECDF)\n * Returns a factory that builds an evaluator over provided samples.\n * The evaluator exposes:\n * - evaluate(x:number) => proportion of samples <= x\n * - evaluate(xs:number[]) => number[]\n * - evaluateGrid(N:number) => { points: number[], cdf: number[] } over sample range\n */\n\nexport interface ECDFEvaluator {\n evaluate: (x: number | number[]) => number | number[];\n evaluateGrid: (N: number) => { x: number; y: number }[];\n n: number;\n}\n\nexport function ecdf(data: number[]): ECDFEvaluator {\n const n = data.length;\n const sorted = data.slice().sort((a, b) => a - b);\n\n function evaluateSingle(x: number) {\n if (n === 0) {\n return 0;\n }\n // count of values <= x (upper bound index)\n let lo = 0;\n let hi = n; // exclusive\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (sorted[mid] <= x) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo / n;\n }\n\n function evaluate(x: number | number[]) {\n if (Array.isArray(x)) {\n const out: number[] = [];\n for (let i = 0; i < x.length; i++) {\n out.push(evaluateSingle(x[i]));\n }\n return out;\n }\n return evaluateSingle(x as number);\n }\n\n function evaluateGrid(N: number) {\n const out: { x: number; y: number }[] = [];\n if (N <= 0) {\n return out;\n }\n if (n === 0) {\n return out;\n }\n const min = sorted[0];\n const max = sorted[n - 1];\n if (min === max) {\n for (let i = 0; i < N; i++) {\n out.push({ x: min, y: 1 });\n }\n return out;\n }\n const step = (max - min) / (N - 1);\n for (let i = 0; i < N; i++) {\n const x = i === N - 1 ? max : min + step * i;\n\n out.push({ x, y: evaluateSingle(x) });\n }\n return out;\n }\n\n return {\n evaluate: evaluate as any,\n evaluateGrid,\n n\n };\n}\n\nexport default ecdf;\n"]}
|
package/cjs/common/extent.d.ts
CHANGED
package/cjs/common/extent.js
CHANGED
|
@@ -15,7 +15,8 @@ const isFunction_1 = __importDefault(require("./isFunction")), isNil_1 = __impor
|
|
|
15
15
|
let min, max;
|
|
16
16
|
if (array && array.length) {
|
|
17
17
|
const n = array.length;
|
|
18
|
-
|
|
18
|
+
// find first valid value
|
|
19
|
+
for (let i = 0; i < n; i += 1) {
|
|
19
20
|
let value = valueGetter(array[i]);
|
|
20
21
|
(0, isNil_1.default)(value) || !(0, isNumber_1.default)(value = +value) || Number.isNaN(value) || ((0,
|
|
21
22
|
isNil_1.default)(min) ? (min = value, max = value) : (min = Math.min(min, value),
|
|
@@ -26,4 +27,5 @@ const isFunction_1 = __importDefault(require("./isFunction")), isNil_1 = __impor
|
|
|
26
27
|
return [ min, max ];
|
|
27
28
|
};
|
|
28
29
|
|
|
29
|
-
exports.extent = extent;
|
|
30
|
+
exports.extent = extent;
|
|
31
|
+
//# sourceMappingURL=extent.js.map
|
package/cjs/common/extent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/extent.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAsC;AACtC,oDAA4B;AAC5B,0DAAkC;
|
|
1
|
+
{"version":3,"sources":["../src/common/extent.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAsC;AACtC,oDAA4B;AAC5B,0DAAkC;AAClC;;;GAGG;AACI,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;QAEvB,yBAAyB;QACzB,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"]}
|
package/cjs/common/field.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
|
+
/** 获取字段值的函数 */
|
|
1
2
|
export type FieldGetterFunction = (val: any) => any;
|
|
3
|
+
/** 根据字段路径,返回获取相应路径属性的函数 */
|
|
2
4
|
export type Getter = (path: string[]) => FieldGetterFunction;
|
|
3
5
|
export type FieldOption = {
|
|
4
6
|
field: string;
|
|
5
7
|
};
|
|
6
8
|
export type TagItemAttribute<T> = T | ((d?: any) => T);
|
|
9
|
+
/** field函数对应的参数 */
|
|
7
10
|
export interface FieldGetterGeneratorOptions {
|
|
8
11
|
get?: Getter;
|
|
9
12
|
}
|
|
10
13
|
export declare const getter: (path: string[]) => any;
|
|
11
14
|
export declare const field: (fieldStr: string | string[] | FieldGetterFunction | FieldGetterFunction[], opt?: FieldGetterGeneratorOptions) => any;
|
|
15
|
+
/**
|
|
16
|
+
* 取数逻辑
|
|
17
|
+
*/
|
|
12
18
|
export declare const simpleField: <T>(option: FieldOption | TagItemAttribute<T>) => (datum: any) => any;
|
package/cjs/common/field.js
CHANGED
|
@@ -29,6 +29,9 @@ const fieldSingle = (fieldStr, opt = {}) => {
|
|
|
29
29
|
|
|
30
30
|
exports.field = field;
|
|
31
31
|
|
|
32
|
+
/**
|
|
33
|
+
* 取数逻辑
|
|
34
|
+
*/
|
|
32
35
|
const simpleField = option => option ? "string" == typeof option || "number" == typeof option ? () => option : (0,
|
|
33
36
|
isFunction_1.default)(option) ? option : datum => datum[option.field] : null;
|
|
34
37
|
|
package/cjs/common/field.js.map
CHANGED
|
@@ -1 +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;
|
|
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;AAEF;;GAEG;AACI,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"]}
|
package/cjs/common/has.d.ts
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
1
|
import type { Dict } from './../type';
|
|
2
|
+
/**
|
|
3
|
+
* Checks if `key` is a direct property of `object`.
|
|
4
|
+
*
|
|
5
|
+
* @param {Object} object The object to query.
|
|
6
|
+
* @param {string} key The key to check.
|
|
7
|
+
* @returns {boolean} Returns `true` if `key` exists, else `false`.
|
|
8
|
+
* @example
|
|
9
|
+
*
|
|
10
|
+
* const object = { 'a': { 'b': 2 } }
|
|
11
|
+
* const other = create({ 'a': create({ 'b': 2 }) })
|
|
12
|
+
*
|
|
13
|
+
* has(object, 'a')
|
|
14
|
+
* // => true
|
|
15
|
+
*
|
|
16
|
+
* has(other, 'a')
|
|
17
|
+
* // => false
|
|
18
|
+
*/
|
|
2
19
|
declare const has: (object: Dict<any>, key: any) => boolean;
|
|
3
20
|
export default has;
|
package/cjs/common/has.js
CHANGED
|
@@ -4,7 +4,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
});
|
|
6
6
|
|
|
7
|
+
/** Used to check objects for own properties. */
|
|
7
8
|
const hasOwnProperty = Object.prototype.hasOwnProperty, has = (object, key) => null != object && hasOwnProperty.call(object, key);
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Checks if `key` is a direct property of `object`.
|
|
12
|
+
*
|
|
13
|
+
* @param {Object} object The object to query.
|
|
14
|
+
* @param {string} key The key to check.
|
|
15
|
+
* @returns {boolean} Returns `true` if `key` exists, else `false`.
|
|
16
|
+
* @example
|
|
17
|
+
*
|
|
18
|
+
* const object = { 'a': { 'b': 2 } }
|
|
19
|
+
* const other = create({ 'a': create({ 'b': 2 }) })
|
|
20
|
+
*
|
|
21
|
+
* has(object, 'a')
|
|
22
|
+
* // => true
|
|
23
|
+
*
|
|
24
|
+
* has(other, 'a')
|
|
25
|
+
* // => false
|
|
26
|
+
*/ exports.default = has;
|
|
10
27
|
//# sourceMappingURL=has.js.map
|
package/cjs/common/has.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/has.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"sources":["../src/common/has.ts"],"names":[],"mappings":";;AAEA,gDAAgD;AAChD,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,GAAG,GAAG,CAAC,MAAiB,EAAE,GAAQ,EAAW,EAAE;IACnD,OAAO,MAAM,IAAI,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,kBAAe,GAAG,CAAC","file":"has.js","sourcesContent":["import type { Dict } from './../type';\n\n/** Used to check objects for own properties. */\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Checks if `key` is a direct property of `object`.\n *\n * @param {Object} object The object to query.\n * @param {string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n * @example\n *\n * const object = { 'a': { 'b': 2 } }\n * const other = create({ 'a': create({ 'b': 2 }) })\n *\n * has(object, 'a')\n * // => true\n *\n * has(other, 'a')\n * // => false\n */\nconst has = (object: Dict<any>, key: any): boolean => {\n return object != null && hasOwnProperty.call(object, key);\n};\n\nexport default has;\n"]}
|
package/cjs/common/index.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export * from './array';
|
|
|
33
33
|
export { range } from './range';
|
|
34
34
|
export { ascending } from './ascending';
|
|
35
35
|
export * from './quantileSorted';
|
|
36
|
+
export { normalQuantile } from './normalQuantile';
|
|
36
37
|
export { bisect, findZeroOfFunction, binaryFuzzySearch, binaryFuzzySearchInNumberRange } from './bisect';
|
|
37
38
|
export { deviation } from './deviation';
|
|
38
39
|
export { median } from './median';
|
|
@@ -67,3 +68,7 @@ export * from './regression-lowess';
|
|
|
67
68
|
export * from './regression-polynomial';
|
|
68
69
|
export * from './kde';
|
|
69
70
|
export * from './ecdf';
|
|
71
|
+
export * from './correlation';
|
|
72
|
+
export * from './mean';
|
|
73
|
+
export * from './bootstrap';
|
|
74
|
+
export * from './regression-bootstrap';
|
package/cjs/common/index.js
CHANGED
|
@@ -21,9 +21,10 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
|
|
|
21
21
|
|
|
22
22
|
Object.defineProperty(exports, "__esModule", {
|
|
23
23
|
value: !0
|
|
24
|
-
}), exports.
|
|
25
|
-
exports.substitute = exports.upperFirst = exports.lowerFirst = exports.toValidNumber = exports.toNumber = exports.toDate = exports.throttle = void 0;
|
|
24
|
+
}), exports.clamper = exports.clampRange = exports.clamp = exports.uuid = exports.truncate = exports.pad = exports.memoize = exports.constant = exports.tickStep = exports.variance = exports.median = exports.deviation = exports.binaryFuzzySearchInNumberRange = exports.binaryFuzzySearch = exports.findZeroOfFunction = exports.bisect = exports.normalQuantile = exports.ascending = exports.range = exports.isShallowEqual = exports.isEqual = exports.pickWithout = exports.pick = exports.baseMerge = exports.merge = exports.cloneDeep = exports.clone = exports.has = exports.get = exports.isEmpty = exports.isBase64 = exports.isRegExp = exports.isValidUrl = exports.isValidNumber = exports.isNumeric = exports.isNumber = exports.isDate = exports.isArrayLike = exports.isArray = exports.isString = exports.isUndefined = exports.isType = exports.isPlainObject = exports.isObjectLike = exports.isObject = exports.isValid = exports.isNull = exports.isNil = exports.isFunction = exports.isBoolean = void 0,
|
|
25
|
+
exports.substitute = exports.upperFirst = exports.lowerFirst = exports.toValidNumber = exports.toNumber = exports.toDate = exports.throttle = exports.debounce = void 0;
|
|
26
26
|
|
|
27
|
+
// type check
|
|
27
28
|
var isBoolean_1 = require("./isBoolean");
|
|
28
29
|
|
|
29
30
|
Object.defineProperty(exports, "isBoolean", {
|
|
@@ -213,6 +214,7 @@ Object.defineProperty(exports, "isEmpty", {
|
|
|
213
214
|
}
|
|
214
215
|
});
|
|
215
216
|
|
|
217
|
+
// object
|
|
216
218
|
var get_1 = require("./get");
|
|
217
219
|
|
|
218
220
|
Object.defineProperty(exports, "get", {
|
|
@@ -297,7 +299,9 @@ Object.defineProperty(exports, "isShallowEqual", {
|
|
|
297
299
|
get: function() {
|
|
298
300
|
return isShallowEqual_1.isShallowEqual;
|
|
299
301
|
}
|
|
300
|
-
}), __exportStar(require("./mixin"), exports),
|
|
302
|
+
}), __exportStar(require("./mixin"), exports),
|
|
303
|
+
// array
|
|
304
|
+
__exportStar(require("./array"), exports);
|
|
301
305
|
|
|
302
306
|
var range_1 = require("./range");
|
|
303
307
|
|
|
@@ -317,6 +321,15 @@ Object.defineProperty(exports, "ascending", {
|
|
|
317
321
|
}
|
|
318
322
|
}), __exportStar(require("./quantileSorted"), exports);
|
|
319
323
|
|
|
324
|
+
var normalQuantile_1 = require("./normalQuantile");
|
|
325
|
+
|
|
326
|
+
Object.defineProperty(exports, "normalQuantile", {
|
|
327
|
+
enumerable: !0,
|
|
328
|
+
get: function() {
|
|
329
|
+
return normalQuantile_1.normalQuantile;
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
|
|
320
333
|
var bisect_1 = require("./bisect");
|
|
321
334
|
|
|
322
335
|
Object.defineProperty(exports, "bisect", {
|
|
@@ -368,6 +381,7 @@ Object.defineProperty(exports, "variance", {
|
|
|
368
381
|
}
|
|
369
382
|
});
|
|
370
383
|
|
|
384
|
+
// tick
|
|
371
385
|
var tickStep_1 = require("./tickStep");
|
|
372
386
|
|
|
373
387
|
Object.defineProperty(exports, "tickStep", {
|
|
@@ -375,8 +389,11 @@ Object.defineProperty(exports, "tickStep", {
|
|
|
375
389
|
get: function() {
|
|
376
390
|
return tickStep_1.tickStep;
|
|
377
391
|
}
|
|
378
|
-
}),
|
|
392
|
+
}),
|
|
393
|
+
// number
|
|
394
|
+
__exportStar(require("./number"), exports);
|
|
379
395
|
|
|
396
|
+
// function
|
|
380
397
|
var constant_1 = require("./constant");
|
|
381
398
|
|
|
382
399
|
Object.defineProperty(exports, "constant", {
|
|
@@ -395,6 +412,7 @@ Object.defineProperty(exports, "memoize", {
|
|
|
395
412
|
}
|
|
396
413
|
});
|
|
397
414
|
|
|
415
|
+
// pad
|
|
398
416
|
var pad_1 = require("./pad");
|
|
399
417
|
|
|
400
418
|
Object.defineProperty(exports, "pad", {
|
|
@@ -413,6 +431,7 @@ Object.defineProperty(exports, "truncate", {
|
|
|
413
431
|
}
|
|
414
432
|
});
|
|
415
433
|
|
|
434
|
+
// uuid
|
|
416
435
|
var uuid_1 = require("./uuid");
|
|
417
436
|
|
|
418
437
|
Object.defineProperty(exports, "uuid", {
|
|
@@ -422,6 +441,7 @@ Object.defineProperty(exports, "uuid", {
|
|
|
422
441
|
}
|
|
423
442
|
});
|
|
424
443
|
|
|
444
|
+
// clamp
|
|
425
445
|
var clamp_1 = require("./clamp");
|
|
426
446
|
|
|
427
447
|
Object.defineProperty(exports, "clamp", {
|
|
@@ -449,6 +469,7 @@ Object.defineProperty(exports, "clamper", {
|
|
|
449
469
|
}
|
|
450
470
|
});
|
|
451
471
|
|
|
472
|
+
// debounce & throttle
|
|
452
473
|
var debounce_1 = require("./debounce");
|
|
453
474
|
|
|
454
475
|
Object.defineProperty(exports, "debounce", {
|
|
@@ -465,8 +486,11 @@ Object.defineProperty(exports, "throttle", {
|
|
|
465
486
|
get: function() {
|
|
466
487
|
return __importDefault(throttle_1).default;
|
|
467
488
|
}
|
|
468
|
-
}),
|
|
489
|
+
}),
|
|
490
|
+
// interpolate
|
|
491
|
+
__exportStar(require("./interpolate"), exports);
|
|
469
492
|
|
|
493
|
+
// type convert
|
|
470
494
|
var toDate_1 = require("./toDate");
|
|
471
495
|
|
|
472
496
|
Object.defineProperty(exports, "toDate", {
|
|
@@ -494,6 +518,7 @@ Object.defineProperty(exports, "toValidNumber", {
|
|
|
494
518
|
}
|
|
495
519
|
});
|
|
496
520
|
|
|
521
|
+
// string
|
|
497
522
|
var lowerFirst_1 = require("./lowerFirst");
|
|
498
523
|
|
|
499
524
|
Object.defineProperty(exports, "lowerFirst", {
|
|
@@ -512,6 +537,7 @@ Object.defineProperty(exports, "upperFirst", {
|
|
|
512
537
|
}
|
|
513
538
|
});
|
|
514
539
|
|
|
540
|
+
// string format
|
|
515
541
|
var substitute_1 = require("./substitute");
|
|
516
542
|
|
|
517
543
|
Object.defineProperty(exports, "substitute", {
|
|
@@ -524,5 +550,7 @@ __exportStar(require("./toPercent"), exports), __exportStar(require("./zero"), e
|
|
|
524
550
|
__exportStar(require("./extent"), exports), __exportStar(require("./regression-linear"), exports),
|
|
525
551
|
__exportStar(require("./regression-logistic"), exports), __exportStar(require("./regression-lowess"), exports),
|
|
526
552
|
__exportStar(require("./regression-polynomial"), exports), __exportStar(require("./kde"), exports),
|
|
527
|
-
__exportStar(require("./ecdf"), exports)
|
|
553
|
+
__exportStar(require("./ecdf"), exports), __exportStar(require("./correlation"), exports),
|
|
554
|
+
__exportStar(require("./mean"), exports), __exportStar(require("./bootstrap"), exports),
|
|
555
|
+
__exportStar(require("./regression-bootstrap"), exports);
|
|
528
556
|
//# sourceMappingURL=index.js.map
|