@visactor/vutils 1.0.24 → 1.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/README.zh-CN.md +12 -0
  2. package/REGRESSION.md +36 -0
  3. package/cjs/angle.d.ts +61 -0
  4. package/cjs/angle.js +73 -7
  5. package/cjs/angle.js.map +1 -1
  6. package/cjs/color/Color.d.ts +3 -0
  7. package/cjs/color/Color.js +64 -10
  8. package/cjs/color/Color.js.map +1 -1
  9. package/cjs/color/hexToRgb.d.ts +5 -0
  10. package/cjs/color/hexToRgb.js +5 -0
  11. package/cjs/color/hexToRgb.js.map +1 -1
  12. package/cjs/color/rgbToHsl.js +5 -1
  13. package/cjs/color/rgbToHsl.js.map +1 -1
  14. package/cjs/common/array.d.ts +43 -0
  15. package/cjs/common/array.js +44 -0
  16. package/cjs/common/array.js.map +1 -1
  17. package/cjs/common/bisect.d.ts +21 -0
  18. package/cjs/common/bisect.js +29 -0
  19. package/cjs/common/bisect.js.map +1 -1
  20. package/cjs/common/bootstrap.d.ts +5 -0
  21. package/cjs/common/bootstrap.js +22 -0
  22. package/cjs/common/bootstrap.js.map +1 -0
  23. package/cjs/common/clone.js +6 -0
  24. package/cjs/common/clone.js.map +1 -1
  25. package/cjs/common/cloneDeep.js +4 -1
  26. package/cjs/common/cloneDeep.js.map +1 -1
  27. package/cjs/common/correlation.d.ts +3 -0
  28. package/cjs/common/correlation.js +83 -0
  29. package/cjs/common/correlation.js.map +1 -0
  30. package/cjs/common/debounce.js +22 -4
  31. package/cjs/common/debounce.js.map +1 -1
  32. package/cjs/common/deviation.js +1 -2
  33. package/cjs/common/ecdf.d.ts +8 -0
  34. package/cjs/common/ecdf.js +11 -2
  35. package/cjs/common/ecdf.js.map +1 -1
  36. package/cjs/common/extent.d.ts +4 -0
  37. package/cjs/common/extent.js +4 -2
  38. package/cjs/common/extent.js.map +1 -1
  39. package/cjs/common/field.d.ts +6 -0
  40. package/cjs/common/field.js +3 -0
  41. package/cjs/common/field.js.map +1 -1
  42. package/cjs/common/has.d.ts +17 -0
  43. package/cjs/common/has.js +18 -1
  44. package/cjs/common/has.js.map +1 -1
  45. package/cjs/common/index.d.ts +5 -0
  46. package/cjs/common/index.js +34 -6
  47. package/cjs/common/index.js.map +1 -1
  48. package/cjs/common/interpolate.js +16 -3
  49. package/cjs/common/interpolate.js.map +1 -1
  50. package/cjs/common/isBase64.d.ts +6 -0
  51. package/cjs/common/isBase64.js +6 -0
  52. package/cjs/common/isBase64.js.map +1 -1
  53. package/cjs/common/isBoolean.d.ts +13 -0
  54. package/cjs/common/isBoolean.js +13 -1
  55. package/cjs/common/isBoolean.js.map +1 -1
  56. package/cjs/common/isEmpty.js +11 -1
  57. package/cjs/common/isEmpty.js.map +1 -1
  58. package/cjs/common/isEqual.js +19 -7
  59. package/cjs/common/isEqual.js.map +1 -1
  60. package/cjs/common/isFunction.d.ts +25 -0
  61. package/cjs/common/isFunction.js +27 -2
  62. package/cjs/common/isFunction.js.map +1 -1
  63. package/cjs/common/isNull.js +2 -1
  64. package/cjs/common/isNumber.d.ts +23 -0
  65. package/cjs/common/isNumber.js +23 -1
  66. package/cjs/common/isNumber.js.map +1 -1
  67. package/cjs/common/isNumeric.d.ts +25 -0
  68. package/cjs/common/isNumeric.js +25 -0
  69. package/cjs/common/isNumeric.js.map +1 -1
  70. package/cjs/common/isObject.d.ts +21 -0
  71. package/cjs/common/isObject.js +22 -0
  72. package/cjs/common/isObject.js.map +1 -1
  73. package/cjs/common/isObjectLike.d.ts +20 -0
  74. package/cjs/common/isObjectLike.js +21 -0
  75. package/cjs/common/isObjectLike.js.map +1 -1
  76. package/cjs/common/isPlainObject.d.ts +25 -0
  77. package/cjs/common/isPlainObject.js.map +1 -1
  78. package/cjs/common/isPrototype.js +1 -1
  79. package/cjs/common/isRegExp.js +1 -1
  80. package/cjs/common/isShallowEqual.js +1 -0
  81. package/cjs/common/isShallowEqual.js.map +1 -1
  82. package/cjs/common/isString.d.ts +13 -0
  83. package/cjs/common/isString.js +13 -1
  84. package/cjs/common/isString.js.map +1 -1
  85. package/cjs/common/isType.d.ts +6 -0
  86. package/cjs/common/isType.js +6 -0
  87. package/cjs/common/isType.js.map +1 -1
  88. package/cjs/common/isValidNumber.js.map +1 -1
  89. package/cjs/common/isValidUrl.js.map +1 -1
  90. package/cjs/common/kde.d.ts +28 -0
  91. package/cjs/common/kde.js +29 -5
  92. package/cjs/common/kde.js.map +1 -1
  93. package/cjs/common/mean.d.ts +2 -0
  94. package/cjs/common/mean.js +25 -0
  95. package/cjs/common/mean.js.map +1 -0
  96. package/cjs/common/merge.js +20 -4
  97. package/cjs/common/merge.js.map +1 -1
  98. package/cjs/common/mixin.js +14 -3
  99. package/cjs/common/mixin.js.map +1 -1
  100. package/cjs/common/normalQuantile.d.ts +5 -0
  101. package/cjs/common/normalQuantile.js +21 -0
  102. package/cjs/common/normalQuantile.js.map +1 -0
  103. package/cjs/common/number.d.ts +24 -0
  104. package/cjs/common/number.js +24 -1
  105. package/cjs/common/number.js.map +1 -1
  106. package/cjs/common/pad.d.ts +21 -0
  107. package/cjs/common/pad.js +21 -1
  108. package/cjs/common/pad.js.map +1 -1
  109. package/cjs/common/random.d.ts +3 -0
  110. package/cjs/common/random.js +13 -0
  111. package/cjs/common/random.js.map +1 -1
  112. package/cjs/common/regression-bootstrap.d.ts +14 -0
  113. package/cjs/common/regression-bootstrap.js +37 -0
  114. package/cjs/common/regression-bootstrap.js.map +1 -0
  115. package/cjs/common/regression-linear.d.ts +5 -0
  116. package/cjs/common/regression-linear.js +28 -39
  117. package/cjs/common/regression-linear.js.map +1 -1
  118. package/cjs/common/regression-logistic.d.ts +6 -0
  119. package/cjs/common/regression-logistic.js +25 -14
  120. package/cjs/common/regression-logistic.js.map +1 -1
  121. package/cjs/common/regression-lowess.d.ts +11 -1
  122. package/cjs/common/regression-lowess.js +125 -118
  123. package/cjs/common/regression-lowess.js.map +1 -1
  124. package/cjs/common/regression-polynomial.d.ts +1 -0
  125. package/cjs/common/regression-polynomial.js +24 -94
  126. package/cjs/common/regression-polynomial.js.map +1 -1
  127. package/cjs/common/regression-solver.d.ts +26 -0
  128. package/cjs/common/regression-solver.js +180 -0
  129. package/cjs/common/regression-solver.js.map +1 -0
  130. package/cjs/common/regression-utils.d.ts +13 -1
  131. package/cjs/common/regression-utils.js +27 -12
  132. package/cjs/common/regression-utils.js.map +1 -1
  133. package/cjs/common/throttle.js +3 -0
  134. package/cjs/common/throttle.js.map +1 -1
  135. package/cjs/common/toDate.js +22 -3
  136. package/cjs/common/toDate.js.map +1 -1
  137. package/cjs/common/uuid.d.ts +7 -0
  138. package/cjs/common/uuid.js +15 -1
  139. package/cjs/common/uuid.js.map +1 -1
  140. package/cjs/data-structure/bounds.d.ts +101 -0
  141. package/cjs/data-structure/bounds.js +74 -7
  142. package/cjs/data-structure/bounds.js.map +1 -1
  143. package/cjs/data-structure/hashTable.d.ts +4 -0
  144. package/cjs/data-structure/hashTable.js +11 -2
  145. package/cjs/data-structure/hashTable.js.map +1 -1
  146. package/cjs/data-structure/index.js +6 -2
  147. package/cjs/data-structure/index.js.map +1 -1
  148. package/cjs/data-structure/matrix.d.ts +91 -0
  149. package/cjs/data-structure/matrix.js +52 -4
  150. package/cjs/data-structure/matrix.js.map +1 -1
  151. package/cjs/data-structure/point.d.ts +3 -0
  152. package/cjs/data-structure/point.js +5 -1
  153. package/cjs/data-structure/point.js.map +1 -1
  154. package/cjs/dom.d.ts +36 -0
  155. package/cjs/dom.js +43 -1
  156. package/cjs/dom.js.map +1 -1
  157. package/cjs/fmin/blas1.js +10 -1
  158. package/cjs/fmin/blas1.js.map +1 -1
  159. package/cjs/fmin/conjugate-gradient.js +18 -3
  160. package/cjs/fmin/conjugate-gradient.js.map +1 -1
  161. package/cjs/fmin/linesearch.js +15 -1
  162. package/cjs/fmin/linesearch.js.map +1 -1
  163. package/cjs/fmin/nelder-mead.d.ts +1 -0
  164. package/cjs/fmin/nelder-mead.js +30 -10
  165. package/cjs/fmin/nelder-mead.js.map +1 -1
  166. package/cjs/format/number/formatDecimal.js +9 -1
  167. package/cjs/format/number/formatDecimal.js.map +1 -1
  168. package/cjs/format/number/formatGroup.js +7 -0
  169. package/cjs/format/number/formatGroup.js.map +1 -1
  170. package/cjs/format/number/formatPrefixAuto.js +8 -0
  171. package/cjs/format/number/formatPrefixAuto.js.map +1 -1
  172. package/cjs/format/number/formatRounded.js +7 -0
  173. package/cjs/format/number/formatRounded.js.map +1 -1
  174. package/cjs/format/number/formatTrim.js +7 -0
  175. package/cjs/format/number/formatTrim.js.map +1 -1
  176. package/cjs/format/number/number.js +39 -9
  177. package/cjs/format/number/number.js.map +1 -1
  178. package/cjs/format/time.js +23 -6
  179. package/cjs/format/time.js.map +1 -1
  180. package/cjs/geo/circle-intersection.d.ts +12 -0
  181. package/cjs/geo/circle-intersection.js +54 -9
  182. package/cjs/geo/circle-intersection.js.map +1 -1
  183. package/cjs/geo/constant.js +8 -1
  184. package/cjs/geo/constant.js.map +1 -1
  185. package/cjs/geo/invariant.d.ts +22 -0
  186. package/cjs/geo/invariant.js +24 -1
  187. package/cjs/geo/invariant.js.map +1 -1
  188. package/cjs/graphics/algorithm/aabb.js +7 -3
  189. package/cjs/graphics/algorithm/aabb.js.map +1 -1
  190. package/cjs/graphics/algorithm/intersect.d.ts +48 -0
  191. package/cjs/graphics/algorithm/intersect.js +75 -7
  192. package/cjs/graphics/algorithm/intersect.js.map +1 -1
  193. package/cjs/graphics/bounds-util.js +4 -2
  194. package/cjs/graphics/bounds-util.js.map +1 -1
  195. package/cjs/graphics/graph-util.js +4 -0
  196. package/cjs/graphics/graph-util.js.map +1 -1
  197. package/cjs/graphics/index.js +7 -4
  198. package/cjs/graphics/index.js.map +1 -1
  199. package/cjs/graphics/polygon.d.ts +12 -0
  200. package/cjs/graphics/polygon.js +28 -5
  201. package/cjs/graphics/polygon.js.map +1 -1
  202. package/cjs/graphics/text/measure/interface.d.ts +12 -0
  203. package/cjs/graphics/text/measure/textMeasure.d.ts +23 -0
  204. package/cjs/graphics/text/measure/textMeasure.js +50 -22
  205. package/cjs/graphics/text/measure/textMeasure.js.map +1 -1
  206. package/cjs/graphics/text/measure/util.js +1 -0
  207. package/cjs/graphics/text/measure/util.js.map +1 -1
  208. package/cjs/graphics/text/stringWidth.js +7 -3
  209. package/cjs/graphics/text/stringWidth.js.map +1 -1
  210. package/cjs/index.d.ts +6 -0
  211. package/cjs/index.js +19 -4
  212. package/cjs/index.js.map +1 -1
  213. package/cjs/logger.js +12 -2
  214. package/cjs/logger.js.map +1 -1
  215. package/cjs/lru.js +14 -6
  216. package/cjs/lru.js.map +1 -1
  217. package/cjs/math.d.ts +9 -0
  218. package/cjs/math.js +10 -0
  219. package/cjs/math.js.map +1 -1
  220. package/cjs/padding.d.ts +5 -0
  221. package/cjs/padding.js +5 -0
  222. package/cjs/padding.js.map +1 -1
  223. package/cjs/time/formatUtils.d.ts +6 -0
  224. package/cjs/time/formatUtils.js +7 -0
  225. package/cjs/time/formatUtils.js.map +1 -1
  226. package/dist/index.js +2035 -411
  227. package/dist/index.min.js +128 -1
  228. package/es/angle.d.ts +61 -0
  229. package/es/angle.js +66 -10
  230. package/es/angle.js.map +1 -1
  231. package/es/color/Color.d.ts +3 -0
  232. package/es/color/Color.js +64 -9
  233. package/es/color/Color.js.map +1 -1
  234. package/es/color/hexToRgb.d.ts +5 -0
  235. package/es/color/hexToRgb.js +5 -0
  236. package/es/color/hexToRgb.js.map +1 -1
  237. package/es/color/rgbToHsl.js +5 -1
  238. package/es/color/rgbToHsl.js.map +1 -1
  239. package/es/common/array.d.ts +43 -0
  240. package/es/common/array.js +44 -8
  241. package/es/common/array.js.map +1 -1
  242. package/es/common/bisect.d.ts +21 -0
  243. package/es/common/bisect.js +29 -4
  244. package/es/common/bisect.js.map +1 -1
  245. package/es/common/bootstrap.d.ts +5 -0
  246. package/es/common/bootstrap.js +14 -0
  247. package/es/common/bootstrap.js.map +1 -0
  248. package/es/common/clone.js +6 -0
  249. package/es/common/clone.js.map +1 -1
  250. package/es/common/cloneDeep.js +4 -1
  251. package/es/common/cloneDeep.js.map +1 -1
  252. package/es/common/correlation.d.ts +3 -0
  253. package/es/common/correlation.js +77 -0
  254. package/es/common/correlation.js.map +1 -0
  255. package/es/common/debounce.js +22 -4
  256. package/es/common/debounce.js.map +1 -1
  257. package/es/common/deviation.js +1 -2
  258. package/es/common/ecdf.d.ts +8 -0
  259. package/es/common/ecdf.js +11 -1
  260. package/es/common/ecdf.js.map +1 -1
  261. package/es/common/extent.d.ts +4 -0
  262. package/es/common/extent.js +8 -3
  263. package/es/common/extent.js.map +1 -1
  264. package/es/common/field.d.ts +6 -0
  265. package/es/common/field.js +3 -1
  266. package/es/common/field.js.map +1 -1
  267. package/es/common/has.d.ts +17 -0
  268. package/es/common/has.js +18 -1
  269. package/es/common/has.js.map +1 -1
  270. package/es/common/index.d.ts +5 -0
  271. package/es/common/index.js +24 -0
  272. package/es/common/index.js.map +1 -1
  273. package/es/common/interpolate.js +16 -3
  274. package/es/common/interpolate.js.map +1 -1
  275. package/es/common/isBase64.d.ts +6 -0
  276. package/es/common/isBase64.js +6 -0
  277. package/es/common/isBase64.js.map +1 -1
  278. package/es/common/isBoolean.d.ts +13 -0
  279. package/es/common/isBoolean.js +13 -1
  280. package/es/common/isBoolean.js.map +1 -1
  281. package/es/common/isEmpty.js +11 -1
  282. package/es/common/isEmpty.js.map +1 -1
  283. package/es/common/isEqual.js +19 -7
  284. package/es/common/isEqual.js.map +1 -1
  285. package/es/common/isFunction.d.ts +25 -0
  286. package/es/common/isFunction.js +27 -2
  287. package/es/common/isFunction.js.map +1 -1
  288. package/es/common/isNull.js +2 -1
  289. package/es/common/isNumber.d.ts +23 -0
  290. package/es/common/isNumber.js +23 -1
  291. package/es/common/isNumber.js.map +1 -1
  292. package/es/common/isNumeric.d.ts +25 -0
  293. package/es/common/isNumeric.js +25 -0
  294. package/es/common/isNumeric.js.map +1 -1
  295. package/es/common/isObject.d.ts +21 -0
  296. package/es/common/isObject.js +22 -0
  297. package/es/common/isObject.js.map +1 -1
  298. package/es/common/isObjectLike.d.ts +20 -0
  299. package/es/common/isObjectLike.js +21 -0
  300. package/es/common/isObjectLike.js.map +1 -1
  301. package/es/common/isPlainObject.d.ts +25 -0
  302. package/es/common/isPlainObject.js +26 -0
  303. package/es/common/isPlainObject.js.map +1 -1
  304. package/es/common/isPrototype.js +1 -1
  305. package/es/common/isRegExp.js +1 -1
  306. package/es/common/isShallowEqual.js +1 -0
  307. package/es/common/isShallowEqual.js.map +1 -1
  308. package/es/common/isString.d.ts +13 -0
  309. package/es/common/isString.js +13 -1
  310. package/es/common/isString.js.map +1 -1
  311. package/es/common/isType.d.ts +6 -0
  312. package/es/common/isType.js +6 -0
  313. package/es/common/isType.js.map +1 -1
  314. package/es/common/isValidNumber.js.map +1 -1
  315. package/es/common/isValidUrl.js.map +1 -1
  316. package/es/common/kde.d.ts +28 -0
  317. package/es/common/kde.js +29 -7
  318. package/es/common/kde.js.map +1 -1
  319. package/es/common/mean.d.ts +2 -0
  320. package/es/common/mean.js +19 -0
  321. package/es/common/mean.js.map +1 -0
  322. package/es/common/merge.js +22 -5
  323. package/es/common/merge.js.map +1 -1
  324. package/es/common/mixin.js +14 -3
  325. package/es/common/mixin.js.map +1 -1
  326. package/es/common/normalQuantile.d.ts +5 -0
  327. package/es/common/normalQuantile.js +15 -0
  328. package/es/common/normalQuantile.js.map +1 -0
  329. package/es/common/number.d.ts +24 -0
  330. package/es/common/number.js +24 -2
  331. package/es/common/number.js.map +1 -1
  332. package/es/common/pad.d.ts +21 -0
  333. package/es/common/pad.js +21 -1
  334. package/es/common/pad.js.map +1 -1
  335. package/es/common/random.d.ts +3 -0
  336. package/es/common/random.js +13 -1
  337. package/es/common/random.js.map +1 -1
  338. package/es/common/regression-bootstrap.d.ts +14 -0
  339. package/es/common/regression-bootstrap.js +31 -0
  340. package/es/common/regression-bootstrap.js.map +1 -0
  341. package/es/common/regression-linear.d.ts +5 -0
  342. package/es/common/regression-linear.js +25 -39
  343. package/es/common/regression-linear.js.map +1 -1
  344. package/es/common/regression-logistic.d.ts +6 -0
  345. package/es/common/regression-logistic.js +24 -16
  346. package/es/common/regression-logistic.js.map +1 -1
  347. package/es/common/regression-lowess.d.ts +11 -1
  348. package/es/common/regression-lowess.js +120 -118
  349. package/es/common/regression-lowess.js.map +1 -1
  350. package/es/common/regression-polynomial.d.ts +1 -0
  351. package/es/common/regression-polynomial.js +21 -89
  352. package/es/common/regression-polynomial.js.map +1 -1
  353. package/es/common/regression-solver.d.ts +26 -0
  354. package/es/common/regression-solver.js +168 -0
  355. package/es/common/regression-solver.js.map +1 -0
  356. package/es/common/regression-utils.d.ts +13 -1
  357. package/es/common/regression-utils.js +18 -9
  358. package/es/common/regression-utils.js.map +1 -1
  359. package/es/common/throttle.js +3 -0
  360. package/es/common/throttle.js.map +1 -1
  361. package/es/common/toDate.js +23 -3
  362. package/es/common/toDate.js.map +1 -1
  363. package/es/common/uuid.d.ts +7 -0
  364. package/es/common/uuid.js +15 -1
  365. package/es/common/uuid.js.map +1 -1
  366. package/es/data-structure/bounds.d.ts +101 -0
  367. package/es/data-structure/bounds.js +74 -8
  368. package/es/data-structure/bounds.js.map +1 -1
  369. package/es/data-structure/hashTable.d.ts +4 -0
  370. package/es/data-structure/hashTable.js +11 -2
  371. package/es/data-structure/hashTable.js.map +1 -1
  372. package/es/data-structure/index.js +2 -0
  373. package/es/data-structure/index.js.map +1 -1
  374. package/es/data-structure/matrix.d.ts +91 -0
  375. package/es/data-structure/matrix.js +52 -5
  376. package/es/data-structure/matrix.js.map +1 -1
  377. package/es/data-structure/point.d.ts +3 -0
  378. package/es/data-structure/point.js +5 -1
  379. package/es/data-structure/point.js.map +1 -1
  380. package/es/dom.d.ts +36 -0
  381. package/es/dom.js +43 -8
  382. package/es/dom.js.map +1 -1
  383. package/es/fmin/blas1.js +10 -0
  384. package/es/fmin/blas1.js.map +1 -1
  385. package/es/fmin/conjugate-gradient.js +18 -2
  386. package/es/fmin/conjugate-gradient.js.map +1 -1
  387. package/es/fmin/linesearch.js +15 -0
  388. package/es/fmin/linesearch.js.map +1 -1
  389. package/es/fmin/nelder-mead.d.ts +1 -0
  390. package/es/fmin/nelder-mead.js +29 -9
  391. package/es/fmin/nelder-mead.js.map +1 -1
  392. package/es/format/number/formatDecimal.js +9 -1
  393. package/es/format/number/formatDecimal.js.map +1 -1
  394. package/es/format/number/formatGroup.js +7 -0
  395. package/es/format/number/formatGroup.js.map +1 -1
  396. package/es/format/number/formatPrefixAuto.js +8 -0
  397. package/es/format/number/formatPrefixAuto.js.map +1 -1
  398. package/es/format/number/formatRounded.js +7 -0
  399. package/es/format/number/formatRounded.js.map +1 -1
  400. package/es/format/number/formatTrim.js +7 -0
  401. package/es/format/number/formatTrim.js.map +1 -1
  402. package/es/format/number/number.js +40 -8
  403. package/es/format/number/number.js.map +1 -1
  404. package/es/format/time.js +23 -5
  405. package/es/format/time.js.map +1 -1
  406. package/es/geo/circle-intersection.d.ts +12 -0
  407. package/es/geo/circle-intersection.js +54 -14
  408. package/es/geo/circle-intersection.js.map +1 -1
  409. package/es/geo/constant.js +8 -0
  410. package/es/geo/constant.js.map +1 -1
  411. package/es/geo/invariant.d.ts +22 -0
  412. package/es/geo/invariant.js +24 -0
  413. package/es/geo/invariant.js.map +1 -1
  414. package/es/graphics/algorithm/aabb.js +7 -3
  415. package/es/graphics/algorithm/aabb.js.map +1 -1
  416. package/es/graphics/algorithm/intersect.d.ts +48 -0
  417. package/es/graphics/algorithm/intersect.js +75 -12
  418. package/es/graphics/algorithm/intersect.js.map +1 -1
  419. package/es/graphics/bounds-util.js +4 -2
  420. package/es/graphics/bounds-util.js.map +1 -1
  421. package/es/graphics/graph-util.js +4 -0
  422. package/es/graphics/graph-util.js.map +1 -1
  423. package/es/graphics/index.js +2 -0
  424. package/es/graphics/index.js.map +1 -1
  425. package/es/graphics/polygon.d.ts +12 -0
  426. package/es/graphics/polygon.js +28 -6
  427. package/es/graphics/polygon.js.map +1 -1
  428. package/es/graphics/text/measure/interface.d.ts +12 -0
  429. package/es/graphics/text/measure/textMeasure.d.ts +23 -0
  430. package/es/graphics/text/measure/textMeasure.js +46 -21
  431. package/es/graphics/text/measure/textMeasure.js.map +1 -1
  432. package/es/graphics/text/measure/util.js +1 -0
  433. package/es/graphics/text/measure/util.js.map +1 -1
  434. package/es/graphics/text/stringWidth.js +7 -3
  435. package/es/graphics/text/stringWidth.js.map +1 -1
  436. package/es/index.d.ts +6 -0
  437. package/es/index.js +15 -1
  438. package/es/index.js.map +1 -1
  439. package/es/logger.js +12 -1
  440. package/es/logger.js.map +1 -1
  441. package/es/lru.js +14 -6
  442. package/es/lru.js.map +1 -1
  443. package/es/math.d.ts +9 -0
  444. package/es/math.js +10 -1
  445. package/es/math.js.map +1 -1
  446. package/es/padding.d.ts +5 -0
  447. package/es/padding.js +5 -1
  448. package/es/padding.js.map +1 -1
  449. package/es/time/formatUtils.d.ts +6 -0
  450. package/es/time/formatUtils.js +7 -1
  451. package/es/time/formatUtils.js.map +1 -1
  452. package/package.json +4 -3
