react-native-unistyles 1.0.0-beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +243 -0
  3. package/lib/commonjs/UnistylesTheme.js +21 -0
  4. package/lib/commonjs/UnistylesTheme.js.map +1 -0
  5. package/lib/commonjs/createUnistyles.js +52 -0
  6. package/lib/commonjs/createUnistyles.js.map +1 -0
  7. package/lib/commonjs/index.js +20 -0
  8. package/lib/commonjs/index.js.map +1 -0
  9. package/lib/commonjs/types.js +6 -0
  10. package/lib/commonjs/types.js.map +1 -0
  11. package/lib/commonjs/utils/breakpoints.js +139 -0
  12. package/lib/commonjs/utils/breakpoints.js.map +1 -0
  13. package/lib/commonjs/utils/breakpoints.spec.js +149 -0
  14. package/lib/commonjs/utils/breakpoints.spec.js.map +1 -0
  15. package/lib/commonjs/utils/common.js +11 -0
  16. package/lib/commonjs/utils/common.js.map +1 -0
  17. package/lib/commonjs/utils/index.js +32 -0
  18. package/lib/commonjs/utils/index.js.map +1 -0
  19. package/lib/commonjs/utils/mediaQueries.js +189 -0
  20. package/lib/commonjs/utils/mediaQueries.js.map +1 -0
  21. package/lib/commonjs/utils/mediaQueries.spec.js +220 -0
  22. package/lib/commonjs/utils/mediaQueries.spec.js.map +1 -0
  23. package/lib/commonjs/utils/styles.js +82 -0
  24. package/lib/commonjs/utils/styles.js.map +1 -0
  25. package/lib/commonjs/utils/styles.spec.js +98 -0
  26. package/lib/commonjs/utils/styles.spec.js.map +1 -0
  27. package/lib/module/UnistylesTheme.js +12 -0
  28. package/lib/module/UnistylesTheme.js.map +1 -0
  29. package/lib/module/createUnistyles.js +45 -0
  30. package/lib/module/createUnistyles.js.map +1 -0
  31. package/lib/module/index.js +3 -0
  32. package/lib/module/index.js.map +1 -0
  33. package/lib/module/types.js +2 -0
  34. package/lib/module/types.js.map +1 -0
  35. package/lib/module/utils/breakpoints.js +131 -0
  36. package/lib/module/utils/breakpoints.js.map +1 -0
  37. package/lib/module/utils/breakpoints.spec.js +147 -0
  38. package/lib/module/utils/breakpoints.spec.js.map +1 -0
  39. package/lib/module/utils/common.js +4 -0
  40. package/lib/module/utils/common.js.map +1 -0
  41. package/lib/module/utils/index.js +3 -0
  42. package/lib/module/utils/index.js.map +1 -0
  43. package/lib/module/utils/mediaQueries.js +176 -0
  44. package/lib/module/utils/mediaQueries.js.map +1 -0
  45. package/lib/module/utils/mediaQueries.spec.js +218 -0
  46. package/lib/module/utils/mediaQueries.spec.js.map +1 -0
  47. package/lib/module/utils/styles.js +75 -0
  48. package/lib/module/utils/styles.js.map +1 -0
  49. package/lib/module/utils/styles.spec.js +96 -0
  50. package/lib/module/utils/styles.spec.js.map +1 -0
  51. package/lib/typescript/src/UnistylesTheme.d.ts +9 -0
  52. package/lib/typescript/src/UnistylesTheme.d.ts.map +1 -0
  53. package/lib/typescript/src/createUnistyles.d.ts +9 -0
  54. package/lib/typescript/src/createUnistyles.d.ts.map +1 -0
  55. package/lib/typescript/src/index.d.ts +3 -0
  56. package/lib/typescript/src/index.d.ts.map +1 -0
  57. package/lib/typescript/src/types.d.ts +27 -0
  58. package/lib/typescript/src/types.d.ts.map +1 -0
  59. package/lib/typescript/src/utils/breakpoints.d.ts +63 -0
  60. package/lib/typescript/src/utils/breakpoints.d.ts.map +1 -0
  61. package/lib/typescript/src/utils/breakpoints.spec.d.ts +2 -0
  62. package/lib/typescript/src/utils/breakpoints.spec.d.ts.map +1 -0
  63. package/lib/typescript/src/utils/common.d.ts +2 -0
  64. package/lib/typescript/src/utils/common.d.ts.map +1 -0
  65. package/lib/typescript/src/utils/index.d.ts +3 -0
  66. package/lib/typescript/src/utils/index.d.ts.map +1 -0
  67. package/lib/typescript/src/utils/mediaQueries.d.ts +130 -0
  68. package/lib/typescript/src/utils/mediaQueries.d.ts.map +1 -0
  69. package/lib/typescript/src/utils/mediaQueries.spec.d.ts +2 -0
  70. package/lib/typescript/src/utils/mediaQueries.spec.d.ts.map +1 -0
  71. package/lib/typescript/src/utils/styles.d.ts +56 -0
  72. package/lib/typescript/src/utils/styles.d.ts.map +1 -0
  73. package/lib/typescript/src/utils/styles.spec.d.ts +2 -0
  74. package/lib/typescript/src/utils/styles.spec.d.ts.map +1 -0
  75. package/package.json +132 -0
  76. package/src/UnistylesTheme.tsx +17 -0
  77. package/src/createUnistyles.ts +56 -0
  78. package/src/index.ts +2 -0
  79. package/src/types.ts +52 -0
  80. package/src/utils/breakpoints.ts +140 -0
  81. package/src/utils/common.ts +3 -0
  82. package/src/utils/index.ts +2 -0
  83. package/src/utils/mediaQueries.ts +201 -0
  84. package/src/utils/styles.ts +95 -0
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ var _breakpoints = require("./breakpoints");
4
+ describe('breakpoints', () => {
5
+ describe('sortAndValidateBreakpoints', () => {
6
+ it('should throw error for empty breakpoints', () => {
7
+ const breakpoints = {};
8
+ expect(() => (0, _breakpoints.sortAndValidateBreakpoints)(breakpoints)).toThrow();
9
+ });
10
+ it('should throw error for breakpoints that don\'t start with 0', () => {
11
+ const breakpoints = {
12
+ sm: -1
13
+ };
14
+ expect(() => (0, _breakpoints.sortAndValidateBreakpoints)(breakpoints)).toThrow();
15
+ });
16
+ it('should return same order for sorted elements', () => {
17
+ const breakpoints = {
18
+ sm: 0,
19
+ md: 200,
20
+ lg: 300,
21
+ xl: 500
22
+ };
23
+ expect((0, _breakpoints.sortAndValidateBreakpoints)(breakpoints)).toEqual(breakpoints);
24
+ });
25
+ it('should sort the order of breakpoints', () => {
26
+ const breakpoints = {
27
+ md: 200,
28
+ sm: 0,
29
+ lg: 300,
30
+ xl: 500
31
+ };
32
+ expect((0, _breakpoints.sortAndValidateBreakpoints)(breakpoints)).toEqual({
33
+ sm: 0,
34
+ md: 200,
35
+ lg: 300,
36
+ xl: 500
37
+ });
38
+ });
39
+ it('should throw errors for duplicated values', () => {
40
+ const breakpoints = {
41
+ md: 200,
42
+ sm: 0,
43
+ lg: 300,
44
+ xl: 300
45
+ };
46
+ expect(() => (0, _breakpoints.sortAndValidateBreakpoints)(breakpoints)).toThrow();
47
+ });
48
+ });
49
+ describe('getBreakpointFromScreenWidth', () => {
50
+ it('should return correct breakpoints based on screen width', () => {
51
+ const breakpoints = {
52
+ xs: 0,
53
+ sm: 300,
54
+ md: 500,
55
+ xl: 1200
56
+ };
57
+ expect((0, _breakpoints.getBreakpointFromScreenWidth)(0, breakpoints)).toEqual('xs');
58
+ expect((0, _breakpoints.getBreakpointFromScreenWidth)(20, breakpoints)).toEqual('xs');
59
+ expect((0, _breakpoints.getBreakpointFromScreenWidth)(100, breakpoints)).toEqual('xs');
60
+ expect((0, _breakpoints.getBreakpointFromScreenWidth)(101, breakpoints)).toEqual('xs');
61
+ expect((0, _breakpoints.getBreakpointFromScreenWidth)(250, breakpoints)).toEqual('xs');
62
+ expect((0, _breakpoints.getBreakpointFromScreenWidth)(300, breakpoints)).toEqual('sm');
63
+ expect((0, _breakpoints.getBreakpointFromScreenWidth)(499, breakpoints)).toEqual('sm');
64
+ expect((0, _breakpoints.getBreakpointFromScreenWidth)(500, breakpoints)).toEqual('md');
65
+ expect((0, _breakpoints.getBreakpointFromScreenWidth)(799, breakpoints)).toEqual('md');
66
+ expect((0, _breakpoints.getBreakpointFromScreenWidth)(1200, breakpoints)).toEqual('xl');
67
+ expect((0, _breakpoints.getBreakpointFromScreenWidth)(2000, breakpoints)).toEqual('xl');
68
+ });
69
+ });
70
+ describe('getValueForBreakpoint', () => {
71
+ it('should prioritize custom media query', () => {
72
+ const breakpoint = 'sm';
73
+ const breakpoints = {
74
+ xs: 0,
75
+ sm: 200,
76
+ md: 500
77
+ };
78
+ const style = {
79
+ ':w[, 200]': 'green',
80
+ ':w[201]': 'orange',
81
+ sm: 'pink'
82
+ };
83
+ const screenSize = {
84
+ width: 200,
85
+ height: 800
86
+ };
87
+ expect((0, _breakpoints.getValueForBreakpoint)(style, breakpoint, screenSize, breakpoints)).toEqual('green');
88
+ });
89
+ });
90
+ it('should match breakpoint if media query doesnt exist', () => {
91
+ const breakpoint = 'md';
92
+ const breakpoints = {
93
+ xs: 0,
94
+ sm: 200,
95
+ md: 500
96
+ };
97
+ const style = {
98
+ ':w[, 200]': 'green',
99
+ ':w[201, 499]': 'orange',
100
+ sm: 'pink',
101
+ md: 'red'
102
+ };
103
+ const screenSize = {
104
+ width: 500,
105
+ height: 1200
106
+ };
107
+ expect((0, _breakpoints.getValueForBreakpoint)(style, breakpoint, screenSize, breakpoints)).toEqual('red');
108
+ });
109
+ it('should match breakpoint even if value is undefined', () => {
110
+ const breakpoint = 'md';
111
+ const breakpoints = {
112
+ xs: 0,
113
+ sm: 200,
114
+ md: 500
115
+ };
116
+ const style = {
117
+ ':w[, 200]': 'green',
118
+ ':w[201, 499]': 'orange',
119
+ sm: 'pink',
120
+ md: undefined
121
+ };
122
+ const screenSize = {
123
+ width: 500,
124
+ height: 1200
125
+ };
126
+ expect((0, _breakpoints.getValueForBreakpoint)(style, breakpoint, screenSize, breakpoints)).toEqual(undefined);
127
+ });
128
+ it('should match lower breakpoint to match css cascading', () => {
129
+ const breakpoint = 'xl';
130
+ const breakpoints = {
131
+ xs: 0,
132
+ sm: 200,
133
+ md: 500,
134
+ xl: 600
135
+ };
136
+ const style = {
137
+ ':w[, 200]': 'green',
138
+ ':w[201, 499]': 'orange',
139
+ sm: 'pink',
140
+ md: 'red'
141
+ };
142
+ const screenSize = {
143
+ width: 500,
144
+ height: 1200
145
+ };
146
+ expect((0, _breakpoints.getValueForBreakpoint)(style, breakpoint, screenSize, breakpoints)).toEqual('red');
147
+ });
148
+ });
149
+ //# sourceMappingURL=breakpoints.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_breakpoints","require","describe","it","breakpoints","expect","sortAndValidateBreakpoints","toThrow","sm","md","lg","xl","toEqual","xs","getBreakpointFromScreenWidth","breakpoint","style","screenSize","width","height","getValueForBreakpoint","undefined"],"sourceRoot":"../../../src","sources":["utils/breakpoints.spec.ts"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGAC,QAAQ,CAAC,aAAa,EAAE,MAAM;EAC1BA,QAAQ,CAAC,4BAA4B,EAAE,MAAM;IACzCC,EAAE,CAAC,0CAA0C,EAAE,MAAM;MACjD,MAAMC,WAAW,GAAG,CAAC,CAAC;MAEtBC,MAAM,CAAC,MAAM,IAAAC,uCAA0B,EAACF,WAAW,CAAC,CAAC,CAACG,OAAO,CAAC,CAAC;IACnE,CAAC,CAAC;IAEFJ,EAAE,CAAC,6DAA6D,EAAE,MAAM;MACpE,MAAMC,WAAW,GAAG;QAChBI,EAAE,EAAE,CAAC;MACT,CAAC;MAEDH,MAAM,CAAC,MAAM,IAAAC,uCAA0B,EAACF,WAAW,CAAC,CAAC,CAACG,OAAO,CAAC,CAAC;IACnE,CAAC,CAAC;IAEFJ,EAAE,CAAC,8CAA8C,EAAE,MAAM;MACrD,MAAMC,WAAW,GAAG;QAChBI,EAAE,EAAE,CAAC;QACLC,EAAE,EAAE,GAAG;QACPC,EAAE,EAAE,GAAG;QACPC,EAAE,EAAE;MACR,CAAC;MAEDN,MAAM,CAAC,IAAAC,uCAA0B,EAACF,WAAW,CAAC,CAAC,CAACQ,OAAO,CAACR,WAAW,CAAC;IACxE,CAAC,CAAC;IAEFD,EAAE,CAAC,sCAAsC,EAAE,MAAM;MAC7C,MAAMC,WAAW,GAAG;QAChBK,EAAE,EAAE,GAAG;QACPD,EAAE,EAAE,CAAC;QACLE,EAAE,EAAE,GAAG;QACPC,EAAE,EAAE;MACR,CAAC;MAEDN,MAAM,CAAC,IAAAC,uCAA0B,EAACF,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC;QACpDJ,EAAE,EAAE,CAAC;QACLC,EAAE,EAAE,GAAG;QACPC,EAAE,EAAE,GAAG;QACPC,EAAE,EAAE;MACR,CAAC,CAAC;IACN,CAAC,CAAC;IAEFR,EAAE,CAAC,2CAA2C,EAAE,MAAM;MAClD,MAAMC,WAAW,GAAG;QAChBK,EAAE,EAAE,GAAG;QACPD,EAAE,EAAE,CAAC;QACLE,EAAE,EAAE,GAAG;QACPC,EAAE,EAAE;MACR,CAAC;MAEDN,MAAM,CAAC,MAAM,IAAAC,uCAA0B,EAACF,WAAW,CAAC,CAAC,CAACG,OAAO,CAAC,CAAC;IACnE,CAAC,CAAC;EACN,CAAC,CAAC;EAEFL,QAAQ,CAAC,8BAA8B,EAAE,MAAM;IAC3CC,EAAE,CAAC,yDAAyD,EAAE,MAAM;MAChE,MAAMC,WAAW,GAAG;QAChBS,EAAE,EAAE,CAAC;QACLL,EAAE,EAAE,GAAG;QACPC,EAAE,EAAE,GAAG;QACPE,EAAE,EAAE;MACR,CAAC;MAEDN,MAAM,CAAC,IAAAS,yCAA4B,EAAC,CAAC,EAAEV,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,IAAI,CAAC;MAClEP,MAAM,CAAC,IAAAS,yCAA4B,EAAC,EAAE,EAAEV,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,IAAI,CAAC;MACnEP,MAAM,CAAC,IAAAS,yCAA4B,EAAC,GAAG,EAAEV,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,IAAI,CAAC;MACpEP,MAAM,CAAC,IAAAS,yCAA4B,EAAC,GAAG,EAAEV,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,IAAI,CAAC;MACpEP,MAAM,CAAC,IAAAS,yCAA4B,EAAC,GAAG,EAAEV,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,IAAI,CAAC;MACpEP,MAAM,CAAC,IAAAS,yCAA4B,EAAC,GAAG,EAAEV,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,IAAI,CAAC;MACpEP,MAAM,CAAC,IAAAS,yCAA4B,EAAC,GAAG,EAAEV,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,IAAI,CAAC;MACpEP,MAAM,CAAC,IAAAS,yCAA4B,EAAC,GAAG,EAAEV,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,IAAI,CAAC;MACpEP,MAAM,CAAC,IAAAS,yCAA4B,EAAC,GAAG,EAAEV,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,IAAI,CAAC;MACpEP,MAAM,CAAC,IAAAS,yCAA4B,EAAC,IAAI,EAAEV,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,IAAI,CAAC;MACrEP,MAAM,CAAC,IAAAS,yCAA4B,EAAC,IAAI,EAAEV,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,IAAI,CAAC;IACzE,CAAC,CAAC;EACN,CAAC,CAAC;EAEFV,QAAQ,CAAC,uBAAuB,EAAE,MAAM;IACpCC,EAAE,CAAC,sCAAsC,EAAE,MAAM;MAC7C,MAAMY,UAAU,GAAG,IAAI;MACvB,MAAMX,WAAW,GAAG;QAChBS,EAAE,EAAE,CAAC;QACLL,EAAE,EAAE,GAAG;QACPC,EAAE,EAAE;MACR,CAAC;MACD,MAAMO,KAA6B,GAAG;QAClC,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,QAAQ;QACnBR,EAAE,EAAE;MACR,CAAC;MACD,MAAMS,UAAsB,GAAG;QAC3BC,KAAK,EAAE,GAAG;QACVC,MAAM,EAAE;MACZ,CAAC;MAEDd,MAAM,CAAC,IAAAe,kCAAqB,EAACJ,KAAK,EAAED,UAAU,EAAEE,UAAU,EAAEb,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,OAAO,CAAC;IAC9F,CAAC,CAAC;EACN,CAAC,CAAC;EAEFT,EAAE,CAAC,qDAAqD,EAAE,MAAM;IAC5D,MAAMY,UAAU,GAAG,IAAI;IACvB,MAAMX,WAAW,GAAG;MAChBS,EAAE,EAAE,CAAC;MACLL,EAAE,EAAE,GAAG;MACPC,EAAE,EAAE;IACR,CAAC;IACD,MAAMO,KAA6B,GAAG;MAClC,WAAW,EAAE,OAAO;MACpB,cAAc,EAAE,QAAQ;MACxBR,EAAE,EAAE,MAAM;MACVC,EAAE,EAAE;IACR,CAAC;IACD,MAAMQ,UAAsB,GAAG;MAC3BC,KAAK,EAAE,GAAG;MACVC,MAAM,EAAE;IACZ,CAAC;IAEDd,MAAM,CAAC,IAAAe,kCAAqB,EAACJ,KAAK,EAAED,UAAU,EAAEE,UAAU,EAAEb,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,KAAK,CAAC;EAC5F,CAAC,CAAC;EAEFT,EAAE,CAAC,oDAAoD,EAAE,MAAM;IAC3D,MAAMY,UAAU,GAAG,IAAI;IACvB,MAAMX,WAAW,GAAG;MAChBS,EAAE,EAAE,CAAC;MACLL,EAAE,EAAE,GAAG;MACPC,EAAE,EAAE;IACR,CAAC;IACD,MAAMO,KAAyC,GAAG;MAC9C,WAAW,EAAE,OAAO;MACpB,cAAc,EAAE,QAAQ;MACxBR,EAAE,EAAE,MAAM;MACVC,EAAE,EAAEY;IACR,CAAC;IACD,MAAMJ,UAAsB,GAAG;MAC3BC,KAAK,EAAE,GAAG;MACVC,MAAM,EAAE;IACZ,CAAC;IAEDd,MAAM,CAAC,IAAAe,kCAAqB,EAACJ,KAAK,EAAED,UAAU,EAAEE,UAAU,EAAEb,WAAW,CAAC,CAAC,CAACQ,OAAO,CAACS,SAAS,CAAC;EAChG,CAAC,CAAC;EAEFlB,EAAE,CAAC,sDAAsD,EAAE,MAAM;IAC7D,MAAMY,UAAU,GAAG,IAAI;IACvB,MAAMX,WAAW,GAAG;MAChBS,EAAE,EAAE,CAAC;MACLL,EAAE,EAAE,GAAG;MACPC,EAAE,EAAE,GAAG;MACPE,EAAE,EAAE;IACR,CAAC;IACD,MAAMK,KAAyC,GAAG;MAC9C,WAAW,EAAE,OAAO;MACpB,cAAc,EAAE,QAAQ;MACxBR,EAAE,EAAE,MAAM;MACVC,EAAE,EAAE;IACR,CAAC;IACD,MAAMQ,UAAsB,GAAG;MAC3BC,KAAK,EAAE,GAAG;MACVC,MAAM,EAAE;IACZ,CAAC;IAEDd,MAAM,CAAC,IAAAe,kCAAqB,EAACJ,KAAK,EAAED,UAAU,EAAEE,UAAU,EAAEb,WAAW,CAAC,CAAC,CAACQ,OAAO,CAAC,KAAK,CAAC;EAC5F,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.throwError = void 0;
7
+ const throwError = message => {
8
+ throw new Error(`🦄 [react-native-unistyles]: ${message}`);
9
+ };
10
+ exports.throwError = throwError;
11
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["throwError","message","Error","exports"],"sourceRoot":"../../../src","sources":["utils/common.ts"],"mappings":";;;;;;AAAO,MAAMA,UAAU,GAAIC,OAAe,IAAK;EAC3C,MAAM,IAAIC,KAAK,CAAE,gCAA+BD,OAAQ,EAAC,CAAC;AAC9D,CAAC;AAAAE,OAAA,CAAAH,UAAA,GAAAA,UAAA"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "getBreakpointFromScreenWidth", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _breakpoints.getBreakpointFromScreenWidth;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "parseStyle", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _styles.parseStyle;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "proxifyFunction", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _styles.proxifyFunction;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "sortAndValidateBreakpoints", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _breakpoints.sortAndValidateBreakpoints;
28
+ }
29
+ });
30
+ var _breakpoints = require("./breakpoints");
31
+ var _styles = require("./styles");
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_breakpoints","require","_styles"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isWithinTheWidthAndHeight = exports.isWithinTheWidth = exports.isWithinTheHeight = exports.isWithinBreakpoint = exports.isMediaQuery = exports.getKeyForCustomMediaQuery = exports.extractValues = void 0;
7
+ /**
8
+ * Extracts numeric values from a coded string.
9
+ *
10
+ * The function is designed to process strings that have a format like "w[100,200]" or "h[300]".
11
+ * It removes characters 'w', 'h', '[', and ']' from the input string and then extracts the numbers.
12
+ *
13
+ * @param {string} codedValue - The input string to extract values from.
14
+ * @returns {Array<number>} An array of extracted numbers. Can contain one or two numbers based on the input format.
15
+ *
16
+ * @example
17
+ * extractValues("w[100,200]") // returns [100, 200]
18
+ * extractValues("h[300]") // returns [300]
19
+ * extractValues("h[,300]") // returns [0,300]
20
+ * extractValues("h[100,]") // returns [100]
21
+ */
22
+ const extractValues = codedValue => {
23
+ const [lh, rh] = codedValue.replace(/[wh[\]]/g, '').split(',');
24
+ return rh ? [Number(lh), Number(rh)] : [Number(lh)];
25
+ };
26
+
27
+ /**
28
+ * Determines if the given screen size matches the specified breakpoint query.
29
+ *
30
+ * The function checks if the screen size (width and/or height) falls within the range
31
+ * specified by the breakpoint query. The query can specify width (using 'w'), height (using 'h'),
32
+ * or both.
33
+ *
34
+ * @param {string} query - The breakpoint query string. Examples: 'w[100,200]', 'h[300]', 'w[100,200]h[300,400]'.
35
+ * @param {ScreenSize} screenSize - The screen size to check against the breakpoint query.
36
+ * @returns {boolean} True if the screen size matches the breakpoint query, false otherwise.
37
+ *
38
+ * @example
39
+ * const screenSize = { width: 150, height: 350 }
40
+ * isWithinBreakpoint('w[100,200]', screenSize) // returns true
41
+ * isWithinBreakpoint('h[400]', screenSize) // returns false
42
+ */
43
+ exports.extractValues = extractValues;
44
+ const isWithinBreakpoint = (query, screenSize) => {
45
+ if (query.includes('w') && query.includes('h')) {
46
+ return isWithinTheWidthAndHeight(query, screenSize);
47
+ }
48
+ if (query.charAt(0) === 'w') {
49
+ return isWithinTheWidth(query, screenSize.width);
50
+ }
51
+ if (query.charAt(0) === 'h') {
52
+ return isWithinTheHeight(query, screenSize.height);
53
+ }
54
+ return false;
55
+ };
56
+
57
+ /**
58
+ * Determines if the given width matches the specified width range in the query.
59
+ *
60
+ * The function checks if the provided width falls within the range specified by the query.
61
+ * The query specifies a width range using a format like 'w[100,200]'. If only one value is provided,
62
+ * it's treated as a minimum width.
63
+ *
64
+ * @param {string} query - The width query string. Examples: 'w[100,200]' or 'w[100]'.
65
+ * @param {number} width - The width to check against the query.
66
+ * @returns {boolean} True if the width matches the query range, false otherwise.
67
+ *
68
+ * @example
69
+ * isWithinTheWidth('w[100,200]', 150) // returns true
70
+ * isWithinTheWidth('w[100]', 50) // returns false
71
+ * isWithinTheWidth('w[100]', 150) // returns true
72
+ */
73
+ exports.isWithinBreakpoint = isWithinBreakpoint;
74
+ const isWithinTheWidth = (query, width) => {
75
+ const [minWidth, maxWidth] = extractValues(query);
76
+ if (maxWidth && width >= minWidth && width <= maxWidth) {
77
+ return true;
78
+ }
79
+ return !maxWidth && width >= minWidth;
80
+ };
81
+
82
+ /**
83
+ * Determines if the given height matches the specified height range in the query.
84
+ *
85
+ * The function checks if the provided height falls within the range specified by the query.
86
+ * The query specifies a height range using a format like 'h[100,200]'. If only one value is provided,
87
+ * it's treated as a minimum height.
88
+ *
89
+ * @param {string} query - The height query string. Examples: 'h[100,200]' or 'h[100]'.
90
+ * @param {number} height - The height to check against the query.
91
+ * @returns {boolean} True if the height matches the query range, false otherwise.
92
+ *
93
+ * @example
94
+ * isWithinTheHeight('h[100,200]', 150) // returns true
95
+ * isWithinTheHeight('h[100]', 50) // returns false
96
+ * isWithinTheHeight('h[100]', 150) // returns true
97
+ */
98
+ exports.isWithinTheWidth = isWithinTheWidth;
99
+ const isWithinTheHeight = (query, height) => {
100
+ const [minHeight, maxHeight] = extractValues(query);
101
+ if (maxHeight && height >= minHeight && height <= maxHeight) {
102
+ return true;
103
+ }
104
+ return !maxHeight && height >= minHeight;
105
+ };
106
+
107
+ /**
108
+ * Determines if the given screen size matches both the specified width and height ranges in the query.
109
+ *
110
+ * The function checks if the provided screen size (both width and height) falls within the ranges
111
+ * specified by the query. The query can specify both width and height using a format like 'w[100,200]:h[300,400]'.
112
+ *
113
+ * @param {string} query - The combined width and height query string. Example: 'w[100,200]:h[300,400]'.
114
+ * @param {ScreenSize} screenSize - The screen size to check against the query.
115
+ * @returns {boolean} True if the screen size matches both the width and height ranges in the query, false otherwise.
116
+ *
117
+ * @example
118
+ * const screenSize = { width: 150, height: 350 }
119
+ * isWithinTheWidthAndHeight('w[100,200]:h[300,400]', screenSize) // returns true
120
+ * isWithinTheWidthAndHeight('w[100,200]:h[400,500]', screenSize) // returns false
121
+ */
122
+ exports.isWithinTheHeight = isWithinTheHeight;
123
+ const isWithinTheWidthAndHeight = (query, screenSize) => {
124
+ const result = query.split(':').filter(Boolean).map(q => isWithinBreakpoint(q, screenSize)).filter(Boolean);
125
+ return result.length === 2;
126
+ };
127
+
128
+ /**
129
+ * Checks if the given query string is a valid custom media query.
130
+ *
131
+ * The valid custom media query formats include:
132
+ * - :w[200]
133
+ * - :w[0, 200]
134
+ * - :w[, 300]
135
+ * - :h[200]
136
+ * - :h[0, 500]
137
+ * - :h[,200]
138
+ * - :w[100, 300]:h[200,500]
139
+ * - :h[200,500]:w[100, 300]
140
+ *
141
+ * @param {string} query - The query string to be checked.
142
+ * @returns {boolean} Returns `true` if the query is a valid custom media query, otherwise `false`.
143
+ * @example
144
+ *
145
+ * isMediaQuery(':w[200]') // true
146
+ * isMediaQuery(':w100]') // false
147
+ */
148
+ exports.isWithinTheWidthAndHeight = isWithinTheWidthAndHeight;
149
+ const isMediaQuery = query => {
150
+ const regex = /^(?:(:w\[\d*(?:,\s?\d+)?])?(:h\[\d*(?:,\s?\d+)?])?|(:h\[\d*(?:,\s?\d+)?])?(:w\[\d*(?:,\s?\d+)?])?)$/;
151
+ return query.length > 0 && regex.test(query);
152
+ };
153
+
154
+ /**
155
+ * Retrieves the first matching custom media query key based on the provided screen size.
156
+ *
157
+ * The function processes an array of media queries and returns the first query that matches
158
+ * the given screen size. The media queries can be in formats like:
159
+ * - w[200]
160
+ * - w[0, 200]
161
+ * - w[, 300]
162
+ * - h[200]
163
+ * - h[0, 500]
164
+ * - h[,200]
165
+ * - w[100, 300]:h[200,500]
166
+ * - h[200,500]:w[100, 300]
167
+ *
168
+ * @param {Array<[string, string | number]>} mediaQueries - An array of tuples containing media query keys and associated values.
169
+ * @param {ScreenSize} screenSize - An object representing the screen size to be checked against the media queries.
170
+ * @returns {string | undefined} Returns the first matching media query key or `undefined` if no match is found.
171
+ * @example
172
+ *
173
+ * const queries = [[':w[200]', 'value1'], [':h[300,500]', 'value2']]
174
+ * const size = { width: 250, height: 400 }
175
+ * getKeyForCustomMediaQuery(queries, size) // ':w[200]
176
+ */
177
+ exports.isMediaQuery = isMediaQuery;
178
+ const getKeyForCustomMediaQuery = (mediaQueries, screenSize) => {
179
+ const [matchedQuery] = mediaQueries.flatMap(_ref => {
180
+ let [key] = _ref;
181
+ if (key.includes('w') && key.includes('h')) {
182
+ return isWithinBreakpoint(key, screenSize) ? key : undefined;
183
+ }
184
+ return key.split(':').filter(Boolean).map(query => isWithinBreakpoint(query, screenSize) ? key : undefined);
185
+ }).filter(Boolean);
186
+ return matchedQuery;
187
+ };
188
+ exports.getKeyForCustomMediaQuery = getKeyForCustomMediaQuery;
189
+ //# sourceMappingURL=mediaQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["extractValues","codedValue","lh","rh","replace","split","Number","exports","isWithinBreakpoint","query","screenSize","includes","isWithinTheWidthAndHeight","charAt","isWithinTheWidth","width","isWithinTheHeight","height","minWidth","maxWidth","minHeight","maxHeight","result","filter","Boolean","map","q","length","isMediaQuery","regex","test","getKeyForCustomMediaQuery","mediaQueries","matchedQuery","flatMap","_ref","key","undefined"],"sourceRoot":"../../../src","sources":["utils/mediaQueries.ts"],"mappings":"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"}
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+
3
+ var _mediaQueries = require("./mediaQueries");
4
+ describe('utils', () => {
5
+ describe('extractValues', () => {
6
+ it('should correctly extract a width with both bounds', () => {
7
+ const mediaQuery = 'w[100, 600]';
8
+ expect((0, _mediaQueries.extractValues)(mediaQuery)).toEqual([100, 600]);
9
+ });
10
+ it('should correctly extract a width with lower bound equal to 0', () => {
11
+ const mediaQuery = 'w[0, 400]';
12
+ expect((0, _mediaQueries.extractValues)(mediaQuery)).toEqual([0, 400]);
13
+ });
14
+ it('should correctly extract a height with single value', () => {
15
+ const mediaQuery = 'h[700]';
16
+ expect((0, _mediaQueries.extractValues)(mediaQuery)).toEqual([700]);
17
+ });
18
+ it('should correctly extract a height with lower bound equal to 0', () => {
19
+ const mediaQuery = 'h[0,]';
20
+ expect((0, _mediaQueries.extractValues)(mediaQuery)).toEqual([0]);
21
+ });
22
+ it('should correctly extract a width with no lower bound', () => {
23
+ const mediaQuery = 'w[,100]';
24
+ expect((0, _mediaQueries.extractValues)(mediaQuery)).toEqual([0, 100]);
25
+ });
26
+ });
27
+ describe('isWithinTheWidth', () => {
28
+ it('should return true if the screen width is within the media query', () => {
29
+ const pairs = [{
30
+ width: 200,
31
+ query: 'w[120]'
32
+ }, {
33
+ width: 100,
34
+ query: 'w[,500]'
35
+ }, {
36
+ width: 0,
37
+ query: 'w[,500]'
38
+ }, {
39
+ width: 300,
40
+ query: 'w[300,500]'
41
+ }];
42
+ pairs.forEach(_ref => {
43
+ let {
44
+ width,
45
+ query
46
+ } = _ref;
47
+ expect((0, _mediaQueries.isWithinTheWidth)(query, width)).toEqual(true);
48
+ });
49
+ });
50
+ it('should return false if the screen width is outside the media query', () => {
51
+ const pairs = [{
52
+ width: 120,
53
+ query: 'w[200]'
54
+ }, {
55
+ width: 501,
56
+ query: 'w[,500]'
57
+ }, {
58
+ width: 700,
59
+ query: 'w[200,500]'
60
+ }];
61
+ pairs.forEach(_ref2 => {
62
+ let {
63
+ width,
64
+ query
65
+ } = _ref2;
66
+ expect((0, _mediaQueries.isWithinTheWidth)(query, width)).toEqual(false);
67
+ });
68
+ });
69
+ });
70
+ describe('isWithinTheHeight', () => {
71
+ it('should return true if the screen height is within the media query', () => {
72
+ const pairs = [{
73
+ height: 200,
74
+ query: 'h[120]'
75
+ }, {
76
+ height: 100,
77
+ query: 'h[,500]'
78
+ }, {
79
+ height: 0,
80
+ query: 'h[,500]'
81
+ }, {
82
+ height: 300,
83
+ query: 'h[300,500]'
84
+ }];
85
+ pairs.forEach(_ref3 => {
86
+ let {
87
+ height,
88
+ query
89
+ } = _ref3;
90
+ expect((0, _mediaQueries.isWithinTheHeight)(query, height)).toEqual(true);
91
+ });
92
+ });
93
+ it('should return false if the screen height is outside the media query', () => {
94
+ const pairs = [{
95
+ height: 120,
96
+ query: 'h[200]'
97
+ }, {
98
+ height: 501,
99
+ query: 'h[,500]'
100
+ }, {
101
+ height: 700,
102
+ query: 'h[200,500]'
103
+ }];
104
+ pairs.forEach(_ref4 => {
105
+ let {
106
+ height,
107
+ query
108
+ } = _ref4;
109
+ expect((0, _mediaQueries.isWithinTheHeight)(query, height)).toEqual(false);
110
+ });
111
+ });
112
+ });
113
+ describe('isWithinTheWidthAndHeight', () => {
114
+ it('should return true if the screen width and height are within the media query', () => {
115
+ const pairs = [{
116
+ screenSize: {
117
+ width: 200,
118
+ height: 600
119
+ },
120
+ query: 'w[, 200]:h[600]'
121
+ }, {
122
+ screenSize: {
123
+ width: 200,
124
+ height: 600
125
+ },
126
+ query: 'w[110]:h[400]'
127
+ }, {
128
+ screenSize: {
129
+ width: 400,
130
+ height: 800
131
+ },
132
+ query: 'w[400, 800]:h[400, 800]'
133
+ }];
134
+ pairs.forEach(_ref5 => {
135
+ let {
136
+ screenSize,
137
+ query
138
+ } = _ref5;
139
+ expect((0, _mediaQueries.isWithinTheWidthAndHeight)(query, screenSize)).toEqual(true);
140
+ });
141
+ });
142
+ it('should return false if the screen width and height are outside the media query', () => {
143
+ const pairs = [{
144
+ screenSize: {
145
+ width: 200,
146
+ height: 600
147
+ },
148
+ query: 'w[, 220]:h[620]'
149
+ }, {
150
+ screenSize: {
151
+ width: 200,
152
+ height: 600
153
+ },
154
+ query: 'w[290]:h[400]'
155
+ }, {
156
+ screenSize: {
157
+ width: 400,
158
+ height: 800
159
+ },
160
+ query: 'w[, 800]:h[, 700]'
161
+ }];
162
+ pairs.forEach(_ref6 => {
163
+ let {
164
+ screenSize,
165
+ query
166
+ } = _ref6;
167
+ expect((0, _mediaQueries.isWithinTheWidthAndHeight)(query, screenSize)).toEqual(false);
168
+ });
169
+ });
170
+ });
171
+ describe('isMediaQuery', () => {
172
+ it('should detect correct media queries', () => {
173
+ const correctMediaQueries = [':w[100]', ':w[100, 200]', ':w[, 300]', ':h[200]', ':h[0, 500]', ':h[, 750]', ':w[100]:h[200]', ':h[100]:w[200]', ':h[100, 200]:w[,400]', ':w[200]:h[200, 400]'];
174
+ correctMediaQueries.forEach(query => {
175
+ expect((0, _mediaQueries.isMediaQuery)(query)).toEqual(true);
176
+ });
177
+ });
178
+ it('should detect incorrect media queries', () => {
179
+ const incorrectMediaQueries = [':w100]', ':w[100, 200', ':p[, 300]', ':&[200]', ':h[0 500]', ':h[p, 750]', ':w[0]:l[200]', ':[100]:w[200]', ':h(100, 200):w[400]', ':w[2OO]:h[200, 400]', '', 'x', '>300', ']]w200[['];
180
+ incorrectMediaQueries.forEach(query => {
181
+ expect((0, _mediaQueries.isMediaQuery)(query)).toEqual(false);
182
+ });
183
+ });
184
+ });
185
+ describe('getKeyForCustomMediaQuery', () => {
186
+ it('should return a key for string value based on media query', () => {
187
+ const mediaQueries = [['w[,200]', 'orange'], ['w[300, 400]', 'pink'], ['w[500, 600]', 'red']];
188
+ const screenSize = {
189
+ width: 300,
190
+ height: 700
191
+ };
192
+ expect((0, _mediaQueries.getKeyForCustomMediaQuery)(mediaQueries, screenSize)).toEqual('w[300, 400]');
193
+ });
194
+ it('should return a key for number value based on media query', () => {
195
+ const mediaQueries = [['w[,200]', 200], ['w[250]', 300]];
196
+ const screenSize = {
197
+ width: 300,
198
+ height: 700
199
+ };
200
+ expect((0, _mediaQueries.getKeyForCustomMediaQuery)(mediaQueries, screenSize)).toEqual('w[250]');
201
+ });
202
+ it('should return undefined for no match', () => {
203
+ const mediaQueries = [['w[,400]', 'green'], ['w[500, 999]', 'olive'], ['w[1000]', 'red']];
204
+ const screenSize = {
205
+ width: 450,
206
+ height: 1000
207
+ };
208
+ expect((0, _mediaQueries.getKeyForCustomMediaQuery)(mediaQueries, screenSize)).toEqual(undefined);
209
+ });
210
+ it('should handle correctly complex media queries', () => {
211
+ const mediaQueries = [['w[,300]:h[200,700]', 200], ['w[250]:h[701]', 300], ['w[200]', 500]];
212
+ const screenSize = {
213
+ width: 300,
214
+ height: 700
215
+ };
216
+ expect((0, _mediaQueries.getKeyForCustomMediaQuery)(mediaQueries, screenSize)).toEqual('w[,300]:h[200,700]');
217
+ });
218
+ });
219
+ });
220
+ //# sourceMappingURL=mediaQueries.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_mediaQueries","require","describe","it","mediaQuery","expect","extractValues","toEqual","pairs","width","query","forEach","_ref","isWithinTheWidth","_ref2","height","_ref3","isWithinTheHeight","_ref4","screenSize","_ref5","isWithinTheWidthAndHeight","_ref6","correctMediaQueries","isMediaQuery","incorrectMediaQueries","mediaQueries","getKeyForCustomMediaQuery","undefined"],"sourceRoot":"../../../src","sources":["utils/mediaQueries.spec.ts"],"mappings":"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"}