@visactor/vutils 1.0.23 → 1.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/README.zh-CN.md +12 -0
  2. package/cjs/angle.d.ts +61 -0
  3. package/cjs/angle.js +73 -7
  4. package/cjs/angle.js.map +1 -1
  5. package/cjs/color/Color.d.ts +3 -0
  6. package/cjs/color/Color.js +64 -10
  7. package/cjs/color/Color.js.map +1 -1
  8. package/cjs/color/hexToRgb.d.ts +5 -0
  9. package/cjs/color/hexToRgb.js +5 -0
  10. package/cjs/color/hexToRgb.js.map +1 -1
  11. package/cjs/color/rgbToHsl.js +5 -1
  12. package/cjs/color/rgbToHsl.js.map +1 -1
  13. package/cjs/common/array.d.ts +43 -0
  14. package/cjs/common/array.js +44 -0
  15. package/cjs/common/array.js.map +1 -1
  16. package/cjs/common/bisect.d.ts +21 -0
  17. package/cjs/common/bisect.js +29 -0
  18. package/cjs/common/bisect.js.map +1 -1
  19. package/cjs/common/bootstrap.d.ts +5 -0
  20. package/cjs/common/bootstrap.js +22 -0
  21. package/cjs/common/bootstrap.js.map +1 -0
  22. package/cjs/common/clone.js +6 -0
  23. package/cjs/common/clone.js.map +1 -1
  24. package/cjs/common/cloneDeep.js +4 -1
  25. package/cjs/common/cloneDeep.js.map +1 -1
  26. package/cjs/common/correlation.d.ts +3 -0
  27. package/cjs/common/correlation.js +83 -0
  28. package/cjs/common/correlation.js.map +1 -0
  29. package/cjs/common/debounce.js +22 -4
  30. package/cjs/common/debounce.js.map +1 -1
  31. package/cjs/common/ecdf.d.ts +8 -0
  32. package/cjs/common/ecdf.js +11 -2
  33. package/cjs/common/ecdf.js.map +1 -1
  34. package/cjs/common/extent.d.ts +4 -0
  35. package/cjs/common/extent.js +2 -1
  36. package/cjs/common/extent.js.map +1 -1
  37. package/cjs/common/field.d.ts +6 -0
  38. package/cjs/common/field.js +3 -0
  39. package/cjs/common/field.js.map +1 -1
  40. package/cjs/common/getType.js +1 -2
  41. package/cjs/common/has.d.ts +17 -0
  42. package/cjs/common/has.js +18 -1
  43. package/cjs/common/has.js.map +1 -1
  44. package/cjs/common/index.d.ts +4 -0
  45. package/cjs/common/index.js +34 -6
  46. package/cjs/common/index.js.map +1 -1
  47. package/cjs/common/interpolate.js +16 -3
  48. package/cjs/common/interpolate.js.map +1 -1
  49. package/cjs/common/isBase64.d.ts +6 -0
  50. package/cjs/common/isBase64.js +6 -0
  51. package/cjs/common/isBase64.js.map +1 -1
  52. package/cjs/common/isBoolean.d.ts +13 -0
  53. package/cjs/common/isBoolean.js +13 -1
  54. package/cjs/common/isBoolean.js.map +1 -1
  55. package/cjs/common/isEmpty.js +11 -1
  56. package/cjs/common/isEmpty.js.map +1 -1
  57. package/cjs/common/isEqual.js +19 -7
  58. package/cjs/common/isEqual.js.map +1 -1
  59. package/cjs/common/isFunction.d.ts +25 -0
  60. package/cjs/common/isFunction.js +26 -0
  61. package/cjs/common/isFunction.js.map +1 -1
  62. package/cjs/common/isNumber.d.ts +23 -0
  63. package/cjs/common/isNumber.js +23 -1
  64. package/cjs/common/isNumber.js.map +1 -1
  65. package/cjs/common/isNumeric.d.ts +25 -0
  66. package/cjs/common/isNumeric.js +25 -0
  67. package/cjs/common/isNumeric.js.map +1 -1
  68. package/cjs/common/isObject.d.ts +21 -0
  69. package/cjs/common/isObject.js +23 -2
  70. package/cjs/common/isObject.js.map +1 -1
  71. package/cjs/common/isObjectLike.d.ts +20 -0
  72. package/cjs/common/isObjectLike.js +21 -0
  73. package/cjs/common/isObjectLike.js.map +1 -1
  74. package/cjs/common/isPlainObject.d.ts +25 -0
  75. package/cjs/common/isPlainObject.js +2 -1
  76. package/cjs/common/isPlainObject.js.map +1 -1
  77. package/cjs/common/isShallowEqual.js +1 -0
  78. package/cjs/common/isShallowEqual.js.map +1 -1
  79. package/cjs/common/isString.d.ts +13 -0
  80. package/cjs/common/isString.js +13 -1
  81. package/cjs/common/isString.js.map +1 -1
  82. package/cjs/common/isType.d.ts +6 -0
  83. package/cjs/common/isType.js +6 -0
  84. package/cjs/common/isType.js.map +1 -1
  85. package/cjs/common/isUndefined.js +1 -1
  86. package/cjs/common/isValid.js +1 -1
  87. package/cjs/common/isValidNumber.js.map +1 -1
  88. package/cjs/common/isValidUrl.js.map +1 -1
  89. package/cjs/common/kde.d.ts +28 -0
  90. package/cjs/common/kde.js +29 -5
  91. package/cjs/common/kde.js.map +1 -1
  92. package/cjs/common/mean.d.ts +2 -0
  93. package/cjs/common/mean.js +25 -0
  94. package/cjs/common/mean.js.map +1 -0
  95. package/cjs/common/merge.js +20 -4
  96. package/cjs/common/merge.js.map +1 -1
  97. package/cjs/common/mixin.js +14 -3
  98. package/cjs/common/mixin.js.map +1 -1
  99. package/cjs/common/normalQuantile.d.ts +5 -0
  100. package/cjs/common/normalQuantile.js +21 -0
  101. package/cjs/common/normalQuantile.js.map +1 -0
  102. package/cjs/common/number.d.ts +24 -0
  103. package/cjs/common/number.js +24 -1
  104. package/cjs/common/number.js.map +1 -1
  105. package/cjs/common/pad.d.ts +21 -0
  106. package/cjs/common/pad.js +21 -1
  107. package/cjs/common/pad.js.map +1 -1
  108. package/cjs/common/random.d.ts +3 -0
  109. package/cjs/common/random.js +13 -0
  110. package/cjs/common/random.js.map +1 -1
  111. package/cjs/common/regression-linear.d.ts +4 -0
  112. package/cjs/common/regression-linear.js +19 -12
  113. package/cjs/common/regression-linear.js.map +1 -1
  114. package/cjs/common/regression-logistic.d.ts +6 -0
  115. package/cjs/common/regression-logistic.js +25 -14
  116. package/cjs/common/regression-logistic.js.map +1 -1
  117. package/cjs/common/regression-lowess.d.ts +9 -0
  118. package/cjs/common/regression-lowess.js +64 -26
  119. package/cjs/common/regression-lowess.js.map +1 -1
  120. package/cjs/common/regression-polynomial.js +26 -15
  121. package/cjs/common/regression-polynomial.js.map +1 -1
  122. package/cjs/common/regression-utils.d.ts +13 -1
  123. package/cjs/common/regression-utils.js +27 -12
  124. package/cjs/common/regression-utils.js.map +1 -1
  125. package/cjs/common/throttle.js +3 -0
  126. package/cjs/common/throttle.js.map +1 -1
  127. package/cjs/common/toDate.js +22 -3
  128. package/cjs/common/toDate.js.map +1 -1
  129. package/cjs/common/uuid.d.ts +7 -0
  130. package/cjs/common/uuid.js +15 -1
  131. package/cjs/common/uuid.js.map +1 -1
  132. package/cjs/data-structure/bounds.d.ts +101 -0
  133. package/cjs/data-structure/bounds.js +74 -7
  134. package/cjs/data-structure/bounds.js.map +1 -1
  135. package/cjs/data-structure/hashTable.d.ts +4 -0
  136. package/cjs/data-structure/hashTable.js +11 -2
  137. package/cjs/data-structure/hashTable.js.map +1 -1
  138. package/cjs/data-structure/index.js +6 -2
  139. package/cjs/data-structure/index.js.map +1 -1
  140. package/cjs/data-structure/matrix.d.ts +91 -0
  141. package/cjs/data-structure/matrix.js +52 -4
  142. package/cjs/data-structure/matrix.js.map +1 -1
  143. package/cjs/data-structure/point.d.ts +3 -0
  144. package/cjs/data-structure/point.js +5 -1
  145. package/cjs/data-structure/point.js.map +1 -1
  146. package/cjs/dom.d.ts +36 -0
  147. package/cjs/dom.js +43 -1
  148. package/cjs/dom.js.map +1 -1
  149. package/cjs/fmin/blas1.js +10 -1
  150. package/cjs/fmin/blas1.js.map +1 -1
  151. package/cjs/fmin/conjugate-gradient.js +18 -3
  152. package/cjs/fmin/conjugate-gradient.js.map +1 -1
  153. package/cjs/fmin/linesearch.js +15 -1
  154. package/cjs/fmin/linesearch.js.map +1 -1
  155. package/cjs/fmin/nelder-mead.d.ts +1 -0
  156. package/cjs/fmin/nelder-mead.js +30 -10
  157. package/cjs/fmin/nelder-mead.js.map +1 -1
  158. package/cjs/format/number/formatDecimal.js +9 -1
  159. package/cjs/format/number/formatDecimal.js.map +1 -1
  160. package/cjs/format/number/formatGroup.js +7 -0
  161. package/cjs/format/number/formatGroup.js.map +1 -1
  162. package/cjs/format/number/formatPrefixAuto.js +8 -0
  163. package/cjs/format/number/formatPrefixAuto.js.map +1 -1
  164. package/cjs/format/number/formatRounded.js +7 -0
  165. package/cjs/format/number/formatRounded.js.map +1 -1
  166. package/cjs/format/number/formatTrim.js +7 -0
  167. package/cjs/format/number/formatTrim.js.map +1 -1
  168. package/cjs/format/number/number.js +39 -9
  169. package/cjs/format/number/number.js.map +1 -1
  170. package/cjs/format/time.js +23 -6
  171. package/cjs/format/time.js.map +1 -1
  172. package/cjs/geo/circle-intersection.d.ts +12 -0
  173. package/cjs/geo/circle-intersection.js +54 -9
  174. package/cjs/geo/circle-intersection.js.map +1 -1
  175. package/cjs/geo/constant.js +8 -1
  176. package/cjs/geo/constant.js.map +1 -1
  177. package/cjs/geo/invariant.d.ts +22 -0
  178. package/cjs/geo/invariant.js +24 -1
  179. package/cjs/geo/invariant.js.map +1 -1
  180. package/cjs/graphics/algorithm/aabb.js +7 -3
  181. package/cjs/graphics/algorithm/aabb.js.map +1 -1
  182. package/cjs/graphics/algorithm/intersect.d.ts +48 -0
  183. package/cjs/graphics/algorithm/intersect.js +75 -7
  184. package/cjs/graphics/algorithm/intersect.js.map +1 -1
  185. package/cjs/graphics/bounds-util.js +4 -2
  186. package/cjs/graphics/bounds-util.js.map +1 -1
  187. package/cjs/graphics/graph-util.js +4 -0
  188. package/cjs/graphics/graph-util.js.map +1 -1
  189. package/cjs/graphics/index.js +7 -4
  190. package/cjs/graphics/index.js.map +1 -1
  191. package/cjs/graphics/polygon.d.ts +12 -0
  192. package/cjs/graphics/polygon.js +28 -5
  193. package/cjs/graphics/polygon.js.map +1 -1
  194. package/cjs/graphics/text/measure/interface.d.ts +12 -0
  195. package/cjs/graphics/text/measure/textMeasure.d.ts +23 -0
  196. package/cjs/graphics/text/measure/textMeasure.js +50 -22
  197. package/cjs/graphics/text/measure/textMeasure.js.map +1 -1
  198. package/cjs/graphics/text/measure/util.js +1 -0
  199. package/cjs/graphics/text/measure/util.js.map +1 -1
  200. package/cjs/graphics/text/stringWidth.js +7 -3
  201. package/cjs/graphics/text/stringWidth.js.map +1 -1
  202. package/cjs/index.d.ts +6 -0
  203. package/cjs/index.js +19 -4
  204. package/cjs/index.js.map +1 -1
  205. package/cjs/logger.js +12 -2
  206. package/cjs/logger.js.map +1 -1
  207. package/cjs/lru.js +14 -6
  208. package/cjs/lru.js.map +1 -1
  209. package/cjs/math.d.ts +9 -0
  210. package/cjs/math.js +10 -0
  211. package/cjs/math.js.map +1 -1
  212. package/cjs/padding.d.ts +5 -0
  213. package/cjs/padding.js +5 -0
  214. package/cjs/padding.js.map +1 -1
  215. package/cjs/time/formatUtils.d.ts +6 -0
  216. package/cjs/time/formatUtils.js +7 -0
  217. package/cjs/time/formatUtils.js.map +1 -1
  218. package/dist/index.js +1627 -116
  219. package/dist/index.min.js +128 -1
  220. package/es/angle.d.ts +61 -0
  221. package/es/angle.js +66 -10
  222. package/es/angle.js.map +1 -1
  223. package/es/color/Color.d.ts +3 -0
  224. package/es/color/Color.js +64 -9
  225. package/es/color/Color.js.map +1 -1
  226. package/es/color/hexToRgb.d.ts +5 -0
  227. package/es/color/hexToRgb.js +5 -0
  228. package/es/color/hexToRgb.js.map +1 -1
  229. package/es/color/rgbToHsl.js +5 -1
  230. package/es/color/rgbToHsl.js.map +1 -1
  231. package/es/common/array.d.ts +43 -0
  232. package/es/common/array.js +44 -8
  233. package/es/common/array.js.map +1 -1
  234. package/es/common/bisect.d.ts +21 -0
  235. package/es/common/bisect.js +29 -4
  236. package/es/common/bisect.js.map +1 -1
  237. package/es/common/bootstrap.d.ts +5 -0
  238. package/es/common/bootstrap.js +14 -0
  239. package/es/common/bootstrap.js.map +1 -0
  240. package/es/common/clone.js +6 -0
  241. package/es/common/clone.js.map +1 -1
  242. package/es/common/cloneDeep.js +4 -1
  243. package/es/common/cloneDeep.js.map +1 -1
  244. package/es/common/correlation.d.ts +3 -0
  245. package/es/common/correlation.js +77 -0
  246. package/es/common/correlation.js.map +1 -0
  247. package/es/common/debounce.js +22 -4
  248. package/es/common/debounce.js.map +1 -1
  249. package/es/common/ecdf.d.ts +8 -0
  250. package/es/common/ecdf.js +11 -1
  251. package/es/common/ecdf.js.map +1 -1
  252. package/es/common/extent.d.ts +4 -0
  253. package/es/common/extent.js +6 -2
  254. package/es/common/extent.js.map +1 -1
  255. package/es/common/field.d.ts +6 -0
  256. package/es/common/field.js +3 -1
  257. package/es/common/field.js.map +1 -1
  258. package/es/common/getType.js +1 -2
  259. package/es/common/has.d.ts +17 -0
  260. package/es/common/has.js +18 -1
  261. package/es/common/has.js.map +1 -1
  262. package/es/common/index.d.ts +4 -0
  263. package/es/common/index.js +24 -1
  264. package/es/common/index.js.map +1 -1
  265. package/es/common/interpolate.js +16 -3
  266. package/es/common/interpolate.js.map +1 -1
  267. package/es/common/isBase64.d.ts +6 -0
  268. package/es/common/isBase64.js +6 -0
  269. package/es/common/isBase64.js.map +1 -1
  270. package/es/common/isBoolean.d.ts +13 -0
  271. package/es/common/isBoolean.js +13 -1
  272. package/es/common/isBoolean.js.map +1 -1
  273. package/es/common/isEmpty.js +11 -1
  274. package/es/common/isEmpty.js.map +1 -1
  275. package/es/common/isEqual.js +19 -7
  276. package/es/common/isEqual.js.map +1 -1
  277. package/es/common/isFunction.d.ts +25 -0
  278. package/es/common/isFunction.js +26 -0
  279. package/es/common/isFunction.js.map +1 -1
  280. package/es/common/isNumber.d.ts +23 -0
  281. package/es/common/isNumber.js +23 -1
  282. package/es/common/isNumber.js.map +1 -1
  283. package/es/common/isNumeric.d.ts +25 -0
  284. package/es/common/isNumeric.js +25 -0
  285. package/es/common/isNumeric.js.map +1 -1
  286. package/es/common/isObject.d.ts +21 -0
  287. package/es/common/isObject.js +23 -2
  288. package/es/common/isObject.js.map +1 -1
  289. package/es/common/isObjectLike.d.ts +20 -0
  290. package/es/common/isObjectLike.js +21 -0
  291. package/es/common/isObjectLike.js.map +1 -1
  292. package/es/common/isPlainObject.d.ts +25 -0
  293. package/es/common/isPlainObject.js +28 -1
  294. package/es/common/isPlainObject.js.map +1 -1
  295. package/es/common/isShallowEqual.js +1 -0
  296. package/es/common/isShallowEqual.js.map +1 -1
  297. package/es/common/isString.d.ts +13 -0
  298. package/es/common/isString.js +13 -1
  299. package/es/common/isString.js.map +1 -1
  300. package/es/common/isType.d.ts +6 -0
  301. package/es/common/isType.js +6 -0
  302. package/es/common/isType.js.map +1 -1
  303. package/es/common/isUndefined.js +1 -1
  304. package/es/common/isValid.js +1 -1
  305. package/es/common/isValidNumber.js.map +1 -1
  306. package/es/common/isValidUrl.js.map +1 -1
  307. package/es/common/kde.d.ts +28 -0
  308. package/es/common/kde.js +29 -7
  309. package/es/common/kde.js.map +1 -1
  310. package/es/common/mean.d.ts +2 -0
  311. package/es/common/mean.js +19 -0
  312. package/es/common/mean.js.map +1 -0
  313. package/es/common/merge.js +22 -5
  314. package/es/common/merge.js.map +1 -1
  315. package/es/common/mixin.js +14 -3
  316. package/es/common/mixin.js.map +1 -1
  317. package/es/common/normalQuantile.d.ts +5 -0
  318. package/es/common/normalQuantile.js +15 -0
  319. package/es/common/normalQuantile.js.map +1 -0
  320. package/es/common/number.d.ts +24 -0
  321. package/es/common/number.js +24 -2
  322. package/es/common/number.js.map +1 -1
  323. package/es/common/pad.d.ts +21 -0
  324. package/es/common/pad.js +21 -1
  325. package/es/common/pad.js.map +1 -1
  326. package/es/common/random.d.ts +3 -0
  327. package/es/common/random.js +13 -1
  328. package/es/common/random.js.map +1 -1
  329. package/es/common/regression-linear.d.ts +4 -0
  330. package/es/common/regression-linear.js +18 -14
  331. package/es/common/regression-linear.js.map +1 -1
  332. package/es/common/regression-logistic.d.ts +6 -0
  333. package/es/common/regression-logistic.js +24 -16
  334. package/es/common/regression-logistic.js.map +1 -1
  335. package/es/common/regression-lowess.d.ts +9 -0
  336. package/es/common/regression-lowess.js +63 -27
  337. package/es/common/regression-lowess.js.map +1 -1
  338. package/es/common/regression-polynomial.js +25 -16
  339. package/es/common/regression-polynomial.js.map +1 -1
  340. package/es/common/regression-utils.d.ts +13 -1
  341. package/es/common/regression-utils.js +18 -9
  342. package/es/common/regression-utils.js.map +1 -1
  343. package/es/common/throttle.js +3 -0
  344. package/es/common/throttle.js.map +1 -1
  345. package/es/common/toDate.js +23 -3
  346. package/es/common/toDate.js.map +1 -1
  347. package/es/common/uuid.d.ts +7 -0
  348. package/es/common/uuid.js +15 -1
  349. package/es/common/uuid.js.map +1 -1
  350. package/es/data-structure/bounds.d.ts +101 -0
  351. package/es/data-structure/bounds.js +74 -8
  352. package/es/data-structure/bounds.js.map +1 -1
  353. package/es/data-structure/hashTable.d.ts +4 -0
  354. package/es/data-structure/hashTable.js +11 -2
  355. package/es/data-structure/hashTable.js.map +1 -1
  356. package/es/data-structure/index.js +2 -0
  357. package/es/data-structure/index.js.map +1 -1
  358. package/es/data-structure/matrix.d.ts +91 -0
  359. package/es/data-structure/matrix.js +52 -5
  360. package/es/data-structure/matrix.js.map +1 -1
  361. package/es/data-structure/point.d.ts +3 -0
  362. package/es/data-structure/point.js +5 -1
  363. package/es/data-structure/point.js.map +1 -1
  364. package/es/dom.d.ts +36 -0
  365. package/es/dom.js +43 -8
  366. package/es/dom.js.map +1 -1
  367. package/es/fmin/blas1.js +10 -0
  368. package/es/fmin/blas1.js.map +1 -1
  369. package/es/fmin/conjugate-gradient.js +18 -2
  370. package/es/fmin/conjugate-gradient.js.map +1 -1
  371. package/es/fmin/linesearch.js +15 -0
  372. package/es/fmin/linesearch.js.map +1 -1
  373. package/es/fmin/nelder-mead.d.ts +1 -0
  374. package/es/fmin/nelder-mead.js +29 -9
  375. package/es/fmin/nelder-mead.js.map +1 -1
  376. package/es/format/number/formatDecimal.js +9 -1
  377. package/es/format/number/formatDecimal.js.map +1 -1
  378. package/es/format/number/formatGroup.js +7 -0
  379. package/es/format/number/formatGroup.js.map +1 -1
  380. package/es/format/number/formatPrefixAuto.js +8 -0
  381. package/es/format/number/formatPrefixAuto.js.map +1 -1
  382. package/es/format/number/formatRounded.js +7 -0
  383. package/es/format/number/formatRounded.js.map +1 -1
  384. package/es/format/number/formatTrim.js +7 -0
  385. package/es/format/number/formatTrim.js.map +1 -1
  386. package/es/format/number/number.js +40 -8
  387. package/es/format/number/number.js.map +1 -1
  388. package/es/format/time.js +23 -5
  389. package/es/format/time.js.map +1 -1
  390. package/es/geo/circle-intersection.d.ts +12 -0
  391. package/es/geo/circle-intersection.js +54 -14
  392. package/es/geo/circle-intersection.js.map +1 -1
  393. package/es/geo/constant.js +8 -0
  394. package/es/geo/constant.js.map +1 -1
  395. package/es/geo/invariant.d.ts +22 -0
  396. package/es/geo/invariant.js +24 -0
  397. package/es/geo/invariant.js.map +1 -1
  398. package/es/graphics/algorithm/aabb.js +7 -3
  399. package/es/graphics/algorithm/aabb.js.map +1 -1
  400. package/es/graphics/algorithm/intersect.d.ts +48 -0
  401. package/es/graphics/algorithm/intersect.js +75 -12
  402. package/es/graphics/algorithm/intersect.js.map +1 -1
  403. package/es/graphics/bounds-util.js +4 -2
  404. package/es/graphics/bounds-util.js.map +1 -1
  405. package/es/graphics/graph-util.js +4 -0
  406. package/es/graphics/graph-util.js.map +1 -1
  407. package/es/graphics/index.js +2 -0
  408. package/es/graphics/index.js.map +1 -1
  409. package/es/graphics/polygon.d.ts +12 -0
  410. package/es/graphics/polygon.js +28 -6
  411. package/es/graphics/polygon.js.map +1 -1
  412. package/es/graphics/text/measure/interface.d.ts +12 -0
  413. package/es/graphics/text/measure/textMeasure.d.ts +23 -0
  414. package/es/graphics/text/measure/textMeasure.js +46 -21
  415. package/es/graphics/text/measure/textMeasure.js.map +1 -1
  416. package/es/graphics/text/measure/util.js +1 -0
  417. package/es/graphics/text/measure/util.js.map +1 -1
  418. package/es/graphics/text/stringWidth.js +7 -3
  419. package/es/graphics/text/stringWidth.js.map +1 -1
  420. package/es/index.d.ts +6 -0
  421. package/es/index.js +15 -1
  422. package/es/index.js.map +1 -1
  423. package/es/logger.js +12 -1
  424. package/es/logger.js.map +1 -1
  425. package/es/lru.js +14 -6
  426. package/es/lru.js.map +1 -1
  427. package/es/math.d.ts +9 -0
  428. package/es/math.js +10 -1
  429. package/es/math.js.map +1 -1
  430. package/es/padding.d.ts +5 -0
  431. package/es/padding.js +5 -1
  432. package/es/padding.js.map +1 -1
  433. package/es/time/formatUtils.d.ts +6 -0
  434. package/es/time/formatUtils.js +7 -1
  435. package/es/time/formatUtils.js.map +1 -1
  436. package/package.json +8 -3
