@dazhicheng/utils 1.0.8 → 1.3.2
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 +8 -14446
- package/dist/index.esm.js.map +1 -1
- package/package.json +7 -3
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/string.ts","../src/file.ts","../src/axios/status.ts","../src/axios/error.ts","../src/axios/loadinSvg.ts","../src/axios/loading.ts","../src/axios/index.ts","../src/install.ts","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/dayjs.min.js","../src/is.ts","../src/testid-helper.ts","../../../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/objectMap.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/union.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/sample.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/filter.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/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/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/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/flatten.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/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/toArrayTree.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/filterTree.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/isNaN.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/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/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/isFinite.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/isFloat.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/isTypeError.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/isElement.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/isDocument.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/isWindow.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/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/findLastIndexOf.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/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/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/has.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/countBy.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/destructuring.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/commafy.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/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/helperNumberDivide.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/sum.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/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/getWhatQuarter.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/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/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/helperGetYMD.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/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/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/getMonthWeek.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/getDateDiff.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/repeat.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/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/template.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/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/getBaseURL.js","../../../node_modules/.pnpm/xe-utils@4.0.0/node_modules/xe-utils/es/locat.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/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/klona@2.0.6/node_modules/klona/full/index.mjs","../src/tool.ts","../../../node_modules/.pnpm/defu@6.1.4/node_modules/defu/dist/defu.mjs","../src/merge.ts","../../../node_modules/.pnpm/decimal.js@10.6.0/node_modules/decimal.js/decimal.mjs","../src/calc.ts","../src/stateHandler.ts"],"sourcesContent":["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 * @param res 响应 { data: Blob, ... }\r\n * @param type 类型\r\n */\r\n\r\ninterface HttpResponse<T> {\r\n data: T;\r\n headers: Record<string, string>;\r\n status: number;\r\n statusText: string;\r\n}\r\nexport const downloadFile = (res: HttpResponse<Blob>, type: string) => {\r\n try {\r\n // 创建blob对象,解析流数据\r\n const blob = new Blob([res.data], {\r\n type\r\n });\r\n const a = document.createElement(\"a\");\r\n const URL = window.URL || window.webkitURL;\r\n const herf = URL.createObjectURL(blob);\r\n a.href = herf;\r\n const contentDisposition: string[] = (res.headers[\"content-disposition\"] || \"\").split(\"=\") || [];\r\n let fileName = contentDisposition.at(-1) || \"\";\r\n fileName = fileName ? decodeURI(fileName.replace(/\"/g, \"\")) : \"\";\r\n const decodedParts = fileName?.split(\"''\");\r\n fileName = decodedParts.at(-1) || \"\";\r\n a.download = fileName;\r\n a.style.display = \"none\";\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n window.URL.revokeObjectURL(herf);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\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","/**\r\n * HTTP 错误处理模块\r\n *\r\n * 提供统一的 HTTP 请求错误处理机制\r\n *\r\n * ## 主要功能\r\n *\r\n * - 自定义 HttpError 错误类,封装错误信息、状态码、时间戳等\r\n * - 错误拦截和转换,将 Axios 错误转换为标准的 HttpError\r\n * - 错误消息国际化处理,根据状态码返回对应的多语言错误提示\r\n * - 错误日志记录,便于问题追踪和调试\r\n * - 错误和成功消息的统一展示\r\n * - 类型守卫函数,用于判断错误类型\r\n *\r\n * ## 使用场景\r\n *\r\n * - HTTP 请求拦截器中统一处理错误\r\n * - 业务代码中捕获和处理特定错误\r\n * - 错误日志收集和上报\r\n *\r\n * @module utils/http/error\r\n * @author Art Design Pro Team\r\n */\r\nimport { AxiosError } from \"axios\";\r\nimport { ApiStatus, HttpMsg } from \"./status\";\r\nimport { ElMessage } from \"element-plus\";\r\n\r\n// 错误响应接口\r\nexport interface ErrorResponse {\r\n /** 错误状态码 */\r\n code: number;\r\n /** 错误消息 */\r\n msg: string;\r\n /** 错误附加数据 */\r\n data?: unknown;\r\n}\r\n\r\n// 错误日志数据接口\r\nexport interface ErrorLogData {\r\n /** 错误状态码 */\r\n code: number;\r\n /** 错误消息 */\r\n message: string;\r\n /** 错误附加数据 */\r\n data?: unknown;\r\n /** 错误发生时间戳 */\r\n timestamp: string;\r\n /** 请求 URL */\r\n url?: string;\r\n /** 请求方法 */\r\n method?: string;\r\n /** 错误堆栈信息 */\r\n stack?: string;\r\n}\r\n\r\n// 自定义 HttpError 类\r\nexport class HttpError extends Error {\r\n public readonly code: number;\r\n public readonly data?: unknown;\r\n public readonly timestamp: string;\r\n public readonly url?: string;\r\n public readonly method?: string;\r\n\r\n constructor(\r\n message: string,\r\n code: number,\r\n options?: {\r\n data?: unknown;\r\n url?: string;\r\n method?: string;\r\n }\r\n ) {\r\n super(message);\r\n this.name = \"HttpError\";\r\n this.code = code;\r\n this.data = options?.data;\r\n this.timestamp = new Date().toISOString();\r\n this.url = options?.url || \"\";\r\n this.method = options?.method || \"\";\r\n }\r\n\r\n public toLogData(): ErrorLogData {\r\n return {\r\n code: this.code,\r\n message: this.message,\r\n data: this.data,\r\n timestamp: this.timestamp,\r\n url: this.url || \"\",\r\n method: this.method || \"\",\r\n stack: this.stack || \"\"\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * 获取错误消息\r\n * @param status 错误状态码\r\n * @returns 错误消息\r\n */\r\nconst getErrorMessage = (status: number): string => {\r\n const errorMap: Record<number, string> = {\r\n [ApiStatus.unauthorized]: HttpMsg.unauthorized,\r\n [ApiStatus.forbidden]: HttpMsg.forbidden,\r\n [ApiStatus.notFound]: HttpMsg.notFound,\r\n [ApiStatus.methodNotAllowed]: HttpMsg.methodNotAllowed,\r\n [ApiStatus.requestTimeout]: HttpMsg.requestTimeout,\r\n [ApiStatus.internalServerError]: HttpMsg.internalServerError,\r\n [ApiStatus.badGateway]: HttpMsg.badGateway,\r\n [ApiStatus.serviceUnavailable]: HttpMsg.serviceUnavailable,\r\n [ApiStatus.gatewayTimeout]: HttpMsg.gatewayTimeout\r\n };\r\n\r\n return errorMap[status] || HttpMsg.internalServerError;\r\n};\r\n\r\n/**\r\n * 处理错误\r\n * @param error 错误对象\r\n * @returns 错误对象\r\n */\r\nexport function handleError(error: AxiosError<ErrorResponse>): never {\r\n // 处理取消的请求\r\n if (error.code === \"ERR_CANCELED\") {\r\n console.warn(\"Request cancelled:\", error.message);\r\n throw new HttpError(HttpMsg.requestCancelled, ApiStatus.error);\r\n }\r\n\r\n const statusCode = error.response?.status;\r\n const errorMessage = error.response?.data?.msg || error.message;\r\n const requestConfig = error.config;\r\n\r\n // 处理网络错误\r\n if (!error.response) {\r\n throw new HttpError(HttpMsg.networkError, ApiStatus.error, {\r\n url: requestConfig?.url || \"\",\r\n method: requestConfig?.method?.toUpperCase() || \"\"\r\n });\r\n }\r\n\r\n // 处理 HTTP 状态码错误\r\n const message = statusCode ? getErrorMessage(statusCode) : errorMessage || HttpMsg.requestFailed;\r\n throw new HttpError(message, statusCode || ApiStatus.error, {\r\n data: error.response.data,\r\n url: requestConfig?.url || \"\",\r\n method: requestConfig?.method?.toUpperCase() || \"\"\r\n });\r\n}\r\n\r\n/**\r\n * 显示错误消息\r\n * @param error 错误对象\r\n * @param showMessage 是否显示错误消息\r\n */\r\nexport function showError(error: HttpError, showMessage: boolean = true): void {\r\n if (showMessage) {\r\n ElMessage.error(error.message);\r\n }\r\n // 记录错误日志\r\n console.error(\"[HTTP Error]\", error.toLogData());\r\n}\r\n\r\n/**\r\n * 显示成功消息\r\n * @param message 成功消息\r\n * @param showMessage 是否显示消息\r\n */\r\nexport function showSuccess(message: string, showMessage: boolean = true): void {\r\n if (showMessage) {\r\n ElMessage.success(message);\r\n }\r\n}\r\n\r\n/**\r\n * 判断是否为 HttpError 类型\r\n * @param error 错误对象\r\n * @returns 是否为 HttpError 类型\r\n */\r\nexport const isHttpError = (error: unknown): error is HttpError => {\r\n return error instanceof HttpError;\r\n};\r\n","// 自定义四点旋转SVG\r\nexport const fourDotsSpinnerSvg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\r\n <style>\r\n .spinner {\r\n transform-origin: 20px 20px;\r\n animation: rotate 1.6s linear infinite;\r\n }\r\n .dot {\r\n fill: var(--theme-color);\r\n animation: fade 1.6s infinite;\r\n }\r\n .dot:nth-child(1) { animation-delay: 0s; }\r\n .dot:nth-child(2) { animation-delay: 0.5s; }\r\n .dot:nth-child(3) { animation-delay: 1s; }\r\n .dot:nth-child(4) { animation-delay: 1.5s; }\r\n @keyframes rotate {\r\n 100% { transform: rotate(360deg); }\r\n }\r\n @keyframes fade {\r\n 0%, 100% { opacity: 1; }\r\n 50% { opacity: 0.5; }\r\n }\r\n </style>\r\n <g class=\"spinner\">\r\n <circle class=\"dot\" cx=\"20\" cy=\"8\" r=\"4\"/>\r\n <circle class=\"dot\" cx=\"32\" cy=\"20\" r=\"4\"/>\r\n <circle class=\"dot\" cx=\"20\" cy=\"32\" r=\"4\"/>\r\n <circle class=\"dot\" cx=\"8\" cy=\"20\" r=\"4\"/>\r\n </g>\r\n </svg>\r\n`;\r\n","/**\r\n * 全局 Loading 加载管理模块\r\n *\r\n * 提供统一的全屏加载动画管理\r\n *\r\n * ## 主要功能\r\n *\r\n * - 全屏 Loading 显示和隐藏\r\n * - 自动适配明暗主题背景色\r\n * - 自定义 SVG 加载动画\r\n * - 单例模式防止重复创建\r\n * - 锁定页面交互\r\n *\r\n * ## 使用场景\r\n *\r\n * - 页面初始化加载\r\n * - 大量数据请求\r\n * - 路由切换过渡\r\n * - 异步操作等待\r\n *\r\n * ## 特性\r\n *\r\n * - 自动检测当前主题并应用对应背景色\r\n * - 使用自定义 SVG 动画(四点旋转)\r\n * - 单例模式确保同时只有一个 Loading\r\n * - 提供便捷的显示/隐藏方法\r\n *\r\n * @module utils/ui/loading\r\n * @author Art Design Pro Team\r\n */\r\nimport { fourDotsSpinnerSvg } from \"./loadinSvg\";\r\nimport { ElLoading } from \"element-plus\";\r\n/**\r\n * 获取当前主题对应的loading背景色\r\n * @returns 背景色字符串\r\n */\r\nconst getLoadingBackground = (): string => {\r\n const isDark = document.documentElement.classList.contains(\"dark\");\r\n return isDark ? \"rgba(7, 7, 7, 0.85)\" : \"rgba(255, 255, 255, 0.5)\";\r\n};\r\n\r\nconst DEFAULT_LOADING_CONFIG = {\r\n lock: true,\r\n get background() {\r\n return getLoadingBackground();\r\n },\r\n svg: fourDotsSpinnerSvg,\r\n svgViewBox: \"0 0 40 40\",\r\n customClass: \"art-loading-fix\"\r\n} as const;\r\n\r\ninterface LoadingInstance {\r\n close: () => void;\r\n}\r\n\r\nlet loadingInstance: LoadingInstance | null = null;\r\n\r\nexport const loadingService = {\r\n /**\r\n * 显示 loading\r\n * @returns 关闭 loading 的函数\r\n */\r\n showLoading(): () => void {\r\n if (!loadingInstance) {\r\n // 每次显示时获取最新的配置,确保背景色与当前主题同步\r\n const config = {\r\n ...DEFAULT_LOADING_CONFIG,\r\n background: getLoadingBackground()\r\n };\r\n loadingInstance = ElLoading.service(config);\r\n }\r\n return () => this.hideLoading();\r\n },\r\n\r\n /**\r\n * 隐藏 loading\r\n */\r\n hideLoading(): void {\r\n if (loadingInstance) {\r\n loadingInstance.close();\r\n loadingInstance = null;\r\n }\r\n }\r\n};\r\n","import axios, { AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from \"axios\";\r\nimport { HttpError, handleError, showError, showSuccess } from \"./error\";\r\nimport { ApiStatus, HttpMsg } from \"./status\";\r\nimport { BaseResponse, TtHttpReturnType } from \"./type\";\r\nimport { downloadFile } from \"../file\";\r\nimport { nextTick } from \"vue\";\r\nimport { loadingService } from \"./loading\";\r\n\r\n// 需要传入\r\n// router useUserStore closeLoading startLoading VITE_API_URL VITE_WITH_CREDENTIALS\r\n/** 退出登录函数 */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport function TtHttp(config: any): TtHttpReturnType {\r\n const { router, useUserStore, VITE_API_URL, VITE_WITH_CREDENTIALS } = config;\r\n\r\n // 跟踪是否需要关闭 loading\r\n let pendingLoading = false;\r\n function closeLoading(): void {\r\n if (pendingLoading) {\r\n nextTick(() => {\r\n loadingService.hideLoading();\r\n pendingLoading = false;\r\n });\r\n }\r\n }\r\n /** 开始 loading 效果 */\r\n function startLoading(): void {\r\n pendingLoading = true;\r\n loadingService.showLoading();\r\n }\r\n // 文件类型\r\n const FILE_TYPES = [\r\n \"image/jpeg\",\r\n \"image/png\",\r\n \"image/gif\",\r\n \"image/webp\",\r\n \"image/svg+xml\",\r\n \"application/pdf\",\r\n \"application/msword\",\r\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\r\n \"application/vnd.ms-excel\",\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8\"\r\n ];\r\n\r\n /** 请求配置常量 */\r\n const REQUEST_TIMEOUT = 1000 * 60;\r\n const LOGOUT_DELAY = 500;\r\n const MAX_RETRIES = 0;\r\n const RETRY_DELAY = 1000;\r\n const UNAUTHORIZED_DEBOUNCE_TIME = 3000;\r\n\r\n let activeRequests = 0;\r\n function debuncesLoading() {\r\n setTimeout(() => {\r\n activeRequests--;\r\n if (activeRequests === 0) {\r\n closeLoading();\r\n }\r\n }, 0);\r\n }\r\n\r\n /** 401防抖状态 */\r\n let isUnauthorizedErrorShown = false;\r\n let unauthorizedTimer: NodeJS.Timeout | null = null;\r\n\r\n /** 扩展 AxiosRequestConfig */\r\n interface ExtendedAxiosRequestConfig extends AxiosRequestConfig {\r\n showErrorMessage?: boolean;\r\n showSuccessMessage?: boolean;\r\n hideLoading?: boolean;\r\n }\r\n\r\n /** Axios实例 */\r\n const axiosInstance = axios.create({\r\n timeout: REQUEST_TIMEOUT,\r\n baseURL: \"/\" + VITE_API_URL,\r\n withCredentials: VITE_WITH_CREDENTIALS === \"true\",\r\n validateStatus: status => status >= 200 && status < 300,\r\n transformResponse: [\r\n (data, headers) => {\r\n const contentType = headers[\"content-type\"];\r\n if (contentType?.includes(\"application/json\")) {\r\n try {\r\n return JSON.parse(data);\r\n } catch {\r\n return data;\r\n }\r\n }\r\n return data;\r\n }\r\n ]\r\n });\r\n\r\n /** 请求拦截器 */\r\n axiosInstance.interceptors.request.use(\r\n (request: InternalAxiosRequestConfig) => {\r\n const { accessToken, info } = useUserStore();\r\n if (accessToken) {\r\n request.headers.set(\"Authorization\", accessToken);\r\n request.headers.set(\"token\", accessToken);\r\n request.headers.set(\"x-userid-header\", info.userId);\r\n request.headers.set(\"x-permission-code-header\", router.currentRoute.value.meta.permissionOnlyCode as string);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (!(request as any).hideLoading && activeRequests === 0) {\r\n startLoading();\r\n }\r\n activeRequests++;\r\n\r\n if (request.data && !(request.data instanceof FormData) && !request.headers[\"Content-Type\"]) {\r\n request.headers.set(\"Content-Type\", \"application/json\");\r\n request.data = JSON.stringify(request.data);\r\n }\r\n\r\n return request;\r\n },\r\n error => {\r\n showError(createHttpError(HttpMsg.requestConfigError, ApiStatus.error));\r\n return Promise.reject(error);\r\n }\r\n );\r\n\r\n /** 响应拦截器 */\r\n axiosInstance.interceptors.response.use(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (response: AxiosResponse<BaseResponse> | any) => {\r\n debuncesLoading();\r\n const contentType = response.headers[\"content-type\"];\r\n if (contentType?.includes(\"application/json\")) {\r\n const { code, msg } = response.data;\r\n if ([ApiStatus.success, ApiStatus.success1].includes(code)) return response;\r\n if ([ApiStatus.unauthorized, ApiStatus.INVALID_TOKEN].includes(code)) handleUnauthorizedError(msg);\r\n throw createHttpError(msg || HttpMsg.requestFailed, code);\r\n } else if (FILE_TYPES.includes(contentType)) {\r\n // 文件类型 下载\r\n downloadFile(response, contentType);\r\n return response;\r\n }\r\n },\r\n error => {\r\n debuncesLoading();\r\n if (error.response?.status === ApiStatus.unauthorized) handleUnauthorizedError();\r\n return Promise.reject(handleError(error));\r\n }\r\n );\r\n\r\n /** 统一创建HttpError */\r\n function createHttpError(message: string, code: number) {\r\n return new HttpError(message, code);\r\n }\r\n\r\n /** 处理401错误(带防抖) */\r\n function handleUnauthorizedError(message?: string): never {\r\n const error = createHttpError(message || HttpMsg.unauthorized, ApiStatus.unauthorized);\r\n\r\n if (!isUnauthorizedErrorShown) {\r\n isUnauthorizedErrorShown = true;\r\n logOut();\r\n\r\n unauthorizedTimer = setTimeout(resetUnauthorizedError, UNAUTHORIZED_DEBOUNCE_TIME);\r\n\r\n showError(error, true);\r\n throw error;\r\n }\r\n\r\n throw error;\r\n }\r\n\r\n /** 重置401防抖状态 */\r\n function resetUnauthorizedError() {\r\n isUnauthorizedErrorShown = false;\r\n if (unauthorizedTimer) clearTimeout(unauthorizedTimer);\r\n unauthorizedTimer = null;\r\n }\r\n\r\n const logOut = () => {\r\n setTimeout(() => {\r\n useUserStore().logOut();\r\n }, LOGOUT_DELAY);\r\n };\r\n /** 是否需要重试 */\r\n function shouldRetry(statusCode: number) {\r\n return [\r\n ApiStatus.requestTimeout,\r\n ApiStatus.internalServerError,\r\n ApiStatus.badGateway,\r\n ApiStatus.serviceUnavailable,\r\n ApiStatus.gatewayTimeout\r\n ].includes(statusCode);\r\n }\r\n\r\n /** 请求重试逻辑 */\r\n async function retryRequest<T>(config: ExtendedAxiosRequestConfig, retries: number = MAX_RETRIES): Promise<T> {\r\n try {\r\n return await request<T>(config);\r\n } catch (error) {\r\n if (error instanceof HttpError && [ApiStatus.NEED_REFRESH_TOKEN].includes(error.code)) {\r\n if (!config.url?.includes(\"/iam/user/refreshToken\")) {\r\n // 刷新token\r\n await useUserStore().refreshTokenFunc();\r\n await delay(RETRY_DELAY);\r\n return retryRequest<T>(config, retries - 1);\r\n }\r\n }\r\n if (retries > 0 && error instanceof HttpError && shouldRetry(error.code)) {\r\n await delay(RETRY_DELAY);\r\n return retryRequest<T>(config, retries - 1);\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n /** 延迟函数 */\r\n function delay(ms: number) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n /** 请求函数 */\r\n async function request<T>(config: ExtendedAxiosRequestConfig): Promise<T> {\r\n // POST | PUT 参数自动填充\r\n if ([\"POST\", \"PUT\"].includes(config.method?.toUpperCase() || \"\") && config.params && !config.data) {\r\n config.data = config.params;\r\n config.params = undefined;\r\n }\r\n\r\n try {\r\n const res = await axiosInstance.request<BaseResponse<T>>(config);\r\n\r\n // 显示成功消息\r\n if (config.showSuccessMessage && res.data.msg) {\r\n showSuccess(res.data.msg);\r\n }\r\n\r\n return res.data.data as T;\r\n } catch (error) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const excludeError = [ApiStatus.unauthorized, ApiStatus.NEED_REFRESH_TOKEN].includes((error as any).code);\r\n if (error instanceof HttpError && !excludeError) {\r\n const showMsg = config.showErrorMessage !== false;\r\n showError(error, showMsg);\r\n }\r\n return Promise.reject(error);\r\n }\r\n }\r\n\r\n /** API方法集合 */\r\n const api = {\r\n get<T>(config: ExtendedAxiosRequestConfig) {\r\n return retryRequest<T>({ ...config, method: \"GET\" });\r\n },\r\n post<T>(config: ExtendedAxiosRequestConfig) {\r\n return retryRequest<T>({ ...config, method: \"POST\" });\r\n },\r\n put<T>(config: ExtendedAxiosRequestConfig) {\r\n return retryRequest<T>({ ...config, method: \"PUT\" });\r\n },\r\n del<T>(config: ExtendedAxiosRequestConfig) {\r\n return retryRequest<T>({ ...config, method: \"DELETE\" });\r\n },\r\n request<T>(config: ExtendedAxiosRequestConfig) {\r\n return retryRequest<T>(config);\r\n }\r\n };\r\n\r\n return {\r\n ...api,\r\n logOut\r\n };\r\n}\r\n","import type { App, Plugin } from 'vue'\n\nexport type SFCWithInstall<T> = T & Plugin\n\nexport function withInstall<T, E extends Record<string, any>>(main: T, extra?: E) {\n ;(main as SFCWithInstall<T>).install = (app: App) => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n const name = (comp as any).name\n if (name) {\n app.component(name, comp)\n }\n }\n }\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n ;(main as any)[key] = comp\n }\n }\n return main as SFCWithInstall<T> & E\n}\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}));","import dayjs from 'dayjs'\n\nconst toString = Object.prototype.toString\n\n/**\n * 判断值的类型\n *\n * @param val 未知类型的值\n * @param type 需要判断的目标类型\n * @returns 如果val的类型与目标类型相符,则返回true;否则返回false\n *\n * 说明:\n * - 该函数通过Object.prototype.toString.call(val)方法获取val的内部[[Class]]属性值,然后与目标类型进行比较\n * - 这种方法可以准确地判断值的类型,包括数组、函数、日期等特殊对象\n */\nexport function is(val: unknown, type: string): boolean {\n return toString.call(val) === `[object ${type}]`\n}\n\n/**\n * 判断一个值是否已定义\n *\n * 此函数用于检查传入的值是否为 undefined,以确定该值是否已定义\n * 在 TypeScript 中,通过这种方式可以对类型进行精确的判断,而不仅仅是依赖于值\n *\n * @param val 可能为任意类型的值,可能为 undefined\n * @returns 如果值不为 undefined,则返回 true;否则返回 false\n */\nexport function isDef<T = unknown>(val?: T): val is T {\n return typeof val !== 'undefined'\n}\n\n/**\n * 判断值是否未定义\n *\n * 此函数用于检查传入的值是否为 undefined 或者 null\n * 它提供了一种类型安全的方式来忽略未知的类型,并确保我们在处理可能不存在的值时能够安全地进行\n *\n * @param val 可能为 undefined 或具体类型的值\n * @returns 如果值为 undefined 则返回 true;否则返回 false\n */\nexport function isUndefined(val?: any): val is undefined {\n return !isDef(val)\n}\n\n/**\n * 判断给定的值是否为 null\n *\n * @param val 任何类型的值,用于检查是否为 null\n * @returns 返回 true 如果 val 是 null,否则返回 false\n */\nexport function isNull(val: unknown): val is null {\n return val === null\n}\n\n/**\n * 检查值是否为 null 或 undefined\n *\n * @param val 未知类型值,从 unknown 类型进行参数输入,可以接受任何类型的值\n * @returns 返回一个布尔值,如果 val 是 undefined 或 null,则返回 true,否则返回 false\n */\nexport function isNullOrUnDef(val: unknown): val is null | undefined {\n return isUndefined(val) || isNull(val)\n}\n\n/**\n * 检查给定的值是否为对象\n *\n * @param val 任意值,待检查其类型\n * @returns 如果值是对象,则返回true;否则返回false\n *\n * 此函数的存在是为了提供一个精确的类型检查机制,以确定传入的参数是否符合Record类型,\n * 这在处理复杂的数据结构时尤其有用,例如JSON数据解析或复杂的对象操作。通过这种方式,\n * 开发者可以确保数据的结构符合预期,从而避免潜在的运行时错误。\n * @example 如需从联合类型中获取对象类型,可以使用以下方式\n * isObject<TipConfig>\n */\nexport function isObject<T>(val: unknown | Record<string, T>): val is Record<string, T> {\n if (isNullOrUnDef(val)) \nreturn false\n // 判断是否为 Promise 实例\n if (val instanceof Promise) {\n return true\n }\n // 判断是否为普通对象\n return is(val, 'Object')\n}\n\n/**\n * 检查给定的值是否为空\n * 此函数旨在统一处理多种数据类型,包括字符串、数组、Map、Set和对象\n * undefined 和 null 值也被视为\"空\"\n * 以判断它们是否为空。对于每种数据类型,采用不同的方法来检查空值\n *\n * @param val 任意类型的值,其空状态将被检查\n * @returns 如果值被认为是空的,则返回 true,否则返回 false\n */\nexport function isEmpty<T>(val: T): boolean {\n if (isNullOrUnDef(val)) \nreturn true\n\n if (isArray(val) || isString(val)) \nreturn val.length === 0\n\n if (val instanceof Map || val instanceof Set) \nreturn val.size === 0\n\n if (isObject(val)) \nreturn Object.keys(val).length === 0\n\n return false\n}\n\n/**\n * 检查给定的值是否为空(包括0值)\n * 将以下值判定为空:0、'0'、'undefined'、'null'\n *\n * @param val 任意类型的值\n * @returns 如果值为 0、'0'、'undefined'、'null',则返回 true,否则返回 false\n */\nexport function isEmptyZero(val: unknown): boolean {\n if (isEmpty(val)) \nreturn true\n\n // 检查数字 0\n if (val === 0) \nreturn true\n\n // 检查字符串类型\n if (isString(val)) {\n return val === '0' || val === 'undefined' || val === 'null'\n }\n\n return false\n}\n\n/**\n * 判断给定的值是否为Date类型\n *\n * @param val 未知类型值,由用户传入\n * @returns 如果val是Date类型,返回true;否则返回false\n */\nexport function isDate(val: unknown): val is Date {\n return is(val, 'Date')\n}\n\n/**\n * 判断给定的值是否为Number类型 排除NaN\n * 一个数字与自身相比较,除了 NaN 之外都应该相等\n * @param val 未知类型值,由用户传入\n * @returns 如果val是Number类型,返回true;否则返回false\n */\nexport function isNumber(val: unknown): val is number {\n // eslint-disable-next-line no-self-compare\n return is(val, 'Number') && val === val\n}\n\n/**\n * 判断给定的值是否为Promise类型\n *\n * @param val 未知类型值,由用户传入\n * @returns 如果val是Promise类型,返回true;否则返回false\n */\nexport function isPromise<T = any>(val: unknown): val is Promise<T> {\n return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch)\n}\n\n/**\n * 判断给定的值是否为String类型\n *\n * @param val 未知类型值,由用户传入\n * @returns 如果val是String类型,返回true;否则返回false\n */\nexport function isString(val: unknown): val is string {\n return is(val, 'String')\n}\n\n/**\n * 判断给定的值是否为Function类型\n *\n * @param val 未知类型值,由用户传入\n * @returns 如果val是Function类型,返回true;否则返回false\n */\nexport function isFunction(val: unknown): val is (...args: any[]) => any {\n return typeof val === 'function'\n}\n\n/**\n * 判断给定的值是否为Boolean类型\n *\n * @param val 未知类型值,由用户传入\n * @returns 如果val是Boolean类型,返回true;否则返回false\n */\nexport function isBoolean(val: unknown): val is boolean {\n return is(val, 'Boolean')\n}\n\n/**\n * 判断给定的值是否为RegExp类型\n *\n * @param val 未知类型值,由用户传入\n * @returns 如果val是RegExp类型,返回true;否则返回false\n */\nexport function isRegExp(val: unknown): val is RegExp {\n return is(val, 'RegExp')\n}\n\n/**\n * 判断给定的值是否为Array类型\n *\n * @param val 未知类型值,由用户传入\n * @returns 如果val是Array类型,返回true;否则返回false\n */\nexport function isArray(val: any): val is Array<any> {\n return val && Array.isArray(val)\n}\n\n/**\n * 判断给定的值是否为Window类型\n *\n * @param val 未知类型值,由用户传入\n * @returns 如果val是Window类型,返回true;否则返回false\n */\nexport function isWindow(val: any): val is Window {\n return typeof window !== 'undefined' && is(val, 'Window')\n}\n\n/**\n * 判断给定的值是否是一个 DOM 元素。\n *\n * @param e 任意类型的值,其类型由调用者决定。\n * @returns 如果 `e` 是一个 DOM 元素实例,则返回 `true`,否则返回 `false`。\n */\nexport function isElement(e: unknown): e is Element {\n if (typeof Element === 'undefined') \nreturn false\n return e instanceof Element\n}\n\n/**\n * 检查给定的值是否为Map类型\n *\n * @param val 未知类型的值\n * @returns 如果给定的值是Map类型,则返回true;否则返回false\n */\nexport function isMap(val: unknown): val is Map<any, any> {\n return is(val, 'Map')\n}\n\nexport const isServer: boolean = typeof window === 'undefined'\n\nexport const isClient: boolean = !isServer\n\n/**\n * 检查给定的值是否为正确的Url地址\n *\n * @param path 字符串类型的值\n * @returns 如果给定的值是Url地址,则返回true;否则返回false\n */\nexport function isUrl(path: string): boolean {\n const reg =\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n /(?:^https?:(?:\\/\\/)?(?:[-;:&=+$,\\w]+@)?[A-Za-z0-9.-]+(?::\\d+)?|(?:www.|[-;:&=+$,\\w]+@)[A-Za-z0-9.-]+)(?:\\/[+~%/.\\w-]*)?\\??[-+=&;%@.\\w]*(?:#\\w*)?$/\n return reg.test(path)\n}\n\n/**\n * 判断一个字符串是否可以转换为数字\n *\n * @param val 待检查的字符串\n * @returns 如果字符串可以转换为数字,则返回true;否则返回false\n */\nexport function isStringNumber(val: string): boolean {\n if (!isString(val)) \nreturn false\n\n return !Number.isNaN(Number(val))\n}\n\n/**\n * 检查给定的值是否为原始类型\n *\n * 原始类型包括:数字、字符串、布尔值、符号、大整数、未定义、空值\n *\n * @param {*} value 要检查的值\n * @returns {boolean} 检查结果\n */\nexport function isPrimitive(value: any): boolean {\n return value === undefined || value === null || (typeof value !== 'object' && typeof value !== 'function')\n}\n\n/**\n * 是否为错误对象\n * @param val 入参\n */\nexport function isError(val: any): boolean {\n return Object.prototype.toString.call(val).slice(8, -1) === 'Error'\n}\n\n/**\n * 是否为Symbol函数\n * @param val 入参\n */\nexport function isSymbol(val: any): boolean {\n return Object.prototype.toString.call(val).slice(8, -1) === 'Symbol'\n}\n\n/**\n * 是否为Set对象\n * @param val 入参\n */\nexport function isSet(val: any): boolean {\n return Object.prototype.toString.call(val).slice(8, -1) === 'Set'\n}\n\n/**\n * 是否为非真\n * @param val 入参\n */\nexport function isFalse(val: any): boolean {\n if (!val || val === isNull(val) || val === isUndefined(val) || val === false || val === Number.isNaN(val)) {\n return true\n }\n if (isArray(val) && val.length === 0) \nreturn true\n\n return false\n}\n\n/**\n * 是否为真\n * @param val 入参\n */\nexport function isTrue(val: any): boolean {\n return !isFalse(val)\n}\n\n/**\n * 获取设备类型\n */\nexport function getDeviceType(): string {\n const u = navigator.userAgent\n if (u.includes('Android') || u.includes('Linux')) {\n // 安卓\n return 'Android'\n } else if (u.includes('iPhone')) {\n // 苹果\n return 'iPhone'\n } else if (u.includes('iPad')) {\n // iPad\n return 'iPad'\n } else if (u.includes('Windows Phone')) {\n // winphone手机\n return 'Windows Phone'\n } else {\n return u\n }\n}\n\n/**\n * 获取浏览器类型\n */\nexport function getBrowserType(): string {\n const userAgent = navigator.userAgent // 取得浏览器的userAgent字符串\n\n if (isIE(userAgent)) {\n return getIEVersion(userAgent)\n }\n if (isIE11(userAgent)) \nreturn 'IE11'\n if (isEdge(userAgent)) \nreturn 'Edge'\n if (isFF(userAgent)) \nreturn 'FF'\n if (isOpera(userAgent)) \nreturn 'Opera'\n if (isSafari(userAgent)) \nreturn 'Safari'\n if (isChrome(userAgent)) \nreturn 'Chrome'\n return ''\n}\n\nfunction isIE(userAgent: string): boolean {\n const isOpera = userAgent.includes('Opera') // 判断是否Opera浏览器\n return userAgent.includes('compatible') && userAgent.includes('MSIE') && !isOpera\n}\n\nfunction isIE11(userAgent: string): boolean {\n return userAgent.includes('Trident') && userAgent.includes('rv:11.0')\n}\n\nfunction isEdge(userAgent: string): boolean {\n const isIE = userAgent.includes('compatible') && userAgent.includes('MSIE')\n return userAgent.includes('Edge') && !isIE\n}\n\nfunction isFF(userAgent: string): boolean {\n return userAgent.includes('Firefox')\n}\n\nfunction isOpera(userAgent: string): boolean {\n return userAgent.includes('Opera')\n}\n\nfunction isSafari(userAgent: string): boolean {\n return userAgent.includes('Safari') && !userAgent.includes('Chrome')\n}\n\nfunction isChrome(userAgent: string): boolean {\n return userAgent.includes('Chrome') && userAgent.includes('Safari')\n}\n\nfunction getIEVersion(userAgent: string): string {\n const reIE = /MSIE (\\d+\\.\\d+);/\n const match = userAgent.match(reIE)\n const fIEVersion = match ? Number.parseFloat(match[1] || '0') : 0\n if (fIEVersion === 7) \nreturn 'IE7'\n else if (fIEVersion === 8) \nreturn 'IE8'\n else if (fIEVersion === 9) \nreturn 'IE9'\n else if (fIEVersion === 10) \nreturn 'IE10'\n else return 'IE7以下'\n}\n\n/**\n * 是否为ios\n * @returns {boolean} 是-否\n */\nexport function isIos(): boolean {\n const tag = getDeviceType()\n if (tag === 'iPhone') \nreturn true\n else return false\n}\n\n/**\n * 是否为Android\n */\nexport function isAndroid(): boolean {\n const tag = getDeviceType()\n if (tag === 'Android') \nreturn true\n else return false\n}\n\n/**\n * 是否为PC端\n */\nexport function isPC(): boolean {\n const userAgentInfo = navigator.userAgent\n const Agents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod']\n let flag = true\n for (let v = 0; v < Agents.length; v++) {\n const agent = Agents[v]\n if (agent && userAgentInfo.indexOf(agent) > 0) {\n flag = false\n break\n }\n }\n return flag\n}\n\n/**\n * @description 判读是否为外链\n * @param path\n */\nexport function isExternal(path: string): boolean {\n return /^(?:https?:|mailto:|tel:|\\/\\/)/.test(path)\n}\n\n/**\n * @description 判断是否为json\n * @param value\n */\nexport function isJson(value: string | null): boolean {\n if (typeof value === 'string') {\n try {\n const obj = JSON.parse(value)\n return !!(typeof obj === 'object' && obj)\n } catch (e) {\n console.error(`error:${e}`)\n return false\n }\n }\n return false\n}\n\nexport function isDayjsObject(value: any): value is dayjs.Dayjs {\n return dayjs.isDayjs(value)\n}\n","/**\r\n * TestID 生成工具函数\r\n * 用于为组件自动生成唯一、层级化的 testid\r\n *\r\n * @module testid-helper\r\n * @see e2e-testing-solution/TESTID-SPECIFICATION.md\r\n */\r\n\r\n/**\r\n * 从组件传入的 API 配置提取资源名称\r\n *\r\n * - 当 `api` 是字符串时,直接返回字符串(推荐传入类似 `client.queryUserList` 的唯一名称)\r\n * - 当 `api` 是函数引用时,返回函数名\r\n * - 其它情况返回空字符串,由调用方自行兜底\r\n *\r\n * @param api - API 字符串或函数\r\n * @returns 资源名称(原样或函数名)\r\n *\r\n * @example\r\n * ```ts\r\n * extractResourceFromApi('adminClientImpl.FindTriggerProjects')\r\n * // → 'adminClientImpl.FindTriggerProjects'\r\n *\r\n * extractResourceFromApi(CountryGetPageGET)\r\n * // → 'CountryGetPageGET'\r\n * ```\r\n */\r\nexport function extractResourceFromApi(api: string | Function): string {\r\n if (typeof api === 'string') \nreturn api.trim()\r\n\r\n if (typeof api === 'function') {\r\n const name = api.name || ''\r\n // 移除绑定函数的 'bound ' 前缀\r\n return name.replace(/^bound\\s+/i, '')\r\n }\r\n\r\n return ''\r\n}\r\n\r\n/**\r\n * 生成 testid\r\n *\r\n * 将多个部分拼接成完整的 testid,自动过滤 null、undefined 和空字符串\r\n *\r\n * @param parts - testid 的各个部分\r\n * @returns 拼接后的 testid\r\n *\r\n * @example\r\n * ```ts\r\n * generateTestId('user', 'form', 'field', 'username')\r\n * // → 'user-form-field-username'\r\n *\r\n * generateTestId('user', null, 'table', undefined, 'row', '123')\r\n * // → 'user-table-row-123'\r\n *\r\n * generateTestId('modal', 'user-edit')\r\n * // → 'modal-user-edit'\r\n * ```\r\n */\r\nexport function generateTestId(...parts: (string | undefined | null)[]): string {\r\n return parts\r\n .filter((part): part is string => {\r\n return part !== null && part !== undefined && part !== ''\r\n })\r\n .join('-')\r\n}\r\n\r\n/**\r\n * 转换为 kebab-case\r\n *\r\n * 支持以下转换:\r\n * - 空格分隔: \"Add User\" → \"add-user\"\r\n * - PascalCase: \"AddUser\" → \"add-user\"\r\n * - camelCase: \"addUser\" → \"add-user\"\r\n * - 下划线: \"add_user\" → \"add-user\"\r\n * - 中文: \"用户管理\" → \"yong-hu-guan-li\"(需要拼音库,可选功能)\r\n *\r\n * @param str - 要转换的字符串\r\n * @returns kebab-case 字符串\r\n *\r\n * @example\r\n * ```ts\r\n * toKebabCase('Add User')\r\n * // → 'add-user'\r\n *\r\n * toKebabCase('AddUser')\r\n * // → 'add-user'\r\n *\r\n * toKebabCase('addUser')\r\n * // → 'add-user'\r\n *\r\n * toKebabCase('add_user')\r\n * // → 'add-user'\r\n *\r\n * toKebabCase('Add-User')\r\n * // → 'add-user'\r\n * ```\r\n */\r\nexport function toKebabCase(str: string): string {\r\n if (!str) \nreturn ''\r\n\r\n return (\r\n str\r\n // 处理 PascalCase 和 camelCase: \"AddUser\" → \"Add-User\"\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n // 处理连续大写字母: \"XMLParser\" → \"XML-Parser\"\r\n .replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')\r\n // 将空格、下划线等替换为连字符\r\n .replace(/[\\s_]+/g, '-')\r\n // 移除特殊字符\r\n .replace(/[^\\w\\u4E00-\\u9FA5-]+/g, '-')\r\n // 转小写\r\n .toLowerCase()\r\n // 移除首尾连字符\r\n .replace(/^-+|-+$/g, '')\r\n // 合并多个连续的连字符\r\n .replace(/-+/g, '-')\r\n )\r\n}\r\n\r\n/**\r\n * 从 fieldNames 生成表单名称\r\n *\r\n * 取 schema 中前 N 个 fieldName 拼接,用于自动生成表单名称\r\n *\r\n * @param fieldNames - 字段名称数组\r\n * @param maxLength - 最多取几个字段名(默认 3)\r\n * @returns 拼接后的表单名称\r\n *\r\n * @example\r\n * ```ts\r\n * generateFormName(['username', 'email', 'phone', 'address'])\r\n * // → 'username-email-phone'\r\n *\r\n * generateFormName(['username', 'email'], 3)\r\n * // → 'username-email'\r\n *\r\n * generateFormName(['username'], 3)\r\n * // → 'username'\r\n *\r\n * generateFormName([])\r\n * // → 'form'\r\n * ```\r\n */\r\nexport function generateFormName(fieldNames: string[], maxLength = 3): string {\r\n if (!fieldNames || fieldNames.length === 0) {\r\n return 'form'\r\n }\r\n\r\n const validFieldNames = fieldNames\r\n .filter((name): name is string => {\r\n return name !== null && name !== undefined && name !== ''\r\n })\r\n .slice(0, maxLength)\r\n\r\n if (validFieldNames.length === 0) {\r\n return 'form'\r\n }\r\n\r\n return validFieldNames.join('-')\r\n}\r\n\r\n/**\r\n * 从标题提取 ID\r\n *\r\n * 用于从 Modal/Drawer 的 title 生成 ID\r\n *\r\n * @param title - 标题字符串\r\n * @returns kebab-case ID\r\n *\r\n * @example\r\n * ```ts\r\n * extractIdFromTitle('Add User')\r\n * // → 'add-user'\r\n *\r\n * extractIdFromTitle('编辑用户信息')\r\n * // → 'bian-ji-yong-hu-xin-xi'\r\n * ```\r\n */\r\nexport function extractIdFromTitle(title: string): string {\r\n if (!title) \nreturn ''\r\n return toKebabCase(title)\r\n}\r\n\r\n/**\r\n * 验证 testid 是否有效\r\n *\r\n * 检查 testid 是否符合命名规范:\r\n * - 非空\r\n * - 只包含小写字母、数字、连字符\r\n * - 不以连字符开头或结尾\r\n *\r\n * @param testid - 要验证的 testid\r\n * @returns 是否有效\r\n *\r\n * @example\r\n * ```ts\r\n * isValidTestId('user-form-field-username')\r\n * // → true\r\n *\r\n * isValidTestId('User-Form')\r\n * // → false (包含大写字母)\r\n *\r\n * isValidTestId('-user-form')\r\n * // → false (以连字符开头)\r\n *\r\n * isValidTestId('')\r\n * // → false (空字符串)\r\n * ```\r\n */\r\nexport function isValidTestId(testid: string): boolean {\r\n if (!testid) \nreturn false\r\n\r\n // 只允许小写字母、数字、连字符\r\n const validPattern = /^[a-z0-9]+(-[a-z0-9]+)*$/\r\n return validPattern.test(testid)\r\n}\r\n","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","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","/**\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","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","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","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","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 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 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 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 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 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 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","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","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\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 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 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 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 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 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 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 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 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 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 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","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 * 判断是否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","/**\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 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 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 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 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","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","/* 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 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 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 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 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 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 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 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","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","/**\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 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 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 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 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 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 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 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 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","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","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 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 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","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","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 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 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 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 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 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 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 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\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\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\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 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 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","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","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 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","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","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);\nconst isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\nconst isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelWeight = label => label === 'number' || label === 'weight';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [{\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset()\n }],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [{\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset()\n }],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{\n 'inset-bs': scaleInset()\n }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{\n 'inset-be': scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{\n pbs: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{\n pbe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{\n mbs: scaleMargin()\n }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{\n mbe: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{\n inline: ['auto', ...scaleSizingInline()]\n }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{\n 'min-inline': ['auto', ...scaleSizingInline()]\n }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{\n 'max-inline': ['none', ...scaleSizingInline()]\n }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{\n block: ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{\n 'min-block': ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{\n 'max-block': ['none', ...scaleSizingBlock()]\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]\n }],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{\n 'font-features': [isArbitraryValue]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{\n 'border-bs': scaleBorderWidth()\n }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{\n 'border-be': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{\n 'border-bs': scaleColor()\n }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{\n 'border-be': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{\n 'scroll-mbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{\n 'scroll-mbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{\n 'scroll-pbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{\n 'scroll-pbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","function set(obj, key, val) {\n\tif (typeof val.value === 'object') val.value = klona(val.value);\n\tif (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {\n\t\tObject.defineProperty(obj, key, val);\n\t} else obj[key] = val.value;\n}\n\nexport function klona(x) {\n\tif (typeof x !== 'object') return x;\n\n\tvar i=0, k, list, tmp, str=Object.prototype.toString.call(x);\n\n\tif (str === '[object Object]') {\n\t\ttmp = Object.create(x.__proto__ || null);\n\t} else if (str === '[object Array]') {\n\t\ttmp = Array(x.length);\n\t} else if (str === '[object Set]') {\n\t\ttmp = new Set;\n\t\tx.forEach(function (val) {\n\t\t\ttmp.add(klona(val));\n\t\t});\n\t} else if (str === '[object Map]') {\n\t\ttmp = new Map;\n\t\tx.forEach(function (val, key) {\n\t\t\ttmp.set(klona(key), klona(val));\n\t\t});\n\t} else if (str === '[object Date]') {\n\t\ttmp = new Date(+x);\n\t} else if (str === '[object RegExp]') {\n\t\ttmp = new RegExp(x.source, x.flags);\n\t} else if (str === '[object DataView]') {\n\t\ttmp = new x.constructor( klona(x.buffer) );\n\t} else if (str === '[object ArrayBuffer]') {\n\t\ttmp = x.slice(0);\n\t} else if (str.slice(-6) === 'Array]') {\n\t\t// ArrayBuffer.isView(x)\n\t\t// ~> `new` bcuz `Buffer.slice` => ref\n\t\ttmp = new x.constructor(x);\n\t}\n\n\tif (tmp) {\n\t\tfor (list=Object.getOwnPropertySymbols(x); i < list.length; i++) {\n\t\t\tset(tmp, list[i], Object.getOwnPropertyDescriptor(x, list[i]));\n\t\t}\n\n\t\tfor (i=0, list=Object.getOwnPropertyNames(x); i < list.length; i++) {\n\t\t\tif (Object.hasOwnProperty.call(tmp, k=list[i]) && tmp[k] === x[k]) continue;\n\t\t\tset(tmp, k, Object.getOwnPropertyDescriptor(x, k));\n\t\t}\n\t}\n\n\treturn tmp || x;\n}\n","import type { WritableComputedRef } from \"vue\";\nimport { isArray, isObject } from \"./is\";\nimport { computed } from \"vue\";\nimport XEUtils from \"xe-utils\";\nimport { twMerge } from 'tailwind-merge'\nimport type { ClassValue } from 'clsx'\nimport { clsx } from 'clsx'\nimport { klona } from 'klona/full'\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/** className 合并 */\nexport function clnm(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n\n/**\n * 触发窗口的 resize 事件\n * @description 手动触发浏览器窗口的 resize 事件,用于强制更新依赖窗口大小的组件或布局\n *\n * @example\n * // 在DOM更新后触发重新布局\n * updateDOM()\n * triggerWindowResize()\n *\n * // 在组件挂载后强制更新响应式布局\n * onMounted(() => {\n * triggerWindowResize()\n * })\n */\nexport function triggerWindowResize(): void {\n // 创建一个新的 resize 事件\n const resizeEvent = new Event('resize')\n\n // 触发 window 的 resize 事件\n window.dispatchEvent(resizeEvent)\n}\n\n/**\n * 遍历目标数组 从源对象获取数据并赋值。\n * @param targrt array 目标对象\n * @param sources {} 源对象\n * @param key 关联字段key\n * @param content 要修改的字段 字段名string 或数组\n */\nexport function arrGive(\n targrt: any,\n sources: any,\n key: any = 'prop',\n content: any = 'content',\n): void {\n targrt.forEach((element: any) => {\n if (Object.prototype.hasOwnProperty.call(element, key)) {\n if (isArray(content)) {\n content.forEach((contentItem: any) => {\n if (Object.prototype.hasOwnProperty.call(element, contentItem))\n element[contentItem] = sources[element[key]]\n })\n }\n else {\n if (Object.prototype.hasOwnProperty.call(element, content))\n element[content] = sources[element[key]]\n }\n }\n })\n}\n\n\n\n/**\n * 时间转换过滤器 依赖dayjs 默认UTC时间\n * @param value key 时间戳接收毫秒\n * @param format 格式化样式YYYY-MM-DD HH:mm:ss.SSS A (dayjs的format)\n * @param tz 默认时区 Asia/Shanghai\n */\nexport const dateFormat = function (\n value: string | number | Date,\n format = 'YYYY-MM-DD HH:mm:ss',\n tz: string = 'Asia/Shanghai'\n): string {\n if (value === '' || value === null || value === undefined || value === 0 || value === '0')\n return ''\n\n if (!dayjs(value).isValid()) return ''\n\n if (!isExtendDayjs) {\n dayjs.extend(utc)\n dayjs.extend(timezone)\n isExtendDayjs = true\n }\n\n return dayjs(value).tz(tz).format(format)\n}\n\n/**\n * 深度克隆对象或数组 禁止循环引用对象\n * @description 使用 klona 库进行深度克隆,支持所有类型的数据结构 https://www.npmjs.com/package/klona\n * @template T 要克隆的数据类型 (默认: any)\n * @param source 源数据\n * @returns 深度克隆后的新数据\n *\n * @examples\n * // 克隆对象\n * const obj = { a: 1, b: { c: 2 } }\n * const clonedObj = cloneDeep(obj)\n *\n * // 克隆数组\n * const arr = [1, { b: 2 }]\n * const clonedArr = cloneDeep(arr)\n *\n * // 克隆 Date 对象\n * const date = new Date()\n * const clonedDate = cloneDeep(date)\n */\nexport function cloneDeep<T = any>(source: T): T {\n return klona(source)\n}","function isPlainObject(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {\n return false;\n }\n if (Symbol.iterator in value) {\n return false;\n }\n if (Symbol.toStringTag in value) {\n return Object.prototype.toString.call(value) === \"[object Module]\";\n }\n return true;\n}\n\nfunction _defu(baseObject, defaults, namespace = \".\", merger) {\n if (!isPlainObject(defaults)) {\n return _defu(baseObject, {}, namespace, merger);\n }\n const object = Object.assign({}, defaults);\n for (const key in baseObject) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = baseObject[key];\n if (value === null || value === void 0) {\n continue;\n }\n if (merger && merger(object, key, value, namespace)) {\n continue;\n }\n if (Array.isArray(value) && Array.isArray(object[key])) {\n object[key] = [...value, ...object[key]];\n } else if (isPlainObject(value) && isPlainObject(object[key])) {\n object[key] = _defu(\n value,\n object[key],\n (namespace ? `${namespace}.` : \"\") + key.toString(),\n merger\n );\n } else {\n object[key] = value;\n }\n }\n return object;\n}\nfunction createDefu(merger) {\n return (...arguments_) => (\n // eslint-disable-next-line unicorn/no-array-reduce\n arguments_.reduce((p, c) => _defu(p, c, \"\", merger), {})\n );\n}\nconst defu = createDefu();\nconst defuFn = createDefu((object, key, currentValue) => {\n if (object[key] !== void 0 && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\nconst defuArrayFn = createDefu((object, key, currentValue) => {\n if (Array.isArray(object[key]) && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\n\nexport { createDefu, defu as default, defu, defuArrayFn, defuFn };\n","import type { Defu } from 'defu'\r\nimport { createDefu } from 'defu'\r\n\r\nexport {\r\n /** 定制合并 createMerge=createDefu https://www.npmjs.com/package/defu */\r\n createDefu as createMerge,\r\n /** 对象合并 merge=defu https://www.npmjs.com/package/defu */\r\n defu as merge,\r\n /** 过滤 mergFn=defuFn https://www.npmjs.com/package/defu */\r\n defuFn as mergFn,\r\n} from 'defu'\r\n\r\n/**\r\n * 对象合并函数,支持指定字段直接覆盖和数组类型直接替换\r\n * @param source 源对象,将被合并的目标对象\r\n * @param defaultsAndOptions 其他默认对象,最后一项可为 Source 的 key 数组,指定需要覆盖的 key\r\n * @returns 合并后的对象\r\n */\r\nexport function mergeWithArrayOverride<\r\n Source extends Record<string, any>,\r\n Defaults extends Array<Record<string, any>>,\r\n>(source: Source, ...defaultsAndOptions: [...Defaults]): Defu<Source, Defaults>\r\nexport function mergeWithArrayOverride<\r\n Source extends Record<string, any>,\r\n Defaults extends Array<Record<string, any>>,\r\n>(source: Source, ...defaultsAndOptions: [...Defaults, Array<keyof Source>]): Defu<Source, Defaults>\r\nexport function mergeWithArrayOverride<\r\n Source extends Record<string, any>,\r\n Defaults extends Array<Record<string, any>>,\r\n>(source: Source, ...defaultsAndOptions: [...Defaults, Array<keyof Source>]) {\r\n // 初始化需要覆盖的key数组\r\n let overrideKeys: Array<keyof Source> = []\r\n const lastItem = defaultsAndOptions[defaultsAndOptions.length - 1]\r\n // 检查最后一个参数是否是覆盖key数组\r\n if (\r\n defaultsAndOptions.length > 0 &&\r\n Array.isArray(lastItem) &&\r\n lastItem.every(item => ['string', 'number', 'symbol'].includes(typeof item))\r\n ) {\r\n overrideKeys = defaultsAndOptions.pop() as Array<keyof Source>\r\n }\r\n\r\n // 使用defu创建自定义合并函数\r\n return createDefu((originObj, key, updates) => {\r\n // 如果key在覆盖列表中,直接替换值\r\n if (overrideKeys.includes(key as keyof Source)) {\r\n originObj[key] = updates\r\n return true\r\n }\r\n // 如果原值和更新值都是数组,直接替换数组\r\n if (Array.isArray(originObj[key]) && Array.isArray(updates)) {\r\n originObj[key] = updates\r\n return true\r\n }\r\n })(source, ...defaultsAndOptions)\r\n}\r\n\r\n// https://www.npmjs.com/package/defu\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 Decimal from 'decimal.js'\r\n\r\ntype Recordable<T = any> = Record<string, T>\r\n\r\n/**\r\n * 加法运算\r\n * @param args 运算数\r\n */\r\nexport function add(...args: (number | string)[]): number {\r\n let result = new Decimal(args[0])\r\n for (let i = 1; i < args.length; i++) result = result.add(new Decimal(args[i]))\r\n\r\n return result.toNumber()\r\n}\r\n\r\n/**\r\n * 减法运算\r\n * @param args 运算数\r\n */\r\nexport function subtract(...args: (number | string)[]): number {\r\n let result = new Decimal(args[0])\r\n for (let i = 1; i < args.length; i++) result = result.sub(new Decimal(args[i]))\r\n\r\n return result.toNumber()\r\n}\r\n\r\n/**\r\n * 乘法运算\r\n * @param args 运算数\r\n */\r\nexport function multiply(...args: (number | string)[]): number {\r\n let result = new Decimal(args[0])\r\n for (let i = 1; i < args.length; i++) result = result.mul(new Decimal(args[i]))\r\n\r\n return result.toNumber()\r\n}\r\n\r\n/**\r\n * 除法运算\r\n * @param args 运算数\r\n */\r\nexport function divide(...args: (number | string)[]): number {\r\n let result = new Decimal(args[0])\r\n for (let i = 1; i < args.length; i++) result = result.div(new Decimal(args[i]))\r\n\r\n return result.toNumber()\r\n}\r\n\r\n/**\r\n * 合计数组中所有数值\r\n * @param datas 需要计算的数组,可以是数字数组或字符串数组(字符串会被转换为数字)\r\n * @returns {number} 返回数组中所有数值的总和\r\n */\r\nexport function sumTotal(...args: (number | string)[]) {\r\n return args.reduce((total, item) => calc(total).add(item).toNumber(), 0)\r\n}\r\n\r\n/**\r\n * 数组对象合计\r\n * @param datas 需要计算的数组对象\r\n * @param iteratee 迭代函数,用于从每个对象中提取需要计算的数值\r\n * @returns {number} 返回所有对象中提取数值的总和\r\n */\r\nexport function sumTotalBy(datas: Recordable[], iteratee: (item: Recordable) => number | string) {\r\n return datas.reduce((total, item) => calc(total).add(iteratee(item)).toNumber(), 0)\r\n}\r\n\r\n/**\r\n * 分类合计\r\n * @param datas 需要计算的数组对象\r\n * @param keyIteratee 键提取函数\r\n * @param valueIteratee 值提取函数\r\n */\r\nexport function clsSumTotalBy(\r\n datas: Recordable[],\r\n keyIteratee: (item: Recordable) => string | number,\r\n valueIteratee: (item: Recordable) => number | string\r\n) {\r\n const result: { [key: string]: number } = {}\r\n const getValue = valueIteratee\r\n\r\n datas.forEach(item => {\r\n const key = keyIteratee(item)\r\n if (key) {\r\n const value = getValue(item)\r\n result[key] = calc(result[key] || 0)\r\n .add(value)\r\n .toNumber()\r\n }\r\n })\r\n\r\n return result\r\n}\r\n\r\n/** 计算封装 */\r\nexport function calc(value: number | string): Decimal {\r\n const bool1 = Number(value) || value === 0\r\n const bool2 = Number.isNaN(Number(value))\r\n const decimal = new Decimal(value)\r\n if (bool1 && !bool2) {\r\n return decimal\r\n } else {\r\n console.error('请输入合理数字!')\r\n const decimal = new Decimal(Number.NaN)\r\n return decimal\r\n }\r\n}\r\n\r\nexport default {\r\n add,\r\n subtract,\r\n multiply,\r\n divide,\r\n sumTotal,\r\n sumTotalBy,\r\n clsSumTotalBy,\r\n calc,\r\n}\r\n","export class StateHandler {\r\n private condition: boolean = false\r\n private promiseResolvers: {\r\n resolve: (value: void | PromiseLike<void>) => void\r\n reject: (reason?: any) => void\r\n } | null = null\r\n\r\n isConditionTrue(): boolean {\r\n return this.condition\r\n }\r\n\r\n reset(): void {\r\n this.condition = false\r\n this.clearPromises()\r\n }\r\n\r\n setConditionFalse(): void {\r\n this.condition = false\r\n if (this.promiseResolvers) {\r\n this.promiseResolvers.reject()\r\n this.clearPromises()\r\n }\r\n }\r\n\r\n setConditionTrue(): void {\r\n this.condition = true\r\n if (this.promiseResolvers) {\r\n this.promiseResolvers.resolve()\r\n this.clearPromises()\r\n }\r\n }\r\n\r\n waitForCondition(): Promise<void> {\r\n if (this.condition) {\r\n return Promise.resolve()\r\n }\r\n const { promise, resolve, reject } = Promise.withResolvers<void>()\r\n this.promiseResolvers = { resolve, reject }\r\n return promise\r\n }\r\n\r\n private clearPromises() {\r\n this.promiseResolvers = null\r\n }\r\n}\r\n\r\nexport class StateHandlerOld {\r\n private condition: boolean = false\r\n private rejectCondition: (() => void) | null = null\r\n private resolveCondition: (() => void) | null = null\r\n\r\n isConditionTrue(): boolean {\r\n return this.condition\r\n }\r\n\r\n reset(): void {\r\n this.condition = false\r\n this.clearPromises()\r\n }\r\n\r\n // 触发状态为 false 时,reject\r\n setConditionFalse(): void {\r\n this.condition = false\r\n if (this.rejectCondition) {\r\n this.rejectCondition()\r\n this.clearPromises()\r\n }\r\n }\r\n\r\n // 触发状态为 true 时,resolve\r\n setConditionTrue(): void {\r\n this.condition = true\r\n if (this.resolveCondition) {\r\n this.resolveCondition()\r\n this.clearPromises()\r\n }\r\n }\r\n\r\n // 返回一个 Promise,等待 condition 变为 true\r\n waitForCondition(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n if (this.condition) {\r\n resolve() // 如果 condition 已经为 true,立即 resolve\r\n } else {\r\n this.resolveCondition = resolve\r\n this.rejectCondition = reject\r\n }\r\n })\r\n }\r\n\r\n // 清理 resolve/reject 函数\r\n private clearPromises() {\r\n this.resolveCondition = null\r\n this.rejectCondition = null\r\n }\r\n}\r\n"],"names":["trim","this","isUndefined","isNull","isObject","isEmpty","isArray","isString","isDate","isNumber","isFunction","isBoolean","isRegExp","isWindow","isElement","isMap","isError","isSymbol","isSet","dayjs","clone","isPlainObject","random","max","keys","isInteger","set","min","round","ceil","floor","multiply","add","subtract","divide","sum"],"mappings":";;;;AAAM,SAAU,UAAU,CAAC,GAAW,EAAA;AACpC,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD;AAEM,SAAUA,MAAI,CAAC,GAAW,EAAA;AAC9B,IAAA,OAAO,GAAG,CAAC,IAAI,EAAE;AACnB;AAEM,SAAU,gBAAgB,CAAC,GAAW,EAAA;AAC1C,IAAA,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;AACpE;;ACVA;;;AAGG;MAQU,YAAY,GAAG,CAAC,GAAuB,EAAE,IAAY,KAAI;AACpE,IAAA,IAAI;;QAEF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChC;AACD,SAAA,CAAC;QACF,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AACtC,QAAA,CAAC,CAAC,IAAI,GAAG,IAAI;AACb,QAAA,MAAM,kBAAkB,GAAa,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;QAChG,IAAI,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAC9C,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE;QAChE,MAAM,YAAY,GAAG,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;QAC1C,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACpC,QAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ;AACrB,QAAA,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AACxB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,KAAK,EAAE;AACT,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5B,QAAA,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;IAClC;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACpB;AACF;;ACnCA;;AAEG;AACH,IAAY,SAkBX;AAlBD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,GAAA,CAAA,GAAA,SAAa;AACb,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACZ,IAAA,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,GAAA,CAAA,GAAA,OAAW;AACX,IAAA,SAAA,CAAA,SAAA,CAAA,cAAA,CAAA,GAAA,GAAA,CAAA,GAAA,cAAkB;AAClB,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,GAAA,CAAA,GAAA,WAAe;AACf,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,GAAA,CAAA,GAAA,UAAc;AACd,IAAA,SAAA,CAAA,SAAA,CAAA,kBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,kBAAsB;AACtB,IAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAoB;AACpB,IAAA,SAAA,CAAA,SAAA,CAAA,qBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,qBAAyB;AACzB,IAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAoB;AACpB,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,GAAA,CAAA,GAAA,YAAgB;AAChB,IAAA,SAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,oBAAwB;AACxB,IAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAoB;AACpB,IAAA,SAAA,CAAA,SAAA,CAAA,yBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,yBAA6B;AAC7B,IAAA,SAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,oBAAyB;AACzB,IAAA,SAAA,CAAA,SAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAkB;IAClB,SAAA,CAAA,SAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAoB,CAAA;AACtB,CAAC,EAlBW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;AAoBrB;AACA,IAAY,OAcX;AAdD,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,YAAA,CAAA,GAAA,8DAAyB;AACzB,IAAA,OAAA,CAAA,WAAA,CAAA,GAAA,4CAAqB;AACrB,IAAA,OAAA,CAAA,gBAAA,CAAA,GAAA,8DAA6B;AAC7B,IAAA,OAAA,CAAA,qBAAA,CAAA,GAAA,gFAAqC;AACrC,IAAA,OAAA,CAAA,kBAAA,CAAA,GAAA,4CAA4B;AAC5B,IAAA,OAAA,CAAA,cAAA,CAAA,GAAA,sFAA+B;AAC/B,IAAA,OAAA,CAAA,UAAA,CAAA,GAAA,kDAAqB;AACrB,IAAA,OAAA,CAAA,kBAAA,CAAA,GAAA,gCAA0B;AAC1B,IAAA,OAAA,CAAA,oBAAA,CAAA,GAAA,sCAA6B;AAC7B,IAAA,OAAA,CAAA,eAAA,CAAA,GAAA,0BAAsB;AACtB,IAAA,OAAA,CAAA,gBAAA,CAAA,GAAA,8DAA6B;AAC7B,IAAA,OAAA,CAAA,oBAAA,CAAA,GAAA,gFAAoC;AACpC,IAAA,OAAA,CAAA,cAAA,CAAA,GAAA,oEAA4B;AAC9B,CAAC,EAdW,OAAO,KAAP,OAAO,GAAA,EAAA,CAAA,CAAA;;AC+BnB;AACM,MAAO,SAAU,SAAQ,KAAK,CAAA;AAClB,IAAA,IAAI;AACJ,IAAA,IAAI;AACJ,IAAA,SAAS;AACT,IAAA,GAAG;AACH,IAAA,MAAM;AAEtB,IAAA,WAAA,CACE,OAAe,EACf,IAAY,EACZ,OAIC,EAAA;QAED,KAAK,CAAC,OAAO,CAAC;AACd,QAAA,IAAI,CAAC,IAAI,GAAG,WAAW;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzC,IAAI,CAAC,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE;IACrC;IAEO,SAAS,GAAA;QACd,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI;SACtB;IACH;AACD;AAED;;;;AAIG;AACH,MAAM,eAAe,GAAG,CAAC,MAAc,KAAY;AACjD,IAAA,MAAM,QAAQ,GAA2B;AACvC,QAAA,CAAC,SAAS,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;AAC9C,QAAA,CAAC,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;AACxC,QAAA,CAAC,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACtC,QAAA,CAAC,SAAS,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB;AACtD,QAAA,CAAC,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc;AAClD,QAAA,CAAC,SAAS,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB;AAC5D,QAAA,CAAC,SAAS,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;AAC1C,QAAA,CAAC,SAAS,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB;AAC1D,QAAA,CAAC,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC;KACrC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,mBAAmB;AACxD,CAAC;AAED;;;;AAIG;AACG,SAAU,WAAW,CAAC,KAAgC,EAAA;;AAE1D,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;QACjC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC;QACjD,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC;IAChE;AAEA,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM;AACzC,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO;AAC/D,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM;;AAGlC,IAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QACnB,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE;AACzD,YAAA,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE;YAC7B,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI;AACjD,SAAA,CAAC;IACJ;;AAGA,IAAA,MAAM,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,YAAY,IAAI,OAAO,CAAC,aAAa;IAChG,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,UAAU,IAAI,SAAS,CAAC,KAAK,EAAE;AAC1D,QAAA,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;AACzB,QAAA,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE;QAC7B,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI;AACjD,KAAA,CAAC;AACJ;AAEA;;;;AAIG;SACa,SAAS,CAAC,KAAgB,EAAE,cAAuB,IAAI,EAAA;IACrE,IAAI,WAAW,EAAE;AACf,QAAA,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;IAChC;;IAEA,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;AAClD;AAEA;;;;AAIG;SACa,WAAW,CAAC,OAAe,EAAE,cAAuB,IAAI,EAAA;IACtE,IAAI,WAAW,EAAE;AACf,QAAA,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;IAC5B;AACF;;AC1KA;AACO,MAAM,kBAAkB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BjC;;AC/BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;AAGH;;;AAGG;AACH,MAAM,oBAAoB,GAAG,MAAa;AACxC,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAClE,OAAO,MAAM,GAAG,qBAAqB,GAAG,0BAA0B;AACpE,CAAC;AAED,MAAM,sBAAsB,GAAG;AAC7B,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,oBAAoB,EAAE;IAC/B,CAAC;AACD,IAAA,GAAG,EAAE,kBAAkB;AACvB,IAAA,UAAU,EAAE,WAAW;AACvB,IAAA,WAAW,EAAE;CACL;AAMV,IAAI,eAAe,GAA2B,IAAI;AAE3C,MAAM,cAAc,GAAG;AAC5B;;;AAGG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,EAAE;;AAEpB,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,GAAG,sBAAsB;gBACzB,UAAU,EAAE,oBAAoB;aACjC;AACD,YAAA,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QAC7C;AACA,QAAA,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE;IACjC,CAAC;AAED;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,eAAe,EAAE;YACnB,eAAe,CAAC,KAAK,EAAE;YACvB,eAAe,GAAG,IAAI;QACxB;IACF;CACD;;AC3ED;AACA;AACA;AACA;AACM,SAAU,MAAM,CAAC,MAAW,EAAA;IAChC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,GAAG,MAAM;;IAG5E,IAAI,cAAc,GAAG,KAAK;AAC1B,IAAA,SAAS,YAAY,GAAA;QACnB,IAAI,cAAc,EAAE;YAClB,QAAQ,CAAC,MAAK;gBACZ,cAAc,CAAC,WAAW,EAAE;gBAC5B,cAAc,GAAG,KAAK;AACxB,YAAA,CAAC,CAAC;QACJ;IACF;;AAEA,IAAA,SAAS,YAAY,GAAA;QACnB,cAAc,GAAG,IAAI;QACrB,cAAc,CAAC,WAAW,EAAE;IAC9B;;AAEA,IAAA,MAAM,UAAU,GAAG;QACjB,YAAY;QACZ,WAAW;QACX,WAAW;QACX,YAAY;QACZ,eAAe;QACf,iBAAiB;QACjB,oBAAoB;QACpB,yEAAyE;QACzE,0BAA0B;QAC1B;KACD;;AAGD,IAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE;IACjC,MAAM,YAAY,GAAG,GAAG;IACxB,MAAM,WAAW,GAAG,CAAC;IACrB,MAAM,WAAW,GAAG,IAAI;IACxB,MAAM,0BAA0B,GAAG,IAAI;IAEvC,IAAI,cAAc,GAAG,CAAC;AACtB,IAAA,SAAS,eAAe,GAAA;QACtB,UAAU,CAAC,MAAK;AACd,YAAA,cAAc,EAAE;AAChB,YAAA,IAAI,cAAc,KAAK,CAAC,EAAE;AACxB,gBAAA,YAAY,EAAE;YAChB;QACF,CAAC,EAAE,CAAC,CAAC;IACP;;IAGA,IAAI,wBAAwB,GAAG,KAAK;IACpC,IAAI,iBAAiB,GAA0B,IAAI;;AAUnD,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;AACjC,QAAA,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,GAAG,GAAG,YAAY;QAC3B,eAAe,EAAE,qBAAqB,KAAK,MAAM;QACjD,cAAc,EAAE,MAAM,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;AACvD,QAAA,iBAAiB,EAAE;AACjB,YAAA,CAAC,IAAI,EAAE,OAAO,KAAI;AAChB,gBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;AAC3C,gBAAA,IAAI,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AAC7C,oBAAA,IAAI;AACF,wBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBACzB;AAAE,oBAAA,MAAM;AACN,wBAAA,OAAO,IAAI;oBACb;gBACF;AACA,gBAAA,OAAO,IAAI;YACb;AACD;AACF,KAAA,CAAC;;IAGF,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CACpC,CAAC,OAAmC,KAAI;QACtC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE;QAC5C,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC;YACjD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC;YACzC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC;AACnD,YAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,kBAA4B,CAAC;QAC9G;;QAEA,IAAI,CAAE,OAAe,CAAC,WAAW,IAAI,cAAc,KAAK,CAAC,EAAE;AACzD,YAAA,YAAY,EAAE;QAChB;AACA,QAAA,cAAc,EAAE;QAEhB,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,YAAY,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3F,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;YACvD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7C;AAEA,QAAA,OAAO,OAAO;IAChB,CAAC,EACD,KAAK,IAAG;AACN,QAAA,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;AACvE,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAA,CAAC,CACF;;AAGD,IAAA,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG;;IAErC,CAAC,QAA2C,KAAI;AAC9C,QAAA,eAAe,EAAE;QACjB,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;AACpD,QAAA,IAAI,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE;YAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAAE,gBAAA,OAAO,QAAQ;AAC3E,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,uBAAuB,CAAC,GAAG,CAAC;YAClG,MAAM,eAAe,CAAC,GAAG,IAAI,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;QAC3D;AAAO,aAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;;AAE3C,YAAA,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC;AACnC,YAAA,OAAO,QAAQ;QACjB;IACF,CAAC,EACD,KAAK,IAAG;AACN,QAAA,eAAe,EAAE;QACjB,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC,YAAY;AAAE,YAAA,uBAAuB,EAAE;QAChF,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAA,CAAC,CACF;;AAGD,IAAA,SAAS,eAAe,CAAC,OAAe,EAAE,IAAY,EAAA;AACpD,QAAA,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;IACrC;;IAGA,SAAS,uBAAuB,CAAC,OAAgB,EAAA;AAC/C,QAAA,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC;QAEtF,IAAI,CAAC,wBAAwB,EAAE;YAC7B,wBAAwB,GAAG,IAAI;AAC/B,YAAA,MAAM,EAAE;AAER,YAAA,iBAAiB,GAAG,UAAU,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;AAElF,YAAA,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;AACtB,YAAA,MAAM,KAAK;QACb;AAEA,QAAA,MAAM,KAAK;IACb;;AAGA,IAAA,SAAS,sBAAsB,GAAA;QAC7B,wBAAwB,GAAG,KAAK;AAChC,QAAA,IAAI,iBAAiB;YAAE,YAAY,CAAC,iBAAiB,CAAC;QACtD,iBAAiB,GAAG,IAAI;IAC1B;IAEA,MAAM,MAAM,GAAG,MAAK;QAClB,UAAU,CAAC,MAAK;AACd,YAAA,YAAY,EAAE,CAAC,MAAM,EAAE;QACzB,CAAC,EAAE,YAAY,CAAC;AAClB,IAAA,CAAC;;IAED,SAAS,WAAW,CAAC,UAAkB,EAAA;QACrC,OAAO;AACL,YAAA,SAAS,CAAC,cAAc;AACxB,YAAA,SAAS,CAAC,mBAAmB;AAC7B,YAAA,SAAS,CAAC,UAAU;AACpB,YAAA,SAAS,CAAC,kBAAkB;AAC5B,YAAA,SAAS,CAAC;AACX,SAAA,CAAC,QAAQ,CAAC,UAAU,CAAC;IACxB;;AAGA,IAAA,eAAe,YAAY,CAAI,MAAkC,EAAE,UAAkB,WAAW,EAAA;AAC9F,QAAA,IAAI;AACF,YAAA,OAAO,MAAM,OAAO,CAAI,MAAM,CAAC;QACjC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,KAAK,YAAY,SAAS,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACrF,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE;;AAEnD,oBAAA,MAAM,YAAY,EAAE,CAAC,gBAAgB,EAAE;AACvC,oBAAA,MAAM,KAAK,CAAC,WAAW,CAAC;oBACxB,OAAO,YAAY,CAAI,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC;gBAC7C;YACF;AACA,YAAA,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,YAAY,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACxE,gBAAA,MAAM,KAAK,CAAC,WAAW,CAAC;gBACxB,OAAO,YAAY,CAAI,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC;YAC7C;AACA,YAAA,MAAM,KAAK;QACb;IACF;;IAGA,SAAS,KAAK,CAAC,EAAU,EAAA;AACvB,QAAA,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxD;;IAGA,eAAe,OAAO,CAAI,MAAkC,EAAA;;QAE1D,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACjG,YAAA,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM;AAC3B,YAAA,MAAM,CAAC,MAAM,GAAG,SAAS;QAC3B;AAEA,QAAA,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,CAAkB,MAAM,CAAC;;YAGhE,IAAI,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;AAC7C,gBAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3B;AAEA,YAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAS;QAC3B;QAAE,OAAO,KAAK,EAAE;;AAEd,YAAA,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAE,KAAa,CAAC,IAAI,CAAC;AACzG,YAAA,IAAI,KAAK,YAAY,SAAS,IAAI,CAAC,YAAY,EAAE;AAC/C,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,KAAK,KAAK;AACjD,gBAAA,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;YAC3B;AACA,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAC9B;IACF;;AAGA,IAAA,MAAM,GAAG,GAAG;AACV,QAAA,GAAG,CAAI,MAAkC,EAAA;YACvC,OAAO,YAAY,CAAI,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACtD,CAAC;AACD,QAAA,IAAI,CAAI,MAAkC,EAAA;YACxC,OAAO,YAAY,CAAI,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACvD,CAAC;AACD,QAAA,GAAG,CAAI,MAAkC,EAAA;YACvC,OAAO,YAAY,CAAI,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACtD,CAAC;AACD,QAAA,GAAG,CAAI,MAAkC,EAAA;YACvC,OAAO,YAAY,CAAI,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACzD,CAAC;AACD,QAAA,OAAO,CAAI,MAAkC,EAAA;AAC3C,YAAA,OAAO,YAAY,CAAI,MAAM,CAAC;QAChC;KACD;IAED,OAAO;AACL,QAAA,GAAG,GAAG;QACN;KACD;AACH;;ACxQM,SAAU,WAAW,CAAmC,IAAO,EAAE,KAAS,EAAA;AAC5E,IAAA,IAA0B,CAAC,OAAO,GAAG,CAAC,GAAQ,KAAI;AAClD,QAAA,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE;AACxD,YAAA,MAAM,IAAI,GAAI,IAAY,CAAC,IAAI;YAC/B,IAAI,IAAI,EAAE;AACR,gBAAA,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;YAC3B;QACF;AACF,IAAA,CAAC;IACD,IAAI,KAAK,EAAE;AACT,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,IAAY,CAAC,GAAG,CAAC,GAAG,IAAI;QAC5B;IACF;AACA,IAAA,OAAO,IAA6B;AACtC;;;;;;;;;;;;;;;;ECnBA,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAsD,eAAe,CAAC,GAAkH,CAAC,CAACC,SAAI,EAAE,UAAU,CAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,4FAA4F,CAAC,CAAC,CAAC,qFAAqF,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,0DAA0D,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,uFAAuF,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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AAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,C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","x_google_ignoreList":[8,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,235,236,237,238,239,240,242,244]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/string.ts","../src/file.ts","../src/axios/status.ts","../src/axios/error.ts","../src/axios/loadinSvg.ts","../src/axios/loading.ts","../src/axios/index.ts","../src/install.ts","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/dayjs.min.js","../src/is.ts","../src/testid-helper.ts","../../../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/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/klona@2.0.6/node_modules/klona/full/index.mjs","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/utc.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/timezone.js","../src/tool.ts","../../../node_modules/.pnpm/defu@6.1.4/node_modules/defu/dist/defu.mjs","../src/merge.ts","../../../node_modules/.pnpm/decimal.js@10.6.0/node_modules/decimal.js/decimal.mjs","../src/calc.ts","../src/stateHandler.ts","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf8.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.js","../../../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-pkcs7.js","../src/stroge.ts","../src/check.ts"],"sourcesContent":["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 * @param res 响应 { data: Blob, ... }\r\n * @param type 类型\r\n */\r\n\r\ninterface HttpResponse<T> {\r\n data: T;\r\n headers: Record<string, string>;\r\n status: number;\r\n statusText: string;\r\n}\r\nexport const downloadFile = (res: HttpResponse<Blob>, type: string) => {\r\n try {\r\n // 创建blob对象,解析流数据\r\n const blob = new Blob([res.data], {\r\n type\r\n });\r\n const a = document.createElement(\"a\");\r\n const URL = window.URL || window.webkitURL;\r\n const herf = URL.createObjectURL(blob);\r\n a.href = herf;\r\n const contentDisposition: string[] = (res.headers[\"content-disposition\"] || \"\").split(\"=\") || [];\r\n let fileName = contentDisposition.at(-1) || \"\";\r\n fileName = fileName ? decodeURI(fileName.replace(/\"/g, \"\")) : \"\";\r\n const decodedParts = fileName?.split(\"''\");\r\n fileName = decodedParts.at(-1) || \"\";\r\n a.download = fileName;\r\n a.style.display = \"none\";\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n window.URL.revokeObjectURL(herf);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n};\r\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","/**\r\n * HTTP 错误处理模块\r\n *\r\n * 提供统一的 HTTP 请求错误处理机制\r\n *\r\n * ## 主要功能\r\n *\r\n * - 自定义 HttpError 错误类,封装错误信息、状态码、时间戳等\r\n * - 错误拦截和转换,将 Axios 错误转换为标准的 HttpError\r\n * - 错误消息国际化处理,根据状态码返回对应的多语言错误提示\r\n * - 错误日志记录,便于问题追踪和调试\r\n * - 错误和成功消息的统一展示\r\n * - 类型守卫函数,用于判断错误类型\r\n *\r\n * ## 使用场景\r\n *\r\n * - HTTP 请求拦截器中统一处理错误\r\n * - 业务代码中捕获和处理特定错误\r\n * - 错误日志收集和上报\r\n *\r\n * @module utils/http/error\r\n * @author Art Design Pro Team\r\n */\r\nimport { AxiosError } from \"axios\";\r\nimport { ApiStatus, HttpMsg } from \"./status\";\r\nimport { ElMessage } from \"element-plus\";\r\n\r\n// 错误响应接口\r\nexport interface ErrorResponse {\r\n /** 错误状态码 */\r\n code: number;\r\n /** 错误消息 */\r\n msg: string;\r\n /** 错误附加数据 */\r\n data?: unknown;\r\n}\r\n\r\n// 错误日志数据接口\r\nexport interface ErrorLogData {\r\n /** 错误状态码 */\r\n code: number;\r\n /** 错误消息 */\r\n message: string;\r\n /** 错误附加数据 */\r\n data?: unknown;\r\n /** 错误发生时间戳 */\r\n timestamp: string;\r\n /** 请求 URL */\r\n url?: string;\r\n /** 请求方法 */\r\n method?: string;\r\n /** 错误堆栈信息 */\r\n stack?: string;\r\n}\r\n\r\n// 自定义 HttpError 类\r\nexport class HttpError extends Error {\r\n public readonly code: number;\r\n public readonly data?: unknown;\r\n public readonly timestamp: string;\r\n public readonly url?: string;\r\n public readonly method?: string;\r\n\r\n constructor(\r\n message: string,\r\n code: number,\r\n options?: {\r\n data?: unknown;\r\n url?: string;\r\n method?: string;\r\n }\r\n ) {\r\n super(message);\r\n this.name = \"HttpError\";\r\n this.code = code;\r\n this.data = options?.data;\r\n this.timestamp = new Date().toISOString();\r\n this.url = options?.url || \"\";\r\n this.method = options?.method || \"\";\r\n }\r\n\r\n public toLogData(): ErrorLogData {\r\n return {\r\n code: this.code,\r\n message: this.message,\r\n data: this.data,\r\n timestamp: this.timestamp,\r\n url: this.url || \"\",\r\n method: this.method || \"\",\r\n stack: this.stack || \"\"\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * 获取错误消息\r\n * @param status 错误状态码\r\n * @returns 错误消息\r\n */\r\nconst getErrorMessage = (status: number): string => {\r\n const errorMap: Record<number, string> = {\r\n [ApiStatus.unauthorized]: HttpMsg.unauthorized,\r\n [ApiStatus.forbidden]: HttpMsg.forbidden,\r\n [ApiStatus.notFound]: HttpMsg.notFound,\r\n [ApiStatus.methodNotAllowed]: HttpMsg.methodNotAllowed,\r\n [ApiStatus.requestTimeout]: HttpMsg.requestTimeout,\r\n [ApiStatus.internalServerError]: HttpMsg.internalServerError,\r\n [ApiStatus.badGateway]: HttpMsg.badGateway,\r\n [ApiStatus.serviceUnavailable]: HttpMsg.serviceUnavailable,\r\n [ApiStatus.gatewayTimeout]: HttpMsg.gatewayTimeout\r\n };\r\n\r\n return errorMap[status] || HttpMsg.internalServerError;\r\n};\r\n\r\n/**\r\n * 处理错误\r\n * @param error 错误对象\r\n * @returns 错误对象\r\n */\r\nexport function handleError(error: AxiosError<ErrorResponse>): never {\r\n // 处理取消的请求\r\n if (error.code === \"ERR_CANCELED\") {\r\n console.warn(\"Request cancelled:\", error.message);\r\n throw new HttpError(HttpMsg.requestCancelled, ApiStatus.error);\r\n }\r\n\r\n const statusCode = error.response?.status;\r\n const errorMessage = error.response?.data?.msg || error.message;\r\n const requestConfig = error.config;\r\n\r\n // 处理网络错误\r\n if (!error.response) {\r\n throw new HttpError(HttpMsg.networkError, ApiStatus.error, {\r\n url: requestConfig?.url || \"\",\r\n method: requestConfig?.method?.toUpperCase() || \"\"\r\n });\r\n }\r\n\r\n // 处理 HTTP 状态码错误\r\n const message = statusCode ? getErrorMessage(statusCode) : errorMessage || HttpMsg.requestFailed;\r\n throw new HttpError(message, statusCode || ApiStatus.error, {\r\n data: error.response.data,\r\n url: requestConfig?.url || \"\",\r\n method: requestConfig?.method?.toUpperCase() || \"\"\r\n });\r\n}\r\n\r\n/**\r\n * 显示错误消息\r\n * @param error 错误对象\r\n * @param showMessage 是否显示错误消息\r\n */\r\nexport function showError(error: HttpError, showMessage: boolean = true): void {\r\n if (showMessage) {\r\n ElMessage.error(error.message);\r\n }\r\n // 记录错误日志\r\n console.error(\"[HTTP Error]\", error.toLogData());\r\n}\r\n\r\n/**\r\n * 显示成功消息\r\n * @param message 成功消息\r\n * @param showMessage 是否显示消息\r\n */\r\nexport function showSuccess(message: string, showMessage: boolean = true): void {\r\n if (showMessage) {\r\n ElMessage.success(message);\r\n }\r\n}\r\n\r\n/**\r\n * 判断是否为 HttpError 类型\r\n * @param error 错误对象\r\n * @returns 是否为 HttpError 类型\r\n */\r\nexport const isHttpError = (error: unknown): error is HttpError => {\r\n return error instanceof HttpError;\r\n};\r\n","// 自定义四点旋转SVG\r\nexport const fourDotsSpinnerSvg = `\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\">\r\n <style>\r\n .spinner {\r\n transform-origin: 20px 20px;\r\n animation: rotate 1.6s linear infinite;\r\n }\r\n .dot {\r\n fill: var(--theme-color);\r\n animation: fade 1.6s infinite;\r\n }\r\n .dot:nth-child(1) { animation-delay: 0s; }\r\n .dot:nth-child(2) { animation-delay: 0.5s; }\r\n .dot:nth-child(3) { animation-delay: 1s; }\r\n .dot:nth-child(4) { animation-delay: 1.5s; }\r\n @keyframes rotate {\r\n 100% { transform: rotate(360deg); }\r\n }\r\n @keyframes fade {\r\n 0%, 100% { opacity: 1; }\r\n 50% { opacity: 0.5; }\r\n }\r\n </style>\r\n <g class=\"spinner\">\r\n <circle class=\"dot\" cx=\"20\" cy=\"8\" r=\"4\"/>\r\n <circle class=\"dot\" cx=\"32\" cy=\"20\" r=\"4\"/>\r\n <circle class=\"dot\" cx=\"20\" cy=\"32\" r=\"4\"/>\r\n <circle class=\"dot\" cx=\"8\" cy=\"20\" r=\"4\"/>\r\n </g>\r\n </svg>\r\n`;\r\n","/**\r\n * 全局 Loading 加载管理模块\r\n *\r\n * 提供统一的全屏加载动画管理\r\n *\r\n * ## 主要功能\r\n *\r\n * - 全屏 Loading 显示和隐藏\r\n * - 自动适配明暗主题背景色\r\n * - 自定义 SVG 加载动画\r\n * - 单例模式防止重复创建\r\n * - 锁定页面交互\r\n *\r\n * ## 使用场景\r\n *\r\n * - 页面初始化加载\r\n * - 大量数据请求\r\n * - 路由切换过渡\r\n * - 异步操作等待\r\n *\r\n * ## 特性\r\n *\r\n * - 自动检测当前主题并应用对应背景色\r\n * - 使用自定义 SVG 动画(四点旋转)\r\n * - 单例模式确保同时只有一个 Loading\r\n * - 提供便捷的显示/隐藏方法\r\n *\r\n * @module utils/ui/loading\r\n * @author Art Design Pro Team\r\n */\r\nimport { fourDotsSpinnerSvg } from \"./loadinSvg\";\r\nimport { ElLoading } from \"element-plus\";\r\n/**\r\n * 获取当前主题对应的loading背景色\r\n * @returns 背景色字符串\r\n */\r\nconst getLoadingBackground = (): string => {\r\n const isDark = document.documentElement.classList.contains(\"dark\");\r\n return isDark ? \"rgba(7, 7, 7, 0.85)\" : \"rgba(255, 255, 255, 0.5)\";\r\n};\r\n\r\nconst DEFAULT_LOADING_CONFIG = {\r\n lock: true,\r\n get background() {\r\n return getLoadingBackground();\r\n },\r\n svg: fourDotsSpinnerSvg,\r\n svgViewBox: \"0 0 40 40\",\r\n customClass: \"art-loading-fix\"\r\n} as const;\r\n\r\ninterface LoadingInstance {\r\n close: () => void;\r\n}\r\n\r\nlet loadingInstance: LoadingInstance | null = null;\r\n\r\nexport const loadingService = {\r\n /**\r\n * 显示 loading\r\n * @returns 关闭 loading 的函数\r\n */\r\n showLoading(): () => void {\r\n if (!loadingInstance) {\r\n // 每次显示时获取最新的配置,确保背景色与当前主题同步\r\n const config = {\r\n ...DEFAULT_LOADING_CONFIG,\r\n background: getLoadingBackground()\r\n };\r\n loadingInstance = ElLoading.service(config);\r\n }\r\n return () => this.hideLoading();\r\n },\r\n\r\n /**\r\n * 隐藏 loading\r\n */\r\n hideLoading(): void {\r\n if (loadingInstance) {\r\n loadingInstance.close();\r\n loadingInstance = null;\r\n }\r\n }\r\n};\r\n","import axios, { AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from \"axios\";\r\nimport { HttpError, handleError, showError, showSuccess } from \"./error\";\r\nimport { ApiStatus, HttpMsg } from \"./status\";\r\nimport { BaseResponse, TtHttpReturnType } from \"./type\";\r\nimport { downloadFile } from \"../file\";\r\nimport { nextTick } from \"vue\";\r\nimport { loadingService } from \"./loading\";\r\n\r\n// 需要传入\r\n// router useUserStore closeLoading startLoading VITE_API_URL VITE_WITH_CREDENTIALS\r\n/** 退出登录函数 */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport function TtHttp(config: any): TtHttpReturnType {\r\n const { router, useUserStore, VITE_API_URL, VITE_WITH_CREDENTIALS } = config;\r\n\r\n // 跟踪是否需要关闭 loading\r\n let pendingLoading = false;\r\n function closeLoading(): void {\r\n if (pendingLoading) {\r\n nextTick(() => {\r\n loadingService.hideLoading();\r\n pendingLoading = false;\r\n });\r\n }\r\n }\r\n /** 开始 loading 效果 */\r\n function startLoading(): void {\r\n pendingLoading = true;\r\n loadingService.showLoading();\r\n }\r\n // 文件类型\r\n const FILE_TYPES = [\r\n \"image/jpeg\",\r\n \"image/png\",\r\n \"image/gif\",\r\n \"image/webp\",\r\n \"image/svg+xml\",\r\n \"application/pdf\",\r\n \"application/msword\",\r\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\r\n \"application/vnd.ms-excel\",\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8\"\r\n ];\r\n\r\n /** 请求配置常量 */\r\n const REQUEST_TIMEOUT = 1000 * 60;\r\n const LOGOUT_DELAY = 500;\r\n const MAX_RETRIES = 0;\r\n const RETRY_DELAY = 1000;\r\n const UNAUTHORIZED_DEBOUNCE_TIME = 3000;\r\n\r\n let activeRequests = 0;\r\n function debuncesLoading() {\r\n setTimeout(() => {\r\n activeRequests--;\r\n if (activeRequests === 0) {\r\n closeLoading();\r\n }\r\n }, 0);\r\n }\r\n\r\n /** 401防抖状态 */\r\n let isUnauthorizedErrorShown = false;\r\n let unauthorizedTimer: NodeJS.Timeout | null = null;\r\n\r\n /** 扩展 AxiosRequestConfig */\r\n interface ExtendedAxiosRequestConfig extends AxiosRequestConfig {\r\n showErrorMessage?: boolean;\r\n showSuccessMessage?: boolean;\r\n hideLoading?: boolean;\r\n }\r\n\r\n /** Axios实例 */\r\n const axiosInstance = axios.create({\r\n timeout: REQUEST_TIMEOUT,\r\n baseURL: \"/\" + VITE_API_URL,\r\n withCredentials: VITE_WITH_CREDENTIALS === \"true\",\r\n validateStatus: status => status >= 200 && status < 300,\r\n transformResponse: [\r\n (data, headers) => {\r\n const contentType = headers[\"content-type\"];\r\n if (contentType?.includes(\"application/json\")) {\r\n try {\r\n return JSON.parse(data);\r\n } catch {\r\n return data;\r\n }\r\n }\r\n return data;\r\n }\r\n ]\r\n });\r\n\r\n /** 请求拦截器 */\r\n axiosInstance.interceptors.request.use(\r\n (request: InternalAxiosRequestConfig) => {\r\n const { accessToken, info } = useUserStore();\r\n if (accessToken) {\r\n request.headers.set(\"Authorization\", accessToken);\r\n request.headers.set(\"token\", accessToken);\r\n request.headers.set(\"x-userid-header\", info.userId);\r\n request.headers.set(\"x-permission-code-header\", router.currentRoute.value.meta.permissionOnlyCode as string);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (!(request as any).hideLoading && activeRequests === 0) {\r\n startLoading();\r\n }\r\n activeRequests++;\r\n\r\n if (request.data && !(request.data instanceof FormData) && !request.headers[\"Content-Type\"]) {\r\n request.headers.set(\"Content-Type\", \"application/json\");\r\n request.data = JSON.stringify(request.data);\r\n }\r\n\r\n return request;\r\n },\r\n error => {\r\n showError(createHttpError(HttpMsg.requestConfigError, ApiStatus.error));\r\n return Promise.reject(error);\r\n }\r\n );\r\n\r\n /** 响应拦截器 */\r\n axiosInstance.interceptors.response.use(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (response: AxiosResponse<BaseResponse> | any) => {\r\n debuncesLoading();\r\n const contentType = response.headers[\"content-type\"];\r\n if (contentType?.includes(\"application/json\")) {\r\n const { code, msg } = response.data;\r\n if ([ApiStatus.success, ApiStatus.success1].includes(code)) return response;\r\n if ([ApiStatus.unauthorized, ApiStatus.INVALID_TOKEN].includes(code)) handleUnauthorizedError(msg);\r\n throw createHttpError(msg || HttpMsg.requestFailed, code);\r\n } else if (FILE_TYPES.includes(contentType)) {\r\n // 文件类型 下载\r\n downloadFile(response, contentType);\r\n return response;\r\n }\r\n },\r\n error => {\r\n debuncesLoading();\r\n if (error.response?.status === ApiStatus.unauthorized) handleUnauthorizedError();\r\n return Promise.reject(handleError(error));\r\n }\r\n );\r\n\r\n /** 统一创建HttpError */\r\n function createHttpError(message: string, code: number) {\r\n return new HttpError(message, code);\r\n }\r\n\r\n /** 处理401错误(带防抖) */\r\n function handleUnauthorizedError(message?: string): never {\r\n const error = createHttpError(message || HttpMsg.unauthorized, ApiStatus.unauthorized);\r\n\r\n if (!isUnauthorizedErrorShown) {\r\n isUnauthorizedErrorShown = true;\r\n logOut();\r\n\r\n unauthorizedTimer = setTimeout(resetUnauthorizedError, UNAUTHORIZED_DEBOUNCE_TIME);\r\n\r\n showError(error, true);\r\n throw error;\r\n }\r\n\r\n throw error;\r\n }\r\n\r\n /** 重置401防抖状态 */\r\n function resetUnauthorizedError() {\r\n isUnauthorizedErrorShown = false;\r\n if (unauthorizedTimer) clearTimeout(unauthorizedTimer);\r\n unauthorizedTimer = null;\r\n }\r\n\r\n const logOut = () => {\r\n setTimeout(() => {\r\n useUserStore().logOut();\r\n }, LOGOUT_DELAY);\r\n };\r\n /** 是否需要重试 */\r\n function shouldRetry(statusCode: number) {\r\n return [\r\n ApiStatus.requestTimeout,\r\n ApiStatus.internalServerError,\r\n ApiStatus.badGateway,\r\n ApiStatus.serviceUnavailable,\r\n ApiStatus.gatewayTimeout\r\n ].includes(statusCode);\r\n }\r\n\r\n /** 请求重试逻辑 */\r\n async function retryRequest<T>(config: ExtendedAxiosRequestConfig, retries: number = MAX_RETRIES): Promise<T> {\r\n try {\r\n return await request<T>(config);\r\n } catch (error) {\r\n if (error instanceof HttpError && [ApiStatus.NEED_REFRESH_TOKEN].includes(error.code)) {\r\n if (!config.url?.includes(\"/iam/user/refreshToken\")) {\r\n // 刷新token\r\n await useUserStore().refreshTokenFunc();\r\n await delay(RETRY_DELAY);\r\n return retryRequest<T>(config, retries - 1);\r\n }\r\n }\r\n if (retries > 0 && error instanceof HttpError && shouldRetry(error.code)) {\r\n await delay(RETRY_DELAY);\r\n return retryRequest<T>(config, retries - 1);\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n /** 延迟函数 */\r\n function delay(ms: number) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n /** 请求函数 */\r\n async function request<T>(config: ExtendedAxiosRequestConfig): Promise<T> {\r\n // POST | PUT 参数自动填充\r\n if ([\"POST\", \"PUT\"].includes(config.method?.toUpperCase() || \"\") && config.params && !config.data) {\r\n config.data = config.params;\r\n config.params = undefined;\r\n }\r\n\r\n try {\r\n const res = await axiosInstance.request<BaseResponse<T>>(config);\r\n\r\n // 显示成功消息\r\n if (config.showSuccessMessage && res.data.msg) {\r\n showSuccess(res.data.msg);\r\n }\r\n\r\n return res.data.data as T;\r\n } catch (error) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const excludeError = [ApiStatus.unauthorized, ApiStatus.NEED_REFRESH_TOKEN].includes((error as any).code);\r\n if (error instanceof HttpError && !excludeError) {\r\n const showMsg = config.showErrorMessage !== false;\r\n showError(error, showMsg);\r\n }\r\n return Promise.reject(error);\r\n }\r\n }\r\n\r\n /** API方法集合 */\r\n const api = {\r\n get<T>(config: ExtendedAxiosRequestConfig) {\r\n return retryRequest<T>({ ...config, method: \"GET\" });\r\n },\r\n post<T>(config: ExtendedAxiosRequestConfig) {\r\n return retryRequest<T>({ ...config, method: \"POST\" });\r\n },\r\n put<T>(config: ExtendedAxiosRequestConfig) {\r\n return retryRequest<T>({ ...config, method: \"PUT\" });\r\n },\r\n del<T>(config: ExtendedAxiosRequestConfig) {\r\n return retryRequest<T>({ ...config, method: \"DELETE\" });\r\n },\r\n request<T>(config: ExtendedAxiosRequestConfig) {\r\n return retryRequest<T>(config);\r\n }\r\n };\r\n\r\n return {\r\n ...api,\r\n logOut\r\n };\r\n}\r\n","import type { App, Plugin } from 'vue'\n\nexport type SFCWithInstall<T> = T & Plugin\n\nexport function withInstall<T, E extends Record<string, any>>(main: T, extra?: E) {\n ;(main as SFCWithInstall<T>).install = (app: App) => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n const name = (comp as any).name\n if (name) {\n app.component(name, comp)\n }\n }\n }\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n ;(main as any)[key] = comp\n }\n }\n return main as SFCWithInstall<T> & E\n}\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}));","import dayjs from \"dayjs\";\r\n\r\nconst toString = Object.prototype.toString;\r\n\r\n/**\r\n * 判断值的类型\r\n *\r\n * @param val 未知类型的值\r\n * @param type 需要判断的目标类型\r\n * @returns 如果val的类型与目标类型相符,则返回true;否则返回false\r\n *\r\n * 说明:\r\n * - 该函数通过Object.prototype.toString.call(val)方法获取val的内部[[Class]]属性值,然后与目标类型进行比较\r\n * - 这种方法可以准确地判断值的类型,包括数组、函数、日期等特殊对象\r\n */\r\nexport function is(val: unknown, type: string): boolean {\r\n return toString.call(val) === `[object ${type}]`;\r\n}\r\n\r\n/**\r\n * 判断一个值是否已定义\r\n *\r\n * 此函数用于检查传入的值是否为 undefined,以确定该值是否已定义\r\n * 在 TypeScript 中,通过这种方式可以对类型进行精确的判断,而不仅仅是依赖于值\r\n *\r\n * @param val 可能为任意类型的值,可能为 undefined\r\n * @returns 如果值不为 undefined,则返回 true;否则返回 false\r\n */\r\nexport function isDef<T = unknown>(val?: T): val is T {\r\n return typeof val !== \"undefined\";\r\n}\r\n\r\n/**\r\n * 判断值是否未定义\r\n *\r\n * 此函数用于检查传入的值是否为 undefined 或者 null\r\n * 它提供了一种类型安全的方式来忽略未知的类型,并确保我们在处理可能不存在的值时能够安全地进行\r\n *\r\n * @param val 可能为 undefined 或具体类型的值\r\n * @returns 如果值为 undefined 则返回 true;否则返回 false\r\n */\r\nexport function isUndefined(val?: any): val is undefined {\r\n return !isDef(val);\r\n}\r\n\r\n/**\r\n * 判断给定的值是否为 null\r\n *\r\n * @param val 任何类型的值,用于检查是否为 null\r\n * @returns 返回 true 如果 val 是 null,否则返回 false\r\n */\r\nexport function isNull(val: unknown): val is null {\r\n return val === null;\r\n}\r\n\r\n/**\r\n * 检查值是否为 null 或 undefined\r\n *\r\n * @param val 未知类型值,从 unknown 类型进行参数输入,可以接受任何类型的值\r\n * @returns 返回一个布尔值,如果 val 是 undefined 或 null,则返回 true,否则返回 false\r\n */\r\nexport function isNullOrUnDef(val: unknown): val is null | undefined {\r\n return isUndefined(val) || isNull(val);\r\n}\r\n\r\n/**\r\n * 检查给定的值是否为对象\r\n *\r\n * @param val 任意值,待检查其类型\r\n * @returns 如果值是对象,则返回true;否则返回false\r\n *\r\n * 此函数的存在是为了提供一个精确的类型检查机制,以确定传入的参数是否符合Record类型,\r\n * 这在处理复杂的数据结构时尤其有用,例如JSON数据解析或复杂的对象操作。通过这种方式,\r\n * 开发者可以确保数据的结构符合预期,从而避免潜在的运行时错误。\r\n * @example 如需从联合类型中获取对象类型,可以使用以下方式\r\n * isObject<TipConfig>\r\n */\r\nexport function isObject<T>(val: unknown | Record<string, T>): val is Record<string, T> {\r\n if (isNullOrUnDef(val)) return false;\r\n // 判断是否为 Promise 实例\r\n if (val instanceof Promise) {\r\n return true;\r\n }\r\n // 判断是否为普通对象\r\n return is(val, \"Object\");\r\n}\r\n\r\n/**\r\n * 检查给定的值是否为空\r\n * 此函数旨在统一处理多种数据类型,包括字符串、数组、Map、Set和对象\r\n * undefined 和 null 值也被视为\"空\"\r\n * 以判断它们是否为空。对于每种数据类型,采用不同的方法来检查空值\r\n *\r\n * @param val 任意类型的值,其空状态将被检查\r\n * @returns 如果值被认为是空的,则返回 true,否则返回 false\r\n */\r\nexport function isEmpty<T>(val: T): boolean {\r\n if (isNullOrUnDef(val)) return true;\r\n\r\n if (isArray(val) || isString(val)) return val.length === 0;\r\n\r\n if (val instanceof Map || val instanceof Set) return val.size === 0;\r\n\r\n if (isObject(val)) return Object.keys(val).length === 0;\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * 检查给定的值是否为空(包括0值)\r\n * 将以下值判定为空:0、'0'、'undefined'、'null'\r\n *\r\n * @param val 任意类型的值\r\n * @returns 如果值为 0、'0'、'undefined'、'null',则返回 true,否则返回 false\r\n */\r\nexport function isEmptyZero(val: unknown): boolean {\r\n if (isEmpty(val)) return true;\r\n\r\n // 检查数字 0\r\n if (val === 0) return true;\r\n\r\n // 检查字符串类型\r\n if (isString(val)) {\r\n return val === \"0\" || val === \"undefined\" || val === \"null\";\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * 判断给定的值是否为Date类型\r\n *\r\n * @param val 未知类型值,由用户传入\r\n * @returns 如果val是Date类型,返回true;否则返回false\r\n */\r\nexport function isDate(val: unknown): val is Date {\r\n return is(val, \"Date\");\r\n}\r\n\r\n/**\r\n * 判断给定的值是否为Number类型 排除NaN\r\n * 一个数字与自身相比较,除了 NaN 之外都应该相等\r\n * @param val 未知类型值,由用户传入\r\n * @returns 如果val是Number类型,返回true;否则返回false\r\n */\r\nexport function isNumber(val: unknown): val is number {\r\n // eslint-disable-next-line no-self-compare\r\n return is(val, \"Number\") && val === val;\r\n}\r\n\r\n/**\r\n * 判断给定的值是否为Promise类型\r\n *\r\n * @param val 未知类型值,由用户传入\r\n * @returns 如果val是Promise类型,返回true;否则返回false\r\n */\r\nexport function isPromise<T = any>(val: unknown): val is Promise<T> {\r\n return is(val, \"Promise\") && isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n}\r\n\r\n/**\r\n * 判断给定的值是否为String类型\r\n *\r\n * @param val 未知类型值,由用户传入\r\n * @returns 如果val是String类型,返回true;否则返回false\r\n */\r\nexport function isString(val: unknown): val is string {\r\n return is(val, \"String\");\r\n}\r\n\r\n/**\r\n * 判断给定的值是否为Function类型\r\n *\r\n * @param val 未知类型值,由用户传入\r\n * @returns 如果val是Function类型,返回true;否则返回false\r\n */\r\nexport function isFunction(val: unknown): val is (...args: any[]) => any {\r\n return typeof val === \"function\";\r\n}\r\n\r\n/**\r\n * 判断给定的值是否为Boolean类型\r\n *\r\n * @param val 未知类型值,由用户传入\r\n * @returns 如果val是Boolean类型,返回true;否则返回false\r\n */\r\nexport function isBoolean(val: unknown): val is boolean {\r\n return is(val, \"Boolean\");\r\n}\r\n\r\n/**\r\n * 判断给定的值是否为RegExp类型\r\n *\r\n * @param val 未知类型值,由用户传入\r\n * @returns 如果val是RegExp类型,返回true;否则返回false\r\n */\r\nexport function isRegExp(val: unknown): val is RegExp {\r\n return is(val, \"RegExp\");\r\n}\r\n\r\n/**\r\n * 判断给定的值是否为Array类型\r\n *\r\n * @param val 未知类型值,由用户传入\r\n * @returns 如果val是Array类型,返回true;否则返回false\r\n */\r\nexport function isArray(val: any): val is Array<any> {\r\n return val && Array.isArray(val);\r\n}\r\n\r\n/**\r\n * 判断给定的值是否为Window类型\r\n *\r\n * @param val 未知类型值,由用户传入\r\n * @returns 如果val是Window类型,返回true;否则返回false\r\n */\r\nexport function isWindow(val: any): val is Window {\r\n return typeof window !== \"undefined\" && is(val, \"Window\");\r\n}\r\n\r\n/**\r\n * 判断给定的值是否是一个 DOM 元素。\r\n *\r\n * @param e 任意类型的值,其类型由调用者决定。\r\n * @returns 如果 `e` 是一个 DOM 元素实例,则返回 `true`,否则返回 `false`。\r\n */\r\nexport function isElement(e: unknown): e is Element {\r\n if (typeof Element === \"undefined\") return false;\r\n return e instanceof Element;\r\n}\r\n\r\n/**\r\n * 检查给定的值是否为Map类型\r\n *\r\n * @param val 未知类型的值\r\n * @returns 如果给定的值是Map类型,则返回true;否则返回false\r\n */\r\nexport function isMap(val: unknown): val is Map<any, any> {\r\n return is(val, \"Map\");\r\n}\r\n\r\nexport const isServer: boolean = typeof window === \"undefined\";\r\n\r\nexport const isClient: boolean = !isServer;\r\n\r\n/**\r\n * 检查给定的值是否为正确的Url地址\r\n *\r\n * @param path 字符串类型的值\r\n * @returns 如果给定的值是Url地址,则返回true;否则返回false\r\n */\r\nexport function isUrl(path: string): boolean {\r\n const reg =\r\n /(?:^https?:(?:\\/\\/)?(?:[-;:&=+$,\\w]+@)?[A-Za-z0-9.-]+(?::\\d+)?|(?:www.|[-;:&=+$,\\w]+@)[A-Za-z0-9.-]+)(?:\\/[+~%/.\\w-]*)?\\??[-+=&;%@.\\w]*(?:#\\w*)?$/;\r\n return reg.test(path);\r\n}\r\n\r\n/**\r\n * 判断一个字符串是否可以转换为数字\r\n *\r\n * @param val 待检查的字符串\r\n * @returns 如果字符串可以转换为数字,则返回true;否则返回false\r\n */\r\nexport function isStringNumber(val: string): boolean {\r\n if (!isString(val)) return false;\r\n\r\n return !Number.isNaN(Number(val));\r\n}\r\n\r\n/**\r\n * 检查给定的值是否为原始类型\r\n *\r\n * 原始类型包括:数字、字符串、布尔值、符号、大整数、未定义、空值\r\n *\r\n * @param {*} value 要检查的值\r\n * @returns {boolean} 检查结果\r\n */\r\nexport function isPrimitive(value: any): boolean {\r\n return value === undefined || value === null || (typeof value !== \"object\" && typeof value !== \"function\");\r\n}\r\n\r\n/**\r\n * 是否为错误对象\r\n * @param val 入参\r\n */\r\nexport function isError(val: any): boolean {\r\n return Object.prototype.toString.call(val).slice(8, -1) === \"Error\";\r\n}\r\n\r\n/**\r\n * 是否为Symbol函数\r\n * @param val 入参\r\n */\r\nexport function isSymbol(val: any): boolean {\r\n return Object.prototype.toString.call(val).slice(8, -1) === \"Symbol\";\r\n}\r\n\r\n/**\r\n * 是否为Set对象\r\n * @param val 入参\r\n */\r\nexport function isSet(val: any): boolean {\r\n return Object.prototype.toString.call(val).slice(8, -1) === \"Set\";\r\n}\r\n\r\n/**\r\n * 是否为非真\r\n * @param val 入参\r\n */\r\nexport function isFalse(val: any): boolean {\r\n if (!val || val === isNull(val) || val === isUndefined(val) || val === false || val === Number.isNaN(val)) {\r\n return true;\r\n }\r\n if (isArray(val) && val.length === 0) return true;\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * 是否为真\r\n * @param val 入参\r\n */\r\nexport function isTrue(val: any): boolean {\r\n return !isFalse(val);\r\n}\r\n\r\n/**\r\n * 获取设备类型\r\n */\r\nexport function getDeviceType(): string {\r\n const u = navigator.userAgent;\r\n if (u.includes(\"Android\") || u.includes(\"Linux\")) {\r\n // 安卓\r\n return \"Android\";\r\n } else if (u.includes(\"iPhone\")) {\r\n // 苹果\r\n return \"iPhone\";\r\n } else if (u.includes(\"iPad\")) {\r\n // iPad\r\n return \"iPad\";\r\n } else if (u.includes(\"Windows Phone\")) {\r\n // winphone手机\r\n return \"Windows Phone\";\r\n } else {\r\n return u;\r\n }\r\n}\r\n\r\n/**\r\n * 获取浏览器类型\r\n */\r\nexport function getBrowserType(): string {\r\n const userAgent = navigator.userAgent; // 取得浏览器的userAgent字符串\r\n\r\n if (isIE(userAgent)) {\r\n return getIEVersion(userAgent);\r\n }\r\n if (isIE11(userAgent)) return \"IE11\";\r\n if (isEdge(userAgent)) return \"Edge\";\r\n if (isFF(userAgent)) return \"FF\";\r\n if (isOpera(userAgent)) return \"Opera\";\r\n if (isSafari(userAgent)) return \"Safari\";\r\n if (isChrome(userAgent)) return \"Chrome\";\r\n return \"\";\r\n}\r\n\r\nfunction isIE(userAgent: string): boolean {\r\n const isOpera = userAgent.includes(\"Opera\"); // 判断是否Opera浏览器\r\n return userAgent.includes(\"compatible\") && userAgent.includes(\"MSIE\") && !isOpera;\r\n}\r\n\r\nfunction isIE11(userAgent: string): boolean {\r\n return userAgent.includes(\"Trident\") && userAgent.includes(\"rv:11.0\");\r\n}\r\n\r\nfunction isEdge(userAgent: string): boolean {\r\n const isIE = userAgent.includes(\"compatible\") && userAgent.includes(\"MSIE\");\r\n return userAgent.includes(\"Edge\") && !isIE;\r\n}\r\n\r\nfunction isFF(userAgent: string): boolean {\r\n return userAgent.includes(\"Firefox\");\r\n}\r\n\r\nfunction isOpera(userAgent: string): boolean {\r\n return userAgent.includes(\"Opera\");\r\n}\r\n\r\nfunction isSafari(userAgent: string): boolean {\r\n return userAgent.includes(\"Safari\") && !userAgent.includes(\"Chrome\");\r\n}\r\n\r\nfunction isChrome(userAgent: string): boolean {\r\n return userAgent.includes(\"Chrome\") && userAgent.includes(\"Safari\");\r\n}\r\n\r\nfunction getIEVersion(userAgent: string): string {\r\n const reIE = /MSIE (\\d+\\.\\d+);/;\r\n const match = userAgent.match(reIE);\r\n const fIEVersion = match ? Number.parseFloat(match[1] || \"0\") : 0;\r\n if (fIEVersion === 7) return \"IE7\";\r\n else if (fIEVersion === 8) return \"IE8\";\r\n else if (fIEVersion === 9) return \"IE9\";\r\n else if (fIEVersion === 10) return \"IE10\";\r\n else return \"IE7以下\";\r\n}\r\n\r\n/**\r\n * 是否为ios\r\n * @returns {boolean} 是-否\r\n */\r\nexport function isIos(): boolean {\r\n const tag = getDeviceType();\r\n if (tag === \"iPhone\") return true;\r\n else return false;\r\n}\r\n\r\n/**\r\n * 是否为Android\r\n */\r\nexport function isAndroid(): boolean {\r\n const tag = getDeviceType();\r\n if (tag === \"Android\") return true;\r\n else return false;\r\n}\r\n\r\n/**\r\n * 是否为PC端\r\n */\r\nexport function isPC(): boolean {\r\n const userAgentInfo = navigator.userAgent;\r\n const Agents = [\"Android\", \"iPhone\", \"SymbianOS\", \"Windows Phone\", \"iPad\", \"iPod\"];\r\n let flag = true;\r\n for (let v = 0; v < Agents.length; v++) {\r\n const agent = Agents[v];\r\n if (agent && userAgentInfo.indexOf(agent) > 0) {\r\n flag = false;\r\n break;\r\n }\r\n }\r\n return flag;\r\n}\r\n\r\n/**\r\n * @description 判读是否为外链\r\n * @param path\r\n */\r\nexport function isExternal(path: string): boolean {\r\n return /^(?:https?:|mailto:|tel:|\\/\\/)/.test(path);\r\n}\r\n\r\n/**\r\n * @description 判断是否为json\r\n * @param value\r\n */\r\nexport function isJson(value: string | null): boolean {\r\n if (typeof value === \"string\") {\r\n try {\r\n const obj = JSON.parse(value);\r\n return !!(typeof obj === \"object\" && obj);\r\n } catch (e) {\r\n console.error(`error:${e}`);\r\n return false;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function isDayjsObject(value: any): value is dayjs.Dayjs {\r\n return dayjs.isDayjs(value);\r\n}\r\n","/**\r\n * TestID 生成工具函数\r\n * 用于为组件自动生成唯一、层级化的 testid\r\n *\r\n * @module testid-helper\r\n * @see e2e-testing-solution/TESTID-SPECIFICATION.md\r\n */\r\n\r\n/**\r\n * 从组件传入的 API 配置提取资源名称\r\n *\r\n * - 当 `api` 是字符串时,直接返回字符串(推荐传入类似 `client.queryUserList` 的唯一名称)\r\n * - 当 `api` 是函数引用时,返回函数名\r\n * - 其它情况返回空字符串,由调用方自行兜底\r\n *\r\n * @param api - API 字符串或函数\r\n * @returns 资源名称(原样或函数名)\r\n *\r\n * @example\r\n * ```ts\r\n * extractResourceFromApi('adminClientImpl.FindTriggerProjects')\r\n * // → 'adminClientImpl.FindTriggerProjects'\r\n *\r\n * extractResourceFromApi(CountryGetPageGET)\r\n * // → 'CountryGetPageGET'\r\n * ```\r\n */\r\nexport function extractResourceFromApi(api: string | Function): string {\r\n if (typeof api === 'string') \nreturn api.trim()\r\n\r\n if (typeof api === 'function') {\r\n const name = api.name || ''\r\n // 移除绑定函数的 'bound ' 前缀\r\n return name.replace(/^bound\\s+/i, '')\r\n }\r\n\r\n return ''\r\n}\r\n\r\n/**\r\n * 生成 testid\r\n *\r\n * 将多个部分拼接成完整的 testid,自动过滤 null、undefined 和空字符串\r\n *\r\n * @param parts - testid 的各个部分\r\n * @returns 拼接后的 testid\r\n *\r\n * @example\r\n * ```ts\r\n * generateTestId('user', 'form', 'field', 'username')\r\n * // → 'user-form-field-username'\r\n *\r\n * generateTestId('user', null, 'table', undefined, 'row', '123')\r\n * // → 'user-table-row-123'\r\n *\r\n * generateTestId('modal', 'user-edit')\r\n * // → 'modal-user-edit'\r\n * ```\r\n */\r\nexport function generateTestId(...parts: (string | undefined | null)[]): string {\r\n return parts\r\n .filter((part): part is string => {\r\n return part !== null && part !== undefined && part !== ''\r\n })\r\n .join('-')\r\n}\r\n\r\n/**\r\n * 转换为 kebab-case\r\n *\r\n * 支持以下转换:\r\n * - 空格分隔: \"Add User\" → \"add-user\"\r\n * - PascalCase: \"AddUser\" → \"add-user\"\r\n * - camelCase: \"addUser\" → \"add-user\"\r\n * - 下划线: \"add_user\" → \"add-user\"\r\n * - 中文: \"用户管理\" → \"yong-hu-guan-li\"(需要拼音库,可选功能)\r\n *\r\n * @param str - 要转换的字符串\r\n * @returns kebab-case 字符串\r\n *\r\n * @example\r\n * ```ts\r\n * toKebabCase('Add User')\r\n * // → 'add-user'\r\n *\r\n * toKebabCase('AddUser')\r\n * // → 'add-user'\r\n *\r\n * toKebabCase('addUser')\r\n * // → 'add-user'\r\n *\r\n * toKebabCase('add_user')\r\n * // → 'add-user'\r\n *\r\n * toKebabCase('Add-User')\r\n * // → 'add-user'\r\n * ```\r\n */\r\nexport function toKebabCase(str: string): string {\r\n if (!str) \nreturn ''\r\n\r\n return (\r\n str\r\n // 处理 PascalCase 和 camelCase: \"AddUser\" → \"Add-User\"\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n // 处理连续大写字母: \"XMLParser\" → \"XML-Parser\"\r\n .replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')\r\n // 将空格、下划线等替换为连字符\r\n .replace(/[\\s_]+/g, '-')\r\n // 移除特殊字符\r\n .replace(/[^\\w\\u4E00-\\u9FA5-]+/g, '-')\r\n // 转小写\r\n .toLowerCase()\r\n // 移除首尾连字符\r\n .replace(/^-+|-+$/g, '')\r\n // 合并多个连续的连字符\r\n .replace(/-+/g, '-')\r\n )\r\n}\r\n\r\n/**\r\n * 从 fieldNames 生成表单名称\r\n *\r\n * 取 schema 中前 N 个 fieldName 拼接,用于自动生成表单名称\r\n *\r\n * @param fieldNames - 字段名称数组\r\n * @param maxLength - 最多取几个字段名(默认 3)\r\n * @returns 拼接后的表单名称\r\n *\r\n * @example\r\n * ```ts\r\n * generateFormName(['username', 'email', 'phone', 'address'])\r\n * // → 'username-email-phone'\r\n *\r\n * generateFormName(['username', 'email'], 3)\r\n * // → 'username-email'\r\n *\r\n * generateFormName(['username'], 3)\r\n * // → 'username'\r\n *\r\n * generateFormName([])\r\n * // → 'form'\r\n * ```\r\n */\r\nexport function generateFormName(fieldNames: string[], maxLength = 3): string {\r\n if (!fieldNames || fieldNames.length === 0) {\r\n return 'form'\r\n }\r\n\r\n const validFieldNames = fieldNames\r\n .filter((name): name is string => {\r\n return name !== null && name !== undefined && name !== ''\r\n })\r\n .slice(0, maxLength)\r\n\r\n if (validFieldNames.length === 0) {\r\n return 'form'\r\n }\r\n\r\n return validFieldNames.join('-')\r\n}\r\n\r\n/**\r\n * 从标题提取 ID\r\n *\r\n * 用于从 Modal/Drawer 的 title 生成 ID\r\n *\r\n * @param title - 标题字符串\r\n * @returns kebab-case ID\r\n *\r\n * @example\r\n * ```ts\r\n * extractIdFromTitle('Add User')\r\n * // → 'add-user'\r\n *\r\n * extractIdFromTitle('编辑用户信息')\r\n * // → 'bian-ji-yong-hu-xin-xi'\r\n * ```\r\n */\r\nexport function extractIdFromTitle(title: string): string {\r\n if (!title) \nreturn ''\r\n return toKebabCase(title)\r\n}\r\n\r\n/**\r\n * 验证 testid 是否有效\r\n *\r\n * 检查 testid 是否符合命名规范:\r\n * - 非空\r\n * - 只包含小写字母、数字、连字符\r\n * - 不以连字符开头或结尾\r\n *\r\n * @param testid - 要验证的 testid\r\n * @returns 是否有效\r\n *\r\n * @example\r\n * ```ts\r\n * isValidTestId('user-form-field-username')\r\n * // → true\r\n *\r\n * isValidTestId('User-Form')\r\n * // → false (包含大写字母)\r\n *\r\n * isValidTestId('-user-form')\r\n * // → false (以连字符开头)\r\n *\r\n * isValidTestId('')\r\n * // → false (空字符串)\r\n * ```\r\n */\r\nexport function isValidTestId(testid: string): boolean {\r\n if (!testid) \nreturn false\r\n\r\n // 只允许小写字母、数字、连字符\r\n const validPattern = /^[a-z0-9]+(-[a-z0-9]+)*$/\r\n return validPattern.test(testid)\r\n}\r\n","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","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);\nconst isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\nconst isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelWeight = label => label === 'number' || label === 'weight';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [{\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset()\n }],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [{\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset()\n }],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{\n 'inset-bs': scaleInset()\n }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{\n 'inset-be': scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{\n pbs: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{\n pbe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{\n mbs: scaleMargin()\n }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{\n mbe: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{\n inline: ['auto', ...scaleSizingInline()]\n }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{\n 'min-inline': ['auto', ...scaleSizingInline()]\n }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{\n 'max-inline': ['none', ...scaleSizingInline()]\n }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{\n block: ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{\n 'min-block': ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{\n 'max-block': ['none', ...scaleSizingBlock()]\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]\n }],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{\n 'font-features': [isArbitraryValue]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{\n 'border-bs': scaleBorderWidth()\n }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{\n 'border-be': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{\n 'border-bs': scaleColor()\n }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{\n 'border-be': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{\n 'scroll-mbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{\n 'scroll-mbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{\n 'scroll-pbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{\n 'scroll-pbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","function set(obj, key, val) {\n\tif (typeof val.value === 'object') val.value = klona(val.value);\n\tif (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {\n\t\tObject.defineProperty(obj, key, val);\n\t} else obj[key] = val.value;\n}\n\nexport function klona(x) {\n\tif (typeof x !== 'object') return x;\n\n\tvar i=0, k, list, tmp, str=Object.prototype.toString.call(x);\n\n\tif (str === '[object Object]') {\n\t\ttmp = Object.create(x.__proto__ || null);\n\t} else if (str === '[object Array]') {\n\t\ttmp = Array(x.length);\n\t} else if (str === '[object Set]') {\n\t\ttmp = new Set;\n\t\tx.forEach(function (val) {\n\t\t\ttmp.add(klona(val));\n\t\t});\n\t} else if (str === '[object Map]') {\n\t\ttmp = new Map;\n\t\tx.forEach(function (val, key) {\n\t\t\ttmp.set(klona(key), klona(val));\n\t\t});\n\t} else if (str === '[object Date]') {\n\t\ttmp = new Date(+x);\n\t} else if (str === '[object RegExp]') {\n\t\ttmp = new RegExp(x.source, x.flags);\n\t} else if (str === '[object DataView]') {\n\t\ttmp = new x.constructor( klona(x.buffer) );\n\t} else if (str === '[object ArrayBuffer]') {\n\t\ttmp = x.slice(0);\n\t} else if (str.slice(-6) === 'Array]') {\n\t\t// ArrayBuffer.isView(x)\n\t\t// ~> `new` bcuz `Buffer.slice` => ref\n\t\ttmp = new x.constructor(x);\n\t}\n\n\tif (tmp) {\n\t\tfor (list=Object.getOwnPropertySymbols(x); i < list.length; i++) {\n\t\t\tset(tmp, list[i], Object.getOwnPropertyDescriptor(x, list[i]));\n\t\t}\n\n\t\tfor (i=0, list=Object.getOwnPropertyNames(x); i < list.length; i++) {\n\t\t\tif (Object.hasOwnProperty.call(tmp, k=list[i]) && tmp[k] === x[k]) continue;\n\t\t\tset(tmp, k, Object.getOwnPropertyDescriptor(x, k));\n\t\t}\n\t}\n\n\treturn tmp || x;\n}\n","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var r=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),r.call(this,t)};var o=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else o.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s;if(0===u)return this.utc(f);var r=this.clone();if(f)return r.$offset=u,r.$u=!1,r;var o=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(r=this.local().add(u+o,t)).$offset=u,r.$x.$localOffset=o,r};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","!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_plugin_timezone=e()}(this,(function(){\"use strict\";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||\"short\",o=t+\"|\"+i,r=e[o];return r||(r=new Intl.DateTimeFormat(\"en-US\",{hour12:!1,timeZone:t,year:\"numeric\",month:\"2-digit\",day:\"2-digit\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(r[c]=parseInt(m,10))}var d=r[3],l=24===d?0:d,h=r[0]+\"-\"+r[1]+\"-\"+r[2]+\" \"+l+\":\"+r[4]+\":\"+r[5]+\":000\",v=+e;return(o.utc(h).valueOf()-(v-=v%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n,i=this.utcOffset(),a=this.toDate(),u=a.toLocaleString(\"en-US\",{timeZone:t}),f=Math.round((a-new Date(u))/1e3/60),s=15*-Math.round(a.getTimezoneOffset()/15)-f;if(!Number(s))n=this.utcOffset(0,e);else if(n=o(u,{locale:this.$L}).$set(\"millisecond\",this.$ms).utcOffset(s,!0),e){var m=n.utcOffset();n=n.add(i-m,\"minute\")}return n.$x.$timezone=t,n},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return\"timezonename\"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"),{locale:this.$L});return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if(\"string\"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return[i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t}}}));","import type { WritableComputedRef } from \"vue\";\r\nimport { isArray, isObject } from \"./is\";\r\nimport { computed } from \"vue\";\r\nimport XEUtils from \"xe-utils\";\r\nimport { twMerge } from \"tailwind-merge\";\r\nimport type { ClassValue } from \"clsx\";\r\nimport { clsx } from \"clsx\";\r\nimport { klona } from \"klona/full\";\r\nimport dayjs from \"dayjs\";\r\nimport utc from \"dayjs/plugin/utc\";\r\nimport timezone from \"dayjs/plugin/timezone\";\r\n\r\nlet isExtendDayjs = false;\r\n\r\n/**\r\n * 获取localStorage数据,item值非json对象,请直接localStorage.setItem\r\n * @param item 键名\r\n */\r\nexport function getStorage<T = any>(item: string): T | string | null {\r\n if (!item) return null;\r\n const localdata = localStorage.getItem(item);\r\n if (!localdata) return null;\r\n\r\n try {\r\n return JSON.parse(localdata, (_key, value) => {\r\n if (value && typeof value === \"string\") {\r\n const fn = function () {\r\n return value.replace(\"SJZY_FUNCTION\", \"\");\r\n };\r\n return value.includes(\"SJZY_FUNCTION\") ? fn() : value;\r\n }\r\n return value;\r\n });\r\n } catch {\r\n // console.log(error)\r\n return localdata;\r\n }\r\n}\r\n\r\n/**\r\n * @description 计算文字宽度\r\n */\r\nexport function calcWordsWidth(\r\n words: string,\r\n fontSize = \"12\",\r\n fontFamily = \"Microsoft YaHei,Arial,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue','Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji'\",\r\n): number {\r\n let wordsWidth = 0;\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n if (ctx) {\r\n ctx.font = `${fontSize} ${fontFamily}`;\r\n wordsWidth = ctx.measureText(words).width;\r\n }\r\n return wordsWidth;\r\n}\r\n\r\n/**\r\n * @description 脏数据检测方法\r\n * @param newObj 新对象\r\n * @param oldObj 原始对象\r\n * @param keyObj 对象中数组的唯一key e: { list: { key: 'id' }, list2: { key: 'id' }, }\r\n */\r\nexport function getDifference(\r\n newObj: { [key: string]: any },\r\n oldObj: { [key: string]: any },\r\n keyObj?: any,\r\n): {\r\n [k: string]: any;\r\n} {\r\n const excludeAll = keyObj?.excludeAll || [];\r\n const excludeItem = keyObj?.exclude || [];\r\n if (!excludeAll.includes(\"Id\")) excludeAll.push(\"Id\");\r\n if (!excludeAll.includes(\"rowId\")) excludeAll.push(\"rowId\");\r\n return Object.fromEntries(\r\n Object.entries(newObj).reduce((r: any, [k, v]) => {\r\n if (excludeAll.includes(k) || excludeItem.includes(k)) return r;\r\n else if (v && isObject(v)) setDifferenceObj(keyObj, oldObj, v, k, r);\r\n else if (v && isArray(v)) setDifferenceArr(keyObj, oldObj, v, k, r);\r\n else setDifferenceField(keyObj, oldObj, v, k, r);\r\n\r\n return r;\r\n }, []),\r\n );\r\n}\r\n/** 脏数据检测方法--设置对象 */\r\nexport function setDifferenceObj(keyObj: any, oldObj: any, v: any, k: any, r: any): void {\r\n const temp = getDifference(v, oldObj[k] || {}, {\r\n excludeAll: keyObj?.excludeAll,\r\n ...keyObj,\r\n });\r\n if (Object.keys(temp).length) r.push([k, temp]);\r\n}\r\n/** 脏数据检测方法--设置数组 */\r\nexport function setDifferenceArr(keyObj: any, oldObj: any, v: any[], k: any, r: any): void {\r\n const arr: any[] = [];\r\n const arrKey = (keyObj || {})[k]?.key;\r\n if (oldObj[k]) {\r\n const len: any[] = v?.length >= oldObj[k]?.length ? v : oldObj[k];\r\n const min: any[] = v?.length < oldObj[k]?.length ? v : oldObj[k];\r\n if (arrKey) {\r\n len.forEach(e => {\r\n const o = min.find((i: any) => i[arrKey] === e[arrKey]);\r\n if (o) {\r\n const t = getDifference(e, o, {\r\n excludeAll: keyObj?.excludeAll,\r\n ...keyObj[k],\r\n });\r\n if (Object.keys(t).length) arr.push({ [arrKey]: o[arrKey], ...t });\r\n } else {\r\n arr.push(e);\r\n }\r\n });\r\n } else {\r\n len.forEach((e, index) => {\r\n const o = min[index];\r\n if ((isObject(e) && !isObject(o)) || (isArray(e) && !isArray(o)) || typeof e !== typeof o || !o) {\r\n arr.push(e);\r\n } else if (isObject(e) || isArray(e)) {\r\n const t = getDifference(e, o, { excludeAll: keyObj?.excludeAll });\r\n if (Object.keys(t).length) arr.push({ ...t });\r\n } else if (e !== o) {\r\n arr.push(e);\r\n }\r\n });\r\n }\r\n } else {\r\n arr.push(...v);\r\n }\r\n\r\n if (arr.length) r.push([k, arr]);\r\n}\r\n/** 脏数据检测方法--设置普通字段 */\r\nexport function setDifferenceField(keyObj: any, oldObj: any, v: any[], k: any, r: any): void {\r\n const notNullToFalse = keyObj?.notNullToFalse || [];\r\n if (\r\n (typeof v === \"string\" && typeof oldObj[k] === \"number\") ||\r\n (typeof v === \"number\" && typeof oldObj[k] === \"string\")\r\n ) {\r\n if (Number(v) !== Number(oldObj[k])) r.push([k, v]);\r\n } else if ([undefined, null, \"\"].includes(v as any)) {\r\n if (![undefined, null, \"\"].includes(oldObj[k] as any)) r.push([k, v]);\r\n } else if (v !== oldObj[k]) {\r\n if ((v as any) === false && [undefined, null, \"\"].includes(oldObj[k] as any) && !notNullToFalse.includes(k)) {\r\n return;\r\n }\r\n r.push([k, v]);\r\n }\r\n}\r\n\r\nexport function deepMerge<T = any>(src: any = {}, target: any = {}): T {\r\n let key: string;\r\n for (key in target) src[key] = isObject(src[key]) ? deepMerge(src[key], target[key]) : (src[key] = target[key]);\r\n\r\n return src;\r\n}\r\n\r\nexport function toCssUnit(val?: number | string, unit = \"px\"): string {\r\n if (XEUtils.isNumber(val) || /^\\d+$/.test(`${val}`)) {\r\n return `${val}${unit}`;\r\n }\r\n return `${val || \"\"}`;\r\n}\r\n/** 响应式绑定 */\r\nexport function useVModel(props: Record<string, any>, propName: string, emit: any): WritableComputedRef<any, any> {\r\n // console.log(props[propName], '------------')\r\n return computed({\r\n get() {\r\n return new Proxy(props[propName], {\r\n set(obj, name, val) {\r\n emit(`update:${propName}`, {\r\n ...obj,\r\n [name]: val,\r\n });\r\n return true;\r\n },\r\n });\r\n },\r\n set(value) {\r\n emit(`update:${propName}`, value);\r\n },\r\n });\r\n}\r\n\r\nexport function bindMethods<T extends object>(instance: T): T {\r\n const proto = Object.getPrototypeOf(instance);\r\n if (!proto || proto === Object.prototype) {\r\n return instance;\r\n }\r\n\r\n const propertyNames = Object.getOwnPropertyNames(proto);\r\n for (const name of propertyNames) {\r\n const value = (instance as any)[name];\r\n if (name !== \"constructor\" && typeof value === \"function\") {\r\n (instance as any)[name] = value.bind(instance);\r\n }\r\n }\r\n\r\n return instance;\r\n}\r\n\r\nexport function deepCopy<T>(obj: T): T {\r\n if (obj === null || typeof obj !== \"object\") {\r\n return obj;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n return new Date(obj.getTime()) as any;\r\n }\r\n\r\n if (obj instanceof RegExp) {\r\n return new RegExp(obj) as any;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n return obj.map(item => deepCopy(item)) as any;\r\n }\r\n\r\n const result: any = {};\r\n Object.keys(obj).forEach(key => {\r\n result[key] = deepCopy((obj as any)[key]);\r\n });\r\n\r\n return result;\r\n}\r\n\r\nexport function arrayToTree(items: any[], id = \"id\", parentId = \"parentId\", children = \"children\"): any[] {\r\n const itemMap = new Map();\r\n const result: any[] = [];\r\n\r\n items.forEach(item => {\r\n itemMap.set(item[id], { ...item, [children]: [] });\r\n });\r\n\r\n items.forEach(item => {\r\n const currentItem = itemMap.get(item[id]);\r\n if (item[parentId]) {\r\n const parentItem = itemMap.get(item[parentId]);\r\n if (parentItem) parentItem[children].push(currentItem);\r\n } else {\r\n result.push(currentItem);\r\n }\r\n });\r\n\r\n return result;\r\n}\r\n\r\nexport function getFirstNonNullOrUndefined(...args: any[]): any {\r\n for (const arg of args) {\r\n if (arg !== undefined && arg !== null) {\r\n return arg;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\n/** className 合并 */\r\nexport function clnm(...inputs: ClassValue[]): string {\r\n return twMerge(clsx(inputs));\r\n}\r\n\r\n/**\r\n * 触发窗口的 resize 事件\r\n * @description 手动触发浏览器窗口的 resize 事件,用于强制更新依赖窗口大小的组件或布局\r\n *\r\n * @example\r\n * // 在DOM更新后触发重新布局\r\n * updateDOM()\r\n * triggerWindowResize()\r\n *\r\n * // 在组件挂载后强制更新响应式布局\r\n * onMounted(() => {\r\n * triggerWindowResize()\r\n * })\r\n */\r\nexport function triggerWindowResize(): void {\r\n // 创建一个新的 resize 事件\r\n const resizeEvent = new Event(\"resize\");\r\n\r\n // 触发 window 的 resize 事件\r\n window.dispatchEvent(resizeEvent);\r\n}\r\n\r\n/**\r\n * 遍历目标数组 从源对象获取数据并赋值。\r\n * @param targrt array 目标对象\r\n * @param sources {} 源对象\r\n * @param key 关联字段key\r\n * @param content 要修改的字段 字段名string 或数组\r\n */\r\nexport function arrGive(targrt: any, sources: any, key: any = \"prop\", content: any = \"content\"): void {\r\n targrt.forEach((element: any) => {\r\n if (Object.prototype.hasOwnProperty.call(element, key)) {\r\n if (isArray(content)) {\r\n content.forEach((contentItem: any) => {\r\n if (Object.prototype.hasOwnProperty.call(element, contentItem)) element[contentItem] = sources[element[key]];\r\n });\r\n } else {\r\n if (Object.prototype.hasOwnProperty.call(element, content)) element[content] = sources[element[key]];\r\n }\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * 时间转换过滤器 依赖dayjs 默认UTC时间\r\n * @param value key 时间戳接收毫秒\r\n * @param format 格式化样式YYYY-MM-DD HH:mm:ss.SSS A (dayjs的format)\r\n * @param tz 默认时区 Asia/Shanghai\r\n */\r\nexport const dateFormat = function (\r\n value: string | number | Date,\r\n format = \"YYYY-MM-DD HH:mm:ss\",\r\n tz: string = \"Asia/Shanghai\",\r\n): string {\r\n if (value === \"\" || value === null || value === undefined || value === 0 || value === \"0\") return \"\";\r\n\r\n if (!dayjs(value).isValid()) return \"\";\r\n\r\n if (!isExtendDayjs) {\r\n dayjs.extend(utc);\r\n dayjs.extend(timezone);\r\n isExtendDayjs = true;\r\n }\r\n\r\n return dayjs(value).tz(tz).format(format);\r\n};\r\n\r\n/**\r\n * 深度克隆对象或数组 禁止循环引用对象\r\n * @description 使用 klona 库进行深度克隆,支持所有类型的数据结构 https://www.npmjs.com/package/klona\r\n * @template T 要克隆的数据类型 (默认: any)\r\n * @param source 源数据\r\n * @returns 深度克隆后的新数据\r\n *\r\n * @examples\r\n * // 克隆对象\r\n * const obj = { a: 1, b: { c: 2 } }\r\n * const clonedObj = cloneDeep(obj)\r\n *\r\n * // 克隆数组\r\n * const arr = [1, { b: 2 }]\r\n * const clonedArr = cloneDeep(arr)\r\n *\r\n * // 克隆 Date 对象\r\n * const date = new Date()\r\n * const clonedDate = cloneDeep(date)\r\n */\r\nexport function cloneDeep<T = any>(source: T): T {\r\n return klona(source);\r\n}\r\n\r\n/**\r\n * 从对象中排除指定的属性\r\n * 返回一个新对象,不包含指定的属性\r\n */\r\nexport function omit<T, TKeys extends keyof T>(obj: T, keys: TKeys[]): Omit<T, TKeys> {\r\n if (!obj) return {} as Omit<T, TKeys>;\r\n if (!keys || keys.length === 0) return obj as Omit<T, TKeys>;\r\n return keys.reduce(\r\n (acc, key) => {\r\n // 这里确实很粗暴,我知道,它在修改对象\r\n // 但在这个非常有限的范围内,我们允许这样做\r\n // 因为这涉及到 omit 函数的性能问题\r\n // 这不是一个应该在其他地方使用的模式或实践\r\n delete acc[key];\r\n return acc;\r\n },\r\n { ...obj },\r\n );\r\n}\r\n\r\n/**\r\n * 防抖函数\r\n * @param func 实际要执行的函数\r\n * @param delay 延迟时间,单位是毫秒(ms)\r\n * @param options 配置选项\r\n * @return 返回一个防抖函数\r\n */\r\nexport function debounce<TArgs extends any[], TReturn = any>(\r\n func: (...args: TArgs) => TReturn,\r\n delay: number = 200,\r\n options: DebounceSettings = {},\r\n): DebounceFunction<TArgs, TReturn> {\r\n const { leading = false, trailing = true, maxWait } = options;\r\n\r\n // 状态变量\r\n let timer: number | undefined;\r\n let maxTimer: number | undefined;\r\n let lastCallTime: number | undefined;\r\n let lastInvokeTime = 0;\r\n let lastArgs: TArgs | undefined;\r\n let result: any;\r\n\r\n // 执行原函数\r\n function invokeFunc(time: number): TReturn {\r\n const args = lastArgs;\r\n lastArgs = undefined; // 立即清理引用\r\n lastInvokeTime = time;\r\n result = func(...args);\r\n return result;\r\n }\r\n\r\n // 安全的定时器清理\r\n function clearAllTimers(): void {\r\n if (timer !== undefined) {\r\n window.clearTimeout(timer);\r\n timer = undefined;\r\n }\r\n if (maxTimer !== undefined) {\r\n window.clearTimeout(maxTimer);\r\n maxTimer = undefined;\r\n }\r\n }\r\n\r\n // 完整的状态重置\r\n function resetState(): void {\r\n clearAllTimers();\r\n lastInvokeTime = 0;\r\n lastArgs = undefined;\r\n lastCallTime = undefined;\r\n result = undefined; // 清理结果引用\r\n }\r\n\r\n // 计算剩余等待时间\r\n function remainingWait(time: number): number {\r\n const timeSinceLastCall = time - lastCallTime!;\r\n const timeSinceLastInvoke = time - lastInvokeTime;\r\n const timeWaiting = delay - timeSinceLastCall;\r\n\r\n return maxWait !== undefined ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\r\n }\r\n\r\n // 判断是否应该立即执行\r\n function shouldInvoke(time: number): boolean {\r\n if (lastCallTime === undefined) return true;\r\n\r\n const timeSinceLastCall = time - lastCallTime;\r\n const timeSinceLastInvoke = time - lastInvokeTime;\r\n\r\n return (\r\n timeSinceLastCall >= delay || timeSinceLastCall < 0 || (maxWait !== undefined && timeSinceLastInvoke >= maxWait)\r\n );\r\n }\r\n\r\n // leading edge 处理\r\n function leadingEdge(time: number): TReturn | undefined {\r\n lastInvokeTime = time;\r\n\r\n // 确保旧定时器被清理\r\n clearAllTimers();\r\n\r\n timer = window.setTimeout(timerExpired, delay);\r\n\r\n if (maxWait !== undefined) {\r\n maxTimer = window.setTimeout(maxTimerExpired, maxWait);\r\n }\r\n\r\n return leading ? invokeFunc(time) : result;\r\n }\r\n\r\n // trailing edge 处理\r\n function trailingEdge(time: number): TReturn | undefined {\r\n timer = undefined;\r\n\r\n if (trailing && lastArgs !== undefined) {\r\n return invokeFunc(time);\r\n }\r\n\r\n lastArgs = undefined; // 清理参数引用\r\n return result;\r\n }\r\n\r\n // 普通定时器到期处理\r\n function timerExpired(): void {\r\n const time = Date.now();\r\n\r\n if (shouldInvoke(time)) {\r\n trailingEdge(time);\r\n return;\r\n }\r\n\r\n // 重新计算等待时间并启动定时器\r\n const remaining = remainingWait(time);\r\n if (remaining > 0) {\r\n timer = window.setTimeout(timerExpired, remaining);\r\n } else {\r\n timer = undefined;\r\n }\r\n }\r\n\r\n // maxWait 定时器到期处理\r\n function maxTimerExpired(): void {\r\n const time = Date.now();\r\n\r\n // 清理所有定时器\r\n clearAllTimers();\r\n\r\n if (lastArgs !== undefined) {\r\n invokeFunc(time);\r\n }\r\n }\r\n\r\n // 主防抖函数\r\n const debounced: DebounceFunction<TArgs, TReturn> = (...args: TArgs): TReturn | undefined => {\r\n const time = Date.now();\r\n const isInvoking = shouldInvoke(time);\r\n\r\n // 保存参数,即使没有参数也要保存空数组\r\n lastArgs = args || ([] as TArgs);\r\n lastCallTime = time;\r\n\r\n if (isInvoking) {\r\n if (timer === undefined) {\r\n return leadingEdge(time);\r\n }\r\n\r\n if (maxWait !== undefined) {\r\n clearAllTimers();\r\n\r\n timer = window.setTimeout(timerExpired, delay);\r\n maxTimer = window.setTimeout(maxTimerExpired, maxWait);\r\n\r\n return leading ? invokeFunc(time) : result;\r\n }\r\n }\r\n\r\n if (timer === undefined) {\r\n timer = window.setTimeout(timerExpired, delay);\r\n\r\n if (maxWait !== undefined) {\r\n maxTimer = window.setTimeout(maxTimerExpired, maxWait);\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n // 检查是否有待执行的调用\r\n debounced.isPending = (): boolean => {\r\n return timer !== undefined || maxTimer !== undefined;\r\n };\r\n\r\n // 取消所有待执行的调用\r\n debounced.cancel = (): void => {\r\n resetState();\r\n };\r\n\r\n // 立即执行待执行的函数\r\n debounced.flush = (...args: TArgs): TReturn | undefined => {\r\n if (!debounced.isPending()) {\r\n if (args.length > 0) {\r\n return func(...args);\r\n }\r\n return result;\r\n }\r\n\r\n const argsToUse = lastArgs !== undefined ? lastArgs : args;\r\n\r\n resetState();\r\n\r\n return func(...argsToUse);\r\n };\r\n\r\n return debounced;\r\n}\r\n\r\nexport type DebounceFunction<TArgs extends any[], TReturn = any> = {\r\n (...args: TArgs): TReturn;\r\n /**\r\n * Cancels the debounced function\r\n */\r\n cancel: () => void;\r\n /**\r\n * Checks if there is any invocation debounced\r\n */\r\n isPending: () => boolean;\r\n /**\r\n * Runs the debounced function immediately\r\n */\r\n flush: (...args: TArgs) => TReturn;\r\n};\r\n","function isPlainObject(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {\n return false;\n }\n if (Symbol.iterator in value) {\n return false;\n }\n if (Symbol.toStringTag in value) {\n return Object.prototype.toString.call(value) === \"[object Module]\";\n }\n return true;\n}\n\nfunction _defu(baseObject, defaults, namespace = \".\", merger) {\n if (!isPlainObject(defaults)) {\n return _defu(baseObject, {}, namespace, merger);\n }\n const object = Object.assign({}, defaults);\n for (const key in baseObject) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = baseObject[key];\n if (value === null || value === void 0) {\n continue;\n }\n if (merger && merger(object, key, value, namespace)) {\n continue;\n }\n if (Array.isArray(value) && Array.isArray(object[key])) {\n object[key] = [...value, ...object[key]];\n } else if (isPlainObject(value) && isPlainObject(object[key])) {\n object[key] = _defu(\n value,\n object[key],\n (namespace ? `${namespace}.` : \"\") + key.toString(),\n merger\n );\n } else {\n object[key] = value;\n }\n }\n return object;\n}\nfunction createDefu(merger) {\n return (...arguments_) => (\n // eslint-disable-next-line unicorn/no-array-reduce\n arguments_.reduce((p, c) => _defu(p, c, \"\", merger), {})\n );\n}\nconst defu = createDefu();\nconst defuFn = createDefu((object, key, currentValue) => {\n if (object[key] !== void 0 && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\nconst defuArrayFn = createDefu((object, key, currentValue) => {\n if (Array.isArray(object[key]) && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\n\nexport { createDefu, defu as default, defu, defuArrayFn, defuFn };\n","import type { Defu } from 'defu'\r\nimport { createDefu } from 'defu'\r\n\r\nexport {\r\n /** 定制合并 createMerge=createDefu https://www.npmjs.com/package/defu */\r\n createDefu as createMerge,\r\n /** 对象合并 merge=defu https://www.npmjs.com/package/defu */\r\n defu as merge,\r\n /** 过滤 mergFn=defuFn https://www.npmjs.com/package/defu */\r\n defuFn as mergFn,\r\n} from 'defu'\r\n\r\n/**\r\n * 对象合并函数,支持指定字段直接覆盖和数组类型直接替换\r\n * @param source 源对象,将被合并的目标对象\r\n * @param defaultsAndOptions 其他默认对象,最后一项可为 Source 的 key 数组,指定需要覆盖的 key\r\n * @returns 合并后的对象\r\n */\r\nexport function mergeWithArrayOverride<\r\n Source extends Record<string, any>,\r\n Defaults extends Array<Record<string, any>>,\r\n>(source: Source, ...defaultsAndOptions: [...Defaults]): Defu<Source, Defaults>\r\nexport function mergeWithArrayOverride<\r\n Source extends Record<string, any>,\r\n Defaults extends Array<Record<string, any>>,\r\n>(source: Source, ...defaultsAndOptions: [...Defaults, Array<keyof Source>]): Defu<Source, Defaults>\r\nexport function mergeWithArrayOverride<\r\n Source extends Record<string, any>,\r\n Defaults extends Array<Record<string, any>>,\r\n>(source: Source, ...defaultsAndOptions: [...Defaults, Array<keyof Source>]) {\r\n // 初始化需要覆盖的key数组\r\n let overrideKeys: Array<keyof Source> = []\r\n const lastItem = defaultsAndOptions[defaultsAndOptions.length - 1]\r\n // 检查最后一个参数是否是覆盖key数组\r\n if (\r\n defaultsAndOptions.length > 0 &&\r\n Array.isArray(lastItem) &&\r\n lastItem.every(item => ['string', 'number', 'symbol'].includes(typeof item))\r\n ) {\r\n overrideKeys = defaultsAndOptions.pop() as Array<keyof Source>\r\n }\r\n\r\n // 使用defu创建自定义合并函数\r\n return createDefu((originObj, key, updates) => {\r\n // 如果key在覆盖列表中,直接替换值\r\n if (overrideKeys.includes(key as keyof Source)) {\r\n originObj[key] = updates\r\n return true\r\n }\r\n // 如果原值和更新值都是数组,直接替换数组\r\n if (Array.isArray(originObj[key]) && Array.isArray(updates)) {\r\n originObj[key] = updates\r\n return true\r\n }\r\n })(source, ...defaultsAndOptions)\r\n}\r\n\r\n// https://www.npmjs.com/package/defu\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 Decimal from 'decimal.js'\r\n\r\ntype Recordable<T = any> = Record<string, T>\r\n\r\n/**\r\n * 加法运算\r\n * @param args 运算数\r\n */\r\nexport function add(...args: (number | string)[]): number {\r\n let result = new Decimal(args[0])\r\n for (let i = 1; i < args.length; i++) result = result.add(new Decimal(args[i]))\r\n\r\n return result.toNumber()\r\n}\r\n\r\n/**\r\n * 减法运算\r\n * @param args 运算数\r\n */\r\nexport function subtract(...args: (number | string)[]): number {\r\n let result = new Decimal(args[0])\r\n for (let i = 1; i < args.length; i++) result = result.sub(new Decimal(args[i]))\r\n\r\n return result.toNumber()\r\n}\r\n\r\n/**\r\n * 乘法运算\r\n * @param args 运算数\r\n */\r\nexport function multiply(...args: (number | string)[]): number {\r\n let result = new Decimal(args[0])\r\n for (let i = 1; i < args.length; i++) result = result.mul(new Decimal(args[i]))\r\n\r\n return result.toNumber()\r\n}\r\n\r\n/**\r\n * 除法运算\r\n * @param args 运算数\r\n */\r\nexport function divide(...args: (number | string)[]): number {\r\n let result = new Decimal(args[0])\r\n for (let i = 1; i < args.length; i++) result = result.div(new Decimal(args[i]))\r\n\r\n return result.toNumber()\r\n}\r\n\r\n/**\r\n * 合计数组中所有数值\r\n * @param datas 需要计算的数组,可以是数字数组或字符串数组(字符串会被转换为数字)\r\n * @returns {number} 返回数组中所有数值的总和\r\n */\r\nexport function sumTotal(...args: (number | string)[]) {\r\n return args.reduce((total, item) => calc(total).add(item).toNumber(), 0)\r\n}\r\n\r\n/**\r\n * 数组对象合计\r\n * @param datas 需要计算的数组对象\r\n * @param iteratee 迭代函数,用于从每个对象中提取需要计算的数值\r\n * @returns {number} 返回所有对象中提取数值的总和\r\n */\r\nexport function sumTotalBy(datas: Recordable[], iteratee: (item: Recordable) => number | string) {\r\n return datas.reduce((total, item) => calc(total).add(iteratee(item)).toNumber(), 0)\r\n}\r\n\r\n/**\r\n * 分类合计\r\n * @param datas 需要计算的数组对象\r\n * @param keyIteratee 键提取函数\r\n * @param valueIteratee 值提取函数\r\n */\r\nexport function clsSumTotalBy(\r\n datas: Recordable[],\r\n keyIteratee: (item: Recordable) => string | number,\r\n valueIteratee: (item: Recordable) => number | string\r\n) {\r\n const result: { [key: string]: number } = {}\r\n const getValue = valueIteratee\r\n\r\n datas.forEach(item => {\r\n const key = keyIteratee(item)\r\n if (key) {\r\n const value = getValue(item)\r\n result[key] = calc(result[key] || 0)\r\n .add(value)\r\n .toNumber()\r\n }\r\n })\r\n\r\n return result\r\n}\r\n\r\n/** 计算封装 */\r\nexport function calc(value: number | string): Decimal {\r\n const bool1 = Number(value) || value === 0\r\n const bool2 = Number.isNaN(Number(value))\r\n const decimal = new Decimal(value)\r\n if (bool1 && !bool2) {\r\n return decimal\r\n } else {\r\n console.error('请输入合理数字!')\r\n const decimal = new Decimal(Number.NaN)\r\n return decimal\r\n }\r\n}\r\n\r\nexport default {\r\n add,\r\n subtract,\r\n multiply,\r\n divide,\r\n sumTotal,\r\n sumTotalBy,\r\n clsSumTotalBy,\r\n calc,\r\n}\r\n","export class StateHandler {\r\n private condition: boolean = false\r\n private promiseResolvers: {\r\n resolve: (value: void | PromiseLike<void>) => void\r\n reject: (reason?: any) => void\r\n } | null = null\r\n\r\n isConditionTrue(): boolean {\r\n return this.condition\r\n }\r\n\r\n reset(): void {\r\n this.condition = false\r\n this.clearPromises()\r\n }\r\n\r\n setConditionFalse(): void {\r\n this.condition = false\r\n if (this.promiseResolvers) {\r\n this.promiseResolvers.reject()\r\n this.clearPromises()\r\n }\r\n }\r\n\r\n setConditionTrue(): void {\r\n this.condition = true\r\n if (this.promiseResolvers) {\r\n this.promiseResolvers.resolve()\r\n this.clearPromises()\r\n }\r\n }\r\n\r\n waitForCondition(): Promise<void> {\r\n if (this.condition) {\r\n return Promise.resolve()\r\n }\r\n const { promise, resolve, reject } = Promise.withResolvers<void>()\r\n this.promiseResolvers = { resolve, reject }\r\n return promise\r\n }\r\n\r\n private clearPromises() {\r\n this.promiseResolvers = null\r\n }\r\n}\r\n\r\nexport class StateHandlerOld {\r\n private condition: boolean = false\r\n private rejectCondition: (() => void) | null = null\r\n private resolveCondition: (() => void) | null = null\r\n\r\n isConditionTrue(): boolean {\r\n return this.condition\r\n }\r\n\r\n reset(): void {\r\n this.condition = false\r\n this.clearPromises()\r\n }\r\n\r\n // 触发状态为 false 时,reject\r\n setConditionFalse(): void {\r\n this.condition = false\r\n if (this.rejectCondition) {\r\n this.rejectCondition()\r\n this.clearPromises()\r\n }\r\n }\r\n\r\n // 触发状态为 true 时,resolve\r\n setConditionTrue(): void {\r\n this.condition = true\r\n if (this.resolveCondition) {\r\n this.resolveCondition()\r\n this.clearPromises()\r\n }\r\n }\r\n\r\n // 返回一个 Promise,等待 condition 变为 true\r\n waitForCondition(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n if (this.condition) {\r\n resolve() // 如果 condition 已经为 true,立即 resolve\r\n } else {\r\n this.resolveCondition = resolve\r\n this.rejectCondition = reject\r\n }\r\n })\r\n }\r\n\r\n // 清理 resolve/reject 函数\r\n private clearPromises() {\r\n this.resolveCondition = null\r\n this.rejectCondition = null\r\n }\r\n}\r\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt, hasher) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t if (!hasher) {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t } else {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t }\n\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.enc.Utf8;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.pad.Pkcs7;\n\n}));","import { isNullOrUnDef } from \"./is\";\r\nimport { decrypt, encrypt } from \"crypto-js/aes\";\r\nimport UTF8, { parse } from \"crypto-js/enc-utf8\";\r\nimport ECB from \"crypto-js/mode-ecb\";\r\nimport pkcs7 from \"crypto-js/pad-pkcs7\";\r\n\r\nexport type Options = Partial<CreateStorageParams>;\r\n\r\nexport const enableStorageEncryption = true;\r\n\r\nexport const DEFAULT_CACHE_TIME: number = 60 * 60 * 7;\r\n\r\nexport type CreateStorageParams = {\r\n prefixKey: string;\r\n storage: Storage;\r\n hasEncrypt: boolean;\r\n timeout?: number | null;\r\n} & EncryptionParams;\r\n\r\nexport type EncryptionParams = {\r\n key: string;\r\n iv: string;\r\n};\r\n\r\ntype CipherOption = {\r\n iv?: CryptoJS.lib.WordArray | undefined;\r\n [key: string]: any;\r\n};\r\n\r\nexport const cacheCipher = {\r\n key: \"_11111000001111@\",\r\n iv: \"@11111000001111_\",\r\n};\r\n\r\nclass AesEncryption {\r\n private key;\r\n private iv;\r\n\r\n constructor(opt: Partial<EncryptionParams> = {}) {\r\n const { key, iv } = opt;\r\n if (key) this.key = parse?.(key);\r\n\r\n if (iv) this.iv = parse?.(iv);\r\n }\r\n\r\n get getOptions() {\r\n return {\r\n mode: ECB,\r\n padding: pkcs7,\r\n iv: this.iv,\r\n } as CipherOption;\r\n }\r\n\r\n encryptByAES(cipherText: string): string {\r\n return encrypt(cipherText, this.key!, this.getOptions).toString();\r\n }\r\n\r\n decryptByAES(cipherText: string): string {\r\n return decrypt(cipherText, this.key!, this.getOptions).toString(UTF8);\r\n }\r\n}\r\n\r\nexport function create({\r\n prefixKey = \"\",\r\n storage = sessionStorage,\r\n key = cacheCipher.key,\r\n iv = cacheCipher.iv,\r\n timeout = null,\r\n hasEncrypt = true,\r\n}: Partial<CreateStorageParams> = {}): {\r\n storage: Storage;\r\n prefixKey?: string;\r\n encryption: AesEncryption;\r\n hasEncrypt: boolean;\r\n getKey: (key: string) => string;\r\n set: (key: string, value: any, expire?: number | null) => void;\r\n get: (key: string, def?: any) => any;\r\n remove: (key: string) => void;\r\n clear: () => void;\r\n} {\r\n if (hasEncrypt && [key.length, iv.length].some(item => item !== 16))\r\n throw new Error(\"When hasEncrypt is true, the key or iv must be 16 bits!\");\r\n\r\n const encryption = new AesEncryption({ key, iv });\r\n\r\n /**\r\n *Cache class\r\n *Construction parameters can be passed into sessionStorage, localStorage,\r\n * @class Cache\r\n * @example\r\n */\r\n const WebStorage = class WebStorage {\r\n storage: Storage;\r\n prefixKey?: string;\r\n encryption: AesEncryption;\r\n hasEncrypt: boolean;\r\n constructor() {\r\n this.storage = storage;\r\n this.prefixKey = prefixKey;\r\n this.encryption = encryption;\r\n this.hasEncrypt = hasEncrypt;\r\n }\r\n\r\n getKey(key: string) {\r\n // console.log(this.prefixKey, key);\r\n return `${this.prefixKey}${key}`.toUpperCase();\r\n }\r\n\r\n /**\r\n *\r\n * Set cache\r\n * @param {string} key\r\n * @param {*} value\r\n * @expire Expiration time in seconds\r\n * @memberof Cache\r\n */\r\n set(key: string, value: any, expire: number | null = timeout) {\r\n const stringData = JSON.stringify({\r\n value,\r\n time: Date.now(),\r\n expire: !isNullOrUnDef(expire) ? new Date().getTime() + expire * 1000 : null,\r\n });\r\n const stringifyValue = this.hasEncrypt ? this.encryption.encryptByAES(stringData) : stringData;\r\n this.storage.setItem(this.getKey(key), stringifyValue);\r\n }\r\n\r\n /**\r\n *Read cache\r\n * @param {string} key\r\n * @memberof Cache\r\n */\r\n get(key: string, def: any = null): any {\r\n const val = this.storage.getItem(this.getKey(key));\r\n if (!val) return def;\r\n\r\n try {\r\n const decVal = this.hasEncrypt ? this.encryption.decryptByAES(val) : val;\r\n const data = JSON.parse(decVal);\r\n const { value, expire } = data;\r\n if (isNullOrUnDef(expire) || expire >= new Date().getTime()) return value;\r\n\r\n this.remove(key);\r\n } catch (e) {\r\n console.error(`get erroe:${e}`);\r\n return def;\r\n }\r\n }\r\n\r\n /**\r\n * Delete cache based on key\r\n * @param {string} key\r\n * @memberof Cache\r\n */\r\n remove(key: string) {\r\n this.storage.removeItem(this.getKey(key));\r\n }\r\n\r\n /**\r\n * 根据选项删除缓存\r\n * @param options - 清除选项\r\n * @param options.keys - 要清除的特定键数组(如果提供,只清除这些键)\r\n * @param options.exclude - 清除时要排除的键数组(如果提供,清除除这些键之外的所有键)\r\n * @example\r\n * // 清除所有缓存\r\n * clear()\r\n *\r\n * // 清除指定键\r\n * clear({ keys: ['user', 'token'] })\r\n *\r\n * // 清除所有但排除指定键\r\n * clear({ exclude: ['settings', 'theme'] })\r\n */\r\n /**\r\n * 收集所有匹配前缀的存储键\r\n */\r\n private getKeysWithPrefix(prefixKeyUpper: string): string[] {\r\n const keysToRemove: string[] = [];\r\n for (let i = 0; i < this.storage.length; i++) {\r\n const storageKey = this.storage.key(i);\r\n if (storageKey && storageKey.startsWith(prefixKeyUpper)) {\r\n keysToRemove.push(storageKey);\r\n }\r\n }\r\n return keysToRemove;\r\n }\r\n\r\n /**\r\n * 收集所有匹配前缀但不在排除列表中的存储键\r\n */\r\n private getKeysWithPrefixExcluding(prefixKeyUpper: string, excludeSet: Set<string>): string[] {\r\n const keysToRemove: string[] = [];\r\n for (let i = 0; i < this.storage.length; i++) {\r\n const storageKey = this.storage.key(i);\r\n if (storageKey && storageKey.startsWith(prefixKeyUpper) && !excludeSet.has(storageKey)) {\r\n keysToRemove.push(storageKey);\r\n }\r\n }\r\n return keysToRemove;\r\n }\r\n\r\n /**\r\n * 删除指定的存储键\r\n */\r\n private removeKeys(keys: string[]): void {\r\n keys.forEach(storageKey => {\r\n this.storage.removeItem(storageKey);\r\n });\r\n }\r\n\r\n clear(options?: { keys?: string[]; exclude?: string[] }): void {\r\n const prefixKeyUpper = (this.prefixKey || \"\").toUpperCase();\r\n\r\n if (!options) {\r\n // 未提供选项,清除所有带前缀的缓存\r\n this.removeKeys(this.getKeysWithPrefix(prefixKeyUpper));\r\n return;\r\n }\r\n\r\n const { keys, exclude } = options;\r\n\r\n if (keys && keys.length > 0) {\r\n // 只清除指定的键\r\n keys.forEach(key => {\r\n this.remove(key);\r\n });\r\n return;\r\n }\r\n\r\n if (exclude && exclude.length > 0) {\r\n // 清除所有但排除指定的键\r\n const excludeSet = new Set(exclude.map(key => this.getKey(key)));\r\n this.removeKeys(this.getKeysWithPrefixExcluding(prefixKeyUpper, excludeSet));\r\n return;\r\n }\r\n\r\n // 如果提供了选项但都是空的,清除所有带前缀的缓存\r\n this.removeKeys(this.getKeysWithPrefix(prefixKeyUpper));\r\n }\r\n };\r\n return new WebStorage();\r\n}\r\n\r\nfunction createOptions(storage: Storage, options: Options = {}): Options {\r\n return {\r\n // No encryption in debug mode\r\n hasEncrypt: enableStorageEncryption,\r\n storage,\r\n prefixKey: \"tt-admin\",\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createStorage(\r\n storage: Storage = sessionStorage,\r\n options: Options = {},\r\n): {\r\n storage: Storage;\r\n prefixKey?: string;\r\n encryption: AesEncryption;\r\n hasEncrypt: boolean;\r\n getKey: (key: string) => string;\r\n set: (key: string, value: any, expire?: number | null) => void;\r\n get: (key: string, def?: any) => any;\r\n remove: (key: string) => void;\r\n clear: (options?: { keys?: string[]; exclude?: string[] }) => void;\r\n} {\r\n return create(createOptions(storage, options));\r\n}\r\n\r\nexport function createSessionStorage(options: Options = {}): {\r\n storage: Storage;\r\n prefixKey?: string;\r\n encryption: AesEncryption;\r\n hasEncrypt: boolean;\r\n getKey: (key: string) => string;\r\n set: (key: string, value: any, expire?: number | null) => void;\r\n get: (key: string, def?: any) => any;\r\n remove: (key: string) => void;\r\n clear: (options?: { keys?: string[]; exclude?: string[] }) => void;\r\n} {\r\n return createStorage(sessionStorage, { ...options, timeout: DEFAULT_CACHE_TIME });\r\n}\r\n\r\nexport function createLocalStorage(options: Options = {}): {\r\n storage: Storage;\r\n prefixKey?: string;\r\n encryption: AesEncryption;\r\n hasEncrypt: boolean;\r\n getKey: (key: string) => string;\r\n set: (key: string, value: any, expire?: number | null) => void;\r\n get: (key: string, def?: any) => any;\r\n remove: (key: string) => void;\r\n clear: (options?: { keys?: string[]; exclude?: string[] }) => void;\r\n} {\r\n return createStorage(localStorage, { ...options, timeout: DEFAULT_CACHE_TIME });\r\n}\r\n","/**\r\n * 检查当前版本是否满足最低版本要求\r\n * @param currentVersion 当前版本号,格式为 'x.y.z'\r\n * @param major 要求的主版本号\r\n * @param minor 要求的次版本号\r\n * @param patch 可选的补丁版本号\r\n * @returns 是否满足版本要求\r\n */\r\nexport function checkVersion(currentVersion: string, major: number, minor: number, patch?: number): boolean {\r\n if (!currentVersion) return false;\r\n\r\n const versions = currentVersion.split(\".\").map(Number);\r\n if (versions.length < 2) return false;\r\n\r\n // 检查主版本号\r\n if (versions[0] > major) return true;\r\n if (versions[0] < major) return false;\r\n\r\n // 检查次版本号\r\n if (versions[1] > minor) return true;\r\n if (versions[1] < minor) return false;\r\n\r\n // 如果有补丁版本号要求,则检查\r\n if (patch !== undefined) {\r\n const currentPatch = versions[2] || 0;\r\n return currentPatch >= patch;\r\n }\r\n\r\n return true;\r\n}\r\n"],"names":["capitalize","str","charAt","toUpperCase","slice","trim","kebabToCamelCase","replace","_","c","downloadFile","res","type","blob","Blob","data","a","document","createElement","herf","window","URL","webkitURL","createObjectURL","href","fileName","headers","split","at","decodeURI","decodedParts","download","style","display","body","appendChild","click","removeChild","revokeObjectURL","error","console","log","ApiStatus","HttpMsg","HttpError","Error","code","timestamp","url","method","constructor","message","options","super","this","name","Date","toISOString","toLogData","stack","handleError","warn","requestCancelled","statusCode","response","status","errorMessage","msg","requestConfig","config","networkError","unauthorized","forbidden","notFound","methodNotAllowed","requestTimeout","internalServerError","badGateway","serviceUnavailable","gatewayTimeout","requestFailed","showError","showMessage","ElMessage","getLoadingBackground","documentElement","classList","contains","DEFAULT_LOADING_CONFIG","lock","background","svg","svgViewBox","customClass","loadingInstance","loadingService","showLoading","ElLoading","service","hideLoading","close","TtHttp","router","useUserStore","VITE_API_URL","VITE_WITH_CREDENTIALS","pendingLoading","FILE_TYPES","activeRequests","debuncesLoading","setTimeout","nextTick","isUnauthorizedErrorShown","unauthorizedTimer","axiosInstance","axios","create","timeout","baseURL","withCredentials","validateStatus","transformResponse","contentType","includes","JSON","parse","createHttpError","handleUnauthorizedError","logOut","resetUnauthorizedError","clearTimeout","interceptors","request","use","accessToken","info","set","userId","currentRoute","value","meta","permissionOnlyCode","FormData","stringify","requestConfigError","Promise","reject","success","success1","INVALID_TOKEN","async","retryRequest","retries","params","undefined","showSuccessMessage","showSuccess","excludeError","NEED_REFRESH_TOKEN","showErrorMessage","refreshTokenFunc","delay","ms","resolve","api","get","post","put","del","withInstall","main","extra","install","app","comp","Object","values","component","key","entries","t","e","n","r","i","s","u","o","f","h","d","l","$","y","M","weekdays","months","ordinal","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","Q","toLowerCase","g","S","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","prototype","$d","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","unix","valueOf","getTime","toDate","apply","$locale","weekStart","$set","min","daysInMonth","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","is","val","call","isDef","isUndefined","isNull","isNullOrUnDef","isObject","isEmpty","isArray","isString","Map","Set","size","keys","isEmptyZero","isDate","isNumber","isPromise","isFunction","then","catch","isBoolean","isRegExp","isWindow","isElement","Element","isMap","isServer","isClient","isUrl","path","isStringNumber","isNaN","isPrimitive","isError","isSymbol","isSet","isFalse","isTrue","getDeviceType","navigator","userAgent","getBrowserType","isOpera","isIE","reIE","fIEVersion","parseFloat","getIEVersion","isIE11","isEdge","isFF","isSafari","isChrome","isIos","isAndroid","isPC","userAgentInfo","Agents","flag","agent","indexOf","isExternal","isJson","obj","isDayjsObject","dayjs","extractResourceFromApi","generateTestId","parts","filter","part","toKebabCase","generateFormName","fieldNames","maxLength","validFieldNames","extractIdFromTitle","title","isValidTestId","testid","setupDefaults","keyId","cookies","treeOptions","parentKey","children","parseDateFormat","firstDayOfWeek","arrayEach","list","iterate","context","index","len","objectToString","helperCreateInInObjectString","hasOwnProp","hasOwnProperty","objectEach","each","helperCreateInTypeof","helperCreateGetObjects","getIndex","proMethod","result","push","getCativeCtor","Ctor","__proto__","handleValueClone","item","isDeep","copyValue","restObj","getPrototypeOf","restArr","restSet","restMap","deep","objectAssignFns","assign","handleAssign","destination","isClone","source","target","XEUtils","setConfig","version","lastArrayEach","lastObjectEach","property","defs","isPlainObject","helperCheckCopyKey","handleMerge","VERSION","mixin","methods","fn","$context","setup","getConfig","map","helperCreateIterateHandle","prop","useArray","restIndex","matchValue","defaultValue","some","every","includeArrays","array1","array2","uniq","array","valMap","toArray","staticStrUndefined","eqNull","staticHGKeyRE","helperGetHGSKeys","splice","rest","props","getDeepProps","getValueByPath","matchs","handleSort","v1","v2","localeCompare","buildMultiOrders","confs","compares","item1","item2","order","orderBy","arr","fieldConfs","sort","sortConfs","handle","field","getSortConfs","sortBy","random","minVal","maxVal","shuffle","helperCreateToNumber","num","toNumber","startIndex","endIndex","argsSize","findKey","find","pluck","helperCreateMinMax","itemIndex","itemVal","max","unzip","arrays","maxItem","flattenDeep","vals","concat","helperLog","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","arrayLastIndexOf","lastIndexOf","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","_i","_r","matchRest","parseCustomRules","dfrLen","Z","parseDefaultRules","parseTimeZone","helperNewDate","isLeapYear","currentDate","helperCreateIndexOf","callback","getSize","isInteger","supportSymbol","Symbol","isArguments","staticDocument","staticWindow","supportFormData","supportMap","supportWeakMap","WeakMap","supportSet","supportWeakSet","WeakSet","helperCreateiterateIndexOf","findIndexOf","helperEqualCompare","val1","val2","compare","func","obj1","obj2","val1Keys","val2Keys","isObj1Arr","isObj2Arr","helperDefaultCompare","isEqual","findLastIndexOf","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","number","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","A","E","q","skip","now","getMonthWeek","dateDiffRules","trimRight","trimLeft","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","hashs","portText","searchs","parsed","hash","hostname","port","search","pathname","hashKey","hashQuery","searchQuery","toCookieUnitTime","unit","expires","nowdate","toCookieUTCString","cookie","keyIndex","inserts","getCookieItem","setCookieItem","removeCookieItem","cookieKeys","isBrowseStorage","storage","testKey","setItem","removeItem","isBrowseType","has","getItem","getJSON","objectMap","merge","union","sample","findLast","reduce","initialValue","reduceMethod","previous","isInitialVal","keyList","copyWithin","replaceIndex","replaceArray","targetIndex","chunk","arrLen","zip","zipObject","flatten","invoke","deepGetObj","toArrayTree","id","treeData","parentId","optStrict","strict","optMapChildren","optSortKey","sortKey","optReverse","reverse","treeMaps","idsMap","strictTree","toTreeArray","filterTree","isFinite","isFloat","isTypeError","TypeError","nodeName","nodeType","isDocument","isFormData","isWeakMap","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","isDateSame","getWhatQuarter","currMonth","monthOffset","getQuarterNumber","getWhatHours","setHours","getWhatMinutes","setMinutes","getWhatSeconds","setSeconds","getDayOfYear","getDayOfMonth","getDateDiff","startDate","endDate","startTime","endTime","diffTime","done","camelCase","strLen","upper","upperLen","kebabCase","prevLower","nextLower","padEnd","startsWith","endsWith","argsLen","toFormatString","noop","bind","once","after","runCount","before","throttle","wait","runFlag","leading","trailing","optLeading","optTrailing","gcFn","runFn","endFn","throttled","cancel","debounce","debounced","serialize","query","getBaseURL","lastIndex","locat","browse","$body","isMobile","isLocalStorage","isSessionStorage","isNode","isDoc","process","core","localStorage","sessionStorage","edge","firefox","msie","safari","createClassPartObject","nextPart","validators","classGroupId","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","createClassGroupUtils","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","getGroupIdForArbitraryProperty","classParts","getGroupRecursive","getConflictingClassGroupIds","hasPostfixModifier","modifierConflicts","baseConflicts","combinedArray","concatArrays","classPartObject","currentClassPart","nextClassPartObject","classRest","validatorsLength","validatorObj","validator","content","colonIndex","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","classDefinition","processClassDefinition","processObjectDefinition","processFunctionDefinition","processStringDefinition","getPart","isThemeGetter","createClassValidatorObject","current","next","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","createParseClassName","experimentalParseClassName","parseClassName","postfixModifierPosition","bracketDepth","parenDepth","modifierStart","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","orderSensitiveModifiers","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","SPLIT_CLASSES_REGEX","toValue","mix","resolvedValue","string","createTailwindMerge","createConfigFirst","createConfigRest","configUtils","cacheGet","cacheSet","functionToCall","tailwindMerge","cachedResult","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","mergeClassList","previousConfig","createConfigCurrent","createConfigUtils","classLists","argument","twJoin","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryWeight","isLabelWeight","isArbitraryFamilyName","isLabelFamilyName","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","isArbitraryVariableWeight","testLabel","testValue","exec","shouldMatchNoLabel","label","twMerge","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scalePositionWithArbitrary","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleMargin","scaleSizing","scaleSizingInline","scaleSizingBlock","scaleColor","scaleBgPosition","position","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","animate","aspect","blur","breakpoint","color","container","ease","font","perspective","radius","shadow","spacing","tracking","columns","box","sr","float","isolation","object","overflow","overscroll","inset","top","right","bottom","left","visibility","basis","flex","grow","shrink","col","row","gap","justify","baseline","self","px","py","ps","pe","pbs","pbe","pt","pr","pb","pl","mx","my","me","mbs","mbe","mt","mr","mb","ml","inline","block","screen","placeholder","decoration","indent","align","whitespace","break","wrap","hyphens","bg","linear","to","radial","conic","from","via","rounded","border","outline","ring","opacity","mask","closest","farthest","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","backface","rotate","scale","skew","transform","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","klona","enumerable","configurable","writable","defineProperty","tmp","flags","buffer","getOwnPropertySymbols","getOwnPropertyDescriptor","getOwnPropertyNames","exports","local","getUTCFullYear","getUTCMonth","getUTCDate","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","$localOffset","isUTC","hour","minute","second","timeZoneName","Intl","DateTimeFormat","hour12","timeZone","formatToParts","tz","toLocaleString","$timezone","offsetName","guess","resolvedOptions","setDefault","isExtendDayjs","getStorage","localdata","_key","calcWordsWidth","words","fontSize","fontFamily","wordsWidth","ctx","getContext","measureText","width","getDifference","newObj","oldObj","keyObj","excludeAll","excludeItem","exclude","fromEntries","setDifferenceObj","setDifferenceArr","setDifferenceField","temp","arrKey","notNullToFalse","deepMerge","src","toCssUnit","useVModel","propName","emit","computed","Proxy","bindMethods","instance","proto","propertyNames","deepCopy","arrayToTree","itemMap","currentItem","getFirstNonNullOrUndefined","arg","clnm","inputs","clsx","triggerWindowResize","resizeEvent","Event","dispatchEvent","arrGive","targrt","element","contentItem","dateFormat","timezone","cloneDeep","acc","maxWait","timer","maxTimer","lastCallTime","lastArgs","lastInvokeTime","invokeFunc","clearAllTimers","resetState","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remaining","timeSinceLastInvoke","timeWaiting","remainingWait","maxTimerExpired","isInvoking","leadingEdge","isPending","flush","argsToUse","iterator","toStringTag","_defu","baseObject","defaults","namespace","merger","createDefu","arguments_","defu","defuFn","currentValue","mergeWithArrayOverride","defaultsAndOptions","overrideKeys","lastItem","pop","originObj","updates","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","digitsToString","ws","indexOfLastWord","getZeroString","checkInt32","checkRoundingDigits","rm","repeating","di","rd","convertBase","baseIn","baseOut","j","arrL","strL","absoluteValue","finalise","clampedTo","clamp","gt","cmp","comparedTo","xdL","ydL","xd","yd","xs","ys","cosine","cos","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","x2","isInt","isPositive","isPos","lessThan","lt","lessThanOrEqualTo","logarithm","base","isBase10","denominator","inf","naturalLogarithm","getLn10","sub","xe","xLTy","shift","getBase10Exponent","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","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","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","sumTotal","total","calc","sumTotalBy","datas","iteratee","clsSumTotalBy","keyIteratee","valueIteratee","getValue","bool1","bool2","decimal","StateHandler","condition","promiseResolvers","isConditionTrue","reset","clearPromises","setConditionFalse","setConditionTrue","waitForCondition","promise","withResolvers","StateHandlerOld","rejectCondition","resolveCondition","CryptoJS","globalThis","msCrypto","global","require","err","cryptoSecureRandomInt","readInt32LE","F","subtype","C","C_lib","lib","Base","overrides","mixIn","$super","properties","propertyName","WordArray","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","nBytes","C_enc","enc","hexChars","bite","hexStr","hexStrLength","substr","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","doFlush","processedWords","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","_doProcessBlock","Hasher","cfg","_doReset","messageUpdate","finalize","_doFinalize","_createHelper","hasher","_createHmacHelper","C_algo","HMAC","algo","require$$0","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","Base64","_map","base64Chars","triplet","paddingChar","_reverseMap","paddingIndex","T","MD5","_hash","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","SHA1","HmacSHA1","EvpKDF","keySize","iterations","compute","password","salt","derivedKey","derivedKeyWords","factory","require$$1","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","dataUpdate","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","encrypt","decrypt","ciphertext","StreamCipher","C_mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","_prevBlock","processBlock","encryptBlock","thisBlock","decryptBlock","Pkcs7","pad","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","padding","unpad","BlockCipher","modeCreator","_mode","__creator","finalProcessedBlocks","CipherParams","cipherParams","formatter","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","OpenSSLKdf","kdf","execute","derivedParams","require$$2","require$$3","require$$4","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","sx","x4","x8","RCON","AES","_nRounds","_keyPriorReset","keyWords","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","_doCryptBlock","nRounds","s0","s1","s2","s3","t0","t1","t2","ECB","enableStorageEncryption","DEFAULT_CACHE_TIME","cacheCipher","AesEncryption","opt","getOptions","pkcs7","encryptByAES","cipherText","decryptByAES","UTF8","prefixKey","hasEncrypt","encryption","getKey","expire","stringData","stringifyValue","def","decVal","getKeysWithPrefix","prefixKeyUpper","keysToRemove","storageKey","getKeysWithPrefixExcluding","excludeSet","createStorage","createOptions","createSessionStorage","createLocalStorage","checkVersion","currentVersion","major","minor","patch","versions"],"mappings":"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","x_google_ignoreList":[8,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,235,236,237,238,239,240,241,242,244,246,249,250,251,252,253,254,255,256,257,258,259]}
|