@tamagui/web 1.7.9 → 1.7.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/cjs/createTamagui.js +4 -0
  2. package/dist/cjs/createTamagui.js.map +2 -2
  3. package/dist/cjs/helpers/getSplitStyles.js +11 -5
  4. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  5. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  6. package/dist/cjs/types.js.map +1 -1
  7. package/dist/cjs/views/Stack.js.map +2 -2
  8. package/dist/cjs/views/Text.js +52 -50
  9. package/dist/cjs/views/Text.js.map +2 -2
  10. package/dist/esm/createTamagui.js +4 -0
  11. package/dist/esm/createTamagui.js.map +2 -2
  12. package/dist/esm/createTamagui.mjs +4 -0
  13. package/dist/esm/createTamagui.mjs.map +2 -2
  14. package/dist/esm/helpers/getSplitStyles.js +11 -5
  15. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  16. package/dist/esm/helpers/getSplitStyles.mjs +11 -5
  17. package/dist/esm/helpers/getSplitStyles.mjs.map +2 -2
  18. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  19. package/dist/esm/helpers/getStylesAtomic.mjs.map +2 -2
  20. package/dist/esm/views/Stack.js.map +2 -2
  21. package/dist/esm/views/Stack.mjs.map +2 -2
  22. package/dist/esm/views/Text.js +52 -50
  23. package/dist/esm/views/Text.js.map +2 -2
  24. package/dist/esm/views/Text.mjs +52 -50
  25. package/dist/esm/views/Text.mjs.map +2 -2
  26. package/package.json +9 -9
  27. package/src/createTamagui.ts +6 -0
  28. package/src/helpers/getSplitStyles.tsx +30 -13
  29. package/src/helpers/getStylesAtomic.ts +3 -12
  30. package/src/types.tsx +9 -8
  31. package/src/views/Stack.tsx +5 -3
  32. package/src/views/Text.tsx +64 -63
  33. package/types/createTamagui.d.ts.map +1 -1
  34. package/types/helpers/getSplitStyles.d.ts +3 -4
  35. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  36. package/types/helpers/getStylesAtomic.d.ts +2 -9
  37. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  38. package/types/types.d.ts +8 -3
  39. package/types/types.d.ts.map +1 -1
  40. package/types/views/Stack.d.ts +2 -2
  41. package/types/views/Stack.d.ts.map +1 -1
  42. package/types/views/Text.d.ts +2 -2
  43. package/types/views/Text.d.ts.map +1 -1
  44. package/dist/cjs/helpers/RNComponents.js +0 -40
  45. package/dist/cjs/helpers/RNComponents.js.map +0 -7
  46. package/dist/esm/helpers/RNComponents.js +0 -16
  47. package/dist/esm/helpers/RNComponents.js.map +0 -7
  48. package/dist/esm/helpers/RNComponents.mjs +0 -16
  49. package/dist/esm/helpers/RNComponents.mjs.map +0 -7
  50. package/src/helpers/RNComponents.tsx +0 -14
  51. package/types/helpers/RNComponents.d.ts +0 -2
  52. package/types/helpers/RNComponents.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/getStylesAtomic.ts"],
