@mpxjs/webpack-plugin 2.10.15 → 2.10.16-beta.11

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 (274) hide show
  1. package/lib/config.js +60 -0
  2. package/lib/dependencies/AppEntryDependency.js +2 -2
  3. package/lib/dependencies/DynamicEntryDependency.js +1 -1
  4. package/lib/dependencies/ImportDependency.js +102 -0
  5. package/lib/dependencies/RecordModuleIdMapDependency.js +49 -0
  6. package/lib/dependencies/ResolveDependency.js +1 -1
  7. package/lib/{retry-runtime-module.js → dependencies/RetryRuntimeModule.js} +1 -1
  8. package/lib/file-loader.js +13 -3
  9. package/lib/helpers.js +2 -0
  10. package/lib/index.js +51 -25
  11. package/lib/json-compiler/helper.js +72 -2
  12. package/lib/json-compiler/index.js +16 -56
  13. package/lib/json-compiler/plugin.js +2 -2
  14. package/lib/loader.js +10 -4
  15. package/lib/native-loader.js +6 -3
  16. package/lib/platform/json/wx/index.js +30 -29
  17. package/lib/platform/style/wx/index.js +8 -1
  18. package/lib/platform/template/wx/component-config/ad.js +5 -0
  19. package/lib/platform/template/wx/component-config/button.js +21 -5
  20. package/lib/platform/template/wx/component-config/camera.js +25 -3
  21. package/lib/platform/template/wx/component-config/canvas.js +8 -1
  22. package/lib/platform/template/wx/component-config/component.js +31 -33
  23. package/lib/platform/template/wx/component-config/cover-image.js +7 -2
  24. package/lib/platform/template/wx/component-config/cover-view.js +3 -1
  25. package/lib/platform/template/wx/component-config/fix-component-name.js +2 -2
  26. package/lib/platform/template/wx/component-config/form.js +27 -2
  27. package/lib/platform/template/wx/component-config/image.js +5 -0
  28. package/lib/platform/template/wx/component-config/input.js +10 -0
  29. package/lib/platform/template/wx/component-config/label.js +10 -2
  30. package/lib/platform/template/wx/component-config/map.js +11 -0
  31. package/lib/platform/template/wx/component-config/movable-area.js +4 -1
  32. package/lib/platform/template/wx/component-config/movable-view.js +17 -2
  33. package/lib/platform/template/wx/component-config/navigator.js +26 -0
  34. package/lib/platform/template/wx/component-config/picker-view.js +12 -0
  35. package/lib/platform/template/wx/component-config/picker.js +3 -1
  36. package/lib/platform/template/wx/component-config/progress.js +11 -1
  37. package/lib/platform/template/wx/component-config/rich-text.js +5 -0
  38. package/lib/platform/template/wx/component-config/scroll-view.js +12 -1
  39. package/lib/platform/template/wx/component-config/slider.js +20 -0
  40. package/lib/platform/template/wx/component-config/swiper-item.js +5 -2
  41. package/lib/platform/template/wx/component-config/swiper.js +10 -0
  42. package/lib/platform/template/wx/component-config/text.js +5 -0
  43. package/lib/platform/template/wx/component-config/textarea.js +19 -2
  44. package/lib/platform/template/wx/component-config/unsupported.js +10 -1
  45. package/lib/platform/template/wx/component-config/video.js +10 -0
  46. package/lib/platform/template/wx/index.js +21 -1
  47. package/lib/react/index.js +2 -0
  48. package/lib/react/processJSON.js +39 -71
  49. package/lib/react/processStyles.js +3 -2
  50. package/lib/react/processTemplate.js +8 -6
  51. package/lib/react/script-helper.js +6 -16
  52. package/lib/react/style-helper.js +10 -2
  53. package/lib/resolver/AddEnvPlugin.js +13 -0
  54. package/lib/resolver/AddModePlugin.js +18 -0
  55. package/lib/runtime/components/react/context.ts +13 -6
  56. package/lib/runtime/components/react/dist/context.d.ts +76 -0
  57. package/lib/runtime/components/react/dist/context.d.ts.map +1 -0
  58. package/lib/runtime/components/react/dist/context.js +1 -0
  59. package/lib/runtime/components/react/dist/event.config.d.ts +8 -0
  60. package/lib/runtime/components/react/dist/event.config.d.ts.map +1 -0
  61. package/lib/runtime/components/react/dist/getInnerListeners.d.ts +8 -0
  62. package/lib/runtime/components/react/dist/getInnerListeners.d.ts.map +1 -0
  63. package/lib/runtime/components/react/dist/mpx-async-suspense.d.ts +13 -0
  64. package/lib/runtime/components/react/dist/mpx-async-suspense.d.ts.map +1 -0
  65. package/lib/runtime/components/react/dist/mpx-button.d.ts +69 -0
  66. package/lib/runtime/components/react/dist/mpx-button.d.ts.map +1 -0
  67. package/lib/runtime/components/react/dist/mpx-camera.d.ts +27 -0
  68. package/lib/runtime/components/react/dist/mpx-camera.d.ts.map +1 -0
  69. package/lib/runtime/components/react/dist/mpx-camera.jsx +197 -0
  70. package/lib/runtime/components/react/dist/mpx-canvas/Bus.d.ts +24 -0
  71. package/lib/runtime/components/react/dist/mpx-canvas/Bus.d.ts.map +1 -0
  72. package/lib/runtime/components/react/dist/mpx-canvas/CanvasGradient.d.ts +8 -0
  73. package/lib/runtime/components/react/dist/mpx-canvas/CanvasGradient.d.ts.map +1 -0
  74. package/lib/runtime/components/react/dist/mpx-canvas/CanvasRenderingContext2D.d.ts +7 -0
  75. package/lib/runtime/components/react/dist/mpx-canvas/CanvasRenderingContext2D.d.ts.map +1 -0
  76. package/lib/runtime/components/react/dist/mpx-canvas/Image.d.ts +21 -0
  77. package/lib/runtime/components/react/dist/mpx-canvas/Image.d.ts.map +1 -0
  78. package/lib/runtime/components/react/dist/mpx-canvas/ImageData.d.ts +9 -0
  79. package/lib/runtime/components/react/dist/mpx-canvas/ImageData.d.ts.map +1 -0
  80. package/lib/runtime/components/react/dist/mpx-canvas/constructorsRegistry.d.ts +11 -0
  81. package/lib/runtime/components/react/dist/mpx-canvas/constructorsRegistry.d.ts.map +1 -0
  82. package/lib/runtime/components/react/dist/mpx-canvas/html.d.ts +3 -0
  83. package/lib/runtime/components/react/dist/mpx-canvas/html.d.ts.map +1 -0
  84. package/lib/runtime/components/react/dist/mpx-canvas/index.d.ts +33 -0
  85. package/lib/runtime/components/react/dist/mpx-canvas/index.d.ts.map +1 -0
  86. package/lib/runtime/components/react/dist/mpx-canvas/utils.d.ts +53 -0
  87. package/lib/runtime/components/react/dist/mpx-canvas/utils.d.ts.map +1 -0
  88. package/lib/runtime/components/react/dist/mpx-checkbox-group.d.ts +21 -0
  89. package/lib/runtime/components/react/dist/mpx-checkbox-group.d.ts.map +1 -0
  90. package/lib/runtime/components/react/dist/mpx-checkbox.d.ts +33 -0
  91. package/lib/runtime/components/react/dist/mpx-checkbox.d.ts.map +1 -0
  92. package/lib/runtime/components/react/dist/mpx-form.d.ts +28 -0
  93. package/lib/runtime/components/react/dist/mpx-form.d.ts.map +1 -0
  94. package/lib/runtime/components/react/dist/mpx-icon/index.d.ts +19 -0
  95. package/lib/runtime/components/react/dist/mpx-icon/index.d.ts.map +1 -0
  96. package/lib/runtime/components/react/dist/mpx-image.d.ts +22 -0
  97. package/lib/runtime/components/react/dist/mpx-image.d.ts.map +1 -0
  98. package/lib/runtime/components/react/dist/mpx-image.jsx +81 -37
  99. package/lib/runtime/components/react/dist/mpx-inline-text.d.ts +8 -0
  100. package/lib/runtime/components/react/dist/mpx-inline-text.d.ts.map +1 -0
  101. package/lib/runtime/components/react/dist/mpx-input.d.ts +51 -0
  102. package/lib/runtime/components/react/dist/mpx-input.d.ts.map +1 -0
  103. package/lib/runtime/components/react/dist/mpx-input.jsx +40 -12
  104. package/lib/runtime/components/react/dist/mpx-keyboard-avoiding-view.d.ts +13 -0
  105. package/lib/runtime/components/react/dist/mpx-keyboard-avoiding-view.d.ts.map +1 -0
  106. package/lib/runtime/components/react/dist/mpx-keyboard-avoiding-view.jsx +61 -50
  107. package/lib/runtime/components/react/dist/mpx-label.d.ts +21 -0
  108. package/lib/runtime/components/react/dist/mpx-label.d.ts.map +1 -0
  109. package/lib/runtime/components/react/dist/mpx-movable-area.d.ts +21 -0
  110. package/lib/runtime/components/react/dist/mpx-movable-area.d.ts.map +1 -0
  111. package/lib/runtime/components/react/dist/mpx-movable-view.d.ts +66 -0
  112. package/lib/runtime/components/react/dist/mpx-movable-view.d.ts.map +1 -0
  113. package/lib/runtime/components/react/dist/mpx-nav.d.ts +9 -0
  114. package/lib/runtime/components/react/dist/mpx-nav.d.ts.map +1 -0
  115. package/lib/runtime/components/react/dist/mpx-nav.jsx +132 -0
  116. package/lib/runtime/components/react/dist/mpx-navigator.d.ts +10 -0
  117. package/lib/runtime/components/react/dist/mpx-navigator.d.ts.map +1 -0
  118. package/lib/runtime/components/react/dist/mpx-picker/date.d.ts +7 -0
  119. package/lib/runtime/components/react/dist/mpx-picker/date.d.ts.map +1 -0
  120. package/lib/runtime/components/react/dist/mpx-picker/dateData.d.ts +8 -0
  121. package/lib/runtime/components/react/dist/mpx-picker/dateData.d.ts.map +1 -0
  122. package/lib/runtime/components/react/dist/mpx-picker/index.d.ts +7 -0
  123. package/lib/runtime/components/react/dist/mpx-picker/index.d.ts.map +1 -0
  124. package/lib/runtime/components/react/dist/mpx-picker/multiSelector.d.ts +7 -0
  125. package/lib/runtime/components/react/dist/mpx-picker/multiSelector.d.ts.map +1 -0
  126. package/lib/runtime/components/react/dist/mpx-picker/region.d.ts +7 -0
  127. package/lib/runtime/components/react/dist/mpx-picker/region.d.ts.map +1 -0
  128. package/lib/runtime/components/react/dist/mpx-picker/regionData.d.ts +3 -0
  129. package/lib/runtime/components/react/dist/mpx-picker/regionData.d.ts.map +1 -0
  130. package/lib/runtime/components/react/dist/mpx-picker/selector.d.ts +7 -0
  131. package/lib/runtime/components/react/dist/mpx-picker/selector.d.ts.map +1 -0
  132. package/lib/runtime/components/react/dist/mpx-picker/time.d.ts +7 -0
  133. package/lib/runtime/components/react/dist/mpx-picker/time.d.ts.map +1 -0
  134. package/lib/runtime/components/react/dist/mpx-picker/type.d.ts +107 -0
  135. package/lib/runtime/components/react/dist/mpx-picker/type.d.ts.map +1 -0
  136. package/lib/runtime/components/react/dist/mpx-picker-view/index.d.ts +33 -0
  137. package/lib/runtime/components/react/dist/mpx-picker-view/index.d.ts.map +1 -0
  138. package/lib/runtime/components/react/dist/mpx-picker-view/index.jsx +4 -3
  139. package/lib/runtime/components/react/dist/mpx-picker-view/pickerVIewContext.d.ts +9 -0
  140. package/lib/runtime/components/react/dist/mpx-picker-view/pickerVIewContext.d.ts.map +1 -0
  141. package/lib/runtime/components/react/dist/mpx-picker-view-column/index.d.ts +24 -0
  142. package/lib/runtime/components/react/dist/mpx-picker-view-column/index.d.ts.map +1 -0
  143. package/lib/runtime/components/react/dist/mpx-picker-view-column/index.jsx +12 -18
  144. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewColumnItem.d.ts +15 -0
  145. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewColumnItem.d.ts.map +1 -0
  146. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewColumnItem.jsx +8 -11
  147. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewColumnItemLite.d.ts +14 -0
  148. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewColumnItemLite.d.ts.map +1 -0
  149. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewColumnItemLite.jsx +20 -0
  150. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewFaces.d.ts +17 -0
  151. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewFaces.d.ts.map +1 -0
  152. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewIndicator.d.ts +13 -0
  153. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewIndicator.d.ts.map +1 -0
  154. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewMask.d.ts +12 -0
  155. package/lib/runtime/components/react/dist/mpx-picker-view-column/pickerViewMask.d.ts.map +1 -0
  156. package/lib/runtime/components/react/dist/mpx-popup/index.d.ts +23 -0
  157. package/lib/runtime/components/react/dist/mpx-popup/index.d.ts.map +1 -0
  158. package/lib/runtime/components/react/dist/mpx-popup/popupBase.d.ts +17 -0
  159. package/lib/runtime/components/react/dist/mpx-popup/popupBase.d.ts.map +1 -0
  160. package/lib/runtime/components/react/dist/mpx-portal/index.d.ts +16 -0
  161. package/lib/runtime/components/react/dist/mpx-portal/index.d.ts.map +1 -0
  162. package/lib/runtime/components/react/dist/mpx-portal/index.jsx +5 -1
  163. package/lib/runtime/components/react/dist/mpx-portal/portal-host.d.ts +30 -0
  164. package/lib/runtime/components/react/dist/mpx-portal/portal-host.d.ts.map +1 -0
  165. package/lib/runtime/components/react/dist/mpx-portal/portal-manager.d.ts +10 -0
  166. package/lib/runtime/components/react/dist/mpx-portal/portal-manager.d.ts.map +1 -0
  167. package/lib/runtime/components/react/dist/mpx-progress.d.ts +24 -0
  168. package/lib/runtime/components/react/dist/mpx-progress.d.ts.map +1 -0
  169. package/lib/runtime/components/react/dist/mpx-progress.jsx +26 -22
  170. package/lib/runtime/components/react/dist/mpx-radio-group.d.ts +21 -0
  171. package/lib/runtime/components/react/dist/mpx-radio-group.d.ts.map +1 -0
  172. package/lib/runtime/components/react/dist/mpx-radio.d.ts +27 -0
  173. package/lib/runtime/components/react/dist/mpx-radio.d.ts.map +1 -0
  174. package/lib/runtime/components/react/dist/mpx-rich-text/html.d.ts +2 -0
  175. package/lib/runtime/components/react/dist/mpx-rich-text/html.d.ts.map +1 -0
  176. package/lib/runtime/components/react/dist/mpx-rich-text/index.d.ts +25 -0
  177. package/lib/runtime/components/react/dist/mpx-rich-text/index.d.ts.map +1 -0
  178. package/lib/runtime/components/react/dist/mpx-root-portal.d.ts +15 -0
  179. package/lib/runtime/components/react/dist/mpx-root-portal.d.ts.map +1 -0
  180. package/lib/runtime/components/react/dist/mpx-scroll-view.d.ts +55 -0
  181. package/lib/runtime/components/react/dist/mpx-scroll-view.d.ts.map +1 -0
  182. package/lib/runtime/components/react/dist/mpx-scroll-view.jsx +6 -14
  183. package/lib/runtime/components/react/dist/mpx-simple-text.d.ts +8 -0
  184. package/lib/runtime/components/react/dist/mpx-simple-text.d.ts.map +1 -0
  185. package/lib/runtime/components/react/dist/mpx-simple-view.d.ts +8 -0
  186. package/lib/runtime/components/react/dist/mpx-simple-view.d.ts.map +1 -0
  187. package/lib/runtime/components/react/dist/mpx-slider.d.ts +31 -0
  188. package/lib/runtime/components/react/dist/mpx-slider.d.ts.map +1 -0
  189. package/lib/runtime/components/react/dist/mpx-slider.jsx +321 -0
  190. package/lib/runtime/components/react/dist/mpx-sticky-header.d.ts +18 -0
  191. package/lib/runtime/components/react/dist/mpx-sticky-header.d.ts.map +1 -0
  192. package/lib/runtime/components/react/dist/mpx-sticky-section.d.ts +16 -0
  193. package/lib/runtime/components/react/dist/mpx-sticky-section.d.ts.map +1 -0
  194. package/lib/runtime/components/react/dist/mpx-swiper-item.d.ts +19 -0
  195. package/lib/runtime/components/react/dist/mpx-swiper-item.d.ts.map +1 -0
  196. package/lib/runtime/components/react/dist/mpx-swiper.d.ts +53 -0
  197. package/lib/runtime/components/react/dist/mpx-swiper.d.ts.map +1 -0
  198. package/lib/runtime/components/react/dist/mpx-swiper.jsx +9 -5
  199. package/lib/runtime/components/react/dist/mpx-switch.d.ts +27 -0
  200. package/lib/runtime/components/react/dist/mpx-switch.d.ts.map +1 -0
  201. package/lib/runtime/components/react/dist/mpx-text.d.ts +23 -0
  202. package/lib/runtime/components/react/dist/mpx-text.d.ts.map +1 -0
  203. package/lib/runtime/components/react/dist/mpx-text.jsx +33 -5
  204. package/lib/runtime/components/react/dist/mpx-textarea.d.ts +8 -0
  205. package/lib/runtime/components/react/dist/mpx-textarea.d.ts.map +1 -0
  206. package/lib/runtime/components/react/dist/mpx-video.d.ts +102 -0
  207. package/lib/runtime/components/react/dist/mpx-video.d.ts.map +1 -0
  208. package/lib/runtime/components/react/dist/mpx-view.d.ts +35 -0
  209. package/lib/runtime/components/react/dist/mpx-view.d.ts.map +1 -0
  210. package/lib/runtime/components/react/dist/mpx-view.jsx +8 -11
  211. package/lib/runtime/components/react/dist/mpx-web-view.d.ts +23 -0
  212. package/lib/runtime/components/react/dist/mpx-web-view.d.ts.map +1 -0
  213. package/lib/runtime/components/react/dist/mpx-web-view.jsx +1 -1
  214. package/lib/runtime/components/react/dist/parser.d.ts +40 -0
  215. package/lib/runtime/components/react/dist/parser.d.ts.map +1 -0
  216. package/lib/runtime/components/react/dist/useAnimationHooks.d.ts +33 -0
  217. package/lib/runtime/components/react/dist/useAnimationHooks.d.ts.map +1 -0
  218. package/lib/runtime/components/react/dist/useNodesRef.d.ts +12 -0
  219. package/lib/runtime/components/react/dist/useNodesRef.d.ts.map +1 -0
  220. package/lib/runtime/components/react/dist/utils.d.ts +123 -0
  221. package/lib/runtime/components/react/dist/utils.d.ts.map +1 -0
  222. package/lib/runtime/components/react/dist/utils.jsx +16 -6
  223. package/lib/runtime/components/react/mpx-camera.tsx +275 -0
  224. package/lib/runtime/components/react/mpx-image.tsx +89 -42
  225. package/lib/runtime/components/react/mpx-input.tsx +50 -18
  226. package/lib/runtime/components/react/mpx-keyboard-avoiding-view.tsx +69 -49
  227. package/lib/runtime/components/react/mpx-nav.tsx +155 -0
  228. package/lib/runtime/components/react/mpx-picker-view/index.tsx +5 -2
  229. package/lib/runtime/components/react/mpx-picker-view-column/index.tsx +26 -21
  230. package/lib/runtime/components/react/mpx-picker-view-column/pickerViewColumnItem.tsx +8 -12
  231. package/lib/runtime/components/react/mpx-picker-view-column/pickerViewColumnItemLite.tsx +55 -0
  232. package/lib/runtime/components/react/mpx-portal/index.tsx +8 -2
  233. package/lib/runtime/components/react/mpx-progress.tsx +26 -24
  234. package/lib/runtime/components/react/mpx-scroll-view.tsx +6 -17
  235. package/lib/runtime/components/react/mpx-slider.tsx +444 -0
  236. package/lib/runtime/components/react/mpx-swiper.tsx +9 -5
  237. package/lib/runtime/components/react/mpx-text.tsx +38 -5
  238. package/lib/runtime/components/react/mpx-view.tsx +8 -11
  239. package/lib/runtime/components/react/mpx-web-view.tsx +1 -1
  240. package/lib/runtime/components/react/types/common.d.ts +19 -0
  241. package/lib/runtime/components/react/utils.tsx +15 -6
  242. package/lib/runtime/components/web/mpx-input.vue +1 -1
  243. package/lib/runtime/components/web/mpx-scroll-view.vue +7 -1
  244. package/lib/runtime/components/web/mpx-video.vue +12 -1
  245. package/lib/runtime/optionProcessor.js +3 -1
  246. package/lib/runtime/optionProcessorReact.js +4 -2
  247. package/lib/runtime/stringify.wxs +2 -2
  248. package/lib/script-setup-compiler/index.js +2 -2
  249. package/lib/style-compiler/index.js +3 -2
  250. package/lib/style-compiler/load-postcss-config.js +1 -1
  251. package/lib/style-compiler/plugins/trans-special.js +10 -2
  252. package/lib/style-compiler/strip-conditional-loader.js +178 -15
  253. package/lib/template-compiler/bind-this.js +2 -2
  254. package/lib/template-compiler/compiler.js +277 -77
  255. package/lib/template-compiler/gen-node-react.js +18 -6
  256. package/lib/template-compiler/index.js +12 -10
  257. package/lib/template-compiler/parse-exps.js +1 -1
  258. package/lib/utils/chain-assign.js +47 -0
  259. package/lib/utils/check-core-version-match.js +75 -15
  260. package/lib/utils/const.js +2 -1
  261. package/lib/utils/dom-tag-config.js +6 -6
  262. package/lib/utils/env.js +6 -1
  263. package/lib/utils/get-build-tag-component.js +35 -0
  264. package/lib/utils/pre-process-json.js +5 -0
  265. package/lib/web/index.js +2 -0
  266. package/lib/web/processJSON.js +44 -16
  267. package/lib/web/processScript.js +1 -1
  268. package/lib/web/processTemplate.js +6 -4
  269. package/lib/web/script-helper.js +19 -9
  270. package/lib/wxs/pre-loader.js +6 -6
  271. package/lib/wxss/loader.js +1 -9
  272. package/package.json +17 -5
  273. package/LICENSE +0 -433
  274. package/lib/dependencies/ImportDependencyTemplate.js +0 -50
