@tamagui/to-tailwind 3.0.0-beta.922.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","names":["canonicalShorthands"],"sources":["esm/transform.js"],"sourcesContent":["import { parse } from \"@babel/parser\";\nimport _traverse from \"@babel/traverse\";\nimport _generate from \"@babel/generator\";\nimport * as t from \"@babel/types\";\nimport {\n defaultMediaKeys,\n createModifierRegistry,\n fontWeightNames,\n formatCandidate,\n getTokenCategory,\n propToTailwindPrefix,\n parseValue,\n standaloneValueProps,\n v6RemovedThemeNames,\n v6ThemeNameReplacements\n} from \"@tamagui/style-grammar/tooling\";\nimport { componentToTag } from \"./maps/componentToTag\";\nimport { shorthands as canonicalShorthands } from \"@tamagui/shorthands/v4\";\nconst traverse = _traverse.default ?? _traverse;\nconst generate = _generate.default ?? _generate;\nconst defaultShorthands = canonicalShorthands;\nconst removedV6ThemeNames = new Set(v6RemovedThemeNames);\nfunction getV6ThemeName(name) {\n const opacityIndex = name.indexOf(\"/\");\n const baseName = opacityIndex === -1 ? name : name.slice(0, opacityIndex);\n if (removedV6ThemeNames.has(baseName)) return null;\n const mapped = v6ThemeNameReplacements[baseName] ?? baseName;\n return opacityIndex === -1 ? mapped : `${mapped}${name.slice(opacityIndex)}`;\n}\nfunction namesToSet(names) {\n if (!names) return /* @__PURE__ */ new Set();\n if (Array.isArray(names)) return new Set(names);\n if (names instanceof Set) return new Set(names);\n return new Set(Object.keys(names));\n}\nfunction addConfigNames(target, source) {\n if (!source) return;\n for (const key in source) target.add(key);\n}\nfunction createTransformGrammarConfig(options, mediaKeys, shorthands) {\n if (options.grammarConfig) {\n return { ...options.grammarConfig, shorthands, mediaNames: mediaKeys };\n }\n const tokenNames = {};\n const tokenCategories = [\"space\", \"size\", \"radius\", \"zIndex\", \"color\"];\n const fontCategories = [\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"lineHeight\",\n \"letterSpacing\"\n ];\n const authoritative = [\"tokens\", \"fonts\", \"themes\", \"media\", \"shorthands\"].some(\n (key) => key in options\n );\n if (authoritative) {\n for (const category of [...tokenCategories, ...fontCategories]) {\n tokenNames[category] = /* @__PURE__ */ new Set();\n }\n }\n for (const category of tokenCategories) {\n if (options.tokens?.[category]) {\n const names = tokenNames[category] || /* @__PURE__ */ new Set();\n addConfigNames(names, options.tokens[category]);\n tokenNames[category] = names;\n }\n }\n if (options.fonts) {\n tokenNames.fontFamily ||= /* @__PURE__ */ new Set();\n tokenNames.fontSize ||= /* @__PURE__ */ new Set();\n tokenNames.fontWeight ||= /* @__PURE__ */ new Set();\n tokenNames.lineHeight ||= /* @__PURE__ */ new Set();\n tokenNames.letterSpacing ||= /* @__PURE__ */ new Set();\n for (const familyName in options.fonts) {\n tokenNames.fontFamily.add(familyName);\n const font = options.fonts[familyName];\n addConfigNames(tokenNames.fontSize, font?.size);\n addConfigNames(tokenNames.fontWeight, font?.weight);\n addConfigNames(tokenNames.lineHeight, font?.lineHeight);\n addConfigNames(tokenNames.letterSpacing, font?.letterSpacing);\n }\n }\n const themeNames = /* @__PURE__ */ new Set();\n if (options.themes) {\n tokenNames.color ||= /* @__PURE__ */ new Set();\n for (const themeName in options.themes) {\n themeNames.add(themeName);\n for (const name in options.themes[themeName]) {\n const mapped = getV6ThemeName(name);\n if (mapped) tokenNames.color.add(mapped);\n }\n }\n }\n return {\n shorthands,\n mediaNames: mediaKeys,\n themeNames,\n tokenNames\n };\n}\nfunction findParseError(source) {\n try {\n const ast = parse(source, {\n sourceType: \"module\",\n plugins: [\"jsx\", \"typescript\"],\n errorRecovery: true\n });\n const errs = ast.errors;\n if (errs && errs.length > 0) {\n const e = errs[0];\n const loc = e?.loc ? `${e.loc.line}:${e.loc.column}` : \"?\";\n return `${e?.reasonCode || e?.message || \"parse error\"} at ${loc}`;\n }\n return null;\n } catch (e) {\n return e.message || \"parse error\";\n }\n}\nfunction tamaguiToTailwind(source, options = {}) {\n const { renameComponents = true } = options;\n const mediaKeys = options.grammarConfig?.mediaNames ? namesToSet(options.grammarConfig.mediaNames) : options.media ? new Set(Array.isArray(options.media) ? options.media : Object.keys(options.media)) : new Set(defaultMediaKeys);\n const shorthands = options.grammarConfig?.shorthands ?? options.shorthands ?? defaultShorthands;\n const grammarConfig = createTransformGrammarConfig(options, mediaKeys, shorthands);\n const ctx = {\n mediaKeys,\n componentAllow: new Set(options.components ?? []),\n shorthands,\n grammarConfig,\n modifierRegistry: createModifierRegistry(grammarConfig).registry\n };\n let ast;\n try {\n ast = parse(source, {\n sourceType: \"module\",\n plugins: [\"jsx\", \"typescript\"],\n errorRecovery: true\n });\n } catch {\n return source;\n }\n if (ast.errors && ast.errors.length > 0) {\n return source;\n }\n let didTransform = false;\n traverse(ast, {\n JSXOpeningElement(path) {\n const node = path.node;\n const resolved = resolveTamaguiComponent(path, ctx);\n if (resolved === null) return;\n const { name: componentName, isSimpleKnown, isPlainIdentifier } = resolved;\n if (node.attributes.some((a) => t.isJSXSpreadAttribute(a))) return;\n const hasDynamicClassName = node.attributes.some(\n (attr) => t.isJSXAttribute(attr) && attr.name.name === \"className\" && getStringValue(attr.value) === null\n );\n if (hasDynamicClassName) return;\n const hasClassName = node.attributes.some(\n (attr) => t.isJSXAttribute(attr) && attr.name.name === \"className\"\n );\n const hasNeighboringStyleProp = node.attributes.some((attr) => {\n if (!t.isJSXAttribute(attr) || attr.name.name === \"className\") return false;\n const name = attr.name.name;\n return isConvertibleStyleProp(resolveShorthand(ctx, name));\n });\n if (hasClassName && hasNeighboringStyleProp) return;\n const classes = [];\n const keptAttrs = [];\n let existingClassName = null;\n const blockedLeafKeys = /* @__PURE__ */ new Set();\n for (const a of node.attributes) {\n if (t.isJSXAttribute(a) && a.name.name === \"className\") {\n const v = getStringValue(a.value);\n if (v) {\n for (const tok of v.split(/\\s+/)) {\n if (tok) for (const k of leafKeysOfClassToken(tok)) blockedLeafKeys.add(k);\n }\n }\n }\n }\n const implicitClasses = [];\n if (componentName === \"XStack\") implicitClasses.push(\"flex\", \"flex-row\");\n else if (componentName === \"YStack\") implicitClasses.push(\"flex\", \"flex-col\");\n else if (componentName === \"ZStack\") implicitClasses.push(\"relative\");\n const styleEntries = [];\n for (const attr of node.attributes) {\n if (!t.isJSXAttribute(attr)) {\n keptAttrs.push(attr);\n continue;\n }\n const name = attr.name.name;\n if (name === \"className\") {\n existingClassName = attr;\n continue;\n }\n styleEntries.push({\n attr,\n fullProp: resolveShorthand(ctx, name),\n cls: propValueToClass(ctx, name, attr.value)\n });\n }\n const retainedLeafKeys = new Set(blockedLeafKeys);\n for (const e of styleEntries) {\n if (e.cls === null && isConvertibleStyleProp(e.fullProp)) {\n for (const k of leafKeysOfProp(e.fullProp)) retainedLeafKeys.add(k);\n }\n }\n for (const c of implicitClasses) {\n if (!overlapsSet(leafKeysOfClassToken(c), retainedLeafKeys)) classes.push(c);\n }\n for (const e of styleEntries) {\n if (e.cls !== null && !overlapsSet(leafKeysOfProp(e.fullProp), retainedLeafKeys)) {\n classes.push(e.cls);\n } else {\n keptAttrs.push(e.attr);\n }\n }\n if (classes.length > 0) {\n const classStr = classes.join(\" \");\n if (existingClassName) {\n const existingVal = getStringValue(existingClassName.value);\n if (existingVal !== null) {\n existingClassName.value = t.stringLiteral(\n existingVal ? `${classStr} ${existingVal}` : classStr\n );\n keptAttrs.unshift(existingClassName);\n } else if (t.isJSXExpressionContainer(existingClassName.value) && !t.isJSXEmptyExpression(existingClassName.value.expression)) {\n const expr = existingClassName.value.expression;\n existingClassName.value = t.jsxExpressionContainer(\n t.templateLiteral(\n [\n t.templateElement(\n { raw: `${classStr} `, cooked: `${classStr} ` },\n false\n ),\n t.templateElement({ raw: \"\", cooked: \"\" }, true)\n ],\n [expr]\n )\n );\n keptAttrs.unshift(existingClassName);\n } else {\n keptAttrs.unshift(\n t.jsxAttribute(t.jsxIdentifier(\"className\"), t.stringLiteral(classStr))\n );\n }\n } else {\n keptAttrs.unshift(\n t.jsxAttribute(t.jsxIdentifier(\"className\"), t.stringLiteral(classStr))\n );\n }\n } else if (existingClassName) {\n keptAttrs.unshift(existingClassName);\n }\n node.attributes = keptAttrs;\n if (classes.length > 0) didTransform = true;\n if (renameComponents && isSimpleKnown && isPlainIdentifier) {\n const tag = componentToTag[componentName];\n node.name = t.jsxIdentifier(tag);\n const parent = path.parent;\n if (t.isJSXElement(parent) && parent.closingElement) {\n parent.closingElement.name = t.jsxIdentifier(tag);\n }\n didTransform = true;\n }\n }\n });\n if (!didTransform) return source;\n const output = generate(ast, { retainLines: true, concise: false });\n return output.code;\n}\nconst knownCompoundComponents = /* @__PURE__ */ new Set([\n \"Sheet.Frame\",\n \"Sheet.Overlay\",\n \"Sheet.Handle\",\n \"Sheet.ScrollView\",\n \"Sheet.Container\",\n \"Dialog.Content\",\n \"Dialog.Overlay\",\n \"Popover.Content\",\n \"Tabs.Tab\"\n]);\nfunction isTamaguiSource(source) {\n return source === \"tamagui\" || source.startsWith(\"@tamagui/\");\n}\nfunction resolveTamaguiComponent(path, ctx) {\n const nameNode = path.node.name;\n let baseName;\n let memberChain = [];\n const isPlainIdentifier = t.isJSXIdentifier(nameNode);\n if (t.isJSXIdentifier(nameNode)) {\n baseName = nameNode.name;\n } else if (t.isJSXMemberExpression(nameNode)) {\n const parts = [];\n let cur = nameNode;\n while (t.isJSXMemberExpression(cur)) {\n parts.unshift(cur.property.name);\n cur = cur.object;\n }\n if (!t.isJSXIdentifier(cur)) return null;\n baseName = cur.name;\n memberChain = parts;\n } else {\n return null;\n }\n const binding = path.scope?.getBinding?.(baseName);\n let tamaguiBase;\n if (binding) {\n const bnode = binding.path.node;\n if (t.isImportSpecifier(bnode) || t.isImportDefaultSpecifier(bnode) || t.isImportNamespaceSpecifier(bnode)) {\n const decl = binding.path.parent;\n const source = t.isImportDeclaration(decl) ? String(decl.source.value) : \"\";\n if (!isTamaguiSource(source)) return null;\n if (t.isImportNamespaceSpecifier(bnode)) {\n if (memberChain.length === 0) return null;\n tamaguiBase = memberChain[0];\n memberChain = memberChain.slice(1);\n } else if (t.isImportSpecifier(bnode)) {\n const imported = bnode.imported;\n tamaguiBase = t.isIdentifier(imported) ? imported.name : String(imported.value);\n } else {\n return null;\n }\n } else {\n return null;\n }\n } else {\n tamaguiBase = baseName;\n }\n const name = memberChain.length ? [tamaguiBase, ...memberChain].join(\".\") : tamaguiBase;\n const isSimpleKnown = memberChain.length === 0 && name in componentToTag;\n if (!isSimpleKnown && !knownCompoundComponents.has(name) && !ctx.componentAllow.has(name)) {\n return null;\n }\n return { name, isSimpleKnown, isPlainIdentifier };\n}\nfunction classPrefixOf(token) {\n const noMod = token.slice(token.lastIndexOf(\":\") + 1);\n const core = noMod[0] === \"-\" ? noMod.slice(1) : noMod;\n const dash = core.indexOf(\"-\");\n return dash === -1 ? core : core.slice(0, dash);\n}\nconst leafExpansion = {\n padding: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n paddingHorizontal: [\"paddingLeft\", \"paddingRight\"],\n paddingVertical: [\"paddingTop\", \"paddingBottom\"],\n margin: [\"marginTop\", \"marginRight\", \"marginBottom\", \"marginLeft\"],\n marginHorizontal: [\"marginLeft\", \"marginRight\"],\n marginVertical: [\"marginTop\", \"marginBottom\"],\n inset: [\"top\", \"right\", \"bottom\", \"left\"],\n gap: [\"gap\", \"rowGap\", \"columnGap\"],\n borderWidth: [\n \"borderTopWidth\",\n \"borderRightWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\"\n ],\n borderColor: [\n \"borderTopColor\",\n \"borderRightColor\",\n \"borderBottomColor\",\n \"borderLeftColor\"\n ],\n borderRadius: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\"\n ]\n};\nfunction leafKeysOfProp(fullProp) {\n return leafExpansion[fullProp] ?? [fullProp];\n}\nconst prefixToProp = (() => {\n const m = {};\n for (const [prop, prefix] of Object.entries(propToTailwindPrefix)) {\n if (prefix && !(prefix in m)) m[prefix] = prop;\n }\n return m;\n})();\nfunction leafKeysOfClassToken(token) {\n const prefix = classPrefixOf(token);\n return leafKeysOfProp(prefixToProp[prefix] ?? prefix);\n}\nfunction overlapsSet(keys, set) {\n return keys.some((k) => set.has(k));\n}\nfunction isConvertibleStyleProp(fullProp) {\n return propToTailwindPrefix[fullProp] !== void 0 || fullProp in standaloneValueProps;\n}\nfunction propValueToClass(ctx, propName, value) {\n const fullProp = resolveShorthand(ctx, propName);\n if (propToTailwindPrefix[fullProp] === void 0) return null;\n const strVal = getStringValue(value);\n const numVal = getNumericValue(value);\n if (strVal !== null) {\n const parsed = parseValue(strVal, ctx.modifierRegistry);\n if (!parsed.ok) return null;\n const classes = [];\n if (parsed.value.base !== null) {\n const base = payloadToClass(ctx, fullProp, parsed.value.base, []);\n if (base === null) return null;\n classes.push(base);\n }\n for (const clause of parsed.value.clauses) {\n const conditional = payloadToClass(ctx, fullProp, clause.payload, clause.modifiers);\n if (conditional === null) return null;\n classes.push(conditional);\n }\n return classes.length ? classes.join(\" \") : null;\n }\n if (numVal === null) return null;\n const formatted = formatNumericValue(fullProp, numVal);\n if (formatted === null) return null;\n return formatCandidate(\n {\n prop: fullProp,\n value: formatted.value,\n valueKind: formatted.valueKind,\n modifiers: void 0\n },\n ctx.grammarConfig\n );\n}\nfunction payloadToClass(ctx, fullProp, payload, modifiers) {\n let formatted;\n if (standaloneValueProps[fullProp]?.[payload]) {\n formatted = { value: payload, valueKind: \"enum\" };\n } else {\n formatted = formatStringValue(ctx, fullProp, payload);\n if (formatted === null && /^-?\\d+(?:\\.\\d+)?$/.test(payload)) {\n const category = getTokenCategory(fullProp);\n if (!category || ctx.grammarConfig.tokenNames?.[category] !== void 0) {\n formatted = formatNumericValue(fullProp, Number(payload));\n }\n }\n }\n if (formatted === null) return null;\n return formatCandidate(\n {\n prop: fullProp,\n value: formatted.value,\n valueKind: formatted.valueKind,\n modifiers: modifiers.length ? modifiers : void 0\n },\n ctx.grammarConfig\n );\n}\nfunction getStringValue(value) {\n if (!value) return null;\n if (t.isStringLiteral(value)) return value.value;\n if (t.isJSXExpressionContainer(value) && t.isStringLiteral(value.expression)) {\n return value.expression.value;\n }\n if (t.isJSXExpressionContainer(value) && t.isTemplateLiteral(value.expression)) {\n if (value.expression.expressions.length === 0 && value.expression.quasis.length === 1) {\n return value.expression.quasis[0].value.raw;\n }\n }\n return null;\n}\nfunction getNumericValue(value) {\n if (!value) return null;\n if (t.isJSXExpressionContainer(value)) {\n if (t.isNumericLiteral(value.expression)) return value.expression.value;\n if (t.isUnaryExpression(value.expression) && value.expression.operator === \"-\" && t.isNumericLiteral(value.expression.argument)) {\n return -value.expression.argument.value;\n }\n }\n return null;\n}\nfunction resolveShorthand(ctx, name) {\n return ctx.shorthands[name] || name;\n}\nfunction hasConfiguredName(names, value) {\n if (!names) return false;\n if (Array.isArray(names)) return names.includes(value);\n if (names instanceof Set) return names.has(value);\n return value in names;\n}\nfunction formatStringValue(ctx, prop, value) {\n const category = getTokenCategory(prop);\n if (prop !== \"fontWeight\" && category && hasConfiguredName(ctx.grammarConfig.tokenNames?.[category], value)) {\n if (category === \"color\") {\n const mapped = getV6ThemeName(value);\n return mapped ? { value: mapped, valueKind: \"token\" } : null;\n }\n return { value, valueKind: \"token\" };\n }\n if (prop === \"fontWeight\") {\n return fontWeightNames[value] ? { value, valueKind: \"enum\" } : null;\n }\n if (prop === \"zIndex\" && /^\\d+$/.test(value)) {\n return { value, valueKind: \"convenience\" };\n }\n if (/^-?\\d+(\\.\\d+)?$/.test(value)) return null;\n if (value.endsWith(\"%\")) {\n const exact = {\n \"100%\": \"full\",\n \"50%\": \"1/2\",\n \"25%\": \"1/4\",\n \"75%\": \"3/4\"\n };\n if (getTokenCategory(prop) === \"size\" && exact[value]) {\n return { value: exact[value], valueKind: \"convenience\" };\n }\n return { value, valueKind: \"arbitrary\" };\n }\n if (value === \"auto\" && getTokenCategory(prop) === \"size\") {\n return { value, valueKind: \"convenience\" };\n }\n if (prop === \"fontFamily\") return { value, valueKind: \"arbitrary\" };\n if (value.includes(\"(\") || value.includes(\" \") || value.includes(\"_\") || value.startsWith(\"#\") || value.startsWith(\"-\") || /^[\\d.]+[a-z%]/i.test(value)) {\n return { value, valueKind: \"arbitrary\" };\n }\n return { value, valueKind: \"arbitrary\" };\n}\nconst pxLengthProps = /* @__PURE__ */ new Set([\n \"width\",\n \"height\",\n \"minWidth\",\n \"maxWidth\",\n \"minHeight\",\n \"maxHeight\",\n \"flexBasis\",\n \"padding\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"margin\",\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginHorizontal\",\n \"marginVertical\",\n \"gap\",\n \"rowGap\",\n \"columnGap\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\",\n \"inset\",\n \"borderRadius\",\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n \"fontSize\",\n \"letterSpacing\",\n \"lineHeight\"\n]);\nfunction formatNumericValue(prop, value) {\n if (prop === \"opacity\") {\n const pct = value * 100;\n return Number.isInteger(pct) ? { value: String(pct), valueKind: \"convenience\" } : { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"aspectRatio\") return { value: String(value), valueKind: \"arbitrary\" };\n if (prop === \"scale\" || prop === \"scaleX\" || prop === \"scaleY\") {\n if (value === 0) return { value: \"0\", valueKind: \"convenience\" };\n if (value === 1) return { value: \"100\", valueKind: \"convenience\" };\n return { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"flex\") {\n return value === 1 ? { value: \"1\", valueKind: \"convenience\" } : { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"flexGrow\" || prop === \"flexShrink\") {\n return { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"zIndex\") {\n return Number.isInteger(value) && value >= 0 ? { value: String(value), valueKind: \"convenience\" } : { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"fontWeight\") {\n return fontWeightNames[String(value)] ? { value: String(value), valueKind: \"enum\" } : null;\n }\n if (prop === \"rotate\") return null;\n if (prop === \"x\" || prop === \"y\") {\n return { value: `${value}px`, valueKind: \"arbitrary\" };\n }\n if (prop.includes(\"Width\") && prop.startsWith(\"border\")) {\n return { value: `${value}px`, valueKind: \"arbitrary\" };\n }\n if (pxLengthProps.has(prop)) {\n return { value: `${value}px`, valueKind: \"arbitrary\" };\n }\n return null;\n}\nexport {\n findParseError,\n tamaguiToTailwind\n};\n//# sourceMappingURL=transform.js.map\n"],"mappings":";;;;;;;;;AAkBA,MAAM,WAAW,UAAU,WAAW;AACtC,MAAM,WAAW,UAAU,WAAW;AACtC,MAAM,oBAAoBA;AAC1B,MAAM,sBAAsB,IAAI,IAAI,mBAAmB;AACvD,SAAS,eAAe,MAAM;CAC5B,MAAM,eAAe,KAAK,QAAQ,GAAG;CACrC,MAAM,WAAW,iBAAiB,CAAC,IAAI,OAAO,KAAK,MAAM,GAAG,YAAY;CACxE,IAAI,oBAAoB,IAAI,QAAQ,GAAG,OAAO;CAC9C,MAAM,SAAS,wBAAwB,aAAa;CACpD,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,MAAM,OAAO,QAAQ,OAAO,IAAI,GAAG;AAC1C;AACA,SAAS,6BAA6B,SAAS,WAAW,YAAY;CACpE,IAAI,QAAQ,eAAe;EACzB,OAAO;GAAE,GAAG,QAAQ;GAAe;GAAY,YAAY;EAAU;CACvE;CACA,MAAM,aAAa,CAAC;CACpB,MAAM,kBAAkB;EAAC;EAAS;EAAQ;EAAU;EAAU;CAAO;CACrE,MAAM,iBAAiB;EACrB;EACA;EACA;EACA;EACA;CACF;CACA,MAAM,gBAAgB;EAAC;EAAU;EAAS;EAAU;EAAS;CAAY,CAAC,CAAC,MACxE,QAAQ,OAAO,OAClB;CACA,IAAI,eAAe;EACjB,KAAK,MAAM,YAAY,CAAC,GAAG,iBAAiB,GAAG,cAAc,GAAG;GAC9D,WAAW,4BAA4B,IAAI,IAAI;EACjD;CACF;CACA,KAAK,MAAM,YAAY,iBAAiB;EACtC,IAAI,QAAQ,SAAS,WAAW;GAC9B,MAAM,QAAQ,WAAW,6BAA6B,IAAI,IAAI;GAC9D,eAAe,OAAO,QAAQ,OAAO,SAAS;GAC9C,WAAW,YAAY;EACzB;CACF;CACA,IAAI,QAAQ,OAAO;EACjB,WAAW,+BAA+B,IAAI,IAAI;EAClD,WAAW,6BAA6B,IAAI,IAAI;EAChD,WAAW,+BAA+B,IAAI,IAAI;EAClD,WAAW,+BAA+B,IAAI,IAAI;EAClD,WAAW,kCAAkC,IAAI,IAAI;EACrD,KAAK,MAAM,cAAc,QAAQ,OAAO;GACtC,WAAW,WAAW,IAAI,UAAU;GACpC,MAAM,OAAO,QAAQ,MAAM;GAC3B,eAAe,WAAW,UAAU,MAAM,IAAI;GAC9C,eAAe,WAAW,YAAY,MAAM,MAAM;GAClD,eAAe,WAAW,YAAY,MAAM,UAAU;GACtD,eAAe,WAAW,eAAe,MAAM,aAAa;EAC9D;CACF;CACA,MAAM,6BAA6B,IAAI,IAAI;CAC3C,IAAI,QAAQ,QAAQ;EAClB,WAAW,0BAA0B,IAAI,IAAI;EAC7C,KAAK,MAAM,aAAa,QAAQ,QAAQ;GACtC,WAAW,IAAI,SAAS;GACxB,KAAK,MAAM,QAAQ,QAAQ,OAAO,YAAY;IAC5C,MAAM,SAAS,eAAe,IAAI;IAClC,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,MAAM,MAAM,MAAM,QAAQ;GACxB,YAAY;GACZ,SAAS,CAAC,OAAO,YAAY;GAC7B,eAAe;EACjB,CAAC;EACD,MAAM,OAAO,IAAI;EACjB,IAAI,QAAQ,KAAK,SAAS,GAAG;GAC3B,MAAM,IAAI,KAAK;GACf,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE,IAAI,WAAW;GACvD,OAAO,GAAG,GAAG,cAAc,GAAG,WAAW,cAAc,MAAM;EAC/D;EACA,OAAO;CACT,SAAS,GAAG;EACV,OAAO,EAAE,WAAW;CACtB;AACF;AACA,SAAS,kBAAkB,QAAQ,UAAU,CAAC,GAAG;CAC/C,MAAM,EAAE,mBAAmB,SAAS;CACpC,MAAM,YAAY,QAAQ,eAAe,aAAa,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;CAClO,MAAM,aAAa,QAAQ,eAAe,cAAc,QAAQ,cAAc;CAC9E,MAAM,gBAAgB,6BAA6B,SAAS,WAAW,UAAU;CACjF,MAAM,MAAM;EACV;EACA,gBAAgB,IAAI,IAAI,QAAQ,cAAc,CAAC,CAAC;EAChD;EACA;EACA,kBAAkB,uBAAuB,aAAa,CAAC,CAAC;CAC1D;CACA,IAAI;CACJ,IAAI;EACF,MAAM,MAAM,QAAQ;GAClB,YAAY;GACZ,SAAS,CAAC,OAAO,YAAY;GAC7B,eAAe;EACjB,CAAC;CACH,QAAQ;EACN,OAAO;CACT;CACA,IAAI,IAAI,UAAU,IAAI,OAAO,SAAS,GAAG;EACvC,OAAO;CACT;CACA,IAAI,eAAe;CACnB,SAAS,KAAK,EACZ,kBAAkB,MAAM;EACtB,MAAM,OAAO,KAAK;EAClB,MAAM,WAAW,wBAAwB,MAAM,GAAG;EAClD,IAAI,aAAa,MAAM;EACvB,MAAM,EAAE,MAAM,eAAe,eAAe,sBAAsB;EAClE,IAAI,KAAK,WAAW,MAAM,MAAM,EAAE,qBAAqB,CAAC,CAAC,GAAG;EAC5D,MAAM,sBAAsB,KAAK,WAAW,MACzC,SAAS,EAAE,eAAe,IAAI,KAAK,KAAK,KAAK,SAAS,eAAe,eAAe,KAAK,KAAK,MAAM,IACvG;EACA,IAAI,qBAAqB;EACzB,MAAM,eAAe,KAAK,WAAW,MAClC,SAAS,EAAE,eAAe,IAAI,KAAK,KAAK,KAAK,SAAS,WACzD;EACA,MAAM,0BAA0B,KAAK,WAAW,MAAM,SAAS;GAC7D,IAAI,CAAC,EAAE,eAAe,IAAI,KAAK,KAAK,KAAK,SAAS,aAAa,OAAO;GACtE,MAAM,OAAO,KAAK,KAAK;GACvB,OAAO,uBAAuB,iBAAiB,KAAK,IAAI,CAAC;EAC3D,CAAC;EACD,IAAI,gBAAgB,yBAAyB;EAC7C,MAAM,UAAU,CAAC;EACjB,MAAM,YAAY,CAAC;EACnB,IAAI,oBAAoB;EACxB,MAAM,kCAAkC,IAAI,IAAI;EAChD,KAAK,MAAM,KAAK,KAAK,YAAY;GAC/B,IAAI,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,SAAS,aAAa;IACtD,MAAM,IAAI,eAAe,EAAE,KAAK;IAChC,IAAI,GAAG;KACL,KAAK,MAAM,OAAO,EAAE,MAAM,KAAK,GAAG;MAChC,IAAI,KAAK,KAAK,MAAM,KAAK,qBAAqB,GAAG,GAAG,gBAAgB,IAAI,CAAC;KAC3E;IACF;GACF;EACF;EACA,MAAM,kBAAkB,CAAC;EACzB,IAAI,kBAAkB,UAAU,gBAAgB,KAAK,QAAQ,UAAU;OAClE,IAAI,kBAAkB,UAAU,gBAAgB,KAAK,QAAQ,UAAU;OACvE,IAAI,kBAAkB,UAAU,gBAAgB,KAAK,UAAU;EACpE,MAAM,eAAe,CAAC;EACtB,KAAK,MAAM,QAAQ,KAAK,YAAY;GAClC,IAAI,CAAC,EAAE,eAAe,IAAI,GAAG;IAC3B,UAAU,KAAK,IAAI;IACnB;GACF;GACA,MAAM,OAAO,KAAK,KAAK;GACvB,IAAI,SAAS,aAAa;IACxB,oBAAoB;IACpB;GACF;GACA,aAAa,KAAK;IAChB;IACA,UAAU,iBAAiB,KAAK,IAAI;IACpC,KAAK,iBAAiB,KAAK,MAAM,KAAK,KAAK;GAC7C,CAAC;EACH;EACA,MAAM,mBAAmB,IAAI,IAAI,eAAe;EAChD,KAAK,MAAM,KAAK,cAAc;GAC5B,IAAI,EAAE,QAAQ,QAAQ,uBAAuB,EAAE,QAAQ,GAAG;IACxD,KAAK,MAAM,KAAK,eAAe,EAAE,QAAQ,GAAG,iBAAiB,IAAI,CAAC;GACpE;EACF;EACA,KAAK,MAAM,KAAK,iBAAiB;GAC/B,IAAI,CAAC,YAAY,qBAAqB,CAAC,GAAG,gBAAgB,GAAG,QAAQ,KAAK,CAAC;EAC7E;EACA,KAAK,MAAM,KAAK,cAAc;GAC5B,IAAI,EAAE,QAAQ,QAAQ,CAAC,YAAY,eAAe,EAAE,QAAQ,GAAG,gBAAgB,GAAG;IAChF,QAAQ,KAAK,EAAE,GAAG;GACpB,OAAO;IACL,UAAU,KAAK,EAAE,IAAI;GACvB;EACF;EACA,IAAI,QAAQ,SAAS,GAAG;GACtB,MAAM,WAAW,QAAQ,KAAK,GAAG;GACjC,IAAI,mBAAmB;IACrB,MAAM,cAAc,eAAe,kBAAkB,KAAK;IAC1D,IAAI,gBAAgB,MAAM;KACxB,kBAAkB,QAAQ,EAAE,cAC1B,cAAc,GAAG,SAAS,GAAG,gBAAgB,QAC/C;KACA,UAAU,QAAQ,iBAAiB;IACrC,OAAO,IAAI,EAAE,yBAAyB,kBAAkB,KAAK,KAAK,CAAC,EAAE,qBAAqB,kBAAkB,MAAM,UAAU,GAAG;KAC7H,MAAM,OAAO,kBAAkB,MAAM;KACrC,kBAAkB,QAAQ,EAAE,uBAC1B,EAAE,gBACA,CACE,EAAE,gBACA;MAAE,KAAK,GAAG,SAAS;MAAI,QAAQ,GAAG,SAAS;KAAG,GAC9C,KACF,GACA,EAAE,gBAAgB;MAAE,KAAK;MAAI,QAAQ;KAAG,GAAG,IAAI,CACjD,GACA,CAAC,IAAI,CACP,CACF;KACA,UAAU,QAAQ,iBAAiB;IACrC,OAAO;KACL,UAAU,QACR,EAAE,aAAa,EAAE,cAAc,WAAW,GAAG,EAAE,cAAc,QAAQ,CAAC,CACxE;IACF;GACF,OAAO;IACL,UAAU,QACR,EAAE,aAAa,EAAE,cAAc,WAAW,GAAG,EAAE,cAAc,QAAQ,CAAC,CACxE;GACF;EACF,OAAO,IAAI,mBAAmB;GAC5B,UAAU,QAAQ,iBAAiB;EACrC;EACA,KAAK,aAAa;EAClB,IAAI,QAAQ,SAAS,GAAG,eAAe;EACvC,IAAI,oBAAoB,iBAAiB,mBAAmB;GAC1D,MAAM,MAAM,eAAe;GAC3B,KAAK,OAAO,EAAE,cAAc,GAAG;GAC/B,MAAM,SAAS,KAAK;GACpB,IAAI,EAAE,aAAa,MAAM,KAAK,OAAO,gBAAgB;IACnD,OAAO,eAAe,OAAO,EAAE,cAAc,GAAG;GAClD;GACA,eAAe;EACjB;CACF,EACF,CAAC;CACD,IAAI,CAAC,cAAc,OAAO;CAC1B,MAAM,SAAS,SAAS,KAAK;EAAE,aAAa;EAAM,SAAS;CAAM,CAAC;CAClE,OAAO,OAAO;AAChB;AACA,MAAM,0CAA0C,IAAI,IAAI;CACtD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,SAAS,gBAAgB,QAAQ;CAC/B,OAAO,WAAW,aAAa,OAAO,WAAW,WAAW;AAC9D;AACA,SAAS,wBAAwB,MAAM,KAAK;CAC1C,MAAM,WAAW,KAAK,KAAK;CAC3B,IAAI;CACJ,IAAI,cAAc,CAAC;CACnB,MAAM,oBAAoB,EAAE,gBAAgB,QAAQ;CACpD,IAAI,EAAE,gBAAgB,QAAQ,GAAG;EAC/B,WAAW,SAAS;CACtB,OAAO,IAAI,EAAE,sBAAsB,QAAQ,GAAG;EAC5C,MAAM,QAAQ,CAAC;EACf,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,MAAM,UAAU,KAAK,OAAO,aAAa,QAAQ;CACjD,IAAI;CACJ,IAAI,SAAS;EACX,MAAM,QAAQ,QAAQ,KAAK;EAC3B,IAAI,EAAE,kBAAkB,KAAK,KAAK,EAAE,yBAAyB,KAAK,KAAK,EAAE,2BAA2B,KAAK,GAAG;GAC1G,MAAM,OAAO,QAAQ,KAAK;GAC1B,MAAM,SAAS,EAAE,oBAAoB,IAAI,IAAI,OAAO,KAAK,OAAO,KAAK,IAAI;GACzE,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,MAAM,WAAW,MAAM;IACvB,cAAc,EAAE,aAAa,QAAQ,IAAI,SAAS,OAAO,OAAO,SAAS,KAAK;GAChF,OAAO;IACL,OAAO;GACT;EACF,OAAO;GACL,OAAO;EACT;CACF,OAAO;EACL,cAAc;CAChB;CACA,MAAM,OAAO,YAAY,SAAS,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC,KAAK,GAAG,IAAI;CAC5E,MAAM,gBAAgB,YAAY,WAAW,KAAK,QAAQ;CAC1D,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,IAAI,IAAI,KAAK,CAAC,IAAI,eAAe,IAAI,IAAI,GAAG;EACzF,OAAO;CACT;CACA,OAAO;EAAE;EAAM;EAAe;CAAkB;AAClD;AACA,SAAS,cAAc,OAAO;CAC5B,MAAM,QAAQ,MAAM,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC;CACpD,MAAM,OAAO,MAAM,OAAO,MAAM,MAAM,MAAM,CAAC,IAAI;CACjD,MAAM,OAAO,KAAK,QAAQ,GAAG;CAC7B,OAAO,SAAS,CAAC,IAAI,OAAO,KAAK,MAAM,GAAG,IAAI;AAChD;AACA,MAAM,gBAAgB;CACpB,SAAS;EAAC;EAAc;EAAgB;EAAiB;CAAa;CACtE,mBAAmB,CAAC,eAAe,cAAc;CACjD,iBAAiB,CAAC,cAAc,eAAe;CAC/C,QAAQ;EAAC;EAAa;EAAe;EAAgB;CAAY;CACjE,kBAAkB,CAAC,cAAc,aAAa;CAC9C,gBAAgB,CAAC,aAAa,cAAc;CAC5C,OAAO;EAAC;EAAO;EAAS;EAAU;CAAM;CACxC,KAAK;EAAC;EAAO;EAAU;CAAW;CAClC,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,OAAO,cAAc,aAAa,CAAC,QAAQ;AAC7C;AACA,MAAM,sBAAsB;CAC1B,MAAM,IAAI,CAAC;CACX,KAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,oBAAoB,GAAG;EACjE,IAAI,UAAU,EAAE,UAAU,IAAI,EAAE,UAAU;CAC5C;CACA,OAAO;AACT,EAAC,CAAE;AACH,SAAS,qBAAqB,OAAO;CACnC,MAAM,SAAS,cAAc,KAAK;CAClC,OAAO,eAAe,aAAa,WAAW,MAAM;AACtD;AACA,SAAS,YAAY,MAAM,KAAK;CAC9B,OAAO,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,CAAC;AACpC;AACA,SAAS,uBAAuB,UAAU;CACxC,OAAO,qBAAqB,cAAc,KAAK,KAAK,YAAY;AAClE;AACA,SAAS,iBAAiB,KAAK,UAAU,OAAO;CAC9C,MAAM,WAAW,iBAAiB,KAAK,QAAQ;CAC/C,IAAI,qBAAqB,cAAc,KAAK,GAAG,OAAO;CACtD,MAAM,SAAS,eAAe,KAAK;CACnC,MAAM,SAAS,gBAAgB,KAAK;CACpC,IAAI,WAAW,MAAM;EACnB,MAAM,SAAS,WAAW,QAAQ,IAAI,gBAAgB;EACtD,IAAI,CAAC,OAAO,IAAI,OAAO;EACvB,MAAM,UAAU,CAAC;EACjB,IAAI,OAAO,MAAM,SAAS,MAAM;GAC9B,MAAM,OAAO,eAAe,KAAK,UAAU,OAAO,MAAM,MAAM,CAAC,CAAC;GAChE,IAAI,SAAS,MAAM,OAAO;GAC1B,QAAQ,KAAK,IAAI;EACnB;EACA,KAAK,MAAM,UAAU,OAAO,MAAM,SAAS;GACzC,MAAM,cAAc,eAAe,KAAK,UAAU,OAAO,SAAS,OAAO,SAAS;GAClF,IAAI,gBAAgB,MAAM,OAAO;GACjC,QAAQ,KAAK,WAAW;EAC1B;EACA,OAAO,QAAQ,SAAS,QAAQ,KAAK,GAAG,IAAI;CAC9C;CACA,IAAI,WAAW,MAAM,OAAO;CAC5B,MAAM,YAAY,mBAAmB,UAAU,MAAM;CACrD,IAAI,cAAc,MAAM,OAAO;CAC/B,OAAO,gBACL;EACE,MAAM;EACN,OAAO,UAAU;EACjB,WAAW,UAAU;EACrB,WAAW,KAAK;CAClB,GACA,IAAI,aACN;AACF;AACA,SAAS,eAAe,KAAK,UAAU,SAAS,WAAW;CACzD,IAAI;CACJ,IAAI,qBAAqB,SAAS,GAAG,UAAU;EAC7C,YAAY;GAAE,OAAO;GAAS,WAAW;EAAO;CAClD,OAAO;EACL,YAAY,kBAAkB,KAAK,UAAU,OAAO;EACpD,IAAI,cAAc,QAAQ,oBAAoB,KAAK,OAAO,GAAG;GAC3D,MAAM,WAAW,iBAAiB,QAAQ;GAC1C,IAAI,CAAC,YAAY,IAAI,cAAc,aAAa,cAAc,KAAK,GAAG;IACpE,YAAY,mBAAmB,UAAU,OAAO,OAAO,CAAC;GAC1D;EACF;CACF;CACA,IAAI,cAAc,MAAM,OAAO;CAC/B,OAAO,gBACL;EACE,MAAM;EACN,OAAO,UAAU;EACjB,WAAW,UAAU;EACrB,WAAW,UAAU,SAAS,YAAY,KAAK;CACjD,GACA,IAAI,aACN;AACF;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,MAAM,WAAW,iBAAiB,IAAI;CACtC,IAAI,SAAS,gBAAgB,YAAY,kBAAkB,IAAI,cAAc,aAAa,WAAW,KAAK,GAAG;EAC3G,IAAI,aAAa,SAAS;GACxB,MAAM,SAAS,eAAe,KAAK;GACnC,OAAO,SAAS;IAAE,OAAO;IAAQ,WAAW;GAAQ,IAAI;EAC1D;EACA,OAAO;GAAE;GAAO,WAAW;EAAQ;CACrC;CACA,IAAI,SAAS,cAAc;EACzB,OAAO,gBAAgB,SAAS;GAAE;GAAO,WAAW;EAAO,IAAI;CACjE;CACA,IAAI,SAAS,YAAY,QAAQ,KAAK,KAAK,GAAG;EAC5C,OAAO;GAAE;GAAO,WAAW;EAAc;CAC3C;CACA,IAAI,kBAAkB,KAAK,KAAK,GAAG,OAAO;CAC1C,IAAI,MAAM,SAAS,GAAG,GAAG;EACvB,MAAM,QAAQ;GACZ,QAAQ;GACR,OAAO;GACP,OAAO;GACP,OAAO;EACT;EACA,IAAI,iBAAiB,IAAI,MAAM,UAAU,MAAM,QAAQ;GACrD,OAAO;IAAE,OAAO,MAAM;IAAQ,WAAW;GAAc;EACzD;EACA,OAAO;GAAE;GAAO,WAAW;EAAY;CACzC;CACA,IAAI,UAAU,UAAU,iBAAiB,IAAI,MAAM,QAAQ;EACzD,OAAO;GAAE;GAAO,WAAW;EAAc;CAC3C;CACA,IAAI,SAAS,cAAc,OAAO;EAAE;EAAO,WAAW;CAAY;CAClE,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;GAAE;GAAO,WAAW;EAAY;CACzC;CACA,OAAO;EAAE;EAAO,WAAW;CAAY;AACzC;AACA,MAAM,gCAAgC,IAAI,IAAI;CAC5C;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,MAAM,MAAM,QAAQ;EACpB,OAAO,OAAO,UAAU,GAAG,IAAI;GAAE,OAAO,OAAO,GAAG;GAAG,WAAW;EAAc,IAAI;GAAE,OAAO,OAAO,KAAK;GAAG,WAAW;EAAY;CACnI;CACA,IAAI,SAAS,eAAe,OAAO;EAAE,OAAO,OAAO,KAAK;EAAG,WAAW;CAAY;CAClF,IAAI,SAAS,WAAW,SAAS,YAAY,SAAS,UAAU;EAC9D,IAAI,UAAU,GAAG,OAAO;GAAE,OAAO;GAAK,WAAW;EAAc;EAC/D,IAAI,UAAU,GAAG,OAAO;GAAE,OAAO;GAAO,WAAW;EAAc;EACjE,OAAO;GAAE,OAAO,OAAO,KAAK;GAAG,WAAW;EAAY;CACxD;CACA,IAAI,SAAS,QAAQ;EACnB,OAAO,UAAU,IAAI;GAAE,OAAO;GAAK,WAAW;EAAc,IAAI;GAAE,OAAO,OAAO,KAAK;GAAG,WAAW;EAAY;CACjH;CACA,IAAI,SAAS,cAAc,SAAS,cAAc;EAChD,OAAO;GAAE,OAAO,OAAO,KAAK;GAAG,WAAW;EAAY;CACxD;CACA,IAAI,SAAS,UAAU;EACrB,OAAO,OAAO,UAAU,KAAK,KAAK,SAAS,IAAI;GAAE,OAAO,OAAO,KAAK;GAAG,WAAW;EAAc,IAAI;GAAE,OAAO,OAAO,KAAK;GAAG,WAAW;EAAY;CACrJ;CACA,IAAI,SAAS,cAAc;EACzB,OAAO,gBAAgB,OAAO,KAAK,KAAK;GAAE,OAAO,OAAO,KAAK;GAAG,WAAW;EAAO,IAAI;CACxF;CACA,IAAI,SAAS,UAAU,OAAO;CAC9B,IAAI,SAAS,OAAO,SAAS,KAAK;EAChC,OAAO;GAAE,OAAO,GAAG,MAAM;GAAK,WAAW;EAAY;CACvD;CACA,IAAI,KAAK,SAAS,OAAO,KAAK,KAAK,WAAW,QAAQ,GAAG;EACvD,OAAO;GAAE,OAAO,GAAG,MAAM;GAAK,WAAW;EAAY;CACvD;CACA,IAAI,cAAc,IAAI,IAAI,GAAG;EAC3B,OAAO;GAAE,OAAO,GAAG,MAAM;GAAK,WAAW;EAAY;CACvD;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"transform.js","names":["canonicalShorthands"],"sources":["esm/transform.js"],"sourcesContent":["import { parse } from \"@babel/parser\";\nimport _traverse from \"@babel/traverse\";\nimport _generate from \"@babel/generator\";\nimport * as t from \"@babel/types\";\nimport {\n defaultMediaKeys,\n createModifierRegistry,\n fontWeightNames,\n formatCandidate,\n getTokenCategory,\n propToTailwindPrefix,\n parseValue,\n standaloneValueProps,\n v6RemovedThemeNames,\n v6ThemeNameReplacements,\n propTokenGroupFallbacks\n} from \"@tamagui/style-grammar/tooling\";\nimport { componentToTag } from \"./maps/componentToTag\";\nimport { shorthands as canonicalShorthands } from \"@tamagui/shorthands/v4\";\nconst traverse = _traverse.default ?? _traverse;\nconst generate = _generate.default ?? _generate;\nconst defaultShorthands = canonicalShorthands;\nconst removedV6ThemeNames = new Set(v6RemovedThemeNames);\nfunction getV6ThemeName(name) {\n const opacityIndex = name.indexOf(\"/\");\n const baseName = opacityIndex === -1 ? name : name.slice(0, opacityIndex);\n if (removedV6ThemeNames.has(baseName)) return null;\n const mapped = v6ThemeNameReplacements[baseName] ?? baseName;\n return opacityIndex === -1 ? mapped : `${mapped}${name.slice(opacityIndex)}`;\n}\nfunction namesToSet(names) {\n if (!names) return /* @__PURE__ */ new Set();\n if (Array.isArray(names)) return new Set(names);\n if (names instanceof Set) return new Set(names);\n return new Set(Object.keys(names));\n}\nfunction addConfigNames(target, source) {\n if (!source) return;\n for (const key in source) target.add(key);\n}\nfunction createTransformGrammarConfig(options, mediaKeys, shorthands) {\n if (options.grammarConfig) {\n return { ...options.grammarConfig, shorthands, mediaNames: mediaKeys };\n }\n const tokenNames = {};\n const tokenCategories = [\"space\", \"size\", \"radius\", \"zIndex\", \"color\"];\n const fontCategories = [\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"lineHeight\",\n \"letterSpacing\"\n ];\n const authoritative = [\"tokens\", \"fonts\", \"themes\", \"media\", \"shorthands\"].some(\n (key) => key in options\n );\n if (authoritative) {\n for (const category of [...tokenCategories, ...fontCategories]) {\n tokenNames[category] = /* @__PURE__ */ new Set();\n }\n }\n for (const category of tokenCategories) {\n if (options.tokens?.[category]) {\n const names = tokenNames[category] || /* @__PURE__ */ new Set();\n addConfigNames(names, options.tokens[category]);\n tokenNames[category] = names;\n }\n }\n for (const group in propTokenGroupFallbacks) {\n const own = options.tokens?.[group];\n const names = own ? /* @__PURE__ */ new Set() : tokenNames[propTokenGroupFallbacks[group]];\n if (own) addConfigNames(names, own);\n if (names) tokenNames[group] = names;\n }\n if (options.fonts) {\n tokenNames.fontFamily ||= /* @__PURE__ */ new Set();\n tokenNames.fontSize ||= /* @__PURE__ */ new Set();\n tokenNames.fontWeight ||= /* @__PURE__ */ new Set();\n tokenNames.lineHeight ||= /* @__PURE__ */ new Set();\n tokenNames.letterSpacing ||= /* @__PURE__ */ new Set();\n for (const familyName in options.fonts) {\n tokenNames.fontFamily.add(familyName);\n const font = options.fonts[familyName];\n addConfigNames(tokenNames.fontSize, font?.size);\n addConfigNames(tokenNames.fontWeight, font?.weight);\n addConfigNames(tokenNames.lineHeight, font?.lineHeight);\n addConfigNames(tokenNames.letterSpacing, font?.letterSpacing);\n }\n }\n const themeNames = /* @__PURE__ */ new Set();\n if (options.themes) {\n tokenNames.color ||= /* @__PURE__ */ new Set();\n for (const themeName in options.themes) {\n themeNames.add(themeName);\n for (const name in options.themes[themeName]) {\n const mapped = getV6ThemeName(name);\n if (mapped) tokenNames.color.add(mapped);\n }\n }\n }\n return {\n shorthands,\n mediaNames: mediaKeys,\n themeNames,\n tokenNames\n };\n}\nfunction findParseError(source) {\n try {\n const ast = parse(source, {\n sourceType: \"module\",\n plugins: [\"jsx\", \"typescript\"],\n errorRecovery: true\n });\n const errs = ast.errors;\n if (errs && errs.length > 0) {\n const e = errs[0];\n const loc = e?.loc ? `${e.loc.line}:${e.loc.column}` : \"?\";\n return `${e?.reasonCode || e?.message || \"parse error\"} at ${loc}`;\n }\n return null;\n } catch (e) {\n return e.message || \"parse error\";\n }\n}\nfunction tamaguiToTailwind(source, options = {}) {\n const { renameComponents = true } = options;\n const mediaKeys = options.grammarConfig?.mediaNames ? namesToSet(options.grammarConfig.mediaNames) : options.media ? new Set(Array.isArray(options.media) ? options.media : Object.keys(options.media)) : new Set(defaultMediaKeys);\n const shorthands = options.grammarConfig?.shorthands ?? options.shorthands ?? defaultShorthands;\n const grammarConfig = createTransformGrammarConfig(options, mediaKeys, shorthands);\n const ctx = {\n mediaKeys,\n componentAllow: new Set(options.components ?? []),\n shorthands,\n grammarConfig,\n modifierRegistry: createModifierRegistry(grammarConfig).registry,\n rewriteImports: options.rewriteImports === true\n };\n let ast;\n try {\n ast = parse(source, {\n sourceType: \"module\",\n plugins: [\"jsx\", \"typescript\"],\n errorRecovery: true\n });\n } catch {\n return source;\n }\n if (ast.errors && ast.errors.length > 0) {\n return source;\n }\n let didTransform = false;\n traverse(ast, {\n JSXOpeningElement(path) {\n const node = path.node;\n const resolved = resolveTamaguiComponent(path, ctx);\n if (resolved === null) return;\n const { name: componentName, isSimpleKnown, isPlainIdentifier } = resolved;\n if (node.attributes.some((a) => t.isJSXSpreadAttribute(a))) return;\n const hasDynamicClassName = node.attributes.some(\n (attr) => t.isJSXAttribute(attr) && attr.name.name === \"className\" && getStringValue(attr.value) === null\n );\n if (hasDynamicClassName) return;\n const hasClassName = node.attributes.some(\n (attr) => t.isJSXAttribute(attr) && attr.name.name === \"className\"\n );\n const hasNeighboringStyleProp = node.attributes.some((attr) => {\n if (!t.isJSXAttribute(attr) || attr.name.name === \"className\") return false;\n const name = attr.name.name;\n return isConvertibleStyleProp(resolveShorthand(ctx, name));\n });\n if (hasClassName && hasNeighboringStyleProp) return;\n const classes = [];\n const keptAttrs = [];\n let existingClassName = null;\n const blockedLeafKeys = /* @__PURE__ */ new Set();\n for (const a of node.attributes) {\n if (t.isJSXAttribute(a) && a.name.name === \"className\") {\n const v = getStringValue(a.value);\n if (v) {\n for (const tok of v.split(/\\s+/)) {\n if (tok) for (const k of leafKeysOfClassToken(tok)) blockedLeafKeys.add(k);\n }\n }\n }\n }\n const implicitClasses = [];\n if (componentName === \"XStack\") implicitClasses.push(\"flex\", \"flex-row\");\n else if (componentName === \"YStack\") implicitClasses.push(\"flex\", \"flex-col\");\n else if (componentName === \"ZStack\") implicitClasses.push(\"relative\");\n const styleEntries = [];\n for (const attr of node.attributes) {\n if (!t.isJSXAttribute(attr)) {\n keptAttrs.push(attr);\n continue;\n }\n const name = attr.name.name;\n if (name === \"className\") {\n existingClassName = attr;\n continue;\n }\n styleEntries.push({\n attr,\n fullProp: resolveShorthand(ctx, name),\n cls: propValueToClass(ctx, name, attr.value)\n });\n }\n const retainedLeafKeys = new Set(blockedLeafKeys);\n for (const e of styleEntries) {\n if (e.cls === null && isConvertibleStyleProp(e.fullProp)) {\n for (const k of leafKeysOfProp(e.fullProp)) retainedLeafKeys.add(k);\n }\n }\n for (const c of implicitClasses) {\n if (!overlapsSet(leafKeysOfClassToken(c), retainedLeafKeys)) classes.push(c);\n }\n for (const e of styleEntries) {\n if (e.cls !== null && !overlapsSet(leafKeysOfProp(e.fullProp), retainedLeafKeys)) {\n classes.push(e.cls);\n } else {\n keptAttrs.push(e.attr);\n }\n }\n if (classes.length > 0) {\n const classStr = classes.join(\" \");\n if (existingClassName) {\n const existingVal = getStringValue(existingClassName.value);\n if (existingVal !== null) {\n existingClassName.value = t.stringLiteral(\n existingVal ? `${classStr} ${existingVal}` : classStr\n );\n keptAttrs.unshift(existingClassName);\n } else if (t.isJSXExpressionContainer(existingClassName.value) && !t.isJSXEmptyExpression(existingClassName.value.expression)) {\n const expr = existingClassName.value.expression;\n existingClassName.value = t.jsxExpressionContainer(\n t.templateLiteral(\n [\n t.templateElement(\n { raw: `${classStr} `, cooked: `${classStr} ` },\n false\n ),\n t.templateElement({ raw: \"\", cooked: \"\" }, true)\n ],\n [expr]\n )\n );\n keptAttrs.unshift(existingClassName);\n } else {\n keptAttrs.unshift(\n t.jsxAttribute(t.jsxIdentifier(\"className\"), t.stringLiteral(classStr))\n );\n }\n } else {\n keptAttrs.unshift(\n t.jsxAttribute(t.jsxIdentifier(\"className\"), t.stringLiteral(classStr))\n );\n }\n } else if (existingClassName) {\n keptAttrs.unshift(existingClassName);\n }\n node.attributes = keptAttrs;\n if (classes.length > 0) didTransform = true;\n if (renameComponents && isSimpleKnown && isPlainIdentifier) {\n const tag = componentToTag[componentName];\n node.name = t.jsxIdentifier(tag);\n const parent = path.parent;\n if (t.isJSXElement(parent) && parent.closingElement) {\n parent.closingElement.name = t.jsxIdentifier(tag);\n }\n didTransform = true;\n }\n }\n });\n if (options.rewriteImports && rewriteTailwindFrontendImports(ast)) {\n didTransform = true;\n }\n if (!didTransform) return source;\n const output = generate(ast, {\n retainLines: options.retainLines !== false,\n concise: false\n });\n return output.code;\n}\nconst knownCompoundComponents = /* @__PURE__ */ new Set([\n \"Sheet.Frame\",\n \"Sheet.Overlay\",\n \"Sheet.Handle\",\n \"Sheet.ScrollView\",\n \"Sheet.Container\",\n \"Dialog.Content\",\n \"Dialog.Overlay\",\n \"Popover.Content\",\n \"Tabs.Tab\"\n]);\nconst tailwindFrontendImports = /* @__PURE__ */ new Set([\"html\", \"View\", \"Text\"]);\nfunction isTamaguiSource(source) {\n return source === \"tamagui\" || source.startsWith(\"@tamagui/\");\n}\nfunction resolveTamaguiComponent(path, ctx) {\n const nameNode = path.node.name;\n let baseName;\n let memberChain = [];\n const isPlainIdentifier = t.isJSXIdentifier(nameNode);\n if (t.isJSXIdentifier(nameNode)) {\n baseName = nameNode.name;\n } else if (t.isJSXMemberExpression(nameNode)) {\n const parts = [];\n let cur = nameNode;\n while (t.isJSXMemberExpression(cur)) {\n parts.unshift(cur.property.name);\n cur = cur.object;\n }\n if (!t.isJSXIdentifier(cur)) return null;\n baseName = cur.name;\n memberChain = parts;\n } else {\n return null;\n }\n const binding = path.scope?.getBinding?.(baseName);\n let tamaguiBase;\n if (binding) {\n const bnode = binding.path.node;\n if (t.isImportSpecifier(bnode) || t.isImportDefaultSpecifier(bnode) || t.isImportNamespaceSpecifier(bnode)) {\n const decl = binding.path.parent;\n const source = t.isImportDeclaration(decl) ? String(decl.source.value) : \"\";\n if (!isTamaguiSource(source)) return null;\n if (t.isImportNamespaceSpecifier(bnode)) {\n if (memberChain.length === 0) return null;\n tamaguiBase = memberChain[0];\n memberChain = memberChain.slice(1);\n } else if (t.isImportSpecifier(bnode)) {\n const imported = bnode.imported;\n tamaguiBase = t.isIdentifier(imported) ? imported.name : String(imported.value);\n } else {\n return null;\n }\n 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 const name = memberChain.length ? [tamaguiBase, ...memberChain].join(\".\") : tamaguiBase;\n const isSimpleKnown = memberChain.length === 0 && name in componentToTag;\n const isHTMLPrimitive = tamaguiBase === \"html\" && memberChain.length === 1;\n if (!isSimpleKnown && !isHTMLPrimitive && !knownCompoundComponents.has(name) && !ctx.componentAllow.has(name)) {\n return null;\n }\n return { name, isSimpleKnown, isPlainIdentifier };\n}\nfunction isTailwindFrontendOnlyBinding(binding, importedName) {\n return binding.referencePaths.every((referencePath) => {\n const parent = referencePath.parent;\n if (importedName === \"html\") {\n return t.isJSXMemberExpression(parent) && parent.object === referencePath.node && (t.isJSXOpeningElement(referencePath.parentPath?.parent) || t.isJSXClosingElement(referencePath.parentPath?.parent));\n }\n return t.isJSXIdentifier(referencePath.node) && (t.isJSXOpeningElement(parent) || t.isJSXClosingElement(parent)) && parent.name === referencePath.node;\n });\n}\nfunction rewriteTailwindFrontendImports(ast) {\n let changed = false;\n traverse(ast, {\n ImportDeclaration(path) {\n const source = String(path.node.source.value);\n if (source !== \"tamagui\" && source !== \"@tamagui/core\") return;\n if (path.node.importKind === \"type\") return;\n const moved = [];\n const retained = [];\n for (const specifier of path.node.specifiers) {\n if (!t.isImportSpecifier(specifier) || specifier.importKind === \"type\") {\n retained.push(specifier);\n continue;\n }\n const importedName = t.isIdentifier(specifier.imported) ? specifier.imported.name : String(specifier.imported.value);\n const 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 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 const noMod = token.slice(token.lastIndexOf(\":\") + 1);\n const core = noMod[0] === \"-\" ? noMod.slice(1) : noMod;\n const dash = core.indexOf(\"-\");\n return dash === -1 ? core : core.slice(0, dash);\n}\nconst leafExpansion = {\n padding: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n paddingHorizontal: [\"paddingLeft\", \"paddingRight\"],\n paddingVertical: [\"paddingTop\", \"paddingBottom\"],\n margin: [\"marginTop\", \"marginRight\", \"marginBottom\", \"marginLeft\"],\n marginHorizontal: [\"marginLeft\", \"marginRight\"],\n marginVertical: [\"marginTop\", \"marginBottom\"],\n inset: [\"top\", \"right\", \"bottom\", \"left\"],\n gap: [\"gap\", \"rowGap\", \"columnGap\"],\n borderWidth: [\n \"borderTopWidth\",\n \"borderRightWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\"\n ],\n borderColor: [\n \"borderTopColor\",\n \"borderRightColor\",\n \"borderBottomColor\",\n \"borderLeftColor\"\n ],\n borderRadius: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\"\n ]\n};\nfunction leafKeysOfProp(fullProp) {\n return leafExpansion[fullProp] ?? [fullProp];\n}\nconst prefixToProp = (() => {\n const m = {};\n for (const [prop, prefix] of Object.entries(propToTailwindPrefix)) {\n if (prefix && !(prefix in m)) m[prefix] = prop;\n }\n return m;\n})();\nfunction leafKeysOfClassToken(token) {\n const prefix = classPrefixOf(token);\n return leafKeysOfProp(prefixToProp[prefix] ?? prefix);\n}\nfunction overlapsSet(keys, set) {\n return keys.some((k) => set.has(k));\n}\nfunction isConvertibleStyleProp(fullProp) {\n return propToTailwindPrefix[fullProp] !== void 0 || fullProp in standaloneValueProps;\n}\nfunction propValueToClass(ctx, propName, value) {\n const fullProp = resolveShorthand(ctx, propName);\n if (propToTailwindPrefix[fullProp] === void 0) return null;\n const strVal = getStringValue(value);\n const numVal = getNumericValue(value);\n if (strVal !== null) {\n const parsed = parseValue(strVal, ctx.modifierRegistry);\n if (!parsed.ok) return null;\n const classes = [];\n if (parsed.value.base !== null) {\n const base = payloadToClass(ctx, fullProp, parsed.value.base, []);\n if (base === null) return null;\n classes.push(base);\n }\n for (const clause of parsed.value.clauses) {\n const conditional = payloadToClass(ctx, fullProp, clause.payload, clause.modifiers);\n if (conditional === null) return null;\n classes.push(conditional);\n }\n return classes.length ? classes.join(\" \") : null;\n }\n if (numVal === null) return null;\n const formatted = formatNumericValue(fullProp, numVal);\n if (formatted === null) return null;\n return formatCandidate(\n {\n prop: fullProp,\n value: formatted.value,\n valueKind: formatted.valueKind,\n modifiers: void 0\n },\n ctx.grammarConfig\n );\n}\nfunction payloadToClass(ctx, fullProp, payload, modifiers) {\n let formatted;\n if (standaloneValueProps[fullProp]?.[payload]) {\n formatted = { value: payload, valueKind: \"enum\" };\n } else {\n formatted = formatStringValue(ctx, fullProp, payload);\n if (formatted === null && /^-?\\d+(?:\\.\\d+)?$/.test(payload)) {\n const category = getTokenCategory(fullProp);\n if (!category || ctx.grammarConfig.tokenNames?.[category] !== void 0) {\n formatted = formatNumericValue(fullProp, Number(payload));\n }\n }\n }\n if (formatted === null) return null;\n return formatCandidate(\n {\n prop: fullProp,\n value: formatted.value,\n valueKind: formatted.valueKind,\n modifiers: modifiers.length ? modifiers : void 0\n },\n ctx.grammarConfig\n );\n}\nfunction getStringValue(value) {\n if (!value) return null;\n if (t.isStringLiteral(value)) return value.value;\n if (t.isJSXExpressionContainer(value) && t.isStringLiteral(value.expression)) {\n return value.expression.value;\n }\n if (t.isJSXExpressionContainer(value) && t.isTemplateLiteral(value.expression)) {\n if (value.expression.expressions.length === 0 && value.expression.quasis.length === 1) {\n return value.expression.quasis[0].value.raw;\n }\n }\n return null;\n}\nfunction getNumericValue(value) {\n if (!value) return null;\n if (t.isJSXExpressionContainer(value)) {\n if (t.isNumericLiteral(value.expression)) return value.expression.value;\n if (t.isUnaryExpression(value.expression) && value.expression.operator === \"-\" && t.isNumericLiteral(value.expression.argument)) {\n return -value.expression.argument.value;\n }\n }\n return null;\n}\nfunction resolveShorthand(ctx, name) {\n return ctx.shorthands[name] || name;\n}\nfunction hasConfiguredName(names, value) {\n if (!names) return false;\n if (Array.isArray(names)) return names.includes(value);\n if (names instanceof Set) return names.has(value);\n return value in names;\n}\nfunction formatStringValue(ctx, prop, value) {\n const category = getTokenCategory(prop);\n if (prop !== \"fontWeight\" && category && hasConfiguredName(ctx.grammarConfig.tokenNames?.[category], value)) {\n if (category === \"color\") {\n const mapped = getV6ThemeName(value);\n return mapped ? { value: mapped, valueKind: \"token\" } : null;\n }\n return { value, valueKind: \"token\" };\n }\n if (prop === \"fontWeight\") {\n return fontWeightNames[value] ? { value, valueKind: \"enum\" } : null;\n }\n if (prop === \"zIndex\" && /^\\d+$/.test(value)) {\n return { value, valueKind: \"convenience\" };\n }\n if (/^-?\\d+(\\.\\d+)?$/.test(value)) {\n return prop === \"lineHeight\" ? { value, valueKind: \"arbitrary\" } : null;\n }\n if (value.endsWith(\"%\")) {\n const exact = {\n \"100%\": \"full\",\n \"50%\": \"1/2\",\n \"25%\": \"1/4\",\n \"75%\": \"3/4\"\n };\n if (getTokenCategory(prop) === \"size\" && exact[value]) {\n return { value: exact[value], valueKind: \"convenience\" };\n }\n return { value, valueKind: \"arbitrary\" };\n }\n if (value === \"auto\" && getTokenCategory(prop) === \"size\") {\n return { value, valueKind: \"convenience\" };\n }\n if (prop === \"fontFamily\") return { value, valueKind: \"arbitrary\" };\n if (value.includes(\"(\") || value.includes(\" \") || value.includes(\"_\") || value.startsWith(\"#\") || value.startsWith(\"-\") || /^[\\d.]+[a-z%]/i.test(value)) {\n return { value, valueKind: \"arbitrary\" };\n }\n return { value, valueKind: \"arbitrary\" };\n}\nconst pxLengthProps = /* @__PURE__ */ new Set([\n \"width\",\n \"height\",\n \"minWidth\",\n \"maxWidth\",\n \"minHeight\",\n \"maxHeight\",\n \"flexBasis\",\n \"padding\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"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 const pct = value * 100;\n return Number.isInteger(pct) ? { value: String(pct), valueKind: \"convenience\" } : { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"aspectRatio\" || prop === \"lineHeight\") {\n return { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"scale\" || prop === \"scaleX\" || prop === \"scaleY\") {\n if (value === 0) return { value: \"0\", valueKind: \"convenience\" };\n if (value === 1) return { value: \"100\", valueKind: \"convenience\" };\n return { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"flex\") {\n return value === 1 ? { value: \"1\", valueKind: \"convenience\" } : { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"flexGrow\" || prop === \"flexShrink\") {\n return { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"zIndex\") {\n return Number.isInteger(value) && value >= 0 ? { value: String(value), valueKind: \"convenience\" } : { value: String(value), valueKind: \"arbitrary\" };\n }\n if (prop === \"fontWeight\") {\n return fontWeightNames[String(value)] ? { value: String(value), valueKind: \"enum\" } : null;\n }\n if (prop === \"rotate\") return null;\n if (prop === \"x\" || prop === \"y\") {\n return { value: `${value}px`, valueKind: \"arbitrary\" };\n }\n if (prop.includes(\"Width\") && prop.startsWith(\"border\")) {\n return { value: `${value}px`, valueKind: \"arbitrary\" };\n }\n if (pxLengthProps.has(prop)) {\n return { value: `${value}px`, valueKind: \"arbitrary\" };\n }\n return null;\n}\nexport {\n findParseError,\n tamaguiToTailwind\n};\n//# sourceMappingURL=transform.js.map\n"],"mappings":"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"}
@@ -2,17 +2,10 @@ import { parse } from "@babel/parser";
2
2
  import _traverse from "@babel/traverse";
