@stylexjs/shared 0.1.0-beta.7 → 0.2.0-beta.9
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +81 -0
- package/lib/expand-shorthands.d.ts +5 -0
- package/lib/expand-shorthands.js +241 -101
- package/lib/generate-css-rule.js +6 -34
- package/lib/index.d.ts +1 -0
- package/lib/index.js.flow +5 -0
- package/lib/messages.js +4 -2
- package/lib/namespace-transforms/__tests__/preflatten.test.js +120 -0
- package/lib/namespace-transforms/preflatten.js +89 -0
- package/lib/preprocess-rules/application-order.js +259 -0
- package/lib/preprocess-rules/expand-shorthands.js +156 -0
- package/lib/preprocess-rules/index.js +39 -0
- package/lib/preprocess-rules/legacy-expand-shorthands.js +169 -0
- package/lib/preprocess-rules/null-out-longhand.js +310 -0
- package/lib/preprocess-rules/property-specificity.js +135 -0
- package/lib/preprocess-rules/react-native-web.js +142 -0
- package/lib/stylex-create.js +43 -17
- package/lib/stylex-defaultValue.js +230 -98
- package/lib/stylex-keyframes.js +22 -10
- package/lib/utils/Rule.js +71 -0
- package/lib/utils/normalize-value.js +3 -0
- package/lib/utils/property-priorities.js +116 -0
- package/lib/utils/split-css-value.js +47 -0
- package/package.json +1 -1
@@ -0,0 +1,142 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
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
|
+
/**
|
10
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
11
|
+
*
|
12
|
+
* This source code is licensed under the MIT license found in the
|
13
|
+
* LICENSE file in the root directory of this source tree.
|
14
|
+
*
|
15
|
+
*
|
16
|
+
*/
|
17
|
+
|
18
|
+
/// # Handle CSS shorthands in a React Native compatible way.
|
19
|
+
///
|
20
|
+
/// This means:
|
21
|
+
/// - disallowing certain properties altogether by throwing errors
|
22
|
+
/// - disallowing multiple values within many shorthands
|
23
|
+
/// - Treating certain non-standard properties as aliases for real CSS properties
|
24
|
+
|
25
|
+
const shorthands = {
|
26
|
+
all: _ => {
|
27
|
+
throw new Error('all is not supported');
|
28
|
+
},
|
29
|
+
animation: value => {
|
30
|
+
throw new Error('animation is not supported');
|
31
|
+
},
|
32
|
+
background: value => {
|
33
|
+
throw new Error('background is not supported. Use background-color, border-image etc. instead.');
|
34
|
+
},
|
35
|
+
border: rawValue => {
|
36
|
+
throw new Error('border is not supported. Use border-width, border-style and border-color instead.');
|
37
|
+
},
|
38
|
+
borderInline: rawValue => {
|
39
|
+
throw new Error('borderInline is not supported. Use borderInlineWidth, borderInlineStyle and borderInlineColor instead.');
|
40
|
+
},
|
41
|
+
// @Deprecated
|
42
|
+
borderBlock: rawValue => {
|
43
|
+
throw new Error('borderBlock is not supported. Use borderBlockWidth, borderBlockStyle and borderBlockColor instead.');
|
44
|
+
},
|
45
|
+
// @Deprecated
|
46
|
+
borderTop: rawValue => {
|
47
|
+
throw new Error('borderTop is not supported. Use borderTopWidth, borderTopStyle and borderTopColor instead.');
|
48
|
+
},
|
49
|
+
// @Deprecated
|
50
|
+
borderInlineEnd: rawValue => {
|
51
|
+
throw new Error('borderInlineEnd is not supported. Use borderInlineEndWidth, borderInlineEndStyle and borderInlineEndColor instead.');
|
52
|
+
},
|
53
|
+
// @Deprecated
|
54
|
+
borderRight: rawValue => {
|
55
|
+
throw new Error('borderRight is not supported. Use borderRightWidth, borderRightStyle and borderRightColor instead.');
|
56
|
+
},
|
57
|
+
// @Deprecated
|
58
|
+
borderBottom: rawValue => {
|
59
|
+
throw new Error('borderBottom is not supported. Use borderBottomWidth, borderBottomStyle and borderBottomColor instead.');
|
60
|
+
},
|
61
|
+
// @Deprecated
|
62
|
+
borderInlineStart: rawValue => {
|
63
|
+
throw new Error('borderInlineStart is not supported. Use borderInlineStartWidth, borderInlineStartStyle and borderInlineStartColor instead.');
|
64
|
+
},
|
65
|
+
// @Deprecated
|
66
|
+
borderLeft: rawValue => {
|
67
|
+
throw new Error(['`borderLeft` is not supported.', 'You could use `borderLeftWidth`, `borderLeftStyle` and `borderLeftColor`,', 'but it is preferable to use `borderInlineStartWidth`, `borderInlineStartStyle` and `borderInlineStartColor`.'].join(' '));
|
68
|
+
},
|
69
|
+
margin: value => {
|
70
|
+
const values = typeof value === 'number' ? [value] : (0, _splitCssValue.default)(value);
|
71
|
+
if (values.length === 1) {
|
72
|
+
return [['margin', values[0]]];
|
73
|
+
} else {
|
74
|
+
throw new Error('margin shorthand with multiple values is not supported. Use marginTop, marginInlineEnd, marginBottom and marginInlineStart instead.');
|
75
|
+
}
|
76
|
+
},
|
77
|
+
padding: rawValue => {
|
78
|
+
const values = typeof rawValue === 'number' ? [rawValue] : (0, _splitCssValue.default)(rawValue);
|
79
|
+
if (values.length === 1) {
|
80
|
+
return [['padding', values[0]]];
|
81
|
+
}
|
82
|
+
throw new Error('padding shorthand with multiple values is not supported. Use paddingTop, paddingInlineEnd, paddingBottom and paddingInlineStart instead.');
|
83
|
+
}
|
84
|
+
};
|
85
|
+
const aliases = {
|
86
|
+
// @UNSUPPORTED
|
87
|
+
borderHorizontal: shorthands.borderInline,
|
88
|
+
// @UNSUPPORTED
|
89
|
+
borderVertical: shorthands.borderBlock,
|
90
|
+
// @UNSUPPORTED
|
91
|
+
borderBlockStart: shorthands.borderTop,
|
92
|
+
// @UNSUPPORTED
|
93
|
+
borderEnd: shorthands.borderInlineEnd,
|
94
|
+
// @UNSUPPORTED
|
95
|
+
borderBlockEnd: shorthands.borderBottom,
|
96
|
+
// @UNSUPPORTED
|
97
|
+
borderStart: shorthands.borderInlineStart,
|
98
|
+
borderHorizontalWidth: value => [['borderInlineWidth', value]],
|
99
|
+
borderHorizontalStyle: value => [['borderInlineStyle', value]],
|
100
|
+
borderHorizontalColor: value => [['borderInlineColor', value]],
|
101
|
+
borderVerticalWidth: value => [['borderBlockWidth', value]],
|
102
|
+
borderVerticalStyle: value => [['borderBlockStyle', value]],
|
103
|
+
borderVerticalColor: value => [['borderBlockColor', value]],
|
104
|
+
borderBlockStartColor: value => [['borderTopColor', value]],
|
105
|
+
borderBlockEndColor: value => [['borderBottomColor', value]],
|
106
|
+
borderBlockStartStyle: value => [['borderTopStyle', value]],
|
107
|
+
borderBlockEndStyle: value => [['borderBottomStyle', value]],
|
108
|
+
borderBlockStartWidth: value => [['borderTopWidth', value]],
|
109
|
+
borderBlockEndWidth: value => [['borderBottomWidth', value]],
|
110
|
+
borderStartColor: value => [['borderInlineStartColor', value]],
|
111
|
+
borderEndColor: value => [['borderInlineEndColor', value]],
|
112
|
+
borderStartStyle: value => [['borderInlineStartStyle', value]],
|
113
|
+
borderEndStyle: value => [['borderInlineEndStyle', value]],
|
114
|
+
borderStartWidth: value => [['borderInlineStartWidth', value]],
|
115
|
+
borderEndWidth: value => [['borderInlineEndWidth', value]],
|
116
|
+
borderTopStartRadius: value => [['borderStartStartRadius', value]],
|
117
|
+
borderTopEndRadius: value => [['borderStartEndRadius', value]],
|
118
|
+
borderBottomStartRadius: value => [['borderEndStartRadius', value]],
|
119
|
+
borderBottomEndRadius: value => [['borderEndEndRadius', value]],
|
120
|
+
marginBlockStart: value => [['marginTop', value]],
|
121
|
+
marginBlockEnd: value => [['marginBottom', value]],
|
122
|
+
marginStart: value => [['marginInlineStart', value]],
|
123
|
+
marginEnd: value => [['marginInlineEnd', value]],
|
124
|
+
marginHorizontal: value => [['marginInline', value]],
|
125
|
+
marginVertical: value => [['marginBlock', value]],
|
126
|
+
paddingBlockStart: rawValue => [['paddingTop', rawValue]],
|
127
|
+
paddingBlockEnd: rawValue => [['paddingBottom', rawValue]],
|
128
|
+
paddingStart: value => [['paddingInlineStart', value]],
|
129
|
+
paddingEnd: value => [['paddingInlineEnd', value]],
|
130
|
+
paddingHorizontal: value => [['paddingInline', value]],
|
131
|
+
paddingVertical: value => [['paddingBlock', value]],
|
132
|
+
insetBlockStart: value => [['top', value]],
|
133
|
+
insetBlockEnd: value => [['bottom', value]],
|
134
|
+
start: value => [['insetInlineStart', value]],
|
135
|
+
end: value => [['insetInlineEnd', value]]
|
136
|
+
};
|
137
|
+
const expansions = {
|
138
|
+
...shorthands,
|
139
|
+
...aliases
|
140
|
+
};
|
141
|
+
var _default = expansions;
|
142
|
+
exports.default = _default;
|
package/lib/stylex-create.js
CHANGED
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.default = styleXCreateSet;
|
7
7
|
var _convertToClassName = _interopRequireDefault(require("./convert-to-className"));
|
8
|
-
var
|
8
|
+
var _index = _interopRequireWildcard(require("./preprocess-rules/index"));
|
9
9
|
var _objectUtils = require("./utils/object-utils");
|
10
10
|
var messages = _interopRequireWildcard(require("./messages"));
|
11
11
|
var _stylexInclude = require("./stylex-include");
|
@@ -40,6 +40,9 @@ function styleXCreateSet(namespaces) {
|
|
40
40
|
if (typeof namespace !== 'object' || Array.isArray(namespace)) {
|
41
41
|
throw new Error(messages.ILLEGAL_NAMESPACE_VALUE);
|
42
42
|
}
|
43
|
+
|
44
|
+
// namespace = preflatten(namespace);
|
45
|
+
|
43
46
|
const [resolvedNamespace, injected] = styleXCreateNamespace(namespace, options);
|
44
47
|
const compiledNamespace = (0, _objectUtils.flattenObject)(resolvedNamespace);
|
45
48
|
resolvedNamespaces[namespaceName] = {
|
@@ -72,16 +75,18 @@ function styleXCreateSet(namespaces) {
|
|
72
75
|
function styleXCreateNamespace(style, options) {
|
73
76
|
const namespaceEntries = (0, _objectUtils.objEntries)(style);
|
74
77
|
|
75
|
-
// First
|
76
|
-
// e.g. `margin` gets expanded to `marginTop`, `marginBottom`, `marginStart`, `marginEnd`.
|
77
|
-
// `entries` is an array of [key, value] pairs.
|
78
|
+
// First handle shorthands. The strategy for this is based on the `styleResolution` option.
|
78
79
|
const entries = namespaceEntries.flatMap(_ref => {
|
79
80
|
let [key, value] = _ref;
|
81
|
+
// Detect style ...spreads and leave them unmodified
|
80
82
|
if (value instanceof _stylexInclude.IncludedStyles) {
|
81
83
|
return [[key, value]];
|
82
84
|
}
|
85
|
+
// Detect nested style objects.
|
83
86
|
if (value != null && typeof value === 'object' && !Array.isArray(value)) {
|
84
|
-
|
87
|
+
// Nested Objects are only allowed for legacy :pseudo, @media or long-hand properties for now.
|
88
|
+
// In the future, we will try to support shorthands as well.
|
89
|
+
if (!key.startsWith(':') && !key.startsWith('@') && (0, _index.getExpandedKeys)(options).includes(key)) {
|
85
90
|
throw new Error(messages.INVALID_PSEUDO);
|
86
91
|
}
|
87
92
|
return [[key, (0, _objectUtils.objFromEntries)((0, _objectUtils.objEntries)(value).flatMap(_ref2 => {
|
@@ -89,7 +94,7 @@ function styleXCreateNamespace(style, options) {
|
|
89
94
|
if (innerValue != null && typeof innerValue === 'object' && !Array.isArray(innerValue)) {
|
90
95
|
throw new Error(messages.ILLEGAL_NESTED_PSEUDO);
|
91
96
|
}
|
92
|
-
return (0,
|
97
|
+
return (0, _index.default)([innerKey, innerValue], options);
|
93
98
|
}))]];
|
94
99
|
} else {
|
95
100
|
if (value !== null && typeof value !== 'string' && typeof value !== 'number' && !Array.isArray(value)) {
|
@@ -98,7 +103,7 @@ function styleXCreateNamespace(style, options) {
|
|
98
103
|
if (Array.isArray(value) && value.some(val => typeof val === 'object')) {
|
99
104
|
throw new Error(messages.ILLEGAL_PROP_ARRAY_VALUE);
|
100
105
|
}
|
101
|
-
return (0,
|
106
|
+
return (0, _index.default)([key, value], options);
|
102
107
|
}
|
103
108
|
});
|
104
109
|
|
@@ -113,18 +118,39 @@ function styleXCreateNamespace(style, options) {
|
|
113
118
|
if (val instanceof _stylexInclude.IncludedStyles) {
|
114
119
|
resolvedNamespace[key] = val;
|
115
120
|
} else if (val != null && typeof val === 'object' && !Array.isArray(val)) {
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
121
|
+
if (key.startsWith(':') || key.startsWith('@')) {
|
122
|
+
const pseudo = key;
|
123
|
+
const innerObj = {};
|
124
|
+
for (const [innerKey, innerVal] of (0, _objectUtils.objEntries)(val)) {
|
125
|
+
if (innerVal === null) {
|
126
|
+
innerObj[innerKey] = null;
|
127
|
+
} else if (typeof innerVal === 'object' && !Array.isArray(innerVal)) {
|
128
|
+
throw new Error(messages.ILLEGAL_NESTED_PSEUDO);
|
129
|
+
} else {
|
130
|
+
const [updatedKey, className, cssRule] = (0, _convertToClassName.default)([innerKey, innerVal], pseudo, options);
|
131
|
+
innerObj[updatedKey] = className;
|
132
|
+
injectedStyles[updatedKey + pseudo] = [className, cssRule];
|
133
|
+
}
|
134
|
+
}
|
135
|
+
resolvedNamespace[key] = innerObj;
|
136
|
+
} else {
|
137
|
+
const propKey = key;
|
138
|
+
const classNames = [];
|
139
|
+
for (const [pseudo, innerVal] of (0, _objectUtils.objEntries)(val)) {
|
140
|
+
if (pseudo !== 'default' && !pseudo.startsWith(':') && !pseudo.startsWith('@')) {
|
141
|
+
throw new Error(messages.INVALID_PSEUDO);
|
142
|
+
}
|
143
|
+
if (typeof innerVal === 'object' && !Array.isArray(innerVal)) {
|
144
|
+
throw new Error(messages.ILLEGAL_NESTED_PSEUDO);
|
145
|
+
}
|
146
|
+
if (innerVal !== null) {
|
147
|
+
const [updatedKey, className, cssRule] = (0, _convertToClassName.default)([propKey, innerVal], pseudo === 'default' ? undefined : pseudo, options);
|
148
|
+
injectedStyles[updatedKey + pseudo] = [className, cssRule];
|
149
|
+
classNames.push(className);
|
150
|
+
}
|
125
151
|
}
|
152
|
+
resolvedNamespace[key] = classNames.join(' ');
|
126
153
|
}
|
127
|
-
resolvedNamespace[key] = innerObj;
|
128
154
|
} else {
|
129
155
|
if (val === null) {
|
130
156
|
resolvedNamespace[key] = null;
|
@@ -10,22 +10,38 @@ var _dashify = _interopRequireDefault(require("./utils/dashify"));
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
11
11
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
12
12
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
13
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
13
14
|
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
14
15
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
15
16
|
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
17
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
18
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
19
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
16
20
|
var _set = /*#__PURE__*/new WeakSet();
|
21
|
+
var _mediaWidths = /*#__PURE__*/new WeakMap();
|
22
|
+
var _mediaHeights = /*#__PURE__*/new WeakMap();
|
17
23
|
class StylexValueBuilder {
|
18
24
|
constructor(defaultValue) {
|
19
25
|
_classPrivateMethodInitSpec(this, _set);
|
26
|
+
_classPrivateFieldInitSpec(this, _mediaWidths, {
|
27
|
+
writable: true,
|
28
|
+
value: []
|
29
|
+
});
|
30
|
+
_classPrivateFieldInitSpec(this, _mediaHeights, {
|
31
|
+
writable: true,
|
32
|
+
value: []
|
33
|
+
});
|
20
34
|
this.default = defaultValue;
|
21
35
|
}
|
22
|
-
// @media Queries
|
23
|
-
|
24
|
-
mediaPrint(value) {
|
25
|
-
return _classPrivateMethodGet(this, _set, _set2).call(this, '@media print', value);
|
26
|
-
}
|
27
36
|
mediaWidth(_ref, value) {
|
28
37
|
let [min, max] = _ref;
|
38
|
+
if (_classPrivateFieldGet(this, _mediaWidths).some(_ref2 => {
|
39
|
+
let [m, M] = _ref2;
|
40
|
+
return m <= min && min < M || m < max && max <= M || min <= m && max >= M;
|
41
|
+
})) {
|
42
|
+
throw new Error(messages.OVERLAPPING_MEDIA_WIDTHS);
|
43
|
+
}
|
44
|
+
_classPrivateFieldGet(this, _mediaWidths).push([min, max]);
|
29
45
|
if (min > 0 && max < Infinity) {
|
30
46
|
return _classPrivateMethodGet(this, _set, _set2).call(this, `@media (min-width: ${min}px and max-width: ${max}px)`, value);
|
31
47
|
} else if (min === 0) {
|
@@ -35,8 +51,15 @@ class StylexValueBuilder {
|
|
35
51
|
}
|
36
52
|
throw new Error(messages.INVALID_MEDIA_QUERY);
|
37
53
|
}
|
38
|
-
mediaHeight(
|
39
|
-
let [min, max] =
|
54
|
+
mediaHeight(_ref3, value) {
|
55
|
+
let [min, max] = _ref3;
|
56
|
+
if (_classPrivateFieldGet(this, _mediaHeights).some(_ref4 => {
|
57
|
+
let [m, M] = _ref4;
|
58
|
+
return m <= min && min < M || m < max && max <= M || min <= m && max >= M;
|
59
|
+
})) {
|
60
|
+
throw new Error(messages.OVERLAPPING_MEDIA_HEIGHTS);
|
61
|
+
}
|
62
|
+
_classPrivateFieldGet(this, _mediaHeights).push([min, max]);
|
40
63
|
if (min > 0 && max < Infinity) {
|
41
64
|
return _classPrivateMethodGet(this, _set, _set2).call(this, `@media (min-height: ${min}px and max-height: ${max}px)`, value);
|
42
65
|
} else if (min === 0) {
|
@@ -46,110 +69,184 @@ class StylexValueBuilder {
|
|
46
69
|
}
|
47
70
|
throw new Error(messages.INVALID_MEDIA_QUERY);
|
48
71
|
}
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
}
|
60
|
-
|
61
|
-
|
62
|
-
}
|
63
|
-
|
64
|
-
|
65
|
-
}
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
}
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
}
|
72
|
+
|
73
|
+
// mediaAspectRatio<TAddedValue>(
|
74
|
+
// [min, max]: [number, number],
|
75
|
+
// value: TAddedValue
|
76
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
77
|
+
// if (min > 0 && max < Infinity) {
|
78
|
+
// return this.#set(
|
79
|
+
// `@media (min-aspect-ratio: ${min} and max-aspect-ratio: $, })`,
|
80
|
+
// value
|
81
|
+
// );
|
82
|
+
// } else if (min === 0) {
|
83
|
+
// return this.#set(`@media (max-aspect-ratio: ${max})`, value);
|
84
|
+
// } else if (max === Infinity) {
|
85
|
+
// return this.#set(`@media (min-aspect-ratio: ${min})`, value);
|
86
|
+
// }
|
87
|
+
// throw new Error(messages.INVALID_MEDIA_QUERY);
|
88
|
+
// }
|
89
|
+
|
90
|
+
// mediaPortrait<TAddedValue>(
|
91
|
+
// value: TAddedValue
|
92
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
93
|
+
// return this.#set('@media (orientation: portrait)', value);
|
94
|
+
// }
|
95
|
+
|
96
|
+
// mediaLandscape<TAddedValue>(
|
97
|
+
// value: TAddedValue
|
98
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
99
|
+
// return this.#set('@media (orientation: landscape)', value);
|
100
|
+
// }
|
101
|
+
|
102
|
+
// mediaSRGBDisplay<TAddedValue>(
|
103
|
+
// value: TAddedValue
|
104
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
105
|
+
// return this.#set('@media (color-gamut: srgb)', value);
|
106
|
+
// }
|
107
|
+
|
108
|
+
// mediaP3Display<TAddedValue>(
|
109
|
+
// value: TAddedValue
|
110
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
111
|
+
// return this.#set('@media (color-gamut: p3)', value);
|
112
|
+
// }
|
113
|
+
|
114
|
+
// mediaRec2020Display<TAddedValue>(
|
115
|
+
// value: TAddedValue
|
116
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
117
|
+
// return this.#set('@media (color-gamut: rec2020)', value);
|
118
|
+
// }
|
119
|
+
|
120
|
+
// mediaIsFullscreen<TAddedValue>(
|
121
|
+
// value: TAddedValue
|
122
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
123
|
+
// return this.#set('@media (display-mode: fullscreen)', value);
|
124
|
+
// }
|
78
125
|
|
79
126
|
// These are confusing, so skipping them for now
|
80
127
|
// mediaIsStandalone
|
81
128
|
// mediaIsMinimalUI
|
82
129
|
|
83
|
-
mediaSDRDisplay(
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
130
|
+
// mediaSDRDisplay<TAddedValue>(
|
131
|
+
// value: TAddedValue
|
132
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
133
|
+
// return this.#set('@media (dynamic-range: standard)', value);
|
134
|
+
// }
|
135
|
+
|
136
|
+
// mediaHDRDisplay<TAddedValue>(
|
137
|
+
// value: TAddedValue
|
138
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
139
|
+
// return this.#set('@media (dynamic-range: high)', value);
|
140
|
+
// }
|
141
|
+
|
142
|
+
// mediaSupportsHDRVideo<TAddedValue>(
|
143
|
+
// value: TAddedValue
|
144
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
145
|
+
// return this.#set('@media (video-dynamic-range: high)', value);
|
146
|
+
// }
|
92
147
|
|
93
148
|
//<TAddedValue> mediaHasColor(value: TAddedValue): StylexValueBuilder<TValue | TAddedValue> {
|
94
149
|
// return this.#set('@media (color)', value);
|
95
150
|
// }
|
96
151
|
|
97
|
-
primaryInputCanHover(
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
152
|
+
// primaryInputCanHover<TAddedValue>(
|
153
|
+
// value: TAddedValue
|
154
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
155
|
+
// return this.#set('@media (hover: hover)', value);
|
156
|
+
// }
|
157
|
+
// primaryInputCanNotHover<TAddedValue>(
|
158
|
+
// value: TAddedValue
|
159
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
160
|
+
// return this.#set('@media (hover: none)', value);
|
161
|
+
// }
|
162
|
+
|
163
|
+
// someInputCanHover<TAddedValue>(
|
164
|
+
// value: TAddedValue
|
165
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
166
|
+
// return this.#set('@media (any-hover: hover)', value);
|
167
|
+
// }
|
168
|
+
|
169
|
+
// noInputCanHover<TAddedValue>(
|
170
|
+
// value: TAddedValue
|
171
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
172
|
+
// return this.#set('@media (any-hover: none)', value);
|
173
|
+
// }
|
174
|
+
|
175
|
+
// somePointerIsFine<TAddedValue>(
|
176
|
+
// value: TAddedValue
|
177
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
178
|
+
// return this.#set('@media (any-pointer: fine)', value);
|
179
|
+
// }
|
180
|
+
|
181
|
+
// somePointerIsCoarse<TAddedValue>(
|
182
|
+
// value: TAddedValue
|
183
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
184
|
+
// return this.#set('@media (any-pointer: coarse)', value);
|
185
|
+
// }
|
186
|
+
|
187
|
+
// primaryPointerIsFine<TAddedValue>(
|
188
|
+
// value: TAddedValue
|
189
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
190
|
+
// return this.#set('@media (pointer: fine)', value);
|
191
|
+
// }
|
192
|
+
|
193
|
+
// primaryPointerIsCoarse<TAddedValue>(
|
194
|
+
// value: TAddedValue
|
195
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
196
|
+
// return this.#set('@media (pointer: coarse)', value);
|
197
|
+
// }
|
198
|
+
|
199
|
+
// lightMode<TAddedValue>(
|
200
|
+
// value: TAddedValue
|
201
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
202
|
+
// return this.#set('@media (prefers-color-scheme: light)', value);
|
203
|
+
// }
|
204
|
+
|
205
|
+
// darkMode<TAddedValue>(
|
206
|
+
// value: TAddedValue
|
207
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
208
|
+
// return this.#set('@media (prefers-color-scheme: dark)', value);
|
209
|
+
// }
|
210
|
+
|
211
|
+
// userPrefersMoreContrast<TAddedValue>(
|
212
|
+
// value: TAddedValue
|
213
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
214
|
+
// return this.#set('@media (prefers-contrast: more)', value);
|
215
|
+
// }
|
216
|
+
|
217
|
+
// userPrefersLessContrast<TAddedValue>(
|
218
|
+
// value: TAddedValue
|
219
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
220
|
+
// return this.#set('@media (prefers-contrast: less)', value);
|
221
|
+
// }
|
222
|
+
|
223
|
+
// userPrefersReducedMotion<TAddedValue>(
|
224
|
+
// value: TAddedValue
|
225
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
226
|
+
// return this.#set('@media (prefers-reduced-motion)', value);
|
227
|
+
// }
|
228
|
+
|
229
|
+
// noScript<TAddedValue>(
|
230
|
+
// value: TAddedValue
|
231
|
+
// ): StylexValueBuilder<TValue | TAddedValue> {
|
232
|
+
// return this.#set('@media (scripting: none)', value);
|
233
|
+
// }
|
234
|
+
|
235
|
+
// Choosing a catch-all for now for familiarity
|
236
|
+
matchMedia(query, value) {
|
140
237
|
return _classPrivateMethodGet(this, _set, _set2).call(this, `@media ${query}`, value);
|
141
238
|
}
|
142
239
|
supports(selector, value) {
|
143
|
-
const toSelector =
|
144
|
-
let [k, v] =
|
240
|
+
const toSelector = _ref5 => {
|
241
|
+
let [k, v] = _ref5;
|
145
242
|
return `(${(0, _dashify.default)(k)}: ${String(v)})`;
|
146
243
|
};
|
147
244
|
const query = Object.entries(selector).map(toSelector).join(' and ');
|
148
245
|
return _classPrivateMethodGet(this, _set, _set2).call(this, `@supports ${query}`, value);
|
149
246
|
}
|
150
247
|
supportsNot(selector, value) {
|
151
|
-
const toSelector =
|
152
|
-
let [k, v] =
|
248
|
+
const toSelector = _ref6 => {
|
249
|
+
let [k, v] = _ref6;
|
153
250
|
return `(not (${(0, _dashify.default)(k)}: ${String(v)}))`;
|
154
251
|
};
|
155
252
|
const query = Object.entries(selector).map(toSelector).join(' and ');
|
@@ -203,12 +300,6 @@ class StylexValueBuilder {
|
|
203
300
|
invalid(value) {
|
204
301
|
return _classPrivateMethodGet(this, _set, _set2).call(this, ':invalid', value);
|
205
302
|
}
|
206
|
-
isUNSAFE(selector, value) {
|
207
|
-
return _classPrivateMethodGet(this, _set, _set2).call(this, `:is(${selector})`, value);
|
208
|
-
}
|
209
|
-
notUNSAFE(selector, value) {
|
210
|
-
return _classPrivateMethodGet(this, _set, _set2).call(this, `:not(${selector})`, value);
|
211
|
-
}
|
212
303
|
lang(value) {
|
213
304
|
return _classPrivateMethodGet(this, _set, _set2).call(this, ':lang', value);
|
214
305
|
}
|
@@ -251,9 +342,50 @@ class StylexValueBuilder {
|
|
251
342
|
visited(value) {
|
252
343
|
return _classPrivateMethodGet(this, _set, _set2).call(this, ':visited', value);
|
253
344
|
}
|
345
|
+
get not() {
|
346
|
+
return {
|
347
|
+
hover: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:hover)', value),
|
348
|
+
focus: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:focus)', value),
|
349
|
+
focusVisible: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:focus-visible)', value),
|
350
|
+
focusWithin: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:focus-within)', value),
|
351
|
+
active: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:active)', value),
|
352
|
+
anyLink: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:any-link)', value),
|
353
|
+
autofill: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:autofill)', value),
|
354
|
+
checked: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:checked)', value),
|
355
|
+
defaultSelection: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:default)', value),
|
356
|
+
disabled: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:disabled)', value),
|
357
|
+
empty: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:empty)', value),
|
358
|
+
enabled: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:enabled)', value),
|
359
|
+
fullscreen: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:fullscreen)', value),
|
360
|
+
indeterminate: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:indeterminate)', value),
|
361
|
+
invalid: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:invalid)', value),
|
362
|
+
lang: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:lang)', value),
|
363
|
+
dirRTLUNSFAE: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:dir-rtlunsfae)', value),
|
364
|
+
link: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:link)', value),
|
365
|
+
optional: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:optional)', value),
|
366
|
+
pictureInPicture: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:picture-in-picture)', value),
|
367
|
+
placeholderShown: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:placeholder-shown)', value),
|
368
|
+
paused: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:paused)', value),
|
369
|
+
playing: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:playing)', value),
|
370
|
+
readOnly: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:read-only)', value),
|
371
|
+
readWrite: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:read-write)', value),
|
372
|
+
required: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:required)', value),
|
373
|
+
target: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:target)', value),
|
374
|
+
valid: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:valid)', value),
|
375
|
+
visited: value => _classPrivateMethodGet(this, _set, _set2).call(this, ':not(:visited)', value)
|
376
|
+
};
|
377
|
+
}
|
254
378
|
pseudoUNSAFE(selector, value) {
|
255
379
|
return _classPrivateMethodGet(this, _set, _set2).call(this, `:${selector}`, value);
|
256
380
|
}
|
381
|
+
// These can be used to write arbitrary CSS selectors
|
382
|
+
// Which is UNSAFE!
|
383
|
+
_isUNSAFE(selector, value) {
|
384
|
+
return _classPrivateMethodGet(this, _set, _set2).call(this, `:is(${selector})`, value);
|
385
|
+
}
|
386
|
+
_notUNSAFE(selector, value) {
|
387
|
+
return _classPrivateMethodGet(this, _set, _set2).call(this, `:not(${selector})`, value);
|
388
|
+
}
|
257
389
|
}
|
258
390
|
exports.StylexValueBuilder = StylexValueBuilder;
|
259
391
|
function _set2(key, value) {
|