@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
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAAyC;AAQhC,uBARF,uBAAY,CAQE;AAErB,2CAAyB;AAGzB,mDAAiC;AAGjC,wCAAsB;AAGtB,yCAAuB;AAGvB,0CAAwB;AAIxB,qDAAqC;AAGrC,6CAA2B;AAG3B,yCAAuB;AAGvB,2CAAyB;AAGzB,4CAA0B;AAE1B,yCAAuB;AAGvB,wCAAsB;AAEtB,wCAAsB;AAEtB,0CAAwB;AAExB,gDAA8B;AAC9B,kDAAgC;AAEhC,yCAAuB","file":"index.js","sourcesContent":["import EventEmitter from 'eventemitter3';\n\n/**\n * A high performance event emitter\n * @see {@link https://github.com/primus/eventemitter3}\n * @memberof PIXI.utils\n * @class EventEmitter\n */\nexport { EventEmitter };\n\nexport * from './common';\n\n// data structure\nexport * from './data-structure';\n\n// algorithm\nexport * from './lru';\n\n// math\nexport * from './math';\n\n// angle\nexport * from './angle';\n\n// color\n// TODO: 后续删除这个导出,避免引入不需要的内容\nexport * as ColorUtil from './color';\n\n// methods about graphics\nexport * from './graphics';\n\n// type\nexport * from './type';\n\n// log\nexport * from './logger';\n\n// padding\nexport * from './padding';\n\nexport * from './time';\n\n// dom\nexport * from './dom';\n\nexport * from './geo';\n\nexport * from './color';\n\nexport * from './format/time';\nexport * from './format/number';\n\nexport * from './fmin';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAAyC;AAQhC,uBARF,uBAAY,CAQE;AAErB,2CAAyB;AAEzB,iBAAiB;AACjB,mDAAiC;AAEjC,YAAY;AACZ,wCAAsB;AAEtB,OAAO;AACP,yCAAuB;AAEvB,QAAQ;AACR,0CAAwB;AAExB,QAAQ;AACR,4BAA4B;AAC5B,qDAAqC;AAErC,yBAAyB;AACzB,6CAA2B;AAE3B,OAAO;AACP,yCAAuB;AAEvB,MAAM;AACN,2CAAyB;AAEzB,UAAU;AACV,4CAA0B;AAE1B,yCAAuB;AAEvB,MAAM;AACN,wCAAsB;AAEtB,wCAAsB;AAEtB,0CAAwB;AAExB,gDAA8B;AAC9B,kDAAgC;AAEhC,yCAAuB","file":"index.js","sourcesContent":["import EventEmitter from 'eventemitter3';\n\n/**\n * A high performance event emitter\n * @see {@link https://github.com/primus/eventemitter3}\n * @memberof PIXI.utils\n * @class EventEmitter\n */\nexport { EventEmitter };\n\nexport * from './common';\n\n// data structure\nexport * from './data-structure';\n\n// algorithm\nexport * from './lru';\n\n// math\nexport * from './math';\n\n// angle\nexport * from './angle';\n\n// color\n// TODO: 后续删除这个导出,避免引入不需要的内容\nexport * as ColorUtil from './color';\n\n// methods about graphics\nexport * from './graphics';\n\n// type\nexport * from './type';\n\n// log\nexport * from './logger';\n\n// padding\nexport * from './padding';\n\nexport * from './time';\n\n// dom\nexport * from './dom';\n\nexport * from './geo';\n\nexport * from './color';\n\nexport * from './format/time';\nexport * from './format/number';\n\nexport * from './fmin';\n"]}
package/cjs/logger.js CHANGED
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var __importDefault = this && this.__importDefault || function(mod) {
3
+ /* Adapted from vega by University of Washington Interactive Data Lab
4
+ * https://vega.github.io/vega/
5
+ * Licensed under the BSD-3-Clause
6
+
7
+ * url: https://github.com/vega/vega/blob/main/packages/vega-util/src/logger.js
8
+ * License: https://github.com/vega/vega/blob/main/LICENSE
9
+ * @license
10
+ */ var __importDefault = this && this.__importDefault || function(mod) {
4
11
  return mod && mod.__esModule ? mod : {
5
12
  default: mod
6
13
  };
@@ -12,9 +19,12 @@ Object.defineProperty(exports, "__esModule", {
12
19
 
13
20
  const isNumber_1 = __importDefault(require("./common/isNumber")), hasConsole = "undefined" != typeof console;
14
21
 
22
+ // check console
15
23
  function log(method, level, input) {
16
24
  const args = [ level ].concat([].slice.call(input));
17
- hasConsole && console[method].apply(console, args);
25
+ hasConsole &&
26
+ // eslint-disable-next-line prefer-spread, no-undef
27
+ console[method].apply(console, args);
18
28
  }
19
29
 
20
30
  var LoggerLevel;
package/cjs/logger.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/logger.ts"],"names":[],"mappings":"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","file":"logger.js","sourcesContent":["/* Adapted from vega by University of Washington Interactive Data Lab\n * https://vega.github.io/vega/\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/vega/vega/blob/main/packages/vega-util/src/logger.js\n * License: https://github.com/vega/vega/blob/main/LICENSE\n * @license\n */\n\nimport isNumber from './common/isNumber';\nimport type { ILogger } from './type';\n\n// check console\nconst hasConsole = typeof console !== 'undefined';\n\nfunction log(method: string, level: any, input: any) {\n const args = [level].concat([].slice.call(input));\n\n if (hasConsole) {\n // eslint-disable-next-line prefer-spread, no-undef\n console[method].apply(console, args); // eslint-disable-line no-console\n }\n}\n\nexport enum LoggerLevel {\n None = 0,\n Error = 1,\n Warn = 2,\n Info = 3,\n Debug = 4\n}\n\ntype ErrorHandler = (...args: any[]) => void;\n\nexport class Logger implements ILogger {\n private static _instance: ILogger = null;\n\n static getInstance(level?: number, method?: string) {\n if (Logger._instance && isNumber(level)) {\n Logger._instance.level(level);\n } else if (!Logger._instance) {\n Logger._instance = new Logger(level, method);\n }\n return Logger._instance;\n }\n static setInstance(logger: ILogger) {\n return (Logger._instance = logger);\n }\n\n static setInstanceLevel(level: number) {\n if (Logger._instance) {\n Logger._instance.level(level);\n } else {\n Logger._instance = new Logger(level);\n }\n }\n\n static clearInstance() {\n Logger._instance = null;\n }\n\n private _level: number;\n\n private _method: string;\n\n private _onErrorHandler: ErrorHandler[] = [];\n\n constructor(level: number = LoggerLevel.None, method?: string) {\n this._level = level;\n this._method = method;\n }\n\n addErrorHandler(handler: ErrorHandler) {\n if (this._onErrorHandler.find(h => h === handler)) {\n return;\n }\n this._onErrorHandler.push(handler);\n }\n\n removeErrorHandler(handler: ErrorHandler) {\n const index = this._onErrorHandler.findIndex(h => h === handler);\n if (index < 0) {\n return;\n }\n this._onErrorHandler.splice(index, 1);\n }\n\n callErrorHandler(...args: any[]) {\n this._onErrorHandler.forEach(h => h(...args));\n }\n\n canLogInfo() {\n return this._level >= LoggerLevel.Info;\n }\n\n canLogDebug() {\n return this._level >= LoggerLevel.Debug;\n }\n\n canLogError() {\n return this._level >= LoggerLevel.Error;\n }\n\n canLogWarn() {\n return this._level >= LoggerLevel.Warn;\n }\n\n level(): number;\n level(levelValue: number): this;\n level(levelValue?: number) {\n if (arguments.length) {\n this._level = +levelValue;\n return this;\n }\n\n return this._level;\n }\n\n error(...args: any[]) {\n if (this._level >= LoggerLevel.Error) {\n if (this._onErrorHandler.length) {\n this.callErrorHandler(...args);\n } else {\n log(this._method ?? 'error', 'ERROR', args);\n }\n }\n return this;\n }\n\n warn(...args: any[]) {\n if (this._level >= LoggerLevel.Warn) {\n log(this._method || 'warn', 'WARN', args);\n }\n return this;\n }\n\n info(...args: any[]) {\n if (this._level >= LoggerLevel.Info) {\n log(this._method || 'log', 'INFO', args);\n }\n return this;\n }\n\n debug(...args: any[]) {\n if (this._level >= LoggerLevel.Debug) {\n log(this._method || 'log', 'DEBUG', args);\n }\n return this;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/logger.ts"],"names":[],"mappings":"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","file":"logger.js","sourcesContent":["/* Adapted from vega by University of Washington Interactive Data Lab\n * https://vega.github.io/vega/\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/vega/vega/blob/main/packages/vega-util/src/logger.js\n * License: https://github.com/vega/vega/blob/main/LICENSE\n * @license\n */\n\nimport isNumber from './common/isNumber';\nimport type { ILogger } from './type';\n\n// check console\nconst hasConsole = typeof console !== 'undefined';\n\nfunction log(method: string, level: any, input: any) {\n const args = [level].concat([].slice.call(input));\n\n if (hasConsole) {\n // eslint-disable-next-line prefer-spread, no-undef\n console[method].apply(console, args); // eslint-disable-line no-console\n }\n}\n\nexport enum LoggerLevel {\n None = 0,\n Error = 1,\n Warn = 2,\n Info = 3,\n Debug = 4\n}\n\ntype ErrorHandler = (...args: any[]) => void;\n\nexport class Logger implements ILogger {\n private static _instance: ILogger = null;\n\n static getInstance(level?: number, method?: string) {\n if (Logger._instance && isNumber(level)) {\n Logger._instance.level(level);\n } else if (!Logger._instance) {\n Logger._instance = new Logger(level, method);\n }\n return Logger._instance;\n }\n static setInstance(logger: ILogger) {\n return (Logger._instance = logger);\n }\n\n static setInstanceLevel(level: number) {\n if (Logger._instance) {\n Logger._instance.level(level);\n } else {\n Logger._instance = new Logger(level);\n }\n }\n\n static clearInstance() {\n Logger._instance = null;\n }\n\n private _level: number;\n\n private _method: string;\n\n private _onErrorHandler: ErrorHandler[] = [];\n\n constructor(level: number = LoggerLevel.None, method?: string) {\n this._level = level;\n this._method = method;\n }\n\n addErrorHandler(handler: ErrorHandler) {\n if (this._onErrorHandler.find(h => h === handler)) {\n return;\n }\n this._onErrorHandler.push(handler);\n }\n\n removeErrorHandler(handler: ErrorHandler) {\n const index = this._onErrorHandler.findIndex(h => h === handler);\n if (index < 0) {\n return;\n }\n this._onErrorHandler.splice(index, 1);\n }\n\n callErrorHandler(...args: any[]) {\n this._onErrorHandler.forEach(h => h(...args));\n }\n\n canLogInfo() {\n return this._level >= LoggerLevel.Info;\n }\n\n canLogDebug() {\n return this._level >= LoggerLevel.Debug;\n }\n\n canLogError() {\n return this._level >= LoggerLevel.Error;\n }\n\n canLogWarn() {\n return this._level >= LoggerLevel.Warn;\n }\n\n level(): number;\n level(levelValue: number): this;\n level(levelValue?: number) {\n if (arguments.length) {\n this._level = +levelValue;\n return this;\n }\n\n return this._level;\n }\n\n error(...args: any[]) {\n if (this._level >= LoggerLevel.Error) {\n if (this._onErrorHandler.length) {\n this.callErrorHandler(...args);\n } else {\n log(this._method ?? 'error', 'ERROR', args);\n }\n }\n return this;\n }\n\n warn(...args: any[]) {\n if (this._level >= LoggerLevel.Warn) {\n log(this._method || 'warn', 'WARN', args);\n }\n return this;\n }\n\n info(...args: any[]) {\n if (this._level >= LoggerLevel.Info) {\n log(this._method || 'log', 'INFO', args);\n }\n return this;\n }\n\n debug(...args: any[]) {\n if (this._level >= LoggerLevel.Debug) {\n log(this._method || 'log', 'DEBUG', args);\n }\n return this;\n }\n}\n"]}
package/cjs/lru.js CHANGED
@@ -4,30 +4,38 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.LRU = void 0;
6
6
 
7
+ // LRU清除
7
8
  class LRU {
8
9
  constructor() {
9
- this.CLEAN_THRESHOLD = 1e3, this.L_TIME = 1e3, this.R_COUNT = 1, this.R_TIMESTAMP_MAX_SIZE = 20;
10
+ this.CLEAN_THRESHOLD = 1e3, this.L_TIME = 1e3, // 1000ms以内
11
+ this.R_COUNT = 1, // 使用次数为0
12
+ this.R_TIMESTAMP_MAX_SIZE = 20;
10
13
  }
11
14
  clearCache(cache, params) {
12
15
  const {CLEAN_THRESHOLD: CLEAN_THRESHOLD = this.CLEAN_THRESHOLD, L_TIME: L_TIME = this.L_TIME, R_COUNT: R_COUNT = this.R_COUNT} = params;
13
16
  if (cache.size < CLEAN_THRESHOLD) return 0;
14
- let clearNum = 0;
17
+ // 开始清理,清理最近1000ms内使用次数为0的缓存
18
+ let clearNum = 0;
15
19
  const clear = key => {
16
20
  clearNum++, cache.delete(key);
17
21
  }, now = Date.now();
18
22
  return cache.forEach(((item, key) => {
19
23
  if (item.timestamp.length < R_COUNT) return clear(key);
20
- let useCount = 0;
24
+ // 最近使用次数小于R_COUNT,清除
25
+ let useCount = 0;
21
26
  for (;now - item.timestamp[item.timestamp.length - 1 - useCount] < L_TIME && (useCount++,
22
27
  !(useCount >= R_COUNT)); ) ;
23
28
  if (useCount < R_COUNT) return clear(key);
24
- for (;now - item.timestamp[0] > L_TIME; ) item.timestamp.shift();
29
+ // 最近L_TIME以内使用次数小于R_COUNT,清除
30
+ // 清除L_TIME以外的key,避免数组过长
31
+ for (;now - item.timestamp[0] > L_TIME; ) item.timestamp.shift();
25
32
  })), clearNum;
26
33
  }
27
34
  addLimitedTimestamp(cacheItem, t, params) {
28
35
  const {R_TIMESTAMP_MAX_SIZE: R_TIMESTAMP_MAX_SIZE = this.R_TIMESTAMP_MAX_SIZE} = params;
29
- cacheItem.timestamp.length > R_TIMESTAMP_MAX_SIZE && cacheItem.timestamp.shift(),
30
- cacheItem.timestamp.push(t);
36
+ cacheItem.timestamp.length > R_TIMESTAMP_MAX_SIZE &&
37
+ // cacheItem.timestamp[cacheItem.timestamp.length-1] =
38
+ cacheItem.timestamp.shift(), cacheItem.timestamp.push(t);
31
39
  }
32
40
  clearTimeStamp(cache, params) {
33
41
  const {L_TIME: L_TIME = this.L_TIME} = params, now = Date.now();
package/cjs/lru.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lru.ts"],"names":[],"mappings":"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","file":"lru.js","sourcesContent":["interface Threshold {\n CLEAN_THRESHOLD?: number;\n L_TIME?: number;\n R_COUNT?: number;\n R_TIMESTAMP_MAX_SIZE?: number;\n}\n// LRU清除\nexport class LRU {\n private CLEAN_THRESHOLD = 1e3;\n private L_TIME = 1000; // 1000ms以内\n private R_COUNT = 1; // 使用次数为0\n private R_TIMESTAMP_MAX_SIZE = 20; // timestamp最大长度\n\n clearCache<TK, TV extends { timestamp: number[] }>(cache: Map<TK, TV>, params: Threshold): number {\n const { CLEAN_THRESHOLD = this.CLEAN_THRESHOLD, L_TIME = this.L_TIME, R_COUNT = this.R_COUNT } = params;\n if (cache.size < CLEAN_THRESHOLD) {\n return 0;\n }\n // 开始清理,清理最近1000ms内使用次数为0的缓存\n let clearNum = 0;\n const clear = (key: TK) => {\n clearNum++;\n cache.delete(key);\n };\n const now = Date.now();\n cache.forEach((item, key) => {\n if (item.timestamp.length < R_COUNT) {\n return clear(key);\n } // 最近使用次数小于R_COUNT,清除\n let useCount = 0;\n while (now - item.timestamp[item.timestamp.length - 1 - useCount] < L_TIME) {\n useCount++;\n if (useCount >= R_COUNT) {\n break;\n }\n }\n if (useCount < R_COUNT) {\n return clear(key);\n } // 最近L_TIME以内使用次数小于R_COUNT,清除\n // 清除L_TIME以外的key,避免数组过长\n while (now - item.timestamp[0] > L_TIME) {\n item.timestamp.shift();\n }\n return;\n });\n return clearNum;\n }\n\n addLimitedTimestamp<T extends { timestamp: number[] }>(cacheItem: T, t: number, params: Threshold) {\n const { R_TIMESTAMP_MAX_SIZE = this.R_TIMESTAMP_MAX_SIZE } = params;\n if (cacheItem.timestamp.length > R_TIMESTAMP_MAX_SIZE) {\n // cacheItem.timestamp[cacheItem.timestamp.length-1] =\n cacheItem.timestamp.shift();\n }\n cacheItem.timestamp.push(t);\n }\n\n clearTimeStamp<TK, TV extends { timestamp: number[] }>(cache: Map<TK, TV>, params: Threshold) {\n const { L_TIME = this.L_TIME } = params;\n const now = Date.now();\n cache.forEach(item => {\n while (now - item.timestamp[0] > L_TIME) {\n item.timestamp.shift();\n }\n });\n }\n\n clearItemTimestamp<T extends { timestamp: number[] }>(cacheItem: T, params: Threshold) {\n const { L_TIME = this.L_TIME } = params;\n const now = Date.now();\n while (now - cacheItem.timestamp[0] > L_TIME) {\n cacheItem.timestamp.shift();\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/lru.ts"],"names":[],"mappings":"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","file":"lru.js","sourcesContent":["interface Threshold {\n CLEAN_THRESHOLD?: number;\n L_TIME?: number;\n R_COUNT?: number;\n R_TIMESTAMP_MAX_SIZE?: number;\n}\n// LRU清除\nexport class LRU {\n private CLEAN_THRESHOLD = 1e3;\n private L_TIME = 1000; // 1000ms以内\n private R_COUNT = 1; // 使用次数为0\n private R_TIMESTAMP_MAX_SIZE = 20; // timestamp最大长度\n\n clearCache<TK, TV extends { timestamp: number[] }>(cache: Map<TK, TV>, params: Threshold): number {\n const { CLEAN_THRESHOLD = this.CLEAN_THRESHOLD, L_TIME = this.L_TIME, R_COUNT = this.R_COUNT } = params;\n if (cache.size < CLEAN_THRESHOLD) {\n return 0;\n }\n // 开始清理,清理最近1000ms内使用次数为0的缓存\n let clearNum = 0;\n const clear = (key: TK) => {\n clearNum++;\n cache.delete(key);\n };\n const now = Date.now();\n cache.forEach((item, key) => {\n if (item.timestamp.length < R_COUNT) {\n return clear(key);\n } // 最近使用次数小于R_COUNT,清除\n let useCount = 0;\n while (now - item.timestamp[item.timestamp.length - 1 - useCount] < L_TIME) {\n useCount++;\n if (useCount >= R_COUNT) {\n break;\n }\n }\n if (useCount < R_COUNT) {\n return clear(key);\n } // 最近L_TIME以内使用次数小于R_COUNT,清除\n // 清除L_TIME以外的key,避免数组过长\n while (now - item.timestamp[0] > L_TIME) {\n item.timestamp.shift();\n }\n return;\n });\n return clearNum;\n }\n\n addLimitedTimestamp<T extends { timestamp: number[] }>(cacheItem: T, t: number, params: Threshold) {\n const { R_TIMESTAMP_MAX_SIZE = this.R_TIMESTAMP_MAX_SIZE } = params;\n if (cacheItem.timestamp.length > R_TIMESTAMP_MAX_SIZE) {\n // cacheItem.timestamp[cacheItem.timestamp.length-1] =\n cacheItem.timestamp.shift();\n }\n cacheItem.timestamp.push(t);\n }\n\n clearTimeStamp<TK, TV extends { timestamp: number[] }>(cache: Map<TK, TV>, params: Threshold) {\n const { L_TIME = this.L_TIME } = params;\n const now = Date.now();\n cache.forEach(item => {\n while (now - item.timestamp[0] > L_TIME) {\n item.timestamp.shift();\n }\n });\n }\n\n clearItemTimestamp<T extends { timestamp: number[] }>(cacheItem: T, params: Threshold) {\n const { L_TIME = this.L_TIME } = params;\n const now = Date.now();\n while (now - cacheItem.timestamp[0] > L_TIME) {\n cacheItem.timestamp.shift();\n }\n }\n}\n"]}
package/cjs/math.d.ts CHANGED
@@ -39,6 +39,15 @@ export declare const sqrt: (x: number) => number;
39
39
  export declare const pow: (x: number, y: number) => number;
40
40
  export declare function acos(x: number): number;
41
41
  export declare function asin(x: number): number;
42
+ /**
43
+ * 根据比例获直线上的点
44
+ * @param {number} x1 起始点 x
45
+ * @param {number} y1 起始点 y
46
+ * @param {number} x2 结束点 x
47
+ * @param {number} y2 结束点 y
48
+ * @param {number} t 指定比例
49
+ * @return {object} 包含 x, y 的点
50
+ */
42
51
  export declare function pointAt(x1: number | null | undefined, y1: number | null | undefined, x2: number | null | undefined, y2: number | null | undefined, t: number): {
43
52
  x: undefined | number;
44
53
  y: undefined | number;
package/cjs/math.js CHANGED
@@ -8,6 +8,15 @@ function asin(x) {
8
8
  return x >= 1 ? exports.halfPi : x <= -1 ? -exports.halfPi : Math.asin(x);
9
9
  }
10
10
 
11
+ /**
12
+ * 根据比例获直线上的点
13
+ * @param {number} x1 起始点 x
14
+ * @param {number} y1 起始点 y
15
+ * @param {number} x2 结束点 x
16
+ * @param {number} y2 结束点 y
17
+ * @param {number} t 指定比例
18
+ * @return {object} 包含 x, y 的点
19
+ */
11
20
  function pointAt(x1, y1, x2, y2, t) {
12
21
  let x = x2, y = y2;
13
22
  return "number" == typeof x1 && "number" == typeof x2 && (x = (1 - t) * x1 + t * x2),
@@ -18,6 +27,7 @@ function pointAt(x1, y1, x2, y2, t) {
18
27
  }
19
28
 
20
29
  function lengthFromPointToLine(point, point1, point2) {
30
+ // 面积
21
31
  const dir1X = point2.x - point1.x, dir1Y = point2.y - point1.y, dir2X = point.x - point1.x, dir2Y = point.y - point1.y;
22
32
  return Math.abs(dir1X * dir2Y - dir2X * dir1Y) / Math.sqrt(dir1X * dir1X + dir1Y * dir1Y);
23
33
  }
package/cjs/math.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/math.ts"],"names":[],"mappings":"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","file":"math.js","sourcesContent":["export const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\nexport const NEWTON_ITERATIONS = 4;\nexport const NEWTON_MIN_SLOPE = 0.001;\nexport const SUBDIVISION_PRECISION = 0.0000001;\nexport const SUBDIVISION_MAX_ITERATIONS = 10;\nexport const pi2 = Math.PI * 2;\n\nexport type vec2 = [number, number] | Float32Array;\nexport type vec3 = [number, number, number] | Float32Array;\nexport type vec4 = [number, number, number, number] | Float32Array;\nexport type vec8 = [number, number, number, number, number, number, number, number] | Float32Array;\nexport type mat4 =\n | [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n ]\n | Float32Array;\n\nexport const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\nexport const pow = Math.pow;\n\nexport function acos(x: number) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x: number) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n\n/**\n * 根据比例获直线上的点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\nexport function pointAt(\n x1: number | null | undefined,\n y1: number | null | undefined,\n x2: number | null | undefined,\n y2: number | null | undefined,\n t: number\n): {\n x: undefined | number;\n y: undefined | number;\n} {\n let x: number | undefined = x2;\n let y: number | undefined = y2;\n if (typeof x1 === 'number' && typeof x2 === 'number') {\n x = (1 - t) * x1 + t * x2;\n }\n if (typeof y1 === 'number' && typeof y2 === 'number') {\n y = (1 - t) * y1 + t * y2;\n }\n return {\n x,\n y\n };\n}\n\nexport function lengthFromPointToLine(\n point: { x: number; y: number },\n point1: { x: number; y: number },\n point2: { x: number; y: number }\n): number {\n // 面积\n const dir1X = point2.x - point1.x;\n const dir1Y = point2.y - point1.y;\n const dir2X = point.x - point1.x;\n const dir2Y = point.y - point1.y;\n const s = Math.abs(dir1X * dir2Y - dir2X * dir1Y);\n const length = Math.sqrt(dir1X * dir1X + dir1Y * dir1Y);\n return s / length;\n}\n\nexport function crossProduct(dir1: vec2, dir2: vec2): number {\n return dir1[0] * dir2[1] - dir1[1] * dir2[0];\n}\n\nexport function crossProductPoint(dir1: { x: number; y: number }, dir2: { x: number; y: number }): number {\n return dir1.x * dir2.y - dir1.y * dir2.x;\n}\n\nexport function dotProduct(a: number[] | Float32Array, b: number[] | Float32Array): number {\n let ret = 0;\n for (let i = 0; i < a.length; ++i) {\n ret += a[i] * b[i];\n }\n return ret;\n}\n\nexport function fuzzyEqualNumber(a: number, b: number): boolean {\n return abs(a - b) < epsilon;\n}\n\nexport function fuzzyEqualVec(a: vec2, b: vec2): boolean {\n return abs(a[0] - b[0]) + abs(a[1] - b[1]) < epsilon;\n}\n\nexport function fixPrecision(num: number, precision = 10) {\n return Math.round(num * precision) / precision;\n}\n\nexport function getDecimalPlaces(n: number): number {\n const dStr = n.toString().split(/[eE]/);\n const s = (dStr[0].split('.')[1] || '').length - (+dStr[1] || 0);\n return s > 0 ? s : 0;\n}\n\nexport function precisionAdd(a: number, b: number) {\n return fixPrecision(a + b, 10 ** Math.max(getDecimalPlaces(a), getDecimalPlaces(b)));\n}\n\nexport function precisionSub(a: number, b: number) {\n return fixPrecision(a - b, 10 ** Math.max(getDecimalPlaces(a), getDecimalPlaces(b)));\n}\n"]}
1
+ {"version":3,"sources":["../src/math.ts"],"names":[],"mappings":"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","file":"math.js","sourcesContent":["export const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\nexport const NEWTON_ITERATIONS = 4;\nexport const NEWTON_MIN_SLOPE = 0.001;\nexport const SUBDIVISION_PRECISION = 0.0000001;\nexport const SUBDIVISION_MAX_ITERATIONS = 10;\nexport const pi2 = Math.PI * 2;\n\nexport type vec2 = [number, number] | Float32Array;\nexport type vec3 = [number, number, number] | Float32Array;\nexport type vec4 = [number, number, number, number] | Float32Array;\nexport type vec8 = [number, number, number, number, number, number, number, number] | Float32Array;\nexport type mat4 =\n | [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n ]\n | Float32Array;\n\nexport const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\nexport const pow = Math.pow;\n\nexport function acos(x: number) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x: number) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n\n/**\n * 根据比例获直线上的点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\nexport function pointAt(\n x1: number | null | undefined,\n y1: number | null | undefined,\n x2: number | null | undefined,\n y2: number | null | undefined,\n t: number\n): {\n x: undefined | number;\n y: undefined | number;\n} {\n let x: number | undefined = x2;\n let y: number | undefined = y2;\n if (typeof x1 === 'number' && typeof x2 === 'number') {\n x = (1 - t) * x1 + t * x2;\n }\n if (typeof y1 === 'number' && typeof y2 === 'number') {\n y = (1 - t) * y1 + t * y2;\n }\n return {\n x,\n y\n };\n}\n\nexport function lengthFromPointToLine(\n point: { x: number; y: number },\n point1: { x: number; y: number },\n point2: { x: number; y: number }\n): number {\n // 面积\n const dir1X = point2.x - point1.x;\n const dir1Y = point2.y - point1.y;\n const dir2X = point.x - point1.x;\n const dir2Y = point.y - point1.y;\n const s = Math.abs(dir1X * dir2Y - dir2X * dir1Y);\n const length = Math.sqrt(dir1X * dir1X + dir1Y * dir1Y);\n return s / length;\n}\n\nexport function crossProduct(dir1: vec2, dir2: vec2): number {\n return dir1[0] * dir2[1] - dir1[1] * dir2[0];\n}\n\nexport function crossProductPoint(dir1: { x: number; y: number }, dir2: { x: number; y: number }): number {\n return dir1.x * dir2.y - dir1.y * dir2.x;\n}\n\nexport function dotProduct(a: number[] | Float32Array, b: number[] | Float32Array): number {\n let ret = 0;\n for (let i = 0; i < a.length; ++i) {\n ret += a[i] * b[i];\n }\n return ret;\n}\n\nexport function fuzzyEqualNumber(a: number, b: number): boolean {\n return abs(a - b) < epsilon;\n}\n\nexport function fuzzyEqualVec(a: vec2, b: vec2): boolean {\n return abs(a[0] - b[0]) + abs(a[1] - b[1]) < epsilon;\n}\n\nexport function fixPrecision(num: number, precision = 10) {\n return Math.round(num * precision) / precision;\n}\n\nexport function getDecimalPlaces(n: number): number {\n const dStr = n.toString().split(/[eE]/);\n const s = (dStr[0].split('.')[1] || '').length - (+dStr[1] || 0);\n return s > 0 ? s : 0;\n}\n\nexport function precisionAdd(a: number, b: number) {\n return fixPrecision(a + b, 10 ** Math.max(getDecimalPlaces(a), getDecimalPlaces(b)));\n}\n\nexport function precisionSub(a: number, b: number) {\n return fixPrecision(a - b, 10 ** Math.max(getDecimalPlaces(a), getDecimalPlaces(b)));\n}\n"]}
package/cjs/padding.d.ts CHANGED
@@ -4,4 +4,9 @@ export type IPadding = {
4
4
  left?: number;
5
5
  right?: number;
6
6
  };
7
+ /**
8
+ * 将 padding 转换为通用的格式([上,右,下,左])
9
+ * @param padding
10
+ * @return [ top, right, bottom, left ]
11
+ */
7
12
  export declare function normalizePadding(padding: number | number[] | IPadding): number[];
package/cjs/padding.js CHANGED
@@ -12,6 +12,11 @@ Object.defineProperty(exports, "__esModule", {
12
12
 
13
13
  const isValidNumber_1 = __importDefault(require("./common/isValidNumber")), isArray_1 = __importDefault(require("./common/isArray")), isObject_1 = __importDefault(require("./common/isObject"));
14
14
 
15
+ /**
16
+ * 将 padding 转换为通用的格式([上,右,下,左])
17
+ * @param padding
18
+ * @return [ top, right, bottom, left ]
19
+ */
15
20
  function normalizePadding(padding) {
16
21
  if ((0, isValidNumber_1.default)(padding)) return [ padding, padding, padding, padding ];
17
22
  if ((0, isArray_1.default)(padding)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/padding.ts"],"names":[],"mappings":";;;;;;AAAA,2EAAmD;AACnD,+DAAuC;AACvC,iEAAyC;AAczC,SAAgB,gBAAgB,CAAC,OAAqC;IACpE,IAAI,IAAA,uBAAa,EAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAC7C;IAED,IAAI,IAAA,iBAAO,EAAC,OAAO,CAAC,EAAE;QACpB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,IAAI,MAAM,KAAK,CAAC,EAAE;YAChB,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAChC,OAAO,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;SACjE;QAED,IAAI,MAAM,KAAK,CAAC,EAAE;YAChB,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC;YACvC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;SACrD;QAED,IAAI,MAAM,KAAK,CAAC,EAAE;YAChB,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;YAC1C,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SAC9C;QAED,IAAI,MAAM,KAAK,CAAC,EAAE;YAChB,OAAO,OAAO,CAAC;SAChB;KACF;IAED,IAAI,IAAA,kBAAQ,EAAC,OAAO,CAAC,EAAE;QACrB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,OAAmB,CAAC;QACzE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;KACnC;IAED,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC;AAlCD,4CAkCC","file":"padding.js","sourcesContent":["import isValidNumber from './common/isValidNumber';\nimport isArray from './common/isArray';\nimport isObject from './common/isObject';\n\nexport type IPadding = {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n};\n\n/**\n * 将 padding 转换为通用的格式([上,右,下,左])\n * @param padding\n * @return [ top, right, bottom, left ]\n */\nexport function normalizePadding(padding: number | number[] | IPadding) {\n if (isValidNumber(padding)) {\n return [padding, padding, padding, padding];\n }\n\n if (isArray(padding)) {\n const length = padding.length;\n\n if (length === 1) {\n const paddingValue = padding[0];\n return [paddingValue, paddingValue, paddingValue, paddingValue];\n }\n\n if (length === 2) {\n const [vertical, horizontal] = padding;\n return [vertical, horizontal, vertical, horizontal];\n }\n\n if (length === 3) {\n const [top, horizontal, bottom] = padding;\n return [top, horizontal, bottom, horizontal];\n }\n\n if (length === 4) {\n return padding;\n }\n }\n\n if (isObject(padding)) {\n const { top = 0, right = 0, bottom = 0, left = 0 } = padding as IPadding;\n return [top, right, bottom, left];\n }\n\n return [0, 0, 0, 0];\n}\n"]}
1
+ {"version":3,"sources":["../src/padding.ts"],"names":[],"mappings":";;;;;;AAAA,2EAAmD;AACnD,+DAAuC;AACvC,iEAAyC;AASzC;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,OAAqC;IACpE,IAAI,IAAA,uBAAa,EAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAC7C;IAED,IAAI,IAAA,iBAAO,EAAC,OAAO,CAAC,EAAE;QACpB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,IAAI,MAAM,KAAK,CAAC,EAAE;YAChB,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAChC,OAAO,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;SACjE;QAED,IAAI,MAAM,KAAK,CAAC,EAAE;YAChB,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC;YACvC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;SACrD;QAED,IAAI,MAAM,KAAK,CAAC,EAAE;YAChB,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;YAC1C,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SAC9C;QAED,IAAI,MAAM,KAAK,CAAC,EAAE;YAChB,OAAO,OAAO,CAAC;SAChB;KACF;IAED,IAAI,IAAA,kBAAQ,EAAC,OAAO,CAAC,EAAE;QACrB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,OAAmB,CAAC;QACzE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;KACnC;IAED,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC;AAlCD,4CAkCC","file":"padding.js","sourcesContent":["import isValidNumber from './common/isValidNumber';\nimport isArray from './common/isArray';\nimport isObject from './common/isObject';\n\nexport type IPadding = {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n};\n\n/**\n * 将 padding 转换为通用的格式([上,右,下,左])\n * @param padding\n * @return [ top, right, bottom, left ]\n */\nexport function normalizePadding(padding: number | number[] | IPadding) {\n if (isValidNumber(padding)) {\n return [padding, padding, padding, padding];\n }\n\n if (isArray(padding)) {\n const length = padding.length;\n\n if (length === 1) {\n const paddingValue = padding[0];\n return [paddingValue, paddingValue, paddingValue, paddingValue];\n }\n\n if (length === 2) {\n const [vertical, horizontal] = padding;\n return [vertical, horizontal, vertical, horizontal];\n }\n\n if (length === 3) {\n const [top, horizontal, bottom] = padding;\n return [top, horizontal, bottom, horizontal];\n }\n\n if (length === 4) {\n return padding;\n }\n }\n\n if (isObject(padding)) {\n const { top = 0, right = 0, bottom = 0, left = 0 } = padding as IPadding;\n return [top, right, bottom, left];\n }\n\n return [0, 0, 0, 0];\n}\n"]}
@@ -13,5 +13,11 @@ export declare function hoursSetterName(isUTC?: boolean): "setUTCHours" | "setHo
13
13
  export declare function minutesSetterName(isUTC?: boolean): "setUTCMinutes" | "setMinutes";
14
14
  export declare function secondsSetterName(isUTC?: boolean): "setUTCSeconds" | "setSeconds";
15
15
  export declare function millisecondsSetterName(isUTC?: boolean): "setUTCMilliseconds" | "setMilliseconds";
16
+ /**
17
+ * 根据时间推断格式化字符串
18
+ * @param value
19
+ * @param isUTC
20
+ * @returns
21
+ */
16
22
  export declare function getFormatFromValue(value: DateLikeType, isUTC?: boolean): "YYYY" | "YYYY-MM" | "YYYY-MM-DD" | "HH" | "HH:mm" | "HH:mm:ss" | "HH:mm:ss SSS";
17
23
  export declare function getTimeFormatter(template: string, isUTC?: boolean): (time: DateLikeType) => string;
@@ -68,6 +68,12 @@ function millisecondsSetterName(isUTC) {
68
68
  return isUTC ? "setUTCMilliseconds" : "setMilliseconds";
69
69
  }
70
70
 
71
+ /**
72
+ * 根据时间推断格式化字符串
73
+ * @param value
74
+ * @param isUTC
75
+ * @returns
76
+ */
71
77
  function getFormatFromValue(value, isUTC) {
72
78
  const date = (0, toDate_1.toDate)(value), M = date[monthGetterName(isUTC)]() + 1, d = date[dateGetterName(isUTC)](), h = date[hoursGetterName(isUTC)](), m = date[minutesGetterName(isUTC)](), s = date[secondsGetterName(isUTC)](), isSecond = 0 === date[millisecondsGetterName(isUTC)](), isMinute = isSecond && 0 === s, isHour = isMinute && 0 === m, isDay = isHour && 0 === h, isMonth = isDay && 1 === d;
73
79
  return isMonth && 1 === M ? "YYYY" : isMonth ? "YYYY-MM" : isDay ? "YYYY-MM-DD" : isHour ? "HH" : isMinute ? "HH:mm" : isSecond ? "HH:mm:ss" : "HH:mm:ss SSS";
@@ -76,6 +82,7 @@ function getFormatFromValue(value, isUTC) {
76
82
  function getTimeFormatter(template, isUTC) {
77
83
  return time => {
78
84
  const date = (0, toDate_1.toDate)(time), y = date[fullYearGetterName(isUTC)](), M = date[monthGetterName(isUTC)]() + 1, q = Math.floor((M - 1) / 3) + 1, d = date[dateGetterName(isUTC)](), e = date["get" + (isUTC ? "UTC" : "") + "Day"](), H = date[hoursGetterName(isUTC)](), h = (H - 1) % 12 + 1, m = date[minutesGetterName(isUTC)](), s = date[secondsGetterName(isUTC)](), S = date[millisecondsGetterName(isUTC)]();
85
+ // 月份,周等需要管理管理locale的时间格式化暂时不支持
79
86
  return (template || "").replace(/YYYY/g, (0, pad_1.default)(y + "", 4, "0", "left")).replace(/yyyy/g, y + "").replace(/yy/g, y % 100 + "").replace(/Q/g, q + "").replace(/MM/g, (0,
80
87
  pad_1.default)(M, 2, "0", "left")).replace(/M/g, M + "").replace(/dd/g, (0, pad_1.default)(d, 2, "0", "left")).replace(/d/g, d + "").replace(/e/g, e + "").replace(/HH/g, (0,
81
88
  pad_1.default)(H, 2, "0", "left")).replace(/H/g, H + "").replace(/hh/g, (0, pad_1.default)(h + "", 2, "0", "left")).replace(/h/g, h + "").replace(/mm/g, (0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/time/formatUtils.ts"],"names":[],"mappings":"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","file":"formatUtils.js","sourcesContent":["import pad from '../common/pad';\nimport type { DateLikeType } from '../common/toDate';\nimport { toDate } from '../common/toDate';\n\nexport function fullYearGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCFullYear' : 'getFullYear';\n}\n\nexport function monthGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCMonth' : 'getMonth';\n}\n\nexport function dateGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCDate' : 'getDate';\n}\n\nexport function hoursGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCHours' : 'getHours';\n}\n\nexport function minutesGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCMinutes' : 'getMinutes';\n}\n\nexport function secondsGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCSeconds' : 'getSeconds';\n}\n\nexport function millisecondsGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCMilliseconds' : 'getMilliseconds';\n}\n\nexport function fullYearSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCFullYear' : 'setFullYear';\n}\n\nexport function monthSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCMonth' : 'setMonth';\n}\n\nexport function dateSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCDate' : 'setDate';\n}\n\nexport function hoursSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCHours' : 'setHours';\n}\n\nexport function minutesSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCMinutes' : 'setMinutes';\n}\n\nexport function secondsSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCSeconds' : 'setSeconds';\n}\n\nexport function millisecondsSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCMilliseconds' : 'setMilliseconds';\n}\n\n/**\n * 根据时间推断格式化字符串\n * @param value\n * @param isUTC\n * @returns\n */\nexport function getFormatFromValue(value: DateLikeType, isUTC?: boolean) {\n const date = toDate(value);\n const M = (date as any)[monthGetterName(isUTC)]() + 1;\n const d = (date as any)[dateGetterName(isUTC)]();\n const h = (date as any)[hoursGetterName(isUTC)]();\n const m = (date as any)[minutesGetterName(isUTC)]();\n const s = (date as any)[secondsGetterName(isUTC)]();\n const S = (date as any)[millisecondsGetterName(isUTC)]();\n\n const isSecond = S === 0;\n const isMinute = isSecond && s === 0;\n const isHour = isMinute && m === 0;\n const isDay = isHour && h === 0;\n const isMonth = isDay && d === 1;\n const isYear = isMonth && M === 1;\n\n if (isYear) {\n return 'YYYY';\n } else if (isMonth) {\n return 'YYYY-MM';\n } else if (isDay) {\n return 'YYYY-MM-DD';\n } else if (isHour) {\n return 'HH';\n } else if (isMinute) {\n return 'HH:mm';\n } else if (isSecond) {\n return 'HH:mm:ss';\n }\n return 'HH:mm:ss SSS';\n}\n\nexport function getTimeFormatter(template: string, isUTC?: boolean) {\n return (time: DateLikeType) => {\n const date = toDate(time);\n const y = date[fullYearGetterName(isUTC)]();\n const M = date[monthGetterName(isUTC)]() + 1;\n const q = Math.floor((M - 1) / 3) + 1;\n const d = date[dateGetterName(isUTC)]();\n const e = date[('get' + (isUTC ? 'UTC' : '') + 'Day') as 'getDay' | 'getUTCDay']();\n const H = date[hoursGetterName(isUTC)]();\n const h = ((H - 1) % 12) + 1;\n const m = date[minutesGetterName(isUTC)]();\n const s = date[secondsGetterName(isUTC)]();\n const S = date[millisecondsGetterName(isUTC)]();\n\n // 月份,周等需要管理管理locale的时间格式化暂时不支持\n return (\n (template || '')\n .replace(/YYYY/g, pad(y + '', 4, '0', 'left'))\n .replace(/yyyy/g, y + '')\n .replace(/yy/g, (y % 100) + '')\n .replace(/Q/g, q + '')\n // .replace(/{MMMM}/g, month[M - 1])\n // .replace(/{MMM}/g, monthAbbr[M - 1])\n .replace(/MM/g, pad(M, 2, '0', 'left'))\n .replace(/M/g, M + '')\n .replace(/dd/g, pad(d, 2, '0', 'left'))\n .replace(/d/g, d + '')\n // .replace(/{eeee}/g, dayOfWeek[e])\n // .replace(/{ee}/g, dayOfWeekAbbr[e])\n .replace(/e/g, e + '')\n .replace(/HH/g, pad(H, 2, '0', 'left'))\n .replace(/H/g, H + '')\n .replace(/hh/g, pad(h + '', 2, '0', 'left'))\n .replace(/h/g, h + '')\n .replace(/mm/g, pad(m, 2, '0', 'left'))\n .replace(/m/g, m + '')\n .replace(/ss/g, pad(s, 2, '0', 'left'))\n .replace(/s/g, s + '')\n .replace(/SSS/g, pad(S, 3, '0', 'left'))\n .replace(/S/g, S + '')\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/time/formatUtils.ts"],"names":[],"mappings":"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","file":"formatUtils.js","sourcesContent":["import pad from '../common/pad';\nimport type { DateLikeType } from '../common/toDate';\nimport { toDate } from '../common/toDate';\n\nexport function fullYearGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCFullYear' : 'getFullYear';\n}\n\nexport function monthGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCMonth' : 'getMonth';\n}\n\nexport function dateGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCDate' : 'getDate';\n}\n\nexport function hoursGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCHours' : 'getHours';\n}\n\nexport function minutesGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCMinutes' : 'getMinutes';\n}\n\nexport function secondsGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCSeconds' : 'getSeconds';\n}\n\nexport function millisecondsGetterName(isUTC?: boolean) {\n return isUTC ? 'getUTCMilliseconds' : 'getMilliseconds';\n}\n\nexport function fullYearSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCFullYear' : 'setFullYear';\n}\n\nexport function monthSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCMonth' : 'setMonth';\n}\n\nexport function dateSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCDate' : 'setDate';\n}\n\nexport function hoursSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCHours' : 'setHours';\n}\n\nexport function minutesSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCMinutes' : 'setMinutes';\n}\n\nexport function secondsSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCSeconds' : 'setSeconds';\n}\n\nexport function millisecondsSetterName(isUTC?: boolean) {\n return isUTC ? 'setUTCMilliseconds' : 'setMilliseconds';\n}\n\n/**\n * 根据时间推断格式化字符串\n * @param value\n * @param isUTC\n * @returns\n */\nexport function getFormatFromValue(value: DateLikeType, isUTC?: boolean) {\n const date = toDate(value);\n const M = (date as any)[monthGetterName(isUTC)]() + 1;\n const d = (date as any)[dateGetterName(isUTC)]();\n const h = (date as any)[hoursGetterName(isUTC)]();\n const m = (date as any)[minutesGetterName(isUTC)]();\n const s = (date as any)[secondsGetterName(isUTC)]();\n const S = (date as any)[millisecondsGetterName(isUTC)]();\n\n const isSecond = S === 0;\n const isMinute = isSecond && s === 0;\n const isHour = isMinute && m === 0;\n const isDay = isHour && h === 0;\n const isMonth = isDay && d === 1;\n const isYear = isMonth && M === 1;\n\n if (isYear) {\n return 'YYYY';\n } else if (isMonth) {\n return 'YYYY-MM';\n } else if (isDay) {\n return 'YYYY-MM-DD';\n } else if (isHour) {\n return 'HH';\n } else if (isMinute) {\n return 'HH:mm';\n } else if (isSecond) {\n return 'HH:mm:ss';\n }\n return 'HH:mm:ss SSS';\n}\n\nexport function getTimeFormatter(template: string, isUTC?: boolean) {\n return (time: DateLikeType) => {\n const date = toDate(time);\n const y = date[fullYearGetterName(isUTC)]();\n const M = date[monthGetterName(isUTC)]() + 1;\n const q = Math.floor((M - 1) / 3) + 1;\n const d = date[dateGetterName(isUTC)]();\n const e = date[('get' + (isUTC ? 'UTC' : '') + 'Day') as 'getDay' | 'getUTCDay']();\n const H = date[hoursGetterName(isUTC)]();\n const h = ((H - 1) % 12) + 1;\n const m = date[minutesGetterName(isUTC)]();\n const s = date[secondsGetterName(isUTC)]();\n const S = date[millisecondsGetterName(isUTC)]();\n\n // 月份,周等需要管理管理locale的时间格式化暂时不支持\n return (\n (template || '')\n .replace(/YYYY/g, pad(y + '', 4, '0', 'left'))\n .replace(/yyyy/g, y + '')\n .replace(/yy/g, (y % 100) + '')\n .replace(/Q/g, q + '')\n // .replace(/{MMMM}/g, month[M - 1])\n // .replace(/{MMM}/g, monthAbbr[M - 1])\n .replace(/MM/g, pad(M, 2, '0', 'left'))\n .replace(/M/g, M + '')\n .replace(/dd/g, pad(d, 2, '0', 'left'))\n .replace(/d/g, d + '')\n // .replace(/{eeee}/g, dayOfWeek[e])\n // .replace(/{ee}/g, dayOfWeekAbbr[e])\n .replace(/e/g, e + '')\n .replace(/HH/g, pad(H, 2, '0', 'left'))\n .replace(/H/g, H + '')\n .replace(/hh/g, pad(h + '', 2, '0', 'left'))\n .replace(/h/g, h + '')\n .replace(/mm/g, pad(m, 2, '0', 'left'))\n .replace(/m/g, m + '')\n .replace(/ss/g, pad(s, 2, '0', 'left'))\n .replace(/s/g, s + '')\n .replace(/SSS/g, pad(S, 3, '0', 'left'))\n .replace(/S/g, S + '')\n );\n };\n}\n"]}