@tamagui/static 1.82.8 → 1.83.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.
@@ -1533,7 +1533,7 @@ export function createExtractor(
1533
1533
  (traversePath.node.children &&
1534
1534
  traversePath.node.children.every((x) => x.type === 'JSXText')))
1535
1535
 
1536
- const themeVal = inlined.get('theme')
1536
+ let themeVal = inlined.get('theme')
1537
1537
 
1538
1538
  // on native we can't flatten when theme prop is set
1539
1539
  if (platform !== 'native') {
@@ -1562,9 +1562,7 @@ export function createExtractor(
1562
1562
  (staticConfig.neverFlatten === 'jsx' ? hasOnlyStringChildren : true)
1563
1563
  )
1564
1564
 
1565
- const shouldWrapTheme = shouldFlatten && themeVal
1566
1565
  const usedThemeKeys = new Set<string>()
1567
-
1568
1566
  // if it accesses any theme values during evaluation
1569
1567
  themeAccessListeners.add((key) => {
1570
1568
  if (options.experimentalFlattenThemesOnNative) {
@@ -1579,72 +1577,24 @@ export function createExtractor(
1579
1577
  }
1580
1578
  })
1581
1579
 
1582
- if (shouldPrintDebug) {
1583
- try {
1584
- // prettier-ignore
1585
- logger.info([' flatten?', shouldFlatten, objToStr({ hasSpread, shouldDeopt, canFlattenProps, shouldWrapTheme, hasOnlyStringChildren }), 'inlined', inlined.size, [...inlined]].join(' '))
1586
- } catch {
1587
- // ok
1588
- }
1589
- }
1590
-
1591
- // wrap theme around children on flatten
1592
- // TODO move this to bottom and re-check shouldFlatten
1593
- // account for shouldFlatten could change w the above block "if (disableExtractVariables)"
1594
- if (shouldFlatten && shouldWrapTheme) {
1595
- if (!programPath) {
1596
- console.warn(
1597
- `No program path found, avoiding importing flattening / importing theme in ${sourcePath}`
1598
- )
1599
- } else {
1600
- if (shouldPrintDebug) {
1601
- logger.info([' - wrapping theme', themeVal].join(' '))
1602
- }
1603
-
1604
- // remove theme attribute from flattened node
1605
- attrs = attrs.filter((x) =>
1606
- x.type === 'attr' &&
1607
- t.isJSXAttribute(x.value) &&
1608
- x.value.name.name === 'theme'
1609
- ? false
1610
- : true
1611
- )
1612
-
1613
- // add import
1614
- if (!hasImportedTheme) {
1615
- hasImportedTheme = true
1616
- programPath.node.body.push(
1617
- t.importDeclaration(
1618
- [
1619
- t.importSpecifier(
1620
- t.identifier('_TamaguiTheme'),
1621
- t.identifier('Theme')
1622
- ),
1623
- ],
1624
- t.stringLiteral('@tamagui/web')
1625
- )
1626
- )
1627
- }
1628
-
1629
- traversePath.replaceWith(
1630
- t.jsxElement(
1631
- t.jsxOpeningElement(t.jsxIdentifier('_TamaguiTheme'), [
1632
- t.jsxAttribute(t.jsxIdentifier('name'), themeVal.value),
1633
- ]),
1634
- t.jsxClosingElement(t.jsxIdentifier('_TamaguiTheme')),
1635
- [traversePath.node]
1636
- )
1637
- )
1638
- }
1639
- }
1640
-
1641
1580
  // only if we flatten, ensure the default styles are there
1642
1581
  if (shouldFlatten) {
1582
+ let skipMap = false
1643
1583
  const defaultStyleAttrs = Object.keys(defaultProps).flatMap((key) => {
1584
+ if (skipMap) return []
1585
+ const value = defaultProps[key]
1586
+ if (key === 'theme' && !themeVal) {
1587
+ if (platform === 'native') {
1588
+ shouldFlatten = false
1589
+ skipMap = true
1590
+ inlined.set('theme', { value: t.stringLiteral(value) })
1591
+ }
1592
+ themeVal = { value: t.stringLiteral(value) }
1593
+ return []
1594
+ }
1644
1595
  if (!isValidStyleKey(key, staticConfig)) {
1645
1596
  return []
1646
1597
  }
1647
- const value = defaultProps[key]
1648
1598
  const name = tamaguiConfig?.shorthands[key] || key
1649
1599
  if (value === undefined) {
1650
1600
  logger.warn(
@@ -1683,8 +1633,10 @@ export function createExtractor(
1683
1633
  return attr
1684
1634
  }) as ExtractedAttr[]
1685
1635
 
1686
- if (defaultStyleAttrs.length) {
1687
- attrs = [...defaultStyleAttrs, ...attrs]
1636
+ if (!skipMap) {
1637
+ if (defaultStyleAttrs.length) {
1638
+ attrs = [...defaultStyleAttrs, ...attrs]
1639
+ }
1688
1640
  }
1689
1641
  }
1690
1642
 
@@ -1729,6 +1681,65 @@ export function createExtractor(
1729
1681
  }, [])
1730
1682
  .flat()
1731
1683
 
1684
+ const shouldWrapTheme = shouldFlatten && themeVal
1685
+ // wrap theme around children on flatten
1686
+ // account for shouldFlatten could change w the above block "if (disableExtractVariables)"
1687
+ if (shouldWrapTheme) {
1688
+ if (!programPath) {
1689
+ console.warn(
1690
+ `No program path found, avoiding importing flattening / importing theme in ${sourcePath}`
1691
+ )
1692
+ } else {
1693
+ if (shouldPrintDebug) {
1694
+ logger.info([' - wrapping theme', themeVal].join(' '))
1695
+ }
1696
+
1697
+ // remove theme attribute from flattened node
1698
+ attrs = attrs.filter((x) =>
1699
+ x.type === 'attr' &&
1700
+ t.isJSXAttribute(x.value) &&
1701
+ x.value.name.name === 'theme'
1702
+ ? false
1703
+ : true
1704
+ )
1705
+
1706
+ // add import
1707
+ if (!hasImportedTheme) {
1708
+ hasImportedTheme = true
1709
+ programPath.node.body.push(
1710
+ t.importDeclaration(
1711
+ [
1712
+ t.importSpecifier(
1713
+ t.identifier('_TamaguiTheme'),
1714
+ t.identifier('Theme')
1715
+ ),
1716
+ ],
1717
+ t.stringLiteral('@tamagui/web')
1718
+ )
1719
+ )
1720
+ }
1721
+
1722
+ traversePath.replaceWith(
1723
+ t.jsxElement(
1724
+ t.jsxOpeningElement(t.jsxIdentifier('_TamaguiTheme'), [
1725
+ t.jsxAttribute(t.jsxIdentifier('name'), themeVal.value),
1726
+ ]),
1727
+ t.jsxClosingElement(t.jsxIdentifier('_TamaguiTheme')),
1728
+ [traversePath.node]
1729
+ )
1730
+ )
1731
+ }
1732
+ }
1733
+
1734
+ if (shouldPrintDebug) {
1735
+ try {
1736
+ // prettier-ignore
1737
+ logger.info([' flatten?', shouldFlatten, objToStr({ hasSpread, shouldDeopt, canFlattenProps, shouldWrapTheme, hasOnlyStringChildren }), 'inlined', inlined.size, [...inlined]].join(' '))
1738
+ } catch {
1739
+ // ok
1740
+ }
1741
+ }
1742
+
1732
1743
  if (shouldDeopt || !shouldFlatten) {
1733
1744
  if (shouldPrintDebug) {
1734
1745
  logger.info(`Deopting ${shouldDeopt} ${shouldFlatten}`)
@@ -1 +1 @@
1
- {"version":3,"file":"createExtractor.d.ts","sourceRoot":"","sources":["../../src/extractor/createExtractor.ts"],"names":[],"mappings":"AAGA,OAAiB,EAAE,QAAQ,EAAmB,MAAM,iBAAiB,CAAA;AACrE,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAcjC,OAAO,KAAK,EAGV,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EAGf,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAcnD,OAAO,EAAE,iBAAiB,EAA6B,MAAM,6BAA6B,CAAA;AAmC1F,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAE1D,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAQ9C,wBAAgB,eAAe,CAC7B,EAAE,MAAgB,EAAE,GAAE,gBAAsC;;;;;yBA0CjC,cAAc;6BAPhB,cAAc;;mBAwBtB,UAAU,SAAS,mBAAmB;;;;;;;eAIpC,UAAU,SAAS,mBAAmB;;;;;;;EA+oE1D"}
1
+ {"version":3,"file":"createExtractor.d.ts","sourceRoot":"","sources":["../../src/extractor/createExtractor.ts"],"names":[],"mappings":"AAGA,OAAiB,EAAE,QAAQ,EAAmB,MAAM,iBAAiB,CAAA;AACrE,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAcjC,OAAO,KAAK,EAGV,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EAGf,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAcnD,OAAO,EAAE,iBAAiB,EAA6B,MAAM,6BAA6B,CAAA;AAmC1F,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAE1D,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAQ9C,wBAAgB,eAAe,CAC7B,EAAE,MAAgB,EAAE,GAAE,gBAAsC;;;;;yBA0CjC,cAAc;6BAPhB,cAAc;;mBAwBtB,UAAU,SAAS,mBAAmB;;;;;;;eAIpC,UAAU,SAAS,mBAAmB;;;;;;;EA0pE1D"}