@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.
- package/LICENSE +21 -0
- package/dist/cjs/StyleSheet/__tests__/compiler-createReactDOMStyle-test.cjs +240 -0
- package/dist/cjs/StyleSheet/__tests__/compiler-test.cjs +407 -0
- package/dist/cjs/StyleSheet/__tests__/dom-createOrderedCSSStyleSheet-test.cjs +121 -0
- package/dist/cjs/StyleSheet/__tests__/index-test.cjs +404 -0
- package/dist/cjs/StyleSheet/__tests__/preprocess-test.cjs +108 -0
- package/dist/cjs/StyleSheet/__tests__/validate-test.cjs +36 -0
- package/dist/cjs/StyleSheet/compiler/createReactDOMStyle.cjs +87 -0
- package/dist/cjs/StyleSheet/compiler/hash.cjs +26 -0
- package/dist/cjs/StyleSheet/compiler/hyphenateStyleName.cjs +36 -0
- package/dist/cjs/StyleSheet/compiler/index.cjs +318 -0
- package/dist/cjs/StyleSheet/compiler/normalizeColor.cjs +40 -0
- package/dist/cjs/StyleSheet/compiler/normalizeValueWithProperty.cjs +43 -0
- package/dist/cjs/StyleSheet/compiler/resolveShadowValue.cjs +48 -0
- package/dist/cjs/StyleSheet/dom/createCSSStyleSheet.cjs +37 -0
- package/dist/cjs/StyleSheet/dom/createOrderedCSSStyleSheet.cjs +110 -0
- package/dist/cjs/StyleSheet/dom/index.cjs +67 -0
- package/dist/cjs/StyleSheet/index.cjs +57 -0
- package/dist/cjs/StyleSheet/preprocess.cjs +101 -0
- package/dist/cjs/StyleSheet/validate.cjs +69 -0
- package/dist/cjs/TextAncestorContext.cjs +27 -0
- package/dist/cjs/colorProps.cjs +37 -0
- package/dist/cjs/index.cjs +103 -0
- package/dist/cjs/modules/AccessibilityUtil/__tests__/propsToAccessibilityComponent-test.cjs +50 -0
- package/dist/cjs/modules/AccessibilityUtil/__tests__/propsToAriaRole-test.cjs +40 -0
- package/dist/cjs/modules/AccessibilityUtil/index.cjs +33 -0
- package/dist/cjs/modules/AccessibilityUtil/isDisabled.cjs +26 -0
- package/dist/cjs/modules/AccessibilityUtil/propsToAccessibilityComponent.cjs +57 -0
- package/dist/cjs/modules/AccessibilityUtil/propsToAriaRole.cjs +47 -0
- package/dist/cjs/modules/AssetRegistry/index.cjs +33 -0
- package/dist/cjs/modules/ImageLoader/index.cjs +111 -0
- package/dist/cjs/modules/InteractionManager.cjs +184 -0
- package/dist/cjs/modules/Platform/__tests__/index-test.cjs +48 -0
- package/dist/cjs/modules/Platform/index.cjs +30 -0
- package/dist/cjs/modules/TextInputState/index.cjs +55 -0
- package/dist/cjs/modules/UIManager/__tests__/index-test.cjs +90 -0
- package/dist/cjs/modules/UIManager/index.cjs +60 -0
- package/dist/cjs/modules/canUseDOM.cjs +26 -0
- package/dist/cjs/modules/createDOMProps/__tests__/index-test.cjs +156 -0
- package/dist/cjs/modules/createDOMProps/index.cjs +179 -0
- package/dist/cjs/modules/createEventHandle/__tests__/index-test.cjs +344 -0
- package/dist/cjs/modules/createEventHandle/index.cjs +67 -0
- package/dist/cjs/modules/dismissKeyboard/index.cjs +29 -0
- package/dist/cjs/modules/forwardedProps/index.cjs +161 -0
- package/dist/cjs/modules/getBoundingClientRect/index.cjs +28 -0
- package/dist/cjs/modules/invariant.cjs +36 -0
- package/dist/cjs/modules/isSelectionValid/index.cjs +35 -0
- package/dist/cjs/modules/isWebColor/index.cjs +26 -0
- package/dist/cjs/modules/mergeRefs/__tests__/index-test.cjs +42 -0
- package/dist/cjs/modules/mergeRefs/index.cjs +42 -0
- package/dist/cjs/modules/modality/__tests__/index-test.cjs +32 -0
- package/dist/cjs/modules/modality/index.cjs +135 -0
- package/dist/cjs/modules/multiplyStyleLengthValue/__tests__/index-test.cjs +30 -0
- package/dist/cjs/modules/multiplyStyleLengthValue/index.cjs +35 -0
- package/dist/cjs/modules/normalizeColor/index.cjs +39 -0
- package/dist/cjs/modules/pick/index.cjs +30 -0
- package/dist/cjs/modules/processColor/__tests__/index-test.cjs +66 -0
- package/dist/cjs/modules/processColor/index.cjs +42 -0
- package/dist/cjs/modules/requestIdleCallback/index.cjs +44 -0
- package/dist/cjs/modules/setValueForStyles/dangerousStyleValue.cjs +35 -0
- package/dist/cjs/modules/setValueForStyles/index.cjs +35 -0
- package/dist/cjs/modules/unitlessNumbers/index.cjs +85 -0
- package/dist/cjs/modules/useElementLayout/index.cjs +39 -0
- package/dist/cjs/modules/useEvent/__tests__/index-test.cjs +408 -0
- package/dist/cjs/modules/useEvent/index.cjs +45 -0
- package/dist/cjs/modules/useHover/__tests__/index-test.cjs +273 -0
- package/dist/cjs/modules/useHover/index.cjs +97 -0
- package/dist/cjs/modules/useLayoutEffect/index.cjs +39 -0
- package/dist/cjs/modules/useLocale/index.cjs +66 -0
- package/dist/cjs/modules/useLocale/isLocaleRTL.cjs +83 -0
- package/dist/cjs/modules/useMergeRefs/__tests__/index-test.cjs +102 -0
- package/dist/cjs/modules/useMergeRefs/index.cjs +43 -0
- package/dist/cjs/modules/usePlatformMethods/index.cjs +35 -0
- package/dist/cjs/modules/useStable/__tests__/index-test.cjs +92 -0
- package/dist/cjs/modules/useStable/index.cjs +42 -0
- package/dist/cjs/styleTypes.cjs +16 -0
- package/dist/cjs/types.cjs +16 -0
- package/dist/esm/StyleSheet/__tests__/compiler-createReactDOMStyle-test.mjs +219 -0
- package/dist/esm/StyleSheet/__tests__/compiler-createReactDOMStyle-test.mjs.map +1 -0
- package/dist/esm/StyleSheet/__tests__/compiler-test.mjs +408 -0
- package/dist/esm/StyleSheet/__tests__/compiler-test.mjs.map +1 -0
- package/dist/esm/StyleSheet/__tests__/dom-createOrderedCSSStyleSheet-test.mjs +100 -0
- package/dist/esm/StyleSheet/__tests__/dom-createOrderedCSSStyleSheet-test.mjs.map +1 -0
- package/dist/esm/StyleSheet/__tests__/index-test.mjs +383 -0
- package/dist/esm/StyleSheet/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/StyleSheet/__tests__/preprocess-test.mjs +109 -0
- package/dist/esm/StyleSheet/__tests__/preprocess-test.mjs.map +1 -0
- package/dist/esm/StyleSheet/__tests__/validate-test.mjs +37 -0
- package/dist/esm/StyleSheet/__tests__/validate-test.mjs.map +1 -0
- package/dist/esm/StyleSheet/compiler/createReactDOMStyle.mjs +63 -0
- package/dist/esm/StyleSheet/compiler/createReactDOMStyle.mjs.map +1 -0
- package/dist/esm/StyleSheet/compiler/hash.mjs +3 -0
- package/dist/esm/StyleSheet/compiler/hash.mjs.map +1 -0
- package/dist/esm/StyleSheet/compiler/hyphenateStyleName.mjs +13 -0
- package/dist/esm/StyleSheet/compiler/hyphenateStyleName.mjs.map +1 -0
- package/dist/esm/StyleSheet/compiler/index.mjs +292 -0
- package/dist/esm/StyleSheet/compiler/index.mjs.map +1 -0
- package/dist/esm/StyleSheet/compiler/normalizeColor.mjs +17 -0
- package/dist/esm/StyleSheet/compiler/normalizeColor.mjs.map +1 -0
- package/dist/esm/StyleSheet/compiler/normalizeValueWithProperty.mjs +20 -0
- package/dist/esm/StyleSheet/compiler/normalizeValueWithProperty.mjs.map +1 -0
- package/dist/esm/StyleSheet/compiler/resolveShadowValue.mjs +25 -0
- package/dist/esm/StyleSheet/compiler/resolveShadowValue.mjs.map +1 -0
- package/dist/esm/StyleSheet/dom/createCSSStyleSheet.mjs +14 -0
- package/dist/esm/StyleSheet/dom/createCSSStyleSheet.mjs.map +1 -0
- package/dist/esm/StyleSheet/dom/createOrderedCSSStyleSheet.mjs +87 -0
- package/dist/esm/StyleSheet/dom/createOrderedCSSStyleSheet.mjs.map +1 -0
- package/dist/esm/StyleSheet/dom/index.mjs +44 -0
- package/dist/esm/StyleSheet/dom/index.mjs.map +1 -0
- package/dist/esm/StyleSheet/index.mjs +33 -0
- package/dist/esm/StyleSheet/index.mjs.map +1 -0
- package/dist/esm/StyleSheet/preprocess.mjs +75 -0
- package/dist/esm/StyleSheet/preprocess.mjs.map +1 -0
- package/dist/esm/StyleSheet/validate.mjs +46 -0
- package/dist/esm/StyleSheet/validate.mjs.map +1 -0
- package/dist/esm/TextAncestorContext.mjs +4 -0
- package/dist/esm/TextAncestorContext.mjs.map +1 -0
- package/dist/esm/colorProps.mjs +14 -0
- package/dist/esm/colorProps.mjs.map +1 -0
- package/dist/esm/index.js +45 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +45 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/modules/AccessibilityUtil/__tests__/propsToAccessibilityComponent-test.mjs +29 -0
- package/dist/esm/modules/AccessibilityUtil/__tests__/propsToAccessibilityComponent-test.mjs.map +1 -0
- package/dist/esm/modules/AccessibilityUtil/__tests__/propsToAriaRole-test.mjs +19 -0
- package/dist/esm/modules/AccessibilityUtil/__tests__/propsToAriaRole-test.mjs.map +1 -0
- package/dist/esm/modules/AccessibilityUtil/index.mjs +10 -0
- package/dist/esm/modules/AccessibilityUtil/index.mjs.map +1 -0
- package/dist/esm/modules/AccessibilityUtil/isDisabled.mjs +3 -0
- package/dist/esm/modules/AccessibilityUtil/isDisabled.mjs.map +1 -0
- package/dist/esm/modules/AccessibilityUtil/propsToAccessibilityComponent.mjs +34 -0
- package/dist/esm/modules/AccessibilityUtil/propsToAccessibilityComponent.mjs.map +1 -0
- package/dist/esm/modules/AccessibilityUtil/propsToAriaRole.mjs +24 -0
- package/dist/esm/modules/AccessibilityUtil/propsToAriaRole.mjs.map +1 -0
- package/dist/esm/modules/AssetRegistry/index.mjs +9 -0
- package/dist/esm/modules/AssetRegistry/index.mjs.map +1 -0
- package/dist/esm/modules/ImageLoader/index.mjs +87 -0
- package/dist/esm/modules/ImageLoader/index.mjs.map +1 -0
- package/dist/esm/modules/InteractionManager.mjs +161 -0
- package/dist/esm/modules/InteractionManager.mjs.map +1 -0
- package/dist/esm/modules/Platform/__tests__/index-test.mjs +27 -0
- package/dist/esm/modules/Platform/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/Platform/index.mjs +7 -0
- package/dist/esm/modules/Platform/index.mjs.map +1 -0
- package/dist/esm/modules/TextInputState/index.mjs +32 -0
- package/dist/esm/modules/TextInputState/index.mjs.map +1 -0
- package/dist/esm/modules/UIManager/__tests__/index-test.mjs +69 -0
- package/dist/esm/modules/UIManager/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/UIManager/index.mjs +37 -0
- package/dist/esm/modules/UIManager/index.mjs.map +1 -0
- package/dist/esm/modules/canUseDOM.mjs +3 -0
- package/dist/esm/modules/canUseDOM.mjs.map +1 -0
- package/dist/esm/modules/createDOMProps/__tests__/index-test.mjs +135 -0
- package/dist/esm/modules/createDOMProps/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/createDOMProps/index.mjs +155 -0
- package/dist/esm/modules/createDOMProps/index.mjs.map +1 -0
- package/dist/esm/modules/createEventHandle/__tests__/index-test.mjs +323 -0
- package/dist/esm/modules/createEventHandle/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/createEventHandle/index.mjs +42 -0
- package/dist/esm/modules/createEventHandle/index.mjs.map +1 -0
- package/dist/esm/modules/dismissKeyboard/index.mjs +6 -0
- package/dist/esm/modules/dismissKeyboard/index.mjs.map +1 -0
- package/dist/esm/modules/forwardedProps/index.mjs +128 -0
- package/dist/esm/modules/forwardedProps/index.mjs.map +1 -0
- package/dist/esm/modules/getBoundingClientRect/index.mjs +5 -0
- package/dist/esm/modules/getBoundingClientRect/index.mjs.map +1 -0
- package/dist/esm/modules/invariant.mjs +12 -0
- package/dist/esm/modules/invariant.mjs.map +1 -0
- package/dist/esm/modules/isSelectionValid/index.mjs +12 -0
- package/dist/esm/modules/isSelectionValid/index.mjs.map +1 -0
- package/dist/esm/modules/isWebColor/index.mjs +3 -0
- package/dist/esm/modules/isWebColor/index.mjs.map +1 -0
- package/dist/esm/modules/mergeRefs/__tests__/index-test.mjs +21 -0
- package/dist/esm/modules/mergeRefs/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/mergeRefs/index.mjs +19 -0
- package/dist/esm/modules/mergeRefs/index.mjs.map +1 -0
- package/dist/esm/modules/modality/__tests__/index-test.mjs +33 -0
- package/dist/esm/modules/modality/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/modality/index.mjs +109 -0
- package/dist/esm/modules/modality/index.mjs.map +1 -0
- package/dist/esm/modules/multiplyStyleLengthValue/__tests__/index-test.mjs +9 -0
- package/dist/esm/modules/multiplyStyleLengthValue/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/multiplyStyleLengthValue/index.mjs +12 -0
- package/dist/esm/modules/multiplyStyleLengthValue/index.mjs.map +1 -0
- package/dist/esm/modules/normalizeColor/index.mjs +16 -0
- package/dist/esm/modules/normalizeColor/index.mjs.map +1 -0
- package/dist/esm/modules/pick/index.mjs +7 -0
- package/dist/esm/modules/pick/index.mjs.map +1 -0
- package/dist/esm/modules/processColor/__tests__/index-test.mjs +45 -0
- package/dist/esm/modules/processColor/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/processColor/index.mjs +8 -0
- package/dist/esm/modules/processColor/index.mjs.map +1 -0
- package/dist/esm/modules/requestIdleCallback/index.mjs +20 -0
- package/dist/esm/modules/requestIdleCallback/index.mjs.map +1 -0
- package/dist/esm/modules/setValueForStyles/dangerousStyleValue.mjs +12 -0
- package/dist/esm/modules/setValueForStyles/dangerousStyleValue.mjs.map +1 -0
- package/dist/esm/modules/setValueForStyles/index.mjs +12 -0
- package/dist/esm/modules/setValueForStyles/index.mjs.map +1 -0
- package/dist/esm/modules/unitlessNumbers/index.mjs +62 -0
- package/dist/esm/modules/unitlessNumbers/index.mjs.map +1 -0
- package/dist/esm/modules/useElementLayout/index.mjs +16 -0
- package/dist/esm/modules/useElementLayout/index.mjs.map +1 -0
- package/dist/esm/modules/useEvent/__tests__/index-test.mjs +387 -0
- package/dist/esm/modules/useEvent/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/useEvent/index.mjs +22 -0
- package/dist/esm/modules/useEvent/index.mjs.map +1 -0
- package/dist/esm/modules/useHover/__tests__/index-test.mjs +252 -0
- package/dist/esm/modules/useHover/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/useHover/index.mjs +74 -0
- package/dist/esm/modules/useHover/index.mjs.map +1 -0
- package/dist/esm/modules/useLayoutEffect/index.mjs +5 -0
- package/dist/esm/modules/useLayoutEffect/index.mjs.map +1 -0
- package/dist/esm/modules/useLocale/index.mjs +30 -0
- package/dist/esm/modules/useLocale/index.mjs.map +1 -0
- package/dist/esm/modules/useLocale/isLocaleRTL.mjs +60 -0
- package/dist/esm/modules/useLocale/isLocaleRTL.mjs.map +1 -0
- package/dist/esm/modules/useMergeRefs/__tests__/index-test.mjs +81 -0
- package/dist/esm/modules/useMergeRefs/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/useMergeRefs/index.mjs +9 -0
- package/dist/esm/modules/useMergeRefs/index.mjs.map +1 -0
- package/dist/esm/modules/usePlatformMethods/index.mjs +12 -0
- package/dist/esm/modules/usePlatformMethods/index.mjs.map +1 -0
- package/dist/esm/modules/useStable/__tests__/index-test.mjs +71 -0
- package/dist/esm/modules/useStable/__tests__/index-test.mjs.map +1 -0
- package/dist/esm/modules/useStable/index.mjs +8 -0
- package/dist/esm/modules/useStable/index.mjs.map +1 -0
- package/dist/esm/styleTypes.mjs +2 -0
- package/dist/esm/styleTypes.mjs.map +1 -0
- package/dist/esm/types.mjs +2 -0
- package/dist/esm/types.mjs.map +1 -0
- package/package.json +58 -0
- package/src/StyleSheet/__tests__/compiler-createReactDOMStyle-test.tsx +236 -0
- package/src/StyleSheet/__tests__/compiler-test.tsx +426 -0
- package/src/StyleSheet/__tests__/dom-createOrderedCSSStyleSheet-test.tsx +169 -0
- package/src/StyleSheet/__tests__/index-test.tsx +406 -0
- package/src/StyleSheet/__tests__/preprocess-test.tsx +107 -0
- package/src/StyleSheet/__tests__/validate-test.tsx +42 -0
- package/src/StyleSheet/compiler/createReactDOMStyle.tsx +215 -0
- package/src/StyleSheet/compiler/hash.tsx +1 -0
- package/src/StyleSheet/compiler/hyphenateStyleName.tsx +25 -0
- package/src/StyleSheet/compiler/index.tsx +478 -0
- package/src/StyleSheet/compiler/normalizeColor.tsx +35 -0
- package/src/StyleSheet/compiler/normalizeValueWithProperty.tsx +34 -0
- package/src/StyleSheet/compiler/resolveShadowValue.tsx +26 -0
- package/src/StyleSheet/dom/createCSSStyleSheet.tsx +42 -0
- package/src/StyleSheet/dom/createOrderedCSSStyleSheet.tsx +195 -0
- package/src/StyleSheet/dom/index.tsx +92 -0
- package/src/StyleSheet/index.tsx +99 -0
- package/src/StyleSheet/preprocess.tsx +119 -0
- package/src/StyleSheet/validate.tsx +90 -0
- package/src/TextAncestorContext.tsx +13 -0
- package/src/colorProps.tsx +12 -0
- package/src/index.tsx +58 -0
- package/src/modules/AccessibilityUtil/__tests__/propsToAccessibilityComponent-test.tsx +44 -0
- package/src/modules/AccessibilityUtil/__tests__/propsToAriaRole-test.tsx +25 -0
- package/src/modules/AccessibilityUtil/index.tsx +18 -0
- package/src/modules/AccessibilityUtil/isDisabled.tsx +13 -0
- package/src/modules/AccessibilityUtil/propsToAccessibilityComponent.tsx +54 -0
- package/src/modules/AccessibilityUtil/propsToAriaRole.tsx +37 -0
- package/src/modules/AssetRegistry/index.tsx +32 -0
- package/src/modules/ImageLoader/index.tsx +165 -0
- package/src/modules/InteractionManager.tsx +315 -0
- package/src/modules/Platform/__tests__/index-test.tsx +45 -0
- package/src/modules/Platform/index.tsx +15 -0
- package/src/modules/TextInputState/index.tsx +62 -0
- package/src/modules/UIManager/__tests__/index-test.tsx +87 -0
- package/src/modules/UIManager/index.tsx +68 -0
- package/src/modules/canUseDOM.tsx +14 -0
- package/src/modules/createDOMProps/__tests__/index-test.tsx +138 -0
- package/src/modules/createDOMProps/index.tsx +436 -0
- package/src/modules/createEventHandle/__tests__/index-test.tsx +459 -0
- package/src/modules/createEventHandle/index.tsx +100 -0
- package/src/modules/dismissKeyboard/index.tsx +14 -0
- package/src/modules/forwardedProps/index.tsx +145 -0
- package/src/modules/getBoundingClientRect/index.tsx +17 -0
- package/src/modules/invariant.ts +23 -0
- package/src/modules/isSelectionValid/index.tsx +20 -0
- package/src/modules/isWebColor/index.tsx +14 -0
- package/src/modules/mergeRefs/__tests__/index-test.tsx +32 -0
- package/src/modules/mergeRefs/index.tsx +36 -0
- package/src/modules/modality/__tests__/index-test.tsx +66 -0
- package/src/modules/modality/index.tsx +228 -0
- package/src/modules/multiplyStyleLengthValue/__tests__/index-test.tsx +23 -0
- package/src/modules/multiplyStyleLengthValue/index.tsx +26 -0
- package/src/modules/normalizeColor/index.tsx +32 -0
- package/src/modules/pick/index.tsx +25 -0
- package/src/modules/processColor/__tests__/index-test.tsx +78 -0
- package/src/modules/processColor/index.tsx +28 -0
- package/src/modules/requestIdleCallback/index.tsx +35 -0
- package/src/modules/setValueForStyles/dangerousStyleValue.tsx +74 -0
- package/src/modules/setValueForStyles/index.tsx +39 -0
- package/src/modules/unitlessNumbers/index.tsx +77 -0
- package/src/modules/useElementLayout/index.tsx +28 -0
- package/src/modules/useEvent/__tests__/index-test.tsx +511 -0
- package/src/modules/useEvent/index.tsx +64 -0
- package/src/modules/useHover/__tests__/index-test.tsx +342 -0
- package/src/modules/useHover/index.tsx +181 -0
- package/src/modules/useLayoutEffect/index.ts +15 -0
- package/src/modules/useLocale/index.tsx +57 -0
- package/src/modules/useLocale/isLocaleRTL.tsx +74 -0
- package/src/modules/useMergeRefs/__tests__/index-test.tsx +91 -0
- package/src/modules/useMergeRefs/index.tsx +22 -0
- package/src/modules/usePlatformMethods/index.tsx +40 -0
- package/src/modules/useStable/__tests__/index-test.tsx +101 -0
- package/src/modules/useStable/index.tsx +24 -0
- package/src/styleTypes.ts +321 -0
- package/src/types.ts +77 -0
- package/types/StyleSheet/compiler/createReactDOMStyle.d.ts +18 -0
- package/types/StyleSheet/compiler/createReactDOMStyle.d.ts.map +1 -0
- package/types/StyleSheet/compiler/hash.d.ts +2 -0
- package/types/StyleSheet/compiler/hash.d.ts.map +1 -0
- package/types/StyleSheet/compiler/hyphenateStyleName.d.ts +10 -0
- package/types/StyleSheet/compiler/hyphenateStyleName.d.ts.map +1 -0
- package/types/StyleSheet/compiler/index.d.ts +39 -0
- package/types/StyleSheet/compiler/index.d.ts.map +1 -0
- package/types/StyleSheet/compiler/normalizeColor.d.ts +10 -0
- package/types/StyleSheet/compiler/normalizeColor.d.ts.map +1 -0
- package/types/StyleSheet/compiler/normalizeValueWithProperty.d.ts +10 -0
- package/types/StyleSheet/compiler/normalizeValueWithProperty.d.ts.map +1 -0
- package/types/StyleSheet/compiler/resolveShadowValue.d.ts +10 -0
- package/types/StyleSheet/compiler/resolveShadowValue.d.ts.map +1 -0
- package/types/StyleSheet/dom/createCSSStyleSheet.d.ts +10 -0
- package/types/StyleSheet/dom/createCSSStyleSheet.d.ts.map +1 -0
- package/types/StyleSheet/dom/createOrderedCSSStyleSheet.d.ts +29 -0
- package/types/StyleSheet/dom/createOrderedCSSStyleSheet.d.ts.map +1 -0
- package/types/StyleSheet/dom/index.d.ts +15 -0
- package/types/StyleSheet/dom/index.d.ts.map +1 -0
- package/types/StyleSheet/index.d.ts +69 -0
- package/types/StyleSheet/index.d.ts.map +1 -0
- package/types/StyleSheet/preprocess.d.ts +16 -0
- package/types/StyleSheet/preprocess.d.ts.map +1 -0
- package/types/StyleSheet/validate.d.ts +10 -0
- package/types/StyleSheet/validate.d.ts.map +1 -0
- package/types/TextAncestorContext.d.ts +11 -0
- package/types/TextAncestorContext.d.ts.map +1 -0
- package/types/colorProps.d.ts +13 -0
- package/types/colorProps.d.ts.map +1 -0
- package/types/index.d.ts +45 -0
- package/types/index.d.ts.map +1 -0
- package/types/modules/AccessibilityUtil/index.d.ts +16 -0
- package/types/modules/AccessibilityUtil/index.d.ts.map +1 -0
- package/types/modules/AccessibilityUtil/isDisabled.d.ts +10 -0
- package/types/modules/AccessibilityUtil/isDisabled.d.ts.map +1 -0
- package/types/modules/AccessibilityUtil/propsToAccessibilityComponent.d.ts +10 -0
- package/types/modules/AccessibilityUtil/propsToAccessibilityComponent.d.ts.map +1 -0
- package/types/modules/AccessibilityUtil/propsToAriaRole.d.ts +12 -0
- package/types/modules/AccessibilityUtil/propsToAriaRole.d.ts.map +1 -0
- package/types/modules/AssetRegistry/index.d.ts +22 -0
- package/types/modules/AssetRegistry/index.d.ts.map +1 -0
- package/types/modules/ImageLoader/index.d.ts +27 -0
- package/types/modules/ImageLoader/index.d.ts.map +1 -0
- package/types/modules/InteractionManager.d.ts +48 -0
- package/types/modules/InteractionManager.d.ts.map +1 -0
- package/types/modules/Platform/index.d.ts +15 -0
- package/types/modules/Platform/index.d.ts.map +1 -0
- package/types/modules/TextInputState/index.d.ts +38 -0
- package/types/modules/TextInputState/index.d.ts.map +1 -0
- package/types/modules/UIManager/index.d.ts +23 -0
- package/types/modules/UIManager/index.d.ts.map +1 -0
- package/types/modules/canUseDOM.d.ts +10 -0
- package/types/modules/canUseDOM.d.ts.map +1 -0
- package/types/modules/createDOMProps/index.d.ts +12 -0
- package/types/modules/createDOMProps/index.d.ts.map +1 -0
- package/types/modules/createEventHandle/index.d.ts +20 -0
- package/types/modules/createEventHandle/index.d.ts.map +1 -0
- package/types/modules/dismissKeyboard/index.d.ts +10 -0
- package/types/modules/dismissKeyboard/index.d.ts.map +1 -0
- package/types/modules/forwardedProps/index.d.ts +383 -0
- package/types/modules/forwardedProps/index.d.ts.map +1 -0
- package/types/modules/getBoundingClientRect/index.d.ts +10 -0
- package/types/modules/getBoundingClientRect/index.d.ts.map +1 -0
- package/types/modules/invariant.d.ts +3 -0
- package/types/modules/invariant.d.ts.map +1 -0
- package/types/modules/isSelectionValid/index.d.ts +10 -0
- package/types/modules/isSelectionValid/index.d.ts.map +1 -0
- package/types/modules/isWebColor/index.d.ts +10 -0
- package/types/modules/isWebColor/index.d.ts.map +1 -0
- package/types/modules/mergeRefs/index.d.ts +11 -0
- package/types/modules/mergeRefs/index.d.ts.map +1 -0
- package/types/modules/modality/index.d.ts +17 -0
- package/types/modules/modality/index.d.ts.map +1 -0
- package/types/modules/multiplyStyleLengthValue/index.d.ts +10 -0
- package/types/modules/multiplyStyleLengthValue/index.d.ts.map +1 -0
- package/types/modules/normalizeColor/index.d.ts +10 -0
- package/types/modules/normalizeColor/index.d.ts.map +1 -0
- package/types/modules/pick/index.d.ts +12 -0
- package/types/modules/pick/index.d.ts.map +1 -0
- package/types/modules/processColor/index.d.ts +11 -0
- package/types/modules/processColor/index.d.ts.map +1 -0
- package/types/modules/requestIdleCallback/index.d.ts +3 -0
- package/types/modules/requestIdleCallback/index.d.ts.map +1 -0
- package/types/modules/setValueForStyles/dangerousStyleValue.d.ts +11 -0
- package/types/modules/setValueForStyles/dangerousStyleValue.d.ts.map +1 -0
- package/types/modules/setValueForStyles/index.d.ts +9 -0
- package/types/modules/setValueForStyles/index.d.ts.map +1 -0
- package/types/modules/unitlessNumbers/index.d.ts +60 -0
- package/types/modules/unitlessNumbers/index.d.ts.map +1 -0
- package/types/modules/useElementLayout/index.d.ts +4 -0
- package/types/modules/useElementLayout/index.d.ts.map +1 -0
- package/types/modules/useEvent/index.d.ts +24 -0
- package/types/modules/useEvent/index.d.ts.map +1 -0
- package/types/modules/useHover/index.d.ts +21 -0
- package/types/modules/useHover/index.d.ts.map +1 -0
- package/types/modules/useLayoutEffect/index.d.ts +13 -0
- package/types/modules/useLayoutEffect/index.d.ts.map +1 -0
- package/types/modules/useLocale/index.d.ts +14 -0
- package/types/modules/useLocale/index.d.ts.map +1 -0
- package/types/modules/useLocale/isLocaleRTL.d.ts +13 -0
- package/types/modules/useLocale/isLocaleRTL.d.ts.map +1 -0
- package/types/modules/useMergeRefs/index.d.ts +11 -0
- package/types/modules/useMergeRefs/index.d.ts.map +1 -0
- package/types/modules/usePlatformMethods/index.d.ts +18 -0
- package/types/modules/usePlatformMethods/index.d.ts.map +1 -0
- package/types/modules/useStable/index.d.ts +10 -0
- package/types/modules/useStable/index.d.ts.map +1 -0
- package/types/styleTypes.d.ts +211 -0
- package/types/styleTypes.d.ts.map +1 -0
- package/types/types.d.ts +46 -0
- 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
|
+
}
|