@hanzogui/react-native-web-internals 2.0.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 (420) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/StyleSheet/__tests__/compiler-createReactDOMStyle-test.cjs +240 -0
  3. package/dist/cjs/StyleSheet/__tests__/compiler-test.cjs +407 -0
  4. package/dist/cjs/StyleSheet/__tests__/dom-createOrderedCSSStyleSheet-test.cjs +121 -0
  5. package/dist/cjs/StyleSheet/__tests__/index-test.cjs +404 -0
  6. package/dist/cjs/StyleSheet/__tests__/preprocess-test.cjs +108 -0
  7. package/dist/cjs/StyleSheet/__tests__/validate-test.cjs +36 -0
  8. package/dist/cjs/StyleSheet/compiler/createReactDOMStyle.cjs +87 -0
  9. package/dist/cjs/StyleSheet/compiler/hash.cjs +26 -0
  10. package/dist/cjs/StyleSheet/compiler/hyphenateStyleName.cjs +36 -0
  11. package/dist/cjs/StyleSheet/compiler/index.cjs +318 -0
  12. package/dist/cjs/StyleSheet/compiler/normalizeColor.cjs +40 -0
  13. package/dist/cjs/StyleSheet/compiler/normalizeValueWithProperty.cjs +43 -0
  14. package/dist/cjs/StyleSheet/compiler/resolveShadowValue.cjs +48 -0
  15. package/dist/cjs/StyleSheet/dom/createCSSStyleSheet.cjs +37 -0
  16. package/dist/cjs/StyleSheet/dom/createOrderedCSSStyleSheet.cjs +110 -0
  17. package/dist/cjs/StyleSheet/dom/index.cjs +67 -0
  18. package/dist/cjs/StyleSheet/index.cjs +57 -0
  19. package/dist/cjs/StyleSheet/preprocess.cjs +101 -0
  20. package/dist/cjs/StyleSheet/validate.cjs +69 -0
  21. package/dist/cjs/TextAncestorContext.cjs +27 -0
  22. package/dist/cjs/colorProps.cjs +37 -0
  23. package/dist/cjs/index.cjs +103 -0
  24. package/dist/cjs/modules/AccessibilityUtil/__tests__/propsToAccessibilityComponent-test.cjs +50 -0
  25. package/dist/cjs/modules/AccessibilityUtil/__tests__/propsToAriaRole-test.cjs +40 -0
  26. package/dist/cjs/modules/AccessibilityUtil/index.cjs +33 -0
  27. package/dist/cjs/modules/AccessibilityUtil/isDisabled.cjs +26 -0
  28. package/dist/cjs/modules/AccessibilityUtil/propsToAccessibilityComponent.cjs +57 -0
  29. package/dist/cjs/modules/AccessibilityUtil/propsToAriaRole.cjs +47 -0
  30. package/dist/cjs/modules/AssetRegistry/index.cjs +33 -0
  31. package/dist/cjs/modules/ImageLoader/index.cjs +111 -0
  32. package/dist/cjs/modules/InteractionManager.cjs +184 -0
  33. package/dist/cjs/modules/Platform/__tests__/index-test.cjs +48 -0
  34. package/dist/cjs/modules/Platform/index.cjs +30 -0
  35. package/dist/cjs/modules/TextInputState/index.cjs +55 -0
  36. package/dist/cjs/modules/UIManager/__tests__/index-test.cjs +90 -0
  37. package/dist/cjs/modules/UIManager/index.cjs +60 -0
  38. package/dist/cjs/modules/canUseDOM.cjs +26 -0
  39. package/dist/cjs/modules/createDOMProps/__tests__/index-test.cjs +156 -0
  40. package/dist/cjs/modules/createDOMProps/index.cjs +179 -0
  41. package/dist/cjs/modules/createEventHandle/__tests__/index-test.cjs +344 -0
  42. package/dist/cjs/modules/createEventHandle/index.cjs +67 -0
  43. package/dist/cjs/modules/dismissKeyboard/index.cjs +29 -0
  44. package/dist/cjs/modules/forwardedProps/index.cjs +161 -0
  45. package/dist/cjs/modules/getBoundingClientRect/index.cjs +28 -0
  46. package/dist/cjs/modules/invariant.cjs +36 -0
  47. package/dist/cjs/modules/isSelectionValid/index.cjs +35 -0
  48. package/dist/cjs/modules/isWebColor/index.cjs +26 -0
  49. package/dist/cjs/modules/mergeRefs/__tests__/index-test.cjs +42 -0
  50. package/dist/cjs/modules/mergeRefs/index.cjs +42 -0
  51. package/dist/cjs/modules/modality/__tests__/index-test.cjs +32 -0
  52. package/dist/cjs/modules/modality/index.cjs +135 -0
  53. package/dist/cjs/modules/multiplyStyleLengthValue/__tests__/index-test.cjs +30 -0
  54. package/dist/cjs/modules/multiplyStyleLengthValue/index.cjs +35 -0
  55. package/dist/cjs/modules/normalizeColor/index.cjs +39 -0
  56. package/dist/cjs/modules/pick/index.cjs +30 -0
  57. package/dist/cjs/modules/processColor/__tests__/index-test.cjs +66 -0
  58. package/dist/cjs/modules/processColor/index.cjs +42 -0
  59. package/dist/cjs/modules/requestIdleCallback/index.cjs +44 -0
  60. package/dist/cjs/modules/setValueForStyles/dangerousStyleValue.cjs +35 -0
  61. package/dist/cjs/modules/setValueForStyles/index.cjs +35 -0
  62. package/dist/cjs/modules/unitlessNumbers/index.cjs +85 -0
  63. package/dist/cjs/modules/useElementLayout/index.cjs +39 -0
  64. package/dist/cjs/modules/useEvent/__tests__/index-test.cjs +408 -0
  65. package/dist/cjs/modules/useEvent/index.cjs +45 -0
  66. package/dist/cjs/modules/useHover/__tests__/index-test.cjs +273 -0
  67. package/dist/cjs/modules/useHover/index.cjs +97 -0
  68. package/dist/cjs/modules/useLayoutEffect/index.cjs +39 -0
  69. package/dist/cjs/modules/useLocale/index.cjs +66 -0
  70. package/dist/cjs/modules/useLocale/isLocaleRTL.cjs +83 -0
  71. package/dist/cjs/modules/useMergeRefs/__tests__/index-test.cjs +102 -0
  72. package/dist/cjs/modules/useMergeRefs/index.cjs +43 -0
  73. package/dist/cjs/modules/usePlatformMethods/index.cjs +35 -0
  74. package/dist/cjs/modules/useStable/__tests__/index-test.cjs +92 -0
  75. package/dist/cjs/modules/useStable/index.cjs +42 -0
  76. package/dist/cjs/styleTypes.cjs +16 -0
  77. package/dist/cjs/types.cjs +16 -0
  78. package/dist/esm/StyleSheet/__tests__/compiler-createReactDOMStyle-test.mjs +219 -0
  79. package/dist/esm/StyleSheet/__tests__/compiler-createReactDOMStyle-test.mjs.map +1 -0
  80. package/dist/esm/StyleSheet/__tests__/compiler-test.mjs +408 -0
  81. package/dist/esm/StyleSheet/__tests__/compiler-test.mjs.map +1 -0
  82. package/dist/esm/StyleSheet/__tests__/dom-createOrderedCSSStyleSheet-test.mjs +100 -0
  83. package/dist/esm/StyleSheet/__tests__/dom-createOrderedCSSStyleSheet-test.mjs.map +1 -0
  84. package/dist/esm/StyleSheet/__tests__/index-test.mjs +383 -0
  85. package/dist/esm/StyleSheet/__tests__/index-test.mjs.map +1 -0
  86. package/dist/esm/StyleSheet/__tests__/preprocess-test.mjs +109 -0
  87. package/dist/esm/StyleSheet/__tests__/preprocess-test.mjs.map +1 -0
  88. package/dist/esm/StyleSheet/__tests__/validate-test.mjs +37 -0
  89. package/dist/esm/StyleSheet/__tests__/validate-test.mjs.map +1 -0
  90. package/dist/esm/StyleSheet/compiler/createReactDOMStyle.mjs +63 -0
  91. package/dist/esm/StyleSheet/compiler/createReactDOMStyle.mjs.map +1 -0
  92. package/dist/esm/StyleSheet/compiler/hash.mjs +3 -0
  93. package/dist/esm/StyleSheet/compiler/hash.mjs.map +1 -0
  94. package/dist/esm/StyleSheet/compiler/hyphenateStyleName.mjs +13 -0
  95. package/dist/esm/StyleSheet/compiler/hyphenateStyleName.mjs.map +1 -0
  96. package/dist/esm/StyleSheet/compiler/index.mjs +292 -0
  97. package/dist/esm/StyleSheet/compiler/index.mjs.map +1 -0
  98. package/dist/esm/StyleSheet/compiler/normalizeColor.mjs +17 -0
  99. package/dist/esm/StyleSheet/compiler/normalizeColor.mjs.map +1 -0
  100. package/dist/esm/StyleSheet/compiler/normalizeValueWithProperty.mjs +20 -0
  101. package/dist/esm/StyleSheet/compiler/normalizeValueWithProperty.mjs.map +1 -0
  102. package/dist/esm/StyleSheet/compiler/resolveShadowValue.mjs +25 -0
  103. package/dist/esm/StyleSheet/compiler/resolveShadowValue.mjs.map +1 -0
  104. package/dist/esm/StyleSheet/dom/createCSSStyleSheet.mjs +14 -0
  105. package/dist/esm/StyleSheet/dom/createCSSStyleSheet.mjs.map +1 -0
  106. package/dist/esm/StyleSheet/dom/createOrderedCSSStyleSheet.mjs +87 -0
  107. package/dist/esm/StyleSheet/dom/createOrderedCSSStyleSheet.mjs.map +1 -0
  108. package/dist/esm/StyleSheet/dom/index.mjs +44 -0
  109. package/dist/esm/StyleSheet/dom/index.mjs.map +1 -0
  110. package/dist/esm/StyleSheet/index.mjs +33 -0
  111. package/dist/esm/StyleSheet/index.mjs.map +1 -0
  112. package/dist/esm/StyleSheet/preprocess.mjs +75 -0
  113. package/dist/esm/StyleSheet/preprocess.mjs.map +1 -0
  114. package/dist/esm/StyleSheet/validate.mjs +46 -0
  115. package/dist/esm/StyleSheet/validate.mjs.map +1 -0
  116. package/dist/esm/TextAncestorContext.mjs +4 -0
  117. package/dist/esm/TextAncestorContext.mjs.map +1 -0
  118. package/dist/esm/colorProps.mjs +14 -0
  119. package/dist/esm/colorProps.mjs.map +1 -0
  120. package/dist/esm/index.js +45 -0
  121. package/dist/esm/index.js.map +1 -0
  122. package/dist/esm/index.mjs +45 -0
  123. package/dist/esm/index.mjs.map +1 -0
  124. package/dist/esm/modules/AccessibilityUtil/__tests__/propsToAccessibilityComponent-test.mjs +29 -0
  125. package/dist/esm/modules/AccessibilityUtil/__tests__/propsToAccessibilityComponent-test.mjs.map +1 -0
  126. package/dist/esm/modules/AccessibilityUtil/__tests__/propsToAriaRole-test.mjs +19 -0
  127. package/dist/esm/modules/AccessibilityUtil/__tests__/propsToAriaRole-test.mjs.map +1 -0
  128. package/dist/esm/modules/AccessibilityUtil/index.mjs +10 -0
  129. package/dist/esm/modules/AccessibilityUtil/index.mjs.map +1 -0
  130. package/dist/esm/modules/AccessibilityUtil/isDisabled.mjs +3 -0
  131. package/dist/esm/modules/AccessibilityUtil/isDisabled.mjs.map +1 -0
  132. package/dist/esm/modules/AccessibilityUtil/propsToAccessibilityComponent.mjs +34 -0
  133. package/dist/esm/modules/AccessibilityUtil/propsToAccessibilityComponent.mjs.map +1 -0
  134. package/dist/esm/modules/AccessibilityUtil/propsToAriaRole.mjs +24 -0
  135. package/dist/esm/modules/AccessibilityUtil/propsToAriaRole.mjs.map +1 -0
  136. package/dist/esm/modules/AssetRegistry/index.mjs +9 -0
  137. package/dist/esm/modules/AssetRegistry/index.mjs.map +1 -0
  138. package/dist/esm/modules/ImageLoader/index.mjs +87 -0
  139. package/dist/esm/modules/ImageLoader/index.mjs.map +1 -0
  140. package/dist/esm/modules/InteractionManager.mjs +161 -0
  141. package/dist/esm/modules/InteractionManager.mjs.map +1 -0
  142. package/dist/esm/modules/Platform/__tests__/index-test.mjs +27 -0
  143. package/dist/esm/modules/Platform/__tests__/index-test.mjs.map +1 -0
  144. package/dist/esm/modules/Platform/index.mjs +7 -0
  145. package/dist/esm/modules/Platform/index.mjs.map +1 -0
  146. package/dist/esm/modules/TextInputState/index.mjs +32 -0
  147. package/dist/esm/modules/TextInputState/index.mjs.map +1 -0
  148. package/dist/esm/modules/UIManager/__tests__/index-test.mjs +69 -0
  149. package/dist/esm/modules/UIManager/__tests__/index-test.mjs.map +1 -0
  150. package/dist/esm/modules/UIManager/index.mjs +37 -0
  151. package/dist/esm/modules/UIManager/index.mjs.map +1 -0
  152. package/dist/esm/modules/canUseDOM.mjs +3 -0
  153. package/dist/esm/modules/canUseDOM.mjs.map +1 -0
  154. package/dist/esm/modules/createDOMProps/__tests__/index-test.mjs +135 -0
  155. package/dist/esm/modules/createDOMProps/__tests__/index-test.mjs.map +1 -0
  156. package/dist/esm/modules/createDOMProps/index.mjs +155 -0
  157. package/dist/esm/modules/createDOMProps/index.mjs.map +1 -0
  158. package/dist/esm/modules/createEventHandle/__tests__/index-test.mjs +323 -0
  159. package/dist/esm/modules/createEventHandle/__tests__/index-test.mjs.map +1 -0
  160. package/dist/esm/modules/createEventHandle/index.mjs +42 -0
  161. package/dist/esm/modules/createEventHandle/index.mjs.map +1 -0
  162. package/dist/esm/modules/dismissKeyboard/index.mjs +6 -0
  163. package/dist/esm/modules/dismissKeyboard/index.mjs.map +1 -0
  164. package/dist/esm/modules/forwardedProps/index.mjs +128 -0
  165. package/dist/esm/modules/forwardedProps/index.mjs.map +1 -0
  166. package/dist/esm/modules/getBoundingClientRect/index.mjs +5 -0
  167. package/dist/esm/modules/getBoundingClientRect/index.mjs.map +1 -0
  168. package/dist/esm/modules/invariant.mjs +12 -0
  169. package/dist/esm/modules/invariant.mjs.map +1 -0
  170. package/dist/esm/modules/isSelectionValid/index.mjs +12 -0
  171. package/dist/esm/modules/isSelectionValid/index.mjs.map +1 -0
  172. package/dist/esm/modules/isWebColor/index.mjs +3 -0
  173. package/dist/esm/modules/isWebColor/index.mjs.map +1 -0
  174. package/dist/esm/modules/mergeRefs/__tests__/index-test.mjs +21 -0
  175. package/dist/esm/modules/mergeRefs/__tests__/index-test.mjs.map +1 -0
  176. package/dist/esm/modules/mergeRefs/index.mjs +19 -0
  177. package/dist/esm/modules/mergeRefs/index.mjs.map +1 -0
  178. package/dist/esm/modules/modality/__tests__/index-test.mjs +33 -0
  179. package/dist/esm/modules/modality/__tests__/index-test.mjs.map +1 -0
  180. package/dist/esm/modules/modality/index.mjs +109 -0
  181. package/dist/esm/modules/modality/index.mjs.map +1 -0
  182. package/dist/esm/modules/multiplyStyleLengthValue/__tests__/index-test.mjs +9 -0
  183. package/dist/esm/modules/multiplyStyleLengthValue/__tests__/index-test.mjs.map +1 -0
  184. package/dist/esm/modules/multiplyStyleLengthValue/index.mjs +12 -0
  185. package/dist/esm/modules/multiplyStyleLengthValue/index.mjs.map +1 -0
  186. package/dist/esm/modules/normalizeColor/index.mjs +16 -0
  187. package/dist/esm/modules/normalizeColor/index.mjs.map +1 -0
  188. package/dist/esm/modules/pick/index.mjs +7 -0
  189. package/dist/esm/modules/pick/index.mjs.map +1 -0
  190. package/dist/esm/modules/processColor/__tests__/index-test.mjs +45 -0
  191. package/dist/esm/modules/processColor/__tests__/index-test.mjs.map +1 -0
  192. package/dist/esm/modules/processColor/index.mjs +8 -0
  193. package/dist/esm/modules/processColor/index.mjs.map +1 -0
  194. package/dist/esm/modules/requestIdleCallback/index.mjs +20 -0
  195. package/dist/esm/modules/requestIdleCallback/index.mjs.map +1 -0
  196. package/dist/esm/modules/setValueForStyles/dangerousStyleValue.mjs +12 -0
  197. package/dist/esm/modules/setValueForStyles/dangerousStyleValue.mjs.map +1 -0
  198. package/dist/esm/modules/setValueForStyles/index.mjs +12 -0
  199. package/dist/esm/modules/setValueForStyles/index.mjs.map +1 -0
  200. package/dist/esm/modules/unitlessNumbers/index.mjs +62 -0
  201. package/dist/esm/modules/unitlessNumbers/index.mjs.map +1 -0
  202. package/dist/esm/modules/useElementLayout/index.mjs +16 -0
  203. package/dist/esm/modules/useElementLayout/index.mjs.map +1 -0
  204. package/dist/esm/modules/useEvent/__tests__/index-test.mjs +387 -0
  205. package/dist/esm/modules/useEvent/__tests__/index-test.mjs.map +1 -0
  206. package/dist/esm/modules/useEvent/index.mjs +22 -0
  207. package/dist/esm/modules/useEvent/index.mjs.map +1 -0
  208. package/dist/esm/modules/useHover/__tests__/index-test.mjs +252 -0
  209. package/dist/esm/modules/useHover/__tests__/index-test.mjs.map +1 -0
  210. package/dist/esm/modules/useHover/index.mjs +74 -0
  211. package/dist/esm/modules/useHover/index.mjs.map +1 -0
  212. package/dist/esm/modules/useLayoutEffect/index.mjs +5 -0
  213. package/dist/esm/modules/useLayoutEffect/index.mjs.map +1 -0
  214. package/dist/esm/modules/useLocale/index.mjs +30 -0
  215. package/dist/esm/modules/useLocale/index.mjs.map +1 -0
  216. package/dist/esm/modules/useLocale/isLocaleRTL.mjs +60 -0
  217. package/dist/esm/modules/useLocale/isLocaleRTL.mjs.map +1 -0
  218. package/dist/esm/modules/useMergeRefs/__tests__/index-test.mjs +81 -0
  219. package/dist/esm/modules/useMergeRefs/__tests__/index-test.mjs.map +1 -0
  220. package/dist/esm/modules/useMergeRefs/index.mjs +9 -0
  221. package/dist/esm/modules/useMergeRefs/index.mjs.map +1 -0
  222. package/dist/esm/modules/usePlatformMethods/index.mjs +12 -0
  223. package/dist/esm/modules/usePlatformMethods/index.mjs.map +1 -0
  224. package/dist/esm/modules/useStable/__tests__/index-test.mjs +71 -0
  225. package/dist/esm/modules/useStable/__tests__/index-test.mjs.map +1 -0
  226. package/dist/esm/modules/useStable/index.mjs +8 -0
  227. package/dist/esm/modules/useStable/index.mjs.map +1 -0
  228. package/dist/esm/styleTypes.mjs +2 -0
  229. package/dist/esm/styleTypes.mjs.map +1 -0
  230. package/dist/esm/types.mjs +2 -0
  231. package/dist/esm/types.mjs.map +1 -0
  232. package/package.json +58 -0
  233. package/src/StyleSheet/__tests__/compiler-createReactDOMStyle-test.tsx +236 -0
  234. package/src/StyleSheet/__tests__/compiler-test.tsx +426 -0
  235. package/src/StyleSheet/__tests__/dom-createOrderedCSSStyleSheet-test.tsx +169 -0
  236. package/src/StyleSheet/__tests__/index-test.tsx +406 -0
  237. package/src/StyleSheet/__tests__/preprocess-test.tsx +107 -0
  238. package/src/StyleSheet/__tests__/validate-test.tsx +42 -0
  239. package/src/StyleSheet/compiler/createReactDOMStyle.tsx +215 -0
  240. package/src/StyleSheet/compiler/hash.tsx +1 -0
  241. package/src/StyleSheet/compiler/hyphenateStyleName.tsx +25 -0
  242. package/src/StyleSheet/compiler/index.tsx +478 -0
  243. package/src/StyleSheet/compiler/normalizeColor.tsx +35 -0
  244. package/src/StyleSheet/compiler/normalizeValueWithProperty.tsx +34 -0
  245. package/src/StyleSheet/compiler/resolveShadowValue.tsx +26 -0
  246. package/src/StyleSheet/dom/createCSSStyleSheet.tsx +42 -0
  247. package/src/StyleSheet/dom/createOrderedCSSStyleSheet.tsx +195 -0
  248. package/src/StyleSheet/dom/index.tsx +92 -0
  249. package/src/StyleSheet/index.tsx +99 -0
  250. package/src/StyleSheet/preprocess.tsx +119 -0
  251. package/src/StyleSheet/validate.tsx +90 -0
  252. package/src/TextAncestorContext.tsx +13 -0
  253. package/src/colorProps.tsx +12 -0
  254. package/src/index.tsx +58 -0
  255. package/src/modules/AccessibilityUtil/__tests__/propsToAccessibilityComponent-test.tsx +44 -0
  256. package/src/modules/AccessibilityUtil/__tests__/propsToAriaRole-test.tsx +25 -0
  257. package/src/modules/AccessibilityUtil/index.tsx +18 -0
  258. package/src/modules/AccessibilityUtil/isDisabled.tsx +13 -0
  259. package/src/modules/AccessibilityUtil/propsToAccessibilityComponent.tsx +54 -0
  260. package/src/modules/AccessibilityUtil/propsToAriaRole.tsx +37 -0
  261. package/src/modules/AssetRegistry/index.tsx +32 -0
  262. package/src/modules/ImageLoader/index.tsx +165 -0
  263. package/src/modules/InteractionManager.tsx +315 -0
  264. package/src/modules/Platform/__tests__/index-test.tsx +45 -0
  265. package/src/modules/Platform/index.tsx +15 -0
  266. package/src/modules/TextInputState/index.tsx +62 -0
  267. package/src/modules/UIManager/__tests__/index-test.tsx +87 -0
  268. package/src/modules/UIManager/index.tsx +68 -0
  269. package/src/modules/canUseDOM.tsx +14 -0
  270. package/src/modules/createDOMProps/__tests__/index-test.tsx +138 -0
  271. package/src/modules/createDOMProps/index.tsx +436 -0
  272. package/src/modules/createEventHandle/__tests__/index-test.tsx +459 -0
  273. package/src/modules/createEventHandle/index.tsx +100 -0
  274. package/src/modules/dismissKeyboard/index.tsx +14 -0
  275. package/src/modules/forwardedProps/index.tsx +145 -0
  276. package/src/modules/getBoundingClientRect/index.tsx +17 -0
  277. package/src/modules/invariant.ts +23 -0
  278. package/src/modules/isSelectionValid/index.tsx +20 -0
  279. package/src/modules/isWebColor/index.tsx +14 -0
  280. package/src/modules/mergeRefs/__tests__/index-test.tsx +32 -0
  281. package/src/modules/mergeRefs/index.tsx +36 -0
  282. package/src/modules/modality/__tests__/index-test.tsx +66 -0
  283. package/src/modules/modality/index.tsx +228 -0
  284. package/src/modules/multiplyStyleLengthValue/__tests__/index-test.tsx +23 -0
  285. package/src/modules/multiplyStyleLengthValue/index.tsx +26 -0
  286. package/src/modules/normalizeColor/index.tsx +32 -0
  287. package/src/modules/pick/index.tsx +25 -0
  288. package/src/modules/processColor/__tests__/index-test.tsx +78 -0
  289. package/src/modules/processColor/index.tsx +28 -0
  290. package/src/modules/requestIdleCallback/index.tsx +35 -0
  291. package/src/modules/setValueForStyles/dangerousStyleValue.tsx +74 -0
  292. package/src/modules/setValueForStyles/index.tsx +39 -0
  293. package/src/modules/unitlessNumbers/index.tsx +77 -0
  294. package/src/modules/useElementLayout/index.tsx +28 -0
  295. package/src/modules/useEvent/__tests__/index-test.tsx +511 -0
  296. package/src/modules/useEvent/index.tsx +64 -0
  297. package/src/modules/useHover/__tests__/index-test.tsx +342 -0
  298. package/src/modules/useHover/index.tsx +181 -0
  299. package/src/modules/useLayoutEffect/index.ts +15 -0
  300. package/src/modules/useLocale/index.tsx +57 -0
  301. package/src/modules/useLocale/isLocaleRTL.tsx +74 -0
  302. package/src/modules/useMergeRefs/__tests__/index-test.tsx +91 -0
  303. package/src/modules/useMergeRefs/index.tsx +22 -0
  304. package/src/modules/usePlatformMethods/index.tsx +40 -0
  305. package/src/modules/useStable/__tests__/index-test.tsx +101 -0
  306. package/src/modules/useStable/index.tsx +24 -0
  307. package/src/styleTypes.ts +321 -0
  308. package/src/types.ts +77 -0
  309. package/types/StyleSheet/compiler/createReactDOMStyle.d.ts +18 -0
  310. package/types/StyleSheet/compiler/createReactDOMStyle.d.ts.map +1 -0
  311. package/types/StyleSheet/compiler/hash.d.ts +2 -0
  312. package/types/StyleSheet/compiler/hash.d.ts.map +1 -0
  313. package/types/StyleSheet/compiler/hyphenateStyleName.d.ts +10 -0
  314. package/types/StyleSheet/compiler/hyphenateStyleName.d.ts.map +1 -0
  315. package/types/StyleSheet/compiler/index.d.ts +39 -0
  316. package/types/StyleSheet/compiler/index.d.ts.map +1 -0
  317. package/types/StyleSheet/compiler/normalizeColor.d.ts +10 -0
  318. package/types/StyleSheet/compiler/normalizeColor.d.ts.map +1 -0
  319. package/types/StyleSheet/compiler/normalizeValueWithProperty.d.ts +10 -0
  320. package/types/StyleSheet/compiler/normalizeValueWithProperty.d.ts.map +1 -0
  321. package/types/StyleSheet/compiler/resolveShadowValue.d.ts +10 -0
  322. package/types/StyleSheet/compiler/resolveShadowValue.d.ts.map +1 -0
  323. package/types/StyleSheet/dom/createCSSStyleSheet.d.ts +10 -0
  324. package/types/StyleSheet/dom/createCSSStyleSheet.d.ts.map +1 -0
  325. package/types/StyleSheet/dom/createOrderedCSSStyleSheet.d.ts +29 -0
  326. package/types/StyleSheet/dom/createOrderedCSSStyleSheet.d.ts.map +1 -0
  327. package/types/StyleSheet/dom/index.d.ts +15 -0
  328. package/types/StyleSheet/dom/index.d.ts.map +1 -0
  329. package/types/StyleSheet/index.d.ts +69 -0
  330. package/types/StyleSheet/index.d.ts.map +1 -0
  331. package/types/StyleSheet/preprocess.d.ts +16 -0
  332. package/types/StyleSheet/preprocess.d.ts.map +1 -0
  333. package/types/StyleSheet/validate.d.ts +10 -0
  334. package/types/StyleSheet/validate.d.ts.map +1 -0
  335. package/types/TextAncestorContext.d.ts +11 -0
  336. package/types/TextAncestorContext.d.ts.map +1 -0
  337. package/types/colorProps.d.ts +13 -0
  338. package/types/colorProps.d.ts.map +1 -0
  339. package/types/index.d.ts +45 -0
  340. package/types/index.d.ts.map +1 -0
  341. package/types/modules/AccessibilityUtil/index.d.ts +16 -0
  342. package/types/modules/AccessibilityUtil/index.d.ts.map +1 -0
  343. package/types/modules/AccessibilityUtil/isDisabled.d.ts +10 -0
  344. package/types/modules/AccessibilityUtil/isDisabled.d.ts.map +1 -0
  345. package/types/modules/AccessibilityUtil/propsToAccessibilityComponent.d.ts +10 -0
  346. package/types/modules/AccessibilityUtil/propsToAccessibilityComponent.d.ts.map +1 -0
  347. package/types/modules/AccessibilityUtil/propsToAriaRole.d.ts +12 -0
  348. package/types/modules/AccessibilityUtil/propsToAriaRole.d.ts.map +1 -0
  349. package/types/modules/AssetRegistry/index.d.ts +22 -0
  350. package/types/modules/AssetRegistry/index.d.ts.map +1 -0
  351. package/types/modules/ImageLoader/index.d.ts +27 -0
  352. package/types/modules/ImageLoader/index.d.ts.map +1 -0
  353. package/types/modules/InteractionManager.d.ts +48 -0
  354. package/types/modules/InteractionManager.d.ts.map +1 -0
  355. package/types/modules/Platform/index.d.ts +15 -0
  356. package/types/modules/Platform/index.d.ts.map +1 -0
  357. package/types/modules/TextInputState/index.d.ts +38 -0
  358. package/types/modules/TextInputState/index.d.ts.map +1 -0
  359. package/types/modules/UIManager/index.d.ts +23 -0
  360. package/types/modules/UIManager/index.d.ts.map +1 -0
  361. package/types/modules/canUseDOM.d.ts +10 -0
  362. package/types/modules/canUseDOM.d.ts.map +1 -0
  363. package/types/modules/createDOMProps/index.d.ts +12 -0
  364. package/types/modules/createDOMProps/index.d.ts.map +1 -0
  365. package/types/modules/createEventHandle/index.d.ts +20 -0
  366. package/types/modules/createEventHandle/index.d.ts.map +1 -0
  367. package/types/modules/dismissKeyboard/index.d.ts +10 -0
  368. package/types/modules/dismissKeyboard/index.d.ts.map +1 -0
  369. package/types/modules/forwardedProps/index.d.ts +383 -0
  370. package/types/modules/forwardedProps/index.d.ts.map +1 -0
  371. package/types/modules/getBoundingClientRect/index.d.ts +10 -0
  372. package/types/modules/getBoundingClientRect/index.d.ts.map +1 -0
  373. package/types/modules/invariant.d.ts +3 -0
  374. package/types/modules/invariant.d.ts.map +1 -0
  375. package/types/modules/isSelectionValid/index.d.ts +10 -0
  376. package/types/modules/isSelectionValid/index.d.ts.map +1 -0
  377. package/types/modules/isWebColor/index.d.ts +10 -0
  378. package/types/modules/isWebColor/index.d.ts.map +1 -0
  379. package/types/modules/mergeRefs/index.d.ts +11 -0
  380. package/types/modules/mergeRefs/index.d.ts.map +1 -0
  381. package/types/modules/modality/index.d.ts +17 -0
  382. package/types/modules/modality/index.d.ts.map +1 -0
  383. package/types/modules/multiplyStyleLengthValue/index.d.ts +10 -0
  384. package/types/modules/multiplyStyleLengthValue/index.d.ts.map +1 -0
  385. package/types/modules/normalizeColor/index.d.ts +10 -0
  386. package/types/modules/normalizeColor/index.d.ts.map +1 -0
  387. package/types/modules/pick/index.d.ts +12 -0
  388. package/types/modules/pick/index.d.ts.map +1 -0
  389. package/types/modules/processColor/index.d.ts +11 -0
  390. package/types/modules/processColor/index.d.ts.map +1 -0
  391. package/types/modules/requestIdleCallback/index.d.ts +3 -0
  392. package/types/modules/requestIdleCallback/index.d.ts.map +1 -0
  393. package/types/modules/setValueForStyles/dangerousStyleValue.d.ts +11 -0
  394. package/types/modules/setValueForStyles/dangerousStyleValue.d.ts.map +1 -0
  395. package/types/modules/setValueForStyles/index.d.ts +9 -0
  396. package/types/modules/setValueForStyles/index.d.ts.map +1 -0
  397. package/types/modules/unitlessNumbers/index.d.ts +60 -0
  398. package/types/modules/unitlessNumbers/index.d.ts.map +1 -0
  399. package/types/modules/useElementLayout/index.d.ts +4 -0
  400. package/types/modules/useElementLayout/index.d.ts.map +1 -0
  401. package/types/modules/useEvent/index.d.ts +24 -0
  402. package/types/modules/useEvent/index.d.ts.map +1 -0
  403. package/types/modules/useHover/index.d.ts +21 -0
  404. package/types/modules/useHover/index.d.ts.map +1 -0
  405. package/types/modules/useLayoutEffect/index.d.ts +13 -0
  406. package/types/modules/useLayoutEffect/index.d.ts.map +1 -0
  407. package/types/modules/useLocale/index.d.ts +14 -0
  408. package/types/modules/useLocale/index.d.ts.map +1 -0
  409. package/types/modules/useLocale/isLocaleRTL.d.ts +13 -0
  410. package/types/modules/useLocale/isLocaleRTL.d.ts.map +1 -0
  411. package/types/modules/useMergeRefs/index.d.ts +11 -0
  412. package/types/modules/useMergeRefs/index.d.ts.map +1 -0
  413. package/types/modules/usePlatformMethods/index.d.ts +18 -0
  414. package/types/modules/usePlatformMethods/index.d.ts.map +1 -0
  415. package/types/modules/useStable/index.d.ts +10 -0
  416. package/types/modules/useStable/index.d.ts.map +1 -0
  417. package/types/styleTypes.d.ts +211 -0
  418. package/types/styleTypes.d.ts.map +1 -0
  419. package/types/types.d.ts +46 -0
  420. package/types/types.d.ts.map +1 -0
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright (c) Nicolas Gallagher.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ */
9
+
10
+ export const getBoundingClientRect = (node: HTMLElement | null): void | ClientRect => {
11
+ if (node != null) {
12
+ const isElement = node.nodeType === 1 /* Node.ELEMENT_NODE */
13
+ if (isElement && typeof node.getBoundingClientRect === 'function') {
14
+ return node.getBoundingClientRect()
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,23 @@
1
+ export function invariant(condition: any, log: string, ...logVars: string[]) {
2
+ if (!condition) {
3
+ throw new Error(
4
+ process.env.NODE_ENV === 'development'
5
+ ? log
6
+ .split('%s')
7
+ .flatMap((chunk, i) => [chunk, logVars[i]])
8
+ .join('')
9
+ : log
10
+ )
11
+ }
12
+ }
13
+
14
+ export function warning(condition: any, log: string, ...logVars: string[]) {
15
+ if (process.env.NODE_ENV === 'development') {
16
+ try {
17
+ invariant(condition, log, ...logVars)
18
+ } catch (err) {
19
+ console.warn(err)
20
+ // allow to pass through
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright (c) Nicolas Gallagher
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+ export function isSelectionValid(): boolean {
11
+ const selection = window.getSelection()
12
+ if (!selection) return false
13
+ const string = selection.toString()
14
+ const anchorNode = selection.anchorNode
15
+ const focusNode = selection.focusNode
16
+ const isTextNode =
17
+ (anchorNode && anchorNode.nodeType === window.Node.TEXT_NODE) ||
18
+ (focusNode && focusNode.nodeType === window.Node.TEXT_NODE)
19
+ return string.length >= 1 && string !== '\n' && !!isTextNode
20
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Copyright (c) Nicolas Gallagher.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+ export const isWebColor = (color: string): boolean =>
11
+ color === 'currentcolor' ||
12
+ color === 'currentColor' ||
13
+ color === 'inherit' ||
14
+ color.startsWith('var(')
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import { render } from '@testing-library/react'
9
+ import * as React from 'react'
10
+
11
+ import mergeRefs from '..'
12
+
13
+ describe('modules/mergeRefs', () => {
14
+ test('merges refs of different types', () => {
15
+ const ref = React.createRef(null)
16
+ let functionRefValue = null
17
+ let hookRef
18
+ function Component() {
19
+ const functionRef = (x) => {
20
+ functionRefValue = x
21
+ }
22
+ hookRef = React.useRef(null)
23
+ return <div ref={mergeRefs(ref, hookRef, functionRef)} />
24
+ }
25
+
26
+ render(<Component />)
27
+
28
+ expect(ref.current).toBeInstanceOf(HTMLDivElement)
29
+ expect(hookRef.current).toBeInstanceOf(HTMLDivElement)
30
+ expect(functionRefValue).toBeInstanceOf(HTMLDivElement)
31
+ })
32
+ })
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ */
9
+
10
+ import type * as React from 'react'
11
+
12
+ export function mergeRefs(
13
+ ...args: ReadonlyArray<React.Ref<any>>
14
+ ): (node: HTMLElement | null) => void {
15
+ return function forwardRef(node: HTMLElement | null) {
16
+ args.forEach((ref: React.Ref<any>) => {
17
+ if (ref == null) {
18
+ return
19
+ }
20
+ if (typeof ref === 'function') {
21
+ ref(node)
22
+ return
23
+ }
24
+ if (typeof ref === 'object') {
25
+ // @ts-ignore
26
+ ref.current = node
27
+ return
28
+ }
29
+ console.error(
30
+ `mergeRefs cannot handle Refs of type boolean, number or string, received ref ${String(
31
+ ref
32
+ )}`
33
+ )
34
+ })
35
+ }
36
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Copyright (c) Nicolas Gallagher.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import {
9
+ clearPointers,
10
+ createEventTarget,
11
+ describeWithPointerEvent,
12
+ setPointerEvent,
13
+ testWithPointerType,
14
+ } from 'dom-event-testing-library'
15
+
16
+ import { getActiveModality, getModality, testOnly_resetActiveModality } from '..'
17
+
18
+ describeWithPointerEvent('modules/modality', (hasPointerEvent) => {
19
+ let rootNode
20
+
21
+ beforeEach(() => {
22
+ setPointerEvent(hasPointerEvent)
23
+ rootNode = document.createElement('div')
24
+ document.body.appendChild(rootNode)
25
+ })
26
+
27
+ afterEach(() => {
28
+ document.body.removeChild(rootNode)
29
+ rootNode = null
30
+ clearPointers()
31
+ testOnly_resetActiveModality()
32
+ })
33
+
34
+ describe('getModality', () => {
35
+ testWithPointerType('reflects currently-in-use modality', (pointerType) => {
36
+ const target = createEventTarget(rootNode)
37
+ expect(getModality()).toBe('keyboard')
38
+ target.pointerdown({ pointerType })
39
+ expect(getModality()).toBe(pointerType)
40
+ target.pointerup({ pointerType })
41
+ target.keydown()
42
+ expect(getModality()).toBe('keyboard')
43
+ if (pointerType !== 'touch') {
44
+ target.pointermove({ pointerType })
45
+ expect(getModality()).toBe(pointerType)
46
+ target.keydown()
47
+ expect(getModality()).toBe('keyboard')
48
+ }
49
+ })
50
+ })
51
+
52
+ describe('getActiveModality', () => {
53
+ testWithPointerType('reflects last actively used modality', (pointerType) => {
54
+ const target = createEventTarget(rootNode)
55
+ expect(getActiveModality()).toBe('keyboard')
56
+ target.pointerdown({ pointerType })
57
+ expect(getActiveModality()).toBe(pointerType)
58
+ target.pointerup({ pointerType })
59
+ target.keydown()
60
+ if (pointerType !== 'touch') {
61
+ target.pointermove({ pointerType })
62
+ expect(getActiveModality()).toBe('keyboard')
63
+ }
64
+ })
65
+ })
66
+ })
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Copyright (c) Nicolas Gallagher.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+ import { canUseDOM } from '../canUseDOM'
11
+ import { createEventHandle } from '../createEventHandle/index'
12
+
13
+ export type Modality = 'keyboard' | 'mouse' | 'touch' | 'pen'
14
+
15
+ const supportsPointerEvent = () =>
16
+ !!(typeof window !== 'undefined' && window.PointerEvent != null)
17
+
18
+ let activeModality = 'keyboard'
19
+ let modality = 'keyboard'
20
+ let previousModality
21
+ let previousActiveModality
22
+ let isEmulatingMouseEvents = false
23
+ const listeners = new Set()
24
+
25
+ const KEYBOARD = 'keyboard'
26
+ const MOUSE = 'mouse'
27
+ const TOUCH = 'touch'
28
+
29
+ const BLUR = 'blur'
30
+ const CONTEXTMENU = 'contextmenu'
31
+ const FOCUS = 'focus'
32
+ const KEYDOWN = 'keydown'
33
+ const MOUSEDOWN = 'mousedown'
34
+ const MOUSEMOVE = 'mousemove'
35
+ const MOUSEUP = 'mouseup'
36
+ const POINTERDOWN = 'pointerdown'
37
+ const POINTERMOVE = 'pointermove'
38
+ const SCROLL = 'scroll'
39
+ const SELECTIONCHANGE = 'selectionchange'
40
+ const TOUCHCANCEL = 'touchcancel'
41
+ const TOUCHMOVE = 'touchmove'
42
+ const TOUCHSTART = 'touchstart'
43
+ const VISIBILITYCHANGE = 'visibilitychange'
44
+
45
+ const bubbleOptions = { passive: true }
46
+ const captureOptions = { capture: true, passive: true }
47
+
48
+ // Window events
49
+ const addBlurListener = createEventHandle(BLUR, bubbleOptions)
50
+ const addFocusListener = createEventHandle(FOCUS, bubbleOptions)
51
+ // Must be capture phase because 'stopPropagation' might prevent these
52
+ // events bubbling to the document.
53
+ const addVisibilityChangeListener = createEventHandle(VISIBILITYCHANGE, captureOptions)
54
+ const addKeyDownListener = createEventHandle(KEYDOWN, captureOptions)
55
+ const addPointerDownListener = createEventHandle(POINTERDOWN, captureOptions)
56
+ const addPointerMoveListener = createEventHandle(POINTERMOVE, captureOptions)
57
+ // Fallback events
58
+ const addContextMenuListener = createEventHandle(CONTEXTMENU, captureOptions)
59
+ const addMouseDownListener = createEventHandle(MOUSEDOWN, captureOptions)
60
+ const addMouseMoveListener = createEventHandle(MOUSEMOVE, captureOptions)
61
+ const addMouseUpListener = createEventHandle(MOUSEUP, captureOptions)
62
+ const addScrollListener = createEventHandle(SCROLL, captureOptions)
63
+ const addSelectiomChangeListener = createEventHandle(SELECTIONCHANGE, captureOptions)
64
+ const addTouchCancelListener = createEventHandle(TOUCHCANCEL, captureOptions)
65
+ const addTouchMoveListener = createEventHandle(TOUCHMOVE, captureOptions)
66
+ const addTouchStartListener = createEventHandle(TOUCHSTART, captureOptions)
67
+
68
+ function restoreModality() {
69
+ if (previousModality != null || previousActiveModality != null) {
70
+ if (previousModality != null) {
71
+ modality = previousModality
72
+ previousModality = null
73
+ }
74
+ if (previousActiveModality != null) {
75
+ activeModality = previousActiveModality
76
+ previousActiveModality = null
77
+ }
78
+ callListeners()
79
+ }
80
+ }
81
+
82
+ function onBlurWindow() {
83
+ previousModality = modality
84
+ previousActiveModality = activeModality
85
+ activeModality = KEYBOARD
86
+ modality = KEYBOARD
87
+ callListeners()
88
+ // for fallback events
89
+ isEmulatingMouseEvents = false
90
+ }
91
+
92
+ function onFocusWindow() {
93
+ restoreModality()
94
+ }
95
+
96
+ function onKeyDown(event) {
97
+ if (event.metaKey || event.altKey || event.ctrlKey) {
98
+ return
99
+ }
100
+ if (modality !== KEYBOARD) {
101
+ modality = KEYBOARD
102
+ activeModality = KEYBOARD
103
+ callListeners()
104
+ }
105
+ }
106
+
107
+ function onVisibilityChange() {
108
+ if (document.visibilityState !== 'hidden') {
109
+ restoreModality()
110
+ }
111
+ }
112
+
113
+ function onPointerish(event: any) {
114
+ const eventType = event.type
115
+
116
+ if (supportsPointerEvent()) {
117
+ if (eventType === POINTERDOWN) {
118
+ if (activeModality !== event.pointerType) {
119
+ modality = event.pointerType
120
+ activeModality = event.pointerType
121
+ callListeners()
122
+ }
123
+ return
124
+ }
125
+ if (eventType === POINTERMOVE) {
126
+ if (modality !== event.pointerType) {
127
+ modality = event.pointerType
128
+ callListeners()
129
+ }
130
+ return
131
+ }
132
+ }
133
+ // Fallback for non-PointerEvent environment
134
+ else {
135
+ if (!isEmulatingMouseEvents) {
136
+ if (eventType === MOUSEDOWN) {
137
+ if (activeModality !== MOUSE) {
138
+ modality = MOUSE
139
+ activeModality = MOUSE
140
+ callListeners()
141
+ }
142
+ }
143
+ if (eventType === MOUSEMOVE) {
144
+ if (modality !== MOUSE) {
145
+ modality = MOUSE
146
+ callListeners()
147
+ }
148
+ }
149
+ }
150
+
151
+ // Flag when browser may produce emulated events
152
+ if (eventType === TOUCHSTART) {
153
+ isEmulatingMouseEvents = true
154
+ if (event.touches && event.touches.length > 1) {
155
+ isEmulatingMouseEvents = false
156
+ }
157
+ if (activeModality !== TOUCH) {
158
+ modality = TOUCH
159
+ activeModality = TOUCH
160
+ callListeners()
161
+ }
162
+ return
163
+ }
164
+
165
+ // Remove flag after emulated events are finished or cancelled, and if an
166
+ // event occurs that cuts short a touch event sequence.
167
+ if (
168
+ eventType === CONTEXTMENU ||
169
+ eventType === MOUSEUP ||
170
+ eventType === SELECTIONCHANGE ||
171
+ eventType === SCROLL ||
172
+ eventType === TOUCHCANCEL ||
173
+ eventType === TOUCHMOVE
174
+ ) {
175
+ isEmulatingMouseEvents = false
176
+ }
177
+ }
178
+ }
179
+
180
+ if (canUseDOM) {
181
+ addBlurListener(window, onBlurWindow)
182
+ addFocusListener(window, onFocusWindow)
183
+ addKeyDownListener(document, onKeyDown)
184
+ addPointerDownListener(document, onPointerish)
185
+ addPointerMoveListener(document, onPointerish)
186
+ addVisibilityChangeListener(document, onVisibilityChange)
187
+ // fallbacks
188
+ addContextMenuListener(document, onPointerish)
189
+ addMouseDownListener(document, onPointerish)
190
+ addMouseMoveListener(document, onPointerish)
191
+ addMouseUpListener(document, onPointerish)
192
+ addTouchCancelListener(document, onPointerish)
193
+ addTouchMoveListener(document, onPointerish)
194
+ addTouchStartListener(document, onPointerish)
195
+ addSelectiomChangeListener(document, onPointerish)
196
+ addScrollListener(document, onPointerish)
197
+ }
198
+
199
+ function callListeners() {
200
+ const value = { activeModality, modality }
201
+ listeners.forEach((listener) => {
202
+ // @ts-ignore
203
+ listener(value)
204
+ })
205
+ }
206
+
207
+ export function getActiveModality() {
208
+ return activeModality as Modality
209
+ }
210
+
211
+ export function getModality() {
212
+ return modality as Modality
213
+ }
214
+
215
+ export function addModalityListener(
216
+ listener: (arg0: { activeModality: Modality; modality: Modality }) => void
217
+ ): () => void {
218
+ listeners.add(listener)
219
+ return () => {
220
+ listeners.delete(listener)
221
+ }
222
+ }
223
+
224
+ export function testOnly_resetActiveModality() {
225
+ isEmulatingMouseEvents = false
226
+ activeModality = KEYBOARD
227
+ modality = KEYBOARD
228
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Copyright (c) Nicolas Gallagher.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import multiplyStyleLengthValue from '..'
9
+
10
+ describe('modules/multiplyStyleLengthValue', () => {
11
+ test('number', () => {
12
+ expect(multiplyStyleLengthValue(2, -1)).toEqual(-2)
13
+ expect(multiplyStyleLengthValue(2, 2)).toEqual(4)
14
+ expect(multiplyStyleLengthValue(2.5, 2)).toEqual(5)
15
+ })
16
+
17
+ test('length', () => {
18
+ expect(multiplyStyleLengthValue('2rem', -1)).toEqual('-2rem')
19
+ expect(multiplyStyleLengthValue('2px', 2)).toEqual('4px')
20
+ expect(multiplyStyleLengthValue('2.5em', 2)).toEqual('5em')
21
+ expect(multiplyStyleLengthValue('2e3px', 2)).toEqual('4000px')
22
+ })
23
+ })
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Copyright (c) Nicolas Gallagher.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @noflow
8
+ */
9
+
10
+ const CSS_UNIT_RE = /^[+-]?\d*(?:\.\d+)?(?:[Ee][+-]?\d+)?(%|\w*)/
11
+
12
+ const getUnit = (str) => str.match(CSS_UNIT_RE)[1]
13
+
14
+ const isNumeric = (n) => {
15
+ return !isNaN(parseFloat(n)) && isFinite(n)
16
+ }
17
+
18
+ export const multiplyStyleLengthValue = (value: string | number, multiple) => {
19
+ if (typeof value === 'string') {
20
+ const number = parseFloat(value) * multiple
21
+ const unit = getUnit(value)
22
+ return `${number}${unit}`
23
+ } else if (isNumeric(value)) {
24
+ return value * multiple
25
+ }
26
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright (c) Nicolas Gallagher.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+ import { isWebColor } from '../isWebColor/index'
11
+ import { processColor } from '../processColor/index'
12
+
13
+ export const normalizeColor = (
14
+ color: number | string | null | undefined,
15
+ opacity = 1
16
+ ): void | string => {
17
+ if (color == null) return
18
+
19
+ if (typeof color === 'string' && isWebColor(color)) {
20
+ return color
21
+ }
22
+
23
+ const colorInt = processColor(color)
24
+ if (colorInt != null) {
25
+ const r = (colorInt >> 16) & 255
26
+ const g = (colorInt >> 8) & 255
27
+ const b = colorInt & 255
28
+ const a = ((colorInt >> 24) & 255) / 255
29
+ const alpha = (a * opacity).toFixed(2)
30
+ return `rgba(${r},${g},${b},${alpha})`
31
+ }
32
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright (c) Nicolas Gallagher.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+
10
+ export function pick(
11
+ obj: object,
12
+ list: {
13
+ [K in string]: boolean
14
+ }
15
+ ): object {
16
+ const nextObj = {}
17
+ for (const key in obj) {
18
+ if (obj.hasOwnProperty(key)) {
19
+ if (list[key] === true) {
20
+ nextObj[key] = obj[key]
21
+ }
22
+ }
23
+ }
24
+ return nextObj
25
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Copyright (c) Nicolas Gallagher.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import processColor from '..'
9
+
10
+ const platformSpecific = (x) => x
11
+
12
+ describe('processColor', () => {
13
+ describe('predefined color names', () => {
14
+ it('should convert red', () => {
15
+ const colorFromString = processColor('red')
16
+ const expectedInt = 0xffff0000
17
+ expect(colorFromString).toEqual(platformSpecific(expectedInt))
18
+ })
19
+
20
+ it('should convert white', () => {
21
+ const colorFromString = processColor('white')
22
+ const expectedInt = 0xffffffff
23
+ expect(colorFromString).toEqual(platformSpecific(expectedInt))
24
+ })
25
+
26
+ it('should convert black', () => {
27
+ const colorFromString = processColor('black')
28
+ const expectedInt = 0xff000000
29
+ expect(colorFromString).toEqual(platformSpecific(expectedInt))
30
+ })
31
+
32
+ it('should convert transparent', () => {
33
+ const colorFromString = processColor('transparent')
34
+ const expectedInt = 0x00000000
35
+ expect(colorFromString).toEqual(platformSpecific(expectedInt))
36
+ })
37
+ })
38
+
39
+ describe('RGB strings', () => {
40
+ it('should convert rgb(x, y, z)', () => {
41
+ const colorFromString = processColor('rgb(10, 20, 30)')
42
+ const expectedInt = 0xff0a141e
43
+ expect(colorFromString).toEqual(platformSpecific(expectedInt))
44
+ })
45
+ })
46
+
47
+ describe('RGBA strings', () => {
48
+ it('should convert rgba(x, y, z, a)', () => {
49
+ const colorFromString = processColor('rgba(10, 20, 30, 0.4)')
50
+ const expectedInt = 0x660a141e
51
+ expect(colorFromString).toEqual(platformSpecific(expectedInt))
52
+ })
53
+ })
54
+
55
+ describe('HSL strings', () => {
56
+ it('should convert hsl(x, y%, z%)', () => {
57
+ const colorFromString = processColor('hsl(318, 69%, 55%)')
58
+ const expectedInt = 0xffdb3dac
59
+ expect(colorFromString).toEqual(platformSpecific(expectedInt))
60
+ })
61
+ })
62
+
63
+ describe('HSLA strings', () => {
64
+ it('should convert hsla(x, y%, z%, a)', () => {
65
+ const colorFromString = processColor('hsla(318, 69%, 55%, 0.25)')
66
+ const expectedInt = 0x40db3dac
67
+ expect(colorFromString).toEqual(platformSpecific(expectedInt))
68
+ })
69
+ })
70
+
71
+ describe('hex strings', () => {
72
+ it('should convert #xxxxxx', () => {
73
+ const colorFromString = processColor('#1e83c9')
74
+ const expectedInt = 0xff1e83c9
75
+ expect(colorFromString).toEqual(platformSpecific(expectedInt))
76
+ })
77
+ })
78
+ })
@@ -0,0 +1,28 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Copyright (c) Nicolas Gallagher.
4
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ *
9
+ * @flow
10
+ */
11
+
12
+ import normalizeColor from '@hanzogui/normalize-css-color'
13
+
14
+ export const processColor = (color?: string | number): number | null => {
15
+ if (color === undefined || color === null) {
16
+ return color
17
+ }
18
+
19
+ // convert number and hex
20
+ let int32Color = normalizeColor(color)
21
+ if (int32Color === undefined || int32Color === null) {
22
+ return undefined
23
+ }
24
+
25
+ int32Color = ((int32Color << 24) | (int32Color >>> 8)) >>> 0
26
+
27
+ return int32Color
28
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copyright (c) Nicolas Gallagher.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow
8
+ */
9
+ import { canUseDOM } from '../canUseDOM'
10
+
11
+ const _requestIdleCallback = function (cb: Function, options?: object) {
12
+ return setTimeout(() => {
13
+ const start = Date.now()
14
+ cb({
15
+ didTimeout: false,
16
+ timeRemaining() {
17
+ return Math.max(0, 50 - (Date.now() - start))
18
+ },
19
+ })
20
+ }, 1)
21
+ }
22
+
23
+ const _cancelIdleCallback = function (id) {
24
+ clearTimeout(id)
25
+ }
26
+
27
+ const isSupported = canUseDOM && typeof window.requestIdleCallback !== 'undefined'
28
+
29
+ export const requestIdleCallback = isSupported
30
+ ? window.requestIdleCallback
31
+ : _requestIdleCallback
32
+
33
+ export const cancelIdleCallback = isSupported
34
+ ? window.cancelIdleCallback
35
+ : _cancelIdleCallback