3
3
  import _generate from "@babel/generator";
4
4
  import * as t from "@babel/types";
5
- import { createModifierRegistry, defaultMediaKeys, fontWeightNames, formatCandidate, getTokenCategory, parseValue, propToTailwindPrefix, standaloneValueProps, v6RemovedThemeNames, v6ThemeNameReplacements } from "@tamagui/style-grammar/tooling";
5
+ import { createModifierRegistry, defaultMediaKeys, fontWeightNames, formatCandidate, getTokenCategory, parseValue, propToTailwindPrefix, propTokenGroupFallbacks, standaloneValueProps, v6RemovedThemeNames, v6ThemeNameReplacements } from "@tamagui/style-grammar/tooling";
6
6
  import { componentToTag } from "./maps/componentToTag.native.js";
7
7
  import { shorthands } from "@tamagui/shorthands/v4";
8
8
 
9
- function _instanceof(left, right) {
10
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
11
- return !!right[Symbol.hasInstance](left);
12
- } else {
13
- return left instanceof right;
14
- }
15
- }
16
9
  var _traverse_default;
17
10
  var traverse = (_traverse_default = _traverse.default) !== null && _traverse_default !== void 0 ? _traverse_default : _traverse;
18
11
  var _generate_default;
@@ -30,7 +23,7 @@ function getV6ThemeName(name) {
30
23
  function namesToSet(names) {
31
24
  if (!names) return /* @__PURE__ */ new Set();
32
25
  if (Array.isArray(names)) return new Set(names);
33
- if (_instanceof(names, Set)) return new Set(names);
26
+ if (names instanceof Set) return new Set(names);
34
27
  return new Set(Object.keys(names));
35
28
  }
36
29
  function addConfigNames(target, source) {
@@ -100,6 +93,13 @@ function createTransformGrammarConfig(options, mediaKeys, shorthands) {
100
93
  }
101
94
  }
102
95
  }
