@mochi-inc-japan/react-native-stylex-sheet 1.0.0

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.
Files changed (68) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +608 -0
  3. package/README.md +599 -0
  4. package/lib/commonjs/index.js +65 -0
  5. package/lib/commonjs/index.js.map +1 -0
  6. package/lib/commonjs/tests/index.test.js +224 -0
  7. package/lib/commonjs/tests/index.test.js.map +1 -0
  8. package/lib/commonjs/tests/media.test.js +226 -0
  9. package/lib/commonjs/tests/media.test.js.map +1 -0
  10. package/lib/commonjs/tests/mock.test.js +54 -0
  11. package/lib/commonjs/tests/mock.test.js.map +1 -0
  12. package/lib/commonjs/tests/test-utils.js +60 -0
  13. package/lib/commonjs/tests/test-utils.js.map +1 -0
  14. package/lib/commonjs/utils/base.js +72 -0
  15. package/lib/commonjs/utils/base.js.map +1 -0
  16. package/lib/commonjs/utils/hooks.js +60 -0
  17. package/lib/commonjs/utils/hooks.js.map +1 -0
  18. package/lib/commonjs/utils/media.js +69 -0
  19. package/lib/commonjs/utils/media.js.map +1 -0
  20. package/lib/commonjs/utils/theme.js +25 -0
  21. package/lib/commonjs/utils/theme.js.map +1 -0
  22. package/lib/commonjs/utils/tokens.js +18 -0
  23. package/lib/commonjs/utils/tokens.js.map +1 -0
  24. package/lib/commonjs/utils/types.js +6 -0
  25. package/lib/commonjs/utils/types.js.map +1 -0
  26. package/lib/commonjs/utils/variant.js +75 -0
  27. package/lib/commonjs/utils/variant.js.map +1 -0
  28. package/lib/module/index.js +6 -0
  29. package/lib/module/index.js.map +1 -0
  30. package/lib/module/tests/index.test.js +220 -0
  31. package/lib/module/tests/index.test.js.map +1 -0
  32. package/lib/module/tests/media.test.js +222 -0
  33. package/lib/module/tests/media.test.js.map +1 -0
  34. package/lib/module/tests/mock.test.js +49 -0
  35. package/lib/module/tests/mock.test.js.map +1 -0
  36. package/lib/module/tests/test-utils.js +52 -0
  37. package/lib/module/tests/test-utils.js.map +1 -0
  38. package/lib/module/utils/base.js +63 -0
  39. package/lib/module/utils/base.js.map +1 -0
  40. package/lib/module/utils/hooks.js +52 -0
  41. package/lib/module/utils/hooks.js.map +1 -0
  42. package/lib/module/utils/media.js +59 -0
  43. package/lib/module/utils/media.js.map +1 -0
  44. package/lib/module/utils/theme.js +16 -0
  45. package/lib/module/utils/theme.js.map +1 -0
  46. package/lib/module/utils/tokens.js +11 -0
  47. package/lib/module/utils/tokens.js.map +1 -0
  48. package/lib/module/utils/types.js +2 -0
  49. package/lib/module/utils/types.js.map +1 -0
  50. package/lib/module/utils/variant.js +65 -0
  51. package/lib/module/utils/variant.js.map +1 -0
  52. package/lib/types/index.d.ts +6 -0
  53. package/lib/types/tests/check-descriptor.test.d.ts +0 -0
  54. package/lib/types/tests/index.test.d.ts +1 -0
  55. package/lib/types/tests/media.test.d.ts +1 -0
  56. package/lib/types/tests/mock.test.d.ts +1 -0
  57. package/lib/types/tests/test-utils.d.ts +7 -0
  58. package/lib/types/tests/utils.d.ts +6 -0
  59. package/lib/types/utils/base.d.ts +13 -0
  60. package/lib/types/utils/hooks.d.ts +16 -0
  61. package/lib/types/utils/index.d.ts +9 -0
  62. package/lib/types/utils/media.d.ts +5 -0
  63. package/lib/types/utils/theme.d.ts +14 -0
  64. package/lib/types/utils/tokens.d.ts +3 -0
  65. package/lib/types/utils/types.d.ts +28 -0
  66. package/lib/types/utils/utils.d.ts +4 -0
  67. package/lib/types/utils/variant.d.ts +50 -0
  68. package/package.json +132 -0
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+
3
+ var _reactNative = require("@testing-library/react-native");
4
+ var _react = _interopRequireDefault(require("react"));
5
+ var _reactNative2 = require("react-native");
6
+ var stylex = _interopRequireWildcard(require("../"));
7
+ var _testUtils = require("./test-utils");
8
+ 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); }
9
+ 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; }
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ // ---------------------------------------------------------------------------
12
+ // Basic
13
+ // ---------------------------------------------------------------------------
14
+
15
+ describe('Basic', () => {
16
+ it('create() + props() returns base styles', () => {
17
+ const styles = stylex.create({
18
+ view: {
19
+ backgroundColor: 'red',
20
+ height: 100,
21
+ width: 100
22
+ }
23
+ });
24
+ const {
25
+ style
26
+ } = stylex.props(styles.view);
27
+ expect(style[0]).toMatchObject({
28
+ backgroundColor: 'red',
29
+ height: 100,
30
+ width: 100
31
+ });
32
+ });
33
+ it('stylex.props() renders base styles', () => {
34
+ var _toJSON;
35
+ const styles = stylex.create({
36
+ view: {
37
+ backgroundColor: 'red',
38
+ height: 100,
39
+ width: 100
40
+ },
41
+ view2: {
42
+ height: 200,
43
+ width: 200
44
+ }
45
+ });
46
+ function Comp() {
47
+ return /*#__PURE__*/_react.default.createElement(_reactNative2.View, stylex.props(styles.view, styles.view2));
48
+ }
49
+ const {
50
+ toJSON
51
+ } = (0, _reactNative.render)(/*#__PURE__*/_react.default.createElement(Comp, null));
52
+ expect((_toJSON = toJSON()) === null || _toJSON === void 0 ? void 0 : _toJSON.props.style[1]).toMatchObject({
53
+ height: 200,
54
+ width: 200
55
+ });
56
+ });
57
+ it('stylex.props() has backward compatibility on StyleSheet', () => {
58
+ const sameArgs = {
59
+ view: {
60
+ backgroundColor: 'red',
61
+ height: 100,
62
+ width: 100
63
+ },
64
+ view2: {
65
+ height: 200,
66
+ width: 200
67
+ }
68
+ };
69
+ const styles = stylex.create(sameArgs);
70
+ const orgStyles = _reactNative2.StyleSheet.create(sameArgs);
71
+ expect(stylex.props(styles.view, styles.view2).style).toMatchObject([orgStyles.view, orgStyles.view2]);
72
+ });
73
+ });
74
+
75
+ // ---------------------------------------------------------------------------
76
+ // Variants
77
+ // ---------------------------------------------------------------------------
78
+
79
+ describe('Variants', () => {
80
+ it('variants are applied correctly', () => {
81
+ const vars = stylex.defineVars({
82
+ colors: {
83
+ default: 'white',
84
+ primary: 'red',
85
+ secondary: 'blue'
86
+ },
87
+ sizes: {
88
+ default: 10,
89
+ small: 5,
90
+ medium: 15
91
+ }
92
+ });
93
+ const variants = stylex.createVariants({
94
+ var1: {
95
+ backgroundColor: vars.colors
96
+ },
97
+ var2: {
98
+ width: vars.sizes
99
+ }
100
+ });
101
+ const styles = stylex.create({
102
+ view: {
103
+ backgroundColor: variants.var1.backgroundColor,
104
+ width: variants.var2.width
105
+ }
106
+ });
107
+ expect(stylex.props(styles.view).style[0]).toMatchObject({
108
+ backgroundColor: 'white',
109
+ width: 10
110
+ });
111
+ expect(stylex.props(styles.view).style.length).toBe(1);
112
+ expect(stylex.props(stylex.mix(styles.view, {
113
+ var1: 'primary',
114
+ var2: 'medium'
115
+ })).style).toMatchObject([{
116
+ backgroundColor: 'white',
117
+ width: 10
118
+ }, {
119
+ backgroundColor: 'red'
120
+ }, {
121
+ width: 15
122
+ }]);
123
+ });
124
+ it('multiple style have same variant value is applied correctly', () => {
125
+ const variants = stylex.createVariants({
126
+ shape: {
127
+ borderRadius: {
128
+ default: 4,
129
+ round: 8,
130
+ square: 0,
131
+ test: 1
132
+ },
133
+ fontSize: {
134
+ default: 14,
135
+ round: 16,
136
+ square: 18
137
+ }
138
+ }
139
+ });
140
+ const styles = stylex.create({
141
+ view: {
142
+ ...variants.shape
143
+ }
144
+ });
145
+ expect((0, _testUtils.reduceStyles)(stylex.props(stylex.mix(styles.view, {
146
+ shape: 'round'
147
+ })).style)).toMatchObject({
148
+ borderRadius: 8,
149
+ fontSize: 16
150
+ });
151
+ expect((0, _testUtils.reduceStyles)(stylex.props(stylex.mix(styles.view, {
152
+ shape: 'test'
153
+ })).style)).toMatchObject({
154
+ borderRadius: 1,
155
+ fontSize: 14
156
+ });
157
+ });
158
+ });
159
+
160
+ // ---------------------------------------------------------------------------
161
+ // Theme queries
162
+ // ---------------------------------------------------------------------------
163
+
164
+ describe('Theme', () => {
165
+ it('theme usage implicitly', () => {
166
+ const {
167
+ themes
168
+ } = stylex.createThemes(['light', 'dark']);
169
+ const styles = stylex.create({
170
+ view: {
171
+ borderBlockColor: {
172
+ default: 'black',
173
+ [themes.light]: 'white',
174
+ [themes.dark]: 'gray'
175
+ }
176
+ }
177
+ });
178
+ function Comp() {
179
+ const sx = stylex.useStylex();
180
+ return /*#__PURE__*/_react.default.createElement(_reactNative2.View, sx.props(styles.view));
181
+ }
182
+ const outputStyle = theme => {
183
+ return (0, _testUtils.finalStyle)(/*#__PURE__*/_react.default.createElement(stylex.RNStyleXProvider, {
184
+ theme: themes[theme]
185
+ }, /*#__PURE__*/_react.default.createElement(Comp, null)));
186
+ };
187
+ expect(outputStyle('light')).toMatchObject({
188
+ borderBlockColor: 'white'
189
+ });
190
+ expect(outputStyle('dark')).toMatchObject({
191
+ borderBlockColor: 'gray'
192
+ });
193
+ });
194
+ it('theme usage implicitly', () => {
195
+ const {
196
+ themes
197
+ } = stylex.createThemes(['light', 'dark']);
198
+ const styles = stylex.create({
199
+ view: {
200
+ borderBlockColor: {
201
+ default: 'black',
202
+ [themes.light]: 'white',
203
+ [themes.dark]: 'gray'
204
+ }
205
+ }
206
+ });
207
+ function Comp() {
208
+ const sx = stylex.useStylex();
209
+ return /*#__PURE__*/_react.default.createElement(_reactNative2.View, sx.props(sx.mix(styles.view)));
210
+ }
211
+ const outputStyle = theme => {
212
+ return (0, _testUtils.finalStyle)(/*#__PURE__*/_react.default.createElement(stylex.RNStyleXProvider, {
213
+ theme: themes[theme]
214
+ }, /*#__PURE__*/_react.default.createElement(Comp, null)));
215
+ };
216
+ expect(outputStyle('light')).toMatchObject({
217
+ borderBlockColor: 'white'
218
+ });
219
+ expect(outputStyle('dark')).toMatchObject({
220
+ borderBlockColor: 'gray'
221
+ });
222
+ });
223
+ });
224
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_react","_interopRequireDefault","_reactNative2","stylex","_interopRequireWildcard","_testUtils","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","describe","it","styles","create","view","backgroundColor","height","width","style","props","expect","toMatchObject","_toJSON","view2","Comp","createElement","View","toJSON","render","sameArgs","orgStyles","StyleSheet","vars","defineVars","colors","primary","secondary","sizes","small","medium","variants","createVariants","var1","var2","length","toBe","mix","shape","borderRadius","round","square","test","fontSize","reduceStyles","themes","createThemes","borderBlockColor","light","dark","sx","useStylex","outputStyle","theme","finalStyle","RNStyleXProvider"],"sources":["index.test.tsx"],"sourcesContent":["import { render } from '@testing-library/react-native';\nimport React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport * as stylex from '../';\nimport { Variants } from '../utils/types';\nimport { finalStyle, reduceStyles } from './test-utils';\n\n// ---------------------------------------------------------------------------\n// Basic\n// ---------------------------------------------------------------------------\n\ndescribe('Basic', () => {\n it('create() + props() returns base styles', () => {\n const styles = stylex.create({\n view: {\n backgroundColor: 'red',\n height: 100,\n width: 100,\n },\n });\n\n const { style } = stylex.props(styles.view);\n expect(style[0]).toMatchObject({\n backgroundColor: 'red',\n height: 100,\n width: 100,\n });\n });\n\n it('stylex.props() renders base styles', () => {\n const styles = stylex.create({\n view: { backgroundColor: 'red', height: 100, width: 100 },\n view2: { height: 200, width: 200 },\n });\n\n function Comp() {\n return <View {...stylex.props(styles.view, styles.view2)} />;\n }\n const { toJSON } = render(<Comp />);\n expect(toJSON()?.props.style[1]).toMatchObject({\n height: 200,\n width: 200,\n });\n });\n\n it('stylex.props() has backward compatibility on StyleSheet', () => {\n const sameArgs = {\n view: { backgroundColor: 'red', height: 100, width: 100 },\n view2: { height: 200, width: 200 },\n };\n const styles = stylex.create(sameArgs);\n\n const orgStyles = StyleSheet.create(sameArgs);\n\n expect(stylex.props(styles.view, styles.view2).style).toMatchObject([\n orgStyles.view,\n orgStyles.view2,\n ]);\n });\n});\n\n// ---------------------------------------------------------------------------\n// Variants\n// ---------------------------------------------------------------------------\n\ndescribe('Variants', () => {\n it('variants are applied correctly', () => {\n const vars = stylex.defineVars({\n colors: {\n default: 'white',\n primary: 'red',\n secondary: 'blue',\n },\n sizes: {\n default: 10,\n small: 5,\n medium: 15,\n },\n });\n\n const variants = stylex.createVariants({\n var1: {\n backgroundColor: vars.colors,\n },\n var2: {\n width: vars.sizes,\n },\n });\n\n const styles = stylex.create({\n view: {\n backgroundColor: variants.var1.backgroundColor,\n width: variants.var2.width,\n },\n });\n\n expect(stylex.props(styles.view).style[0]).toMatchObject({\n backgroundColor: 'white',\n width: 10,\n });\n\n expect(stylex.props(styles.view).style.length).toBe(1);\n\n expect(\n stylex.props(\n stylex.mix<Variants<typeof variants>>(styles.view, {\n var1: 'primary',\n var2: 'medium',\n })\n ).style\n ).toMatchObject([\n {\n backgroundColor: 'white',\n width: 10,\n },\n {\n backgroundColor: 'red',\n },\n {\n width: 15,\n },\n ]);\n });\n\n it('multiple style have same variant value is applied correctly', () => {\n const variants = stylex.createVariants({\n shape: {\n borderRadius: {\n default: 4,\n round: 8,\n square: 0,\n test: 1,\n },\n fontSize: {\n default: 14,\n round: 16,\n square: 18,\n },\n },\n });\n const styles = stylex.create({\n view: {\n ...variants.shape,\n },\n });\n\n expect(\n reduceStyles(\n stylex.props(\n stylex.mix<Variants<typeof variants>>(styles.view, {\n shape: 'round',\n })\n ).style\n )\n ).toMatchObject({ borderRadius: 8, fontSize: 16 });\n expect(\n reduceStyles(\n stylex.props(\n stylex.mix<Variants<typeof variants>>(styles.view, {\n shape: 'test',\n })\n ).style\n )\n ).toMatchObject({ borderRadius: 1, fontSize: 14 });\n });\n});\n\n// ---------------------------------------------------------------------------\n// Theme queries\n// ---------------------------------------------------------------------------\n\ndescribe('Theme', () => {\n it('theme usage implicitly', () => {\n const { themes } = stylex.createThemes(['light', 'dark']);\n const styles = stylex.create({\n view: {\n borderBlockColor: {\n default: 'black',\n [themes.light]: 'white',\n [themes.dark]: 'gray',\n },\n },\n });\n\n function Comp() {\n const sx = stylex.useStylex();\n return <View {...sx.props(styles.view)} />;\n }\n\n const outputStyle = (theme: keyof typeof themes) => {\n return finalStyle(\n <stylex.RNStyleXProvider theme={themes[theme]}>\n <Comp />\n </stylex.RNStyleXProvider>\n );\n };\n\n expect(outputStyle('light')).toMatchObject({\n borderBlockColor: 'white',\n });\n expect(outputStyle('dark')).toMatchObject({\n borderBlockColor: 'gray',\n });\n });\n\n it('theme usage implicitly', () => {\n const { themes } = stylex.createThemes(['light', 'dark']);\n const styles = stylex.create({\n view: {\n borderBlockColor: {\n default: 'black',\n [themes.light]: 'white',\n [themes.dark]: 'gray',\n },\n },\n });\n\n function Comp() {\n const sx = stylex.useStylex();\n return <View {...sx.props(sx.mix(styles.view))} />;\n }\n\n const outputStyle = (theme: keyof typeof themes) => {\n return finalStyle(\n <stylex.RNStyleXProvider theme={themes[theme]}>\n <Comp />\n </stylex.RNStyleXProvider>\n );\n };\n\n expect(outputStyle('light')).toMatchObject({\n borderBlockColor: 'white',\n });\n expect(outputStyle('dark')).toMatchObject({\n borderBlockColor: 'gray',\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+ var _reactNative = require("react-native");
5
+ var stylex = _interopRequireWildcard(require("../"));
6
+ var _testUtils = require("./test-utils");
7
+ 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); }
8
+ 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; }
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ // ---------------------------------------------------------------------------
11
+ // Media queries
12
+ // ---------------------------------------------------------------------------
13
+
14
+ describe('Media', () => {
15
+ it('single media queries default', () => {
16
+ const media = stylex.defineConsts({
17
+ md: '(width >= 750px)',
18
+ lg: '(width >= 1080px)'
19
+ });
20
+ const styles = stylex.create({
21
+ view: {
22
+ backgroundColor: {
23
+ default: 'yellow',
24
+ [media.md]: 'blue',
25
+ [media.lg]: 'green'
26
+ }
27
+ }
28
+ });
29
+ function Comp() {
30
+ const sx = stylex.useStylex();
31
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, sx.props(sx.mix(styles.view)));
32
+ }
33
+ (0, _testUtils.mockDimensions)({
34
+ width: 640
35
+ });
36
+ expect((0, _testUtils.finalStyle)(/*#__PURE__*/_react.default.createElement(stylex.RNStyleXProvider, null, /*#__PURE__*/_react.default.createElement(Comp, null)))).toMatchObject({
37
+ backgroundColor: 'yellow'
38
+ });
39
+ });
40
+ it('usage from hooks implicitly', () => {
41
+ const media = stylex.defineConsts({
42
+ md: '(width >= 750px)',
43
+ lg: '(width >= 1080px)'
44
+ });
45
+ const styles = stylex.create({
46
+ view: {
47
+ backgroundColor: {
48
+ default: 'yellow',
49
+ [media.md]: 'blue',
50
+ [media.lg]: 'green'
51
+ }
52
+ }
53
+ });
54
+ function Comp() {
55
+ const sx = stylex.useStylex();
56
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, sx.props(styles.view));
57
+ }
58
+ (0, _testUtils.mockDimensions)({
59
+ width: 750
60
+ });
61
+ expect((0, _testUtils.finalStyle)(/*#__PURE__*/_react.default.createElement(stylex.RNStyleXProvider, null, /*#__PURE__*/_react.default.createElement(Comp, null)))).toMatchObject({
62
+ backgroundColor: 'blue'
63
+ });
64
+ });
65
+ it('single media queries md', () => {
66
+ const media = stylex.defineConsts({
67
+ md: '(width >= 750px)',
68
+ lg: '(width >= 1080px)'
69
+ });
70
+ const styles = stylex.create({
71
+ view: {
72
+ backgroundColor: {
73
+ default: 'yellow',
74
+ [media.md]: 'blue',
75
+ [media.lg]: 'green'
76
+ }
77
+ }
78
+ });
79
+ function Comp() {
80
+ const sx = stylex.useStylex();
81
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, sx.props(sx.mix(styles.view)));
82
+ }
83
+ (0, _testUtils.mockDimensions)({
84
+ width: 750
85
+ });
86
+ expect((0, _testUtils.finalStyle)(/*#__PURE__*/_react.default.createElement(stylex.RNStyleXProvider, null, /*#__PURE__*/_react.default.createElement(Comp, null)))).toMatchObject({
87
+ backgroundColor: 'blue'
88
+ });
89
+ });
90
+ it('single media queries lg', () => {
91
+ const media = stylex.defineConsts({
92
+ md: '(width >= 750px)',
93
+ lg: '(width >= 1080px)'
94
+ });
95
+ const styles = stylex.create({
96
+ view: {
97
+ backgroundColor: {
98
+ default: 'yellow',
99
+ [media.md]: 'blue',
100
+ [media.lg]: 'green'
101
+ }
102
+ }
103
+ });
104
+ function Comp() {
105
+ const sx = stylex.useStylex();
106
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, sx.props(sx.mix(styles.view)));
107
+ }
108
+ (0, _testUtils.mockDimensions)({
109
+ width: 1080
110
+ });
111
+ expect((0, _testUtils.finalStyle)(/*#__PURE__*/_react.default.createElement(stylex.RNStyleXProvider, null, /*#__PURE__*/_react.default.createElement(Comp, null)))).toMatchObject({
112
+ backgroundColor: 'green'
113
+ });
114
+ });
115
+ it('multi-range media query matches width inside range', () => {
116
+ const media = stylex.defineConsts({
117
+ md: '(750px <= width < 1080px)',
118
+ lg: '(width >= 1080px)'
119
+ });
120
+ const styles = stylex.create({
121
+ view: {
122
+ backgroundColor: {
123
+ default: 'yellow',
124
+ [media.md]: 'blue',
125
+ [media.lg]: 'green'
126
+ }
127
+ }
128
+ });
129
+ function Comp() {
130
+ const sx = stylex.useStylex();
131
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, sx.props(sx.mix(styles.view)));
132
+ }
133
+ (0, _testUtils.mockDimensions)({
134
+ width: 900
135
+ });
136
+ expect((0, _testUtils.finalStyle)(/*#__PURE__*/_react.default.createElement(stylex.RNStyleXProvider, null, /*#__PURE__*/_react.default.createElement(Comp, null)))).toMatchObject({
137
+ backgroundColor: 'blue'
138
+ });
139
+ });
140
+ it('multi-range media query does not match width outside range', () => {
141
+ const media = stylex.defineConsts({
142
+ md: '(750px <= width < 1080px)',
143
+ lg: '(width >= 1080px)'
144
+ });
145
+ const styles = stylex.create({
146
+ view: {
147
+ backgroundColor: {
148
+ default: 'yellow',
149
+ [media.md]: 'blue',
150
+ [media.lg]: 'green'
151
+ }
152
+ }
153
+ });
154
+ function Comp() {
155
+ const sx = stylex.useStylex();
156
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, sx.props(sx.mix(styles.view)));
157
+ }
158
+ (0, _testUtils.mockDimensions)({
159
+ width: 1080
160
+ });
161
+ expect((0, _testUtils.finalStyle)(/*#__PURE__*/_react.default.createElement(stylex.RNStyleXProvider, null, /*#__PURE__*/_react.default.createElement(Comp, null)))).toMatchObject({
162
+ backgroundColor: 'green'
163
+ });
164
+ });
165
+ it('multiple properties each with independent breakpoints', () => {
166
+ const media = stylex.defineConsts({
167
+ md: '(width >= 750px)',
168
+ lg: '(width >= 1080px)'
169
+ });
170
+ const styles = stylex.create({
171
+ view: {
172
+ backgroundColor: {
173
+ default: 'yellow',
174
+ [media.md]: 'blue',
175
+ [media.lg]: 'green'
176
+ },
177
+ width: {
178
+ default: 100,
179
+ [media.md]: 200,
180
+ [media.lg]: 300
181
+ }
182
+ }
183
+ });
184
+ function Comp() {
185
+ const sx = stylex.useStylex();
186
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, sx.props(sx.mix(styles.view)));
187
+ }
188
+ (0, _testUtils.mockDimensions)({
189
+ width: 750
190
+ });
191
+ expect((0, _testUtils.finalStyle)(/*#__PURE__*/_react.default.createElement(stylex.RNStyleXProvider, null, /*#__PURE__*/_react.default.createElement(Comp, null)))).toMatchObject({
192
+ backgroundColor: 'blue',
193
+ width: 200
194
+ });
195
+ });
196
+ it('multiple style entries with media queries are merged in order', () => {
197
+ const media = stylex.defineConsts({
198
+ md: '(width >= 750px)'
199
+ });
200
+ const styles = stylex.create({
201
+ base: {
202
+ backgroundColor: {
203
+ default: 'yellow'
204
+ },
205
+ height: 100
206
+ },
207
+ override: {
208
+ backgroundColor: {
209
+ [media.md]: 'purple'
210
+ }
211
+ }
212
+ });
213
+ function Comp() {
214
+ const sx = stylex.useStylex();
215
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, sx.props(sx.mix(styles.base), sx.mix(styles.override)));
216
+ }
217
+ (0, _testUtils.mockDimensions)({
218
+ width: 750
219
+ });
220
+ expect((0, _testUtils.finalStyle)(/*#__PURE__*/_react.default.createElement(stylex.RNStyleXProvider, null, /*#__PURE__*/_react.default.createElement(Comp, null)))).toMatchObject({
221
+ backgroundColor: 'purple',
222
+ height: 100
223
+ });
224
+ });
225
+ });
226
+ //# sourceMappingURL=media.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","stylex","_interopRequireWildcard","_testUtils","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","describe","it","media","defineConsts","md","lg","styles","create","view","backgroundColor","Comp","sx","useStylex","createElement","View","props","mix","mockDimensions","width","expect","finalStyle","RNStyleXProvider","toMatchObject","base","height","override"],"sources":["media.test.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport * as stylex from '../';\nimport { mockDimensions, finalStyle } from './test-utils';\n\n// ---------------------------------------------------------------------------\n// Media queries\n// ---------------------------------------------------------------------------\n\ndescribe('Media', () => {\n it('single media queries default', () => {\n const media = stylex.defineConsts({\n md: '(width >= 750px)',\n lg: '(width >= 1080px)',\n });\n\n const styles = stylex.create({\n view: {\n backgroundColor: {\n default: 'yellow',\n [media.md]: 'blue',\n [media.lg]: 'green',\n },\n },\n });\n\n function Comp() {\n const sx = stylex.useStylex();\n return <View {...sx.props(sx.mix(styles.view))} />;\n }\n\n mockDimensions({ width: 640 });\n expect(\n finalStyle(\n <stylex.RNStyleXProvider>\n <Comp />\n </stylex.RNStyleXProvider>\n )\n ).toMatchObject({\n backgroundColor: 'yellow',\n });\n });\n\n it('usage from hooks implicitly', () => {\n const media = stylex.defineConsts({\n md: '(width >= 750px)',\n lg: '(width >= 1080px)',\n });\n\n const styles = stylex.create({\n view: {\n backgroundColor: {\n default: 'yellow',\n [media.md]: 'blue',\n [media.lg]: 'green',\n },\n },\n });\n\n function Comp() {\n const sx = stylex.useStylex();\n return <View {...sx.props(styles.view)} />;\n }\n\n mockDimensions({ width: 750 });\n expect(\n finalStyle(\n <stylex.RNStyleXProvider>\n <Comp />\n </stylex.RNStyleXProvider>\n )\n ).toMatchObject({\n backgroundColor: 'blue',\n });\n });\n\n it('single media queries md', () => {\n const media = stylex.defineConsts({\n md: '(width >= 750px)',\n lg: '(width >= 1080px)',\n });\n\n const styles = stylex.create({\n view: {\n backgroundColor: {\n default: 'yellow',\n [media.md]: 'blue',\n [media.lg]: 'green',\n },\n },\n });\n\n function Comp() {\n const sx = stylex.useStylex();\n return <View {...sx.props(sx.mix(styles.view))} />;\n }\n\n mockDimensions({ width: 750 });\n expect(\n finalStyle(\n <stylex.RNStyleXProvider>\n <Comp />\n </stylex.RNStyleXProvider>\n )\n ).toMatchObject({\n backgroundColor: 'blue',\n });\n });\n\n it('single media queries lg', () => {\n const media = stylex.defineConsts({\n md: '(width >= 750px)',\n lg: '(width >= 1080px)',\n });\n\n const styles = stylex.create({\n view: {\n backgroundColor: {\n default: 'yellow',\n [media.md]: 'blue',\n [media.lg]: 'green',\n },\n },\n });\n\n function Comp() {\n const sx = stylex.useStylex();\n return <View {...sx.props(sx.mix(styles.view))} />;\n }\n\n mockDimensions({ width: 1080 });\n expect(\n finalStyle(\n <stylex.RNStyleXProvider>\n <Comp />\n </stylex.RNStyleXProvider>\n )\n ).toMatchObject({\n backgroundColor: 'green',\n });\n });\n\n it('multi-range media query matches width inside range', () => {\n const media = stylex.defineConsts({\n md: '(750px <= width < 1080px)',\n lg: '(width >= 1080px)',\n });\n\n const styles = stylex.create({\n view: {\n backgroundColor: {\n default: 'yellow',\n [media.md]: 'blue',\n [media.lg]: 'green',\n },\n },\n });\n\n function Comp() {\n const sx = stylex.useStylex();\n return <View {...sx.props(sx.mix(styles.view))} />;\n }\n\n mockDimensions({ width: 900 });\n expect(\n finalStyle(\n <stylex.RNStyleXProvider>\n <Comp />\n </stylex.RNStyleXProvider>\n )\n ).toMatchObject({\n backgroundColor: 'blue',\n });\n });\n\n it('multi-range media query does not match width outside range', () => {\n const media = stylex.defineConsts({\n md: '(750px <= width < 1080px)',\n lg: '(width >= 1080px)',\n });\n\n const styles = stylex.create({\n view: {\n backgroundColor: {\n default: 'yellow',\n [media.md]: 'blue',\n [media.lg]: 'green',\n },\n },\n });\n\n function Comp() {\n const sx = stylex.useStylex();\n return <View {...sx.props(sx.mix(styles.view))} />;\n }\n\n mockDimensions({ width: 1080 });\n expect(\n finalStyle(\n <stylex.RNStyleXProvider>\n <Comp />\n </stylex.RNStyleXProvider>\n )\n ).toMatchObject({\n backgroundColor: 'green',\n });\n });\n\n it('multiple properties each with independent breakpoints', () => {\n const media = stylex.defineConsts({\n md: '(width >= 750px)',\n lg: '(width >= 1080px)',\n });\n\n const styles = stylex.create({\n view: {\n backgroundColor: {\n default: 'yellow',\n [media.md]: 'blue',\n [media.lg]: 'green',\n },\n width: {\n default: 100,\n [media.md]: 200,\n [media.lg]: 300,\n },\n },\n });\n\n function Comp() {\n const sx = stylex.useStylex();\n return <View {...sx.props(sx.mix(styles.view))} />;\n }\n\n mockDimensions({ width: 750 });\n expect(\n finalStyle(\n <stylex.RNStyleXProvider>\n <Comp />\n </stylex.RNStyleXProvider>\n )\n ).toMatchObject({\n backgroundColor: 'blue',\n width: 200,\n });\n });\n\n it('multiple style entries with media queries are merged in order', () => {\n const media = stylex.defineConsts({\n md: '(width >= 750px)',\n });\n\n const styles = stylex.create({\n base: {\n backgroundColor: {\n default: 'yellow',\n },\n height: 100,\n },\n override: {\n backgroundColor: {\n [media.md]: 'purple',\n },\n },\n });\n\n function Comp() {\n const sx = stylex.useStylex();\n return (\n <View {...sx.props(sx.mix(styles.base), sx.mix(styles.override))} />\n );\n }\n\n mockDimensions({ width: 750 });\n expect(\n finalStyle(\n <stylex.RNStyleXProvider>\n <Comp />\n </stylex.RNStyleXProvider>\n )\n ).toMatchObject({\n backgroundColor: 'purple',\n height: 100,\n });\n });\n});\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAA0D,SAAAK,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAH,wBAAAO,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAAA,SAAAjB,uBAAAW,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1D;AACA;AACA;;AAEAiB,QAAQ,CAAC,OAAO,EAAE,MAAM;EACtBC,EAAE,CAAC,8BAA8B,EAAE,MAAM;IACvC,MAAMC,KAAK,GAAG3B,MAAM,CAAC4B,YAAY,CAAC;MAChCC,EAAE,EAAE,kBAAkB;MACtBC,EAAE,EAAE;IACN,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAG/B,MAAM,CAACgC,MAAM,CAAC;MAC3BC,IAAI,EAAE;QACJC,eAAe,EAAE;UACfxB,OAAO,EAAE,QAAQ;UACjB,CAACiB,KAAK,CAACE,EAAE,GAAG,MAAM;UAClB,CAACF,KAAK,CAACG,EAAE,GAAG;QACd;MACF;IACF,CAAC,CAAC;IAEF,SAASK,IAAIA,CAAA,EAAG;MACd,MAAMC,EAAE,GAAGpC,MAAM,CAACqC,SAAS,CAAC,CAAC;MAC7B,oBAAOzC,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACvC,YAAA,CAAAwC,IAAI,EAAKH,EAAE,CAACI,KAAK,CAACJ,EAAE,CAACK,GAAG,CAACV,MAAM,CAACE,IAAI,CAAC,CAAI,CAAC;IACpD;IAEA,IAAAS,yBAAc,EAAC;MAAEC,KAAK,EAAE;IAAI,CAAC,CAAC;IAC9BC,MAAM,CACJ,IAAAC,qBAAU,eACRjD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACtC,MAAM,CAAC8C,gBAAgB,qBACtBlD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACH,IAAI,MAAE,CACgB,CAC3B,CACF,CAAC,CAACY,aAAa,CAAC;MACdb,eAAe,EAAE;IACnB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFR,EAAE,CAAC,6BAA6B,EAAE,MAAM;IACtC,MAAMC,KAAK,GAAG3B,MAAM,CAAC4B,YAAY,CAAC;MAChCC,EAAE,EAAE,kBAAkB;MACtBC,EAAE,EAAE;IACN,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAG/B,MAAM,CAACgC,MAAM,CAAC;MAC3BC,IAAI,EAAE;QACJC,eAAe,EAAE;UACfxB,OAAO,EAAE,QAAQ;UACjB,CAACiB,KAAK,CAACE,EAAE,GAAG,MAAM;UAClB,CAACF,KAAK,CAACG,EAAE,GAAG;QACd;MACF;IACF,CAAC,CAAC;IAEF,SAASK,IAAIA,CAAA,EAAG;MACd,MAAMC,EAAE,GAAGpC,MAAM,CAACqC,SAAS,CAAC,CAAC;MAC7B,oBAAOzC,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACvC,YAAA,CAAAwC,IAAI,EAAKH,EAAE,CAACI,KAAK,CAACT,MAAM,CAACE,IAAI,CAAI,CAAC;IAC5C;IAEA,IAAAS,yBAAc,EAAC;MAAEC,KAAK,EAAE;IAAI,CAAC,CAAC;IAC9BC,MAAM,CACJ,IAAAC,qBAAU,eACRjD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACtC,MAAM,CAAC8C,gBAAgB,qBACtBlD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACH,IAAI,MAAE,CACgB,CAC3B,CACF,CAAC,CAACY,aAAa,CAAC;MACdb,eAAe,EAAE;IACnB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFR,EAAE,CAAC,yBAAyB,EAAE,MAAM;IAClC,MAAMC,KAAK,GAAG3B,MAAM,CAAC4B,YAAY,CAAC;MAChCC,EAAE,EAAE,kBAAkB;MACtBC,EAAE,EAAE;IACN,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAG/B,MAAM,CAACgC,MAAM,CAAC;MAC3BC,IAAI,EAAE;QACJC,eAAe,EAAE;UACfxB,OAAO,EAAE,QAAQ;UACjB,CAACiB,KAAK,CAACE,EAAE,GAAG,MAAM;UAClB,CAACF,KAAK,CAACG,EAAE,GAAG;QACd;MACF;IACF,CAAC,CAAC;IAEF,SAASK,IAAIA,CAAA,EAAG;MACd,MAAMC,EAAE,GAAGpC,MAAM,CAACqC,SAAS,CAAC,CAAC;MAC7B,oBAAOzC,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACvC,YAAA,CAAAwC,IAAI,EAAKH,EAAE,CAACI,KAAK,CAACJ,EAAE,CAACK,GAAG,CAACV,MAAM,CAACE,IAAI,CAAC,CAAI,CAAC;IACpD;IAEA,IAAAS,yBAAc,EAAC;MAAEC,KAAK,EAAE;IAAI,CAAC,CAAC;IAC9BC,MAAM,CACJ,IAAAC,qBAAU,eACRjD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACtC,MAAM,CAAC8C,gBAAgB,qBACtBlD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACH,IAAI,MAAE,CACgB,CAC3B,CACF,CAAC,CAACY,aAAa,CAAC;MACdb,eAAe,EAAE;IACnB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFR,EAAE,CAAC,yBAAyB,EAAE,MAAM;IAClC,MAAMC,KAAK,GAAG3B,MAAM,CAAC4B,YAAY,CAAC;MAChCC,EAAE,EAAE,kBAAkB;MACtBC,EAAE,EAAE;IACN,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAG/B,MAAM,CAACgC,MAAM,CAAC;MAC3BC,IAAI,EAAE;QACJC,eAAe,EAAE;UACfxB,OAAO,EAAE,QAAQ;UACjB,CAACiB,KAAK,CAACE,EAAE,GAAG,MAAM;UAClB,CAACF,KAAK,CAACG,EAAE,GAAG;QACd;MACF;IACF,CAAC,CAAC;IAEF,SAASK,IAAIA,CAAA,EAAG;MACd,MAAMC,EAAE,GAAGpC,MAAM,CAACqC,SAAS,CAAC,CAAC;MAC7B,oBAAOzC,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACvC,YAAA,CAAAwC,IAAI,EAAKH,EAAE,CAACI,KAAK,CAACJ,EAAE,CAACK,GAAG,CAACV,MAAM,CAACE,IAAI,CAAC,CAAI,CAAC;IACpD;IAEA,IAAAS,yBAAc,EAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;IAC/BC,MAAM,CACJ,IAAAC,qBAAU,eACRjD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACtC,MAAM,CAAC8C,gBAAgB,qBACtBlD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACH,IAAI,MAAE,CACgB,CAC3B,CACF,CAAC,CAACY,aAAa,CAAC;MACdb,eAAe,EAAE;IACnB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFR,EAAE,CAAC,oDAAoD,EAAE,MAAM;IAC7D,MAAMC,KAAK,GAAG3B,MAAM,CAAC4B,YAAY,CAAC;MAChCC,EAAE,EAAE,2BAA2B;MAC/BC,EAAE,EAAE;IACN,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAG/B,MAAM,CAACgC,MAAM,CAAC;MAC3BC,IAAI,EAAE;QACJC,eAAe,EAAE;UACfxB,OAAO,EAAE,QAAQ;UACjB,CAACiB,KAAK,CAACE,EAAE,GAAG,MAAM;UAClB,CAACF,KAAK,CAACG,EAAE,GAAG;QACd;MACF;IACF,CAAC,CAAC;IAEF,SAASK,IAAIA,CAAA,EAAG;MACd,MAAMC,EAAE,GAAGpC,MAAM,CAACqC,SAAS,CAAC,CAAC;MAC7B,oBAAOzC,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACvC,YAAA,CAAAwC,IAAI,EAAKH,EAAE,CAACI,KAAK,CAACJ,EAAE,CAACK,GAAG,CAACV,MAAM,CAACE,IAAI,CAAC,CAAI,CAAC;IACpD;IAEA,IAAAS,yBAAc,EAAC;MAAEC,KAAK,EAAE;IAAI,CAAC,CAAC;IAC9BC,MAAM,CACJ,IAAAC,qBAAU,eACRjD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACtC,MAAM,CAAC8C,gBAAgB,qBACtBlD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACH,IAAI,MAAE,CACgB,CAC3B,CACF,CAAC,CAACY,aAAa,CAAC;MACdb,eAAe,EAAE;IACnB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFR,EAAE,CAAC,4DAA4D,EAAE,MAAM;IACrE,MAAMC,KAAK,GAAG3B,MAAM,CAAC4B,YAAY,CAAC;MAChCC,EAAE,EAAE,2BAA2B;MAC/BC,EAAE,EAAE;IACN,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAG/B,MAAM,CAACgC,MAAM,CAAC;MAC3BC,IAAI,EAAE;QACJC,eAAe,EAAE;UACfxB,OAAO,EAAE,QAAQ;UACjB,CAACiB,KAAK,CAACE,EAAE,GAAG,MAAM;UAClB,CAACF,KAAK,CAACG,EAAE,GAAG;QACd;MACF;IACF,CAAC,CAAC;IAEF,SAASK,IAAIA,CAAA,EAAG;MACd,MAAMC,EAAE,GAAGpC,MAAM,CAACqC,SAAS,CAAC,CAAC;MAC7B,oBAAOzC,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACvC,YAAA,CAAAwC,IAAI,EAAKH,EAAE,CAACI,KAAK,CAACJ,EAAE,CAACK,GAAG,CAACV,MAAM,CAACE,IAAI,CAAC,CAAI,CAAC;IACpD;IAEA,IAAAS,yBAAc,EAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;IAC/BC,MAAM,CACJ,IAAAC,qBAAU,eACRjD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACtC,MAAM,CAAC8C,gBAAgB,qBACtBlD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACH,IAAI,MAAE,CACgB,CAC3B,CACF,CAAC,CAACY,aAAa,CAAC;MACdb,eAAe,EAAE;IACnB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFR,EAAE,CAAC,uDAAuD,EAAE,MAAM;IAChE,MAAMC,KAAK,GAAG3B,MAAM,CAAC4B,YAAY,CAAC;MAChCC,EAAE,EAAE,kBAAkB;MACtBC,EAAE,EAAE;IACN,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAG/B,MAAM,CAACgC,MAAM,CAAC;MAC3BC,IAAI,EAAE;QACJC,eAAe,EAAE;UACfxB,OAAO,EAAE,QAAQ;UACjB,CAACiB,KAAK,CAACE,EAAE,GAAG,MAAM;UAClB,CAACF,KAAK,CAACG,EAAE,GAAG;QACd,CAAC;QACDa,KAAK,EAAE;UACLjC,OAAO,EAAE,GAAG;UACZ,CAACiB,KAAK,CAACE,EAAE,GAAG,GAAG;UACf,CAACF,KAAK,CAACG,EAAE,GAAG;QACd;MACF;IACF,CAAC,CAAC;IAEF,SAASK,IAAIA,CAAA,EAAG;MACd,MAAMC,EAAE,GAAGpC,MAAM,CAACqC,SAAS,CAAC,CAAC;MAC7B,oBAAOzC,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACvC,YAAA,CAAAwC,IAAI,EAAKH,EAAE,CAACI,KAAK,CAACJ,EAAE,CAACK,GAAG,CAACV,MAAM,CAACE,IAAI,CAAC,CAAI,CAAC;IACpD;IAEA,IAAAS,yBAAc,EAAC;MAAEC,KAAK,EAAE;IAAI,CAAC,CAAC;IAC9BC,MAAM,CACJ,IAAAC,qBAAU,eACRjD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACtC,MAAM,CAAC8C,gBAAgB,qBACtBlD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACH,IAAI,MAAE,CACgB,CAC3B,CACF,CAAC,CAACY,aAAa,CAAC;MACdb,eAAe,EAAE,MAAM;MACvBS,KAAK,EAAE;IACT,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFjB,EAAE,CAAC,+DAA+D,EAAE,MAAM;IACxE,MAAMC,KAAK,GAAG3B,MAAM,CAAC4B,YAAY,CAAC;MAChCC,EAAE,EAAE;IACN,CAAC,CAAC;IAEF,MAAME,MAAM,GAAG/B,MAAM,CAACgC,MAAM,CAAC;MAC3BgB,IAAI,EAAE;QACJd,eAAe,EAAE;UACfxB,OAAO,EAAE;QACX,CAAC;QACDuC,MAAM,EAAE;MACV,CAAC;MACDC,QAAQ,EAAE;QACRhB,eAAe,EAAE;UACf,CAACP,KAAK,CAACE,EAAE,GAAG;QACd;MACF;IACF,CAAC,CAAC;IAEF,SAASM,IAAIA,CAAA,EAAG;MACd,MAAMC,EAAE,GAAGpC,MAAM,CAACqC,SAAS,CAAC,CAAC;MAC7B,oBACEzC,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACvC,YAAA,CAAAwC,IAAI,EAAKH,EAAE,CAACI,KAAK,CAACJ,EAAE,CAACK,GAAG,CAACV,MAAM,CAACiB,IAAI,CAAC,EAAEZ,EAAE,CAACK,GAAG,CAACV,MAAM,CAACmB,QAAQ,CAAC,CAAI,CAAC;IAExE;IAEA,IAAAR,yBAAc,EAAC;MAAEC,KAAK,EAAE;IAAI,CAAC,CAAC;IAC9BC,MAAM,CACJ,IAAAC,qBAAU,eACRjD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACtC,MAAM,CAAC8C,gBAAgB,qBACtBlD,MAAA,CAAAc,OAAA,CAAA4B,aAAA,CAACH,IAAI,MAAE,CACgB,CAC3B,CACF,CAAC,CAACY,aAAa,CAAC;MACdb,eAAe,EAAE,QAAQ;MACzBe,MAAM,EAAE;IACV,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+ var _reactNative = require("react-native");
5
+ var _testUtils = require("./test-utils");
6
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
+ 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); }
8
+ 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; }
9
+ jest.mock('../utils/media', () => {
10
+ const originalModule = jest.requireActual('../utils/media');
11
+ return {
12
+ ...originalModule,
13
+ media: jest.fn(originalModule.media)
14
+ };
15
+ });
16
+ it('preset media effectively key access', async () => {
17
+ const mediaUtils = await Promise.resolve().then(() => _interopRequireWildcard(require('../utils/media')));
18
+ const stylex = await Promise.resolve().then(() => _interopRequireWildcard(require('../')));
19
+ const mocked = jest.mocked(mediaUtils.media);
20
+ const mediaVal = stylex.defineConsts({
21
+ md: '(width >= 750px)',
22
+ lg: '(width >= 1080px)'
23
+ });
24
+ const styles = stylex.create({
25
+ view: {
26
+ backgroundColor: {
27
+ default: 'yellow',
28
+ [mediaVal.md]: 'blue',
29
+ [mediaVal.lg]: 'green'
30
+ },
31
+ width: {
32
+ default: 100,
33
+ [mediaVal.md]: 200,
34
+ [mediaVal.lg]: 300
35
+ }
36
+ }
37
+ });
38
+ (0, _testUtils.mockDimensions)({
39
+ width: 750
40
+ });
41
+ function Comp() {
42
+ const sx = stylex.useStylex();
43
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, sx.props(styles.view));
44
+ }
45
+ expect((0, _testUtils.finalStyle)(/*#__PURE__*/_react.default.createElement(stylex.RNStyleXProvider, {
46
+ media: mediaVal
47
+ }, /*#__PURE__*/_react.default.createElement(Comp, null)))).toMatchObject({
48
+ backgroundColor: 'blue',
49
+ width: 200
50
+ });
51
+ expect(jest.isMockFunction(mocked)).toBe(true);
52
+ expect(mocked.mock.calls[0][1]).toBe(mediaVal.md);
53
+ });
54
+ //# sourceMappingURL=mock.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_testUtils","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interopRequireWildcard","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","jest","mock","originalModule","requireActual","media","fn","it","mediaUtils","Promise","resolve","then","stylex","mocked","mediaVal","defineConsts","md","lg","styles","create","view","backgroundColor","width","mockDimensions","Comp","sx","useStylex","createElement","View","props","expect","finalStyle","RNStyleXProvider","toMatchObject","isMockFunction","toBe","calls"],"sources":["mock.test.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { mockDimensions, finalStyle } from './test-utils';\n\njest.mock('../utils/media', () => {\n const originalModule = jest.requireActual('../utils/media');\n\n return {\n ...originalModule,\n media: jest.fn(originalModule.media),\n };\n});\n\nit('preset media effectively key access', async () => {\n const mediaUtils = await import( '../utils/media');\n const stylex = await import( '../');\n\n const mocked = jest.mocked(mediaUtils.media);\n\n const mediaVal = stylex.defineConsts({\n md: '(width >= 750px)',\n lg: '(width >= 1080px)',\n });\n\n const styles = stylex.create({\n view: {\n backgroundColor: {\n default: 'yellow',\n [mediaVal.md]: 'blue',\n [mediaVal.lg]: 'green',\n },\n width: {\n default: 100,\n [mediaVal.md]: 200,\n [mediaVal.lg]: 300,\n },\n },\n });\n\n mockDimensions({ width: 750 });\n\n function Comp() {\n const sx = stylex.useStylex();\n return <View {...sx.props(styles.view)} />;\n }\n\n expect(\n finalStyle(\n <stylex.RNStyleXProvider media={mediaVal}>\n <Comp />\n </stylex.RNStyleXProvider>\n )\n ).toMatchObject({\n backgroundColor: 'blue',\n width: 200,\n });\n\n expect(jest.isMockFunction(mocked)).toBe(true);\n expect(mocked.mock.calls[0][1]).toBe(mediaVal.md);\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.finalStyle = finalStyle;
7
+ exports.mockDimensions = mockDimensions;
8
+ exports.reduceStyles = reduceStyles;
9
+ var _reactNative = require("@testing-library/react-native");
10
+ const aspectRatio = 19.5 / 9; // iPhone 14
11
+
12
+ function mockDimensions(_ref) {
13
+ let {
14
+ width = 750,
15
+ height = width * aspectRatio,
16
+ pixelRatio = 1
17
+ } = _ref;
18
+ jest.resetModules();
19
+ jest.doMock('react-native/Libraries/Utilities/useWindowDimensions', () => ({
20
+ __esModule: true,
21
+ default: jest.fn().mockReturnValue({
22
+ width,
23
+ height
24
+ })
25
+ }));
26
+ // The react-native index.js exports PixelRatio via a lazy getter:
27
+ // get PixelRatio() { return require('./Libraries/Utilities/PixelRatio').default }
28
+ // so the mock must be wrapped under `default`.
29
+ jest.doMock('react-native/Libraries/Utilities/PixelRatio', () => ({
30
+ __esModule: true,
31
+ default: {
32
+ get: () => pixelRatio,
33
+ getFontScale: () => 1,
34
+ getPixelSizeForLayoutSize: layoutSize => layoutSize * pixelRatio,
35
+ roundToNearestPixel: layoutSize => Math.round(layoutSize * pixelRatio) / pixelRatio
36
+ }
37
+ }));
38
+ jest.doMock('react-native/Libraries/Utilities/Dimensions', () => ({
39
+ __esModule: true,
40
+ default: {
41
+ get: jest.fn().mockReturnValue({
42
+ width,
43
+ height
44
+ }),
45
+ addEventListener: jest.fn(),
46
+ removeEventListener: jest.fn()
47
+ }
48
+ }));
49
+ }
50
+ function reduceStyles(s) {
51
+ return s.reduce((s1, s2) => ({
52
+ ...s1,
53
+ ...s2
54
+ }), {});
55
+ }
56
+ function finalStyle(Component) {
57
+ var _render$toJSON;
58
+ return reduceStyles((_render$toJSON = (0, _reactNative.render)(Component).toJSON()) === null || _render$toJSON === void 0 ? void 0 : _render$toJSON.props.style);
59
+ }
60
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","aspectRatio","mockDimensions","_ref","width","height","pixelRatio","jest","resetModules","doMock","__esModule","default","fn","mockReturnValue","get","getFontScale","getPixelSizeForLayoutSize","layoutSize","roundToNearestPixel","Math","round","addEventListener","removeEventListener","reduceStyles","s","reduce","s1","s2","finalStyle","Component","_render$toJSON","render","toJSON","props","style"],"sources":["test-utils.tsx"],"sourcesContent":["import { render } from '@testing-library/react-native';\n\nconst aspectRatio = 19.5 / 9; // iPhone 14\n\nexport function mockDimensions({\n width = 750,\n height = width * aspectRatio,\n pixelRatio = 1,\n}: {\n width?: number;\n height?: number;\n pixelRatio?: number;\n}) {\n jest.resetModules();\n jest.doMock('react-native/Libraries/Utilities/useWindowDimensions', () => ({\n __esModule: true,\n default: jest.fn().mockReturnValue({ width, height }),\n }));\n // The react-native index.js exports PixelRatio via a lazy getter:\n // get PixelRatio() { return require('./Libraries/Utilities/PixelRatio').default }\n // so the mock must be wrapped under `default`.\n jest.doMock('react-native/Libraries/Utilities/PixelRatio', () => ({\n __esModule: true,\n default: {\n get: () => pixelRatio,\n getFontScale: () => 1,\n getPixelSizeForLayoutSize: (layoutSize: number) =>\n layoutSize * pixelRatio,\n roundToNearestPixel: (layoutSize: number) =>\n Math.round(layoutSize * pixelRatio) / pixelRatio,\n },\n }));\n jest.doMock('react-native/Libraries/Utilities/Dimensions', () => ({\n __esModule: true,\n default: {\n get: jest.fn().mockReturnValue({ width, height }),\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n },\n }));\n}\n\nexport function reduceStyles(s: any) {\n return s.reduce((s1: any, s2: any) => ({ ...s1, ...s2 }), {});\n}\n\nexport function finalStyle(Component: React.ReactElement) {\n return reduceStyles(\n render(\n Component\n ).toJSON()?.props.style\n );\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;;AAEvB,SAASC,cAAcA,CAAAC,IAAA,EAQ3B;EAAA,IAR4B;IAC7BC,KAAK,GAAG,GAAG;IACXC,MAAM,GAAGD,KAAK,GAAGH,WAAW;IAC5BK,UAAU,GAAG;EAKf,CAAC,GAAAH,IAAA;EACCI,IAAI,CAACC,YAAY,CAAC,CAAC;EACnBD,IAAI,CAACE,MAAM,CAAC,sDAAsD,EAAE,OAAO;IACzEC,UAAU,EAAE,IAAI;IAChBC,OAAO,EAAEJ,IAAI,CAACK,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC;MAAET,KAAK;MAAEC;IAAO,CAAC;EACtD,CAAC,CAAC,CAAC;EACH;EACA;EACA;EACAE,IAAI,CAACE,MAAM,CAAC,6CAA6C,EAAE,OAAO;IAChEC,UAAU,EAAE,IAAI;IAChBC,OAAO,EAAE;MACPG,GAAG,EAAEA,CAAA,KAAMR,UAAU;MACrBS,YAAY,EAAEA,CAAA,KAAM,CAAC;MACrBC,yBAAyB,EAAGC,UAAkB,IAC5CA,UAAU,GAAGX,UAAU;MACzBY,mBAAmB,EAAGD,UAAkB,IACtCE,IAAI,CAACC,KAAK,CAACH,UAAU,GAAGX,UAAU,CAAC,GAAGA;IAC1C;EACF,CAAC,CAAC,CAAC;EACHC,IAAI,CAACE,MAAM,CAAC,6CAA6C,EAAE,OAAO;IAChEC,UAAU,EAAE,IAAI;IAChBC,OAAO,EAAE;MACPG,GAAG,EAAEP,IAAI,CAACK,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC;QAAET,KAAK;QAAEC;MAAO,CAAC,CAAC;MACjDgB,gBAAgB,EAAEd,IAAI,CAACK,EAAE,CAAC,CAAC;MAC3BU,mBAAmB,EAAEf,IAAI,CAACK,EAAE,CAAC;IAC/B;EACF,CAAC,CAAC,CAAC;AACL;AAEO,SAASW,YAAYA,CAACC,CAAM,EAAE;EACnC,OAAOA,CAAC,CAACC,MAAM,CAAC,CAACC,EAAO,EAAEC,EAAO,MAAM;IAAE,GAAGD,EAAE;IAAE,GAAGC;EAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D;AAEO,SAASC,UAAUA,CAACC,SAA6B,EAAE;EAAA,IAAAC,cAAA;EACxD,OAAOP,YAAY,EAAAO,cAAA,GACjB,IAAAC,mBAAM,EACJF,SACF,CAAC,CAACG,MAAM,CAAC,CAAC,cAAAF,cAAA,uBAFVA,cAAA,CAEYG,KAAK,CAACC,KACpB,CAAC;AACH","ignoreList":[]}