@tamagui/to-tailwind 3.0.0-beta.924.1 → 3.0.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.
- package/dist/cjs/transform.cjs +99 -10
- package/dist/cjs/transform.native.cjs +120 -19
- package/dist/cjs/transform.native.js +120 -19
- package/dist/cjs/transform.native.js.map +1 -1
- package/dist/esm/transform.mjs +100 -11
- package/dist/esm/transform.mjs.map +1 -1
- package/dist/esm/transform.native.js +121 -20
- package/dist/esm/transform.native.js.map +1 -1
- package/package.json +5 -4
- package/src/transform.ts +140 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.native.js","names":["canonicalShorthands"],"sources":["esm/transform.native.js"],"sourcesContent":["import { parse } from \"@babel/parser\";\nimport _traverse from \"@babel/traverse\";\nimport _generate from \"@babel/generator\";\nimport * as t from \"@babel/types\";\nimport { defaultMediaKeys, createModifierRegistry, fontWeightNames, formatCandidate, getTokenCategory, propToTailwindPrefix, parseValue, standaloneValueProps, v6RemovedThemeNames, v6ThemeNameReplacements } from \"@tamagui/style-grammar/tooling\";\nimport { componentToTag } from \"./maps/componentToTag\";\nimport { shorthands as canonicalShorthands } from \"@tamagui/shorthands/v4\";\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\nvar _traverse_default;\nvar traverse = (_traverse_default = _traverse.default) !== null && _traverse_default !== void 0 ? _traverse_default : _traverse;\nvar _generate_default;\nvar generate = (_generate_default = _generate.default) !== null && _generate_default !== void 0 ? _generate_default : _generate;\nvar defaultShorthands = canonicalShorthands;\nvar removedV6ThemeNames = new Set(v6RemovedThemeNames);\nfunction getV6ThemeName(name) {\n var opacityIndex = name.indexOf(\"/\");\n var baseName = opacityIndex === -1 ? name : name.slice(0, opacityIndex);\n if (removedV6ThemeNames.has(baseName)) return null;\n var _v6ThemeNameReplacements_baseName;\n var mapped = (_v6ThemeNameReplacements_baseName = v6ThemeNameReplacements[baseName]) !== null && _v6ThemeNameReplacements_baseName !== void 0 ? _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 (_instanceof(names, Set)) return new Set(names);\n return new Set(Object.keys(names));\n}\nfunction addConfigNames(target, source) {\n if (!source) return;\n for (var key in source) target.add(key);\n}\nfunction createTransformGrammarConfig(options, mediaKeys, shorthands) {\n if (options.grammarConfig) {\n return {\n ...options.grammarConfig,\n shorthands,\n mediaNames: mediaKeys\n };\n }\n var tokenNames = {};\n var tokenCategories = [\n \"space\",\n \"size\",\n \"radius\",\n \"zIndex\",\n \"color\"\n ];\n var fontCategories = [\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"lineHeight\",\n \"letterSpacing\"\n ];\n var authoritative = [\n \"tokens\",\n \"fonts\",\n \"themes\",\n \"media\",\n \"shorthands\"\n ].some(function(key) {\n return key in options;\n });\n if (authoritative) {\n for (var _i = 0, _iter = [\n ...tokenCategories,\n ...fontCategories\n ]; _i < _iter.length; _i++) {\n var category = _iter[_i];\n tokenNames[category] = /* @__PURE__ */ new Set();\n }\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = tokenCategories[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var category1 = _step.value;\n var _options_tokens;\n if ((_options_tokens = options.tokens) === null || _options_tokens === void 0 ? void 0 : _options_tokens[category1]) {\n var names = tokenNames[category1] || /* @__PURE__ */ new Set();\n addConfigNames(names, options.tokens[category1]);\n tokenNames[category1] = names;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (options.fonts) {\n var _tokenNames, _tokenNames1, _tokenNames2, _tokenNames3, _tokenNames4;\n (_tokenNames = tokenNames).fontFamily || (_tokenNames.fontFamily = /* @__PURE__ */ new Set());\n (_tokenNames1 = tokenNames).fontSize || (_tokenNames1.fontSize = /* @__PURE__ */ new Set());\n (_tokenNames2 = tokenNames).fontWeight || (_tokenNames2.fontWeight = /* @__PURE__ */ new Set());\n (_tokenNames3 = tokenNames).lineHeight || (_tokenNames3.lineHeight = /* @__PURE__ */ new Set());\n (_tokenNames4 = tokenNames).letterSpacing || (_tokenNames4.letterSpacing = /* @__PURE__ */ new Set());\n for (var familyName in options.fonts) {\n tokenNames.fontFamily.add(familyName);\n var font = options.fonts[familyName];\n addConfigNames(tokenNames.fontSize, font === null || font === void 0 ? void 0 : font.size);\n addConfigNames(tokenNames.fontWeight, font === null || font === void 0 ? void 0 : font.weight);\n addConfigNames(tokenNames.lineHeight, font === null || font === void 0 ? void 0 : font.lineHeight);\n addConfigNames(tokenNames.letterSpacing, font === null || font === void 0 ? void 0 : font.letterSpacing);\n }\n }\n var themeNames = /* @__PURE__ */ new Set();\n if (options.themes) {\n var _tokenNames5;\n (_tokenNames5 = tokenNames).color || (_tokenNames5.color = /* @__PURE__ */ new Set());\n for (var themeName in options.themes) {\n themeNames.add(themeName);\n for (var name in options.themes[themeName]) {\n var 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 var ast = parse(source, {\n sourceType: \"module\",\n plugins: [\n \"jsx\",\n \"typescript\"\n ],\n errorRecovery: true\n });\n var errs = ast.errors;\n if (errs && errs.length > 0) {\n var _$e = errs[0];\n var loc = (_$e === null || _$e === void 0 ? void 0 : _$e.loc) ? `${_$e.loc.line}:${_$e.loc.column}` : \"?\";\n return `${(_$e === null || _$e === void 0 ? void 0 : _$e.reasonCode) || (_$e === null || _$e === void 0 ? void 0 : _$e.message) || \"parse error\"} at ${loc}`;\n }\n return null;\n } catch (e) {\n return e.message || \"parse error\";\n }\n}\nfunction tamaguiToTailwind(source) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var _options_grammarConfig, _options_grammarConfig1;\n var { renameComponents = true } = options;\n var mediaKeys = ((_options_grammarConfig = options.grammarConfig) === null || _options_grammarConfig === void 0 ? void 0 : _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 var _options_grammarConfig_shorthands, _ref;\n var shorthands = (_ref = (_options_grammarConfig_shorthands = (_options_grammarConfig1 = options.grammarConfig) === null || _options_grammarConfig1 === void 0 ? void 0 : _options_grammarConfig1.shorthands) !== null && _options_grammarConfig_shorthands !== void 0 ? _options_grammarConfig_shorthands : options.shorthands) !== null && _ref !== void 0 ? _ref : defaultShorthands;\n var grammarConfig = createTransformGrammarConfig(options, mediaKeys, shorthands);\n var _options_components;\n var ctx = {\n mediaKeys,\n componentAllow: new Set((_options_components = options.components) !== null && _options_components !== void 0 ? _options_components : []),\n shorthands,\n grammarConfig,\n modifierRegistry: createModifierRegistry(grammarConfig).registry\n };\n var ast;\n try {\n ast = parse(source, {\n sourceType: \"module\",\n plugins: [\n \"jsx\",\n \"typescript\"\n ],\n errorRecovery: true\n });\n } catch (e) {\n return source;\n }\n if (ast.errors && ast.errors.length > 0) {\n return source;\n }\n var didTransform = false;\n traverse(ast, {\n JSXOpeningElement(path) {\n var node = path.node;\n var resolved = resolveTamaguiComponent(path, ctx);\n if (resolved === null) return;\n var { name: componentName, isSimpleKnown, isPlainIdentifier } = resolved;\n if (node.attributes.some(function(a2) {\n return t.isJSXSpreadAttribute(a2);\n })) return;\n var hasDynamicClassName = node.attributes.some(function(attr2) {\n return t.isJSXAttribute(attr2) && attr2.name.name === \"className\" && getStringValue(attr2.value) === null;\n });\n if (hasDynamicClassName) return;\n var hasClassName = node.attributes.some(function(attr2) {\n return t.isJSXAttribute(attr2) && attr2.name.name === \"className\";\n });\n var hasNeighboringStyleProp = node.attributes.some(function(attr2) {\n if (!t.isJSXAttribute(attr2) || attr2.name.name === \"className\") return false;\n var name2 = attr2.name.name;\n return isConvertibleStyleProp(resolveShorthand(ctx, name2));\n });\n if (hasClassName && hasNeighboringStyleProp) return;\n var classes = [];\n var keptAttrs = [];\n var existingClassName = null;\n var blockedLeafKeys = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = node.attributes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var a = _step.value;\n if (t.isJSXAttribute(a) && a.name.name === \"className\") {\n var v = getStringValue(a.value);\n if (v) {\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = v.split(/\\s+/)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var tok = _step1.value;\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n if (tok) try {\n for (var _iterator2 = leafKeysOfClassToken(tok)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var k = _step2.value;\n blockedLeafKeys.add(k);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var 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 var styleEntries = [];\n var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;\n try {\n for (var _iterator3 = node.attributes[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var attr = _step3.value;\n if (!t.isJSXAttribute(attr)) {\n keptAttrs.push(attr);\n continue;\n }\n var 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 } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n var retainedLeafKeys = new Set(blockedLeafKeys);\n var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = void 0;\n try {\n for (var _iterator4 = styleEntries[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var e = _step4.value;\n if (e.cls === null && isConvertibleStyleProp(e.fullProp)) {\n var _iteratorNormalCompletion5 = true, _didIteratorError5 = false, _iteratorError5 = void 0;\n try {\n for (var _iterator5 = leafKeysOfProp(e.fullProp)[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var k1 = _step5.value;\n retainedLeafKeys.add(k1);\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n var _iteratorNormalCompletion6 = true, _didIteratorError6 = false, _iteratorError6 = void 0;\n try {\n for (var _iterator6 = implicitClasses[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var c = _step6.value;\n if (!overlapsSet(leafKeysOfClassToken(c), retainedLeafKeys)) classes.push(c);\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return != null) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n var _iteratorNormalCompletion7 = true, _didIteratorError7 = false, _iteratorError7 = void 0;\n try {\n for (var _iterator7 = styleEntries[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var e1 = _step7.value;\n if (e1.cls !== null && !overlapsSet(leafKeysOfProp(e1.fullProp), retainedLeafKeys)) {\n classes.push(e1.cls);\n } else {\n keptAttrs.push(e1.attr);\n }\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return != null) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n if (classes.length > 0) {\n var classStr = classes.join(\" \");\n if (existingClassName) {\n var existingVal = getStringValue(existingClassName.value);\n if (existingVal !== null) {\n existingClassName.value = t.stringLiteral(existingVal ? `${classStr} ${existingVal}` : classStr);\n keptAttrs.unshift(existingClassName);\n } else if (t.isJSXExpressionContainer(existingClassName.value) && !t.isJSXEmptyExpression(existingClassName.value.expression)) {\n var expr = existingClassName.value.expression;\n existingClassName.value = t.jsxExpressionContainer(t.templateLiteral([\n t.templateElement({\n raw: `${classStr} `,\n cooked: `${classStr} `\n }, false),\n t.templateElement({\n raw: \"\",\n cooked: \"\"\n }, true)\n ], [\n expr\n ]));\n keptAttrs.unshift(existingClassName);\n } else {\n keptAttrs.unshift(t.jsxAttribute(t.jsxIdentifier(\"className\"), t.stringLiteral(classStr)));\n }\n } else {\n keptAttrs.unshift(t.jsxAttribute(t.jsxIdentifier(\"className\"), t.stringLiteral(classStr)));\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 var tag = componentToTag[componentName];\n node.name = t.jsxIdentifier(tag);\n var 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 var output = generate(ast, {\n retainLines: true,\n concise: false\n });\n return output.code;\n}\nvar 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 var _path_scope_getBinding, _path_scope;\n var nameNode = path.node.name;\n var baseName;\n var memberChain = [];\n var isPlainIdentifier = t.isJSXIdentifier(nameNode);\n if (t.isJSXIdentifier(nameNode)) {\n baseName = nameNode.name;\n } else if (t.isJSXMemberExpression(nameNode)) {\n var parts = [];\n var 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 var binding = (_path_scope = path.scope) === null || _path_scope === void 0 ? void 0 : (_path_scope_getBinding = _path_scope.getBinding) === null || _path_scope_getBinding === void 0 ? void 0 : _path_scope_getBinding.call(_path_scope, baseName);\n var tamaguiBase;\n if (binding) {\n var bnode = binding.path.node;\n if (t.isImportSpecifier(bnode) || t.isImportDefaultSpecifier(bnode) || t.isImportNamespaceSpecifier(bnode)) {\n var decl = binding.path.parent;\n var 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 var 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 var name = memberChain.length ? [\n tamaguiBase,\n ...memberChain\n ].join(\".\") : tamaguiBase;\n var isSimpleKnown = memberChain.length === 0 && name in componentToTag;\n if (!isSimpleKnown && !knownCompoundComponents.has(name) && !ctx.componentAllow.has(name)) {\n return null;\n }\n return {\n name,\n isSimpleKnown,\n isPlainIdentifier\n };\n}\nfunction classPrefixOf(token) {\n var noMod = token.slice(token.lastIndexOf(\":\") + 1);\n var core = noMod[0] === \"-\" ? noMod.slice(1) : noMod;\n var dash = core.indexOf(\"-\");\n return dash === -1 ? core : core.slice(0, dash);\n}\nvar leafExpansion = {\n padding: [\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\"\n ],\n paddingHorizontal: [\n \"paddingLeft\",\n \"paddingRight\"\n ],\n paddingVertical: [\n \"paddingTop\",\n \"paddingBottom\"\n ],\n margin: [\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\"\n ],\n marginHorizontal: [\n \"marginLeft\",\n \"marginRight\"\n ],\n marginVertical: [\n \"marginTop\",\n \"marginBottom\"\n ],\n inset: [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ],\n gap: [\n \"gap\",\n \"rowGap\",\n \"columnGap\"\n ],\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 var _leafExpansion_fullProp;\n return (_leafExpansion_fullProp = leafExpansion[fullProp]) !== null && _leafExpansion_fullProp !== void 0 ? _leafExpansion_fullProp : [\n fullProp\n ];\n}\nvar prefixToProp = (function() {\n var m = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(propToTailwindPrefix)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [prop, prefix] = _step.value;\n if (prefix && !(prefix in m)) m[prefix] = prop;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return m;\n})();\nfunction leafKeysOfClassToken(token) {\n var prefix = classPrefixOf(token);\n var _prefixToProp_prefix;\n return leafKeysOfProp((_prefixToProp_prefix = prefixToProp[prefix]) !== null && _prefixToProp_prefix !== void 0 ? _prefixToProp_prefix : prefix);\n}\nfunction overlapsSet(keys, set) {\n return keys.some(function(k) {\n return set.has(k);\n });\n}\nfunction isConvertibleStyleProp(fullProp) {\n return propToTailwindPrefix[fullProp] !== void 0 || fullProp in standaloneValueProps;\n}\nfunction propValueToClass(ctx, propName, value) {\n var fullProp = resolveShorthand(ctx, propName);\n if (propToTailwindPrefix[fullProp] === void 0) return null;\n var strVal = getStringValue(value);\n var numVal = getNumericValue(value);\n if (strVal !== null) {\n var parsed = parseValue(strVal, ctx.modifierRegistry);\n if (!parsed.ok) return null;\n var classes = [];\n if (parsed.value.base !== null) {\n var base = payloadToClass(ctx, fullProp, parsed.value.base, []);\n if (base === null) return null;\n classes.push(base);\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = parsed.value.clauses[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var clause = _step.value;\n var conditional = payloadToClass(ctx, fullProp, clause.payload, clause.modifiers);\n if (conditional === null) return null;\n classes.push(conditional);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return classes.length ? classes.join(\" \") : null;\n }\n if (numVal === null) return null;\n var formatted = formatNumericValue(fullProp, numVal);\n if (formatted === null) return null;\n return formatCandidate({\n prop: fullProp,\n value: formatted.value,\n valueKind: formatted.valueKind,\n modifiers: void 0\n }, ctx.grammarConfig);\n}\nfunction payloadToClass(ctx, fullProp, payload, modifiers) {\n var _standaloneValueProps_fullProp;\n var formatted;\n if ((_standaloneValueProps_fullProp = standaloneValueProps[fullProp]) === null || _standaloneValueProps_fullProp === void 0 ? void 0 : _standaloneValueProps_fullProp[payload]) {\n formatted = {\n value: payload,\n valueKind: \"enum\"\n };\n } else {\n formatted = formatStringValue(ctx, fullProp, payload);\n if (formatted === null && /^-?\\d+(?:\\.\\d+)?$/.test(payload)) {\n var _ctx_grammarConfig_tokenNames;\n var category = getTokenCategory(fullProp);\n if (!category || ((_ctx_grammarConfig_tokenNames = ctx.grammarConfig.tokenNames) === null || _ctx_grammarConfig_tokenNames === void 0 ? void 0 : _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 prop: fullProp,\n value: formatted.value,\n valueKind: formatted.valueKind,\n modifiers: modifiers.length ? modifiers : void 0\n }, ctx.grammarConfig);\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 (_instanceof(names, Set)) return names.has(value);\n return value in names;\n}\nfunction formatStringValue(ctx, prop, value) {\n var _ctx_grammarConfig_tokenNames;\n var category = getTokenCategory(prop);\n if (prop !== \"fontWeight\" && category && hasConfiguredName((_ctx_grammarConfig_tokenNames = ctx.grammarConfig.tokenNames) === null || _ctx_grammarConfig_tokenNames === void 0 ? void 0 : _ctx_grammarConfig_tokenNames[category], value)) {\n if (category === \"color\") {\n var mapped = getV6ThemeName(value);\n return mapped ? {\n value: mapped,\n valueKind: \"token\"\n } : null;\n }\n return {\n value,\n valueKind: \"token\"\n };\n }\n if (prop === \"fontWeight\") {\n return fontWeightNames[value] ? {\n value,\n valueKind: \"enum\"\n } : null;\n }\n if (prop === \"zIndex\" && /^\\d+$/.test(value)) {\n return {\n value,\n valueKind: \"convenience\"\n };\n }\n if (/^-?\\d+(\\.\\d+)?$/.test(value)) return null;\n if (value.endsWith(\"%\")) {\n var 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 {\n value: exact[value],\n valueKind: \"convenience\"\n };\n }\n return {\n value,\n valueKind: \"arbitrary\"\n };\n }\n if (value === \"auto\" && getTokenCategory(prop) === \"size\") {\n return {\n value,\n valueKind: \"convenience\"\n };\n }\n if (prop === \"fontFamily\") return {\n value,\n valueKind: \"arbitrary\"\n };\n if (value.includes(\"(\") || value.includes(\" \") || value.includes(\"_\") || value.startsWith(\"#\") || value.startsWith(\"-\") || /^[\\d.]+[a-z%]/i.test(value)) {\n return {\n value,\n valueKind: \"arbitrary\"\n };\n }\n return {\n value,\n valueKind: \"arbitrary\"\n };\n}\nvar 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 var pct = value * 100;\n return Number.isInteger(pct) ? {\n value: String(pct),\n valueKind: \"convenience\"\n } : {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n }\n if (prop === \"aspectRatio\") return {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n if (prop === \"scale\" || prop === \"scaleX\" || prop === \"scaleY\") {\n if (value === 0) return {\n value: \"0\",\n valueKind: \"convenience\"\n };\n if (value === 1) return {\n value: \"100\",\n valueKind: \"convenience\"\n };\n return {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n }\n if (prop === \"flex\") {\n return value === 1 ? {\n value: \"1\",\n valueKind: \"convenience\"\n } : {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n }\n if (prop === \"flexGrow\" || prop === \"flexShrink\") {\n return {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n }\n if (prop === \"zIndex\") {\n return Number.isInteger(value) && value >= 0 ? {\n value: String(value),\n valueKind: \"convenience\"\n } : {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n }\n if (prop === \"fontWeight\") {\n return fontWeightNames[String(value)] ? {\n value: String(value),\n valueKind: \"enum\"\n } : null;\n }\n if (prop === \"rotate\") return null;\n if (prop === \"x\" || prop === \"y\") {\n return {\n value: `${value}px`,\n valueKind: \"arbitrary\"\n };\n }\n if (prop.includes(\"Width\") && prop.startsWith(\"border\")) {\n return {\n value: `${value}px`,\n valueKind: \"arbitrary\"\n };\n }\n if (pxLengthProps.has(prop)) {\n return {\n value: `${value}px`,\n valueKind: \"arbitrary\"\n };\n }\n return null;\n}\nexport {\n findParseError,\n tamaguiToTailwind\n};\n//# sourceMappingURL=transform.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transform.native.js","names":["canonicalShorthands"],"sources":["esm/transform.native.js"],"sourcesContent":["import { parse } from \"@babel/parser\";\nimport _traverse from \"@babel/traverse\";\nimport _generate from \"@babel/generator\";\nimport * as t from \"@babel/types\";\nimport { defaultMediaKeys, createModifierRegistry, fontWeightNames, formatCandidate, getTokenCategory, propToTailwindPrefix, parseValue, standaloneValueProps, v6RemovedThemeNames, v6ThemeNameReplacements, propTokenGroupFallbacks } from \"@tamagui/style-grammar/tooling\";\nimport { componentToTag } from \"./maps/componentToTag\";\nimport { shorthands as canonicalShorthands } from \"@tamagui/shorthands/v4\";\nvar _traverse_default;\nvar traverse = (_traverse_default = _traverse.default) !== null && _traverse_default !== void 0 ? _traverse_default : _traverse;\nvar _generate_default;\nvar generate = (_generate_default = _generate.default) !== null && _generate_default !== void 0 ? _generate_default : _generate;\nvar defaultShorthands = canonicalShorthands;\nvar removedV6ThemeNames = new Set(v6RemovedThemeNames);\nfunction getV6ThemeName(name) {\n var opacityIndex = name.indexOf(\"/\");\n var baseName = opacityIndex === -1 ? name : name.slice(0, opacityIndex);\n if (removedV6ThemeNames.has(baseName)) return null;\n var _v6ThemeNameReplacements_baseName;\n var mapped = (_v6ThemeNameReplacements_baseName = v6ThemeNameReplacements[baseName]) !== null && _v6ThemeNameReplacements_baseName !== void 0 ? _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 (var key in source) target.add(key);\n}\nfunction createTransformGrammarConfig(options, mediaKeys, shorthands) {\n if (options.grammarConfig) {\n return {\n ...options.grammarConfig,\n shorthands,\n mediaNames: mediaKeys\n };\n }\n var tokenNames = {};\n var tokenCategories = [\n \"space\",\n \"size\",\n \"radius\",\n \"zIndex\",\n \"color\"\n ];\n var fontCategories = [\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"lineHeight\",\n \"letterSpacing\"\n ];\n var authoritative = [\n \"tokens\",\n \"fonts\",\n \"themes\",\n \"media\",\n \"shorthands\"\n ].some(function(key) {\n return key in options;\n });\n if (authoritative) {\n for (var _i = 0, _iter = [\n ...tokenCategories,\n ...fontCategories\n ]; _i < _iter.length; _i++) {\n var category = _iter[_i];\n tokenNames[category] = /* @__PURE__ */ new Set();\n }\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = tokenCategories[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var category1 = _step.value;\n var _options_tokens;\n if ((_options_tokens = options.tokens) === null || _options_tokens === void 0 ? void 0 : _options_tokens[category1]) {\n var names = tokenNames[category1] || /* @__PURE__ */ new Set();\n addConfigNames(names, options.tokens[category1]);\n tokenNames[category1] = names;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n for (var group in propTokenGroupFallbacks) {\n var _options_tokens1;\n var own = (_options_tokens1 = options.tokens) === null || _options_tokens1 === void 0 ? void 0 : _options_tokens1[group];\n var names1 = own ? /* @__PURE__ */ new Set() : tokenNames[propTokenGroupFallbacks[group]];\n if (own) addConfigNames(names1, own);\n if (names1) tokenNames[group] = names1;\n }\n if (options.fonts) {\n var _tokenNames, _tokenNames1, _tokenNames2, _tokenNames3, _tokenNames4;\n (_tokenNames = tokenNames).fontFamily || (_tokenNames.fontFamily = /* @__PURE__ */ new Set());\n (_tokenNames1 = tokenNames).fontSize || (_tokenNames1.fontSize = /* @__PURE__ */ new Set());\n (_tokenNames2 = tokenNames).fontWeight || (_tokenNames2.fontWeight = /* @__PURE__ */ new Set());\n (_tokenNames3 = tokenNames).lineHeight || (_tokenNames3.lineHeight = /* @__PURE__ */ new Set());\n (_tokenNames4 = tokenNames).letterSpacing || (_tokenNames4.letterSpacing = /* @__PURE__ */ new Set());\n for (var familyName in options.fonts) {\n tokenNames.fontFamily.add(familyName);\n var font = options.fonts[familyName];\n addConfigNames(tokenNames.fontSize, font === null || font === void 0 ? void 0 : font.size);\n addConfigNames(tokenNames.fontWeight, font === null || font === void 0 ? void 0 : font.weight);\n addConfigNames(tokenNames.lineHeight, font === null || font === void 0 ? void 0 : font.lineHeight);\n addConfigNames(tokenNames.letterSpacing, font === null || font === void 0 ? void 0 : font.letterSpacing);\n }\n }\n var themeNames = /* @__PURE__ */ new Set();\n if (options.themes) {\n var _tokenNames5;\n (_tokenNames5 = tokenNames).color || (_tokenNames5.color = /* @__PURE__ */ new Set());\n for (var themeName in options.themes) {\n themeNames.add(themeName);\n for (var name in options.themes[themeName]) {\n var 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 var ast = parse(source, {\n sourceType: \"module\",\n plugins: [\n \"jsx\",\n \"typescript\"\n ],\n errorRecovery: true\n });\n var errs = ast.errors;\n if (errs && errs.length > 0) {\n var _$e = errs[0];\n var loc = (_$e === null || _$e === void 0 ? void 0 : _$e.loc) ? `${_$e.loc.line}:${_$e.loc.column}` : \"?\";\n return `${(_$e === null || _$e === void 0 ? void 0 : _$e.reasonCode) || (_$e === null || _$e === void 0 ? void 0 : _$e.message) || \"parse error\"} at ${loc}`;\n }\n return null;\n } catch (e) {\n return e.message || \"parse error\";\n }\n}\nfunction tamaguiToTailwind(source) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var _options_grammarConfig, _options_grammarConfig1;\n var { renameComponents = true } = options;\n var mediaKeys = ((_options_grammarConfig = options.grammarConfig) === null || _options_grammarConfig === void 0 ? void 0 : _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 var _options_grammarConfig_shorthands, _ref;\n var shorthands = (_ref = (_options_grammarConfig_shorthands = (_options_grammarConfig1 = options.grammarConfig) === null || _options_grammarConfig1 === void 0 ? void 0 : _options_grammarConfig1.shorthands) !== null && _options_grammarConfig_shorthands !== void 0 ? _options_grammarConfig_shorthands : options.shorthands) !== null && _ref !== void 0 ? _ref : defaultShorthands;\n var grammarConfig = createTransformGrammarConfig(options, mediaKeys, shorthands);\n var _options_components;\n var ctx = {\n mediaKeys,\n componentAllow: new Set((_options_components = options.components) !== null && _options_components !== void 0 ? _options_components : []),\n shorthands,\n grammarConfig,\n modifierRegistry: createModifierRegistry(grammarConfig).registry,\n rewriteImports: options.rewriteImports === true\n };\n var ast;\n try {\n ast = parse(source, {\n sourceType: \"module\",\n plugins: [\n \"jsx\",\n \"typescript\"\n ],\n errorRecovery: true\n });\n } catch (e) {\n return source;\n }\n if (ast.errors && ast.errors.length > 0) {\n return source;\n }\n var didTransform = false;\n traverse(ast, {\n JSXOpeningElement(path) {\n var node = path.node;\n var resolved = resolveTamaguiComponent(path, ctx);\n if (resolved === null) return;\n var { name: componentName, isSimpleKnown, isPlainIdentifier } = resolved;\n if (node.attributes.some(function(a2) {\n return t.isJSXSpreadAttribute(a2);\n })) return;\n var hasDynamicClassName = node.attributes.some(function(attr2) {\n return t.isJSXAttribute(attr2) && attr2.name.name === \"className\" && getStringValue(attr2.value) === null;\n });\n if (hasDynamicClassName) return;\n var hasClassName = node.attributes.some(function(attr2) {\n return t.isJSXAttribute(attr2) && attr2.name.name === \"className\";\n });\n var hasNeighboringStyleProp = node.attributes.some(function(attr2) {\n if (!t.isJSXAttribute(attr2) || attr2.name.name === \"className\") return false;\n var name2 = attr2.name.name;\n return isConvertibleStyleProp(resolveShorthand(ctx, name2));\n });\n if (hasClassName && hasNeighboringStyleProp) return;\n var classes = [];\n var keptAttrs = [];\n var existingClassName = null;\n var blockedLeafKeys = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = node.attributes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var a = _step.value;\n if (t.isJSXAttribute(a) && a.name.name === \"className\") {\n var v = getStringValue(a.value);\n if (v) {\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = v.split(/\\s+/)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var tok = _step1.value;\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n if (tok) try {\n for (var _iterator2 = leafKeysOfClassToken(tok)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var k = _step2.value;\n blockedLeafKeys.add(k);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var 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 var styleEntries = [];\n var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;\n try {\n for (var _iterator3 = node.attributes[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var attr = _step3.value;\n if (!t.isJSXAttribute(attr)) {\n keptAttrs.push(attr);\n continue;\n }\n var 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 } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n var retainedLeafKeys = new Set(blockedLeafKeys);\n var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = void 0;\n try {\n for (var _iterator4 = styleEntries[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var e = _step4.value;\n if (e.cls === null && isConvertibleStyleProp(e.fullProp)) {\n var _iteratorNormalCompletion5 = true, _didIteratorError5 = false, _iteratorError5 = void 0;\n try {\n for (var _iterator5 = leafKeysOfProp(e.fullProp)[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var k1 = _step5.value;\n retainedLeafKeys.add(k1);\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n var _iteratorNormalCompletion6 = true, _didIteratorError6 = false, _iteratorError6 = void 0;\n try {\n for (var _iterator6 = implicitClasses[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var c = _step6.value;\n if (!overlapsSet(leafKeysOfClassToken(c), retainedLeafKeys)) classes.push(c);\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return != null) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n var _iteratorNormalCompletion7 = true, _didIteratorError7 = false, _iteratorError7 = void 0;\n try {\n for (var _iterator7 = styleEntries[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var e1 = _step7.value;\n if (e1.cls !== null && !overlapsSet(leafKeysOfProp(e1.fullProp), retainedLeafKeys)) {\n classes.push(e1.cls);\n } else {\n keptAttrs.push(e1.attr);\n }\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return != null) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n if (classes.length > 0) {\n var classStr = classes.join(\" \");\n if (existingClassName) {\n var existingVal = getStringValue(existingClassName.value);\n if (existingVal !== null) {\n existingClassName.value = t.stringLiteral(existingVal ? `${classStr} ${existingVal}` : classStr);\n keptAttrs.unshift(existingClassName);\n } else if (t.isJSXExpressionContainer(existingClassName.value) && !t.isJSXEmptyExpression(existingClassName.value.expression)) {\n var expr = existingClassName.value.expression;\n existingClassName.value = t.jsxExpressionContainer(t.templateLiteral([\n t.templateElement({\n raw: `${classStr} `,\n cooked: `${classStr} `\n }, false),\n t.templateElement({\n raw: \"\",\n cooked: \"\"\n }, true)\n ], [\n expr\n ]));\n keptAttrs.unshift(existingClassName);\n } else {\n keptAttrs.unshift(t.jsxAttribute(t.jsxIdentifier(\"className\"), t.stringLiteral(classStr)));\n }\n } else {\n keptAttrs.unshift(t.jsxAttribute(t.jsxIdentifier(\"className\"), t.stringLiteral(classStr)));\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 var tag = componentToTag[componentName];\n node.name = t.jsxIdentifier(tag);\n var 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 (options.rewriteImports && rewriteTailwindFrontendImports(ast)) {\n didTransform = true;\n }\n if (!didTransform) return source;\n var output = generate(ast, {\n retainLines: options.retainLines !== false,\n concise: false\n });\n return output.code;\n}\nvar 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]);\nvar tailwindFrontendImports = /* @__PURE__ */ new Set([\n \"html\",\n \"View\",\n \"Text\"\n]);\nfunction isTamaguiSource(source) {\n return source === \"tamagui\" || source.startsWith(\"@tamagui/\");\n}\nfunction resolveTamaguiComponent(path, ctx) {\n var _path_scope_getBinding, _path_scope;\n var nameNode = path.node.name;\n var baseName;\n var memberChain = [];\n var isPlainIdentifier = t.isJSXIdentifier(nameNode);\n if (t.isJSXIdentifier(nameNode)) {\n baseName = nameNode.name;\n } else if (t.isJSXMemberExpression(nameNode)) {\n var parts = [];\n var 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 var binding = (_path_scope = path.scope) === null || _path_scope === void 0 ? void 0 : (_path_scope_getBinding = _path_scope.getBinding) === null || _path_scope_getBinding === void 0 ? void 0 : _path_scope_getBinding.call(_path_scope, baseName);\n var tamaguiBase;\n if (binding) {\n var bnode = binding.path.node;\n if (t.isImportSpecifier(bnode) || t.isImportDefaultSpecifier(bnode) || t.isImportNamespaceSpecifier(bnode)) {\n var decl = binding.path.parent;\n var 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 var imported = bnode.imported;\n tamaguiBase = t.isIdentifier(imported) ? imported.name : String(imported.value);\n } else {\n return null;\n }\n if (ctx.rewriteImports && source !== \"@tamagui/tailwind\" && (source !== \"tamagui\" && source !== \"@tamagui/core\" || !tailwindFrontendImports.has(tamaguiBase) || !isTailwindFrontendOnlyBinding(binding, tamaguiBase))) {\n return null;\n }\n } else {\n return null;\n }\n } else {\n tamaguiBase = baseName;\n if (ctx.rewriteImports && !tailwindFrontendImports.has(tamaguiBase)) return null;\n }\n var name = memberChain.length ? [\n tamaguiBase,\n ...memberChain\n ].join(\".\") : tamaguiBase;\n var isSimpleKnown = memberChain.length === 0 && name in componentToTag;\n var isHTMLPrimitive = tamaguiBase === \"html\" && memberChain.length === 1;\n if (!isSimpleKnown && !isHTMLPrimitive && !knownCompoundComponents.has(name) && !ctx.componentAllow.has(name)) {\n return null;\n }\n return {\n name,\n isSimpleKnown,\n isPlainIdentifier\n };\n}\nfunction isTailwindFrontendOnlyBinding(binding, importedName) {\n return binding.referencePaths.every(function(referencePath) {\n var parent = referencePath.parent;\n if (importedName === \"html\") {\n var _referencePath_parentPath, _referencePath_parentPath1;\n return t.isJSXMemberExpression(parent) && parent.object === referencePath.node && (t.isJSXOpeningElement((_referencePath_parentPath = referencePath.parentPath) === null || _referencePath_parentPath === void 0 ? void 0 : _referencePath_parentPath.parent) || t.isJSXClosingElement((_referencePath_parentPath1 = referencePath.parentPath) === null || _referencePath_parentPath1 === void 0 ? void 0 : _referencePath_parentPath1.parent));\n }\n return t.isJSXIdentifier(referencePath.node) && (t.isJSXOpeningElement(parent) || t.isJSXClosingElement(parent)) && parent.name === referencePath.node;\n });\n}\nfunction rewriteTailwindFrontendImports(ast) {\n var changed = false;\n traverse(ast, {\n ImportDeclaration(path) {\n var source = String(path.node.source.value);\n if (source !== \"tamagui\" && source !== \"@tamagui/core\") return;\n if (path.node.importKind === \"type\") return;\n var moved = [];\n var retained = [];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = path.node.specifiers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var specifier = _step.value;\n if (!t.isImportSpecifier(specifier) || specifier.importKind === \"type\") {\n retained.push(specifier);\n continue;\n }\n var importedName = t.isIdentifier(specifier.imported) ? specifier.imported.name : String(specifier.imported.value);\n var binding = path.scope.getBinding(specifier.local.name);\n if (!tailwindFrontendImports.has(importedName) || !binding || !isTailwindFrontendOnlyBinding(binding, importedName)) {\n retained.push(specifier);\n continue;\n }\n moved.push(specifier);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (!moved.length) return;\n changed = true;\n if (!retained.length) {\n path.node.source = t.stringLiteral(\"@tamagui/tailwind\");\n return;\n }\n path.node.specifiers = retained;\n path.insertAfter(t.importDeclaration(moved, t.stringLiteral(\"@tamagui/tailwind\")));\n }\n });\n return changed;\n}\nfunction classPrefixOf(token) {\n var noMod = token.slice(token.lastIndexOf(\":\") + 1);\n var core = noMod[0] === \"-\" ? noMod.slice(1) : noMod;\n var dash = core.indexOf(\"-\");\n return dash === -1 ? core : core.slice(0, dash);\n}\nvar leafExpansion = {\n padding: [\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\"\n ],\n paddingHorizontal: [\n \"paddingLeft\",\n \"paddingRight\"\n ],\n paddingVertical: [\n \"paddingTop\",\n \"paddingBottom\"\n ],\n margin: [\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\"\n ],\n marginHorizontal: [\n \"marginLeft\",\n \"marginRight\"\n ],\n marginVertical: [\n \"marginTop\",\n \"marginBottom\"\n ],\n inset: [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ],\n gap: [\n \"gap\",\n \"rowGap\",\n \"columnGap\"\n ],\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 var _leafExpansion_fullProp;\n return (_leafExpansion_fullProp = leafExpansion[fullProp]) !== null && _leafExpansion_fullProp !== void 0 ? _leafExpansion_fullProp : [\n fullProp\n ];\n}\nvar prefixToProp = (function() {\n var m = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(propToTailwindPrefix)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [prop, prefix] = _step.value;\n if (prefix && !(prefix in m)) m[prefix] = prop;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return m;\n})();\nfunction leafKeysOfClassToken(token) {\n var prefix = classPrefixOf(token);\n var _prefixToProp_prefix;\n return leafKeysOfProp((_prefixToProp_prefix = prefixToProp[prefix]) !== null && _prefixToProp_prefix !== void 0 ? _prefixToProp_prefix : prefix);\n}\nfunction overlapsSet(keys, set) {\n return keys.some(function(k) {\n return set.has(k);\n });\n}\nfunction isConvertibleStyleProp(fullProp) {\n return propToTailwindPrefix[fullProp] !== void 0 || fullProp in standaloneValueProps;\n}\nfunction propValueToClass(ctx, propName, value) {\n var fullProp = resolveShorthand(ctx, propName);\n if (propToTailwindPrefix[fullProp] === void 0) return null;\n var strVal = getStringValue(value);\n var numVal = getNumericValue(value);\n if (strVal !== null) {\n var parsed = parseValue(strVal, ctx.modifierRegistry);\n if (!parsed.ok) return null;\n var classes = [];\n if (parsed.value.base !== null) {\n var base = payloadToClass(ctx, fullProp, parsed.value.base, []);\n if (base === null) return null;\n classes.push(base);\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = parsed.value.clauses[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var clause = _step.value;\n var conditional = payloadToClass(ctx, fullProp, clause.payload, clause.modifiers);\n if (conditional === null) return null;\n classes.push(conditional);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return classes.length ? classes.join(\" \") : null;\n }\n if (numVal === null) return null;\n var formatted = formatNumericValue(fullProp, numVal);\n if (formatted === null) return null;\n return formatCandidate({\n prop: fullProp,\n value: formatted.value,\n valueKind: formatted.valueKind,\n modifiers: void 0\n }, ctx.grammarConfig);\n}\nfunction payloadToClass(ctx, fullProp, payload, modifiers) {\n var _standaloneValueProps_fullProp;\n var formatted;\n if ((_standaloneValueProps_fullProp = standaloneValueProps[fullProp]) === null || _standaloneValueProps_fullProp === void 0 ? void 0 : _standaloneValueProps_fullProp[payload]) {\n formatted = {\n value: payload,\n valueKind: \"enum\"\n };\n } else {\n formatted = formatStringValue(ctx, fullProp, payload);\n if (formatted === null && /^-?\\d+(?:\\.\\d+)?$/.test(payload)) {\n var _ctx_grammarConfig_tokenNames;\n var category = getTokenCategory(fullProp);\n if (!category || ((_ctx_grammarConfig_tokenNames = ctx.grammarConfig.tokenNames) === null || _ctx_grammarConfig_tokenNames === void 0 ? void 0 : _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 prop: fullProp,\n value: formatted.value,\n valueKind: formatted.valueKind,\n modifiers: modifiers.length ? modifiers : void 0\n }, ctx.grammarConfig);\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 value in names;\n}\nfunction formatStringValue(ctx, prop, value) {\n var _ctx_grammarConfig_tokenNames;\n var category = getTokenCategory(prop);\n if (prop !== \"fontWeight\" && category && hasConfiguredName((_ctx_grammarConfig_tokenNames = ctx.grammarConfig.tokenNames) === null || _ctx_grammarConfig_tokenNames === void 0 ? void 0 : _ctx_grammarConfig_tokenNames[category], value)) {\n if (category === \"color\") {\n var mapped = getV6ThemeName(value);\n return mapped ? {\n value: mapped,\n valueKind: \"token\"\n } : null;\n }\n return {\n value,\n valueKind: \"token\"\n };\n }\n if (prop === \"fontWeight\") {\n return fontWeightNames[value] ? {\n value,\n valueKind: \"enum\"\n } : null;\n }\n if (prop === \"zIndex\" && /^\\d+$/.test(value)) {\n return {\n value,\n valueKind: \"convenience\"\n };\n }\n if (/^-?\\d+(\\.\\d+)?$/.test(value)) {\n return prop === \"lineHeight\" ? {\n value,\n valueKind: \"arbitrary\"\n } : null;\n }\n if (value.endsWith(\"%\")) {\n var 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 {\n value: exact[value],\n valueKind: \"convenience\"\n };\n }\n return {\n value,\n valueKind: \"arbitrary\"\n };\n }\n if (value === \"auto\" && getTokenCategory(prop) === \"size\") {\n return {\n value,\n valueKind: \"convenience\"\n };\n }\n if (prop === \"fontFamily\") return {\n value,\n valueKind: \"arbitrary\"\n };\n if (value.includes(\"(\") || value.includes(\" \") || value.includes(\"_\") || value.startsWith(\"#\") || value.startsWith(\"-\") || /^[\\d.]+[a-z%]/i.test(value)) {\n return {\n value,\n valueKind: \"arbitrary\"\n };\n }\n return {\n value,\n valueKind: \"arbitrary\"\n };\n}\nvar 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 \"paddingStart\",\n \"paddingEnd\",\n \"paddingInlineStart\",\n \"paddingInlineEnd\",\n \"paddingBlockStart\",\n \"paddingBlockEnd\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"margin\",\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginStart\",\n \"marginEnd\",\n \"marginInlineStart\",\n \"marginInlineEnd\",\n \"marginBlockStart\",\n \"marginBlockEnd\",\n \"marginHorizontal\",\n \"marginVertical\",\n \"gap\",\n \"rowGap\",\n \"columnGap\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\",\n \"inset\",\n \"insetInlineStart\",\n \"insetInlineEnd\",\n \"borderRadius\",\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n \"borderTopStartRadius\",\n \"borderTopEndRadius\",\n \"borderBottomStartRadius\",\n \"borderBottomEndRadius\",\n \"borderStartStartRadius\",\n \"borderStartEndRadius\",\n \"borderEndStartRadius\",\n \"borderEndEndRadius\",\n \"fontSize\",\n \"letterSpacing\"\n]);\nfunction formatNumericValue(prop, value) {\n if (prop === \"opacity\") {\n var pct = value * 100;\n return Number.isInteger(pct) ? {\n value: String(pct),\n valueKind: \"convenience\"\n } : {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n }\n if (prop === \"aspectRatio\" || prop === \"lineHeight\") {\n return {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n }\n if (prop === \"scale\" || prop === \"scaleX\" || prop === \"scaleY\") {\n if (value === 0) return {\n value: \"0\",\n valueKind: \"convenience\"\n };\n if (value === 1) return {\n value: \"100\",\n valueKind: \"convenience\"\n };\n return {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n }\n if (prop === \"flex\") {\n return value === 1 ? {\n value: \"1\",\n valueKind: \"convenience\"\n } : {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n }\n if (prop === \"flexGrow\" || prop === \"flexShrink\") {\n return {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n }\n if (prop === \"zIndex\") {\n return Number.isInteger(value) && value >= 0 ? {\n value: String(value),\n valueKind: \"convenience\"\n } : {\n value: String(value),\n valueKind: \"arbitrary\"\n };\n }\n if (prop === \"fontWeight\") {\n return fontWeightNames[String(value)] ? {\n value: String(value),\n valueKind: \"enum\"\n } : null;\n }\n if (prop === \"rotate\") return null;\n if (prop === \"x\" || prop === \"y\") {\n return {\n value: `${value}px`,\n valueKind: \"arbitrary\"\n };\n }\n if (prop.includes(\"Width\") && prop.startsWith(\"border\")) {\n return {\n value: `${value}px`,\n valueKind: \"arbitrary\"\n };\n }\n if (pxLengthProps.has(prop)) {\n return {\n value: `${value}px`,\n valueKind: \"arbitrary\"\n };\n }\n return null;\n}\nexport {\n findParseError,\n tamaguiToTailwind\n};\n//# sourceMappingURL=transform.js.map\n"],"mappings":";;;;;;;;;AAOA,IAAI;AACJ,IAAI,YAAY,oBAAoB,UAAU,aAAa,QAAQ,sBAAsB,KAAK,IAAI,oBAAoB;AACtH,IAAI;AACJ,IAAI,YAAY,oBAAoB,UAAU,aAAa,QAAQ,sBAAsB,KAAK,IAAI,oBAAoB;AACtH,IAAI,oBAAoBA;AACxB,IAAI,sBAAsB,IAAI,IAAI,mBAAmB;AACrD,SAAS,eAAe,MAAM;CAC5B,IAAI,eAAe,KAAK,QAAQ,GAAG;CACnC,IAAI,WAAW,iBAAiB,CAAC,IAAI,OAAO,KAAK,MAAM,GAAG,YAAY;CACtE,IAAI,oBAAoB,IAAI,QAAQ,GAAG,OAAO;CAC9C,IAAI;CACJ,IAAI,UAAU,oCAAoC,wBAAwB,eAAe,QAAQ,sCAAsC,KAAK,IAAI,oCAAoC;CACpL,OAAO,iBAAiB,CAAC,IAAI,SAAS,GAAG,SAAS,KAAK,MAAM,YAAY;AAC3E;AACA,SAAS,WAAW,OAAO;CACzB,IAAI,CAAC,OAAO,uBAAuB,IAAI,IAAI;CAC3C,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,IAAI,IAAI,KAAK;CAC9C,IAAI,iBAAiB,KAAK,OAAO,IAAI,IAAI,KAAK;CAC9C,OAAO,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;AACnC;AACA,SAAS,eAAe,QAAQ,QAAQ;CACtC,IAAI,CAAC,QAAQ;CACb,KAAK,IAAI,OAAO,QAAQ,OAAO,IAAI,GAAG;AACxC;AACA,SAAS,6BAA6B,SAAS,WAAW,YAAY;CACpE,IAAI,QAAQ,eAAe;EACzB,OAAO;GACL,GAAG,QAAQ;GACX;GACA,YAAY;EACd;CACF;CACA,IAAI,aAAa,CAAC;CAClB,IAAI,kBAAkB;EACpB;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,iBAAiB;EACnB;EACA;EACA;EACA;EACA;CACF;CACA,IAAI,gBAAgB;EAClB;EACA;EACA;EACA;EACA;CACF,CAAC,CAAC,KAAK,SAAS,KAAK;EACnB,OAAO,OAAO;CAChB,CAAC;CACD,IAAI,eAAe;EACjB,KAAK,IAAI,KAAK,GAAG,QAAQ,CACvB,GAAG,iBACH,GAAG,cACL,GAAG,KAAK,MAAM,QAAQ,MAAM;GAC1B,IAAI,WAAW,MAAM;GACrB,WAAW,4BAA4B,IAAI,IAAI;EACjD;CACF;CACA,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;CACvF,IAAI;EACF,KAAK,IAAI,YAAY,gBAAgB,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;GAChK,IAAI,YAAY,MAAM;GACtB,IAAI;GACJ,KAAK,kBAAkB,QAAQ,YAAY,QAAQ,oBAAoB,KAAK,IAAI,KAAK,IAAI,gBAAgB,YAAY;IACnH,IAAI,QAAQ,WAAW,8BAA8B,IAAI,IAAI;IAC7D,eAAe,OAAO,QAAQ,OAAO,UAAU;IAC/C,WAAW,aAAa;GAC1B;EACF;CACF,SAAS,KAAK;EACZ,oBAAoB;EACpB,iBAAiB;CACnB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;IAC1D,UAAU,OAAO;GACnB;EACF,UAAU;GACR,IAAI,mBAAmB;IACrB,MAAM;GACR;EACF;CACF;CACA,KAAK,IAAI,SAAS,yBAAyB;EACzC,IAAI;EACJ,IAAI,OAAO,mBAAmB,QAAQ,YAAY,QAAQ,qBAAqB,KAAK,IAAI,KAAK,IAAI,iBAAiB;EAClH,IAAI,SAAS,sBAAsB,IAAI,IAAI,IAAI,WAAW,wBAAwB;EAClF,IAAI,KAAK,eAAe,QAAQ,GAAG;EACnC,IAAI,QAAQ,WAAW,SAAS;CAClC;CACA,IAAI,QAAQ,OAAO;EACjB,IAAI,aAAa,cAAc,cAAc,cAAc;EAC3D,CAAC,cAAc,WAAU,CAAE,eAAe,YAAY,6BAA6B,IAAI,IAAI;EAC3F,CAAC,eAAe,WAAU,CAAE,aAAa,aAAa,2BAA2B,IAAI,IAAI;EACzF,CAAC,eAAe,WAAU,CAAE,eAAe,aAAa,6BAA6B,IAAI,IAAI;EAC7F,CAAC,eAAe,WAAU,CAAE,eAAe,aAAa,6BAA6B,IAAI,IAAI;EAC7F,CAAC,eAAe,WAAU,CAAE,kBAAkB,aAAa,gCAAgC,IAAI,IAAI;EACnG,KAAK,IAAI,cAAc,QAAQ,OAAO;GACpC,WAAW,WAAW,IAAI,UAAU;GACpC,IAAI,OAAO,QAAQ,MAAM;GACzB,eAAe,WAAW,UAAU,SAAS,QAAQ,SAAS,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI;GACzF,eAAe,WAAW,YAAY,SAAS,QAAQ,SAAS,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM;GAC7F,eAAe,WAAW,YAAY,SAAS,QAAQ,SAAS,KAAK,IAAI,KAAK,IAAI,KAAK,UAAU;GACjG,eAAe,WAAW,eAAe,SAAS,QAAQ,SAAS,KAAK,IAAI,KAAK,IAAI,KAAK,aAAa;EACzG;CACF;CACA,IAAI,6BAA6B,IAAI,IAAI;CACzC,IAAI,QAAQ,QAAQ;EAClB,IAAI;EACJ,CAAC,eAAe,WAAU,CAAE,UAAU,aAAa,wBAAwB,IAAI,IAAI;EACnF,KAAK,IAAI,aAAa,QAAQ,QAAQ;GACpC,WAAW,IAAI,SAAS;GACxB,KAAK,IAAI,QAAQ,QAAQ,OAAO,YAAY;IAC1C,IAAI,SAAS,eAAe,IAAI;IAChC,IAAI,QAAQ,WAAW,MAAM,IAAI,MAAM;GACzC;EACF;CACF;CACA,OAAO;EACL;EACA,YAAY;EACZ;EACA;CACF;AACF;AACA,SAAS,eAAe,QAAQ;CAC9B,IAAI;EACF,IAAI,MAAM,MAAM,QAAQ;GACtB,YAAY;GACZ,SAAS,CACP,OACA,YACF;GACA,eAAe;EACjB,CAAC;EACD,IAAI,OAAO,IAAI;EACf,IAAI,QAAQ,KAAK,SAAS,GAAG;GAC3B,IAAI,MAAM,KAAK;GACf,IAAI,OAAO,QAAQ,QAAQ,QAAQ,KAAK,IAAI,KAAK,IAAI,IAAI,OAAO,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,WAAW;GACtG,OAAO,IAAI,QAAQ,QAAQ,QAAQ,KAAK,IAAI,KAAK,IAAI,IAAI,gBAAgB,QAAQ,QAAQ,QAAQ,KAAK,IAAI,KAAK,IAAI,IAAI,YAAY,cAAc,MAAM;EACzJ;EACA,OAAO;CACT,SAAS,GAAG;EACV,OAAO,EAAE,WAAW;CACtB;AACF;AACA,SAAS,kBAAkB,QAAQ;CACjC,IAAI,UAAU,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;CAChF,IAAI,wBAAwB;CAC5B,IAAI,EAAE,mBAAmB,SAAS;CAClC,IAAI,cAAc,yBAAyB,QAAQ,mBAAmB,QAAQ,2BAA2B,KAAK,IAAI,KAAK,IAAI,uBAAuB,cAAc,WAAW,QAAQ,cAAc,UAAU,IAAI,QAAQ,QAAQ,IAAI,IAAI,MAAM,QAAQ,QAAQ,KAAK,IAAI,QAAQ,QAAQ,OAAO,KAAK,QAAQ,KAAK,CAAC,IAAI,IAAI,IAAI,gBAAgB;CAC5U,IAAI,mCAAmC;CACvC,IAAI,cAAc,QAAQ,qCAAqC,0BAA0B,QAAQ,mBAAmB,QAAQ,4BAA4B,KAAK,IAAI,KAAK,IAAI,wBAAwB,gBAAgB,QAAQ,sCAAsC,KAAK,IAAI,oCAAoC,QAAQ,gBAAgB,QAAQ,SAAS,KAAK,IAAI,OAAO;CACtW,IAAI,gBAAgB,6BAA6B,SAAS,WAAW,UAAU;CAC/E,IAAI;CACJ,IAAI,MAAM;EACR;EACA,gBAAgB,IAAI,KAAK,sBAAsB,QAAQ,gBAAgB,QAAQ,wBAAwB,KAAK,IAAI,sBAAsB,CAAC,CAAC;EACxI;EACA;EACA,kBAAkB,uBAAuB,aAAa,CAAC,CAAC;EACxD,gBAAgB,QAAQ,mBAAmB;CAC7C;CACA,IAAI;CACJ,IAAI;EACF,MAAM,MAAM,QAAQ;GAClB,YAAY;GACZ,SAAS,CACP,OACA,YACF;GACA,eAAe;EACjB,CAAC;CACH,SAAS,GAAG;EACV,OAAO;CACT;CACA,IAAI,IAAI,UAAU,IAAI,OAAO,SAAS,GAAG;EACvC,OAAO;CACT;CACA,IAAI,eAAe;CACnB,SAAS,KAAK,EACZ,kBAAkB,MAAM;EACtB,IAAI,OAAO,KAAK;EAChB,IAAI,WAAW,wBAAwB,MAAM,GAAG;EAChD,IAAI,aAAa,MAAM;EACvB,IAAI,EAAE,MAAM,eAAe,eAAe,sBAAsB;EAChE,IAAI,KAAK,WAAW,KAAK,SAAS,IAAI;GACpC,OAAO,EAAE,qBAAqB,EAAE;EAClC,CAAC,GAAG;EACJ,IAAI,sBAAsB,KAAK,WAAW,KAAK,SAAS,OAAO;GAC7D,OAAO,EAAE,eAAe,KAAK,KAAK,MAAM,KAAK,SAAS,eAAe,eAAe,MAAM,KAAK,MAAM;EACvG,CAAC;EACD,IAAI,qBAAqB;EACzB,IAAI,eAAe,KAAK,WAAW,KAAK,SAAS,OAAO;GACtD,OAAO,EAAE,eAAe,KAAK,KAAK,MAAM,KAAK,SAAS;EACxD,CAAC;EACD,IAAI,0BAA0B,KAAK,WAAW,KAAK,SAAS,OAAO;GACjE,IAAI,CAAC,EAAE,eAAe,KAAK,KAAK,MAAM,KAAK,SAAS,aAAa,OAAO;GACxE,IAAI,QAAQ,MAAM,KAAK;GACvB,OAAO,uBAAuB,iBAAiB,KAAK,KAAK,CAAC;EAC5D,CAAC;EACD,IAAI,gBAAgB,yBAAyB;EAC7C,IAAI,UAAU,CAAC;EACf,IAAI,YAAY,CAAC;EACjB,IAAI,oBAAoB;EACxB,IAAI,kCAAkC,IAAI,IAAI;EAC9C,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,KAAK,IAAI,YAAY,KAAK,WAAW,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;IAChK,IAAI,IAAI,MAAM;IACd,IAAI,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,SAAS,aAAa;KACtD,IAAI,IAAI,eAAe,EAAE,KAAK;KAC9B,IAAI,GAAG;MACL,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;MAC1F,IAAI;OACF,KAAK,IAAI,aAAa,EAAE,MAAM,KAAK,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;QACrK,IAAI,MAAM,OAAO;QACjB,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;QAC1F,IAAI,KAAK,IAAI;SACX,KAAK,IAAI,aAAa,qBAAqB,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;UAChL,IAAI,IAAI,OAAO;UACf,gBAAgB,IAAI,CAAC;SACvB;QACF,SAAS,KAAK;SACZ,qBAAqB;SACrB,kBAAkB;QACpB,UAAU;SACR,IAAI;UACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;WAC5D,WAAW,OAAO;UACpB;SACF,UAAU;UACR,IAAI,oBAAoB;WACtB,MAAM;UACR;SACF;QACF;OACF;MACF,SAAS,KAAK;OACZ,qBAAqB;OACrB,kBAAkB;MACpB,UAAU;OACR,IAAI;QACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;SAC5D,WAAW,OAAO;QACpB;OACF,UAAU;QACR,IAAI,oBAAoB;SACtB,MAAM;QACR;OACF;MACF;KACF;IACF;GACF;EACF,SAAS,KAAK;GACZ,oBAAoB;GACpB,iBAAiB;EACnB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;KAC1D,UAAU,OAAO;IACnB;GACF,UAAU;IACR,IAAI,mBAAmB;KACrB,MAAM;IACR;GACF;EACF;EACA,IAAI,kBAAkB,CAAC;EACvB,IAAI,kBAAkB,UAAU,gBAAgB,KAAK,QAAQ,UAAU;OAClE,IAAI,kBAAkB,UAAU,gBAAgB,KAAK,QAAQ,UAAU;OACvE,IAAI,kBAAkB,UAAU,gBAAgB,KAAK,UAAU;EACpE,IAAI,eAAe,CAAC;EACpB,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;EAC1F,IAAI;GACF,KAAK,IAAI,aAAa,KAAK,WAAW,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;IACtK,IAAI,OAAO,OAAO;IAClB,IAAI,CAAC,EAAE,eAAe,IAAI,GAAG;KAC3B,UAAU,KAAK,IAAI;KACnB;IACF;IACA,IAAI,OAAO,KAAK,KAAK;IACrB,IAAI,SAAS,aAAa;KACxB,oBAAoB;KACpB;IACF;IACA,aAAa,KAAK;KAChB;KACA,UAAU,iBAAiB,KAAK,IAAI;KACpC,KAAK,iBAAiB,KAAK,MAAM,KAAK,KAAK;IAC7C,CAAC;GACH;EACF,SAAS,KAAK;GACZ,qBAAqB;GACrB,kBAAkB;EACpB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;KAC5D,WAAW,OAAO;IACpB;GACF,UAAU;IACR,IAAI,oBAAoB;KACtB,MAAM;IACR;GACF;EACF;EACA,IAAI,mBAAmB,IAAI,IAAI,eAAe;EAC9C,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;EAC1F,IAAI;GACF,KAAK,IAAI,aAAa,aAAa,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;IACnK,IAAI,IAAI,OAAO;IACf,IAAI,EAAE,QAAQ,QAAQ,uBAAuB,EAAE,QAAQ,GAAG;KACxD,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;KAC1F,IAAI;MACF,KAAK,IAAI,aAAa,eAAe,EAAE,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;OACjL,IAAI,KAAK,OAAO;OAChB,iBAAiB,IAAI,EAAE;MACzB;KACF,SAAS,KAAK;MACZ,qBAAqB;MACrB,kBAAkB;KACpB,UAAU;MACR,IAAI;OACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;QAC5D,WAAW,OAAO;OACpB;MACF,UAAU;OACR,IAAI,oBAAoB;QACtB,MAAM;OACR;MACF;KACF;IACF;GACF;EACF,SAAS,KAAK;GACZ,qBAAqB;GACrB,kBAAkB;EACpB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;KAC5D,WAAW,OAAO;IACpB;GACF,UAAU;IACR,IAAI,oBAAoB;KACtB,MAAM;IACR;GACF;EACF;EACA,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;EAC1F,IAAI;GACF,KAAK,IAAI,aAAa,gBAAgB,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;IACtK,IAAI,IAAI,OAAO;IACf,IAAI,CAAC,YAAY,qBAAqB,CAAC,GAAG,gBAAgB,GAAG,QAAQ,KAAK,CAAC;GAC7E;EACF,SAAS,KAAK;GACZ,qBAAqB;GACrB,kBAAkB;EACpB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;KAC5D,WAAW,OAAO;IACpB;GACF,UAAU;IACR,IAAI,oBAAoB;KACtB,MAAM;IACR;GACF;EACF;EACA,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;EAC1F,IAAI;GACF,KAAK,IAAI,aAAa,aAAa,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;IACnK,IAAI,KAAK,OAAO;IAChB,IAAI,GAAG,QAAQ,QAAQ,CAAC,YAAY,eAAe,GAAG,QAAQ,GAAG,gBAAgB,GAAG;KAClF,QAAQ,KAAK,GAAG,GAAG;IACrB,OAAO;KACL,UAAU,KAAK,GAAG,IAAI;IACxB;GACF;EACF,SAAS,KAAK;GACZ,qBAAqB;GACrB,kBAAkB;EACpB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;KAC5D,WAAW,OAAO;IACpB;GACF,UAAU;IACR,IAAI,oBAAoB;KACtB,MAAM;IACR;GACF;EACF;EACA,IAAI,QAAQ,SAAS,GAAG;GACtB,IAAI,WAAW,QAAQ,KAAK,GAAG;GAC/B,IAAI,mBAAmB;IACrB,IAAI,cAAc,eAAe,kBAAkB,KAAK;IACxD,IAAI,gBAAgB,MAAM;KACxB,kBAAkB,QAAQ,EAAE,cAAc,cAAc,GAAG,SAAS,GAAG,gBAAgB,QAAQ;KAC/F,UAAU,QAAQ,iBAAiB;IACrC,OAAO,IAAI,EAAE,yBAAyB,kBAAkB,KAAK,KAAK,CAAC,EAAE,qBAAqB,kBAAkB,MAAM,UAAU,GAAG;KAC7H,IAAI,OAAO,kBAAkB,MAAM;KACnC,kBAAkB,QAAQ,EAAE,uBAAuB,EAAE,gBAAgB,CACnE,EAAE,gBAAgB;MAChB,KAAK,GAAG,SAAS;MACjB,QAAQ,GAAG,SAAS;KACtB,GAAG,KAAK,GACR,EAAE,gBAAgB;MAChB,KAAK;MACL,QAAQ;KACV,GAAG,IAAI,CACT,GAAG,CACD,IACF,CAAC,CAAC;KACF,UAAU,QAAQ,iBAAiB;IACrC,OAAO;KACL,UAAU,QAAQ,EAAE,aAAa,EAAE,cAAc,WAAW,GAAG,EAAE,cAAc,QAAQ,CAAC,CAAC;IAC3F;GACF,OAAO;IACL,UAAU,QAAQ,EAAE,aAAa,EAAE,cAAc,WAAW,GAAG,EAAE,cAAc,QAAQ,CAAC,CAAC;GAC3F;EACF,OAAO,IAAI,mBAAmB;GAC5B,UAAU,QAAQ,iBAAiB;EACrC;EACA,KAAK,aAAa;EAClB,IAAI,QAAQ,SAAS,GAAG,eAAe;EACvC,IAAI,oBAAoB,iBAAiB,mBAAmB;GAC1D,IAAI,MAAM,eAAe;GACzB,KAAK,OAAO,EAAE,cAAc,GAAG;GAC/B,IAAI,SAAS,KAAK;GAClB,IAAI,EAAE,aAAa,MAAM,KAAK,OAAO,gBAAgB;IACnD,OAAO,eAAe,OAAO,EAAE,cAAc,GAAG;GAClD;GACA,eAAe;EACjB;CACF,EACF,CAAC;CACD,IAAI,QAAQ,kBAAkB,+BAA+B,GAAG,GAAG;EACjE,eAAe;CACjB;CACA,IAAI,CAAC,cAAc,OAAO;CAC1B,IAAI,SAAS,SAAS,KAAK;EACzB,aAAa,QAAQ,gBAAgB;EACrC,SAAS;CACX,CAAC;CACD,OAAO,OAAO;AAChB;AACA,IAAI,0CAA0C,IAAI,IAAI;CACpD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,IAAI,0CAA0C,IAAI,IAAI;CACpD;CACA;CACA;AACF,CAAC;AACD,SAAS,gBAAgB,QAAQ;CAC/B,OAAO,WAAW,aAAa,OAAO,WAAW,WAAW;AAC9D;AACA,SAAS,wBAAwB,MAAM,KAAK;CAC1C,IAAI,wBAAwB;CAC5B,IAAI,WAAW,KAAK,KAAK;CACzB,IAAI;CACJ,IAAI,cAAc,CAAC;CACnB,IAAI,oBAAoB,EAAE,gBAAgB,QAAQ;CAClD,IAAI,EAAE,gBAAgB,QAAQ,GAAG;EAC/B,WAAW,SAAS;CACtB,OAAO,IAAI,EAAE,sBAAsB,QAAQ,GAAG;EAC5C,IAAI,QAAQ,CAAC;EACb,IAAI,MAAM;EACV,OAAO,EAAE,sBAAsB,GAAG,GAAG;GACnC,MAAM,QAAQ,IAAI,SAAS,IAAI;GAC/B,MAAM,IAAI;EACZ;EACA,IAAI,CAAC,EAAE,gBAAgB,GAAG,GAAG,OAAO;EACpC,WAAW,IAAI;EACf,cAAc;CAChB,OAAO;EACL,OAAO;CACT;CACA,IAAI,WAAW,cAAc,KAAK,WAAW,QAAQ,gBAAgB,KAAK,IAAI,KAAK,KAAK,yBAAyB,YAAY,gBAAgB,QAAQ,2BAA2B,KAAK,IAAI,KAAK,IAAI,uBAAuB,KAAK,aAAa,QAAQ;CACnP,IAAI;CACJ,IAAI,SAAS;EACX,IAAI,QAAQ,QAAQ,KAAK;EACzB,IAAI,EAAE,kBAAkB,KAAK,KAAK,EAAE,yBAAyB,KAAK,KAAK,EAAE,2BAA2B,KAAK,GAAG;GAC1G,IAAI,OAAO,QAAQ,KAAK;GACxB,IAAI,SAAS,EAAE,oBAAoB,IAAI,IAAI,OAAO,KAAK,OAAO,KAAK,IAAI;GACvE,IAAI,CAAC,gBAAgB,MAAM,GAAG,OAAO;GACrC,IAAI,EAAE,2BAA2B,KAAK,GAAG;IACvC,IAAI,YAAY,WAAW,GAAG,OAAO;IACrC,cAAc,YAAY;IAC1B,cAAc,YAAY,MAAM,CAAC;GACnC,OAAO,IAAI,EAAE,kBAAkB,KAAK,GAAG;IACrC,IAAI,WAAW,MAAM;IACrB,cAAc,EAAE,aAAa,QAAQ,IAAI,SAAS,OAAO,OAAO,SAAS,KAAK;GAChF,OAAO;IACL,OAAO;GACT;GACA,IAAI,IAAI,kBAAkB,WAAW,wBAAwB,WAAW,aAAa,WAAW,mBAAmB,CAAC,wBAAwB,IAAI,WAAW,KAAK,CAAC,8BAA8B,SAAS,WAAW,IAAI;IACrN,OAAO;GACT;EACF,OAAO;GACL,OAAO;EACT;CACF,OAAO;EACL,cAAc;EACd,IAAI,IAAI,kBAAkB,CAAC,wBAAwB,IAAI,WAAW,GAAG,OAAO;CAC9E;CACA,IAAI,OAAO,YAAY,SAAS,CAC9B,aACA,GAAG,WACL,CAAC,CAAC,KAAK,GAAG,IAAI;CACd,IAAI,gBAAgB,YAAY,WAAW,KAAK,QAAQ;CACxD,IAAI,kBAAkB,gBAAgB,UAAU,YAAY,WAAW;CACvE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,wBAAwB,IAAI,IAAI,KAAK,CAAC,IAAI,eAAe,IAAI,IAAI,GAAG;EAC7G,OAAO;CACT;CACA,OAAO;EACL;EACA;EACA;CACF;AACF;AACA,SAAS,8BAA8B,SAAS,cAAc;CAC5D,OAAO,QAAQ,eAAe,MAAM,SAAS,eAAe;EAC1D,IAAI,SAAS,cAAc;EAC3B,IAAI,iBAAiB,QAAQ;GAC3B,IAAI,2BAA2B;GAC/B,OAAO,EAAE,sBAAsB,MAAM,KAAK,OAAO,WAAW,cAAc,SAAS,EAAE,qBAAqB,4BAA4B,cAAc,gBAAgB,QAAQ,8BAA8B,KAAK,IAAI,KAAK,IAAI,0BAA0B,MAAM,KAAK,EAAE,qBAAqB,6BAA6B,cAAc,gBAAgB,QAAQ,+BAA+B,KAAK,IAAI,KAAK,IAAI,2BAA2B,MAAM;EAC/a;EACA,OAAO,EAAE,gBAAgB,cAAc,IAAI,MAAM,EAAE,oBAAoB,MAAM,KAAK,EAAE,oBAAoB,MAAM,MAAM,OAAO,SAAS,cAAc;CACpJ,CAAC;AACH;AACA,SAAS,+BAA+B,KAAK;CAC3C,IAAI,UAAU;CACd,SAAS,KAAK,EACZ,kBAAkB,MAAM;EACtB,IAAI,SAAS,OAAO,KAAK,KAAK,OAAO,KAAK;EAC1C,IAAI,WAAW,aAAa,WAAW,iBAAiB;EACxD,IAAI,KAAK,KAAK,eAAe,QAAQ;EACrC,IAAI,QAAQ,CAAC;EACb,IAAI,WAAW,CAAC;EAChB,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,KAAK,IAAI,YAAY,KAAK,KAAK,WAAW,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;IACrK,IAAI,YAAY,MAAM;IACtB,IAAI,CAAC,EAAE,kBAAkB,SAAS,KAAK,UAAU,eAAe,QAAQ;KACtE,SAAS,KAAK,SAAS;KACvB;IACF;IACA,IAAI,eAAe,EAAE,aAAa,UAAU,QAAQ,IAAI,UAAU,SAAS,OAAO,OAAO,UAAU,SAAS,KAAK;IACjH,IAAI,UAAU,KAAK,MAAM,WAAW,UAAU,MAAM,IAAI;IACxD,IAAI,CAAC,wBAAwB,IAAI,YAAY,KAAK,CAAC,WAAW,CAAC,8BAA8B,SAAS,YAAY,GAAG;KACnH,SAAS,KAAK,SAAS;KACvB;IACF;IACA,MAAM,KAAK,SAAS;GACtB;EACF,SAAS,KAAK;GACZ,oBAAoB;GACpB,iBAAiB;EACnB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;KAC1D,UAAU,OAAO;IACnB;GACF,UAAU;IACR,IAAI,mBAAmB;KACrB,MAAM;IACR;GACF;EACF;EACA,IAAI,CAAC,MAAM,QAAQ;EACnB,UAAU;EACV,IAAI,CAAC,SAAS,QAAQ;GACpB,KAAK,KAAK,SAAS,EAAE,cAAc,mBAAmB;GACtD;EACF;EACA,KAAK,KAAK,aAAa;EACvB,KAAK,YAAY,EAAE,kBAAkB,OAAO,EAAE,cAAc,mBAAmB,CAAC,CAAC;CACnF,EACF,CAAC;CACD,OAAO;AACT;AACA,SAAS,cAAc,OAAO;CAC5B,IAAI,QAAQ,MAAM,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC;CAClD,IAAI,OAAO,MAAM,OAAO,MAAM,MAAM,MAAM,CAAC,IAAI;CAC/C,IAAI,OAAO,KAAK,QAAQ,GAAG;CAC3B,OAAO,SAAS,CAAC,IAAI,OAAO,KAAK,MAAM,GAAG,IAAI;AAChD;AACA,IAAI,gBAAgB;CAClB,SAAS;EACP;EACA;EACA;EACA;CACF;CACA,mBAAmB,CACjB,eACA,cACF;CACA,iBAAiB,CACf,cACA,eACF;CACA,QAAQ;EACN;EACA;EACA;EACA;CACF;CACA,kBAAkB,CAChB,cACA,aACF;CACA,gBAAgB,CACd,aACA,cACF;CACA,OAAO;EACL;EACA;EACA;EACA;CACF;CACA,KAAK;EACH;EACA;EACA;CACF;CACA,aAAa;EACX;EACA;EACA;EACA;CACF;CACA,aAAa;EACX;EACA;EACA;EACA;CACF;CACA,cAAc;EACZ;EACA;EACA;EACA;CACF;AACF;AACA,SAAS,eAAe,UAAU;CAChC,IAAI;CACJ,QAAQ,0BAA0B,cAAc,eAAe,QAAQ,4BAA4B,KAAK,IAAI,0BAA0B,CACpI,QACF;AACF;AACA,IAAI,gBAAgB,WAAW;CAC7B,IAAI,IAAI,CAAC;CACT,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;CACvF,IAAI;EACF,KAAK,IAAI,YAAY,OAAO,QAAQ,oBAAoB,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;GACrL,IAAI,CAAC,MAAM,UAAU,MAAM;GAC3B,IAAI,UAAU,EAAE,UAAU,IAAI,EAAE,UAAU;EAC5C;CACF,SAAS,KAAK;EACZ,oBAAoB;EACpB,iBAAiB;CACnB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;IAC1D,UAAU,OAAO;GACnB;EACF,UAAU;GACR,IAAI,mBAAmB;IACrB,MAAM;GACR;EACF;CACF;CACA,OAAO;AACT,EAAC,CAAE;AACH,SAAS,qBAAqB,OAAO;CACnC,IAAI,SAAS,cAAc,KAAK;CAChC,IAAI;CACJ,OAAO,gBAAgB,uBAAuB,aAAa,aAAa,QAAQ,yBAAyB,KAAK,IAAI,uBAAuB,MAAM;AACjJ;AACA,SAAS,YAAY,MAAM,KAAK;CAC9B,OAAO,KAAK,KAAK,SAAS,GAAG;EAC3B,OAAO,IAAI,IAAI,CAAC;CAClB,CAAC;AACH;AACA,SAAS,uBAAuB,UAAU;CACxC,OAAO,qBAAqB,cAAc,KAAK,KAAK,YAAY;AAClE;AACA,SAAS,iBAAiB,KAAK,UAAU,OAAO;CAC9C,IAAI,WAAW,iBAAiB,KAAK,QAAQ;CAC7C,IAAI,qBAAqB,cAAc,KAAK,GAAG,OAAO;CACtD,IAAI,SAAS,eAAe,KAAK;CACjC,IAAI,SAAS,gBAAgB,KAAK;CAClC,IAAI,WAAW,MAAM;EACnB,IAAI,SAAS,WAAW,QAAQ,IAAI,gBAAgB;EACpD,IAAI,CAAC,OAAO,IAAI,OAAO;EACvB,IAAI,UAAU,CAAC;EACf,IAAI,OAAO,MAAM,SAAS,MAAM;GAC9B,IAAI,OAAO,eAAe,KAAK,UAAU,OAAO,MAAM,MAAM,CAAC,CAAC;GAC9D,IAAI,SAAS,MAAM,OAAO;GAC1B,QAAQ,KAAK,IAAI;EACnB;EACA,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,KAAK,IAAI,YAAY,OAAO,MAAM,QAAQ,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;IACrK,IAAI,SAAS,MAAM;IACnB,IAAI,cAAc,eAAe,KAAK,UAAU,OAAO,SAAS,OAAO,SAAS;IAChF,IAAI,gBAAgB,MAAM,OAAO;IACjC,QAAQ,KAAK,WAAW;GAC1B;EACF,SAAS,KAAK;GACZ,oBAAoB;GACpB,iBAAiB;EACnB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;KAC1D,UAAU,OAAO;IACnB;GACF,UAAU;IACR,IAAI,mBAAmB;KACrB,MAAM;IACR;GACF;EACF;EACA,OAAO,QAAQ,SAAS,QAAQ,KAAK,GAAG,IAAI;CAC9C;CACA,IAAI,WAAW,MAAM,OAAO;CAC5B,IAAI,YAAY,mBAAmB,UAAU,MAAM;CACnD,IAAI,cAAc,MAAM,OAAO;CAC/B,OAAO,gBAAgB;EACrB,MAAM;EACN,OAAO,UAAU;EACjB,WAAW,UAAU;EACrB,WAAW,KAAK;CAClB,GAAG,IAAI,aAAa;AACtB;AACA,SAAS,eAAe,KAAK,UAAU,SAAS,WAAW;CACzD,IAAI;CACJ,IAAI;CACJ,KAAK,iCAAiC,qBAAqB,eAAe,QAAQ,mCAAmC,KAAK,IAAI,KAAK,IAAI,+BAA+B,UAAU;EAC9K,YAAY;GACV,OAAO;GACP,WAAW;EACb;CACF,OAAO;EACL,YAAY,kBAAkB,KAAK,UAAU,OAAO;EACpD,IAAI,cAAc,QAAQ,oBAAoB,KAAK,OAAO,GAAG;GAC3D,IAAI;GACJ,IAAI,WAAW,iBAAiB,QAAQ;GACxC,IAAI,CAAC,cAAc,gCAAgC,IAAI,cAAc,gBAAgB,QAAQ,kCAAkC,KAAK,IAAI,KAAK,IAAI,8BAA8B,eAAe,KAAK,GAAG;IACpM,YAAY,mBAAmB,UAAU,OAAO,OAAO,CAAC;GAC1D;EACF;CACF;CACA,IAAI,cAAc,MAAM,OAAO;CAC/B,OAAO,gBAAgB;EACrB,MAAM;EACN,OAAO,UAAU;EACjB,WAAW,UAAU;EACrB,WAAW,UAAU,SAAS,YAAY,KAAK;CACjD,GAAG,IAAI,aAAa;AACtB;AACA,SAAS,eAAe,OAAO;CAC7B,IAAI,CAAC,OAAO,OAAO;CACnB,IAAI,EAAE,gBAAgB,KAAK,GAAG,OAAO,MAAM;CAC3C,IAAI,EAAE,yBAAyB,KAAK,KAAK,EAAE,gBAAgB,MAAM,UAAU,GAAG;EAC5E,OAAO,MAAM,WAAW;CAC1B;CACA,IAAI,EAAE,yBAAyB,KAAK,KAAK,EAAE,kBAAkB,MAAM,UAAU,GAAG;EAC9E,IAAI,MAAM,WAAW,YAAY,WAAW,KAAK,MAAM,WAAW,OAAO,WAAW,GAAG;GACrF,OAAO,MAAM,WAAW,OAAO,EAAE,CAAC,MAAM;EAC1C;CACF;CACA,OAAO;AACT;AACA,SAAS,gBAAgB,OAAO;CAC9B,IAAI,CAAC,OAAO,OAAO;CACnB,IAAI,EAAE,yBAAyB,KAAK,GAAG;EACrC,IAAI,EAAE,iBAAiB,MAAM,UAAU,GAAG,OAAO,MAAM,WAAW;EAClE,IAAI,EAAE,kBAAkB,MAAM,UAAU,KAAK,MAAM,WAAW,aAAa,OAAO,EAAE,iBAAiB,MAAM,WAAW,QAAQ,GAAG;GAC/H,OAAO,CAAC,MAAM,WAAW,SAAS;EACpC;CACF;CACA,OAAO;AACT;AACA,SAAS,iBAAiB,KAAK,MAAM;CACnC,OAAO,IAAI,WAAW,SAAS;AACjC;AACA,SAAS,kBAAkB,OAAO,OAAO;CACvC,IAAI,CAAC,OAAO,OAAO;CACnB,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,SAAS,KAAK;CACrD,IAAI,iBAAiB,KAAK,OAAO,MAAM,IAAI,KAAK;CAChD,OAAO,SAAS;AAClB;AACA,SAAS,kBAAkB,KAAK,MAAM,OAAO;CAC3C,IAAI;CACJ,IAAI,WAAW,iBAAiB,IAAI;CACpC,IAAI,SAAS,gBAAgB,YAAY,mBAAmB,gCAAgC,IAAI,cAAc,gBAAgB,QAAQ,kCAAkC,KAAK,IAAI,KAAK,IAAI,8BAA8B,WAAW,KAAK,GAAG;EACzO,IAAI,aAAa,SAAS;GACxB,IAAI,SAAS,eAAe,KAAK;GACjC,OAAO,SAAS;IACd,OAAO;IACP,WAAW;GACb,IAAI;EACN;EACA,OAAO;GACL;GACA,WAAW;EACb;CACF;CACA,IAAI,SAAS,cAAc;EACzB,OAAO,gBAAgB,SAAS;GAC9B;GACA,WAAW;EACb,IAAI;CACN;CACA,IAAI,SAAS,YAAY,QAAQ,KAAK,KAAK,GAAG;EAC5C,OAAO;GACL;GACA,WAAW;EACb;CACF;CACA,IAAI,kBAAkB,KAAK,KAAK,GAAG;EACjC,OAAO,SAAS,eAAe;GAC7B;GACA,WAAW;EACb,IAAI;CACN;CACA,IAAI,MAAM,SAAS,GAAG,GAAG;EACvB,IAAI,QAAQ;GACV,QAAQ;GACR,OAAO;GACP,OAAO;GACP,OAAO;EACT;EACA,IAAI,iBAAiB,IAAI,MAAM,UAAU,MAAM,QAAQ;GACrD,OAAO;IACL,OAAO,MAAM;IACb,WAAW;GACb;EACF;EACA,OAAO;GACL;GACA,WAAW;EACb;CACF;CACA,IAAI,UAAU,UAAU,iBAAiB,IAAI,MAAM,QAAQ;EACzD,OAAO;GACL;GACA,WAAW;EACb;CACF;CACA,IAAI,SAAS,cAAc,OAAO;EAChC;EACA,WAAW;CACb;CACA,IAAI,MAAM,SAAS,GAAG,KAAK,MAAM,SAAS,GAAG,KAAK,MAAM,SAAS,GAAG,KAAK,MAAM,WAAW,GAAG,KAAK,MAAM,WAAW,GAAG,KAAK,iBAAiB,KAAK,KAAK,GAAG;EACvJ,OAAO;GACL;GACA,WAAW;EACb;CACF;CACA,OAAO;EACL;EACA,WAAW;CACb;AACF;AACA,IAAI,gCAAgC,IAAI,IAAI;CAC1C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,SAAS,mBAAmB,MAAM,OAAO;CACvC,IAAI,SAAS,WAAW;EACtB,IAAI,MAAM,QAAQ;EAClB,OAAO,OAAO,UAAU,GAAG,IAAI;GAC7B,OAAO,OAAO,GAAG;GACjB,WAAW;EACb,IAAI;GACF,OAAO,OAAO,KAAK;GACnB,WAAW;EACb;CACF;CACA,IAAI,SAAS,iBAAiB,SAAS,cAAc;EACnD,OAAO;GACL,OAAO,OAAO,KAAK;GACnB,WAAW;EACb;CACF;CACA,IAAI,SAAS,WAAW,SAAS,YAAY,SAAS,UAAU;EAC9D,IAAI,UAAU,GAAG,OAAO;GACtB,OAAO;GACP,WAAW;EACb;EACA,IAAI,UAAU,GAAG,OAAO;GACtB,OAAO;GACP,WAAW;EACb;EACA,OAAO;GACL,OAAO,OAAO,KAAK;GACnB,WAAW;EACb;CACF;CACA,IAAI,SAAS,QAAQ;EACnB,OAAO,UAAU,IAAI;GACnB,OAAO;GACP,WAAW;EACb,IAAI;GACF,OAAO,OAAO,KAAK;GACnB,WAAW;EACb;CACF;CACA,IAAI,SAAS,cAAc,SAAS,cAAc;EAChD,OAAO;GACL,OAAO,OAAO,KAAK;GACnB,WAAW;EACb;CACF;CACA,IAAI,SAAS,UAAU;EACrB,OAAO,OAAO,UAAU,KAAK,KAAK,SAAS,IAAI;GAC7C,OAAO,OAAO,KAAK;GACnB,WAAW;EACb,IAAI;GACF,OAAO,OAAO,KAAK;GACnB,WAAW;EACb;CACF;CACA,IAAI,SAAS,cAAc;EACzB,OAAO,gBAAgB,OAAO,KAAK,KAAK;GACtC,OAAO,OAAO,KAAK;GACnB,WAAW;EACb,IAAI;CACN;CACA,IAAI,SAAS,UAAU,OAAO;CAC9B,IAAI,SAAS,OAAO,SAAS,KAAK;EAChC,OAAO;GACL,OAAO,GAAG,MAAM;GAChB,WAAW;EACb;CACF;CACA,IAAI,KAAK,SAAS,OAAO,KAAK,KAAK,WAAW,QAAQ,GAAG;EACvD,OAAO;GACL,OAAO,GAAG,MAAM;GAChB,WAAW;EACb;CACF;CACA,IAAI,cAAc,IAAI,IAAI,GAAG;EAC3B,OAAO;GACL,OAAO,GAAG,MAAM;GAChB,WAAW;EACb;CACF;CACA,OAAO;AACT"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/to-tailwind",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"@babel/traverse": "^7.25.4",
|
|
37
37
|
"@babel/generator": "^7.25.5",
|
|
38
38
|
"@babel/types": "^7.25.4",
|
|
39
|
-
"@tamagui/shorthands": "3.0.
|
|
40
|
-
"@tamagui/style-grammar": "3.0.
|
|
39
|
+
"@tamagui/shorthands": "3.0.1",
|
|
40
|
+
"@tamagui/style-grammar": "3.0.1"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"vitest": "4.1.0"
|
|
@@ -46,5 +46,6 @@
|
|
|
46
46
|
"type": "git",
|
|
47
47
|
"url": "git+https://github.com/tamagui/tamagui.git",
|
|
48
48
|
"directory": "code/core/to-tailwind"
|
|
49
|
-
}
|
|
49
|
+
},
|
|
50
|
+
"releaseSourceCommit": "c156b7cc55e5a6cc5883ebc8189720850ac32dbd"
|
|
50
51
|
}
|
package/src/transform.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
type TokenCategory,
|
|
17
17
|
v6RemovedThemeNames,
|
|
18
18
|
v6ThemeNameReplacements,
|
|
19
|
+
propTokenGroupFallbacks,
|
|
19
20
|
} from '@tamagui/style-grammar/tooling'
|
|
20
21
|
import { componentToTag } from './maps/componentToTag'
|
|
21
22
|
// CANONICAL default shorthands — a STATIC import (declared dep), ESM+CJS-safe, single owner.
|
|
@@ -88,6 +89,13 @@ function createTransformGrammarConfig(
|
|
|
88
89
|
tokenNames[category] = names
|
|
89
90
|
}
|
|
90
91
|
}
|
|
92
|
+
// a prop-named group binds its property; without one it reads the fallback category
|
|
93
|
+
for (const group in propTokenGroupFallbacks) {
|
|
94
|
+
const own = options.tokens?.[group]
|
|
95
|
+
const names = own ? new Set<string>() : tokenNames[propTokenGroupFallbacks[group]]
|
|
96
|
+
if (own) addConfigNames(names!, own)
|
|
97
|
+
if (names) tokenNames[group] = names
|
|
98
|
+
}
|
|
91
99
|
if (options.fonts) {
|
|
92
100
|
tokenNames.fontFamily ||= new Set<string>()
|
|
93
101
|
tokenNames.fontSize ||= new Set<string>()
|
|
@@ -126,6 +134,15 @@ export interface TransformOptions {
|
|
|
126
134
|
// rename View→div, Text→span, etc. DEFAULT true for the library (tamagui.dev doc snippets);
|
|
127
135
|
// the CLI path passes false so cross-platform Tamagui components are preserved.
|
|
128
136
|
renameComponents?: boolean
|
|
137
|
+
// Rewrite the primitive imports to the package-selected Tailwind frontend. This is intentionally
|
|
138
|
+
// conservative: only html, View, and Text bindings used exclusively as JSX elements move from
|
|
139
|
+
// `tamagui` / `@tamagui/core` to `@tamagui/tailwind`. Component-library and styled() bindings
|
|
140
|
+
// retain their original frontend, so the transform never emits className for a component that
|
|
141
|
+
// cannot consume Tailwind utilities on native.
|
|
142
|
+
rewriteImports?: boolean
|
|
143
|
+
// Preserve original line numbers for source-file migrations. Rendered docs opt out so removing
|
|
144
|
+
// multi-line style props does not leave large runs of blank lines in displayed examples.
|
|
145
|
+
retainLines?: boolean
|
|
129
146
|
// the app config's `media` (object or key list). ANY configured media key round-trips as an
|
|
130
147
|
// identity modifier (`tablet:` stays `tablet:`). when omitted, a default key set is the fallback.
|
|
131
148
|
media?: Record<string, any> | string[]
|
|
@@ -152,6 +169,7 @@ interface Ctx {
|
|
|
152
169
|
shorthands: Record<string, string>
|
|
153
170
|
grammarConfig: GrammarConfigView
|
|
154
171
|
modifierRegistry: ModifierRegistryView
|
|
172
|
+
rewriteImports: boolean
|
|
155
173
|
}
|
|
156
174
|
|
|
157
175
|
/**
|
|
@@ -204,6 +222,7 @@ export function tamaguiToTailwind(
|
|
|
204
222
|
shorthands,
|
|
205
223
|
grammarConfig,
|
|
206
224
|
modifierRegistry: createModifierRegistry(grammarConfig).registry,
|
|
225
|
+
rewriteImports: options.rewriteImports === true,
|
|
207
226
|
}
|
|
208
227
|
|
|
209
228
|
let ast: t.File
|
|
@@ -409,9 +428,16 @@ export function tamaguiToTailwind(
|
|
|
409
428
|
},
|
|
410
429
|
})
|
|
411
430
|
|
|
431
|
+
if (options.rewriteImports && rewriteTailwindFrontendImports(ast)) {
|
|
432
|
+
didTransform = true
|
|
433
|
+
}
|
|
434
|
+
|
|
412
435
|
if (!didTransform) return source // true no-op → original bytes (no generator reformat)
|
|
413
436
|
|
|
414
|
-
const output = generate(ast, {
|
|
437
|
+
const output = generate(ast, {
|
|
438
|
+
retainLines: options.retainLines !== false,
|
|
439
|
+
concise: false,
|
|
440
|
+
})
|
|
415
441
|
return output.code
|
|
416
442
|
}
|
|
417
443
|
|
|
@@ -431,6 +457,8 @@ const knownCompoundComponents = new Set<string>([
|
|
|
431
457
|
'Tabs.Tab',
|
|
432
458
|
])
|
|
433
459
|
|
|
460
|
+
const tailwindFrontendImports = new Set(['html', 'View', 'Text'])
|
|
461
|
+
|
|
434
462
|
// a module specifier counts as "tamagui" if it's the umbrella package or any @tamagui/* scope.
|
|
435
463
|
function isTamaguiSource(source: string): boolean {
|
|
436
464
|
return source === 'tamagui' || source.startsWith('@tamagui/')
|
|
@@ -498,19 +526,32 @@ function resolveTamaguiComponent(
|
|
|
498
526
|
} else {
|
|
499
527
|
return null // default import from tamagui isn't a named component
|
|
500
528
|
}
|
|
529
|
+
|
|
530
|
+
if (
|
|
531
|
+
ctx.rewriteImports &&
|
|
532
|
+
source !== '@tamagui/tailwind' &&
|
|
533
|
+
((source !== 'tamagui' && source !== '@tamagui/core') ||
|
|
534
|
+
!tailwindFrontendImports.has(tamaguiBase) ||
|
|
535
|
+
!isTailwindFrontendOnlyBinding(binding, tamaguiBase))
|
|
536
|
+
) {
|
|
537
|
+
return null
|
|
538
|
+
}
|
|
501
539
|
} else {
|
|
502
540
|
return null // LOCAL binding (const/let/function/param) → not tamagui
|
|
503
541
|
}
|
|
504
542
|
} else {
|
|
505
543
|
tamaguiBase = baseName // UNBOUND → legacy built-in assumption
|
|
544
|
+
if (ctx.rewriteImports && !tailwindFrontendImports.has(tamaguiBase)) return null
|
|
506
545
|
}
|
|
507
546
|
|
|
508
547
|
const name = memberChain.length ? [tamaguiBase, ...memberChain].join('.') : tamaguiBase
|
|
509
548
|
const isSimpleKnown = memberChain.length === 0 && name in componentToTag
|
|
549
|
+
const isHTMLPrimitive = tamaguiBase === 'html' && memberChain.length === 1
|
|
510
550
|
|
|
511
551
|
// gate: known simple, known compound, or caller allowlist — else skip
|
|
512
552
|
if (
|
|
513
553
|
!isSimpleKnown &&
|
|
554
|
+
!isHTMLPrimitive &&
|
|
514
555
|
!knownCompoundComponents.has(name) &&
|
|
515
556
|
!ctx.componentAllow.has(name)
|
|
516
557
|
) {
|
|
@@ -519,6 +560,73 @@ function resolveTamaguiComponent(
|
|
|
519
560
|
return { name, isSimpleKnown, isPlainIdentifier }
|
|
520
561
|
}
|
|
521
562
|
|
|
563
|
+
function isTailwindFrontendOnlyBinding(binding: any, importedName: string): boolean {
|
|
564
|
+
return binding.referencePaths.every((referencePath: any) => {
|
|
565
|
+
const parent = referencePath.parent
|
|
566
|
+
if (importedName === 'html') {
|
|
567
|
+
return (
|
|
568
|
+
t.isJSXMemberExpression(parent) &&
|
|
569
|
+
parent.object === referencePath.node &&
|
|
570
|
+
(t.isJSXOpeningElement(referencePath.parentPath?.parent) ||
|
|
571
|
+
t.isJSXClosingElement(referencePath.parentPath?.parent))
|
|
572
|
+
)
|
|
573
|
+
}
|
|
574
|
+
return (
|
|
575
|
+
t.isJSXIdentifier(referencePath.node) &&
|
|
576
|
+
(t.isJSXOpeningElement(parent) || t.isJSXClosingElement(parent)) &&
|
|
577
|
+
parent.name === referencePath.node
|
|
578
|
+
)
|
|
579
|
+
})
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
function rewriteTailwindFrontendImports(ast: t.File): boolean {
|
|
583
|
+
let changed = false
|
|
584
|
+
|
|
585
|
+
traverse(ast, {
|
|
586
|
+
ImportDeclaration(path) {
|
|
587
|
+
const source = String(path.node.source.value)
|
|
588
|
+
if (source !== 'tamagui' && source !== '@tamagui/core') return
|
|
589
|
+
if (path.node.importKind === 'type') return
|
|
590
|
+
|
|
591
|
+
const moved: t.ImportSpecifier[] = []
|
|
592
|
+
const retained: t.ImportDeclaration['specifiers'] = []
|
|
593
|
+
|
|
594
|
+
for (const specifier of path.node.specifiers) {
|
|
595
|
+
if (!t.isImportSpecifier(specifier) || specifier.importKind === 'type') {
|
|
596
|
+
retained.push(specifier)
|
|
597
|
+
continue
|
|
598
|
+
}
|
|
599
|
+
const importedName = t.isIdentifier(specifier.imported)
|
|
600
|
+
? specifier.imported.name
|
|
601
|
+
: String(specifier.imported.value)
|
|
602
|
+
const binding = path.scope.getBinding(specifier.local.name)
|
|
603
|
+
if (
|
|
604
|
+
!tailwindFrontendImports.has(importedName) ||
|
|
605
|
+
!binding ||
|
|
606
|
+
!isTailwindFrontendOnlyBinding(binding, importedName)
|
|
607
|
+
) {
|
|
608
|
+
retained.push(specifier)
|
|
609
|
+
continue
|
|
610
|
+
}
|
|
611
|
+
moved.push(specifier)
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
if (!moved.length) return
|
|
615
|
+
changed = true
|
|
616
|
+
|
|
617
|
+
if (!retained.length) {
|
|
618
|
+
path.node.source = t.stringLiteral('@tamagui/tailwind')
|
|
619
|
+
return
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
path.node.specifiers = retained
|
|
623
|
+
path.insertAfter(t.importDeclaration(moved, t.stringLiteral('@tamagui/tailwind')))
|
|
624
|
+
},
|
|
625
|
+
})
|
|
626
|
+
|
|
627
|
+
return changed
|
|
628
|
+
}
|
|
629
|
+
|
|
522
630
|
// the prop-prefix a class token targets (modifiers + negation stripped): "hover:p-2" → "p",
|
|
523
631
|
// "-mt-1" → "mt", "hidden" → "hidden".
|
|
524
632
|
function classPrefixOf(token: string): string {
|
|
@@ -735,11 +843,12 @@ function formatStringValue(ctx: Ctx, prop: string, value: string): FormattedValu
|
|
|
735
843
|
return { value, valueKind: 'convenience' }
|
|
736
844
|
}
|
|
737
845
|
|
|
738
|
-
// a
|
|
739
|
-
//
|
|
740
|
-
//
|
|
741
|
-
|
|
742
|
-
|
|
846
|
+
// a numeric-looking lineHeight string is a V3 ratio after configured token names have had
|
|
847
|
+
// first refusal. Other numeric-looking strings stay authored because reinterpreting them as a
|
|
848
|
+
// Tailwind scale or token would diverge from the source string.
|
|
849
|
+
if (/^-?\d+(\.\d+)?$/.test(value)) {
|
|
850
|
+
return prop === 'lineHeight' ? { value, valueKind: 'arbitrary' } : null
|
|
851
|
+
}
|
|
743
852
|
|
|
744
853
|
// percentages: NAMED fraction ONLY when string-exact (50/25/75/100); an inexact value like
|
|
745
854
|
// 33.333% must stay the EXACT arbitrary (1/3 resolves to 33.3333…% ≠ source).
|
|
@@ -797,6 +906,12 @@ const pxLengthProps = new Set([
|
|
|
797
906
|
'paddingRight',
|
|
798
907
|
'paddingBottom',
|
|
799
908
|
'paddingLeft',
|
|
909
|
+
'paddingStart',
|
|
910
|
+
'paddingEnd',
|
|
911
|
+
'paddingInlineStart',
|
|
912
|
+
'paddingInlineEnd',
|
|
913
|
+
'paddingBlockStart',
|
|
914
|
+
'paddingBlockEnd',
|
|
800
915
|
'paddingHorizontal',
|
|
801
916
|
'paddingVertical',
|
|
802
917
|
'margin',
|
|
@@ -804,6 +919,12 @@ const pxLengthProps = new Set([
|
|
|
804
919
|
'marginRight',
|
|
805
920
|
'marginBottom',
|
|
806
921
|
'marginLeft',
|
|
922
|
+
'marginStart',
|
|
923
|
+
'marginEnd',
|
|
924
|
+
'marginInlineStart',
|
|
925
|
+
'marginInlineEnd',
|
|
926
|
+
'marginBlockStart',
|
|
927
|
+
'marginBlockEnd',
|
|
807
928
|
'marginHorizontal',
|
|
808
929
|
'marginVertical',
|
|
809
930
|
'gap',
|
|
@@ -814,14 +935,23 @@ const pxLengthProps = new Set([
|
|
|
814
935
|
'bottom',
|
|
815
936
|
'left',
|
|
816
937
|
'inset',
|
|
938
|
+
'insetInlineStart',
|
|
939
|
+
'insetInlineEnd',
|
|
817
940
|
'borderRadius',
|
|
818
941
|
'borderTopLeftRadius',
|
|
819
942
|
'borderTopRightRadius',
|
|
820
943
|
'borderBottomLeftRadius',
|
|
821
944
|
'borderBottomRightRadius',
|
|
945
|
+
'borderTopStartRadius',
|
|
946
|
+
'borderTopEndRadius',
|
|
947
|
+
'borderBottomStartRadius',
|
|
948
|
+
'borderBottomEndRadius',
|
|
949
|
+
'borderStartStartRadius',
|
|
950
|
+
'borderStartEndRadius',
|
|
951
|
+
'borderEndStartRadius',
|
|
952
|
+
'borderEndEndRadius',
|
|
822
953
|
'fontSize',
|
|
823
954
|
'letterSpacing',
|
|
824
|
-
'lineHeight',
|
|
825
955
|
])
|
|
826
956
|
|
|
827
957
|
function formatNumericValue(prop: string, value: number): FormattedValue | null {
|
|
@@ -836,7 +966,9 @@ function formatNumericValue(prop: string, value: number): FormattedValue | null
|
|
|
836
966
|
}
|
|
837
967
|
|
|
838
968
|
// UNITLESS number → [N] (no px): number on both platforms
|
|
839
|
-
if (prop === 'aspectRatio'
|
|
969
|
+
if (prop === 'aspectRatio' || prop === 'lineHeight') {
|
|
970
|
+
return { value: String(value), valueKind: 'arbitrary' }
|
|
971
|
+
}
|
|
840
972
|
if (prop === 'scale' || prop === 'scaleX' || prop === 'scaleY') {
|
|
841
973
|
if (value === 0) return { value: '0', valueKind: 'convenience' }
|
|
842
974
|
if (value === 1) return { value: '100', valueKind: 'convenience' }
|