@hanzogui/web 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/README.md +1 -0
- package/dist/cjs/Gui.cjs +72 -0
- package/dist/cjs/Gui.native.js +112 -0
- package/dist/cjs/Gui.native.js.map +1 -0
- package/dist/cjs/_withStableStyle.cjs +65 -0
- package/dist/cjs/_withStableStyle.native.js +77 -0
- package/dist/cjs/_withStableStyle.native.js.map +1 -0
- package/dist/cjs/animationDriverTypes.test-d.cjs +60 -0
- package/dist/cjs/animationDriverTypes.test-d.native.js +63 -0
- package/dist/cjs/animationDriverTypes.test-d.native.js.map +1 -0
- package/dist/cjs/config.cjs +126 -0
- package/dist/cjs/config.native.js +157 -0
- package/dist/cjs/config.native.js.map +1 -0
- package/dist/cjs/constants/accessibilityDirectMap.cjs +34 -0
- package/dist/cjs/constants/accessibilityDirectMap.native.js +37 -0
- package/dist/cjs/constants/accessibilityDirectMap.native.js.map +1 -0
- package/dist/cjs/constants/constants.cjs +38 -0
- package/dist/cjs/constants/constants.native.js +41 -0
- package/dist/cjs/constants/constants.native.js.map +1 -0
- package/dist/cjs/constants/isDevTools.cjs +31 -0
- package/dist/cjs/constants/isDevTools.native.js +34 -0
- package/dist/cjs/constants/isDevTools.native.js.map +1 -0
- package/dist/cjs/contexts/ComponentContext.cjs +37 -0
- package/dist/cjs/contexts/ComponentContext.native.js +42 -0
- package/dist/cjs/contexts/ComponentContext.native.js.map +1 -0
- package/dist/cjs/contexts/GroupContext.cjs +27 -0
- package/dist/cjs/contexts/GroupContext.native.js +30 -0
- package/dist/cjs/contexts/GroupContext.native.js.map +1 -0
- package/dist/cjs/createComponent.cjs +782 -0
- package/dist/cjs/createComponent.native.js +829 -0
- package/dist/cjs/createComponent.native.js.map +1 -0
- package/dist/cjs/createFont.cjs +42 -0
- package/dist/cjs/createFont.native.js +50 -0
- package/dist/cjs/createFont.native.js.map +1 -0
- package/dist/cjs/createGui.cjs +235 -0
- package/dist/cjs/createGui.native.js +297 -0
- package/dist/cjs/createGui.native.js.map +1 -0
- package/dist/cjs/createShorthands.cjs +28 -0
- package/dist/cjs/createShorthands.native.js +31 -0
- package/dist/cjs/createShorthands.native.js.map +1 -0
- package/dist/cjs/createTokens.cjs +29 -0
- package/dist/cjs/createTokens.native.js +33 -0
- package/dist/cjs/createTokens.native.js.map +1 -0
- package/dist/cjs/createVariable.cjs +96 -0
- package/dist/cjs/createVariable.native.js +116 -0
- package/dist/cjs/createVariable.native.js.map +1 -0
- package/dist/cjs/createVariables.cjs +68 -0
- package/dist/cjs/createVariables.native.js +77 -0
- package/dist/cjs/createVariables.native.js.map +1 -0
- package/dist/cjs/defaultComponentState.cjs +45 -0
- package/dist/cjs/defaultComponentState.native.js +48 -0
- package/dist/cjs/defaultComponentState.native.js.map +1 -0
- package/dist/cjs/eventHandling.cjs +46 -0
- package/dist/cjs/eventHandling.native.js +153 -0
- package/dist/cjs/eventHandling.native.js.map +1 -0
- package/dist/cjs/helpers/consoleLog.native.js +31 -0
- package/dist/cjs/helpers/consoleLog.native.js.map +1 -0
- package/dist/cjs/helpers/createDesignSystem.cjs +184 -0
- package/dist/cjs/helpers/createDesignSystem.native.js +235 -0
- package/dist/cjs/helpers/createDesignSystem.native.js.map +1 -0
- package/dist/cjs/helpers/createMediaStyle.cjs +100 -0
- package/dist/cjs/helpers/createMediaStyle.native.js +114 -0
- package/dist/cjs/helpers/createMediaStyle.native.js.map +1 -0
- package/dist/cjs/helpers/createStyledContext.cjs +82 -0
- package/dist/cjs/helpers/createStyledContext.native.js +93 -0
- package/dist/cjs/helpers/createStyledContext.native.js.map +1 -0
- package/dist/cjs/helpers/defaultAnimationDriver.cjs +42 -0
- package/dist/cjs/helpers/defaultAnimationDriver.native.js +59 -0
- package/dist/cjs/helpers/defaultAnimationDriver.native.js.map +1 -0
- package/dist/cjs/helpers/defaultOffset.cjs +29 -0
- package/dist/cjs/helpers/defaultOffset.native.js +32 -0
- package/dist/cjs/helpers/defaultOffset.native.js.map +1 -0
- package/dist/cjs/helpers/expandStyle.cjs +67 -0
- package/dist/cjs/helpers/expandStyle.native.js +162 -0
- package/dist/cjs/helpers/expandStyle.native.js.map +1 -0
- package/dist/cjs/helpers/expandStyles.cjs +40 -0
- package/dist/cjs/helpers/expandStyles.native.js +45 -0
- package/dist/cjs/helpers/expandStyles.native.js.map +1 -0
- package/dist/cjs/helpers/getCSSStylesAtomic.cjs +179 -0
- package/dist/cjs/helpers/getCSSStylesAtomic.native.js +36 -0
- package/dist/cjs/helpers/getCSSStylesAtomic.native.js.map +1 -0
- package/dist/cjs/helpers/getDefaultProps.cjs +38 -0
- package/dist/cjs/helpers/getDefaultProps.native.js +42 -0
- package/dist/cjs/helpers/getDefaultProps.native.js.map +1 -0
- package/dist/cjs/helpers/getDynamicVal.cjs +67 -0
- package/dist/cjs/helpers/getDynamicVal.native.js +71 -0
- package/dist/cjs/helpers/getDynamicVal.native.js.map +1 -0
- package/dist/cjs/helpers/getExpandedShorthands.cjs +38 -0
- package/dist/cjs/helpers/getExpandedShorthands.native.js +42 -0
- package/dist/cjs/helpers/getExpandedShorthands.native.js.map +1 -0
- package/dist/cjs/helpers/getFontLanguage.cjs +26 -0
- package/dist/cjs/helpers/getFontLanguage.native.js +31 -0
- package/dist/cjs/helpers/getFontLanguage.native.js.map +1 -0
- package/dist/cjs/helpers/getGroupPropParts.cjs +45 -0
- package/dist/cjs/helpers/getGroupPropParts.native.js +50 -0
- package/dist/cjs/helpers/getGroupPropParts.native.js.map +1 -0
- package/dist/cjs/helpers/getShorthandValue.cjs +28 -0
- package/dist/cjs/helpers/getShorthandValue.native.js +35 -0
- package/dist/cjs/helpers/getShorthandValue.native.js.map +1 -0
- package/dist/cjs/helpers/getSplitStyles.cjs +697 -0
- package/dist/cjs/helpers/getSplitStyles.native.js +810 -0
- package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -0
- package/dist/cjs/helpers/getThemeCSSRules.cjs +128 -0
- package/dist/cjs/helpers/getThemeCSSRules.native.js +31 -0
- package/dist/cjs/helpers/getThemeCSSRules.native.js.map +1 -0
- package/dist/cjs/helpers/getTokenForKey.cjs +127 -0
- package/dist/cjs/helpers/getTokenForKey.native.js +145 -0
- package/dist/cjs/helpers/getTokenForKey.native.js.map +1 -0
- package/dist/cjs/helpers/getVariantExtras.cjs +69 -0
- package/dist/cjs/helpers/getVariantExtras.native.js +73 -0
- package/dist/cjs/helpers/getVariantExtras.native.js.map +1 -0
- package/dist/cjs/helpers/insertStyleRule.cjs +199 -0
- package/dist/cjs/helpers/insertStyleRule.native.js +315 -0
- package/dist/cjs/helpers/insertStyleRule.native.js.map +1 -0
- package/dist/cjs/helpers/isActivePlatform.cjs +36 -0
- package/dist/cjs/helpers/isActivePlatform.native.js +39 -0
- package/dist/cjs/helpers/isActivePlatform.native.js.map +1 -0
- package/dist/cjs/helpers/isActiveTheme.cjs +28 -0
- package/dist/cjs/helpers/isActiveTheme.native.js +31 -0
- package/dist/cjs/helpers/isActiveTheme.native.js.map +1 -0
- package/dist/cjs/helpers/isGuiComponent.cjs +29 -0
- package/dist/cjs/helpers/isGuiComponent.native.js +32 -0
- package/dist/cjs/helpers/isGuiComponent.native.js.map +1 -0
- package/dist/cjs/helpers/isGuiElement.cjs +39 -0
- package/dist/cjs/helpers/isGuiElement.native.js +44 -0
- package/dist/cjs/helpers/isGuiElement.native.js.map +1 -0
- package/dist/cjs/helpers/isObj.cjs +26 -0
- package/dist/cjs/helpers/isObj.native.js +36 -0
- package/dist/cjs/helpers/isObj.native.js.map +1 -0
- package/dist/cjs/helpers/log.cjs +38 -0
- package/dist/cjs/helpers/log.native.js +42 -0
- package/dist/cjs/helpers/log.native.js.map +1 -0
- package/dist/cjs/helpers/mainThreadPressEvents.cjs +26 -0
- package/dist/cjs/helpers/mainThreadPressEvents.native.js +48 -0
- package/dist/cjs/helpers/mainThreadPressEvents.native.js.map +1 -0
- package/dist/cjs/helpers/matchMedia.cjs +36 -0
- package/dist/cjs/helpers/matchMedia.native.js +47 -0
- package/dist/cjs/helpers/matchMedia.native.js.map +1 -0
- package/dist/cjs/helpers/mediaObjectToString.cjs +35 -0
- package/dist/cjs/helpers/mediaObjectToString.native.js +43 -0
- package/dist/cjs/helpers/mediaObjectToString.native.js.map +1 -0
- package/dist/cjs/helpers/mediaState.cjs +45 -0
- package/dist/cjs/helpers/mediaState.native.js +50 -0
- package/dist/cjs/helpers/mediaState.native.js.map +1 -0
- package/dist/cjs/helpers/mergeProps.cjs +55 -0
- package/dist/cjs/helpers/mergeProps.native.js +62 -0
- package/dist/cjs/helpers/mergeProps.native.js.map +1 -0
- package/dist/cjs/helpers/mergeRenderElementProps.cjs +32 -0
- package/dist/cjs/helpers/mergeRenderElementProps.native.js +35 -0
- package/dist/cjs/helpers/mergeRenderElementProps.native.js.map +1 -0
- package/dist/cjs/helpers/mergeSlotStyleProps.cjs +39 -0
- package/dist/cjs/helpers/mergeSlotStyleProps.native.js +42 -0
- package/dist/cjs/helpers/mergeSlotStyleProps.native.js.map +1 -0
- package/dist/cjs/helpers/mergeVariants.cjs +40 -0
- package/dist/cjs/helpers/mergeVariants.native.js +44 -0
- package/dist/cjs/helpers/mergeVariants.native.js.map +1 -0
- package/dist/cjs/helpers/nativeOnlyProps.cjs +60 -0
- package/dist/cjs/helpers/nativeOnlyProps.native.js +63 -0
- package/dist/cjs/helpers/nativeOnlyProps.native.js.map +1 -0
- package/dist/cjs/helpers/normalizeColor.cjs +35 -0
- package/dist/cjs/helpers/normalizeColor.native.js +50 -0
- package/dist/cjs/helpers/normalizeColor.native.js.map +1 -0
- package/dist/cjs/helpers/normalizeShadow.cjs +48 -0
- package/dist/cjs/helpers/normalizeShadow.native.js +52 -0
- package/dist/cjs/helpers/normalizeShadow.native.js.map +1 -0
- package/dist/cjs/helpers/normalizeStyle.cjs +47 -0
- package/dist/cjs/helpers/normalizeStyle.native.js +52 -0
- package/dist/cjs/helpers/normalizeStyle.native.js.map +1 -0
- package/dist/cjs/helpers/normalizeStylePropKeys.cjs +26 -0
- package/dist/cjs/helpers/normalizeStylePropKeys.native.js +40 -0
- package/dist/cjs/helpers/normalizeStylePropKeys.native.js.map +1 -0
- package/dist/cjs/helpers/normalizeValueWithProperty.cjs +38 -0
- package/dist/cjs/helpers/normalizeValueWithProperty.native.js +47 -0
- package/dist/cjs/helpers/normalizeValueWithProperty.native.js.map +1 -0
- package/dist/cjs/helpers/objectIdentityKey.cjs +39 -0
- package/dist/cjs/helpers/objectIdentityKey.native.js +47 -0
- package/dist/cjs/helpers/objectIdentityKey.native.js.map +1 -0
- package/dist/cjs/helpers/parseBorderShorthand.cjs +26 -0
- package/dist/cjs/helpers/parseBorderShorthand.native.js +58 -0
- package/dist/cjs/helpers/parseBorderShorthand.native.js.map +1 -0
- package/dist/cjs/helpers/parseNativeStyle.cjs +133 -0
- package/dist/cjs/helpers/parseNativeStyle.native.js +151 -0
- package/dist/cjs/helpers/parseNativeStyle.native.js.map +1 -0
- package/dist/cjs/helpers/parseOutlineShorthand.cjs +26 -0
- package/dist/cjs/helpers/parseOutlineShorthand.native.js +58 -0
- package/dist/cjs/helpers/parseOutlineShorthand.native.js.map +1 -0
- package/dist/cjs/helpers/platformResolveValue.cjs +33 -0
- package/dist/cjs/helpers/platformResolveValue.native.js +62 -0
- package/dist/cjs/helpers/platformResolveValue.native.js.map +1 -0
- package/dist/cjs/helpers/pointerEvents.cjs +26 -0
- package/dist/cjs/helpers/pointerEvents.native.js +120 -0
- package/dist/cjs/helpers/pointerEvents.native.js.map +1 -0
- package/dist/cjs/helpers/propMapper.cjs +203 -0
- package/dist/cjs/helpers/propMapper.native.js +295 -0
- package/dist/cjs/helpers/propMapper.native.js.map +1 -0
- package/dist/cjs/helpers/proxyThemeToParents.cjs +49 -0
- package/dist/cjs/helpers/proxyThemeToParents.native.js +132 -0
- package/dist/cjs/helpers/proxyThemeToParents.native.js.map +1 -0
- package/dist/cjs/helpers/proxyThemeVariables.cjs +36 -0
- package/dist/cjs/helpers/proxyThemeVariables.native.js +41 -0
- package/dist/cjs/helpers/proxyThemeVariables.native.js.map +1 -0
- package/dist/cjs/helpers/pseudoDescriptors.cjs +80 -0
- package/dist/cjs/helpers/pseudoDescriptors.native.js +83 -0
- package/dist/cjs/helpers/pseudoDescriptors.native.js.map +1 -0
- package/dist/cjs/helpers/pseudoTransitions.cjs +65 -0
- package/dist/cjs/helpers/pseudoTransitions.native.js +72 -0
- package/dist/cjs/helpers/pseudoTransitions.native.js.map +1 -0
- package/dist/cjs/helpers/registerCSSVariable.cjs +64 -0
- package/dist/cjs/helpers/registerCSSVariable.native.js +70 -0
- package/dist/cjs/helpers/registerCSSVariable.native.js.map +1 -0
- package/dist/cjs/helpers/resolveAnimationDriver.cjs +28 -0
- package/dist/cjs/helpers/resolveAnimationDriver.native.js +32 -0
- package/dist/cjs/helpers/resolveAnimationDriver.native.js.map +1 -0
- package/dist/cjs/helpers/resolveCompoundTokens.cjs +37 -0
- package/dist/cjs/helpers/resolveCompoundTokens.native.js +40 -0
- package/dist/cjs/helpers/resolveCompoundTokens.native.js.map +1 -0
- package/dist/cjs/helpers/resolveRem.cjs +32 -0
- package/dist/cjs/helpers/resolveRem.native.js +50 -0
- package/dist/cjs/helpers/resolveRem.native.js.map +1 -0
- package/dist/cjs/helpers/resolveSafeArea.cjs +34 -0
- package/dist/cjs/helpers/resolveSafeArea.native.js +42 -0
- package/dist/cjs/helpers/resolveSafeArea.native.js.map +1 -0
- package/dist/cjs/helpers/setElementProps.cjs +29 -0
- package/dist/cjs/helpers/setElementProps.native.js +33 -0
- package/dist/cjs/helpers/setElementProps.native.js.map +1 -0
- package/dist/cjs/helpers/skipProps.cjs +45 -0
- package/dist/cjs/helpers/skipProps.native.js +48 -0
- package/dist/cjs/helpers/skipProps.native.js.map +1 -0
- package/dist/cjs/helpers/sortString.cjs +26 -0
- package/dist/cjs/helpers/sortString.native.js +31 -0
- package/dist/cjs/helpers/sortString.native.js.map +1 -0
- package/dist/cjs/helpers/subscribeToContextGroup.cjs +81 -0
- package/dist/cjs/helpers/subscribeToContextGroup.native.js +131 -0
- package/dist/cjs/helpers/subscribeToContextGroup.native.js.map +1 -0
- package/dist/cjs/helpers/themeable.cjs +87 -0
- package/dist/cjs/helpers/themeable.native.js +93 -0
- package/dist/cjs/helpers/themeable.native.js.map +1 -0
- package/dist/cjs/helpers/themes.cjs +38 -0
- package/dist/cjs/helpers/themes.native.js +41 -0
- package/dist/cjs/helpers/themes.native.js.map +1 -0
- package/dist/cjs/helpers/timer.cjs +32 -0
- package/dist/cjs/helpers/timer.native.js +35 -0
- package/dist/cjs/helpers/timer.native.js.map +1 -0
- package/dist/cjs/helpers/transformsToString.cjs +38 -0
- package/dist/cjs/helpers/transformsToString.native.js +41 -0
- package/dist/cjs/helpers/transformsToString.native.js.map +1 -0
- package/dist/cjs/helpers/useRenderElement.cjs +48 -0
- package/dist/cjs/helpers/useRenderElement.native.js +52 -0
- package/dist/cjs/helpers/useRenderElement.native.js.map +1 -0
- package/dist/cjs/helpers/webPropsToSkip.cjs +26 -0
- package/dist/cjs/helpers/webPropsToSkip.native.js +76 -0
- package/dist/cjs/helpers/webPropsToSkip.native.js.map +1 -0
- package/dist/cjs/helpers/wrapStyleTags.cjs +41 -0
- package/dist/cjs/helpers/wrapStyleTags.native.js +31 -0
- package/dist/cjs/helpers/wrapStyleTags.native.js.map +1 -0
- package/dist/cjs/hooks/doesRootSchemeMatchSystem.cjs +28 -0
- package/dist/cjs/hooks/doesRootSchemeMatchSystem.native.js +34 -0
- package/dist/cjs/hooks/doesRootSchemeMatchSystem.native.js.map +1 -0
- package/dist/cjs/hooks/getThemeProxied.cjs +60 -0
- package/dist/cjs/hooks/getThemeProxied.native.js +93 -0
- package/dist/cjs/hooks/getThemeProxied.native.js.map +1 -0
- package/dist/cjs/hooks/useComponentState.cjs +144 -0
- package/dist/cjs/hooks/useComponentState.native.js +165 -0
- package/dist/cjs/hooks/useComponentState.native.js.map +1 -0
- package/dist/cjs/hooks/useDisableSSR.cjs +29 -0
- package/dist/cjs/hooks/useDisableSSR.native.js +33 -0
- package/dist/cjs/hooks/useDisableSSR.native.js.map +1 -0
- package/dist/cjs/hooks/useIsTouchDevice.cjs +28 -0
- package/dist/cjs/hooks/useIsTouchDevice.native.js +33 -0
- package/dist/cjs/hooks/useIsTouchDevice.native.js.map +1 -0
- package/dist/cjs/hooks/useMedia.cjs +180 -0
- package/dist/cjs/hooks/useMedia.native.js +215 -0
- package/dist/cjs/hooks/useMedia.native.js.map +1 -0
- package/dist/cjs/hooks/useProps.cjs +114 -0
- package/dist/cjs/hooks/useProps.native.js +119 -0
- package/dist/cjs/hooks/useProps.native.js.map +1 -0
- package/dist/cjs/hooks/useTheme.cjs +46 -0
- package/dist/cjs/hooks/useTheme.native.js +53 -0
- package/dist/cjs/hooks/useTheme.native.js.map +1 -0
- package/dist/cjs/hooks/useThemeName.cjs +37 -0
- package/dist/cjs/hooks/useThemeName.native.js +43 -0
- package/dist/cjs/hooks/useThemeName.native.js.map +1 -0
- package/dist/cjs/hooks/useThemeState.cjs +274 -0
- package/dist/cjs/hooks/useThemeState.native.js +387 -0
- package/dist/cjs/hooks/useThemeState.native.js.map +1 -0
- package/dist/cjs/index.cjs +120 -0
- package/dist/cjs/index.native.js +123 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/inject-styles.cjs +37 -0
- package/dist/cjs/inject-styles.native.js +41 -0
- package/dist/cjs/inject-styles.native.js.map +1 -0
- package/dist/cjs/insertFont.cjs +75 -0
- package/dist/cjs/insertFont.native.js +76 -0
- package/dist/cjs/insertFont.native.js.map +1 -0
- package/dist/cjs/interfaces/CSSColorNames.cjs +16 -0
- package/dist/cjs/interfaces/CSSColorNames.native.js +19 -0
- package/dist/cjs/interfaces/CSSColorNames.native.js.map +1 -0
- package/dist/cjs/interfaces/GetRef.cjs +16 -0
- package/dist/cjs/interfaces/GetRef.native.js +19 -0
- package/dist/cjs/interfaces/GetRef.native.js.map +1 -0
- package/dist/cjs/interfaces/GuiComponentEvents.cjs +16 -0
- package/dist/cjs/interfaces/GuiComponentEvents.native.js +19 -0
- package/dist/cjs/interfaces/GuiComponentEvents.native.js.map +1 -0
- package/dist/cjs/interfaces/GuiComponentPropsBaseBase.cjs +16 -0
- package/dist/cjs/interfaces/GuiComponentPropsBaseBase.native.js +19 -0
- package/dist/cjs/interfaces/GuiComponentPropsBaseBase.native.js.map +1 -0
- package/dist/cjs/interfaces/RNExclusiveTypes.cjs +16 -0
- package/dist/cjs/interfaces/RNExclusiveTypes.native.js +19 -0
- package/dist/cjs/interfaces/RNExclusiveTypes.native.js.map +1 -0
- package/dist/cjs/setupHooks.cjs +30 -0
- package/dist/cjs/setupHooks.native.js +33 -0
- package/dist/cjs/setupHooks.native.js.map +1 -0
- package/dist/cjs/setupReactNative.cjs +47 -0
- package/dist/cjs/setupReactNative.native.js +54 -0
- package/dist/cjs/setupReactNative.native.js.map +1 -0
- package/dist/cjs/styled.cjs +115 -0
- package/dist/cjs/styled.native.js +127 -0
- package/dist/cjs/styled.native.js.map +1 -0
- package/dist/cjs/styledHtml.test-d.cjs +156 -0
- package/dist/cjs/styledHtml.test-d.native.js +159 -0
- package/dist/cjs/styledHtml.test-d.native.js.map +1 -0
- package/dist/cjs/type-utils.cjs +16 -0
- package/dist/cjs/type-utils.native.js +19 -0
- package/dist/cjs/type-utils.native.js.map +1 -0
- package/dist/cjs/types.cjs +16 -0
- package/dist/cjs/types.native.js +19 -0
- package/dist/cjs/types.native.js.map +1 -0
- package/dist/cjs/views/Configuration.cjs +50 -0
- package/dist/cjs/views/Configuration.native.js +54 -0
- package/dist/cjs/views/Configuration.native.js.map +1 -0
- package/dist/cjs/views/FontLanguage.cjs +37 -0
- package/dist/cjs/views/FontLanguage.native.js +57 -0
- package/dist/cjs/views/FontLanguage.native.js.map +1 -0
- package/dist/cjs/views/GuiProvider.cjs +94 -0
- package/dist/cjs/views/GuiProvider.native.js +100 -0
- package/dist/cjs/views/GuiProvider.native.js.map +1 -0
- package/dist/cjs/views/GuiRoot.cjs +68 -0
- package/dist/cjs/views/GuiRoot.native.js +31 -0
- package/dist/cjs/views/GuiRoot.native.js.map +1 -0
- package/dist/cjs/views/Slot.cjs +64 -0
- package/dist/cjs/views/Slot.native.js +70 -0
- package/dist/cjs/views/Slot.native.js.map +1 -0
- package/dist/cjs/views/Text.cjs +58 -0
- package/dist/cjs/views/Text.native.js +52 -0
- package/dist/cjs/views/Text.native.js.map +1 -0
- package/dist/cjs/views/Theme.cjs +162 -0
- package/dist/cjs/views/Theme.native.js +174 -0
- package/dist/cjs/views/Theme.native.js.map +1 -0
- package/dist/cjs/views/ThemeDebug.cjs +77 -0
- package/dist/cjs/views/ThemeDebug.native.js +37 -0
- package/dist/cjs/views/ThemeDebug.native.js.map +1 -0
- package/dist/cjs/views/ThemeProvider.cjs +52 -0
- package/dist/cjs/views/ThemeProvider.native.js +48 -0
- package/dist/cjs/views/ThemeProvider.native.js.map +1 -0
- package/dist/cjs/views/View.cjs +31 -0
- package/dist/cjs/views/View.native.js +34 -0
- package/dist/cjs/views/View.native.js.map +1 -0
- package/dist/esm/Gui.mjs +36 -0
- package/dist/esm/Gui.mjs.map +1 -0
- package/dist/esm/Gui.native.js +73 -0
- package/dist/esm/Gui.native.js.map +1 -0
- package/dist/esm/_withStableStyle.mjs +31 -0
- package/dist/esm/_withStableStyle.mjs.map +1 -0
- package/dist/esm/_withStableStyle.native.js +40 -0
- package/dist/esm/_withStableStyle.native.js.map +1 -0
- package/dist/esm/animationDriverTypes.test-d.mjs +61 -0
- package/dist/esm/animationDriverTypes.test-d.mjs.map +1 -0
- package/dist/esm/animationDriverTypes.test-d.native.js +61 -0
- package/dist/esm/animationDriverTypes.test-d.native.js.map +1 -0
- package/dist/esm/config.mjs +87 -0
- package/dist/esm/config.mjs.map +1 -0
- package/dist/esm/config.native.js +115 -0
- package/dist/esm/config.native.js.map +1 -0
- package/dist/esm/constants/accessibilityDirectMap.mjs +7 -0
- package/dist/esm/constants/accessibilityDirectMap.mjs.map +1 -0
- package/dist/esm/constants/accessibilityDirectMap.native.js +7 -0
- package/dist/esm/constants/accessibilityDirectMap.native.js.map +1 -0
- package/dist/esm/constants/constants.mjs +12 -0
- package/dist/esm/constants/constants.mjs.map +1 -0
- package/dist/esm/constants/constants.native.js +12 -0
- package/dist/esm/constants/constants.native.js.map +1 -0
- package/dist/esm/constants/isDevTools.mjs +8 -0
- package/dist/esm/constants/isDevTools.mjs.map +1 -0
- package/dist/esm/constants/isDevTools.native.js +8 -0
- package/dist/esm/constants/isDevTools.native.js.map +1 -0
- package/dist/esm/contexts/ComponentContext.mjs +13 -0
- package/dist/esm/contexts/ComponentContext.mjs.map +1 -0
- package/dist/esm/contexts/ComponentContext.native.js +15 -0
- package/dist/esm/contexts/ComponentContext.native.js.map +1 -0
- package/dist/esm/contexts/GroupContext.mjs +4 -0
- package/dist/esm/contexts/GroupContext.mjs.map +1 -0
- package/dist/esm/contexts/GroupContext.native.js +4 -0
- package/dist/esm/contexts/GroupContext.native.js.map +1 -0
- package/dist/esm/createComponent.mjs +746 -0
- package/dist/esm/createComponent.mjs.map +1 -0
- package/dist/esm/createComponent.native.js +790 -0
- package/dist/esm/createComponent.native.js.map +1 -0
- package/dist/esm/createFont.mjs +19 -0
- package/dist/esm/createFont.mjs.map +1 -0
- package/dist/esm/createFont.native.js +24 -0
- package/dist/esm/createFont.native.js.map +1 -0
- package/dist/esm/createGui.mjs +212 -0
- package/dist/esm/createGui.mjs.map +1 -0
- package/dist/esm/createGui.native.js +271 -0
- package/dist/esm/createGui.native.js.map +1 -0
- package/dist/esm/createShorthands.mjs +5 -0
- package/dist/esm/createShorthands.mjs.map +1 -0
- package/dist/esm/createShorthands.native.js +5 -0
- package/dist/esm/createShorthands.native.js.map +1 -0
- package/dist/esm/createTokens.mjs +6 -0
- package/dist/esm/createTokens.mjs.map +1 -0
- package/dist/esm/createTokens.native.js +7 -0
- package/dist/esm/createTokens.native.js.map +1 -0
- package/dist/esm/createVariable.mjs +63 -0
- package/dist/esm/createVariable.mjs.map +1 -0
- package/dist/esm/createVariable.native.js +80 -0
- package/dist/esm/createVariable.native.js.map +1 -0
- package/dist/esm/createVariables.mjs +45 -0
- package/dist/esm/createVariables.mjs.map +1 -0
- package/dist/esm/createVariables.native.js +51 -0
- package/dist/esm/createVariables.native.js.map +1 -0
- package/dist/esm/defaultComponentState.mjs +20 -0
- package/dist/esm/defaultComponentState.mjs.map +1 -0
- package/dist/esm/defaultComponentState.native.js +20 -0
- package/dist/esm/defaultComponentState.native.js.map +1 -0
- package/dist/esm/eventHandling.mjs +21 -0
- package/dist/esm/eventHandling.mjs.map +1 -0
- package/dist/esm/eventHandling.native.js +114 -0
- package/dist/esm/eventHandling.native.js.map +1 -0
- package/dist/esm/helpers/consoleLog.native.js +4 -0
- package/dist/esm/helpers/consoleLog.native.js.map +1 -0
- package/dist/esm/helpers/createDesignSystem.mjs +156 -0
- package/dist/esm/helpers/createDesignSystem.mjs.map +1 -0
- package/dist/esm/helpers/createDesignSystem.native.js +203 -0
- package/dist/esm/helpers/createDesignSystem.native.js.map +1 -0
- package/dist/esm/helpers/createMediaStyle.mjs +75 -0
- package/dist/esm/helpers/createMediaStyle.mjs.map +1 -0
- package/dist/esm/helpers/createMediaStyle.native.js +86 -0
- package/dist/esm/helpers/createMediaStyle.native.js.map +1 -0
- package/dist/esm/helpers/createStyledContext.mjs +48 -0
- package/dist/esm/helpers/createStyledContext.mjs.map +1 -0
- package/dist/esm/helpers/createStyledContext.native.js +56 -0
- package/dist/esm/helpers/createStyledContext.native.js.map +1 -0
- package/dist/esm/helpers/defaultAnimationDriver.mjs +19 -0
- package/dist/esm/helpers/defaultAnimationDriver.mjs.map +1 -0
- package/dist/esm/helpers/defaultAnimationDriver.native.js +33 -0
- package/dist/esm/helpers/defaultAnimationDriver.native.js.map +1 -0
- package/dist/esm/helpers/defaultOffset.mjs +6 -0
- package/dist/esm/helpers/defaultOffset.mjs.map +1 -0
- package/dist/esm/helpers/defaultOffset.native.js +6 -0
- package/dist/esm/helpers/defaultOffset.native.js.map +1 -0
- package/dist/esm/helpers/expandStyle.mjs +42 -0
- package/dist/esm/helpers/expandStyle.mjs.map +1 -0
- package/dist/esm/helpers/expandStyle.native.js +135 -0
- package/dist/esm/helpers/expandStyle.native.js.map +1 -0
- package/dist/esm/helpers/expandStyles.mjs +17 -0
- package/dist/esm/helpers/expandStyles.mjs.map +1 -0
- package/dist/esm/helpers/expandStyles.native.js +19 -0
- package/dist/esm/helpers/expandStyles.native.js.map +1 -0
- package/dist/esm/helpers/getCSSStylesAtomic.mjs +154 -0
- package/dist/esm/helpers/getCSSStylesAtomic.mjs.map +1 -0
- package/dist/esm/helpers/getCSSStylesAtomic.native.js +8 -0
- package/dist/esm/helpers/getCSSStylesAtomic.native.js.map +1 -0
- package/dist/esm/helpers/getDefaultProps.mjs +15 -0
- package/dist/esm/helpers/getDefaultProps.mjs.map +1 -0
- package/dist/esm/helpers/getDefaultProps.native.js +16 -0
- package/dist/esm/helpers/getDefaultProps.native.js.map +1 -0
- package/dist/esm/helpers/getDynamicVal.mjs +41 -0
- package/dist/esm/helpers/getDynamicVal.mjs.map +1 -0
- package/dist/esm/helpers/getDynamicVal.native.js +42 -0
- package/dist/esm/helpers/getDynamicVal.native.js.map +1 -0
- package/dist/esm/helpers/getExpandedShorthands.mjs +14 -0
- package/dist/esm/helpers/getExpandedShorthands.mjs.map +1 -0
- package/dist/esm/helpers/getExpandedShorthands.native.js +15 -0
- package/dist/esm/helpers/getExpandedShorthands.native.js.map +1 -0
- package/dist/esm/helpers/getFontLanguage.mjs +3 -0
- package/dist/esm/helpers/getFontLanguage.mjs.map +1 -0
- package/dist/esm/helpers/getFontLanguage.native.js +5 -0
- package/dist/esm/helpers/getFontLanguage.native.js.map +1 -0
- package/dist/esm/helpers/getGroupPropParts.mjs +22 -0
- package/dist/esm/helpers/getGroupPropParts.mjs.map +1 -0
- package/dist/esm/helpers/getGroupPropParts.native.js +24 -0
- package/dist/esm/helpers/getGroupPropParts.native.js.map +1 -0
- package/dist/esm/helpers/getShorthandValue.mjs +5 -0
- package/dist/esm/helpers/getShorthandValue.mjs.map +1 -0
- package/dist/esm/helpers/getShorthandValue.native.js +9 -0
- package/dist/esm/helpers/getShorthandValue.native.js.map +1 -0
- package/dist/esm/helpers/getSplitStyles.mjs +658 -0
- package/dist/esm/helpers/getSplitStyles.mjs.map +1 -0
- package/dist/esm/helpers/getSplitStyles.native.js +768 -0
- package/dist/esm/helpers/getSplitStyles.native.js.map +1 -0
- package/dist/esm/helpers/getThemeCSSRules.mjs +105 -0
- package/dist/esm/helpers/getThemeCSSRules.mjs.map +1 -0
- package/dist/esm/helpers/getThemeCSSRules.native.js +5 -0
- package/dist/esm/helpers/getThemeCSSRules.native.js.map +1 -0
- package/dist/esm/helpers/getTokenForKey.mjs +101 -0
- package/dist/esm/helpers/getTokenForKey.mjs.map +1 -0
- package/dist/esm/helpers/getTokenForKey.native.js +116 -0
- package/dist/esm/helpers/getTokenForKey.native.js.map +1 -0
- package/dist/esm/helpers/getVariantExtras.mjs +45 -0
- package/dist/esm/helpers/getVariantExtras.mjs.map +1 -0
- package/dist/esm/helpers/getVariantExtras.native.js +46 -0
- package/dist/esm/helpers/getVariantExtras.native.js.map +1 -0
- package/dist/esm/helpers/insertStyleRule.mjs +169 -0
- package/dist/esm/helpers/insertStyleRule.mjs.map +1 -0
- package/dist/esm/helpers/insertStyleRule.native.js +282 -0
- package/dist/esm/helpers/insertStyleRule.native.js.map +1 -0
- package/dist/esm/helpers/isActivePlatform.mjs +13 -0
- package/dist/esm/helpers/isActivePlatform.mjs.map +1 -0
- package/dist/esm/helpers/isActivePlatform.native.js +13 -0
- package/dist/esm/helpers/isActivePlatform.native.js.map +1 -0
- package/dist/esm/helpers/isActiveTheme.mjs +5 -0
- package/dist/esm/helpers/isActiveTheme.mjs.map +1 -0
- package/dist/esm/helpers/isActiveTheme.native.js +5 -0
- package/dist/esm/helpers/isActiveTheme.native.js.map +1 -0
- package/dist/esm/helpers/isGuiComponent.mjs +6 -0
- package/dist/esm/helpers/isGuiComponent.mjs.map +1 -0
- package/dist/esm/helpers/isGuiComponent.native.js +6 -0
- package/dist/esm/helpers/isGuiComponent.native.js.map +1 -0
- package/dist/esm/helpers/isGuiElement.mjs +5 -0
- package/dist/esm/helpers/isGuiElement.mjs.map +1 -0
- package/dist/esm/helpers/isGuiElement.native.js +7 -0
- package/dist/esm/helpers/isGuiElement.native.js.map +1 -0
- package/dist/esm/helpers/isObj.mjs +3 -0
- package/dist/esm/helpers/isObj.mjs.map +1 -0
- package/dist/esm/helpers/isObj.native.js +10 -0
- package/dist/esm/helpers/isObj.native.js.map +1 -0
- package/dist/esm/helpers/log.mjs +15 -0
- package/dist/esm/helpers/log.mjs.map +1 -0
- package/dist/esm/helpers/log.native.js +16 -0
- package/dist/esm/helpers/log.native.js.map +1 -0
- package/dist/esm/helpers/mainThreadPressEvents.mjs +3 -0
- package/dist/esm/helpers/mainThreadPressEvents.mjs.map +1 -0
- package/dist/esm/helpers/mainThreadPressEvents.native.js +22 -0
- package/dist/esm/helpers/mainThreadPressEvents.native.js.map +1 -0
- package/dist/esm/helpers/matchMedia.mjs +12 -0
- package/dist/esm/helpers/matchMedia.mjs.map +1 -0
- package/dist/esm/helpers/matchMedia.native.js +20 -0
- package/dist/esm/helpers/matchMedia.native.js.map +1 -0
- package/dist/esm/helpers/mediaObjectToString.mjs +12 -0
- package/dist/esm/helpers/mediaObjectToString.mjs.map +1 -0
- package/dist/esm/helpers/mediaObjectToString.native.js +17 -0
- package/dist/esm/helpers/mediaObjectToString.native.js.map +1 -0
- package/dist/esm/helpers/mediaState.mjs +18 -0
- package/dist/esm/helpers/mediaState.mjs.map +1 -0
- package/dist/esm/helpers/mediaState.native.js +20 -0
- package/dist/esm/helpers/mediaState.native.js.map +1 -0
- package/dist/esm/helpers/mergeProps.mjs +31 -0
- package/dist/esm/helpers/mergeProps.mjs.map +1 -0
- package/dist/esm/helpers/mergeProps.native.js +35 -0
- package/dist/esm/helpers/mergeProps.native.js.map +1 -0
- package/dist/esm/helpers/mergeRenderElementProps.mjs +9 -0
- package/dist/esm/helpers/mergeRenderElementProps.mjs.map +1 -0
- package/dist/esm/helpers/mergeRenderElementProps.native.js +9 -0
- package/dist/esm/helpers/mergeRenderElementProps.native.js.map +1 -0
- package/dist/esm/helpers/mergeSlotStyleProps.mjs +16 -0
- package/dist/esm/helpers/mergeSlotStyleProps.mjs.map +1 -0
- package/dist/esm/helpers/mergeSlotStyleProps.native.js +16 -0
- package/dist/esm/helpers/mergeSlotStyleProps.native.js.map +1 -0
- package/dist/esm/helpers/mergeVariants.mjs +17 -0
- package/dist/esm/helpers/mergeVariants.mjs.map +1 -0
- package/dist/esm/helpers/mergeVariants.native.js +18 -0
- package/dist/esm/helpers/mergeVariants.native.js.map +1 -0
- package/dist/esm/helpers/nativeOnlyProps.mjs +37 -0
- package/dist/esm/helpers/nativeOnlyProps.mjs.map +1 -0
- package/dist/esm/helpers/nativeOnlyProps.native.js +37 -0
- package/dist/esm/helpers/nativeOnlyProps.native.js.map +1 -0
- package/dist/esm/helpers/normalizeColor.mjs +11 -0
- package/dist/esm/helpers/normalizeColor.mjs.map +1 -0
- package/dist/esm/helpers/normalizeColor.native.js +22 -0
- package/dist/esm/helpers/normalizeColor.native.js.map +1 -0
- package/dist/esm/helpers/normalizeShadow.mjs +25 -0
- package/dist/esm/helpers/normalizeShadow.mjs.map +1 -0
- package/dist/esm/helpers/normalizeShadow.native.js +26 -0
- package/dist/esm/helpers/normalizeShadow.native.js.map +1 -0
- package/dist/esm/helpers/normalizeStyle.mjs +24 -0
- package/dist/esm/helpers/normalizeStyle.mjs.map +1 -0
- package/dist/esm/helpers/normalizeStyle.native.js +26 -0
- package/dist/esm/helpers/normalizeStyle.native.js.map +1 -0
- package/dist/esm/helpers/normalizeStylePropKeys.mjs +3 -0
- package/dist/esm/helpers/normalizeStylePropKeys.mjs.map +1 -0
- package/dist/esm/helpers/normalizeStylePropKeys.native.js +14 -0
- package/dist/esm/helpers/normalizeStylePropKeys.native.js.map +1 -0
- package/dist/esm/helpers/normalizeValueWithProperty.mjs +15 -0
- package/dist/esm/helpers/normalizeValueWithProperty.mjs.map +1 -0
- package/dist/esm/helpers/normalizeValueWithProperty.native.js +21 -0
- package/dist/esm/helpers/normalizeValueWithProperty.native.js.map +1 -0
- package/dist/esm/helpers/objectIdentityKey.mjs +16 -0
- package/dist/esm/helpers/objectIdentityKey.mjs.map +1 -0
- package/dist/esm/helpers/objectIdentityKey.native.js +21 -0
- package/dist/esm/helpers/objectIdentityKey.native.js.map +1 -0
- package/dist/esm/helpers/parseBorderShorthand.mjs +3 -0
- package/dist/esm/helpers/parseBorderShorthand.mjs.map +1 -0
- package/dist/esm/helpers/parseBorderShorthand.native.js +32 -0
- package/dist/esm/helpers/parseBorderShorthand.native.js.map +1 -0
- package/dist/esm/helpers/parseNativeStyle.mjs +110 -0
- package/dist/esm/helpers/parseNativeStyle.mjs.map +1 -0
- package/dist/esm/helpers/parseNativeStyle.native.js +125 -0
- package/dist/esm/helpers/parseNativeStyle.native.js.map +1 -0
- package/dist/esm/helpers/parseOutlineShorthand.mjs +3 -0
- package/dist/esm/helpers/parseOutlineShorthand.mjs.map +1 -0
- package/dist/esm/helpers/parseOutlineShorthand.native.js +32 -0
- package/dist/esm/helpers/parseOutlineShorthand.native.js.map +1 -0
- package/dist/esm/helpers/platformResolveValue.mjs +10 -0
- package/dist/esm/helpers/platformResolveValue.mjs.map +1 -0
- package/dist/esm/helpers/platformResolveValue.native.js +36 -0
- package/dist/esm/helpers/platformResolveValue.native.js.map +1 -0
- package/dist/esm/helpers/pointerEvents.mjs +3 -0
- package/dist/esm/helpers/pointerEvents.mjs.map +1 -0
- package/dist/esm/helpers/pointerEvents.native.js +94 -0
- package/dist/esm/helpers/pointerEvents.native.js.map +1 -0
- package/dist/esm/helpers/propMapper.mjs +176 -0
- package/dist/esm/helpers/propMapper.mjs.map +1 -0
- package/dist/esm/helpers/propMapper.native.js +267 -0
- package/dist/esm/helpers/propMapper.native.js.map +1 -0
- package/dist/esm/helpers/proxyThemeToParents.mjs +25 -0
- package/dist/esm/helpers/proxyThemeToParents.mjs.map +1 -0
- package/dist/esm/helpers/proxyThemeToParents.native.js +105 -0
- package/dist/esm/helpers/proxyThemeToParents.native.js.map +1 -0
- package/dist/esm/helpers/proxyThemeVariables.mjs +13 -0
- package/dist/esm/helpers/proxyThemeVariables.mjs.map +1 -0
- package/dist/esm/helpers/proxyThemeVariables.native.js +15 -0
- package/dist/esm/helpers/proxyThemeVariables.native.js.map +1 -0
- package/dist/esm/helpers/pseudoDescriptors.mjs +54 -0
- package/dist/esm/helpers/pseudoDescriptors.mjs.map +1 -0
- package/dist/esm/helpers/pseudoDescriptors.native.js +54 -0
- package/dist/esm/helpers/pseudoDescriptors.native.js.map +1 -0
- package/dist/esm/helpers/pseudoTransitions.mjs +41 -0
- package/dist/esm/helpers/pseudoTransitions.mjs.map +1 -0
- package/dist/esm/helpers/pseudoTransitions.native.js +45 -0
- package/dist/esm/helpers/pseudoTransitions.native.js.map +1 -0
- package/dist/esm/helpers/registerCSSVariable.mjs +35 -0
- package/dist/esm/helpers/registerCSSVariable.mjs.map +1 -0
- package/dist/esm/helpers/registerCSSVariable.native.js +38 -0
- package/dist/esm/helpers/registerCSSVariable.native.js.map +1 -0
- package/dist/esm/helpers/resolveAnimationDriver.mjs +5 -0
- package/dist/esm/helpers/resolveAnimationDriver.mjs.map +1 -0
- package/dist/esm/helpers/resolveAnimationDriver.native.js +6 -0
- package/dist/esm/helpers/resolveAnimationDriver.native.js.map +1 -0
- package/dist/esm/helpers/resolveCompoundTokens.mjs +14 -0
- package/dist/esm/helpers/resolveCompoundTokens.mjs.map +1 -0
- package/dist/esm/helpers/resolveCompoundTokens.native.js +14 -0
- package/dist/esm/helpers/resolveCompoundTokens.native.js.map +1 -0
- package/dist/esm/helpers/resolveRem.mjs +8 -0
- package/dist/esm/helpers/resolveRem.mjs.map +1 -0
- package/dist/esm/helpers/resolveRem.native.js +23 -0
- package/dist/esm/helpers/resolveRem.native.js.map +1 -0
- package/dist/esm/helpers/resolveSafeArea.mjs +11 -0
- package/dist/esm/helpers/resolveSafeArea.mjs.map +1 -0
- package/dist/esm/helpers/resolveSafeArea.native.js +16 -0
- package/dist/esm/helpers/resolveSafeArea.native.js.map +1 -0
- package/dist/esm/helpers/setElementProps.mjs +6 -0
- package/dist/esm/helpers/setElementProps.mjs.map +1 -0
- package/dist/esm/helpers/setElementProps.native.js +7 -0
- package/dist/esm/helpers/setElementProps.native.js.map +1 -0
- package/dist/esm/helpers/skipProps.mjs +21 -0
- package/dist/esm/helpers/skipProps.mjs.map +1 -0
- package/dist/esm/helpers/skipProps.native.js +21 -0
- package/dist/esm/helpers/skipProps.native.js.map +1 -0
- package/dist/esm/helpers/sortString.mjs +3 -0
- package/dist/esm/helpers/sortString.mjs.map +1 -0
- package/dist/esm/helpers/sortString.native.js +5 -0
- package/dist/esm/helpers/sortString.native.js.map +1 -0
- package/dist/esm/helpers/subscribeToContextGroup.mjs +58 -0
- package/dist/esm/helpers/subscribeToContextGroup.mjs.map +1 -0
- package/dist/esm/helpers/subscribeToContextGroup.native.js +105 -0
- package/dist/esm/helpers/subscribeToContextGroup.native.js.map +1 -0
- package/dist/esm/helpers/themeable.mjs +54 -0
- package/dist/esm/helpers/themeable.mjs.map +1 -0
- package/dist/esm/helpers/themeable.native.js +56 -0
- package/dist/esm/helpers/themeable.native.js.map +1 -0
- package/dist/esm/helpers/themes.mjs +15 -0
- package/dist/esm/helpers/themes.mjs.map +1 -0
- package/dist/esm/helpers/themes.native.js +15 -0
- package/dist/esm/helpers/themes.native.js.map +1 -0
- package/dist/esm/helpers/timer.mjs +9 -0
- package/dist/esm/helpers/timer.mjs.map +1 -0
- package/dist/esm/helpers/timer.native.js +9 -0
- package/dist/esm/helpers/timer.native.js.map +1 -0
- package/dist/esm/helpers/transformsToString.mjs +15 -0
- package/dist/esm/helpers/transformsToString.mjs.map +1 -0
- package/dist/esm/helpers/transformsToString.native.js +15 -0
- package/dist/esm/helpers/transformsToString.native.js.map +1 -0
- package/dist/esm/helpers/useRenderElement.mjs +25 -0
- package/dist/esm/helpers/useRenderElement.mjs.map +1 -0
- package/dist/esm/helpers/useRenderElement.native.js +26 -0
- package/dist/esm/helpers/useRenderElement.native.js.map +1 -0
- package/dist/esm/helpers/webPropsToSkip.mjs +3 -0
- package/dist/esm/helpers/webPropsToSkip.mjs.map +1 -0
- package/dist/esm/helpers/webPropsToSkip.native.js +50 -0
- package/dist/esm/helpers/webPropsToSkip.native.js.map +1 -0
- package/dist/esm/helpers/wrapStyleTags.mjs +18 -0
- package/dist/esm/helpers/wrapStyleTags.mjs.map +1 -0
- package/dist/esm/helpers/wrapStyleTags.native.js +3 -0
- package/dist/esm/helpers/wrapStyleTags.native.js.map +1 -0
- package/dist/esm/hooks/doesRootSchemeMatchSystem.mjs +5 -0
- package/dist/esm/hooks/doesRootSchemeMatchSystem.mjs.map +1 -0
- package/dist/esm/hooks/doesRootSchemeMatchSystem.native.js +8 -0
- package/dist/esm/hooks/doesRootSchemeMatchSystem.native.js.map +1 -0
- package/dist/esm/hooks/getThemeProxied.mjs +34 -0
- package/dist/esm/hooks/getThemeProxied.mjs.map +1 -0
- package/dist/esm/hooks/getThemeProxied.native.js +67 -0
- package/dist/esm/hooks/getThemeProxied.native.js.map +1 -0
- package/dist/esm/hooks/useComponentState.mjs +121 -0
- package/dist/esm/hooks/useComponentState.mjs.map +1 -0
- package/dist/esm/hooks/useComponentState.native.js +139 -0
- package/dist/esm/hooks/useComponentState.native.js.map +1 -0
- package/dist/esm/hooks/useDisableSSR.mjs +6 -0
- package/dist/esm/hooks/useDisableSSR.mjs.map +1 -0
- package/dist/esm/hooks/useDisableSSR.native.js +7 -0
- package/dist/esm/hooks/useDisableSSR.native.js.map +1 -0
- package/dist/esm/hooks/useIsTouchDevice.mjs +5 -0
- package/dist/esm/hooks/useIsTouchDevice.mjs.map +1 -0
- package/dist/esm/hooks/useIsTouchDevice.native.js +7 -0
- package/dist/esm/hooks/useIsTouchDevice.native.js.map +1 -0
- package/dist/esm/hooks/useMedia.mjs +145 -0
- package/dist/esm/hooks/useMedia.mjs.map +1 -0
- package/dist/esm/hooks/useMedia.native.js +177 -0
- package/dist/esm/hooks/useMedia.native.js.map +1 -0
- package/dist/esm/hooks/useProps.mjs +78 -0
- package/dist/esm/hooks/useProps.mjs.map +1 -0
- package/dist/esm/hooks/useProps.native.js +80 -0
- package/dist/esm/hooks/useProps.native.js.map +1 -0
- package/dist/esm/hooks/useTheme.mjs +22 -0
- package/dist/esm/hooks/useTheme.mjs.map +1 -0
- package/dist/esm/hooks/useTheme.native.js +26 -0
- package/dist/esm/hooks/useTheme.native.js.map +1 -0
- package/dist/esm/hooks/useThemeName.mjs +14 -0
- package/dist/esm/hooks/useThemeName.mjs.map +1 -0
- package/dist/esm/hooks/useThemeName.native.js +17 -0
- package/dist/esm/hooks/useThemeName.native.js.map +1 -0
- package/dist/esm/hooks/useThemeState.mjs +245 -0
- package/dist/esm/hooks/useThemeState.mjs.map +1 -0
- package/dist/esm/hooks/useThemeState.native.js +356 -0
- package/dist/esm/hooks/useThemeState.native.js.map +1 -0
- package/dist/esm/index.js +74 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +74 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +74 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/inject-styles.mjs +14 -0
- package/dist/esm/inject-styles.mjs.map +1 -0
- package/dist/esm/inject-styles.native.js +15 -0
- package/dist/esm/inject-styles.native.js.map +1 -0
- package/dist/esm/insertFont.mjs +49 -0
- package/dist/esm/insertFont.mjs.map +1 -0
- package/dist/esm/insertFont.native.js +46 -0
- package/dist/esm/insertFont.native.js.map +1 -0
- package/dist/esm/interfaces/CSSColorNames.mjs +2 -0
- package/dist/esm/interfaces/CSSColorNames.mjs.map +1 -0
- package/dist/esm/interfaces/CSSColorNames.native.js +2 -0
- package/dist/esm/interfaces/CSSColorNames.native.js.map +1 -0
- package/dist/esm/interfaces/GetRef.mjs +2 -0
- package/dist/esm/interfaces/GetRef.mjs.map +1 -0
- package/dist/esm/interfaces/GetRef.native.js +2 -0
- package/dist/esm/interfaces/GetRef.native.js.map +1 -0
- package/dist/esm/interfaces/GuiComponentEvents.mjs +2 -0
- package/dist/esm/interfaces/GuiComponentEvents.mjs.map +1 -0
- package/dist/esm/interfaces/GuiComponentEvents.native.js +2 -0
- package/dist/esm/interfaces/GuiComponentEvents.native.js.map +1 -0
- package/dist/esm/interfaces/GuiComponentPropsBaseBase.mjs +2 -0
- package/dist/esm/interfaces/GuiComponentPropsBaseBase.mjs.map +1 -0
- package/dist/esm/interfaces/GuiComponentPropsBaseBase.native.js +2 -0
- package/dist/esm/interfaces/GuiComponentPropsBaseBase.native.js.map +1 -0
- package/dist/esm/interfaces/RNExclusiveTypes.mjs +2 -0
- package/dist/esm/interfaces/RNExclusiveTypes.mjs.map +1 -0
- package/dist/esm/interfaces/RNExclusiveTypes.native.js +2 -0
- package/dist/esm/interfaces/RNExclusiveTypes.native.js.map +1 -0
- package/dist/esm/setupHooks.mjs +6 -0
- package/dist/esm/setupHooks.mjs.map +1 -0
- package/dist/esm/setupHooks.native.js +6 -0
- package/dist/esm/setupHooks.native.js.map +1 -0
- package/dist/esm/setupReactNative.mjs +24 -0
- package/dist/esm/setupReactNative.mjs.map +1 -0
- package/dist/esm/setupReactNative.native.js +28 -0
- package/dist/esm/setupReactNative.native.js.map +1 -0
- package/dist/esm/styled.mjs +91 -0
- package/dist/esm/styled.mjs.map +1 -0
- package/dist/esm/styled.native.js +100 -0
- package/dist/esm/styled.native.js.map +1 -0
- package/dist/esm/styledHtml.test-d.mjs +157 -0
- package/dist/esm/styledHtml.test-d.mjs.map +1 -0
- package/dist/esm/styledHtml.test-d.native.js +157 -0
- package/dist/esm/styledHtml.test-d.native.js.map +1 -0
- package/dist/esm/type-utils.mjs +2 -0
- package/dist/esm/type-utils.mjs.map +1 -0
- package/dist/esm/type-utils.native.js +2 -0
- package/dist/esm/type-utils.native.js.map +1 -0
- package/dist/esm/types.mjs +2 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/types.native.js +2 -0
- package/dist/esm/types.native.js.map +1 -0
- package/dist/esm/views/Configuration.mjs +16 -0
- package/dist/esm/views/Configuration.mjs.map +1 -0
- package/dist/esm/views/Configuration.native.js +17 -0
- package/dist/esm/views/Configuration.native.js.map +1 -0
- package/dist/esm/views/FontLanguage.mjs +14 -0
- package/dist/esm/views/FontLanguage.mjs.map +1 -0
- package/dist/esm/views/FontLanguage.native.js +20 -0
- package/dist/esm/views/FontLanguage.native.js.map +1 -0
- package/dist/esm/views/GuiProvider.mjs +60 -0
- package/dist/esm/views/GuiProvider.mjs.map +1 -0
- package/dist/esm/views/GuiProvider.native.js +62 -0
- package/dist/esm/views/GuiProvider.native.js.map +1 -0
- package/dist/esm/views/GuiRoot.mjs +34 -0
- package/dist/esm/views/GuiRoot.mjs.map +1 -0
- package/dist/esm/views/GuiRoot.native.js +5 -0
- package/dist/esm/views/GuiRoot.native.js.map +1 -0
- package/dist/esm/views/Slot.mjs +40 -0
- package/dist/esm/views/Slot.mjs.map +1 -0
- package/dist/esm/views/Slot.native.js +43 -0
- package/dist/esm/views/Slot.native.js.map +1 -0
- package/dist/esm/views/Text.mjs +35 -0
- package/dist/esm/views/Text.mjs.map +1 -0
- package/dist/esm/views/Text.native.js +26 -0
- package/dist/esm/views/Text.native.js.map +1 -0
- package/dist/esm/views/Theme.mjs +127 -0
- package/dist/esm/views/Theme.mjs.map +1 -0
- package/dist/esm/views/Theme.native.js +136 -0
- package/dist/esm/views/Theme.native.js.map +1 -0
- package/dist/esm/views/ThemeDebug.mjs +54 -0
- package/dist/esm/views/ThemeDebug.mjs.map +1 -0
- package/dist/esm/views/ThemeDebug.native.js +11 -0
- package/dist/esm/views/ThemeDebug.native.js.map +1 -0
- package/dist/esm/views/ThemeProvider.mjs +29 -0
- package/dist/esm/views/ThemeProvider.mjs.map +1 -0
- package/dist/esm/views/ThemeProvider.native.js +20 -0
- package/dist/esm/views/ThemeProvider.native.js.map +1 -0
- package/dist/esm/views/View.mjs +8 -0
- package/dist/esm/views/View.mjs.map +1 -0
- package/dist/esm/views/View.native.js +8 -0
- package/dist/esm/views/View.native.js.map +1 -0
- package/inject-styles/index.cjs +2 -0
- package/inject-styles/index.js +2 -0
- package/inject-styles.cjs +1 -0
- package/package.json +81 -0
- package/reset.css +59 -0
- package/src/Gui.ts +47 -0
- package/src/_withStableStyle.tsx +55 -0
- package/src/animationDriverTypes.test-d.ts +332 -0
- package/src/config.ts +232 -0
- package/src/constants/accessibilityDirectMap.native.tsx +10 -0
- package/src/constants/accessibilityDirectMap.tsx +11 -0
- package/src/constants/constants.ts +16 -0
- package/src/constants/isDevTools.ts +12 -0
- package/src/contexts/ComponentContext.tsx +16 -0
- package/src/contexts/GroupContext.tsx +4 -0
- package/src/createComponent.tsx +1806 -0
- package/src/createFont.ts +50 -0
- package/src/createGui.ts +363 -0
- package/src/createShorthands.ts +7 -0
- package/src/createTokens.ts +31 -0
- package/src/createVariable.ts +121 -0
- package/src/createVariables.ts +78 -0
- package/src/defaultComponentState.tsx +22 -0
- package/src/eventHandling.native.ts +184 -0
- package/src/eventHandling.ts +44 -0
- package/src/helpers/consoleLog.native.ts +2 -0
- package/src/helpers/createDesignSystem.ts +264 -0
- package/src/helpers/createMediaStyle.ts +167 -0
- package/src/helpers/createStyledContext.tsx +98 -0
- package/src/helpers/defaultAnimationDriver.tsx +23 -0
- package/src/helpers/defaultOffset.ts +1 -0
- package/src/helpers/expandStyle.ts +204 -0
- package/src/helpers/expandStyles.ts +42 -0
- package/src/helpers/getCSSStylesAtomic.native.ts +7 -0
- package/src/helpers/getCSSStylesAtomic.ts +263 -0
- package/src/helpers/getDefaultProps.ts +28 -0
- package/src/helpers/getDynamicVal.ts +63 -0
- package/src/helpers/getExpandedShorthands.ts +23 -0
- package/src/helpers/getFontLanguage.ts +2 -0
- package/src/helpers/getGroupPropParts.ts +46 -0
- package/src/helpers/getShorthandValue.ts +9 -0
- package/src/helpers/getSplitStyles.tsx +1768 -0
- package/src/helpers/getThemeCSSRules.native.ts +3 -0
- package/src/helpers/getThemeCSSRules.ts +192 -0
- package/src/helpers/getTokenForKey.ts +223 -0
- package/src/helpers/getVariantExtras.tsx +67 -0
- package/src/helpers/insertStyleRule.tsx +365 -0
- package/src/helpers/isActivePlatform.ts +14 -0
- package/src/helpers/isActiveTheme.ts +4 -0
- package/src/helpers/isGuiComponent.tsx +11 -0
- package/src/helpers/isGuiElement.tsx +11 -0
- package/src/helpers/isObj.ts +1 -0
- package/src/helpers/log.ts +17 -0
- package/src/helpers/mainThreadPressEvents.native.ts +41 -0
- package/src/helpers/mainThreadPressEvents.ts +6 -0
- package/src/helpers/matchMedia.native.ts +34 -0
- package/src/helpers/matchMedia.ts +17 -0
- package/src/helpers/mediaObjectToString.ts +30 -0
- package/src/helpers/mediaState.ts +32 -0
- package/src/helpers/mergeProps.ts +121 -0
- package/src/helpers/mergeRenderElementProps.ts +17 -0
- package/src/helpers/mergeSlotStyleProps.ts +46 -0
- package/src/helpers/mergeVariants.ts +40 -0
- package/src/helpers/nativeOnlyProps.ts +38 -0
- package/src/helpers/normalizeColor.native.ts +29 -0
- package/src/helpers/normalizeColor.ts +29 -0
- package/src/helpers/normalizeShadow.native.ts +20 -0
- package/src/helpers/normalizeShadow.ts +21 -0
- package/src/helpers/normalizeStyle.ts +42 -0
- package/src/helpers/normalizeStylePropKeys.native.ts +12 -0
- package/src/helpers/normalizeStylePropKeys.ts +3 -0
- package/src/helpers/normalizeValueWithProperty.ts +41 -0
- package/src/helpers/objectIdentityKey.tsx +20 -0
- package/src/helpers/parseBorderShorthand.native.ts +74 -0
- package/src/helpers/parseBorderShorthand.ts +6 -0
- package/src/helpers/parseNativeStyle.ts +193 -0
- package/src/helpers/parseOutlineShorthand.native.ts +62 -0
- package/src/helpers/parseOutlineShorthand.ts +6 -0
- package/src/helpers/platformResolveValue.native.ts +72 -0
- package/src/helpers/platformResolveValue.ts +22 -0
- package/src/helpers/pointerEvents.native.ts +143 -0
- package/src/helpers/pointerEvents.ts +9 -0
- package/src/helpers/propMapper.ts +404 -0
- package/src/helpers/proxyThemeToParents.ts +52 -0
- package/src/helpers/proxyThemeVariables.tsx +13 -0
- package/src/helpers/pseudoDescriptors.ts +74 -0
- package/src/helpers/pseudoTransitions.ts +97 -0
- package/src/helpers/registerCSSVariable.ts +54 -0
- package/src/helpers/resolveAnimationDriver.ts +23 -0
- package/src/helpers/resolveCompoundTokens.ts +28 -0
- package/src/helpers/resolveRem.native.ts +44 -0
- package/src/helpers/resolveRem.ts +17 -0
- package/src/helpers/resolveSafeArea.native.ts +18 -0
- package/src/helpers/resolveSafeArea.ts +10 -0
- package/src/helpers/setElementProps.native.tsx +9 -0
- package/src/helpers/setElementProps.tsx +5 -0
- package/src/helpers/skipProps.ts +35 -0
- package/src/helpers/sortString.ts +1 -0
- package/src/helpers/subscribeToContextGroup.tsx +99 -0
- package/src/helpers/themeable.tsx +104 -0
- package/src/helpers/themes.ts +23 -0
- package/src/helpers/timer.ts +9 -0
- package/src/helpers/transformsToString.ts +20 -0
- package/src/helpers/useRenderElement.tsx +73 -0
- package/src/helpers/webPropsToSkip.native.ts +56 -0
- package/src/helpers/webPropsToSkip.ts +1 -0
- package/src/helpers/wrapStyleTags.tsx +31 -0
- package/src/hooks/doesRootSchemeMatchSystem.native.ts +7 -0
- package/src/hooks/doesRootSchemeMatchSystem.ts +4 -0
- package/src/hooks/getThemeProxied.ts +202 -0
- package/src/hooks/useComponentState.ts +269 -0
- package/src/hooks/useDisableSSR.tsx +6 -0
- package/src/hooks/useIsTouchDevice.tsx +6 -0
- package/src/hooks/useMedia.tsx +298 -0
- package/src/hooks/useProps.tsx +158 -0
- package/src/hooks/useTheme.tsx +48 -0
- package/src/hooks/useThemeName.tsx +10 -0
- package/src/hooks/useThemeState.ts +558 -0
- package/src/index.ts +103 -0
- package/src/inject-styles.ts +20 -0
- package/src/insertFont.ts +81 -0
- package/src/interfaces/CSSColorNames.tsx +149 -0
- package/src/interfaces/GetRef.tsx +24 -0
- package/src/interfaces/GuiComponentEvents.tsx +18 -0
- package/src/interfaces/GuiComponentPropsBaseBase.tsx +124 -0
- package/src/interfaces/RNExclusiveTypes.ts +59 -0
- package/src/setupHooks.ts +27 -0
- package/src/setupReactNative.ts +60 -0
- package/src/styled.tsx +602 -0
- package/src/styledHtml.test-d.ts +286 -0
- package/src/type-utils.ts +30 -0
- package/src/types.tsx +3364 -0
- package/src/views/Configuration.tsx +20 -0
- package/src/views/FontLanguage.native.tsx +13 -0
- package/src/views/FontLanguage.tsx +18 -0
- package/src/views/GuiProvider.tsx +95 -0
- package/src/views/GuiRoot.native.tsx +9 -0
- package/src/views/GuiRoot.tsx +64 -0
- package/src/views/Slot.tsx +86 -0
- package/src/views/Text.tsx +71 -0
- package/src/views/Theme.tsx +246 -0
- package/src/views/ThemeDebug.native.tsx +17 -0
- package/src/views/ThemeDebug.tsx +95 -0
- package/src/views/ThemeProvider.tsx +45 -0
- package/src/views/View.tsx +25 -0
- package/tsconfig.json +44 -0
- package/tsconfig.test.json +9 -0
- package/types/Gui.d.ts +15 -0
- package/types/_withStableStyle.d.ts +4 -0
- package/types/config.d.ts +72 -0
- package/types/constants/accessibilityDirectMap.d.ts +6 -0
- package/types/constants/accessibilityDirectMap.native.d.ts +6 -0
- package/types/constants/constants.d.ts +5 -0
- package/types/constants/isDevTools.d.ts +2 -0
- package/types/contexts/ComponentContext.d.ts +4 -0
- package/types/contexts/GroupContext.d.ts +3 -0
- package/types/createComponent.d.ts +7 -0
- package/types/createFont.d.ts +3 -0
- package/types/createGui.d.ts +3 -0
- package/types/createShorthands.d.ts +3 -0
- package/types/createTokens.d.ts +22 -0
- package/types/createVariable.d.ts +22 -0
- package/types/createVariables.d.ts +10 -0
- package/types/defaultComponentState.d.ts +5 -0
- package/types/eventHandling.d.ts +27 -0
- package/types/eventHandling.native.d.ts +12 -0
- package/types/helpers/consoleLog.native.d.ts +7 -0
- package/types/helpers/createDesignSystem.d.ts +47 -0
- package/types/helpers/createMediaStyle.d.ts +5 -0
- package/types/helpers/createStyledContext.d.ts +3 -0
- package/types/helpers/defaultAnimationDriver.d.ts +3 -0
- package/types/helpers/defaultOffset.d.ts +5 -0
- package/types/helpers/expandStyle.d.ts +7 -0
- package/types/helpers/expandStyles.d.ts +2 -0
- package/types/helpers/getCSSStylesAtomic.d.ts +11 -0
- package/types/helpers/getCSSStylesAtomic.native.d.ts +4 -0
- package/types/helpers/getDefaultProps.d.ts +3 -0
- package/types/helpers/getDynamicVal.d.ts +16 -0
- package/types/helpers/getExpandedShorthands.d.ts +7 -0
- package/types/helpers/getFontLanguage.d.ts +2 -0
- package/types/helpers/getGroupPropParts.d.ts +7 -0
- package/types/helpers/getShorthandValue.d.ts +2 -0
- package/types/helpers/getSplitStyles.d.ts +13 -0
- package/types/helpers/getThemeCSSRules.d.ts +10 -0
- package/types/helpers/getThemeCSSRules.native.d.ts +2 -0
- package/types/helpers/getTokenForKey.d.ts +6 -0
- package/types/helpers/getVariantExtras.d.ts +4 -0
- package/types/helpers/insertStyleRule.d.ts +10 -0
- package/types/helpers/isActivePlatform.d.ts +2 -0
- package/types/helpers/isActiveTheme.d.ts +2 -0
- package/types/helpers/isGuiComponent.d.ts +5 -0
- package/types/helpers/isGuiElement.d.ts +8 -0
- package/types/helpers/isObj.d.ts +2 -0
- package/types/helpers/log.d.ts +2 -0
- package/types/helpers/mainThreadPressEvents.d.ts +2 -0
- package/types/helpers/mainThreadPressEvents.native.d.ts +10 -0
- package/types/helpers/matchMedia.d.ts +6 -0
- package/types/helpers/matchMedia.native.d.ts +4 -0
- package/types/helpers/mediaObjectToString.d.ts +3 -0
- package/types/helpers/mediaState.d.ts +7 -0
- package/types/helpers/mergeProps.d.ts +20 -0
- package/types/helpers/mergeRenderElementProps.d.ts +7 -0
- package/types/helpers/mergeSlotStyleProps.d.ts +10 -0
- package/types/helpers/mergeVariants.d.ts +3 -0
- package/types/helpers/nativeOnlyProps.d.ts +39 -0
- package/types/helpers/normalizeColor.d.ts +8 -0
- package/types/helpers/normalizeColor.native.d.ts +9 -0
- package/types/helpers/normalizeShadow.d.ts +10 -0
- package/types/helpers/normalizeShadow.native.d.ts +10 -0
- package/types/helpers/normalizeStyle.d.ts +9 -0
- package/types/helpers/normalizeStylePropKeys.d.ts +2 -0
- package/types/helpers/normalizeStylePropKeys.native.d.ts +13 -0
- package/types/helpers/normalizeValueWithProperty.d.ts +6 -0
- package/types/helpers/objectIdentityKey.d.ts +2 -0
- package/types/helpers/parseBorderShorthand.d.ts +3 -0
- package/types/helpers/parseBorderShorthand.native.d.ts +3 -0
- package/types/helpers/parseNativeStyle.d.ts +14 -0
- package/types/helpers/parseOutlineShorthand.d.ts +3 -0
- package/types/helpers/parseOutlineShorthand.native.d.ts +3 -0
- package/types/helpers/platformResolveValue.d.ts +6 -0
- package/types/helpers/platformResolveValue.native.d.ts +7 -0
- package/types/helpers/pointerEvents.d.ts +8 -0
- package/types/helpers/pointerEvents.native.d.ts +2 -0
- package/types/helpers/propMapper.d.ts +5 -0
- package/types/helpers/proxyThemeToParents.d.ts +4 -0
- package/types/helpers/proxyThemeVariables.d.ts +2 -0
- package/types/helpers/pseudoDescriptors.d.ts +51 -0
- package/types/helpers/pseudoTransitions.d.ts +29 -0
- package/types/helpers/registerCSSVariable.d.ts +9 -0
- package/types/helpers/resolveAnimationDriver.d.ts +7 -0
- package/types/helpers/resolveCompoundTokens.d.ts +9 -0
- package/types/helpers/resolveRem.d.ts +13 -0
- package/types/helpers/resolveRem.native.d.ts +13 -0
- package/types/helpers/resolveSafeArea.d.ts +2 -0
- package/types/helpers/resolveSafeArea.native.d.ts +2 -0
- package/types/helpers/setElementProps.d.ts +2 -0
- package/types/helpers/setElementProps.native.d.ts +2 -0
- package/types/helpers/skipProps.d.ts +19 -0
- package/types/helpers/sortString.d.ts +2 -0
- package/types/helpers/subscribeToContextGroup.d.ts +10 -0
- package/types/helpers/themeable.d.ts +3 -0
- package/types/helpers/themes.d.ts +2 -0
- package/types/helpers/timer.d.ts +2 -0
- package/types/helpers/transformsToString.d.ts +2 -0
- package/types/helpers/useRenderElement.d.ts +13 -0
- package/types/helpers/webPropsToSkip.d.ts +2 -0
- package/types/helpers/webPropsToSkip.native.d.ts +104 -0
- package/types/helpers/wrapStyleTags.d.ts +3 -0
- package/types/hooks/doesRootSchemeMatchSystem.d.ts +2 -0
- package/types/hooks/doesRootSchemeMatchSystem.native.d.ts +2 -0
- package/types/hooks/getThemeProxied.d.ts +23 -0
- package/types/hooks/useComponentState.d.ts +25 -0
- package/types/hooks/useDisableSSR.d.ts +3 -0
- package/types/hooks/useIsTouchDevice.d.ts +2 -0
- package/types/hooks/useMedia.d.ts +23 -0
- package/types/hooks/useProps.d.ts +41 -0
- package/types/hooks/useTheme.d.ts +9 -0
- package/types/hooks/useThemeName.d.ts +3 -0
- package/types/hooks/useThemeState.d.ts +11 -0
- package/types/index.d.ts +77 -0
- package/types/inject-styles.d.ts +7 -0
- package/types/insertFont.d.ts +10 -0
- package/types/interfaces/CSSColorNames.d.ts +2 -0
- package/types/interfaces/GetRef.d.ts +6 -0
- package/types/interfaces/GuiComponentEvents.d.ts +19 -0
- package/types/interfaces/GuiComponentPropsBaseBase.d.ts +95 -0
- package/types/interfaces/RNExclusiveTypes.d.ts +22 -0
- package/types/setupHooks.d.ts +17 -0
- package/types/setupReactNative.d.ts +5 -0
- package/types/styled.d.ts +53 -0
- package/types/type-utils.d.ts +13 -0
- package/types/types.d.ts +1929 -0
- package/types/views/Configuration.d.ts +10 -0
- package/types/views/FontLanguage.d.ts +6 -0
- package/types/views/FontLanguage.native.d.ts +3 -0
- package/types/views/GuiProvider.d.ts +3 -0
- package/types/views/GuiRoot.d.ts +15 -0
- package/types/views/GuiRoot.native.d.ts +7 -0
- package/types/views/Slot.d.ts +13 -0
- package/types/views/Text.d.ts +4 -0
- package/types/views/Theme.d.ts +16 -0
- package/types/views/ThemeDebug.d.ts +10 -0
- package/types/views/ThemeDebug.native.d.ts +10 -0
- package/types/views/ThemeProvider.d.ts +3 -0
- package/types/views/View.d.ts +8 -0
- package/vitest.config.d.ts +3 -0
- package/vitest.config.d.ts.map +1 -0
- package/vitest.config.ts +14 -0
|
@@ -0,0 +1,1768 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isAndroid,
|
|
3
|
+
isClient,
|
|
4
|
+
isIos,
|
|
5
|
+
isWeb,
|
|
6
|
+
useIsomorphicLayoutEffect,
|
|
7
|
+
} from '@hanzogui/constants'
|
|
8
|
+
import {
|
|
9
|
+
StyleObjectIdentifier,
|
|
10
|
+
StyleObjectProperty,
|
|
11
|
+
StyleObjectPseudo,
|
|
12
|
+
StyleObjectRules,
|
|
13
|
+
nonAnimatableStyleProps,
|
|
14
|
+
stylePropsText,
|
|
15
|
+
stylePropsTransform,
|
|
16
|
+
tokenCategories,
|
|
17
|
+
validPseudoKeys,
|
|
18
|
+
validStyles as validStylesView,
|
|
19
|
+
} from '@hanzogui/helpers'
|
|
20
|
+
import React from 'react'
|
|
21
|
+
import { getConfig, getFont, getSetting } from '../config'
|
|
22
|
+
import { isDevTools } from '../constants/isDevTools'
|
|
23
|
+
import {
|
|
24
|
+
getMediaImportanceIfMoreImportant,
|
|
25
|
+
getMediaKey,
|
|
26
|
+
mediaKeyMatch,
|
|
27
|
+
} from '../hooks/useMedia'
|
|
28
|
+
import { mediaState as globalMediaState, mediaQueryConfig } from './mediaState'
|
|
29
|
+
import type {
|
|
30
|
+
AllGroupContexts,
|
|
31
|
+
AnimationDriver,
|
|
32
|
+
ClassNamesObject,
|
|
33
|
+
ComponentContextI,
|
|
34
|
+
DebugProp,
|
|
35
|
+
GetStyleResult,
|
|
36
|
+
GetStyleState,
|
|
37
|
+
PseudoStyles,
|
|
38
|
+
RulesToInsert,
|
|
39
|
+
SpaceTokens,
|
|
40
|
+
SplitStyleProps,
|
|
41
|
+
StaticConfig,
|
|
42
|
+
StyleObject,
|
|
43
|
+
GuiComponentState,
|
|
44
|
+
GuiInternalConfig,
|
|
45
|
+
TextStyle,
|
|
46
|
+
ThemeParsed,
|
|
47
|
+
ViewStyleWithPseudos,
|
|
48
|
+
} from '../types'
|
|
49
|
+
import { createMediaStyle } from './createMediaStyle'
|
|
50
|
+
import { fixStyles } from './expandStyles'
|
|
51
|
+
import { getCSSStylesAtomic, getStyleAtomic, styleToCSS } from './getCSSStylesAtomic'
|
|
52
|
+
import { getDefaultProps } from './getDefaultProps'
|
|
53
|
+
import {
|
|
54
|
+
extractValueFromDynamic,
|
|
55
|
+
getDynamicVal,
|
|
56
|
+
getOppositeScheme,
|
|
57
|
+
isColorStyleKey,
|
|
58
|
+
} from './getDynamicVal'
|
|
59
|
+
import { getGroupPropParts } from './getGroupPropParts'
|
|
60
|
+
import { insertStyleRules, shouldInsertStyleRules, updateRules } from './insertStyleRule'
|
|
61
|
+
import { isActivePlatform } from './isActivePlatform'
|
|
62
|
+
import { isActiveTheme } from './isActiveTheme'
|
|
63
|
+
import { log } from './log'
|
|
64
|
+
import { normalizeValueWithProperty } from './normalizeValueWithProperty'
|
|
65
|
+
import { propMapper } from './propMapper'
|
|
66
|
+
import {
|
|
67
|
+
type PseudoDescriptorKey,
|
|
68
|
+
pseudoDescriptors,
|
|
69
|
+
pseudoPriorities,
|
|
70
|
+
} from './pseudoDescriptors'
|
|
71
|
+
import { skipProps } from './skipProps'
|
|
72
|
+
import { sortString } from './sortString'
|
|
73
|
+
import { transformsToString } from './transformsToString'
|
|
74
|
+
|
|
75
|
+
export type SplitStyles = ReturnType<typeof getSplitStyles>
|
|
76
|
+
|
|
77
|
+
export type SplitStyleResult = ReturnType<typeof getSplitStyles>
|
|
78
|
+
|
|
79
|
+
let conf: GuiInternalConfig
|
|
80
|
+
|
|
81
|
+
// WeakMap to track original token values for style objects
|
|
82
|
+
// Used to preserve '$8' style tokens instead of resolved 'var(--t-space-8)'
|
|
83
|
+
// for context prop propagation to children (issues #3670, #3676)
|
|
84
|
+
export const styleOriginalValues = new WeakMap<object, Record<string, any>>()
|
|
85
|
+
|
|
86
|
+
type StyleSplitter = (
|
|
87
|
+
props: { [key: string]: any },
|
|
88
|
+
staticConfig: StaticConfig,
|
|
89
|
+
theme: ThemeParsed,
|
|
90
|
+
themeName: string,
|
|
91
|
+
componentState: GuiComponentState,
|
|
92
|
+
styleProps: SplitStyleProps,
|
|
93
|
+
parentSplitStyles?: GetStyleResult | null,
|
|
94
|
+
context?: ComponentContextI,
|
|
95
|
+
groupContext?: AllGroupContexts | null,
|
|
96
|
+
// web-only
|
|
97
|
+
elementType?: string,
|
|
98
|
+
startedUnhydrated?: boolean,
|
|
99
|
+
debug?: DebugProp,
|
|
100
|
+
// resolved animation driver (respects animatedBy prop)
|
|
101
|
+
animationDriver?: AnimationDriver | null
|
|
102
|
+
) => null | GetStyleResult
|
|
103
|
+
|
|
104
|
+
export const PROP_SPLIT = '-'
|
|
105
|
+
|
|
106
|
+
// Normalize group keys like $group-press to $group-true-press when the group name
|
|
107
|
+
// doesn't exist in context (defaults to the unnamed 'true' group)
|
|
108
|
+
function normalizeGroupKey(
|
|
109
|
+
key: string,
|
|
110
|
+
groupContext: AllGroupContexts | null | undefined
|
|
111
|
+
): string {
|
|
112
|
+
const parts = key.split('-')
|
|
113
|
+
const plen = parts.length
|
|
114
|
+
if (
|
|
115
|
+
// check if its actually a simple group selector to avoid breaking selectors
|
|
116
|
+
plen === 2 ||
|
|
117
|
+
(plen === 3 && pseudoPriorities[parts[parts.length - 1]])
|
|
118
|
+
) {
|
|
119
|
+
const name = parts[1]
|
|
120
|
+
if (name !== 'true' && groupContext && !groupContext[name]) {
|
|
121
|
+
return key.replace('$group-', '$group-true-')
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return key
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// if you need and easier way to test performance, you can do something like this
|
|
128
|
+
// add this early return somewhere in this file and you can see roughly where it slows down:
|
|
129
|
+
|
|
130
|
+
// return {
|
|
131
|
+
// space,
|
|
132
|
+
// hasMedia,
|
|
133
|
+
// fontFamily: styleState.fontFamily,
|
|
134
|
+
// viewProps: {
|
|
135
|
+
// children: props.children,
|
|
136
|
+
// },
|
|
137
|
+
// style: {
|
|
138
|
+
// borderColor: props.borderColor,
|
|
139
|
+
// borderWidth: props.borderWidth,
|
|
140
|
+
// padding: props.padding,
|
|
141
|
+
// },
|
|
142
|
+
// pseudos,
|
|
143
|
+
// classNames,
|
|
144
|
+
// rulesToInsert,
|
|
145
|
+
// dynamicThemeAccess,
|
|
146
|
+
// }
|
|
147
|
+
|
|
148
|
+
function isValidStyleKey(
|
|
149
|
+
key: string,
|
|
150
|
+
validStyles: Record<string, boolean>,
|
|
151
|
+
accept?: Record<string, any>
|
|
152
|
+
) {
|
|
153
|
+
return key in validStyles ? true : accept && key in accept
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export const getSplitStyles: StyleSplitter = (
|
|
157
|
+
props,
|
|
158
|
+
staticConfig,
|
|
159
|
+
theme,
|
|
160
|
+
themeName,
|
|
161
|
+
componentState,
|
|
162
|
+
styleProps,
|
|
163
|
+
parentSplitStyles,
|
|
164
|
+
componentContext,
|
|
165
|
+
groupContext,
|
|
166
|
+
elementType,
|
|
167
|
+
startedUnhydrated,
|
|
168
|
+
debug,
|
|
169
|
+
animationDriver
|
|
170
|
+
) => {
|
|
171
|
+
conf = conf || getConfig()
|
|
172
|
+
// use passed animationDriver or fall back to context/config
|
|
173
|
+
const driver =
|
|
174
|
+
animationDriver ||
|
|
175
|
+
componentContext?.animationDriver ||
|
|
176
|
+
(conf.animations as AnimationDriver)
|
|
177
|
+
|
|
178
|
+
if (props.passThrough) {
|
|
179
|
+
return null
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// a bit icky, we need no normalize but not fully
|
|
183
|
+
if (
|
|
184
|
+
isWeb &&
|
|
185
|
+
styleProps.isAnimated &&
|
|
186
|
+
driver?.isReactNative &&
|
|
187
|
+
!styleProps.noNormalize
|
|
188
|
+
) {
|
|
189
|
+
styleProps.noNormalize = 'values'
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const { shorthands } = conf
|
|
193
|
+
const {
|
|
194
|
+
isHOC,
|
|
195
|
+
isText,
|
|
196
|
+
isInput,
|
|
197
|
+
variants,
|
|
198
|
+
isReactNative,
|
|
199
|
+
inlineProps,
|
|
200
|
+
inlineWhenUnflattened,
|
|
201
|
+
parentStaticConfig,
|
|
202
|
+
acceptsClassName,
|
|
203
|
+
} = staticConfig
|
|
204
|
+
|
|
205
|
+
const viewProps: GetStyleResult['viewProps'] = {}
|
|
206
|
+
const mediaState = styleProps.mediaState || globalMediaState
|
|
207
|
+
|
|
208
|
+
const shouldDoClasses = acceptsClassName && isWeb && !styleProps.noClass
|
|
209
|
+
|
|
210
|
+
const rulesToInsert: RulesToInsert =
|
|
211
|
+
process.env.HANZO_GUI_TARGET === 'native' ? (undefined as any) : {}
|
|
212
|
+
const classNames: ClassNamesObject = {}
|
|
213
|
+
|
|
214
|
+
let space: SpaceTokens | null = props.space
|
|
215
|
+
let pseudos: PseudoStyles | null = null
|
|
216
|
+
let hasMedia: boolean | Set<string> = false
|
|
217
|
+
let dynamicThemeAccess: boolean | undefined
|
|
218
|
+
let pseudoGroups: Set<string> | undefined
|
|
219
|
+
let mediaGroups: Set<string> | undefined
|
|
220
|
+
let className = (props.className as string) || '' // existing classNames
|
|
221
|
+
let mediaStylesSeen = 0
|
|
222
|
+
|
|
223
|
+
const validStyles =
|
|
224
|
+
staticConfig.validStyles ||
|
|
225
|
+
(staticConfig.isText || staticConfig.isInput ? stylePropsText : validStylesView)
|
|
226
|
+
|
|
227
|
+
if (
|
|
228
|
+
process.env.NODE_ENV === 'development' &&
|
|
229
|
+
(debug === 'profile' || (globalThis as any).time)
|
|
230
|
+
) {
|
|
231
|
+
// @ts-expect-error
|
|
232
|
+
time`split-styles-setup`
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Not the biggest fan of creating an object but it is a nice API
|
|
237
|
+
*/
|
|
238
|
+
const styleState: GetStyleState = {
|
|
239
|
+
classNames,
|
|
240
|
+
conf,
|
|
241
|
+
props,
|
|
242
|
+
styleProps,
|
|
243
|
+
componentState,
|
|
244
|
+
staticConfig,
|
|
245
|
+
style: null,
|
|
246
|
+
theme,
|
|
247
|
+
usedKeys: {},
|
|
248
|
+
viewProps,
|
|
249
|
+
context: componentContext,
|
|
250
|
+
debug,
|
|
251
|
+
// resolved animation driver (respects animatedBy prop)
|
|
252
|
+
animationDriver: driver,
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// only used by compiler
|
|
256
|
+
if (process.env.IS_STATIC === 'is_static') {
|
|
257
|
+
const { fallbackProps } = styleProps
|
|
258
|
+
if (fallbackProps) {
|
|
259
|
+
styleState.props = new Proxy(props, {
|
|
260
|
+
get(_, key, val) {
|
|
261
|
+
if (!Reflect.has(props, key)) {
|
|
262
|
+
return Reflect.get(fallbackProps, key)
|
|
263
|
+
}
|
|
264
|
+
return Reflect.get(props, key)
|
|
265
|
+
},
|
|
266
|
+
})
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
if (
|
|
271
|
+
process.env.NODE_ENV === 'development' &&
|
|
272
|
+
(debug === 'profile' || (globalThis as any).time)
|
|
273
|
+
) {
|
|
274
|
+
// @ts-expect-error
|
|
275
|
+
time`style-state`
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose' && isClient) {
|
|
279
|
+
if (isDevTools) {
|
|
280
|
+
console.groupCollapsed('🔹 getSplitStyles 👇')
|
|
281
|
+
log({
|
|
282
|
+
props,
|
|
283
|
+
staticConfig,
|
|
284
|
+
shouldDoClasses,
|
|
285
|
+
styleProps,
|
|
286
|
+
rulesToInsert,
|
|
287
|
+
componentState,
|
|
288
|
+
styleState,
|
|
289
|
+
theme: { ...theme },
|
|
290
|
+
})
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
const { asChild } = props
|
|
295
|
+
const { accept } = staticConfig
|
|
296
|
+
const { noSkip, disableExpandShorthands, noExpand, styledContext } = styleProps
|
|
297
|
+
const { webContainerType } = conf.settings
|
|
298
|
+
const parentVariants = parentStaticConfig?.variants
|
|
299
|
+
for (const keyOg in props) {
|
|
300
|
+
let keyInit = keyOg
|
|
301
|
+
let valInit = props[keyInit]
|
|
302
|
+
|
|
303
|
+
if (keyInit === 'children') {
|
|
304
|
+
viewProps[keyInit] = valInit
|
|
305
|
+
continue
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
if (
|
|
309
|
+
process.env.NODE_ENV === 'development' &&
|
|
310
|
+
(debug === 'profile' || (globalThis as any).time)
|
|
311
|
+
) {
|
|
312
|
+
// @ts-expect-error
|
|
313
|
+
time`before-prop-${keyInit}`
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
if (process.env.NODE_ENV === 'test' && keyInit === 'jestAnimatedStyle') {
|
|
317
|
+
continue
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// for custom accept sub-styles
|
|
321
|
+
if (accept) {
|
|
322
|
+
const accepted = accept[keyInit]
|
|
323
|
+
if (
|
|
324
|
+
(accepted === 'style' || accepted === 'textStyle') &&
|
|
325
|
+
valInit &&
|
|
326
|
+
typeof valInit === 'object'
|
|
327
|
+
) {
|
|
328
|
+
viewProps[keyInit] = getSubStyle(styleState, keyInit, valInit, styleProps.noClass)
|
|
329
|
+
continue
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// normalize shorthands up front
|
|
334
|
+
if (!disableExpandShorthands) {
|
|
335
|
+
if (keyInit in shorthands) {
|
|
336
|
+
keyInit = shorthands[keyInit]
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
if (keyInit === 'className') continue // handled above first
|
|
341
|
+
|
|
342
|
+
// when asChild, skip default props - they shouldn't be passed down to children
|
|
343
|
+
if (asChild) {
|
|
344
|
+
const defaults = getDefaultProps(staticConfig)
|
|
345
|
+
if (defaults) {
|
|
346
|
+
// check both original key and expanded key (after shorthand expansion)
|
|
347
|
+
const defaultVal = defaults[keyOg] ?? defaults[keyInit]
|
|
348
|
+
if (defaultVal !== undefined && valInit === defaultVal) {
|
|
349
|
+
continue
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// keyInit === 'style' is handled in skipProps
|
|
355
|
+
if (keyInit in skipProps && !noSkip && !isHOC) {
|
|
356
|
+
if (keyInit === 'group') {
|
|
357
|
+
if (process.env.HANZO_GUI_TARGET === 'web') {
|
|
358
|
+
// add container style
|
|
359
|
+
const identifier = `t_group_${valInit}`
|
|
360
|
+
const containerType = webContainerType || 'inline-size'
|
|
361
|
+
const containerCSS = [
|
|
362
|
+
'continer',
|
|
363
|
+
undefined,
|
|
364
|
+
identifier,
|
|
365
|
+
undefined,
|
|
366
|
+
[
|
|
367
|
+
`.${identifier} { container-name: ${valInit}; container-type: ${containerType}; }`,
|
|
368
|
+
],
|
|
369
|
+
] satisfies StyleObject
|
|
370
|
+
addStyleToInsertRules(rulesToInsert, containerCSS)
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
continue
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
let isValidStyleKeyInit = isValidStyleKey(keyInit, validStyles, accept)
|
|
377
|
+
|
|
378
|
+
// this is all for partially optimized (not flattened)... maybe worth removing?
|
|
379
|
+
if (process.env.HANZO_GUI_TARGET === 'web') {
|
|
380
|
+
// react-native-web ignores data-* attributes, fixes passing them to animated views
|
|
381
|
+
if (staticConfig.isReactNative && keyInit.startsWith('data-')) {
|
|
382
|
+
keyInit = keyInit.replace('data-', '')
|
|
383
|
+
viewProps['dataSet'] ||= {}
|
|
384
|
+
viewProps['dataSet'][keyInit] = valInit
|
|
385
|
+
continue
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
if (process.env.HANZO_GUI_TARGET === 'native') {
|
|
390
|
+
if (!isValidStyleKeyInit) {
|
|
391
|
+
if (!isAndroid) {
|
|
392
|
+
// only works in android
|
|
393
|
+
if (keyInit === 'elevationAndroid') continue
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// map userSelect to native prop
|
|
397
|
+
if (keyInit === 'userSelect') {
|
|
398
|
+
keyInit = 'selectable'
|
|
399
|
+
valInit = valInit !== 'none'
|
|
400
|
+
} else if (keyInit.startsWith('data-')) {
|
|
401
|
+
continue
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
if (process.env.HANZO_GUI_TARGET === 'web') {
|
|
407
|
+
if (!noExpand) {
|
|
408
|
+
/**
|
|
409
|
+
* Copying in the accessibility/prop handling from react-native-web here
|
|
410
|
+
* Keeps it in a single loop, avoids dup de-structuring to avoid bundle size
|
|
411
|
+
*/
|
|
412
|
+
|
|
413
|
+
if (keyInit === 'disabled' && valInit === true) {
|
|
414
|
+
viewProps['aria-disabled'] = true
|
|
415
|
+
// Enhance with native semantics
|
|
416
|
+
if (
|
|
417
|
+
elementType === 'button' ||
|
|
418
|
+
elementType === 'form' ||
|
|
419
|
+
elementType === 'input' ||
|
|
420
|
+
elementType === 'select' ||
|
|
421
|
+
elementType === 'textarea'
|
|
422
|
+
) {
|
|
423
|
+
viewProps.disabled = true
|
|
424
|
+
}
|
|
425
|
+
if (!variants?.disabled) {
|
|
426
|
+
continue
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
if (keyInit === 'testID') {
|
|
431
|
+
if (isReactNative) {
|
|
432
|
+
viewProps.testID = valInit
|
|
433
|
+
} else {
|
|
434
|
+
viewProps['data-testid'] = valInit
|
|
435
|
+
// also keep testID when using RN animation driver (Animated.View
|
|
436
|
+
// from react-native-web only forwards testID, not data-testid)
|
|
437
|
+
if (styleProps.isAnimated && driver?.isReactNative) {
|
|
438
|
+
viewProps.testID = valInit
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
continue
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
if (keyInit === 'id') {
|
|
445
|
+
viewProps.id = valInit
|
|
446
|
+
continue
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* There's (some) reason to this madness: we want to allow returning media/pseudo from variants
|
|
453
|
+
* Say you have a variant hoverable: { true: { hoverStyle: {} } }
|
|
454
|
+
* We run propMapper first to expand variant, then we run the inner loop and look again
|
|
455
|
+
* for if there's a pseudo/media returned from it.
|
|
456
|
+
*/
|
|
457
|
+
|
|
458
|
+
let isVariant = !isValidStyleKeyInit && variants && keyInit in variants
|
|
459
|
+
|
|
460
|
+
const isStyleLikeKey = isValidStyleKeyInit || isVariant
|
|
461
|
+
|
|
462
|
+
let isPseudo = keyInit in validPseudoKeys
|
|
463
|
+
let isMedia = !isStyleLikeKey && !isPseudo ? getMediaKey(keyInit) : false
|
|
464
|
+
let isMediaOrPseudo = Boolean(isMedia || isPseudo)
|
|
465
|
+
|
|
466
|
+
if (isMediaOrPseudo && isMedia === 'group') {
|
|
467
|
+
keyInit = normalizeGroupKey(keyInit, groupContext)
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
const isStyleProp = isValidStyleKeyInit || isMediaOrPseudo || (isVariant && !noExpand)
|
|
471
|
+
|
|
472
|
+
if (isStyleProp && (asChild === 'except-style' || asChild === 'except-style-web')) {
|
|
473
|
+
continue
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
const shouldPassProp =
|
|
477
|
+
(!isStyleProp && isHOC) ||
|
|
478
|
+
// is in parent variants
|
|
479
|
+
(isHOC && parentVariants && keyInit in parentVariants) ||
|
|
480
|
+
inlineProps?.has(keyInit)
|
|
481
|
+
|
|
482
|
+
const parentVariant = parentVariants?.[keyInit]
|
|
483
|
+
const isHOCShouldPassThrough = Boolean(
|
|
484
|
+
isHOC &&
|
|
485
|
+
(isValidStyleKeyInit || isMediaOrPseudo || parentVariant || keyInit in skipProps)
|
|
486
|
+
)
|
|
487
|
+
|
|
488
|
+
const shouldPassThrough = shouldPassProp || isHOCShouldPassThrough
|
|
489
|
+
|
|
490
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
491
|
+
// console.groupEnd() // react native was not nesting right
|
|
492
|
+
console.groupCollapsed(
|
|
493
|
+
` 🔑 ${keyOg}${
|
|
494
|
+
keyInit !== keyOg ? ` (shorthand for ${keyInit})` : ''
|
|
495
|
+
} ${shouldPassThrough ? '(pass)' : ''}`
|
|
496
|
+
)
|
|
497
|
+
log({ isVariant, valInit, shouldPassProp })
|
|
498
|
+
if (isClient) {
|
|
499
|
+
log({
|
|
500
|
+
variants,
|
|
501
|
+
variant: variants?.[keyInit],
|
|
502
|
+
isVariant,
|
|
503
|
+
isHOCShouldPassThrough,
|
|
504
|
+
usedKeys: { ...styleState.usedKeys },
|
|
505
|
+
parentStaticConfig,
|
|
506
|
+
})
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
if (shouldPassThrough) {
|
|
511
|
+
// // TODO bring this back but probably improve it?
|
|
512
|
+
// if (isPseudo) {
|
|
513
|
+
// // this is a lot... but we need to track sub-keys so we don't override them in future things that aren't passed down
|
|
514
|
+
// // like our own variants that aren't in parent
|
|
515
|
+
// const pseudoStyleObject = getSubStyle(
|
|
516
|
+
// styleState,
|
|
517
|
+
// keyInit,
|
|
518
|
+
// valInit,
|
|
519
|
+
// fontFamily,
|
|
520
|
+
// true,
|
|
521
|
+
// state.noClass
|
|
522
|
+
// )
|
|
523
|
+
// const descriptor = pseudoDescriptors[keyInit]
|
|
524
|
+
// for (const key in pseudoStyleObject) {
|
|
525
|
+
// debugger
|
|
526
|
+
// }
|
|
527
|
+
// }
|
|
528
|
+
|
|
529
|
+
passDownProp(viewProps, keyInit, valInit, isMediaOrPseudo)
|
|
530
|
+
|
|
531
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
532
|
+
console.groupEnd()
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
// if it's a variant here, we have a two layer variant...
|
|
536
|
+
// aka styled(Input, { unstyled: true, variants: { unstyled: {} } })
|
|
537
|
+
// which now has it's own unstyled + the child unstyled...
|
|
538
|
+
// so *don't* skip applying the styles if its different from the parent one
|
|
539
|
+
if (!isVariant) {
|
|
540
|
+
continue
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
// after shouldPassThrough
|
|
545
|
+
if (!noSkip) {
|
|
546
|
+
if (keyInit in skipProps) {
|
|
547
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
548
|
+
console.groupEnd()
|
|
549
|
+
}
|
|
550
|
+
continue
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
// we sort of have to update fontFamily all the time: before variants run, after each variant
|
|
555
|
+
if (isText || isInput) {
|
|
556
|
+
if (
|
|
557
|
+
valInit &&
|
|
558
|
+
(keyInit === 'fontFamily' || keyInit === shorthands['fontFamily']) &&
|
|
559
|
+
valInit in conf.fontsParsed
|
|
560
|
+
) {
|
|
561
|
+
styleState.fontFamily = valInit
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
const disablePropMap = isMediaOrPseudo || !isStyleLikeKey
|
|
566
|
+
|
|
567
|
+
propMapper(keyInit, valInit, styleState, disablePropMap, (key, val, originalVal) => {
|
|
568
|
+
const isStyledContextProp = styledContext && key in styledContext
|
|
569
|
+
|
|
570
|
+
if (!isHOC && disablePropMap && !isStyledContextProp && !isMediaOrPseudo) {
|
|
571
|
+
viewProps[key] = val
|
|
572
|
+
return
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
576
|
+
console.groupCollapsed(' 💠 expanded', keyInit, '=>', key)
|
|
577
|
+
log(val)
|
|
578
|
+
console.groupEnd()
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
if (val == null) return
|
|
582
|
+
|
|
583
|
+
if (process.env.HANZO_GUI_TARGET === 'native') {
|
|
584
|
+
if (key === 'pointerEvents') {
|
|
585
|
+
viewProps[key] = val
|
|
586
|
+
return
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
if (
|
|
591
|
+
(!isHOC && isValidStyleKey(key, validStyles, accept)) ||
|
|
592
|
+
(process.env.HANZO_GUI_TARGET === 'native' && isAndroid && key === 'elevation')
|
|
593
|
+
) {
|
|
594
|
+
mergeStyle(styleState, key, val, 1, false, originalVal)
|
|
595
|
+
return
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
// re-run with expanded key
|
|
599
|
+
isPseudo = key in validPseudoKeys
|
|
600
|
+
isMedia = isPseudo ? false : getMediaKey(key)
|
|
601
|
+
isMediaOrPseudo = Boolean(isMedia || isPseudo)
|
|
602
|
+
isVariant = variants && key in variants
|
|
603
|
+
|
|
604
|
+
// handle group key transformation for variant-expanded keys (issue #3613)
|
|
605
|
+
if (isMedia === 'group') {
|
|
606
|
+
key = normalizeGroupKey(key, groupContext)
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
if (
|
|
610
|
+
inlineProps?.has(key) ||
|
|
611
|
+
(process.env.IS_STATIC === 'is_static' && inlineWhenUnflattened?.has(key))
|
|
612
|
+
) {
|
|
613
|
+
viewProps[key] = props[key] ?? val
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
// have to run this logic again here because expansions may need to be passed down
|
|
617
|
+
// see StyledButtonVariantPseudoMerge test
|
|
618
|
+
const shouldPassThrough =
|
|
619
|
+
(styleProps.noExpand && isPseudo) ||
|
|
620
|
+
(isHOC && (isMediaOrPseudo || parentStaticConfig?.variants?.[keyInit]))
|
|
621
|
+
|
|
622
|
+
if (shouldPassThrough) {
|
|
623
|
+
passDownProp(viewProps, key, val, isMediaOrPseudo)
|
|
624
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
625
|
+
console.groupCollapsed(` - passing down prop ${key}`)
|
|
626
|
+
log({ val, after: { ...viewProps[key] } })
|
|
627
|
+
console.groupEnd()
|
|
628
|
+
}
|
|
629
|
+
return
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
if (isPseudo) {
|
|
633
|
+
if (!val) return
|
|
634
|
+
|
|
635
|
+
// TODO can avoid processing this if !shouldDoClasses + state is off
|
|
636
|
+
// (note: can't because we need to set defaults on enter/exit or else enforce that they should)
|
|
637
|
+
const pseudoStyleObject = getSubStyle(
|
|
638
|
+
styleState,
|
|
639
|
+
key,
|
|
640
|
+
val,
|
|
641
|
+
styleProps.noClass && !(process.env.IS_STATIC === 'is_static')
|
|
642
|
+
)
|
|
643
|
+
|
|
644
|
+
if (!shouldDoClasses || process.env.IS_STATIC === 'is_static') {
|
|
645
|
+
pseudos ||= {}
|
|
646
|
+
pseudos[key] ||= {}
|
|
647
|
+
|
|
648
|
+
// if compiler we can just set this and continue on our way
|
|
649
|
+
if (process.env.IS_STATIC === 'is_static') {
|
|
650
|
+
Object.assign(pseudos[key], pseudoStyleObject)
|
|
651
|
+
return
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
const descriptor = pseudoDescriptors[key as keyof typeof pseudoDescriptors]
|
|
656
|
+
const isEnter = key === 'enterStyle'
|
|
657
|
+
const isExit = key === 'exitStyle'
|
|
658
|
+
|
|
659
|
+
// don't continue here on isEnter && !state.unmounted because we need to merge defaults
|
|
660
|
+
if (!descriptor) {
|
|
661
|
+
return
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
// on server only generate classes for enterStyle
|
|
665
|
+
if (shouldDoClasses && !isExit) {
|
|
666
|
+
const pseudoStyles = getStyleAtomic(pseudoStyleObject, descriptor)
|
|
667
|
+
|
|
668
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
669
|
+
console.info('pseudo:', key, pseudoStyleObject, pseudoStyles)
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
for (const psuedoStyle of pseudoStyles) {
|
|
673
|
+
const fullKey = `${psuedoStyle[StyleObjectProperty]}${PROP_SPLIT}${descriptor.name}`
|
|
674
|
+
addStyleToInsertRules(rulesToInsert, psuedoStyle)
|
|
675
|
+
classNames[fullKey] = psuedoStyle[StyleObjectIdentifier]
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
if (!shouldDoClasses || isExit || isEnter) {
|
|
680
|
+
// we don't skip this if disabled because we need to animate to default states that aren't even set:
|
|
681
|
+
// so if we have <Stack enterStyle={{ opacity: 0 }} />
|
|
682
|
+
// we need to animate from 0 => 1 once enter is finished
|
|
683
|
+
// see the if (isDisabled) block below which loops through animatableDefaults
|
|
684
|
+
|
|
685
|
+
const descriptorKey = descriptor.stateKey || descriptor.name
|
|
686
|
+
|
|
687
|
+
let isDisabled = componentState[descriptorKey] === false
|
|
688
|
+
if (isExit) {
|
|
689
|
+
isDisabled = !styleProps.isExiting
|
|
690
|
+
}
|
|
691
|
+
if (isEnter && componentState.unmounted === false) {
|
|
692
|
+
isDisabled = true
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
696
|
+
console.groupCollapsed('pseudo', key, { isDisabled })
|
|
697
|
+
log({ pseudoStyleObject, isDisabled, descriptor, componentState })
|
|
698
|
+
console.groupEnd()
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
const importance = descriptor.priority
|
|
702
|
+
|
|
703
|
+
const pseudoOriginalValues = styleOriginalValues.get(pseudoStyleObject)
|
|
704
|
+
for (const pkey in pseudoStyleObject) {
|
|
705
|
+
const val = pseudoStyleObject[pkey]
|
|
706
|
+
// when disabled ensure the default value is set for future animations to align
|
|
707
|
+
|
|
708
|
+
if (isDisabled) {
|
|
709
|
+
applyDefaultStyle(pkey, styleState)
|
|
710
|
+
} else {
|
|
711
|
+
const curImportance = styleState.usedKeys[pkey] || 0
|
|
712
|
+
const shouldMerge = importance >= curImportance
|
|
713
|
+
|
|
714
|
+
if (shouldMerge) {
|
|
715
|
+
if (process.env.IS_STATIC === 'is_static') {
|
|
716
|
+
pseudos ||= {}
|
|
717
|
+
pseudos[key] ||= {}
|
|
718
|
+
pseudos[key][pkey] = val
|
|
719
|
+
}
|
|
720
|
+
mergeStyle(
|
|
721
|
+
styleState,
|
|
722
|
+
pkey,
|
|
723
|
+
val,
|
|
724
|
+
importance,
|
|
725
|
+
false,
|
|
726
|
+
pseudoOriginalValues?.[pkey]
|
|
727
|
+
)
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
731
|
+
log(' subKey', pkey, shouldMerge, {
|
|
732
|
+
importance,
|
|
733
|
+
curImportance,
|
|
734
|
+
pkey,
|
|
735
|
+
val,
|
|
736
|
+
})
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
// set this after the loop over pseudoStyleObject so it applies before setting usedKeys
|
|
742
|
+
if (!isDisabled) {
|
|
743
|
+
// mark usedKeys based on pseudoStyleObject
|
|
744
|
+
for (const key in val) {
|
|
745
|
+
const k = shorthands[key] || key
|
|
746
|
+
styleState.usedKeys[k] = Math.max(importance, styleState.usedKeys[k] || 0)
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
return
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
// media
|
|
755
|
+
if (isMedia) {
|
|
756
|
+
if (!val) return
|
|
757
|
+
|
|
758
|
+
// for some reason 'space' in val upsetting next ssr during prod build
|
|
759
|
+
// technically i guess this also will not apply if 0 space which makes sense?
|
|
760
|
+
const mediaKeyShort = key.slice(isMedia == 'theme' ? 7 : 1)
|
|
761
|
+
|
|
762
|
+
hasMedia ||= true
|
|
763
|
+
const hasSpace = val['space']
|
|
764
|
+
|
|
765
|
+
if (hasSpace || !shouldDoClasses || styleProps.willBeAnimated) {
|
|
766
|
+
if (!hasMedia || typeof hasMedia === 'boolean') {
|
|
767
|
+
hasMedia = new Set()
|
|
768
|
+
}
|
|
769
|
+
hasMedia.add(mediaKeyShort)
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
// can bail early
|
|
773
|
+
if (isMedia === 'platform') {
|
|
774
|
+
if (!isActivePlatform(key)) {
|
|
775
|
+
return
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
780
|
+
log(` 📺 ${key}`, {
|
|
781
|
+
key,
|
|
782
|
+
val,
|
|
783
|
+
props,
|
|
784
|
+
shouldDoClasses,
|
|
785
|
+
acceptsClassName,
|
|
786
|
+
componentState,
|
|
787
|
+
mediaState,
|
|
788
|
+
})
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
const priority = mediaStylesSeen
|
|
792
|
+
mediaStylesSeen += 1
|
|
793
|
+
|
|
794
|
+
// for theme media ($theme-light, $theme-dark), generate CSS classes for proper SSR
|
|
795
|
+
// when noClass is set (inline animation drivers), de-opt to inline styles so the
|
|
796
|
+
if (shouldDoClasses) {
|
|
797
|
+
const mediaStyle = getSubStyle(styleState, key, val, false)
|
|
798
|
+
const mediaStyles = getCSSStylesAtomic(mediaStyle)
|
|
799
|
+
|
|
800
|
+
for (const style of mediaStyles) {
|
|
801
|
+
// handle nested media:
|
|
802
|
+
// for now we're doing weird stuff, getCSSStylesAtomic will put the
|
|
803
|
+
// $platform-web into property so we can check it here
|
|
804
|
+
const property = style[StyleObjectProperty]
|
|
805
|
+
const isSubStyle = property[0] === '$'
|
|
806
|
+
if (isSubStyle && !isActivePlatform(property)) {
|
|
807
|
+
continue
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
const out = createMediaStyle(
|
|
811
|
+
style,
|
|
812
|
+
mediaKeyShort,
|
|
813
|
+
mediaQueryConfig,
|
|
814
|
+
isMedia,
|
|
815
|
+
false,
|
|
816
|
+
priority
|
|
817
|
+
)
|
|
818
|
+
|
|
819
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
820
|
+
log(`📺 media style:`, out)
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
// this is imperfect it should be fixed further down, we mess up property when dealing with
|
|
824
|
+
// media-sub-style, like $sm={{ $platform-web: {} }}
|
|
825
|
+
// property is just $platform-web, it should br $platform-web-bg, so we add extra info from style
|
|
826
|
+
// but that info includes the value too
|
|
827
|
+
const subKey = isSubStyle ? style[2] : ''
|
|
828
|
+
const fullKey = `${
|
|
829
|
+
style[StyleObjectProperty]
|
|
830
|
+
}${subKey}${PROP_SPLIT}${mediaKeyShort}${style[StyleObjectPseudo] || ''}`
|
|
831
|
+
|
|
832
|
+
addStyleToInsertRules(rulesToInsert, out as any)
|
|
833
|
+
classNames[fullKey] = out[StyleObjectIdentifier]
|
|
834
|
+
}
|
|
835
|
+
} else {
|
|
836
|
+
const isThemeMedia = isMedia === 'theme'
|
|
837
|
+
const isGroupMedia = isMedia === 'group'
|
|
838
|
+
const isPlatformMedia = isMedia === 'platform'
|
|
839
|
+
|
|
840
|
+
if (!isThemeMedia && !isPlatformMedia && !isGroupMedia) {
|
|
841
|
+
if (!mediaState[mediaKeyShort]) {
|
|
842
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
843
|
+
log(` 📺 ❌ DISABLED ${mediaKeyShort}`)
|
|
844
|
+
}
|
|
845
|
+
return
|
|
846
|
+
}
|
|
847
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
848
|
+
log(` 📺 ✅ ENABLED ${mediaKeyShort}`)
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
const mediaStyle = getSubStyle(styleState, key, val, true)
|
|
853
|
+
|
|
854
|
+
let importanceBump = 0
|
|
855
|
+
|
|
856
|
+
if (isThemeMedia) {
|
|
857
|
+
if (
|
|
858
|
+
process.env.HANZO_GUI_TARGET === 'native' &&
|
|
859
|
+
isIos &&
|
|
860
|
+
getSetting('fastSchemeChange')
|
|
861
|
+
) {
|
|
862
|
+
// iOS will use https://reactnative.dev/docs/dynamiccolorios
|
|
863
|
+
// so need to predefine the dynamic color before merging the styles
|
|
864
|
+
// for example: <StyledYStack $theme-dark={{borderColor: '$red10'}} $theme-light={{borderColor: '$green10'}}> => {borderColor: {dynamic: {dark: '$red10', light: '$green10'}}}
|
|
865
|
+
|
|
866
|
+
styleState.style ||= {}
|
|
867
|
+
const scheme = mediaKeyShort
|
|
868
|
+
const oppositeScheme = getOppositeScheme(mediaKeyShort)
|
|
869
|
+
const themeOriginalValues = styleOriginalValues.get(mediaStyle)
|
|
870
|
+
const isCurrentScheme = themeName === scheme || themeName.startsWith(scheme)
|
|
871
|
+
|
|
872
|
+
for (const subKey in mediaStyle) {
|
|
873
|
+
const val = extractValueFromDynamic(mediaStyle[subKey], scheme)
|
|
874
|
+
const existing = styleState.style[subKey]
|
|
875
|
+
|
|
876
|
+
// Only color properties support DynamicColorIOS - non-color properties
|
|
877
|
+
// like opacity, dimensions, etc. will crash if wrapped with {dynamic: {...}}
|
|
878
|
+
// See: https://github.com/hanzoai/gui/issues/3096
|
|
879
|
+
// See: https://github.com/hanzoai/gui/issues/2980
|
|
880
|
+
if (!isColorStyleKey(subKey)) {
|
|
881
|
+
// non-color properties require re-render to update
|
|
882
|
+
dynamicThemeAccess = true
|
|
883
|
+
// only apply if this is the current theme
|
|
884
|
+
if (isCurrentScheme) {
|
|
885
|
+
// update mediaStyle so the later merge loop uses correct value
|
|
886
|
+
mediaStyle[subKey] = val
|
|
887
|
+
} else {
|
|
888
|
+
// remove from mediaStyle so it doesn't get merged with wrong theme's value
|
|
889
|
+
delete mediaStyle[subKey]
|
|
890
|
+
}
|
|
891
|
+
continue
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
// if there's already a dynamic object from the other theme pseudo prop,
|
|
895
|
+
// merge directly to avoid importance conflicts between $theme-dark and $theme-light
|
|
896
|
+
if (existing?.dynamic) {
|
|
897
|
+
existing.dynamic[scheme] = val
|
|
898
|
+
mediaStyle[subKey] = existing
|
|
899
|
+
} else {
|
|
900
|
+
const oppositeVal = extractValueFromDynamic(existing, oppositeScheme)
|
|
901
|
+
mediaStyle[subKey] = getDynamicVal({
|
|
902
|
+
scheme,
|
|
903
|
+
val,
|
|
904
|
+
oppositeVal,
|
|
905
|
+
})
|
|
906
|
+
mergeStyle(
|
|
907
|
+
styleState,
|
|
908
|
+
subKey,
|
|
909
|
+
mediaStyle[subKey],
|
|
910
|
+
priority,
|
|
911
|
+
false,
|
|
912
|
+
themeOriginalValues?.[subKey]
|
|
913
|
+
)
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
} else {
|
|
917
|
+
// non-ios or no fastschemechange - need re-renders for theme changes
|
|
918
|
+
dynamicThemeAccess = true
|
|
919
|
+
if (!(themeName === mediaKeyShort || themeName.startsWith(mediaKeyShort))) {
|
|
920
|
+
return
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
} else if (isGroupMedia) {
|
|
924
|
+
const groupInfo = getGroupPropParts(mediaKeyShort)
|
|
925
|
+
const groupName = groupInfo.name
|
|
926
|
+
|
|
927
|
+
// $group-x
|
|
928
|
+
const groupState = groupContext?.[groupName]?.state
|
|
929
|
+
const groupPseudoKey = groupInfo.pseudo
|
|
930
|
+
const groupMediaKey = groupInfo.media
|
|
931
|
+
|
|
932
|
+
if (!groupState) {
|
|
933
|
+
if (process.env.NODE_ENV === 'development' && debug) {
|
|
934
|
+
log(`No parent with group prop, skipping styles: ${groupName}`)
|
|
935
|
+
}
|
|
936
|
+
// we still want to indicate we should listen! this is how subscribeToGroupContext knows to run
|
|
937
|
+
pseudoGroups ||= new Set()
|
|
938
|
+
return
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
const componentGroupState = componentState.group?.[groupName]
|
|
942
|
+
|
|
943
|
+
if (groupMediaKey) {
|
|
944
|
+
mediaGroups ||= new Set()
|
|
945
|
+
mediaGroups.add(groupMediaKey)
|
|
946
|
+
const mediaState = componentGroupState?.media
|
|
947
|
+
let isActive = mediaState?.[groupMediaKey]
|
|
948
|
+
|
|
949
|
+
// use parent styles if width and height hardcoded we can do an inline media match and avoid double render
|
|
950
|
+
if (!mediaState && groupState.layout) {
|
|
951
|
+
isActive = mediaKeyMatch(groupMediaKey, groupState.layout)
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
955
|
+
log(` 🏘️ GROUP media ${groupMediaKey} active? ${isActive}`, {
|
|
956
|
+
...mediaState,
|
|
957
|
+
usedKeys: { ...styleState.usedKeys },
|
|
958
|
+
})
|
|
959
|
+
}
|
|
960
|
+
if (!isActive) {
|
|
961
|
+
// ensure we set the defaults so animations work
|
|
962
|
+
for (const pkey in mediaStyle) {
|
|
963
|
+
applyDefaultStyle(pkey, styleState)
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
return
|
|
967
|
+
}
|
|
968
|
+
importanceBump = 2
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
if (groupPseudoKey) {
|
|
972
|
+
pseudoGroups ||= new Set()
|
|
973
|
+
pseudoGroups.add(groupName)
|
|
974
|
+
const componentGroupPseudoState = (
|
|
975
|
+
componentGroupState ||
|
|
976
|
+
// fallback to context initially
|
|
977
|
+
groupContext?.[groupName].state
|
|
978
|
+
)?.pseudo
|
|
979
|
+
|
|
980
|
+
const isActive = componentGroupPseudoState?.[groupPseudoKey]
|
|
981
|
+
const priority = pseudoPriorities[groupPseudoKey]
|
|
982
|
+
|
|
983
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
984
|
+
log(
|
|
985
|
+
` 🏘️ GROUP pseudo ${groupMediaKey} active? ${isActive}, priority ${priority}`,
|
|
986
|
+
{
|
|
987
|
+
componentGroupPseudoState: { ...componentGroupPseudoState },
|
|
988
|
+
usedKeys: { ...styleState.usedKeys },
|
|
989
|
+
}
|
|
990
|
+
)
|
|
991
|
+
}
|
|
992
|
+
if (!isActive) {
|
|
993
|
+
// ensure we set the defaults so animations work
|
|
994
|
+
for (const pkey in mediaStyle) {
|
|
995
|
+
applyDefaultStyle(pkey, styleState)
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
return
|
|
999
|
+
}
|
|
1000
|
+
importanceBump = priority
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
const mediaOriginalValues = styleOriginalValues.get(mediaStyle)
|
|
1005
|
+
|
|
1006
|
+
// extract transition from group pseudo styles (e.g., $group-scenario4-hover.transition)
|
|
1007
|
+
if (isGroupMedia && mediaStyle.transition) {
|
|
1008
|
+
styleState.pseudoTransitions ||= {}
|
|
1009
|
+
styleState.pseudoTransitions[
|
|
1010
|
+
`$${mediaKeyShort}` as keyof typeof styleState.pseudoTransitions
|
|
1011
|
+
] = mediaStyle.transition as any
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
function mergeMediaStyle(key: string, val: any, originalVal?: any) {
|
|
1015
|
+
styleState.style ||= {}
|
|
1016
|
+
const didMerge = mergeMediaByImportance(
|
|
1017
|
+
styleState,
|
|
1018
|
+
mediaKeyShort,
|
|
1019
|
+
key,
|
|
1020
|
+
val,
|
|
1021
|
+
mediaState[mediaKeyShort],
|
|
1022
|
+
importanceBump,
|
|
1023
|
+
debug,
|
|
1024
|
+
originalVal
|
|
1025
|
+
)
|
|
1026
|
+
if (didMerge && key === 'fontFamily') {
|
|
1027
|
+
styleState.fontFamily = mediaStyle.fontFamily as string
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
for (const subKey in mediaStyle) {
|
|
1032
|
+
if (subKey === 'space') {
|
|
1033
|
+
continue
|
|
1034
|
+
}
|
|
1035
|
+
if (subKey[0] === '$') {
|
|
1036
|
+
if (!isActivePlatform(subKey)) continue
|
|
1037
|
+
if (!isActiveTheme(subKey, themeName)) continue
|
|
1038
|
+
const subOriginalValues = styleOriginalValues.get(
|
|
1039
|
+
mediaStyle[subKey] as object
|
|
1040
|
+
)
|
|
1041
|
+
for (const subSubKey in mediaStyle[subKey]) {
|
|
1042
|
+
mergeMediaStyle(
|
|
1043
|
+
subSubKey,
|
|
1044
|
+
mediaStyle[subKey][subSubKey],
|
|
1045
|
+
subOriginalValues?.[subSubKey]
|
|
1046
|
+
)
|
|
1047
|
+
}
|
|
1048
|
+
} else {
|
|
1049
|
+
mergeMediaStyle(subKey, mediaStyle[subKey], mediaOriginalValues?.[subKey])
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
|
|
1054
|
+
return // end media
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
// pass to view props
|
|
1058
|
+
if (!isVariant) {
|
|
1059
|
+
if (isStyledContextProp) {
|
|
1060
|
+
return
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
viewProps[key] = val
|
|
1064
|
+
}
|
|
1065
|
+
})
|
|
1066
|
+
|
|
1067
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
1068
|
+
try {
|
|
1069
|
+
log(` ✔️ expand complete`, keyInit)
|
|
1070
|
+
log('style', { ...styleState.style })
|
|
1071
|
+
log('viewProps', { ...viewProps })
|
|
1072
|
+
log('transforms', { ...styleState.flatTransforms })
|
|
1073
|
+
} catch {
|
|
1074
|
+
// RN can run into PayloadTooLargeError: request entity too large
|
|
1075
|
+
}
|
|
1076
|
+
console.groupEnd()
|
|
1077
|
+
}
|
|
1078
|
+
} // end prop loop
|
|
1079
|
+
|
|
1080
|
+
if (
|
|
1081
|
+
process.env.NODE_ENV === 'development' &&
|
|
1082
|
+
(debug === 'profile' || (globalThis as any).time)
|
|
1083
|
+
) {
|
|
1084
|
+
// @ts-expect-error
|
|
1085
|
+
time`split-styles-propsend`
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
// style prop after:
|
|
1089
|
+
|
|
1090
|
+
const avoidNormalize = styleProps.noNormalize === false
|
|
1091
|
+
|
|
1092
|
+
if (!avoidNormalize) {
|
|
1093
|
+
if (styleState.style) {
|
|
1094
|
+
fixStyles(styleState.style)
|
|
1095
|
+
|
|
1096
|
+
if (!styleProps.noExpand && !styleProps.noMergeStyle) {
|
|
1097
|
+
// shouldn't this be better? but breaks some tests weirdly, need to check
|
|
1098
|
+
if (isWeb && (isReactNative ? driver?.inputStyle !== 'css' : true)) {
|
|
1099
|
+
styleToCSS(styleState.style)
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
// these are only the flat transforms
|
|
1105
|
+
// always do this at the very end to preserve the order strictly (animations, origin)
|
|
1106
|
+
// and allow proper merging of all pseudos before applying
|
|
1107
|
+
if (styleState.flatTransforms) {
|
|
1108
|
+
// we need to match the order for animations to work because it needs consistent order
|
|
1109
|
+
// was thinking of having something like `state.prevTransformsOrder = ['y', 'x', ...]
|
|
1110
|
+
// but if we just handle it here its not a big cost and avoids having stateful things
|
|
1111
|
+
// so the strategy is: always sort by a consistent order, until you run into a "duplicate"
|
|
1112
|
+
// because you can have something like:
|
|
1113
|
+
// [{ translateX: 0 }, { scale: 1 }, { translateX: 10 }]
|
|
1114
|
+
// so basically we sort until we get to a duplicate... we could sort even smarter but
|
|
1115
|
+
// this should work for most (all?) of our cases since the order preservation really only needs to apply
|
|
1116
|
+
// to the "flat" transform props
|
|
1117
|
+
styleState.style ||= {}
|
|
1118
|
+
mergeFlatTransforms(styleState.style, styleState.flatTransforms)
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
// add in defaults if not set:
|
|
1122
|
+
if (parentSplitStyles) {
|
|
1123
|
+
if (process.env.HANZO_GUI_TARGET === 'web') {
|
|
1124
|
+
if (shouldDoClasses) {
|
|
1125
|
+
for (const key in parentSplitStyles.classNames) {
|
|
1126
|
+
const val = parentSplitStyles.classNames[key]
|
|
1127
|
+
if ((styleState.style && key in styleState.style) || key in classNames)
|
|
1128
|
+
continue
|
|
1129
|
+
classNames[key] = val
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
if (!shouldDoClasses) {
|
|
1134
|
+
for (const key in parentSplitStyles.style) {
|
|
1135
|
+
if (key in classNames || (styleState.style && key in styleState.style)) continue
|
|
1136
|
+
styleState.style ||= {}
|
|
1137
|
+
styleState.style[key] = parentSplitStyles.style[key]
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
// Button for example uses disableClassName: true but renders to a 'button' element, so needs this
|
|
1144
|
+
if (process.env.HANZO_GUI_TARGET === 'web') {
|
|
1145
|
+
const shouldStringifyTransforms =
|
|
1146
|
+
!styleProps.noNormalize &&
|
|
1147
|
+
!staticConfig.isReactNative &&
|
|
1148
|
+
!staticConfig.isHOC &&
|
|
1149
|
+
(!styleProps.isAnimated || driver?.inputStyle === 'css')
|
|
1150
|
+
|
|
1151
|
+
if (shouldStringifyTransforms && Array.isArray(styleState.style?.transform)) {
|
|
1152
|
+
styleState.style.transform = transformsToString(styleState.style!.transform) as any
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
if (process.env.HANZO_GUI_TARGET === 'web') {
|
|
1157
|
+
if (!styleProps.noMergeStyle && styleState.style && shouldDoClasses) {
|
|
1158
|
+
let retainedStyles: ViewStyleWithPseudos | undefined
|
|
1159
|
+
let shouldRetain = false
|
|
1160
|
+
|
|
1161
|
+
if (styleState.style['$$css']) {
|
|
1162
|
+
// avoid re-processing for rnw
|
|
1163
|
+
} else {
|
|
1164
|
+
const atomic = getCSSStylesAtomic(styleState.style)
|
|
1165
|
+
|
|
1166
|
+
for (const atomicStyle of atomic) {
|
|
1167
|
+
const [key, value, identifier] = atomicStyle
|
|
1168
|
+
|
|
1169
|
+
const isAnimatedAndTransitionOnly =
|
|
1170
|
+
styleProps.isAnimated &&
|
|
1171
|
+
styleProps.noClass &&
|
|
1172
|
+
props.animateOnly?.includes(key)
|
|
1173
|
+
|
|
1174
|
+
// animateOnly properties should always use className on server and initial
|
|
1175
|
+
// client render to avoid hydration mismatch (server has isAnimated=false but
|
|
1176
|
+
// client has isAnimated=true for CSS driver, causing different style output)
|
|
1177
|
+
const nonAnimatedTransitionOnly =
|
|
1178
|
+
!isAnimatedAndTransitionOnly &&
|
|
1179
|
+
!styleProps.isAnimated &&
|
|
1180
|
+
isClient &&
|
|
1181
|
+
driver?.outputStyle === 'css' &&
|
|
1182
|
+
props.animateOnly?.includes(key)
|
|
1183
|
+
|
|
1184
|
+
if (isAnimatedAndTransitionOnly) {
|
|
1185
|
+
retainedStyles ||= {}
|
|
1186
|
+
retainedStyles[key] = styleState.style[key]
|
|
1187
|
+
} else if (nonAnimatedTransitionOnly) {
|
|
1188
|
+
retainedStyles ||= {}
|
|
1189
|
+
retainedStyles[key] = value
|
|
1190
|
+
shouldRetain = true
|
|
1191
|
+
} else {
|
|
1192
|
+
addStyleToInsertRules(rulesToInsert, atomicStyle)
|
|
1193
|
+
classNames[key] = identifier
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
if (process.env.NODE_ENV === 'development' && props.debug === 'verbose') {
|
|
1198
|
+
// console.groupEnd() // ensure group ended from loop above
|
|
1199
|
+
console.groupCollapsed(`🔹 getSplitStyles final style object`)
|
|
1200
|
+
console.info(styleState.style)
|
|
1201
|
+
console.info(`retainedStyles`, retainedStyles)
|
|
1202
|
+
console.groupEnd()
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
if (shouldRetain || !(process.env.IS_STATIC === 'is_static')) {
|
|
1206
|
+
styleState.style = retainedStyles || {}
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
// when noClass is true (inline animation driver) extract non-animatable
|
|
1212
|
+
// base styles to atomic CSS classNames so the driver doesn't manage them
|
|
1213
|
+
// skip for RNW animation drivers since their AnimatedView doesn't forward classNames
|
|
1214
|
+
if (
|
|
1215
|
+
!styleProps.noMergeStyle &&
|
|
1216
|
+
styleState.style &&
|
|
1217
|
+
!shouldDoClasses &&
|
|
1218
|
+
styleProps.isAnimated &&
|
|
1219
|
+
!driver?.isReactNative
|
|
1220
|
+
) {
|
|
1221
|
+
if (!styleState.style['$$css']) {
|
|
1222
|
+
const toConvert: Record<string, any> = {}
|
|
1223
|
+
let hasProps = false
|
|
1224
|
+
const animateOnly = props.animateOnly as string[] | undefined
|
|
1225
|
+
for (const key in styleState.style) {
|
|
1226
|
+
if (key in nonAnimatableStyleProps) {
|
|
1227
|
+
toConvert[key] = styleState.style[key]
|
|
1228
|
+
delete styleState.style[key]
|
|
1229
|
+
hasProps = true
|
|
1230
|
+
}
|
|
1231
|
+
}
|
|
1232
|
+
if (hasProps) {
|
|
1233
|
+
const atomic = getCSSStylesAtomic(toConvert)
|
|
1234
|
+
for (const atomicStyle of atomic) {
|
|
1235
|
+
addStyleToInsertRules(rulesToInsert, atomicStyle)
|
|
1236
|
+
classNames[atomicStyle[StyleObjectProperty]] =
|
|
1237
|
+
atomicStyle[StyleObjectIdentifier]
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
// merge after the prop loop - and always keep it on style dont turn into className except if RN gives us
|
|
1245
|
+
const styleProp = props.style
|
|
1246
|
+
|
|
1247
|
+
if (!styleProps.noMergeStyle && styleProp) {
|
|
1248
|
+
if (isHOC) {
|
|
1249
|
+
viewProps.style = normalizeStyle(styleProp)
|
|
1250
|
+
} else {
|
|
1251
|
+
const isArray = Array.isArray(styleProp)
|
|
1252
|
+
const len = isArray ? styleProp.length : 1
|
|
1253
|
+
for (let i = 0; i < len; i++) {
|
|
1254
|
+
const style = isArray ? styleProp[i] : styleProp
|
|
1255
|
+
if (style) {
|
|
1256
|
+
if (style['$$css']) {
|
|
1257
|
+
Object.assign(styleState.classNames, style)
|
|
1258
|
+
} else {
|
|
1259
|
+
styleState.style ||= {}
|
|
1260
|
+
Object.assign(styleState.style, normalizeStyle(style))
|
|
1261
|
+
}
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
// native: swap out the right family based on weight/style
|
|
1268
|
+
if (process.env.HANZO_GUI_TARGET === 'native') {
|
|
1269
|
+
// set accessible when tabIndex is 0 (issue #3350)
|
|
1270
|
+
if (viewProps.tabIndex === 0) {
|
|
1271
|
+
viewProps.accessible ??= true
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
const style = styleState.style
|
|
1275
|
+
if (style?.fontFamily) {
|
|
1276
|
+
const faceInfo = getFont(style.fontFamily as string)?.face
|
|
1277
|
+
if (faceInfo) {
|
|
1278
|
+
const overrideFace =
|
|
1279
|
+
faceInfo[style.fontWeight as string]?.[style.fontStyle || 'normal']?.val
|
|
1280
|
+
if (overrideFace) {
|
|
1281
|
+
style.fontFamily = overrideFace
|
|
1282
|
+
styleState.fontFamily = overrideFace
|
|
1283
|
+
// If we pass both font family (e.g. InterBold) and a font weight (e.g. 900), android gets confused and just shows the default font, so we remove these:
|
|
1284
|
+
delete style.fontWeight
|
|
1285
|
+
delete style.fontStyle
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
if (process.env.NODE_ENV === 'development' && debug && debug !== 'profile') {
|
|
1289
|
+
log(`Found fontFamily native: ${style.fontFamily}`, faceInfo)
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1292
|
+
}
|
|
1293
|
+
|
|
1294
|
+
if (
|
|
1295
|
+
process.env.NODE_ENV === 'development' &&
|
|
1296
|
+
(debug === 'profile' || (globalThis as any).time)
|
|
1297
|
+
) {
|
|
1298
|
+
// @ts-expect-error
|
|
1299
|
+
time`split-styles-pre-result`
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
const result: GetStyleResult = {
|
|
1303
|
+
hasMedia,
|
|
1304
|
+
fontFamily: styleState.fontFamily,
|
|
1305
|
+
viewProps,
|
|
1306
|
+
style: styleState.style as any,
|
|
1307
|
+
pseudos,
|
|
1308
|
+
classNames,
|
|
1309
|
+
rulesToInsert,
|
|
1310
|
+
dynamicThemeAccess,
|
|
1311
|
+
pseudoGroups,
|
|
1312
|
+
mediaGroups,
|
|
1313
|
+
overriddenContextProps: styleState.overriddenContextProps,
|
|
1314
|
+
pseudoTransitions: styleState.pseudoTransitions,
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
const asChildExceptStyleLike =
|
|
1318
|
+
asChild === 'except-style' || asChild === 'except-style-web'
|
|
1319
|
+
|
|
1320
|
+
if (!styleProps.noMergeStyle) {
|
|
1321
|
+
if (!asChildExceptStyleLike) {
|
|
1322
|
+
const style = styleState.style
|
|
1323
|
+
|
|
1324
|
+
if (process.env.HANZO_GUI_TARGET === 'web') {
|
|
1325
|
+
// merge className and style back into viewProps:
|
|
1326
|
+
// only emit font class if fontFamily was explicitly in props (not from defaults)
|
|
1327
|
+
let fontFamily = isText || isInput ? styleState.fontFamily : null
|
|
1328
|
+
if (fontFamily && fontFamily[0] === '$') {
|
|
1329
|
+
fontFamily = fontFamily.slice(1)
|
|
1330
|
+
}
|
|
1331
|
+
const fontFamilyClassName = fontFamily ? `font_${fontFamily}` : ''
|
|
1332
|
+
const groupClassName = props.group ? `t_group_${props.group}` : ''
|
|
1333
|
+
const componentNameFinal = props.componentName || staticConfig.componentName
|
|
1334
|
+
const componentNameClassName =
|
|
1335
|
+
props.asChild || !componentNameFinal || componentNameFinal === 'Text'
|
|
1336
|
+
? ''
|
|
1337
|
+
: `is_${componentNameFinal}`
|
|
1338
|
+
|
|
1339
|
+
let classList: string[] = []
|
|
1340
|
+
if (componentNameClassName) classList.push(componentNameClassName)
|
|
1341
|
+
// is_View gets base flex styles + font reset, is_Text gets base text styles
|
|
1342
|
+
if (!isText) classList.push('is_View')
|
|
1343
|
+
else classList.push('is_Text')
|
|
1344
|
+
if (fontFamilyClassName) classList.push(fontFamilyClassName)
|
|
1345
|
+
if (classNames) classList.push(Object.values(classNames).join(' '))
|
|
1346
|
+
if (groupClassName) classList.push(groupClassName)
|
|
1347
|
+
if (props.className) classList.push(props.className)
|
|
1348
|
+
const finalClassName = classList.join(' ')
|
|
1349
|
+
|
|
1350
|
+
// use $$css for RNW components OR when animated with RNW driver
|
|
1351
|
+
// (driver's AnimatedView doesn't forward className)
|
|
1352
|
+
const needsCssStyles =
|
|
1353
|
+
isReactNative || (styleProps.isAnimated && driver?.isReactNative)
|
|
1354
|
+
|
|
1355
|
+
if (styleProps.isAnimated && driver?.inputStyle === 'css') {
|
|
1356
|
+
// CSS animation driver uses className directly
|
|
1357
|
+
viewProps.className = finalClassName
|
|
1358
|
+
if (style) {
|
|
1359
|
+
viewProps.style = style as any
|
|
1360
|
+
}
|
|
1361
|
+
} else if (needsCssStyles) {
|
|
1362
|
+
// RNW or RNW-animated: apply classNames via $$css
|
|
1363
|
+
let cnStyles: Record<string, unknown> | undefined
|
|
1364
|
+
for (const name of finalClassName.split(' ')) {
|
|
1365
|
+
cnStyles ||= { $$css: true }
|
|
1366
|
+
cnStyles[name] = name
|
|
1367
|
+
}
|
|
1368
|
+
viewProps.style = cnStyles
|
|
1369
|
+
? [...(Array.isArray(style) ? style : [style]), cnStyles]
|
|
1370
|
+
: [style]
|
|
1371
|
+
} else {
|
|
1372
|
+
// regular web: use className directly
|
|
1373
|
+
if (finalClassName) {
|
|
1374
|
+
viewProps.className = finalClassName
|
|
1375
|
+
}
|
|
1376
|
+
if (style) {
|
|
1377
|
+
viewProps.style = style as any
|
|
1378
|
+
}
|
|
1379
|
+
}
|
|
1380
|
+
} else {
|
|
1381
|
+
if (style) {
|
|
1382
|
+
// native assign styles
|
|
1383
|
+
viewProps.style = style as any
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
if (process.env.NODE_ENV === 'development' && debug === 'verbose') {
|
|
1390
|
+
if (isClient && isDevTools) {
|
|
1391
|
+
// end collapsed log above
|
|
1392
|
+
console.groupEnd()
|
|
1393
|
+
|
|
1394
|
+
console.groupCollapsed('🔹 getSplitStyles ===>')
|
|
1395
|
+
try {
|
|
1396
|
+
// prettier-ignore
|
|
1397
|
+
const logs = {
|
|
1398
|
+
...result,
|
|
1399
|
+
className,
|
|
1400
|
+
componentState,
|
|
1401
|
+
viewProps,
|
|
1402
|
+
rulesToInsert,
|
|
1403
|
+
parentSplitStyles,
|
|
1404
|
+
}
|
|
1405
|
+
for (const key in logs) {
|
|
1406
|
+
log(key, logs[key])
|
|
1407
|
+
}
|
|
1408
|
+
} catch {
|
|
1409
|
+
// RN can run into PayloadTooLargeError: request entity too large
|
|
1410
|
+
}
|
|
1411
|
+
console.groupEnd()
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
if (
|
|
1416
|
+
process.env.NODE_ENV === 'development' &&
|
|
1417
|
+
(debug === 'profile' || (globalThis as any).time)
|
|
1418
|
+
) {
|
|
1419
|
+
// @ts-expect-error
|
|
1420
|
+
time`split-styles-done`
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
return result
|
|
1424
|
+
}
|
|
1425
|
+
|
|
1426
|
+
function mergeFlatTransforms(target: TextStyle, flatTransforms: Record<string, any>) {
|
|
1427
|
+
Object.entries(flatTransforms)
|
|
1428
|
+
.sort(([a], [b]) => sortString(a, b))
|
|
1429
|
+
.forEach(([key, val]) => {
|
|
1430
|
+
mergeTransform(target, key, val, true)
|
|
1431
|
+
})
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
function mergeStyle(
|
|
1435
|
+
styleState: GetStyleState,
|
|
1436
|
+
key: string,
|
|
1437
|
+
val: any,
|
|
1438
|
+
importance: number,
|
|
1439
|
+
disableNormalize = false,
|
|
1440
|
+
originalVal?: any
|
|
1441
|
+
) {
|
|
1442
|
+
const { viewProps, styleProps, staticConfig, usedKeys } = styleState
|
|
1443
|
+
|
|
1444
|
+
const existingImportance = usedKeys[key] || 0
|
|
1445
|
+
if (existingImportance > importance) {
|
|
1446
|
+
return
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1449
|
+
// Track context overrides for pseudo/media styles (issues #3670, #3676)
|
|
1450
|
+
// When a style sets a key that's in context props, update overriddenContextProps
|
|
1451
|
+
// so it propagates to children. Use the original token value (like '$8')
|
|
1452
|
+
// instead of the resolved CSS variable (like 'var(--t-space-8)')
|
|
1453
|
+
// so children's functional variants can look up token values.
|
|
1454
|
+
const contextProps =
|
|
1455
|
+
staticConfig.context?.props || staticConfig.parentStaticConfig?.context?.props
|
|
1456
|
+
if (contextProps && key in contextProps) {
|
|
1457
|
+
styleState.overriddenContextProps ||= {}
|
|
1458
|
+
// Priority: 1) originalVal from propMapper, 2) tracked original from variant resolution, 3) val
|
|
1459
|
+
const originalFromState = styleState.originalContextPropValues?.[key]
|
|
1460
|
+
styleState.overriddenContextProps[key] = originalVal ?? originalFromState ?? val
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
if (key in stylePropsTransform) {
|
|
1464
|
+
styleState.flatTransforms ||= {}
|
|
1465
|
+
usedKeys[key] = importance
|
|
1466
|
+
styleState.flatTransforms[key] = val
|
|
1467
|
+
} else {
|
|
1468
|
+
const shouldNormalize = isWeb && !disableNormalize && !styleProps.noNormalize
|
|
1469
|
+
const out = shouldNormalize ? normalizeValueWithProperty(val, key) : val
|
|
1470
|
+
if (
|
|
1471
|
+
// accept is for props not styles
|
|
1472
|
+
staticConfig.accept &&
|
|
1473
|
+
key in staticConfig.accept
|
|
1474
|
+
) {
|
|
1475
|
+
viewProps[key] = out
|
|
1476
|
+
} else {
|
|
1477
|
+
styleState.style ||= {}
|
|
1478
|
+
usedKeys[key] = importance
|
|
1479
|
+
styleState.style[key] =
|
|
1480
|
+
// if you dont do this you'll be passing props.transform arrays directly here and then mutating them
|
|
1481
|
+
// if theres any flatTransforms later, causing issues (mutating props is bad, in strict mode styles get borked)
|
|
1482
|
+
key === 'transform' && Array.isArray(out) ? [...out] : out
|
|
1483
|
+
}
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1487
|
+
export const getSubStyle = (
|
|
1488
|
+
styleState: GetStyleState,
|
|
1489
|
+
subKey: string,
|
|
1490
|
+
styleIn: object,
|
|
1491
|
+
avoidMergeTransform?: boolean
|
|
1492
|
+
): TextStyle => {
|
|
1493
|
+
const { staticConfig, conf, styleProps } = styleState
|
|
1494
|
+
const styleOut: TextStyle = {}
|
|
1495
|
+
let originalValues: Record<string, any> | undefined
|
|
1496
|
+
|
|
1497
|
+
for (let key in styleIn) {
|
|
1498
|
+
const val = styleIn[key]
|
|
1499
|
+
key = conf.shorthands[key] || key
|
|
1500
|
+
|
|
1501
|
+
// extract transition from pseudo-style props (e.g., hoverStyle.transition)
|
|
1502
|
+
// store it separately for animation drivers to use for enter/exit timing
|
|
1503
|
+
if (key === 'transition') {
|
|
1504
|
+
styleState.pseudoTransitions ||= {}
|
|
1505
|
+
styleState.pseudoTransitions[subKey as keyof typeof styleState.pseudoTransitions] =
|
|
1506
|
+
val
|
|
1507
|
+
// for CSS driver, also add transition to CSS output so native CSS transitions work
|
|
1508
|
+
// group styles ($group-*) need !important to override inline base transition
|
|
1509
|
+
const driver = styleState.animationDriver
|
|
1510
|
+
if (driver?.outputStyle === 'css') {
|
|
1511
|
+
const animationConfig = driver.animations?.[val as string]
|
|
1512
|
+
if (animationConfig) {
|
|
1513
|
+
const important = subKey[0] === '$' ? ' !important' : ''
|
|
1514
|
+
styleOut['transition'] = `all ${animationConfig}${important}`
|
|
1515
|
+
}
|
|
1516
|
+
}
|
|
1517
|
+
continue
|
|
1518
|
+
}
|
|
1519
|
+
|
|
1520
|
+
const shouldSkip = !staticConfig.isHOC && key in skipProps && !styleProps.noSkip
|
|
1521
|
+
if (shouldSkip) {
|
|
1522
|
+
continue
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
propMapper(key, val, styleState, false, (skey, sval, originalVal) => {
|
|
1526
|
+
// Track original values for context prop propagation
|
|
1527
|
+
if (originalVal !== undefined) {
|
|
1528
|
+
originalValues ||= {}
|
|
1529
|
+
originalValues[skey] = originalVal
|
|
1530
|
+
}
|
|
1531
|
+
// pseudo inside media
|
|
1532
|
+
if (skey in validPseudoKeys) {
|
|
1533
|
+
sval = getSubStyle(styleState, skey, sval, avoidMergeTransform)
|
|
1534
|
+
}
|
|
1535
|
+
if (!avoidMergeTransform && skey in stylePropsTransform) {
|
|
1536
|
+
mergeTransform(styleOut, skey, sval)
|
|
1537
|
+
} else {
|
|
1538
|
+
styleOut[skey] = styleProps.noNormalize
|
|
1539
|
+
? sval
|
|
1540
|
+
: normalizeValueWithProperty(sval, key)
|
|
1541
|
+
}
|
|
1542
|
+
})
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
if (!avoidMergeTransform) {
|
|
1546
|
+
const parentTransform = styleState.style?.transform
|
|
1547
|
+
const flatTransforms = styleState.flatTransforms
|
|
1548
|
+
const styleOutTransform = styleOut.transform
|
|
1549
|
+
|
|
1550
|
+
if (Array.isArray(styleOutTransform) && styleOutTransform.length) {
|
|
1551
|
+
// Inline conflict check - faster than building lookup object for small arrays
|
|
1552
|
+
const len = styleOutTransform.length
|
|
1553
|
+
|
|
1554
|
+
if (Array.isArray(parentTransform)) {
|
|
1555
|
+
const merged: any[] = []
|
|
1556
|
+
outer: for (let i = 0; i < parentTransform.length; i++) {
|
|
1557
|
+
const pt = parentTransform[i]
|
|
1558
|
+
for (const pk in pt) {
|
|
1559
|
+
for (let j = 0; j < len; j++) {
|
|
1560
|
+
for (const sk in styleOutTransform[j]) {
|
|
1561
|
+
if (pk === sk) continue outer
|
|
1562
|
+
break
|
|
1563
|
+
}
|
|
1564
|
+
}
|
|
1565
|
+
merged.push(pt)
|
|
1566
|
+
break
|
|
1567
|
+
}
|
|
1568
|
+
}
|
|
1569
|
+
for (let i = 0; i < len; i++) merged.push(styleOutTransform[i])
|
|
1570
|
+
styleOut.transform = merged
|
|
1571
|
+
}
|
|
1572
|
+
|
|
1573
|
+
if (flatTransforms) {
|
|
1574
|
+
outer: for (const fk in flatTransforms) {
|
|
1575
|
+
const ck = fk === 'x' ? 'translateX' : fk === 'y' ? 'translateY' : fk
|
|
1576
|
+
for (let j = 0; j < len; j++) {
|
|
1577
|
+
for (const sk in styleOutTransform[j]) {
|
|
1578
|
+
if (ck === sk) continue outer
|
|
1579
|
+
break
|
|
1580
|
+
}
|
|
1581
|
+
}
|
|
1582
|
+
mergeTransform(styleOut, fk, flatTransforms[fk])
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
1585
|
+
} else if (flatTransforms) {
|
|
1586
|
+
mergeFlatTransforms(styleOut, flatTransforms)
|
|
1587
|
+
}
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
if (!styleProps.noNormalize) {
|
|
1591
|
+
fixStyles(styleOut)
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1594
|
+
// Store original values in WeakMap instead of on the object itself
|
|
1595
|
+
if (originalValues) {
|
|
1596
|
+
styleOriginalValues.set(styleOut, originalValues)
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
return styleOut
|
|
1600
|
+
}
|
|
1601
|
+
|
|
1602
|
+
// on native no need to insert any css
|
|
1603
|
+
const useInsertEffectCompat = isWeb
|
|
1604
|
+
? React.useInsertionEffect || useIsomorphicLayoutEffect
|
|
1605
|
+
: () => {}
|
|
1606
|
+
|
|
1607
|
+
// perf: ...args a bit expensive on native
|
|
1608
|
+
export const useSplitStyles: StyleSplitter = (a, b, c, d, e, f, g, h, i, j, k, l, m) => {
|
|
1609
|
+
'use no memo'
|
|
1610
|
+
|
|
1611
|
+
const res = getSplitStyles(a, b, c, d, e, f, g, h, i, j, k, l, m)
|
|
1612
|
+
|
|
1613
|
+
if (process.env.HANZO_GUI_TARGET !== 'native') {
|
|
1614
|
+
useInsertEffectCompat(() => {
|
|
1615
|
+
if (res) {
|
|
1616
|
+
insertStyleRules(res.rulesToInsert)
|
|
1617
|
+
}
|
|
1618
|
+
}, [res?.rulesToInsert])
|
|
1619
|
+
}
|
|
1620
|
+
|
|
1621
|
+
return res
|
|
1622
|
+
}
|
|
1623
|
+
|
|
1624
|
+
function addStyleToInsertRules(rulesToInsert: RulesToInsert, styleObject: StyleObject) {
|
|
1625
|
+
if (process.env.HANZO_GUI_TARGET === 'web') {
|
|
1626
|
+
const identifier = styleObject[StyleObjectIdentifier]
|
|
1627
|
+
if (shouldInsertStyleRules(identifier)) {
|
|
1628
|
+
updateRules(identifier, styleObject[StyleObjectRules])
|
|
1629
|
+
rulesToInsert[identifier] = styleObject
|
|
1630
|
+
}
|
|
1631
|
+
}
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
const defaultColor = process.env.HANZO_GUI_DEFAULT_COLOR || 'rgba(0,0,0,0)'
|
|
1635
|
+
const animatableDefaults = {
|
|
1636
|
+
...Object.fromEntries(
|
|
1637
|
+
Object.entries(tokenCategories.color).map(([k, v]) => [k, defaultColor])
|
|
1638
|
+
),
|
|
1639
|
+
opacity: 1,
|
|
1640
|
+
scale: 1,
|
|
1641
|
+
scaleX: 1,
|
|
1642
|
+
scaleY: 1,
|
|
1643
|
+
rotate: '0deg',
|
|
1644
|
+
rotateX: '0deg',
|
|
1645
|
+
rotateY: '0deg',
|
|
1646
|
+
rotateZ: '0deg',
|
|
1647
|
+
skewX: '0deg',
|
|
1648
|
+
skewY: '0deg',
|
|
1649
|
+
x: 0,
|
|
1650
|
+
y: 0,
|
|
1651
|
+
borderRadius: 0,
|
|
1652
|
+
}
|
|
1653
|
+
|
|
1654
|
+
const mergeTransform = (obj: TextStyle, key: string, val: any, backwards = false) => {
|
|
1655
|
+
if (typeof obj.transform === 'string') {
|
|
1656
|
+
return
|
|
1657
|
+
}
|
|
1658
|
+
obj.transform ||= []
|
|
1659
|
+
obj.transform[backwards ? 'unshift' : 'push']({
|
|
1660
|
+
[mapTransformKeys[key] || key]: val,
|
|
1661
|
+
} as any)
|
|
1662
|
+
}
|
|
1663
|
+
|
|
1664
|
+
const mapTransformKeys = {
|
|
1665
|
+
x: 'translateX',
|
|
1666
|
+
y: 'translateY',
|
|
1667
|
+
}
|
|
1668
|
+
|
|
1669
|
+
function passDownProp(
|
|
1670
|
+
viewProps: object,
|
|
1671
|
+
key: string,
|
|
1672
|
+
val: any,
|
|
1673
|
+
shouldMergeObject = false
|
|
1674
|
+
) {
|
|
1675
|
+
if (shouldMergeObject) {
|
|
1676
|
+
const next = {
|
|
1677
|
+
...viewProps[key],
|
|
1678
|
+
...val,
|
|
1679
|
+
}
|
|
1680
|
+
// need to re-insert it at current position
|
|
1681
|
+
delete viewProps[key]
|
|
1682
|
+
viewProps[key] = next
|
|
1683
|
+
} else {
|
|
1684
|
+
viewProps[key] = val
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
|
|
1688
|
+
function mergeMediaByImportance(
|
|
1689
|
+
styleState: GetStyleState,
|
|
1690
|
+
mediaKey: string,
|
|
1691
|
+
key: string,
|
|
1692
|
+
value: any,
|
|
1693
|
+
isSizeMedia: boolean,
|
|
1694
|
+
importanceBump?: number,
|
|
1695
|
+
debugProp?: DebugProp,
|
|
1696
|
+
originalVal?: any
|
|
1697
|
+
) {
|
|
1698
|
+
const usedKeys = styleState.usedKeys
|
|
1699
|
+
let importance = getMediaImportanceIfMoreImportant(
|
|
1700
|
+
mediaKey,
|
|
1701
|
+
key,
|
|
1702
|
+
styleState,
|
|
1703
|
+
isSizeMedia
|
|
1704
|
+
)
|
|
1705
|
+
if (importanceBump) {
|
|
1706
|
+
importance = (importance || 0) + importanceBump
|
|
1707
|
+
}
|
|
1708
|
+
if (process.env.NODE_ENV === 'development' && debugProp === 'verbose') {
|
|
1709
|
+
log(
|
|
1710
|
+
`mergeMediaByImportance ${key} importance usedKey ${usedKeys[key]} next ${importance}`
|
|
1711
|
+
)
|
|
1712
|
+
}
|
|
1713
|
+
if (importance === null) {
|
|
1714
|
+
return false
|
|
1715
|
+
}
|
|
1716
|
+
if (key in pseudoDescriptors) {
|
|
1717
|
+
const descriptor = pseudoDescriptors[key as PseudoDescriptorKey]
|
|
1718
|
+
const descriptorKey = descriptor.stateKey || descriptor.name
|
|
1719
|
+
const isDisabled = styleState.componentState[descriptorKey] === false
|
|
1720
|
+
if (isDisabled) {
|
|
1721
|
+
return false
|
|
1722
|
+
}
|
|
1723
|
+
// For pseudo inside media, value is an object with subkeys
|
|
1724
|
+
const pseudoOriginalValues = styleOriginalValues.get(value as object)
|
|
1725
|
+
for (const subKey in value) {
|
|
1726
|
+
mergeStyle(
|
|
1727
|
+
styleState,
|
|
1728
|
+
subKey,
|
|
1729
|
+
value[subKey],
|
|
1730
|
+
importance,
|
|
1731
|
+
false,
|
|
1732
|
+
pseudoOriginalValues?.[subKey]
|
|
1733
|
+
)
|
|
1734
|
+
}
|
|
1735
|
+
} else {
|
|
1736
|
+
mergeStyle(styleState, key, value, importance, false, originalVal)
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
return true
|
|
1740
|
+
}
|
|
1741
|
+
|
|
1742
|
+
function normalizeStyle(style: any) {
|
|
1743
|
+
const out: Record<string, any> = {}
|
|
1744
|
+
for (const key in style) {
|
|
1745
|
+
const val = style[key]
|
|
1746
|
+
if (key in stylePropsTransform) {
|
|
1747
|
+
mergeTransform(out, key, val)
|
|
1748
|
+
} else {
|
|
1749
|
+
out[key] = normalizeValueWithProperty(val, key)
|
|
1750
|
+
}
|
|
1751
|
+
}
|
|
1752
|
+
if (isWeb && Array.isArray(out.transform)) {
|
|
1753
|
+
out.transform = transformsToString(out.transform)
|
|
1754
|
+
}
|
|
1755
|
+
fixStyles(out)
|
|
1756
|
+
return out
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
function applyDefaultStyle(pkey: string, styleState: GetStyleState) {
|
|
1760
|
+
const defaultValues = animatableDefaults[pkey]
|
|
1761
|
+
if (
|
|
1762
|
+
defaultValues != null &&
|
|
1763
|
+
!(pkey in styleState.usedKeys) &&
|
|
1764
|
+
(!styleState.style || !(pkey in styleState.style))
|
|
1765
|
+
) {
|
|
1766
|
+
mergeStyle(styleState, pkey, defaultValues, 1)
|
|
1767
|
+
}
|
|
1768
|
+
}
|