4
- "sourcesContent": ["/**\n * Some parts adapted from react-native-web\n * Copyright (c) Nicolas Gallagher licensed under the MIT license.\n */\n\nimport { StyleObject, simpleHash } from '@tamagui/helpers'\nimport type { TextStyle, ViewStyle } from 'react-native'\n\nimport { getConfig } from '../config.js'\nimport type { TamaguiInternalConfig } from '../types.js'\nimport { defaultOffset } from './defaultOffset.js'\nimport { normalizeValueWithProperty } from './normalizeValueWithProperty.js'\nimport { PseudoDescriptor, pseudoDescriptors } from './pseudoDescriptors.js'\n\n// refactor this file away next...\n\ntype ViewOrTextStyle = ViewStyle | TextStyle\n\nexport type ViewStyleWithPseudos = ViewOrTextStyle & {\n hoverStyle?: ViewOrTextStyle\n pressStyle?: ViewOrTextStyle\n focusStyle?: ViewOrTextStyle\n}\n\n// matching order of the below *0\nconst pseudosOrdered = [\n pseudoDescriptors.hoverStyle,\n pseudoDescriptors.pressStyle,\n pseudoDescriptors.focusStyle,\n]\n\nexport function getStylesAtomic(stylesIn: ViewStyleWithPseudos) {\n // performance optimization\n if (!(stylesIn.hoverStyle || stylesIn.pressStyle || stylesIn.focusStyle)) {\n return getAtomicStyle(stylesIn)\n }\n\n // only for pseudos\n const { hoverStyle, pressStyle, focusStyle, ...base } = stylesIn\n let res: StyleObject[] = []\n // *1 order matched to *0\n for (const [index, style] of [hoverStyle, pressStyle, focusStyle, base].entries()) {\n if (!style) continue\n const pseudo = pseudosOrdered[index]\n res = [...res, ...getAtomicStyle(style, pseudo)]\n }\n return res\n}\n\nexport function getAtomicStyle(\n style: ViewOrTextStyle,\n pseudo?: PseudoDescriptor\n): StyleObject[] {\n if (!style) return []\n if (process.env.NODE_ENV === 'development') {\n if (!style || typeof style !== 'object') {\n throw new Error(`Wrong style type: \"${typeof style}\": ${style}`)\n }\n }\n return generateAtomicStyles(style, pseudo)\n}\n\nlet conf: TamaguiInternalConfig\n\nconst generateAtomicStyles = (\n styleIn: ViewStyle & TextStyle,\n pseudo?: PseudoDescriptor\n): StyleObject[] => {\n conf = conf || getConfig()\n\n // were converting to css styles\n const style = styleIn as Record<string, string | null | undefined>\n\n // transform\n if (style.transform && Array.isArray(style.transform)) {\n style.transform = style.transform\n .map(\n // { scale: 2 } => 'scale(2)'\n // { translateX: 20 } => 'translateX(20px)'\n // { matrix: [1,2,3,4,5,6] } => 'matrix(1,2,3,4,5,6)'\n (transform) => {\n const type = Object.keys(transform)[0]\n const value = transform[type]\n if (type === 'matrix' || type === 'matrix3d') {\n return `${type}(${value.join(',')})`\n }\n return `${type}(${normalizeValueWithProperty(value, type)})`\n }\n )\n .join(' ')\n }\n\n styleToCSS(style)\n\n const out: StyleObject[] = []\n for (const key in style) {\n const value = normalizeValueWithProperty(style[key], key)\n if (value == null || value == undefined) continue\n\n let hash: string\n if (presetHashes[value]) {\n hash = value as string\n } else {\n hash = simpleHash(`${value}`)\n }\n\n const pseudoPrefix = pseudo ? `0${pseudo.name}-` : ''\n const shortProp = conf.inverseShorthands[key] || key\n const identifier = `_${shortProp}-${pseudoPrefix}${hash}`\n const rules = createAtomicRules(identifier, key, value, pseudo)\n const styleObject: StyleObject = {\n property: key,\n pseudo: pseudo?.name as any,\n value,\n identifier,\n rules,\n }\n out.push(styleObject)\n }\n\n if (process.env.NODE_ENV === 'development' && process.env.TAMAGUI_DEBUG) {\n // when Animated.Value gets passed into Tamagui problems are caused this helps debug\n if (\n out.find((x) => x.property === 'transform' && x.value.includes(`[object Object]`))\n ) {\n // rome-ignore lint/suspicious/noDebugger: only dev\n debugger\n }\n }\n\n return out\n}\n\nconst presetHashes = {\n none: true,\n}\n\nexport function styleToCSS(style: Record<string, any>) {\n // box-shadow\n const { shadowOffset, shadowRadius, shadowColor } = style\n if (style.shadowRadius !== undefined) {\n const offset = shadowOffset || defaultOffset\n const shadow = `${normalizeValueWithProperty(\n offset.width\n )} ${normalizeValueWithProperty(offset.height)} ${normalizeValueWithProperty(\n shadowRadius\n )} ${shadowColor}`\n style.boxShadow = style.boxShadow ? `${style.boxShadow}, ${shadow}` : shadow\n style.shadowOffset = undefined\n style.shadowRadius = undefined\n style.shadowColor = undefined\n }\n\n // text-shadow\n const { textShadowColor, textShadowOffset, textShadowRadius } = style\n if (textShadowColor || textShadowOffset || textShadowRadius) {\n const { height, width } = textShadowOffset || defaultOffset\n const radius = textShadowRadius || 0\n const color = normalizeValueWithProperty(textShadowColor, 'textShadowColor')\n if (color && (height !== 0 || width !== 0 || radius !== 0)) {\n const blurRadius = normalizeValueWithProperty(radius)\n const offsetX = normalizeValueWithProperty(width)\n const offsetY = normalizeValueWithProperty(height)\n style.textShadow = `${offsetX} ${offsetY} ${blurRadius} ${color}`\n }\n style.textShadowColor = undefined\n style.textShadowOffset = undefined\n style.textShadowRadius = undefined\n }\n}\n\nfunction createDeclarationBlock(style: Record<string, any>, important = false) {\n let next = ''\n for (const key in style) {\n const prop = hyphenateStyleName(key)\n const value = style[key]\n next += `${prop}:${value}${important ? ' !important' : ''};`\n }\n return `{${next}}`\n}\n\nconst hcache = {}\nconst toHyphenLower = (match: string) => `-${match.toLowerCase()}`\nconst hyphenateStyleName = (key: string) => {\n let val = hcache[key]\n if (val) return val\n hcache[key] = val = key.replace(/[A-Z]/g, toHyphenLower)\n return val\n}\n\nconst pseudoSelectorPrefixes = (() => {\n const res: Record<string, string> = {}\n for (const key in pseudoDescriptors) {\n const pseudo = pseudoDescriptors[key]\n res[pseudo.name] = `${[...Array(pseudo.priority)].map(() => ':root').join('')} `\n }\n return res\n})()\n\nfunction createAtomicRules(\n identifier: string,\n property: string,\n value: any,\n pseudo?: PseudoDescriptor\n): string[] {\n const selector = pseudo\n ? `${pseudoSelectorPrefixes[pseudo.name]} .${identifier}:${pseudo.name}`\n : `.${identifier}`\n const important = !!pseudo\n\n let rules: string[] = []\n\n // Handle non-standard properties and object values that require multiple\n // CSS rules to be created.\n switch (property) {\n // Equivalent to using '::placeholder'\n case 'placeholderTextColor': {\n const block = createDeclarationBlock({ color: value, opacity: 1 }, important)\n rules.push(`${selector}::placeholder${block}`)\n break\n }\n\n // all webkit prefixed rules\n case 'backgroundClip':\n case 'userSelect': {\n const propertyCapitalized = `${property[0].toUpperCase()}${property.slice(1)}`\n const webkitProperty = `Webkit${propertyCapitalized}`\n const block = createDeclarationBlock(\n { [property]: value, [webkitProperty]: value },\n important\n )\n rules.push(`${selector}${block}`)\n break\n }\n\n // Polyfill for additional 'pointer-events' values\n case 'pointerEvents': {\n let finalValue = value\n if (value === 'auto' || value === 'box-only') {\n finalValue = 'auto'\n if (value === 'box-only') {\n rules.push(`${selector}>*${boxOnly}`)\n }\n } else if (value === 'none' || value === 'box-none') {\n finalValue = 'none'\n if (value === 'box-none') {\n rules.push(`${selector}>*${boxNone}`)\n }\n }\n const block = createDeclarationBlock({ pointerEvents: finalValue }, true)\n rules.push(`${selector}${block}`)\n break\n }\n\n default: {\n const block = createDeclarationBlock({ [property]: value }, important)\n rules.push(`${selector}${block}`)\n break\n }\n }\n\n // hover styles need to be conditional\n // perhaps this can be generalized but for now lets just shortcut\n // and hardcode for hover styles, if we need to later we can\n // WEIRD SYNTAX, SEE:\n // https://stackoverflow.com/questions/40532204/media-query-for-devices-supporting-hover\n if (pseudo && pseudo.name === 'hover') {\n rules = rules.map((r) => `@media not all and (hover: none) { ${r} }`)\n }\n\n return rules\n}\n\nconst boxNone = createDeclarationBlock({ pointerEvents: 'auto' }, true)\nconst boxOnly = createDeclarationBlock({ pointerEvents: 'none' }, true)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Some parts adapted from react-native-web\n * Copyright (c) Nicolas Gallagher licensed under the MIT license.\n */\n\nimport { StyleObject, simpleHash } from '@tamagui/helpers'\n\nimport { getConfig } from '../config.js'\nimport type { TamaguiInternalConfig, ViewStyleWithPseudos } from '../types.js'\nimport { defaultOffset } from './defaultOffset.js'\nimport { normalizeValueWithProperty } from './normalizeValueWithProperty.js'\nimport { PseudoDescriptor, pseudoDescriptors } from './pseudoDescriptors.js'\n\n// refactor this file away next...\n\n// matching order of the below *0\nconst pseudosOrdered = [\n pseudoDescriptors.hoverStyle,\n pseudoDescriptors.pressStyle,\n pseudoDescriptors.focusStyle,\n]\n\nexport function getStylesAtomic(stylesIn: ViewStyleWithPseudos) {\n // performance optimization\n if (!(stylesIn.hoverStyle || stylesIn.pressStyle || stylesIn.focusStyle)) {\n return getAtomicStyle(stylesIn)\n }\n\n // only for pseudos\n const { hoverStyle, pressStyle, focusStyle, ...base } = stylesIn\n let res: StyleObject[] = []\n // *1 order matched to *0\n for (const [index, style] of [hoverStyle, pressStyle, focusStyle, base].entries()) {\n if (!style) continue\n const pseudo = pseudosOrdered[index]\n res = [...res, ...getAtomicStyle(style, pseudo)]\n }\n return res\n}\n\nexport function getAtomicStyle(\n style: ViewStyleWithPseudos,\n pseudo?: PseudoDescriptor\n): StyleObject[] {\n if (!style) return []\n if (process.env.NODE_ENV === 'development') {\n if (!style || typeof style !== 'object') {\n throw new Error(`Wrong style type: \"${typeof style}\": ${style}`)\n }\n }\n return generateAtomicStyles(style, pseudo)\n}\n\nlet conf: TamaguiInternalConfig\n\nconst generateAtomicStyles = (\n styleIn: ViewStyleWithPseudos,\n pseudo?: PseudoDescriptor\n): StyleObject[] => {\n conf = conf || getConfig()\n\n // were converting to css styles\n const style = styleIn as Record<string, string | null | undefined>\n\n // transform\n if (style.transform && Array.isArray(style.transform)) {\n style.transform = style.transform\n .map(\n // { scale: 2 } => 'scale(2)'\n // { translateX: 20 } => 'translateX(20px)'\n // { matrix: [1,2,3,4,5,6] } => 'matrix(1,2,3,4,5,6)'\n (transform) => {\n const type = Object.keys(transform)[0]\n const value = transform[type]\n if (type === 'matrix' || type === 'matrix3d') {\n return `${type}(${value.join(',')})`\n }\n return `${type}(${normalizeValueWithProperty(value, type)})`\n }\n )\n .join(' ')\n }\n\n styleToCSS(style)\n\n const out: StyleObject[] = []\n for (const key in style) {\n const value = normalizeValueWithProperty(style[key], key)\n if (value == null || value == undefined) continue\n\n let hash: string\n if (presetHashes[value]) {\n hash = value as string\n } else {\n hash = simpleHash(`${value}`)\n }\n\n const pseudoPrefix = pseudo ? `0${pseudo.name}-` : ''\n const shortProp = conf.inverseShorthands[key] || key\n const identifier = `_${shortProp}-${pseudoPrefix}${hash}`\n const rules = createAtomicRules(identifier, key, value, pseudo)\n const styleObject: StyleObject = {\n property: key,\n pseudo: pseudo?.name as any,\n value,\n identifier,\n rules,\n }\n out.push(styleObject)\n }\n\n if (process.env.NODE_ENV === 'development' && process.env.TAMAGUI_DEBUG) {\n // when Animated.Value gets passed into Tamagui problems are caused this helps debug\n if (\n out.find((x) => x.property === 'transform' && x.value.includes(`[object Object]`))\n ) {\n // rome-ignore lint/suspicious/noDebugger: only dev\n debugger\n }\n }\n\n return out\n}\n\nconst presetHashes = {\n none: true,\n}\n\nexport function styleToCSS(style: Record<string, any>) {\n // box-shadow\n const { shadowOffset, shadowRadius, shadowColor } = style\n if (style.shadowRadius !== undefined) {\n const offset = shadowOffset || defaultOffset\n const shadow = `${normalizeValueWithProperty(\n offset.width\n )} ${normalizeValueWithProperty(offset.height)} ${normalizeValueWithProperty(\n shadowRadius\n )} ${shadowColor}`\n style.boxShadow = style.boxShadow ? `${style.boxShadow}, ${shadow}` : shadow\n style.shadowOffset = undefined\n style.shadowRadius = undefined\n style.shadowColor = undefined\n }\n\n // text-shadow\n const { textShadowColor, textShadowOffset, textShadowRadius } = style\n if (textShadowColor || textShadowOffset || textShadowRadius) {\n const { height, width } = textShadowOffset || defaultOffset\n const radius = textShadowRadius || 0\n const color = normalizeValueWithProperty(textShadowColor, 'textShadowColor')\n if (color && (height !== 0 || width !== 0 || radius !== 0)) {\n const blurRadius = normalizeValueWithProperty(radius)\n const offsetX = normalizeValueWithProperty(width)\n const offsetY = normalizeValueWithProperty(height)\n style.textShadow = `${offsetX} ${offsetY} ${blurRadius} ${color}`\n }\n style.textShadowColor = undefined\n style.textShadowOffset = undefined\n style.textShadowRadius = undefined\n }\n}\n\nfunction createDeclarationBlock(style: Record<string, any>, important = false) {\n let next = ''\n for (const key in style) {\n const prop = hyphenateStyleName(key)\n const value = style[key]\n next += `${prop}:${value}${important ? ' !important' : ''};`\n }\n return `{${next}}`\n}\n\nconst hcache = {}\nconst toHyphenLower = (match: string) => `-${match.toLowerCase()}`\nconst hyphenateStyleName = (key: string) => {\n let val = hcache[key]\n if (val) return val\n hcache[key] = val = key.replace(/[A-Z]/g, toHyphenLower)\n return val\n}\n\nconst pseudoSelectorPrefixes = (() => {\n const res: Record<string, string> = {}\n for (const key in pseudoDescriptors) {\n const pseudo = pseudoDescriptors[key]\n res[pseudo.name] = `${[...Array(pseudo.priority)].map(() => ':root').join('')} `\n }\n return res\n})()\n\nfunction createAtomicRules(\n identifier: string,\n property: string,\n value: any,\n pseudo?: PseudoDescriptor\n): string[] {\n const selector = pseudo\n ? `${pseudoSelectorPrefixes[pseudo.name]} .${identifier}:${pseudo.name}`\n : `.${identifier}`\n const important = !!pseudo\n\n let rules: string[] = []\n\n // Handle non-standard properties and object values that require multiple\n // CSS rules to be created.\n switch (property) {\n // Equivalent to using '::placeholder'\n case 'placeholderTextColor': {\n const block = createDeclarationBlock({ color: value, opacity: 1 }, important)\n rules.push(`${selector}::placeholder${block}`)\n break\n }\n\n // all webkit prefixed rules\n case 'backgroundClip':\n case 'userSelect': {\n const propertyCapitalized = `${property[0].toUpperCase()}${property.slice(1)}`\n const webkitProperty = `Webkit${propertyCapitalized}`\n const block = createDeclarationBlock(\n { [property]: value, [webkitProperty]: value },\n important\n )\n rules.push(`${selector}${block}`)\n break\n }\n\n // Polyfill for additional 'pointer-events' values\n case 'pointerEvents': {\n let finalValue = value\n if (value === 'auto' || value === 'box-only') {\n finalValue = 'auto'\n if (value === 'box-only') {\n rules.push(`${selector}>*${boxOnly}`)\n }\n } else if (value === 'none' || value === 'box-none') {\n finalValue = 'none'\n if (value === 'box-none') {\n rules.push(`${selector}>*${boxNone}`)\n }\n }\n const block = createDeclarationBlock({ pointerEvents: finalValue }, true)\n rules.push(`${selector}${block}`)\n break\n }\n\n default: {\n const block = createDeclarationBlock({ [property]: value }, important)\n rules.push(`${selector}${block}`)\n break\n }\n }\n\n // hover styles need to be conditional\n // perhaps this can be generalized but for now lets just shortcut\n // and hardcode for hover styles, if we need to later we can\n // WEIRD SYNTAX, SEE:\n // https://stackoverflow.com/questions/40532204/media-query-for-devices-supporting-hover\n if (pseudo && pseudo.name === 'hover') {\n rules = rules.map((r) => `@media not all and (hover: none) { ${r} }`)\n }\n\n return rules\n}\n\nconst boxNone = createDeclarationBlock({ pointerEvents: 'auto' }, true)\nconst boxOnly = createDeclarationBlock({ pointerEvents: 'none' }, true)\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/getStylesAtomic.ts"],
4
- "sourcesContent": ["/**\n * Some parts adapted from react-native-web\n * Copyright (c) Nicolas Gallagher licensed under the MIT license.\n */\n\nimport { StyleObject, simpleHash } from '@tamagui/helpers'\nimport type { TextStyle, ViewStyle } from 'react-native'\n\nimport { getConfig } from '../config.js'\nimport type { TamaguiInternalConfig } from '../types.js'\nimport { defaultOffset } from './defaultOffset.js'\nimport { normalizeValueWithProperty } from './normalizeValueWithProperty.js'\nimport { PseudoDescriptor, pseudoDescriptors } from './pseudoDescriptors.js'\n\n// refactor this file away next...\n\ntype ViewOrTextStyle = ViewStyle | TextStyle\n\nexport type ViewStyleWithPseudos = ViewOrTextStyle & {\n hoverStyle?: ViewOrTextStyle\n pressStyle?: ViewOrTextStyle\n focusStyle?: ViewOrTextStyle\n}\n\n// matching order of the below *0\nconst pseudosOrdered = [\n pseudoDescriptors.hoverStyle,\n pseudoDescriptors.pressStyle,\n pseudoDescriptors.focusStyle,\n]\n\nexport function getStylesAtomic(stylesIn: ViewStyleWithPseudos) {\n // performance optimization\n if (!(stylesIn.hoverStyle || stylesIn.pressStyle || stylesIn.focusStyle)) {\n return getAtomicStyle(stylesIn)\n }\n\n // only for pseudos\n const { hoverStyle, pressStyle, focusStyle, ...base } = stylesIn\n let res: StyleObject[] = []\n // *1 order matched to *0\n for (const [index, style] of [hoverStyle, pressStyle, focusStyle, base].entries()) {\n if (!style) continue\n const pseudo = pseudosOrdered[index]\n res = [...res, ...getAtomicStyle(style, pseudo)]\n }\n return res\n}\n\nexport function getAtomicStyle(\n style: ViewOrTextStyle,\n pseudo?: PseudoDescriptor\n): StyleObject[] {\n if (!style) return []\n if (process.env.NODE_ENV === 'development') {\n if (!style || typeof style !== 'object') {\n throw new Error(`Wrong style type: \"${typeof style}\": ${style}`)\n }\n }\n return generateAtomicStyles(style, pseudo)\n}\n\nlet conf: TamaguiInternalConfig\n\nconst generateAtomicStyles = (\n styleIn: ViewStyle & TextStyle,\n pseudo?: PseudoDescriptor\n): StyleObject[] => {\n conf = conf || getConfig()\n\n // were converting to css styles\n const style = styleIn as Record<string, string | null | undefined>\n\n // transform\n if (style.transform && Array.isArray(style.transform)) {\n style.transform = style.transform\n .map(\n // { scale: 2 } => 'scale(2)'\n // { translateX: 20 } => 'translateX(20px)'\n // { matrix: [1,2,3,4,5,6] } => 'matrix(1,2,3,4,5,6)'\n (transform) => {\n const type = Object.keys(transform)[0]\n const value = transform[type]\n if (type === 'matrix' || type === 'matrix3d') {\n return `${type}(${value.join(',')})`\n }\n return `${type}(${normalizeValueWithProperty(value, type)})`\n }\n )\n .join(' ')\n }\n\n styleToCSS(style)\n\n const out: StyleObject[] = []\n for (const key in style) {\n const value = normalizeValueWithProperty(style[key], key)\n if (value == null || value == undefined) continue\n\n let hash: string\n if (presetHashes[value]) {\n hash = value as string\n } else {\n hash = simpleHash(`${value}`)\n }\n\n const pseudoPrefix = pseudo ? `0${pseudo.name}-` : ''\n const shortProp = conf.inverseShorthands[key] || key\n const identifier = `_${shortProp}-${pseudoPrefix}${hash}`\n const rules = createAtomicRules(identifier, key, value, pseudo)\n const styleObject: StyleObject = {\n property: key,\n pseudo: pseudo?.name as any,\n value,\n identifier,\n rules,\n }\n out.push(styleObject)\n }\n\n if (process.env.NODE_ENV === 'development' && process.env.TAMAGUI_DEBUG) {\n // when Animated.Value gets passed into Tamagui problems are caused this helps debug\n if (\n out.find((x) => x.property === 'transform' && x.value.includes(`[object Object]`))\n ) {\n // rome-ignore lint/suspicious/noDebugger: only dev\n debugger\n }\n }\n\n return out\n}\n\nconst presetHashes = {\n none: true,\n}\n\nexport function styleToCSS(style: Record<string, any>) {\n // box-shadow\n const { shadowOffset, shadowRadius, shadowColor } = style\n if (style.shadowRadius !== undefined) {\n const offset = shadowOffset || defaultOffset\n const shadow = `${normalizeValueWithProperty(\n offset.width\n )} ${normalizeValueWithProperty(offset.height)} ${normalizeValueWithProperty(\n shadowRadius\n )} ${shadowColor}`\n style.boxShadow = style.boxShadow ? `${style.boxShadow}, ${shadow}` : shadow\n style.shadowOffset = undefined\n style.shadowRadius = undefined\n style.shadowColor = undefined\n }\n\n // text-shadow\n const { textShadowColor, textShadowOffset, textShadowRadius } = style\n if (textShadowColor || textShadowOffset || textShadowRadius) {\n const { height, width } = textShadowOffset || defaultOffset\n const radius = textShadowRadius || 0\n const color = normalizeValueWithProperty(textShadowColor, 'textShadowColor')\n if (color && (height !== 0 || width !== 0 || radius !== 0)) {\n const blurRadius = normalizeValueWithProperty(radius)\n const offsetX = normalizeValueWithProperty(width)\n const offsetY = normalizeValueWithProperty(height)\n style.textShadow = `${offsetX} ${offsetY} ${blurRadius} ${color}`\n }\n style.textShadowColor = undefined\n style.textShadowOffset = undefined\n style.textShadowRadius = undefined\n }\n}\n\nfunction createDeclarationBlock(style: Record<string, any>, important = false) {\n let next = ''\n for (const key in style) {\n const prop = hyphenateStyleName(key)\n const value = style[key]\n next += `${prop}:${value}${important ? ' !important' : ''};`\n }\n return `{${next}}`\n}\n\nconst hcache = {}\nconst toHyphenLower = (match: string) => `-${match.toLowerCase()}`\nconst hyphenateStyleName = (key: string) => {\n let val = hcache[key]\n if (val) return val\n hcache[key] = val = key.replace(/[A-Z]/g, toHyphenLower)\n return val\n}\n\nconst pseudoSelectorPrefixes = (() => {\n const res: Record<string, string> = {}\n for (const key in pseudoDescriptors) {\n const pseudo = pseudoDescriptors[key]\n res[pseudo.name] = `${[...Array(pseudo.priority)].map(() => ':root').join('')} `\n }\n return res\n})()\n\nfunction createAtomicRules(\n identifier: string,\n property: string,\n value: any,\n pseudo?: PseudoDescriptor\n): string[] {\n const selector = pseudo\n ? `${pseudoSelectorPrefixes[pseudo.name]} .${identifier}:${pseudo.name}`\n : `.${identifier}`\n const important = !!pseudo\n\n let rules: string[] = []\n\n // Handle non-standard properties and object values that require multiple\n // CSS rules to be created.\n switch (property) {\n // Equivalent to using '::placeholder'\n case 'placeholderTextColor': {\n const block = createDeclarationBlock({ color: value, opacity: 1 }, important)\n rules.push(`${selector}::placeholder${block}`)\n break\n }\n\n // all webkit prefixed rules\n case 'backgroundClip':\n case 'userSelect': {\n const propertyCapitalized = `${property[0].toUpperCase()}${property.slice(1)}`\n const webkitProperty = `Webkit${propertyCapitalized}`\n const block = createDeclarationBlock(\n { [property]: value, [webkitProperty]: value },\n important\n )\n rules.push(`${selector}${block}`)\n break\n }\n\n // Polyfill for additional 'pointer-events' values\n case 'pointerEvents': {\n let finalValue = value\n if (value === 'auto' || value === 'box-only') {\n finalValue = 'auto'\n if (value === 'box-only') {\n rules.push(`${selector}>*${boxOnly}`)\n }\n } else if (value === 'none' || value === 'box-none') {\n finalValue = 'none'\n if (value === 'box-none') {\n rules.push(`${selector}>*${boxNone}`)\n }\n }\n const block = createDeclarationBlock({ pointerEvents: finalValue }, true)\n rules.push(`${selector}${block}`)\n break\n }\n\n default: {\n const block = createDeclarationBlock({ [property]: value }, important)\n rules.push(`${selector}${block}`)\n break\n }\n }\n\n // hover styles need to be conditional\n // perhaps this can be generalized but for now lets just shortcut\n // and hardcode for hover styles, if we need to later we can\n // WEIRD SYNTAX, SEE:\n // https://stackoverflow.com/questions/40532204/media-query-for-devices-supporting-hover\n if (pseudo && pseudo.name === 'hover') {\n rules = rules.map((r) => `@media not all and (hover: none) { ${r} }`)\n }\n\n return rules\n}\n\nconst boxNone = createDeclarationBlock({ pointerEvents: 'auto' }, true)\nconst boxOnly = createDeclarationBlock({ pointerEvents: 'none' }, true)\n"],
5
- "mappings": "AAKA,SAAsB,kBAAkB;AAGxC,SAAS,iBAAiB;AAE1B,SAAS,qBAAqB;AAC9B,SAAS,kCAAkC;AAC3C,SAA2B,yBAAyB;AAapD,MAAM,iBAAiB;AAAA,EACrB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,kBAAkB;AACpB;AAEO,SAAS,gBAAgB,UAAgC;AAE9D,MAAI,EAAE,SAAS,cAAc,SAAS,cAAc,SAAS,aAAa;AACxE,WAAO,eAAe,QAAQ;AAAA,EAChC;AAGA,QAAM,EAAE,YAAY,YAAY,YAAY,GAAG,KAAK,IAAI;AACxD,MAAI,MAAqB,CAAC;AAE1B,aAAW,CAAC,OAAO,KAAK,KAAK,CAAC,YAAY,YAAY,YAAY,IAAI,EAAE,QAAQ,GAAG;AACjF,QAAI,CAAC;AAAO;AACZ,UAAM,SAAS,eAAe,KAAK;AACnC,UAAM,CAAC,GAAG,KAAK,GAAG,eAAe,OAAO,MAAM,CAAC;AAAA,EACjD;AACA,SAAO;AACT;AAEO,SAAS,eACd,OACA,QACe;AACf,MAAI,CAAC;AAAO,WAAO,CAAC;AACpB,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACvC,YAAM,IAAI,MAAM,sBAAsB,OAAO,WAAW,OAAO;AAAA,IACjE;AAAA,EACF;AACA,SAAO,qBAAqB,OAAO,MAAM;AAC3C;AAEA,IAAI;AAEJ,MAAM,uBAAuB,CAC3B,SACA,WACkB;AAClB,SAAO,QAAQ,UAAU;AAGzB,QAAM,QAAQ;AAGd,MAAI,MAAM,aAAa,MAAM,QAAQ,MAAM,SAAS,GAAG;AACrD,UAAM,YAAY,MAAM,UACrB;AAAA;AAAA;AAAA;AAAA,MAIC,CAAC,cAAc;AACb,cAAM,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;AACrC,cAAM,QAAQ,UAAU,IAAI;AAC5B,YAAI,SAAS,YAAY,SAAS,YAAY;AAC5C,iBAAO,GAAG,QAAQ,MAAM,KAAK,GAAG;AAAA,QAClC;AACA,eAAO,GAAG,QAAQ,2BAA2B,OAAO,IAAI;AAAA,MAC1D;AAAA,IACF,EACC,KAAK,GAAG;AAAA,EACb;AAEA,aAAW,KAAK;AAEhB,QAAM,MAAqB,CAAC;AAC5B,aAAW,OAAO,OAAO;AACvB,UAAM,QAAQ,2BAA2B,MAAM,GAAG,GAAG,GAAG;AACxD,QAAI,SAAS,QAAQ,SAAS;AAAW;AAEzC,QAAI;AACJ,QAAI,aAAa,KAAK,GAAG;AACvB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,WAAW,GAAG,OAAO;AAAA,IAC9B;AAEA,UAAM,eAAe,SAAS,IAAI,OAAO,UAAU;AACnD,UAAM,YAAY,KAAK,kBAAkB,GAAG,KAAK;AACjD,UAAM,aAAa,IAAI,aAAa,eAAe;AACnD,UAAM,QAAQ,kBAAkB,YAAY,KAAK,OAAO,MAAM;AAC9D,UAAM,cAA2B;AAAA,MAC/B,UAAU;AAAA,MACV,QAAQ,iCAAQ;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,QAAI,KAAK,WAAW;AAAA,EACtB;AAEA,MAAI,QAAQ,IAAI,aAAa,iBAAiB,QAAQ,IAAI,eAAe;AAEvE,QACE,IAAI,KAAK,CAAC,MAAM,EAAE,aAAa,eAAe,EAAE,MAAM,SAAS,iBAAiB,CAAC,GACjF;AAEA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,MAAM,eAAe;AAAA,EACnB,MAAM;AACR;AAEO,SAAS,WAAW,OAA4B;AAErD,QAAM,EAAE,cAAc,cAAc,YAAY,IAAI;AACpD,MAAI,MAAM,iBAAiB,QAAW;AACpC,UAAM,SAAS,gBAAgB;AAC/B,UAAM,SAAS,GAAG;AAAA,MAChB,OAAO;AAAA,IACT,KAAK,2BAA2B,OAAO,MAAM,KAAK;AAAA,MAChD;AAAA,IACF,KAAK;AACL,UAAM,YAAY,MAAM,YAAY,GAAG,MAAM,cAAc,WAAW;AACtE,UAAM,eAAe;AACrB,UAAM,eAAe;AACrB,UAAM,cAAc;AAAA,EACtB;AAGA,QAAM,EAAE,iBAAiB,kBAAkB,iBAAiB,IAAI;AAChE,MAAI,mBAAmB,oBAAoB,kBAAkB;AAC3D,UAAM,EAAE,QAAQ,MAAM,IAAI,oBAAoB;AAC9C,UAAM,SAAS,oBAAoB;AACnC,UAAM,QAAQ,2BAA2B,iBAAiB,iBAAiB;AAC3E,QAAI,UAAU,WAAW,KAAK,UAAU,KAAK,WAAW,IAAI;AAC1D,YAAM,aAAa,2BAA2B,MAAM;AACpD,YAAM,UAAU,2BAA2B,KAAK;AAChD,YAAM,UAAU,2BAA2B,MAAM;AACjD,YAAM,aAAa,GAAG,WAAW,WAAW,cAAc;AAAA,IAC5D;AACA,UAAM,kBAAkB;AACxB,UAAM,mBAAmB;AACzB,UAAM,mBAAmB;AAAA,EAC3B;AACF;AAEA,SAAS,uBAAuB,OAA4B,YAAY,OAAO;AAC7E,MAAI,OAAO;AACX,aAAW,OAAO,OAAO;AACvB,UAAM,OAAO,mBAAmB,GAAG;AACnC,UAAM,QAAQ,MAAM,GAAG;AACvB,YAAQ,GAAG,QAAQ,QAAQ,YAAY,gBAAgB;AAAA,EACzD;AACA,SAAO,IAAI;AACb;AAEA,MAAM,SAAS,CAAC;AAChB,MAAM,gBAAgB,CAAC,UAAkB,IAAI,MAAM,YAAY;AAC/D,MAAM,qBAAqB,CAAC,QAAgB;AAC1C,MAAI,MAAM,OAAO,GAAG;AACpB,MAAI;AAAK,WAAO;AAChB,SAAO,GAAG,IAAI,MAAM,IAAI,QAAQ,UAAU,aAAa;AACvD,SAAO;AACT;AAEA,MAAM,0BAA0B,MAAM;AACpC,QAAM,MAA8B,CAAC;AACrC,aAAW,OAAO,mBAAmB;AACnC,UAAM,SAAS,kBAAkB,GAAG;AACpC,QAAI,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,MAAM,OAAO,QAAQ,CAAC,EAAE,IAAI,MAAM,OAAO,EAAE,KAAK,EAAE;AAAA,EAC9E;AACA,SAAO;AACT,GAAG;AAEH,SAAS,kBACP,YACA,UACA,OACA,QACU;AACV,QAAM,WAAW,SACb,GAAG,uBAAuB,OAAO,IAAI,MAAM,cAAc,OAAO,SAChE,IAAI;AACR,QAAM,YAAY,CAAC,CAAC;AAEpB,MAAI,QAAkB,CAAC;AAIvB,UAAQ,UAAU;AAAA,IAEhB,KAAK,wBAAwB;AAC3B,YAAM,QAAQ,uBAAuB,EAAE,OAAO,OAAO,SAAS,EAAE,GAAG,SAAS;AAC5E,YAAM,KAAK,GAAG,wBAAwB,OAAO;AAC7C;AAAA,IACF;AAAA,IAGA,KAAK;AAAA,IACL,KAAK,cAAc;AACjB,YAAM,sBAAsB,GAAG,SAAS,CAAC,EAAE,YAAY,IAAI,SAAS,MAAM,CAAC;AAC3E,YAAM,iBAAiB,SAAS;AAChC,YAAM,QAAQ;AAAA,QACZ,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,cAAc,GAAG,MAAM;AAAA,QAC7C;AAAA,MACF;AACA,YAAM,KAAK,GAAG,WAAW,OAAO;AAChC;AAAA,IACF;AAAA,IAGA,KAAK,iBAAiB;AACpB,UAAI,aAAa;AACjB,UAAI,UAAU,UAAU,UAAU,YAAY;AAC5C,qBAAa;AACb,YAAI,UAAU,YAAY;AACxB,gBAAM,KAAK,GAAG,aAAa,SAAS;AAAA,QACtC;AAAA,MACF,WAAW,UAAU,UAAU,UAAU,YAAY;AACnD,qBAAa;AACb,YAAI,UAAU,YAAY;AACxB,gBAAM,KAAK,GAAG,aAAa,SAAS;AAAA,QACtC;AAAA,MACF;AACA,YAAM,QAAQ,uBAAuB,EAAE,eAAe,WAAW,GAAG,IAAI;AACxE,YAAM,KAAK,GAAG,WAAW,OAAO;AAChC;AAAA,IACF;AAAA,IAEA,SAAS;AACP,YAAM,QAAQ,uBAAuB,EAAE,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS;AACrE,YAAM,KAAK,GAAG,WAAW,OAAO;AAChC;AAAA,IACF;AAAA,EACF;AAOA,MAAI,UAAU,OAAO,SAAS,SAAS;AACrC,YAAQ,MAAM,IAAI,CAAC,MAAM,sCAAsC,KAAK;AAAA,EACtE;AAEA,SAAO;AACT;AAEA,MAAM,UAAU,uBAAuB,EAAE,eAAe,OAAO,GAAG,IAAI;AACtE,MAAM,UAAU,uBAAuB,EAAE,eAAe,OAAO,GAAG,IAAI;",
4
+ "sourcesContent": ["/**\n * Some parts adapted from react-native-web\n * Copyright (c) Nicolas Gallagher licensed under the MIT license.\n */\n\nimport { StyleObject, simpleHash } from '@tamagui/helpers'\n\nimport { getConfig } from '../config.js'\nimport type { TamaguiInternalConfig, ViewStyleWithPseudos } from '../types.js'\nimport { defaultOffset } from './defaultOffset.js'\nimport { normalizeValueWithProperty } from './normalizeValueWithProperty.js'\nimport { PseudoDescriptor, pseudoDescriptors } from './pseudoDescriptors.js'\n\n// refactor this file away next...\n\n// matching order of the below *0\nconst pseudosOrdered = [\n pseudoDescriptors.hoverStyle,\n pseudoDescriptors.pressStyle,\n pseudoDescriptors.focusStyle,\n]\n\nexport function getStylesAtomic(stylesIn: ViewStyleWithPseudos) {\n // performance optimization\n if (!(stylesIn.hoverStyle || stylesIn.pressStyle || stylesIn.focusStyle)) {\n return getAtomicStyle(stylesIn)\n }\n\n // only for pseudos\n const { hoverStyle, pressStyle, focusStyle, ...base } = stylesIn\n let res: StyleObject[] = []\n // *1 order matched to *0\n for (const [index, style] of [hoverStyle, pressStyle, focusStyle, base].entries()) {\n if (!style) continue\n const pseudo = pseudosOrdered[index]\n res = [...res, ...getAtomicStyle(style, pseudo)]\n }\n return res\n}\n\nexport function getAtomicStyle(\n style: ViewStyleWithPseudos,\n pseudo?: PseudoDescriptor\n): StyleObject[] {\n if (!style) return []\n if (process.env.NODE_ENV === 'development') {\n if (!style || typeof style !== 'object') {\n throw new Error(`Wrong style type: \"${typeof style}\": ${style}`)\n }\n }\n return generateAtomicStyles(style, pseudo)\n}\n\nlet conf: TamaguiInternalConfig\n\nconst generateAtomicStyles = (\n styleIn: ViewStyleWithPseudos,\n pseudo?: PseudoDescriptor\n): StyleObject[] => {\n conf = conf || getConfig()\n\n // were converting to css styles\n const style = styleIn as Record<string, string | null | undefined>\n\n // transform\n if (style.transform && Array.isArray(style.transform)) {\n style.transform = style.transform\n .map(\n // { scale: 2 } => 'scale(2)'\n // { translateX: 20 } => 'translateX(20px)'\n // { matrix: [1,2,3,4,5,6] } => 'matrix(1,2,3,4,5,6)'\n (transform) => {\n const type = Object.keys(transform)[0]\n const value = transform[type]\n if (type === 'matrix' || type === 'matrix3d') {\n return `${type}(${value.join(',')})`\n }\n return `${type}(${normalizeValueWithProperty(value, type)})`\n }\n )\n .join(' ')\n }\n\n styleToCSS(style)\n\n const out: StyleObject[] = []\n for (const key in style) {\n const value = normalizeValueWithProperty(style[key], key)\n if (value == null || value == undefined) continue\n\n let hash: string\n if (presetHashes[value]) {\n hash = value as string\n } else {\n hash = simpleHash(`${value}`)\n }\n\n const pseudoPrefix = pseudo ? `0${pseudo.name}-` : ''\n const shortProp = conf.inverseShorthands[key] || key\n const identifier = `_${shortProp}-${pseudoPrefix}${hash}`\n const rules = createAtomicRules(identifier, key, value, pseudo)\n const styleObject: StyleObject = {\n property: key,\n pseudo: pseudo?.name as any,\n value,\n identifier,\n rules,\n }\n out.push(styleObject)\n }\n\n if (process.env.NODE_ENV === 'development' && process.env.TAMAGUI_DEBUG) {\n // when Animated.Value gets passed into Tamagui problems are caused this helps debug\n if (\n out.find((x) => x.property === 'transform' && x.value.includes(`[object Object]`))\n ) {\n // rome-ignore lint/suspicious/noDebugger: only dev\n debugger\n }\n }\n\n return out\n}\n\nconst presetHashes = {\n none: true,\n}\n\nexport function styleToCSS(style: Record<string, any>) {\n // box-shadow\n const { shadowOffset, shadowRadius, shadowColor } = style\n if (style.shadowRadius !== undefined) {\n const offset = shadowOffset || defaultOffset\n const shadow = `${normalizeValueWithProperty(\n offset.width\n )} ${normalizeValueWithProperty(offset.height)} ${normalizeValueWithProperty(\n shadowRadius\n )} ${shadowColor}`\n style.boxShadow = style.boxShadow ? `${style.boxShadow}, ${shadow}` : shadow\n style.shadowOffset = undefined\n style.shadowRadius = undefined\n style.shadowColor = undefined\n }\n\n // text-shadow\n const { textShadowColor, textShadowOffset, textShadowRadius } = style\n if (textShadowColor || textShadowOffset || textShadowRadius) {\n const { height, width } = textShadowOffset || defaultOffset\n const radius = textShadowRadius || 0\n const color = normalizeValueWithProperty(textShadowColor, 'textShadowColor')\n if (color && (height !== 0 || width !== 0 || radius !== 0)) {\n const blurRadius = normalizeValueWithProperty(radius)\n const offsetX = normalizeValueWithProperty(width)\n const offsetY = normalizeValueWithProperty(height)\n style.textShadow = `${offsetX} ${offsetY} ${blurRadius} ${color}`\n }\n style.textShadowColor = undefined\n style.textShadowOffset = undefined\n style.textShadowRadius = undefined\n }\n}\n\nfunction createDeclarationBlock(style: Record<string, any>, important = false) {\n let next = ''\n for (const key in style) {\n const prop = hyphenateStyleName(key)\n const value = style[key]\n next += `${prop}:${value}${important ? ' !important' : ''};`\n }\n return `{${next}}`\n}\n\nconst hcache = {}\nconst toHyphenLower = (match: string) => `-${match.toLowerCase()}`\nconst hyphenateStyleName = (key: string) => {\n let val = hcache[key]\n if (val) return val\n hcache[key] = val = key.replace(/[A-Z]/g, toHyphenLower)\n return val\n}\n\nconst pseudoSelectorPrefixes = (() => {\n const res: Record<string, string> = {}\n for (const key in pseudoDescriptors) {\n const pseudo = pseudoDescriptors[key]\n res[pseudo.name] = `${[...Array(pseudo.priority)].map(() => ':root').join('')} `\n }\n return res\n})()\n\nfunction createAtomicRules(\n identifier: string,\n property: string,\n value: any,\n pseudo?: PseudoDescriptor\n): string[] {\n const selector = pseudo\n ? `${pseudoSelectorPrefixes[pseudo.name]} .${identifier}:${pseudo.name}`\n : `.${identifier}`\n const important = !!pseudo\n\n let rules: string[] = []\n\n // Handle non-standard properties and object values that require multiple\n // CSS rules to be created.\n switch (property) {\n // Equivalent to using '::placeholder'\n case 'placeholderTextColor': {\n const block = createDeclarationBlock({ color: value, opacity: 1 }, important)\n rules.push(`${selector}::placeholder${block}`)\n break\n }\n\n // all webkit prefixed rules\n case 'backgroundClip':\n case 'userSelect': {\n const propertyCapitalized = `${property[0].toUpperCase()}${property.slice(1)}`\n const webkitProperty = `Webkit${propertyCapitalized}`\n const block = createDeclarationBlock(\n { [property]: value, [webkitProperty]: value },\n important\n )\n rules.push(`${selector}${block}`)\n break\n }\n\n // Polyfill for additional 'pointer-events' values\n case 'pointerEvents': {\n let finalValue = value\n if (value === 'auto' || value === 'box-only') {\n finalValue = 'auto'\n if (value === 'box-only') {\n rules.push(`${selector}>*${boxOnly}`)\n }\n } else if (value === 'none' || value === 'box-none') {\n finalValue = 'none'\n if (value === 'box-none') {\n rules.push(`${selector}>*${boxNone}`)\n }\n }\n const block = createDeclarationBlock({ pointerEvents: finalValue }, true)\n rules.push(`${selector}${block}`)\n break\n }\n\n default: {\n const block = createDeclarationBlock({ [property]: value }, important)\n rules.push(`${selector}${block}`)\n break\n }\n }\n\n // hover styles need to be conditional\n // perhaps this can be generalized but for now lets just shortcut\n // and hardcode for hover styles, if we need to later we can\n // WEIRD SYNTAX, SEE:\n // https://stackoverflow.com/questions/40532204/media-query-for-devices-supporting-hover\n if (pseudo && pseudo.name === 'hover') {\n rules = rules.map((r) => `@media not all and (hover: none) { ${r} }`)\n }\n\n return rules\n}\n\nconst boxNone = createDeclarationBlock({ pointerEvents: 'auto' }, true)\nconst boxOnly = createDeclarationBlock({ pointerEvents: 'none' }, true)\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/Stack.tsx"],
4
- "sourcesContent": ["import type { View } from 'react-native'\n\nimport { stackDefaultStyles } from '../constants/constants.js'\nimport { createComponent } from '../createComponent.js'\nimport type { StackProps, StackPropsBase } from '../types.js'\n\nexport const Stack = createComponent<StackProps, View, StackPropsBase>({\n componentName: 'Stack',\n acceptsClassName: true,\n defaultProps: {\n ...stackDefaultStyles,\n flexDirection: 'column',\n },\n})\n\n// test types\n// export const YStack = styled(Stack, {\n// flexDirection: 'column',\n// })\n// // test types\n// const x00 = <Stack missing={0} /> // should err\n// const x0 = <YStack missing={0} /> // should err\n// const x1 = (props: StackProps) => <YStack {...props} />\n// type ys = typeof YStack\n// type ysv = ys extends StaticComponent<any, infer V> ? V : unknown\n"],
5
- "mappings": "AAEA,SAAS,0BAA0B;AACnC,SAAS,uBAAuB;AAGzB,MAAM,QAAQ,gBAAkD;AAAA,EACrE,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,cAAc;AAAA,IACZ,GAAG;AAAA,IACH,eAAe;AAAA,EACjB;AACF,CAAC;",
4
+ "sourcesContent": ["import { stackDefaultStyles } from '../constants/constants.js'\nimport { createComponent } from '../createComponent.js'\nimport type { StackProps, StackPropsBase } from '../types.js'\n\nexport const Stack = createComponent<\n StackProps,\n React.Component<StackProps>,\n StackPropsBase\n>({\n componentName: 'Stack',\n acceptsClassName: true,\n defaultProps: {\n ...stackDefaultStyles,\n flexDirection: 'column',\n },\n})\n\n// test types\n// export const YStack = styled(Stack, {\n// flexDirection: 'column',\n// })\n// // test types\n// const x00 = <Stack missing={0} /> // should err\n// const x0 = <YStack missing={0} /> // should err\n// const x1 = (props: StackProps) => <YStack {...props} />\n// type ys = typeof YStack\n// type ysv = ys extends StaticComponent<any, infer V> ? V : unknown\n"],
5
+ "mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,uBAAuB;AAGzB,MAAM,QAAQ,gBAInB;AAAA,EACA,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,cAAc;AAAA,IACZ,GAAG;AAAA,IACH,eAAe;AAAA,EACjB;AACF,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/Stack.tsx"],
4
- "sourcesContent": ["import type { View } from 'react-native'\n\nimport { stackDefaultStyles } from '../constants/constants.js'\nimport { createComponent } from '../createComponent.js'\nimport type { StackProps, StackPropsBase } from '../types.js'\n\nexport const Stack = createComponent<StackProps, View, StackPropsBase>({\n componentName: 'Stack',\n acceptsClassName: true,\n defaultProps: {\n ...stackDefaultStyles,\n flexDirection: 'column',\n },\n})\n\n// test types\n// export const YStack = styled(Stack, {\n// flexDirection: 'column',\n// })\n// // test types\n// const x00 = <Stack missing={0} /> // should err\n// const x0 = <YStack missing={0} /> // should err\n// const x1 = (props: StackProps) => <YStack {...props} />\n// type ys = typeof YStack\n// type ysv = ys extends StaticComponent<any, infer V> ? V : unknown\n"],
5
- "mappings": "AAEA,SAAS,0BAA0B;AACnC,SAAS,uBAAuB;AAGzB,MAAM,QAAQ,gBAAkD;AAAA,EACrE,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,cAAc;AAAA,IACZ,GAAG;AAAA,IACH,eAAe;AAAA,EACjB;AACF,CAAC;",
4
+ "sourcesContent": ["import { stackDefaultStyles } from '../constants/constants.js'\nimport { createComponent } from '../createComponent.js'\nimport type { StackProps, StackPropsBase } from '../types.js'\n\nexport const Stack = createComponent<\n StackProps,\n React.Component<StackProps>,\n StackPropsBase\n>({\n componentName: 'Stack',\n acceptsClassName: true,\n defaultProps: {\n ...stackDefaultStyles,\n flexDirection: 'column',\n },\n})\n\n// test types\n// export const YStack = styled(Stack, {\n// flexDirection: 'column',\n// })\n// // test types\n// const x00 = <Stack missing={0} /> // should err\n// const x0 = <YStack missing={0} /> // should err\n// const x1 = (props: StackProps) => <YStack {...props} />\n// type ys = typeof YStack\n// type ysv = ys extends StaticComponent<any, infer V> ? V : unknown\n"],
5
+ "mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,uBAAuB;AAGzB,MAAM,QAAQ,gBAInB;AAAA,EACA,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,cAAc;AAAA,IACZ,GAAG;AAAA,IACH,eAAe;AAAA,EACjB;AACF,CAAC;",
6
6
  "names": []
