react-native-unistyles 2.0.0-alpha.6 → 2.0.0-alpha.8
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/commonjs/{types/cxx.js → common.js} +6 -6
- package/lib/commonjs/common.js.map +1 -0
- package/lib/commonjs/core/UnistyleRegistry.js.map +1 -0
- package/lib/commonjs/{Unistyles.js → core/Unistyles.js} +2 -7
- package/lib/commonjs/core/Unistyles.js.map +1 -0
- package/lib/commonjs/core/UnistylesModule.js.map +1 -0
- package/lib/commonjs/{UnistylesRuntime.js → core/UnistylesRuntime.js} +5 -5
- package/lib/commonjs/core/UnistylesRuntime.js.map +1 -0
- package/lib/commonjs/core/index.js +13 -0
- package/lib/commonjs/core/index.js.map +1 -0
- package/lib/commonjs/hooks/index.js +10 -3
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/{useInitialTheme.js → hooks/useInitialTheme.js} +2 -2
- package/lib/commonjs/hooks/useInitialTheme.js.map +1 -0
- package/lib/commonjs/hooks/useUnistyles.js +54 -0
- package/lib/commonjs/hooks/useUnistyles.js.map +1 -0
- package/lib/commonjs/index.js +15 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types/common.js +2 -0
- package/lib/commonjs/types/{mediaQueries.js.map → common.js.map} +1 -1
- package/lib/commonjs/types/index.js +4 -4
- package/lib/commonjs/types/index.js.map +1 -1
- package/lib/commonjs/types/mq.js +6 -0
- package/lib/{module/types/mediaQueries.js.map → commonjs/types/mq.js.map} +1 -1
- package/lib/commonjs/types/unistyles.js +6 -0
- package/lib/commonjs/types/unistyles.js.map +1 -0
- package/lib/commonjs/useStyles.js +7 -4
- package/lib/commonjs/useStyles.js.map +1 -1
- package/lib/commonjs/utils/breakpoints.js +18 -20
- package/lib/commonjs/utils/breakpoints.js.map +1 -1
- package/lib/commonjs/utils/index.js +14 -34
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/utils/mq.js +89 -0
- package/lib/commonjs/utils/mq.js.map +1 -0
- package/lib/commonjs/utils/mqParser.js +86 -0
- package/lib/commonjs/utils/mqParser.js.map +1 -0
- package/lib/commonjs/utils/styles.js.map +1 -1
- package/lib/module/{types/cxx.js → common.js} +6 -6
- package/lib/module/common.js.map +1 -0
- package/lib/module/core/UnistyleRegistry.js.map +1 -0
- package/lib/module/{Unistyles.js → core/Unistyles.js} +1 -6
- package/lib/module/core/Unistyles.js.map +1 -0
- package/lib/module/core/UnistylesModule.js.map +1 -0
- package/lib/module/{UnistylesRuntime.js → core/UnistylesRuntime.js} +1 -1
- package/lib/module/core/UnistylesRuntime.js.map +1 -0
- package/lib/module/core/index.js +2 -0
- package/lib/module/core/index.js.map +1 -0
- package/lib/module/hooks/index.js +2 -1
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/{useInitialTheme.js → hooks/useInitialTheme.js} +1 -1
- package/lib/module/hooks/useInitialTheme.js.map +1 -0
- package/lib/module/hooks/useUnistyles.js +47 -0
- package/lib/module/hooks/useUnistyles.js.map +1 -0
- package/lib/module/index.js +7 -6
- package/lib/module/index.js.map +1 -1
- package/lib/module/types/common.js +2 -0
- package/lib/module/types/common.js.map +1 -0
- package/lib/module/types/index.js +1 -1
- package/lib/module/types/index.js.map +1 -1
- package/lib/module/types/mq.js +2 -0
- package/lib/module/types/mq.js.map +1 -0
- package/lib/module/types/unistyles.js +2 -0
- package/lib/module/types/unistyles.js.map +1 -0
- package/lib/module/useStyles.js +6 -3
- package/lib/module/useStyles.js.map +1 -1
- package/lib/module/utils/breakpoints.js +14 -16
- package/lib/module/utils/breakpoints.js.map +1 -1
- package/lib/module/utils/index.js +2 -1
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/utils/mq.js +83 -0
- package/lib/module/utils/mq.js.map +1 -0
- package/lib/module/utils/mqParser.js +79 -0
- package/lib/module/utils/mqParser.js.map +1 -0
- package/lib/module/utils/styles.js.map +1 -1
- package/lib/typescript/src/common.d.ts +17 -0
- package/lib/typescript/src/common.d.ts.map +1 -0
- package/lib/typescript/src/{UnistyleRegistry.d.ts → core/UnistyleRegistry.d.ts} +2 -2
- package/lib/typescript/src/core/UnistyleRegistry.d.ts.map +1 -0
- package/lib/typescript/src/{Unistyles.d.ts → core/Unistyles.d.ts} +0 -3
- package/lib/typescript/src/core/Unistyles.d.ts.map +1 -0
- package/lib/typescript/src/core/UnistylesModule.d.ts.map +1 -0
- package/lib/typescript/src/{UnistylesRuntime.d.ts → core/UnistylesRuntime.d.ts} +6 -6
- package/lib/typescript/src/core/UnistylesRuntime.d.ts.map +1 -0
- package/lib/typescript/src/core/index.d.ts +2 -0
- package/lib/typescript/src/core/index.d.ts.map +1 -0
- package/lib/typescript/src/hooks/index.d.ts +2 -1
- package/lib/typescript/src/hooks/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useInitialTheme.d.ts +3 -0
- package/lib/typescript/src/hooks/useInitialTheme.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useUnistyles.d.ts +12 -0
- package/lib/typescript/src/hooks/useUnistyles.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +10 -9
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types/breakpoints.d.ts +5 -9
- package/lib/typescript/src/types/breakpoints.d.ts.map +1 -1
- package/lib/typescript/src/types/common.d.ts +3 -0
- package/lib/typescript/src/types/common.d.ts.map +1 -0
- package/lib/typescript/src/types/core.d.ts +9 -4
- package/lib/typescript/src/types/core.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +5 -4
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/types/mq.d.ts +3 -0
- package/lib/typescript/src/types/mq.d.ts.map +1 -0
- package/lib/typescript/src/types/{cxx.d.ts → unistyles.d.ts} +4 -22
- package/lib/typescript/src/types/unistyles.d.ts.map +1 -0
- package/lib/typescript/src/useStyles.d.ts +8 -6
- package/lib/typescript/src/useStyles.d.ts.map +1 -1
- package/lib/typescript/src/utils/breakpoints.d.ts +2 -2
- package/lib/typescript/src/utils/breakpoints.d.ts.map +1 -1
- package/lib/typescript/src/utils/index.d.ts +2 -1
- package/lib/typescript/src/utils/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/mq.d.ts +21 -0
- package/lib/typescript/src/utils/mq.d.ts.map +1 -0
- package/lib/typescript/src/utils/mqParser.d.ts +3 -0
- package/lib/typescript/src/utils/mqParser.d.ts.map +1 -0
- package/lib/typescript/src/utils/styles.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/common.ts +18 -0
- package/src/{UnistyleRegistry.ts → core/UnistyleRegistry.ts} +2 -2
- package/src/{Unistyles.ts → core/Unistyles.ts} +2 -9
- package/src/{UnistylesRuntime.ts → core/UnistylesRuntime.ts} +3 -3
- package/src/core/index.ts +1 -0
- package/src/hooks/index.ts +2 -1
- package/src/{useInitialTheme.ts → hooks/useInitialTheme.ts} +2 -2
- package/src/hooks/useUnistyles.ts +55 -0
- package/src/index.ts +10 -7
- package/src/types/breakpoints.ts +6 -11
- package/src/types/common.ts +2 -0
- package/src/types/core.ts +10 -4
- package/src/types/index.ts +5 -9
- package/src/types/mq.ts +3 -0
- package/src/types/{cxx.ts → unistyles.ts} +3 -24
- package/src/useStyles.ts +15 -8
- package/src/utils/breakpoints.ts +13 -12
- package/src/utils/index.ts +2 -8
- package/src/utils/mq.ts +106 -0
- package/src/utils/mqParser.ts +99 -0
- package/src/utils/styles.ts +2 -2
- package/lib/commonjs/UnistyleRegistry.js.map +0 -1
- package/lib/commonjs/Unistyles.js.map +0 -1
- package/lib/commonjs/UnistylesEngine.js +0 -26
- package/lib/commonjs/UnistylesEngine.js.map +0 -1
- package/lib/commonjs/UnistylesModule.js.map +0 -1
- package/lib/commonjs/UnistylesRuntime.js.map +0 -1
- package/lib/commonjs/hooks/useDimensions.js +0 -10
- package/lib/commonjs/hooks/useDimensions.js.map +0 -1
- package/lib/commonjs/hooks/useDimensions.web.js +0 -34
- package/lib/commonjs/hooks/useDimensions.web.js.map +0 -1
- package/lib/commonjs/types/cxx.js.map +0 -1
- package/lib/commonjs/types/mediaQueries.js +0 -2
- package/lib/commonjs/useInitialTheme.js.map +0 -1
- package/lib/commonjs/useUnistyles.js +0 -51
- package/lib/commonjs/useUnistyles.js.map +0 -1
- package/lib/commonjs/utils/mediaQueries.js +0 -98
- package/lib/commonjs/utils/mediaQueries.js.map +0 -1
- package/lib/module/UnistyleRegistry.js.map +0 -1
- package/lib/module/Unistyles.js.map +0 -1
- package/lib/module/UnistylesEngine.js +0 -19
- package/lib/module/UnistylesEngine.js.map +0 -1
- package/lib/module/UnistylesModule.js.map +0 -1
- package/lib/module/UnistylesRuntime.js.map +0 -1
- package/lib/module/hooks/useDimensions.js +0 -3
- package/lib/module/hooks/useDimensions.js.map +0 -1
- package/lib/module/hooks/useDimensions.web.js +0 -27
- package/lib/module/hooks/useDimensions.web.js.map +0 -1
- package/lib/module/types/cxx.js.map +0 -1
- package/lib/module/types/mediaQueries.js +0 -2
- package/lib/module/useInitialTheme.js.map +0 -1
- package/lib/module/useUnistyles.js +0 -44
- package/lib/module/useUnistyles.js.map +0 -1
- package/lib/module/utils/mediaQueries.js +0 -85
- package/lib/module/utils/mediaQueries.js.map +0 -1
- package/lib/typescript/src/UnistyleRegistry.d.ts.map +0 -1
- package/lib/typescript/src/Unistyles.d.ts.map +0 -1
- package/lib/typescript/src/UnistylesEngine.d.ts +0 -11
- package/lib/typescript/src/UnistylesEngine.d.ts.map +0 -1
- package/lib/typescript/src/UnistylesModule.d.ts.map +0 -1
- package/lib/typescript/src/UnistylesRuntime.d.ts.map +0 -1
- package/lib/typescript/src/hooks/useDimensions.d.ts +0 -3
- package/lib/typescript/src/hooks/useDimensions.d.ts.map +0 -1
- package/lib/typescript/src/hooks/useDimensions.web.d.ts +0 -3
- package/lib/typescript/src/hooks/useDimensions.web.d.ts.map +0 -1
- package/lib/typescript/src/types/cxx.d.ts.map +0 -1
- package/lib/typescript/src/types/mediaQueries.d.ts +0 -10
- package/lib/typescript/src/types/mediaQueries.d.ts.map +0 -1
- package/lib/typescript/src/useInitialTheme.d.ts +0 -3
- package/lib/typescript/src/useInitialTheme.d.ts.map +0 -1
- package/lib/typescript/src/useUnistyles.d.ts +0 -11
- package/lib/typescript/src/useUnistyles.d.ts.map +0 -1
- package/lib/typescript/src/utils/mediaQueries.d.ts +0 -11
- package/lib/typescript/src/utils/mediaQueries.d.ts.map +0 -1
- package/src/UnistylesEngine.ts +0 -24
- package/src/hooks/useDimensions.ts +0 -4
- package/src/hooks/useDimensions.web.ts +0 -34
- package/src/types/mediaQueries.ts +0 -15
- package/src/useUnistyles.ts +0 -54
- package/src/utils/mediaQueries.ts +0 -152
- /package/lib/commonjs/{UnistyleRegistry.js → core/UnistyleRegistry.js} +0 -0
- /package/lib/commonjs/{UnistylesModule.js → core/UnistylesModule.js} +0 -0
- /package/lib/module/{UnistyleRegistry.js → core/UnistyleRegistry.js} +0 -0
- /package/lib/module/{UnistylesModule.js → core/UnistylesModule.js} +0 -0
- /package/lib/typescript/src/{UnistylesModule.d.ts → core/UnistylesModule.d.ts} +0 -0
- /package/src/{UnistylesModule.ts → core/UnistylesModule.ts} +0 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
import type { MediaQuery, Nullable } from '../types';
|
2
|
+
import type { UnistylesBreakpoints } from '../global';
|
3
|
+
export declare const MQSymbol: unique symbol;
|
4
|
+
type MQValue = keyof UnistylesBreakpoints | number;
|
5
|
+
type MQHandler = {
|
6
|
+
w(wMin?: Nullable<MQValue>, wMax?: MQValue): WidthHandler;
|
7
|
+
width(wMin?: Nullable<MQValue>, wMax?: MQValue): WidthHandler;
|
8
|
+
h(hMin?: Nullable<MQValue>, hMax?: MQValue): HeightHandler;
|
9
|
+
height(hMin?: Nullable<MQValue>, hMax?: MQValue): HeightHandler;
|
10
|
+
};
|
11
|
+
type HeightHandler = {
|
12
|
+
w(wMin?: Nullable<MQValue>, wMax?: MQValue): MediaQuery;
|
13
|
+
width(wMin?: Nullable<MQValue>, wMax?: MQValue): MediaQuery;
|
14
|
+
} & MediaQuery;
|
15
|
+
type WidthHandler = {
|
16
|
+
h(hMin?: Nullable<MQValue>, hMax?: MQValue): MediaQuery;
|
17
|
+
height(hMin?: Nullable<MQValue>, hMax?: MQValue): MediaQuery;
|
18
|
+
} & MediaQuery;
|
19
|
+
export declare const mq: MQHandler;
|
20
|
+
export {};
|
21
|
+
//# sourceMappingURL=mq.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"mq.d.ts","sourceRoot":"","sources":["../../../../src/utils/mq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAGrD,eAAO,MAAM,QAAQ,eAAyB,CAAA;AAE9C,KAAK,OAAO,GAAG,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAElD,KAAK,SAAS,GAAG;IACb,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC9D,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,aAAa,CAAA;CAClE,CAAA;AAED,KAAK,aAAa,GAAG;IACjB,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;CAC9D,GAAG,UAAU,CAAA;AAEd,KAAK,YAAY,GAAG;IAChB,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;CAC/D,GAAG,UAAU,CAAA;AAsEd,eAAO,MAAM,EAAE,WAYb,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"mqParser.d.ts","sourceRoot":"","sources":["../../../../src/utils/mqParser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAkFhE,eAAO,MAAM,4BAA4B,yCAA0C,UAAU,qBAgB5F,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/utils/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/utils/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAc,MAAM,UAAU,CAAA;AAGzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAGrD,eAAO,MAAM,eAAe,OACpB,QAAQ,cAAc,MAAM,oBAAoB,GAAG,MAAM,cACjD,UAAU,KACvB,QAGD,CAAA;AAEF,eAAO,MAAM,eAAe,8BAA6B,OAMxD,CAAA;AAED,eAAO,MAAM,UAAU,+CAEP,MAAM,oBAAoB,GAAG,MAAM,cACnC,UAAU,MA6CzB,CAAA"}
|
package/package.json
CHANGED
package/src/common.ts
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
export enum CxxUnistylesEventTypes {
|
2
|
+
Theme = 'theme',
|
3
|
+
Layout = 'layout'
|
4
|
+
}
|
5
|
+
|
6
|
+
export enum UnistylesError {
|
7
|
+
RuntimeUnavailable = 'UNISTYLES_ERROR_RUNTIME_UNAVAILABLE',
|
8
|
+
ThemeNotFound = 'UNISTYLES_ERROR_THEME_NOT_FOUND',
|
9
|
+
ThemeNotRegistered = 'UNISTYLES_ERROR_THEME_NOT_REGISTERED',
|
10
|
+
ThemesCannotBeEmpty = 'UNISTYLES_ERROR_THEMES_CANNOT_BE_EMPTY',
|
11
|
+
BreakpointsCannotBeEmpty = 'UNISTYLES_ERROR_BREAKPOINTS_CANNOT_BE_EMPTY',
|
12
|
+
BreakpointsMustStartFromZero = 'UNISTYLES_ERROR_BREAKPOINTS_MUST_START_FROM_ZERO',
|
13
|
+
}
|
14
|
+
|
15
|
+
export enum ScreenOrientation {
|
16
|
+
Portrait = 1,
|
17
|
+
Landscape = 2
|
18
|
+
}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import type { UnistylesBridge, UnistylesConfig } from '
|
2
|
-
import type {
|
1
|
+
import type { UnistylesBridge, UnistylesConfig } from '../types'
|
2
|
+
import type { UnistylesBreakpoints, UnistylesThemes } from '../global'
|
3
3
|
|
4
4
|
export class UnistyleRegistry {
|
5
5
|
public config: UnistylesConfig = {}
|
@@ -1,13 +1,11 @@
|
|
1
1
|
import { UnistylesModule } from './UnistylesModule'
|
2
2
|
import { UnistylesRuntime } from './UnistylesRuntime'
|
3
|
-
import { UnistylesBuiltInEngine } from './UnistylesEngine'
|
4
3
|
import { UnistyleRegistry } from './UnistyleRegistry'
|
5
|
-
import type { UnistylesBridge } from '
|
6
|
-
import { UnistylesError } from '
|
4
|
+
import type { UnistylesBridge } from '../types'
|
5
|
+
import { UnistylesError } from '../common'
|
7
6
|
|
8
7
|
class Unistyles {
|
9
8
|
private _runtime: UnistylesRuntime
|
10
|
-
private _engine: UnistylesBuiltInEngine
|
11
9
|
private _registry: UnistyleRegistry
|
12
10
|
private _bridge: UnistylesBridge
|
13
11
|
|
@@ -22,7 +20,6 @@ class Unistyles {
|
|
22
20
|
this._bridge = global.__UNISTYLES__ as UnistylesBridge
|
23
21
|
this._registry = new UnistyleRegistry(this._bridge)
|
24
22
|
this._runtime = new UnistylesRuntime(this._bridge, this._registry)
|
25
|
-
this._engine = new UnistylesBuiltInEngine(this._registry, this._runtime)
|
26
23
|
}
|
27
24
|
|
28
25
|
public get registry() {
|
@@ -32,10 +29,6 @@ class Unistyles {
|
|
32
29
|
public get runtime() {
|
33
30
|
return this._runtime
|
34
31
|
}
|
35
|
-
|
36
|
-
public get engine() {
|
37
|
-
return this._engine
|
38
|
-
}
|
39
32
|
}
|
40
33
|
|
41
34
|
export const unistyles = new Unistyles()
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import
|
1
|
+
import { ScreenOrientation, UnistylesError } from '../common'
|
2
|
+
import type { UnistylesBridge } from '../types'
|
3
|
+
import type { UnistylesThemes } from '../global'
|
2
4
|
import type { UnistyleRegistry } from './UnistyleRegistry'
|
3
|
-
import { ScreenOrientation, UnistylesError } from './types'
|
4
|
-
import type { UnistylesThemes } from './global'
|
5
5
|
|
6
6
|
export class UnistylesRuntime {
|
7
7
|
constructor(private unistylesBridge: UnistylesBridge, private registry: UnistyleRegistry) {}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { unistyles } from './Unistyles'
|
package/src/hooks/index.ts
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
export {
|
1
|
+
export { useInitialTheme } from './useInitialTheme'
|
2
|
+
export { useUnistyles } from './useUnistyles'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { useMemo } from 'react'
|
2
|
-
import { unistyles } from '
|
3
|
-
import type { UnistylesThemes } from '
|
2
|
+
import { unistyles } from '../core'
|
3
|
+
import type { UnistylesThemes } from '../global'
|
4
4
|
|
5
5
|
export const useInitialTheme = (forName: keyof UnistylesThemes) => {
|
6
6
|
useMemo(() => unistyles.runtime.setTheme(forName), [])
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import { NativeEventEmitter, NativeModules } from 'react-native'
|
2
|
+
import { useEffect, useState } from 'react'
|
3
|
+
import { unistyles } from '../core'
|
4
|
+
import { CxxUnistylesEventTypes } from '../common'
|
5
|
+
import type { UnistylesEvents, UnistylesMobileLayoutEvent, UnistylesThemeEvent } from '../types'
|
6
|
+
|
7
|
+
const unistylesEvents = new NativeEventEmitter(NativeModules.Unistyles)
|
8
|
+
|
9
|
+
export const useUnistyles = () => {
|
10
|
+
const [theme, setTheme] = useState(unistyles.runtime.getTheme(unistyles.runtime.themeName))
|
11
|
+
const [layout, setLayout] = useState({
|
12
|
+
breakpoint: unistyles.runtime.breakpoint,
|
13
|
+
orientation: unistyles.runtime.orientation,
|
14
|
+
screenSize: {
|
15
|
+
width: unistyles.runtime.screen.width,
|
16
|
+
height: unistyles.runtime.screen.height
|
17
|
+
}
|
18
|
+
})
|
19
|
+
|
20
|
+
useEffect(() => {
|
21
|
+
const subscription = unistylesEvents.addListener(
|
22
|
+
'onChange',
|
23
|
+
(event: UnistylesEvents) => {
|
24
|
+
switch (event.type) {
|
25
|
+
case CxxUnistylesEventTypes.Theme: {
|
26
|
+
const themeEvent = event as UnistylesThemeEvent
|
27
|
+
|
28
|
+
return setTheme(unistyles.runtime.getTheme(themeEvent.payload.themeName))
|
29
|
+
}
|
30
|
+
case CxxUnistylesEventTypes.Layout: {
|
31
|
+
const layoutEvent = event as UnistylesMobileLayoutEvent
|
32
|
+
|
33
|
+
return setLayout({
|
34
|
+
breakpoint: layoutEvent.payload.breakpoint,
|
35
|
+
orientation: layoutEvent.payload.orientation,
|
36
|
+
screenSize: {
|
37
|
+
width: layoutEvent.payload.screen.width,
|
38
|
+
height: layoutEvent.payload.screen.height
|
39
|
+
}
|
40
|
+
})
|
41
|
+
}
|
42
|
+
default:
|
43
|
+
return
|
44
|
+
}
|
45
|
+
}
|
46
|
+
)
|
47
|
+
|
48
|
+
return subscription.remove
|
49
|
+
}, [])
|
50
|
+
|
51
|
+
return {
|
52
|
+
theme,
|
53
|
+
layout
|
54
|
+
}
|
55
|
+
}
|
package/src/index.ts
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
import { unistyles } from './
|
1
|
+
import { unistyles } from './core'
|
2
|
+
import { mq } from './utils'
|
3
|
+
import { useInitialTheme } from './hooks'
|
2
4
|
import type { UnistylesThemes, UnistylesBreakpoints } from './global'
|
3
|
-
import { ScreenOrientation } from './
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
export { useStyles } from './useStyles'
|
8
|
-
export { createStyleSheet } from './createStyleSheet'
|
5
|
+
import { ScreenOrientation } from './common'
|
6
|
+
import { useStyles } from './useStyles'
|
7
|
+
import { createStyleSheet } from './createStyleSheet'
|
9
8
|
|
10
9
|
const { addThemes, addBreakpoints, addConfig } = unistyles.registry
|
11
10
|
const UnistylesRuntime = unistyles.runtime
|
@@ -23,6 +22,10 @@ export {
|
|
23
22
|
}
|
24
23
|
|
25
24
|
export {
|
25
|
+
mq,
|
26
|
+
useInitialTheme,
|
27
|
+
useStyles,
|
28
|
+
createStyleSheet,
|
26
29
|
ScreenOrientation
|
27
30
|
}
|
28
31
|
|
package/src/types/breakpoints.ts
CHANGED
@@ -1,17 +1,10 @@
|
|
1
1
|
import type { OpaqueColorValue } from 'react-native'
|
2
2
|
import type { UnistylesBreakpoints } from '../global'
|
3
|
-
import type {
|
4
|
-
|
5
|
-
export type ScreenSize = {
|
6
|
-
width: number,
|
7
|
-
height: number
|
8
|
-
}
|
9
|
-
|
10
|
-
export type CreateStylesFactory<ST, Theme> = (theme: Theme) => ST
|
3
|
+
import type { MediaQuery } from './mq'
|
11
4
|
|
12
5
|
type WithEmptyObject<V> = keyof V extends never ? {} : V
|
13
6
|
|
14
|
-
|
7
|
+
type ExtractBreakpoints<T> = T extends Partial<Record<keyof UnistylesBreakpoints & string, infer V>>
|
15
8
|
? WithEmptyObject<V>
|
16
9
|
: T extends (...args: infer A) => infer R
|
17
10
|
? (...args: A) => ExtractBreakpoints<R>
|
@@ -23,12 +16,14 @@ export type ExtractBreakpoints<T> = T extends Partial<Record<keyof UnistylesBrea
|
|
23
16
|
: T[K]
|
24
17
|
}
|
25
18
|
|
26
|
-
|
19
|
+
type RemoveKeysWithPrefix<T> = T extends (...args: Array<any>) => infer R
|
27
20
|
? (...args: Parameters<T>) => RemoveKeysWithPrefix<R>
|
28
21
|
: T extends object
|
29
22
|
? T extends OpaqueColorValue
|
30
23
|
? string
|
31
24
|
: T extends Record<string, infer _V>
|
32
|
-
? { [K in keyof T as K extends
|
25
|
+
? { [K in keyof T as K extends MediaQuery ? keyof UnistylesBreakpoints & string : K]: RemoveKeysWithPrefix<T[K]> }
|
33
26
|
: { [K in keyof T]: RemoveKeysWithPrefix<T[K]> }
|
34
27
|
: T
|
28
|
+
|
29
|
+
export type ReactNativeStyleSheet<T> = ExtractBreakpoints<RemoveKeysWithPrefix<T>>
|
package/src/types/core.ts
CHANGED
@@ -14,14 +14,19 @@ import type {
|
|
14
14
|
TranslateYTransform
|
15
15
|
} from 'react-native/Libraries/StyleSheet/StyleSheetTypes'
|
16
16
|
import type { ImageStyle, TextStyle, ViewStyle } from 'react-native'
|
17
|
-
import type { MediaQueries } from './mediaQueries'
|
18
17
|
import type { UnistylesBreakpoints, UnistylesThemes } from '../global'
|
18
|
+
import type { MediaQuery } from './mq'
|
19
19
|
|
20
20
|
type ShadowOffset = {
|
21
21
|
width: number,
|
22
22
|
height: number
|
23
23
|
}
|
24
24
|
|
25
|
+
export type ScreenSize = {
|
26
|
+
width: number,
|
27
|
+
height: number
|
28
|
+
}
|
29
|
+
|
25
30
|
type TransformStyles =
|
26
31
|
& PerpectiveTransform
|
27
32
|
& RotateTransform
|
@@ -44,9 +49,9 @@ type UnistyleNested = {
|
|
44
49
|
}
|
45
50
|
|
46
51
|
type UniStyle<V> = {
|
47
|
-
[innerKey in keyof UnistylesBreakpoints]
|
52
|
+
[innerKey in keyof UnistylesBreakpoints]?: V
|
48
53
|
} | {
|
49
|
-
[innerKey in
|
54
|
+
[innerKey in MediaQuery]: V
|
50
55
|
}
|
51
56
|
|
52
57
|
type DeepUniStyle<T> = {
|
@@ -72,5 +77,6 @@ export type CustomNamedStyles<T> = {
|
|
72
77
|
: StaticStyles
|
73
78
|
}
|
74
79
|
|
75
|
-
export type NestedKeys = Array<[keyof UnistylesBreakpoints |
|
80
|
+
export type NestedKeys = Array<[keyof UnistylesBreakpoints | MediaQuery, string | number | undefined]>
|
76
81
|
export type UnistylesTheme = UnistylesThemes[keyof UnistylesThemes]
|
82
|
+
export type CreateStylesFactory<ST, Theme> = (theme: Theme) => ST
|
package/src/types/index.ts
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
export * from './normalizer'
|
2
|
-
export * from './
|
3
|
-
export type {
|
4
|
-
export type {
|
5
|
-
export type {
|
6
|
-
|
7
|
-
CreateStylesFactory,
|
8
|
-
ExtractBreakpoints,
|
9
|
-
RemoveKeysWithPrefix
|
10
|
-
} from './breakpoints'
|
2
|
+
export * from './unistyles'
|
3
|
+
export type { Optional, Nullable } from './common'
|
4
|
+
export type { MediaQuery } from './mq'
|
5
|
+
export type { CustomNamedStyles, NestedKeys, UnistylesTheme, CreateStylesFactory, ScreenSize } from './core'
|
6
|
+
export type { ReactNativeStyleSheet } from './breakpoints'
|
package/src/types/mq.ts
ADDED
@@ -1,20 +1,14 @@
|
|
1
|
+
import { CxxUnistylesEventTypes, ScreenOrientation } from '../common'
|
1
2
|
import type { UnistylesThemes, UnistylesBreakpoints } from '../global'
|
2
|
-
import type { ScreenSize } from './
|
3
|
-
import type {
|
3
|
+
import type { NestedKeys, ScreenSize } from './core'
|
4
|
+
import type { Optional } from './common'
|
4
5
|
|
5
|
-
export type Optional<T> = T | undefined
|
6
|
-
export type Nullable<T> = T | null
|
7
6
|
export type ColorSchemeName = Optional<'light' | 'dark'>
|
8
7
|
|
9
8
|
export type UnistylesConfig = {
|
10
9
|
adaptiveThemes?: boolean
|
11
10
|
}
|
12
11
|
|
13
|
-
export enum ScreenOrientation {
|
14
|
-
Portrait = 1,
|
15
|
-
Landscape = 2
|
16
|
-
}
|
17
|
-
|
18
12
|
export type UnistylesBridge = {
|
19
13
|
// getters
|
20
14
|
screenWidth: number,
|
@@ -35,11 +29,6 @@ export type UnistylesBridge = {
|
|
35
29
|
unregister(): void
|
36
30
|
}
|
37
31
|
|
38
|
-
export enum CxxUnistylesEventTypes {
|
39
|
-
Theme = 'theme',
|
40
|
-
Layout = 'layout'
|
41
|
-
}
|
42
|
-
|
43
32
|
export type UnistylesThemeEvent = {
|
44
33
|
type: CxxUnistylesEventTypes.Theme,
|
45
34
|
payload: {
|
@@ -58,16 +47,6 @@ export type UnistylesMobileLayoutEvent = {
|
|
58
47
|
|
59
48
|
export type UnistylesEvents = UnistylesThemeEvent | UnistylesMobileLayoutEvent
|
60
49
|
|
61
|
-
export enum UnistylesError {
|
62
|
-
RuntimeUnavailable = 'UNISTYLES_ERROR_RUNTIME_UNAVAILABLE',
|
63
|
-
ThemeNotFound = 'UNISTYLES_ERROR_THEME_NOT_FOUND',
|
64
|
-
ThemeNotRegistered = 'UNISTYLES_ERROR_THEME_NOT_REGISTERED',
|
65
|
-
ThemesCannotBeEmpty = 'UNISTYLES_ERROR_THEMES_CANNOT_BE_EMPTY',
|
66
|
-
BreakpointsCannotBeEmpty = 'UNISTYLES_ERROR_BREAKPOINTS_CANNOT_BE_EMPTY',
|
67
|
-
BreakpointsMustStartFromZero = 'UNISTYLES_ERROR_BREAKPOINTS_MUST_START_FROM_ZERO',
|
68
|
-
}
|
69
|
-
|
70
50
|
export interface UnistylesEngine {
|
71
|
-
isMediaQuery(key: string): boolean,
|
72
51
|
didMatchMediaQuery(keys: NestedKeys): Optional<string>,
|
73
52
|
}
|
package/src/useStyles.ts
CHANGED
@@ -1,18 +1,25 @@
|
|
1
1
|
import { useMemo } from 'react'
|
2
2
|
import { StyleSheet } from 'react-native'
|
3
3
|
import { parseStyle, proxifyFunction } from './utils'
|
4
|
-
import type { CreateStylesFactory, CustomNamedStyles,
|
5
|
-
import { useUnistyles } from './
|
6
|
-
import type {
|
4
|
+
import type { CreateStylesFactory, CustomNamedStyles, ReactNativeStyleSheet, UnistylesTheme } from './types'
|
5
|
+
import { useUnistyles } from './hooks'
|
6
|
+
import type { UnistylesBreakpoints } from './global'
|
7
7
|
|
8
|
-
|
9
|
-
|
8
|
+
type ParsedStylesheet<ST extends CustomNamedStyles<ST>> = {
|
9
|
+
theme: UnistylesTheme,
|
10
|
+
breakpoint: keyof UnistylesBreakpoints,
|
11
|
+
styles: ReactNativeStyleSheet<ST>
|
12
|
+
}
|
13
|
+
|
14
|
+
export const useStyles = <ST extends CustomNamedStyles<ST>>(stylesheet?: ST | CreateStylesFactory<ST, UnistylesTheme>): ParsedStylesheet<ST> => {
|
15
|
+
const { theme, layout } = useUnistyles()
|
16
|
+
const { screenSize, breakpoint } = layout
|
10
17
|
|
11
18
|
if (!stylesheet) {
|
12
19
|
return {
|
13
20
|
theme,
|
14
21
|
breakpoint,
|
15
|
-
styles: {} as
|
22
|
+
styles: {} as ReactNativeStyleSheet<ST>
|
16
23
|
}
|
17
24
|
}
|
18
25
|
|
@@ -36,11 +43,11 @@ export const useStyles = <ST extends CustomNamedStyles<ST>>(stylesheet?: ST | Cr
|
|
36
43
|
...acc,
|
37
44
|
[key]: parseStyle<ST>(style, breakpoint, screenSize)
|
38
45
|
})
|
39
|
-
}, {} as ST), [breakpoint, screenSize, parsedStyles])
|
46
|
+
}, {} as ST), [breakpoint, screenSize, parsedStyles]) as ReactNativeStyleSheet<ST>
|
40
47
|
|
41
48
|
return {
|
42
49
|
theme,
|
43
50
|
breakpoint,
|
44
|
-
styles: dynamicStyleSheet
|
51
|
+
styles: dynamicStyleSheet
|
45
52
|
}
|
46
53
|
}
|
package/src/utils/breakpoints.ts
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
import { unistyles } from '../
|
1
|
+
import { unistyles } from '../core'
|
2
2
|
import { isMobile, Orientation, throwError } from './common'
|
3
|
-
import type {
|
4
|
-
import { ScreenOrientation } from '../types'
|
3
|
+
import type { MediaQuery, NestedKeys } from '../types'
|
5
4
|
import type { UnistylesBreakpoints } from '../global'
|
5
|
+
import { ScreenOrientation } from '../common'
|
6
|
+
import { getKeyForUnistylesMediaQuery } from './mqParser'
|
6
7
|
|
7
8
|
export const sortAndValidateBreakpoints = (breakpoints: UnistylesBreakpoints): UnistylesBreakpoints => {
|
8
9
|
const sortedPairs = Object
|
@@ -45,15 +46,14 @@ export const getBreakpointFromScreenWidth = (width: number, breakpointEntries: A
|
|
45
46
|
return key
|
46
47
|
}
|
47
48
|
|
48
|
-
export const getValueForBreakpoint = (value: Record<keyof UnistylesBreakpoints |
|
49
|
+
export const getValueForBreakpoint = (value: Record<keyof UnistylesBreakpoints | MediaQuery, string | number | undefined>): string | number | undefined => {
|
49
50
|
// the highest priority is for custom media queries
|
50
|
-
const
|
51
|
-
.entries(value)
|
52
|
-
|
53
|
-
|
54
|
-
const customMediaQueryKey = unistyles.engine.didMatchMediaQuery(customMediaQueries) as keyof typeof value
|
51
|
+
const customMediaQueryKey = getKeyForUnistylesMediaQuery(
|
52
|
+
Object.entries(value) as NestedKeys,
|
53
|
+
unistyles.runtime.screen
|
54
|
+
) as keyof typeof value
|
55
55
|
|
56
|
-
if (customMediaQueryKey
|
56
|
+
if (customMediaQueryKey) {
|
57
57
|
return value[customMediaQueryKey]
|
58
58
|
}
|
59
59
|
|
@@ -61,8 +61,8 @@ export const getValueForBreakpoint = (value: Record<keyof UnistylesBreakpoints |
|
|
61
61
|
// check if user defined any breakpoints
|
62
62
|
const hasBreakpoints = unistyles.runtime.sortedBreakpoints.length > 0
|
63
63
|
|
64
|
-
// if not then we can
|
65
|
-
if (!hasBreakpoints && isMobile && (Orientation.Landscape in
|
64
|
+
// if not then we can fall back to horizontal and portrait (mobile only)
|
65
|
+
if (!hasBreakpoints && isMobile && (Orientation.Landscape in value || Orientation.Portrait in value)) {
|
66
66
|
return value[
|
67
67
|
unistyles.runtime.orientation === ScreenOrientation.Portrait
|
68
68
|
? Orientation.Portrait
|
@@ -70,6 +70,7 @@ export const getValueForBreakpoint = (value: Record<keyof UnistylesBreakpoints |
|
|
70
70
|
]
|
71
71
|
}
|
72
72
|
|
73
|
+
// let's get the current breakpoint
|
73
74
|
const breakpoint = unistyles.runtime.breakpoint
|
74
75
|
|
75
76
|
if (!breakpoint) {
|
package/src/utils/index.ts
CHANGED
@@ -1,13 +1,7 @@
|
|
1
1
|
export { normalizeStyles } from './normalizeStyles'
|
2
2
|
export * from './normalizer'
|
3
|
+
export { mq, MQSymbol } from './mq'
|
4
|
+
export { getKeyForUnistylesMediaQuery } from './mqParser'
|
3
5
|
export { getBreakpointFromScreenWidth, sortAndValidateBreakpoints, getValueForBreakpoint } from './breakpoints'
|
4
6
|
export { proxifyFunction, parseStyle } from './styles'
|
5
7
|
export { isServer, Orientation } from './common'
|
6
|
-
export {
|
7
|
-
extractValues,
|
8
|
-
getKeyForCustomMediaQuery,
|
9
|
-
isMediaQuery,
|
10
|
-
isWithinTheHeight,
|
11
|
-
isWithinTheWidth,
|
12
|
-
isWithinTheWidthAndHeight
|
13
|
-
} from './mediaQueries'
|
package/src/utils/mq.ts
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
import type { MediaQuery, Nullable } from '../types'
|
2
|
+
import type { UnistylesBreakpoints } from '../global'
|
3
|
+
import { unistyles } from '../core'
|
4
|
+
|
5
|
+
export const MQSymbol = Symbol('unistyles-mq')
|
6
|
+
|
7
|
+
type MQValue = keyof UnistylesBreakpoints | number
|
8
|
+
|
9
|
+
type MQHandler = {
|
10
|
+
w(wMin?: Nullable<MQValue>, wMax?: MQValue): WidthHandler,
|
11
|
+
width(wMin?: Nullable<MQValue>, wMax?: MQValue): WidthHandler,
|
12
|
+
h(hMin?: Nullable<MQValue>, hMax?: MQValue): HeightHandler,
|
13
|
+
height(hMin?: Nullable<MQValue>, hMax?: MQValue): HeightHandler
|
14
|
+
}
|
15
|
+
|
16
|
+
type HeightHandler = {
|
17
|
+
w(wMin?: Nullable<MQValue>, wMax?: MQValue): MediaQuery,
|
18
|
+
width(wMin?: Nullable<MQValue>, wMax?: MQValue): MediaQuery
|
19
|
+
} & MediaQuery
|
20
|
+
|
21
|
+
type WidthHandler = {
|
22
|
+
h(hMin?: Nullable<MQValue>, hMax?: MQValue): MediaQuery,
|
23
|
+
height(hMin?: Nullable<MQValue>, hMax?: MQValue): MediaQuery
|
24
|
+
} & MediaQuery
|
25
|
+
|
26
|
+
type FinalHandler = {
|
27
|
+
[MQSymbol]: true
|
28
|
+
}
|
29
|
+
|
30
|
+
enum MQProp {
|
31
|
+
toString = 'toString',
|
32
|
+
width = 'width',
|
33
|
+
height = 'height',
|
34
|
+
shortW = 'w',
|
35
|
+
shortH = 'h'
|
36
|
+
}
|
37
|
+
|
38
|
+
const getMQValue = (value: Nullable<MQValue>) => {
|
39
|
+
if (typeof value === 'number') {
|
40
|
+
return value
|
41
|
+
}
|
42
|
+
|
43
|
+
if (value === null) {
|
44
|
+
return 0
|
45
|
+
}
|
46
|
+
|
47
|
+
return unistyles.registry.breakpoints[value] ?? 0
|
48
|
+
}
|
49
|
+
|
50
|
+
const widthHandler = (hMin: Nullable<MQValue> = 0, hMax: MQValue = Infinity) => new Proxy<HeightHandler>({} as HeightHandler, {
|
51
|
+
get: (target, prop, receiver) => {
|
52
|
+
if (prop === Symbol.toPrimitive || prop === MQProp.toString) {
|
53
|
+
return () => `:h[${getMQValue(hMin)}, ${getMQValue(hMax)}]`
|
54
|
+
}
|
55
|
+
|
56
|
+
if (prop === MQProp.width || prop === MQProp.shortW) {
|
57
|
+
return (wMin: MQValue = 0, wMax: MQValue = Infinity) => new Proxy<FinalHandler>({} as FinalHandler, {
|
58
|
+
get: (target, prop, receiver) => {
|
59
|
+
if (prop === Symbol.toPrimitive || prop === MQProp.toString) {
|
60
|
+
return () => `:w[${getMQValue(wMin)}, ${getMQValue(wMax)}]:h[${getMQValue(hMin)}, ${getMQValue(hMax)}]`
|
61
|
+
}
|
62
|
+
|
63
|
+
return Reflect.get(target, prop, receiver)
|
64
|
+
}
|
65
|
+
})
|
66
|
+
}
|
67
|
+
|
68
|
+
return Reflect.get(target, prop, receiver)
|
69
|
+
}
|
70
|
+
})
|
71
|
+
|
72
|
+
const heightHandler = (wMin: Nullable<MQValue> = 0, wMax: MQValue = Infinity) => new Proxy({} as WidthHandler, {
|
73
|
+
get: (target, prop, receiver) => {
|
74
|
+
if (prop === Symbol.toPrimitive || prop === MQProp.toString) {
|
75
|
+
return () => `:w[${getMQValue(wMin)}, ${getMQValue(wMax)}]`
|
76
|
+
}
|
77
|
+
|
78
|
+
if (prop === MQProp.height || prop === MQProp.shortH) {
|
79
|
+
return (hMin: MQValue = 0, hMax: MQValue = Infinity) => new Proxy<FinalHandler>({} as FinalHandler, {
|
80
|
+
get: (target, prop, receiver) => {
|
81
|
+
if (prop === Symbol.toPrimitive || MQProp.toString) {
|
82
|
+
return () => `:w[${getMQValue(wMin)}, ${getMQValue(wMax)}]:h[${getMQValue(hMin)}, ${getMQValue(hMax)}]`
|
83
|
+
}
|
84
|
+
|
85
|
+
return Reflect.get(target, prop, receiver)
|
86
|
+
}
|
87
|
+
})
|
88
|
+
}
|
89
|
+
|
90
|
+
return Reflect.get(target, prop, receiver)
|
91
|
+
}
|
92
|
+
})
|
93
|
+
|
94
|
+
export const mq = new Proxy({} as MQHandler, {
|
95
|
+
get: (target, prop, receiver) => {
|
96
|
+
if (prop === MQProp.shortW || prop === MQProp.width) {
|
97
|
+
return heightHandler
|
98
|
+
}
|
99
|
+
|
100
|
+
if (prop === MQProp.shortH || prop === MQProp.height) {
|
101
|
+
return widthHandler
|
102
|
+
}
|
103
|
+
|
104
|
+
return Reflect.get(target, prop, receiver)
|
105
|
+
}
|
106
|
+
})
|