@@ -1,15 +1,23 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
3
+ /* Adapted from fmin by Ben Frederickson
4
+ * https://github.com/benfred/fmin
5
+ * Licensed under the BSD-3-Clause
6
+
7
+ * url: https://github.com/benfred/fmin/blob/master/src/nelderMead.js
8
+ * License: https://github.com/benfred/fmin/blob/master/LICENSE
9
+ * @license
10
+ */ Object.defineProperty(exports, "__esModule", {
4
11
  value: !0
5
12
  }), exports.nelderMead = void 0;
6
13
 
7
14
  const blas1_1 = require("./blas1");
8
15
 
9
- function nelderMead(f, x0, parameters) {
16
+ /** minimizes a function using the downhill simplex method */ function nelderMead(f, x0, parameters) {
10
17
  const maxIterations = (parameters = parameters || {}).maxIterations || 200 * x0.length, nonZeroDelta = parameters.nonZeroDelta || 1.05, zeroDelta = parameters.zeroDelta || .001, minErrorDelta = parameters.minErrorDelta || 1e-6, minTolerance = parameters.minErrorDelta || 1e-5, rho = void 0 !== parameters.rho ? parameters.rho : 1, chi = void 0 !== parameters.chi ? parameters.chi : 2, psi = void 0 !== parameters.psi ? parameters.psi : -.5, sigma = void 0 !== parameters.sigma ? parameters.sigma : .5;
11
18
  let maxDiff;
12
- const N = x0.length, simplex = new Array(N + 1);
19
+ // initialize simplex.
20
+ const N = x0.length, simplex = new Array(N + 1);
13
21
  simplex[0] = x0, simplex[0].fx = f(x0), simplex[0].id = 0;
14
22
  for (let i = 0; i < N; ++i) {
15
23
  const point = x0.slice();
@@ -25,6 +33,8 @@ function nelderMead(f, x0, parameters) {
25
33
  }, centroid = x0.slice(), reflected = x0.slice(), contracted = x0.slice(), expanded = x0.slice();
26
34
  for (let iteration = 0; iteration < maxIterations; ++iteration) {
27
35
  if (simplex.sort(sortOrder), parameters.history) {
36
+ // copy the simplex (since later iterations will mutate) and
37
+ // sort it to have a consistent order between iterations
28
38
  const sortedSimplex = simplex.map((function(x) {
29
39
  const state = x.slice();
30
40
  return state.fx = x.fx, state.id = x.id, state;
@@ -40,22 +50,32 @@ function nelderMead(f, x0, parameters) {
40
50
  maxDiff = 0;
41
51
  for (let i = 0; i < N; ++i) maxDiff = Math.max(maxDiff, Math.abs(simplex[0][i] - simplex[1][i]));
42
52
  if (Math.abs(simplex[0].fx - simplex[N].fx) < minErrorDelta && maxDiff < minTolerance) break;
43
- for (let i = 0; i < N; ++i) {
53
+ // compute the centroid of all but the worst point in the simplex
54
+ for (let i = 0; i < N; ++i) {
44
55
  centroid[i] = 0;
45
56
  for (let j = 0; j < N; ++j) centroid[i] += simplex[j][i];
46
57
  centroid[i] /= N;
47
58
  }
48
- const worst = simplex[N];
59
+ // reflect the worst point past the centroid and compute loss at reflected
60
+ // point
61
+ const worst = simplex[N];
62
+ // if the reflected point is the best seen, then possibly expand
49
63
  if ((0, blas1_1.weightedSum)(reflected, 1 + rho, centroid, -rho, worst), reflected.fx = f(reflected),
50
64
  reflected.fx < simplex[0].fx) (0, blas1_1.weightedSum)(expanded, 1 + chi, centroid, -chi, worst),
51
65
  expanded.fx = f(expanded), expanded.fx < reflected.fx ? updateSimplex(expanded) : updateSimplex(reflected); else if (reflected.fx >= simplex[N - 1].fx) {
52
66
  let shouldReduce = !1;
53
- if (reflected.fx > worst.fx ? ((0, blas1_1.weightedSum)(contracted, 1 + psi, centroid, -psi, worst),
54
- contracted.fx = f(contracted), contracted.fx < worst.fx ? updateSimplex(contracted) : shouldReduce = !0) : ((0,
55
- blas1_1.weightedSum)(contracted, 1 - psi * rho, centroid, psi * rho, worst), contracted.fx = f(contracted),
56
- contracted.fx < reflected.fx ? updateSimplex(contracted) : shouldReduce = !0), shouldReduce) {
67
+ if (reflected.fx > worst.fx ? (
68
+ // do an inside contraction
69
+ (0, blas1_1.weightedSum)(contracted, 1 + psi, centroid, -psi, worst), contracted.fx = f(contracted),
70
+ contracted.fx < worst.fx ? updateSimplex(contracted) : shouldReduce = !0) : (
71
+ // do an outside contraction
72
+ (0, blas1_1.weightedSum)(contracted, 1 - psi * rho, centroid, psi * rho, worst),
73
+ contracted.fx = f(contracted), contracted.fx < reflected.fx ? updateSimplex(contracted) : shouldReduce = !0),
74
+ shouldReduce) {
75
+ // if we don't contract here, we're done
57
76
  if (sigma >= 1) break;
58
- for (let i = 1; i < simplex.length; ++i) (0, blas1_1.weightedSum)(simplex[i], 1 - sigma, simplex[0], sigma, simplex[i]),
77
+ // do a reduction
78
+ for (let i = 1; i < simplex.length; ++i) (0, blas1_1.weightedSum)(simplex[i], 1 - sigma, simplex[0], sigma, simplex[i]),
59
79
  simplex[i].fx = f(simplex[i]);
60
80
  }
61
81
  } else updateSimplex(reflected);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/fmin/nelder-mead.ts"],"names":[],"mappings":";;;AASA,mCAAsC;AAGtC,SAAgB,UAAU,CAAC,CAAM,EAAE,EAAO,EAAE,UAAe;IACzD,UAAU,GAAG,UAAU,IAAI,EAAE,CAAC;IAE9B,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC;IAClE,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,IAAI,CAAC;IACrD,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC;IAChD,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC;IACvD,MAAM,YAAY,GAAG,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC;IACtD,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACjE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IACtE,IAAI,OAAO,CAAC;IAGZ,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IACpB,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAChB,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;QAC1B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACvB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;KAC3B;IAED,SAAS,aAAa,CAAC,KAAU;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SAC1B;QACD,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAM,EAAE,CAAM;QACxC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;IAE5B,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,aAAa,EAAE,EAAE,SAAS,EAAE;QAC9D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,UAAU,CAAC,OAAO,EAAE;YAGtB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;gBAC3C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;gBACxB,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBAChB,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBAChB,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;SAC/F;QAED,OAAO,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;YAC1B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtE;QAED,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,IAAI,OAAO,GAAG,YAAY,EAAE;YACrF,MAAM;SACP;QAGD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;YAC1B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC1B,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9B;YACD,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAClB;QAID,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,IAAA,mBAAW,EAAC,SAAS,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvD,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;QAG5B,IAAI,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,IAAA,mBAAW,EAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtD,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC1B,IAAI,QAAQ,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE;gBAC9B,aAAa,CAAC,QAAQ,CAAC,CAAC;aACzB;iBAAM;gBACL,aAAa,CAAC,SAAS,CAAC,CAAC;aAC1B;SACF;aAII,IAAI,SAAS,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1C,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,IAAI,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE;gBAE3B,IAAA,mBAAW,EAAC,UAAU,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACxD,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC9B,IAAI,UAAU,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE;oBAC5B,aAAa,CAAC,UAAU,CAAC,CAAC;iBAC3B;qBAAM;oBACL,YAAY,GAAG,IAAI,CAAC;iBACrB;aACF;iBAAM;gBAEL,IAAA,mBAAW,EAAC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;gBACnE,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC9B,IAAI,UAAU,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE;oBAChC,aAAa,CAAC,UAAU,CAAC,CAAC;iBAC3B;qBAAM;oBACL,YAAY,GAAG,IAAI,CAAC;iBACrB;aACF;YAED,IAAI,YAAY,EAAE;gBAEhB,IAAI,KAAK,IAAI,CAAC,EAAE;oBACd,MAAM;iBACP;gBAGD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;oBACvC,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC/B;aACF;SACF;aAAM;YACL,aAAa,CAAC,SAAS,CAAC,CAAC;SAC1B;KACF;IAED,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9C,CAAC;AA9ID,gCA8IC","file":"nelder-mead.js","sourcesContent":["/* Adapted from fmin by Ben Frederickson\n * https://github.com/benfred/fmin\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/benfred/fmin/blob/master/src/nelderMead.js\n * License: https://github.com/benfred/fmin/blob/master/LICENSE\n * @license\n */\n\nimport { weightedSum } from './blas1';\n\n/** minimizes a function using the downhill simplex method */\nexport function nelderMead(f: any, x0: any, parameters: any) {\n parameters = parameters || {};\n\n const maxIterations = parameters.maxIterations || x0.length * 200;\n const nonZeroDelta = parameters.nonZeroDelta || 1.05;\n const zeroDelta = parameters.zeroDelta || 0.001;\n const minErrorDelta = parameters.minErrorDelta || 1e-6;\n const minTolerance = parameters.minErrorDelta || 1e-5;\n const rho = parameters.rho !== undefined ? parameters.rho : 1;\n const chi = parameters.chi !== undefined ? parameters.chi : 2;\n const psi = parameters.psi !== undefined ? parameters.psi : -0.5;\n const sigma = parameters.sigma !== undefined ? parameters.sigma : 0.5;\n let maxDiff;\n\n // initialize simplex.\n const N = x0.length;\n const simplex = new Array(N + 1);\n simplex[0] = x0;\n simplex[0].fx = f(x0);\n simplex[0].id = 0;\n for (let i = 0; i < N; ++i) {\n const point = x0.slice();\n point[i] = point[i] ? point[i] * nonZeroDelta : zeroDelta;\n simplex[i + 1] = point;\n simplex[i + 1].fx = f(point);\n simplex[i + 1].id = i + 1;\n }\n\n function updateSimplex(value: any) {\n for (let i = 0; i < value.length; i++) {\n simplex[N][i] = value[i];\n }\n simplex[N].fx = value.fx;\n }\n\n const sortOrder = function (a: any, b: any) {\n return a.fx - b.fx;\n };\n\n const centroid = x0.slice();\n const reflected = x0.slice();\n const contracted = x0.slice();\n const expanded = x0.slice();\n\n for (let iteration = 0; iteration < maxIterations; ++iteration) {\n simplex.sort(sortOrder);\n\n if (parameters.history) {\n // copy the simplex (since later iterations will mutate) and\n // sort it to have a consistent order between iterations\n const sortedSimplex = simplex.map(function (x) {\n const state = x.slice();\n state.fx = x.fx;\n state.id = x.id;\n return state;\n });\n sortedSimplex.sort(function (a, b) {\n return a.id - b.id;\n });\n\n parameters.history.push({ x: simplex[0].slice(), fx: simplex[0].fx, simplex: sortedSimplex });\n }\n\n maxDiff = 0;\n for (let i = 0; i < N; ++i) {\n maxDiff = Math.max(maxDiff, Math.abs(simplex[0][i] - simplex[1][i]));\n }\n\n if (Math.abs(simplex[0].fx - simplex[N].fx) < minErrorDelta && maxDiff < minTolerance) {\n break;\n }\n\n // compute the centroid of all but the worst point in the simplex\n for (let i = 0; i < N; ++i) {\n centroid[i] = 0;\n for (let j = 0; j < N; ++j) {\n centroid[i] += simplex[j][i];\n }\n centroid[i] /= N;\n }\n\n // reflect the worst point past the centroid and compute loss at reflected\n // point\n const worst = simplex[N];\n weightedSum(reflected, 1 + rho, centroid, -rho, worst);\n reflected.fx = f(reflected);\n\n // if the reflected point is the best seen, then possibly expand\n if (reflected.fx < simplex[0].fx) {\n weightedSum(expanded, 1 + chi, centroid, -chi, worst);\n expanded.fx = f(expanded);\n if (expanded.fx < reflected.fx) {\n updateSimplex(expanded);\n } else {\n updateSimplex(reflected);\n }\n }\n\n // if the reflected point is worse than the second worst, we need to\n // contract\n else if (reflected.fx >= simplex[N - 1].fx) {\n let shouldReduce = false;\n\n if (reflected.fx > worst.fx) {\n // do an inside contraction\n weightedSum(contracted, 1 + psi, centroid, -psi, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < worst.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n } else {\n // do an outside contraction\n weightedSum(contracted, 1 - psi * rho, centroid, psi * rho, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < reflected.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n }\n\n if (shouldReduce) {\n // if we don't contract here, we're done\n if (sigma >= 1) {\n break;\n }\n\n // do a reduction\n for (let i = 1; i < simplex.length; ++i) {\n weightedSum(simplex[i], 1 - sigma, simplex[0], sigma, simplex[i]);\n simplex[i].fx = f(simplex[i]);\n }\n }\n } else {\n updateSimplex(reflected);\n }\n }\n\n simplex.sort(sortOrder);\n return { fx: simplex[0].fx, x: simplex[0] };\n}\n"]}
1
+ {"version":3,"sources":["../src/fmin/nelder-mead.ts"],"names":[],"mappings":"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","file":"nelder-mead.js","sourcesContent":["/* Adapted from fmin by Ben Frederickson\n * https://github.com/benfred/fmin\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/benfred/fmin/blob/master/src/nelderMead.js\n * License: https://github.com/benfred/fmin/blob/master/LICENSE\n * @license\n */\n\nimport { weightedSum } from './blas1';\n\n/** minimizes a function using the downhill simplex method */\nexport function nelderMead(f: any, x0: any, parameters: any) {\n parameters = parameters || {};\n\n const maxIterations = parameters.maxIterations || x0.length * 200;\n const nonZeroDelta = parameters.nonZeroDelta || 1.05;\n const zeroDelta = parameters.zeroDelta || 0.001;\n const minErrorDelta = parameters.minErrorDelta || 1e-6;\n const minTolerance = parameters.minErrorDelta || 1e-5;\n const rho = parameters.rho !== undefined ? parameters.rho : 1;\n const chi = parameters.chi !== undefined ? parameters.chi : 2;\n const psi = parameters.psi !== undefined ? parameters.psi : -0.5;\n const sigma = parameters.sigma !== undefined ? parameters.sigma : 0.5;\n let maxDiff;\n\n // initialize simplex.\n const N = x0.length;\n const simplex = new Array(N + 1);\n simplex[0] = x0;\n simplex[0].fx = f(x0);\n simplex[0].id = 0;\n for (let i = 0; i < N; ++i) {\n const point = x0.slice();\n point[i] = point[i] ? point[i] * nonZeroDelta : zeroDelta;\n simplex[i + 1] = point;\n simplex[i + 1].fx = f(point);\n simplex[i + 1].id = i + 1;\n }\n\n function updateSimplex(value: any) {\n for (let i = 0; i < value.length; i++) {\n simplex[N][i] = value[i];\n }\n simplex[N].fx = value.fx;\n }\n\n const sortOrder = function (a: any, b: any) {\n return a.fx - b.fx;\n };\n\n const centroid = x0.slice();\n const reflected = x0.slice();\n const contracted = x0.slice();\n const expanded = x0.slice();\n\n for (let iteration = 0; iteration < maxIterations; ++iteration) {\n simplex.sort(sortOrder);\n\n if (parameters.history) {\n // copy the simplex (since later iterations will mutate) and\n // sort it to have a consistent order between iterations\n const sortedSimplex = simplex.map(function (x) {\n const state = x.slice();\n state.fx = x.fx;\n state.id = x.id;\n return state;\n });\n sortedSimplex.sort(function (a, b) {\n return a.id - b.id;\n });\n\n parameters.history.push({ x: simplex[0].slice(), fx: simplex[0].fx, simplex: sortedSimplex });\n }\n\n maxDiff = 0;\n for (let i = 0; i < N; ++i) {\n maxDiff = Math.max(maxDiff, Math.abs(simplex[0][i] - simplex[1][i]));\n }\n\n if (Math.abs(simplex[0].fx - simplex[N].fx) < minErrorDelta && maxDiff < minTolerance) {\n break;\n }\n\n // compute the centroid of all but the worst point in the simplex\n for (let i = 0; i < N; ++i) {\n centroid[i] = 0;\n for (let j = 0; j < N; ++j) {\n centroid[i] += simplex[j][i];\n }\n centroid[i] /= N;\n }\n\n // reflect the worst point past the centroid and compute loss at reflected\n // point\n const worst = simplex[N];\n weightedSum(reflected, 1 + rho, centroid, -rho, worst);\n reflected.fx = f(reflected);\n\n // if the reflected point is the best seen, then possibly expand\n if (reflected.fx < simplex[0].fx) {\n weightedSum(expanded, 1 + chi, centroid, -chi, worst);\n expanded.fx = f(expanded);\n if (expanded.fx < reflected.fx) {\n updateSimplex(expanded);\n } else {\n updateSimplex(reflected);\n }\n }\n\n // if the reflected point is worse than the second worst, we need to\n // contract\n else if (reflected.fx >= simplex[N - 1].fx) {\n let shouldReduce = false;\n\n if (reflected.fx > worst.fx) {\n // do an inside contraction\n weightedSum(contracted, 1 + psi, centroid, -psi, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < worst.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n } else {\n // do an outside contraction\n weightedSum(contracted, 1 - psi * rho, centroid, psi * rho, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < reflected.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n }\n\n if (shouldReduce) {\n // if we don't contract here, we're done\n if (sigma >= 1) {\n break;\n }\n\n // do a reduction\n for (let i = 1; i < simplex.length; ++i) {\n weightedSum(simplex[i], 1 - sigma, simplex[0], sigma, simplex[i]);\n simplex[i].fx = f(simplex[i]);\n }\n }\n } else {\n updateSimplex(reflected);\n }\n }\n\n simplex.sort(sortOrder);\n return { fx: simplex[0].fx, x: simplex[0] };\n}\n"]}
@@ -1,5 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ /* Adapted from d3-time-format by Mike Bostock
4
+ * https://github.com/d3/d3-format
5
+ * Licensed under the ISC
6
+
7
+ * License: https://github.com/d3/d3-format/blob/main/LICENSE
8
+ * @license
9
+ */
3
10
  function formatDecimal(x) {
4
11
  return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString("en").replace(/,/g, "") : x.toString(10);
5
12
  }
@@ -7,7 +14,8 @@ function formatDecimal(x) {
7
14
  function formatDecimalParts(x, p) {
8
15
  const _x = p ? x.toExponential(p - 1) : x.toExponential(), i = _x.indexOf("e");
9
16
  if (i < 0) return null;
10
- const coefficient = _x.slice(0, i);
17
+ // NaN, ±Infinity
18
+ const coefficient = _x.slice(0, i);
11
19
  return [ coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +_x.slice(i + 1) ];
12
20
  }
13
21
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/number/formatDecimal.ts"],"names":[],"mappings":";;;AAOA,SAAgB,aAAa,CAAC,CAAS;IACrC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3G,CAAC;AAFD,sCAEC;AAED,SAAgB,kBAAkB,CAAC,CAAS,EAAE,CAAU;IACtD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1D,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,IAAI,CAAC;KACb;IACD,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnC,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1G,CAAC;AATD,gDASC","file":"formatDecimal.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\nexport function formatDecimal(x: number) {\n return Math.abs((x = Math.round(x))) >= 1e21 ? x.toLocaleString('en').replace(/,/g, '') : x.toString(10);\n}\n\nexport function formatDecimalParts(x: number, p?: number): [string, number] | null {\n const _x = p ? x.toExponential(p - 1) : x.toExponential();\n const i = _x.indexOf('e');\n if (i < 0) {\n return null; // NaN, ±Infinity\n }\n const coefficient = _x.slice(0, i);\n\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +_x.slice(i + 1)];\n}\n"]}
1
+ {"version":3,"sources":["../src/format/number/formatDecimal.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,CAAS;IACrC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3G,CAAC;AAFD,sCAEC;AAED,SAAgB,kBAAkB,CAAC,CAAS,EAAE,CAAU;IACtD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1D,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,IAAI,CAAC,CAAC,iBAAiB;KAC/B;IACD,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnC,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1G,CAAC;AATD,gDASC","file":"formatDecimal.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\nexport function formatDecimal(x: number) {\n return Math.abs((x = Math.round(x))) >= 1e21 ? x.toLocaleString('en').replace(/,/g, '') : x.toString(10);\n}\n\nexport function formatDecimalParts(x: number, p?: number): [string, number] | null {\n const _x = p ? x.toExponential(p - 1) : x.toExponential();\n const i = _x.indexOf('e');\n if (i < 0) {\n return null; // NaN, ±Infinity\n }\n const coefficient = _x.slice(0, i);\n\n return [coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, +_x.slice(i + 1)];\n}\n"]}
@@ -1,5 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ /* Adapted from d3-time-format by Mike Bostock
4
+ * https://github.com/d3/d3-format
5
+ * Licensed under the ISC
6
+
7
+ * License: https://github.com/d3/d3-format/blob/main/LICENSE
8
+ * @license
9
+ */
3
10
  function formatGroup(grouping, thousands) {
4
11
  return function(value, width) {
5
12
  let i = value.length;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/number/formatGroup.ts"],"names":[],"mappings":";;;AAOA,SAAgB,WAAW,CAAC,QAAkB,EAAE,SAAiB;IAC/D,OAAO,UAAU,KAAa,EAAE,KAAa;QAC3C,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACrB,MAAM,CAAC,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACrB,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE;gBAC1B,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;aACjC;YACD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE;gBAC7B,MAAM;aACP;YACD,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;SAC/C;QAED,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC;AArBD,kCAqBC","file":"formatGroup.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\nexport function formatGroup(grouping: number[], thousands: string) {\n return function (value: string, width: number) {\n let i = value.length;\n const t = [];\n let j = 0;\n let g = grouping[0];\n let length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) {\n g = Math.max(1, width - length);\n }\n t.push(value.substring((i -= g), i + g));\n if ((length += g + 1) > width) {\n break;\n }\n g = grouping[(j = (j + 1) % grouping.length)];\n }\n\n return t.reverse().join(thousands);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/format/number/formatGroup.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,QAAkB,EAAE,SAAiB;IAC/D,OAAO,UAAU,KAAa,EAAE,KAAa;QAC3C,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACrB,MAAM,CAAC,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACrB,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE;gBAC1B,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;aACjC;YACD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE;gBAC7B,MAAM;aACP;YACD,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;SAC/C;QAED,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC;AArBD,kCAqBC","file":"formatGroup.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\nexport function formatGroup(grouping: number[], thousands: string) {\n return function (value: string, width: number) {\n let i = value.length;\n const t = [];\n let j = 0;\n let g = grouping[0];\n let length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) {\n g = Math.max(1, width - length);\n }\n t.push(value.substring((i -= g), i + g));\n if ((length += g + 1) > width) {\n break;\n }\n g = grouping[(j = (j + 1) % grouping.length)];\n }\n\n return t.reverse().join(thousands);\n };\n}\n"]}
@@ -4,6 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.formatPrefixAuto = exports.prefixExponent = void 0;
6
6
 
7
+ /* Adapted from d3-time-format by Mike Bostock
8
+ * https://github.com/d3/d3-format
9
+ * Licensed under the ISC
10
+
11
+ * License: https://github.com/d3/d3-format/blob/main/LICENSE
12
+ * @license
13
+ */
7
14
  const formatDecimal_1 = require("./formatDecimal");
8
15
 
9
16
  function formatPrefixAuto(x, p) {
@@ -12,6 +19,7 @@ function formatPrefixAuto(x, p) {
12
19
  const coefficient = d[0], exponent = d[1], i = exponent - (exports.prefixExponent = 3 * Math.max(-8, Math.min(8, Math.floor(exponent / 3)))) + 1, n = coefficient.length;
13
20
  return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join("0") : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) : "0." + new Array(1 - i).join("0") + (0,
14
21
  formatDecimal_1.formatDecimalParts)(x, Math.max(0, p + i - 1))[0];
22
+ // less than 1y!
15
23
  }
16
24
 
17
25
  exports.formatPrefixAuto = formatPrefixAuto;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/number/formatPrefixAuto.ts"],"names":[],"mappings":";;;AAOA,mDAAqD;AAIrD,SAAgB,gBAAgB,CAAC,CAAS,EAAE,CAAS;IACnD,MAAM,CAAC,GAAG,IAAA,kCAAkB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,EAAE;QACN,OAAO,CAAC,GAAG,EAAE,CAAC;KACf;IACD,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,QAAQ,GAAG,CAAC,sBAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACpG,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC;QACZ,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,CAAC,GAAG,CAAC;YACP,CAAC,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9C,CAAC,CAAC,CAAC,GAAG,CAAC;gBACP,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAA,kCAAkB,EAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,CAAC;AAhBD,4CAgBC","file":"formatPrefixAuto.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\nimport { formatDecimalParts } from './formatDecimal';\n\nexport let prefixExponent: number;\n\nexport function formatPrefixAuto(x: number, p: number) {\n const d = formatDecimalParts(x, p);\n if (!d) {\n return x + '';\n }\n const coefficient = d[0];\n const exponent = d[1];\n const i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1;\n const n = coefficient.length;\n return i === n\n ? coefficient\n : i > n\n ? coefficient + new Array(i - n + 1).join('0')\n : i > 0\n ? coefficient.slice(0, i) + '.' + coefficient.slice(i)\n : '0.' + new Array(1 - i).join('0') + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n"]}
1
+ {"version":3,"sources":["../src/format/number/formatPrefixAuto.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,mDAAqD;AAIrD,SAAgB,gBAAgB,CAAC,CAAS,EAAE,CAAS;IACnD,MAAM,CAAC,GAAG,IAAA,kCAAkB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,EAAE;QACN,OAAO,CAAC,GAAG,EAAE,CAAC;KACf;IACD,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,QAAQ,GAAG,CAAC,sBAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACpG,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC;QACZ,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,CAAC,GAAG,CAAC;YACP,CAAC,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9C,CAAC,CAAC,CAAC,GAAG,CAAC;gBACP,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAA,kCAAkB,EAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;AAC5G,CAAC;AAhBD,4CAgBC","file":"formatPrefixAuto.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\nimport { formatDecimalParts } from './formatDecimal';\n\nexport let prefixExponent: number;\n\nexport function formatPrefixAuto(x: number, p: number) {\n const d = formatDecimalParts(x, p);\n if (!d) {\n return x + '';\n }\n const coefficient = d[0];\n const exponent = d[1];\n const i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1;\n const n = coefficient.length;\n return i === n\n ? coefficient\n : i > n\n ? coefficient + new Array(i - n + 1).join('0')\n : i > 0\n ? coefficient.slice(0, i) + '.' + coefficient.slice(i)\n : '0.' + new Array(1 - i).join('0') + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n"]}
@@ -4,6 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.formatRounded = void 0;
6
6
 
7
+ /* Adapted from d3-time-format by Mike Bostock
8
+ * https://github.com/d3/d3-format
9
+ * Licensed under the ISC
10
+
11
+ * License: https://github.com/d3/d3-format/blob/main/LICENSE
12
+ * @license
13
+ */
7
14
  const formatDecimal_1 = require("./formatDecimal");
8
15
 
9
16
  function formatRounded(x, p) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/number/formatRounded.ts"],"names":[],"mappings":";;;AAOA,mDAAqD;AAErD,SAAgB,aAAa,CAAC,CAAS,EAAE,CAAS;IAChD,MAAM,CAAC,GAAG,IAAA,kCAAkB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,EAAE;QACN,OAAO,CAAC,GAAG,EAAE,CAAC;KACf;IACD,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,QAAQ,GAAG,CAAC;QACjB,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW;QACrD,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC;YACnC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC5E,CAAC,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3E,CAAC;AAZD,sCAYC","file":"formatRounded.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\nimport { formatDecimalParts } from './formatDecimal';\n\nexport function formatRounded(x: number, p: number) {\n const d = formatDecimalParts(x, p);\n if (!d) {\n return x + '';\n }\n const coefficient = d[0];\n const exponent = d[1];\n return exponent < 0\n ? '0.' + new Array(-exponent).join('0') + coefficient\n : coefficient.length > exponent + 1\n ? coefficient.slice(0, exponent + 1) + '.' + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join('0');\n}\n"]}
1
+ {"version":3,"sources":["../src/format/number/formatRounded.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,mDAAqD;AAErD,SAAgB,aAAa,CAAC,CAAS,EAAE,CAAS;IAChD,MAAM,CAAC,GAAG,IAAA,kCAAkB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,EAAE;QACN,OAAO,CAAC,GAAG,EAAE,CAAC;KACf;IACD,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,QAAQ,GAAG,CAAC;QACjB,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW;QACrD,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC;YACnC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC5E,CAAC,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3E,CAAC;AAZD,sCAYC","file":"formatRounded.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\nimport { formatDecimalParts } from './formatDecimal';\n\nexport function formatRounded(x: number, p: number) {\n const d = formatDecimalParts(x, p);\n if (!d) {\n return x + '';\n }\n const coefficient = d[0];\n const exponent = d[1];\n return exponent < 0\n ? '0.' + new Array(-exponent).join('0') + coefficient\n : coefficient.length > exponent + 1\n ? coefficient.slice(0, exponent + 1) + '.' + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join('0');\n}\n"]}
@@ -1,5 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ /* Adapted from d3-time-format by Mike Bostock
4
+ * https://github.com/d3/d3-format
5
+ * Licensed under the ISC
6
+
7
+ * License: https://github.com/d3/d3-format/blob/main/LICENSE
8
+ * @license
9
+ */
3
10
  function formatTrim(s) {
4
11
  const n = s.length;
5
12
  let i1, i0 = -1;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/number/formatTrim.ts"],"names":[],"mappings":";;;AAOA,SAAgB,UAAU,CAAC,CAAS;IAClC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;QAC/B,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACZ,KAAK,GAAG;gBACN,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACZ,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,EAAE,KAAK,CAAC,EAAE;oBACZ,EAAE,GAAG,CAAC,CAAC;iBACR;gBACD,EAAE,GAAG,CAAC,CAAC;gBACP,MAAM;YACR;gBACE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;oBACV,MAAM,GAAG,CAAC;iBACX;gBACD,IAAI,EAAE,GAAG,CAAC,EAAE;oBACV,EAAE,GAAG,CAAC,CAAC;iBACR;gBACD,MAAM;SACT;KACF;IACD,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AA1BD,gCA0BC","file":"formatTrim.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\nexport function formatTrim(s: string) {\n const n = s.length;\n let i0 = -1;\n let i1;\n out: for (let i = 1; i < n; ++i) {\n switch (s[i]) {\n case '.':\n i0 = i1 = i;\n break;\n case '0':\n if (i0 === 0) {\n i0 = i;\n }\n i1 = i;\n break;\n default:\n if (!+s[i]) {\n break out;\n }\n if (i0 > 0) {\n i0 = 0;\n }\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n"]}
1
+ {"version":3,"sources":["../src/format/number/formatTrim.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,CAAS;IAClC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;QAC/B,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACZ,KAAK,GAAG;gBACN,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACZ,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,EAAE,KAAK,CAAC,EAAE;oBACZ,EAAE,GAAG,CAAC,CAAC;iBACR;gBACD,EAAE,GAAG,CAAC,CAAC;gBACP,MAAM;YACR;gBACE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;oBACV,MAAM,GAAG,CAAC;iBACX;gBACD,IAAI,EAAE,GAAG,CAAC,EAAE;oBACV,EAAE,GAAG,CAAC,CAAC;iBACR;gBACD,MAAM;SACT;KACF;IACD,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AA1BD,gCA0BC","file":"formatTrim.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\nexport function formatTrim(s: string) {\n const n = s.length;\n let i0 = -1;\n let i1;\n out: for (let i = 1; i < n; ++i) {\n switch (s[i]) {\n case '.':\n i0 = i1 = i;\n break;\n case '0':\n if (i0 === 0) {\n i0 = i;\n }\n i1 = i;\n break;\n default:\n if (!+s[i]) {\n break out;\n }\n if (i0 > 0) {\n i0 = 0;\n }\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n"]}
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
3
+ /* Adapted from d3-time-format by Mike Bostock
4
+ * https://github.com/d3/d3-format
5
+ * Licensed under the ISC
6
+
7
+ * License: https://github.com/d3/d3-format/blob/main/LICENSE
8
+ * @license
9
+ */ Object.defineProperty(exports, "__esModule", {
4
10
  value: !0
5
11
  }), exports.formatNumerals = exports.exponent = exports.formatTypes = exports.NumberUtil = void 0;
6
12
 
@@ -33,19 +39,36 @@ class NumberUtil {
33
39
  let zero = specifierIns.zero;
34
40
  const width = specifierIns.width;
35
41
  let comma = specifierIns.comma, precision = specifierIns.precision, trim = specifierIns.trim, type = specifierIns.type;
42
+ // The "n" type is an alias for ",g".
36
43
  "n" === type ? (comma = !0, type = "g") : exports.formatTypes[type] || (void 0 === precision && (precision = 12),
37
- trim = !0, type = "g"), (zero || "0" === fill && "=" === align) && (zero = !0, fill = "0",
38
- align = "=");
44
+ trim = !0, type = "g"),
45
+ // If zero fill is specified, padding goes after sign and before digits.
46
+ // @ts-ignore
47
+ (zero || "0" === fill && "=" === align) && (zero = !0, fill = "0", align = "=");
48
+ // Compute the prefix and suffix.
49
+ // For SI-prefix, the suffix is lazily computed.
39
50
  const prefix = "$" === symbol ? this.currencyPrefix : "#" === symbol && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", suffix = "$" === symbol ? this.currencySuffix : /[%p]/.test(type) ? this.percent : "", formatType = exports.formatTypes[type], maybeSuffix = /[defgprstz%]/.test(type);
51
+ // Set the default precision if not specified,
52
+ // or clamp the specified precision to the supported range.
53
+ // For significant precision, it must be in [1, 21].
54
+ // For fixed precision, it must be in [0, 20].
40
55
  precision = void 0 === precision ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));
41
56
  const {nan: nan, minus: minus, decimal: decimal, group: group, numerals: numerals} = this;
42
57
  function format(value) {
43
58
  let i, n, c, valuePrefix = prefix, valueSuffix = suffix, _value = value;
44
59
  if ("c" === type) valueSuffix = formatType(_value) + valueSuffix, _value = ""; else {
45
60
  _value = +_value;
61
+ // Determine the sign. -0 is not less than 0, but 1 / -0 is!
46
62
  let valueNegative = _value < 0 || 1 / _value < 0;
47
- if (_value = isNaN(_value) ? nan : formatType(Math.abs(_value), precision), trim && (_value = (0,
48
- formatTrim_1.formatTrim)(_value)), valueNegative && 0 == +_value && "+" !== sign && (valueNegative = !1),
63
+ // Perform the initial formatting.
64
+ // Break the formatted value into the integer “value” part that can be
65
+ // grouped, and fractional or exponential “suffix” part that is not.
66
+ if (_value = isNaN(_value) ? nan : formatType(Math.abs(_value), precision),
67
+ // Trim insignificant zeros.
68
+ trim && (_value = (0, formatTrim_1.formatTrim)(_value)),
69
+ // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.
70
+ valueNegative && 0 == +_value && "+" !== sign && (valueNegative = !1),
71
+ // Compute the prefix and suffix.
49
72
  valuePrefix = (valueNegative ? "(" === sign ? sign : minus : "-" === sign || "(" === sign ? "" : sign) + valuePrefix,
50
73
  valueSuffix = ("s" === type ? prefixes[8 + formatPrefixAuto_1.prefixExponent / 3] : "") + valueSuffix + (valueNegative && "(" === sign ? ")" : ""),
51
74
  maybeSuffix) for (i = -1, n = _value.length; ++i < n; ) if (c = _value.charCodeAt(i),
@@ -55,9 +78,14 @@ class NumberUtil {
55
78
  break;
56
79
  }
57
80
  }
58
- comma && !zero && (_value = group(_value, 1 / 0));
59
- let length = valuePrefix.length + _value.length + valueSuffix.length, padding = length < width ? new Array(width - length + 1).join(fill) : "";
60
- switch (comma && zero && (_value = group(padding + _value, padding.length ? width - valueSuffix.length : 1 / 0),
81
+ // If the fill character is not "0", grouping is applied before padding.
82
+ comma && !zero && (_value = group(_value, 1 / 0));
83
+ // Compute the padding.
84
+ let length = valuePrefix.length + _value.length + valueSuffix.length, padding = length < width ? new Array(width - length + 1).join(fill) : "";
85
+ // Reconstruct the final output based on the desired alignment.
86
+ switch (
87
+ // If the fill character is "0", grouping is applied after padding.
88
+ comma && zero && (_value = group(padding + _value, padding.length ? width - valueSuffix.length : 1 / 0),
61
89
  padding = ""), align) {
62
90
  case "<":
63
91
  _value = valuePrefix + _value + valueSuffix + padding;
@@ -115,7 +143,9 @@ exports.NumberUtil = NumberUtil, exports.formatTypes = {
115
143
  s: formatPrefixAuto_1.formatPrefixAuto,
116
144
  X: x => Math.round(x).toString(16).toUpperCase(),
117
145
  x: x => Math.round(x).toString(16),
118
- t: (x, p) => Number.isInteger(x) ? x.toFixed(2) : Math.floor(x * Math.pow(10, p)) / Math.pow(10, p) + "",
146
+ t: (x, p) =>
147
+ // 判断是否为整数
148
+ Number.isInteger(x) ? x.toFixed(2) : Math.floor(x * Math.pow(10, p)) / Math.pow(10, p) + "",
119
149
  z: (x, p) => x % 1 == 0 ? x + "" : x.toFixed(p)
120
150
  }, exports.exponent = exponent, exports.formatNumerals = formatNumerals;
121
151
  //# sourceMappingURL=number.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/number/number.ts"],"names":[],"mappings":"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","file":"number.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\n\nimport { formatDecimal, formatDecimalParts } from './formatDecimal';\nimport { formatGroup } from './formatGroup';\nimport { formatPrefixAuto, prefixExponent } from './formatPrefixAuto';\nimport { formatRounded } from './formatRounded';\nimport { formatTrim } from './formatTrim';\nimport { formatSpecifier } from './specifier';\n\nexport interface FormatLocale {\n thousands: string;\n grouping: number[];\n currency: [string, string];\n numerals?: string[] | undefined;\n percent?: string | undefined;\n minus?: string | undefined;\n nan?: string | undefined;\n decimal?: string;\n}\n\nconst prefixes = ['y', 'z', 'a', 'f', 'p', 'n', 'µ', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];\n\nexport class NumberUtil {\n private locale: FormatLocale = {\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n };\n\n private group =\n this.locale.grouping === undefined || this.locale.thousands === undefined\n ? (group: any) => group\n : formatGroup([...this.locale.grouping].map(Number), `${this.locale.thousands}`);\n private currencyPrefix = this.locale.currency === undefined ? '' : this.locale.currency[0] + '';\n private currencySuffix = this.locale.currency === undefined ? '' : this.locale.currency[1] + '';\n private decimal = this.locale.decimal === undefined ? '.' : this.locale.decimal + '';\n private numerals =\n this.locale.numerals === undefined\n ? (numerals: any) => numerals\n : formatNumerals([...this.locale.numerals].map(String));\n private percent = this.locale.percent === undefined ? '%' : this.locale.percent + '';\n private minus = this.locale.minus === undefined ? '−' : this.locale.minus + '';\n private nan = this.locale.nan === undefined ? 'NaN' : this.locale.nan + '';\n\n private static instance: NumberUtil;\n\n static getInstance(): NumberUtil {\n if (!NumberUtil.instance) {\n NumberUtil.instance = new NumberUtil();\n }\n return NumberUtil.instance;\n }\n\n private newFormat(specifier: string) {\n const specifierIns = formatSpecifier(specifier);\n\n let fill = specifierIns.fill;\n let align = specifierIns.align;\n const sign = specifierIns.sign;\n const symbol = specifierIns.symbol;\n let zero = specifierIns.zero;\n const width = specifierIns.width;\n let comma = specifierIns.comma;\n let precision = specifierIns.precision;\n let trim = specifierIns.trim;\n let type = specifierIns.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === 'n') {\n (comma = true), (type = 'g');\n }\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n // @ts-ignore\n else if (!formatTypes[type]) {\n precision === undefined && (precision = 12), (trim = true), (type = 'g');\n }\n\n // If zero fill is specified, padding goes after sign and before digits.\n // @ts-ignore\n if (zero || (fill === '0' && align === '=')) {\n (zero = true), (fill = '0'), (align = '=');\n }\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n const prefix =\n symbol === '$' ? this.currencyPrefix : symbol === '#' && /[boxX]/.test(type) ? '0' + type.toLowerCase() : '';\n const suffix = symbol === '$' ? this.currencySuffix : /[%p]/.test(type) ? this.percent : '';\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n const formatType = formatTypes[type];\n const maybeSuffix = /[defgprstz%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision =\n precision === undefined\n ? 6\n : /[gprs]/.test(type)\n ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n const { nan, minus, decimal, group, numerals } = this;\n\n function format(value: number) {\n let valuePrefix = prefix;\n let valueSuffix = suffix;\n let i;\n let n;\n let c;\n let _value: any = value;\n\n if (type === 'c') {\n valueSuffix = formatType(_value) + valueSuffix;\n _value = '';\n } else {\n _value = +_value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n let valueNegative = _value < 0 || 1 / _value < 0;\n\n // Perform the initial formatting.\n _value = isNaN(_value) ? nan : formatType(Math.abs(_value), precision);\n\n // Trim insignificant zeros.\n if (trim) {\n _value = formatTrim(_value);\n }\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +_value === 0 && sign !== '+') {\n valueNegative = false;\n }\n\n // Compute the prefix and suffix.\n valuePrefix =\n (valueNegative ? (sign === '(' ? sign : minus) : sign === '-' || sign === '(' ? '' : sign) + valuePrefix;\n valueSuffix =\n (type === 's' ? prefixes[8 + prefixExponent / 3] : '') +\n valueSuffix +\n (valueNegative && sign === '(' ? ')' : '');\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n (i = -1), (n = _value.length);\n while (++i < n) {\n if (((c = _value.charCodeAt(i)), 48 > c || c > 57)) {\n valueSuffix = (c === 46 ? decimal + _value.slice(i + 1) : _value.slice(i)) + valueSuffix;\n _value = _value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) {\n _value = group(_value, Infinity);\n }\n\n // Compute the padding.\n let length = valuePrefix.length + _value.length + valueSuffix.length;\n let padding = length < width ? new Array(width - length + 1).join(fill) : '';\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) {\n _value = group(padding + _value, padding.length ? width - valueSuffix.length : Infinity);\n padding = '';\n }\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case '<':\n _value = valuePrefix + _value + valueSuffix + padding;\n break;\n case '=':\n _value = valuePrefix + padding + _value + valueSuffix;\n break;\n case '^':\n _value =\n padding.slice(0, (length = padding.length >> 1)) +\n valuePrefix +\n _value +\n valueSuffix +\n padding.slice(length);\n break;\n default:\n _value = padding + valuePrefix + _value + valueSuffix;\n break;\n }\n return numerals(_value);\n }\n\n format.toString = function () {\n return specifier + '';\n };\n\n return format;\n }\n\n private _formatPrefix(specifier: string, value: number) {\n const _specifier = formatSpecifier(specifier);\n _specifier.type = 'f';\n const f = this.newFormat(_specifier.toString());\n const e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3;\n const k = Math.pow(10, -e);\n const prefix = prefixes[8 + e / 3];\n return function (value: number) {\n return f(k * value) + prefix;\n };\n }\n\n formatter = (specifier: string) => {\n return this.newFormat(specifier);\n };\n\n format = (specifier: string, value: number) => {\n return this.formatter(specifier)(value);\n };\n\n formatPrefix = (specifier: string, value: number) => {\n return this._formatPrefix(specifier, value);\n };\n}\n\nexport const formatTypes = {\n '%': (x: number, p: number) => (x * 100).toFixed(p),\n b: (x: number) => Math.round(x).toString(2),\n c: (x: number) => x + '',\n d: formatDecimal,\n f: (x: number, p: number) => x.toFixed(p),\n e: (x: number, p: number) => x.toExponential(p),\n g: (x: number, p: number) => x.toPrecision(p),\n o: (x: number) => Math.round(x).toString(8),\n p: (x: number, p: number) => formatRounded(x * 100, p),\n r: formatRounded,\n s: formatPrefixAuto,\n X: (x: number) => Math.round(x).toString(16).toUpperCase(),\n x: (x: number) => Math.round(x).toString(16),\n t: (x: number, p: number) => {\n // 判断是否为整数\n if (Number.isInteger(x)) {\n return x.toFixed(2);\n }\n return Math.floor(x * Math.pow(10, p)) / Math.pow(10, p) + '';\n },\n z: (x: number, p: number) => (x % 1 === 0 ? x + '' : x.toFixed(p))\n};\n\nexport function exponent(x: number) {\n const _x = formatDecimalParts(Math.abs(x));\n return _x ? _x[1] : NaN;\n}\n\nexport function formatNumerals(numerals: string[]) {\n return function (value: string) {\n return value.replace(/[0-9]/g, (i: string) => numerals[+i]);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/format/number/number.ts"],"names":[],"mappings":"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","file":"number.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\n\nimport { formatDecimal, formatDecimalParts } from './formatDecimal';\nimport { formatGroup } from './formatGroup';\nimport { formatPrefixAuto, prefixExponent } from './formatPrefixAuto';\nimport { formatRounded } from './formatRounded';\nimport { formatTrim } from './formatTrim';\nimport { formatSpecifier } from './specifier';\n\nexport interface FormatLocale {\n thousands: string;\n grouping: number[];\n currency: [string, string];\n numerals?: string[] | undefined;\n percent?: string | undefined;\n minus?: string | undefined;\n nan?: string | undefined;\n decimal?: string;\n}\n\nconst prefixes = ['y', 'z', 'a', 'f', 'p', 'n', 'µ', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];\n\nexport class NumberUtil {\n private locale: FormatLocale = {\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n };\n\n private group =\n this.locale.grouping === undefined || this.locale.thousands === undefined\n ? (group: any) => group\n : formatGroup([...this.locale.grouping].map(Number), `${this.locale.thousands}`);\n private currencyPrefix = this.locale.currency === undefined ? '' : this.locale.currency[0] + '';\n private currencySuffix = this.locale.currency === undefined ? '' : this.locale.currency[1] + '';\n private decimal = this.locale.decimal === undefined ? '.' : this.locale.decimal + '';\n private numerals =\n this.locale.numerals === undefined\n ? (numerals: any) => numerals\n : formatNumerals([...this.locale.numerals].map(String));\n private percent = this.locale.percent === undefined ? '%' : this.locale.percent + '';\n private minus = this.locale.minus === undefined ? '−' : this.locale.minus + '';\n private nan = this.locale.nan === undefined ? 'NaN' : this.locale.nan + '';\n\n private static instance: NumberUtil;\n\n static getInstance(): NumberUtil {\n if (!NumberUtil.instance) {\n NumberUtil.instance = new NumberUtil();\n }\n return NumberUtil.instance;\n }\n\n private newFormat(specifier: string) {\n const specifierIns = formatSpecifier(specifier);\n\n let fill = specifierIns.fill;\n let align = specifierIns.align;\n const sign = specifierIns.sign;\n const symbol = specifierIns.symbol;\n let zero = specifierIns.zero;\n const width = specifierIns.width;\n let comma = specifierIns.comma;\n let precision = specifierIns.precision;\n let trim = specifierIns.trim;\n let type = specifierIns.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === 'n') {\n (comma = true), (type = 'g');\n }\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n // @ts-ignore\n else if (!formatTypes[type]) {\n precision === undefined && (precision = 12), (trim = true), (type = 'g');\n }\n\n // If zero fill is specified, padding goes after sign and before digits.\n // @ts-ignore\n if (zero || (fill === '0' && align === '=')) {\n (zero = true), (fill = '0'), (align = '=');\n }\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n const prefix =\n symbol === '$' ? this.currencyPrefix : symbol === '#' && /[boxX]/.test(type) ? '0' + type.toLowerCase() : '';\n const suffix = symbol === '$' ? this.currencySuffix : /[%p]/.test(type) ? this.percent : '';\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n const formatType = formatTypes[type];\n const maybeSuffix = /[defgprstz%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision =\n precision === undefined\n ? 6\n : /[gprs]/.test(type)\n ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n const { nan, minus, decimal, group, numerals } = this;\n\n function format(value: number) {\n let valuePrefix = prefix;\n let valueSuffix = suffix;\n let i;\n let n;\n let c;\n let _value: any = value;\n\n if (type === 'c') {\n valueSuffix = formatType(_value) + valueSuffix;\n _value = '';\n } else {\n _value = +_value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n let valueNegative = _value < 0 || 1 / _value < 0;\n\n // Perform the initial formatting.\n _value = isNaN(_value) ? nan : formatType(Math.abs(_value), precision);\n\n // Trim insignificant zeros.\n if (trim) {\n _value = formatTrim(_value);\n }\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +_value === 0 && sign !== '+') {\n valueNegative = false;\n }\n\n // Compute the prefix and suffix.\n valuePrefix =\n (valueNegative ? (sign === '(' ? sign : minus) : sign === '-' || sign === '(' ? '' : sign) + valuePrefix;\n valueSuffix =\n (type === 's' ? prefixes[8 + prefixExponent / 3] : '') +\n valueSuffix +\n (valueNegative && sign === '(' ? ')' : '');\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n (i = -1), (n = _value.length);\n while (++i < n) {\n if (((c = _value.charCodeAt(i)), 48 > c || c > 57)) {\n valueSuffix = (c === 46 ? decimal + _value.slice(i + 1) : _value.slice(i)) + valueSuffix;\n _value = _value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) {\n _value = group(_value, Infinity);\n }\n\n // Compute the padding.\n let length = valuePrefix.length + _value.length + valueSuffix.length;\n let padding = length < width ? new Array(width - length + 1).join(fill) : '';\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) {\n _value = group(padding + _value, padding.length ? width - valueSuffix.length : Infinity);\n padding = '';\n }\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case '<':\n _value = valuePrefix + _value + valueSuffix + padding;\n break;\n case '=':\n _value = valuePrefix + padding + _value + valueSuffix;\n break;\n case '^':\n _value =\n padding.slice(0, (length = padding.length >> 1)) +\n valuePrefix +\n _value +\n valueSuffix +\n padding.slice(length);\n break;\n default:\n _value = padding + valuePrefix + _value + valueSuffix;\n break;\n }\n return numerals(_value);\n }\n\n format.toString = function () {\n return specifier + '';\n };\n\n return format;\n }\n\n private _formatPrefix(specifier: string, value: number) {\n const _specifier = formatSpecifier(specifier);\n _specifier.type = 'f';\n const f = this.newFormat(_specifier.toString());\n const e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3;\n const k = Math.pow(10, -e);\n const prefix = prefixes[8 + e / 3];\n return function (value: number) {\n return f(k * value) + prefix;\n };\n }\n\n formatter = (specifier: string) => {\n return this.newFormat(specifier);\n };\n\n format = (specifier: string, value: number) => {\n return this.formatter(specifier)(value);\n };\n\n formatPrefix = (specifier: string, value: number) => {\n return this._formatPrefix(specifier, value);\n };\n}\n\nexport const formatTypes = {\n '%': (x: number, p: number) => (x * 100).toFixed(p),\n b: (x: number) => Math.round(x).toString(2),\n c: (x: number) => x + '',\n d: formatDecimal,\n f: (x: number, p: number) => x.toFixed(p),\n e: (x: number, p: number) => x.toExponential(p),\n g: (x: number, p: number) => x.toPrecision(p),\n o: (x: number) => Math.round(x).toString(8),\n p: (x: number, p: number) => formatRounded(x * 100, p),\n r: formatRounded,\n s: formatPrefixAuto,\n X: (x: number) => Math.round(x).toString(16).toUpperCase(),\n x: (x: number) => Math.round(x).toString(16),\n t: (x: number, p: number) => {\n // 判断是否为整数\n if (Number.isInteger(x)) {\n return x.toFixed(2);\n }\n return Math.floor(x * Math.pow(10, p)) / Math.pow(10, p) + '';\n },\n z: (x: number, p: number) => (x % 1 === 0 ? x + '' : x.toFixed(p))\n};\n\nexport function exponent(x: number) {\n const _x = formatDecimalParts(Math.abs(x));\n return _x ? _x[1] : NaN;\n}\n\nexport function formatNumerals(numerals: string[]) {\n return function (value: string) {\n return value.replace(/[0-9]/g, (i: string) => numerals[+i]);\n };\n}\n"]}
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
3
+ /* Adapted from d3-time-format by Mike Bostock
4
+ * https://github.com/d3/d3-time-format
5
+ * Licensed under the ISC
6
+
7
+ * url: https://github.com/d3/d3-time-format/blob/d6feb945baa4b7a45898a9ca926ebca044e20657/src/locale.js
8
+ * License: https://github.com/d3/d3-time-format/blob/main/LICENSE
9
+ * @license
10
+ */ Object.defineProperty(exports, "__esModule", {
4
11
  value: !0
5
12
  }), exports.TimeUtil = void 0;
6
13
 
@@ -12,11 +19,14 @@ class TimeUtil {
12
19
  this.locale_shortWeekdays = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ],
13
20
  this.locale_periods = [ "AM", "PM" ], this.locale_weekdays = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
14
21
  this.locale_shortMonths = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
15
- this.numberRe = /^\s*\d+/, this.pads = {
22
+ this.numberRe = /^\s*\d+/, // note: ignores next directive
23
+ this.pads = {
16
24
  "-": "",
17
25
  _: " ",
18
26
  0: "0"
19
- }, this.requoteRe = /[\\^$*+?|[\]().{}]/g, this.locale_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ],
27
+ },
28
+ // const percentRe = /^%/;
29
+ this.requoteRe = /[\\^$*+?|[\]().{}]/g, this.locale_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ],
20
30
  this.formatShortWeekday = d => this.locale_shortWeekdays[d.getDay()], this.formatWeekday = d => this.locale_weekdays[d.getDay()],
21
31
  this.formatShortMonth = d => this.locale_shortMonths[d.getMonth()], this.formatMonth = d => this.locale_months[d.getMonth()],
22
32
  this.formatDayOfMonth = (d, p) => this.pad(d.getDate(), p, 2), this.formatHour24 = (d, p) => this.pad(d.getHours(), p, 2),
@@ -176,9 +186,16 @@ class TimeUtil {
176
186
  const that = this;
177
187
  return function(string) {
178
188
  const d = that.newDate(1900, void 0, 1);
179
- return that.parseSpecifier(d, specifier, string += "", 0) !== string.length ? null : "Q" in d ? new Date(d.Q) : "s" in d ? new Date(1e3 * d.s + ("L" in d ? d.L : 0)) : (Z && !("Z" in d) && (d.Z = 0),
180
- "p" in d && (d.H = d.H % 12 + 12 * d.p), void 0 === d.m && (d.m = "q" in d ? d.q : 0),
181
- "Z" in d ? (d.H += d.Z / 100 | 0, d.M += d.Z % 100, that.utcDate(d)) : that.localDate(d));
189
+ return that.parseSpecifier(d, specifier, string += "", 0) !== string.length ? null :
190
+ // If a UNIX timestamp is specified, return it.
191
+ "Q" in d ? new Date(d.Q) : "s" in d ? new Date(1e3 * d.s + ("L" in d ? d.L : 0)) : (
192
+ // If this is utcParse, never use the local timezone.
193
+ Z && !("Z" in d) && (d.Z = 0),
194
+ // The am-pm flag is 0 for AM, and 1 for PM.
195
+ "p" in d && (d.H = d.H % 12 + 12 * d.p),
196
+ // If the month was not specified, inherit from the quarter.
197
+ void 0 === d.m && (d.m = "q" in d ? d.q : 0), "Z" in d ? (d.H += d.Z / 100 | 0,
198
+ d.M += d.Z % 100, that.utcDate(d)) : that.localDate(d));
182
199
  };
183
200
  }
184
201
  newFormat(specifier, formats) {