@visactor/vutils 0.9.0-alpha.0
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.md +34 -0
- package/README.zh-CN.md +0 -0
- package/cjs/angle.d.ts +12 -0
- package/cjs/angle.js +40 -0
- package/cjs/angle.js.map +1 -0
- package/cjs/color/Color.d.ts +181 -0
- package/cjs/color/Color.js +298 -0
- package/cjs/color/Color.js.map +1 -0
- package/cjs/color/hexToRgb.d.ts +1 -0
- package/cjs/color/hexToRgb.js +13 -0
- package/cjs/color/hexToRgb.js.map +1 -0
- package/cjs/color/hslToRgb.d.ts +5 -0
- package/cjs/color/hslToRgb.js +21 -0
- package/cjs/color/hslToRgb.js.map +1 -0
- package/cjs/color/index.d.ts +6 -0
- package/cjs/color/index.js +80 -0
- package/cjs/color/index.js.map +1 -0
- package/cjs/color/interpolate.d.ts +2 -0
- package/cjs/color/interpolate.js +18 -0
- package/cjs/color/interpolate.js.map +1 -0
- package/cjs/color/rgbToHex.d.ts +1 -0
- package/cjs/color/rgbToHex.js +10 -0
- package/cjs/color/rgbToHex.js.map +1 -0
- package/cjs/color/rgbToHsl.d.ts +5 -0
- package/cjs/color/rgbToHsl.js +19 -0
- package/cjs/color/rgbToHsl.js.map +1 -0
- package/cjs/common/array.d.ts +9 -0
- package/cjs/common/array.js +64 -0
- package/cjs/common/array.js.map +1 -0
- package/cjs/common/ascending.d.ts +1 -0
- package/cjs/common/ascending.js +10 -0
- package/cjs/common/ascending.js.map +1 -0
- package/cjs/common/bisect.d.ts +1 -0
- package/cjs/common/bisect.js +24 -0
- package/cjs/common/bisect.js.map +1 -0
- package/cjs/common/clamp.d.ts +2 -0
- package/cjs/common/clamp.js +12 -0
- package/cjs/common/clamp.js.map +1 -0
- package/cjs/common/clampRange.d.ts +2 -0
- package/cjs/common/clampRange.js +16 -0
- package/cjs/common/clampRange.js.map +1 -0
- package/cjs/common/clamper.d.ts +1 -0
- package/cjs/common/clamper.js +11 -0
- package/cjs/common/clamper.js.map +1 -0
- package/cjs/common/clone.d.ts +1 -0
- package/cjs/common/clone.js +42 -0
- package/cjs/common/clone.js.map +1 -0
- package/cjs/common/cloneDeep.d.ts +1 -0
- package/cjs/common/cloneDeep.js +31 -0
- package/cjs/common/cloneDeep.js.map +1 -0
- package/cjs/common/constant.d.ts +2 -0
- package/cjs/common/constant.js +17 -0
- package/cjs/common/constant.js.map +1 -0
- package/cjs/common/debounce.d.ts +7 -0
- package/cjs/common/debounce.js +76 -0
- package/cjs/common/debounce.js.map +1 -0
- package/cjs/common/deviation.d.ts +1 -0
- package/cjs/common/deviation.js +15 -0
- package/cjs/common/deviation.js.map +1 -0
- package/cjs/common/get.d.ts +3 -0
- package/cjs/common/get.js +20 -0
- package/cjs/common/get.js.map +1 -0
- package/cjs/common/getType.d.ts +2 -0
- package/cjs/common/getType.js +9 -0
- package/cjs/common/getType.js.map +1 -0
- package/cjs/common/has.d.ts +3 -0
- package/cjs/common/has.js +10 -0
- package/cjs/common/has.js.map +1 -0
- package/cjs/common/index.d.ts +56 -0
- package/cjs/common/index.js +485 -0
- package/cjs/common/index.js.map +1 -0
- package/cjs/common/interpolate.d.ts +4 -0
- package/cjs/common/interpolate.js +55 -0
- package/cjs/common/interpolate.js.map +1 -0
- package/cjs/common/isArray.d.ts +2 -0
- package/cjs/common/isArray.js +17 -0
- package/cjs/common/isArray.js.map +1 -0
- package/cjs/common/isArrayLike.d.ts +2 -0
- package/cjs/common/isArrayLike.js +12 -0
- package/cjs/common/isArrayLike.js.map +1 -0
- package/cjs/common/isBase64.d.ts +2 -0
- package/cjs/common/isBase64.js +10 -0
- package/cjs/common/isBase64.js.map +1 -0
- package/cjs/common/isBoolean.d.ts +2 -0
- package/cjs/common/isBoolean.js +17 -0
- package/cjs/common/isBoolean.js.map +1 -0
- package/cjs/common/isDate.d.ts +2 -0
- package/cjs/common/isDate.js +16 -0
- package/cjs/common/isDate.js.map +1 -0
- package/cjs/common/isEmpty.d.ts +2 -0
- package/cjs/common/isEmpty.js +26 -0
- package/cjs/common/isEmpty.js.map +1 -0
- package/cjs/common/isEqual.d.ts +1 -0
- package/cjs/common/isEqual.js +49 -0
- package/cjs/common/isEqual.js.map +1 -0
- package/cjs/common/isFunction.d.ts +2 -0
- package/cjs/common/isFunction.js +10 -0
- package/cjs/common/isFunction.js.map +1 -0
- package/cjs/common/isNil.d.ts +2 -0
- package/cjs/common/isNil.js +10 -0
- package/cjs/common/isNil.js.map +1 -0
- package/cjs/common/isNull.d.ts +2 -0
- package/cjs/common/isNull.js +10 -0
- package/cjs/common/isNull.js.map +1 -0
- package/cjs/common/isNumber.d.ts +2 -0
- package/cjs/common/isNumber.js +19 -0
- package/cjs/common/isNumber.js.map +1 -0
- package/cjs/common/isNumeric.d.ts +2 -0
- package/cjs/common/isNumeric.js +10 -0
- package/cjs/common/isNumeric.js.map +1 -0
- package/cjs/common/isObject.d.ts +2 -0
- package/cjs/common/isObject.js +12 -0
- package/cjs/common/isObject.js.map +1 -0
- package/cjs/common/isObjectLike.d.ts +2 -0
- package/cjs/common/isObjectLike.js +10 -0
- package/cjs/common/isObjectLike.js.map +1 -0
- package/cjs/common/isPlainObject.d.ts +2 -0
- package/cjs/common/isPlainObject.js +22 -0
- package/cjs/common/isPlainObject.js.map +1 -0
- package/cjs/common/isPrototype.d.ts +2 -0
- package/cjs/common/isPrototype.js +13 -0
- package/cjs/common/isPrototype.js.map +1 -0
- package/cjs/common/isRegExp.d.ts +2 -0
- package/cjs/common/isRegExp.js +16 -0
- package/cjs/common/isRegExp.js.map +1 -0
- package/cjs/common/isShallowEqual.d.ts +1 -0
- package/cjs/common/isShallowEqual.js +34 -0
- package/cjs/common/isShallowEqual.js.map +1 -0
- package/cjs/common/isString.d.ts +2 -0
- package/cjs/common/isString.js +19 -0
- package/cjs/common/isString.js.map +1 -0
- package/cjs/common/isType.d.ts +2 -0
- package/cjs/common/isType.js +10 -0
- package/cjs/common/isType.js.map +1 -0
- package/cjs/common/isUndefined.d.ts +2 -0
- package/cjs/common/isUndefined.js +10 -0
- package/cjs/common/isUndefined.js.map +1 -0
- package/cjs/common/isValid.d.ts +2 -0
- package/cjs/common/isValid.js +10 -0
- package/cjs/common/isValid.js.map +1 -0
- package/cjs/common/isValidNumber.d.ts +2 -0
- package/cjs/common/isValidNumber.js +17 -0
- package/cjs/common/isValidNumber.js.map +1 -0
- package/cjs/common/isValidUrl.d.ts +2 -0
- package/cjs/common/isValidUrl.js +10 -0
- package/cjs/common/isValidUrl.js.map +1 -0
- package/cjs/common/lowerFirst.d.ts +2 -0
- package/cjs/common/lowerFirst.js +12 -0
- package/cjs/common/lowerFirst.js.map +1 -0
- package/cjs/common/median.d.ts +1 -0
- package/cjs/common/median.js +13 -0
- package/cjs/common/median.js.map +1 -0
- package/cjs/common/merge.d.ts +1 -0
- package/cjs/common/merge.js +63 -0
- package/cjs/common/merge.js.map +1 -0
- package/cjs/common/mixin.d.ts +5 -0
- package/cjs/common/mixin.js +35 -0
- package/cjs/common/mixin.js.map +1 -0
- package/cjs/common/number.d.ts +3 -0
- package/cjs/common/number.js +23 -0
- package/cjs/common/number.js.map +1 -0
- package/cjs/common/pad.d.ts +2 -0
- package/cjs/common/pad.js +17 -0
- package/cjs/common/pad.js.map +1 -0
- package/cjs/common/pick.d.ts +1 -0
- package/cjs/common/pick.js +24 -0
- package/cjs/common/pick.js.map +1 -0
- package/cjs/common/pickWithout.d.ts +1 -0
- package/cjs/common/pickWithout.js +28 -0
- package/cjs/common/pickWithout.js.map +1 -0
- package/cjs/common/quantileSorted.d.ts +1 -0
- package/cjs/common/quantileSorted.js +19 -0
- package/cjs/common/quantileSorted.js.map +1 -0
- package/cjs/common/range.d.ts +1 -0
- package/cjs/common/range.js +24 -0
- package/cjs/common/range.js.map +1 -0
- package/cjs/common/throttle.d.ts +5 -0
- package/cjs/common/throttle.js +27 -0
- package/cjs/common/throttle.js.map +1 -0
- package/cjs/common/tickStep.d.ts +1 -0
- package/cjs/common/tickStep.js +18 -0
- package/cjs/common/tickStep.js.map +1 -0
- package/cjs/common/toDate.d.ts +2 -0
- package/cjs/common/toDate.js +28 -0
- package/cjs/common/toDate.js.map +1 -0
- package/cjs/common/toNumber.d.ts +1 -0
- package/cjs/common/toNumber.js +10 -0
- package/cjs/common/toNumber.js.map +1 -0
- package/cjs/common/toValidNumber.d.ts +1 -0
- package/cjs/common/toValidNumber.js +22 -0
- package/cjs/common/toValidNumber.js.map +1 -0
- package/cjs/common/truncate.d.ts +2 -0
- package/cjs/common/truncate.js +19 -0
- package/cjs/common/truncate.js.map +1 -0
- package/cjs/common/upperFirst.d.ts +2 -0
- package/cjs/common/upperFirst.js +12 -0
- package/cjs/common/upperFirst.js.map +1 -0
- package/cjs/common/uuid.d.ts +2 -0
- package/cjs/common/uuid.js +19 -0
- package/cjs/common/uuid.js.map +1 -0
- package/cjs/common/variance.d.ts +1 -0
- package/cjs/common/variance.js +17 -0
- package/cjs/common/variance.js.map +1 -0
- package/cjs/data-structure/bounds.d.ts +81 -0
- package/cjs/data-structure/bounds.js +139 -0
- package/cjs/data-structure/bounds.js.map +1 -0
- package/cjs/data-structure/hashTable.d.ts +35 -0
- package/cjs/data-structure/hashTable.js +114 -0
- package/cjs/data-structure/hashTable.js.map +1 -0
- package/cjs/data-structure/index.d.ts +4 -0
- package/cjs/data-structure/index.js +22 -0
- package/cjs/data-structure/index.js.map +1 -0
- package/cjs/data-structure/matrix.d.ts +80 -0
- package/cjs/data-structure/matrix.js +113 -0
- package/cjs/data-structure/matrix.js.map +1 -0
- package/cjs/data-structure/point.d.ts +62 -0
- package/cjs/data-structure/point.js +81 -0
- package/cjs/data-structure/point.js.map +1 -0
- package/cjs/dom.d.ts +10 -0
- package/cjs/dom.js +86 -0
- package/cjs/dom.js.map +1 -0
- package/cjs/geo/index.d.ts +2 -0
- package/cjs/geo/index.js +21 -0
- package/cjs/geo/index.js.map +1 -0
- package/cjs/geo/interface.d.ts +1 -0
- package/cjs/geo/interface.js +6 -0
- package/cjs/geo/interface.js.map +1 -0
- package/cjs/geo/invariant.d.ts +9 -0
- package/cjs/geo/invariant.js +45 -0
- package/cjs/geo/invariant.js.map +1 -0
- package/cjs/graphics/algorithm/aabb.d.ts +6 -0
- package/cjs/graphics/algorithm/aabb.js +58 -0
- package/cjs/graphics/algorithm/aabb.js.map +1 -0
- package/cjs/graphics/algorithm/index.d.ts +3 -0
- package/cjs/graphics/algorithm/index.js +22 -0
- package/cjs/graphics/algorithm/index.js.map +1 -0
- package/cjs/graphics/algorithm/interface.d.ts +20 -0
- package/cjs/graphics/algorithm/interface.js +6 -0
- package/cjs/graphics/algorithm/interface.js.map +1 -0
- package/cjs/graphics/algorithm/intersect.d.ts +25 -0
- package/cjs/graphics/algorithm/intersect.js +143 -0
- package/cjs/graphics/algorithm/intersect.js.map +1 -0
- package/cjs/graphics/algorithm/obb.d.ts +5 -0
- package/cjs/graphics/algorithm/obb.js +80 -0
- package/cjs/graphics/algorithm/obb.js.map +1 -0
- package/cjs/graphics/graph-util.d.ts +23 -0
- package/cjs/graphics/graph-util.js +47 -0
- package/cjs/graphics/graph-util.js.map +1 -0
- package/cjs/graphics/image.d.ts +2 -0
- package/cjs/graphics/image.js +18 -0
- package/cjs/graphics/image.js.map +1 -0
- package/cjs/graphics/index.d.ts +5 -0
- package/cjs/graphics/index.js +23 -0
- package/cjs/graphics/index.js.map +1 -0
- package/cjs/graphics/polygon.d.ts +5 -0
- package/cjs/graphics/polygon.js +54 -0
- package/cjs/graphics/polygon.js.map +1 -0
- package/cjs/graphics/text/index.d.ts +2 -0
- package/cjs/graphics/text/index.js +39 -0
- package/cjs/graphics/text/index.js.map +1 -0
- package/cjs/graphics/text/measure/index.d.ts +4 -0
- package/cjs/graphics/text/measure/index.js +22 -0
- package/cjs/graphics/text/measure/index.js.map +1 -0
- package/cjs/graphics/text/measure/interface.d.ts +31 -0
- package/cjs/graphics/text/measure/interface.js +6 -0
- package/cjs/graphics/text/measure/interface.js.map +1 -0
- package/cjs/graphics/text/measure/test.d.ts +14 -0
- package/cjs/graphics/text/measure/test.js +67 -0
- package/cjs/graphics/text/measure/test.js.map +1 -0
- package/cjs/graphics/text/measure/textMeasure.d.ts +38 -0
- package/cjs/graphics/text/measure/textMeasure.js +183 -0
- package/cjs/graphics/text/measure/textMeasure.js.map +1 -0
- package/cjs/graphics/text/measure/util.d.ts +2 -0
- package/cjs/graphics/text/measure/util.js +11 -0
- package/cjs/graphics/text/measure/util.js.map +1 -0
- package/cjs/graphics/text/stringWidth.d.ts +2 -0
- package/cjs/graphics/text/stringWidth.js +49 -0
- package/cjs/graphics/text/stringWidth.js.map +1 -0
- package/cjs/index.d.ts +15 -0
- package/cjs/index.js +47 -0
- package/cjs/index.js.map +1 -0
- package/cjs/logger.d.ts +12 -0
- package/cjs/logger.js +36 -0
- package/cjs/logger.js.map +1 -0
- package/cjs/lru.d.ts +25 -0
- package/cjs/lru.js +43 -0
- package/cjs/lru.js.map +1 -0
- package/cjs/math.d.ts +66 -0
- package/cjs/math.js +57 -0
- package/cjs/math.js.map +1 -0
- package/cjs/padding.d.ts +7 -0
- package/cjs/padding.js +41 -0
- package/cjs/padding.js.map +1 -0
- package/cjs/time/formatUtils.d.ts +17 -0
- package/cjs/time/formatUtils.js +95 -0
- package/cjs/time/formatUtils.js.map +1 -0
- package/cjs/time/index.d.ts +2 -0
- package/cjs/time/index.js +21 -0
- package/cjs/time/index.js.map +1 -0
- package/cjs/time/interval.d.ts +77 -0
- package/cjs/time/interval.js +324 -0
- package/cjs/time/interval.js.map +1 -0
- package/cjs/type.d.ts +5 -0
- package/cjs/type.js +6 -0
- package/cjs/type.js.map +1 -0
- package/dist/visactor_vutils.js +1 -0
- package/dist/visactor_vutils.min.js +1 -0
- package/es/angle.d.ts +12 -0
- package/es/angle.js +31 -0
- package/es/angle.js.map +1 -0
- package/es/color/Color.d.ts +181 -0
- package/es/color/Color.js +283 -0
- package/es/color/Color.js.map +1 -0
- package/es/color/hexToRgb.d.ts +1 -0
- package/es/color/hexToRgb.js +7 -0
- package/es/color/hexToRgb.js.map +1 -0
- package/es/color/hslToRgb.d.ts +5 -0
- package/es/color/hslToRgb.js +15 -0
- package/es/color/hslToRgb.js.map +1 -0
- package/es/color/index.d.ts +6 -0
- package/es/color/index.js +12 -0
- package/es/color/index.js.map +1 -0
- package/es/color/interpolate.d.ts +2 -0
- package/es/color/interpolate.js +10 -0
- package/es/color/interpolate.js.map +1 -0
- package/es/color/rgbToHex.d.ts +1 -0
- package/es/color/rgbToHex.js +4 -0
- package/es/color/rgbToHex.js.map +1 -0
- package/es/color/rgbToHsl.d.ts +5 -0
- package/es/color/rgbToHsl.js +13 -0
- package/es/color/rgbToHsl.js.map +1 -0
- package/es/common/array.d.ts +9 -0
- package/es/common/array.js +50 -0
- package/es/common/array.js.map +1 -0
- package/es/common/ascending.d.ts +1 -0
- package/es/common/ascending.js +4 -0
- package/es/common/ascending.js.map +1 -0
- package/es/common/bisect.d.ts +1 -0
- package/es/common/bisect.js +12 -0
- package/es/common/bisect.js.map +1 -0
- package/es/common/clamp.d.ts +2 -0
- package/es/common/clamp.js +6 -0
- package/es/common/clamp.js.map +1 -0
- package/es/common/clampRange.d.ts +2 -0
- package/es/common/clampRange.js +10 -0
- package/es/common/clampRange.js.map +1 -0
- package/es/common/clamper.d.ts +1 -0
- package/es/common/clamper.js +5 -0
- package/es/common/clamper.js.map +1 -0
- package/es/common/clone.d.ts +1 -0
- package/es/common/clone.js +32 -0
- package/es/common/clone.js.map +1 -0
- package/es/common/cloneDeep.d.ts +1 -0
- package/es/common/cloneDeep.js +26 -0
- package/es/common/cloneDeep.js.map +1 -0
- package/es/common/constant.d.ts +2 -0
- package/es/common/constant.js +6 -0
- package/es/common/constant.js.map +1 -0
- package/es/common/debounce.d.ts +7 -0
- package/es/common/debounce.js +68 -0
- package/es/common/debounce.js.map +1 -0
- package/es/common/deviation.d.ts +1 -0
- package/es/common/deviation.js +7 -0
- package/es/common/deviation.js.map +1 -0
- package/es/common/get.d.ts +3 -0
- package/es/common/get.js +10 -0
- package/es/common/get.js.map +1 -0
- package/es/common/getType.d.ts +2 -0
- package/es/common/getType.js +3 -0
- package/es/common/getType.js.map +1 -0
- package/es/common/has.d.ts +3 -0
- package/es/common/has.js +4 -0
- package/es/common/has.js.map +1 -0
- package/es/common/index.d.ts +56 -0
- package/es/common/index.js +112 -0
- package/es/common/index.js.map +1 -0
- package/es/common/interpolate.d.ts +4 -0
- package/es/common/interpolate.js +45 -0
- package/es/common/interpolate.js.map +1 -0
- package/es/common/isArray.d.ts +2 -0
- package/es/common/isArray.js +6 -0
- package/es/common/isArray.js.map +1 -0
- package/es/common/isArrayLike.d.ts +2 -0
- package/es/common/isArrayLike.js +6 -0
- package/es/common/isArrayLike.js.map +1 -0
- package/es/common/isBase64.d.ts +2 -0
- package/es/common/isBase64.js +4 -0
- package/es/common/isBase64.js.map +1 -0
- package/es/common/isBoolean.d.ts +2 -0
- package/es/common/isBoolean.js +6 -0
- package/es/common/isBoolean.js.map +1 -0
- package/es/common/isDate.d.ts +2 -0
- package/es/common/isDate.js +6 -0
- package/es/common/isDate.js.map +1 -0
- package/es/common/isEmpty.d.ts +2 -0
- package/es/common/isEmpty.js +22 -0
- package/es/common/isEmpty.js.map +1 -0
- package/es/common/isEqual.d.ts +1 -0
- package/es/common/isEqual.js +39 -0
- package/es/common/isEqual.js.map +1 -0
- package/es/common/isFunction.d.ts +2 -0
- package/es/common/isFunction.js +4 -0
- package/es/common/isFunction.js.map +1 -0
- package/es/common/isNil.d.ts +2 -0
- package/es/common/isNil.js +4 -0
- package/es/common/isNil.js.map +1 -0
- package/es/common/isNull.d.ts +2 -0
- package/es/common/isNull.js +4 -0
- package/es/common/isNull.js.map +1 -0
- package/es/common/isNumber.d.ts +2 -0
- package/es/common/isNumber.js +9 -0
- package/es/common/isNumber.js.map +1 -0
- package/es/common/isNumeric.d.ts +2 -0
- package/es/common/isNumeric.js +4 -0
- package/es/common/isNumeric.js.map +1 -0
- package/es/common/isObject.d.ts +2 -0
- package/es/common/isObject.js +6 -0
- package/es/common/isObject.js.map +1 -0
- package/es/common/isObjectLike.d.ts +2 -0
- package/es/common/isObjectLike.js +4 -0
- package/es/common/isObjectLike.js.map +1 -0
- package/es/common/isPlainObject.d.ts +2 -0
- package/es/common/isPlainObject.js +14 -0
- package/es/common/isPlainObject.js.map +1 -0
- package/es/common/isPrototype.d.ts +2 -0
- package/es/common/isPrototype.js +7 -0
- package/es/common/isPrototype.js.map +1 -0
- package/es/common/isRegExp.d.ts +2 -0
- package/es/common/isRegExp.js +6 -0
- package/es/common/isRegExp.js.map +1 -0
- package/es/common/isShallowEqual.d.ts +1 -0
- package/es/common/isShallowEqual.js +22 -0
- package/es/common/isShallowEqual.js.map +1 -0
- package/es/common/isString.d.ts +2 -0
- package/es/common/isString.js +9 -0
- package/es/common/isString.js.map +1 -0
- package/es/common/isType.d.ts +2 -0
- package/es/common/isType.js +4 -0
- package/es/common/isType.js.map +1 -0
- package/es/common/isUndefined.d.ts +2 -0
- package/es/common/isUndefined.js +4 -0
- package/es/common/isUndefined.js.map +1 -0
- package/es/common/isValid.d.ts +2 -0
- package/es/common/isValid.js +4 -0
- package/es/common/isValid.js.map +1 -0
- package/es/common/isValidNumber.d.ts +2 -0
- package/es/common/isValidNumber.js +6 -0
- package/es/common/isValidNumber.js.map +1 -0
- package/es/common/isValidUrl.d.ts +2 -0
- package/es/common/isValidUrl.js +4 -0
- package/es/common/isValidUrl.js.map +1 -0
- package/es/common/lowerFirst.d.ts +2 -0
- package/es/common/lowerFirst.js +6 -0
- package/es/common/lowerFirst.js.map +1 -0
- package/es/common/median.d.ts +1 -0
- package/es/common/median.js +9 -0
- package/es/common/median.js.map +1 -0
- package/es/common/merge.d.ts +1 -0
- package/es/common/merge.js +54 -0
- package/es/common/merge.js.map +1 -0
- package/es/common/mixin.d.ts +5 -0
- package/es/common/mixin.js +28 -0
- package/es/common/mixin.js.map +1 -0
- package/es/common/number.d.ts +3 -0
- package/es/common/number.js +15 -0
- package/es/common/number.js.map +1 -0
- package/es/common/pad.d.ts +2 -0
- package/es/common/pad.js +11 -0
- package/es/common/pad.js.map +1 -0
- package/es/common/pick.d.ts +1 -0
- package/es/common/pick.js +12 -0
- package/es/common/pick.js.map +1 -0
- package/es/common/pickWithout.d.ts +1 -0
- package/es/common/pickWithout.js +16 -0
- package/es/common/pickWithout.js.map +1 -0
- package/es/common/quantileSorted.d.ts +1 -0
- package/es/common/quantileSorted.js +11 -0
- package/es/common/quantileSorted.js.map +1 -0
- package/es/common/range.d.ts +1 -0
- package/es/common/range.js +10 -0
- package/es/common/range.js.map +1 -0
- package/es/common/throttle.d.ts +5 -0
- package/es/common/throttle.js +17 -0
- package/es/common/throttle.js.map +1 -0
- package/es/common/tickStep.d.ts +1 -0
- package/es/common/tickStep.js +10 -0
- package/es/common/tickStep.js.map +1 -0
- package/es/common/toDate.d.ts +2 -0
- package/es/common/toDate.js +18 -0
- package/es/common/toDate.js.map +1 -0
- package/es/common/toNumber.d.ts +1 -0
- package/es/common/toNumber.js +4 -0
- package/es/common/toNumber.js.map +1 -0
- package/es/common/toValidNumber.d.ts +1 -0
- package/es/common/toValidNumber.js +8 -0
- package/es/common/toValidNumber.js.map +1 -0
- package/es/common/truncate.d.ts +2 -0
- package/es/common/truncate.js +9 -0
- package/es/common/truncate.js.map +1 -0
- package/es/common/upperFirst.d.ts +2 -0
- package/es/common/upperFirst.js +6 -0
- package/es/common/upperFirst.js.map +1 -0
- package/es/common/uuid.d.ts +2 -0
- package/es/common/uuid.js +13 -0
- package/es/common/uuid.js.map +1 -0
- package/es/common/variance.d.ts +1 -0
- package/es/common/variance.js +11 -0
- package/es/common/variance.js.map +1 -0
- package/es/data-structure/bounds.d.ts +81 -0
- package/es/data-structure/bounds.js +127 -0
- package/es/data-structure/bounds.js.map +1 -0
- package/es/data-structure/hashTable.d.ts +35 -0
- package/es/data-structure/hashTable.js +104 -0
- package/es/data-structure/hashTable.js.map +1 -0
- package/es/data-structure/index.d.ts +4 -0
- package/es/data-structure/index.js +8 -0
- package/es/data-structure/index.js.map +1 -0
- package/es/data-structure/matrix.d.ts +80 -0
- package/es/data-structure/matrix.js +106 -0
- package/es/data-structure/matrix.js.map +1 -0
- package/es/data-structure/point.d.ts +62 -0
- package/es/data-structure/point.js +65 -0
- package/es/data-structure/point.js.map +1 -0
- package/es/dom.d.ts +10 -0
- package/es/dom.js +75 -0
- package/es/dom.js.map +1 -0
- package/es/geo/index.d.ts +2 -0
- package/es/geo/index.js +4 -0
- package/es/geo/index.js.map +1 -0
- package/es/geo/interface.d.ts +1 -0
- package/es/geo/interface.js +2 -0
- package/es/geo/interface.js.map +1 -0
- package/es/geo/invariant.d.ts +9 -0
- package/es/geo/invariant.js +40 -0
- package/es/geo/invariant.js.map +1 -0
- package/es/graphics/algorithm/aabb.d.ts +6 -0
- package/es/graphics/algorithm/aabb.js +49 -0
- package/es/graphics/algorithm/aabb.js.map +1 -0
- package/es/graphics/algorithm/index.d.ts +3 -0
- package/es/graphics/algorithm/index.js +6 -0
- package/es/graphics/algorithm/index.js.map +1 -0
- package/es/graphics/algorithm/interface.d.ts +20 -0
- package/es/graphics/algorithm/interface.js +2 -0
- package/es/graphics/algorithm/interface.js.map +1 -0
- package/es/graphics/algorithm/intersect.d.ts +25 -0
- package/es/graphics/algorithm/intersect.js +135 -0
- package/es/graphics/algorithm/intersect.js.map +1 -0
- package/es/graphics/algorithm/obb.d.ts +5 -0
- package/es/graphics/algorithm/obb.js +68 -0
- package/es/graphics/algorithm/obb.js.map +1 -0
- package/es/graphics/graph-util.d.ts +23 -0
- package/es/graphics/graph-util.js +39 -0
- package/es/graphics/graph-util.js.map +1 -0
- package/es/graphics/image.d.ts +2 -0
- package/es/graphics/image.js +12 -0
- package/es/graphics/image.js.map +1 -0
- package/es/graphics/index.d.ts +5 -0
- package/es/graphics/index.js +10 -0
- package/es/graphics/index.js.map +1 -0
- package/es/graphics/polygon.d.ts +5 -0
- package/es/graphics/polygon.js +47 -0
- package/es/graphics/polygon.js.map +1 -0
- package/es/graphics/text/index.d.ts +2 -0
- package/es/graphics/text/index.js +4 -0
- package/es/graphics/text/index.js.map +1 -0
- package/es/graphics/text/measure/index.d.ts +4 -0
- package/es/graphics/text/measure/index.js +8 -0
- package/es/graphics/text/measure/index.js.map +1 -0
- package/es/graphics/text/measure/interface.d.ts +31 -0
- package/es/graphics/text/measure/interface.js +2 -0
- package/es/graphics/text/measure/interface.js.map +1 -0
- package/es/graphics/text/measure/test.d.ts +14 -0
- package/es/graphics/text/measure/test.js +65 -0
- package/es/graphics/text/measure/test.js.map +1 -0
- package/es/graphics/text/measure/textMeasure.d.ts +38 -0
- package/es/graphics/text/measure/textMeasure.js +181 -0
- package/es/graphics/text/measure/textMeasure.js.map +1 -0
- package/es/graphics/text/measure/util.d.ts +2 -0
- package/es/graphics/text/measure/util.js +5 -0
- package/es/graphics/text/measure/util.js.map +1 -0
- package/es/graphics/text/stringWidth.d.ts +2 -0
- package/es/graphics/text/stringWidth.js +43 -0
- package/es/graphics/text/stringWidth.js.map +1 -0
- package/es/index.d.ts +15 -0
- package/es/index.js +30 -0
- package/es/index.js.map +1 -0
- package/es/logger.d.ts +12 -0
- package/es/logger.js +38 -0
- package/es/logger.js.map +1 -0
- package/es/lru.d.ts +25 -0
- package/es/lru.js +36 -0
- package/es/lru.js.map +1 -0
- package/es/math.d.ts +66 -0
- package/es/math.js +76 -0
- package/es/math.js.map +1 -0
- package/es/padding.d.ts +7 -0
- package/es/padding.js +31 -0
- package/es/padding.js.map +1 -0
- package/es/time/formatUtils.d.ts +17 -0
- package/es/time/formatUtils.js +72 -0
- package/es/time/formatUtils.js.map +1 -0
- package/es/time/index.d.ts +2 -0
- package/es/time/index.js +4 -0
- package/es/time/index.js.map +1 -0
- package/es/time/interval.d.ts +77 -0
- package/es/time/interval.js +227 -0
- package/es/time/interval.js.map +1 -0
- package/es/type.d.ts +5 -0
- package/es/type.js +2 -0
- package/es/type.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/toNumber.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,CAAM;IAC7B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAFD,4BAEC","file":"toNumber.js","sourcesContent":["export function toNumber(a: any) {\n return Number(a);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function toValidNumber(v: any): number;
|
|
@@ -0,0 +1,22 @@
|
|
|
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.toValidNumber = void 0;
|
|
12
|
+
|
|
13
|
+
const isValidNumber_1 = __importDefault(require("./isValidNumber"));
|
|
14
|
+
|
|
15
|
+
function toValidNumber(v) {
|
|
16
|
+
if ((0, isValidNumber_1.default)(v)) return v;
|
|
17
|
+
const value = +v;
|
|
18
|
+
return (0, isValidNumber_1.default)(value) ? value : 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
exports.toValidNumber = toValidNumber;
|
|
22
|
+
//# sourceMappingURL=toValidNumber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/toValidNumber.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA4C;AAE5C,SAAgB,aAAa,CAAC,CAAM;IAClC,IAAI,IAAA,uBAAa,EAAC,CAAC,CAAC,EAAE;QACpB,OAAO,CAAC,CAAC;KACV;IACD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC;IACjB,OAAO,IAAA,uBAAa,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAND,sCAMC","file":"toValidNumber.js","sourcesContent":["import isValidNumber from './isValidNumber';\n\nexport function toValidNumber(v: any) {\n if (isValidNumber(v)) {\n return v;\n }\n const value = +v;\n return isValidNumber(value) ? value : 0;\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
});
|
|
12
|
+
|
|
13
|
+
const isNil_1 = __importDefault(require("./isNil")), truncate = (str, length, align = "right", ellipsis) => {
|
|
14
|
+
const e = (0, isNil_1.default)(ellipsis) ? "…" : ellipsis, s = str + "", n = s.length, l = Math.max(0, length - e.length);
|
|
15
|
+
return n <= length ? s : "left" === align ? e + s.slice(n - l) : "center" === align ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - Math.floor(l / 2)) : s.slice(0, l) + e;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.default = truncate;
|
|
19
|
+
//# sourceMappingURL=truncate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/truncate.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,MAAM,QAAQ,GAAG,CACf,GAAoB,EACpB,MAAc,EACd,QAA+C,OAAO,EACtD,QAAiB,EACjB,EAAE;IACF,MAAM,CAAC,GAAG,CAAC,IAAA,eAAK,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjD,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,CAAC,IAAI,MAAM,EAAE;QACf,OAAO,CAAC,CAAC;KACV;IAED,IAAI,KAAK,KAAK,MAAM,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3B;IAED,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACpH,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC","file":"truncate.js","sourcesContent":["import isNil from './isNil';\n\nconst truncate = (\n str: string | number,\n length: number,\n align: 'left' | 'center' | 'right' | unknown = 'right',\n ellipsis?: string\n) => {\n const e = !isNil(ellipsis) ? ellipsis : '\\u2026';\n const s = str + '';\n const n = s.length;\n const l = Math.max(0, length - e.length);\n\n if (n <= length) {\n return s;\n }\n\n if (align === 'left') {\n return e + s.slice(n - l);\n }\n\n return align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - Math.floor(l / 2)) : s.slice(0, l) + e;\n};\n\nexport default truncate;\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
const upperFirst = function(str) {
|
|
8
|
+
return str.charAt(0).toUpperCase() + str.substring(1);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
exports.default = upperFirst;
|
|
12
|
+
//# sourceMappingURL=upperFirst.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/upperFirst.ts"],"names":[],"mappings":";;AAAA,MAAM,UAAU,GAAG,UAAU,GAAW;IACtC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC","file":"upperFirst.js","sourcesContent":["const upperFirst = function (str: string): string {\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nexport default upperFirst;\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
const uuid = (len, radix) => {
|
|
8
|
+
const chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""), uuid = [];
|
|
9
|
+
let i;
|
|
10
|
+
if (radix = radix || chars.length, len) for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]; else {
|
|
11
|
+
let r;
|
|
12
|
+
for (uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-", uuid[14] = "4", i = 0; i < 36; i++) uuid[i] || (r = 0 | 16 * Math.random(),
|
|
13
|
+
uuid[i] = chars[19 === i ? 3 & r | 8 : r]);
|
|
14
|
+
}
|
|
15
|
+
return uuid.join("");
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.default = uuid;
|
|
19
|
+
//# sourceMappingURL=uuid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/uuid.ts"],"names":[],"mappings":";;AAQA,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,KAAa,EAAU,EAAE;IAClD,MAAM,KAAK,GAAG,gEAAgE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzF,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,CAAC;IACN,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;IAE9B,IAAI,GAAG,EAAE;QAEP,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YACxB,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;SAC9C;KACF;SAAM;QAEL,IAAI,CAAC,CAAC;QAGN,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAIf,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBACZ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC7B,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACjD;SACF;KACF;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,kBAAe,IAAI,CAAC","file":"uuid.js","sourcesContent":["// TODO: 性能不是很好,需要优化,后续升级到最新版本的 canvas 之后就可以删除了\n/**\n * 生成uuid字符串.\n * 参考https://github.com/yangjunning/issues/issues/56\n * @param len\n * @param radix\n * @returns\n */\nconst uuid = (len: number, radix: number): string => {\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');\n const uuid = [];\n let i;\n radix = radix || chars.length;\n\n if (len) {\n // Compact form\n for (i = 0; i < len; i++) {\n uuid[i] = chars[0 | (Math.random() * radix)];\n }\n } else {\n // rfc4122, version 4 form\n let r;\n\n // rfc4122 requires these characters\n uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';\n uuid[14] = '4';\n\n // Fill in random data. At i==19 set the high bits of clock sequence as\n // per rfc4122, sec. 4.1.5\n for (i = 0; i < 36; i++) {\n if (!uuid[i]) {\n r = 0 | (Math.random() * 16);\n uuid[i] = chars[i === 19 ? (r & 0x3) | 0x8 : r];\n }\n }\n }\n\n return uuid.join('');\n};\n\nexport default uuid;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function variance(values: any[], valueof?: (entry: any, index?: number, arr?: any[]) => number): number;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function variance(values, valueof) {
|
|
4
|
+
let delta, count = 0, mean = 0, sum = 0;
|
|
5
|
+
if (void 0 === valueof) for (let value of values) null != value && (value = +value) >= value && (delta = value - mean,
|
|
6
|
+
mean += delta / ++count, sum += delta * (value - mean)); else {
|
|
7
|
+
let index = -1;
|
|
8
|
+
for (let value of values) null != (value = valueof(value, ++index, values)) && (value = +value) >= value && (delta = value - mean,
|
|
9
|
+
mean += delta / ++count, sum += delta * (value - mean));
|
|
10
|
+
}
|
|
11
|
+
return count > 1 ? sum / (count - 1) : 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
Object.defineProperty(exports, "__esModule", {
|
|
15
|
+
value: !0
|
|
16
|
+
}), exports.variance = void 0, exports.variance = variance;
|
|
17
|
+
//# sourceMappingURL=variance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/variance.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,MAAa,EAAE,OAA6D;IACnG,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,CAAC;IACV,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;YACxB,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;gBAC9C,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;gBACrB,IAAI,IAAI,KAAK,GAAG,EAAE,KAAK,CAAC;gBACxB,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;aAC/B;SACF;KACF;SAAM;QACL,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;YACxB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;gBAClF,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;gBACrB,IAAI,IAAI,KAAK,GAAG,EAAE,KAAK,CAAC;gBACxB,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;aAC/B;SACF;KACF;IACD,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,OAAO,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC1B;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AA5BD,4BA4BC","file":"variance.js","sourcesContent":["export function variance(values: any[], valueof?: (entry: any, index?: number, arr?: any[]) => number) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) {\n return sum / (count - 1);\n }\n\n return 0;\n}\n"]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { IMatrix } from './matrix';
|
|
2
|
+
import type { IPointLike } from './point';
|
|
3
|
+
export type IBoundsLike = Pick<IBounds, 'x1' | 'y1' | 'x2' | 'y2'>;
|
|
4
|
+
export type IAABBBoundsLike = IBoundsLike;
|
|
5
|
+
export type IOBBBoundsLike = Pick<IOBBBounds, 'x1' | 'y1' | 'x2' | 'y2' | 'angle'>;
|
|
6
|
+
export interface IBounds {
|
|
7
|
+
x1: number;
|
|
8
|
+
y1: number;
|
|
9
|
+
x2: number;
|
|
10
|
+
y2: number;
|
|
11
|
+
clone: () => IBounds;
|
|
12
|
+
clear: () => IBounds;
|
|
13
|
+
empty: () => boolean;
|
|
14
|
+
equals: (b: IBounds) => boolean;
|
|
15
|
+
set: (x1: number, y1: number, x2: number, y2: number) => IBounds;
|
|
16
|
+
setValue: (x1: number, y1: number, x2: number, y2: number) => IBounds;
|
|
17
|
+
add: (x: number, y: number) => IBounds;
|
|
18
|
+
expand: (d: number) => IBounds;
|
|
19
|
+
round: () => IBounds;
|
|
20
|
+
translate: (dx: number, dy: number) => IBounds;
|
|
21
|
+
rotate: (angle: number, x: number, y: number) => IBounds;
|
|
22
|
+
scale: (sx: number, sy: number, x: number, y: number) => IBounds;
|
|
23
|
+
union: (b: IBoundsLike) => IBounds;
|
|
24
|
+
intersect: (b: IBoundsLike) => IBounds;
|
|
25
|
+
encloses: (b: IBoundsLike) => boolean;
|
|
26
|
+
alignsWith: (b: IBoundsLike) => boolean;
|
|
27
|
+
intersects: (b: IBoundsLike) => boolean;
|
|
28
|
+
contains: (x: number, y: number) => boolean;
|
|
29
|
+
containsPoint: (p: IPointLike) => boolean;
|
|
30
|
+
width: () => number;
|
|
31
|
+
height: () => number;
|
|
32
|
+
scaleX: (s: number) => IBounds;
|
|
33
|
+
scaleY: (s: number) => IBounds;
|
|
34
|
+
copy: (b: IBoundsLike) => IBounds;
|
|
35
|
+
transformWithMatrix: (matrix: IMatrix) => IBounds;
|
|
36
|
+
}
|
|
37
|
+
export type IAABBBounds = IBounds;
|
|
38
|
+
export interface IOBBBounds extends IBounds {
|
|
39
|
+
angle: number;
|
|
40
|
+
}
|
|
41
|
+
export declare function transformBoundsWithMatrix(out: IBounds, bounds: IBounds, matrix: IMatrix): IBounds;
|
|
42
|
+
export declare function transformBounds(bounds: IBounds, x: number, y: number, scaleX: number, scaleY: number, angle: number, rotateCenter?: [number, number]): void;
|
|
43
|
+
export declare class Bounds implements IBounds {
|
|
44
|
+
x1: number;
|
|
45
|
+
y1: number;
|
|
46
|
+
x2: number;
|
|
47
|
+
y2: number;
|
|
48
|
+
constructor(bounds?: Bounds);
|
|
49
|
+
clone(): Bounds;
|
|
50
|
+
clear(): Bounds;
|
|
51
|
+
empty(): boolean;
|
|
52
|
+
equals(b: IBoundsLike): boolean;
|
|
53
|
+
setValue(x1?: number, y1?: number, x2?: number, y2?: number): Bounds;
|
|
54
|
+
set(x1?: number, y1?: number, x2?: number, y2?: number): Bounds;
|
|
55
|
+
add(x?: number, y?: number): Bounds;
|
|
56
|
+
expand(d?: number | [number, number, number, number]): Bounds;
|
|
57
|
+
round(): Bounds;
|
|
58
|
+
translate(dx?: number, dy?: number): Bounds;
|
|
59
|
+
rotate(angle?: number, x?: number, y?: number): Bounds;
|
|
60
|
+
scale(sx?: number, sy?: number, x?: number, y?: number): Bounds;
|
|
61
|
+
union(b: IBoundsLike): Bounds;
|
|
62
|
+
intersect(b: IBoundsLike): Bounds;
|
|
63
|
+
encloses(b: IBoundsLike): boolean;
|
|
64
|
+
alignsWith(b: IBoundsLike): boolean;
|
|
65
|
+
intersects(b: IBoundsLike): boolean;
|
|
66
|
+
contains(x?: number, y?: number): boolean;
|
|
67
|
+
containsPoint(p: IPointLike): boolean;
|
|
68
|
+
width(): number;
|
|
69
|
+
height(): number;
|
|
70
|
+
scaleX(s?: number): Bounds;
|
|
71
|
+
scaleY(s?: number): Bounds;
|
|
72
|
+
transformWithMatrix(matrix: IMatrix): Bounds;
|
|
73
|
+
copy(b: IBoundsLike): this;
|
|
74
|
+
private rotatedPoints;
|
|
75
|
+
private scalePoints;
|
|
76
|
+
}
|
|
77
|
+
export declare class AABBBounds extends Bounds {
|
|
78
|
+
}
|
|
79
|
+
export declare class OBBBounds extends Bounds {
|
|
80
|
+
angle: number;
|
|
81
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.OBBBounds = exports.AABBBounds = exports.Bounds = exports.transformBounds = exports.transformBoundsWithMatrix = void 0;
|
|
6
|
+
|
|
7
|
+
const common_1 = require("../common"), math_1 = require("../math");
|
|
8
|
+
|
|
9
|
+
function transformBoundsWithMatrix(out, bounds, matrix) {
|
|
10
|
+
const {x1: x1, y1: y1, x2: x2, y2: y2} = bounds;
|
|
11
|
+
return matrix.onlyTranslate() ? (out !== bounds && out.setValue(bounds.x1, bounds.y1, bounds.x2, bounds.y2),
|
|
12
|
+
out.translate(matrix.e, matrix.f), bounds) : (out.clear(), out.add(matrix.a * x1 + matrix.c * y1 + matrix.e, matrix.b * x1 + matrix.d * y1 + matrix.f),
|
|
13
|
+
out.add(matrix.a * x2 + matrix.c * y1 + matrix.e, matrix.b * x2 + matrix.d * y1 + matrix.f),
|
|
14
|
+
out.add(matrix.a * x2 + matrix.c * y2 + matrix.e, matrix.b * x2 + matrix.d * y2 + matrix.f),
|
|
15
|
+
out.add(matrix.a * x1 + matrix.c * y2 + matrix.e, matrix.b * x1 + matrix.d * y2 + matrix.f),
|
|
16
|
+
bounds);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function transformBounds(bounds, x, y, scaleX, scaleY, angle, rotateCenter) {
|
|
20
|
+
if (!((0, math_1.abs)(scaleX) <= math_1.epsilon || (0, math_1.abs)(scaleY) <= math_1.epsilon)) {
|
|
21
|
+
if (1 !== scaleX && bounds.scaleX(scaleX), 1 !== scaleY && bounds.scaleY(scaleY),
|
|
22
|
+
isFinite(angle) && Math.abs(angle) > math_1.epsilon) {
|
|
23
|
+
let rx = 0, ry = 0;
|
|
24
|
+
void 0 !== rotateCenter && (rx = rotateCenter[0], ry = rotateCenter[1]), bounds.rotate(angle, rx, ry);
|
|
25
|
+
}
|
|
26
|
+
bounds.translate(x, y);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
exports.transformBoundsWithMatrix = transformBoundsWithMatrix, exports.transformBounds = transformBounds;
|
|
31
|
+
|
|
32
|
+
class Bounds {
|
|
33
|
+
constructor(bounds) {
|
|
34
|
+
bounds ? this.setValue(bounds.x1, bounds.y1, bounds.x2, bounds.y2) : this.clear();
|
|
35
|
+
}
|
|
36
|
+
clone() {
|
|
37
|
+
return new Bounds(this);
|
|
38
|
+
}
|
|
39
|
+
clear() {
|
|
40
|
+
return this.x1 = +Number.MAX_VALUE, this.y1 = +Number.MAX_VALUE, this.x2 = -Number.MAX_VALUE,
|
|
41
|
+
this.y2 = -Number.MAX_VALUE, this;
|
|
42
|
+
}
|
|
43
|
+
empty() {
|
|
44
|
+
return this.x1 === +Number.MAX_VALUE && this.y1 === +Number.MAX_VALUE && this.x2 === -Number.MAX_VALUE && this.y2 === -Number.MAX_VALUE;
|
|
45
|
+
}
|
|
46
|
+
equals(b) {
|
|
47
|
+
return this.x1 === b.x1 && this.y1 === b.y1 && this.x2 === b.x2 && this.y2 === b.y2;
|
|
48
|
+
}
|
|
49
|
+
setValue(x1 = 0, y1 = 0, x2 = 0, y2 = 0) {
|
|
50
|
+
return this.x1 = x1, this.y1 = y1, this.x2 = x2, this.y2 = y2, this;
|
|
51
|
+
}
|
|
52
|
+
set(x1 = 0, y1 = 0, x2 = 0, y2 = 0) {
|
|
53
|
+
return x2 < x1 ? (this.x2 = x1, this.x1 = x2) : (this.x1 = x1, this.x2 = x2), y2 < y1 ? (this.y2 = y1,
|
|
54
|
+
this.y1 = y2) : (this.y1 = y1, this.y2 = y2), this;
|
|
55
|
+
}
|
|
56
|
+
add(x = 0, y = 0) {
|
|
57
|
+
return x < this.x1 && (this.x1 = x), y < this.y1 && (this.y1 = y), x > this.x2 && (this.x2 = x),
|
|
58
|
+
y > this.y2 && (this.y2 = y), this;
|
|
59
|
+
}
|
|
60
|
+
expand(d = 0) {
|
|
61
|
+
return (0, common_1.isArray)(d) ? (this.y1 -= d[0], this.x2 += d[1], this.y2 += d[2],
|
|
62
|
+
this.x1 -= d[3]) : (this.x1 -= d, this.y1 -= d, this.x2 += d, this.y2 += d), this;
|
|
63
|
+
}
|
|
64
|
+
round() {
|
|
65
|
+
return this.x1 = Math.floor(this.x1), this.y1 = Math.floor(this.y1), this.x2 = Math.ceil(this.x2),
|
|
66
|
+
this.y2 = Math.ceil(this.y2), this;
|
|
67
|
+
}
|
|
68
|
+
translate(dx = 0, dy = 0) {
|
|
69
|
+
return this.x1 += dx, this.x2 += dx, this.y1 += dy, this.y2 += dy, this;
|
|
70
|
+
}
|
|
71
|
+
rotate(angle = 0, x = 0, y = 0) {
|
|
72
|
+
const p = this.rotatedPoints(angle, x, y);
|
|
73
|
+
return this.clear().add(p[0], p[1]).add(p[2], p[3]).add(p[4], p[5]).add(p[6], p[7]);
|
|
74
|
+
}
|
|
75
|
+
scale(sx = 0, sy = 0, x = 0, y = 0) {
|
|
76
|
+
const p = this.scalePoints(sx, sy, x, y);
|
|
77
|
+
return this.clear().add(p[0], p[1]).add(p[2], p[3]);
|
|
78
|
+
}
|
|
79
|
+
union(b) {
|
|
80
|
+
return b.x1 < this.x1 && (this.x1 = b.x1), b.y1 < this.y1 && (this.y1 = b.y1), b.x2 > this.x2 && (this.x2 = b.x2),
|
|
81
|
+
b.y2 > this.y2 && (this.y2 = b.y2), this;
|
|
82
|
+
}
|
|
83
|
+
intersect(b) {
|
|
84
|
+
return b.x1 > this.x1 && (this.x1 = b.x1), b.y1 > this.y1 && (this.y1 = b.y1), b.x2 < this.x2 && (this.x2 = b.x2),
|
|
85
|
+
b.y2 < this.y2 && (this.y2 = b.y2), this;
|
|
86
|
+
}
|
|
87
|
+
encloses(b) {
|
|
88
|
+
return b && this.x1 <= b.x1 && this.x2 >= b.x2 && this.y1 <= b.y1 && this.y2 >= b.y2;
|
|
89
|
+
}
|
|
90
|
+
alignsWith(b) {
|
|
91
|
+
return b && (this.x1 === b.x1 || this.x2 === b.x2 || this.y1 === b.y1 || this.y2 === b.y2);
|
|
92
|
+
}
|
|
93
|
+
intersects(b) {
|
|
94
|
+
return b && !(this.x2 < b.x1 || this.x1 > b.x2 || this.y2 < b.y1 || this.y1 > b.y2);
|
|
95
|
+
}
|
|
96
|
+
contains(x = 0, y = 0) {
|
|
97
|
+
return !(x < this.x1 || x > this.x2 || y < this.y1 || y > this.y2);
|
|
98
|
+
}
|
|
99
|
+
containsPoint(p) {
|
|
100
|
+
return !(p.x < this.x1 || p.x > this.x2 || p.y < this.y1 || p.y > this.y2);
|
|
101
|
+
}
|
|
102
|
+
width() {
|
|
103
|
+
return this.empty() ? 0 : this.x2 - this.x1;
|
|
104
|
+
}
|
|
105
|
+
height() {
|
|
106
|
+
return this.empty() ? 0 : this.y2 - this.y1;
|
|
107
|
+
}
|
|
108
|
+
scaleX(s = 0) {
|
|
109
|
+
return this.x1 *= s, this.x2 *= s, this;
|
|
110
|
+
}
|
|
111
|
+
scaleY(s = 0) {
|
|
112
|
+
return this.y1 *= s, this.y2 *= s, this;
|
|
113
|
+
}
|
|
114
|
+
transformWithMatrix(matrix) {
|
|
115
|
+
return transformBoundsWithMatrix(this, this, matrix), this;
|
|
116
|
+
}
|
|
117
|
+
copy(b) {
|
|
118
|
+
return this.x1 = b.x1, this.y1 = b.y1, this.x2 = b.x2, this.y2 = b.y2, this;
|
|
119
|
+
}
|
|
120
|
+
rotatedPoints(angle, x, y) {
|
|
121
|
+
const {x1: x1, y1: y1, x2: x2, y2: y2} = this, cos = Math.cos(angle), sin = Math.sin(angle), cx = x - x * cos + y * sin, cy = y - x * sin - y * cos;
|
|
122
|
+
return [ cos * x1 - sin * y1 + cx, sin * x1 + cos * y1 + cy, cos * x1 - sin * y2 + cx, sin * x1 + cos * y2 + cy, cos * x2 - sin * y1 + cx, sin * x2 + cos * y1 + cy, cos * x2 - sin * y2 + cx, sin * x2 + cos * y2 + cy ];
|
|
123
|
+
}
|
|
124
|
+
scalePoints(sx, sy, x, y) {
|
|
125
|
+
const {x1: x1, y1: y1, x2: x2, y2: y2} = this;
|
|
126
|
+
return [ sx * x1 + (1 - sx) * x, sy * y1 + (1 - sy) * y, sx * x2 + (1 - sx) * x, sy * y2 + (1 - sy) * y ];
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
exports.Bounds = Bounds;
|
|
131
|
+
|
|
132
|
+
class AABBBounds extends Bounds {}
|
|
133
|
+
|
|
134
|
+
exports.AABBBounds = AABBBounds;
|
|
135
|
+
|
|
136
|
+
class OBBBounds extends Bounds {}
|
|
137
|
+
|
|
138
|
+
exports.OBBBounds = OBBBounds;
|
|
139
|
+
//# sourceMappingURL=bounds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/data-structure/bounds.ts"],"names":[],"mappings":"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","file":"bounds.js","sourcesContent":["import { isArray } from '../common';\nimport type { vec4, vec8 } from '../math';\nimport { abs, epsilon } from '../math';\nimport type { IMatrix } from './matrix';\nimport type { IPointLike } from './point';\n\nexport type IBoundsLike = Pick<IBounds, 'x1' | 'y1' | 'x2' | 'y2'>;\nexport type IAABBBoundsLike = IBoundsLike;\nexport type IOBBBoundsLike = Pick<IOBBBounds, 'x1' | 'y1' | 'x2' | 'y2' | 'angle'>;\n\nexport interface IBounds {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n clone: () => IBounds;\n clear: () => IBounds;\n empty: () => boolean;\n equals: (b: IBounds) => boolean;\n set: (x1: number, y1: number, x2: number, y2: number) => IBounds;\n setValue: (x1: number, y1: number, x2: number, y2: number) => IBounds;\n add: (x: number, y: number) => IBounds;\n expand: (d: number) => IBounds;\n round: () => IBounds;\n translate: (dx: number, dy: number) => IBounds;\n rotate: (angle: number, x: number, y: number) => IBounds;\n scale: (sx: number, sy: number, x: number, y: number) => IBounds;\n /**\n * 并集\n * @param b\n * @returns\n */\n union: (b: IBoundsLike) => IBounds;\n /**\n * 交集\n * @param b\n * @returns\n */\n intersect: (b: IBoundsLike) => IBounds;\n /**\n * 是否包含b\n * @param b\n * @returns\n */\n encloses: (b: IBoundsLike) => boolean;\n /**\n * 是否共边\n * @param b\n * @returns\n */\n alignsWith: (b: IBoundsLike) => boolean;\n /**\n * 是否相交\n * @param b\n * @returns\n */\n intersects: (b: IBoundsLike) => boolean;\n /**\n * 是否包含\n * @param x\n * @param y\n * @returns\n */\n contains: (x: number, y: number) => boolean;\n containsPoint: (p: IPointLike) => boolean;\n width: () => number;\n height: () => number;\n scaleX: (s: number) => IBounds;\n scaleY: (s: number) => IBounds;\n\n copy: (b: IBoundsLike) => IBounds;\n\n transformWithMatrix: (matrix: IMatrix) => IBounds;\n}\n\nexport type IAABBBounds = IBounds;\n\nexport interface IOBBBounds extends IBounds {\n angle: number;\n}\n\nexport function transformBoundsWithMatrix(out: IBounds, bounds: IBounds, matrix: IMatrix): IBounds {\n const { x1, y1, x2, y2 } = bounds;\n // 如果没有旋转和缩放,那就直接translate\n if (matrix.onlyTranslate()) {\n if (out !== bounds) {\n out.setValue(bounds.x1, bounds.y1, bounds.x2, bounds.y2);\n }\n out.translate(matrix.e, matrix.f);\n return bounds;\n }\n out.clear();\n out.add(matrix.a * x1 + matrix.c * y1 + matrix.e, matrix.b * x1 + matrix.d * y1 + matrix.f);\n out.add(matrix.a * x2 + matrix.c * y1 + matrix.e, matrix.b * x2 + matrix.d * y1 + matrix.f);\n out.add(matrix.a * x2 + matrix.c * y2 + matrix.e, matrix.b * x2 + matrix.d * y2 + matrix.f);\n out.add(matrix.a * x1 + matrix.c * y2 + matrix.e, matrix.b * x1 + matrix.d * y2 + matrix.f);\n return bounds;\n}\n\n/**\n * 依据graphic的属性对bounds进行变换\n * @param bounds\n * @param x\n * @param y\n * @param scaleX\n * @param scaleY\n * @param angle\n * @param rotateCenter\n */\nexport function transformBounds(\n bounds: IBounds,\n x: number,\n y: number,\n scaleX: number,\n scaleY: number,\n angle: number,\n rotateCenter?: [number, number]\n) {\n if (abs(scaleX) <= epsilon || abs(scaleY) <= epsilon) {\n return;\n }\n\n scaleX !== 1 && bounds.scaleX(scaleX);\n scaleY !== 1 && bounds.scaleY(scaleY);\n\n if (isFinite(angle) && Math.abs(angle) > epsilon) {\n let rx = 0;\n let ry = 0;\n if (rotateCenter !== undefined) {\n rx = rotateCenter[0];\n ry = rotateCenter[1];\n }\n bounds.rotate(angle, rx, ry);\n }\n\n bounds.translate(x, y);\n}\n\n/**\nCopyright (c) 2015-2021, University of Washington Interactive Data Lab\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n// 基于Vega的Bounds重构\n// https://github.com/vega/vega/blob/825bfaba6ccfe3306183df22b8c955a07bb30714/packages/vega-scenegraph/src/Bounds.js\nexport class Bounds implements IBounds {\n // 默认初始值是Number.MAX_VALUE\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n\n constructor(bounds?: Bounds) {\n if (bounds) {\n this.setValue(bounds.x1, bounds.y1, bounds.x2, bounds.y2);\n } else {\n this.clear();\n }\n }\n\n clone() {\n return new Bounds(this);\n }\n\n clear(): Bounds {\n this.x1 = +Number.MAX_VALUE;\n this.y1 = +Number.MAX_VALUE;\n this.x2 = -Number.MAX_VALUE;\n this.y2 = -Number.MAX_VALUE;\n return this;\n }\n empty(): boolean {\n return (\n this.x1 === +Number.MAX_VALUE &&\n this.y1 === +Number.MAX_VALUE &&\n this.x2 === -Number.MAX_VALUE &&\n this.y2 === -Number.MAX_VALUE\n );\n }\n equals(b: IBoundsLike): boolean {\n return this.x1 === b.x1 && this.y1 === b.y1 && this.x2 === b.x2 && this.y2 === b.y2;\n }\n setValue(x1: number = 0, y1: number = 0, x2: number = 0, y2: number = 0): Bounds {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n return this;\n }\n set(x1: number = 0, y1: number = 0, x2: number = 0, y2: number = 0): Bounds {\n if (x2 < x1) {\n this.x2 = x1;\n this.x1 = x2;\n } else {\n this.x1 = x1;\n this.x2 = x2;\n }\n if (y2 < y1) {\n this.y2 = y1;\n this.y1 = y2;\n } else {\n this.y1 = y1;\n this.y2 = y2;\n }\n return this;\n }\n add(x: number = 0, y: number = 0): Bounds {\n if (x < this.x1) {\n this.x1 = x;\n }\n if (y < this.y1) {\n this.y1 = y;\n }\n if (x > this.x2) {\n this.x2 = x;\n }\n if (y > this.y2) {\n this.y2 = y;\n }\n return this;\n }\n expand(d: number | [number, number, number, number] = 0): Bounds {\n if (isArray(d)) {\n this.y1 -= d[0];\n this.x2 += d[1];\n this.y2 += d[2];\n this.x1 -= d[3];\n } else {\n this.x1 -= d;\n this.y1 -= d;\n this.x2 += d;\n this.y2 += d;\n }\n return this;\n }\n round(): Bounds {\n this.x1 = Math.floor(this.x1);\n this.y1 = Math.floor(this.y1);\n this.x2 = Math.ceil(this.x2);\n this.y2 = Math.ceil(this.y2);\n return this;\n }\n translate(dx: number = 0, dy: number = 0): Bounds {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n return this;\n }\n rotate(angle: number = 0, x: number = 0, y: number = 0) {\n const p = this.rotatedPoints(angle, x, y);\n return this.clear().add(p[0], p[1]).add(p[2], p[3]).add(p[4], p[5]).add(p[6], p[7]);\n }\n scale(sx: number = 0, sy: number = 0, x: number = 0, y: number = 0) {\n const p = this.scalePoints(sx, sy, x, y);\n return this.clear().add(p[0], p[1]).add(p[2], p[3]);\n }\n /**\n * 并集\n * @param b\n * @returns\n */\n union(b: IBoundsLike): Bounds {\n if (b.x1 < this.x1) {\n this.x1 = b.x1;\n }\n if (b.y1 < this.y1) {\n this.y1 = b.y1;\n }\n if (b.x2 > this.x2) {\n this.x2 = b.x2;\n }\n if (b.y2 > this.y2) {\n this.y2 = b.y2;\n }\n return this;\n }\n /**\n * 交集\n * @param b\n * @returns\n */\n intersect(b: IBoundsLike): Bounds {\n if (b.x1 > this.x1) {\n this.x1 = b.x1;\n }\n if (b.y1 > this.y1) {\n this.y1 = b.y1;\n }\n if (b.x2 < this.x2) {\n this.x2 = b.x2;\n }\n if (b.y2 < this.y2) {\n this.y2 = b.y2;\n }\n return this;\n }\n /**\n * 是否包含b\n * @param b\n * @returns\n */\n encloses(b: IBoundsLike): boolean {\n return b && this.x1 <= b.x1 && this.x2 >= b.x2 && this.y1 <= b.y1 && this.y2 >= b.y2;\n }\n /**\n * 是否共边\n * @param b\n * @returns\n */\n alignsWith(b: IBoundsLike): boolean {\n return b && (this.x1 === b.x1 || this.x2 === b.x2 || this.y1 === b.y1 || this.y2 === b.y2);\n }\n /**\n * 是否相交\n * @param b\n * @returns\n */\n intersects(b: IBoundsLike): boolean {\n return b && !(this.x2 < b.x1 || this.x1 > b.x2 || this.y2 < b.y1 || this.y1 > b.y2);\n }\n /**\n * 是否包含\n * @param x\n * @param y\n * @returns\n */\n contains(x: number = 0, y: number = 0): boolean {\n return !(x < this.x1 || x > this.x2 || y < this.y1 || y > this.y2);\n }\n containsPoint(p: IPointLike): boolean {\n return !(p.x < this.x1 || p.x > this.x2 || p.y < this.y1 || p.y > this.y2);\n }\n width(): number {\n if (this.empty()) {\n return 0;\n }\n return this.x2 - this.x1;\n }\n height(): number {\n if (this.empty()) {\n return 0;\n }\n return this.y2 - this.y1;\n }\n scaleX(s: number = 0): Bounds {\n this.x1 *= s;\n this.x2 *= s;\n return this;\n }\n\n scaleY(s: number = 0): Bounds {\n this.y1 *= s;\n this.y2 *= s;\n return this;\n }\n\n transformWithMatrix(matrix: IMatrix): Bounds {\n transformBoundsWithMatrix(this, this, matrix);\n return this;\n }\n\n copy(b: IBoundsLike) {\n this.x1 = b.x1;\n this.y1 = b.y1;\n this.x2 = b.x2;\n this.y2 = b.y2;\n return this;\n }\n private rotatedPoints(angle: number, x: number, y: number): vec8 {\n const { x1, y1, x2, y2 } = this;\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const cx = x - x * cos + y * sin;\n const cy = y - x * sin - y * cos;\n\n return [\n cos * x1 - sin * y1 + cx,\n sin * x1 + cos * y1 + cy,\n cos * x1 - sin * y2 + cx,\n sin * x1 + cos * y2 + cy,\n cos * x2 - sin * y1 + cx,\n sin * x2 + cos * y1 + cy,\n cos * x2 - sin * y2 + cx,\n sin * x2 + cos * y2 + cy\n ];\n }\n private scalePoints(sx: number, sy: number, x: number, y: number): vec4 {\n const { x1, y1, x2, y2 } = this;\n\n return [sx * x1 + (1 - sx) * x, sy * y1 + (1 - sy) * y, sx * x2 + (1 - sx) * x, sy * y2 + (1 - sy) * y];\n }\n}\n\nexport class AABBBounds extends Bounds {}\nexport class OBBBounds extends Bounds {\n angle: number;\n}\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { LooseFunction } from '../type';
|
|
2
|
+
export declare class HashValue<T> {
|
|
3
|
+
index: number;
|
|
4
|
+
key: string;
|
|
5
|
+
value: T;
|
|
6
|
+
}
|
|
7
|
+
export declare class HashTable<T> {
|
|
8
|
+
private items;
|
|
9
|
+
private itemList;
|
|
10
|
+
constructor();
|
|
11
|
+
get type(): string;
|
|
12
|
+
set(key: string, value: T): HashValue<T>;
|
|
13
|
+
clear(): void;
|
|
14
|
+
del(key: string): void;
|
|
15
|
+
delFrom(index: number): void;
|
|
16
|
+
resetIndex(): void;
|
|
17
|
+
has(key: string): boolean;
|
|
18
|
+
get(key: string): T | null;
|
|
19
|
+
count(): number;
|
|
20
|
+
all(): Array<T>;
|
|
21
|
+
first(): T;
|
|
22
|
+
last(): T;
|
|
23
|
+
getByIndex(index: number): T;
|
|
24
|
+
getKeyByIndex(index: number): string;
|
|
25
|
+
foreach(callback: (key: string, value: T) => boolean | void): boolean;
|
|
26
|
+
private foreachHashv;
|
|
27
|
+
hasValue(value: any): boolean;
|
|
28
|
+
indexOf(key: any): number;
|
|
29
|
+
insertAt(index: number, value: T, key: string): void;
|
|
30
|
+
sort(callback: LooseFunction): HashValue<T>[];
|
|
31
|
+
toArray(): Array<T>;
|
|
32
|
+
push(lists: HashTable<any>): void;
|
|
33
|
+
mapKey(): string[];
|
|
34
|
+
toImmutableMap(): void;
|
|
35
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.HashTable = exports.HashValue = void 0;
|
|
6
|
+
|
|
7
|
+
class HashValue {}
|
|
8
|
+
|
|
9
|
+
exports.HashValue = HashValue;
|
|
10
|
+
|
|
11
|
+
class HashTable {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.items = {}, this.itemList = [];
|
|
14
|
+
}
|
|
15
|
+
get type() {
|
|
16
|
+
return "xhHashTable";
|
|
17
|
+
}
|
|
18
|
+
set(key, value) {
|
|
19
|
+
const vl = new HashValue;
|
|
20
|
+
vl.key = key, vl.value = value;
|
|
21
|
+
let index = this.itemList.length;
|
|
22
|
+
return this.has(key) && (index = this.items[key].index), vl.index = index, this.itemList[index] = vl,
|
|
23
|
+
this.items[key] = vl, vl;
|
|
24
|
+
}
|
|
25
|
+
clear() {
|
|
26
|
+
this.items = {}, this.itemList = [];
|
|
27
|
+
}
|
|
28
|
+
del(key) {
|
|
29
|
+
if (this.has(key)) {
|
|
30
|
+
const index = this.items[key].index;
|
|
31
|
+
index > -1 && this.itemList.splice(index, 1), delete this.items[key], this.resetIndex();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
delFrom(index) {
|
|
35
|
+
for (let i = index + 1; i < this.count(); i++) {
|
|
36
|
+
const key = this.itemList[i].key;
|
|
37
|
+
delete this.items[key];
|
|
38
|
+
}
|
|
39
|
+
this.itemList.splice(index + 1, this.count() - index), this.resetIndex();
|
|
40
|
+
}
|
|
41
|
+
resetIndex() {
|
|
42
|
+
this.foreachHashv(((k, v) => {
|
|
43
|
+
const index = this.itemList.indexOf(v);
|
|
44
|
+
this.items[k].index = index;
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
has(key) {
|
|
48
|
+
return key in this.items;
|
|
49
|
+
}
|
|
50
|
+
get(key) {
|
|
51
|
+
return this.has(key) ? this.items[key].value : null;
|
|
52
|
+
}
|
|
53
|
+
count() {
|
|
54
|
+
return this.itemList.length;
|
|
55
|
+
}
|
|
56
|
+
all() {
|
|
57
|
+
return this.itemList.map((vl => vl.value));
|
|
58
|
+
}
|
|
59
|
+
first() {
|
|
60
|
+
return this.itemList[0].value;
|
|
61
|
+
}
|
|
62
|
+
last() {
|
|
63
|
+
return this.itemList[this.itemList.length - 1].value;
|
|
64
|
+
}
|
|
65
|
+
getByIndex(index) {
|
|
66
|
+
return this.itemList[index].value;
|
|
67
|
+
}
|
|
68
|
+
getKeyByIndex(index) {
|
|
69
|
+
return this.itemList[index].key;
|
|
70
|
+
}
|
|
71
|
+
foreach(callback) {
|
|
72
|
+
for (const key in this.items) {
|
|
73
|
+
if (!1 === callback(key, this.items[key].value)) return !1;
|
|
74
|
+
}
|
|
75
|
+
return !0;
|
|
76
|
+
}
|
|
77
|
+
foreachHashv(callback) {
|
|
78
|
+
for (const key in this.items) {
|
|
79
|
+
if (!1 === callback(key, this.items[key])) return !1;
|
|
80
|
+
}
|
|
81
|
+
return !0;
|
|
82
|
+
}
|
|
83
|
+
hasValue(value) {
|
|
84
|
+
for (const key in this.items) if (this.items[key].value === value) return !0;
|
|
85
|
+
return !1;
|
|
86
|
+
}
|
|
87
|
+
indexOf(key) {
|
|
88
|
+
return this.has(key) ? this.items[key].index : -1;
|
|
89
|
+
}
|
|
90
|
+
insertAt(index, value, key) {
|
|
91
|
+
const hashV = new HashValue;
|
|
92
|
+
hashV.index = index, hashV.key = key, hashV.value = value, this.itemList.splice(index, 0, hashV),
|
|
93
|
+
this.items[key] = hashV, this.resetIndex();
|
|
94
|
+
}
|
|
95
|
+
sort(callback) {
|
|
96
|
+
return this.itemList.sort(((a, b) => callback(a.value, b.value)));
|
|
97
|
+
}
|
|
98
|
+
toArray() {
|
|
99
|
+
return this.itemList.slice(0, this.itemList.length).map((vl => vl.value));
|
|
100
|
+
}
|
|
101
|
+
push(lists) {
|
|
102
|
+
lists.foreach(((key, value) => {
|
|
103
|
+
this.set(key, value);
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
mapKey() {
|
|
107
|
+
const returnArr = [];
|
|
108
|
+
for (const key in this.items) returnArr.push(key);
|
|
109
|
+
return returnArr;
|
|
110
|
+
}
|
|
111
|
+
toImmutableMap() {}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
exports.HashTable = HashTable;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/data-structure/hashTable.ts"],"names":[],"mappings":"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","file":"hashTable.js","sourcesContent":["import type { LooseFunction } from '../type';\n\nexport class HashValue<T> {\n index: number;\n key: string;\n value: T;\n}\n\n// 基于 array 和 object的 HashTable\nexport class HashTable<T> {\n private items: { [key: string]: HashValue<T> };\n private itemList: Array<HashValue<T>>;\n constructor() {\n this.items = {};\n this.itemList = [];\n }\n get type() {\n return 'xhHashTable';\n }\n set(key: string, value: T): HashValue<T> {\n const vl = new HashValue<T>();\n vl.key = key;\n vl.value = value;\n let index = this.itemList.length;\n if (this.has(key)) {\n index = this.items[key].index;\n }\n vl.index = index;\n this.itemList[index] = vl;\n this.items[key] = vl;\n return vl;\n }\n\n clear() {\n this.items = {};\n this.itemList = [];\n }\n del(key: string): void {\n if (this.has(key)) {\n const index = this.items[key].index;\n if (index > -1) {\n this.itemList.splice(index, 1);\n }\n delete this.items[key];\n this.resetIndex();\n }\n }\n\n /**\n * 不包含当前index\n * @param index\n */\n delFrom(index: number) {\n for (let i = index + 1; i < this.count(); i++) {\n const key = this.itemList[i].key;\n delete this.items[key];\n }\n this.itemList.splice(index + 1, this.count() - index);\n this.resetIndex();\n }\n\n resetIndex(): void {\n this.foreachHashv((k: any, v: HashValue<T>) => {\n const index = this.itemList.indexOf(v);\n this.items[k].index = index;\n });\n }\n\n has(key: string): boolean {\n return key in this.items;\n }\n\n get(key: string): T | null {\n if (this.has(key)) {\n return this.items[key].value;\n }\n return null;\n }\n\n count(): number {\n return this.itemList.length;\n }\n\n all(): Array<T> {\n return this.itemList.map(vl => {\n return vl.value;\n });\n }\n first(): T {\n return this.itemList[0].value;\n }\n last(): T {\n return this.itemList[this.itemList.length - 1].value;\n }\n getByIndex(index: number): T {\n return this.itemList[index].value;\n }\n\n getKeyByIndex(index: number): string {\n return this.itemList[index].key;\n }\n\n //遍历 扩展\n foreach(callback: (key: string, value: T) => boolean | void) {\n for (const key in this.items) {\n const returnVal = callback(key, this.items[key].value);\n if (returnVal === false) {\n return false;\n }\n }\n return true;\n }\n private foreachHashv(callback: (key: string, value: HashValue<T>) => boolean | void) {\n for (const key in this.items) {\n const returnVal = callback(key, this.items[key]);\n if (returnVal === false) {\n return false;\n }\n }\n return true;\n }\n hasValue(value: any): boolean {\n for (const key in this.items) {\n if (this.items[key].value === value) {\n return true;\n }\n }\n return false;\n }\n //获取index\n indexOf(key: any): number {\n if (this.has(key)) {\n return this.items[key].index;\n }\n return -1;\n }\n\n //插入\n insertAt(index: number, value: T, key: string) {\n const hashV = new HashValue<T>();\n\n hashV.index = index;\n hashV.key = key;\n hashV.value = value;\n this.itemList.splice(index, 0, hashV);\n this.items[key] = hashV;\n this.resetIndex();\n }\n\n sort(callback: LooseFunction) {\n return this.itemList.sort((a: HashValue<T>, b: HashValue<T>) => {\n return callback(a.value, b.value);\n });\n }\n toArray(): Array<T> {\n return this.itemList.slice(0, this.itemList.length).map(vl => {\n return vl.value;\n });\n }\n push(lists: HashTable<any>) {\n lists.foreach((key: string, value: T) => {\n this.set(key, value);\n });\n }\n mapKey(): string[] {\n const returnArr: string[] = [];\n for (const key in this.items) {\n returnArr.push(key);\n }\n return returnArr;\n }\n\n toImmutableMap() {\n // do nothing\n }\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
|
|
4
|
+
void 0 === k2 && (k2 = k);
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
desc && !("get" in desc ? !m.__esModule : desc.writable || desc.configurable) || (desc = {
|
|
7
|
+
enumerable: !0,
|
|
8
|
+
get: function() {
|
|
9
|
+
return m[k];
|
|
10
|
+
}
|
|
11
|
+
}), Object.defineProperty(o, k2, desc);
|
|
12
|
+
} : function(o, m, k, k2) {
|
|
13
|
+
void 0 === k2 && (k2 = k), o[k2] = m[k];
|
|
14
|
+
}), __exportStar = this && this.__exportStar || function(m, exports) {
|
|
15
|
+
for (var p in m) "default" === p || Object.prototype.hasOwnProperty.call(exports, p) || __createBinding(exports, m, p);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
Object.defineProperty(exports, "__esModule", {
|
|
19
|
+
value: !0
|
|
20
|
+
}), __exportStar(require("./hashTable"), exports), __exportStar(require("./point"), exports),
|
|
21
|
+
__exportStar(require("./bounds"), exports), __exportStar(require("./matrix"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/data-structure/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,8CAA4B;AAE5B,0CAAwB;AACxB,2CAAyB;AACzB,2CAAyB","file":"index.js","sourcesContent":["// 基于 array 和 object 的 HashTable\nexport * from './hashTable';\n// Point\nexport * from './point';\nexport * from './bounds';\nexport * from './matrix';\n"]}
|