sard 1.0.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/dist/accordion/Item.d.ts +17 -0
  2. package/dist/accordion/Item.js +25 -0
  3. package/dist/accordion/index.d.ts +26 -0
  4. package/dist/accordion/index.js +27 -0
  5. package/dist/accordion/index.scss +49 -0
  6. package/dist/action-sheet/ActionSheet.d.ts +24 -0
  7. package/dist/action-sheet/ActionSheet.js +79 -0
  8. package/dist/action-sheet/Agent.d.ts +6 -0
  9. package/dist/action-sheet/Agent.js +7 -0
  10. package/dist/action-sheet/Item.d.ts +16 -0
  11. package/dist/action-sheet/Item.js +22 -0
  12. package/dist/action-sheet/imperative.d.ts +10 -0
  13. package/dist/action-sheet/imperative.js +22 -0
  14. package/dist/action-sheet/index.d.ts +12 -0
  15. package/dist/action-sheet/index.js +10 -0
  16. package/dist/action-sheet/index.scss +148 -0
  17. package/dist/animated/index.d.ts +62 -0
  18. package/dist/animated/index.js +101 -0
  19. package/dist/animated/index.rn.d.ts +4 -0
  20. package/dist/animated/index.rn.js +35 -0
  21. package/dist/avatar/Group.d.ts +9 -0
  22. package/dist/avatar/Group.js +27 -0
  23. package/dist/avatar/index.d.ts +17 -0
  24. package/dist/avatar/index.js +22 -0
  25. package/dist/avatar/index.scss +82 -0
  26. package/dist/badge/index.d.ts +13 -0
  27. package/dist/badge/index.js +16 -0
  28. package/dist/badge/index.scss +81 -0
  29. package/dist/base.d.ts +11 -0
  30. package/dist/base.js +1 -0
  31. package/dist/button/CustomButton.d.ts +9 -0
  32. package/dist/button/CustomButton.js +23 -0
  33. package/dist/button/index.d.ts +21 -0
  34. package/dist/button/index.js +34 -0
  35. package/dist/button/index.scss +346 -0
  36. package/dist/calendar/Day.d.ts +23 -0
  37. package/dist/calendar/Day.js +70 -0
  38. package/dist/calendar/MonthPicker.d.ts +13 -0
  39. package/dist/calendar/MonthPicker.js +22 -0
  40. package/dist/calendar/Toolbar.d.ts +11 -0
  41. package/dist/calendar/Toolbar.js +18 -0
  42. package/dist/calendar/Weeks.d.ts +6 -0
  43. package/dist/calendar/Weeks.js +18 -0
  44. package/dist/calendar/index.d.ts +48 -0
  45. package/dist/calendar/index.js +193 -0
  46. package/dist/calendar/index.scss +210 -0
  47. package/dist/card/index.d.ts +15 -0
  48. package/dist/card/index.js +14 -0
  49. package/dist/card/index.scss +64 -0
  50. package/dist/cascader/index.d.ts +43 -0
  51. package/dist/cascader/index.js +216 -0
  52. package/dist/cascader/index.scss +130 -0
  53. package/dist/checkbox/Group.d.ts +5 -0
  54. package/dist/checkbox/Group.js +5 -0
  55. package/dist/checkbox/index.d.ts +10 -0
  56. package/dist/checkbox/index.js +8 -0
  57. package/dist/checkbox/index.scss +78 -0
  58. package/dist/collapse/index.d.ts +14 -0
  59. package/dist/collapse/index.js +61 -0
  60. package/dist/collapse/index.rn.d.ts +14 -0
  61. package/dist/collapse/index.rn.js +76 -0
  62. package/dist/collapse/index.scss +31 -0
  63. package/dist/components.d.ts +66 -0
  64. package/dist/components.js +66 -0
  65. package/dist/components.scss +65 -0
  66. package/dist/config-provider/index.d.ts +21 -0
  67. package/dist/config-provider/index.js +20 -0
  68. package/dist/count-down/index.d.ts +26 -0
  69. package/dist/count-down/index.js +95 -0
  70. package/dist/datetime-picker/index.d.ts +36 -0
  71. package/dist/datetime-picker/index.js +230 -0
  72. package/dist/dialog/Agent.d.ts +6 -0
  73. package/dist/dialog/Agent.js +7 -0
  74. package/dist/dialog/Dialog.d.ts +31 -0
  75. package/dist/dialog/Dialog.js +103 -0
  76. package/dist/dialog/imperative.d.ts +17 -0
  77. package/dist/dialog/imperative.js +35 -0
  78. package/dist/dialog/index.d.ts +14 -0
  79. package/dist/dialog/index.js +12 -0
  80. package/dist/dialog/index.scss +156 -0
  81. package/dist/dropdown/Item.d.ts +33 -0
  82. package/dist/dropdown/Item.js +164 -0
  83. package/dist/dropdown/Option.d.ts +10 -0
  84. package/dist/dropdown/Option.js +12 -0
  85. package/dist/dropdown/index.d.ts +20 -0
  86. package/dist/dropdown/index.js +59 -0
  87. package/dist/dropdown/index.scss +236 -0
  88. package/dist/ellipsis/index.d.ts +8 -0
  89. package/dist/ellipsis/index.js +18 -0
  90. package/dist/ellipsis/index.scss +23 -0
  91. package/dist/empty/index.d.ts +10 -0
  92. package/dist/empty/index.js +14 -0
  93. package/dist/empty/index.scss +59 -0
  94. package/dist/footer-bar/index.d.ts +8 -0
  95. package/dist/footer-bar/index.js +15 -0
  96. package/dist/footer-bar/index.scss +29 -0
  97. package/dist/form/CustomForm.d.ts +13 -0
  98. package/dist/form/CustomForm.js +26 -0
  99. package/dist/form/ErrorList.d.ts +6 -0
  100. package/dist/form/ErrorList.js +15 -0
  101. package/dist/form/Field.d.ts +41 -0
  102. package/dist/form/Field.js +124 -0
  103. package/dist/form/FieldContext.d.ts +18 -0
  104. package/dist/form/FieldContext.js +8 -0
  105. package/dist/form/List.d.ts +31 -0
  106. package/dist/form/List.js +87 -0
  107. package/dist/form/Map.d.ts +17 -0
  108. package/dist/form/Map.js +24 -0
  109. package/dist/form/NodeContext.d.ts +12 -0
  110. package/dist/form/NodeContext.js +14 -0
  111. package/dist/form/Validator.d.ts +88 -0
  112. package/dist/form/Validator.js +268 -0
  113. package/dist/form/createFormStore.d.ts +36 -0
  114. package/dist/form/createFormStore.js +249 -0
  115. package/dist/form/index.d.ts +43 -0
  116. package/dist/form/index.js +109 -0
  117. package/dist/form/index.scss +200 -0
  118. package/dist/form/store/Context.d.ts +4 -0
  119. package/dist/form/store/Context.js +3 -0
  120. package/dist/form/store/createStore.d.ts +6 -0
  121. package/dist/form/store/createStore.js +28 -0
  122. package/dist/form/store/useDispatch.d.ts +2 -0
  123. package/dist/form/store/useDispatch.js +10 -0
  124. package/dist/form/store/useSelector.d.ts +7 -0
  125. package/dist/form/store/useSelector.js +35 -0
  126. package/dist/form/type.d.ts +20 -0
  127. package/dist/form/type.js +1 -0
  128. package/dist/form/useForm.d.ts +27 -0
  129. package/dist/form/useForm.js +14 -0
  130. package/dist/form/useInternalWatch.d.ts +3 -0
  131. package/dist/form/useInternalWatch.js +27 -0
  132. package/dist/form/useNode.d.ts +49 -0
  133. package/dist/form/useNode.js +284 -0
  134. package/dist/form/useValidator.d.ts +23 -0
  135. package/dist/form/useValidator.js +74 -0
  136. package/dist/form/useWatch.d.ts +4 -0
  137. package/dist/form/useWatch.js +24 -0
  138. package/dist/grid/Col.d.ts +9 -0
  139. package/dist/grid/Col.js +20 -0
  140. package/dist/grid/Row.d.ts +11 -0
  141. package/dist/grid/Row.js +34 -0
  142. package/dist/grid/index.d.ts +2 -0
  143. package/dist/grid/index.js +2 -0
  144. package/dist/grid/index.scss +56 -0
  145. package/dist/halfline/index.d.ts +10 -0
  146. package/dist/halfline/index.js +27 -0
  147. package/dist/halfline/index.scss +80 -0
  148. package/dist/icon/common.d.ts +15 -0
  149. package/dist/icon/common.js +1 -0
  150. package/dist/icon/font/iconfont.json +275 -0
  151. package/dist/icon/font/iconfont.rn.scss +0 -0
  152. package/dist/icon/font/iconfont.scss +164 -0
  153. package/dist/icon/font/iconfont.ttf +0 -0
  154. package/dist/icon/fontLoader.d.ts +7 -0
  155. package/dist/icon/fontLoader.js +14 -0
  156. package/dist/icon/fontLoader.rn.d.ts +6 -0
  157. package/dist/icon/fontLoader.rn.js +52 -0
  158. package/dist/icon/index.d.ts +21 -0
  159. package/dist/icon/index.js +41 -0
  160. package/dist/icon/index.scss +23 -0
  161. package/dist/index-bar/Item.d.ts +9 -0
  162. package/dist/index-bar/Item.js +11 -0
  163. package/dist/index-bar/Nav.d.ts +13 -0
  164. package/dist/index-bar/Nav.js +75 -0
  165. package/dist/index-bar/index.d.ts +19 -0
  166. package/dist/index-bar/index.js +142 -0
  167. package/dist/index-bar/index.scss +153 -0
  168. package/dist/index.d.ts +3 -0
  169. package/dist/index.js +3 -0
  170. package/dist/index.scss +1 -0
  171. package/dist/input/index.d.ts +37 -0
  172. package/dist/input/index.js +116 -0
  173. package/dist/input/index.scss +249 -0
  174. package/dist/linear-gradient/index.d.ts +14 -0
  175. package/dist/linear-gradient/index.js +30 -0
  176. package/dist/linear-gradient/index.rn.d.ts +3 -0
  177. package/dist/linear-gradient/index.rn.js +3 -0
  178. package/dist/list/Item.d.ts +22 -0
  179. package/dist/list/Item.js +26 -0
  180. package/dist/list/ListContext.d.ts +9 -0
  181. package/dist/list/ListContext.js +2 -0
  182. package/dist/list/OrderContext.d.ts +8 -0
  183. package/dist/list/OrderContext.js +6 -0
  184. package/dist/list/index.d.ts +19 -0
  185. package/dist/list/index.js +29 -0
  186. package/dist/list/index.scss +257 -0
  187. package/dist/loading/index.d.ts +10 -0
  188. package/dist/loading/index.js +47 -0
  189. package/dist/loading/index.scss +25 -0
  190. package/dist/locale/index.d.ts +199 -0
  191. package/dist/locale/index.js +36 -0
  192. package/dist/locale/lang/en-US.d.ts +92 -0
  193. package/dist/locale/lang/en-US.js +92 -0
  194. package/dist/locale/lang/zh-CN.d.ts +92 -0
  195. package/dist/locale/lang/zh-CN.js +92 -0
  196. package/dist/locale/useTranslate.d.ts +7 -0
  197. package/dist/locale/useTranslate.js +41 -0
  198. package/dist/mask/index.d.ts +13 -0
  199. package/dist/mask/index.js +26 -0
  200. package/dist/mask/index.scss +24 -0
  201. package/dist/menu/Item.d.ts +15 -0
  202. package/dist/menu/Item.js +17 -0
  203. package/dist/menu/index.d.ts +17 -0
  204. package/dist/menu/index.js +15 -0
  205. package/dist/menu/index.scss +128 -0
  206. package/dist/mesh/Item.d.ts +16 -0
  207. package/dist/mesh/Item.js +16 -0
  208. package/dist/mesh/index.d.ts +14 -0
  209. package/dist/mesh/index.js +69 -0
  210. package/dist/mesh/index.scss +131 -0
  211. package/dist/mesh/type.d.ts +9 -0
  212. package/dist/mesh/type.js +1 -0
  213. package/dist/modal/index.d.ts +8 -0
  214. package/dist/modal/index.js +9 -0
  215. package/dist/modal/index.rn.d.ts +8 -0
  216. package/dist/modal/index.rn.js +8 -0
  217. package/dist/navbar/Item.d.ts +8 -0
  218. package/dist/navbar/Item.js +11 -0
  219. package/dist/navbar/index.d.ts +15 -0
  220. package/dist/navbar/index.js +16 -0
  221. package/dist/navbar/index.scss +128 -0
  222. package/dist/notice-bar/index.d.ts +28 -0
  223. package/dist/notice-bar/index.js +135 -0
  224. package/dist/notice-bar/index.scss +109 -0
  225. package/dist/notify/Agent.d.ts +6 -0
  226. package/dist/notify/Agent.js +7 -0
  227. package/dist/notify/Notify.d.ts +22 -0
  228. package/dist/notify/Notify.js +48 -0
  229. package/dist/notify/imperative.d.ts +18 -0
  230. package/dist/notify/imperative.js +35 -0
  231. package/dist/notify/index.d.ts +15 -0
  232. package/dist/notify/index.js +13 -0
  233. package/dist/notify/index.scss +65 -0
  234. package/dist/number-keyboard/index.d.ts +10 -0
  235. package/dist/number-keyboard/index.js +51 -0
  236. package/dist/number-keyboard/index.scss +93 -0
  237. package/dist/pagination/index.d.ts +20 -0
  238. package/dist/pagination/index.js +65 -0
  239. package/dist/pagination/index.scss +131 -0
  240. package/dist/pan-gesture-detector/index.d.ts +8 -0
  241. package/dist/pan-gesture-detector/index.js +11 -0
  242. package/dist/pan-gesture-detector/index.rn.d.ts +8 -0
  243. package/dist/pan-gesture-detector/index.rn.js +23 -0
  244. package/dist/pan-gesture-detector/usePan.d.ts +47 -0
  245. package/dist/pan-gesture-detector/usePan.js +146 -0
  246. package/dist/password-input/index.d.ts +22 -0
  247. package/dist/password-input/index.js +91 -0
  248. package/dist/password-input/index.scss +189 -0
  249. package/dist/picker/InertialMotion.d.ts +20 -0
  250. package/dist/picker/InertialMotion.js +141 -0
  251. package/dist/picker/PickerView.d.ts +1 -0
  252. package/dist/picker/PickerView.h5.d.ts +17 -0
  253. package/dist/picker/PickerView.h5.js +36 -0
  254. package/dist/picker/PickerView.js +1 -0
  255. package/dist/picker/PickerViewColumn copy.d.ts +9 -0
  256. package/dist/picker/PickerViewColumn copy.js +143 -0
  257. package/dist/picker/PickerViewColumn.d.ts +12 -0
  258. package/dist/picker/PickerViewColumn.js +238 -0
  259. package/dist/picker/index.d.ts +38 -0
  260. package/dist/picker/index.js +224 -0
  261. package/dist/picker/index.rn.scss +0 -0
  262. package/dist/picker/index.scss +138 -0
  263. package/dist/popout/index.d.ts +25 -0
  264. package/dist/popout/index.js +87 -0
  265. package/dist/popout/index.scss +136 -0
  266. package/dist/popout-input/index.d.ts +29 -0
  267. package/dist/popout-input/index.js +91 -0
  268. package/dist/popout-input/index.scss +53 -0
  269. package/dist/popover/index.d.ts +35 -0
  270. package/dist/popover/index.js +193 -0
  271. package/dist/popover/index.scss +94 -0
  272. package/dist/popover/utils.d.ts +23 -0
  273. package/dist/popover/utils.js +124 -0
  274. package/dist/popup/index.d.ts +29 -0
  275. package/dist/popup/index.js +60 -0
  276. package/dist/popup/index.scss +60 -0
  277. package/dist/pressable/index.d.ts +13 -0
  278. package/dist/pressable/index.js +58 -0
  279. package/dist/pressable/index.rn.d.ts +13 -0
  280. package/dist/pressable/index.rn.js +50 -0
  281. package/dist/progress-bar/index.d.ts +10 -0
  282. package/dist/progress-bar/index.js +22 -0
  283. package/dist/progress-bar/index.scss +45 -0
  284. package/dist/progress-circle/index.d.ts +11 -0
  285. package/dist/progress-circle/index.js +54 -0
  286. package/dist/progress-circle/index.scss +141 -0
  287. package/dist/radio/Group.d.ts +5 -0
  288. package/dist/radio/Group.js +5 -0
  289. package/dist/radio/index.d.ts +10 -0
  290. package/dist/radio/index.js +8 -0
  291. package/dist/radio/index.scss +77 -0
  292. package/dist/rate/index.d.ts +23 -0
  293. package/dist/rate/index.js +116 -0
  294. package/dist/rate/index.scss +99 -0
  295. package/dist/result/index.d.ts +12 -0
  296. package/dist/result/index.js +19 -0
  297. package/dist/result/index.scss +88 -0
  298. package/dist/safe-area/index.d.ts +7 -0
  299. package/dist/safe-area/index.js +35 -0
  300. package/dist/safe-area/index.scss +24 -0
  301. package/dist/scroll-view/index.d.ts +24 -0
  302. package/dist/scroll-view/index.js +72 -0
  303. package/dist/scroll-view/index.rn.d.ts +21 -0
  304. package/dist/scroll-view/index.rn.js +51 -0
  305. package/dist/search/index.d.ts +26 -0
  306. package/dist/search/index.js +35 -0
  307. package/dist/search/index.scss +75 -0
  308. package/dist/share-sheet/Item.d.ts +15 -0
  309. package/dist/share-sheet/Item.js +26 -0
  310. package/dist/share-sheet/Row.d.ts +10 -0
  311. package/dist/share-sheet/Row.js +26 -0
  312. package/dist/share-sheet/index.d.ts +26 -0
  313. package/dist/share-sheet/index.js +76 -0
  314. package/dist/share-sheet/index.scss +230 -0
  315. package/dist/skeleton/Avatar.d.ts +7 -0
  316. package/dist/skeleton/Avatar.js +17 -0
  317. package/dist/skeleton/Block.d.ts +8 -0
  318. package/dist/skeleton/Block.js +44 -0
  319. package/dist/skeleton/Paragraph.d.ts +7 -0
  320. package/dist/skeleton/Paragraph.js +13 -0
  321. package/dist/skeleton/Title.d.ts +7 -0
  322. package/dist/skeleton/Title.js +16 -0
  323. package/dist/skeleton/index.d.ts +28 -0
  324. package/dist/skeleton/index.js +22 -0
  325. package/dist/skeleton/index.scss +108 -0
  326. package/dist/slider/index.d.ts +36 -0
  327. package/dist/slider/index.js +187 -0
  328. package/dist/slider/index.scss +138 -0
  329. package/dist/space/index.d.ts +13 -0
  330. package/dist/space/index.js +33 -0
  331. package/dist/space/index.scss +36 -0
  332. package/dist/stepper/index.d.ts +26 -0
  333. package/dist/stepper/index.js +138 -0
  334. package/dist/stepper/index.scss +106 -0
  335. package/dist/steps/Step.d.ts +23 -0
  336. package/dist/steps/Step.js +41 -0
  337. package/dist/steps/index.d.ts +23 -0
  338. package/dist/steps/index.js +38 -0
  339. package/dist/steps/index.scss +300 -0
  340. package/dist/style/base.scss +3 -0
  341. package/dist/style/functions.scss +54 -0
  342. package/dist/style/index.d.ts +2 -0
  343. package/dist/style/index.js +2 -0
  344. package/dist/style/index.scss +0 -0
  345. package/dist/style/mixins/bem.scss +63 -0
  346. package/dist/style/mixins/border.scss +80 -0
  347. package/dist/style/mixins/disabled.scss +9 -0
  348. package/dist/style/mixins/env.rn.scss +11 -0
  349. package/dist/style/mixins/env.scss +11 -0
  350. package/dist/style/mixins/fixed.rn.scss +3 -0
  351. package/dist/style/mixins/fixed.scss +3 -0
  352. package/dist/style/mixins/sticky.rn.scss +3 -0
  353. package/dist/style/mixins/sticky.scss +3 -0
  354. package/dist/style/mixins/theme.scss +11 -0
  355. package/dist/style/mixins/universal.rn.scss +2 -0
  356. package/dist/style/mixins/universal.scss +6 -0
  357. package/dist/style/mixins.scss +8 -0
  358. package/dist/style/utils.scss +130 -0
  359. package/dist/style/variables.scss +422 -0
  360. package/dist/swiper/Item.d.ts +8 -0
  361. package/dist/swiper/Item.js +10 -0
  362. package/dist/swiper/index.d.ts +12 -0
  363. package/dist/swiper/index.js +13 -0
  364. package/dist/swiper/index.scss +10 -0
  365. package/dist/switch/index.d.ts +19 -0
  366. package/dist/switch/index.js +78 -0
  367. package/dist/switch/index.scss +106 -0
  368. package/dist/tabbar/Item.d.ts +17 -0
  369. package/dist/tabbar/Item.js +24 -0
  370. package/dist/tabbar/index.d.ts +17 -0
  371. package/dist/tabbar/index.js +33 -0
  372. package/dist/tabbar/index.scss +89 -0
  373. package/dist/tabs/Tab.d.ts +12 -0
  374. package/dist/tabs/Tab.js +17 -0
  375. package/dist/tabs/index.d.ts +23 -0
  376. package/dist/tabs/index.js +258 -0
  377. package/dist/tabs/index.scss +113 -0
  378. package/dist/tag/index.d.ts +17 -0
  379. package/dist/tag/index.js +21 -0
  380. package/dist/tag/index.scss +93 -0
  381. package/dist/template/index.d.ts +6 -0
  382. package/dist/template/index.js +10 -0
  383. package/dist/template/index.scss +16 -0
  384. package/dist/toast/Agent.d.ts +6 -0
  385. package/dist/toast/Agent.js +7 -0
  386. package/dist/toast/Toast.d.ts +24 -0
  387. package/dist/toast/Toast.js +43 -0
  388. package/dist/toast/imperative.d.ts +18 -0
  389. package/dist/toast/imperative.js +35 -0
  390. package/dist/toast/index.d.ts +15 -0
  391. package/dist/toast/index.js +13 -0
  392. package/dist/toast/index.scss +96 -0
  393. package/dist/transition/CSSTransition.d.ts +7 -0
  394. package/dist/transition/CSSTransition.js +49 -0
  395. package/dist/transition/CSSTransition.rn.d.ts +7 -0
  396. package/dist/transition/CSSTransition.rn.js +312 -0
  397. package/dist/transition/index.d.ts +43 -0
  398. package/dist/transition/index.js +156 -0
  399. package/dist/transition/index.rn.scss +0 -0
  400. package/dist/transition/index.scss +158 -0
  401. package/dist/upload/Preview.d.ts +35 -0
  402. package/dist/upload/Preview.js +41 -0
  403. package/dist/upload/PreviewVideo.d.ts +7 -0
  404. package/dist/upload/PreviewVideo.js +38 -0
  405. package/dist/upload/PreviewVideo.rn.d.ts +6 -0
  406. package/dist/upload/PreviewVideo.rn.js +24 -0
  407. package/dist/upload/chooseMedia.d.ts +26 -0
  408. package/dist/upload/chooseMedia.h5.d.ts +25 -0
  409. package/dist/upload/chooseMedia.h5.js +117 -0
  410. package/dist/upload/chooseMedia.js +55 -0
  411. package/dist/upload/index.d.ts +37 -0
  412. package/dist/upload/index.js +167 -0
  413. package/dist/upload/index.scss +247 -0
  414. package/dist/use/index.d.ts +20 -0
  415. package/dist/use/index.js +20 -0
  416. package/dist/use/useAutoplay.d.ts +1 -0
  417. package/dist/use/useAutoplay.js +34 -0
  418. package/dist/use/useBem.d.ts +9 -0
  419. package/dist/use/useBem.js +52 -0
  420. package/dist/use/useBrush.d.ts +23 -0
  421. package/dist/use/useBrush.js +61 -0
  422. package/dist/use/useControllableValue.d.ts +12 -0
  423. package/dist/use/useControllableValue.js +59 -0
  424. package/dist/use/useEvent.d.ts +4 -0
  425. package/dist/use/useEvent.js +12 -0
  426. package/dist/use/useForceRender.d.ts +5 -0
  427. package/dist/use/useForceRender.js +8 -0
  428. package/dist/use/useIndexableMap.d.ts +21 -0
  429. package/dist/use/useIndexableMap.js +65 -0
  430. package/dist/use/useInertRef.d.ts +7 -0
  431. package/dist/use/useInertRef.js +15 -0
  432. package/dist/use/useInternalSelect.d.ts +42 -0
  433. package/dist/use/useInternalSelect.js +64 -0
  434. package/dist/use/useLayoutUpdateEffect.d.ts +5 -0
  435. package/dist/use/useLayoutUpdateEffect.js +18 -0
  436. package/dist/use/usePropRef.d.ts +5 -0
  437. package/dist/use/usePropRef.js +9 -0
  438. package/dist/use/useResize.d.ts +2 -0
  439. package/dist/use/useResize.js +14 -0
  440. package/dist/use/useResizeObserver.d.ts +5 -0
  441. package/dist/use/useResizeObserver.js +38 -0
  442. package/dist/use/useSelect.d.ts +15 -0
  443. package/dist/use/useSelect.js +56 -0
  444. package/dist/use/useSelectorId.d.ts +1 -0
  445. package/dist/use/useSelectorId.js +5 -0
  446. package/dist/use/useSetTimeout.d.ts +10 -0
  447. package/dist/use/useSetTimeout.js +34 -0
  448. package/dist/use/useStopMovePropagate.d.ts +5 -0
  449. package/dist/use/useStopMovePropagate.js +28 -0
  450. package/dist/use/useThrottle.d.ts +8 -0
  451. package/dist/use/useThrottle.js +11 -0
  452. package/dist/use/useUpdateEffect.d.ts +5 -0
  453. package/dist/use/useUpdateEffect.js +18 -0
  454. package/dist/use/useUpdateWatchSync.d.ts +5 -0
  455. package/dist/use/useUpdateWatchSync.js +18 -0
  456. package/dist/use/useWatchStateSync.d.ts +4 -0
  457. package/dist/use/useWatchStateSync.js +18 -0
  458. package/dist/utils/animate.d.ts +28 -0
  459. package/dist/utils/animate.js +81 -0
  460. package/dist/utils/createPubSub.d.ts +8 -0
  461. package/dist/utils/createPubSub.js +53 -0
  462. package/dist/utils/date.d.ts +13 -0
  463. package/dist/utils/date.js +87 -0
  464. package/dist/utils/dom.d.ts +149 -0
  465. package/dist/utils/dom.js +297 -0
  466. package/dist/utils/file.d.ts +18 -0
  467. package/dist/utils/file.js +57 -0
  468. package/dist/utils/imperative.d.ts +20 -0
  469. package/dist/utils/imperative.js +37 -0
  470. package/dist/utils/index.d.ts +7 -0
  471. package/dist/utils/index.js +7 -0
  472. package/dist/utils/is.d.ts +16 -0
  473. package/dist/utils/is.js +57 -0
  474. package/dist/utils/measure.d.ts +8 -0
  475. package/dist/utils/measure.js +13 -0
  476. package/dist/utils/measure.rn.d.ts +8 -0
  477. package/dist/utils/measure.rn.js +15 -0
  478. package/dist/utils/platform.android.d.ts +2 -0
  479. package/dist/utils/platform.android.js +2 -0
  480. package/dist/utils/platform.d.ts +2 -0
  481. package/dist/utils/platform.ios.d.ts +2 -0
  482. package/dist/utils/platform.ios.js +2 -0
  483. package/dist/utils/platform.js +2 -0
  484. package/dist/utils/style.d.ts +10 -0
  485. package/dist/utils/style.js +34 -0
  486. package/dist/utils/utils.d.ts +199 -0
  487. package/dist/utils/utils.js +639 -0
  488. package/package.json +30 -0
