@dazhicheng/hooks 1.0.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/dist/index.esm.js +16 -0
- package/dist/index.esm.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../node_modules/.pnpm/is-plain-object@5.0.0/node_modules/is-plain-object/dist/is-plain-object.mjs","../../../node_modules/.pnpm/vue-types@5.1.3_vue@3.5.21_typescript@5.9.3_/node_modules/vue-types/shim/index.modern.js","../src/propTypes.ts","../src/useDesign.ts","../../utils/src/string.ts","../../utils/src/axios/status.ts","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/dayjs.min.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/setupDefaults.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/arrayEach.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticObjectToString.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreateInInObjectString.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isArray.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/hasOwnProp.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/objectEach.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/each.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreateInTypeof.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isFunction.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreateGetObjects.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/keys.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/clone.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/assign.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/ctor.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/lastArrayEach.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/lastObjectEach.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isNull.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/property.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isPlainObject.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCheckCopyKey.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/merge.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/map.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreateIterateHandle.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/some.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/every.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/includes.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/includeArrays.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/uniq.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toArray.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticStrUndefined.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isUndefined.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/eqNull.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticHGKeyRE.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperGetHGSKeys.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/get.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/orderBy.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/sortBy.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/random.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/values.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/shuffle.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreateToNumber.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toNumber.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/slice.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/findKey.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/find.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/pluck.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreateMinMax.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/max.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/unzip.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/flatten.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperLog.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperDeleteProperty.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/lastEach.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isObject.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/clear.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/remove.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toTreeArray.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreateTreeFunc.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/findTree.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/eachTree.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/mapTree.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/searchTree.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/arrayIndexOf.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/arrayLastIndexOf.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isNumber.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isString.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isDate.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticParseInt.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperGetUTCDateTime.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperGetDateTime.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toStringDate.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperNewDate.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isLeapYear.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreateIndexOf.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/indexOf.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/lastIndexOf.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getSize.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isInteger.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isBoolean.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isRegExp.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isError.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isEmpty.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isSymbol.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isArguments.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticDocument.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticWindow.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isFormData.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isMap.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isWeakMap.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isSet.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isWeakSet.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreateiterateIndexOf.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/findIndexOf.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperEqualCompare.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperDefaultCompare.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isEqual.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/findLastIndexOf.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/entries.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreatePickOmit.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/pick.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/omit.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/set.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/groupBy.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/range.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/min.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperNumberDecimal.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperStringRepeat.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperNumberOffsetPoint.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toNumberString.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperMultiply.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreateMathNumber.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/round.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/ceil.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/floor.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toValueString.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toFixed.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toInteger.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/multiply.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperNumberAdd.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperNumberDivide.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/sum.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticStrFirst.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticStrLast.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperGetDateFullYear.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticDayTime.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperGetDateMonth.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isValidDate.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getWhatMonth.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getWhatYear.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticWeekTime.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getWhatWeek.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getWhatDay.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperStringUpperCase.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperCreateGetDateWeek.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getYearWeek.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperGetYMDTime.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperGetYMD.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getYearDay.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/padStart.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toDateString.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/now.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getMonthWeek.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getDateDiff.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/trimRight.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/trimLeft.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/trim.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticEscapeMap.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperFormatEscaper.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/escape.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/unescape.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperStringSubstring.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperStringLowerCase.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/camelCase.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/kebabCase.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/template.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticDecodeURIComponent.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/unserialize.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticEncodeURIComponent.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/serialize.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/staticLocation.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/helperGetLocatOrigin.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/parseUrl.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/cookie.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/browse.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/index.esm.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/objectMap.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/union.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/sample.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/filter.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/findLast.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/reduce.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/copyWithin.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/chunk.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/zip.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/zipObject.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/invoke.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toArrayTree.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/filterTree.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isNaN.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isFinite.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isFloat.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isTypeError.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isElement.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isDocument.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isWindow.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isMatch.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isEqualWith.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getType.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/uniqueId.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toStringJSON.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toJSONString.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/first.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/last.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/forOf.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/lastForOf.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/has.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/countBy.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/destructuring.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/commafy.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/add.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/subtract.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/divide.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/mean.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/timestamp.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/isDateSame.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getWhatQuarter.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getWhatHours.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getWhatMinutes.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getWhatSeconds.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getDayOfYear.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getDayOfMonth.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/repeat.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/padEnd.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/startsWith.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/endsWith.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/toFormatString.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/noop.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/bind.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/once.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/after.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/before.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/throttle.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/debounce.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/delay.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/getBaseURL.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/locat.js","../../../node_modules/.pnpm/decimal.js@10.6.0/node_modules/decimal.js/decimal.mjs","../src/usePriorityValue.ts","../../utils/src/tool.ts","../src/tools.ts","../src/useIsScroll.ts"],"sourcesContent":["/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","import{isPlainObject as t}from\"is-plain-object\";const e={silent:!1,logLevel:\"warn\"},n=Object.defineProperty,s=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)};function r(e,n={},r=!1){const i={_vueTypes_name:{value:e,writable:!0},def:{value(e){return void 0===e?(\"default\"in this&&delete this.default,this):(this.default=s(e)?()=>[].concat(e):t(e)?()=>Object.assign({},e):e,this)}},isRequired:{get(){return this.required=!0,this}}};return r&&(i.validate={value(){}}),n.validator||(n.validator=()=>!0),Object.defineProperties(n,i)}const i=()=>r(\"any\",{},!0),a=()=>r(\"func\",{type:Function},!0),u=()=>r(\"bool\",{type:Boolean},!0),o=()=>r(\"string\",{type:String},!0),l=()=>r(\"number\",{type:Number},!0),c=()=>r(\"array\",{type:Array},!0),f=()=>r(\"object\",{type:Object},!0),d=()=>r(\"symbol\"),b=()=>r(\"integer\",{type:Number}),y=t=>r(\"oneOf\"),g=t=>r(\"custom\"),p=t=>r(\"instanceOf\",{type:t}),h=t=>r(\"oneOfType\"),v=t=>r(\"arrayOf\",{type:Array}),O=t=>r(\"objectOf\",{type:Object}),j=t=>n(r(\"shape\",{type:Object}),\"loose\",{get(){return this}}),m=()=>({type:null});function T(t,e,s,i=!1,a=!1){const u=i?\"get\":\"value\";return n(t,e,{[u]:()=>r(e,Object.assign({},s),a).def(i?t.defaults[e]:void 0)})}function w(t,e,n={}){const s=r(t,Object.assign({},e,n),!!e.validable);return s.validator&&delete s.validator,s}const x=(t,e)=>r(t,e,!0),A=(t,e)=>r(t,e),D=/*#__PURE__*/(n=>(n=class{static get any(){return i()}static get func(){return a().def(this.defaults.func)}static get bool(){return u().def(this.defaults.bool)}static get string(){return o().def(this.defaults.string)}static get number(){return l().def(this.defaults.number)}static get array(){return c().def(this.defaults.array)}static get object(){return f().def(this.defaults.object)}static get symbol(){return d()}static get integer(){return b().def(this.defaults.integer)}static get nullable(){return{type:null}}static extend(e){if(s(e))return e.forEach(t=>this.extend(t)),this;const{name:n,validate:r,getter:i=!1,type:a=null}=e;return T(this,n,{type:t(a)&&a.type?null:a},i,!!r)}},n.defaults={},n.sensibleDefaults=void 0,n.config=e,n.oneOf=y,n.custom=g,n.instanceOf=p,n.oneOfType=h,n.arrayOf=v,n.objectOf=O,n.shape=j,n.utils={toType:r,validate:(...t)=>!!t},n))();function N(t={func:()=>{},bool:!0,string:\"\",number:0,array:()=>[],object:()=>({}),integer:0}){var e;return(e=class extends D{static get sensibleDefaults(){return Object.assign({},this.defaults)}static set sensibleDefaults(e){this.defaults=!1!==e?Object.assign({},!0!==e?e:t):{}}}).defaults=Object.assign({},t),e}function E(t,e,n=!1){return!0}\"production\"!==process.env.NODE_ENV&&!1===e.silent&&console.warn(\"You are using the production shimmed version of VueTypes in a development build. Refer to https://dwightjack.github.io/vue-types/guide/installation.html#production-build to learn how to configure VueTypes for usage in multiple environments.\");class V extends(N()){}export{i as any,c as array,v as arrayOf,u as bool,e as config,N as createTypes,g as custom,V as default,w as fromType,a as func,p as instanceOf,b as integer,m as nullable,l as number,f as object,O as objectOf,y as oneOf,h as oneOfType,j as shape,o as string,d as symbol,A as toType,x as toValidableType,E as validateType};\n","import type { VueTypeDef } from 'vue-types'\r\nimport VueTypes, { toType } from 'vue-types/shim'\r\n\r\n// export type VueNode = VNodeChild | JSX.Element\r\n\r\nexport class propTypes extends VueTypes {\r\n static get style(): VueTypeDef<any> {\r\n return toType('style', {\r\n type: [String, Object],\r\n default: undefined,\r\n })\r\n }\r\n\r\n static get VNodeChild(): VueTypeDef<any> {\r\n return toType('VNodeChild', {\r\n default: undefined,\r\n })\r\n }\r\n}\r\n","export function useDesign(scope: string) {\n const values = {\n prefixCls: 'tt',\n }\n\n return {\n prefixCls: `${values.prefixCls}-${scope}`,\n prefixVar: values.prefixCls,\n }\n}\n","export function capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function trim(str: string): string {\n return str.trim();\n}\n\nexport function kebabToCamelCase(str: string): string {\n return str.replace(/-(\\w)/g, (_, c) => (c ? c.toUpperCase() : ''))\n}\n","/**\r\n * 接口状态码\r\n */\r\nexport enum ApiStatus {\r\n success = 200, // 成功\r\n success1 = 0, // 成功\r\n error = 400, // 错误\r\n unauthorized = 401, // 未授权\r\n forbidden = 403, // 禁止访问\r\n notFound = 404, // 未找到\r\n methodNotAllowed = 405, // 方法不允许\r\n requestTimeout = 408, // 请求超时\r\n internalServerError = 500, // 服务器错误\r\n notImplemented = 501, // 未实现\r\n badGateway = 502, // 网关错误\r\n serviceUnavailable = 503, // 服务不可用\r\n gatewayTimeout = 504, // 网关超时\r\n httpVersionNotSupported = 505, // HTTP版本不支持\r\n NEED_REFRESH_TOKEN = 1001, // 需要刷新令牌\r\n API_NO_AUTH = 1002, // 接口未授权\r\n INVALID_TOKEN = 1005 // 无效的token\r\n}\r\n\r\n// 错误提示\r\nexport enum HttpMsg {\r\n badGateway = \"网关错误,请稍后重试\",\r\n forbidden = \"禁止访问该资源\",\r\n gatewayTimeout = \"网关超时,请稍后重试\",\r\n internalServerError = \"服务器内部错误,请稍后重试\",\r\n methodNotAllowed = \"请求方法不允许\",\r\n networkError = \"网络连接异常,请检查网络连接\",\r\n notFound = \"请求的资源不存在\",\r\n requestCancelled = \"请求已取消\",\r\n requestConfigError = \"请求配置错误\",\r\n requestFailed = \"请求失败\",\r\n requestTimeout = \"请求超时,请稍后重试\",\r\n serviceUnavailable = \"服务暂时不可用,请稍后重试\",\r\n unauthorized = \"未授权访问,请重新登录\"\r\n}\r\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","var setupDefaults = {\r\n keyId: 1,\r\n cookies: {\r\n path: '/'\r\n },\r\n treeOptions: {\r\n parentKey: 'parentId',\r\n key: 'id',\r\n children: 'children'\r\n },\r\n parseDateFormat: 'yyyy-MM-dd HH:mm:ss',\r\n firstDayOfWeek: 1\r\n}\r\n\r\nexport default setupDefaults\r\n","function arrayEach (list, iterate, context) {\r\n if (list) {\r\n if (list.forEach) {\r\n list.forEach(iterate, context)\r\n } else {\r\n for (var index = 0, len = list.length; index < len; index++) {\r\n iterate.call(context, list[index], index, list)\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default arrayEach\r\n","var objectToString = Object.prototype.toString\r\n\r\nexport default objectToString\r\n","import objectToString from './staticObjectToString'\r\n\r\nfunction helperCreateInInObjectString (type) {\r\n return function (obj) {\r\n return '[object ' + type + ']' === objectToString.call(obj)\r\n }\r\n}\r\n\r\nexport default helperCreateInInObjectString\r\n","import helperCreateInInObjectString from './helperCreateInInObjectString'\r\n\r\n/**\r\n * 判断是否数组\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isArray = Array.isArray || helperCreateInInObjectString('Array')\r\n\r\nexport default isArray\r\n","/**\r\n * 判断对象自身属性中是否具有指定的属性\r\n *\r\n * @param {Object} obj 对象\r\n * @param {String/Number} key 键值\r\n * @return {Boolean}\r\n */\r\nfunction hasOwnProp (obj, key) {\r\n return obj && obj.hasOwnProperty ? obj.hasOwnProperty(key) : false\r\n}\r\n\r\nexport default hasOwnProp\r\n","import hasOwnProp from './hasOwnProp'\r\n\r\nfunction objectEach (obj, iterate, context) {\r\n if (obj) {\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n iterate.call(context, obj[key], key, obj)\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default objectEach\r\n","import isArray from './isArray'\r\nimport arrayEach from './arrayEach'\r\nimport objectEach from './objectEach'\r\n\r\n/**\r\n * 迭代器\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction each (obj, iterate, context) {\r\n if (obj) {\r\n return (isArray(obj) ? arrayEach : objectEach)(obj, iterate, context)\r\n }\r\n return obj\r\n}\r\n\r\nexport default each\r\n","/* eslint-disable valid-typeof */\r\nfunction helperCreateInTypeof (type) {\r\n return function (obj) {\r\n return typeof obj === type\r\n }\r\n}\r\n\r\nexport default helperCreateInTypeof\r\n","import helperCreateInTypeof from './helperCreateInTypeof'\r\n\r\n/**\r\n * 判断是否方法\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isFunction = helperCreateInTypeof('function')\r\n\r\nexport default isFunction\r\n","import each from './each'\r\n\r\nfunction helperCreateGetObjects (name, getIndex) {\r\n var proMethod = Object[name]\r\n return function (obj) {\r\n var result = []\r\n if (obj) {\r\n if (proMethod) {\r\n return proMethod(obj)\r\n }\r\n each(obj, getIndex > 1 ? function (key) {\r\n result.push(['' + key, obj[key]])\r\n } : function () {\r\n result.push(arguments[getIndex])\r\n })\r\n }\r\n return result\r\n }\r\n}\r\n\r\nexport default helperCreateGetObjects\r\n","import helperCreateGetObjects from './helperCreateGetObjects'\r\n\r\n/**\r\n * 获取对象所有属性\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @return {Array}\r\n */\r\nvar keys = helperCreateGetObjects('keys', 1)\r\n\r\nexport default keys\r\n","import objectToString from './staticObjectToString'\r\n\r\nimport objectEach from './objectEach'\r\nimport arrayEach from './arrayEach'\r\n\r\nfunction getCativeCtor (val, args) {\r\n var Ctor = val.__proto__.constructor\r\n return args ? new Ctor(args) : new Ctor()\r\n}\r\n\r\nfunction handleValueClone (item, isDeep) {\r\n return isDeep ? copyValue(item, isDeep) : item\r\n}\r\n\r\nfunction copyValue (val, isDeep) {\r\n if (val) {\r\n switch(objectToString.call(val)) {\r\n case \"[object Object]\": {\r\n var restObj = Object.create(Object.getPrototypeOf(val))\r\n objectEach(val, function (item, key) {\r\n restObj[key] = handleValueClone(item, isDeep)\r\n })\r\n return restObj\r\n }\r\n case \"[object Date]\":\r\n case \"[object RegExp]\": {\r\n return getCativeCtor(val, val.valueOf())\r\n }\r\n case \"[object Array]\":\r\n case \"[object Arguments]\": {\r\n var restArr = []\r\n arrayEach(val, function (item) {\r\n restArr.push(handleValueClone(item, isDeep))\r\n })\r\n return restArr\r\n }\r\n case \"[object Set]\": {\r\n var restSet = getCativeCtor(val)\r\n restSet.forEach(function (item) {\r\n restSet.add(handleValueClone(item, isDeep))\r\n })\r\n return restSet\r\n }\r\n case \"[object Map]\": {\r\n var restMap = getCativeCtor(val)\r\n restMap.forEach(function (item, key) {\r\n restMap.set(key, handleValueClone(item, isDeep))\r\n })\r\n return restMap\r\n }\r\n }\r\n }\r\n return val\r\n}\r\n\r\n/**\r\n * 浅拷贝/深拷贝\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Boolean} deep 是否深拷贝\r\n * @return {Object}\r\n */\r\nfunction clone (obj, deep) {\r\n if (obj) {\r\n return copyValue(obj, deep)\r\n }\r\n return obj\r\n}\r\n\r\nexport default clone\r\n","import arrayEach from './arrayEach'\r\nimport keys from './keys'\r\nimport isArray from './isArray'\r\nimport clone from './clone'\r\n\r\nvar objectAssignFns = Object.assign\r\n\r\nfunction handleAssign (destination, args, isClone) {\r\n var len = args.length\r\n for (var source, index = 1; index < len; index++) {\r\n source = args[index]\r\n arrayEach(keys(args[index]), isClone ? function (key) {\r\n destination[key] = clone(source[key], isClone)\r\n } : function (key) {\r\n destination[key] = source[key]\r\n })\r\n }\r\n return destination\r\n}\r\n\r\n/**\r\n * 将一个或多个源对象复制到目标对象中\r\n *\r\n * @param {Object} target 目标对象\r\n * @param {...Object}\r\n * @return {Boolean}\r\n */\r\nvar assign = function (target) {\r\n if (target) {\r\n var args = arguments\r\n if (target === true) {\r\n if (args.length > 1) {\r\n target = isArray(target[1]) ? [] : {}\r\n return handleAssign(target, args, true)\r\n }\r\n } else {\r\n return objectAssignFns ? objectAssignFns.apply(Object, args) : handleAssign(target, args)\r\n }\r\n }\r\n return target\r\n}\r\n\r\nexport default assign\r\n","import setupDefaults from './setupDefaults'\r\n\r\nimport arrayEach from './arrayEach'\r\nimport each from './each'\r\nimport isFunction from './isFunction'\r\n\r\nimport assign from './assign'\r\n\r\nvar XEUtils = function () {}\r\n\r\nfunction mixin () {\r\n arrayEach(arguments, function (methods) {\r\n each(methods, function (fn, name) {\r\n XEUtils[name] = isFunction(fn) ? function () {\r\n var result = fn.apply(XEUtils.$context, arguments)\r\n XEUtils.$context = null\r\n return result\r\n } : fn\r\n })\r\n })\r\n}\r\n\r\nfunction setConfig (options) {\r\n return assign(setupDefaults, options)\r\n}\r\n\r\nfunction getConfig () {\r\n return setupDefaults\r\n}\r\n\r\nvar version = '4.0.0'\r\n\r\nXEUtils.VERSION = version\r\nXEUtils.version = version\r\nXEUtils.mixin = mixin\r\nXEUtils.setup = setConfig\r\nXEUtils.setConfig = setConfig\r\nXEUtils.getConfig = getConfig\r\n\r\nexport default XEUtils\r\n","function lastArrayEach (obj, iterate, context) {\r\n for (var len = obj.length - 1; len >= 0; len--) {\r\n iterate.call(context, obj[len], len, obj)\r\n }\r\n}\r\n\r\nexport default lastArrayEach\r\n","import lastArrayEach from './lastArrayEach'\r\nimport keys from './keys'\r\n\r\nfunction lastObjectEach (obj, iterate, context) {\r\n lastArrayEach(keys(obj), function (key) {\r\n iterate.call(context, obj[key], key, obj)\r\n })\r\n}\r\n\r\nexport default lastObjectEach\r\n","/**\r\n * 判断是否为Null\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isNull (obj) {\r\n return obj === null\r\n}\r\n\r\nexport default isNull\r\n","import isNull from './isNull'\r\n\r\n/**\r\n * 返回一个获取对象属性的函数\r\n *\r\n * @param {String} name 属性名\r\n * @param {Object} defs 空值\r\n */\r\nfunction property (name, defs) {\r\n return function (obj) {\r\n return isNull(obj) ? defs : obj[name]\r\n }\r\n}\r\n\r\nexport default property\r\n","/**\r\n * 判断是否对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isPlainObject (obj) {\r\n return obj ? obj.constructor === Object : false\r\n}\r\n\r\nexport default isPlainObject\r\n","function helperCheckCopyKey (key) {\r\n return key !== '__proto__' && key !== 'constructor'\r\n}\r\n\r\nexport default helperCheckCopyKey\r\n","import isArray from './isArray'\r\nimport isPlainObject from './isPlainObject'\r\nimport isFunction from './isFunction'\r\nimport each from './each'\r\n\r\nimport helperCheckCopyKey from './helperCheckCopyKey'\r\n\r\nfunction handleMerge (target, source) {\r\n if ((isPlainObject(target) && isPlainObject(source)) || (isArray(target) && isArray(source))) {\r\n each(source, function (val, key) {\r\n if (helperCheckCopyKey(key)) {\r\n target[key] = isFunction(source) ? val : handleMerge(target[key], val)\r\n }\r\n })\r\n return target\r\n }\r\n return source\r\n}\r\n\r\n/**\r\n * 将一个或多个源对象合并到目标对象中\r\n *\r\n * @param {Object} target 目标对象\r\n * @param {...Object}\r\n * @return {Boolean}\r\n */\r\nvar merge = function (target) {\r\n if (!target) {\r\n target = {}\r\n }\r\n var args = arguments\r\n var len = args.length\r\n for (var source, index = 1; index < len; index++) {\r\n source = args[index]\r\n if (source) {\r\n handleMerge(target, source)\r\n }\r\n }\r\n return target\r\n}\r\n\r\nexport default merge\r\n","import each from './each'\r\n\r\n/**\r\n * 指定方法后的返回值组成的新数组\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Array}\r\n */\r\nfunction map (obj, iterate, context) {\r\n var result = []\r\n if (obj && arguments.length > 1) {\r\n if (obj.map) {\r\n return obj.map(iterate, context)\r\n } else {\r\n each(obj, function () {\r\n result.push(iterate.apply(context, arguments))\r\n })\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport default map\r\n","import hasOwnProp from './hasOwnProp'\r\nimport isArray from './isArray'\r\n\r\nfunction helperCreateIterateHandle (prop, useArray, restIndex, matchValue, defaultValue) {\r\n return function (obj, iterate, context) {\r\n if (obj && iterate) {\r\n if (prop && obj[prop]) {\r\n return obj[prop](iterate, context)\r\n } else {\r\n if (useArray && isArray(obj)) {\r\n for (var index = 0, len = obj.length; index < len; index++) {\r\n if (!!iterate.call(context, obj[index], index, obj) === matchValue) {\r\n return [true, false, index, obj[index]][restIndex]\r\n }\r\n }\r\n } else {\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n if (!!iterate.call(context, obj[key], key, obj) === matchValue) {\r\n return [true, false, key, obj[key]][restIndex]\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport default helperCreateIterateHandle\r\n","import helperCreateIterateHandle from './helperCreateIterateHandle'\r\n\r\n/**\r\n * 对象中的值中的每一项运行给定函数,如果函数对任一项返回true,则返回true,否则返回false\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Boolean}\r\n */\r\nvar some = helperCreateIterateHandle('some', 1, 0, true, false)\r\n\r\nexport default some\r\n","import helperCreateIterateHandle from './helperCreateIterateHandle'\r\n\r\n/**\r\n * 对象中的值中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true,否则返回false\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Boolean}\r\n */\r\nvar every = helperCreateIterateHandle('every', 1, 1, false, true)\r\n\r\nexport default every\r\n","import hasOwnProp from './hasOwnProp'\r\n\r\n/**\r\n * 判断对象是否包含该值,成功返回true否则false\r\n *\r\n * @param {Object} obj 对象\r\n * @param {Object} val 值\r\n * @return {Boolean}\r\n */\r\nfunction includes (obj, val) {\r\n if (obj) {\r\n if (obj.includes) {\r\n return obj.includes(val)\r\n }\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n if (val === obj[key]) {\r\n return true\r\n }\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\nexport default includes\r\n","import isArray from './isArray'\r\nimport includes from './includes'\r\n\r\n/**\r\n * 判断数组是否包含另一数组\r\n *\r\n * @param {Array} array1 数组\r\n * @param {Array} array2 被包含数组\r\n * @return {Boolean}\r\n */\r\nfunction includeArrays (array1, array2) {\r\n var len\r\n var index = 0\r\n if (isArray(array1) && isArray(array2)) {\r\n for (len = array2.length; index < len; index++) {\r\n if (!includes(array1, array2[index])) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n return includes(array1, array2)\r\n}\r\n\r\nexport default includeArrays\r\n","import each from './each'\r\nimport includes from './includes'\r\nimport isFunction from './isFunction'\r\nimport property from './property'\r\n\r\n/**\r\n * 数组去重\r\n * \r\n * @param {*} array 数组\r\n * @param {*} iterate 字段或回调\r\n * @param {*} context \r\n * @returns \r\n */\r\nfunction uniq (array, iterate, context) {\r\n var result = []\r\n if (iterate) {\r\n if (!isFunction(iterate)) {\r\n iterate = property(iterate)\r\n }\r\n var val, valMap = {}\r\n each(array, function (item, key) {\r\n val = iterate.call(context, item, key, array)\r\n if (!valMap[val]) {\r\n valMap[val] = 1\r\n result.push(item)\r\n }\r\n })\r\n } else {\r\n each(array, function (value) {\r\n if (!includes(result, value)) {\r\n result.push(value)\r\n }\r\n })\r\n }\r\n return result\r\n}\r\n\r\nexport default uniq\r\n","import map from './map'\r\n\r\n/**\r\n * 将对象或者伪数组转为新数组\r\n *\r\n * @param {Array} list 数组\r\n * @return {Array}\r\n */\r\nfunction toArray (list) {\r\n return map(list, function (item) {\r\n return item\r\n })\r\n}\r\n\r\nexport default toArray\r\n","var staticStrUndefined = 'undefined'\r\n\r\nexport default staticStrUndefined\r\n","import staticStrUndefined from './staticStrUndefined'\r\n\r\nimport helperCreateInTypeof from './helperCreateInTypeof'\r\n\r\n/**\r\n * 判断是否Undefined\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isUndefined = helperCreateInTypeof(staticStrUndefined)\r\n\r\nexport default isUndefined\r\n","import isNull from './isNull'\r\nimport isUndefined from './isUndefined'\r\n\r\n/**\r\n * 判断是否 undefined 和 null\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction eqNull (obj) {\r\n return isNull(obj) || isUndefined(obj)\r\n}\r\n\r\nexport default eqNull\r\n","var staticHGKeyRE = /(.+)?\\[(\\d+)\\]$/\r\n\r\nexport default staticHGKeyRE\r\n","function helperGetHGSKeys (property) {\r\n // 以最快的方式判断数组,可忽略准确性\r\n return property ? (property.splice && property.join ? property : ('' + property).replace(/(\\[\\d+\\])\\.?/g,'$1.').replace(/\\.$/, '').split('.')) : []\r\n}\r\n\r\nexport default helperGetHGSKeys\r\n","import staticHGKeyRE from './staticHGKeyRE'\r\n\r\nimport helperGetHGSKeys from './helperGetHGSKeys'\r\nimport hasOwnProp from './hasOwnProp'\r\nimport isUndefined from './isUndefined'\r\nimport eqNull from './eqNull'\r\n\r\n/**\r\n * 获取对象的属性的值,如果值为 undefined,则返回默认值\r\n * @param {Object/Array} obj 对象\r\n * @param {String/Function} property 键、路径\r\n * @param {Object} defaultValue 默认值\r\n * @return {Object}\r\n */\r\nfunction get (obj, property, defaultValue) {\r\n if (eqNull(obj)) {\r\n return defaultValue\r\n }\r\n var result = getValueByPath(obj, property)\r\n return isUndefined(result) ? defaultValue : result\r\n}\r\n\r\nfunction getDeepProps (obj, key) {\r\n var matchs = key ? key.match(staticHGKeyRE) : ''\r\n return matchs ? (matchs[1] ? (obj[matchs[1]] ? obj[matchs[1]][matchs[2]] : undefined) : obj[matchs[2]]) : obj[key]\r\n}\r\n\r\nfunction getValueByPath (obj, property) {\r\n if (obj) {\r\n var rest, props, len\r\n var index = 0\r\n if (obj[property] || hasOwnProp(obj, property)) {\r\n return obj[property]\r\n } else {\r\n props = helperGetHGSKeys(property)\r\n len = props.length\r\n if (len) {\r\n for (rest = obj; index < len; index++) {\r\n rest = getDeepProps(rest, props[index])\r\n if (eqNull(rest)) {\r\n if (index === len - 1) {\r\n return rest\r\n }\r\n return\r\n }\r\n }\r\n }\r\n return rest\r\n }\r\n }\r\n}\r\n\r\nexport default get\r\n","import arrayEach from './arrayEach'\r\nimport toArray from './toArray'\r\nimport map from './map'\r\n\r\nimport isArray from './isArray'\r\nimport isFunction from './isFunction'\r\nimport isPlainObject from './isPlainObject'\r\nimport isUndefined from './isUndefined'\r\nimport isNull from './isNull'\r\nimport eqNull from './eqNull'\r\nimport get from './get'\r\nimport property from './property'\r\n\r\nvar ORDER_PROP_ASC = 'asc'\r\nvar ORDER_PROP_DESC = 'desc'\r\n\r\n// function handleSort (v1, v2) {\r\n// return v1 > v2 ? 1 : -1\r\n// }\r\n\r\n// '' < 数字 < 字符 < null < undefined\r\nfunction handleSort (v1, v2) {\r\n if (isUndefined(v1)) {\r\n return 1\r\n }\r\n if (isNull(v1)) {\r\n return isUndefined(v2) ? -1 : 1\r\n }\r\n return v1 && v1.localeCompare ? v1.localeCompare(v2) : (v1 > v2 ? 1 : -1)\r\n}\r\n\r\nfunction buildMultiOrders (name, confs, compares) {\r\n return function (item1, item2) {\r\n var v1 = item1[name]\r\n var v2 = item2[name]\r\n if (v1 === v2) {\r\n return compares ? compares(item1, item2) : 0\r\n }\r\n return confs.order === ORDER_PROP_DESC ? handleSort(v2, v1) : handleSort(v1, v2)\r\n }\r\n}\r\n\r\nfunction getSortConfs (arr, list, fieldConfs, context) {\r\n var sortConfs = []\r\n fieldConfs = isArray(fieldConfs) ? fieldConfs : [fieldConfs]\r\n arrayEach(fieldConfs, function (handle, index) {\r\n if (handle) {\r\n var field = handle\r\n var order\r\n if (isArray(handle)) {\r\n field = handle[0]\r\n order = handle[1]\r\n } else if (isPlainObject(handle)) {\r\n field = handle.field\r\n order = handle.order\r\n }\r\n sortConfs.push({\r\n field: field,\r\n order: order || ORDER_PROP_ASC\r\n })\r\n arrayEach(list, isFunction(field) ? function (item, key) {\r\n item[index] = field.call(context, item.data, key, arr)\r\n } : function (item) {\r\n item[index] = field ? get(item.data, field) : item.data\r\n })\r\n }\r\n })\r\n return sortConfs\r\n}\r\n\r\n/**\r\n * 将数组进行排序\r\n *\r\n * @param {Array} arr 数组\r\n * @param {Function/String/Array} fieldConfs 方法或属性\r\n * @param {Object} context 上下文\r\n * @return {Array}\r\n */\r\nfunction orderBy (arr, fieldConfs, context) {\r\n if (arr) {\r\n if (eqNull(fieldConfs)) {\r\n return toArray(arr).sort(handleSort)\r\n }\r\n var compares\r\n var list = map(arr, function (item) {\r\n return { data: item }\r\n })\r\n var sortConfs = getSortConfs(arr, list, fieldConfs, context)\r\n var len = sortConfs.length - 1\r\n while (len >= 0) {\r\n compares = buildMultiOrders(len, sortConfs[len], compares)\r\n len--\r\n }\r\n if (compares) {\r\n list = list.sort(compares)\r\n }\r\n return map(list, property('data'))\r\n }\r\n return []\r\n}\r\n\r\nexport default orderBy\r\n","import orderBy from './orderBy'\r\n\r\nvar sortBy = orderBy\r\n\r\nexport default sortBy\r\n","/**\r\n * 获取一个指定范围内随机数\r\n *\r\n * @param {Number} minVal 最小值\r\n * @param {Number} maxVal 最大值\r\n * @return {Number}\r\n */\r\nfunction random (minVal, maxVal) {\r\n return minVal >= maxVal ? minVal : ((minVal = minVal >> 0) + Math.round(Math.random() * ((maxVal || 9) - minVal)))\r\n}\r\n\r\nexport default random\r\n","import helperCreateGetObjects from './helperCreateGetObjects'\r\n\r\n/**\r\n * 获取对象所有值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @return {Array}\r\n */\r\nvar values = helperCreateGetObjects('values', 0)\r\n\r\nexport default values\r\n","import random from './random'\r\n\r\nimport values from './values'\r\n\r\n/**\r\n * 将一个数组随机打乱,返回一个新的数组\r\n *\r\n * @param {Array} array 数组\r\n * @return {Array}\r\n */\r\nfunction shuffle (array) {\r\n var index\r\n var result = []\r\n var list = values(array)\r\n var len = list.length - 1\r\n for (; len >= 0; len--) {\r\n index = len > 0 ? random(0, len) : 0\r\n result.push(list[index])\r\n list.splice(index, 1)\r\n }\r\n return result\r\n}\r\n\r\nexport default shuffle\r\n","function helperCreateToNumber (handle) {\r\n return function (str) {\r\n if (str) {\r\n var num = handle(str && str.replace ? str.replace(/,/g, '') : str)\r\n if (!isNaN(num)) {\r\n return num\r\n }\r\n }\r\n return 0\r\n }\r\n}\r\n\r\nexport default helperCreateToNumber\r\n","import helperCreateToNumber from './helperCreateToNumber'\r\n\r\n/**\r\n * 转数值\r\n * @param { String/Number } str 数值\r\n *\r\n * @return {Number}\r\n */\r\nvar toNumber = helperCreateToNumber(parseFloat)\r\n\r\nexport default toNumber\r\n","import toNumber from './toNumber'\r\n\r\n/**\r\n * 裁剪 Arguments 或数组 array,从 start 位置开始到 end 结束,但不包括 end 本身的位置\r\n * @param {Array/Arguments} array 数组或Arguments\r\n * @param {Number} startIndex 开始索引\r\n * @param {Number} endIndex 结束索引\r\n */\r\nfunction slice (array, startIndex, endIndex) {\r\n var result = []\r\n var argsSize = arguments.length\r\n if (array) {\r\n startIndex = argsSize >= 2 ? toNumber(startIndex) : 0\r\n endIndex = argsSize >= 3 ? toNumber(endIndex) : array.length\r\n if (array.slice) {\r\n return array.slice(startIndex, endIndex)\r\n }\r\n for (; startIndex < endIndex; startIndex++) {\r\n result.push(array[startIndex])\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport default slice\r\n","import helperCreateIterateHandle from './helperCreateIterateHandle'\r\n\r\n/**\r\n * 查找匹配第一条数据的键\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nvar findKey = helperCreateIterateHandle('', 0, 2, true)\r\n\r\nexport default findKey\r\n","import helperCreateIterateHandle from './helperCreateIterateHandle'\r\n\r\n/**\r\n * 从左至右遍历,匹配最近的一条数据\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nvar find = helperCreateIterateHandle('find', 1, 3, true)\r\n\r\nexport default find\r\n","import map from './map'\r\nimport property from './property'\r\n\r\n/**\r\n * 获取数组对象中某属性值,返回一个数组\r\n *\r\n * @param {Array} array 数组\r\n * @param {String} key 属性值\r\n * @return {Array}\r\n */\r\nfunction pluck (obj, key) {\r\n return map(obj, property(key))\r\n}\r\n\r\nexport default pluck\r\n","import isFunction from './isFunction'\r\nimport eqNull from './eqNull'\r\nimport get from './get'\r\n\r\nimport arrayEach from './arrayEach'\r\n\r\nfunction helperCreateMinMax (handle) {\r\n return function (arr, iterate) {\r\n if (arr && arr.length) {\r\n var rest, itemIndex\r\n arrayEach(arr, function (itemVal, index) {\r\n if (iterate) {\r\n itemVal = isFunction(iterate) ? iterate(itemVal, index, arr) : get(itemVal, iterate)\r\n }\r\n if (!eqNull(itemVal) && (eqNull(rest) || handle(rest, itemVal))) {\r\n itemIndex = index\r\n rest = itemVal\r\n }\r\n })\r\n return arr[itemIndex]\r\n }\r\n return rest\r\n }\r\n}\r\n\r\nexport default helperCreateMinMax\r\n","import helperCreateMinMax from './helperCreateMinMax'\r\n\r\n/**\r\n * 获取最大值\r\n *\r\n * @param {Array} arr 数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @return {Number}\r\n */\r\nvar max = helperCreateMinMax(function (rest, itemVal) {\r\n return rest < itemVal\r\n})\r\n\r\nexport default max\r\n","import pluck from './pluck'\r\n\r\nimport max from './max'\r\n\r\n/**\r\n * 与 zip 相反\r\n *\r\n * @param {Array} arrays 数组集合\r\n */\r\nfunction unzip (arrays) {\r\n var index, maxItem, len\r\n var result = []\r\n if (arrays && arrays.length) {\r\n index = 0\r\n maxItem = max(arrays, function (item) {\r\n return item ? item.length : 0\r\n })\r\n for (len = maxItem ? maxItem.length : 0; index < len; index++) {\r\n result.push(pluck(arrays, index))\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport default unzip\r\n","import isArray from './isArray'\r\nimport arrayEach from './arrayEach'\r\n\r\nfunction flattenDeep (array, deep) {\r\n var result = []\r\n arrayEach(array, function (vals) {\r\n result = result.concat(isArray(vals) ? (deep ? flattenDeep(vals, deep) : vals) : [vals])\r\n })\r\n return result\r\n}\r\n\r\n/**\r\n * 将一个多维数组铺平\r\n * @param {Array} array 数组\r\n * @param {Boolean} deep 是否深层\r\n * @return {Array}\r\n */\r\nfunction flatten (array, deep) {\r\n if (isArray(array)) {\r\n return flattenDeep(array, deep)\r\n }\r\n return []\r\n}\r\n\r\nexport default flatten\r\n","function helperLog (type, msg) {\r\n return (console[type] || console.log)(msg)\r\n}\r\n\r\nexport default helperLog\r\n","function helperDeleteProperty (obj, property) {\r\n try {\r\n delete obj[property]\r\n } catch (e) {\r\n obj[property] = undefined\r\n }\r\n}\r\n\r\nexport default helperDeleteProperty\r\n","import isArray from './isArray'\r\nimport lastArrayEach from './lastArrayEach'\r\nimport lastObjectEach from './lastObjectEach'\r\n\r\n/**\r\n * 迭代器,从最后开始迭代\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction lastEach (obj, iterate, context) {\r\n if (obj) {\r\n return (isArray(obj) ? lastArrayEach : lastObjectEach)(obj, iterate, context)\r\n }\r\n return obj\r\n}\r\n\r\nexport default lastEach\r\n","import helperCreateInTypeof from './helperCreateInTypeof'\r\n\r\n/**\r\n * 判断是否Object对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isObject = helperCreateInTypeof('object')\r\n\r\nexport default isObject\r\n","import helperDeleteProperty from './helperDeleteProperty'\r\n\r\nimport isPlainObject from './isPlainObject'\r\nimport isObject from './isObject'\r\nimport isArray from './isArray'\r\nimport isNull from './isNull'\r\nimport assign from './assign'\r\nimport objectEach from './objectEach'\r\n\r\n/**\r\n * 清空对象\r\n *\r\n * @param {Object} obj 对象\r\n * @param {*} defs 默认值,如果不传(清空所有属性)、如果传对象(清空并继承)、如果传值(给所有赋值)\r\n * @param {Object/Array} assigns 默认值\r\n * @return {Object}\r\n */\r\nfunction clear (obj, defs, assigns) {\r\n if (obj) {\r\n var len\r\n var isDefs = arguments.length > 1 && (isNull(defs) || !isObject(defs))\r\n var extds = isDefs ? assigns : defs\r\n if (isPlainObject(obj)) {\r\n objectEach(obj, isDefs ? function (val, key) {\r\n obj[key] = defs\r\n } : function (val, key) {\r\n helperDeleteProperty(obj, key)\r\n })\r\n if (extds) {\r\n assign(obj, extds)\r\n }\r\n } else if (isArray(obj)) {\r\n if (isDefs) {\r\n len = obj.length\r\n while (len > 0) {\r\n len--\r\n obj[len] = defs\r\n }\r\n } else {\r\n obj.length = 0\r\n }\r\n if (extds) {\r\n obj.push.apply(obj, extds)\r\n }\r\n }\r\n }\r\n return obj\r\n}\r\n\r\nexport default clear\r\n","import helperDeleteProperty from './helperDeleteProperty'\r\n\r\nimport isFunction from './isFunction'\r\nimport isArray from './isArray'\r\nimport each from './each'\r\nimport arrayEach from './arrayEach'\r\nimport lastEach from './lastEach'\r\nimport clear from './clear'\r\nimport eqNull from './eqNull'\r\n\r\nfunction pluckProperty (name) {\r\n return function (obj, key) {\r\n return key === name\r\n }\r\n}\r\n\r\n/**\r\n * 移除对象属性\r\n *\r\n * @param {Object/Array} obj 对象/数组\r\n * @param {Function/String} iterate 方法或属性\r\n * @param {Object} context 上下文\r\n * @return {Object/Array}\r\n */\r\nfunction remove (obj, iterate, context) {\r\n if (obj) {\r\n if (!eqNull(iterate)) {\r\n var removeKeys = []\r\n var rest = []\r\n if (!isFunction(iterate)) {\r\n iterate = pluckProperty(iterate)\r\n }\r\n each(obj, function (item, index, rest) {\r\n if (iterate.call(context, item, index, rest)) {\r\n removeKeys.push(index)\r\n }\r\n })\r\n if (isArray(obj)) {\r\n lastEach(removeKeys, function (item, key) {\r\n rest.push(obj[item])\r\n obj.splice(item, 1)\r\n })\r\n } else {\r\n rest = {}\r\n arrayEach(removeKeys, function (key) {\r\n rest[key] = obj[key]\r\n helperDeleteProperty(obj, key)\r\n })\r\n }\r\n return rest\r\n }\r\n return clear(obj)\r\n }\r\n return obj\r\n}\r\n\r\nexport default remove\r\n","import setupDefaults from './setupDefaults'\r\n\r\nimport arrayEach from './arrayEach'\r\n\r\nimport assign from './assign'\r\n\r\nfunction unTreeList (result, parentItem, array, opts) {\r\n var optKey = opts.key\r\n var optParentKey = opts.parentKey\r\n var optChildren = opts.children\r\n var optData = opts.data\r\n var optUpdated = opts.updated\r\n var optClear = opts.clear\r\n arrayEach(array, function (item) {\r\n var childList = item[optChildren]\r\n if (optData) {\r\n item = item[optData]\r\n }\r\n if (optUpdated !== false) {\r\n item[optParentKey] = parentItem ? parentItem[optKey] : null\r\n }\r\n result.push(item)\r\n if (childList && childList.length) {\r\n unTreeList(result, item, childList, opts)\r\n }\r\n if (optClear) {\r\n delete item[optChildren]\r\n }\r\n })\r\n return result\r\n}\r\n\r\n/**\r\n * 将一个树结构转成数组列表\r\n *\r\n * @param {Array} array 数组\r\n * @param {Object} options { children: 'children', data: 'data', clear: false }\r\n * @return {Array}\r\n */\r\nfunction toTreeArray (array, options) {\r\n return unTreeList([], null, array, assign({}, setupDefaults.treeOptions, options))\r\n}\r\n\r\nexport default toTreeArray\r\n","function helperCreateTreeFunc (handle) {\r\n return function (obj, iterate, options, context) {\r\n var opts = options || {}\r\n var optChildren = opts.children || 'children'\r\n return handle(null, obj, iterate, context, [], [], optChildren, opts)\r\n }\r\n}\r\n\r\nexport default helperCreateTreeFunc\r\n","import helperCreateTreeFunc from './helperCreateTreeFunc'\r\n\r\nfunction findTreeItem (parent, obj, iterate, context, path, node, parseChildren, opts) {\r\n if (obj) {\r\n var item, index, len, paths, nodes, match\r\n for (index = 0, len = obj.length; index < len; index++) {\r\n item = obj[index]\r\n paths = path.concat(['' + index])\r\n nodes = node.concat([item])\r\n if (iterate.call(context, item, index, obj, paths, parent, nodes)) {\r\n return { index: index, item: item, path: paths, items: obj, parent: parent, nodes: nodes }\r\n }\r\n if (parseChildren && item) {\r\n match = findTreeItem(item, item[parseChildren], iterate, context, paths.concat([parseChildren]), nodes, parseChildren, opts)\r\n if (match) {\r\n return match\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 从树结构中查找匹配第一条数据的键、值、路径\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, items, path, parent, nodes) 回调\r\n * @param {Object} options {children: 'children'}\r\n * @param {Object} context 上下文\r\n * @return {Object} { item, index, items, path, parent, nodes }\r\n */\r\nvar findTree = helperCreateTreeFunc(findTreeItem)\r\n\r\nexport default findTree\r\n","import helperCreateTreeFunc from './helperCreateTreeFunc'\r\nimport each from './each'\r\n\r\nfunction eachTreeItem (parent, obj, iterate, context, path, node, parseChildren, opts) {\r\n var paths, nodes\r\n each(obj, function (item, index) {\r\n paths = path.concat(['' + index])\r\n nodes = node.concat([item])\r\n iterate.call(context, item, index, obj, paths, parent, nodes)\r\n if (item && parseChildren) {\r\n paths.push(parseChildren)\r\n eachTreeItem(item, item[parseChildren], iterate, context, paths, nodes, parseChildren, opts)\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 从树结构中遍历数据的键、值、路径\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, items, path, parent, nodes) 回调\r\n * @param {Object} options {children: 'children', mapChildren: 'children}\r\n * @param {Object} context 上下文\r\n */\r\nvar eachTree = helperCreateTreeFunc(eachTreeItem)\r\n\r\nexport default eachTree\r\n","import helperCreateTreeFunc from './helperCreateTreeFunc'\r\n\r\nimport map from './map'\r\n\r\nfunction mapTreeItem (parent, obj, iterate, context, path, node, parseChildren, opts) {\r\n var paths, nodes, rest\r\n var mapChildren = opts.mapChildren || parseChildren\r\n return map(obj, function (item, index) {\r\n paths = path.concat(['' + index])\r\n nodes = node.concat([item])\r\n rest = iterate.call(context, item, index, obj, paths, parent, nodes)\r\n if (rest && item && parseChildren && item[parseChildren]) {\r\n rest[mapChildren] = mapTreeItem(item, item[parseChildren], iterate, context, paths, nodes, parseChildren, opts)\r\n }\r\n return rest\r\n })\r\n}\r\n\r\n/**\r\n * 从树结构中指定方法后的返回值组成的新数组\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, items, path, parent, nodes) 回调\r\n * @param {Object} options {children: 'children'}\r\n * @param {Object} context 上下文\r\n * @return {Object/Array}\r\n */\r\nvar mapTree = helperCreateTreeFunc(mapTreeItem)\r\n\r\nexport default mapTree\r\n","import helperCreateTreeFunc from './helperCreateTreeFunc'\r\n\r\nimport arrayEach from './arrayEach'\r\n\r\nimport assign from './assign'\r\n\r\nfunction searchTreeItem (matchParent, parent, obj, iterate, context, path, node, parseChildren, opts) {\r\n var paths, nodes, rest, isMatch, hasChild\r\n var rests = []\r\n var hasOriginal = opts.original\r\n var sourceData = opts.data\r\n var mapChildren = opts.mapChildren || parseChildren\r\n var isEvery = opts.isEvery\r\n arrayEach(obj, function (item, index) {\r\n paths = path.concat(['' + index])\r\n nodes = node.concat([item])\r\n isMatch = (matchParent && !isEvery) || iterate.call(context, item, index, obj, paths, parent, nodes)\r\n hasChild = parseChildren && item[parseChildren]\r\n if (isMatch || hasChild) {\r\n if (hasOriginal) {\r\n rest = item\r\n } else {\r\n rest = assign({}, item)\r\n if (sourceData) {\r\n rest[sourceData] = item\r\n }\r\n }\r\n rest[mapChildren] = searchTreeItem(isMatch, item, item[parseChildren], iterate, context, paths, nodes, parseChildren, opts)\r\n if (isMatch || rest[mapChildren].length) {\r\n rests.push(rest)\r\n }\r\n } else if (isMatch) {\r\n rests.push(rest)\r\n }\r\n })\r\n return rests\r\n}\r\n\r\n/**\r\n * 从树结构中根据回调查找数据\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, items, path, parent, nodes) 回调\r\n * @param {Object} options {children: 'children'}\r\n * @param {Object} context 上下文\r\n * @return {Array}\r\n */\r\nvar searchTree = helperCreateTreeFunc(function (parent, obj, iterate, context, path, nodes, parseChildren, opts) {\r\n return searchTreeItem(0, parent, obj, iterate, context, path, nodes, parseChildren, opts)\r\n})\r\n\r\nexport default searchTree\r\n","function arrayIndexOf (list, val) {\r\n if (list.indexOf) {\r\n return list.indexOf(val)\r\n }\r\n for (var index = 0, len = list.length; index < len; index++) {\r\n if (val === list[index]) {\r\n return index\r\n }\r\n }\r\n}\r\n\r\nexport default arrayIndexOf\r\n","function arrayLastIndexOf (list, val) {\r\n if (list.lastIndexOf) {\r\n return list.lastIndexOf(val)\r\n }\r\n for (var len = list.length - 1; len >= 0; len--) {\r\n if (val === list[len]) {\r\n return len\r\n }\r\n }\r\n return -1\r\n}\r\n\r\nexport default arrayLastIndexOf\r\n","import helperCreateInTypeof from './helperCreateInTypeof'\r\n\r\n/**\r\n * 判断是否Number对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isNumber = helperCreateInTypeof('number')\r\n\r\nexport default isNumber\r\n","import helperCreateInTypeof from './helperCreateInTypeof'\r\n\r\n/**\r\n * 判断是否String对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isString = helperCreateInTypeof('string')\r\n\r\nexport default isString\r\n","import helperCreateInInObjectString from './helperCreateInInObjectString'\r\n\r\n/**\r\n * 判断是否Date对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isDate = helperCreateInInObjectString('Date')\r\n\r\nexport default isDate\r\n","var staticParseInt = parseInt\r\n\r\nexport default staticParseInt\r\n","function helperGetUTCDateTime (resMaps) {\r\n return Date.UTC(resMaps.y, resMaps.M || 0, resMaps.d || 1, resMaps.H || 0, resMaps.m || 0, resMaps.s || 0, resMaps.S || 0)\r\n}\r\n\r\nexport default helperGetUTCDateTime\r\n","function helperGetDateTime (date) {\r\n return date.getTime()\r\n}\r\n\r\nexport default helperGetDateTime\r\n","import staticParseInt from './staticParseInt'\r\n\r\nimport helperGetUTCDateTime from './helperGetUTCDateTime'\r\nimport helperGetDateTime from './helperGetDateTime'\r\n\r\nimport isString from './isString'\r\nimport isDate from './isDate'\r\n\r\nfunction getParseRule (txt) {\r\n return '(\\\\d{' + txt + '})'\r\n}\r\n\r\nfunction toParseMs (num) {\r\n if (num < 10) {\r\n return num * 100\r\n } else if (num < 100) {\r\n return num * 10\r\n }\r\n return num\r\n}\r\n\r\nfunction toParseNum (num) {\r\n return isNaN(num) ? num : staticParseInt(num)\r\n}\r\n\r\nvar d2 = getParseRule(2)\r\nvar d1or2 = getParseRule('1,2')\r\nvar d1or7 = getParseRule('1,7')\r\nvar d3or4 = getParseRule('3,4')\r\nvar place = '.{1}'\r\nvar d1Or2RE = place + d1or2\r\nvar dzZ = '(([zZ])|([-+]\\\\d{2}:?\\\\d{2}))'\r\n\r\nvar defaulParseStrs = [d3or4, d1Or2RE, d1Or2RE, d1Or2RE, d1Or2RE, d1Or2RE, place + d1or7, dzZ]\r\nvar defaulParseREs = []\r\n\r\nfor (var len = defaulParseStrs.length - 1; len >= 0; len--) {\r\n var rule = ''\r\n for (var i = 0; i < len + 1; i++) {\r\n rule += defaulParseStrs[i]\r\n }\r\n defaulParseREs.push(new RegExp('^' + rule + '$'))\r\n}\r\n\r\n/**\r\n * 解析默认格式\r\n */\r\nfunction parseDefaultRules (str) {\r\n var matchRest, resMaps = {}\r\n for (var i = 0, dfrLen = defaulParseREs.length; i < dfrLen; i++) {\r\n matchRest = str.match(defaulParseREs[i])\r\n if (matchRest) {\r\n resMaps.y = matchRest[1]\r\n resMaps.M = matchRest[2]\r\n resMaps.d = matchRest[3]\r\n resMaps.H = matchRest[4]\r\n resMaps.m = matchRest[5]\r\n resMaps.s = matchRest[6]\r\n resMaps.S = matchRest[7]\r\n resMaps.Z = matchRest[8]\r\n break\r\n }\r\n }\r\n return resMaps\r\n}\r\n\r\nvar customParseStrs = [\r\n ['yyyy', d3or4],\r\n ['yy', d2],\r\n ['MM', d2],\r\n ['M', d1or2],\r\n ['dd', d2],\r\n ['d', d1or2],\r\n ['HH', d2],\r\n ['H', d1or2],\r\n ['mm', d2],\r\n ['m', d1or2],\r\n ['ss', d2],\r\n ['s', d1or2],\r\n ['SSS', getParseRule(3)],\r\n ['S', d1or7],\r\n ['Z', dzZ]\r\n]\r\nvar parseRuleMaps = {}\r\nvar parseRuleKeys = ['\\\\[([^\\\\]]+)\\\\]']\r\n\r\nfor (var i = 0; i < customParseStrs.length; i++) {\r\n var itemRule = customParseStrs[i]\r\n parseRuleMaps[itemRule[0]] = itemRule[1] + '?'\r\n parseRuleKeys.push(itemRule[0])\r\n}\r\n\r\nvar customParseRes = new RegExp(parseRuleKeys.join('|'), 'g')\r\nvar cacheFormatMaps = {}\r\n\r\n/**\r\n * 解析自定义格式\r\n */\r\nfunction parseCustomRules (str, format) {\r\n var cacheItem = cacheFormatMaps[format]\r\n if (!cacheItem) {\r\n var posIndexs = []\r\n var re = format.replace(/([$(){}*+.?\\\\^|])/g, \"\\\\$1\").replace(customParseRes, function (text, val) {\r\n var firstChar = text.charAt(0)\r\n // 如果为转义符号:[关键字]\r\n if (firstChar === '[') {\r\n return val\r\n }\r\n posIndexs.push(firstChar)\r\n return parseRuleMaps[text]\r\n })\r\n cacheItem = cacheFormatMaps[format] = {\r\n _i: posIndexs,\r\n _r: new RegExp(re)\r\n }\r\n }\r\n var resMaps = {}\r\n var matchRest = str.match(cacheItem._r)\r\n if (matchRest) {\r\n var _i = cacheItem._i\r\n for (var i = 1, len = matchRest.length; i < len; i++) {\r\n resMaps[_i[i - 1]] = matchRest[i]\r\n }\r\n return resMaps\r\n }\r\n return resMaps\r\n}\r\n\r\n/**\r\n * 解析时区\r\n */\r\nfunction parseTimeZone (resMaps) {\r\n // 如果为UTC 时间\r\n if (/^[zZ]/.test(resMaps.Z)) {\r\n return new Date(helperGetUTCDateTime(resMaps))\r\n } else {\r\n // 如果指定时区,时区转换\r\n var matchRest = resMaps.Z.match(/([-+])(\\d{2}):?(\\d{2})/)\r\n if (matchRest) {\r\n return new Date(helperGetUTCDateTime(resMaps) - (matchRest[1] === '-' ? -1 : 1) * staticParseInt(matchRest[2]) * 3600000 + staticParseInt(matchRest[3]) * 60000)\r\n }\r\n }\r\n return new Date('')\r\n}\r\n\r\n/**\r\n * 字符串转为日期\r\n *\r\n * @param {String/Number/Date} str 日期或数字\r\n * @param {String} format 解析日期格式(yyyy年份、MM月份、dd天、hh(12)HH(24)小时、mm分钟、ss秒、SSS毫秒、Z时区)\r\n * @return {Date}\r\n */\r\nfunction toStringDate (str, format) {\r\n if (str) {\r\n var isDType = isDate(str)\r\n if (isDType || (!format && /^[0-9]{11,15}$/.test(str))) {\r\n return new Date(isDType ? helperGetDateTime(str) : staticParseInt(str))\r\n }\r\n if (isString(str)) {\r\n var resMaps = format ? parseCustomRules(str, format) : parseDefaultRules(str)\r\n if (resMaps.y) {\r\n if (resMaps.M) {\r\n resMaps.M = toParseNum(resMaps.M) - 1\r\n }\r\n if (resMaps.S) {\r\n // 如果7位则是微秒,只精确到3位毫秒\r\n resMaps.S = toParseMs(toParseNum(resMaps.S.substring(0, 3)))\r\n }\r\n if (resMaps.Z) {\r\n return parseTimeZone(resMaps)\r\n } else {\r\n return new Date(resMaps.y, resMaps.M || 0, resMaps.d || 1, resMaps.H || 0, resMaps.m || 0, resMaps.s || 0, resMaps.S || 0)\r\n }\r\n }\r\n }\r\n }\r\n return new Date('')\r\n}\r\n\r\nexport default toStringDate\r\n","function helperNewDate () {\r\n return new Date()\r\n}\r\n\r\nexport default helperNewDate\r\n","import isDate from './isDate'\r\nimport toStringDate from './toStringDate'\r\n\r\nimport helperNewDate from './helperNewDate'\r\n\r\n/**\r\n * 判断是否闰年\r\n *\r\n * @param {Date} date 日期或数字\r\n * @return {Boolean}\r\n */\r\nfunction isLeapYear (date) {\r\n var year\r\n var currentDate = date ? toStringDate(date) : helperNewDate()\r\n if (isDate(currentDate)) {\r\n year = currentDate.getFullYear()\r\n return (year % 4 === 0) && (year % 100 !== 0 || year % 400 === 0)\r\n }\r\n return false\r\n}\r\n\r\nexport default isLeapYear\r\n","import isArray from './isArray'\r\nimport isString from './isString'\r\nimport hasOwnProp from './hasOwnProp'\r\n\r\nfunction helperCreateIndexOf (name, callback) {\r\n return function (obj, val) {\r\n if (obj) {\r\n if (obj[name]) {\r\n return obj[name](val)\r\n }\r\n if (isString(obj) || isArray(obj)) {\r\n return callback(obj, val)\r\n }\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n if (val === obj[key]) {\r\n return key\r\n }\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n}\r\n\r\nexport default helperCreateIndexOf\r\n","import helperCreateIndexOf from './helperCreateIndexOf'\r\n\r\nimport arrayIndexOf from './arrayIndexOf'\r\n\r\n/**\r\n * 返回对象第一个索引值\r\n *\r\n * @param {Object} obj 对象\r\n * @param {Object} val 值\r\n * @return {Number}\r\n */\r\nvar indexOf = helperCreateIndexOf('indexOf', arrayIndexOf)\r\n\r\nexport default indexOf\r\n","import helperCreateIndexOf from './helperCreateIndexOf'\r\n\r\nimport arrayLastIndexOf from './arrayLastIndexOf'\r\n\r\n/**\r\n * 从最后开始的索引值,返回对象第一个索引值\r\n *\r\n * @param {Object} array 对象\r\n * @param {Object} val 值\r\n * @return {Number}\r\n */\r\nvar lastIndexOf = helperCreateIndexOf('lastIndexOf', arrayLastIndexOf)\r\n\r\nexport default lastIndexOf\r\n","import isArray from './isArray'\r\nimport isString from './isString'\r\nimport each from './each'\r\n\r\n/**\r\n * 返回对象的长度\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Number}\r\n */\r\nfunction getSize (obj) {\r\n var len = 0\r\n if (isString(obj) || isArray(obj)) {\r\n return obj.length\r\n }\r\n each(obj, function () {\r\n len++\r\n })\r\n return len\r\n}\r\n\r\nexport default getSize\r\n","import isArray from './isArray'\r\nimport isNull from './isNull'\r\n\r\n/**\r\n * 判断是否整数\r\n *\r\n * @param {Number, String} number 数值\r\n * @return {Boolean}\r\n */\r\nvar isInteger = function (obj) {\r\n return !isNull(obj) && !isNaN(obj) && !isArray(obj) && obj % 1 === 0\r\n}\r\n\r\nexport default isInteger\r\n","import helperCreateInTypeof from './helperCreateInTypeof'\r\n\r\n/**\r\n * 判断是否Boolean对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isBoolean = helperCreateInTypeof('boolean')\r\n\r\nexport default isBoolean\r\n","import helperCreateInInObjectString from './helperCreateInInObjectString'\r\n\r\n/**\r\n * 判断是否RegExp对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isRegExp = helperCreateInInObjectString('RegExp')\r\n\r\nexport default isRegExp\r\n","import helperCreateInInObjectString from './helperCreateInInObjectString'\r\n\r\n/**\r\n * 判断是否Error对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isError = helperCreateInInObjectString('Error')\r\n\r\nexport default isError\r\n","/**\r\n * 判断是否为空对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isEmpty (obj) {\r\n for (var key in obj) {\r\n return false\r\n }\r\n return true\r\n}\r\n\r\nexport default isEmpty\r\n","/* eslint-disable valid-typeof */\r\nimport staticStrUndefined from './staticStrUndefined'\r\n\r\n/**\r\n * 判断是否Symbol对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportSymbol = typeof Symbol !== staticStrUndefined\r\nfunction isSymbol (obj) {\r\n return supportSymbol && Symbol.isSymbol ? Symbol.isSymbol(obj) : (typeof obj === 'symbol')\r\n}\r\n\r\nexport default isSymbol\r\n","import helperCreateInInObjectString from './helperCreateInInObjectString'\r\n\r\n/**\r\n * 判断是否Arguments对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar isArguments = helperCreateInInObjectString('Arguments')\r\n\r\nexport default isArguments\r\n","import staticStrUndefined from './staticStrUndefined'\r\n\r\n/* eslint-disable valid-typeof */\r\nvar staticDocument = typeof document === staticStrUndefined ? 0 : document\r\n\r\nexport default staticDocument\r\n","import staticStrUndefined from './staticStrUndefined'\r\n\r\n/* eslint-disable valid-typeof */\r\nvar staticWindow = typeof window === staticStrUndefined ? 0 : window\r\n\r\nexport default staticWindow\r\n","/* eslint-disable valid-typeof */\r\nimport staticStrUndefined from './staticStrUndefined'\r\n\r\n/**\r\n * 判断是否FormData对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportFormData = typeof FormData !== staticStrUndefined\r\nfunction isFormData (obj) {\r\n return supportFormData && obj instanceof FormData\r\n}\r\n\r\nexport default isFormData\r\n","/* eslint-disable valid-typeof */\r\nimport staticStrUndefined from './staticStrUndefined'\r\n\r\n/**\r\n * 判断是否Map对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportMap = typeof Map !== staticStrUndefined\r\nfunction isMap (obj) {\r\n return supportMap && obj instanceof Map\r\n}\r\n\r\nexport default isMap\r\n","/* eslint-disable valid-typeof */\r\nimport staticStrUndefined from './staticStrUndefined'\r\n\r\n/**\r\n * 判断是否WeakMap对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportWeakMap = typeof WeakMap !== staticStrUndefined\r\nfunction isWeakMap (obj) {\r\n return supportWeakMap && obj instanceof WeakMap\r\n}\r\n\r\nexport default isWeakMap\r\n","/* eslint-disable valid-typeof */\r\nimport staticStrUndefined from './staticStrUndefined'\r\n\r\n/**\r\n * 判断是否Set对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportSet = typeof Set !== staticStrUndefined\r\nfunction isSet (obj) {\r\n return supportSet && obj instanceof Set\r\n}\r\n\r\nexport default isSet\r\n","/* eslint-disable valid-typeof */\r\nimport staticStrUndefined from './staticStrUndefined'\r\n\r\n/**\r\n * 判断是否WeakSet对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nvar supportWeakSet = typeof WeakSet !== staticStrUndefined\r\nfunction isWeakSet (obj) {\r\n return supportWeakSet && obj instanceof WeakSet\r\n}\r\n\r\nexport default isWeakSet\r\n","import isFunction from './isFunction'\r\nimport isString from './isString'\r\nimport isArray from './isArray'\r\nimport hasOwnProp from './hasOwnProp'\r\n\r\nfunction helperCreateiterateIndexOf (callback) {\r\n return function (obj, iterate, context) {\r\n if (obj && isFunction(iterate)) {\r\n if (isArray(obj) || isString(obj)) {\r\n return callback(obj, iterate, context)\r\n }\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n if (iterate.call(context, obj[key], key, obj)) {\r\n return key\r\n }\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n}\r\n\r\nexport default helperCreateiterateIndexOf\r\n","import helperCreateiterateIndexOf from './helperCreateiterateIndexOf'\r\n\r\n/**\r\n * 返回对象第一个索引值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nvar findIndexOf = helperCreateiterateIndexOf(function (obj, iterate, context) {\r\n for (var index = 0, len = obj.length; index < len; index++) {\r\n if (iterate.call(context, obj[index], index, obj)) {\r\n return index\r\n }\r\n }\r\n return -1\r\n})\r\n\r\nexport default findIndexOf\r\n","import isNumber from './isNumber'\r\nimport isArray from './isArray'\r\nimport isString from './isString'\r\nimport isRegExp from './isRegExp'\r\nimport isDate from './isDate'\r\nimport isBoolean from './isBoolean'\r\nimport isUndefined from './isUndefined'\r\nimport keys from './keys'\r\n\r\nimport every from './every'\r\n\r\nfunction helperEqualCompare (val1, val2, compare, func, key, obj1, obj2) {\r\n if (val1 === val2) {\r\n return true\r\n }\r\n if (val1 && val2 && !isNumber(val1) && !isNumber(val2) && !isString(val1) && !isString(val2)) {\r\n if (isRegExp(val1)) {\r\n return compare('' + val1, '' + val2, key, obj1, obj2)\r\n } if (isDate(val1) || isBoolean(val1)) {\r\n return compare(+val1, +val2, key, obj1, obj2)\r\n } else {\r\n var result, val1Keys, val2Keys\r\n var isObj1Arr = isArray(val1)\r\n var isObj2Arr = isArray(val2)\r\n if (isObj1Arr || isObj2Arr ? isObj1Arr && isObj2Arr : val1.constructor === val2.constructor) {\r\n val1Keys = keys(val1)\r\n val2Keys = keys(val2)\r\n if (func) {\r\n result = func(val1, val2, key)\r\n }\r\n if (val1Keys.length === val2Keys.length) {\r\n return isUndefined(result) ? every(val1Keys, function (key, index) {\r\n return key === val2Keys[index] && helperEqualCompare(val1[key], val2[val2Keys[index]], compare, func, isObj1Arr || isObj2Arr ? index : key, val1, val2)\r\n }) : !!result\r\n }\r\n return false\r\n }\r\n }\r\n }\r\n return compare(val1, val2, key, obj1, obj2)\r\n}\r\n\r\nexport default helperEqualCompare\r\n","function helperDefaultCompare (v1, v2) {\r\n return v1 === v2\r\n}\r\n\r\nexport default helperDefaultCompare\r\n","import helperEqualCompare from './helperEqualCompare'\r\nimport helperDefaultCompare from './helperDefaultCompare'\r\n\r\n/**\r\n * 深度比较两个对象之间的值是否相等\r\n *\r\n * @param {Object} obj1 值1\r\n * @param {Object} obj2 值2\r\n * @return {Boolean}\r\n */\r\nfunction isEqual (obj1, obj2) {\r\n return helperEqualCompare(obj1, obj2, helperDefaultCompare)\r\n}\r\n\r\nexport default isEqual\r\n","import helperCreateiterateIndexOf from './helperCreateiterateIndexOf'\r\n\r\n/**\r\n * 从最后开始的索引值,返回对象第一个索引值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nvar findLastIndexOf = helperCreateiterateIndexOf(function (obj, iterate, context) {\r\n for (var len = obj.length - 1; len >= 0; len--) {\r\n if (iterate.call(context, obj[len], len, obj)) {\r\n return len\r\n }\r\n }\r\n return -1\r\n})\r\n\r\nexport default findLastIndexOf\r\n","import helperCreateGetObjects from './helperCreateGetObjects'\r\n\r\n/**\r\n * 获取对象所有属性、值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @return {Array}\r\n */\r\nvar entries = helperCreateGetObjects('entries', 2)\r\n\r\nexport default entries\r\n","import isFunction from './isFunction'\r\nimport isArray from './isArray'\r\nimport each from './each'\r\nimport findIndexOf from './findIndexOf'\r\n\r\nfunction helperCreatePickOmit (case1, case2) {\r\n return function (obj, callback) {\r\n var item, index\r\n var rest = {}\r\n var result = []\r\n var context = this\r\n var args = arguments\r\n var len = args.length\r\n if (!isFunction(callback)) {\r\n for (index = 1; index < len; index++) {\r\n item = args[index]\r\n result.push.apply(result, isArray(item) ? item : [item])\r\n }\r\n callback = 0\r\n }\r\n each(obj, function (val, key) {\r\n if ((callback ? callback.call(context, val, key, obj) : findIndexOf(result, function (name) {\r\n return name === key\r\n }) > -1) ? case1 : case2) {\r\n rest[key] = val\r\n }\r\n })\r\n return rest\r\n }\r\n}\r\n\r\nexport default helperCreatePickOmit\r\n","import helperCreatePickOmit from './helperCreatePickOmit'\r\n\r\n/**\r\n * 根据 key 过滤指定的属性值,返回一个新的对象\r\n *\r\n * @param {Object} obj 对象\r\n * @param {String/Array} key 键数组\r\n * @return {Object}\r\n */\r\nvar pick = helperCreatePickOmit(1, 0)\r\n\r\nexport default pick\r\n","import helperCreatePickOmit from './helperCreatePickOmit'\r\n\r\n/**\r\n * 根据 key 排除指定的属性值,返回一个新的对象\r\n *\r\n * @param {Object} obj 对象\r\n * @param {String/Array} key 键数组\r\n * @return {Object}\r\n */\r\nvar omit = helperCreatePickOmit(0, 1)\r\n\r\nexport default omit\r\n","import staticParseInt from './staticParseInt'\r\n\r\nimport helperGetHGSKeys from './helperGetHGSKeys'\r\nimport helperCheckCopyKey from './helperCheckCopyKey'\r\n\r\nimport hasOwnProp from './hasOwnProp'\r\n\r\nvar sKeyRE = /(.+)?\\[(\\d+)\\]$/\r\n\r\nfunction setDeepProps (obj, key, isEnd, nextKey, value) {\r\n if (obj[key]) {\r\n if (isEnd) {\r\n obj[key] = value\r\n }\r\n } else {\r\n var index\r\n var rest\r\n var currMatchs = key ? key.match(sKeyRE) : null\r\n if (isEnd) {\r\n rest = value\r\n } else {\r\n var nextMatchs = nextKey ? nextKey.match(sKeyRE) : null\r\n if (nextMatchs && !nextMatchs[1]) {\r\n // 如果下一个属性为数组类型\r\n rest = new Array(staticParseInt(nextMatchs[2]) + 1)\r\n } else {\r\n rest = {}\r\n }\r\n }\r\n if (currMatchs) {\r\n if (currMatchs[1]) {\r\n // 如果为对象中数组\r\n index = staticParseInt(currMatchs[2])\r\n if (obj[currMatchs[1]]) {\r\n if (isEnd) {\r\n obj[currMatchs[1]][index] = rest\r\n } else {\r\n if (obj[currMatchs[1]][index]) {\r\n rest = obj[currMatchs[1]][index]\r\n } else {\r\n obj[currMatchs[1]][index] = rest\r\n }\r\n }\r\n } else {\r\n obj[currMatchs[1]] = new Array(index + 1)\r\n obj[currMatchs[1]][index] = rest\r\n }\r\n } else {\r\n // 如果为数组\r\n obj[currMatchs[2]] = rest\r\n }\r\n } else {\r\n // 如果为对象\r\n obj[key] = rest\r\n }\r\n return rest\r\n }\r\n return obj[key]\r\n}\r\n\r\n/**\r\n * 设置对象属性上的值。如果属性不存在则创建它\r\n * @param {Object/Array} obj 对象\r\n * @param {String/Function} property 键、路径\r\n * @param {Object} value 值\r\n */\r\nfunction set (obj, property, value) {\r\n if (obj && helperCheckCopyKey(property)) {\r\n if ((obj[property] || hasOwnProp(obj, property)) && !isPrototypePolluted(property)) {\r\n obj[property] = value\r\n } else {\r\n var rest = obj\r\n var props = helperGetHGSKeys(property)\r\n var len = props.length\r\n for (var index = 0; index < len; index++) {\r\n if (isPrototypePolluted(props[index])) {\r\n continue\r\n }\r\n var isEnd = index === len - 1\r\n rest = setDeepProps(rest, props[index], isEnd, isEnd ? null : props[index + 1], value)\r\n }\r\n }\r\n }\r\n return obj\r\n}\r\n\r\n/**\r\n * Blacklist certain keys to prevent Prototype Pollution\r\n * @param {string} key\r\n */\r\nfunction isPrototypePolluted(key) {\r\n return key === '__proto__' || key === 'constructor' || key === 'prototype'\r\n}\r\n\r\nexport default set\r\n","import isEmpty from './isEmpty'\r\nimport isObject from './isObject'\r\nimport isFunction from './isFunction'\r\nimport property from './property'\r\nimport each from './each'\r\n\r\nfunction createiterateEmpty (iterate) {\r\n return function () {\r\n return isEmpty(iterate)\r\n }\r\n}\r\n\r\n/**\r\n * 集合分组,默认使用键值分组,如果有iterate则使用结果进行分组\r\n *\r\n * @param {Array} obj 对象\r\n * @param {Function} iterate 回调/对象属性\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction groupBy (obj, iterate, context) {\r\n var groupKey\r\n var result = {}\r\n if (obj) {\r\n if (iterate && isObject(iterate)) {\r\n iterate = createiterateEmpty(iterate)\r\n } else if (!isFunction(iterate)) {\r\n iterate = property(iterate)\r\n }\r\n each(obj, function (val, key) {\r\n groupKey = iterate ? iterate.call(context, val, key, obj) : val\r\n if (result[groupKey]) {\r\n result[groupKey].push(val)\r\n } else {\r\n result[groupKey] = [val]\r\n }\r\n })\r\n }\r\n return result\r\n}\r\n\r\nexport default groupBy\r\n","/**\r\n * 序号列表生成函数\r\n *\r\n * @param {Number} start 起始值\r\n * @param {Number} stop 结束值\r\n * @param {Number} step 自增值\r\n * @return {Array}\r\n */\r\nfunction range (start, stop, step) {\r\n var index, len\r\n var result = []\r\n var args = arguments\r\n if (args.length < 2) {\r\n stop = args[0]\r\n start = 0\r\n }\r\n index = start >> 0\r\n len = stop >> 0\r\n if (index < stop) {\r\n step = step >> 0 || 1\r\n for (; index < len; index += step) {\r\n result.push(index)\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport default range\r\n","import helperCreateMinMax from './helperCreateMinMax'\r\n\r\n/**\r\n * 获取最小值\r\n *\r\n * @param {Array} arr 数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @return {Number}\r\n */\r\nvar min = helperCreateMinMax(function (rest, itemVal) {\r\n return rest > itemVal\r\n})\r\n\r\nexport default min\r\n","function helperNumberDecimal (numStr) {\r\n return (numStr.split('.')[1] || '').length\r\n}\r\n\r\nexport default helperNumberDecimal\r\n","import staticParseInt from './staticParseInt'\r\n\r\nfunction helperStringRepeat (str, count) {\r\n if (str.repeat) {\r\n return str.repeat(count)\r\n }\r\n var list = isNaN(count) ? [] : new Array(staticParseInt(count))\r\n return list.join(str) + (list.length > 0 ? str : '')\r\n}\r\n\r\nexport default helperStringRepeat\r\n","function helperNumberOffsetPoint (str, offsetIndex) {\r\n return str.substring(0, offsetIndex) + '.' + str.substring(offsetIndex, str.length)\r\n}\r\n\r\nexport default helperNumberOffsetPoint\r\n","import helperStringRepeat from './helperStringRepeat'\r\nimport helperNumberOffsetPoint from './helperNumberOffsetPoint'\r\n\r\n/**\r\n * 数值转字符串,科学计数转字符串\r\n * @param { Number } num 数值\r\n *\r\n * @return {Number}\r\n */\r\nfunction toNumberString(num) {\r\n var rest = '' + num\r\n var scienceMatchs = rest.match(/^([-+]?)((\\d+)|((\\d+)?[.](\\d+)?))e([-+]{1})([0-9]+)$/)\r\n if (scienceMatchs) {\r\n var isNegative = num < 0\r\n var absFlag = isNegative ? '-' : ''\r\n var intNumStr = scienceMatchs[3] || ''\r\n var dIntNumStr = scienceMatchs[5] || ''\r\n var dFloatNumStr = scienceMatchs[6] || ''\r\n var sciencFlag = scienceMatchs[7]\r\n var scienceNumStr = scienceMatchs[8]\r\n var floatOffsetIndex = scienceNumStr - dFloatNumStr.length\r\n var intOffsetIndex = scienceNumStr - intNumStr.length\r\n var dIntOffsetIndex = scienceNumStr - dIntNumStr.length\r\n if (sciencFlag === '+') {\r\n if (intNumStr) {\r\n return absFlag + intNumStr + helperStringRepeat('0', scienceNumStr)\r\n }\r\n if (floatOffsetIndex > 0) {\r\n return absFlag + dIntNumStr + dFloatNumStr + helperStringRepeat('0', floatOffsetIndex)\r\n }\r\n return absFlag + dIntNumStr + helperNumberOffsetPoint(dFloatNumStr, scienceNumStr)\r\n }\r\n if (intNumStr) {\r\n if (intOffsetIndex > 0) {\r\n return absFlag + '0.' + helperStringRepeat('0', Math.abs(intOffsetIndex)) + intNumStr\r\n }\r\n return absFlag + helperNumberOffsetPoint(intNumStr, intOffsetIndex)\r\n }\r\n if (dIntOffsetIndex > 0) {\r\n return absFlag + '0.' + helperStringRepeat('0', Math.abs(dIntOffsetIndex)) + dIntNumStr + dFloatNumStr\r\n }\r\n return absFlag + helperNumberOffsetPoint(dIntNumStr, dIntOffsetIndex) + dFloatNumStr\r\n }\r\n return rest\r\n}\r\n\r\nexport default toNumberString\r\n","import helperNumberDecimal from './helperNumberDecimal'\r\nimport toNumberString from './toNumberString'\r\n\r\nfunction helperMultiply (multiplier, multiplicand) {\r\n var str1 = toNumberString(multiplier)\r\n var str2 = toNumberString(multiplicand)\r\n return parseInt(str1.replace('.', '')) * parseInt(str2.replace('.', '')) / Math.pow(10, helperNumberDecimal(str1) + helperNumberDecimal(str2))\r\n}\r\n\r\nexport default helperMultiply\r\n","import helperMultiply from './helperMultiply'\r\n\r\nimport toNumber from './toNumber'\r\nimport toNumberString from './toNumberString'\r\n\r\nfunction helperCreateMathNumber(name) {\r\n return function (num, digits) {\r\n var numRest = toNumber(num)\r\n var rest = numRest\r\n if (numRest) {\r\n digits = digits >> 0\r\n var numStr = toNumberString(numRest)\r\n var nums = numStr.split('.')\r\n var intStr = nums[0]\r\n var floatStr = nums[1] || ''\r\n var fStr = floatStr.substring(0, digits + 1)\r\n var subRest = intStr + (fStr ? ('.' + fStr) : '')\r\n if (digits >= floatStr.length) {\r\n return toNumber(subRest)\r\n }\r\n subRest = numRest\r\n if (digits > 0) {\r\n var ratio = Math.pow(10, digits)\r\n rest = Math[name](helperMultiply(subRest, ratio)) / ratio\r\n } else {\r\n rest = Math[name](subRest)\r\n }\r\n }\r\n return rest\r\n }\r\n}\r\n\r\nexport default helperCreateMathNumber\r\n","import helperCreateMathNumber from './helperCreateMathNumber'\r\n\r\n/**\r\n * 将数值四舍五入\r\n *\r\n * @param {string|number} num 数值\r\n * @param {number} digits 小数保留位数\r\n * @return {number}\r\n */\r\nvar round = helperCreateMathNumber('round')\r\n\r\nexport default round\r\n","import helperCreateMathNumber from './helperCreateMathNumber'\r\n\r\n/**\r\n * 将数值向上舍入\r\n *\r\n * @param {string|number} num 数值\r\n * @param {number} digits 小数保留位数\r\n * @return {number}\r\n */\r\nvar ceil = helperCreateMathNumber('ceil')\r\n\r\nexport default ceil\r\n","import helperCreateMathNumber from './helperCreateMathNumber'\r\n\r\n/**\r\n * 将数值向下舍入\r\n *\r\n * @param {string|number} num 数值\r\n * @param {number} digits 小数保留位数\r\n * @return {number}\r\n */\r\nvar floor = helperCreateMathNumber('floor')\r\n\r\nexport default floor\r\n","import eqNull from './eqNull'\r\nimport isNumber from './isNumber'\r\nimport toNumberString from './toNumberString'\r\n\r\nfunction toValueString (obj) {\r\n if (isNumber(obj)) {\r\n return toNumberString(obj)\r\n }\r\n return '' + (eqNull(obj) ? '' : obj)\r\n}\r\n\r\nexport default toValueString\r\n","import round from './round'\r\nimport toValueString from './toValueString'\r\n\r\nimport helperStringRepeat from './helperStringRepeat'\r\nimport helperNumberOffsetPoint from './helperNumberOffsetPoint'\r\n\r\n/**\r\n * 将数值四舍五入并格式化为固定小数位的字符串\r\n *\r\n * @param {string|number} num 数值\r\n * @param {number} digits 小数保留位数\r\n * @return {String}\r\n */\r\nfunction toFixed (num, digits) {\r\n digits = digits >> 0\r\n var str = toValueString(round(num, digits))\r\n var nums = str.split('.')\r\n var intStr = nums[0]\r\n var floatStr = nums[1] || ''\r\n var digitOffsetIndex = digits - floatStr.length\r\n if (digits) {\r\n if (digitOffsetIndex > 0) {\r\n return intStr + '.' + floatStr + helperStringRepeat('0', digitOffsetIndex)\r\n }\r\n return intStr + helperNumberOffsetPoint(floatStr, Math.abs(digitOffsetIndex))\r\n }\r\n return intStr\r\n}\r\n\r\nexport default toFixed\r\n","import staticParseInt from './staticParseInt'\r\n\r\nimport helperCreateToNumber from './helperCreateToNumber'\r\n\r\n/**\r\n * 转整数\r\n * @param { String/Number } str 数值\r\n *\r\n * @return {Number}\r\n */\r\nvar toInteger = helperCreateToNumber(staticParseInt)\r\n\r\nexport default toInteger\r\n","import helperMultiply from './helperMultiply'\r\n\r\nimport toNumber from './toNumber'\r\n\r\n/**\r\n * 乘法运算\r\n *\r\n * @param { Number } num1 数值1\r\n * @param { Number } num2 数值2\r\n * @return {Number}\r\n */\r\nfunction multiply (num1, num2) {\r\n var multiplier = toNumber(num1)\r\n var multiplicand = toNumber(num2)\r\n return helperMultiply(multiplier, multiplicand)\r\n}\r\n\r\nexport default multiply\r\n","import helperNumberDecimal from './helperNumberDecimal'\r\nimport toNumberString from './toNumberString'\r\nimport multiply from './multiply'\r\n\r\nfunction helperNumberAdd (addend, augend) {\r\n var str1 = toNumberString(addend)\r\n var str2 = toNumberString(augend)\r\n var ratio = Math.pow(10, Math.max(helperNumberDecimal(str1), helperNumberDecimal(str2)))\r\n return (multiply(addend, ratio) + multiply(augend, ratio)) / ratio\r\n}\r\n\r\nexport default helperNumberAdd\r\n","import helperNumberDecimal from './helperNumberDecimal'\r\nimport toNumberString from './toNumberString'\r\nimport multiply from './multiply'\r\n\r\nfunction helperNumberDivide (divisor, dividend) {\r\n var str1 = toNumberString(divisor)\r\n var str2 = toNumberString(dividend)\r\n var divisorDecimal = helperNumberDecimal(str1)\r\n var dividendDecimal = helperNumberDecimal(str2)\r\n var powY = dividendDecimal - divisorDecimal\r\n var isMinus = powY < 0\r\n var multiplicand = Math.pow(10, isMinus ? Math.abs(powY) : powY)\r\n return multiply(str1.replace('.', '') / str2.replace('.', ''), isMinus ? 1 / multiplicand : multiplicand)\r\n}\r\n\r\nexport default helperNumberDivide\r\n","import helperNumberAdd from './helperNumberAdd'\r\n\r\nimport isFunction from './isFunction'\r\nimport isArray from './isArray'\r\nimport each from './each'\r\nimport get from './get'\r\n\r\n/**\r\n * 求和函数,将数值相加\r\n *\r\n * @param {Array} array 数组\r\n * @param {Function/String} iterate 方法或属性\r\n * @param {Object} context 上下文\r\n * @return {Number}\r\n */\r\nfunction sum (array, iterate, context) {\r\n var result = 0\r\n each(array && array.length > 2 && isArray(array) ? array.sort() : array, iterate ? isFunction(iterate) ? function () {\r\n result = helperNumberAdd(result, iterate.apply(context, arguments))\r\n } : function (val) {\r\n result = helperNumberAdd(result, get(val, iterate))\r\n } : function (val) {\r\n result = helperNumberAdd(result, val)\r\n })\r\n return result\r\n}\r\n\r\nexport default sum\r\n","var staticStrFirst = 'first'\r\n\r\nexport default staticStrFirst\r\n","var staticStrLast = 'last'\r\n\r\nexport default staticStrLast\r\n","function helperGetDateFullYear (date) {\r\n return date.getFullYear()\r\n}\r\n\r\nexport default helperGetDateFullYear\r\n","var staticDayTime = 86400000\r\n\r\nexport default staticDayTime\r\n","function helperGetDateMonth (date) {\r\n return date.getMonth()\r\n}\r\n\r\nexport default helperGetDateMonth\r\n","import isDate from './isDate'\r\nimport helperGetDateTime from './helperGetDateTime'\r\n\r\n/**\r\n * 判断是否有效的Date对象\r\n *\r\n * @param {any} val 对象\r\n * @return {boolean}\r\n */\r\nfunction isValidDate (val) {\r\n return isDate(val) && !isNaN(helperGetDateTime(val))\r\n}\r\n\r\nexport default isValidDate\r\n","import staticStrFirst from './staticStrFirst'\r\nimport staticStrLast from './staticStrLast'\r\nimport staticDayTime from './staticDayTime'\r\n\r\nimport helperGetDateFullYear from './helperGetDateFullYear'\r\nimport helperGetDateTime from './helperGetDateTime'\r\nimport helperGetDateMonth from './helperGetDateMonth'\r\n\r\nimport toStringDate from './toStringDate'\r\nimport isValidDate from './isValidDate'\r\nimport isNumber from './isNumber'\r\n\r\n/**\r\n * 返回前几月或后几月的日期\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offsetMonth 月(默认当前月)、前几个月、后几个月\r\n * @param {Number/String} offsetDay 获取哪天:月初(first)、月末(last)、指定天数(数值),如果为空,但超过指定月份的天数时,则默认单月最后一天\r\n * @return {Date}\r\n */\r\nfunction getWhatMonth (date, offsetMonth, offsetDay) {\r\n var monthNum = offsetMonth && !isNaN(offsetMonth) ? offsetMonth : 0\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n if (offsetDay === staticStrFirst) {\r\n return new Date(helperGetDateFullYear(date), helperGetDateMonth(date) + monthNum, 1)\r\n } else if (offsetDay === staticStrLast) {\r\n return new Date(helperGetDateTime(getWhatMonth(date, monthNum + 1, staticStrFirst)) - 1)\r\n } else if (isNumber(offsetDay)) {\r\n date.setDate(offsetDay)\r\n }\r\n if (monthNum) {\r\n var currDate = date.getDate()\r\n date.setMonth(helperGetDateMonth(date) + monthNum)\r\n if (currDate !== date.getDate()) {\r\n // 当为指定天数,且被跨月了,则默认单月最后一天\r\n date.setDate(1)\r\n return new Date(helperGetDateTime(date) - staticDayTime)\r\n }\r\n }\r\n }\r\n return date\r\n}\r\n\r\nexport default getWhatMonth\r\n","import staticStrFirst from './staticStrFirst'\r\nimport staticStrLast from './staticStrLast'\r\n\r\nimport helperGetDateFullYear from './helperGetDateFullYear'\r\n\r\nimport getWhatMonth from './getWhatMonth'\r\nimport toStringDate from './toStringDate'\r\nimport isValidDate from './isValidDate'\r\n\r\n/**\r\n * 返回前几年或后几年的日期\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offset 年(默认当前年)、前几个年(数值)、后几个年(数值)\r\n * @param {Number/String} month 获取哪月(null默认当前年)、年初(first)、年末(last)、指定月份(0-11)\r\n * @return {Date}\r\n */\r\nfunction getWhatYear (date, offset, month) {\r\n var number\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n if (offset) {\r\n number = offset && !isNaN(offset) ? offset : 0\r\n date.setFullYear(helperGetDateFullYear(date) + number)\r\n }\r\n if (month || !isNaN(month)) {\r\n if (month === staticStrFirst) {\r\n return new Date(helperGetDateFullYear(date), 0, 1)\r\n } else if (month === staticStrLast) {\r\n date.setMonth(11)\r\n return getWhatMonth(date, 0, staticStrLast)\r\n } else {\r\n date.setMonth(month)\r\n }\r\n }\r\n }\r\n return date\r\n}\r\n\r\nexport default getWhatYear\r\n","import staticDayTime from './staticDayTime'\r\n\r\nvar staticWeekTime = staticDayTime * 7\r\n\r\nexport default staticWeekTime\r\n","import setupDefaults from './setupDefaults'\r\n\r\nimport staticDayTime from './staticDayTime'\r\nimport staticWeekTime from './staticWeekTime'\r\n\r\nimport helperGetDateTime from './helperGetDateTime'\r\n\r\nimport toStringDate from './toStringDate'\r\n\r\nimport isValidDate from './isValidDate'\r\nimport isNumber from './isNumber'\r\n\r\n/**\r\n * 返回前几周或后几周的星期几\r\n *\r\n * @param {Date} date 日期\r\n * @param {Number} offsetWeek 周(默认当前周)、前几周、后几周\r\n * @param {Number} offsetDay 星期天(默认0)、星期一(1)、星期二(2)、星期三(3)、星期四(4)、星期五(5)、星期六(6)\r\n * @param {Number} firstDay 周视图的起始天,默认星期一\r\n * @return {Date}\r\n */\r\nfunction getWhatWeek (date, offsetWeek, offsetDay, firstDay) {\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n var hasCustomDay = isNumber(offsetDay)\r\n var hasStartDay = isNumber(firstDay)\r\n var whatDayTime = helperGetDateTime(date)\r\n // 如果指定了天或周视图起始天\r\n if (hasCustomDay || hasStartDay) {\r\n var viewStartDay = hasStartDay ? firstDay : setupDefaults.firstDayOfWeek\r\n var currentDay = date.getDay()\r\n var customDay = hasCustomDay ? offsetDay : currentDay\r\n if (currentDay !== customDay) {\r\n var offsetNum = 0\r\n if (viewStartDay > currentDay) {\r\n offsetNum = -(7 - viewStartDay + currentDay)\r\n } else if (viewStartDay < currentDay) {\r\n offsetNum = viewStartDay - currentDay\r\n }\r\n if (customDay > viewStartDay) {\r\n whatDayTime += ((customDay === 0 ? 7 : customDay) - viewStartDay + offsetNum) * staticDayTime\r\n } else if (customDay < viewStartDay) {\r\n whatDayTime += (7 - viewStartDay + customDay + offsetNum) * staticDayTime\r\n } else {\r\n whatDayTime += offsetNum * staticDayTime\r\n }\r\n }\r\n }\r\n if (offsetWeek && !isNaN(offsetWeek)) {\r\n whatDayTime += offsetWeek * staticWeekTime\r\n }\r\n return new Date(whatDayTime)\r\n }\r\n return date\r\n}\r\n\r\nexport default getWhatWeek\r\n","import staticStrFirst from './staticStrFirst'\r\nimport staticStrLast from './staticStrLast'\r\nimport staticParseInt from './staticParseInt'\r\n\r\nimport helperGetDateFullYear from './helperGetDateFullYear'\r\nimport helperGetDateMonth from './helperGetDateMonth'\r\nimport helperGetDateTime from './helperGetDateTime'\r\n\r\nimport toStringDate from './toStringDate'\r\nimport isValidDate from './isValidDate'\r\n\r\n/**\r\n * 返回前几天或后几天的日期\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offset 天偏移量(默认0)、前几天、后几天\r\n * @param {String} mode 指定小时(null默认当前分)、0时(first)、23时(last)\r\n * @return {Date}\r\n */\r\nfunction getWhatDay (date, offset, mode) {\r\n date = toStringDate(date)\r\n if (isValidDate(date) && !isNaN(offset)) {\r\n date.setDate(date.getDate() + staticParseInt(offset))\r\n if (mode === staticStrFirst) {\r\n return new Date(helperGetDateFullYear(date), helperGetDateMonth(date), date.getDate())\r\n } else if (mode === staticStrLast) {\r\n return new Date(helperGetDateTime(getWhatDay(date, 1, staticStrFirst)) - 1)\r\n }\r\n }\r\n return date\r\n}\r\n\r\nexport default getWhatDay\r\n","function helperStringUpperCase (str) {\r\n return str.toUpperCase()\r\n}\r\n\r\nexport default helperStringUpperCase\r\n","import setupDefaults from './setupDefaults'\r\n\r\nimport staticDayTime from './staticDayTime'\r\nimport staticWeekTime from './staticWeekTime'\r\n\r\nimport isNumber from './isNumber'\r\nimport includes from './includes'\r\nimport toStringDate from './toStringDate'\r\nimport isValidDate from './isValidDate'\r\nimport getWhatWeek from './getWhatWeek'\r\nimport range from './range'\r\nimport map from './map'\r\n\r\nimport helperGetDateTime from './helperGetDateTime'\r\n\r\nvar nextStartMaps = map(range(0, 7), function (day) {\r\n return [(day + 1) % 7, (day + 2) % 7, (day + 3) % 7]\r\n})\r\n\r\nfunction matchWeekStartDay (time, viewStartDay) {\r\n var day = new Date(time).getDay()\r\n return includes(nextStartMaps[viewStartDay], day)\r\n}\r\n\r\nfunction helperCreateGetDateWeek (getStartDate, checkCrossDate) {\r\n return function (date, firstDay) {\r\n var viewStartDay = isNumber(firstDay) ? firstDay : setupDefaults.firstDayOfWeek\r\n var targetDate = toStringDate(date)\r\n if (isValidDate(targetDate)) {\r\n var targetWeekStartDate = getWhatWeek(targetDate, 0, viewStartDay, viewStartDay)\r\n var firstDate = getStartDate(targetWeekStartDate)\r\n var firstTime = helperGetDateTime(firstDate)\r\n var targetWeekStartTime = helperGetDateTime(targetWeekStartDate)\r\n var targetWeekEndTime = targetWeekStartTime + staticDayTime * 6\r\n var targetWeekEndDate = new Date(targetWeekEndTime)\r\n var firstWeekStartDate = getWhatWeek(firstDate, 0, viewStartDay, viewStartDay)\r\n var firstWeekStartTime = helperGetDateTime(firstWeekStartDate)\r\n var tempTime\r\n if (targetWeekStartTime === firstWeekStartTime) {\r\n return 1\r\n }\r\n if (checkCrossDate(targetWeekStartDate, targetWeekEndDate)) {\r\n tempTime = helperGetDateTime(getStartDate(targetWeekEndDate))\r\n for (; tempTime < targetWeekEndTime; tempTime += staticDayTime) {\r\n if (matchWeekStartDay(tempTime, viewStartDay)) {\r\n return 1\r\n }\r\n }\r\n }\r\n var firstWeekEndTime = firstWeekStartTime + staticDayTime * 6\r\n var firstWeekEndDate = new Date(targetWeekEndTime)\r\n var offsetNum = 1\r\n if (checkCrossDate(firstWeekStartDate, firstWeekEndDate)) {\r\n offsetNum = 0\r\n tempTime = firstTime\r\n for (; tempTime < firstWeekEndTime; tempTime += staticDayTime) {\r\n if (matchWeekStartDay(tempTime, viewStartDay)) {\r\n offsetNum++\r\n break\r\n }\r\n }\r\n }\r\n return Math.floor((targetWeekStartTime - firstWeekStartTime) / staticWeekTime) + offsetNum\r\n }\r\n return NaN\r\n }\r\n}\r\n\r\nexport default helperCreateGetDateWeek\r\n","import helperCreateGetDateWeek from './helperCreateGetDateWeek'\r\n\r\n/**\r\n * 返回某个年份的第几周\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} firstDay 从年初的星期几为起始开始周开始算,默认星期一\r\n * @return {Number}\r\n */\r\nvar getYearWeek = helperCreateGetDateWeek(function (targetDate) {\r\n return new Date(targetDate.getFullYear(), 0, 1)\r\n}, function (date1, date2) {\r\n return date1.getFullYear() !== date2.getFullYear()\r\n})\r\n\r\nexport default getYearWeek\r\n","import helperGetDateTime from './helperGetDateTime'\r\nimport helperGetYMD from './helperGetYMD'\r\n\r\nfunction helperGetYMDTime (date) {\r\n return helperGetDateTime(helperGetYMD(date))\r\n}\r\n\r\nexport default helperGetYMDTime\r\n","import helperGetDateFullYear from './helperGetDateFullYear'\r\nimport helperGetDateMonth from './helperGetDateMonth'\r\n\r\nfunction helperGetYMD (date) {\r\n return new Date(helperGetDateFullYear(date), helperGetDateMonth(date), date.getDate())\r\n}\r\n\r\nexport default helperGetYMD\r\n","import staticDayTime from './staticDayTime'\r\nimport staticStrFirst from './staticStrFirst'\r\n\r\nimport helperGetYMDTime from './helperGetYMDTime'\r\n\r\nimport getWhatYear from './getWhatYear'\r\nimport toStringDate from './toStringDate'\r\n\r\nimport isValidDate from './isValidDate'\r\n\r\n/**\r\n * 返回某个年份的第几天\r\n *\r\n * @param {Date} date 日期或数字\r\n * @return {Number}\r\n */\r\nfunction getYearDay (date) {\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n return Math.floor((helperGetYMDTime(date) - helperGetYMDTime(getWhatYear(date, 0, staticStrFirst))) / staticDayTime) + 1\r\n }\r\n return NaN\r\n}\r\n\r\nexport default getYearDay\r\n","import toValueString from './toValueString'\r\n\r\nimport isUndefined from './isUndefined'\r\n\r\nimport helperStringRepeat from './helperStringRepeat'\r\n\r\n/**\r\n * 用指定字符从前面开始补全字符串\r\n *\r\n * @param {String} str 字符串\r\n * @param {Number} targetLength 结果长度\r\n * @param {Number} padString 补全字符\r\n * @return {String}\r\n */\r\nfunction padStart (str, targetLength, padString) {\r\n var rest = toValueString(str)\r\n targetLength = targetLength >> 0\r\n padString = isUndefined(padString) ? ' ' : '' + padString\r\n if (rest.padStart) {\r\n return rest.padStart(targetLength, padString)\r\n }\r\n if (targetLength > rest.length) {\r\n targetLength -= rest.length\r\n if (targetLength > padString.length) {\r\n padString += helperStringRepeat(padString, targetLength / padString.length)\r\n }\r\n return padString.slice(0, targetLength) + rest\r\n }\r\n return rest\r\n}\r\n\r\nexport default padStart\r\n","import setupDefaults from './setupDefaults'\r\n\r\nimport helperStringUpperCase from './helperStringUpperCase'\r\nimport helperGetDateFullYear from './helperGetDateFullYear'\r\nimport helperGetDateMonth from './helperGetDateMonth'\r\n\r\nimport toStringDate from './toStringDate'\r\nimport getYearWeek from './getYearWeek'\r\nimport getYearDay from './getYearDay'\r\n\r\nimport assign from './assign'\r\n\r\nimport isValidDate from './isValidDate'\r\nimport isFunction from './isFunction'\r\nimport eqNull from './eqNull'\r\n\r\nimport padStart from './padStart'\r\n\r\nfunction handleCustomTemplate (date, formats, match, value) {\r\n var format = formats[match]\r\n if (format) {\r\n if (isFunction(format)) {\r\n return format(value, match, date)\r\n } else {\r\n return format[value]\r\n }\r\n }\r\n return value\r\n}\r\n\r\nvar dateFormatRE = /\\[([^\\]]+)]|y{2,4}|M{1,2}|d{1,2}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|S{1,3}|Z{1,2}|W{1,2}|D{1,3}|[aAeEq]/g\r\n\r\n/**\r\n * 日期格式化为字符串,转义符号 []\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {String} format 输出日期格式(年份(yy|yyyy)、月份(M|MM自动补0)、天(d|dd自动补0)、12小时制(h|hh自动补0)、24小时制(H|HH自动补0)、分钟(m|mm自动补0)、秒(s|ss自动补0)、毫秒(S|SSS自动补0)、D当年的第几天、a/A上午下午、e/E星期几、w当年的第几周、W当月的第几周、q当年第几个季度、Z时区)\r\n * @param {Object} options {formats: {q: ['日', '一', '二', '三', '四', '五', '六'], E: function (value, match, date) {return '三'}, }} 自定义格式化模板\r\n * @return {String}\r\n */\r\nfunction toDateString (date, format, options) {\r\n if (date) {\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n var opts = options || {}\r\n var result = format || setupDefaults.parseDateFormat || setupDefaults.formatString\r\n var hours = date.getHours()\r\n var apm = hours < 12 ? 'am' : 'pm'\r\n var formats = assign({}, setupDefaults.parseDateRules || setupDefaults.formatStringMatchs, opts.formats)\r\n var fy = function (match, length) {\r\n return ('' + helperGetDateFullYear(date)).substring(4 - length)\r\n }\r\n var fM = function (match, length) {\r\n return padStart(helperGetDateMonth(date) + 1, length, '0')\r\n }\r\n var fd = function (match, length) {\r\n return padStart(date.getDate(), length, '0')\r\n }\r\n var fH = function (match, length) {\r\n return padStart(hours, length, '0')\r\n }\r\n var fh = function (match, length) {\r\n return padStart(hours <= 12 ? hours : hours - 12, length, '0')\r\n }\r\n var fm = function (match, length) {\r\n return padStart(date.getMinutes(), length, '0')\r\n }\r\n var fs = function (match, length) {\r\n return padStart(date.getSeconds(), length, '0')\r\n }\r\n var fS = function (match, length) {\r\n return padStart(date.getMilliseconds(), length, '0')\r\n }\r\n var fZ = function (match, length) {\r\n var zoneHours = date.getTimezoneOffset() / 60 * -1\r\n return handleCustomTemplate(date, formats, match, (zoneHours >= 0 ? '+' : '-') + padStart(zoneHours, 2, '0') + (length === 1 ? ':' : '') + '00')\r\n }\r\n var fW = function (match, length) {\r\n return padStart(handleCustomTemplate(date, formats, match, getYearWeek(date, eqNull(opts.firstDay) ? setupDefaults.firstDayOfWeek : opts.firstDay)), length, '0')\r\n }\r\n var fD = function (match, length) {\r\n return padStart(handleCustomTemplate(date, formats, match, getYearDay(date)), length, '0')\r\n }\r\n var parseDates = {\r\n yyyy: fy,\r\n yy: fy,\r\n MM: fM,\r\n M: fM,\r\n dd: fd,\r\n d: fd,\r\n HH: fH,\r\n H: fH,\r\n hh: fh,\r\n h: fh,\r\n mm: fm,\r\n m: fm,\r\n ss: fs,\r\n s: fs,\r\n SSS: fS,\r\n S: fS,\r\n ZZ: fZ,\r\n Z: fZ,\r\n WW: fW,\r\n W: fW,\r\n DDD: fD,\r\n D: fD,\r\n a: function (match) {\r\n return handleCustomTemplate(date, formats, match, apm)\r\n },\r\n A: function (match) {\r\n return handleCustomTemplate(date, formats, match, helperStringUpperCase(apm))\r\n },\r\n e: function (match) {\r\n return handleCustomTemplate(date, formats, match, date.getDay())\r\n },\r\n E: function (match) {\r\n return handleCustomTemplate(date, formats, match, date.getDay())\r\n },\r\n q: function (match) {\r\n return handleCustomTemplate(date, formats, match, Math.floor((helperGetDateMonth(date) + 3) / 3))\r\n }\r\n }\r\n return result.replace(dateFormatRE, function (match, skip) {\r\n return skip || (parseDates[match] ? parseDates[match](match, match.length) : match)\r\n })\r\n }\r\n return 'Invalid Date'\r\n }\r\n return ''\r\n}\r\n\r\nexport default toDateString\r\n","import helperGetDateTime from './helperGetDateTime'\r\nimport helperNewDate from './helperNewDate'\r\n\r\n/**\r\n * 返回当前时间戳\r\n *\r\n * @returns Number\r\n */\r\nvar now = Date.now || function () {\r\n return helperGetDateTime(helperNewDate())\r\n}\r\n\r\nexport default now\r\n","import helperCreateGetDateWeek from './helperCreateGetDateWeek'\r\n\r\n/**\r\n * 返回某个月的第几周\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} firstDay 周视图的起始天,默认星期一\r\n * @return {Number}\r\n */\r\nvar getMonthWeek = helperCreateGetDateWeek(function (targetDate) {\r\n return new Date(targetDate.getFullYear(), targetDate.getMonth(), 1)\r\n}, function (date1, date2) {\r\n return date1.getMonth() !== date2.getMonth()\r\n})\r\n\r\nexport default getMonthWeek\r\n","import helperGetDateTime from './helperGetDateTime'\r\nimport helperNewDate from './helperNewDate'\r\n\r\nimport toStringDate from './toStringDate'\r\n\r\nimport isValidDate from './isValidDate'\r\n\r\nvar dateDiffRules = [\r\n ['yyyy', 31536000000],\r\n ['MM', 2592000000],\r\n ['dd', 86400000],\r\n ['HH', 3600000],\r\n ['mm', 60000],\r\n ['ss', 1000],\r\n ['S', 0]\r\n]\r\n\r\n/**\r\n * 返回两个日期之间差距,如果结束日期小于开始日期done为fasle\r\n *\r\n * @param {Date} startDate 开始日期\r\n * @param {Date} endDate 结束日期或当期日期\r\n * @return {Object}\r\n */\r\nfunction getDateDiff (startDate, endDate) {\r\n var startTime, endTime, item, diffTime, len, index\r\n var result = { done: false, status: false, time: 0 }\r\n startDate = toStringDate(startDate)\r\n endDate = endDate ? toStringDate(endDate) : helperNewDate()\r\n if (isValidDate(startDate) && isValidDate(endDate)) {\r\n startTime = helperGetDateTime(startDate)\r\n endTime = helperGetDateTime(endDate)\r\n if (startTime < endTime) {\r\n diffTime = result.time = endTime - startTime\r\n result.done = true\r\n result.status = true\r\n for (index = 0, len = dateDiffRules.length; index < len; index++) {\r\n item = dateDiffRules[index]\r\n if (diffTime >= item[1]) {\r\n if (index === len - 1) {\r\n result[item[0]] = diffTime || 0\r\n } else {\r\n result[item[0]] = Math.floor(diffTime / item[1])\r\n diffTime -= result[item[0]] * item[1]\r\n }\r\n } else {\r\n result[item[0]] = 0\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport default getDateDiff\r\n","import toValueString from './toValueString'\r\n\r\n/**\r\n * 去除字符串右边的空格\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nfunction trimRight (str) {\r\n return str && str.trimRight ? str.trimRight() : toValueString(str).replace(/[\\s\\uFEFF\\xA0]+$/g, '')\r\n}\r\n\r\nexport default trimRight\r\n","import toValueString from './toValueString'\r\n\r\n/**\r\n * 去除字符串左边的空格\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nfunction trimLeft (str) {\r\n return str && str.trimLeft ? str.trimLeft() : toValueString(str).replace(/^[\\s\\uFEFF\\xA0]+/g, '')\r\n}\r\n\r\nexport default trimLeft\r\n","import trimRight from './trimRight'\r\nimport trimLeft from './trimLeft'\r\n\r\n/**\r\n * 去除字符串左右两边的空格\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nfunction trim (str) {\r\n return str && str.trim ? str.trim() : trimRight(trimLeft(str))\r\n}\r\n\r\nexport default trim\r\n","var staticEscapeMap = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": ''',\r\n '`': '`'\r\n}\r\n\r\nexport default staticEscapeMap\r\n","import toValueString from './toValueString'\r\nimport keys from './keys'\r\n\r\nfunction helperFormatEscaper (dataMap) {\r\n var replaceRegexp = new RegExp('(?:' + keys(dataMap).join('|') + ')', 'g')\r\n return function (str) {\r\n return toValueString(str).replace(replaceRegexp, function (match) {\r\n return dataMap[match]\r\n })\r\n }\r\n}\r\n\r\nexport default helperFormatEscaper\r\n","import staticEscapeMap from './staticEscapeMap'\r\n\r\nimport helperFormatEscaper from './helperFormatEscaper'\r\n\r\n/**\r\n * 转义HTML字符串,替换&, <, >, \", ', `字符\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nvar escape = helperFormatEscaper(staticEscapeMap)\r\n\r\nexport default escape\r\n","import staticEscapeMap from './staticEscapeMap'\r\n\r\nimport helperFormatEscaper from './helperFormatEscaper'\r\n\r\nimport each from './each'\r\n\r\nvar unescapeMap = {}\r\neach(staticEscapeMap, function (item, key) {\r\n unescapeMap[staticEscapeMap[key]] = key\r\n})\r\n\r\n/**\r\n * 反转escape\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nvar unescape = helperFormatEscaper(unescapeMap)\r\n\r\nexport default unescape\r\n","function helperStringSubstring (str, start, end) {\r\n return str.substring(start, end)\r\n}\r\n\r\nexport default helperStringSubstring\r\n","function helperStringLowerCase (str) {\r\n return str.toLowerCase()\r\n}\r\n\r\nexport default helperStringLowerCase\r\n","import toValueString from './toValueString'\r\nimport helperStringSubstring from './helperStringSubstring'\r\nimport helperStringUpperCase from './helperStringUpperCase'\r\nimport helperStringLowerCase from './helperStringLowerCase'\r\n\r\nvar camelCacheMaps = {}\r\n\r\n/**\r\n * 将带字符串转成驼峰字符串,例如: project-name 转为 projectName\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nfunction camelCase (str) {\r\n str = toValueString(str)\r\n if (camelCacheMaps[str]) {\r\n return camelCacheMaps[str]\r\n }\r\n var strLen = str.length\r\n var rest = str.replace(/([-]+)/g, function (text, flag, index) {\r\n return index && index + flag.length < strLen ? '-' : ''\r\n })\r\n strLen = rest.length\r\n rest = rest.replace(/([A-Z]+)/g, function (text, upper, index) {\r\n var upperLen = upper.length\r\n upper = helperStringLowerCase(upper)\r\n if (index) {\r\n if (upperLen > 2 && index + upperLen < strLen) {\r\n return helperStringUpperCase(helperStringSubstring(upper, 0, 1)) + helperStringSubstring(upper, 1, upperLen - 1) + helperStringUpperCase(helperStringSubstring(upper, upperLen - 1, upperLen))\r\n }\r\n return helperStringUpperCase(helperStringSubstring(upper, 0, 1)) + helperStringSubstring(upper, 1, upperLen)\r\n } else {\r\n if (upperLen > 1 && index + upperLen < strLen) {\r\n return helperStringSubstring(upper, 0, upperLen - 1) + helperStringUpperCase(helperStringSubstring(upper, upperLen - 1, upperLen))\r\n }\r\n }\r\n return upper\r\n }).replace(/(-[a-zA-Z])/g, function (text, upper) {\r\n return helperStringUpperCase(helperStringSubstring(upper, 1, upper.length))\r\n })\r\n camelCacheMaps[str] = rest\r\n return rest\r\n}\r\n\r\nexport default camelCase\r\n","import toValueString from './toValueString'\r\nimport helperStringSubstring from './helperStringSubstring'\r\nimport helperStringLowerCase from './helperStringLowerCase'\r\n\r\nvar kebabCacheMaps = {}\r\n\r\n/**\r\n * 将带驼峰字符串转成字符串,例如: projectName 转为 project-name\r\n *\r\n * @param {String} str 字符串\r\n * @return {String}\r\n */\r\nfunction kebabCase (str) {\r\n str = toValueString(str)\r\n if (kebabCacheMaps[str]) {\r\n return kebabCacheMaps[str]\r\n }\r\n if (/^[A-Z]+$/.test(str)) {\r\n return helperStringLowerCase(str)\r\n }\r\n var rest = str.replace(/^([a-z])([A-Z]+)([a-z]+)$/, function (text, prevLower, upper, nextLower) {\r\n var upperLen = upper.length\r\n if (upperLen > 1) {\r\n return prevLower + '-' + helperStringLowerCase(helperStringSubstring(upper, 0, upperLen - 1)) + '-' + helperStringLowerCase(helperStringSubstring(upper, upperLen - 1, upperLen)) + nextLower\r\n }\r\n return helperStringLowerCase(prevLower + '-' + upper + nextLower)\r\n }).replace(/^([A-Z]+)([a-z]+)?$/, function (text, upper, nextLower) {\r\n var upperLen = upper.length\r\n return helperStringLowerCase(helperStringSubstring(upper, 0, upperLen - 1) + '-' + helperStringSubstring(upper, upperLen - 1, upperLen) + (nextLower || ''))\r\n }).replace(/([a-z]?)([A-Z]+)([a-z]?)/g, function (text, prevLower, upper, nextLower, index) {\r\n var upperLen = upper.length\r\n if (upperLen > 1) {\r\n if (prevLower) {\r\n prevLower += '-'\r\n }\r\n if (nextLower) {\r\n return (prevLower || '') + helperStringLowerCase(helperStringSubstring(upper, 0, upperLen - 1)) + '-' + helperStringLowerCase(helperStringSubstring(upper, upperLen - 1, upperLen)) + nextLower\r\n }\r\n }\r\n return (prevLower || '') + (index ? '-' : '') + helperStringLowerCase(upper) + (nextLower || '')\r\n })\r\n rest = rest.replace(/([-]+)/g, function (text, flag, index) {\r\n return index && index + flag.length < rest.length ? '-' : ''\r\n })\r\n kebabCacheMaps[str] = rest\r\n return rest\r\n}\r\n\r\nexport default kebabCase\r\n","import setupDefaults from './setupDefaults'\r\n\r\nimport toValueString from './toValueString'\r\nimport trim from './trim'\r\n\r\nimport get from './get'\r\n\r\n/**\r\n * 解析动态字符串模板\r\n * @param {atring} str 字符串模板\r\n * @param {any | any[]} args 对象\r\n * @param {any} options \r\n */\r\nfunction template (str, args, options) {\r\n return toValueString(str).replace((options || setupDefaults).tmplRE || /\\{{2}([.\\w[\\]\\s]+)\\}{2}/g, function (match, key) {\r\n return get(args, trim(key))\r\n })\r\n}\r\n\r\nexport default template\r\n","var staticDecodeURIComponent = decodeURIComponent\r\n\r\nexport default staticDecodeURIComponent\r\n","import staticDecodeURIComponent from './staticDecodeURIComponent'\r\n\r\nimport arrayEach from './arrayEach'\r\n\r\nimport isString from './isString'\r\n\r\n/**\r\n * 反序列化查询参数\r\n * @param {String} query 字符串\r\n */\r\nfunction unserialize (str) {\r\n var items\r\n var result = {}\r\n if (str && isString(str)) {\r\n arrayEach(str.split('&'), function (param) {\r\n items = param.split('=')\r\n result[staticDecodeURIComponent(items[0])] = staticDecodeURIComponent(items[1] || '')\r\n })\r\n }\r\n return result\r\n}\r\n\r\nexport default unserialize\r\n","var staticEncodeURIComponent = encodeURIComponent\r\n\r\nexport default staticEncodeURIComponent\r\n","import staticEncodeURIComponent from './staticEncodeURIComponent'\r\n\r\nimport each from './each'\r\nimport isArray from './isArray'\r\nimport isNull from './isNull'\r\nimport isUndefined from './isUndefined'\r\nimport isPlainObject from './isPlainObject'\r\n\r\nfunction stringifyParams (resultVal, resultKey, isArr) {\r\n var _arr\r\n var result = []\r\n each(resultVal, function (item, key) {\r\n _arr = isArray(item)\r\n if (isPlainObject(item) || _arr) {\r\n result = result.concat(stringifyParams(item, resultKey + '[' + key + ']', _arr))\r\n } else {\r\n result.push(staticEncodeURIComponent(resultKey + '[' + (isArr ? '' : key) + ']') + '=' + staticEncodeURIComponent(isNull(item) ? '' : item))\r\n }\r\n })\r\n return result\r\n}\r\n\r\n/**\r\n * 序列化查询参数\r\n *\r\n * @param {Object} query 查询参数\r\n */\r\nfunction serialize (query) {\r\n var _arr\r\n var params = []\r\n each(query, function (item, key) {\r\n if (!isUndefined(item)) {\r\n _arr = isArray(item)\r\n if (isPlainObject(item) || _arr) {\r\n params = params.concat(stringifyParams(item, key, _arr))\r\n } else {\r\n params.push(staticEncodeURIComponent(key) + '=' + staticEncodeURIComponent(isNull(item) ? '' : item))\r\n }\r\n }\r\n })\r\n return params.join('&').replace(/%20/g, '+')\r\n}\r\n\r\nexport default serialize\r\n","import staticStrUndefined from './staticStrUndefined'\r\n\r\n/* eslint-disable valid-typeof */\r\nvar staticLocation = typeof location === staticStrUndefined ? 0 : location\r\n\r\nexport default staticLocation\r\n","import staticLocation from './staticLocation'\r\n\r\nfunction helperGetLocatOrigin () {\r\n return staticLocation ? (staticLocation.origin || (staticLocation.protocol + '//' + staticLocation.host)) : ''\r\n}\r\n\r\nexport default helperGetLocatOrigin\r\n","import staticLocation from './staticLocation'\r\n\r\nimport unserialize from './unserialize'\r\n\r\nimport helperGetLocatOrigin from './helperGetLocatOrigin'\r\n\r\nfunction parseURLQuery (uri) {\r\n return unserialize(uri.split('?')[1] || '')\r\n}\r\n\r\nfunction parseUrl (url) {\r\n var hashs, portText, searchs, parsed\r\n var href = '' + url\r\n if (href.indexOf('//') === 0) {\r\n href = (staticLocation ? staticLocation.protocol : '') + href\r\n } else if (href.indexOf('/') === 0) {\r\n href = helperGetLocatOrigin() + href\r\n }\r\n searchs = href.replace(/#.*/, '').match(/(\\?.*)/)\r\n parsed = {\r\n href: href,\r\n hash: '',\r\n host: '',\r\n hostname: '',\r\n protocol: '',\r\n port: '',\r\n search: searchs && searchs[1] && searchs[1].length > 1 ? searchs[1] : ''\r\n }\r\n parsed.path = href.replace(/^([a-z0-9.+-]*:)\\/\\//, function (text, protocol) {\r\n parsed.protocol = protocol\r\n return ''\r\n }).replace(/^([a-z0-9.+-]*)(:\\d+)?\\/?/, function (text, hostname, port) {\r\n portText = port || ''\r\n parsed.port = portText.replace(':', '')\r\n parsed.hostname = hostname\r\n parsed.host = hostname + portText\r\n return '/'\r\n }).replace(/(#.*)/, function (text, hash) {\r\n parsed.hash = hash.length > 1 ? hash : ''\r\n return ''\r\n })\r\n hashs = parsed.hash.match(/#((.*)\\?|(.*))/)\r\n parsed.pathname = parsed.path.replace(/(\\?|#.*).*/, '')\r\n parsed.origin = parsed.protocol + '//' + parsed.host\r\n parsed.hashKey = hashs ? (hashs[2] || hashs[1] || '') : ''\r\n parsed.hashQuery = parseURLQuery(parsed.hash)\r\n parsed.searchQuery = parseURLQuery(parsed.search)\r\n return parsed\r\n}\r\n\r\nexport default parseUrl\r\n","import setupDefaults from './setupDefaults'\r\nimport staticDocument from './staticDocument'\r\nimport staticDecodeURIComponent from './staticDecodeURIComponent'\r\nimport staticEncodeURIComponent from './staticEncodeURIComponent'\r\n\r\nimport isArray from './isArray'\r\nimport isObject from './isObject'\r\nimport isDate from './isDate'\r\nimport isUndefined from './isUndefined'\r\nimport includes from './includes'\r\nimport keys from './keys'\r\n\r\nimport assign from './assign'\r\n\r\nimport arrayEach from './arrayEach'\r\n\r\nimport helperNewDate from './helperNewDate'\r\nimport helperGetDateTime from './helperGetDateTime'\r\nimport getWhatYear from './getWhatYear'\r\nimport getWhatMonth from './getWhatMonth'\r\nimport getWhatDay from './getWhatDay'\r\n\r\nfunction toCookieUnitTime (unit, expires) {\r\n var num = parseFloat(expires)\r\n var nowdate = helperNewDate()\r\n var time = helperGetDateTime(nowdate)\r\n switch (unit) {\r\n case 'y': return helperGetDateTime(getWhatYear(nowdate, num))\r\n case 'M': return helperGetDateTime(getWhatMonth(nowdate, num))\r\n case 'd': return helperGetDateTime(getWhatDay(nowdate, num))\r\n case 'h':\r\n case 'H': return time + num * 60 * 60 * 1000\r\n case 'm': return time + num * 60 * 1000\r\n case 's': return time + num * 1000\r\n }\r\n return time\r\n}\r\n\r\nfunction toCookieUTCString (date) {\r\n return (isDate(date) ? date : new Date(date)).toUTCString()\r\n}\r\n\r\n/**\r\n * cookie操作函数\r\n * @param {String/Array/Object} name 键/数组/对象\r\n * @param {String} value 值\r\n * @param {Object} options 参数\r\n * @param {String} name: 键\r\n * @param {Object} value: 值\r\n * @param {String} path: 路径\r\n * @param {String} domain: 作用域\r\n * @param {Boolean} secure: 设置为安全的,只能用https协议\r\n * @param {Number} expires: 过期时间,可以指定日期或者字符串,默认天\r\n */\r\nfunction cookie (name, value, options) {\r\n if (staticDocument) {\r\n var opts, expires, values, result, cookies, keyIndex\r\n var inserts = []\r\n var args = arguments\r\n if (isArray(name)) {\r\n inserts = name\r\n } else if (args.length > 1) {\r\n inserts = [assign({ name: name, value: value }, options)]\r\n } else if (isObject(name)) {\r\n inserts = [name]\r\n }\r\n if (inserts.length > 0) {\r\n arrayEach(inserts, function (obj) {\r\n opts = assign({}, setupDefaults.cookies, obj)\r\n values = []\r\n if (opts.name) {\r\n expires = opts.expires\r\n values.push(staticEncodeURIComponent(opts.name) + '=' + staticEncodeURIComponent(isObject(opts.value) ? JSON.stringify(opts.value) : opts.value))\r\n if (expires) {\r\n if (isNaN(expires)) {\r\n // UTCString || Unit\r\n expires = expires.replace(/^([0-9]+)(y|M|d|H|h|m|s)$/, function (text, num, unit) {\r\n return toCookieUTCString(toCookieUnitTime(unit, num))\r\n })\r\n } else if (/^[0-9]{11,13}$/.test(expires) || isDate(expires)) {\r\n // Date || now\r\n expires = toCookieUTCString(expires)\r\n } else {\r\n // day\r\n expires = toCookieUTCString(toCookieUnitTime('d', expires))\r\n }\r\n opts.expires = expires\r\n }\r\n arrayEach(['expires', 'path', 'domain', 'secure'], function (key) {\r\n if (!isUndefined(opts[key])) {\r\n values.push(opts[key] && key === 'secure' ? key : (key + '=' + opts[key]))\r\n }\r\n })\r\n }\r\n staticDocument.cookie = values.join('; ')\r\n })\r\n return true\r\n } else {\r\n result = {}\r\n cookies = staticDocument.cookie\r\n if (cookies) {\r\n arrayEach(cookies.split('; '), function (val) {\r\n keyIndex = val.indexOf('=')\r\n result[staticDecodeURIComponent(val.substring(0, keyIndex))] = staticDecodeURIComponent(val.substring(keyIndex + 1) || '')\r\n })\r\n }\r\n return args.length === 1 ? result[name] : result\r\n }\r\n }\r\n return false\r\n}\r\n\r\nfunction hasCookieItem (value) {\r\n return includes(cookieKeys(), value)\r\n}\r\n\r\nfunction getCookieItem (name) {\r\n return cookie(name)\r\n}\r\n\r\nfunction setCookieItem (name, value, options) {\r\n cookie(name, value, options)\r\n return cookie\r\n}\r\n\r\nfunction removeCookieItem (name, options) {\r\n cookie(name, '', assign({ expires: -1 }, setupDefaults.cookies, options))\r\n}\r\n\r\nfunction cookieKeys () {\r\n return keys(cookie())\r\n}\r\n\r\nfunction cookieJson () {\r\n return cookie()\r\n}\r\n\r\nassign(cookie, {\r\n has: hasCookieItem,\r\n set: setCookieItem,\r\n setItem: setCookieItem,\r\n get: getCookieItem,\r\n getItem: getCookieItem,\r\n remove: removeCookieItem,\r\n removeItem: removeCookieItem,\r\n keys: cookieKeys,\r\n getJSON: cookieJson\r\n})\r\n\r\nexport default cookie\r\n","import staticStrUndefined from './staticStrUndefined'\r\nimport staticDocument from './staticDocument'\r\nimport staticWindow from './staticWindow'\r\n\r\nimport assign from './assign'\r\nimport arrayEach from './arrayEach'\r\n\r\n/* eslint-disable valid-typeof */\r\nfunction isBrowseStorage (storage) {\r\n try {\r\n var testKey = '__xe_t'\r\n storage.setItem(testKey, 1)\r\n storage.removeItem(testKey)\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n}\r\n\r\nfunction isBrowseType (type) {\r\n return navigator.userAgent.indexOf(type) > -1\r\n}\r\n\r\n/**\r\n * 获取浏览器内核\r\n * @return Object\r\n */\r\nfunction browse () {\r\n var $body, isChrome, isEdge\r\n var isMobile = false\r\n var isLocalStorage = false\r\n var isSessionStorage = false\r\n var result = {\r\n isNode: false,\r\n isMobile: isMobile,\r\n isPC: false,\r\n isDoc: !!staticDocument\r\n }\r\n if (!staticWindow && typeof process !== staticStrUndefined) {\r\n result.isNode = true\r\n } else {\r\n isEdge = isBrowseType('Edge')\r\n isChrome = isBrowseType('Chrome')\r\n isMobile = /(Android|webOS|iPhone|iPad|iPod|SymbianOS|BlackBerry|Windows Phone)/.test(navigator.userAgent)\r\n if (result.isDoc) {\r\n $body = staticDocument.body || staticDocument.documentElement\r\n arrayEach(['webkit', 'khtml', 'moz', 'ms', 'o'], function (core) {\r\n result['-' + core] = !!$body[core + 'MatchesSelector']\r\n })\r\n }\r\n try {\r\n isLocalStorage = isBrowseStorage(staticWindow.localStorage)\r\n } catch(e) {}\r\n try {\r\n isSessionStorage = isBrowseStorage(staticWindow.sessionStorage)\r\n } catch(e) {}\r\n assign(result, {\r\n edge: isEdge,\r\n firefox: isBrowseType('Firefox'),\r\n msie: !isEdge && result['-ms'],\r\n safari: !isChrome && !isEdge && isBrowseType('Safari'),\r\n isMobile: isMobile,\r\n isPC: !isMobile,\r\n isLocalStorage: isLocalStorage,\r\n isSessionStorage: isSessionStorage\r\n })\r\n }\r\n return result\r\n}\r\n\r\nexport default browse\r\n","// 核心\r\nimport XEUtils from './ctor'\r\n\r\n// 对象相关的方法\r\nimport assign from './assign'\r\nimport objectEach from './objectEach'\r\nimport lastObjectEach from './lastObjectEach'\r\nimport objectMap from './objectMap'\r\nimport merge from './merge'\r\n\r\n// 数组相关的方法\r\nimport map from './map'\r\nimport some from './some'\r\nimport every from './every'\r\nimport includeArrays from './includeArrays'\r\nimport arrayEach from './arrayEach'\r\nimport lastArrayEach from './lastArrayEach'\r\nimport uniq from './uniq'\r\nimport union from './union'\r\nimport toArray from './toArray'\r\nimport sortBy from './sortBy'\r\nimport orderBy from './orderBy'\r\nimport shuffle from './shuffle'\r\nimport sample from './sample'\r\nimport slice from './slice'\r\nimport filter from './filter'\r\nimport findKey from './findKey'\r\nimport includes from './includes'\r\nimport find from './find'\r\nimport findLast from './findLast'\r\nimport reduce from './reduce'\r\nimport copyWithin from './copyWithin'\r\nimport chunk from './chunk'\r\nimport zip from './zip'\r\nimport unzip from './unzip'\r\nimport zipObject from './zipObject'\r\nimport flatten from './flatten'\r\nimport pluck from './pluck'\r\nimport invoke from './invoke'\r\nimport toArrayTree from './toArrayTree'\r\nimport toTreeArray from './toTreeArray'\r\nimport findTree from './findTree'\r\nimport eachTree from './eachTree'\r\nimport mapTree from './mapTree'\r\nimport filterTree from './filterTree'\r\nimport searchTree from './searchTree'\r\nimport arrayIndexOf from './arrayIndexOf'\r\nimport arrayLastIndexOf from './arrayLastIndexOf'\r\n\r\n// 基础方法\r\nimport hasOwnProp from './hasOwnProp'\r\nimport isArray from './isArray'\r\nimport isNull from './isNull'\r\nimport isNumberNaN from './isNaN'\r\nimport isUndefined from './isUndefined'\r\nimport isFunction from './isFunction'\r\nimport isObject from './isObject'\r\nimport isString from './isString'\r\nimport isPlainObject from './isPlainObject'\r\nimport isLeapYear from './isLeapYear'\r\nimport isDate from './isDate'\r\nimport eqNull from './eqNull'\r\nimport each from './each'\r\nimport forOf from './forOf'\r\nimport lastForOf from './lastForOf'\r\nimport indexOf from './indexOf'\r\nimport lastIndexOf from './lastIndexOf'\r\nimport keys from './keys'\r\nimport values from './values'\r\nimport clone from './clone'\r\nimport getSize from './getSize'\r\nimport lastEach from './lastEach'\r\nimport remove from './remove'\r\nimport clear from './clear'\r\nimport isNumberFinite from './isFinite'\r\nimport isFloat from './isFloat'\r\nimport isInteger from './isInteger'\r\nimport isBoolean from './isBoolean'\r\nimport isNumber from './isNumber'\r\nimport isRegExp from './isRegExp'\r\nimport isError from './isError'\r\nimport isTypeError from './isTypeError'\r\nimport isEmpty from './isEmpty'\r\nimport isSymbol from './isSymbol'\r\nimport isArguments from './isArguments'\r\nimport isElement from './isElement'\r\nimport isDocument from './isDocument'\r\nimport isWindow from './isWindow'\r\nimport isFormData from './isFormData'\r\nimport isMap from './isMap'\r\nimport isWeakMap from './isWeakMap'\r\nimport isSet from './isSet'\r\nimport isWeakSet from './isWeakSet'\r\nimport isMatch from './isMatch'\r\nimport isEqual from './isEqual'\r\nimport isEqualWith from './isEqualWith'\r\nimport getType from './getType'\r\nimport uniqueId from './uniqueId'\r\nimport findIndexOf from './findIndexOf'\r\nimport findLastIndexOf from './findLastIndexOf'\r\nimport toStringJSON from './toStringJSON'\r\nimport toJSONString from './toJSONString'\r\nimport entries from './entries'\r\nimport pick from './pick'\r\nimport omit from './omit'\r\nimport first from './first'\r\nimport last from './last'\r\nimport has from './has'\r\nimport get from './get'\r\nimport set from './set'\r\nimport groupBy from './groupBy'\r\nimport countBy from './countBy'\r\nimport range from './range'\r\nimport destructuring from './destructuring'\r\n\r\n// 数值相关方法\r\nimport random from './random'\r\nimport max from './max'\r\nimport min from './min'\r\nimport commafy from './commafy'\r\nimport round from './round'\r\nimport ceil from './ceil'\r\nimport floor from './floor'\r\nimport toFixed from './toFixed'\r\nimport toInteger from './toInteger'\r\nimport toNumber from './toNumber'\r\nimport toNumberString from './toNumberString'\r\nimport add from './add'\r\nimport subtract from './subtract'\r\nimport multiply from './multiply'\r\nimport divide from './divide'\r\nimport sum from './sum'\r\nimport mean from './mean'\r\n\r\n// 日期相关的方法\r\nimport getWhatYear from './getWhatYear'\r\nimport getWhatQuarter from './getWhatQuarter'\r\nimport getWhatMonth from './getWhatMonth'\r\nimport getWhatWeek from './getWhatWeek'\r\nimport getWhatDay from './getWhatDay'\r\nimport getWhatHours from './getWhatHours'\r\nimport getWhatMinutes from './getWhatMinutes'\r\nimport getWhatSeconds from './getWhatSeconds'\r\nimport toStringDate from './toStringDate'\r\nimport toDateString from './toDateString'\r\nimport now from './now'\r\nimport timestamp from './timestamp'\r\nimport isValidDate from './isValidDate'\r\nimport isDateSame from './isDateSame'\r\nimport getYearDay from './getYearDay'\r\nimport getYearWeek from './getYearWeek'\r\nimport getMonthWeek from './getMonthWeek'\r\nimport getDayOfYear from './getDayOfYear'\r\nimport getDayOfMonth from './getDayOfMonth'\r\nimport getDateDiff from './getDateDiff'\r\n\r\n// 字符串相关的方法\r\nimport padEnd from './padEnd'\r\nimport padStart from './padStart'\r\nimport repeat from './repeat'\r\nimport trim from './trim'\r\nimport trimRight from './trimRight'\r\nimport trimLeft from './trimLeft'\r\nimport escape from './escape'\r\nimport unescape from './unescape'\r\nimport camelCase from './camelCase'\r\nimport kebabCase from './kebabCase'\r\nimport startsWith from './startsWith'\r\nimport endsWith from './endsWith'\r\nimport template from './template'\r\nimport toFormatString from './toFormatString'\r\nimport toValueString from './toValueString'\r\n\r\n// 函数相关的方法\r\nimport noop from './noop'\r\nimport property from './property'\r\nimport bind from './bind'\r\nimport once from './once'\r\nimport after from './after'\r\nimport before from './before'\r\nimport throttle from './throttle'\r\nimport debounce from './debounce'\r\nimport delay from './delay'\r\n\r\n// 地址相关的方法\r\nimport unserialize from './unserialize'\r\nimport serialize from './serialize'\r\nimport parseUrl from './parseUrl'\r\n\r\n// 浏览器相关的方法\r\nimport getBaseURL from './getBaseURL'\r\nimport locat from './locat'\r\nimport cookie from './cookie'\r\nimport browse from './browse'\r\n\r\nassign(XEUtils, {\r\n // object\r\n assign: assign,\r\n objectEach: objectEach,\r\n lastObjectEach: lastObjectEach,\r\n objectMap: objectMap,\r\n merge: merge,\r\n\r\n // array\r\n uniq: uniq,\r\n union: union,\r\n sortBy: sortBy,\r\n orderBy: orderBy,\r\n shuffle: shuffle,\r\n sample: sample,\r\n some: some,\r\n every: every,\r\n slice: slice,\r\n filter: filter,\r\n find: find,\r\n findLast: findLast,\r\n findKey: findKey,\r\n includes: includes,\r\n arrayIndexOf: arrayIndexOf,\r\n arrayLastIndexOf: arrayLastIndexOf,\r\n map: map,\r\n reduce: reduce,\r\n copyWithin: copyWithin,\r\n chunk: chunk,\r\n zip: zip,\r\n unzip: unzip,\r\n zipObject: zipObject,\r\n flatten: flatten,\r\n toArray: toArray,\r\n includeArrays: includeArrays,\r\n pluck: pluck,\r\n invoke: invoke,\r\n arrayEach: arrayEach,\r\n lastArrayEach: lastArrayEach,\r\n toArrayTree: toArrayTree,\r\n toTreeArray: toTreeArray,\r\n findTree: findTree,\r\n eachTree: eachTree,\r\n mapTree: mapTree,\r\n filterTree: filterTree,\r\n searchTree: searchTree,\r\n\r\n // base\r\n hasOwnProp: hasOwnProp,\r\n eqNull: eqNull,\r\n isNaN: isNumberNaN,\r\n isFinite: isNumberFinite,\r\n isUndefined: isUndefined,\r\n isArray: isArray,\r\n isFloat: isFloat,\r\n isInteger: isInteger,\r\n isFunction: isFunction,\r\n isBoolean: isBoolean,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isRegExp: isRegExp,\r\n isObject: isObject,\r\n isPlainObject: isPlainObject,\r\n isDate: isDate,\r\n isError: isError,\r\n isTypeError: isTypeError,\r\n isEmpty: isEmpty,\r\n isNull: isNull,\r\n isSymbol: isSymbol,\r\n isArguments: isArguments,\r\n isElement: isElement,\r\n isDocument: isDocument,\r\n isWindow: isWindow,\r\n isFormData: isFormData,\r\n isMap: isMap,\r\n isWeakMap: isWeakMap,\r\n isSet: isSet,\r\n isWeakSet: isWeakSet,\r\n isLeapYear: isLeapYear,\r\n isMatch: isMatch,\r\n isEqual: isEqual,\r\n isEqualWith: isEqualWith,\r\n getType: getType,\r\n uniqueId: uniqueId,\r\n getSize: getSize,\r\n indexOf: indexOf,\r\n lastIndexOf: lastIndexOf,\r\n findIndexOf: findIndexOf,\r\n findLastIndexOf: findLastIndexOf,\r\n toStringJSON: toStringJSON,\r\n toJSONString: toJSONString,\r\n keys: keys,\r\n values: values,\r\n entries: entries,\r\n pick: pick,\r\n omit: omit,\r\n first: first,\r\n last: last,\r\n each: each,\r\n forOf: forOf,\r\n lastForOf: lastForOf,\r\n lastEach: lastEach,\r\n has: has,\r\n get: get,\r\n set: set,\r\n groupBy: groupBy,\r\n countBy: countBy,\r\n clone: clone,\r\n clear: clear,\r\n remove: remove,\r\n range: range,\r\n destructuring: destructuring,\r\n\r\n // number\r\n random: random,\r\n min: min,\r\n max: max,\r\n commafy: commafy,\r\n round: round,\r\n ceil: ceil,\r\n floor: floor,\r\n toFixed: toFixed,\r\n toNumber: toNumber,\r\n toNumberString: toNumberString,\r\n toInteger: toInteger,\r\n add: add,\r\n subtract: subtract,\r\n multiply: multiply,\r\n divide: divide,\r\n sum: sum,\r\n mean: mean,\r\n\r\n // date\r\n now: now,\r\n timestamp: timestamp,\r\n isValidDate: isValidDate,\r\n isDateSame: isDateSame,\r\n toStringDate: toStringDate,\r\n toDateString: toDateString,\r\n getWhatYear: getWhatYear,\r\n getWhatQuarter: getWhatQuarter,\r\n getWhatMonth: getWhatMonth,\r\n getWhatWeek: getWhatWeek,\r\n getWhatDay: getWhatDay,\r\n getWhatHours: getWhatHours,\r\n getWhatMinutes: getWhatMinutes,\r\n getWhatSeconds: getWhatSeconds,\r\n getYearDay: getYearDay,\r\n getYearWeek: getYearWeek,\r\n getMonthWeek: getMonthWeek,\r\n getDayOfYear: getDayOfYear,\r\n getDayOfMonth: getDayOfMonth,\r\n getDateDiff: getDateDiff,\r\n\r\n // string\r\n trim: trim,\r\n trimLeft: trimLeft,\r\n trimRight: trimRight,\r\n escape: escape,\r\n unescape: unescape,\r\n camelCase: camelCase,\r\n kebabCase: kebabCase,\r\n repeat: repeat,\r\n padStart: padStart,\r\n padEnd: padEnd,\r\n startsWith: startsWith,\r\n endsWith: endsWith,\r\n template: template,\r\n toFormatString: toFormatString,\r\n toString: toValueString,\r\n toValueString: toValueString,\r\n\r\n // function\r\n noop: noop,\r\n property: property,\r\n bind: bind,\r\n once: once,\r\n after: after,\r\n before: before,\r\n throttle: throttle,\r\n debounce: debounce,\r\n delay: delay,\r\n\r\n // url\r\n unserialize: unserialize,\r\n serialize: serialize,\r\n parseUrl: parseUrl,\r\n\r\n // web\r\n getBaseURL: getBaseURL,\r\n locat: locat,\r\n browse: browse,\r\n cookie: cookie\r\n})\r\n\r\nexport default XEUtils\r\n","import each from './each'\r\nimport isFunction from './isFunction'\r\nimport property from './property'\r\n\r\n/**\r\n * 指定方法后的返回值组成的新对象\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction objectMap (obj, iterate, context) {\r\n var result = {}\r\n if (obj) {\r\n if (iterate) {\r\n if (!isFunction(iterate)) {\r\n iterate = property(iterate)\r\n }\r\n each(obj, function (val, index) {\r\n result[index] = iterate.call(context, val, index, obj)\r\n })\r\n } else {\r\n return obj\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport default objectMap\r\n","import uniq from './uniq'\r\nimport toArray from './toArray'\r\n\r\n/**\r\n * 将多个数的值返回唯一的并集数组\r\n *\r\n * @param {...Array} 数组\r\n * @return {Array}\r\n */\r\nfunction union () {\r\n var args = arguments\r\n var result = []\r\n var index = 0\r\n var len = args.length\r\n for (; index < len; index++) {\r\n result = result.concat(toArray(args[index]))\r\n }\r\n return uniq(result)\r\n}\r\n\r\nexport default union\r\n","import shuffle from './shuffle'\r\n\r\n/**\r\n * 从一个数组中随机返回几个元素\r\n *\r\n * @param {Array} array 数组\r\n * @param {Number} number 个数\r\n * @return {Array}\r\n */\r\nfunction sample (array, number) {\r\n var result = shuffle(array)\r\n if (arguments.length <= 1) {\r\n return result[0]\r\n }\r\n if (number < result.length) {\r\n result.length = number || 0\r\n }\r\n return result\r\n}\r\n\r\nexport default sample\r\n","import each from './each'\r\n\r\n/**\r\n * 根据回调过滤数据\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction filter (obj, iterate, context) {\r\n var result = []\r\n if (obj && iterate) {\r\n if (obj.filter) {\r\n return obj.filter(iterate, context)\r\n }\r\n each(obj, function (val, key) {\r\n if (iterate.call(context, val, key, obj)) {\r\n result.push(val)\r\n }\r\n })\r\n }\r\n return result\r\n}\r\n\r\nexport default filter\r\n","import isArray from './isArray'\r\nimport values from './values'\r\n\r\n/**\r\n * 从右至左遍历,匹配最近的一条数据\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, obj) 回调\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction findLast (obj, iterate, context) {\r\n if (obj) {\r\n if (!isArray(obj)) {\r\n obj = values(obj)\r\n }\r\n for (var len = obj.length - 1; len >= 0; len--) {\r\n if (iterate.call(context, obj[len], len, obj)) {\r\n return obj[len]\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default findLast\r\n","import keys from './keys'\r\n\r\n/**\r\n * 接收一个函数作为累加器,数组中的每个值(从左到右)开始合并,最终为一个值。\r\n *\r\n * @param {Array} array 数组\r\n * @param {Function} callback 方法\r\n * @param {Object} initialValue 初始值\r\n * @return {Number}\r\n */\r\nfunction reduce (array, callback, initialValue) {\r\n if (array) {\r\n var len, reduceMethod\r\n var index = 0\r\n var context = null\r\n var previous = initialValue\r\n var isInitialVal = arguments.length > 2\r\n var keyList = keys(array)\r\n if (array.length && array.reduce) {\r\n reduceMethod = function () {\r\n return callback.apply(context, arguments)\r\n }\r\n if (isInitialVal) {\r\n return array.reduce(reduceMethod, previous)\r\n }\r\n return array.reduce(reduceMethod)\r\n }\r\n if (isInitialVal) {\r\n index = 1\r\n previous = array[keyList[0]]\r\n }\r\n for (len = keyList.length; index < len; index++) {\r\n previous = callback.call(context, previous, array[keyList[index]], index, array)\r\n }\r\n return previous\r\n }\r\n}\r\n\r\nexport default reduce\r\n","import isArray from './isArray'\r\n\r\n/**\r\n * 浅复制数组的一部分到同一数组中的另一个位置,数组大小不变\r\n *\r\n * @param {Array} array 数组\r\n * @param {Number} target 从该位置开始替换数据\r\n * @param {Number} start 从该位置开始读取数据,默认为 0 。如果为负值,表示倒数\r\n * @param {Number} end 到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数\r\n * @return {Array}\r\n */\r\nfunction copyWithin (array, target, start, end) {\r\n if (isArray(array) && array.copyWithin) {\r\n return array.copyWithin(target, start, end)\r\n }\r\n var replaceIndex, replaceArray\r\n var targetIndex = target >> 0\r\n var startIndex = start >> 0\r\n var len = array.length\r\n var endIndex = arguments.length > 3 ? end >> 0 : len\r\n if (targetIndex < len) {\r\n targetIndex = targetIndex >= 0 ? targetIndex : len + targetIndex\r\n if (targetIndex >= 0) {\r\n startIndex = startIndex >= 0 ? startIndex : len + startIndex\r\n endIndex = endIndex >= 0 ? endIndex : len + endIndex\r\n if (startIndex < endIndex) {\r\n for (replaceIndex = 0, replaceArray = array.slice(startIndex, endIndex); targetIndex < len; targetIndex++) {\r\n if (replaceArray.length <= replaceIndex) {\r\n break\r\n }\r\n array[targetIndex] = replaceArray[replaceIndex++]\r\n }\r\n }\r\n }\r\n }\r\n return array\r\n}\r\n\r\nexport default copyWithin\r\n","import isArray from './isArray'\r\n\r\n/**\r\n * 将一个数组分割成大小的组。如果数组不能被平均分配,那么最后一块将是剩下的元素\r\n *\r\n * @param {Array} array 数组\r\n * @param {Number} size 每组大小\r\n * @return {Array}\r\n */\r\nfunction chunk (array, size) {\r\n var index\r\n var result = []\r\n var arrLen = size >> 0 || 1\r\n if (isArray(array)) {\r\n if (arrLen >= 0 && array.length > arrLen) {\r\n index = 0\r\n while (index < array.length) {\r\n result.push(array.slice(index, index + arrLen))\r\n index += arrLen\r\n }\r\n } else {\r\n result = array.length ? [array] : array\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport default chunk\r\n","import unzip from './unzip'\r\n\r\n/**\r\n * 将每个数组中相应位置的值合并在一起\r\n *\r\n * @param {Array*} array 数组\r\n */\r\nfunction zip () {\r\n return unzip(arguments)\r\n}\r\n\r\nexport default zip\r\n","import values from './values'\r\nimport each from './each'\r\n\r\n/**\r\n * 根据键数组、值数组对转换为对象\r\n *\r\n * @param {Array} props 键数组\r\n * @param {Number} arr 值数组\r\n * @return {Object}\r\n */\r\nfunction zipObject (props, arr) {\r\n var result = {}\r\n arr = arr || []\r\n each(values(props), function (val, key) {\r\n result[val] = arr[key]\r\n })\r\n return result\r\n}\r\n\r\nexport default zipObject\r\n","import map from './map'\r\n\r\nimport isArray from './isArray'\r\n\r\nfunction deepGetObj (obj, path) {\r\n var index = 0\r\n var len = path.length\r\n while (obj && index < len) {\r\n obj = obj[path[index++]]\r\n }\r\n return len && obj ? obj : 0\r\n}\r\n\r\n/**\r\n * 在list的每个元素上执行方法,任何传递的额外参数都会在调用方法的时候传递给它\r\n *\r\n * @param {Array} list\r\n * @param {Array/String/Function} path\r\n * @param {...Object} arguments\r\n * @return {Array}\r\n */\r\nfunction invoke (list, path) {\r\n var func\r\n var args = arguments\r\n var params = []\r\n var paths = []\r\n var index = 2\r\n var len = args.length\r\n for (; index < len; index++) {\r\n params.push(args[index])\r\n }\r\n if (isArray(path)) {\r\n len = path.length - 1\r\n for (index = 0; index < len; index++) {\r\n paths.push(path[index])\r\n }\r\n path = path[len]\r\n }\r\n return map(list, function (context) {\r\n if (paths.length) {\r\n context = deepGetObj(context, paths)\r\n }\r\n func = context[path] || path\r\n if (func && func.apply) {\r\n return func.apply(context, params)\r\n }\r\n })\r\n}\r\n\r\nexport default invoke\r\n","import setupDefaults from './setupDefaults'\r\nimport helperLog from './helperLog'\r\n\r\nimport orderBy from './orderBy'\r\n\r\nimport clone from './clone'\r\nimport eqNull from './eqNull'\r\nimport each from './each'\r\nimport remove from './remove'\r\n\r\nimport assign from './assign'\r\n\r\nfunction strictTree (array, optChildren) {\r\n each(array, function (item) {\r\n if (item[optChildren] && !item[optChildren].length) {\r\n remove(item, optChildren)\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 将一个带层级的数据列表转成树结构\r\n *\r\n * @param {Array} array 数组\r\n * @param {Object} options {strict: false, parentKey: 'parentId', key: 'id', children: 'children', mapChildren: 'children', data: 'data'}\r\n * @return {Array}\r\n */\r\nfunction toArrayTree (array, options) {\r\n var opts = assign({}, setupDefaults.treeOptions, options)\r\n var optStrict = opts.strict\r\n var optKey = opts.key\r\n var optParentKey = opts.parentKey\r\n var optChildren = opts.children\r\n var optMapChildren = opts.mapChildren\r\n var optSortKey = opts.sortKey\r\n var optReverse = opts.reverse\r\n var optData = opts.data\r\n var result = []\r\n var treeMaps = {}\r\n var idsMap = {}\r\n var id, treeData, parentId\r\n\r\n if (optSortKey) {\r\n array = orderBy(clone(array), optSortKey)\r\n if (optReverse) {\r\n array = array.reverse()\r\n }\r\n }\r\n\r\n each(array, function (item) {\r\n id = item[optKey]\r\n if (idsMap[id]) {\r\n helperLog('warn', 'Duplicate primary key=' + id)\r\n }\r\n idsMap[id] = true\r\n })\r\n\r\n each(array, function (item) {\r\n id = item[optKey]\r\n\r\n if (optData) {\r\n treeData = {}\r\n treeData[optData] = item\r\n } else {\r\n treeData = item\r\n }\r\n\r\n parentId = item[optParentKey]\r\n treeMaps[id] = treeMaps[id] || []\r\n treeData[optKey] = id\r\n treeData[optParentKey] = parentId\r\n\r\n if (id === parentId) {\r\n parentId = null\r\n helperLog('warn', 'Error infinite Loop. key=' + id + ' parentKey=' + id)\r\n }\r\n\r\n treeMaps[parentId] = treeMaps[parentId] || []\r\n treeMaps[parentId].push(treeData)\r\n treeData[optChildren] = treeMaps[id]\r\n if (optMapChildren) {\r\n treeData[optMapChildren] = treeMaps[id]\r\n }\r\n\r\n if (!optStrict || (optStrict && eqNull(parentId))) {\r\n if (!idsMap[parentId]) {\r\n result.push(treeData)\r\n }\r\n }\r\n })\r\n\r\n if (optStrict) {\r\n strictTree(array, optChildren)\r\n }\r\n\r\n return result\r\n}\r\n\r\nexport default toArrayTree\r\n","import eachTree from './eachTree'\r\n\r\n/**\r\n * 从树结构中根据回调过滤数据\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @param {Function} iterate(item, index, items, path, parent) 回调\r\n * @param {Object} options {children: 'children'}\r\n * @param {Object} context 上下文\r\n * @return {Array}\r\n */\r\nfunction filterTree (obj, iterate, options, context) {\r\n var result = []\r\n if (obj && iterate) {\r\n eachTree(obj, function (item, index, items, path, parent, nodes) {\r\n if (iterate.call(context, item, index, items, path, parent, nodes)) {\r\n result.push(item)\r\n }\r\n }, options)\r\n }\r\n return result\r\n}\r\n\r\nexport default filterTree\r\n","import isNumber from './isNumber'\r\n\r\n/* eslint-disable eqeqeq */\r\nfunction isNumberNaN (obj) {\r\n return isNumber(obj) && isNaN(obj)\r\n}\r\n\r\nexport default isNumberNaN\r\n","import isNumber from './isNumber'\r\n\r\nfunction isNumberFinite (obj) {\r\n return isNumber(obj) && isFinite(obj)\r\n}\r\n\r\nexport default isNumberFinite\r\n","import isArray from './isArray'\r\nimport isInteger from './isInteger'\r\nimport isNull from './isNull'\r\n\r\n/**\r\n * 判断是否小数\r\n *\r\n * @param {Number} obj 数值\r\n * @return {Boolean}\r\n */\r\nfunction isFloat (obj) {\r\n return !isNull(obj) && !isNaN(obj) && !isArray(obj) && !isInteger(obj)\r\n}\r\n\r\nexport default isFloat\r\n","/**\r\n * 判断是否TypeError对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isTypeError (obj) {\r\n return obj ? obj.constructor === TypeError : false\r\n}\r\n\r\nexport default isTypeError\r\n","import isString from './isString'\r\nimport isNumber from './isNumber'\r\n\r\n/**\r\n * 判断是否Element对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isElement (obj) {\r\n return !!(obj && isString(obj.nodeName) && isNumber(obj.nodeType))\r\n}\r\n\r\nexport default isElement\r\n","import staticDocument from './staticDocument'\r\n\r\n/**\r\n * 判断是否Document对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isDocument (obj) {\r\n return !!(obj && staticDocument && obj.nodeType === 9)\r\n}\r\n\r\nexport default isDocument\r\n","import staticWindow from './staticWindow'\r\n\r\n/**\r\n * 判断是否Window对象\r\n *\r\n * @param {Object} obj 对象\r\n * @return {Boolean}\r\n */\r\nfunction isWindow (obj) {\r\n return !!(staticWindow && !!(obj && obj === obj.window))\r\n}\r\n\r\nexport default isWindow\r\n","import keys from './keys'\r\nimport findIndexOf from './findIndexOf'\r\nimport isEqual from './isEqual'\r\n\r\nimport some from './some'\r\nimport includeArrays from './includeArrays'\r\n\r\n/**\r\n * 判断属性中的键和值是否包含在对象中\r\n *\r\n * @param {Object/Array} obj 对象\r\n * @param {Object} source 值\r\n * @return {Boolean}\r\n */\r\nfunction isMatch (obj, source) {\r\n var objKeys = keys(obj)\r\n var sourceKeys = keys(source)\r\n if (sourceKeys.length) {\r\n if (includeArrays(objKeys, sourceKeys)) {\r\n return some(sourceKeys, function (key2) {\r\n return findIndexOf(objKeys, function (key1) {\r\n return key1 === key2 && isEqual(obj[key1], source[key2])\r\n }) > -1\r\n })\r\n }\r\n } else {\r\n return true\r\n }\r\n return isEqual(obj, source)\r\n}\r\n\r\nexport default isMatch\r\n","import helperEqualCompare from './helperEqualCompare'\r\nimport helperDefaultCompare from './helperDefaultCompare'\r\n\r\nimport isFunction from './isFunction'\r\nimport isUndefined from './isUndefined'\r\n\r\n/**\r\n * 深度比较两个对象之间的值是否相等,使用自定义比较函数\r\n *\r\n * @param {Object} obj1 值1\r\n * @param {Object} obj2 值2\r\n * @param {Function} func 自定义函数\r\n * @return {Boolean}\r\n */\r\nfunction isEqualWith (obj1, obj2, func) {\r\n if (isFunction(func)) {\r\n return helperEqualCompare(obj1, obj2, function (v1, v2, key, obj1, obj2) {\r\n var result = func(v1, v2, key, obj1, obj2)\r\n return isUndefined(result) ? helperDefaultCompare(v1, v2) : !!result\r\n }, func)\r\n }\r\n return helperEqualCompare(obj1, obj2, helperDefaultCompare)\r\n}\r\n\r\nexport default isEqualWith\r\n","import isSymbol from './isSymbol'\r\nimport isDate from './isDate'\r\nimport isArray from './isArray'\r\nimport isRegExp from './isRegExp'\r\nimport isError from './isError'\r\nimport isNull from './isNull'\r\n\r\n/**\r\n * 获取对象类型\r\n *\r\n * @param {Object} obj 对象\r\n * @return {String}\r\n */\r\nfunction getType (obj) {\r\n if (isNull(obj)) {\r\n return 'null'\r\n }\r\n if (isSymbol(obj)) {\r\n return 'symbol'\r\n }\r\n if (isDate(obj)) {\r\n return 'date'\r\n }\r\n if (isArray(obj)) {\r\n return 'array'\r\n }\r\n if (isRegExp(obj)) {\r\n return 'regexp'\r\n }\r\n if (isError(obj)) {\r\n return 'error'\r\n }\r\n return typeof obj\r\n}\r\n\r\nexport default getType\r\n","import setupDefaults from './setupDefaults'\r\n\r\nimport eqNull from './eqNull'\r\n\r\n/**\r\n * 获取一个全局唯一标识\r\n *\r\n * @param {String} prefix 前缀\r\n * @return {Number}\r\n */\r\nfunction uniqueId (prefix) {\r\n return '' + (eqNull(prefix) ? '' : prefix) + (setupDefaults.keyId++)\r\n}\r\n\r\nexport default uniqueId\r\n","import isPlainObject from './isPlainObject'\r\nimport isString from './isString'\r\n\r\n/**\r\n * 字符串转JSON\r\n *\r\n * @param {String} str 字符串\r\n * @return {Object} 返回转换后对象\r\n */\r\nfunction toStringJSON (str) {\r\n if (isPlainObject(str)) {\r\n return str\r\n } else if (isString(str)) {\r\n try {\r\n return JSON.parse(str)\r\n } catch (e) {}\r\n }\r\n return {}\r\n}\r\n\r\nexport default toStringJSON\r\n","import eqNull from './eqNull'\r\n\r\n/**\r\n * JSON转字符串\r\n *\r\n * @param {Object} obj 对象\r\n * @return {String} 返回字符串\r\n */\r\nfunction toJSONString (obj) {\r\n return eqNull(obj) ? '' : JSON.stringify(obj)\r\n}\r\n\r\nexport default toJSONString\r\n","import values from './values'\r\n\r\n/**\r\n * 获取对象第一个值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @return {Object}\r\n */\r\nfunction first (obj) {\r\n return values(obj)[0]\r\n}\r\n\r\nexport default first\r\n","import values from './values'\r\n\r\n/**\r\n * 获取对象最后一个值\r\n *\r\n * @param {Object} obj 对象/数组\r\n * @return {Object}\r\n */\r\nfunction last (obj) {\r\n var list = values(obj)\r\n return list[list.length - 1]\r\n}\r\n\r\nexport default last\r\n","import isArray from './isArray'\r\nimport hasOwnProp from './hasOwnProp'\r\n\r\n/**\r\n * 已废弃,被 some, every 替换\r\n * @deprecated\r\n */\r\nfunction forOf (obj, iterate, context) {\r\n if (obj) {\r\n if (isArray(obj)) {\r\n for (var index = 0, len = obj.length; index < len; index++) {\r\n if (iterate.call(context, obj[index], index, obj) === false) {\r\n break\r\n }\r\n }\r\n } else {\r\n for (var key in obj) {\r\n if (hasOwnProp(obj, key)) {\r\n if (iterate.call(context, obj[key], key, obj) === false) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default forOf\r\n","import isArray from './isArray'\r\nimport keys from './hasOwnProp'\r\n\r\n/**\r\n * 已废弃\r\n * @deprecated\r\n */\r\nfunction lastForOf (obj, iterate, context) {\r\n if (obj) {\r\n var len, list\r\n if (isArray(obj)) {\r\n for (len = obj.length - 1; len >= 0; len--) {\r\n if (iterate.call(context, obj[len], len, obj) === false) {\r\n break\r\n }\r\n }\r\n } else {\r\n list = keys(obj)\r\n for (len = list.length - 1; len >= 0; len--) {\r\n if (iterate.call(context, obj[list[len]], list[len], obj) === false) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default lastForOf\r\n","import staticHGKeyRE from './staticHGKeyRE'\r\n\r\nimport helperGetHGSKeys from './helperGetHGSKeys'\r\n\r\nimport hasOwnProp from './hasOwnProp'\r\n\r\n/**\r\n * 检查键、路径是否是该对象的属性\r\n *\r\n * @param {Object/Array} data 对象\r\n * @param {String/Function} property 键、路径\r\n * @return {Boolean}\r\n */\r\nfunction has (obj, property) {\r\n if (obj) {\r\n if (hasOwnProp(obj, property)) {\r\n return true\r\n } else {\r\n var prop, arrIndex, objProp, matchs, rest, isHas\r\n var props = helperGetHGSKeys(property)\r\n var index = 0\r\n var len = props.length\r\n for (rest = obj; index < len; index++) {\r\n isHas = false\r\n prop = props[index]\r\n matchs = prop ? prop.match(staticHGKeyRE) : ''\r\n if (matchs) {\r\n arrIndex = matchs[1]\r\n objProp = matchs[2]\r\n if (arrIndex) {\r\n if (rest[arrIndex]) {\r\n if (hasOwnProp(rest[arrIndex], objProp)) {\r\n isHas = true\r\n rest = rest[arrIndex][objProp]\r\n }\r\n }\r\n } else {\r\n if (hasOwnProp(rest, objProp)) {\r\n isHas = true\r\n rest = rest[objProp]\r\n }\r\n }\r\n } else {\r\n if (hasOwnProp(rest, prop)) {\r\n isHas = true\r\n rest = rest[prop]\r\n }\r\n }\r\n if (isHas) {\r\n if (index === len - 1) {\r\n return true\r\n }\r\n } else {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\nexport default has\r\n","import groupBy from './groupBy'\r\n\r\nimport objectEach from './objectEach'\r\n\r\n/**\r\n * 集合分组统计,返回各组中对象的数量统计\r\n *\r\n * @param {Array} obj 对象\r\n * @param {Function} iterate 回调/对象属性\r\n * @param {Object} context 上下文\r\n * @return {Object}\r\n */\r\nfunction countBy (obj, iterate, context) {\r\n var result = groupBy(obj, iterate, context || this)\r\n objectEach(result, function (item, key) {\r\n result[key] = item.length\r\n })\r\n return result\r\n}\r\n\r\nexport default countBy\r\n","import keys from './keys'\r\n\r\nimport slice from './slice'\r\nimport includes from './includes'\r\nimport arrayEach from './arrayEach'\r\n\r\nimport assign from './assign'\r\n\r\n/**\r\n * 将一个或者多个对象值解构到目标对象\r\n *\r\n * @param {Object} destination 目标对象\r\n * @param {...Object}\r\n * @return {Boolean}\r\n */\r\nfunction destructuring (destination, sources) {\r\n if (destination && sources) {\r\n var rest = assign.apply(this, [{}].concat(slice(arguments, 1)))\r\n var restKeys = keys(rest)\r\n arrayEach(keys(destination), function (key) {\r\n if (includes(restKeys, key)) {\r\n destination[key] = rest[key]\r\n }\r\n })\r\n }\r\n return destination\r\n}\r\n\r\nexport default destructuring\r\n","import setupDefaults from './setupDefaults'\r\n\r\nimport round from './round'\r\nimport ceil from './ceil'\r\nimport floor from './floor'\r\n\r\nimport isNumber from './isNumber'\r\nimport toValueString from './toValueString'\r\nimport toFixed from './toFixed'\r\n\r\nimport toNumberString from './toNumberString'\r\nimport assign from './assign'\r\n\r\n/**\r\n * 千分位分隔符、小数点\r\n *\r\n * @param {String/Number} num 数值\r\n * @param {CommafyOptions} options 参数\r\n * @return {String}\r\n */\r\nfunction commafy(num, options) {\r\n var opts = assign({}, setupDefaults.commafyOptions, options)\r\n var optDigits = opts.digits\r\n var isNum = isNumber(num)\r\n var rest, result, isNegative, intStr, floatStr\r\n if (isNum) {\r\n rest = (opts.ceil ? ceil : (opts.floor ? floor : round))(num, optDigits)\r\n result = toNumberString(optDigits ? toFixed(rest, optDigits) : rest).split('.')\r\n intStr = result[0]\r\n floatStr = result[1]\r\n isNegative = intStr && rest < 0\r\n if (isNegative) {\r\n intStr = intStr.substring(1, intStr.length)\r\n }\r\n } else {\r\n rest = toValueString(num).replace(/,/g, '')\r\n result = rest ? [rest] : []\r\n intStr = result[0]\r\n }\r\n if (result.length) {\r\n return (isNegative ? '-' : '') + intStr.replace(new RegExp('(?=(?!(\\\\b))(.{' + (opts.spaceNumber || 3) + '})+$)', 'g'), (opts.separator || ',')) + (floatStr ? ('.' + floatStr) : '')\r\n }\r\n return rest\r\n}\r\n\r\nexport default commafy\r\n","import helperNumberAdd from './helperNumberAdd'\r\nimport toNumber from './toNumber'\r\n\r\n/**\r\n * 加法运算\r\n *\r\n * @param { Number } num1 被加数\r\n * @param { Number } num2 加数\r\n * @return {Number}\r\n */\r\nfunction add (num1, num2) {\r\n return helperNumberAdd(toNumber(num1), toNumber(num2))\r\n}\r\n\r\nexport default add\r\n","import helperNumberDecimal from './helperNumberDecimal'\r\nimport toNumberString from './toNumberString'\r\nimport toNumber from './toNumber'\r\nimport toFixed from './toFixed'\r\n\r\n/**\r\n * 减法运算\r\n *\r\n * @param { Number } num1 被减数\r\n * @param { Number } num2 减数\r\n * @return {Number}\r\n */\r\nfunction subtract (num1, num2) {\r\n var subtrahend = toNumber(num1)\r\n var minuend = toNumber(num2)\r\n var str1 = toNumberString(subtrahend)\r\n var str2 = toNumberString(minuend)\r\n var digit1 = helperNumberDecimal(str1)\r\n var digit2 = helperNumberDecimal(str2)\r\n var ratio = Math.pow(10, Math.max(digit1, digit2))\r\n var precision = (digit1 >= digit2) ? digit1 : digit2\r\n return parseFloat(toFixed((subtrahend * ratio - minuend * ratio) / ratio, precision))\r\n}\r\n\r\nexport default subtract\r\n","import helperNumberDivide from './helperNumberDivide'\r\nimport toNumber from './toNumber'\r\n\r\n/**\r\n * 除法运算\r\n *\r\n * @param { Number } num1 数值1\r\n * @param { Number } num2 数值2\r\n * @return {Number}\r\n */\r\nfunction divide (num1, num2) {\r\n return helperNumberDivide(toNumber(num1), toNumber(num2))\r\n}\r\n\r\nexport default divide\r\n","import helperNumberDivide from './helperNumberDivide'\r\n\r\nimport getSize from './getSize'\r\n\r\nimport sum from './sum'\r\n\r\n/**\r\n * 求平均值函数\r\n *\r\n * @param {Array} array 数组\r\n * @param {Function/String} iterate 方法或属性\r\n * @param {Object} context 上下文\r\n * @return {Number}\r\n */\r\nfunction mean (array, iterate, context) {\r\n return helperNumberDivide(sum(array, iterate, context), getSize(array))\r\n}\r\n\r\nexport default mean\r\n","import helperGetDateTime from './helperGetDateTime'\r\n\r\nimport now from './now'\r\nimport toStringDate from './toStringDate'\r\n\r\nimport isDate from './isDate'\r\n\r\n/**\r\n * 将日期格式化为时间戳\r\n *\r\n * @param {String/Number/Date} str 日期或数字\r\n * @param {String} format 解析日期格式\r\n * @returns Number\r\n */\r\nvar timestamp = function (str, format) {\r\n if (str) {\r\n var date = toStringDate(str, format)\r\n return isDate(date) ? helperGetDateTime(date) : date\r\n }\r\n return now()\r\n}\r\n\r\nexport default timestamp\r\n","import toDateString from './toDateString'\r\n\r\n/**\r\n * 比较两个日期\r\n *\r\n * @param {Number/String/Date} date1 日期\r\n * @param {Number/String/Date} date2 日期\r\n * @param {String} format 对比格式\r\n */\r\nfunction isDateSame (date1, date2, format) {\r\n if (date1 && date2) {\r\n date1 = toDateString(date1, format)\r\n return date1 !== 'Invalid Date' && date1 === toDateString(date2, format)\r\n }\r\n return false\r\n}\r\n\r\nexport default isDateSame\r\n","import getWhatMonth from './getWhatMonth'\r\n\r\nimport toStringDate from './toStringDate'\r\n\r\nimport isValidDate from './isValidDate'\r\n\r\nfunction getQuarterNumber (date) {\r\n var month = date.getMonth()\r\n if (month < 3) {\r\n return 1\r\n } else if (month < 6) {\r\n return 2\r\n } else if (month < 9) {\r\n return 3\r\n }\r\n return 4\r\n}\r\n\r\n/**\r\n * 返回前几季度或后几季度的日期\r\n *\r\n * @param {Date} date 日期\r\n * @param {Number} offset 季度(默认当前季度)、前几季度、后几季度\r\n * @param {Number} day 获取哪天:月初(first)、月末(last)、指定天数(数值),如果为空,但超过指定月份的天数时,则默认单月最后一天\r\n * @return {Date}\r\n */\r\nfunction getWhatQuarter (date, offset, day) {\r\n var currMonth, monthOffset = offset && !isNaN(offset) ? offset * 3 : 0\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n currMonth = (getQuarterNumber(date) - 1) * 3\r\n date.setMonth(currMonth)\r\n return getWhatMonth(date, monthOffset, day)\r\n }\r\n return date\r\n}\r\n\r\nexport default getWhatQuarter\r\n","import staticStrFirst from './staticStrFirst'\r\nimport staticStrLast from './staticStrLast'\r\nimport staticParseInt from './staticParseInt'\r\n\r\nimport helperGetDateFullYear from './helperGetDateFullYear'\r\nimport helperGetDateMonth from './helperGetDateMonth'\r\nimport helperGetDateTime from './helperGetDateTime'\r\n\r\nimport toStringDate from './toStringDate'\r\nimport isValidDate from './isValidDate'\r\n\r\n/**\r\n * 返回前几小时或后几小时的日期\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offset 小时偏移量(默认0)、前几小时、后几小时\r\n * @param {String} mode 指定分钟(null默认当前分)、0分(first)、59分(last)\r\n * @return {Date}\r\n */\r\nfunction getWhatHours (date, offset, mode) {\r\n date = toStringDate(date)\r\n if (isValidDate(date) && !isNaN(offset)) {\r\n date.setHours(date.getHours() + staticParseInt(offset))\r\n if (mode === staticStrFirst) {\r\n return new Date(helperGetDateFullYear(date), helperGetDateMonth(date), date.getDate(), date.getHours())\r\n } else if (mode === staticStrLast) {\r\n return new Date(helperGetDateTime(getWhatHours(date, 1, staticStrFirst)) - 1)\r\n }\r\n }\r\n return date\r\n}\r\n\r\nexport default getWhatHours\r\n","import staticStrFirst from './staticStrFirst'\r\nimport staticStrLast from './staticStrLast'\r\nimport staticParseInt from './staticParseInt'\r\n\r\nimport helperGetDateFullYear from './helperGetDateFullYear'\r\nimport helperGetDateMonth from './helperGetDateMonth'\r\nimport helperGetDateTime from './helperGetDateTime'\r\n\r\nimport toStringDate from './toStringDate'\r\nimport isValidDate from './isValidDate'\r\n\r\n/**\r\n * 返回前几分钟或后几分钟的日期\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offset 分钟偏移量(默认0)、前几分钟、后几分钟\r\n * @param {String} mode 指定秒(null默认当前秒)、0秒(first)、59秒(last)\r\n * @return {Date}\r\n */\r\nfunction getWhatMinutes (date, offset, mode) {\r\n date = toStringDate(date)\r\n if (isValidDate(date) && !isNaN(offset)) {\r\n date.setMinutes(date.getMinutes() + staticParseInt(offset))\r\n if (mode === staticStrFirst) {\r\n return new Date(helperGetDateFullYear(date), helperGetDateMonth(date), date.getDate(), date.getHours(), date.getMinutes())\r\n } else if (mode === staticStrLast) {\r\n return new Date(helperGetDateTime(getWhatMinutes(date, 1, staticStrFirst)) - 1)\r\n }\r\n }\r\n return date\r\n}\r\n\r\nexport default getWhatMinutes\r\n","import staticStrFirst from './staticStrFirst'\r\nimport staticStrLast from './staticStrLast'\r\nimport staticParseInt from './staticParseInt'\r\n\r\nimport helperGetDateFullYear from './helperGetDateFullYear'\r\nimport helperGetDateMonth from './helperGetDateMonth'\r\nimport helperGetDateTime from './helperGetDateTime'\r\n\r\nimport toStringDate from './toStringDate'\r\nimport isValidDate from './isValidDate'\r\n\r\n/**\r\n * 返回前几秒或后几秒的日期\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offset 秒偏移量(默认0)、前几秒、后几秒\r\n * @param {String} mode 指定毫秒(null默认当前毫秒)、0毫秒(first)、59毫秒(last)\r\n * @return {Date}\r\n */\r\nfunction getWhatSeconds (date, offset, mode) {\r\n date = toStringDate(date)\r\n if (isValidDate(date) && !isNaN(offset)) {\r\n date.setSeconds(date.getSeconds() + staticParseInt(offset))\r\n if (mode === staticStrFirst) {\r\n return new Date(helperGetDateFullYear(date), helperGetDateMonth(date), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds())\r\n } else if (mode === staticStrLast) {\r\n return new Date(helperGetDateTime(getWhatSeconds(date, 1, staticStrFirst)) - 1)\r\n }\r\n }\r\n return date\r\n}\r\n\r\nexport default getWhatSeconds\r\n","import getWhatYear from './getWhatYear'\r\nimport toStringDate from './toStringDate'\r\n\r\nimport isValidDate from './isValidDate'\r\nimport isLeapYear from './isLeapYear'\r\n\r\n/**\r\n * 返回某个年份的天数\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offset 年(默认当年)、前几个年、后几个年\r\n * @return {Number}\r\n */\r\nfunction getDayOfYear (date, year) {\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n return isLeapYear(getWhatYear(date, year)) ? 366 : 365\r\n }\r\n return NaN\r\n}\r\n\r\nexport default getDayOfYear\r\n","import staticDayTime from './staticDayTime'\r\nimport staticStrFirst from './staticStrFirst'\r\nimport staticStrLast from './staticStrLast'\r\n\r\nimport helperGetDateTime from './helperGetDateTime'\r\n\r\nimport getWhatMonth from './getWhatMonth'\r\nimport toStringDate from './toStringDate'\r\n\r\nimport isValidDate from './isValidDate'\r\n\r\n/**\r\n * 返回某个月份的天数\r\n *\r\n * @param {Date} date 日期或数字\r\n * @param {Number} offset 月(默认当月)、前几个月、后几个月\r\n * @return {Number}\r\n */\r\nfunction getDayOfMonth (date, month) {\r\n date = toStringDate(date)\r\n if (isValidDate(date)) {\r\n return Math.floor((helperGetDateTime(getWhatMonth(date, month, staticStrLast)) - helperGetDateTime(getWhatMonth(date, month, staticStrFirst))) / staticDayTime) + 1\r\n }\r\n return NaN\r\n}\r\n\r\nexport default getDayOfMonth\r\n","import toValueString from './toValueString'\r\n\r\nimport helperStringRepeat from './helperStringRepeat'\r\n\r\n/**\r\n * 将字符串重复 n 次\r\n *\r\n * @param {String} str 字符串\r\n * @param {Number} count 次数\r\n * @return {String}\r\n */\r\nfunction repeat (str, count) {\r\n return helperStringRepeat(toValueString(str), count)\r\n}\r\n\r\nexport default repeat\r\n","import toValueString from './toValueString'\r\n\r\nimport isUndefined from './isUndefined'\r\n\r\nimport helperStringRepeat from './helperStringRepeat'\r\n\r\n/**\r\n * 用指定字符从后面开始补全字符串\r\n *\r\n * @param {String} str 字符串\r\n * @param {Number} targetLength 结果长度\r\n * @param {Number} padString 补全字符\r\n * @return {String}\r\n */\r\nfunction padEnd (str, targetLength, padString) {\r\n var rest = toValueString(str)\r\n targetLength = targetLength >> 0\r\n padString = isUndefined(padString) ? ' ' : '' + padString\r\n if (rest.padEnd) {\r\n return rest.padEnd(targetLength, padString)\r\n }\r\n if (targetLength > rest.length) {\r\n targetLength -= rest.length\r\n if (targetLength > padString.length) {\r\n padString += helperStringRepeat(padString, targetLength / padString.length)\r\n }\r\n return rest + padString.slice(0, targetLength)\r\n }\r\n return rest\r\n}\r\n\r\nexport default padEnd\r\n","import toValueString from './toValueString'\r\n\r\n/**\r\n * 判断字符串是否在源字符串的头部\r\n *\r\n * @param {String} str 字符串\r\n * @param {String/Number} val 值\r\n * @param {Number} startIndex 开始索引\r\n * @return {String}\r\n */\r\nfunction startsWith (str, val, startIndex) {\r\n var rest = toValueString(str)\r\n return (arguments.length === 1 ? rest : rest.substring(startIndex)).indexOf(val) === 0\r\n}\r\n\r\nexport default startsWith\r\n","import toValueString from './toValueString'\r\n\r\n/**\r\n * 判断字符串是否在源字符串的尾部\r\n *\r\n * @param {String} str 字符串\r\n * @param {String/Number} val 值\r\n * @param {Number} startIndex 开始索引\r\n * @return {String}\r\n */\r\nfunction endsWith (str, val, startIndex) {\r\n var rest = toValueString(str)\r\n var argsLen = arguments.length\r\n return argsLen > 1 && (argsLen > 2 ? rest.substring(0, startIndex).indexOf(val) === startIndex - 1 : rest.indexOf(val) === rest.length - 1)\r\n}\r\n\r\nexport default endsWith\r\n","import template from './template'\r\n\r\n/**\r\n * 字符串格式化占位符\r\n * @param { string } str \r\n * @param { object | any[] } obj \r\n */\r\nfunction toFormatString (str, obj) {\r\n return template(str, obj,{ tmplRE: /\\{([.\\w[\\]\\s]+)\\}/g })\r\n}\r\n\r\nexport default toFormatString\r\n","/**\r\n * 一个空的方法,始终返回 undefined,可用于初始化值\r\n */\r\nfunction noop () {}\r\n\r\nexport default noop\r\n","import slice from './slice'\r\n\r\n/**\r\n * 创建一个绑定上下文的函数\r\n *\r\n * @param {Function} callback 函数\r\n * @param {Object} context 上下文\r\n * @param {*} args 额外的参数\r\n * @return {Object}\r\n */\r\nfunction bind (callback, context) {\r\n var args = slice(arguments, 2)\r\n return function () {\r\n return callback.apply(context, slice(arguments).concat(args))\r\n }\r\n}\r\n\r\nexport default bind\r\n","import slice from './slice'\r\n\r\n/**\r\n * 创建一个只能调用一次的函数,只会返回第一次执行后的结果\r\n *\r\n * @param {Function} callback 函数\r\n * @param {Object} context 上下文\r\n * @param {*} args 额外的参数\r\n * @return {Object}\r\n */\r\nfunction once (callback, context) {\r\n var done = false\r\n var rest = null\r\n var args = slice(arguments, 2)\r\n return function () {\r\n if (done) {\r\n return rest\r\n }\r\n rest = callback.apply(context, slice(arguments).concat(args))\r\n done = true\r\n return rest\r\n }\r\n}\r\n\r\nexport default once\r\n","import slice from './slice'\r\n\r\n/**\r\n * 创建一个函数, 调用次数超过 count 次之后执行回调并将所有结果记住后返回\r\n *\r\n * @param {Number} count 调用次数\r\n * @param {Function} callback 完成回调\r\n * @return {Object}\r\n */\r\nfunction after (count, callback, context) {\r\n var runCount = 0\r\n var rests = []\r\n return function () {\r\n var args = arguments\r\n runCount++\r\n if (runCount <= count) {\r\n rests.push(args[0])\r\n }\r\n if (runCount >= count) {\r\n callback.apply(context, [rests].concat(slice(args)))\r\n }\r\n }\r\n}\r\n\r\nexport default after\r\n","import slice from './slice'\r\n\r\n/**\r\n * 创建一个函数, 调用次数不超过 count 次之前执行回调并将所有结果记住后返回\r\n *\r\n * @param {Number} count 调用次数\r\n * @param {Function} callback 完成回调\r\n * @return {Object}\r\n */\r\nfunction before (count, callback, context) {\r\n var runCount = 0\r\n var rests = []\r\n context = context || this\r\n return function () {\r\n var args = arguments\r\n runCount++\r\n if (runCount < count) {\r\n rests.push(args[0])\r\n callback.apply(context, [rests].concat(slice(args)))\r\n }\r\n }\r\n}\r\n\r\nexport default before\r\n","import assign from './assign'\r\n\r\n/**\r\n * 节流函数;当被调用 n 毫秒后才会执行,如果在这时间内又被调用则至少每隔 n 秒毫秒调用一次该函数\r\n *\r\n * @param {Function} callback 回调\r\n * @param {Number} wait 多少秒毫\r\n * @param {Object} options 参数{leading: 是否在之前执行, trailing: 是否在之后执行}\r\n * @return {Function}\r\n */\r\nfunction throttle (callback, wait, options) {\r\n var args = null\r\n var context = null\r\n var runFlag = false\r\n var timeout = null\r\n var opts = assign({ leading: true, trailing: true }, options)\r\n var optLeading = opts.leading\r\n var optTrailing = opts.trailing\r\n\r\n var gcFn = function () {\r\n args = null\r\n context = null\r\n }\r\n\r\n var runFn = function () {\r\n runFlag = true\r\n callback.apply(context, args)\r\n timeout = setTimeout(endFn, wait)\r\n gcFn()\r\n }\r\n\r\n var endFn = function () {\r\n timeout = null\r\n if (runFlag) {\r\n gcFn()\r\n return\r\n }\r\n if (optTrailing === true) {\r\n runFn()\r\n return\r\n }\r\n gcFn()\r\n }\r\n\r\n var cancelFn = function () {\r\n var rest = timeout !== null\r\n if (rest) {\r\n clearTimeout(timeout)\r\n }\r\n gcFn()\r\n timeout = null\r\n runFlag = false\r\n return rest\r\n }\r\n\r\n var throttled = function () {\r\n args = arguments\r\n context = this\r\n runFlag = false\r\n if (timeout === null && optLeading === true) {\r\n runFn()\r\n return\r\n }\r\n if (optTrailing === true) {\r\n timeout = setTimeout(endFn, wait)\r\n }\r\n }\r\n\r\n throttled.cancel = cancelFn\r\n\r\n return throttled\r\n}\r\n\r\nexport default throttle\r\n","import assign from './assign'\r\n\r\n/**\r\n * 函数去抖;当被调用 n 毫秒后才会执行,如果在这时间内又被调用则将重新计算执行时间\r\n *\r\n * @param {Function} callback 回调\r\n * @param {Number} wait 多少秒毫\r\n * @param {Object} options 参数{leading: 是否在之前执行, trailing: 是否在之后执行}\r\n * @return {Function}\r\n */\r\nfunction debounce (callback, wait, options) {\r\n var args = null\r\n var context = null\r\n var opts = typeof options === 'boolean' ? { leading: options, trailing: !options } : assign({ leading: false, trailing: true }, options)\r\n var runFlag = false\r\n var timeout = null\r\n var optLeading = opts.leading\r\n var optTrailing = opts.trailing\r\n\r\n var gcFn = function () {\r\n args = null\r\n context = null\r\n }\r\n\r\n var runFn = function () {\r\n runFlag = true\r\n callback.apply(context, args)\r\n gcFn()\r\n }\r\n\r\n var endFn = function () {\r\n if (optLeading === true) {\r\n timeout = null\r\n }\r\n if (runFlag) {\r\n gcFn()\r\n return\r\n }\r\n if (optTrailing === true) {\r\n runFn()\r\n return\r\n }\r\n gcFn()\r\n }\r\n\r\n var cancelFn = function () {\r\n var rest = timeout !== null\r\n if (rest) {\r\n clearTimeout(timeout)\r\n }\r\n gcFn()\r\n timeout = null\r\n runFlag = false\r\n return rest\r\n }\r\n\r\n var debounced = function () {\r\n runFlag = false\r\n args = arguments\r\n context = this\r\n if (timeout === null) {\r\n if (optLeading === true) {\r\n runFn()\r\n }\r\n } else {\r\n clearTimeout(timeout)\r\n }\r\n timeout = setTimeout(endFn, wait)\r\n }\r\n\r\n debounced.cancel = cancelFn\r\n\r\n return debounced\r\n}\r\n\r\nexport default debounce\r\n","import slice from './slice'\r\n\r\n/**\r\n * 该方法和 setTimeout 一样的效果,区别就是支持上下文和额外参数\r\n *\r\n * @param {Function} callback 函数\r\n * @param {Number} wait 延迟毫秒\r\n * @param {*} args 额外的参数\r\n * @return {Number}\r\n */\r\nfunction delay (callback, wait) {\r\n var args = slice(arguments, 2)\r\n var context = this\r\n return setTimeout(function () {\r\n callback.apply(context, args)\r\n }, wait)\r\n}\r\n\r\nexport default delay\r\n","import staticLocation from './staticLocation'\r\n\r\nimport helperGetLocatOrigin from './helperGetLocatOrigin'\r\n\r\nimport lastIndexOf from './lastIndexOf'\r\n\r\nfunction getBaseURL () {\r\n if (staticLocation) {\r\n var pathname = staticLocation.pathname\r\n var lastIndex = lastIndexOf(pathname, '/') + 1\r\n return helperGetLocatOrigin() + (lastIndex === pathname.length ? pathname : pathname.substring(0, lastIndex))\r\n }\r\n return ''\r\n}\r\n\r\nexport default getBaseURL\r\n","import staticLocation from './staticLocation'\r\n\r\nimport parseUrl from './parseUrl'\r\n\r\n/**\r\n * 获取地址栏信息\r\n *\r\n * @return Object\r\n */\r\nfunction locat () {\r\n return staticLocation ? parseUrl(staticLocation.href) : {}\r\n}\r\n\r\nexport default locat\r\n","/*!\r\n * decimal.js v10.6.0\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|bigint|Decimal}\r\n * max {number|string|bigint|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n // See https://github.com/MikeMcl/decimal.js/pull/217\r\n x = new Ctor(1).minus(x).div(x.plus(1)).sqrt().atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|bigint|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, -1);\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 1);\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|bigint|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|bigint|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|bigint|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` (`n` is -1) and `min` (`n` is 1).\r\n */\r\nfunction maxOrMin(Ctor, args, n) {\r\n var k, y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n\r\n // NaN?\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n }\r\n\r\n k = x.cmp(y);\r\n\r\n if (k === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// ±Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // TODO BigInt str: no need to check for decimal point, exponential form or leading zeros.\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|bigint|Decimal} The y-coordinate.\r\n * x {number|string|bigint|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * min {number|string|bigint|Decimal}\r\n * max {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|bigint|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Infinity or NaN?\r\n if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n }\r\n\r\n if (t === 'string') {\r\n if ((i = v.charCodeAt(0)) === 45) { // minus sign\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n if (i === 43) v = v.slice(1); // plus sign\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n if (t === 'bigint') {\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n }\r\n\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|bigint|Decimal} The argument of the logarithm.\r\n * y {number|string|bigint|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, -1);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 1);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} The base.\r\n * y {number|string|bigint|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n","import type { ComputedRef, MaybeRefOrGetter, Ref } from 'vue'\r\nimport { getFirstNonNullOrUndefined, kebabToCamelCase } from '@dazhicheng/utils'\r\n\r\nimport { computed, getCurrentInstance, toValue, unref, useAttrs, useSlots } from 'vue'\r\n\r\n/**\r\n * 依次从插槽、attrs、props、state 中获取值\r\n * @param key\r\n * @param props\r\n * @param state\r\n */\r\nfunction usePriorityValue<\r\n T extends Record<string, any>,\r\n S extends Record<string, any>,\r\n K extends keyof T = keyof T,\r\n>(key: K, props: T, state: Readonly<Ref<NoInfer<S>>> | undefined) {\r\n const instance = getCurrentInstance()\r\n const slots = useSlots()\r\n const attrs = useAttrs() as T\r\n\r\n const value = computed((): T[K] => {\r\n // props不管有没有传,都会有默认值,会影响这里的顺序,\r\n // 通过判断原始props是否有值来判断是否传入\r\n const rawProps = (instance?.vnode?.props || {}) as T\r\n\r\n const standardRawProps = {} as T\r\n\r\n for (const [key, value] of Object.entries(rawProps)) {\r\n standardRawProps[kebabToCamelCase(key) as K] = value\r\n }\r\n const propsKey = standardRawProps?.[key] === undefined ? undefined : props[key]\r\n\r\n // slot可以关闭\r\n return getFirstNonNullOrUndefined(\r\n slots[key as string],\r\n attrs[key],\r\n propsKey,\r\n state?.value?.[key as keyof S]\r\n ) as T[K]\r\n })\r\n\r\n return value\r\n}\r\n\r\n/**\r\n * 批量获取state中的值(每个值都是ref)\r\n * @param props\r\n * @param state\r\n */\r\nfunction usePriorityValues<\r\n T extends Record<string, any>,\r\n S extends Ref<Record<string, any>> = Readonly<Ref<NoInfer<T>, NoInfer<T>>>,\r\n>(props: T, state: S | undefined) {\r\n const result: { [K in keyof T]: ComputedRef<T[K]> } = {} as never\r\n\r\n ;(Object.keys(props) as (keyof T)[]).forEach(key => {\r\n result[key] = usePriorityValue(key as keyof typeof props, props, state)\r\n })\r\n\r\n return result\r\n}\r\n\r\n/**\r\n * 批量获取state中的值(集中在一个computed,用于透传)\r\n * @param props\r\n * @param state\r\n */\r\nfunction useForwardPriorityValues<\r\n T extends Record<string, any>,\r\n S extends Ref<Record<string, any>> = Readonly<Ref<NoInfer<T>, NoInfer<T>>>,\r\n>(props: T, state: S | undefined) {\r\n const computedResult: { [K in keyof T]: ComputedRef<T[K]> } = {} as never\r\n\r\n ;(Object.keys(props) as (keyof T)[]).forEach(key => {\r\n computedResult[key] = usePriorityValue(key as keyof typeof props, props, state)\r\n })\r\n\r\n return computed(() => {\r\n const unwrapResult: Record<string, any> = {}\r\n Object.keys(props).forEach(key => {\r\n unwrapResult[key] = unref(computedResult[key])\r\n })\r\n return unwrapResult as { [K in keyof T]: T[K] }\r\n })\r\n}\r\n\r\n/**\r\n * 将包含ComputedRef的对象转换为普通值对象\r\n * @param props - 包含ComputedRef的响应式对象\r\n * @returns 解包后的普通对象,所有值都是原始值而非响应式引用\r\n */\r\nfunction getPriorityValues<\r\n T extends Record<string, MaybeRefOrGetter<any>>,\r\n S extends {\r\n [K in keyof T]: T[K] extends MaybeRefOrGetter<infer U> ? U : T[K]\r\n },\r\n>(props: T): S {\r\n // 创建解包后的对象类型\r\n const standardProps: S = {} as never\r\n\r\n // 遍历props对象的每个键值对\r\n for (const [key, value] of Object.entries(props)) {\r\n // 使用toValue解包计算属性值,并赋值给新对象\r\n standardProps[key as keyof T] = toValue(value)\r\n }\r\n\r\n return standardProps\r\n}\r\n\r\nexport { getPriorityValues, useForwardPriorityValues, usePriorityValue, usePriorityValues }\r\n","import type { WritableComputedRef } from \"vue\";\nimport { isArray, isObject } from \"./is\";\nimport { computed } from \"vue\";\nimport XEUtils from \"xe-utils\";\n\n/**\n * 获取localStorage数据,item值非json对象,请直接localStorage.setItem\n * @param item 键名\n */\nexport function getStorage<T = any>(item: string): T | string | null {\n if (!item) return null;\n const localdata = localStorage.getItem(item);\n if (!localdata) return null;\n\n try {\n return JSON.parse(localdata, (_key, value) => {\n if (value && typeof value === \"string\") {\n const fn = function () {\n return value.replace(\"SJZY_FUNCTION\", \"\");\n };\n return value.includes(\"SJZY_FUNCTION\") ? fn() : value;\n }\n return value;\n });\n } catch {\n // console.log(error)\n return localdata;\n }\n}\n\n/**\n * @description 计算文字宽度\n */\nexport function calcWordsWidth(words: string): number {\n let wordsWidth = 0;\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n ctx.font =\n '12px -apple-system, \"blinkmacsystemfont\", \"segoe ui\", \"pingfang sc\", \"hiragino sans gb\", \"microsoft yahei\", \"helvetica neue\", \"helvetica\", \"arial\", sans-serif, \"apple color emoji\", \"segoe ui emoji\", \"segoe ui symbol\"';\n wordsWidth = ctx.measureText(words).width;\n }\n return wordsWidth;\n}\n\n/**\n * @description 脏数据检测方法\n * @param newObj 新对象\n * @param oldObj 原始对象\n * @param keyObj 对象中数组的唯一key e: { list: { key: 'id' }, list2: { key: 'id' }, }\n */\nexport function getDifference(\n newObj: { [key: string]: any },\n oldObj: { [key: string]: any },\n keyObj?: any\n): {\n [k: string]: any;\n} {\n const excludeAll = keyObj?.excludeAll || [];\n const excludeItem = keyObj?.exclude || [];\n if (!excludeAll.includes(\"Id\")) excludeAll.push(\"Id\");\n if (!excludeAll.includes(\"rowId\")) excludeAll.push(\"rowId\");\n return Object.fromEntries(\n Object.entries(newObj).reduce((r: any, [k, v]) => {\n if (excludeAll.includes(k) || excludeItem.includes(k)) return r;\n else if (v && isObject(v)) setDifferenceObj(keyObj, oldObj, v, k, r);\n else if (v && isArray(v)) setDifferenceArr(keyObj, oldObj, v, k, r);\n else setDifferenceField(keyObj, oldObj, v, k, r);\n\n return r;\n }, [])\n );\n}\n/** 脏数据检测方法--设置对象 */\nexport function setDifferenceObj(keyObj: any, oldObj: any, v: any, k: any, r: any): void {\n const temp = getDifference(v, oldObj[k] || {}, {\n excludeAll: keyObj?.excludeAll,\n ...keyObj\n });\n if (Object.keys(temp).length) r.push([k, temp]);\n}\n/** 脏数据检测方法--设置数组 */\nexport function setDifferenceArr(keyObj: any, oldObj: any, v: any[], k: any, r: any): void {\n const arr: any[] = [];\n const arrKey = (keyObj || {})[k]?.key;\n if (oldObj[k]) {\n const len: any[] = v?.length >= oldObj[k]?.length ? v : oldObj[k];\n const min: any[] = v?.length < oldObj[k]?.length ? v : oldObj[k];\n if (arrKey) {\n len.forEach(e => {\n const o = min.find((i: any) => i[arrKey] === e[arrKey]);\n if (o) {\n const t = getDifference(e, o, {\n excludeAll: keyObj?.excludeAll,\n ...keyObj[k]\n });\n if (Object.keys(t).length) arr.push({ [arrKey]: o[arrKey], ...t });\n } else {\n arr.push(e);\n }\n });\n } else {\n len.forEach((e, index) => {\n const o = min[index];\n if ((isObject(e) && !isObject(o)) || (isArray(e) && !isArray(o)) || typeof e !== typeof o || !o) {\n arr.push(e);\n } else if (isObject(e) || isArray(e)) {\n const t = getDifference(e, o, { excludeAll: keyObj?.excludeAll });\n if (Object.keys(t).length) arr.push({ ...t });\n } else if (e !== o) {\n arr.push(e);\n }\n });\n }\n } else {\n arr.push(...v);\n }\n\n if (arr.length) r.push([k, arr]);\n}\n/** 脏数据检测方法--设置普通字段 */\nexport function setDifferenceField(keyObj: any, oldObj: any, v: any[], k: any, r: any): void {\n const notNullToFalse = keyObj?.notNullToFalse || [];\n if (\n (typeof v === \"string\" && typeof oldObj[k] === \"number\") ||\n (typeof v === \"number\" && typeof oldObj[k] === \"string\")\n ) {\n if (Number(v) !== Number(oldObj[k])) r.push([k, v]);\n } else if ([undefined, null, \"\"].includes(v as any)) {\n if (![undefined, null, \"\"].includes(oldObj[k] as any)) r.push([k, v]);\n } else if (v !== oldObj[k]) {\n if ((v as any) === false && [undefined, null, \"\"].includes(oldObj[k] as any) && !notNullToFalse.includes(k)) {\n return;\n }\n r.push([k, v]);\n }\n}\n\nexport function deepMerge<T = any>(src: any = {}, target: any = {}): T {\n let key: string;\n for (key in target) src[key] = isObject(src[key]) ? deepMerge(src[key], target[key]) : (src[key] = target[key]);\n\n return src;\n}\n\nexport function toCssUnit(val?: number | string, unit = \"px\"): string {\n if (XEUtils.isNumber(val) || /^\\d+$/.test(`${val}`)) {\n return `${val}${unit}`;\n }\n return `${val || \"\"}`;\n}\n/** 响应式绑定 */\nexport function useVModel(props: Record<string, any>, propName: string, emit: any): WritableComputedRef<any, any> {\n // console.log(props[propName], '------------')\n return computed({\n get() {\n return new Proxy(props[propName], {\n set(obj, name, val) {\n emit(`update:${propName}`, {\n ...obj,\n [name]: val\n });\n return true;\n }\n });\n },\n set(value) {\n emit(`update:${propName}`, value);\n }\n });\n}\n\nexport function bindMethods<T extends object>(instance: T): T {\n const proto = Object.getPrototypeOf(instance)\n if (!proto || proto === Object.prototype) {\n return instance\n }\n\n const propertyNames = Object.getOwnPropertyNames(proto)\n for (const name of propertyNames) {\n const value = (instance as any)[name]\n if (name !== 'constructor' && typeof value === 'function') {\n (instance as any)[name] = value.bind(instance)\n }\n }\n\n return instance\n}\n\nexport function deepCopy<T>(obj: T): T {\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n if (obj instanceof Date) {\n return new Date(obj.getTime()) as any\n }\n\n if (obj instanceof RegExp) {\n return new RegExp(obj) as any\n }\n\n if (Array.isArray(obj)) {\n return obj.map(item => deepCopy(item)) as any\n }\n\n const result: any = {}\n Object.keys(obj).forEach(key => {\n result[key] = deepCopy((obj as any)[key])\n })\n\n return result\n}\n\nexport function arrayToTree(items: any[], id = \"id\", parentId = \"parentId\", children = \"children\"): any[] {\n const itemMap = new Map();\n const result: any[] = [];\n\n items.forEach(item => {\n itemMap.set(item[id], { ...item, [children]: [] });\n });\n\n items.forEach(item => {\n const currentItem = itemMap.get(item[id]);\n if (item[parentId]) {\n const parentItem = itemMap.get(item[parentId]);\n if (parentItem) parentItem[children].push(currentItem);\n } else {\n result.push(currentItem);\n }\n });\n\n return result;\n}\n\nexport function getFirstNonNullOrUndefined(...args: any[]): any {\n for (const arg of args) {\n if (arg !== undefined && arg !== null) {\n return arg\n }\n }\n return undefined\n}\n\n\n\n","/**\r\n * 判断对象中是否包含该属性\r\n * @param key 键\r\n * @param object 对象\r\n * @returns 是否包含\r\n */\r\nexport function isValidKey(\r\n key: string | number | symbol,\r\n object: object\r\n): key is keyof typeof object {\r\n return key in object\r\n}\r\n\r\n/**\r\n * 深拷贝\r\n * 兼容函数,对象,相互引用场景\r\n * @param target 需要深拷贝的原对象\r\n * @return 深拷贝后的对象\r\n */\r\nexport function deepCopy<T>(target: T, map = new Map()) {\r\n if (target !== null && typeof target === 'object') {\r\n let res = map.get(target)\r\n if (res) return res\r\n if (Array.isArray(target)) {\r\n res = []\r\n map.set(target, res)\r\n target.forEach((item, index) => {\r\n res[index] = deepCopy(item, map)\r\n })\r\n } else {\r\n res = {}\r\n map.set(target, res)\r\n Object.keys(target).forEach(key => {\r\n if (isValidKey(key, target)) res[key] = deepCopy(target[key], map)\r\n })\r\n }\r\n return res\r\n }\r\n return target\r\n}\r\n\r\n\r\n/**\r\n * 获取第一个非 null 和非 undefined 的值\r\n * @description 从传入的多个值中返回第一个既不是 null 也不是 undefined 的值\r\n * @template T 返回值类型\r\n * @param args 要检查的值数组\r\n * @returns 第一个非 null 和非 undefined 的值,如果都是 null 或 undefined 则返回 undefined\r\n *\r\n * @example\r\n * getFirstNonNullOrUndefined(null, undefined, 1, 2) // 返回 1\r\n * getFirstNonNullOrUndefined(null, undefined) // 返回 undefined\r\n * getFirstNonNullOrUndefined('', null, 'test') // 返回 ''\r\n */\r\nexport function getFirstNonNullOrUndefined(...args: any[]): any {\r\n for (const value of args) {\r\n if (value !== undefined && value !== null) {\r\n return value\r\n }\r\n }\r\n return undefined\r\n}\r\n\r\n\r\n/**\r\n * 将短横线命名转换为驼峰命名\r\n * @description 将形如 'my-component-name' 的短横线命名法转换为 'myComponentName' 的驼峰命名法\r\n * @param str 要转换的短横线命名字符串\r\n * @returns 转换后的驼峰命名字符串\r\n *\r\n * @example\r\n * kebabToCamelCase('my-component') // 返回 'myComponent'\r\n * kebabToCamelCase('my--component') // 返回 'myComponent'\r\n * kebabToCamelCase('-my-component-') // 返回 'myComponent'\r\n */\r\nexport function kebabToCamelCase(str: string): string {\r\n return str\r\n .split('-')\r\n .filter(Boolean)\r\n .map((word, index) => (index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1)))\r\n .join('')\r\n}","import type { Ref } from 'vue'\r\nimport { ref } from 'vue'\r\n\r\nexport function useIsScroll(): {\r\n hasScrollbar: Ref<boolean>\r\n update: (elementRef: Ref<HTMLDivElement>) => void\r\n} {\r\n const hasScrollbar = ref(false)\r\n\r\n const update = (elementRef: Ref<HTMLDivElement>): void => {\r\n if (!elementRef.value) return\r\n const element = elementRef.value\r\n hasScrollbar.value = element.scrollHeight > element.clientHeight\r\n }\r\n\r\n return { hasScrollbar, update }\r\n}\r\n"],"names":["isObject","o","Object","prototype","toString","call","isPlainObject","ctor","prot","undefined","constructor","hasOwnProperty","e","silent","logLevel","n","defineProperty","s","Array","isArray","t","r","i","_vueTypes_name","value","writable","def","this","default","concat","assign","isRequired","get","required","validate","validator","defineProperties","y","g","p","type","h","v","O","j","T","a","u","defaults","A","D","any","func","Function","bool","Boolean","string","String","number","Number","array","object","symbol","integer","nullable","extend","forEach","name","getter","sensibleDefaults","config","oneOf","custom","instanceOf","oneOfType","arrayOf","objectOf","shape","utils","toType","process","env","NODE_ENV","console","warn","V","propTypes","VueTypes","style","VNodeChild","useDesign","scope","values","prefixCls","prefixVar","kebabToCamelCase","str","replace","_","c","toUpperCase","ApiStatus","HttpMsg","f","d","l","$","M","weekdays","split","months","ordinal","m","length","join","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","w","ms","Q","toLowerCase","S","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","parse","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","$i","isDayjs","en","Ls","setupDefaults","keyId","cookies","path","treeOptions","parentKey","key","children","parseDateFormat","firstDayOfWeek","arrayEach","list","iterate","context","index","len","objectToString","helperCreateInInObjectString","obj","hasOwnProp","objectEach","each","helperCreateInTypeof","isFunction","helperCreateGetObjects","getIndex","proMethod","result","push","keys","getCativeCtor","val","Ctor","__proto__","handleValueClone","item","isDeep","copyValue","restObj","create","getPrototypeOf","restArr","restSet","restMap","deep","objectAssignFns","handleAssign","destination","isClone","source","target","XEUtils","setConfig","options","version","lastArrayEach","lastObjectEach","isNull","property","defs","helperCheckCopyKey","handleMerge","VERSION","mixin","methods","fn","$context","setup","getConfig","map","helperCreateIterateHandle","prop","useArray","restIndex","matchValue","defaultValue","some","every","includes","includeArrays","array1","array2","uniq","valMap","toArray","staticStrUndefined","isUndefined","eqNull","staticHGKeyRE","helperGetHGSKeys","splice","rest","props","getDeepProps","getValueByPath","matchs","handleSort","v1","v2","localeCompare","buildMultiOrders","confs","compares","item1","item2","order","orderBy","arr","fieldConfs","sort","data","sortConfs","handle","field","getSortConfs","sortBy","random","minVal","maxVal","shuffle","helperCreateToNumber","num","isNaN","toNumber","parseFloat","startIndex","endIndex","argsSize","findKey","find","pluck","helperCreateMinMax","itemIndex","itemVal","max","unzip","arrays","maxItem","flattenDeep","vals","helperLog","msg","log","helperDeleteProperty","lastEach","clear","assigns","isDefs","extds","remove","removeKeys","unTreeList","parentItem","opts","optKey","optParentKey","optChildren","optData","optUpdated","updated","optClear","childList","helperCreateTreeFunc","findTree","findTreeItem","parent","node","parseChildren","paths","nodes","items","eachTree","eachTreeItem","mapTree","mapTreeItem","mapChildren","searchTreeItem","matchParent","isMatch","hasChild","rests","hasOriginal","original","sourceData","isEvery","searchTree","arrayIndexOf","indexOf","arrayLastIndexOf","lastIndexOf","isNumber","isString","isDate","staticParseInt","parseInt","helperGetUTCDateTime","resMaps","H","helperGetDateTime","getParseRule","txt","toParseNum","d2","d1or2","d1or7","d3or4","place","d1Or2RE","dzZ","defaulParseStrs","defaulParseREs","rule","RegExp","customParseStrs","parseRuleMaps","parseRuleKeys","itemRule","customParseRes","cacheFormatMaps","toStringDate","isDType","cacheItem","posIndexs","re","text","firstChar","charAt","_i","_r","matchRest","parseCustomRules","dfrLen","Z","parseDefaultRules","parseTimeZone","helperNewDate","isLeapYear","currentDate","helperCreateIndexOf","callback","getSize","isInteger","isBoolean","isRegExp","isError","isEmpty","supportSymbol","Symbol","isSymbol","isArguments","staticDocument","document","staticWindow","window","supportFormData","FormData","supportMap","Map","supportWeakMap","WeakMap","supportSet","Set","supportWeakSet","WeakSet","helperCreateiterateIndexOf","findIndexOf","helperEqualCompare","val1","val2","compare","obj1","obj2","val1Keys","val2Keys","isObj1Arr","isObj2Arr","helperDefaultCompare","isEqual","findLastIndexOf","entries","helperCreatePickOmit","case1","case2","pick","omit","sKeyRE","setDeepProps","isEnd","nextKey","currMatchs","nextMatchs","isPrototypePolluted","groupBy","groupKey","createiterateEmpty","range","start","stop","step","helperNumberDecimal","numStr","helperStringRepeat","count","repeat","helperNumberOffsetPoint","offsetIndex","toNumberString","scienceMatchs","absFlag","intNumStr","dIntNumStr","dFloatNumStr","sciencFlag","scienceNumStr","floatOffsetIndex","intOffsetIndex","dIntOffsetIndex","helperMultiply","multiplier","multiplicand","str1","str2","pow","helperCreateMathNumber","digits","numRest","nums","intStr","floatStr","fStr","subRest","ratio","toValueString","toFixed","digitOffsetIndex","toInteger","multiply","num1","num2","helperNumberAdd","addend","augend","helperNumberDivide","divisor","dividend","divisorDecimal","powY","isMinus","sum","staticStrFirst","staticStrLast","helperGetDateFullYear","staticDayTime","helperGetDateMonth","isValidDate","getWhatMonth","offsetMonth","offsetDay","monthNum","setDate","currDate","setMonth","getWhatYear","offset","setFullYear","staticWeekTime","getWhatWeek","offsetWeek","firstDay","hasCustomDay","hasStartDay","whatDayTime","viewStartDay","currentDay","customDay","offsetNum","getWhatDay","mode","helperStringUpperCase","nextStartMaps","day","matchWeekStartDay","time","helperCreateGetDateWeek","getStartDate","checkCrossDate","targetDate","tempTime","targetWeekStartDate","firstDate","firstTime","targetWeekStartTime","targetWeekEndTime","targetWeekEndDate","firstWeekStartDate","firstWeekStartTime","firstWeekEndTime","firstWeekEndDate","getYearWeek","date1","date2","helperGetYMDTime","helperGetYMD","getYearDay","padStart","targetLength","padString","handleCustomTemplate","formats","dateFormatRE","toDateString","formatString","hours","apm","parseDateRules","formatStringMatchs","fy","fM","fd","fH","fh","fm","fs","fS","fZ","zoneHours","fW","fD","parseDates","yyyy","yy","MM","dd","HH","hh","mm","ss","SSS","ZZ","WW","W","DDD","E","q","skip","now","getMonthWeek","dateDiffRules","trimRight","trimLeft","trim","staticEscapeMap","helperFormatEscaper","dataMap","replaceRegexp","escape","unescapeMap","unescape","helperStringSubstring","end","helperStringLowerCase","camelCacheMaps","kebabCacheMaps","template","tmplRE","staticDecodeURIComponent","decodeURIComponent","unserialize","param","staticEncodeURIComponent","encodeURIComponent","stringifyParams","resultVal","resultKey","isArr","_arr","staticLocation","location","helperGetLocatOrigin","origin","protocol","host","parseURLQuery","uri","parseUrl","url","hashs","portText","searchs","parsed","href","hash","hostname","port","search","pathname","hashKey","hashQuery","searchQuery","toCookieUnitTime","unit","expires","nowdate","toCookieUTCString","cookie","keyIndex","inserts","JSON","stringify","getCookieItem","setCookieItem","removeCookieItem","cookieKeys","isBrowseStorage","storage","testKey","setItem","removeItem","isBrowseType","navigator","userAgent","has","getItem","getJSON","objectMap","merge","union","sample","filter","findLast","reduce","initialValue","reduceMethod","previous","isInitialVal","keyList","copyWithin","replaceIndex","replaceArray","targetIndex","chunk","size","arrLen","zip","zipObject","flatten","invoke","params","deepGetObj","toArrayTree","id","treeData","parentId","optStrict","strict","optMapChildren","optSortKey","sortKey","optReverse","reverse","treeMaps","idsMap","strictTree","toTreeArray","filterTree","isFinite","isFloat","isTypeError","TypeError","isElement","nodeName","nodeType","isDocument","isWindow","isFormData","isMap","isWeakMap","isSet","isWeakSet","objKeys","sourceKeys","key2","key1","isEqualWith","getType","uniqueId","prefix","toStringJSON","toJSONString","first","last","forOf","lastForOf","arrIndex","objProp","isHas","countBy","destructuring","sources","restKeys","commafy","isNegative","commafyOptions","optDigits","spaceNumber","separator","subtrahend","minuend","digit1","digit2","divide","mean","timestamp","isDateSame","getWhatQuarter","currMonth","monthOffset","getQuarterNumber","getWhatHours","setHours","getWhatMinutes","setMinutes","getWhatSeconds","setSeconds","getDayOfYear","getDayOfMonth","getDateDiff","startDate","endDate","startTime","endTime","diffTime","done","status","camelCase","strLen","flag","upper","upperLen","kebabCase","prevLower","nextLower","padEnd","startsWith","endsWith","argsLen","toFormatString","noop","bind","once","after","runCount","before","throttle","wait","runFlag","timeout","leading","trailing","optLeading","optTrailing","gcFn","runFn","setTimeout","endFn","throttled","cancel","clearTimeout","debounce","debounced","delay","serialize","query","getBaseURL","lastIndex","locat","browse","$body","isChrome","isEdge","isMobile","isLocalStorage","isSessionStorage","isNode","isPC","isDoc","body","documentElement","core","localStorage","sessionStorage","edge","firefox","msie","safari","inexact","quadrant","EXP_LIMIT","MAX_DIGITS","NUMERALS","LN10","PI","DEFAULTS","precision","rounding","modulo","toExpNeg","toExpPos","minE","maxE","crypto","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","tag","mathfloor","mathpow","isBinary","isHex","isOctal","isDecimal","BASE","LN10_PRECISION","PI_PRECISION","P","toStringTag","digitsToString","ws","indexOfLastWord","getZeroString","checkInt32","Error","checkRoundingDigits","rm","repeating","di","rd","convertBase","baseIn","baseOut","arrL","strL","absoluteValue","finalise","clampedTo","clamp","gt","cmp","comparedTo","xdL","ydL","xd","yd","xs","ys","cosine","cos","pr","sd","isZero","tinyPow","taylorSeries","times","cos2x","minus","plus","toLessThanHalfPi","neg","cubeRoot","cbrt","rep","t3","t3plusx","toExponential","eq","decimalPlaces","dp","dividedBy","div","dividedToIntegerBy","divToInt","equals","greaterThan","greaterThanOrEqualTo","gte","hyperbolicCosine","cosh","one","cosh2_x","d8","hyperbolicSine","sinh","sqrt","sinh2_x","d5","d16","d20","hyperbolicTangent","tanh","inverseCosine","acos","isNeg","getPi","atan","inverseHyperbolicCosine","acosh","lte","ln","inverseHyperbolicSine","asinh","inverseHyperbolicTangent","atanh","wpr","xsd","inverseSine","asin","halfPi","inverseTangent","px","x2","isInt","isPositive","isPos","lessThan","lt","lessThanOrEqualTo","logarithm","base","isBase10","denominator","inf","arg","naturalLogarithm","getLn10","sub","xe","xLTy","pop","shift","getBase10Exponent","mod","naturalExponential","exp","negated","carry","unshift","getPrecision","sine","sin","sin2_x","squareRoot","tangent","tan","mul","rL","toBinary","toStringBinary","toDecimalPlaces","toDP","finiteToString","toFraction","maxD","d0","d1","n0","n1","toHexadecimal","toHex","toNearest","toOctal","toPower","yn","intPow","toPrecision","toSignificantDigits","toSD","truncated","trunc","multiplyInteger","temp","aL","bL","logBase","more","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","sign","isTruncated","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","guard","c0","numerator","x1","parseDecimal","charCodeAt","parseOther","Decimal","isHyperbolic","pi","atan2","useDefaults","ps","getRandomValues","randomBytes","hypot","isDecimalInstance","log2","log10","Uint32Array","copy","for","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","usePriorityValue","state","instance","getCurrentInstance","slots","useSlots","attrs","useAttrs","computed","rawProps","vnode","standardRawProps","propsKey","getFirstNonNullOrUndefined","usePriorityValues","getPriorityValues","standardProps","toValue","isValidKey","deepCopy","res","useIsScroll","hasScrollbar","ref","update","elementRef","element","scrollHeight","clientHeight"],"mappings":"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","x_google_ignoreList":[0,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234]}
|