7
7
  }
@@ -7,63 +7,65 @@ const ellipseStyle = {
7
7
  textOverflow: "ellipsis",
8
8
  whiteSpace: "nowrap"
9
9
  };
10
- const Text = createComponent({
11
- componentName: "Text",
12
- acceptsClassName: true,
13
- isText: true,
14
- defaultProps: {
15
- // @ts-ignore
16
- display: "flex",
17
- fontFamily: "System",
18
- ...isWeb ? {
19
- display: "inline",
20
- boxSizing: "border-box",
21
- wordWrap: "break-word",
22
- margin: 0
23
- } : {
24
- suppressHighlighting: true
25
- }
26
- },
27
- inlineWhenUnflattened: /* @__PURE__ */ new Set(["fontFamily"]),
28
- variants: {
29
- ...isWeb && {
30
- numberOfLines: {
31
- 1: ellipseStyle,
32
- ":number": (numberOfLines) => numberOfLines >= 1 ? {
33
- WebkitLineClamp: numberOfLines,
34
- WebkitBoxOrient: "vertical",
35
- display: "-webkit-box",
36
- overflow: "hidden"
37
- } : null
10
+ const Text = createComponent(
11
+ {
12
+ componentName: "Text",
13
+ acceptsClassName: true,
14
+ isText: true,
15
+ defaultProps: {
16
+ // @ts-ignore
17
+ display: "flex",
18
+ fontFamily: "System",
19
+ ...isWeb ? {
20
+ display: "inline",
21
+ boxSizing: "border-box",
22
+ wordWrap: "break-word",
23
+ margin: 0
24
+ } : {
25
+ suppressHighlighting: true
38
26
  }
39
27
  },
40
- // ??
41
- ellipsizeMode: {
42
- "...": () => null
43
- },
44
- selectable: {
45
- true: {
46
- userSelect: "text",
47
- cursor: "text"
28
+ inlineWhenUnflattened: /* @__PURE__ */ new Set(["fontFamily"]),
29
+ variants: {
30
+ ...isWeb && {
31
+ numberOfLines: {
32
+ 1: ellipseStyle,
33
+ ":number": (numberOfLines) => numberOfLines >= 1 ? {
34
+ WebkitLineClamp: numberOfLines,
35
+ WebkitBoxOrient: "vertical",
36
+ display: "-webkit-box",
37
+ overflow: "hidden"
38
+ } : null
39
+ }
40
+ },
41
+ // ??
42
+ ellipsizeMode: {
43
+ "...": () => null
48
44
  },
49
- false: {
50
- userSelect: "none",
51
- cursor: "default"
45
+ selectable: {
46
+ true: {
47
+ userSelect: "text",
48
+ cursor: "text"
49
+ },
50
+ false: {
51
+ userSelect: "none",
52
+ cursor: "default"
53
+ }
54
+ },
55
+ ellipse: {
56
+ true: isWeb ? ellipseStyle : {
57
+ numberOfLines: 1,
58
+ lineBreakMode: "clip"
59
+ }
52
60
  }
53
61
  },
54
- ellipse: {
55
- true: isWeb ? ellipseStyle : {
56
- numberOfLines: 1,
57
- lineBreakMode: "clip"
58
- }
62
+ deoptProps: new Set(isWeb ? [] : ["ellipse"]),
63
+ validStyles: {
64
+ ...validStyles,
65
+ ...stylePropsTextOnly
59
66
  }
60
- },
61
- deoptProps: new Set(isWeb ? [] : ["ellipse"]),
62
- validStyles: {
63
- ...validStyles,
64
- ...stylePropsTextOnly
65
67
  }
66
- });
68
+ );
67
69
  export {
68
70
  Text
69
71
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/Text.tsx"],
4
- "sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport { stylePropsTextOnly, validStyles } from '@tamagui/helpers'\nimport type { Text as TextView } from 'react-native'\n\nimport { createComponent } from '../createComponent.js'\nimport { TextProps, TextPropsBase } from '../types.js'\n\nconst ellipseStyle = {\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}\n\nexport const Text = createComponent<TextProps, TextView, TextPropsBase>({\n componentName: 'Text',\n acceptsClassName: true,\n isText: true,\n\n defaultProps: {\n // @ts-ignore\n display: 'flex',\n fontFamily: 'System',\n ...(isWeb\n ? {\n display: 'inline',\n boxSizing: 'border-box',\n wordWrap: 'break-word',\n margin: 0,\n }\n : {\n suppressHighlighting: true,\n }),\n },\n\n inlineWhenUnflattened: new Set(['fontFamily']),\n\n variants: {\n ...(isWeb && {\n numberOfLines: {\n 1: ellipseStyle,\n\n ':number': (numberOfLines) =>\n numberOfLines >= 1\n ? {\n WebkitLineClamp: numberOfLines,\n WebkitBoxOrient: 'vertical',\n display: '-webkit-box',\n overflow: 'hidden',\n }\n : null,\n },\n }),\n\n // ??\n ellipsizeMode: {\n '...': () => null,\n },\n\n selectable: {\n true: {\n userSelect: 'text',\n cursor: 'text',\n },\n false: {\n userSelect: 'none',\n cursor: 'default',\n },\n },\n\n ellipse: {\n true: isWeb\n ? ellipseStyle\n : {\n numberOfLines: 1,\n lineBreakMode: 'clip',\n },\n },\n },\n\n deoptProps: new Set(isWeb ? [] : ['ellipse']),\n\n validStyles: {\n ...validStyles,\n ...stylePropsTextOnly,\n },\n})\n"],
5
- "mappings": "AAAA,SAAS,aAAa;AACtB,SAAS,oBAAoB,mBAAmB;AAGhD,SAAS,uBAAuB;AAGhC,MAAM,eAAe;AAAA,EACnB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AACd;AAEO,MAAM,OAAO,gBAAoD;AAAA,EACtE,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EAER,cAAc;AAAA;AAAA,IAEZ,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,GAAI,QACA;AAAA,MACE,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,IACV,IACA;AAAA,MACE,sBAAsB;AAAA,IACxB;AAAA,EACN;AAAA,EAEA,uBAAuB,oBAAI,IAAI,CAAC,YAAY,CAAC;AAAA,EAE7C,UAAU;AAAA,IACR,GAAI,SAAS;AAAA,MACX,eAAe;AAAA,QACb,GAAG;AAAA,QAEH,WAAW,CAAC,kBACV,iBAAiB,IACb;AAAA,UACE,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,UACjB,SAAS;AAAA,UACT,UAAU;AAAA,QACZ,IACA;AAAA,MACR;AAAA,IACF;AAAA;AAAA,IAGA,eAAe;AAAA,MACb,OAAO,MAAM;AAAA,IACf;AAAA,IAEA,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,MACA,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IAEA,SAAS;AAAA,MACP,MAAM,QACF,eACA;AAAA,QACE,eAAe;AAAA,QACf,eAAe;AAAA,MACjB;AAAA,IACN;AAAA,EACF;AAAA,EAEA,YAAY,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AAAA,EAE5C,aAAa;AAAA,IACX,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF,CAAC;",
4
+ "sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport { stylePropsTextOnly, validStyles } from '@tamagui/helpers'\n\nimport { createComponent } from '../createComponent.js'\nimport { TextProps, TextPropsBase } from '../types.js'\n\nconst ellipseStyle = {\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}\n\nexport const Text = createComponent<TextProps, React.Component<TextProps>, TextPropsBase>(\n {\n componentName: 'Text',\n acceptsClassName: true,\n isText: true,\n\n defaultProps: {\n // @ts-ignore\n display: 'flex',\n fontFamily: 'System',\n ...(isWeb\n ? {\n display: 'inline',\n boxSizing: 'border-box',\n wordWrap: 'break-word',\n margin: 0,\n }\n : {\n suppressHighlighting: true,\n }),\n },\n\n inlineWhenUnflattened: new Set(['fontFamily']),\n\n variants: {\n ...(isWeb && {\n numberOfLines: {\n 1: ellipseStyle,\n\n ':number': (numberOfLines) =>\n numberOfLines >= 1\n ? {\n WebkitLineClamp: numberOfLines,\n WebkitBoxOrient: 'vertical',\n display: '-webkit-box',\n overflow: 'hidden',\n }\n : null,\n },\n }),\n\n // ??\n ellipsizeMode: {\n '...': () => null,\n },\n\n selectable: {\n true: {\n userSelect: 'text',\n cursor: 'text',\n },\n false: {\n userSelect: 'none',\n cursor: 'default',\n },\n },\n\n ellipse: {\n true: isWeb\n ? ellipseStyle\n : {\n numberOfLines: 1,\n lineBreakMode: 'clip',\n },\n },\n },\n\n deoptProps: new Set(isWeb ? [] : ['ellipse']),\n\n validStyles: {\n ...validStyles,\n ...stylePropsTextOnly,\n },\n }\n)\n"],
5
+ "mappings": "AAAA,SAAS,aAAa;AACtB,SAAS,oBAAoB,mBAAmB;AAEhD,SAAS,uBAAuB;AAGhC,MAAM,eAAe;AAAA,EACnB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AACd;AAEO,MAAM,OAAO;AAAA,EAClB;AAAA,IACE,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,QAAQ;AAAA,IAER,cAAc;AAAA;AAAA,MAEZ,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,GAAI,QACA;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,MACV,IACA;AAAA,QACE,sBAAsB;AAAA,MACxB;AAAA,IACN;AAAA,IAEA,uBAAuB,oBAAI,IAAI,CAAC,YAAY,CAAC;AAAA,IAE7C,UAAU;AAAA,MACR,GAAI,SAAS;AAAA,QACX,eAAe;AAAA,UACb,GAAG;AAAA,UAEH,WAAW,CAAC,kBACV,iBAAiB,IACb;AAAA,YACE,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,SAAS;AAAA,YACT,UAAU;AAAA,UACZ,IACA;AAAA,QACR;AAAA,MACF;AAAA;AAAA,MAGA,eAAe;AAAA,QACb,OAAO,MAAM;AAAA,MACf;AAAA,MAEA,YAAY;AAAA,QACV,MAAM;AAAA,UACJ,YAAY;AAAA,UACZ,QAAQ;AAAA,QACV;AAAA,QACA,OAAO;AAAA,UACL,YAAY;AAAA,UACZ,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MAEA,SAAS;AAAA,QACP,MAAM,QACF,eACA;AAAA,UACE,eAAe;AAAA,UACf,eAAe;AAAA,QACjB;AAAA,MACN;AAAA,IACF;AAAA,IAEA,YAAY,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AAAA,IAE5C,aAAa;AAAA,MACX,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -7,63 +7,65 @@ const ellipseStyle = {
7
7
  textOverflow: "ellipsis",
8
8
  whiteSpace: "nowrap"
9
9
  };
10
- const Text = createComponent({
11
- componentName: "Text",
12
- acceptsClassName: true,
13
- isText: true,
14
- defaultProps: {
15
- // @ts-ignore
16
- display: "flex",
17
- fontFamily: "System",
18
- ...isWeb ? {
19
- display: "inline",
20
- boxSizing: "border-box",
21
- wordWrap: "break-word",
22
- margin: 0
23
- } : {
24
- suppressHighlighting: true
25
- }
26
- },
27
- inlineWhenUnflattened: /* @__PURE__ */ new Set(["fontFamily"]),
28
- variants: {
29
- ...isWeb && {
30
- numberOfLines: {
31
- 1: ellipseStyle,
32
- ":number": (numberOfLines) => numberOfLines >= 1 ? {
33
- WebkitLineClamp: numberOfLines,
34
- WebkitBoxOrient: "vertical",
35
- display: "-webkit-box",
36
- overflow: "hidden"
37
- } : null
10
+ const Text = createComponent(
11
+ {
12
+ componentName: "Text",
13
+ acceptsClassName: true,
14
+ isText: true,
15
+ defaultProps: {
16
+ // @ts-ignore
17
+ display: "flex",
18
+ fontFamily: "System",
19
+ ...isWeb ? {
20
+ display: "inline",
21
+ boxSizing: "border-box",
22
+ wordWrap: "break-word",
23
+ margin: 0
24
+ } : {
25
+ suppressHighlighting: true
38
26
  }
39
27
  },
40
- // ??
41
- ellipsizeMode: {
42
- "...": () => null
43
- },
44
- selectable: {
45
- true: {
46
- userSelect: "text",
47
- cursor: "text"
28
+ inlineWhenUnflattened: /* @__PURE__ */ new Set(["fontFamily"]),
29
+ variants: {
30
+ ...isWeb && {
31
+ numberOfLines: {
32
+ 1: ellipseStyle,
33
+ ":number": (numberOfLines) => numberOfLines >= 1 ? {
34
+ WebkitLineClamp: numberOfLines,
35
+ WebkitBoxOrient: "vertical",
36
+ display: "-webkit-box",
37
+ overflow: "hidden"
38
+ } : null
39
+ }
40
+ },
41
+ // ??
42
+ ellipsizeMode: {
43
+ "...": () => null
48
44
  },
49
- false: {
50
- userSelect: "none",
51
- cursor: "default"
45
+ selectable: {
46
+ true: {
47
+ userSelect: "text",
48
+ cursor: "text"
49
+ },
50
+ false: {
51
+ userSelect: "none",
52
+ cursor: "default"
53
+ }
54
+ },
55
+ ellipse: {
56
+ true: isWeb ? ellipseStyle : {
57
+ numberOfLines: 1,
58
+ lineBreakMode: "clip"
59
+ }
52
60
  }
53
61
  },
54
- ellipse: {
55
- true: isWeb ? ellipseStyle : {
56
- numberOfLines: 1,
57
- lineBreakMode: "clip"
58
- }
62
+ deoptProps: new Set(isWeb ? [] : ["ellipse"]),
63
+ validStyles: {
64
+ ...validStyles,
65
+ ...stylePropsTextOnly
59
66
  }
60
- },
61
- deoptProps: new Set(isWeb ? [] : ["ellipse"]),
62
- validStyles: {
63
- ...validStyles,
64
- ...stylePropsTextOnly
65
67
  }
66
- });
68
+ );
67
69
  export {
68
70
  Text
69
71
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/Text.tsx"],
4
- "sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport { stylePropsTextOnly, validStyles } from '@tamagui/helpers'\nimport type { Text as TextView } from 'react-native'\n\nimport { createComponent } from '../createComponent.js'\nimport { TextProps, TextPropsBase } from '../types.js'\n\nconst ellipseStyle = {\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}\n\nexport const Text = createComponent<TextProps, TextView, TextPropsBase>({\n componentName: 'Text',\n acceptsClassName: true,\n isText: true,\n\n defaultProps: {\n // @ts-ignore\n display: 'flex',\n fontFamily: 'System',\n ...(isWeb\n ? {\n display: 'inline',\n boxSizing: 'border-box',\n wordWrap: 'break-word',\n margin: 0,\n }\n : {\n suppressHighlighting: true,\n }),\n },\n\n inlineWhenUnflattened: new Set(['fontFamily']),\n\n variants: {\n ...(isWeb && {\n numberOfLines: {\n 1: ellipseStyle,\n\n ':number': (numberOfLines) =>\n numberOfLines >= 1\n ? {\n WebkitLineClamp: numberOfLines,\n WebkitBoxOrient: 'vertical',\n display: '-webkit-box',\n overflow: 'hidden',\n }\n : null,\n },\n }),\n\n // ??\n ellipsizeMode: {\n '...': () => null,\n },\n\n selectable: {\n true: {\n userSelect: 'text',\n cursor: 'text',\n },\n false: {\n userSelect: 'none',\n cursor: 'default',\n },\n },\n\n ellipse: {\n true: isWeb\n ? ellipseStyle\n : {\n numberOfLines: 1,\n lineBreakMode: 'clip',\n },\n },\n },\n\n deoptProps: new Set(isWeb ? [] : ['ellipse']),\n\n validStyles: {\n ...validStyles,\n ...stylePropsTextOnly,\n },\n})\n"],
5
- "mappings": "AAAA,SAAS,aAAa;AACtB,SAAS,oBAAoB,mBAAmB;AAGhD,SAAS,uBAAuB;AAGhC,MAAM,eAAe;AAAA,EACnB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AACd;AAEO,MAAM,OAAO,gBAAoD;AAAA,EACtE,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EAER,cAAc;AAAA;AAAA,IAEZ,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,GAAI,QACA;AAAA,MACE,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,IACV,IACA;AAAA,MACE,sBAAsB;AAAA,IACxB;AAAA,EACN;AAAA,EAEA,uBAAuB,oBAAI,IAAI,CAAC,YAAY,CAAC;AAAA,EAE7C,UAAU;AAAA,IACR,GAAI,SAAS;AAAA,MACX,eAAe;AAAA,QACb,GAAG;AAAA,QAEH,WAAW,CAAC,kBACV,iBAAiB,IACb;AAAA,UACE,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,UACjB,SAAS;AAAA,UACT,UAAU;AAAA,QACZ,IACA;AAAA,MACR;AAAA,IACF;AAAA;AAAA,IAGA,eAAe;AAAA,MACb,OAAO,MAAM;AAAA,IACf;AAAA,IAEA,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,MACA,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IAEA,SAAS;AAAA,MACP,MAAM,QACF,eACA;AAAA,QACE,eAAe;AAAA,QACf,eAAe;AAAA,MACjB;AAAA,IACN;AAAA,EACF;AAAA,EAEA,YAAY,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AAAA,EAE5C,aAAa;AAAA,IACX,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF,CAAC;",
4
+ "sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport { stylePropsTextOnly, validStyles } from '@tamagui/helpers'\n\nimport { createComponent } from '../createComponent.js'\nimport { TextProps, TextPropsBase } from '../types.js'\n\nconst ellipseStyle = {\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}\n\nexport const Text = createComponent<TextProps, React.Component<TextProps>, TextPropsBase>(\n {\n componentName: 'Text',\n acceptsClassName: true,\n isText: true,\n\n defaultProps: {\n // @ts-ignore\n display: 'flex',\n fontFamily: 'System',\n ...(isWeb\n ? {\n display: 'inline',\n boxSizing: 'border-box',\n wordWrap: 'break-word',\n margin: 0,\n }\n : {\n suppressHighlighting: true,\n }),\n },\n\n inlineWhenUnflattened: new Set(['fontFamily']),\n\n variants: {\n ...(isWeb && {\n numberOfLines: {\n 1: ellipseStyle,\n\n ':number': (numberOfLines) =>\n numberOfLines >= 1\n ? {\n WebkitLineClamp: numberOfLines,\n WebkitBoxOrient: 'vertical',\n display: '-webkit-box',\n overflow: 'hidden',\n }\n : null,\n },\n }),\n\n // ??\n ellipsizeMode: {\n '...': () => null,\n },\n\n selectable: {\n true: {\n userSelect: 'text',\n cursor: 'text',\n },\n false: {\n userSelect: 'none',\n cursor: 'default',\n },\n },\n\n ellipse: {\n true: isWeb\n ? ellipseStyle\n : {\n numberOfLines: 1,\n lineBreakMode: 'clip',\n },\n },\n },\n\n deoptProps: new Set(isWeb ? [] : ['ellipse']),\n\n validStyles: {\n ...validStyles,\n ...stylePropsTextOnly,\n },\n }\n)\n"],
5
+ "mappings": "AAAA,SAAS,aAAa;AACtB,SAAS,oBAAoB,mBAAmB;AAEhD,SAAS,uBAAuB;AAGhC,MAAM,eAAe;AAAA,EACnB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AACd;AAEO,MAAM,OAAO;AAAA,EAClB;AAAA,IACE,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,QAAQ;AAAA,IAER,cAAc;AAAA;AAAA,MAEZ,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,GAAI,QACA;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,MACV,IACA;AAAA,QACE,sBAAsB;AAAA,MACxB;AAAA,IACN;AAAA,IAEA,uBAAuB,oBAAI,IAAI,CAAC,YAAY,CAAC;AAAA,IAE7C,UAAU;AAAA,MACR,GAAI,SAAS;AAAA,QACX,eAAe;AAAA,UACb,GAAG;AAAA,UAEH,WAAW,CAAC,kBACV,iBAAiB,IACb;AAAA,YACE,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,SAAS;AAAA,YACT,UAAU;AAAA,UACZ,IACA;AAAA,QACR;AAAA,MACF;AAAA;AAAA,MAGA,eAAe;AAAA,QACb,OAAO,MAAM;AAAA,MACf;AAAA,MAEA,YAAY;AAAA,QACV,MAAM;AAAA,UACJ,YAAY;AAAA,UACZ,QAAQ;AAAA,QACV;AAAA,QACA,OAAO;AAAA,UACL,YAAY;AAAA,UACZ,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MAEA,SAAS;AAAA,QACP,MAAM,QACF,eACA;AAAA,UACE,eAAe;AAAA,UACf,eAAe;AAAA,QACjB;AAAA,MACN;AAAA,IACF;AAAA,IAEA,YAAY,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AAAA,IAE5C,aAAa;AAAA,MACX,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/web",
3
- "version": "1.7.9",
3
+ "version": "1.7.11",
4
4
  "source": "src/index.ts",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -27,19 +27,19 @@
27
27
  "reset.css"
28
28
  ],
29
29
  "dependencies": {
30
- "@tamagui/compose-refs": "1.7.9",
31
- "@tamagui/constants": "1.7.9",
32
- "@tamagui/helpers": "1.7.9",
33
- "@tamagui/normalize-css-color": "1.7.9",
34
- "@tamagui/use-did-finish-ssr": "1.7.9",
35
- "@tamagui/use-event": "1.7.9",
36
- "@tamagui/use-force-update": "1.7.9"
30
+ "@tamagui/compose-refs": "1.7.11",
31
+ "@tamagui/constants": "1.7.11",
32
+ "@tamagui/helpers": "1.7.11",
33
+ "@tamagui/normalize-css-color": "1.7.11",
34
+ "@tamagui/use-did-finish-ssr": "1.7.11",
35
+ "@tamagui/use-event": "1.7.11",
36
+ "@tamagui/use-force-update": "1.7.11"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "react": "*"
40
40
  },
41
41
  "devDependencies": {
42
- "@tamagui/build": "1.7.9",
42
+ "@tamagui/build": "1.7.11",
43
43
  "@testing-library/react": "^13.4.0",
44
44
  "csstype": "^3.0.10",
45
45
  "react": "^18.2.0",
@@ -200,6 +200,12 @@ export function createTamagui<Conf extends CreateTamaguiProps>(
200
200
 
201
201
  const shorthands = configIn.shorthands || {}
202
202
 
203
+ if (process.env.TAMAGUI_TARGET === 'native') {
204
+ // abuse shorthands for remapping the native style gap keys
205
+ shorthands.gapRow ??= 'rowGap'
206
+ shorthands.gapColumn ??= 'columnGap'
207
+ }
208
+
203
209
  const config: TamaguiInternalConfig = {
204
210
  fontLanguages: [],
205
211
  animations: {} as any,