@@ -0,0 +1,15 @@
1
+ /**
2
+ * useRef 的惰性初始化版本,
3
+ * 接受一个函数,在函数中计算并返回初始的 MutableRefObject,
4
+ * 此函数只在初始渲染时被调用。
5
+ */
6
+ import { useRef } from 'react';
7
+ export function useInertRef(callback) {
8
+ const ref = useRef();
9
+ const initialized = useRef(false);
10
+ if (!initialized.current) {
11
+ ref.current = callback();
12
+ initialized.current = true;
13
+ }
14
+ return ref;
15
+ }
@@ -0,0 +1,42 @@
1
+ import { ReactNode } from 'react';
2
+ import { ITouchEvent } from '@tarojs/components';
3
+ import { BaseProps } from '../base';
4
+ type IconType = 'square' | 'circle' | 'record';
5
+ export interface InternalSelectContextValue {
6
+ disabled?: boolean;
7
+ readOnly?: boolean;
8
+ size?: number;
9
+ type?: IconType;
10
+ icon?: (checked: boolean) => ReactNode;
11
+ checkedColor?: string;
12
+ }
13
+ export declare const InternalSelectContext: import("react").Context<InternalSelectContextValue>;
14
+ export interface InternalCheckProps extends Omit<BaseProps, 'children'> {
15
+ children?: ReactNode | ((checked: boolean, toggle: () => void) => ReactNode);
16
+ checked?: boolean;
17
+ defaultChecked?: boolean;
18
+ value?: any;
19
+ onChange?: (checked: boolean, value: any) => void;
20
+ disabled?: boolean;
21
+ readOnly?: boolean;
22
+ size?: number;
23
+ type?: IconType;
24
+ icon?: (checked: boolean) => ReactNode;
25
+ checkedColor?: string;
26
+ onClick?: (event: ITouchEvent) => void;
27
+ }
28
+ export declare const useInternalSelect: <T extends "multiple" | "single">(checkType: T, checkClass: string, props: InternalCheckProps) => import("react/jsx-runtime").JSX.Element;
29
+ export interface InternalCheckGroupProps<T extends 'single' | 'multiple', V = T extends 'single' ? any : any[]> {
30
+ children?: ReactNode;
31
+ value?: V;
32
+ defaultValue?: V;
33
+ onChange?: (value: V) => void;
34
+ disabled?: boolean;
35
+ readOnly?: boolean;
36
+ size?: number;
37
+ type?: IconType;
38
+ icon?: (checked: boolean) => ReactNode;
39
+ checkedColor?: string;
40
+ }
41
+ export declare const useInternalCheckGroup: <T extends "multiple" | "single">(checkType: T, props: InternalCheckGroupProps<T, T extends "single" ? any : any[]>) => import("react/jsx-runtime").JSX.Element;
42
+ export {};
@@ -0,0 +1,64 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { createContext, useContext, useMemo } from 'react';
3
+ import classNames from 'classnames';
4
+ import { Icon } from '../icon';
5
+ import { isFunction, isNullish } from '../utils';
6
+ import { SelectContext, useSelect, useSelectGroup } from './useSelect';
7
+ import { CustomWrapper, View } from '@tarojs/components';
8
+ import { useBem } from './useBem';
9
+ import { useEvent } from './useEvent';
10
+ export const InternalSelectContext = createContext(null);
11
+ const mapTypeIcon = {
12
+ square: ['square', 'check-square-fill'],
13
+ circle: ['circle', 'check-circle-fill'],
14
+ record: ['circle', 'record-circle'],
15
+ };
16
+ export const useInternalSelect = (checkType, checkClass, props) => {
17
+ const { className, style, children, checked, defaultChecked, value, onChange, disabled, readOnly, size, type, icon, checkedColor, onClick, ...restProps } = props;
18
+ const [bem] = useBem(checkClass);
19
+ const [isChecked, toggle] = useSelect(checkType, {
20
+ defaultValue: defaultChecked,
21
+ value: checked,
22
+ trigger: onChange,
23
+ initialValue: false,
24
+ }, value);
25
+ if (isFunction(children)) {
26
+ return (_jsx(InternalSelectContext.Provider, { value: null, children: children(isChecked, toggle) }));
27
+ }
28
+ const internalContext = useContext(InternalSelectContext);
29
+ const mergedDisabled = disabled ?? internalContext?.disabled;
30
+ const mergedReadOnly = readOnly ?? internalContext?.readOnly;
31
+ const mergedSize = size ?? internalContext?.size;
32
+ const mergedType = type ??
33
+ internalContext?.type ??
34
+ (checkType === 'single' ? 'record' : 'square');
35
+ const mergedIcon = icon ?? internalContext?.icon;
36
+ const mergedCheckedColor = checkedColor ?? internalContext?.checkedColor;
37
+ const handleCheckboxClick = useEvent((event) => {
38
+ if (!mergedDisabled && !mergedReadOnly) {
39
+ toggle();
40
+ }
41
+ onClick?.(event);
42
+ });
43
+ return (_jsx(CustomWrapper, { children: _jsx(InternalSelectContext.Provider, { value: null, children: _jsxs(View, { ...restProps, className: classNames(bem.b(), bem.m('checked', isChecked), bem.m('disabled', mergedDisabled), bem.m('readonly', mergedReadOnly), className), style: style, onClick: handleCheckboxClick, children: [mergedIcon ? (mergedIcon(isChecked)) : (_jsx(Icon, { className: classNames(bem.e('icon'), bem.em('icon', 'checked', isChecked), bem.em('icon', 'disabled', mergedDisabled)), size: mergedSize, color: isChecked && !mergedDisabled ? mergedCheckedColor : undefined, name: mapTypeIcon[mergedType][isChecked ? 1 : 0] })), !isNullish(children) && (_jsx(View, { className: classNames(bem.e('label'), bem.em('label', 'disabled', mergedDisabled)), children: children }))] }) }) }));
44
+ };
45
+ export const useInternalCheckGroup = (checkType, props) => {
46
+ const { children, value, defaultValue, onChange, disabled, readOnly, size, type, icon, checkedColor, } = props;
47
+ const context = useSelectGroup({
48
+ value,
49
+ defaultValue,
50
+ trigger: onChange,
51
+ initialValue: () => (checkType === 'single' ? '' : []),
52
+ });
53
+ const internalContext = useMemo(() => {
54
+ return {
55
+ disabled,
56
+ readOnly,
57
+ size,
58
+ type,
59
+ icon,
60
+ checkedColor,
61
+ };
62
+ }, [disabled, readOnly, size, type, icon, checkedColor]);
63
+ return (_jsx(InternalSelectContext.Provider, { value: internalContext, children: _jsx(SelectContext.Provider, { value: context, children: children }) }));
64
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 用法同 useLayoutEffect,但只在 update 阶段调用
3
+ */
4
+ import { useLayoutEffect } from 'react';
5
+ export declare const useLayoutUpdateEffect: typeof useLayoutEffect;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * 用法同 useLayoutEffect,但只在 update 阶段调用
3
+ */
4
+ import { useLayoutEffect, useRef } from 'react';
5
+ export const useLayoutUpdateEffect = (callback, deps) => {
6
+ const firstMount = useRef(false);
7
+ useLayoutEffect(() => {
8
+ if (firstMount.current) {
9
+ return callback();
10
+ }
11
+ }, deps);
12
+ useLayoutEffect(() => {
13
+ firstMount.current = true;
14
+ return () => {
15
+ firstMount.current = false;
16
+ };
17
+ }, []);
18
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 通过 useRef 保存最新的 prop,以便可以在 useCallback 函数里面使用。
3
+ */
4
+ /// <reference types="react" />
5
+ export declare function usePropRef<T>(prop: T): import("react").MutableRefObject<T>;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 通过 useRef 保存最新的 prop,以便可以在 useCallback 函数里面使用。
3
+ */
4
+ import { useRef } from 'react';
5
+ export function usePropRef(prop) {
6
+ const ref = useRef(prop);
7
+ ref.current = prop;
8
+ return ref;
9
+ }
@@ -0,0 +1,2 @@
1
+ import { DebounceOptions } from '../utils';
2
+ export declare function useResize(func: (...args: unknown[]) => unknown, wait: number, options?: DebounceOptions): void;
@@ -0,0 +1,14 @@
1
+ import { useEffect } from 'react';
2
+ import Taro from '@tarojs/taro';
3
+ import { throttle } from '../utils';
4
+ import { useEvent } from './useEvent';
5
+ export function useResize(func, wait, options) {
6
+ const fn = useEvent(func);
7
+ useEffect(() => {
8
+ const handler = throttle(fn, wait, options);
9
+ Taro.onWindowResize(handler);
10
+ return () => {
11
+ Taro.offWindowResize(handler);
12
+ };
13
+ }, []);
14
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 用于解决组件不显示时无法操作节点滚动或尺寸相关接口的问题
3
+ */
4
+ /// <reference types="react" />
5
+ export declare function useResizeObserver(callback: (...args: unknown[]) => unknown): readonly [import("react").MemoExoticComponent<() => import("react").DetailedReactHTMLElement<import("react").HTMLAttributes<any>, any>>];
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 用于解决组件不显示时无法操作节点滚动或尺寸相关接口的问题
3
+ */
4
+ import { useMemo, useRef, createElement, memo } from 'react';
5
+ import { useEvent } from './useEvent';
6
+ export function useResizeObserver(callback) {
7
+ const resizeObserver = useRef();
8
+ const memoCallback = useEvent(() => {
9
+ callback();
10
+ });
11
+ const observe = useEvent((node) => {
12
+ resizeObserver.current?.disconnect();
13
+ if (node) {
14
+ resizeObserver.current = new ResizeObserver((entries) => {
15
+ for (const entry of entries) {
16
+ if (entry.contentRect.width > 0) {
17
+ memoCallback();
18
+ }
19
+ }
20
+ });
21
+ resizeObserver.current.observe(node);
22
+ }
23
+ });
24
+ const ResizeSpy = useMemo(() => memo(() => createElement('div', {
25
+ style: {
26
+ position: 'fixed',
27
+ zIndex: -1,
28
+ width: 1,
29
+ height: 0,
30
+ pointerEvents: 'none',
31
+ opacity: 0,
32
+ },
33
+ ref: (node) => {
34
+ observe(node);
35
+ },
36
+ })), []);
37
+ return [ResizeSpy];
38
+ }
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import { UseControllableValueOptions } from './useControllableValue';
3
+ export interface SelectContextValue<V> {
4
+ value: V;
5
+ onChange: (value: V) => void;
6
+ }
7
+ export interface UseSelectOptions extends UseControllableValueOptions<boolean> {
8
+ clearable?: boolean;
9
+ }
10
+ export declare const SelectContext: import("react").Context<SelectContextValue<any>>;
11
+ export declare function useSelect<T extends 'single' | 'multiple', V>(type: T, options: UseSelectOptions, value: V): readonly [boolean, () => void];
12
+ export declare function useSelectGroup<V>(options: UseControllableValueOptions<V>): {
13
+ value: V;
14
+ onChange: (val: V) => void;
15
+ };
@@ -0,0 +1,56 @@
1
+ import { createContext, useCallback, useContext, useEffect, useMemo, } from 'react';
2
+ import { useControllableValue, } from './useControllableValue';
3
+ import { useEvent } from './useEvent';
4
+ export const SelectContext = createContext(null);
5
+ export function useSelect(type, options, value) {
6
+ const context = useContext(SelectContext);
7
+ const { clearable } = options;
8
+ const [innerSelected, setInnerSelected] = useControllableValue(options);
9
+ useEffect(() => {
10
+ if (context) {
11
+ setInnerSelected(type === 'single'
12
+ ? context.value === value
13
+ : context.value.includes(value), value);
14
+ }
15
+ }, [context]);
16
+ const toggle = useEvent(() => {
17
+ if (type === 'single' && innerSelected && !clearable) {
18
+ return;
19
+ }
20
+ if (context) {
21
+ let nextValue;
22
+ if (type === 'single') {
23
+ if (innerSelected) {
24
+ nextValue = undefined;
25
+ }
26
+ else {
27
+ nextValue = value;
28
+ }
29
+ }
30
+ else {
31
+ if (innerSelected) {
32
+ nextValue = context.value.filter((item) => item !== value);
33
+ }
34
+ else {
35
+ nextValue = context.value.concat(value);
36
+ }
37
+ }
38
+ context.onChange(nextValue);
39
+ }
40
+ else {
41
+ setInnerSelected(type === 'single' ? true : !innerSelected, value);
42
+ }
43
+ });
44
+ return [innerSelected, toggle];
45
+ }
46
+ export function useSelectGroup(options) {
47
+ const [innerValue, setInnerValue] = useControllableValue(options);
48
+ const handleChange = useCallback((val) => {
49
+ setInnerValue(val);
50
+ }, []);
51
+ const context = useMemo(() => ({
52
+ value: innerValue,
53
+ onChange: handleChange,
54
+ }), [innerValue]);
55
+ return context;
56
+ }
@@ -0,0 +1 @@
1
+ export declare function useSelectorId(perfix?: string): string;
@@ -0,0 +1,5 @@
1
+ import { useMemo } from 'react';
2
+ import { uniqid } from '../utils';
3
+ export function useSelectorId(perfix) {
4
+ return useMemo(() => uniqid(perfix), []);
5
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 使在函数组件中更好使用 setTimeout,可以重置或清除定时器
3
+ */
4
+ import { AnyFunction } from '../base';
5
+ interface UseSetTimeoutOptions {
6
+ canDelay?: AnyFunction;
7
+ tailing?: boolean;
8
+ }
9
+ export declare function useSetTimeout(callback: AnyFunction, duration: number, options?: UseSetTimeoutOptions): readonly [(...args: any[]) => void, () => void, () => boolean];
10
+ export {};
@@ -0,0 +1,34 @@
1
+ /**
2
+ * 使在函数组件中更好使用 setTimeout,可以重置或清除定时器
3
+ */
4
+ import { useEffect, useRef } from 'react';
5
+ import { useEvent } from './useEvent';
6
+ export function useSetTimeout(callback, duration, options = {}) {
7
+ const { canDelay = () => true, tailing } = options;
8
+ const timer = useRef(0);
9
+ const func = useEvent(callback);
10
+ const canDelayCallback = useEvent(canDelay);
11
+ const cancel = useEvent(() => {
12
+ if (timer.current) {
13
+ clearTimeout(timer.current);
14
+ timer.current = 0;
15
+ if (tailing) {
16
+ func();
17
+ }
18
+ }
19
+ });
20
+ const doSomethingLater = useEvent((...args) => {
21
+ cancel();
22
+ if (canDelayCallback()) {
23
+ timer.current = setTimeout(() => {
24
+ timer.current = 0;
25
+ func(...args);
26
+ }, duration);
27
+ }
28
+ });
29
+ const isWaitingToDoSomething = useEvent(() => {
30
+ return !!timer.current;
31
+ });
32
+ useEffect(() => cancel, []);
33
+ return [doSomethingLater, cancel, isWaitingToDoSomething];
34
+ }
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export declare function useStopMovePropagate<T>(ref: React.RefObject<T>, immediate?: boolean): {
3
+ readonly on: () => void;
4
+ readonly off: () => void;
5
+ };
@@ -0,0 +1,28 @@
1
+ import { useCallback, useEffect } from 'react';
2
+ export function useStopMovePropagate(ref, immediate) {
3
+ const handler = useCallback((event) => {
4
+ if (immediate) {
5
+ event.stopImmediatePropagation();
6
+ }
7
+ else {
8
+ event.stopPropagation();
9
+ }
10
+ }, []);
11
+ const on = useCallback(() => {
12
+ if (ref.current instanceof EventTarget) {
13
+ ref.current.addEventListener('touchmove', handler, {
14
+ passive: false,
15
+ });
16
+ }
17
+ }, []);
18
+ const off = useCallback(() => {
19
+ if (ref.current instanceof EventTarget) {
20
+ ref.current.removeEventListener('touchmove', handler);
21
+ }
22
+ }, []);
23
+ useEffect(() => {
24
+ on();
25
+ return off;
26
+ }, []);
27
+ return { on, off };
28
+ }
@@ -0,0 +1,8 @@
1
+ import { DebounceOptions } from '../utils';
2
+ import { AnyFunction } from '../base';
3
+ export declare function useThrottle(callback: AnyFunction, wait: number, options?: DebounceOptions): {
4
+ (...args: any[]): any;
5
+ cancel: () => void;
6
+ flush: () => any;
7
+ pending: () => boolean;
8
+ };
@@ -0,0 +1,11 @@
1
+ import { useEffect, useMemo } from 'react';
2
+ import { throttle } from '../utils';
3
+ import { useEvent } from './useEvent';
4
+ export function useThrottle(callback, wait, options) {
5
+ const cb = useEvent(callback);
6
+ const handler = useMemo(() => {
7
+ return throttle(cb, wait, options);
8
+ }, []);
9
+ useEffect(() => () => handler.cancel(), []);
10
+ return handler;
11
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 用法同 useEffect update 阶段调用
3
+ */
4
+ import { useEffect } from 'react';
5
+ export declare const useUpdateEffect: typeof useEffect;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * 用法同 useEffect update 阶段调用
3
+ */
4
+ import { useEffect, useRef } from 'react';
5
+ export const useUpdateEffect = (callback, deps) => {
6
+ const firstMount = useRef(false);
7
+ useEffect(() => {
8
+ if (firstMount.current) {
9
+ return callback();
10
+ }
11
+ }, deps);
12
+ useEffect(() => {
13
+ firstMount.current = true;
14
+ return () => {
15
+ firstMount.current = false;
16
+ };
17
+ }, []);
18
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * update 阶段的同步监听
3
+ */
4
+ import { DependencyList } from 'react';
5
+ export declare function useUpdateWatchSync(factory: () => void, deps: DependencyList | undefined): void;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * update 阶段的同步监听
3
+ */
4
+ import { useLayoutEffect, useMemo, useRef } from 'react';
5
+ export function useUpdateWatchSync(factory, deps) {
6
+ const firstMount = useRef(false);
7
+ useLayoutEffect(() => {
8
+ firstMount.current = true;
9
+ return () => {
10
+ firstMount.current = false;
11
+ };
12
+ }, []);
13
+ return useMemo(() => {
14
+ if (firstMount.current) {
15
+ factory();
16
+ }
17
+ }, deps);
18
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * 扩展 useState 的功能,可以同步监听 value 以便更新自身的值
3
+ */
4
+ export declare function useWatchStateSync<T>(value: T): readonly [T, (value: T) => void];
@@ -0,0 +1,18 @@
1
+ /**
2
+ * 扩展 useState 的功能,可以同步监听 value 以便更新自身的值
3
+ */
4
+ import { useMemo, useRef } from 'react';
5
+ import { useForceRender } from './useForceRender';
6
+ import { useEvent } from './useEvent';
7
+ export function useWatchStateSync(value) {
8
+ const forceRender = useForceRender();
9
+ const stateRef = useRef(value);
10
+ useMemo(() => {
11
+ stateRef.current = value;
12
+ }, [value]);
13
+ const setState = useEvent((value) => {
14
+ stateRef.current = value;
15
+ forceRender();
16
+ });
17
+ return [stateRef.current, setState];
18
+ }
@@ -0,0 +1,28 @@
1
+ export declare function easeInQuad(k: number): number;
2
+ export declare function easeOutQuad(k: number): number;
3
+ export declare function easeInOutQuad(k: number): number;
4
+ export declare function easeOutSine(k: number): number;
5
+ export declare function easeOutCubic(k: number): number;
6
+ export interface AnimateOptions {
7
+ from: number;
8
+ to: number;
9
+ duration?: number;
10
+ step?: (value: number) => void;
11
+ finish?: (value: number) => void;
12
+ easing?: (k: number) => number;
13
+ }
14
+ export interface AnimateStop {
15
+ (): void;
16
+ finish(): void;
17
+ }
18
+ export declare function animate({ from, to, duration, step, finish, easing, }: AnimateOptions): AnimateStop;
19
+ interface Point {
20
+ x: number;
21
+ y: number;
22
+ }
23
+ export declare function getDistanceByTowPoints(p1: Point, p2: Point): number;
24
+ export declare function getAngle360(p1: Point, p2: Point): number;
25
+ export type Direction = 'right' | 'left' | 'up' | 'down';
26
+ export declare function getDirectionByAngle(angle: number): Direction;
27
+ export declare function getDirectionByTwoPoints(p1: Point, p2: Point): Direction;
28
+ export {};
@@ -0,0 +1,81 @@
1
+ import { minmax, noop } from './utils';
2
+ export function easeInQuad(k) {
3
+ return k * k;
4
+ }
5
+ export function easeOutQuad(k) {
6
+ return k * (2 - k);
7
+ }
8
+ export function easeInOutQuad(k) {
9
+ if ((k *= 2) < 1)
10
+ return 0.5 * k * k;
11
+ return -0.5 * (--k * (k - 2) - 1);
12
+ }
13
+ export function easeOutSine(k) {
14
+ return Math.sin((k * Math.PI) / 2);
15
+ }
16
+ export function easeOutCubic(k) {
17
+ return --k * k * k + 1;
18
+ }
19
+ export function animate({ from = 0, to = 0, duration = 0, step = noop, finish, easing = easeOutQuad, }) {
20
+ const total = to - from;
21
+ const begin = Date.now();
22
+ let progress = 0;
23
+ let over = false;
24
+ const stop = () => {
25
+ over = true;
26
+ };
27
+ stop.finish = () => {
28
+ stop();
29
+ step(to);
30
+ finish?.(to);
31
+ };
32
+ const stepCallback = () => {
33
+ if (over) {
34
+ return;
35
+ }
36
+ progress = minmax((Date.now() - begin) / duration, 0, 1);
37
+ const value = easing(progress) * total + from;
38
+ step(value);
39
+ if (progress === 1) {
40
+ stop();
41
+ return finish?.(value);
42
+ }
43
+ requestAnimationFrame(stepCallback);
44
+ };
45
+ if (duration === 0) {
46
+ step(to);
47
+ finish?.(to);
48
+ }
49
+ else {
50
+ requestAnimationFrame(stepCallback);
51
+ }
52
+ return stop;
53
+ }
54
+ // 计算两点之间的距离
55
+ export function getDistanceByTowPoints(p1, p2) {
56
+ return Math.sqrt((p1.x - p2.x) ** 2 + (p1.y - p2.y) ** 2);
57
+ }
58
+ // 根据起始点和结束点坐标获取角度: 以3点钟方向为0度,逆时针递增
59
+ export function getAngle360(p1, p2) {
60
+ const angle = 90 - (Math.atan2(p1.y - p2.y, p2.x - p1.x) / Math.PI) * 180;
61
+ return angle < 0 ? angle + 360 : angle;
62
+ }
63
+ export function getDirectionByAngle(angle) {
64
+ if (angle <= 45 || angle >= 315) {
65
+ return 'up';
66
+ }
67
+ else if (angle > 45 && angle < 135) {
68
+ return 'right';
69
+ }
70
+ else if (angle >= 135 && angle <= 225) {
71
+ return 'down';
72
+ }
73
+ else {
74
+ // angle > 225 && angle < 315
75
+ return 'left';
76
+ }
77
+ }
78
+ // 根据起始点和结束点获取方向(上下左右)
79
+ export function getDirectionByTwoPoints(p1, p2) {
80
+ return getDirectionByAngle(getAngle360(p1, p2));
81
+ }
@@ -0,0 +1,8 @@
1
+ export interface PubSub {
2
+ on(type: string, handler: (...args: unknown[]) => unknown): void;
3
+ off(type?: string, handler?: (...args: unknown[]) => unknown): void;
4
+ emit(type: string, ...payload: any[]): void;
5
+ once(type: string, handler: (...args: unknown[]) => unknown): void;
6
+ }
7
+ export declare function createPubSub(): PubSub;
8
+ export declare const pubSub: PubSub;