@stylexjs/shared 0.8.0 → 0.9.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/common-types.d.ts +1 -0
- package/lib/common-types.js.flow +1 -0
- package/lib/convert-to-className.d.ts +1 -1
- package/lib/convert-to-className.js +11 -9
- package/lib/convert-to-className.js.flow +1 -1
- package/lib/preprocess-rules/PreRule.d.ts +13 -6
- package/lib/preprocess-rules/PreRule.js +14 -13
- package/lib/preprocess-rules/PreRule.js.flow +14 -6
- package/lib/preprocess-rules/flatten-raw-style-obj.d.ts +1 -2
- package/lib/preprocess-rules/flatten-raw-style-obj.js +6 -20
- package/lib/preprocess-rules/flatten-raw-style-obj.js.flow +1 -2
- package/lib/preprocess-rules/index.d.ts +1 -1
- package/lib/preprocess-rules/index.js.flow +4 -1
- package/lib/preprocess-rules/legacy-expand-shorthands.js +11 -0
- package/lib/stylex-create.d.ts +4 -0
- package/lib/stylex-create.js +20 -8
- package/lib/stylex-create.js.flow +9 -1
- package/lib/transform-value.js +1 -1
- package/lib/utils/default-options.js +1 -0
- package/lib/utils/rule-utils.d.ts +15 -0
- package/lib/utils/rule-utils.js +41 -0
- package/lib/utils/rule-utils.js.flow +16 -0
- package/package.json +2 -2
package/lib/common-types.d.ts
CHANGED
package/lib/common-types.js.flow
CHANGED
@@ -10,15 +10,16 @@ var _dashify = _interopRequireDefault(require("./utils/dashify"));
|
|
10
10
|
var _transformValue = _interopRequireDefault(require("./transform-value"));
|
11
11
|
var _generateCssRule = require("./generate-css-rule");
|
12
12
|
var _defaultOptions = require("./utils/default-options");
|
13
|
-
var _objectUtils = require("./utils/object-utils");
|
14
13
|
var messages = _interopRequireWildcard(require("./messages"));
|
14
|
+
var _ruleUtils = require("./utils/rule-utils");
|
15
15
|
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); }
|
16
16
|
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; }
|
17
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
18
18
|
function convertStyleToClassName(objEntry, pseudos, atRules) {
|
19
19
|
let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _defaultOptions.defaultOptions;
|
20
20
|
const {
|
21
|
-
classNamePrefix = 'x'
|
21
|
+
classNamePrefix = 'x',
|
22
|
+
debug = false
|
22
23
|
} = options;
|
23
24
|
const [key, rawValue] = objEntry;
|
24
25
|
const dashedKey = (0, _dashify.default)(key);
|
@@ -26,13 +27,14 @@ function convertStyleToClassName(objEntry, pseudos, atRules) {
|
|
26
27
|
if (Array.isArray(value) && value.find(val => val.startsWith('var(') && val.endsWith(')'))) {
|
27
28
|
value = variableFallbacks(value);
|
28
29
|
}
|
29
|
-
const sortedPseudos = (0,
|
30
|
-
const sortedAtRules = (0,
|
31
|
-
const
|
32
|
-
const
|
33
|
-
const modifierHashString =
|
34
|
-
const
|
35
|
-
const
|
30
|
+
const sortedPseudos = (0, _ruleUtils.sortPseudos)(pseudos ?? []);
|
31
|
+
const sortedAtRules = (0, _ruleUtils.sortAtRules)(atRules ?? []);
|
32
|
+
const pseudoHashString = sortedPseudos.join('');
|
33
|
+
const atRuleHashString = sortedAtRules.join('');
|
34
|
+
const modifierHashString = pseudoHashString + atRuleHashString || 'null';
|
35
|
+
const valueAsString = Array.isArray(value) ? value.join(', ') : value;
|
36
|
+
const stringToHash = dashedKey + valueAsString + modifierHashString;
|
37
|
+
const className = debug ? `${key}-${classNamePrefix}${(0, _hash.default)('<>' + stringToHash)}` : classNamePrefix + (0, _hash.default)('<>' + stringToHash);
|
36
38
|
const cssRules = (0, _generateCssRule.generateRule)(className, dashedKey, value, pseudos, atRules);
|
37
39
|
return [key, className, cssRules];
|
38
40
|
}
|
@@ -9,7 +9,12 @@
|
|
9
9
|
|
10
10
|
import type { InjectableStyle, StyleXOptions } from '../common-types';
|
11
11
|
import type { IncludedStyles } from '../stylex-include';
|
12
|
-
export type
|
12
|
+
export type ClassesToOriginalPaths = {
|
13
|
+
readonly [className: string]: ReadonlyArray<string>;
|
14
|
+
};
|
15
|
+
export type ComputedStyle = null | Readonly<
|
16
|
+
[string, InjectableStyle, ClassesToOriginalPaths]
|
17
|
+
>;
|
13
18
|
export interface IPreRule {
|
14
19
|
compiled(
|
15
20
|
options: StyleXOptions,
|
@@ -30,15 +35,17 @@ export declare class PreIncludedStylesRule implements IPreRule {
|
|
30
35
|
export declare class PreRule implements IPreRule {
|
31
36
|
readonly property: string;
|
32
37
|
readonly value: string | number | ReadonlyArray<string | number>;
|
33
|
-
readonly
|
34
|
-
readonly atRules: ReadonlyArray<string>;
|
38
|
+
readonly keyPath: ReadonlyArray<string>;
|
35
39
|
constructor(
|
36
40
|
property: string,
|
37
41
|
value: string | number | ReadonlyArray<string | number>,
|
38
|
-
|
39
|
-
atRules?: null | undefined | ReadonlyArray<string>,
|
42
|
+
keyPath?: ReadonlyArray<string>,
|
40
43
|
);
|
41
|
-
|
44
|
+
get pseudos(): ReadonlyArray<string>;
|
45
|
+
get atRules(): ReadonlyArray<string>;
|
46
|
+
compiled(
|
47
|
+
options: StyleXOptions,
|
48
|
+
): ReadonlyArray<[string, InjectableStyle, ClassesToOriginalPaths]>;
|
42
49
|
equals(other: IPreRule): boolean;
|
43
50
|
}
|
44
51
|
export declare class PreRuleSet implements IPreRule {
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
exports.PreRuleSet = exports.PreRule = exports.PreIncludedStylesRule = exports.NullPreRule = void 0;
|
7
7
|
var _convertToClassName = require("../convert-to-className");
|
8
8
|
var _objectUtils = require("../utils/object-utils");
|
9
|
+
var _ruleUtils = require("../utils/rule-utils");
|
9
10
|
class NullPreRule {
|
10
11
|
compiled(_options) {
|
11
12
|
return [null];
|
@@ -27,25 +28,25 @@ class PreIncludedStylesRule {
|
|
27
28
|
}
|
28
29
|
}
|
29
30
|
exports.PreIncludedStylesRule = PreIncludedStylesRule;
|
30
|
-
const stringComparator = (a, b) => {
|
31
|
-
if (a === 'default') {
|
32
|
-
return -1;
|
33
|
-
}
|
34
|
-
if (b === 'default') {
|
35
|
-
return 1;
|
36
|
-
}
|
37
|
-
return a.localeCompare(b);
|
38
|
-
};
|
39
31
|
class PreRule {
|
40
|
-
constructor(property, value,
|
32
|
+
constructor(property, value, keyPath) {
|
41
33
|
this.property = property;
|
34
|
+
this.keyPath = keyPath ?? [];
|
42
35
|
this.value = value;
|
43
|
-
|
44
|
-
|
36
|
+
}
|
37
|
+
get pseudos() {
|
38
|
+
const unsortedPseudos = this.keyPath.filter(key => key.startsWith(':'));
|
39
|
+
return (0, _ruleUtils.sortPseudos)(unsortedPseudos);
|
40
|
+
}
|
41
|
+
get atRules() {
|
42
|
+
const unsortedAtRules = this.keyPath.filter(key => key.startsWith('@'));
|
43
|
+
return (0, _ruleUtils.sortAtRules)(unsortedAtRules);
|
45
44
|
}
|
46
45
|
compiled(options) {
|
47
46
|
const [_key, className, rule] = (0, _convertToClassName.convertStyleToClassName)([this.property, this.value], this.pseudos ?? [], this.atRules ?? [], options);
|
48
|
-
return [[className, rule
|
47
|
+
return [[className, rule, {
|
48
|
+
[className]: this.keyPath
|
49
|
+
}]];
|
49
50
|
}
|
50
51
|
equals(other) {
|
51
52
|
if (!(other instanceof PreRule)) {
|
@@ -10,7 +10,13 @@
|
|
10
10
|
import type { InjectableStyle, StyleXOptions } from '../common-types';
|
11
11
|
import type { IncludedStyles } from '../stylex-include';
|
12
12
|
|
13
|
-
export type
|
13
|
+
export type ClassesToOriginalPaths = {
|
14
|
+
+[className: string]: $ReadOnlyArray<string>,
|
15
|
+
};
|
16
|
+
|
17
|
+
export type ComputedStyle = null | $ReadOnly<
|
18
|
+
[string, InjectableStyle, ClassesToOriginalPaths],
|
19
|
+
>;
|
14
20
|
|
15
21
|
// The classes in this file are used to represent objects that
|
16
22
|
// can be compiled into one or CSS rules.
|
@@ -41,15 +47,17 @@ declare export class PreIncludedStylesRule implements IPreRule {
|
|
41
47
|
declare export class PreRule implements IPreRule {
|
42
48
|
+property: string;
|
43
49
|
+value: string | number | $ReadOnlyArray<string | number>;
|
44
|
-
+
|
45
|
-
+atRules: $ReadOnlyArray<string>;
|
50
|
+
+keyPath: $ReadOnlyArray<string>;
|
46
51
|
constructor(
|
47
52
|
property: string,
|
48
53
|
value: string | number | $ReadOnlyArray<string | number>,
|
49
|
-
|
50
|
-
atRules?: ?$ReadOnlyArray<string>,
|
54
|
+
keyPath?: $ReadOnlyArray<string>,
|
51
55
|
): void;
|
52
|
-
|
56
|
+
get pseudos(): $ReadOnlyArray<string>;
|
57
|
+
get atRules(): $ReadOnlyArray<string>;
|
58
|
+
compiled(
|
59
|
+
options: StyleXOptions,
|
60
|
+
): $ReadOnlyArray<[string, InjectableStyle, ClassesToOriginalPaths]>;
|
53
61
|
equals(other: IPreRule): boolean;
|
54
62
|
}
|
55
63
|
|
@@ -19,7 +19,6 @@ export declare function flattenRawStyleObject(
|
|
19
19
|
): ReadonlyArray<Readonly<[string, IPreRule]>>;
|
20
20
|
export declare function _flattenRawStyleObject(
|
21
21
|
style: RawStyles,
|
22
|
-
|
23
|
-
atRules: ReadonlyArray<string>,
|
22
|
+
keyPath: ReadonlyArray<string>,
|
24
23
|
options: StyleXOptions,
|
25
24
|
): Array<Readonly<[string, AnyPreRule | PreIncludedStylesRule]>>;
|
@@ -10,9 +10,9 @@ var _PreRule = require("./PreRule");
|
|
10
10
|
var _stylexInclude = require("../stylex-include");
|
11
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
12
12
|
function flattenRawStyleObject(style, options) {
|
13
|
-
return _flattenRawStyleObject(style, [],
|
13
|
+
return _flattenRawStyleObject(style, [], options);
|
14
14
|
}
|
15
|
-
function _flattenRawStyleObject(style,
|
15
|
+
function _flattenRawStyleObject(style, keyPath, options) {
|
16
16
|
const flattened = [];
|
17
17
|
for (const _key in style) {
|
18
18
|
const value = style[_key];
|
@@ -27,7 +27,7 @@ function _flattenRawStyleObject(style, pseudos, atRules, options) {
|
|
27
27
|
if (value === null) {
|
28
28
|
flattened.push([property, new _PreRule.NullPreRule()]);
|
29
29
|
} else {
|
30
|
-
flattened.push([property, new _PreRule.PreRule(property, value,
|
30
|
+
flattened.push([property, new _PreRule.PreRule(property, value, keyPath.includes(key) ? keyPath.map(k => k === key ? property : k) : [...keyPath, property])]);
|
31
31
|
}
|
32
32
|
}
|
33
33
|
continue;
|
@@ -61,7 +61,7 @@ function _flattenRawStyleObject(style, pseudos, atRules, options) {
|
|
61
61
|
if (value === null) {
|
62
62
|
flattened.push([property, new _PreRule.NullPreRule()]);
|
63
63
|
} else {
|
64
|
-
flattened.push([property, new _PreRule.PreRule(property, value,
|
64
|
+
flattened.push([property, new _PreRule.PreRule(property, value, keyPath.includes(_key) ? keyPath.map(k => k === _key ? property : k) : [...keyPath, property])]);
|
65
65
|
}
|
66
66
|
});
|
67
67
|
continue;
|
@@ -70,16 +70,9 @@ function _flattenRawStyleObject(style, pseudos, atRules, options) {
|
|
70
70
|
const equivalentPairs = {};
|
71
71
|
for (const condition in value) {
|
72
72
|
const innerValue = value[condition];
|
73
|
-
const pseudosToPassDown = [...pseudos];
|
74
|
-
const atRulesToPassDown = [...atRules];
|
75
|
-
if (condition.startsWith(':')) {
|
76
|
-
pseudosToPassDown.push(condition);
|
77
|
-
} else if (condition.startsWith('@')) {
|
78
|
-
atRulesToPassDown.push(condition);
|
79
|
-
}
|
80
73
|
const pairs = _flattenRawStyleObject({
|
81
74
|
[key]: innerValue
|
82
|
-
},
|
75
|
+
}, keyPath.length > 0 ? [...keyPath, condition] : [key, condition], options);
|
83
76
|
for (const [property, preRule] of pairs) {
|
84
77
|
if (preRule instanceof _PreRule.PreIncludedStylesRule) {
|
85
78
|
throw new Error('stylex.include can only be used at the top-level');
|
@@ -103,14 +96,7 @@ function _flattenRawStyleObject(style, pseudos, atRules, options) {
|
|
103
96
|
}
|
104
97
|
}
|
105
98
|
if (typeof value === 'object' && (key.startsWith(':') || key.startsWith('@'))) {
|
106
|
-
const
|
107
|
-
const atRulesToPassDown = [...atRules];
|
108
|
-
if (key.startsWith(':')) {
|
109
|
-
pseudosToPassDown.push(key);
|
110
|
-
} else if (key.startsWith('@')) {
|
111
|
-
atRulesToPassDown.push(key);
|
112
|
-
}
|
113
|
-
const pairs = _flattenRawStyleObject(value, pseudosToPassDown, atRulesToPassDown, options);
|
99
|
+
const pairs = _flattenRawStyleObject(value, [...keyPath, _key], options);
|
114
100
|
for (const [property, preRule] of pairs) {
|
115
101
|
flattened.push([key + '_' + property, preRule]);
|
116
102
|
}
|
@@ -21,7 +21,6 @@ declare export function flattenRawStyleObject(
|
|
21
21
|
|
22
22
|
declare export function _flattenRawStyleObject(
|
23
23
|
style: RawStyles,
|
24
|
-
|
25
|
-
atRules: $ReadOnlyArray<string>,
|
24
|
+
keyPath: $ReadOnlyArray<string>,
|
26
25
|
options: StyleXOptions,
|
27
26
|
): Array<$ReadOnly<[string, AnyPreRule | PreIncludedStylesRule]>>;
|
@@ -13,6 +13,6 @@ export declare function getExpandedKeys(
|
|
13
13
|
): ReadonlyArray<string>;
|
14
14
|
declare function flatMapExpandedShorthands(
|
15
15
|
objEntry: Readonly<[string, TStyleValue]>,
|
16
|
-
options: StyleXOptions
|
16
|
+
options: Readonly<{ styleResolution: StyleXOptions['styleResolution'] }>,
|
17
17
|
): ReadonlyArray<[string, TStyleValue]>;
|
18
18
|
export default flatMapExpandedShorthands;
|
@@ -15,5 +15,8 @@ declare export function getExpandedKeys(
|
|
15
15
|
|
16
16
|
declare export default function flatMapExpandedShorthands(
|
17
17
|
objEntry: $ReadOnly<[string, TStyleValue]>,
|
18
|
-
options:
|
18
|
+
options: $ReadOnly<{
|
19
|
+
styleResolution: StyleXOptions['styleResolution'],
|
20
|
+
...
|
21
|
+
}>,
|
19
22
|
): $ReadOnlyArray<[string, TStyleValue]>;
|
@@ -38,6 +38,17 @@ const shorthands = {
|
|
38
38
|
const [top, right = top, bottom = top, left = right] = (0, _splitCssValue.default)(rawValue);
|
39
39
|
return [['borderTopStartRadius', top], ['borderTopEndRadius', right], ['borderBottomEndRadius', bottom], ['borderBottomStartRadius', left]];
|
40
40
|
},
|
41
|
+
containIntrinsicSize: rawValue => {
|
42
|
+
const parts = (0, _splitCssValue.default)(rawValue);
|
43
|
+
const [width, height = width] = parts.reduce((coll, part) => {
|
44
|
+
const lastElement = coll[coll.length - 1];
|
45
|
+
if (lastElement === 'auto' && part != null) {
|
46
|
+
return [...coll.slice(0, -1), `auto ${part}`];
|
47
|
+
}
|
48
|
+
return [...coll, part];
|
49
|
+
}, []);
|
50
|
+
return [['containIntrinsicWidth', width], ['containIntrinsicHeight', height]];
|
51
|
+
},
|
41
52
|
inset: rawValue => [['top', rawValue], ['end', rawValue], ['bottom', rawValue], ['start', rawValue]],
|
42
53
|
insetInline: rawValue => [...shorthands.start(rawValue), ...shorthands.end(rawValue)],
|
43
54
|
insetBlock: rawValue => [['top', rawValue], ['bottom', rawValue]],
|
package/lib/stylex-create.d.ts
CHANGED
@@ -13,11 +13,15 @@ import type {
|
|
13
13
|
StyleXOptions,
|
14
14
|
FlatCompiledStyles,
|
15
15
|
} from './common-types';
|
16
|
+
type ClassPathsInNamespace = {
|
17
|
+
readonly [className: string]: ReadonlyArray<string>;
|
18
|
+
};
|
16
19
|
declare function styleXCreateSet(
|
17
20
|
namespaces: { readonly [$$Key$$: string]: RawStyles },
|
18
21
|
options?: StyleXOptions,
|
19
22
|
): [
|
20
23
|
{ [$$Key$$: string]: FlatCompiledStyles },
|
21
24
|
{ [$$Key$$: string]: InjectableStyle },
|
25
|
+
{ readonly [$$Key$$: string]: ClassPathsInNamespace },
|
22
26
|
];
|
23
27
|
export default styleXCreateSet;
|
package/lib/stylex-create.js
CHANGED
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.default = styleXCreateSet;
|
7
|
-
var _objectUtils = require("./utils/object-utils");
|
8
7
|
var _stylexInclude = require("./stylex-include");
|
9
8
|
var _defaultOptions = require("./utils/default-options");
|
10
9
|
var _flattenRawStyleObj = require("./preprocess-rules/flatten-raw-style-obj");
|
@@ -13,24 +12,36 @@ function styleXCreateSet(namespaces) {
|
|
13
12
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _defaultOptions.defaultOptions;
|
14
13
|
const resolvedNamespaces = {};
|
15
14
|
const injectedStyles = {};
|
15
|
+
const namespaceToClassPaths = {};
|
16
16
|
for (const namespaceName of Object.keys(namespaces)) {
|
17
17
|
const namespace = namespaces[namespaceName];
|
18
|
+
const classPathsInNamespace = {};
|
18
19
|
(0, _basicValidation.validateNamespace)(namespace);
|
19
|
-
const
|
20
|
+
const seenProperties = new Set();
|
21
|
+
const flattenedNamespace = (0, _flattenRawStyleObj.flattenRawStyleObject)(namespace, options).reduceRight((arr, curr) => {
|
22
|
+
if (seenProperties.has(curr[0])) {
|
23
|
+
return arr;
|
24
|
+
}
|
25
|
+
seenProperties.add(curr[0]);
|
26
|
+
arr.unshift(curr);
|
27
|
+
return arr;
|
28
|
+
}, []);
|
20
29
|
const compiledNamespaceTuples = flattenedNamespace.map(_ref => {
|
21
30
|
let [key, value] = _ref;
|
22
31
|
return [key, value.compiled(options)];
|
23
32
|
});
|
24
|
-
const compiledNamespace = (0, _objectUtils.objFromEntries)(compiledNamespaceTuples);
|
25
33
|
const namespaceObj = {};
|
26
|
-
for (const key of
|
27
|
-
const value = compiledNamespace[key];
|
34
|
+
for (const [key, value] of compiledNamespaceTuples) {
|
28
35
|
if (value instanceof _stylexInclude.IncludedStyles) {
|
29
36
|
namespaceObj[key] = value;
|
30
37
|
} else {
|
31
38
|
const classNameTuples = value.map(v => Array.isArray(v) ? v : null).filter(Boolean);
|
32
|
-
|
33
|
-
let [
|
39
|
+
classNameTuples.forEach(_ref2 => {
|
40
|
+
let [_className, _, classesToOriginalPath] = _ref2;
|
41
|
+
Object.assign(classPathsInNamespace, classesToOriginalPath);
|
42
|
+
});
|
43
|
+
const className = classNameTuples.map(_ref3 => {
|
44
|
+
let [className] = _ref3;
|
34
45
|
return className;
|
35
46
|
}).join(' ') || null;
|
36
47
|
namespaceObj[key] = className;
|
@@ -45,6 +56,7 @@ function styleXCreateSet(namespaces) {
|
|
45
56
|
...namespaceObj,
|
46
57
|
$$css: true
|
47
58
|
};
|
59
|
+
namespaceToClassPaths[namespaceName] = classPathsInNamespace;
|
48
60
|
}
|
49
|
-
return [resolvedNamespaces, injectedStyles];
|
61
|
+
return [resolvedNamespaces, injectedStyles, namespaceToClassPaths];
|
50
62
|
}
|
@@ -14,6 +14,10 @@ import type {
|
|
14
14
|
FlatCompiledStyles,
|
15
15
|
} from './common-types';
|
16
16
|
|
17
|
+
type ClassPathsInNamespace = {
|
18
|
+
+[className: string]: $ReadOnlyArray<string>,
|
19
|
+
};
|
20
|
+
|
17
21
|
// This takes the object of styles passed to `stylex.create` and transforms it.
|
18
22
|
// The transformation replaces style values with classNames.
|
19
23
|
//
|
@@ -27,4 +31,8 @@ import type {
|
|
27
31
|
declare export default function styleXCreateSet(
|
28
32
|
namespaces: { +[string]: RawStyles },
|
29
33
|
options?: StyleXOptions,
|
30
|
-
): [
|
34
|
+
): [
|
35
|
+
{ [string]: FlatCompiledStyles },
|
36
|
+
{ [string]: InjectableStyle },
|
37
|
+
{ +[string]: ClassPathsInNamespace },
|
38
|
+
];
|
package/lib/transform-value.js
CHANGED
@@ -44,4 +44,4 @@ const numberPropertySuffixes = {
|
|
44
44
|
voiceDuration: 'ms'
|
45
45
|
};
|
46
46
|
const timeUnits = exports.timeUnits = new Set(Object.keys(numberPropertySuffixes));
|
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', '
|
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']);
|
@@ -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>;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@stylexjs/shared",
|
3
|
-
"version": "0.
|
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.
|
16
|
+
"@stylexjs/scripts": "0.9.0-beta.1"
|
17
17
|
},
|
18
18
|
"jest": {
|
19
19
|
"snapshotFormat": {
|