UNPKG

3.11 kBSource Map (JSON)View Raw
1{"version":3,"sources":["useGeolocationState.js"],"names":["useGeolocationState","options","geolocationStandardOptions","position","setPosition","isRetrieving","setRetrieving","isSupported","onChange","savePosition","navigator","geolocation","getCurrentPosition","nextPosition","Object","freeze"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;AAaA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,GAA0C;AAAA,MAAzCC,OAAyC,uEAA/BC,sCAA+B;;AAAA,kBACpC,qBAAS,IAAT,CADoC;AAAA;AAAA,MAC7DC,QAD6D;AAAA,MACnDC,WADmD;;AAAA,mBAE9B,qBAAS,KAAT,CAF8B;AAAA;AAAA,MAE7DC,YAF6D;AAAA,MAE/CC,aAF+C;;AAAA,8BAGlC,uCAAqBL,OAArB,CAHkC;AAAA,MAG5DM,WAH4D,yBAG5DA,WAH4D;AAAA,MAG/CC,QAH+C,yBAG/CA,QAH+C;;AAKpE,MAAMC,YAAY,GAAG,wBAAY,YAAM;AACrC,QAAIN,QAAQ,KAAK,IAAjB,EAAuB;AACrBG,MAAAA,aAAa,CAAC,IAAD,CAAb;AACAI,MAAAA,SAAS,CAACC,WAAV,CAAsBC,kBAAtB,CAAyC,UAACC,YAAD,EAAkB;AACzD,YAAI,CAAC,gCAAeV,QAAf,EAAyBU,YAAzB,CAAL,EAA6C;AAC3CT,UAAAA,WAAW,CAAC,oCAAgBS,YAAhB,CAAD,CAAX;AACAP,UAAAA,aAAa,CAAC,KAAD,CAAb;AACD;AACF,OALD;AAMD;AACF,GAVoB,EAUlB,CAACH,QAAD,CAVkB,CAArB;AAYA,wBAAUM,YAAV,EAAwB,CAACN,QAAD,CAAxB;AACAK,EAAAA,QAAQ,CAACC,YAAD,CAAR;AAEA,SAAOK,MAAM,CAACC,MAAP,CAAc;AACnBR,IAAAA,WAAW,EAAXA,WADmB;AAEnBF,IAAAA,YAAY,EAAZA,YAFmB;AAGnBF,IAAAA,QAAQ,EAARA;AAHmB,GAAd,CAAP;AAKD,CAzBD;;eA2BeH,mB","sourcesContent":["import { useState, useCallback, useEffect } from 'react';\nimport useGeolocationEvents from './useGeolocationEvents';\nimport geolocationStandardOptions from './utils/geolocationStandardOptions';\nimport makePositionObj from './utils/makePositionObject';\nimport isSamePosition from './utils/isSamePosition';\n\n/**\n * Returns a frozen object containing the `position` object, the `isSupported` boolean flag, reporting whether the\n * geolocation API is supported or not and the `isRetrieving` boolean flag reporting whether the hook is fetching the\n * current position.\n * The position is retrieved by using the\n * [Geolocation API](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API/Using_the_Geolocation_API),\n * when supported.<br/><br />\n * It possibly accepts an object of [geolocation options]\n * (https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions) to be used as parameter when using the\n * `Geolocation.getCurrentPosition()` method.\n */\nconst useGeolocationState = (options = geolocationStandardOptions) => {\n const [position, setPosition] = useState(null);\n const [isRetrieving, setRetrieving] = useState(false);\n const { isSupported, onChange } = useGeolocationEvents(options);\n\n const savePosition = useCallback(() => {\n if (position === null) {\n setRetrieving(true);\n navigator.geolocation.getCurrentPosition((nextPosition) => {\n if (!isSamePosition(position, nextPosition)) {\n setPosition(makePositionObj(nextPosition));\n setRetrieving(false);\n }\n });\n }\n }, [position]);\n\n useEffect(savePosition, [position]);\n onChange(savePosition);\n\n return Object.freeze({\n isSupported,\n isRetrieving,\n position,\n });\n};\n\nexport default useGeolocationState;\n"],"file":"useGeolocationState.js"}
\No newline at end of file