@stylexjs/shared 0.7.5 → 0.9.0-beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. package/lib/common-types.d.ts +1 -0
  2. package/lib/common-types.js.flow +1 -0
  3. package/lib/convert-to-className.d.ts +1 -1
  4. package/lib/convert-to-className.js +13 -11
  5. package/lib/convert-to-className.js.flow +1 -1
  6. package/lib/generate-css-rule.js +1 -1
  7. package/lib/index.js +2 -2
  8. package/lib/physical-rtl/generate-ltr.d.ts +3 -1
  9. package/lib/physical-rtl/generate-ltr.js +8 -12
  10. package/lib/physical-rtl/generate-ltr.js.flow +2 -2
  11. package/lib/physical-rtl/generate-rtl.d.ts +2 -2
  12. package/lib/physical-rtl/generate-rtl.js +57 -64
  13. package/lib/physical-rtl/generate-rtl.js.flow +2 -2
  14. package/lib/preprocess-rules/PreRule.d.ts +13 -6
  15. package/lib/preprocess-rules/PreRule.js +14 -13
  16. package/lib/preprocess-rules/PreRule.js.flow +14 -6
  17. package/lib/preprocess-rules/application-order.d.ts +4 -111
  18. package/lib/preprocess-rules/application-order.js.flow +3 -110
  19. package/lib/preprocess-rules/basic-validation.js +1 -1
  20. package/lib/preprocess-rules/flatten-raw-style-obj.d.ts +1 -2
  21. package/lib/preprocess-rules/flatten-raw-style-obj.js +7 -21
  22. package/lib/preprocess-rules/flatten-raw-style-obj.js.flow +1 -2
  23. package/lib/preprocess-rules/index.d.ts +1 -1
  24. package/lib/preprocess-rules/index.js +1 -1
  25. package/lib/preprocess-rules/index.js.flow +4 -1
  26. package/lib/preprocess-rules/legacy-expand-shorthands.d.ts +3 -38
  27. package/lib/preprocess-rules/legacy-expand-shorthands.js +12 -1
  28. package/lib/preprocess-rules/legacy-expand-shorthands.js.flow +3 -38
  29. package/lib/preprocess-rules/property-specificity.d.ts +4 -15
  30. package/lib/preprocess-rules/property-specificity.js.flow +3 -14
  31. package/lib/stylex-create-theme.js +2 -2
  32. package/lib/stylex-create.d.ts +4 -0
  33. package/lib/stylex-create.js +20 -8
  34. package/lib/stylex-create.js.flow +9 -1
  35. package/lib/stylex-define-vars.d.ts +8 -5
  36. package/lib/stylex-define-vars.js +2 -2
  37. package/lib/stylex-define-vars.js.flow +5 -1
  38. package/lib/stylex-include.js +1 -1
  39. package/lib/stylex-keyframes.js +1 -1
  40. package/lib/transform-value.js +7 -4
  41. package/lib/types/index.js.flow +1 -1
  42. package/lib/utils/default-options.js +1 -0
  43. package/lib/utils/normalize-value.js +1 -1
  44. package/lib/utils/normalizers/convert-camel-case-values.js +1 -1
  45. package/lib/utils/normalizers/detect-unclosed-fns.js +1 -1
  46. package/lib/utils/normalizers/font-size-px-to-rem.js +1 -1
  47. package/lib/utils/normalizers/leading-zero.js +1 -1
  48. package/lib/utils/normalizers/timings.js +1 -1
  49. package/lib/utils/normalizers/zero-dimensions.js +1 -1
  50. package/lib/utils/object-utils.d.ts +3 -2
  51. package/lib/utils/object-utils.js.flow +5 -2
  52. package/lib/utils/property-priorities.d.ts +3 -56
  53. package/lib/utils/property-priorities.js.flow +56 -56
  54. package/lib/utils/rule-utils.d.ts +15 -0
  55. package/lib/utils/rule-utils.js +41 -0
  56. package/lib/utils/rule-utils.js.flow +16 -0
  57. package/lib/utils/split-css-value.js +1 -1
  58. package/package.json +2 -2
@@ -7,7 +7,7 @@ exports.default = transformValue;
7
7
  exports.getNumberSuffix = getNumberSuffix;
