@stylexjs/shared 0.3.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +3 -3
- package/lib/common-types.d.ts +2 -3
- package/lib/common-types.js.flow +2 -3
- package/lib/index.js +2 -2
- package/lib/messages.d.ts +7 -2
- package/lib/messages.js +9 -4
- package/lib/messages.js.flow +8 -3
- package/lib/preprocess-rules/application-order.d.ts +2 -2
- package/lib/preprocess-rules/application-order.js +3 -10
- package/lib/preprocess-rules/application-order.js.flow +2 -2
- package/lib/preprocess-rules/basic-validation.js +4 -4
- package/lib/stylex-create-theme.js +15 -10
- package/lib/stylex-define-vars.d.ts +10 -17
- package/lib/stylex-define-vars.js +31 -30
- package/lib/stylex-define-vars.js.flow +8 -10
- package/lib/stylex-include.js +2 -2
- package/lib/types/index.js.flow +1 -1
- package/lib/utils/default-options.js +0 -1
- package/lib/utils/normalizers/detect-unclosed-fns.js +2 -2
- package/lib/utils/normalizers/whitespace.d.ts +1 -1
- package/lib/utils/normalizers/whitespace.js.flow +1 -1
- package/lib/utils/split-css-value.js.flow +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
@@ -4,8 +4,8 @@ This package contains most of the core JavaScript logic for stylex.
|
|
4
4
|
|
5
5
|
It exports two primary functions `create` and `keyframes`.
|
6
6
|
|
7
|
-
1. `create` - takes a map of style rules. The return value
|
8
|
-
2. `keyframes` - takes a `@keyframes` animation as JS object. Returns a hashed string and the style
|
7
|
+
1. `create` - takes a map of style rules. The return value includes: a) the map with each style value replaced by a unique, reproducible, hashed `className` string, and b) a list of the CSS styles to be inserted into the document.
|
8
|
+
2. `keyframes` - takes a `@keyframes` animation as JS object. Returns a hashed string and the style to be injected.
|
9
9
|
|
10
10
|
#### ⭐️ `create`
|
11
11
|
|
@@ -29,7 +29,7 @@ The first step here is expanding all [shorthands](#shorthands) into their indivi
|
|
29
29
|
|
30
30
|
**Step 2**
|
31
31
|
|
32
|
-
We hash each style `[key, value]` pair and generate a className and an associated CSS rule.
|
32
|
+
We hash each style `[key, value]` pair and generate a className and an associated CSS rule. This is done in the `convertToClassName(...)` function defined within [`convert-to-className.js`](#convert-to-classname-shared-package). (Explained below)
|
33
33
|
|
34
34
|
**Step 3**
|
35
35
|
|
package/lib/common-types.d.ts
CHANGED
@@ -34,17 +34,16 @@ export type FlatCompiledStyles = Readonly<{
|
|
34
34
|
[$$Key$$: string]: string | IncludedStyles | null;
|
35
35
|
$$css: true;
|
36
36
|
}>;
|
37
|
-
export type StyleXOptions = {
|
37
|
+
export type StyleXOptions = Readonly<{
|
38
38
|
dev: boolean;
|
39
39
|
test: boolean;
|
40
40
|
useRemForFontSize: boolean;
|
41
|
-
runtimeInjection: boolean;
|
42
41
|
classNamePrefix: string;
|
43
42
|
definedStylexCSSVariables?: { [key: string]: unknown };
|
44
43
|
styleResolution:
|
45
44
|
| 'application-order'
|
46
45
|
| 'property-specificity'
|
47
46
|
| 'legacy-expand-shorthands';
|
48
|
-
}
|
47
|
+
}>;
|
49
48
|
export type MutableCompiledNamespaces = { [key: string]: FlatCompiledStyles };
|
50
49
|
export type CompiledNamespaces = Readonly<MutableCompiledNamespaces>;
|
package/lib/common-types.js.flow
CHANGED
@@ -41,11 +41,10 @@ export type FlatCompiledStyles = $ReadOnly<{
|
|
41
41
|
$$css: true,
|
42
42
|
}>;
|
43
43
|
|
44
|
-
export type StyleXOptions = {
|
44
|
+
export type StyleXOptions = $ReadOnly<{
|
45
45
|
dev: boolean,
|
46
46
|
test: boolean,
|
47
47
|
useRemForFontSize: boolean,
|
48
|
-
runtimeInjection: boolean,
|
49
48
|
classNamePrefix: string,
|
50
49
|
definedStylexCSSVariables?: { [key: string]: mixed },
|
51
50
|
styleResolution:
|
@@ -56,7 +55,7 @@ export type StyleXOptions = {
|
|
56
55
|
// This is not recommended, and will be removed in a future version.
|
57
56
|
| 'legacy-expand-shorthands',
|
58
57
|
...
|
59
|
-
}
|
58
|
+
}>;
|
60
59
|
|
61
60
|
export type MutableCompiledNamespaces = {
|
62
61
|
[key: string]: FlatCompiledStyles,
|
package/lib/index.js
CHANGED
@@ -15,8 +15,8 @@ var _fileBasedIdentifier = _interopRequireDefault(require("./utils/file-based-id
|
|
15
15
|
var m = _interopRequireWildcard(require("./messages"));
|
16
16
|
var _types = _interopRequireWildcard(require("./types"));
|
17
17
|
exports.types = _types;
|
18
|
-
function _getRequireWildcardCache(
|
19
|
-
function _interopRequireWildcard(
|
18
|
+
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); }
|
19
|
+
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; }
|
20
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
21
|
const create = exports.create = _stylexCreate.default;
|
22
22
|
const defineVars = exports.defineVars = _stylexDefineVars.default;
|
package/lib/messages.d.ts
CHANGED
@@ -7,12 +7,15 @@
|
|
7
7
|
*
|
8
8
|
*/
|
9
9
|
|
10
|
-
export declare const ILLEGAL_ARGUMENT_LENGTH: 'stylex() should have 1 argument.';
|
10
|
+
export declare const ILLEGAL_ARGUMENT_LENGTH: 'stylex.create() should have 1 argument.';
|
11
|
+
export declare const ILLEGAL_ARG_LENGTH_FOR_KEYFRAMES: 'stylex.keyframes() should have 1 argument.';
|
11
12
|
export declare const NON_STATIC_VALUE: 'Only static values are allowed inside of a stylex.create() call.';
|
13
|
+
export declare const NON_STATIC_KEYFRAME_VALUE: 'Only static values are allowed inside of a stylex.keyframes() call.';
|
12
14
|
export declare const ESCAPED_STYLEX_VALUE: 'Escaping a stylex.create() value is not allowed.';
|
13
15
|
export declare const UNBOUND_STYLEX_CALL_VALUE: 'stylex.create calls must be bound to a bare variable.';
|
14
16
|
export declare const ONLY_TOP_LEVEL: 'stylex.create() is only allowed at the root of a program.';
|
15
17
|
export declare const NON_OBJECT_FOR_STYLEX_CALL: 'stylex.create() can only accept a style object.';
|
18
|
+
export declare const NON_OBJECT_FOR_STYLEX_KEYFRAMES_CALL: 'stylex.keyframes() can only accept an object.';
|
16
19
|
export declare const UNKNOWN_PROP_KEY: 'Unknown property key';
|
17
20
|
export declare const INVALID_PSEUDO: 'Invalid pseudo selector, not on the whitelist.';
|
18
21
|
export declare const INVALID_PSEUDO_OR_AT_RULE: 'Invalid pseudo or at-rule.';
|
@@ -23,14 +26,16 @@ export declare const ILLEGAL_NESTED_PSEUDO: "Pseudo objects can't be nested more
|
|
23
26
|
export declare const ILLEGAL_PROP_VALUE: 'A style value can only contain an array, string or number.';
|
24
27
|
export declare const ILLEGAL_PROP_ARRAY_VALUE: 'A style array value can only contain strings or numbers.';
|
25
28
|
export declare const ILLEGAL_NAMESPACE_VALUE: 'A stylex namespace must be an object.';
|
29
|
+
export declare const NON_OBJECT_KEYFRAME: 'Every frame within a stylex.keyframes() call must be an object.';
|
26
30
|
export declare const INVALID_SPREAD: 'Imported styles spread with a stylex.create call must be type cast as `XStyle` to verify their type.';
|
27
31
|
export declare const LINT_UNCLOSED_FUNCTION: 'Rule contains an unclosed function';
|
28
32
|
export declare const LOCAL_ONLY: 'The return value of stylex.create() should not be exported.';
|
29
33
|
export declare const UNEXPECTED_ARGUMENT: 'Unexpected argument passed to the stylex() function.';
|
30
34
|
export declare const EXPECTED_FUNCTION_CALL: 'Expected a simple function call but found something else.';
|
31
35
|
export declare const NO_PARENT_PATH: 'Unexpected AST node without a parent path.';
|
32
|
-
export declare const
|
36
|
+
export declare const ONLY_TOP_LEVEL_INCLUDES: 'stylex.include() is only at the top level of a style definition object.';
|
33
37
|
export declare const DUPLICATE_CONDITIONAL: 'The same pseudo selector or at-rule cannot be used more than once.';
|
34
38
|
export declare const NO_PROJECT_ROOT_DIRECTORY: 'The project root directory `rootDir` is not configured.';
|
35
39
|
export declare const NON_EXPORT_NAMED_DECLARATION: 'The return value of stylex.defineVars() must be bound to a named export.';
|
36
40
|
export declare const ANONYMOUS_THEME: 'stylex.createTheme() must be bound to a named constant.';
|
41
|
+
export declare const ONLY_NAMED_PARAMETERS_IN_DYNAMIC_STYLE_FUNCTIONS: 'Only named parameters are allowed in Dynamic Style functions. Destructuring, spreading or default values are not allowed.';
|
package/lib/messages.js
CHANGED
@@ -3,13 +3,16 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.UNKNOWN_PROP_KEY = exports.UNKNOWN_NAMESPACE = exports.UNEXPECTED_ARGUMENT = exports.UNBOUND_STYLEX_CALL_VALUE = exports.
|
7
|
-
const ILLEGAL_ARGUMENT_LENGTH = exports.ILLEGAL_ARGUMENT_LENGTH = 'stylex() should have 1 argument.';
|
6
|
+
exports.UNKNOWN_PROP_KEY = exports.UNKNOWN_NAMESPACE = exports.UNEXPECTED_ARGUMENT = exports.UNBOUND_STYLEX_CALL_VALUE = exports.ONLY_TOP_LEVEL_INCLUDES = exports.ONLY_TOP_LEVEL = exports.ONLY_NAMED_PARAMETERS_IN_DYNAMIC_STYLE_FUNCTIONS = exports.NO_PROJECT_ROOT_DIRECTORY = exports.NO_PARENT_PATH = exports.NO_CONDITIONAL_SHORTHAND = exports.NON_STATIC_VALUE = exports.NON_STATIC_KEYFRAME_VALUE = exports.NON_OBJECT_KEYFRAME = exports.NON_OBJECT_FOR_STYLEX_KEYFRAMES_CALL = exports.NON_OBJECT_FOR_STYLEX_CALL = exports.NON_EXPORT_NAMED_DECLARATION = exports.LOCAL_ONLY = exports.LINT_UNCLOSED_FUNCTION = exports.INVALID_SPREAD = exports.INVALID_PSEUDO_OR_AT_RULE = exports.INVALID_PSEUDO = exports.ILLEGAL_PROP_VALUE = exports.ILLEGAL_PROP_ARRAY_VALUE = exports.ILLEGAL_NESTED_PSEUDO = exports.ILLEGAL_NAMESPACE_VALUE = exports.ILLEGAL_NAMESPACE_TYPE = exports.ILLEGAL_ARG_LENGTH_FOR_KEYFRAMES = exports.ILLEGAL_ARGUMENT_LENGTH = exports.EXPECTED_FUNCTION_CALL = exports.ESCAPED_STYLEX_VALUE = exports.DUPLICATE_CONDITIONAL = exports.ANONYMOUS_THEME = void 0;
|
7
|
+
const ILLEGAL_ARGUMENT_LENGTH = exports.ILLEGAL_ARGUMENT_LENGTH = 'stylex.create() should have 1 argument.';
|
8
|
+
const ILLEGAL_ARG_LENGTH_FOR_KEYFRAMES = exports.ILLEGAL_ARG_LENGTH_FOR_KEYFRAMES = 'stylex.keyframes() should have 1 argument.';
|
8
9
|
const NON_STATIC_VALUE = exports.NON_STATIC_VALUE = 'Only static values are allowed inside of a stylex.create() call.';
|
10
|
+
const NON_STATIC_KEYFRAME_VALUE = exports.NON_STATIC_KEYFRAME_VALUE = 'Only static values are allowed inside of a stylex.keyframes() call.';
|
9
11
|
const ESCAPED_STYLEX_VALUE = exports.ESCAPED_STYLEX_VALUE = 'Escaping a stylex.create() value is not allowed.';
|
10
12
|
const UNBOUND_STYLEX_CALL_VALUE = exports.UNBOUND_STYLEX_CALL_VALUE = 'stylex.create calls must be bound to a bare variable.';
|
11
13
|
const ONLY_TOP_LEVEL = exports.ONLY_TOP_LEVEL = 'stylex.create() is only allowed at the root of a program.';
|
12
14
|
const NON_OBJECT_FOR_STYLEX_CALL = exports.NON_OBJECT_FOR_STYLEX_CALL = 'stylex.create() can only accept a style object.';
|
15
|
+
const NON_OBJECT_FOR_STYLEX_KEYFRAMES_CALL = exports.NON_OBJECT_FOR_STYLEX_KEYFRAMES_CALL = 'stylex.keyframes() can only accept an object.';
|
13
16
|
const UNKNOWN_PROP_KEY = exports.UNKNOWN_PROP_KEY = 'Unknown property key';
|
14
17
|
const INVALID_PSEUDO = exports.INVALID_PSEUDO = 'Invalid pseudo selector, not on the whitelist.';
|
15
18
|
const INVALID_PSEUDO_OR_AT_RULE = exports.INVALID_PSEUDO_OR_AT_RULE = 'Invalid pseudo or at-rule.';
|
@@ -20,14 +23,16 @@ const ILLEGAL_NESTED_PSEUDO = exports.ILLEGAL_NESTED_PSEUDO = "Pseudo objects ca
|
|
20
23
|
const ILLEGAL_PROP_VALUE = exports.ILLEGAL_PROP_VALUE = 'A style value can only contain an array, string or number.';
|
21
24
|
const ILLEGAL_PROP_ARRAY_VALUE = exports.ILLEGAL_PROP_ARRAY_VALUE = 'A style array value can only contain strings or numbers.';
|
22
25
|
const ILLEGAL_NAMESPACE_VALUE = exports.ILLEGAL_NAMESPACE_VALUE = 'A stylex namespace must be an object.';
|
26
|
+
const NON_OBJECT_KEYFRAME = exports.NON_OBJECT_KEYFRAME = 'Every frame within a stylex.keyframes() call must be an object.';
|
23
27
|
const INVALID_SPREAD = exports.INVALID_SPREAD = 'Imported styles spread with a stylex.create call must be type cast as `XStyle<>` to verify their type.';
|
24
28
|
const LINT_UNCLOSED_FUNCTION = exports.LINT_UNCLOSED_FUNCTION = 'Rule contains an unclosed function';
|
25
29
|
const LOCAL_ONLY = exports.LOCAL_ONLY = 'The return value of stylex.create() should not be exported.';
|
26
30
|
const UNEXPECTED_ARGUMENT = exports.UNEXPECTED_ARGUMENT = 'Unexpected argument passed to the stylex() function.';
|
27
31
|
const EXPECTED_FUNCTION_CALL = exports.EXPECTED_FUNCTION_CALL = 'Expected a simple function call but found something else.';
|
28
32
|
const NO_PARENT_PATH = exports.NO_PARENT_PATH = 'Unexpected AST node without a parent path.';
|
29
|
-
const
|
33
|
+
const ONLY_TOP_LEVEL_INCLUDES = exports.ONLY_TOP_LEVEL_INCLUDES = 'stylex.include() is only at the top level of a style definition object.';
|
30
34
|
const DUPLICATE_CONDITIONAL = exports.DUPLICATE_CONDITIONAL = 'The same pseudo selector or at-rule cannot be used more than once.';
|
31
35
|
const NO_PROJECT_ROOT_DIRECTORY = exports.NO_PROJECT_ROOT_DIRECTORY = 'The project root directory `rootDir` is not configured.';
|
32
36
|
const NON_EXPORT_NAMED_DECLARATION = exports.NON_EXPORT_NAMED_DECLARATION = 'The return value of stylex.defineVars() must be bound to a named export.';
|
33
|
-
const ANONYMOUS_THEME = exports.ANONYMOUS_THEME = 'stylex.createTheme() must be bound to a named constant.';
|
37
|
+
const ANONYMOUS_THEME = exports.ANONYMOUS_THEME = 'stylex.createTheme() must be bound to a named constant.';
|
38
|
+
const ONLY_NAMED_PARAMETERS_IN_DYNAMIC_STYLE_FUNCTIONS = exports.ONLY_NAMED_PARAMETERS_IN_DYNAMIC_STYLE_FUNCTIONS = 'Only named parameters are allowed in Dynamic Style functions. Destructuring, spreading or default values are not allowed.';
|
package/lib/messages.js.flow
CHANGED
@@ -8,14 +8,17 @@
|
|
8
8
|
*/
|
9
9
|
|
10
10
|
// This file contains constants to be used within Error messages.
|
11
|
-
// The URLs within will eventually be replaced by links to the
|
11
|
+
// The URLs within will eventually be replaced by links to the documentation website for Stylex.
|
12
12
|
|
13
|
-
declare export const ILLEGAL_ARGUMENT_LENGTH: 'stylex() should have 1 argument.';
|
13
|
+
declare export const ILLEGAL_ARGUMENT_LENGTH: 'stylex.create() should have 1 argument.';
|
14
|
+
declare export const ILLEGAL_ARG_LENGTH_FOR_KEYFRAMES: 'stylex.keyframes() should have 1 argument.';
|
14
15
|
declare export const NON_STATIC_VALUE: 'Only static values are allowed inside of a stylex.create() call.';
|
16
|
+
declare export const NON_STATIC_KEYFRAME_VALUE: 'Only static values are allowed inside of a stylex.keyframes() call.';
|
15
17
|
declare export const ESCAPED_STYLEX_VALUE: 'Escaping a stylex.create() value is not allowed.';
|
16
18
|
declare export const UNBOUND_STYLEX_CALL_VALUE: 'stylex.create calls must be bound to a bare variable.';
|
17
19
|
declare export const ONLY_TOP_LEVEL: 'stylex.create() is only allowed at the root of a program.';
|
18
20
|
declare export const NON_OBJECT_FOR_STYLEX_CALL: 'stylex.create() can only accept a style object.';
|
21
|
+
declare export const NON_OBJECT_FOR_STYLEX_KEYFRAMES_CALL: 'stylex.keyframes() can only accept an object.';
|
19
22
|
declare export const UNKNOWN_PROP_KEY: 'Unknown property key';
|
20
23
|
declare export const INVALID_PSEUDO: 'Invalid pseudo selector, not on the whitelist.';
|
21
24
|
declare export const INVALID_PSEUDO_OR_AT_RULE: 'Invalid pseudo or at-rule.';
|
@@ -26,14 +29,16 @@ declare export const ILLEGAL_NESTED_PSEUDO: "Pseudo objects can't be nested more
|
|
26
29
|
declare export const ILLEGAL_PROP_VALUE: 'A style value can only contain an array, string or number.';
|
27
30
|
declare export const ILLEGAL_PROP_ARRAY_VALUE: 'A style array value can only contain strings or numbers.';
|
28
31
|
declare export const ILLEGAL_NAMESPACE_VALUE: 'A stylex namespace must be an object.';
|
32
|
+
declare export const NON_OBJECT_KEYFRAME: 'Every frame within a stylex.keyframes() call must be an object.';
|
29
33
|
declare export const INVALID_SPREAD: 'Imported styles spread with a stylex.create call must be type cast as `XStyle<>` to verify their type.';
|
30
34
|
declare export const LINT_UNCLOSED_FUNCTION: 'Rule contains an unclosed function';
|
31
35
|
declare export const LOCAL_ONLY: 'The return value of stylex.create() should not be exported.';
|
32
36
|
declare export const UNEXPECTED_ARGUMENT: 'Unexpected argument passed to the stylex() function.';
|
33
37
|
declare export const EXPECTED_FUNCTION_CALL: 'Expected a simple function call but found something else.';
|
34
38
|
declare export const NO_PARENT_PATH: 'Unexpected AST node without a parent path.';
|
35
|
-
declare export const
|
39
|
+
declare export const ONLY_TOP_LEVEL_INCLUDES: 'stylex.include() is only at the top level of a style definition object.';
|
36
40
|
declare export const DUPLICATE_CONDITIONAL: 'The same pseudo selector or at-rule cannot be used more than once.';
|
37
41
|
declare export const NO_PROJECT_ROOT_DIRECTORY: 'The project root directory `rootDir` is not configured.';
|
38
42
|
declare export const NON_EXPORT_NAMED_DECLARATION: 'The return value of stylex.defineVars() must be bound to a named export.';
|
39
43
|
declare export const ANONYMOUS_THEME: 'stylex.createTheme() must be bound to a named constant.';
|
44
|
+
declare export const ONLY_NAMED_PARAMETERS_IN_DYNAMIC_STYLE_FUNCTIONS: 'Only named parameters are allowed in Dynamic Style functions. Destructuring, spreading or default values are not allowed.';
|
@@ -124,8 +124,8 @@ declare const shorthands: {
|
|
124
124
|
borderInlineEnd: (rawValue: TStyleValue) => TReturn;
|
125
125
|
borderRight: (rawValue: TStyleValue) => TReturn;
|
126
126
|
borderBottom: (rawValue: TStyleValue) => TReturn;
|
127
|
-
borderInlineStart: (
|
128
|
-
borderLeft: (
|
127
|
+
borderInlineStart: (rawValue: TStyleValue) => TReturn;
|
128
|
+
borderLeft: (rawValue: TStyleValue) => TReturn;
|
129
129
|
borderInlineWidth: (rawValue: TStyleValue) => TReturn;
|
130
130
|
borderInlineStyle: (rawValue: TStyleValue) => TReturn;
|
131
131
|
borderInlineColor: (rawValue: TStyleValue) => TReturn;
|
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.default = void 0;
|
7
|
-
var _splitCssValue = _interopRequireDefault(require("../utils/split-css-value"));
|
8
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
9
7
|
const shorthands = {
|
10
8
|
all: _ => {
|
11
9
|
throw new Error('all is not supported');
|
@@ -21,8 +19,8 @@ const shorthands = {
|
|
21
19
|
borderInlineEnd: rawValue => [['borderInlineEnd', rawValue], ...shorthands.borderInlineEndWidth(null), ...shorthands.borderInlineEndStyle(null), ...shorthands.borderInlineEndColor(null)],
|
22
20
|
borderRight: rawValue => [['borderRight', rawValue], ...shorthands.borderRightWidth(null), ...shorthands.borderRightStyle(null), ...shorthands.borderRightColor(null)],
|
23
21
|
borderBottom: rawValue => [['borderBottom', rawValue], ['borderBottomWidth', null], ['borderBottomStyle', null], ['borderBottomColor', null]],
|
24
|
-
borderInlineStart:
|
25
|
-
borderLeft:
|
22
|
+
borderInlineStart: rawValue => [['borderInlineStart', rawValue], ...shorthands.borderInlineStartWidth(null), ...shorthands.borderInlineStartStyle(null), ...shorthands.borderInlineStartColor(null)],
|
23
|
+
borderLeft: rawValue => [['borderLeft', rawValue], ...shorthands.borderLeftWidth(null), ...shorthands.borderLeftStyle(null), ...shorthands.borderLeftColor(null)],
|
26
24
|
borderInlineWidth: rawValue => [['borderInlineWidth', rawValue], ['borderInlineStartWidth', null], ['borderLeftWidth', null], ['borderInlineEndWidth', null], ['borderRightWidth', null]],
|
27
25
|
borderInlineStyle: rawValue => [['borderInlineStyle', rawValue], ['borderInlineStartStyle', null], ['borderLeftStyle', null], ['borderInlineEndStyle', null], ['borderRightStyle', null]],
|
28
26
|
borderInlineColor: rawValue => [['borderInlineColor', rawValue], ['borderInlineStartColor', null], ['borderLeftColor', null], ['borderInlineEndColor', null], ['borderRightColor', null]],
|
@@ -89,12 +87,7 @@ const shorthands = {
|
|
89
87
|
outline: value => [['outline', value], ['outlineColor', null], ['outlineOffset', null], ['outlineStyle', null], ['outlineWidth', null]],
|
90
88
|
overflow: value => [['overflow', value], ['overflowX', null], ['overflowY', null]],
|
91
89
|
padding: rawValue => {
|
92
|
-
|
93
|
-
if (values.length === 1) {
|
94
|
-
return [['padding', values[0]], ['paddingStart', null], ['paddingLeft', null], ['paddingEnd', null], ['paddingRight', null], ['paddingTop', null], ['paddingBottom', null]];
|
95
|
-
}
|
96
|
-
const [top, right = top, bottom = top, left = right] = values;
|
97
|
-
return [['paddingTop', top], ['paddingEnd', right], ['paddingBottom', bottom], ['paddingStart', left]];
|
90
|
+
return [['padding', rawValue], ...shorthands.paddingInline(null), ...shorthands.paddingBlock(null)];
|
98
91
|
},
|
99
92
|
paddingInline: rawValue => [['paddingInline', rawValue], ['paddingStart', null], ['paddingLeft', null], ['paddingEnd', null], ['paddingRight', null]],
|
100
93
|
paddingBlock: rawValue => [['paddingBlock', rawValue], ['paddingTop', null], ['paddingBottom', null]],
|
@@ -75,8 +75,8 @@ declare const shorthands: {
|
|
75
75
|
borderInlineEnd: (rawValue: TStyleValue) => TReturn,
|
76
76
|
borderRight: (rawValue: TStyleValue) => TReturn,
|
77
77
|
borderBottom: (rawValue: TStyleValue) => TReturn,
|
78
|
-
borderInlineStart: (
|
79
|
-
borderLeft: (
|
78
|
+
borderInlineStart: (rawValue: TStyleValue) => TReturn,
|
79
|
+
borderLeft: (rawValue: TStyleValue) => TReturn,
|
80
80
|
borderInlineWidth: (rawValue: TStyleValue) => TReturn,
|
81
81
|
borderInlineStyle: (rawValue: TStyleValue) => TReturn,
|
82
82
|
borderInlineColor: (rawValue: TStyleValue) => TReturn,
|
@@ -7,8 +7,8 @@ exports.validateNamespace = validateNamespace;
|
|
7
7
|
var _stylexInclude = require("../stylex-include");
|
8
8
|
var messages = _interopRequireWildcard(require("../messages"));
|
9
9
|
var _objectUtils = require("../utils/object-utils");
|
10
|
-
function _getRequireWildcardCache(
|
11
|
-
function _interopRequireWildcard(
|
10
|
+
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); }
|
11
|
+
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; }
|
12
12
|
function validateNamespace(namespace) {
|
13
13
|
let conditions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
14
14
|
if (!(0, _objectUtils.isPlainObject)(namespace)) {
|
@@ -33,7 +33,7 @@ function validateNamespace(namespace) {
|
|
33
33
|
if (conditions.length === 0) {
|
34
34
|
continue;
|
35
35
|
}
|
36
|
-
throw new Error(messages.
|
36
|
+
throw new Error(messages.ONLY_TOP_LEVEL_INCLUDES);
|
37
37
|
}
|
38
38
|
if ((0, _objectUtils.isPlainObject)(val)) {
|
39
39
|
if (key.startsWith('@') || key.startsWith(':')) {
|
@@ -72,7 +72,7 @@ function validateConditionalStyles(val) {
|
|
72
72
|
continue;
|
73
73
|
}
|
74
74
|
if (v instanceof _stylexInclude.IncludedStyles) {
|
75
|
-
throw new Error(messages.
|
75
|
+
throw new Error(messages.ONLY_TOP_LEVEL_INCLUDES);
|
76
76
|
}
|
77
77
|
if ((0, _objectUtils.isPlainObject)(v)) {
|
78
78
|
validateConditionalStyles(v, [...conditions, key]);
|
@@ -46,17 +46,22 @@ function styleXCreateTheme(themeVars, variables, options) {
|
|
46
46
|
return `${atRule}{${atRules[atRule].sort().join('')}}`;
|
47
47
|
}).join('');
|
48
48
|
const overrideClassName = classNamePrefix + (0, _hash.default)(cssVariablesOverrideString + atRulesStringForHash);
|
49
|
-
const
|
50
|
-
return `${atRule}{.${overrideClassName}{${atRules[atRule].join('')}}}`;
|
51
|
-
}).join('');
|
52
|
-
return [{
|
53
|
-
$$css: true,
|
54
|
-
[themeVars.__themeName__]: overrideClassName
|
55
|
-
}, {
|
49
|
+
const stylesToInject = {
|
56
50
|
[overrideClassName]: {
|
57
|
-
ltr: `.${overrideClassName}{${cssVariablesOverrideString}}
|
58
|
-
priority: 0.
|
51
|
+
ltr: `.${overrideClassName}{${cssVariablesOverrideString}}`,
|
52
|
+
priority: 0.8,
|
59
53
|
rtl: undefined
|
60
54
|
}
|
61
|
-
}
|
55
|
+
};
|
56
|
+
for (const atRule of sortedAtRules) {
|
57
|
+
stylesToInject[overrideClassName + '-' + (0, _hash.default)(atRule)] = {
|
58
|
+
ltr: `${atRule}{.${overrideClassName}{${atRules[atRule].join('')}}}`,
|
59
|
+
priority: 0.9,
|
60
|
+
rtl: null
|
61
|
+
};
|
62
|
+
}
|
63
|
+
return [{
|
64
|
+
$$css: true,
|
65
|
+
[themeVars.__themeName__]: overrideClassName
|
66
|
+
}, stylesToInject];
|
62
67
|
}
|
@@ -7,30 +7,23 @@
|
|
7
7
|
*
|
8
8
|
*/
|
9
9
|
|
10
|
-
import type { StyleXOptions } from './common-types';
|
11
|
-
type
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
>
|
18
|
-
* > 15 | ...$ObjMapConst<Vars, string>,
|
10
|
+
import type { InjectableStyle, StyleXOptions } from './common-types';
|
11
|
+
type VarsConfig = Readonly<{
|
12
|
+
[$$Key$$: string]:
|
13
|
+
| string
|
14
|
+
| Readonly<{ default: string; [$$Key$$: string]: string }>;
|
15
|
+
}>;
|
16
|
+
type VarsObject<Vars extends VarsConfig> = Readonly</**
|
17
|
+
* > 17 | ...$ObjMapConst<Vars, string>,
|
19
18
|
* | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Unsupported feature: Translating "object types with complex spreads" is currently not supported.
|
20
19
|
**/
|
21
20
|
any>;
|
22
|
-
declare function styleXDefineVars<
|
23
|
-
Vars extends {
|
24
|
-
readonly [$$Key$$: string]:
|
25
|
-
| string
|
26
|
-
| { readonly default: string; readonly [$$Key$$: string]: string };
|
27
|
-
},
|
28
|
-
>(
|
21
|
+
declare function styleXDefineVars<Vars extends VarsConfig>(
|
29
22
|
variables: Vars,
|
30
23
|
options: Readonly<
|
31
24
|
Omit<Partial<StyleXOptions>, keyof ({ themeName: string })> & {
|
32
25
|
themeName: string;
|
33
26
|
}
|
34
27
|
>,
|
35
|
-
): [VarsObject<Vars>, {
|
28
|
+
): [VarsObject<Vars>, { [$$Key$$: string]: InjectableStyle }];
|
36
29
|
export default styleXDefineVars;
|
@@ -30,43 +30,44 @@ function styleXDefineVars(variables, options) {
|
|
30
30
|
} = _ref;
|
31
31
|
return `var(--${nameHash})`;
|
32
32
|
});
|
33
|
-
const
|
33
|
+
const injectableStyles = constructCssVariablesString(variablesMap, themeNameHash);
|
34
34
|
return [{
|
35
35
|
...themeVariablesObject,
|
36
36
|
__themeName__: themeNameHash
|
37
|
-
},
|
38
|
-
css: cssVariablesString
|
39
|
-
}];
|
37
|
+
}, injectableStyles];
|
40
38
|
}
|
41
|
-
function constructCssVariablesString(variables) {
|
42
|
-
const
|
43
|
-
const
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
}] = _ref2;
|
39
|
+
function constructCssVariablesString(variables, themeNameHash) {
|
40
|
+
const ruleByAtRule = {};
|
41
|
+
for (const [key, {
|
42
|
+
nameHash,
|
43
|
+
value
|
44
|
+
}] of (0, _objectUtils.objEntries)(variables)) {
|
48
45
|
if (value !== null && typeof value === 'object') {
|
49
46
|
if (value.default === undefined) {
|
50
47
|
throw new Error('Default value is not defined for ' + key + ' variable.');
|
51
48
|
}
|
52
|
-
const
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
}
|
61
|
-
}
|
62
|
-
});
|
63
|
-
return definedVarString;
|
49
|
+
const v = value;
|
50
|
+
for (const [key, value] of (0, _objectUtils.objEntries)(v)) {
|
51
|
+
ruleByAtRule[key] ??= [];
|
52
|
+
ruleByAtRule[key].push(`--${nameHash}:${value};`);
|
53
|
+
}
|
54
|
+
} else {
|
55
|
+
ruleByAtRule.default ??= [];
|
56
|
+
ruleByAtRule.default.push(`--${nameHash}:${value};`);
|
64
57
|
}
|
65
|
-
|
66
|
-
}
|
67
|
-
const
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
58
|
+
}
|
59
|
+
const result = {};
|
60
|
+
for (const [key, value] of (0, _objectUtils.objEntries)(ruleByAtRule)) {
|
61
|
+
const suffix = key === 'default' ? '' : `-${(0, _hash.default)(key)}`;
|
62
|
+
let ltr = `:root{${value.join('')}}`;
|
63
|
+
if (key !== 'default') {
|
64
|
+
ltr = `${key}{${ltr}}`;
|
65
|
+
}
|
66
|
+
result[themeNameHash + suffix] = {
|
67
|
+
ltr,
|
68
|
+
rtl: null,
|
69
|
+
priority: key === 'default' ? 0 : 0.1
|
70
|
+
};
|
71
|
+
}
|
72
|
+
return result;
|
72
73
|
}
|
@@ -7,22 +7,20 @@
|
|
7
7
|
* @flow strict
|
8
8
|
*/
|
9
9
|
|
10
|
-
import type { StyleXOptions } from './common-types';
|
10
|
+
import type { InjectableStyle, StyleXOptions } from './common-types';
|
11
11
|
|
12
|
-
type
|
13
|
-
|
14
|
-
|
12
|
+
type VarsConfig = $ReadOnly<{
|
13
|
+
[string]: string | $ReadOnly<{ default: string, [string]: string }>,
|
14
|
+
}>;
|
15
|
+
|
16
|
+
type VarsObject<Vars: VarsConfig> = $ReadOnly<{
|
15
17
|
...$ObjMapConst<Vars, string>,
|
16
18
|
__themeName__: string,
|
17
19
|
}>;
|
18
20
|
|
19
21
|
// Similar to `stylex.create` it takes an object of variables with their values
|
20
22
|
// and returns a string after hashing it.
|
21
|
-
declare export default function styleXDefineVars<
|
22
|
-
Vars: {
|
23
|
-
+[string]: string | { +default: string, +[string]: string },
|
24
|
-
},
|
25
|
-
>(
|
23
|
+
declare export default function styleXDefineVars<Vars: VarsConfig>(
|
26
24
|
variables: Vars,
|
27
25
|
options: $ReadOnly<{ ...Partial<StyleXOptions>, themeName: string, ... }>,
|
28
|
-
): [VarsObject<Vars>, {
|
26
|
+
): [VarsObject<Vars>, { [string]: InjectableStyle }];
|
package/lib/stylex-include.js
CHANGED
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
exports.IncludedStyles = void 0;
|
7
7
|
exports.default = stylexInclude;
|
8
8
|
var messages = _interopRequireWildcard(require("./messages"));
|
9
|
-
function _getRequireWildcardCache(
|
10
|
-
function _interopRequireWildcard(
|
9
|
+
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); }
|
10
|
+
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; }
|
11
11
|
let number = 0;
|
12
12
|
function uuid() {
|
13
13
|
return `__included_${++number}__`;
|
package/lib/types/index.js.flow
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
// import type { Color as ColorType } from './stylex-types-color';
|
11
11
|
|
12
12
|
// We want all in one file?
|
13
|
-
// option 1,
|
13
|
+
// option 1, create interface an implement it in the class
|
14
14
|
// why? All the types have a single base definition of props
|
15
15
|
// We want on type that defines CSS Types
|
16
16
|
// Option 2: Do a union type and make
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.default = detectUnclosedFns;
|
7
7
|
var messages = _interopRequireWildcard(require("../../messages"));
|
8
|
-
function _getRequireWildcardCache(
|
9
|
-
function _interopRequireWildcard(
|
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; }
|
10
10
|
function detectUnclosedFns(ast, _) {
|
11
11
|
ast.walk(node => {
|
12
12
|
if (node.type === 'function' && node.unclosed) {
|
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
/**
|
11
11
|
* Use single spaces and remove spaces when not needed: around functions,
|
12
|
-
* commas. But preserve
|
12
|
+
* commas. But preserve space around + and - as they are required in calc()
|
13
13
|
*/
|
14
14
|
|
15
15
|
declare function normalizeWhitespace(
|
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
/**
|
11
11
|
* Use single spaces and remove spaces when not needed: around functions,
|
12
|
-
* commas. But preserve
|
12
|
+
* commas. But preserve space around + and - as they are required in calc()
|
13
13
|
*/
|
14
14
|
|
15
15
|
declare export default function normalizeWhitespace(
|
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
import type { TStyleValue } from '../common-types';
|
11
11
|
|
12
|
-
// Using split(' ') Isn't enough
|
12
|
+
// Using split(' ') Isn't enough because of values like calc.
|
13
13
|
declare export default function splitValue(
|
14
14
|
str: TStyleValue,
|
15
15
|
): $ReadOnlyArray<number | string | null>;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@stylexjs/shared",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.4.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.4.1"
|
17
17
|
},
|
18
18
|
"jest": {
|
19
19
|
"snapshotFormat": {
|