@@ -1,11 +1,25 @@
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/linesearch.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.wolfeLineSearch = void 0;
6
13
 
7
14
  const math_1 = require("../math"), blas1_1 = require("./blas1");
8
15
 
16
+ /// searches along line 'pk' for a point that satifies the wolfe conditions
17
+ /// See 'Numerical Optimization' by Nocedal and Wright p59-60
18
+ /// f : objective function
19
+ /// pk : search direction
20
+ /// current: object containing current gradient/loss
21
+ /// next: output: contains next gradient/loss
22
+ /// returns a: step size taken
9
23
  function wolfeLineSearch(f, pk, current, next, a, c1, c2) {
10
24
  const phi0 = current.fx, phiPrime0 = (0, math_1.dotProduct)(current.fxprime, pk);
11
25
  let phi = phi0, phi_old = phi0, phiPrime = phiPrime0, a0 = 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/fmin/linesearch.ts"],"names":[],"mappings":"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","file":"linesearch.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/linesearch.js\n * License: https://github.com/benfred/fmin/blob/master/LICENSE\n * @license\n */\n\nimport { dotProduct } from '../math';\nimport { weightedSum } from './blas1';\n\n/// searches along line 'pk' for a point that satifies the wolfe conditions\n/// See 'Numerical Optimization' by Nocedal and Wright p59-60\n/// f : objective function\n/// pk : search direction\n/// current: object containing current gradient/loss\n/// next: output: contains next gradient/loss\n/// returns a: step size taken\nexport function wolfeLineSearch(f: any, pk: number[], current: any, next: any, a: number, c1?: number, c2?: number) {\n const phi0 = current.fx;\n const phiPrime0 = dotProduct(current.fxprime, pk);\n let phi = phi0;\n let phi_old = phi0;\n let phiPrime = phiPrime0;\n let a0 = 0;\n\n a = a || 1;\n c1 = c1 || 1e-6;\n c2 = c2 || 0.1;\n\n function zoom(a_lo: number, a_high: number, phi_lo: number) {\n for (let iteration = 0; iteration < 16; ++iteration) {\n a = (a_lo + a_high) / 2;\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dotProduct(next.fxprime, pk);\n\n if (phi > phi0 + c1 * a * phiPrime0 || phi >= phi_lo) {\n a_high = a;\n } else {\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime * (a_high - a_lo) >= 0) {\n a_high = a_lo;\n }\n\n a_lo = a;\n phi_lo = phi;\n }\n }\n\n return 0;\n }\n\n for (let iteration = 0; iteration < 10; ++iteration) {\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dotProduct(next.fxprime, pk);\n if (phi > phi0 + c1 * a * phiPrime0 || (iteration && phi >= phi_old)) {\n return zoom(a0, a, phi_old);\n }\n\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime >= 0) {\n return zoom(a, a0, phi);\n }\n\n phi_old = phi;\n a0 = a;\n a *= 2;\n }\n\n return a;\n}\n"]}
1
+ {"version":3,"sources":["../src/fmin/linesearch.ts"],"names":[],"mappings":"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","file":"linesearch.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/linesearch.js\n * License: https://github.com/benfred/fmin/blob/master/LICENSE\n * @license\n */\n\nimport { dotProduct } from '../math';\nimport { weightedSum } from './blas1';\n\n/// searches along line 'pk' for a point that satifies the wolfe conditions\n/// See 'Numerical Optimization' by Nocedal and Wright p59-60\n/// f : objective function\n/// pk : search direction\n/// current: object containing current gradient/loss\n/// next: output: contains next gradient/loss\n/// returns a: step size taken\nexport function wolfeLineSearch(f: any, pk: number[], current: any, next: any, a: number, c1?: number, c2?: number) {\n const phi0 = current.fx;\n const phiPrime0 = dotProduct(current.fxprime, pk);\n let phi = phi0;\n let phi_old = phi0;\n let phiPrime = phiPrime0;\n let a0 = 0;\n\n a = a || 1;\n c1 = c1 || 1e-6;\n c2 = c2 || 0.1;\n\n function zoom(a_lo: number, a_high: number, phi_lo: number) {\n for (let iteration = 0; iteration < 16; ++iteration) {\n a = (a_lo + a_high) / 2;\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dotProduct(next.fxprime, pk);\n\n if (phi > phi0 + c1 * a * phiPrime0 || phi >= phi_lo) {\n a_high = a;\n } else {\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime * (a_high - a_lo) >= 0) {\n a_high = a_lo;\n }\n\n a_lo = a;\n phi_lo = phi;\n }\n }\n\n return 0;\n }\n\n for (let iteration = 0; iteration < 10; ++iteration) {\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dotProduct(next.fxprime, pk);\n if (phi > phi0 + c1 * a * phiPrime0 || (iteration && phi >= phi_old)) {\n return zoom(a0, a, phi_old);\n }\n\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime >= 0) {\n return zoom(a, a0, phi);\n }\n\n phi_old = phi;\n a0 = a;\n a *= 2;\n }\n\n return a;\n}\n"]}
@@ -1,3 +1,4 @@
1
+ /** minimizes a function using the downhill simplex method */
1
2
  export declare function nelderMead(f: any, x0: any, parameters: any): {
2
3
  fx: any;
3
4
  x: any;
@@ -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":"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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
+ {"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":";;;AAQA,mDAAoE;AACpE,+CAA4C;AAC5C,yDAAsE;AACtE,mDAAgD;AAChD,6CAA0C;AAC1C,2CAA8C;AAa9C,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEtG,MAAa,UAAU;IAAvB;QACU,WAAM,GAAiB;YAC7B,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,CAAC,CAAC,CAAC;YACb,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;SACpB,CAAC;QAEM,UAAK,GACX,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;YACvE,CAAC,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK;YACvB,CAAC,CAAC,IAAA,yBAAW,EAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7E,mBAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACxF,mBAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACxF,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QAC7E,aAAQ,GACd,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS;YAChC,CAAC,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,QAAQ;YAC7B,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QAC7E,UAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QACvE,QAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QA+K3E,cAAS,GAAG,CAAC,SAAiB,EAAE,EAAE;YAChC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE;YAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE;YAClD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC;IAtLC,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YACxB,UAAU,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;SACxC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAEO,SAAS,CAAC,SAAiB;QACjC,MAAM,YAAY,GAAG,IAAA,2BAAe,EAAC,SAAS,CAAC,CAAC;QAEhD,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC7B,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACjC,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QAC/B,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QACvC,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC7B,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAG7B,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;SAC9B;aAGI,IAAI,CAAC,mBAAW,CAAC,IAAI,CAAC,EAAE;YAC3B,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;SAC1E;QAID,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,EAAE;YAC3C,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;SAC5C;QAID,MAAM,MAAM,GACV,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/G,MAAM,MAAM,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAK5F,MAAM,UAAU,GAAG,mBAAW,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAM9C,SAAS;YACP,SAAS,KAAK,SAAS;gBACrB,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;oBACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oBACtC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QAE3C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAEtD,SAAS,MAAM,CAAC,KAAa;YAC3B,IAAI,WAAW,GAAG,MAAM,CAAC;YACzB,IAAI,WAAW,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,CAAC;YACN,IAAI,MAAM,GAAQ,KAAK,CAAC;YAExB,IAAI,IAAI,KAAK,GAAG,EAAE;gBAChB,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;gBAC/C,MAAM,GAAG,EAAE,CAAC;aACb;iBAAM;gBACL,MAAM,GAAG,CAAC,MAAM,CAAC;gBAGjB,IAAI,aAAa,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;gBAGjD,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;gBAGvE,IAAI,IAAI,EAAE;oBACR,MAAM,GAAG,IAAA,uBAAU,EAAC,MAAM,CAAC,CAAC;iBAC7B;gBAGD,IAAI,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,EAAE;oBAClD,aAAa,GAAG,KAAK,CAAC;iBACvB;gBAGD,WAAW;oBACT,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;gBAC3G,WAAW;oBACT,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,iCAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACtD,WAAW;wBACX,CAAC,aAAa,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAI7C,IAAI,WAAW,EAAE;oBACf,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9B,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;wBACd,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;4BAClD,WAAW,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;4BACzF,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC5B,MAAM;yBACP;qBACF;iBACF;aACF;YAGD,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;gBAClB,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAClC;YAGD,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YACrE,IAAI,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAG7E,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACzF,OAAO,GAAG,EAAE,CAAC;aACd;YAGD,QAAQ,KAAK,EAAE;gBACb,KAAK,GAAG;oBACN,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;oBACtD,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;oBACtD,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM;wBACJ,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;4BAChD,WAAW;4BACX,MAAM;4BACN,WAAW;4BACX,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACxB,MAAM;gBACR;oBACE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;oBACtD,MAAM;aACT;YACD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,CAAC,QAAQ,GAAG;YAChB,OAAO,SAAS,GAAG,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa,CAAC,SAAiB,EAAE,KAAa;QACpD,MAAM,UAAU,GAAG,IAAA,2BAAe,EAAC,SAAS,CAAC,CAAC;QAC9C,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,OAAO,UAAU,KAAa;YAC5B,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;QAC/B,CAAC,CAAC;IACJ,CAAC;CAaF;AA9MD,gCA8MC;AAEY,QAAA,WAAW,GAAG;IACzB,GAAG,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE;IACxB,CAAC,EAAE,6BAAa;IAChB,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7C,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,IAAA,6BAAa,EAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC,EAAE,6BAAa;IAChB,CAAC,EAAE,mCAAgB;IACnB,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;IAC1D,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5C,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QAE1B,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACvB,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACrB;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAChE,CAAC;IACD,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACnE,CAAC;AAEF,SAAgB,QAAQ,CAAC,CAAS;IAChC,MAAM,EAAE,GAAG,IAAA,kCAAkB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1B,CAAC;AAHD,4BAGC;AAED,SAAgB,cAAc,CAAC,QAAkB;IAC/C,OAAO,UAAU,KAAa;QAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC;AAJD,wCAIC","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) {