@snappmarket/hooks
Advanced tools
Comparing version 0.1.7 to 0.1.8
import { useState, useEffect, useRef, useCallback } from 'react'; | ||
import { useHistory } from 'react-router-dom'; | ||
@@ -136,10 +135,27 @@ /** | ||
/** | ||
* Determine route change | ||
* @param fn | ||
* Debounce setting a value | ||
* @param value | ||
* @param delay | ||
* @returns {[string, fn, fn]} | ||
*/ | ||
var index$2 = fn => { | ||
const history = useHistory(); | ||
useEffect(() => history.listen(fn), [history]); | ||
}; | ||
function useDebounce$1(value, delay) { | ||
// State and setters for debounced value | ||
const [debouncedValue, setDebouncedValue] = useState(value); | ||
let handler; | ||
const canceller = () => { | ||
clearTimeout(handler); | ||
}; | ||
useEffect(() => { | ||
handler = setTimeout(() => { | ||
setDebouncedValue(value); | ||
}, delay); | ||
return canceller; | ||
}, [value]); | ||
return [debouncedValue, canceller, setDebouncedValue]; | ||
} | ||
/** | ||
@@ -150,3 +166,3 @@ * Will count till time or increase time | ||
*/ | ||
var index$3 = config => { | ||
var index$2 = config => { | ||
const initialConfig = { | ||
@@ -242,3 +258,3 @@ endTime : null, | ||
export { useDebounce, index as useDidUpdateEffect, index$1 as useFocus, useForceUpdate, useGeoLocation, index$2 as useRouteChange, index$3 as useTimer }; | ||
export { useDebounce, index as useDidUpdateEffect, index$1 as useFocus, useForceUpdate, useGeoLocation, useDebounce$1 as useRouteChange, index$2 as useTimer }; | ||
//# sourceMappingURL=index.es.js.map |
@@ -6,3 +6,2 @@ 'use strict'; | ||
var react = require('react'); | ||
var reactRouterDom = require('react-router-dom'); | ||
@@ -141,10 +140,27 @@ /** | ||
/** | ||
* Determine route change | ||
* @param fn | ||
* Debounce setting a value | ||
* @param value | ||
* @param delay | ||
* @returns {[string, fn, fn]} | ||
*/ | ||
var index$2 = fn => { | ||
const history = reactRouterDom.useHistory(); | ||
react.useEffect(() => history.listen(fn), [history]); | ||
}; | ||
function useDebounce$1(value, delay) { | ||
// State and setters for debounced value | ||
const [debouncedValue, setDebouncedValue] = react.useState(value); | ||
let handler; | ||
const canceller = () => { | ||
clearTimeout(handler); | ||
}; | ||
react.useEffect(() => { | ||
handler = setTimeout(() => { | ||
setDebouncedValue(value); | ||
}, delay); | ||
return canceller; | ||
}, [value]); | ||
return [debouncedValue, canceller, setDebouncedValue]; | ||
} | ||
/** | ||
@@ -155,3 +171,3 @@ * Will count till time or increase time | ||
*/ | ||
var index$3 = config => { | ||
var index$2 = config => { | ||
const initialConfig = { | ||
@@ -252,4 +268,4 @@ endTime : null, | ||
exports.useGeoLocation = useGeoLocation; | ||
exports.useRouteChange = index$2; | ||
exports.useTimer = index$3; | ||
exports.useRouteChange = useDebounce$1; | ||
exports.useTimer = index$2; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@snappmarket/hooks", | ||
"private": false, | ||
"version": "0.1.7", | ||
"version": "0.1.8", | ||
"author": "Jafar Rezaei (SayJeyHi) <jafar.rezaei.ard@gmail.com>", | ||
@@ -54,3 +54,3 @@ "main": "dist/index.js", | ||
}, | ||
"gitHead": "44fc66732424c5e91b84a1999fe9f27f0782615a" | ||
"gitHead": "2891d6c501ca3327b480157c09c16cd8654cbdbb" | ||
} |
{ | ||
"name": "@snappmarket/use-debounce", | ||
"private": false, | ||
"version": "0.1.5", | ||
"version": "0.1.6", | ||
"author": "Jafar Rezaei (SayJeyHi) <jafar.rezaei.ard@gmail.com>", | ||
@@ -19,23 +19,9 @@ "main": "index.js", | ||
"useDebounce", | ||
"debounce-hook", | ||
"useEffect-update", | ||
"useUpdateEffect", | ||
"useDidUpdateEffect", | ||
"useFocus", | ||
"focus-hook", | ||
"useForceUpdate", | ||
"forceUpdate-hook", | ||
"geolocation-hook", | ||
"useGeolocation", | ||
"routeChangeDetect", | ||
"routeChange-hook", | ||
"useRouteChange", | ||
"useTimer", | ||
"timer-hook" | ||
"debounce-hook" | ||
], | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/snappmarket/react-hooks" | ||
"url": "https://github.com/snappmarket/react-hooks/tree/master/packages/hooks/packages/useDebounce" | ||
}, | ||
"gitHead": "44fc66732424c5e91b84a1999fe9f27f0782615a" | ||
"gitHead": "2891d6c501ca3327b480157c09c16cd8654cbdbb" | ||
} |
# useDebounce | ||
> ๐งต do not worry about render phase effect calls | ||
> ๐ change rapidly, do once | ||
---- | ||
@@ -13,20 +13,61 @@ | ||
## get started | ||
We provide two way of using this package `single` or `multi` : | ||
```bash | ||
npm i @snappmarket/use-debounce | ||
OR | ||
npm i @snappmarket/hooks | ||
``` | ||
## usage | ||
```javascript | ||
import useDebounce from '@snappmarket/use-debounce'; | ||
// or | ||
// import { useDebounce } from '@snappmarket/hooks'; | ||
const MyComponenet = props => { | ||
const [value, setValue] = useState(''); | ||
const [debouncedValue] = useDebounce(value, 200); | ||
/** | ||
* Call api based on debounced value | ||
*/ | ||
useEffect(() => { | ||
// do something with debounce | ||
}, [debouncedValue]); | ||
}; | ||
``` | ||
### source code | ||
```javascript | ||
import { useRef, useEffect } from 'react'; | ||
import { useState, useEffect } from 'react'; | ||
/** | ||
* Calls function on component update or inputs change phase | ||
* @param fn | ||
* @param inputs | ||
* Debounce setting a value | ||
* @param value | ||
* @param delay | ||
* @returns {[string, fn, fn]} | ||
*/ | ||
export default (fn, inputs) => { | ||
const didMountRef = useRef(false); | ||
export default function useDebounce(value, delay) { | ||
// State and setters for debounced value | ||
const [debouncedValue, setDebouncedValue] = useState(value); | ||
let handler; | ||
const canceller = () => { | ||
clearTimeout(handler); | ||
}; | ||
useEffect(() => { | ||
if (didMountRef.current) fn(); | ||
else didMountRef.current = true; | ||
}, inputs); | ||
}; | ||
handler = setTimeout(() => { | ||
setDebouncedValue(value); | ||
}, delay); | ||
return canceller; | ||
}, [value]); | ||
return [debouncedValue, canceller, setDebouncedValue]; | ||
} | ||
``` |
{ | ||
"name": "@snappmarket/use-did-update-effect", | ||
"private": false, | ||
"version": "0.1.5", | ||
"version": "0.1.6", | ||
"author": "Jafar Rezaei (SayJeyHi) <jafar.rezaei.ard@gmail.com>", | ||
@@ -26,5 +26,5 @@ "main": "index.js", | ||
"type": "git", | ||
"url": "https://github.com/snappmarket/react-hooks" | ||
"url": "https://github.com/snappmarket/react-hooks/tree/master/packages/hooks/packages/useDidUpdateEffect" | ||
}, | ||
"gitHead": "44fc66732424c5e91b84a1999fe9f27f0782615a" | ||
"gitHead": "2891d6c501ca3327b480157c09c16cd8654cbdbb" | ||
} |
@@ -1,2 +0,2 @@ | ||
# useDebounce | ||
# useDidUpdateEffect | ||
> ๐งต do not worry about render phase effect calls | ||
@@ -13,2 +13,28 @@ ---- | ||
## get started | ||
We provide two way of using this package `single` or `multi` : | ||
```bash | ||
npm i @snappmarket/use-did-update-effect | ||
OR | ||
npm i @snappmarket/hooks | ||
``` | ||
## usage | ||
```javascript | ||
import useDidUpdateEffect from '@snappmarket/use-did-update-effect'; | ||
// or | ||
// import { useDidUpdateEffect } from '@snappmarket/hooks'; | ||
const MyComponenet = props => { | ||
/** | ||
* Do not run on render | ||
*/ | ||
useDidUpdateEffect(() => { | ||
// I will run only when my dependencies update | ||
}, [deps]); | ||
}; | ||
``` | ||
### source code | ||
@@ -31,3 +57,2 @@ ```javascript | ||
}; | ||
``` |
{ | ||
"name": "@snappmarket/use-focus", | ||
"private": false, | ||
"version": "0.1.5", | ||
"version": "0.1.6", | ||
"author": "Jafar Rezaei (SayJeyHi) <jafar.rezaei.ard@gmail.com>", | ||
@@ -25,5 +25,5 @@ "main": "index.js", | ||
"type": "git", | ||
"url": "https://github.com/snappmarket/react-hooks" | ||
"url": "https://github.com/snappmarket/react-hooks/tree/master/packages/hooks/packages/useFocus" | ||
}, | ||
"gitHead": "44fc66732424c5e91b84a1999fe9f27f0782615a" | ||
"gitHead": "2891d6c501ca3327b480157c09c16cd8654cbdbb" | ||
} |
@@ -1,3 +0,3 @@ | ||
# useDebounce | ||
> ๐งต do not worry about render phase effect calls | ||
# useFocus | ||
> ๐ต focus on every thing you want | ||
---- | ||
@@ -13,20 +13,43 @@ | ||
## get started | ||
We provide two way of using this package `single` or `multi` : | ||
```bash | ||
npm i @snappmarket/use-focus | ||
OR | ||
npm i @snappmarket/hooks | ||
``` | ||
## usage | ||
```javascript | ||
import useFocus from '@snappmarket/use-did-update-effect'; | ||
// or | ||
// import { useFocus } from '@snappmarket/hooks'; | ||
const MyComponenet = props => { | ||
const focusRef = useFocus(null); | ||
return (<input type="text" ref={focusRef}/>) | ||
}; | ||
``` | ||
### source code | ||
```javascript | ||
import { useRef, useEffect } from 'react'; | ||
import { useEffect, useRef } from 'react'; | ||
/** | ||
* Calls function on component update or inputs change phase | ||
* @param fn | ||
* @param inputs | ||
* Focus on a ref after render | ||
* @param initialRef | ||
* @returns {React.MutableRefObject<*>} | ||
*/ | ||
export default (fn, inputs) => { | ||
const didMountRef = useRef(false); | ||
export default initialRef => { | ||
const ref = useRef(initialRef); | ||
useEffect(() => { | ||
setTimeout(() => { | ||
ref.current.focus(); | ||
}, 100); | ||
}, []); | ||
useEffect(() => { | ||
if (didMountRef.current) fn(); | ||
else didMountRef.current = true; | ||
}, inputs); | ||
return ref; | ||
}; | ||
``` |
{ | ||
"name": "@snappmarket/use-force-update", | ||
"private": false, | ||
"version": "0.1.5", | ||
"version": "0.1.6", | ||
"author": "Jafar Rezaei (SayJeyHi) <jafar.rezaei.ard@gmail.com>", | ||
@@ -25,5 +25,5 @@ "main": "index.js", | ||
"type": "git", | ||
"url": "https://github.com/snappmarket/react-hooks" | ||
"url": "https://github.com/snappmarket/react-hooks/tree/master/packages/hooks/packages/useForceUpdate" | ||
}, | ||
"gitHead": "44fc66732424c5e91b84a1999fe9f27f0782615a" | ||
"gitHead": "2891d6c501ca3327b480157c09c16cd8654cbdbb" | ||
} |
@@ -1,3 +0,3 @@ | ||
# useDebounce | ||
> ๐งต do not worry about render phase effect calls | ||
# useForceUpdate | ||
> ๐ฟ force update component | ||
---- | ||
@@ -13,20 +13,44 @@ | ||
## get started | ||
We provide two way of using this package `single` or `multi` : | ||
```bash | ||
npm i @snappmarket/use-force-update | ||
OR | ||
npm i @snappmarket/hooks | ||
``` | ||
## usage | ||
```javascript | ||
import useForceUpdate from '@snappmarket/use-force-update'; | ||
// or | ||
// import { useForceUpdate } from '@snappmarket/hooks'; | ||
const MyComponenet = props => { | ||
const forceUpdate = useForceUpdate(null); | ||
const handleSomeThing = () => { | ||
// do some thing | ||
forceUpdate(); | ||
}; | ||
return (<div>meow ๐ฑโ</div>) | ||
}; | ||
``` | ||
### source code | ||
```javascript | ||
import { useRef, useEffect } from 'react'; | ||
import { useState, useCallback } from 'react'; | ||
/** | ||
* Calls function on component update or inputs change phase | ||
* @param fn | ||
* @param inputs | ||
* Force component re-render | ||
* @returns {Function} | ||
*/ | ||
export default (fn, inputs) => { | ||
const didMountRef = useRef(false); | ||
useEffect(() => { | ||
if (didMountRef.current) fn(); | ||
else didMountRef.current = true; | ||
}, inputs); | ||
}; | ||
export default function useForceUpdate() { | ||
const [, setTick] = useState(0); | ||
return useCallback(() => { | ||
setTick(tick => tick + 1); | ||
}, []); | ||
} | ||
``` |
{ | ||
"name": "@snappmarket/use-geolocation", | ||
"private": false, | ||
"version": "0.1.5", | ||
"version": "0.1.6", | ||
"author": "Jafar Rezaei (SayJeyHi) <jafar.rezaei.ard@gmail.com>", | ||
@@ -42,3 +42,3 @@ "main": "index.js", | ||
}, | ||
"gitHead": "44fc66732424c5e91b84a1999fe9f27f0782615a" | ||
"gitHead": "2891d6c501ca3327b480157c09c16cd8654cbdbb" | ||
} |
@@ -1,3 +0,3 @@ | ||
# useDebounce | ||
> ๐งต do not worry about render phase effect calls | ||
# useGeoLocation | ||
> ๐บ easily deal with navigator location API | ||
---- | ||
@@ -13,20 +13,93 @@ | ||
## get started | ||
We provide two way of using this package `single` or `multi` : | ||
```bash | ||
npm i @snappmarket/use-geolocation | ||
OR | ||
npm i @snappmarket/hooks | ||
``` | ||
## usage | ||
```javascript | ||
import useGeoLocation from '@snappmarket/use-geolocation'; | ||
// or | ||
// import { useGeoLocation } from '@snappmarket/hooks'; | ||
const MyComponenet = props => { | ||
const [position, error] = useGeoLocation(LOCATION_ACCESS_TIMEOUT || 5000); | ||
}; | ||
``` | ||
### source code | ||
```javascript | ||
import { useRef, useEffect } from 'react'; | ||
import { useEffect, useState } from 'react'; | ||
/** | ||
* Calls function on component update or inputs change phase | ||
* @param fn | ||
* @param inputs | ||
* Get access to geo location based on timeout | ||
* @note : if timeout error it will send TIMEOUT as error | ||
* @param timeout number | ||
* @param options object for getCurrentPosition options | ||
* @returns {[*, *]} | ||
*/ | ||
export default (fn, inputs) => { | ||
const didMountRef = useRef(false); | ||
const useGeoLocation = (timeout, options) => { | ||
let timeoutHandler; | ||
let canceled = false; | ||
const [position, setPosition] = useState(); | ||
const [error, setError] = useState(); | ||
useEffect(() => { | ||
if (didMountRef.current) fn(); | ||
else didMountRef.current = true; | ||
}, inputs); | ||
/** | ||
* Handle timeout clear | ||
*/ | ||
const timeoutCanceler = () => { | ||
clearTimeout(timeoutHandler); | ||
}; | ||
/** | ||
* Success getting geolocation | ||
* @param pos | ||
*/ | ||
const successGetLocation = pos => { | ||
if (!canceled) { | ||
setPosition(pos); | ||
} | ||
timeoutCanceler(); | ||
}; | ||
/** | ||
* Failure getting geolocation | ||
* @param err | ||
*/ | ||
const failGetLocation = err => { | ||
if (!canceled) { | ||
setError(err); | ||
} | ||
timeoutCanceler(); | ||
}; | ||
timeoutHandler = setTimeout(() => { | ||
setError('TIMEOUT'); | ||
}, timeout); | ||
/** | ||
* Get geolocation access of navigator | ||
*/ | ||
navigator.geolocation.getCurrentPosition( | ||
successGetLocation, | ||
failGetLocation, | ||
options | ||
); | ||
return () => { | ||
canceled = true; | ||
}; | ||
}, [options]); | ||
return [position, error]; | ||
}; | ||
export default useGeoLocation; | ||
``` |
@@ -1,11 +0,27 @@ | ||
import { useEffect } from 'react'; | ||
import { useHistory } from 'react-router-dom'; | ||
import { useState, useEffect } from 'react'; | ||
/** | ||
* Determine route change | ||
* @param fn | ||
* Debounce setting a value | ||
* @param value | ||
* @param delay | ||
* @returns {[string, fn, fn]} | ||
*/ | ||
export default fn => { | ||
const history = useHistory(); | ||
useEffect(() => history.listen(fn), [history]); | ||
}; | ||
export default function useDebounce(value, delay) { | ||
// State and setters for debounced value | ||
const [debouncedValue, setDebouncedValue] = useState(value); | ||
let handler; | ||
const canceller = () => { | ||
clearTimeout(handler); | ||
}; | ||
useEffect(() => { | ||
handler = setTimeout(() => { | ||
setDebouncedValue(value); | ||
}, delay); | ||
return canceller; | ||
}, [value]); | ||
return [debouncedValue, canceller, setDebouncedValue]; | ||
} |
{ | ||
"name": "@snappmarket/use-route-change", | ||
"private": false, | ||
"version": "0.1.5", | ||
"version": "0.1.6", | ||
"author": "Jafar Rezaei (SayJeyHi) <jafar.rezaei.ard@gmail.com>", | ||
@@ -28,3 +28,3 @@ "main": "index.js", | ||
}, | ||
"gitHead": "44fc66732424c5e91b84a1999fe9f27f0782615a" | ||
"gitHead": "2891d6c501ca3327b480157c09c16cd8654cbdbb" | ||
} |
@@ -1,3 +0,3 @@ | ||
# useDebounce | ||
> ๐งต do not worry about render phase effect calls | ||
# useRouteChange | ||
> ๐น detect when react router dom route changes | ||
---- | ||
@@ -13,20 +13,54 @@ | ||
## get started | ||
We provide two way of using this package `single` or `multi` : | ||
```bash | ||
npm i @snappmarket/use-route-change | ||
OR | ||
npm i @snappmarket/hooks | ||
``` | ||
## usage | ||
```javascript | ||
import useRouteChange from '@snappmarket/use-route-change'; | ||
// or | ||
// import { useRouteChange } from '@snappmarket/hooks'; | ||
const MyComponenet = props => { | ||
useRouteChange(() => { | ||
// do sth here | ||
}); | ||
}; | ||
``` | ||
### source code | ||
```javascript | ||
import { useRef, useEffect } from 'react'; | ||
import { useState, useEffect } from 'react'; | ||
/** | ||
* Calls function on component update or inputs change phase | ||
* @param fn | ||
* @param inputs | ||
* Debounce setting a value | ||
* @param value | ||
* @param delay | ||
* @returns {[string, fn, fn]} | ||
*/ | ||
export default (fn, inputs) => { | ||
const didMountRef = useRef(false); | ||
export default function useDebounce(value, delay) { | ||
// State and setters for debounced value | ||
const [debouncedValue, setDebouncedValue] = useState(value); | ||
let handler; | ||
const canceller = () => { | ||
clearTimeout(handler); | ||
}; | ||
useEffect(() => { | ||
if (didMountRef.current) fn(); | ||
else didMountRef.current = true; | ||
}, inputs); | ||
}; | ||
handler = setTimeout(() => { | ||
setDebouncedValue(value); | ||
}, delay); | ||
return canceller; | ||
}, [value]); | ||
return [debouncedValue, canceller, setDebouncedValue]; | ||
} | ||
``` |
{ | ||
"name": "@snappmarket/use-timer", | ||
"private": false, | ||
"version": "0.1.5", | ||
"version": "0.1.6", | ||
"author": "Jafar Rezaei (SayJeyHi) <jafar.rezaei.ard@gmail.com>", | ||
@@ -24,3 +24,3 @@ "main": "index.js", | ||
}, | ||
"gitHead": "44fc66732424c5e91b84a1999fe9f27f0782615a" | ||
"gitHead": "2891d6c501ca3327b480157c09c16cd8654cbdbb" | ||
} |
@@ -13,2 +13,27 @@ # useTimer | ||
## get started | ||
We provide two way of using this package `single` or `multi` : | ||
```bash | ||
npm i @snappmarket/use-timer | ||
OR | ||
npm i @snappmarket/hooks | ||
``` | ||
## usage | ||
```javascript | ||
import useTimer from '@snappmarket/use-timer'; | ||
// or | ||
// import { useTimer } from '@snappmarket/hooks'; | ||
const MyComponenet = props => { | ||
const { time, start: startTimer, reset: resetTimer } = useTimer({ | ||
endTime: 0, | ||
initialTime: 100, | ||
timerType: 'DECREMENTAL', | ||
}); | ||
}; | ||
``` | ||
### source code | ||
@@ -113,3 +138,4 @@ ```javascript | ||
}; | ||
``` | ||
``` | ||
@@ -0,1 +1,4 @@ | ||
# Our apps re-usable hooks | ||
> โ hooks are good, making custom re-usable ones is better | ||
<p align="center"> | ||
@@ -8,3 +11,2 @@ <img src="./logo.png" alt="react hooks" /> | ||
> ๐งต do not worry about render phase effect calls | ||
---- | ||
@@ -23,28 +25,32 @@ | ||
| | | | ||
| ------------------------------------- | ----------------------------------------------------------------------------------------- | | ||
| [useDebounce](packages/useDebounce) | Debounce on value change | | ||
| [auto-install](packages/auto-install) | Automatically install dependencies that are imported by a bundle. | | ||
| [beep](packages/beep) | System beeps on errors and warnings | | ||
| [buble](packages/buble) | Compile ES2015 with buble | | ||
| [commonjs](packages/commonjs) | Convert CommonJS modules to ES6 | | ||
| [data-uri](packages/data-uri) | Import modules from Data URIs | | ||
| [dsv](packages/dsv) | Convert .csv and .tsv files into JavaScript modules with d3-dsv | | ||
| [html](packages/html) | Creates HTML files to serve Rollup bundles | | ||
| [image](packages/image) | Import JPG, PNG, GIF, SVG, and WebP files | | ||
| [inject](packages/inject) | Scan modules for global variables and injects `import` statements where necessary | | ||
| [json](packages/json) | Convert .json files to ES6 modules | | ||
| [legacy](packages/legacy) | Add `export` declarations to legacy non-module scripts | | ||
| [multi-entry](packages/multi-entry) | Use multiple entry points for a bundle | | ||
| [node-resolve](packages/node-resolve) | Locate and bundle third-party dependencies in node_modules | | ||
| [replace](packages/replace) | Replace strings in files while bundling | | ||
| [run](packages/run) | Run your bundles in Node once they're built | | ||
| [strip](packages/strip) | Remove debugger statements and functions like assert.equal and console.log from your code | | ||
| [sucrase](packages/sucrase) | Compile TypeScript, Flow, JSX, etc with Sucrase | | ||
| [typescript](packages/typescript) | Integration between Rollup and Typescript | | ||
| [url](packages/url) | Import files as data-URIs or ES Modules | | ||
| [virtual](packages/virtual) | Load virtual modules from memory | | ||
| [wasm](packages/wasm) | Import WebAssembly code with Rollup | | ||
| [yaml](packages/yaml) | Convert YAML files to ES6 modules | | ||
| | | | ||
| Hook Name | Description | | ||
| ------------------------------------------------- | ---------------------------------------------------------------- | | ||
| [useDebounce](packages/useDebounce) | ๐ Change rapidly, do once | | ||
| [useDidUpdateEffect](packages/useDidUpdateEffect) | ๐งต Do not worry about render phase effect calls | | ||
| [useFocus](packages/useFocus) | ๐ต Focus on every thing you want | | ||
| [useForceUpdate](packages/useForceUpdate) | ๐ฟ force update component | | ||
| [useGeoLocation](packages/useGeoLocation) | ๐บ easily deal with navigator location API | | ||
| [useRouteChange](packages/useRouteChange) | ๐น detect when react router dom route changes | | ||
| [useTimer](packages/useTimer) | โฑ easily handle timing | | ||
#### The MIT License (MIT) | ||
Copyright (c) 2020 snappmarket | ||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
133047
729
55