8
8
  exports.timeUnits = exports.lengthUnits = void 0;
9
9
  var _normalizeValue = _interopRequireDefault(require("./utils/normalize-value"));
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
11
  function transformValue(key, rawValue, options) {
12
12
  const value = typeof rawValue === 'number' ? String(Math.round(rawValue * 10000) / 10000) + getNumberSuffix(key) : rawValue;
13
13
  if ((key === 'content' || key === 'hyphenateCharacter' || key === 'hyphenate-character') && typeof value === 'string') {
@@ -22,9 +22,12 @@ function transformValue(key, rawValue, options) {
22
22
  return (0, _normalizeValue.default)(value, key, options);
23
23
  }
24
24
  function getNumberSuffix(key) {
25
- if (unitlessNumberProperties.has(key)) {
25
+ if (unitlessNumberProperties.has(key) || key.startsWith('--')) {
26
26
  return '';
27
27
  }
28
+ if (!(key in numberPropertySuffixes)) {
29
+ return 'px';
30
+ }
28
31
  const suffix = numberPropertySuffixes[key];
29
32
  if (suffix == null) {
30
33
  return 'px';
@@ -32,7 +35,7 @@ function getNumberSuffix(key) {
32
35
  return suffix;
33
36
  }
34
37
  }
35
- const unitlessNumberProperties = new Set(['WebkitLineClamp', 'animationIterationCount', 'aspectRatio', 'borderImageOutset', 'borderImageSlice', 'borderImageWidth', 'counterSet', 'columnCount', 'flex', 'flexGrow', 'flexPositive', 'flexShrink', 'flexOrder', 'gridRow', 'gridColumn', 'fontWeight', 'hyphenateLimitChars', 'lineClamp', 'lineHeight', 'maskBorderOutset', 'maskBorderSlice', 'maskBorderWidth', 'opacity', 'order', 'orphans', 'tabSize', 'widows', 'zIndex', 'fillOpacity', 'floodOpacity', 'rotate', 'scale', 'stopOpacity', 'strokeDasharray', 'strokeDashoffset', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'scale', 'mathDepth']);
38
+ const unitlessNumberProperties = new Set(['WebkitLineClamp', 'animationIterationCount', 'aspectRatio', 'borderImageOutset', 'borderImageSlice', 'borderImageWidth', 'counterSet', 'counterReset', 'columnCount', 'flex', 'flexGrow', 'flexShrink', 'flexOrder', 'gridRow', 'gridRowStart', 'gridRowEnd', 'gridColumn', 'gridColumnStart', 'gridColumnEnd', 'gridArea', 'fontWeight', 'hyphenateLimitChars', 'lineClamp', 'lineHeight', 'maskBorderOutset', 'maskBorderSlice', 'maskBorderWidth', 'opacity', 'order', 'orphans', 'tabSize', 'widows', 'zIndex', 'fillOpacity', 'floodOpacity', 'rotate', 'scale', 'shapeImageThreshold', 'stopOpacity', 'strokeDasharray', 'strokeDashoffset', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'scale', 'mathDepth']);
36
39
  const numberPropertySuffixes = {
37
40
  animationDelay: 'ms',
38
41
  animationDuration: 'ms',
@@ -41,4 +44,4 @@ const numberPropertySuffixes = {
41
44
  voiceDuration: 'ms'
42
45
  };
43
46
  const timeUnits = exports.timeUnits = new Set(Object.keys(numberPropertySuffixes));
44
- const lengthUnits = exports.lengthUnits = new Set(['backgroundPositionX', 'backgroundPositionY', 'blockSize', 'borderBlockEndWidth', 'borderBlockStartWidth', 'borderBlockWidth', 'borderVerticalWidth', 'borderVerticalWidth', 'borderBottomLeftRadius', 'borderBottomRightRadius', 'borderBottomWidth', 'borderEndEndRadius', 'borderEndStartRadius', 'borderImageWidth', 'borderInlineEndWidth', 'borderEndWidth', 'borderInlineStartWidth', 'borderStartWidth', 'borderInlineWidth', 'borderHorizontalWidth', 'borderLeftWidth', 'borderRightWidth', 'borderSpacing', 'borderStartEndRadius', 'borderStartStartRadius', 'borderTopLeftRadius', 'borderTopRightRadius', 'borderTopWidth', 'bottom', 'columnGap', 'columnRuleWidth', 'columnWidth', 'containIntrinsicBlockSize', 'containIntrinsicHeight', 'containIntrinsicInlineSize', 'containIntrinsicWidth', 'flexBasis', 'fontSize', 'fontSmooth', 'height', 'inlineSize', 'insetBlockEnd', 'insetBlockStart', 'insetInlineEnd', 'insetInlineStart', 'left', 'letterSpacing', 'marginBlockEnd', 'marginBlockStart', 'marginBottom', 'marginInlineEnd', 'marginEnd', 'marginInlineStart', 'marginStart', 'marginLeft', 'marginRight', 'marginTop', 'maskBorderOutset', 'maskBorderWidth', 'maxBlockSize', 'maxHeight', 'maxInlineSize', 'maxWidth', 'minBlockSize', 'minHeight', 'minInlineSize', 'minWidth', 'offsetDistance', 'outlineOffset', 'outlineWidth', 'overflowClipMargin', 'paddingBlockEnd', 'paddingBlockStart', 'paddingBottom', 'paddingInlineEnd', 'paddingEnd', 'paddingInlineStart', 'paddingStart', 'paddingLeft', 'paddingRight', 'paddingTop', 'perspective', 'right', 'rowGap', 'scrollMarginBlockEnd', 'scrollMarginBlockStart', 'scrollMarginBottom', 'scrollMarginInlineEnd', 'scrollMarginInlineStart', 'scrollMarginLeft', 'scrollMarginRight', 'scrollMarginTop', 'scrollPaddingBlockEnd', 'scrollPaddingBlockStart', 'scrollPaddingBottom', 'scrollPaddingInlineEnd', 'scrollPaddingInlineStart', 'scrollPaddingLeft', 'scrollPaddingRight', 'scrollPaddingTop', 'scrollSnapMarginBottom', 'scrollSnapMarginLeft', 'scrollSnapMarginRight', 'scrollSnapMarginTop', 'shapeMargin', 'tabSize', 'textDecorationThickness', 'textIndent', 'textUnderlineOffset', 'top', 'transformOrigin', 'translate', 'verticalAlign', 'width', 'wordSpacing', 'border', 'borderBlock', 'borderBlockEnd', 'borderBlockStart', 'borderBottom', 'borderLeft', 'borderRadius', 'borderRight', 'borderTop', 'borderWidth', 'columnRule', 'containIntrinsicSize', 'gap', 'inset', 'insetBlock', 'insetInline', 'margin', 'marginBlock', 'marginVertical', 'marginInline', 'marginHorizontal', 'offset', 'outline', 'padding', 'paddingBlock', 'paddingVertical', 'paddingInline', 'paddingHorizontal', 'scrollMargin', 'scrollMarginBlock', 'scrollMarginInline', 'scrollPadding', 'scrollPaddingBlock', 'scrollPaddingInline', 'scrollSnapMargin']);
47
+ const lengthUnits = exports.lengthUnits = new Set(['backgroundPositionX', 'backgroundPositionY', 'blockSize', 'borderBlockEndWidth', 'borderBlockStartWidth', 'borderBlockWidth', 'borderVerticalWidth', 'borderVerticalWidth', 'borderBottomLeftRadius', 'borderBottomRightRadius', 'borderBottomWidth', 'borderEndEndRadius', 'borderEndStartRadius', 'borderInlineEndWidth', 'borderEndWidth', 'borderInlineStartWidth', 'borderStartWidth', 'borderInlineWidth', 'borderHorizontalWidth', 'borderLeftWidth', 'borderRightWidth', 'borderSpacing', 'borderStartEndRadius', 'borderStartStartRadius', 'borderTopLeftRadius', 'borderTopRightRadius', 'borderTopWidth', 'bottom', 'columnGap', 'columnRuleWidth', 'columnWidth', 'containIntrinsicBlockSize', 'containIntrinsicHeight', 'containIntrinsicInlineSize', 'containIntrinsicWidth', 'flexBasis', 'fontSize', 'fontSmooth', 'height', 'inlineSize', 'insetBlockEnd', 'insetBlockStart', 'insetInlineEnd', 'insetInlineStart', 'left', 'letterSpacing', 'marginBlockEnd', 'marginBlockStart', 'marginBottom', 'marginInlineEnd', 'marginEnd', 'marginInlineStart', 'marginStart', 'marginLeft', 'marginRight', 'marginTop', 'maxBlockSize', 'maxHeight', 'maxInlineSize', 'maxWidth', 'minBlockSize', 'minHeight', 'minInlineSize', 'minWidth', 'offsetDistance', 'outlineOffset', 'outlineWidth', 'overflowClipMargin', 'paddingBlockEnd', 'paddingBlockStart', 'paddingBottom', 'paddingInlineEnd', 'paddingEnd', 'paddingInlineStart', 'paddingStart', 'paddingLeft', 'paddingRight', 'paddingTop', 'perspective', 'right', 'rowGap', 'scrollMarginBlockEnd', 'scrollMarginBlockStart', 'scrollMarginBottom', 'scrollMarginInlineEnd', 'scrollMarginInlineStart', 'scrollMarginLeft', 'scrollMarginRight', 'scrollMarginTop', 'scrollPaddingBlockEnd', 'scrollPaddingBlockStart', 'scrollPaddingBottom', 'scrollPaddingInlineEnd', 'scrollPaddingInlineStart', 'scrollPaddingLeft', 'scrollPaddingRight', 'scrollPaddingTop', 'scrollSnapMarginBottom', 'scrollSnapMarginLeft', 'scrollSnapMarginRight', 'scrollSnapMarginTop', 'shapeMargin', 'tabSize', 'textDecorationThickness', 'textIndent', 'textUnderlineOffset', 'top', 'transformOrigin', 'translate', 'verticalAlign', 'width', 'wordSpacing', 'border', 'borderBlock', 'borderBlockEnd', 'borderBlockStart', 'borderBottom', 'borderLeft', 'borderRadius', 'borderRight', 'borderTop', 'borderWidth', 'columnRule', 'containIntrinsicSize', 'gap', 'inset', 'insetBlock', 'insetInline', 'margin', 'marginBlock', 'marginVertical', 'marginInline', 'marginHorizontal', 'offset', 'outline', 'padding', 'paddingBlock', 'paddingVertical', 'paddingInline', 'paddingHorizontal', 'scrollMargin', 'scrollMarginBlock', 'scrollMarginInline', 'scrollPadding', 'scrollPaddingBlock', 'scrollPaddingInline', 'scrollSnapMargin']);
@@ -65,7 +65,7 @@ export interface CSSType<+_T: string | number = string | number> {
65
65
 
66
66
  declare export const isCSSType: (
67
67
  value: mixed,
68
- ) => value is CSSType<string | number>;
68
+ ) => implies value is CSSType<string | number>;
69
69
 
70
70
  type AngleValue = string;
71
71
  declare export class Angle<+T: AngleValue>
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.defaultOptions = void 0;
7
7
  const defaultOptions = exports.defaultOptions = {
8
8
  dev: false,
9
+ debug: false,
9
10
  useRemForFontSize: true,
10
11
  test: false,
11
12
  classNamePrefix: 'x',
@@ -13,7 +13,7 @@ var _zeroDimensions = _interopRequireDefault(require("./normalizers/zero-dimensi
13
13
  var _detectUnclosedFns = _interopRequireDefault(require("./normalizers/detect-unclosed-fns"));
14
14
  var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
15
15
  var _convertCamelCaseValues = _interopRequireDefault(require("./normalizers/convert-camel-case-values"));
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
17
  const normalizers = [_detectUnclosedFns.default, _whitespace.default, _timings.default, _zeroDimensions.default, _leadingZero.default, _quotes.default, _convertCamelCaseValues.default];
18
18
  function normalizeValue(value, key, _ref) {
19
19
  let {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = convertCamelCasedValues;
7
7
  var _dashify = _interopRequireDefault(require("../dashify"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  function convertCamelCasedValues(ast, key) {
10
10
  if (key !== 'transitionProperty' && key !== 'willChange') {
11
11
  return ast;
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = detectUnclosedFns;
7
7
  var messages = _interopRequireWildcard(require("../../messages"));
8
8
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
10
  function detectUnclosedFns(ast, _) {
11
11
  ast.walk(node => {
12
12
  if (node.type === 'function' && node.unclosed) {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = convertFontSizeToRem;
7
7
  var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  const ROOT_FONT_SIZE = 16;
10
10
  function convertFontSizeToRem(ast, key) {
11
11
  if (key !== 'fontSize') {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = normalizeLeadingZero;
7
7
  var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  function normalizeLeadingZero(ast, _) {
10
10
  ast.walk(node => {
11
11
  if (node.type !== 'word') {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = normalizeTimings;
7
7
  var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  function normalizeTimings(ast, _) {
10
10
  ast.walk(node => {
11
11
  if (node.type !== 'word') {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = normalizeZeroDimensions;
7
7
  var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  const angles = ['deg', 'grad', 'turn', 'rad'];
10
10
  const timings = ['ms', 's'];
11
11
  const fraction = 'fr';
@@ -9,7 +9,8 @@
9
9
 
10
10
  import type { CompiledStyles } from '../common-types';
11
11
  import { IncludedStyles } from '../stylex-include';
12
- export declare function isPlainObject(obj: unknown): void;
12
+ type AnyObject = { readonly [$$Key$$: string]: unknown };
13
+ export declare function isPlainObject(obj: unknown): obj is AnyObject;
13
14
  export declare function flattenObject(obj: CompiledStyles): {
14
15
  readonly [$$Key$$: string]: null | string | IncludedStyles;
15
16
  };
@@ -42,7 +43,7 @@ export declare function objMapEntry<
42
43
  K2 extends string = string,
43
44
  >(
44
45
  obj: { readonly [$$Key$$: K1]: V },
45
- mapper: ($$PARAM_0$$: [K1, V]) => [K2, V2],
46
+ mapper: ($$PARAM_0$$: Readonly<[K1, V]>) => Readonly<[K2, V2]>,
46
47
  ): { readonly [$$Key$$: K2]: V2 };
47
48
  export declare function objMap<V, V2, K extends string = string>(
48
49
  obj: { readonly [$$Key$$: K]: V },
@@ -13,7 +13,10 @@ import type { CompiledStyles } from '../common-types';
13
13
 
14
14
  import { IncludedStyles } from '../stylex-include';
15
15
 
16
- declare export function isPlainObject(obj: mixed): void;
16
+ // eslint-disable-next-line no-unused-vars
17
+ type AnyObject = { +[string]: mixed };
18
+
19
+ declare export function isPlainObject(obj: mixed): implies obj is AnyObject;
17
20
 
18
21
  declare export function flattenObject(obj: CompiledStyles): {
19
22
  +[string]: null | string | IncludedStyles,
@@ -48,7 +51,7 @@ declare export function objMapEntry<
48
51
  K2: string = string,
49
52
  >(
50
53
  obj: { +[K1]: V },
51
- mapper: ([K1, V]) => [K2, V2],
54
+ mapper: ($ReadOnly<[K1, V]>) => $ReadOnly<[K2, V2]>,
52
55
  ): { +[K2]: V2 };
53
56
 
54
57
  declare export function objMap<V, V2, K: string = string>(
@@ -7,62 +7,9 @@
7
7
  *
8
8
  */
9
9
 
10
- type PseudoClassPriorities = {
11
- ':is': 40;
12
- ':where': 40;
13
- ':not': 40;
14
- ':has': 45;
15
- ':dir': 50;
16
- ':lang': 51;
17
- ':first-child': 52;
18
- ':first-of-type': 53;
19
- ':last-child': 54;
20
- ':last-of-type': 55;
21
- ':only-child': 56;
22
- ':only-of-type': 57;
23
- ':nth-child': 60;
24
- ':nth-last-child': 61;
25
- ':nth-of-type': 62;
26
- ':nth-last-of-type': 63;
27
- ':empty': 70;
28
- ':link': 80;
29
- ':any-link': 81;
30
- ':local-link': 82;
31
- ':target-within': 83;
32
- ':target': 84;
33
- ':visited': 85;
34
- ':enabled': 91;
35
- ':disabled': 92;
36
- ':required': 93;
37
- ':optional': 94;
38
- ':read-only': 95;
39
- ':read-write': 96;
40
- ':placeholder-shown': 97;
41
- ':in-range': 98;
42
- ':out-of-range': 99;
43
- ':default': 100;
44
- ':checked': 101;
45
- ':indeterminate': 101;
46
- ':blank': 102;
47
- ':valid': 103;
48
- ':invalid': 104;
49
- ':user-invalid': 105;
50
- ':autofill': 110;
51
- ':picture-in-picture': 120;
52
- ':modal': 121;
53
- ':fullscreen': 122;
54
- ':paused': 123;
55
- ':playing': 124;
56
- ':current': 125;
57
- ':past': 126;
58
- ':future': 127;
59
- ':hover': 130;
60
- ':focusWithin': 140;
61
- ':focus': 150;
62
- ':focusVisible': 160;
63
- ':active': 170;
64
- };
65
- export declare const PSEUDO_CLASS_PRIORITIES: Readonly<PseudoClassPriorities>;
10
+ export declare const PSEUDO_CLASS_PRIORITIES: Readonly<{
11
+ [$$Key$$: string]: number;
12
+ }>;
66
13
  type AtRulePriorities = { '@supports': 30; '@media': 200; '@container': 300 };
67
14
  export declare const AT_RULE_PRIORITIES: Readonly<AtRulePriorities>;
68
15
  export declare const PSEUDO_ELEMENT_PRIORITY: number;
@@ -7,63 +7,63 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
- type PseudoClassPriorities = {
11
- ':is': 40,
12
- ':where': 40,
13
- ':not': 40,
14
- ':has': 45,
15
- ':dir': 50,
16
- ':lang': 51,
17
- ':first-child': 52,
18
- ':first-of-type': 53,
19
- ':last-child': 54,
20
- ':last-of-type': 55,
21
- ':only-child': 56,
22
- ':only-of-type': 57,
23
- ':nth-child': 60,
24
- ':nth-last-child': 61,
25
- ':nth-of-type': 62,
26
- ':nth-last-of-type': 63, // 'nth-last-of-type' is the same priority as 'nth-of-type
27
- ':empty': 70,
28
- ':link': 80,
29
- ':any-link': 81,
30
- ':local-link': 82,
31
- ':target-within': 83,
32
- ':target': 84,
33
- ':visited': 85,
34
- ':enabled': 91,
35
- ':disabled': 92,
36
- ':required': 93,
37
- ':optional': 94,
38
- ':read-only': 95,
39
- ':read-write': 96,
40
- ':placeholder-shown': 97,
41
- ':in-range': 98,
42
- ':out-of-range': 99,
43
- ':default': 100,
44
- ':checked': 101,
45
- ':indeterminate': 101,
46
- ':blank': 102,
47
- ':valid': 103,
48
- ':invalid': 104,
49
- ':user-invalid': 105,
50
- ':autofill': 110,
51
- ':picture-in-picture': 120,
52
- ':modal': 121,
53
- ':fullscreen': 122,
54
- ':paused': 123,
55
- ':playing': 124,
56
- ':current': 125,
57
- ':past': 126,
58
- ':future': 127,
59
- ':hover': 130,
60
- ':focusWithin': 140,
61
- ':focus': 150,
62
- ':focusVisible': 160,
63
- ':active': 170,
64
- };
10
+ // type PseudoClassPriorities = {
11
+ // ':is': 40,
12
+ // ':where': 40,
13
+ // ':not': 40,
14
+ // ':has': 45,
15
+ // ':dir': 50,
16
+ // ':lang': 51,
17
+ // ':first-child': 52,
18
+ // ':first-of-type': 53,
19
+ // ':last-child': 54,
20
+ // ':last-of-type': 55,
21
+ // ':only-child': 56,
22
+ // ':only-of-type': 57,
23
+ // ':nth-child': 60,
24
+ // ':nth-last-child': 61,
25
+ // ':nth-of-type': 62,
26
+ // ':nth-last-of-type': 63, // 'nth-last-of-type' is the same priority as 'nth-of-type
27
+ // ':empty': 70,
28
+ // ':link': 80,
29
+ // ':any-link': 81,
30
+ // ':local-link': 82,
31
+ // ':target-within': 83,
32
+ // ':target': 84,
33
+ // ':visited': 85,
34
+ // ':enabled': 91,
35
+ // ':disabled': 92,
36
+ // ':required': 93,
37
+ // ':optional': 94,
38
+ // ':read-only': 95,
39
+ // ':read-write': 96,
40
+ // ':placeholder-shown': 97,
41
+ // ':in-range': 98,
42
+ // ':out-of-range': 99,
43
+ // ':default': 100,
44
+ // ':checked': 101,
45
+ // ':indeterminate': 101,
46
+ // ':blank': 102,
47
+ // ':valid': 103,
48
+ // ':invalid': 104,
49
+ // ':user-invalid': 105,
50
+ // ':autofill': 110,
51
+ // ':picture-in-picture': 120,
52
+ // ':modal': 121,
53
+ // ':fullscreen': 122,
54
+ // ':paused': 123,
55
+ // ':playing': 124,
56
+ // ':current': 125,
57
+ // ':past': 126,
58
+ // ':future': 127,
59
+ // ':hover': 130,
60
+ // ':focusWithin': 140,
61
+ // ':focus': 150,
62
+ // ':focusVisible': 160,
63
+ // ':active': 170,
64
+ // };
65
65
 
66
- declare export const PSEUDO_CLASS_PRIORITIES: $ReadOnly<PseudoClassPriorities>;
66
+ declare export const PSEUDO_CLASS_PRIORITIES: $ReadOnly<{ [string]: number }>;
67
67
 
68
68
  type AtRulePriorities = {
69
69
  '@supports': 30,
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ *
8
+ */
9
+
10
+ export declare const sortPseudos: (
11
+ pseudos: ReadonlyArray<string>,
12
+ ) => ReadonlyArray<string>;
13
+ export declare const sortAtRules: (
14
+ atRules: ReadonlyArray<string>,
15
+ ) => ReadonlyArray<string>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.sortPseudos = exports.sortAtRules = void 0;
7
+ var _objectUtils = require("./object-utils");
8
+ const sortPseudos = pseudos => {
9
+ if (pseudos.length < 2) {
10
+ return pseudos;
11
+ }
12
+ return pseudos.reduce((acc, pseudo) => {
13
+ if (pseudo.startsWith('::')) {
14
+ return [...acc, pseudo];
15
+ }
16
+ const lastElement = acc[acc.length - 1];
17
+ const allButLast = acc.slice(0, acc.length - 1);
18
+ if (Array.isArray(lastElement)) {
19
+ return [...allButLast, [...lastElement, pseudo]];
20
+ } else {
21
+ return [...allButLast, lastElement, [pseudo]].filter(Boolean);
22
+ }
23
+ }, []).flatMap(pseudo => {
24
+ if (Array.isArray(pseudo)) {
25
+ return (0, _objectUtils.arraySort)(pseudo, stringComparator);
26
+ }
27
+ return [pseudo];
28
+ });
29
+ };
30
+ exports.sortPseudos = sortPseudos;
31
+ const sortAtRules = atRules => (0, _objectUtils.arraySort)(atRules);
32
+ exports.sortAtRules = sortAtRules;
33
+ const stringComparator = (a, b) => {
34
+ if (a === 'default') {
35
+ return -1;
36
+ }
37
+ if (b === 'default') {
38
+ return 1;
39
+ }
40
+ return a.localeCompare(b);
41
+ };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ */
9
+
10
+ declare export const sortPseudos: (
11
+ pseudos: $ReadOnlyArray<string>,
12
+ ) => $ReadOnlyArray<string>;
13
+
14
+ declare export const sortAtRules: (
15
+ atRules: $ReadOnlyArray<string>,
16
+ ) => $ReadOnlyArray<string>;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = splitValue;
7
7
  var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  function printNode(node) {
10
10
  switch (node.type) {
11
11
  case 'word':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stylexjs/shared",
3
- "version": "0.7.5",
3
+ "version": "0.9.0-beta.1",
4
4
  "main": "lib/index.js",
5
5
  "repository": "https://www.github.com/facebook/stylex",
6
6
  "license": "MIT",
@@ -13,7 +13,7 @@
13
13
  "postcss-value-parser": "^4.1.0"
14
14
  },
15
15
  "devDependencies": {
16
- "@stylexjs/scripts": "0.7.5"
16
+ "@stylexjs/scripts": "0.9.0-beta.1"
17
17
  },
18
18
  "jest": {
19
19
  "snapshotFormat": {