@@ -0,0 +1,321 @@
1
+ /**
2
+ * ✔ min 最小值
3
+ * ✔ max 最大值
4
+ * ✔ step 步长
5
+ * ✔ disabled 是否禁用
6
+ * ✔ value 当前取值
7
+ * ✔ color 背景条的颜色(已废弃,使用 backgroundColor)
8
+ * ✔ selected-color 已选择的颜色(已废弃,使用 activeColor)
9
+ * ✔ activeColor 已选择的颜色
10
+ * ✔ backgroundColor 背景条的颜色
11
+ * ✔ block-size 滑块的大小
12
+ * ✔ block-color 滑块的颜色
13
+ * ✘ show-value 是否显示当前 value
14
+ * ✔ bindchange 完成一次拖动后触发的事件
15
+ * ✔ bindchanging 拖动过程中触发的事件
16
+ */
17
+ import { useRef, forwardRef, useEffect, useState, createElement, useContext, useMemo } from 'react';
18
+ import { View } from 'react-native';
19
+ import { GestureDetector, Gesture } from 'react-native-gesture-handler';
20
+ import Animated, { useSharedValue, useAnimatedStyle, runOnJS } from 'react-native-reanimated';
21
+ import { warn } from '@mpxjs/utils';
22
+ import useInnerProps, { getCustomEvent } from './getInnerListeners';
23
+ import useNodesRef from './useNodesRef';
24
+ import { useLayout, useTransformStyle, extendObject, useRunOnJSCallback } from './utils';
25
+ import Portal from './mpx-portal';
26
+ import { FormContext } from './context';
27
+ const Slider = forwardRef((props, ref) => {
28
+ const { min: rawMin = 0, max: rawMax = 100, step: rawStep = 1, disabled = false, value: rawValue, color, 'selected-color': selectedColor, activeColor = selectedColor || color || '#1aad19', backgroundColor = color || '#e9e9e9', 'block-size': rawBlockSize = 28, 'block-color': blockColor = '#ffffff', name, style = {}, 'enable-var': enableVar, 'external-var-context': externalVarContext, 'parent-font-size': parentFontSize, 'parent-width': parentWidth, 'parent-height': parentHeight } = props;
29
+ // 确保数值类型正确
30
+ const min = typeof rawMin === 'string' ? parseFloat(rawMin) : rawMin;
31
+ const max = typeof rawMax === 'string' ? parseFloat(rawMax) : rawMax;
32
+ const step = typeof rawStep === 'string' ? parseFloat(rawStep) : rawStep;
33
+ const value = rawValue !== undefined ? (typeof rawValue === 'string' ? parseFloat(rawValue) : rawValue) : undefined;
34
+ const blockSize = typeof rawBlockSize === 'string' ? parseFloat(rawBlockSize) : rawBlockSize;
35
+ // 如果没有提供 value,则使用 min 作为默认值
36
+ const defaultValue = value !== undefined ? value : min;
37
+ const nodeRef = useRef(null);
38
+ const trackRef = useRef(null);
39
+ const [currentValue, setCurrentValue] = useState(defaultValue);
40
+ const [trackWidth, setTrackWidth] = useState(0);
41
+ const thumbPosition = useSharedValue(0);
42
+ const isDragging = useSharedValue(false);
43
+ const startDragPosition = useSharedValue(0); // 记录拖拽开始时的位置
44
+ const startDragValue = useSharedValue(0); // 记录拖拽开始时的值
45
+ let formValuesMap;
46
+ const propsRef = useRef(props);
47
+ propsRef.current = props;
48
+ const formContext = useContext(FormContext);
49
+ if (formContext) {
50
+ formValuesMap = formContext.formValuesMap;
51
+ }
52
+ const { normalStyle, hasSelfPercent, setWidth, setHeight, hasPositionFixed } = useTransformStyle(style, {
53
+ enableVar,
54
+ externalVarContext,
55
+ parentFontSize,
56
+ parentWidth,
57
+ parentHeight
58
+ });
59
+ const { layoutRef, layoutStyle, layoutProps } = useLayout({
60
+ props,
61
+ hasSelfPercent,
62
+ setWidth,
63
+ setHeight,
64
+ nodeRef
65
+ });
66
+ useNodesRef(props, ref, nodeRef, {
67
+ style: normalStyle
68
+ });
69
+ // 使用 useRunOnJSCallback 处理手势回调
70
+ const runOnJSCallbackRef = useRef({
71
+ triggerChangeEvent: (newValue) => {
72
+ setCurrentValue(newValue);
73
+ const currentProps = propsRef.current;
74
+ const changeHandler = currentProps.bindchange || currentProps.catchchange;
75
+ if (changeHandler) {
76
+ changeHandler(getCustomEvent('change', {}, { layoutRef, detail: { value: newValue } }, currentProps));
77
+ }
78
+ },
79
+ triggerChangingEvent: (newValue) => {
80
+ const currentProps = propsRef.current;
81
+ const changingHandler = currentProps.bindchanging || currentProps.catchchanging;
82
+ if (changingHandler) {
83
+ changingHandler(getCustomEvent('changing', {}, { layoutRef, detail: { value: newValue } }, currentProps));
84
+ }
85
+ }
86
+ });
87
+ const runOnJSCallback = useRunOnJSCallback(runOnJSCallbackRef);
88
+ // 限制步长,确保 step 大于 0,并且可被 (max - min) 整除
89
+ const validateStep = (step, min, max) => {
90
+ if (step <= 0)
91
+ return 1;
92
+ if ((max - min) % step !== 0) {
93
+ warn(`Step ${step} is not a divisor of range ${max - min}`);
94
+ }
95
+ return step;
96
+ };
97
+ const validStep = validateStep(step, min, max);
98
+ // 将值约束在 min-max 范围内,并按步长对齐
99
+ const constrainValue = (val, minVal = min, maxVal = max, stepVal = validStep) => {
100
+ const constrained = Math.max(minVal, Math.min(maxVal, val));
101
+ const steps = Math.round((constrained - minVal) / stepVal);
102
+ return minVal + steps * stepVal;
103
+ };
104
+ // 计算滑块位置
105
+ const getThumbPosition = (val, trackW = trackWidth, minVal = min, maxVal = max) => {
106
+ if (trackW === 0)
107
+ return 0;
108
+ const percentage = (val - minVal) / (maxVal - minVal);
109
+ const position = percentage * trackW;
110
+ return position;
111
+ };
112
+ // 手势处理
113
+ const panGesture = useMemo(() => {
114
+ const getThumbPositionWorklet = (val, trackW, minVal, maxVal) => {
115
+ 'worklet';
116
+ if (trackW === 0)
117
+ return 0;
118
+ const percentage = (val - minVal) / (maxVal - minVal);
119
+ return percentage * trackW;
120
+ };
121
+ const constrainValueWorklet = (val, minVal, maxVal, stepVal) => {
122
+ 'worklet';
123
+ const constrained = Math.max(minVal, Math.min(maxVal, val));
124
+ const steps = Math.round((constrained - minVal) / stepVal);
125
+ return minVal + steps * stepVal;
126
+ };
127
+ return Gesture.Pan()
128
+ .enabled(!disabled) // 通过手势启用状态控制是否可拖拽
129
+ .onBegin(() => {
130
+ 'worklet';
131
+ if (trackWidth === 0)
132
+ return;
133
+ isDragging.value = true;
134
+ // 记录拖拽开始时的位置 - 使用当前的动画位置
135
+ startDragPosition.value = thumbPosition.value;
136
+ // 根据当前位置反推值
137
+ const percentage = thumbPosition.value / trackWidth;
138
+ const currentVal = min + percentage * (max - min);
139
+ startDragValue.value = constrainValueWorklet(currentVal, min, max, validStep);
140
+ })
141
+ .onUpdate((event) => {
142
+ 'worklet';
143
+ if (trackWidth === 0)
144
+ return;
145
+ // 基于拖拽开始位置计算新位置
146
+ const newX = startDragPosition.value + event.translationX;
147
+ const clampedX = Math.max(0, Math.min(trackWidth, newX));
148
+ // 计算新值
149
+ const percentage = clampedX / trackWidth;
150
+ const rawValue = min + percentage * (max - min);
151
+ const newValue = constrainValueWorklet(rawValue, min, max, validStep);
152
+ // 更新滑块位置 - 使用约束后的值对应的位置
153
+ const constrainedPosition = getThumbPositionWorklet(newValue, trackWidth, min, max);
154
+ thumbPosition.value = constrainedPosition;
155
+ // 只触发 changing 事件,不更新 currentValue(避免干扰拖拽)
156
+ runOnJS(runOnJSCallback)('triggerChangingEvent', newValue);
157
+ })
158
+ .onEnd((event) => {
159
+ 'worklet';
160
+ isDragging.value = false;
161
+ // 基于拖拽开始位置计算最终位置
162
+ const newX = startDragPosition.value + event.translationX;
163
+ const clampedX = Math.max(0, Math.min(trackWidth, newX));
164
+ const percentage = clampedX / trackWidth;
165
+ const rawValue = min + percentage * (max - min);
166
+ const finalValue = constrainValueWorklet(rawValue, min, max, validStep);
167
+ // 确保滑块位置与最终值匹配
168
+ const finalPosition = getThumbPositionWorklet(finalValue, trackWidth, min, max);
169
+ thumbPosition.value = finalPosition;
170
+ // 更新 currentValue 并触发 change 事件
171
+ runOnJS(runOnJSCallback)('triggerChangeEvent', finalValue);
172
+ });
173
+ }, [disabled, trackWidth, min, max, validStep, runOnJSCallback]);
174
+ // 当 value 属性变化时更新位置
175
+ useEffect(() => {
176
+ const newValue = constrainValue(defaultValue);
177
+ setCurrentValue(newValue);
178
+ // 同时更新动画位置
179
+ thumbPosition.value = getThumbPosition(newValue);
180
+ }, [defaultValue, min, max, validStep]);
181
+ // 当 trackWidth 变化时更新滑块位置
182
+ useEffect(() => {
183
+ // 只在非拖拽状态下更新位置
184
+ if (!isDragging.value) {
185
+ thumbPosition.value = getThumbPosition(currentValue);
186
+ }
187
+ }, [trackWidth, currentValue]);
188
+ // 动画样式
189
+ const animatedThumbStyle = useAnimatedStyle(() => {
190
+ const blockSizeNum = Math.max(12, Math.min(28, blockSize));
191
+ const trackHeight = 4;
192
+ return {
193
+ position: 'absolute',
194
+ top: -((blockSizeNum - trackHeight) / 2),
195
+ left: Math.max(0, Math.min(trackWidth - blockSizeNum, thumbPosition.value - (blockSizeNum / 2))),
196
+ width: blockSizeNum,
197
+ height: blockSizeNum,
198
+ justifyContent: 'center',
199
+ alignItems: 'center'
200
+ };
201
+ });
202
+ // 轨道布局回调
203
+ const onTrackLayout = (event) => {
204
+ const { width } = event.nativeEvent.layout;
205
+ setTrackWidth(width);
206
+ };
207
+ // 表单相关处理
208
+ const resetValue = () => {
209
+ const currentProps = propsRef.current;
210
+ const currentValue = currentProps.value !== undefined ? currentProps.value : currentProps.min || 0;
211
+ const parsedValue = typeof currentValue === 'string' ? parseFloat(currentValue) : currentValue;
212
+ const currentMin = typeof currentProps.min === 'string' ? parseFloat(currentProps.min) : (currentProps.min || 0);
213
+ const currentMax = typeof currentProps.max === 'string' ? parseFloat(currentProps.max) : (currentProps.max || 100);
214
+ const currentStep = typeof currentProps.step === 'string' ? parseFloat(currentProps.step) : (currentProps.step || 1);
215
+ const resetVal = parsedValue !== undefined ? parsedValue : currentMin;
216
+ const validatedStep = validateStep(currentStep, currentMin, currentMax);
217
+ const constrainedVal = constrainValue(resetVal, currentMin, currentMax, validatedStep);
218
+ setCurrentValue(constrainedVal);
219
+ thumbPosition.value = getThumbPosition(constrainedVal, trackWidth, currentMin, currentMax);
220
+ };
221
+ const getValue = () => {
222
+ return currentValue;
223
+ };
224
+ if (formValuesMap) {
225
+ if (!name) {
226
+ warn('If a form component is used, the name attribute is required.');
227
+ }
228
+ else {
229
+ formValuesMap.set(name, { getValue, resetValue });
230
+ }
231
+ }
232
+ useEffect(() => {
233
+ return () => {
234
+ if (formValuesMap && name) {
235
+ formValuesMap.delete(name);
236
+ }
237
+ };
238
+ }, []);
239
+ // 样式定义
240
+ const blockSizeNum = Math.max(12, Math.min(28, blockSize));
241
+ const trackHeight = 4;
242
+ const containerStyle = extendObject({}, {
243
+ flexDirection: 'row',
244
+ alignItems: 'center',
245
+ minHeight: Math.max(blockSizeNum + 8, 40),
246
+ paddingHorizontal: 14 // 固定内边距,不受 block-size 影响
247
+ }, normalStyle, layoutStyle);
248
+ const trackStyle = {
249
+ flex: 1,
250
+ height: trackHeight,
251
+ backgroundColor,
252
+ borderRadius: trackHeight / 2,
253
+ position: 'relative'
254
+ };
255
+ // 动画进度条样式
256
+ const animatedProgressStyle = useAnimatedStyle(() => {
257
+ return {
258
+ height: '100%',
259
+ backgroundColor: activeColor,
260
+ borderRadius: trackHeight / 2,
261
+ width: Math.max(0, thumbPosition.value)
262
+ };
263
+ });
264
+ const thumbStyle = {
265
+ width: blockSizeNum,
266
+ height: blockSizeNum,
267
+ backgroundColor: blockColor,
268
+ borderRadius: blockSizeNum / 2,
269
+ shadowColor: '#000',
270
+ shadowOffset: { width: 0, height: 2 },
271
+ shadowOpacity: 0.2,
272
+ shadowRadius: 4,
273
+ elevation: 4
274
+ };
275
+ const innerProps = useInnerProps(extendObject({}, props, layoutProps, {
276
+ ref: nodeRef
277
+ }), [
278
+ 'min',
279
+ 'max',
280
+ 'step',
281
+ 'disabled',
282
+ 'value',
283
+ 'color',
284
+ 'selected-color',
285
+ 'activeColor',
286
+ 'backgroundColor',
287
+ 'block-size',
288
+ 'block-color',
289
+ 'bindchange',
290
+ 'catchchange',
291
+ 'bindchanging',
292
+ 'catchchanging'
293
+ ], { layoutRef });
294
+ const sliderContent = createElement(View, extendObject({}, innerProps, { style: containerStyle }),
295
+ // 轨道容器
296
+ createElement(View, {
297
+ style: trackStyle,
298
+ onLayout: onTrackLayout,
299
+ ref: trackRef
300
+ },
301
+ // 进度条 - 使用动画样式
302
+ createElement(Animated.View, {
303
+ style: animatedProgressStyle
304
+ }),
305
+ // 滑块容器
306
+ createElement(GestureDetector, {
307
+ gesture: panGesture
308
+ }, createElement(Animated.View, {
309
+ style: [animatedThumbStyle]
310
+ },
311
+ // 滑块
312
+ createElement(View, {
313
+ style: thumbStyle
314
+ })))));
315
+ if (hasPositionFixed) {
316
+ return createElement(Portal, null, sliderContent);
317
+ }
318
+ return sliderContent;
319
+ });
320
+ Slider.displayName = 'MpxSlider';
321
+ export default Slider;
@@ -0,0 +1,18 @@
1
+ import { ReactNode } from 'react';
2
+ import { View, NativeSyntheticEvent, ViewStyle } from 'react-native';
3
+ import { HandlerRef } from './useNodesRef';
4
+ interface StickyHeaderProps {
5
+ children?: ReactNode;
6
+ style?: ViewStyle;
7
+ padding?: [number, number, number, number];
8
+ 'offset-top'?: number;
9
+ 'enable-var'?: boolean;
10
+ 'external-var-context'?: Record<string, any>;
11
+ 'parent-font-size'?: number;
12
+ 'parent-width'?: number;
13
+ 'parent-height'?: number;
14
+ bindstickontopchange?: (e: NativeSyntheticEvent<unknown>) => void;
15
+ }
16
+ declare const _StickyHeader: import("react").ForwardRefExoticComponent<StickyHeaderProps & import("react").RefAttributes<HandlerRef<View, StickyHeaderProps>>>;
17
+ export default _StickyHeader;
18
+ //# sourceMappingURL=mpx-sticky-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpx-sticky-header.d.ts","sourceRoot":"","sources":["../mpx-sticky-header.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqE,SAAS,EAAS,MAAM,OAAO,CAAA;AAC3G,OAAO,EAAwB,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAuC,MAAM,cAAc,CAAA;AAE/H,OAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAKvD,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACnE;AAED,QAAA,MAAM,aAAa,mIAmJjB,CAAA;AAYF,eAAe,aAAa,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { ReactNode } from 'react';
2
+ import { View, ViewStyle } from 'react-native';
3
+ import { HandlerRef } from './useNodesRef';
4
+ interface StickySectionProps {
5
+ children?: ReactNode;
6
+ style?: ViewStyle;
7
+ 'offset-top'?: number;
8
+ 'enable-var'?: boolean;
9
+ 'external-var-context'?: Record<string, any>;
10
+ 'parent-font-size'?: number;
11
+ 'parent-width'?: number;
12
+ 'parent-height'?: number;
13
+ }
14
+ declare const _StickySection: import("react").ForwardRefExoticComponent<StickySectionProps & import("react").RefAttributes<HandlerRef<View, StickySectionProps>>>;
15
+ export default _StickySection;
16
+ //# sourceMappingURL=mpx-sticky-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpx-sticky-section.d.ts","sourceRoot":"","sources":["../mpx-sticky-section.tsx"],"names":[],"mappings":"AACA,OAAO,EAAqC,SAAS,EAAwB,MAAM,OAAO,CAAA;AAC1F,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAKvD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,QAAA,MAAM,cAAc,qIAyElB,CAAA;AAGF,eAAe,cAAc,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { View } from 'react-native';
2
+ import { ReactNode } from 'react';
3
+ import { HandlerRef } from './useNodesRef';
4
+ interface SwiperItemProps {
5
+ 'item-id'?: string;
6
+ 'enable-offset'?: boolean;
7
+ 'enable-var': boolean;
8
+ 'external-var-context'?: Record<string, any>;
9
+ 'parent-font-size'?: number;
10
+ 'parent-width'?: number;
11
+ 'parent-height'?: number;
12
+ children?: ReactNode;
13
+ style?: Object;
14
+ customStyle: Object;
15
+ itemIndex: number;
16
+ }
17
+ declare const _SwiperItem: import("react").ForwardRefExoticComponent<SwiperItemProps & import("react").RefAttributes<HandlerRef<View, SwiperItemProps>>>;
18
+ export default _SwiperItem;
19
+ //# sourceMappingURL=mpx-swiper-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpx-swiper-item.d.ts","sourceRoot":"","sources":["../mpx-swiper-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAEnC,OAAO,EAAE,SAAS,EAAiD,MAAM,OAAO,CAAA;AAEhF,OAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAIvD,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AASD,QAAA,MAAM,WAAW,+HA8Ef,CAAA;AAIF,eAAe,WAAW,CAAA"}
@@ -0,0 +1,53 @@
1
+ import { View, NativeSyntheticEvent } from 'react-native';
2
+ import React, { ReactNode } from 'react';
3
+ import { HandlerRef } from './useNodesRef';
4
+ import { GestureHandler } from './utils';
5
+ /**
6
+ * ✔ indicator-dots
7
+ * ✔ indicator-color
8
+ * ✔ indicator-active-color
9
+ * ✔ autoplay
10
+ * ✔ current
11
+ * ✔ interval
12
+ * ✔ duration
13
+ * ✔ circular
14
+ * ✔ vertical
15
+ * ✔ previous-margin
16
+ * ✔ next-margin
17
+ * ✔ easing-function ="easeOutCubic"
18
+ * ✘ display-multiple-items
19
+ * ✘ snap-to-edge
20
+ */
21
+ type EaseType = 'default' | 'linear' | 'easeInCubic' | 'easeOutCubic' | 'easeInOutCubic';
22
+ interface SwiperProps {
23
+ children?: ReactNode;
24
+ circular?: boolean;
25
+ current?: number;
26
+ interval?: number;
27
+ autoplay?: boolean;
28
+ duration?: number;
29
+ scale?: boolean;
30
+ 'indicator-dots'?: boolean;
31
+ 'indicator-color'?: string;
32
+ 'indicator-active-color'?: string;
33
+ vertical?: boolean;
34
+ style: {
35
+ [key: string]: any;
36
+ };
37
+ 'easing-function'?: EaseType;
38
+ 'previous-margin'?: string;
39
+ 'next-margin'?: string;
40
+ 'enable-offset'?: boolean;
41
+ 'enable-var': boolean;
42
+ 'parent-font-size'?: number;
43
+ 'parent-width'?: number;
44
+ 'parent-height'?: number;
45
+ 'external-var-context'?: Record<string, any>;
46
+ 'wait-for'?: Array<GestureHandler>;
47
+ 'simultaneous-handlers'?: Array<GestureHandler>;
48
+ disableGesture?: boolean;
49
+ bindchange?: (event: NativeSyntheticEvent<TouchEvent> | unknown) => void;
50
+ }
51
+ declare const SwiperWrapper: React.ForwardRefExoticComponent<SwiperProps & React.RefAttributes<HandlerRef<View, SwiperProps>>>;
52
+ export default SwiperWrapper;
53
+ //# sourceMappingURL=mpx-swiper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpx-swiper.d.ts","sourceRoot":"","sources":["../mpx-swiper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAqB,MAAM,cAAc,CAAA;AAI5E,OAAO,KAAK,EAAE,EAAsC,SAAS,EAAwC,MAAM,OAAO,CAAA;AAElH,OAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAoF,cAAc,EAAmC,MAAM,SAAS,CAAA;AAG3J;;;;;;;;;;;;;;;GAeG;AACH,KAAK,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,cAAc,GAAG,gBAAgB,CAAA;AAUxF,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE;QACL,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;IACD,iBAAiB,CAAC,EAAE,QAAQ,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5C,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IAClC,uBAAuB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,OAAO,KAAK,IAAI,CAAA;CACzE;AAoED,QAAA,MAAM,aAAa,mGAivBjB,CAAA;AAGF,eAAe,aAAa,CAAA"}
@@ -71,7 +71,7 @@ const easeMap = {
71
71
  easeInOutCubic: Easing.inOut(Easing.cubic)
72
72
  };