96
+ for (var group in propTokenGroupFallbacks) {
97
+ var _options_tokens1;
98
+ var own = (_options_tokens1 = options.tokens) === null || _options_tokens1 === void 0 ? void 0 : _options_tokens1[group];
99
+ var names1 = own ? /* @__PURE__ */ new Set() : tokenNames[propTokenGroupFallbacks[group]];
100
+ if (own) addConfigNames(names1, own);
101
+ if (names1) tokenNames[group] = names1;
102
+ }
103
103
  if (options.fonts) {
104
104
  var _tokenNames, _tokenNames1, _tokenNames2, _tokenNames3, _tokenNames4;
105
105
  (_tokenNames = tokenNames).fontFamily || (_tokenNames.fontFamily = /* @__PURE__ */ new Set());
@@ -167,7 +167,8 @@ function tamaguiToTailwind(source) {
167
167
  componentAllow: new Set((_options_components = options.components) !== null && _options_components !== void 0 ? _options_components : []),
168
168
  shorthands,
169
169
  grammarConfig,
170
- modifierRegistry: createModifierRegistry(grammarConfig).registry
170
+ modifierRegistry: createModifierRegistry(grammarConfig).registry,
171
+ rewriteImports: options.rewriteImports === true
171
172
  };
172
173
  var ast;
173
174
  try {
@@ -433,9 +434,12 @@ function tamaguiToTailwind(source) {
433
434
  didTransform = true;
434
435
  }
435
436
  } });
