@tamagui/web 1.9.13 → 1.9.15

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.
@@ -6,6 +6,7 @@ import {
6
6
  useIsomorphicLayoutEffect,
7
7
  } from '@tamagui/constants'
8
8
  import {
9
+ stylePropsFont,
9
10
  stylePropsText,
10
11
  stylePropsTransform,
11
12
  validPseudoKeys,
@@ -295,11 +296,20 @@ export const getSplitStyles: StyleSplitter = (
295
296
  }
296
297
  }
297
298
 
298
- // loop backwards so we can skip already-used props
299
- for (let i = len - 1; i >= 0; i--) {
300
- let keyInit = propKeys[i]
301
- if (keyInit === 'className') continue // handled above
302
- let valInit = props[keyInit]
299
+ /**
300
+ * Need to process these after done with flattening the rest of the props + variants/mediam when we have the final font family.
301
+ *
302
+ * We use this because fonts are grouped together and cannot be processed correctly without the correct font family.
303
+ */
304
+ const specialProps: [string, any][] = []
305
+
306
+ function processProp(
307
+ keyInit: string,
308
+ valInit: any,
309
+ special = false,
310
+ fontFamilyOverride: any = null
311
+ ) {
312
+ if (keyInit === 'className') return // handled above
303
313
 
304
314
  // normalize shorthands up front
305
315
  if (keyInit in shorthands) {
@@ -312,18 +322,18 @@ export const getSplitStyles: StyleSplitter = (
312
322
  keyInit = 'selectable'
313
323
  valInit = valInit === 'none' ? false : true
314
324
  } else if (keyInit.startsWith('data-') || keyInit.startsWith('aria-')) {
315
- continue
325
+ return
316
326
  }
317
327
  }
318
328
 
319
329
  if (!staticConfig.isHOC) {
320
330
  if (keyInit in skipProps) {
321
- continue
331
+ return
322
332
  }
323
333
  }
324
334
 
325
335
  if (keyInit in usedKeys) {
326
- continue
336
+ return
327
337
  }
328
338
 
329
339
  if (typeof valInit === 'string' && valInit[0] === '_') {
@@ -334,7 +344,7 @@ export const getSplitStyles: StyleSplitter = (
334
344
  style[keyInit] = reverseMapClassNameToValue(keyInit, valInit)
335
345
  }
336
346
  usedKeys[keyInit] = 1
337
- continue
347
+ return
338
348
  }
339
349
  }
340
350
 
@@ -342,26 +352,26 @@ export const getSplitStyles: StyleSplitter = (
342
352
  for (const key in valInit) {
343
353
  viewProps[`data-${hyphenate(key)}`] = valInit[key]
344
354
  }
345
- continue
355
+ return
346
356
  }
347
357
 
348
358
  const isMainStyle = keyInit === 'style'
349
359
  if (isMainStyle || keyInit.startsWith('_style')) {
350
- if (!valInit) continue
360
+ if (!valInit) return
351
361
  const styles = Array.isArray(valInit) ? valInit : [valInit]
352
362
  const styleLen = styles.length
353
363
  for (let j = styleLen; j >= 0; j--) {
354
364
  const cur = styles[j]
355
- if (!cur) continue
365
+ if (!cur) return
356
366
  for (const key in cur) {
357
367
  if (!isMainStyle && usedKeys[key]) {
358
- continue
368
+ return
359
369
  }
360
370
  usedKeys[key] = 1
361
371
  style[key] = cur[key]
362
372
  }
363
373
  }
364
- continue
374
+ return
365
375
  }
366
376
 
367
377
  if (process.env.TAMAGUI_TARGET === 'web') {
@@ -383,14 +393,14 @@ export const getSplitStyles: StyleSplitter = (
383
393
  viewProps.disabled = true
384
394
  }
385
395
  if (!variants?.disabled) {
386
- continue
396
+ return
387
397
  }
388
398
  }
389
399
 
390
400
  if (keyInit === 'testID') {
391
401
  usedKeys[keyInit] = 1
392
402
  viewProps[isReactNative ? 'testId' : 'data-testid'] = valInit
393
- continue
403
+ return
394
404
  }
395
405
 
396
406
  if (keyInit === 'id' || keyInit === 'nativeID') {
@@ -400,7 +410,7 @@ export const getSplitStyles: StyleSplitter = (
400
410
  } else {
401
411
  viewProps.id = valInit
402
412
  }
403
- continue
413
+ return
404
414
  }
405
415
 
406
416
  let didUseKeyInit = false
@@ -410,7 +420,7 @@ export const getSplitStyles: StyleSplitter = (
410
420
  if (accessibilityDirectMap[keyInit] || keyInit.startsWith('accessibility')) {
411
421
  viewProps[keyInit] = valInit
412
422
  usedKeys[keyInit] = 1
413
- continue
423
+ return
414
424
  }
415
425
  } else {
416
426
  didUseKeyInit = true
@@ -425,7 +435,7 @@ export const getSplitStyles: StyleSplitter = (
425
435
  } else {
426
436
  viewProps.role = accessibilityRoleToWebRole[valInit] || valInit
427
437
  }
428
- continue
438
+ return
429
439
  }
430
440
  case 'accessibilityLabelledBy':
431
441
  case 'accessibilityFlowTo':
@@ -433,17 +443,17 @@ export const getSplitStyles: StyleSplitter = (
433
443
  case 'accessibilityDescribedBy': {
434
444
  viewProps[`aria-${keyInit.replace('accessibility', '').toLowerCase()}`] =
435
445
  processIDRefList(valInit)
436
- continue
446
+ return
437
447
  }
438
448
  case 'accessibilityKeyShortcuts': {
439
449
  if (Array.isArray(valInit)) {
440
450
  viewProps['aria-keyshortcuts'] = valInit.join(' ')
441
451
  }
442
- continue
452
+ return
443
453
  }
444
454
  case 'accessibilityLiveRegion': {
445
455
  viewProps['aria-live'] = valInit === 'none' ? 'off' : valInit
446
- continue
456
+ return
447
457
  }
448
458
  case 'accessibilityReadOnly': {
449
459
  viewProps['aria-readonly'] = valInit
@@ -455,7 +465,7 @@ export const getSplitStyles: StyleSplitter = (
455
465
  ) {
456
466
  viewProps.readOnly = true
457
467
  }
458
- continue
468
+ return
459
469
  }
460
470
  case 'accessibilityRequired': {
461
471
  viewProps['aria-required'] = valInit
@@ -467,7 +477,7 @@ export const getSplitStyles: StyleSplitter = (
467
477
  ) {
468
478
  viewProps.required = valInit
469
479
  }
470
- continue
480
+ return
471
481
  }
472
482
  default: {
473
483
  didUseKeyInit = false
@@ -478,7 +488,7 @@ export const getSplitStyles: StyleSplitter = (
478
488
 
479
489
  if (didUseKeyInit) {
480
490
  usedKeys[keyInit] = 1
481
- continue
491
+ return
482
492
  }
483
493
 
484
494
  if (valInit && valInit[0] === '_') {
@@ -497,7 +507,7 @@ export const getSplitStyles: StyleSplitter = (
497
507
  console.log('tamagui classname props', keyInit, valInit)
498
508
  }
499
509
  mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo)
500
- continue
510
+ return
501
511
  }
502
512
  }
503
513
  }
@@ -546,7 +556,7 @@ export const getSplitStyles: StyleSplitter = (
546
556
  // which now has it's own unstyled + the child unstyled...
547
557
  // so *don't* skip applying the styles, but also pass `unstyled` to children
548
558
  if (!isVariant) {
549
- continue
559
+ return
550
560
  }
551
561
  }
552
562
 
@@ -562,7 +572,7 @@ export const getSplitStyles: StyleSplitter = (
562
572
  keyInit,
563
573
  valInit,
564
574
  theme,
565
- props,
575
+ special ? { ...props, fontFamily: fontFamilyOverride } : props,
566
576
  state,
567
577
  languageContext,
568
578
  undefined,
@@ -583,11 +593,14 @@ export const getSplitStyles: StyleSplitter = (
583
593
  // eslint-disable-next-line no-console
584
594
  console.groupEnd()
585
595
  }
586
-
587
- if (!expanded) continue
596
+ if (!expanded) return
588
597
 
589
598
  for (const [key, val] of expanded) {
590
599
  if (val === undefined) continue
600
+ if (key in stylePropsFont && !special && key !== 'fontFamily') {
601
+ specialProps.push([key, val])
602
+ continue
603
+ }
591
604
 
592
605
  isMedia = isMediaKey(key)
593
606
  isPseudo = key in validPseudoKeys
@@ -825,6 +838,19 @@ export const getSplitStyles: StyleSplitter = (
825
838
  }
826
839
  }
827
840
 
841
+ // loop backwards so we can skip already-used props
842
+ for (let i = len - 1; i >= 0; i--) {
843
+ const keyInit = propKeys[i]
844
+ const valInit = props[keyInit]
845
+ processProp(keyInit, valInit)
846
+ }
847
+ // loop the special props once again
848
+ // this one doesn't need to be backwards since it was pushed in the backwards loop (is already reversed)
849
+ for (let i = 0; i < specialProps.length; i++) {
850
+ const [key, value] = specialProps[i]
851
+ processProp(key, value, true, fontFamily)
852
+ }
853
+
828
854
  fixStyles(style)
829
855
  if (isWeb) {
830
856
  styleToCSS(style)
@@ -1 +1 @@
1
- {"version":3,"file":"createPropMapper.d.ts","sourceRoot":"","sources":["../../src/helpers/createPropMapper.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EAEtB,MAAM,aAAa,CAAA;AAQpB,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,OAAO,GACP,UAAU,GACV,MAAM,GACN,iBAAiB,CAAA;AAErB,eAAO,MAAM,oBAAoB,UAAW,GAAG,SAAS,QAAQ,eAAe,CAAC,qBAE/E,CAAA;AAED,eAAO,MAAM,gBAAgB,iBAAkB,kBAAkB,eAmFhE,CAAA;AA+GD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,qBAAqB,sBA2BtF;AAMD,eAAO,MAAM,uBAAuB,cAAe,GAAG,QAErD,CAAA"}
1
+ {"version":3,"file":"createPropMapper.d.ts","sourceRoot":"","sources":["../../src/helpers/createPropMapper.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EAEtB,MAAM,aAAa,CAAA;AAQpB,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,OAAO,GACP,UAAU,GACV,MAAM,GACN,iBAAiB,CAAA;AAErB,eAAO,MAAM,oBAAoB,UAAW,GAAG,SAAS,QAAQ,eAAe,CAAC,qBAE/E,CAAA;AAED,eAAO,MAAM,gBAAgB,iBAAkB,kBAAkB,eAgGhE,CAAA;AA+GD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,qBAAqB,sBA2BtF;AAMD,eAAO,MAAM,uBAAuB,cAAe,GAAG,QAErD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,cAAc,EAMd,eAAe,EACf,kBAAkB,EAElB,qBAAqB,EACrB,cAAc,EACd,WAAW,EAEZ,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gCAAgC,CAAA;AAkBvC,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,YAAY,EAAE,kBAAkB,CAAA;IAChC,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,KAAK,EAAE,eAAe,CAAA;IACtB,IAAI,EAAE,qBAAqB,CAAA;IAC3B,eAAe,CAAC,EAAE,iBAAiB,CAAA;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAsFhE,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,kBAAkB,EAChC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,eAAe,EACtB,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,eAAe,CAAC,EAAE,mBAAmB,EAErC,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,SAAS,KACd,cAAc,CAAA;AAEnB,eAAO,MAAM,UAAU,MAAM,CAAA;AAqB7B,eAAO,MAAM,cAAc,EAAE,aAuwB5B,CAAA;AA0FD,eAAO,MAAM,WAAW,eACV,aAAa,UACjB,MAAM,WACL,MAAM,sBACK,OAAO,wBACL,OAAO,KAC5B,cA6BF,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,aAI/B,CAAA;AAOD,eAAO,MAAM,cAAc,EAAE,aAU5B,CAAA;AA2BD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,cAAc,EAMd,eAAe,EACf,kBAAkB,EAElB,qBAAqB,EACrB,cAAc,EACd,WAAW,EAEZ,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gCAAgC,CAAA;AAkBvC,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,YAAY,EAAE,kBAAkB,CAAA;IAChC,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,KAAK,EAAE,eAAe,CAAA;IACtB,IAAI,EAAE,qBAAqB,CAAA;IAC3B,eAAe,CAAC,EAAE,iBAAiB,CAAA;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAsFhE,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,kBAAkB,EAChC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,eAAe,EACtB,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,eAAe,CAAC,EAAE,mBAAmB,EAErC,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,SAAS,KACd,cAAc,CAAA;AAEnB,eAAO,MAAM,UAAU,MAAM,CAAA;AAqB7B,eAAO,MAAM,cAAc,EAAE,aAgyB5B,CAAA;AA0FD,eAAO,MAAM,WAAW,eACV,aAAa,UACjB,MAAM,WACL,MAAM,sBACK,OAAO,wBACL,OAAO,KAC5B,cA6BF,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,aAI/B,CAAA;AAOD,eAAO,MAAM,cAAc,EAAE,aAU5B,CAAA;AA2BD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA"}