@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,478 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Copyright (c) Nicolas Gallagher.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ *
8
+ * @flow strict-local
9
+ */
10
+
11
+ import { simpleHash } from '@hanzogui/simple-hash'
12
+
13
+ import { createReactDOMStyle } from './createReactDOMStyle'
14
+ import { hyphenateStyleName } from './hyphenateStyleName'
15
+ import { normalizeValueWithProperty } from './normalizeValueWithProperty'
16
+
17
+ type Value = object | Array<any> | string | number
18
+
19
+ type Style = {
20
+ [K in string]: Value
21
+ }
22
+
23
+ type Rule = string
24
+ type Rules = Array<Rule>
25
+ type RulesData = [Rules, number]
26
+
27
+ type CompiledStyle = {
28
+ [K in string]: string | Array<string>
29
+ }
30
+
31
+ type CompilerOutput = [CompiledStyle, Array<RulesData>]
32
+
33
+ const cache = new Map()
34
+ const emptyObject = {}
35
+
36
+ const classicGroup = 1
37
+ const atomicGroup = 2.2
38
+ const customGroup: {
39
+ [K in string]: number
40
+ } = {
41
+ borderColor: 2,
42
+ borderRadius: 2,
43
+ borderStyle: 2,
44
+ borderWidth: 2,
45
+ display: 2,
46
+ flex: 2,
47
+ margin: 2,
48
+ overflow: 2,
49
+ overscrollBehavior: 2,
50
+ padding: 2,
51
+ marginHorizontal: 2.1,
52
+ marginVertical: 2.1,
53
+ paddingHorizontal: 2.1,
54
+ paddingVertical: 2.1,
55
+ }
56
+
57
+ const borderTopLeftRadius = 'borderTopLeftRadius'
58
+ const borderTopRightRadius = 'borderTopRightRadius'
59
+ const borderBottomLeftRadius = 'borderBottomLeftRadius'
60
+ const borderBottomRightRadius = 'borderBottomRightRadius'
61
+ const borderLeftColor = 'borderLeftColor'
62
+ const borderLeftStyle = 'borderLeftStyle'
63
+ const borderLeftWidth = 'borderLeftWidth'
64
+ const borderRightColor = 'borderRightColor'
65
+ const borderRightStyle = 'borderRightStyle'
66
+ const borderRightWidth = 'borderRightWidth'
67
+ const right = 'right'
68
+ const marginLeft = 'marginLeft'
69
+ const marginRight = 'marginRight'
70
+ const paddingLeft = 'paddingLeft'
71
+ const paddingRight = 'paddingRight'
72
+ const left = 'left'
73
+
74
+ // Map of LTR property names to their BiDi equivalent.
75
+ const PROPERTIES_FLIP: {
76
+ [K in string]: string
77
+ } = {
78
+ [borderTopLeftRadius]: borderTopRightRadius,
79
+ [borderTopRightRadius]: borderTopLeftRadius,
80
+ [borderBottomLeftRadius]: borderBottomRightRadius,
81
+ [borderBottomRightRadius]: borderBottomLeftRadius,
82
+ [borderLeftColor]: borderRightColor,
83
+ [borderLeftStyle]: borderRightStyle,
84
+ [borderLeftWidth]: borderRightWidth,
85
+ [borderRightColor]: borderLeftColor,
86
+ [borderRightStyle]: borderLeftStyle,
87
+ [borderRightWidth]: borderLeftWidth,
88
+ [left]: right,
89
+ [marginLeft]: marginRight,
90
+ [marginRight]: marginLeft,
91
+ [paddingLeft]: paddingRight,
92
+ [paddingRight]: paddingLeft,
93
+ [right]: left,
94
+ }
95
+
96
+ // Map of I18N property names to their LTR equivalent.
97
+ const PROPERTIES_I18N: {
98
+ [K in string]: string
99
+ } = {
100
+ borderTopStartRadius: borderTopLeftRadius,
101
+ borderTopEndRadius: borderTopRightRadius,
102
+ borderBottomStartRadius: borderBottomLeftRadius,
103
+ borderBottomEndRadius: borderBottomRightRadius,
104
+ borderStartColor: borderLeftColor,
105
+ borderStartStyle: borderLeftStyle,
106
+ borderStartWidth: borderLeftWidth,
107
+ borderEndColor: borderRightColor,
108
+ borderEndStyle: borderRightStyle,
109
+ borderEndWidth: borderRightWidth,
110
+ end: right,
111
+ marginStart: marginLeft,
112
+ marginEnd: marginRight,
113
+ paddingStart: paddingLeft,
114
+ paddingEnd: paddingRight,
115
+ start: left,
116
+ }
117
+
118
+ const PROPERTIES_VALUE = ['clear', 'float', 'textAlign']
119
+
120
+ export function atomic(style: Style): CompilerOutput {
121
+ const compiledStyle: CompiledStyle = { $$css: true }
122
+ const compiledRules = []
123
+
124
+ function atomicCompile(prop, value) {
125
+ const valueString = stringifyValueWithProperty(value, prop)
126
+ const cacheKey = prop + valueString
127
+ const cachedResult = cache.get(cacheKey)
128
+ let identifier
129
+ if (cachedResult != null) {
130
+ identifier = cachedResult[0]
131
+ compiledRules.push(cachedResult[1])
132
+ } else {
133
+ identifier = createIdentifier('r', prop, value)
134
+ const order = customGroup[prop] || atomicGroup
135
+ const rules = createAtomicRules(identifier, prop, value)
136
+ const orderedRules = [rules, order]
137
+ compiledRules.push(orderedRules)
138
+ cache.set(cacheKey, [identifier, orderedRules])
139
+ }
140
+ return identifier
141
+ }
142
+
143
+ Object.keys(style)
144
+ .sort()
145
+ .forEach((prop) => {
146
+ const value = style[prop]
147
+ if (value != null) {
148
+ let localizeableValue
149
+ // BiDi flip values
150
+ if (PROPERTIES_VALUE.indexOf(prop) > -1) {
151
+ const left = atomicCompile(prop, 'left')
152
+ const right = atomicCompile(prop, 'right')
153
+ if (value === 'start') {
154
+ localizeableValue = [left, right]
155
+ } else if (value === 'end') {
156
+ localizeableValue = [right, left]
157
+ }
158
+ }
159
+ // BiDi flip properties
160
+ const propPolyfill = PROPERTIES_I18N[prop]
161
+ if (propPolyfill != null) {
162
+ const ltr = atomicCompile(propPolyfill, value)
163
+ const rtl = atomicCompile(PROPERTIES_FLIP[propPolyfill], value)
164
+ localizeableValue = [ltr, rtl]
165
+ }
166
+ // BiDi flip transitionProperty value
167
+ if (prop === 'transitionProperty') {
168
+ const values = Array.isArray(value) ? value : [value]
169
+ const polyfillIndices = []
170
+
171
+ for (let i = 0; i < values.length; i++) {
172
+ const val = values[i]
173
+ if (typeof val === 'string' && PROPERTIES_I18N[val] != null) {
174
+ polyfillIndices.push(i)
175
+ }
176
+ }
177
+
178
+ if (polyfillIndices.length > 0) {
179
+ const ltrPolyfillValues = [...values]
180
+ const rtlPolyfillValues = [...values]
181
+ polyfillIndices.forEach((i) => {
182
+ const ltrVal = ltrPolyfillValues[i]
183
+ if (typeof ltrVal === 'string') {
184
+ const ltrPolyfill = PROPERTIES_I18N[ltrVal]
185
+ const rtlPolyfill = PROPERTIES_FLIP[ltrPolyfill]
186
+ ltrPolyfillValues[i] = ltrPolyfill
187
+ rtlPolyfillValues[i] = rtlPolyfill
188
+ const ltr = atomicCompile(prop, ltrPolyfillValues)
189
+ const rtl = atomicCompile(prop, rtlPolyfillValues)
190
+ localizeableValue = [ltr, rtl]
191
+ }
192
+ })
193
+ }
194
+ }
195
+
196
+ if (localizeableValue == null) {
197
+ localizeableValue = atomicCompile(prop, value)
198
+ } else {
199
+ compiledStyle['$$css$localize'] = true
200
+ }
201
+
202
+ compiledStyle[prop] = localizeableValue
203
+ }
204
+ })
205
+
206
+ return [compiledStyle, compiledRules]
207
+ }
208
+
209
+ /**
210
+ * Compile simple style object to classic CSS rules.
211
+ * No support for 'placeholderTextColor', 'scrollbarWidth', or 'pointerEvents'.
212
+ */
213
+ export function classic(style: Style, name: string): CompilerOutput {
214
+ const compiledStyle = { $$css: true }
215
+ const compiledRules = []
216
+
217
+ const { animationKeyframes, ...rest } = style
218
+ const identifier = createIdentifier('css', name, style)
219
+ const selector = `.${identifier}`
220
+ let animationName
221
+ if (animationKeyframes != null) {
222
+ const [animationNames, keyframesRules] = processKeyframesValue(animationKeyframes)
223
+ animationName = animationNames.join(',')
224
+ compiledRules.push(...keyframesRules)
225
+ }
226
+ const block = createDeclarationBlock({ ...rest, animationName })
227
+ compiledRules.push(`${selector}${block}`)
228
+
229
+ compiledStyle[identifier] = identifier
230
+ return [compiledStyle, [[compiledRules, classicGroup]]]
231
+ }
232
+
233
+ /**
234
+ * Compile simple style object to inline DOM styles.
235
+ * No support for 'animationKeyframes', 'placeholderTextColor', 'scrollbarWidth', or 'pointerEvents'.
236
+ */
237
+ export function inline(
238
+ originalStyle: Style,
239
+ isRTL?: boolean
240
+ ): {
241
+ [K in string]: unknown
242
+ } {
243
+ const style = originalStyle || emptyObject
244
+ const frozenProps = {}
245
+ const nextStyle = {}
246
+
247
+ for (const originalProp in style) {
248
+ const originalValue = style[originalProp]
249
+ let prop = originalProp
250
+ let value = originalValue
251
+
252
+ if (
253
+ !Object.prototype.hasOwnProperty.call(style, originalProp) ||
254
+ originalValue == null
255
+ ) {
256
+ continue
257
+ }
258
+
259
+ // BiDi flip values
260
+ if (PROPERTIES_VALUE.indexOf(originalProp) > -1) {
261
+ if (originalValue === 'start') {
262
+ value = isRTL ? 'right' : 'left'
263
+ } else if (originalValue === 'end') {
264
+ value = isRTL ? 'left' : 'right'
265
+ }
266
+ }
267
+ // BiDi flip properties
268
+ const propPolyfill = PROPERTIES_I18N[originalProp]
269
+ if (propPolyfill != null) {
270
+ prop = isRTL ? PROPERTIES_FLIP[propPolyfill] : propPolyfill
271
+ }
272
+ // BiDi flip transitionProperty value
273
+ if (originalProp === 'transitionProperty') {
274
+ // @ts-ignore
275
+ const originalValues = Array.isArray(originalValue)
276
+ ? originalValue
277
+ : [originalValue]
278
+ originalValues.forEach((val, i) => {
279
+ if (typeof val === 'string') {
280
+ const valuePolyfill = PROPERTIES_I18N[val]
281
+ if (valuePolyfill != null) {
282
+ originalValues[i] = isRTL ? PROPERTIES_FLIP[valuePolyfill] : valuePolyfill
283
+ }
284
+ }
285
+ })
286
+ }
287
+
288
+ // Create finalized style
289
+ if (!frozenProps[prop]) {
290
+ nextStyle[prop] = value
291
+ }
292
+
293
+ if (PROPERTIES_I18N.hasOwnProperty(originalProp)) {
294
+ frozenProps[prop] = true
295
+ }
296
+ }
297
+
298
+ return createReactDOMStyle(nextStyle, true)
299
+ }
300
+
301
+ /**
302
+ * Create a value string that normalizes different input values with a common
303
+ * output.
304
+ */
305
+ export function stringifyValueWithProperty(
306
+ value: Value,
307
+ property: string | null
308
+ ): string {
309
+ // e.g., 0 => '0px', 'black' => 'rgba(0,0,0,1)'
310
+ const normalizedValue = normalizeValueWithProperty(value, property)
311
+ return typeof normalizedValue !== 'string'
312
+ ? JSON.stringify(normalizedValue || '')
313
+ : normalizedValue
314
+ }
315
+
316
+ /**
317
+ * Create the Atomic CSS rules needed for a given StyleSheet rule.
318
+ * Translates StyleSheet declarations to CSS.
319
+ */
320
+ function createAtomicRules(identifier: string, property, value): Rules {
321
+ const rules = []
322
+ const selector = `.${identifier}`
323
+
324
+ // Handle non-standard properties and object values that require multiple
325
+ // CSS rules to be created.
326
+ switch (property) {
327
+ case 'animationKeyframes': {
328
+ const [animationNames, keyframesRules] = processKeyframesValue(value)
329
+ const block = createDeclarationBlock({
330
+ animationName: animationNames.join(','),
331
+ })
332
+ rules.push(`${selector}${block}`, ...keyframesRules)
333
+ break
334
+ }
335
+
336
+ // Equivalent to using '::placeholder'
337
+ case 'placeholderTextColor': {
338
+ const block = createDeclarationBlock({ color: value, opacity: 1 })
339
+ rules.push(
340
+ `${selector}::-webkit-input-placeholder${block}`,
341
+ `${selector}::-moz-placeholder${block}`,
342
+ `${selector}:-ms-input-placeholder${block}`,
343
+ `${selector}::placeholder${block}`
344
+ )
345
+ break
346
+ }
347
+
348
+ // Polyfill for additional 'pointer-events' values
349
+ // See d13f78622b233a0afc0c7a200c0a0792c8ca9e58
350
+ case 'pointerEvents': {
351
+ let finalValue = value
352
+ if (value === 'auto' || value === 'box-only') {
353
+ finalValue = 'auto!important'
354
+ if (value === 'box-only') {
355
+ const block = createDeclarationBlock({ pointerEvents: 'none' })
356
+ rules.push(`${selector}>*${block}`)
357
+ }
358
+ } else if (value === 'none' || value === 'box-none') {
359
+ finalValue = 'none!important'
360
+ if (value === 'box-none') {
361
+ const block = createDeclarationBlock({ pointerEvents: 'auto' })
362
+ rules.push(`${selector}>*${block}`)
363
+ }
364
+ }
365
+ const block = createDeclarationBlock({ pointerEvents: finalValue })
366
+ rules.push(`${selector}${block}`)
367
+ break
368
+ }
369
+
370
+ // Polyfill for draft spec
371
+ // https://drafts.csswg.org/css-scrollbars-1/
372
+ case 'scrollbarWidth': {
373
+ if (value === 'none') {
374
+ rules.push(`${selector}::-webkit-scrollbar{display:none}`)
375
+ }
376
+ const block = createDeclarationBlock({ scrollbarWidth: value })
377
+ rules.push(`${selector}${block}`)
378
+ break
379
+ }
380
+
381
+ default: {
382
+ const block = createDeclarationBlock({ [property]: value })
383
+ rules.push(`${selector}${block}`)
384
+ break
385
+ }
386
+ }
387
+
388
+ return rules
389
+ }
390
+
391
+ /**
392
+ * Creates a CSS declaration block from a StyleSheet object.
393
+ */
394
+ function createDeclarationBlock(style: Style): string {
395
+ const domStyle = createReactDOMStyle(style)
396
+
397
+ const declarationsString = Object.keys(domStyle)
398
+ .map((property) => {
399
+ const value = domStyle[property]
400
+ const prop = hyphenateStyleName(property)
401
+ // The prefixer may return an array of values:
402
+ // { display: [ '-webkit-flex', 'flex' ] }
403
+ // to represent "fallback" declarations
404
+ // { display: -webkit-flex; display: flex; }
405
+ if (Array.isArray(value)) {
406
+ return value.map((v) => `${prop}:${v}`).join(';')
407
+ } else {
408
+ return `${prop}:${value}`
409
+ }
410
+ })
411
+ // Once properties are hyphenated, this will put the vendor
412
+ // prefixed and short-form properties first in the list.
413
+ .sort()
414
+ .join(';')
415
+
416
+ return `{${declarationsString};}`
417
+ }
418
+
419
+ /**
420
+ * An identifier is associated with a unique set of styles.
421
+ */
422
+ function createIdentifier(prefix: string, name: string, value: Value): string {
423
+ const hashedString = simpleHash(name + stringifyValueWithProperty(value, name))
424
+ return process.env.NODE_ENV !== 'production'
425
+ ? `${prefix}-${name}-${hashedString}`
426
+ : `${prefix}-${hashedString}`
427
+ }
428
+
429
+ /**
430
+ * Create individual CSS keyframes rules.
431
+ */
432
+ function createKeyframes(keyframes: object): [string, Rules] {
433
+ const prefixes = ['-webkit-', '']
434
+ const identifier = createIdentifier('r', 'animation', keyframes)
435
+
436
+ const steps =
437
+ '{' +
438
+ Object.keys(keyframes)
439
+ .map((stepName) => {
440
+ const rule = keyframes[stepName]
441
+ const block = createDeclarationBlock(rule)
442
+ return `${stepName}${block}`
443
+ })
444
+ .join('') +
445
+ '}'
446
+
447
+ const rules = prefixes.map((prefix) => {
448
+ return `@${prefix}keyframes ${identifier}${steps}`
449
+ })
450
+ return [identifier, rules]
451
+ }
452
+
453
+ /**
454
+ * Create CSS keyframes rules and names from a StyleSheet keyframes object.
455
+ */
456
+ function processKeyframesValue(keyframesValue) {
457
+ if (typeof keyframesValue === 'number') {
458
+ throw new Error(`Invalid CSS keyframes type: ${typeof keyframesValue}`)
459
+ }
460
+
461
+ const animationNames = []
462
+ const rules = []
463
+ const value = Array.isArray(keyframesValue) ? keyframesValue : [keyframesValue]
464
+
465
+ value.forEach((keyframes) => {
466
+ if (typeof keyframes === 'string') {
467
+ // Support external animation libraries (identifiers only)
468
+ animationNames.push(keyframes)
469
+ } else {
470
+ // Create rules for each of the keyframes
471
+ const [identifier, keyframesRules] = createKeyframes(keyframes)
472
+ animationNames.push(identifier)
473
+ rules.push(...keyframesRules)
474
+ }
475
+ })
476
+
477
+ return [animationNames, rules]
478
+ }
@@ -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
+
10
+ import { isWebColor } from '../../modules/isWebColor'
11
+ import { processColor } from '../../modules/processColor'
12
+
13
+ export const normalizeColor = (color?: number | string, opacity = 1): void | string => {
14
+ if (color == null) return
15
+
16
+ if (typeof color === 'string' && isWebColor(color)) {
17
+ return color
18
+ }
19
+
20
+ const colorInt = processColor(color)
21
+ if (colorInt != null) {
22
+ const r = (colorInt >> 16) & 255
23
+ const g = (colorInt >> 8) & 255
24
+ const b = colorInt & 255
25
+ const a = ((colorInt >> 24) & 255) / 255
26
+ const alpha = (a * opacity).toFixed(2)
27
+ return `rgba(${r},${g},${b},${alpha})`
28
+ }
29
+
30
+ if (process.env.HANZO_GUI_TARGET === 'web') {
31
+ if (typeof color === 'string') {
32
+ return color
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,34 @@
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-local
8
+ */
9
+
10
+ import { unitlessNumbers } from '../../modules/unitlessNumbers/index'
11
+ import { normalizeColor } from './normalizeColor'
12
+
13
+ const colorProps = {
14
+ backgroundColor: true,
15
+ borderColor: true,
16
+ borderTopColor: true,
17
+ borderRightColor: true,
18
+ borderBottomColor: true,
19
+ borderLeftColor: true,
20
+ color: true,
21
+ shadowColor: true,
22
+ textDecorationColor: true,
23
+ textShadowColor: true,
24
+ }
25
+
26
+ export function normalizeValueWithProperty(value: any, property?: string | null): any {
27
+ let returnValue = value
28
+ if ((property == null || !unitlessNumbers[property]) && typeof value === 'number') {
29
+ returnValue = `${value}px`
30
+ } else if (property != null && colorProps[property]) {
31
+ returnValue = normalizeColor(value)
32
+ }
33
+ return returnValue
34
+ }
@@ -0,0 +1,26 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Copyright (c) Nicolas Gallagher.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ *
8
+ * @flow
9
+ */
10
+
11
+ import { normalizeColor } from './normalizeColor'
12
+ import { normalizeValueWithProperty } from './normalizeValueWithProperty'
13
+
14
+ const defaultOffset = { height: 0, width: 0 }
15
+
16
+ export const resolveShadowValue = (style: object): void | string => {
17
+ const { shadowColor, shadowOffset, shadowOpacity, shadowRadius } = style
18
+ const { height, width } = shadowOffset || defaultOffset
19
+ const offsetX = normalizeValueWithProperty(width)
20
+ const offsetY = normalizeValueWithProperty(height)
21
+ const blurRadius = normalizeValueWithProperty(shadowRadius || 0)
22
+ const color = normalizeColor(shadowColor || 'black', shadowOpacity)
23
+ if (color != null && offsetX != null && offsetY != null && blurRadius != null) {
24
+ return `${offsetX} ${offsetY} ${blurRadius} ${color}`
25
+ }
26
+ }
@@ -0,0 +1,42 @@
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-local
8
+ */
9
+
10
+ import { canUseDOM } from '../../modules/canUseDOM'
11
+
12
+ // @ts-ignore : HTMLStyleElement is incorrectly typed - https://github.com/facebook/flow/issues/2696
13
+ export function createCSSStyleSheet(
14
+ id: string,
15
+ rootNode?: Document | ShadowRoot,
16
+ textContent?: string
17
+ ): CSSStyleSheet | null {
18
+ if (canUseDOM) {
19
+ const root = rootNode != null ? rootNode : document
20
+ let element = root.getElementById(id)
21
+ if (element == null) {
22
+ element = document.createElement('style')
23
+ element.setAttribute('id', id)
24
+ if (typeof textContent === 'string') {
25
+ element.appendChild(document.createTextNode(textContent))
26
+ }
27
+ if (root instanceof ShadowRoot) {
28
+ root.insertBefore(element, root.firstChild)
29
+ } else {
30
+ const head = root.head
31
+ if (head) {
32
+ // append fixes remix SSR hydration because react goes in-order and prepend messes up order
33
+ head.appendChild(element)
34
+ }
35
+ }
36
+ }
37
+ // @ts-ignore : HTMLElement is incorrectly typed
38
+ return element.sheet
39
+ } else {
40
+ return null
41
+ }
42
+ }