Skip to content

Commit f2e28e8

Browse files
author
Mohit
committed
added debounce dimension change
1 parent be1e4e8 commit f2e28e8

4 files changed

Lines changed: 13 additions & 11 deletions

File tree

build/Provider.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
33
exports.themeCreator = void 0;
4+
const just_debounce_1 = require("just-debounce");
45
const React = require("react");
56
const react_native_1 = require("react-native");
67
const Constant_1 = require("./Constant");
@@ -33,7 +34,7 @@ function createThemeProvider(sugar, ThemeContext, defaultTheme) {
3334
sugar.configure(newValues);
3435
};
3536
const subscribeToDimensionsChange = () => {
36-
react_native_1.Dimensions.addEventListener('change', onDimensionChange);
37+
react_native_1.Dimensions.addEventListener('change', () => just_debounce_1.default(onDimensionChange, 500));
3738
};
3839
React.useEffect(() => {
3940
subscribeToThemeChanges();
@@ -53,9 +54,6 @@ function themeCreator(sugar, defaultTheme) {
5354
const ThemeProvider = createThemeProvider(sugar, ThemeContext, defaultTheme);
5455
function useTheme() {
5556
const { theme, constants } = React.useContext(ThemeContext);
56-
if (ThemeContext === undefined) {
57-
throw new Error('useTheme must be used within a ThemeProvider');
58-
}
5957
return [theme, constants];
6058
}
6159
function withTheme(WrappedComponent) {

lib/Provider.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import debounce from 'just-debounce';
12
import * as React from 'react';
23
import { Dimensions, ScaledSize } from 'react-native';
34
import {
@@ -55,7 +56,7 @@ function createThemeProvider<T>(
5556
};
5657

5758
const subscribeToDimensionsChange = () => {
58-
Dimensions.addEventListener('change', onDimensionChange);
59+
Dimensions.addEventListener('change', () => debounce(onDimensionChange, 500));
5960
};
6061

6162

@@ -86,11 +87,6 @@ export function themeCreator<T>(sugar: Sugar<T>, defaultTheme: T) {
8687
const ThemeProvider = createThemeProvider(sugar, ThemeContext, defaultTheme);
8788
function useTheme() {
8889
const { theme, constants } = React.useContext(ThemeContext);
89-
90-
if (ThemeContext === undefined) {
91-
throw new Error('useTheme must be used within a ThemeProvider');
92-
}
93-
9490
return [theme, constants];
9591
}
9692
function withTheme<P extends ThemeProp<T>>(

package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-sugar-style",
3-
"version": "0.1.9",
3+
"version": "0.1.20",
44
"description": "React Native Stylesheet alternative with theme support",
55
"author": "mohit23x",
66
"license": "MIT",
@@ -30,5 +30,8 @@
3030
"peerDependencies": {
3131
"react": "*",
3232
"react-native": "*"
33+
},
34+
"dependencies": {
35+
"just-debounce": "^1.1.0"
3336
}
3437
}

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,11 @@ json5@^1.0.1:
951951
array-includes "^3.1.2"
952952
object.assign "^4.1.2"
953953

954+
just-debounce@^1.1.0:
955+
version "1.1.0"
956+
resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf"
957+
integrity sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==
958+
954959
load-json-file@^2.0.0:
955960
version "2.0.0"
956961
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"

0 commit comments

Comments
 (0)