73
73
  const SwiperWrapper = forwardRef((props, ref) => {
74
- const { 'indicator-dots': showPagination, 'indicator-color': dotColor = 'rgba(0, 0, 0, .3)', 'indicator-active-color': activeDotColor = '#000000', 'enable-var': enableVar = false, 'parent-font-size': parentFontSize, 'parent-width': parentWidth, 'parent-height': parentHeight, 'external-var-context': externalVarContext, 'simultaneous-handlers': originSimultaneousHandlers = [], 'wait-for': waitFor = [], style = {}, autoplay = false, circular = false, disableGesture = false, current: propCurrent = 0, bindchange } = props;
74
+ const { 'indicator-dots': showPagination, 'indicator-color': dotColor = 'rgba(0, 0, 0, .3)', 'indicator-active-color': activeDotColor = '#000000', 'enable-var': enableVar = false, 'parent-font-size': parentFontSize, 'parent-width': parentWidth, 'parent-height': parentHeight, 'external-var-context': externalVarContext, 'simultaneous-handlers': originSimultaneousHandlers = [], 'wait-for': waitFor = [], style = {}, autoplay = false, circular = false, disableGesture = false, current: propCurrent, bindchange } = props;
75
75
  const easeingFunc = props['easing-function'] || 'default';
76
76
  const easeDuration = props.duration || 500;
77
77
  const horizontal = props.vertical !== undefined ? !props.vertical : true;
@@ -112,10 +112,10 @@ const SwiperWrapper = forwardRef((props, ref) => {
112
112
  // 每个元素的宽度 or 高度,有固定值直接初始化无则0
113
113
  const step = useSharedValue(initStep);
114
114
  // 记录选中元素的索引值
115
- const currentIndex = useSharedValue(propCurrent);
115
+ const currentIndex = useSharedValue(propCurrent || 0);
116
116
  // const initOffset = getOffset(props.current || 0, initStep)
117
117
  // 记录元素的偏移量
118
- const offset = useSharedValue(getOffset(propCurrent, initStep));
118
+ const offset = useSharedValue(getOffset(propCurrent || 0, initStep));
119
119
  const strAbso = 'absolute' + dir.toUpperCase();
120
120
  const strVelocity = 'velocity' + dir.toUpperCase();
121
121
  // 标识手指触摸和抬起, 起点在onBegin
@@ -170,7 +170,7 @@ const SwiperWrapper = forwardRef((props, ref) => {
170
170
  const iStep = dir === 'x' ? realWidth : realHeight;
171
171
  if (iStep !== step.value) {
172
172
  step.value = iStep;
173
- updateCurrent(propCurrent, iStep);
173
+ updateCurrent(propCurrent || 0, iStep);
174
174
  updateAutoplay();
175
175
  }
176
176
  }
@@ -414,7 +414,7 @@ const SwiperWrapper = forwardRef((props, ref) => {
414
414
  // 1. 如果用户在touch的过程中, 外部更新了current以外部为准(小程序表现)
415
415
  // 2. 手指滑动过程中更新索引,外部会把current再传入进来,导致offset直接更新,增加判断不同才更新
416
416
  if (propCurrent !== currentIndex.value) {
417
- updateCurrent(propCurrent, step.value);
417
+ updateCurrent(propCurrent || 0, step.value);
418
418
  }
419
419
  }, [propCurrent]);
420
420
  useEffect(() => {
@@ -696,6 +696,10 @@ const SwiperWrapper = forwardRef((props, ref) => {
696
696
  offset.value = moveDistance + offset.value;
697
697
  }
698
698
  preAbsolutePos.value = e[strAbso];
699
+ })
700
+ .onEnd((e) => {
701
+ // 修复部分安卓机型下onFinalize拿到的absolute值 和 onUpdate不一致的情况,通过onEnd进行修正为最终的位置
702
+ preAbsolutePos.value = e[strAbso];
699
703
  })
700
704
  .onFinalize((e) => {
701
705
  'worklet';
@@ -0,0 +1,27 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * ✔ checked
4
+ * ✔ type
5
+ * ✔ disabled
6
+ * ✔ color
7
+ */
8
+ import { Switch, SwitchProps, ViewStyle, NativeSyntheticEvent } from 'react-native';
9
+ import { HandlerRef } from './useNodesRef';
10
+ interface _SwitchProps extends SwitchProps {
11
+ style?: ViewStyle;
12
+ name?: string;
13
+ checked?: boolean;
14
+ type: 'switch' | 'checkbox';
15
+ disabled: boolean;
16
+ color: string;
17
+ 'enable-var'?: boolean;
18
+ 'parent-font-size'?: number;
19
+ 'parent-width'?: number;
20
+ 'parent-height'?: number;
21
+ 'external-var-context'?: Record<string, any>;
22
+ bindchange?: (event: NativeSyntheticEvent<TouchEvent> | unknown) => void;
23
+ catchchange?: (event: NativeSyntheticEvent<TouchEvent> | unknown) => void;
24
+ }
25
+ declare const _Switch: import("react").ForwardRefExoticComponent<_SwitchProps & import("react").RefAttributes<HandlerRef<Switch, _SwitchProps>>>;
26
+ export default _Switch;
27
+ //# sourceMappingURL=mpx-switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpx-switch.d.ts","sourceRoot":"","sources":["../mpx-switch.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAGnF,OAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAQvD,UAAU,YAAa,SAAQ,WAAW;IACxC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,OAAO,KAAK,IAAI,CAAA;IACxE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,OAAO,KAAK,IAAI,CAAA;CAC1E;AAED,QAAA,MAAM,OAAO,2HA0IX,CAAA;AAIF,eAAe,OAAO,CAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ✔ selectable
3
+ * ✘ space
4
+ * ✔ decode
5
+ */
6
+ import { Text, TextStyle, TextProps } from 'react-native';
7
+ import { ReactNode } from 'react';
8
+ import { HandlerRef } from './useNodesRef';
9
+ interface _TextProps extends TextProps {
10
+ style?: TextStyle;
11
+ children?: ReactNode;
12
+ selectable?: boolean;
13
+ 'user-select'?: boolean;
14
+ 'enable-var'?: boolean;
15
+ 'external-var-context'?: Record<string, any>;
16
+ 'parent-font-size'?: number;
17
+ 'parent-width'?: number;
18
+ 'parent-height'?: number;
19
+ decode?: boolean;
20
+ }
21
+ declare const _Text: import("react").ForwardRefExoticComponent<_TextProps & import("react").RefAttributes<HandlerRef<Text, _TextProps>>>;
22
+ export default _Text;
23
+ //# sourceMappingURL=mpx-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpx-text.d.ts","sourceRoot":"","sources":["../mpx-text.tsx"],"names":[],"mappings":"AACA;;;;GAIG;AACH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAsB,SAAS,EAAgC,MAAM,OAAO,CAAA;AAGnF,OAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AA6BvD,UAAU,UAAW,SAAQ,SAAS;IACpC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,QAAA,MAAM,KAAK,qHAkET,CAAA;AAIF,eAAe,KAAK,CAAA"}
@@ -1,16 +1,40 @@
1
1
  /**
2
2
  * ✔ selectable
3
3
  * ✘ space
4
- * decode
4
+ * decode
5
5
  */
6
6
  import { Text } from 'react-native';
7
- import { useRef, forwardRef, createElement } from 'react';
7
+ import { useRef, forwardRef, createElement, Children } from 'react';
8
8
  import Portal from './mpx-portal';
9
9
  import useInnerProps from './getInnerListeners';
10
10
  import useNodesRef from './useNodesRef'; // 引入辅助函数
11
11
  import { useTransformStyle, wrapChildren, extendObject } from './utils';
12
+ const decodeMap = {
13
+ '&lt;': '<',
14
+ '&gt;': '>',
15
+ '&quot;': '"',
16
+ '&amp;': '&',
17
+ '&#39;': '\'',
18
+ '&nbsp;': ' '
19
+ };
20
+ const encodedRe = /&(?:lt|gt|quot|amp|#39|nbsp);/g;
21
+ function decode(value) {
22
+ if (value != null) {
23
+ return value.replace(encodedRe, function (match) {
24
+ return decodeMap[match];
25
+ });
26
+ }
27
+ }
28
+ function getDecodedChildren(children) {
29
+ return Children.map(children, (child) => {
30
+ if (typeof child === 'string') {
31
+ return decode(child);
32
+ }
33
+ return child;
34
+ });
35
+ }
12
36
  const _Text = forwardRef((props, ref) => {
13
- const { style = {}, allowFontScaling = false, selectable, 'enable-var': enableVar, 'external-var-context': externalVarContext, 'user-select': userSelect, 'parent-font-size': parentFontSize, 'parent-width': parentWidth, 'parent-height': parentHeight } = props;
37
+ const { style = {}, allowFontScaling = false, selectable, 'enable-var': enableVar, 'external-var-context': externalVarContext, 'user-select': userSelect, 'parent-font-size': parentFontSize, 'parent-width': parentWidth, 'parent-height': parentHeight, decode } = props;
14
38
  const { normalStyle, hasVarDec, varContextRef, hasPositionFixed } = useTransformStyle(style, {
15
39
  enableVar,
16
40
  externalVarContext,
@@ -28,9 +52,13 @@ const _Text = forwardRef((props, ref) => {
28
52
  selectable: !!selectable || !!userSelect,
29
53
  allowFontScaling
30
54
  }), [
31
- 'user-select'
55
+ 'user-select',
56
+ 'decode'
32
57
  ]);
33
- let finalComponent = createElement(Text, innerProps, wrapChildren(props, {
58
+ const children = decode ? getDecodedChildren(props.children) : props.children;
59
+ let finalComponent = createElement(Text, innerProps, wrapChildren(extendObject({}, props, {
60
+ children
61
+ }), {
34
62
  hasVarDec,
35
63
  varContext: varContextRef.current
36
64
  }));
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { TextInput } from 'react-native';
3
+ import { InputProps, PrivateInputProps } from './mpx-input';
4
+ import { HandlerRef } from './useNodesRef';
5
+ export type TextareProps = Omit<InputProps & PrivateInputProps, 'type' | 'password' | 'multiline' | 'confirm-hold'>;
6
+ declare const Textarea: import("react").ForwardRefExoticComponent<TextareProps & import("react").RefAttributes<HandlerRef<TextInput, TextareProps>>>;
7
+ export default Textarea;
8
+ //# sourceMappingURL=mpx-textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mpx-textarea.d.ts","sourceRoot":"","sources":["../mpx-textarea.tsx"],"names":[],"mappings":";AAYA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,UAAU,GAAG,iBAAiB,EAC9B,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,CACnD,CAAA;AAKD,QAAA,MAAM,QAAQ,8HA+Bb,CAAA;AAID,eAAe,QAAQ,CAAA"}