@tamagui/to-tailwind 0.0.0-bootstrap.0 → 3.0.0-beta.643.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","names":["canonicalShorthands"],"sources":["esm/transform.js"],"sourcesContent":["import { parse } from \"@babel/parser\";\nimport _traverse from \"@babel/traverse\";\nimport _generate from \"@babel/generator\";\nimport * as t from \"@babel/types\";\nimport {\n defaultMediaKeys,\n createModifierRegistry,\n fontWeightNames,\n formatCandidate,\n getTokenCategory,\n propToTailwindPrefix,\n parseValue,\n standaloneValueProps,\n v6RemovedThemeNames,\n v6ThemeNameReplacements\n} from \"@tamagui/style-grammar/tooling\";\nimport { componentToTag } from \"./maps/componentToTag\";\nimport { shorthands as canonicalShorthands } from \"@tamagui/shorthands/v4\";\nconst traverse = _traverse.default ?? _traverse;\nconst generate = _generate.default ?? _generate;\nconst defaultShorthands = canonicalShorthands;\nconst removedV6ThemeNames = new Set(v6RemovedThemeNames);\nfunction getV6ThemeName(name) {\n const opacityIndex = name.indexOf(\"/\");\n const baseName = opacityIndex === -1 ? name : name.slice(0, opacityIndex);\n if (removedV6ThemeNames.has(baseName)) return null;\n const mapped = v6ThemeNameReplacements[baseName] ?? baseName;\n return opacityIndex === -1 ? mapped : `${mapped}${name.slice(opacityIndex)}`;\n}\nfunction namesToSet(names) {\n if (!names) return /* @__PURE__ */ new Set();\n if (Array.isArray(names)) return new Set(names);\n if (names instanceof Set) return new Set(names);\n return new Set(Object.keys(names));\n}\nfunction addConfigNames(target, source) {\n if (!source) return;\n for (const key in source) target.add(key);\n}\nfunction createTransformGrammarConfig(options, mediaKeys, shorthands) {\n if (options.grammarConfig) {\n return { ...options.grammarConfig, shorthands, mediaNames: mediaKeys };\n }\n const tokenNames = {};\n const tokenCategories = [\"space\", \"size\", \"radius\", \"zIndex\", \"color\"];\n const fontCategories = [\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"lineHeight\",\n \"letterSpacing\"\n ];\n const authoritative = [\"tokens\", \"fonts\", \"themes\", \"media\", \"shorthands\"].some(\n (key) => Object.prototype.hasOwnProperty.call(options, key)\n );\n if (authoritative) {\n for (const category of [...tokenCategories, ...fontCategories]) {\n tokenNames[category] = /* @__PURE__ */ new Set();\n }\n }\n for (const category of tokenCategories) {\n if (options.tokens?.[category]) {\n const names = tokenNames[category] || /* @__PURE__ */ new Set();\n addConfigNames(names, options.tokens[category]);\n tokenNames[category] = names;\n }\n }\n if (options.fonts) {\n tokenNames.fontFamily ||= /* @__PURE__ */ new Set();\n tokenNames.fontSize ||= /* @__PURE__ */ new Set();\n tokenNames.fontWeight ||= /* @__PURE__ */ new Set();\n tokenNames.lineHeight ||= /* @__PURE__ */ new Set();\n tokenNames.letterSpacing ||= /* @__PURE__ */ new Set();\n for (const familyName in options.fonts) {\n tokenNames.fontFamily.add(familyName);\n const font = options.fonts[familyName];\n addConfigNames(tokenNames.fontSize, font?.size);\n addConfigNames(tokenNames.fontWeight, font?.weight);\n addConfigNames(tokenNames.lineHeight, font?.lineHeight);\n addConfigNames(tokenNames.letterSpacing, font?.letterSpacing);\n }\n }\n const themeNames = /* @__PURE__ */ new Set();\n if (options.themes) {\n tokenNames.color ||= /* @__PURE__ */ new Set();\n for (const themeName in options.themes) {\n themeNames.add(themeName);\n for (const name in options.themes[themeName]) {\n const mapped = getV6ThemeName(name);\n if (mapped) tokenNames.color.add(mapped);\n }\n }\n }\n return {\n shorthands,\n mediaNames: mediaKeys,\n themeNames,\n tokenNames\n };\n}\nfunction findParseError(source) {\n try {\n const ast = parse(source, {\n sourceType: \"module\",\n plugins: [\"jsx\", \"typescript\"],\n errorRecovery: true\n });\n const errs = ast.errors;\n if (errs && errs.length > 0) {\n const e = errs[0];\n const loc = e?.loc ? `${e.loc.line}:${e.loc.column}` : \"?\";\n return `${e?.reasonCode || e?.message || \"parse error\"} at ${loc}`;\n }\n return null;\n } catch (e) {\n return e.message || \"parse error\";\n }\n}\nfunction tamaguiToTailwind(source, options = {}) {\n const { renameComponents = true } = options;\n const mediaKeys = options.grammarConfig?.mediaNames ? namesToSet(options.grammarConfig.mediaNames) : options.media ? new Set(Array.isArray(options.media) ? options.media : Object.keys(options.media)) : new Set(defaultMediaKeys);\n const shorthands = options.grammarConfig?.shorthands ?? options.shorthands ?? defaultShorthands;\n const grammarConfig = createTransformGrammarConfig(options, mediaKeys, shorthands);\n const ctx = {\n mediaKeys,\n componentAllow: new Set(options.components ?? []),\n shorthands,\n grammarConfig,\n modifierRegistry: createModifierRegistry(grammarConfig).registry\n };\n let ast;\n try {\n ast = parse(source, {\n sourceType: \"module\",\n plugins: [\"jsx\", \"typescript\"],\n errorRecovery: true\n });\n } catch {\n return source;\n }\n if (ast.errors && ast.errors.length > 0) {\n return source;\n }\n let didTransform = false;\n traverse(ast, {\n JSXOpeningElement(path) {\n const node = path.node;\n const resolved = resolveTamaguiComponent(path, ctx);\n if (resolved === null) return;\n const { name: componentName, isSimpleKnown, isPlainIdentifier } = resolved;\n if (node.attributes.some((a) => t.isJSXSpreadAttribute(a))) return;\n const hasDynamicClassName = node.attributes.some(\n (attr) => t.isJSXAttribute(attr) && attr.name.name === \"className\" && getStringValue(attr.value) === null\n );\n if (hasDynamicClassName) return;\n const hasClassName = node.attributes.some(\n (attr) => t.isJSXAttribute(attr) && attr.name.name === \"className\"\n );\n const hasNeighboringStyleProp = node.attributes.some((attr) => {\n if (!t.isJSXAttribute(attr) || attr.name.name === \"className\") return false;\n const name = attr.name.name;\n return isConvertibleStyleProp(resolveShorthand(ctx, name));\n });\n if (hasClassName && hasNeighboringStyleProp) return;\n const classes = [];\n const keptAttrs = [];\n let existingClassName = null;\n const blockedLeafKeys = /* @__PURE__ */ new Set();\n for (const a of node.attributes) {\n if (t.isJSXAttribute(a) && a.name.name === \"className\") {\n const v = getStringValue(a.value);\n if (v) {\n for (const tok of v.split(/\\s+/)) {\n if (tok) for (const k of leafKeysOfClassToken(tok)) blockedLeafKeys.add(k);\n }\n }\n }\n }\n const implicitClasses = [];\n if (componentName === \"XStack\") implicitClasses.push(\"flex\", \"flex-row\");\n else if (componentName === \"YStack\") implicitClasses.push(\"flex\", \"flex-col\");\n else if (componentName === \"ZStack\") implicitClasses.push(\"relative\");\n const styleEntries = [];\n for (const attr of node.attributes) {\n if (!t.isJSXAttribute(attr)) {\n keptAttrs.push(attr);\n continue;\n }\n const name = attr.name.name;\n if (name === \"className\") {\n existingClassName = attr;\n continue;\n }\n styleEntries.push({\n attr,\n fullProp: resolveShorthand(ctx, name),\n cls: propValueToClass(ctx, name, attr.value)\n });\n }\n const retainedLeafKeys = new Set(blockedLeafKeys);\n for (const e of styleEntries) {\n if (e.cls === null && isConvertibleStyleProp(e.fullProp)) {\n for (const k of leafKeysOfProp(e.fullProp)) retainedLeafKeys.add(k);\n }\n }\n for (const c of implicitClasses) {\n if (!overlapsSet(leafKeysOfClassToken(c), retainedLeafKeys)) classes.push(c);\n }\n for (const e of styleEntries) {\n if (e.cls !== null && !overlapsSet(leafKeysOfProp(e.fullProp), retainedLeafKeys)) {\n classes.push(e.cls);\n } else {\n keptAttrs.push(e.attr);\n }\n }\n if (classes.length > 0) {\n const classStr = classes.join(\" \");\n if (existingClassName) {\n const existingVal = getStringValue(existingClassName.value);\n if (existingVal !== null) {\n existingClassName.value = t.stringLiteral(\n existingVal ? `${classStr} ${existingVal}` : classStr\n );\n keptAttrs.unshift(existingClassName);\n } else if (t.isJSXExpressionContainer(existingClassName.value) && !t.isJSXEmptyExpression(existingClassName.value.expression)) {\n const expr = existingClassName.value.expression;\n existingClassName.value = t.jsxExpressionContainer(\n t.templateLiteral(\n [\n t.templateElement(\n { raw: `${classStr} `, cooked: `${classStr} ` },\n false\n ),\n t.templateElement({ raw: \"\", cooked: \"\" }, true)\n ],\n [expr]\n )\n );\n keptAttrs.unshift(existingClassName);\n } else {\n keptAttrs.unshift(\n t.jsxAttribute(t.jsxIdentifier(\"className\"), t.stringLiteral(classStr))\n );\n }\n } else {\n keptAttrs.unshift(\n t.jsxAttribute(t.jsxIdentifier(\"className\"), t.stringLiteral(classStr))\n );\n }\n } else if (existingClassName) {\n keptAttrs.unshift(existingClassName);\n }\n node.attributes = keptAttrs;\n if (classes.length > 0) didTransform = true;\n if (renameComponents && isSimpleKnown && isPlainIdentifier) {\n const tag = componentToTag[componentName];\n node.name = t.jsxIdentifier(tag);\n const parent = path.parent;\n if (t.isJSXElement(parent) && parent.closingElement) {\n parent.closingElement.name = t.jsxIdentifier(tag);\n }\n didTransform = true;\n }\n }\n });\n if (!didTransform) return source;\n const output = generate(ast, { retainLines: true, concise: false });\n return output.code;\n}\nconst knownCompoundComponents = /* @__PURE__ */ new Set([\n \"Sheet.Frame\",\n \"Sheet.Overlay\",\n \"Sheet.Handle\",\n \"Sheet.ScrollView\",\n \"Sheet.Container\",\n \"Dialog.Content\",\n \"Dialog.Overlay\",\n \"Popover.Content\",\n \"Tabs.Tab\"\n]);\nfunction isTamaguiSource(source) {\n return source === \"tamagui\" || source.startsWith(\"@tamagui/\");\n}\nfunction resolveTamaguiComponent(path, ctx) {\n const nameNode = path.node.name;\n let baseName;\n let memberChain = [];\n const isPlainIdentifier = t.isJSXIdentifier(nameNode);\n if (t.isJSXIdentifier(nameNode)) {\n baseName = nameNode.name;\n } else if (t.isJSXMemberExpression(nameNode)) {\n const parts = [];\n let cur = nameNode;\n while (t.isJSXMemberExpression(cur)) {\n parts.unshift(cur.property.name);\n cur = cur.object;\n }\n if (!t.isJSXIdentifier(cur)) return null;\n baseName = cur.name;\n memberChain = parts;\n } else {\n return null;\n }\n const binding = path.scope?.getBinding?.(baseName);\n let tamaguiBase;\n if (binding) {\n const bnode = binding.path.node;\n if (t.isImportSpecifier(bnode) || t.isImportDefaultSpecifier(bnode) || t.isImportNamespaceSpecifier(bnode)) {\n const decl = binding.path.parent;\n const source = t.isImportDeclaration(decl) ? String(decl.source.value) : \"\";\n if (!isTamaguiSource(source)) return null;\n if (t.isImportNamespaceSpecifier(bnode)) {\n if (memberChain.length === 0) return null;\n tamaguiBase = memberChain[0];\n memberChain = memberChain.slice(1);\n } else if (t.isImportSpecifier(bnode)) {\n const imported = bnode.imported;\n tamaguiBase = t.isIdentifier(imported) ? imported.name : String(imported.value);\n } else {\n return null;\n }\n } else {\n return null;\n }\n } else {\n tamaguiBase = baseName;\n }\n const name = memberChain.length ? [tamaguiBase, ...memberChain].join(\".\") : tamaguiBase;\n const isSimpleKnown = memberChain.length === 0 && name in componentToTag;\n if (!isSimpleKnown && !knownCompoundComponents.has(name) && !ctx.componentAllow.has(name)) {\n return null;\n }\n return { name, isSimpleKnown, isPlainIdentifier };\n}\nfunction classPrefixOf(token) {\n const noMod = token.slice(token.lastIndexOf(\":\") + 1);\n const core = noMod[0] === \"-\" ? noMod.slice(1) : noMod;\n const dash = core.indexOf(\"-\");\n return dash === -1 ? core : core.slice(0, dash);\n}\nconst leafExpansion = {\n padding: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n paddingHorizontal: [\"paddingLeft\", \"paddingRight\"],\n paddingVertical: [\"paddingTop\", \"paddingBottom\"],\n margin: [\"marginTop\", \"marginRight\", \"marginBottom\", \"marginLeft\"],\n marginHorizontal: [\"marginLeft\", \"marginRight\"],\n marginVertical: [\"marginTop\", \"marginBottom\"],\n inset: [\"top\", \"right\", \"bottom\", \"left\"],\n gap: [\"gap\", \"rowGap\", \"columnGap\"],\n borderWidth: [\n \"borderTopWidth\",\n \"borderRightWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\"\n ],\n borderColor: [\n \"borderTopColor\",\n \"borderRightColor\",\n \"borderBottomColor\",\n \"borderLeftColor\"\n ],\n borderRadius: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\"\n ]\n};\nfunction leafKeysOfProp(fullProp) {\n return leafExpansion[fullProp] ?? [fullProp];\n}\nconst prefixToProp = (() => {\n const m = {};\n for (const [prop, prefix] of Object.entries(propToTailwindPrefix)) {\n if (prefix && !(prefix in m)) m[prefix] = prop;\n }\n return m;\n})();\nfunction leafKeysOfClassToken(token) {\n const prefix = classPrefixOf(token);\n return leafKeysOfProp(prefixToProp[prefix] ?? prefix);\n}\nfunction overlapsSet(keys, set) {\n return keys.some((k) => set.has(k));\n}\nfunction isConvertibleStyleProp(fullProp) {\n return propToTailwindPrefix[fullProp] !== void 0 || fullProp in standaloneValueProps;\n}\nfunction propValueToClass(ctx, propName, value) {\n const fullProp = resolveShorthand(ctx, propName);\n if (propToTailwindPrefix[fullProp] === void 0) return null;\n const strVal = getStringValue(value);\n const numVal = getNumericValue(value);\n if (strVal !== null) {\n const parsed = parseValue(strVal, ctx.modifierRegistry);\n if (!parsed.ok) return null;\n const classes = [];\n if (parsed.value.base !== null) {\n const base = payloadToClass(ctx, fullProp, parsed.value.base, []);\n if (base === null) return null;\n classes.push(base);\n }\n for (const clause of parsed.value.clauses) {\n const conditional = payloadToClass(ctx, fullProp, clause.payload, clause.modifiers);\n if (conditional === null) return null;\n classes.push(conditional);\n }\n return classes.length ? classes.join(\" \") : null;\n }\n if (numVal === null) return null;\n const formatted = formatNumericValue(fullProp, numVal);\n if (formatted === null) return null;\n return formatCandidate(\n {\n prop: fullProp,\n value: formatted.value,\n valueKind: formatted.valueKind,\n modifiers: void 0\n },\n ctx.grammarConfig\n );\n}\nfunction payloadToClass(ctx, fullProp, payload, modifiers) {\n let formatted;\n if (standaloneValueProps[fullProp]?.[payload]) {\n formatted = { value: payload, valueKind: \"enum\" };\n } else {\n formatted = formatStringValue(ctx, fullProp, payload);\n if (formatted === null && /^-?\\d+(?:\\.\\d+)?$/.test(payload)) {\n const category = getTokenCategory(fullProp);\n if (!category || ctx.grammarConfig.tokenNames?.[category] !== void 0) {\n formatted = formatNumericValue(fullProp, Number(payload));\n }\n }\n }\n if (formatted === null) return null;\n return formatCandidate(\n {\n prop: fullProp,\n value: formatted.value,\n valueKind: formatted.valueKind,\n modifiers: modifiers.length ? modifiers : void 0\n },\n ctx.grammarConfig\n );\n}\nfunction getStringValue(value) {\n if (!value) return null;\n if (t.isStringLiteral(value)) return value.value;\n if (t.isJSXExpressionContainer(value) && t.isStringLiteral(value.expression)) {\n return value.expression.value;\n }\n if (t.isJSXExpressionContainer(value) && t.isTemplateLiteral(value.expression)) {\n if (value.expression.expressions.length === 0 && value.expression.quasis.length === 1) {\n return value.expression.quasis[0].value.raw;\n }\n }\n return null;\n}\nfunction getNumericValue(value) {\n if (!value) return null;\n if (t.isJSXExpressionContainer(value)) {\n if (t.isNumericLiteral(value.expression)) return value.expression.value;\n if (t.isUnaryExpression(value.expression) && value.expression.operator === \"-\" && t.isNumericLiteral(value.expression.argument)) {\n return -value.expression.argument.value;\n }\n }\n return null;\n}\nfunction resolveShorthand(ctx, name) {\n return ctx.shorthands[name] || name;\n}\nfunction hasConfiguredName(names, value) {\n if (!names) return false;\n if (Array.isArray(names)) return names.includes(value);\n if (names instanceof Set) return names.has(value);\n return Object.prototype.hasOwnProperty.call(names, value);\n}\nfunction formatStringValue(ctx, prop, value) {\n const category = getTokenCategory(prop);\n if (prop !== \"fontWeight\" && category && hasConfiguredName(ctx.grammarConfig.tokenNames?.[category], value)) {\n if (category === \"color\") {\n const mapped = getV6ThemeName(value);\n return mapped ? { value: mapped, valueKind: \"token\" } : null;\n }\n return { value, valueKind: \"token\" };\n }\n if (prop === \"fontWeight\") {\n return fontWeightNames[value] ? { value, valueKind: \"enum\" } : null;\n }\n if (prop === \"zIndex\" && /^\\d+$/.test(value)) {\n return { value, valueKind: \"convenience\" };\n }\n if (/^-?\\d+(\\.\\d+)?$/.test(value)) return null;\n if (value.endsWith(\"%\")) {\n const exact = {\n \"100%\": \"full\",\n \"50%\": \"1/2\",\n \"25%\": \"1/4\",\n \"75%\": \"3/4\"\n };\n if (getTokenCategory(prop) === \"size\" && exact[value]) {\n return { value: exact[value], valueKind: \"convenience\" };\n }\n return { value, valueKind: \"arbitrary\" };\n }\n if (value === \"auto\" && getTokenCategory(prop) === \"size\") {\n return { value, valueKind: \"convenience\" };\n }\n if (prop === \"fontFamily\") return { value, valueKind: \"arbitrary\" };\n if (value.includes(\"(\") || value.includes(\" \") || value.includes(\"_\") || value.startsWith(\"#\") || value.startsWith(\"-\") || /^[\\d.]+[a-z%]/i.test(value)) {\n return { value, valueKind: \"arbitrary\" };\n }\n return { value, valueKind: \"arbitrary\" };\n}\nconst pxLengthProps = /* @__PURE__ */ new Set([\n \"width\",\n \"height\",\n \"minWidth\",\n \"maxWidth\",\n \"minHeight\",\n \"maxHeight\",\n \"flexBasis\",\n \"padding\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"margin\",\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginHorizontal\",\n \"marginVertical\",\n \"gap\",\n \"rowGap\",\n \"columnGap\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\",\n \"inset\",\n \"borderRadius\",\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n \"fontSize\",\n \"letterSpacing\",\n \"lineHeight\"\n]);\nfunction formatNumericValue(prop, value) {\n if (prop === \"opacity\") {\n const pct = value * 100;\n return Number.isInteger(pct) ? { value: String(pct), valueKind: \"convenience\" } : { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"aspectRatio\") return { value: String(value), valueKind: \"arbitrary\" };\n if (prop === \"scale\" || prop === \"scaleX\" || prop === \"scaleY\") {\n if (value === 0) return { value: \"0\", valueKind: \"convenience\" };\n if (value === 1) return { value: \"100\", valueKind: \"convenience\" };\n return { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"flex\") {\n return value === 1 ? { value: \"1\", valueKind: \"convenience\" } : { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"flexGrow\" || prop === \"flexShrink\") {\n return { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"zIndex\") {\n return Number.isInteger(value) && value >= 0 ? { value: String(value), valueKind: \"convenience\" } : { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"fontWeight\") {\n return fontWeightNames[String(value)] ? { value: String(value), valueKind: \"enum\" } : null;\n }\n if (prop === \"rotate\") return null;\n if (prop === \"x\" || prop === \"y\") {\n return { value: `${value}px`, valueKind: \"arbitrary\" };\n }\n if (prop.includes(\"Width\") && prop.startsWith(\"border\")) {\n return { value: `${value}px`, valueKind: \"arbitrary\" };\n }\n if (pxLengthProps.has(prop)) {\n return { value: `${value}px`, valueKind: \"arbitrary\" };\n }\n return null;\n}\nexport {\n findParseError,\n tamaguiToTailwind\n};\n//# sourceMappingURL=transform.js.map\n"],"mappings":"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"}