437
+ if (options.rewriteImports && rewriteTailwindFrontendImports(ast)) {
438
+ didTransform = true;
439
+ }
436
440
  if (!didTransform) return source;
437
441
  var output = generate(ast, {
438
- retainLines: true,
442
+ retainLines: options.retainLines !== false,
439
443
  concise: false
440
444
  });
441
445
  return output.code;
@@ -451,6 +455,11 @@ var knownCompoundComponents = /* @__PURE__ */ new Set([
451
455
  "Popover.Content",
452
456
  "Tabs.Tab"
453
457
  ]);
458
+ var tailwindFrontendImports = /* @__PURE__ */ new Set([
459
+ "html",
460
+ "View",
461
+ "Text"
462
+ ]);
454
463
  function isTamaguiSource(source) {
455
464
  return source === "tamagui" || source.startsWith("@tamagui/");
456
465
  }
@@ -493,15 +502,20 @@ function resolveTamaguiComponent(path, ctx) {
493
502
  } else {
494
503
  return null;
495
504
  }
505
+ if (ctx.rewriteImports && source !== "@tamagui/tailwind" && (source !== "tamagui" && source !== "@tamagui/core" || !tailwindFrontendImports.has(tamaguiBase) || !isTailwindFrontendOnlyBinding(binding, tamaguiBase))) {
506
+ return null;
507
+ }
496
508
  } else {
497
509
  return null;
498
510
  }
499
511
  } else {
500
512
  tamaguiBase = baseName;
513
+ if (ctx.rewriteImports && !tailwindFrontendImports.has(tamaguiBase)) return null;
501
514
  }
502
515
  var name = memberChain.length ? [tamaguiBase, ...memberChain].join(".") : tamaguiBase;
503
516
  var isSimpleKnown = memberChain.length === 0 && name in componentToTag;
504
- if (!isSimpleKnown && !knownCompoundComponents.has(name) && !ctx.componentAllow.has(name)) {
517
+ var isHTMLPrimitive = tamaguiBase === "html" && memberChain.length === 1;
518
+ if (!isSimpleKnown && !isHTMLPrimitive && !knownCompoundComponents.has(name) && !ctx.componentAllow.has(name)) {
505
519
  return null;
506
520
  }
507
521
  return {
@@ -510,6 +524,65 @@ function resolveTamaguiComponent(path, ctx) {
510
524
  isPlainIdentifier
511
525
  };
512
526
  }
527
+ function isTailwindFrontendOnlyBinding(binding, importedName) {
528
+ return binding.referencePaths.every(function(referencePath) {
529
+ var parent = referencePath.parent;
530
+ if (importedName === "html") {
531
+ var _referencePath_parentPath, _referencePath_parentPath1;
532
+ 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));
533
+ }
534
+ return t.isJSXIdentifier(referencePath.node) && (t.isJSXOpeningElement(parent) || t.isJSXClosingElement(parent)) && parent.name === referencePath.node;
535
+ });
536
+ }
537
+ function rewriteTailwindFrontendImports(ast) {
538
+ var changed = false;
539
+ traverse(ast, { ImportDeclaration(path) {
540
+ var source = String(path.node.source.value);
541
+ if (source !== "tamagui" && source !== "@tamagui/core") return;
542
+ if (path.node.importKind === "type") return;
543
+ var moved = [];
544
+ var retained = [];
545
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
546
+ try {
547
+ for (var _iterator = path.node.specifiers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
548
+ var specifier = _step.value;
549
+ if (!t.isImportSpecifier(specifier) || specifier.importKind === "type") {
550
+ retained.push(specifier);
551
+ continue;
552
+ }
553
+ var importedName = t.isIdentifier(specifier.imported) ? specifier.imported.name : String(specifier.imported.value);
554
+ var binding = path.scope.getBinding(specifier.local.name);
555
+ if (!tailwindFrontendImports.has(importedName) || !binding || !isTailwindFrontendOnlyBinding(binding, importedName)) {
556
+ retained.push(specifier);
557
+ continue;
558
+ }
559
+ moved.push(specifier);
560
+ }
561
+ } catch (err) {
562
+ _didIteratorError = true;
563
+ _iteratorError = err;
564
+ } finally {
565
+ try {
566
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
567
+ _iterator.return();
568
+ }
569
+ } finally {
570
+ if (_didIteratorError) {
571
+ throw _iteratorError;
572
+ }
573
+ }
574
+ }
575
+ if (!moved.length) return;
576
+ changed = true;
577
+ if (!retained.length) {
578
+ path.node.source = t.stringLiteral("@tamagui/tailwind");
579
+ return;
580
+ }
581
+ path.node.specifiers = retained;
582
+ path.insertAfter(t.importDeclaration(moved, t.stringLiteral("@tamagui/tailwind")));
583
+ } });
584
+ return changed;
585
+ }
513
586
  function classPrefixOf(token) {
514
587
  var noMod = token.slice(token.lastIndexOf(":") + 1);
515
588
  var core = noMod[0] === "-" ? noMod.slice(1) : noMod;
@@ -707,7 +780,7 @@ function resolveShorthand(ctx, name) {
707
780
  function hasConfiguredName(names, value) {
708
781
  if (!names) return false;
709
782
  if (Array.isArray(names)) return names.includes(value);
710
- if (_instanceof(names, Set)) return names.has(value);
783
+ if (names instanceof Set) return names.has(value);
711
784
  return value in names;
712
785
  }
713
786
  function formatStringValue(ctx, prop, value) {
@@ -738,7 +811,12 @@ function formatStringValue(ctx, prop, value) {
738
811
  valueKind: "convenience"
739
812
  };
740
813
  }
741
- if (/^-?\d+(\.\d+)?$/.test(value)) return null;
814
+ if (/^-?\d+(\.\d+)?$/.test(value)) {
815
+ return prop === "lineHeight" ? {
816
+ value,
817
+ valueKind: "arbitrary"
818
+ } : null;
819
+ }
742
820
  if (value.endsWith("%")) {
743
821
  var exact = {
744
822
  "100%": "full",
@@ -791,6 +869,12 @@ var pxLengthProps = /* @__PURE__ */ new Set([
791
869
  "paddingRight",
792
870
  "paddingBottom",
793
871
  "paddingLeft",
872
+ "paddingStart",
873
+ "paddingEnd",
874
+ "paddingInlineStart",
875
+ "paddingInlineEnd",
876
+ "paddingBlockStart",
877
+ "paddingBlockEnd",
794
878
  "paddingHorizontal",
795
879
  "paddingVertical",
796
880
  "margin",
@@ -798,6 +882,12 @@ var pxLengthProps = /* @__PURE__ */ new Set([
798
882
  "marginRight",
799
883
  "marginBottom",
800
884
  "marginLeft",
885
+ "marginStart",
886
+ "marginEnd",
887
+ "marginInlineStart",
888
+ "marginInlineEnd",
889
+ "marginBlockStart",
890
+ "marginBlockEnd",
801
891
  "marginHorizontal",
802
892
  "marginVertical",
803
893
  "gap",
@@ -808,14 +898,23 @@ var pxLengthProps = /* @__PURE__ */ new Set([
808
898
  "bottom",
809
899
  "left",
810
900
  "inset",
901
+ "insetInlineStart",
902
+ "insetInlineEnd",
811
903
  "borderRadius",
812
904
  "borderTopLeftRadius",
813
905
  "borderTopRightRadius",
814
906
  "borderBottomLeftRadius",
815
907
  "borderBottomRightRadius",
908
+ "borderTopStartRadius",
909
+ "borderTopEndRadius",
910
+ "borderBottomStartRadius",
911
+ "borderBottomEndRadius",
912
+ "borderStartStartRadius",
913
+ "borderStartEndRadius",
914
+ "borderEndStartRadius",
915
+ "borderEndEndRadius",
816
916
  "fontSize",
817
- "letterSpacing",
818
- "lineHeight"
917
+ "letterSpacing"
819
918
  ]);
820
919
  function formatNumericValue(prop, value) {
821
920
  if (prop === "opacity") {
@@ -828,10 +927,12 @@ function formatNumericValue(prop, value) {
828
927
  valueKind: "arbitrary"
829
928
  };
830
929
  }
831
- if (prop === "aspectRatio") return {
832
- value: String(value),
833
- valueKind: "arbitrary"
834
- };
930
+ if (prop === "aspectRatio" || prop === "lineHeight") {
931
+ return {
932
+ value: String(value),
933
+ valueKind: "arbitrary"
934
+ };
935
+ }
835
936
  if (prop === "scale" || prop === "scaleX" || prop === "scaleY") {
836
937
  if (value === 0) return {
837
938
  value: "0",