@dfds-ui/hooks 2.2.0-alpha.8b995955 → 2.2.0-alpha.8f6cde13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -3,20 +3,20 @@
3
3
  "description": "React hooks",
4
4
  "license": "MIT",
5
5
  "private": false,
6
- "version": "2.2.0-alpha.8b995955",
6
+ "version": "2.2.0-alpha.8f6cde13",
7
7
  "sideEffects": false,
8
8
  "main": "./cjs/index.js",
9
9
  "module": "./index.js",
10
10
  "esnext": "./index.js",
11
11
  "typings": "./index.d.ts",
12
12
  "peerDependencies": {
13
- "react": ">= 17.0.2",
14
- "react-dom": ">= 17.0.2"
13
+ "react": ">= 18.3.1",
14
+ "react-dom": ">= 18.3.1"
15
15
  },
16
16
  "dependencies": {
17
- "use-resize-observer": "^9.0.2"
17
+ "use-resize-observer": "^9.1.0"
18
18
  },
19
- "gitHead": "8b995955f3d03a596dd93635edb37bc761d1e8f0",
19
+ "gitHead": "8f6cde130b50adb872265534050786c59541a8ac",
20
20
  "publishConfig": {
21
21
  "access": "public"
22
22
  }
package/cjs/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- export { default as useScript } from './useScript';
2
- export { default as useResizeObserver } from './useResizeObserver';
3
- export { default as useForwardedRef } from './useForwardedRef';
4
- export { default as useOffline } from './useOffline';
5
- export { default as useDimensions } from './useDimensions';
6
- export * from './useGoogleReCaptchaV3';
package/cjs/index.js DELETED
@@ -1,60 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _exportNames = {
7
- useScript: true,
8
- useResizeObserver: true,
9
- useForwardedRef: true,
10
- useOffline: true,
11
- useDimensions: true
12
- };
13
- Object.defineProperty(exports, "useDimensions", {
14
- enumerable: true,
15
- get: function () {
16
- return _useDimensions.default;
17
- }
18
- });
19
- Object.defineProperty(exports, "useForwardedRef", {
20
- enumerable: true,
21
- get: function () {
22
- return _useForwardedRef.default;
23
- }
24
- });
25
- Object.defineProperty(exports, "useOffline", {
26
- enumerable: true,
27
- get: function () {
28
- return _useOffline.default;
29
- }
30
- });
31
- Object.defineProperty(exports, "useResizeObserver", {
32
- enumerable: true,
33
- get: function () {
34
- return _useResizeObserver.default;
35
- }
36
- });
37
- Object.defineProperty(exports, "useScript", {
38
- enumerable: true,
39
- get: function () {
40
- return _useScript.default;
41
- }
42
- });
43
- var _useScript = _interopRequireDefault(require("./useScript"));
44
- var _useResizeObserver = _interopRequireDefault(require("./useResizeObserver"));
45
- var _useForwardedRef = _interopRequireDefault(require("./useForwardedRef"));
46
- var _useOffline = _interopRequireDefault(require("./useOffline"));
47
- var _useDimensions = _interopRequireDefault(require("./useDimensions"));
48
- var _useGoogleReCaptchaV = require("./useGoogleReCaptchaV3");
49
- Object.keys(_useGoogleReCaptchaV).forEach(function (key) {
50
- if (key === "default" || key === "__esModule") return;
51
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
52
- if (key in exports && exports[key] === _useGoogleReCaptchaV[key]) return;
53
- Object.defineProperty(exports, key, {
54
- enumerable: true,
55
- get: function () {
56
- return _useGoogleReCaptchaV[key];
57
- }
58
- });
59
- });
60
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,16 +0,0 @@
1
- export interface DimensionObject {
2
- width: number;
3
- height: number;
4
- top: number;
5
- left: number;
6
- x: number;
7
- y: number;
8
- right: number;
9
- bottom: number;
10
- }
11
- export type UseDimensionsHook = [(node: HTMLElement | null) => void, DimensionObject, HTMLElement | null];
12
- export interface UseDimensionsArgs {
13
- liveMeasure?: boolean;
14
- }
15
- declare function useDimensions({ liveMeasure }?: UseDimensionsArgs): UseDimensionsHook;
16
- export default useDimensions;
@@ -1,66 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _react = require("react");
8
- /* eslint-disable @typescript-eslint/ban-ts-comment */
9
-
10
- const EMPTY_DIMENSION_OBJECT = {
11
- width: 0,
12
- height: 0,
13
- top: 0,
14
- left: 0,
15
- x: 0,
16
- y: 0,
17
- right: 0,
18
- bottom: 0
19
- };
20
- function getDimensionObject(node) {
21
- const rect = node.getBoundingClientRect();
22
- /** @ts-ignore */
23
- const left = 'x' in rect ? rect.x : rect.left;
24
- /** @ts-ignore */
25
- const top = 'y' in rect ? rect.y : rect.top;
26
- return {
27
- width: rect.width,
28
- height: rect.height,
29
- x: left,
30
- y: top,
31
- top: top,
32
- left: left,
33
- right: rect.right,
34
- bottom: rect.bottom
35
- };
36
- }
37
- function useDimensions({
38
- liveMeasure = true
39
- } = {}) {
40
- const [dimensions, setDimensions] = (0, _react.useState)(EMPTY_DIMENSION_OBJECT);
41
- const [node, setNode] = (0, _react.useState)(null);
42
- const ref = (0, _react.useCallback)(node => {
43
- setNode(node);
44
- }, []);
45
- const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? _react.useLayoutEffect : _react.useEffect;
46
- useIsomorphicLayoutEffect(() => {
47
- if (node) {
48
- const measure = () => window.requestAnimationFrame(() => setDimensions(getDimensionObject(node)));
49
- measure();
50
- if (liveMeasure) {
51
- window.addEventListener('resize', measure);
52
- window.addEventListener('scroll', measure);
53
- return () => {
54
- window.removeEventListener('resize', measure);
55
- window.removeEventListener('scroll', measure);
56
- };
57
- }
58
- }
59
- return () => {
60
- /* no-op */
61
- };
62
- }, [liveMeasure, node]);
63
- return [ref, dimensions, node];
64
- }
65
- var _default = useDimensions;
66
- exports.default = _default;
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- declare function useForwardedRef<T>(forwardedRef: ((instance: T | null) => void) | React.MutableRefObject<T | null> | null): React.RefObject<T>;
3
- export default useForwardedRef;
@@ -1,24 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- function useForwardedRef(forwardedRef) {
10
- const innerRef = _react.default.useRef(null);
11
- _react.default.useEffect(() => {
12
- if (!forwardedRef) {
13
- return;
14
- }
15
- if (typeof forwardedRef === 'function') {
16
- forwardedRef(innerRef.current);
17
- } else {
18
- forwardedRef.current = innerRef.current;
19
- }
20
- }, [forwardedRef]);
21
- return innerRef;
22
- }
23
- var _default = useForwardedRef;
24
- exports.default = _default;
@@ -1,18 +0,0 @@
1
- declare global {
2
- interface Window {
3
- grecaptcha: any;
4
- }
5
- }
6
- export type GoogleReCaptchaV3Options = {
7
- /**
8
- * The `sitekey` to use with reCAPTCHA v3.
9
- * https://developers.google.com/recaptcha/docs/v3
10
- */
11
- siteKey: string;
12
- /**
13
- * Disable ReCaptcha preventing the script from loading and return undefined from the execute function.
14
- * This is useful when consumer needs to conditionally enable or disable ReCaptcha
15
- */
16
- disabled?: boolean;
17
- };
18
- export declare function useGoogleReCaptchaV3({ siteKey, disabled }: GoogleReCaptchaV3Options): (action?: string) => Promise<string | undefined>;
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useGoogleReCaptchaV3 = useGoogleReCaptchaV3;
7
- var _react = require("react");
8
- var _useScript = _interopRequireDefault(require("./useScript"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- function useGoogleReCaptchaV3({
11
- siteKey,
12
- disabled = false
13
- }) {
14
- // Load ReCaptcha script.
15
- const [loaded, error] = (0, _useScript.default)(`https://www.google.com/recaptcha/api.js?render=${siteKey}`, disabled);
16
- (0, _react.useEffect)(() => {
17
- if (loaded && !disabled) {
18
- // eslint-disable-next-line no-console
19
- console.log('Google ReCaptcha script loaded!');
20
- }
21
- if (error) throw new Error('Google ReCaptcha script failed to load');
22
- }, [loaded, error, disabled]);
23
- const executeReCaptcha = (0, _react.useCallback)(async action => {
24
- if (!window) {
25
- throw new Error('ERROR: NOT A WEB BROWSER');
26
- }
27
- if (disabled) {
28
- return Promise.resolve(undefined);
29
- }
30
- const {
31
- grecaptcha
32
- } = window;
33
- if (!grecaptcha) {
34
- throw new Error('ERROR: SCRIPT NOT AVAILABLE');
35
- }
36
- return new Promise(resolve => {
37
- // Invoke the ReCaptcha check.
38
- grecaptcha.ready(() => {
39
- grecaptcha.execute(siteKey, {
40
- action
41
- }).then(token => {
42
- resolve(token);
43
- });
44
- });
45
- });
46
- }, [siteKey, disabled]);
47
- return executeReCaptcha;
48
- }
@@ -1,5 +0,0 @@
1
- declare const useOffline: () => {
2
- isOnline: boolean;
3
- isOffline: boolean;
4
- };
5
- export default useOffline;
package/cjs/useOffline.js DELETED
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _react = require("react");
8
- const getOnLineStatus = () => typeof window !== 'undefined' && typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean' ? navigator.onLine : true;
9
- const useOffline = () => {
10
- const [status, setStatus] = (0, _react.useState)(getOnLineStatus());
11
- const setOnline = () => setStatus(true);
12
- const setOffline = () => setStatus(false);
13
- (0, _react.useEffect)(() => {
14
- window.addEventListener('online', setOnline);
15
- window.addEventListener('offline', setOffline);
16
- return () => {
17
- window.removeEventListener('online', setOnline);
18
- window.removeEventListener('offline', setOffline);
19
- };
20
- }, []);
21
- return {
22
- isOnline: status,
23
- isOffline: !status
24
- };
25
- };
26
- var _default = useOffline;
27
- exports.default = _default;
@@ -1,2 +0,0 @@
1
- import useResizeObserver from 'use-resize-observer/polyfilled';
2
- export default useResizeObserver;
@@ -1,10 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _polyfilled = _interopRequireDefault(require("use-resize-observer/polyfilled"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- var _default = _polyfilled.default;
10
- exports.default = _default;
@@ -1,8 +0,0 @@
1
- /**
2
- * Hook for loading external script
3
- * @param {string} src - The URL of the script
4
- * @param {boolean} [doNotLoad=false] - If set to true the script will not be loaded
5
- * This can be handy because hooks can not be called conditionally by the consumer
6
- */
7
- declare function useScript(src: string, doNotLoad?: boolean): boolean[];
8
- export default useScript;
package/cjs/useScript.js DELETED
@@ -1,93 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _react = require("react");
8
- class Script {
9
- constructor(src) {
10
- this.state = 'PENDING';
11
- this.listeners = [];
12
- const script = document.createElement('script');
13
- script.src = src;
14
- script.async = true;
15
- const load = () => {
16
- this.state = 'LOADED';
17
- script.removeEventListener('load', load);
18
- this.emitState();
19
- };
20
- const error = () => {
21
- this.state = 'ERROR';
22
- script.removeEventListener('error', error);
23
- this.emitState();
24
- };
25
- script.addEventListener('load', load);
26
- script.addEventListener('error', error);
27
- document.body.appendChild(script);
28
- }
29
- onStateChange(cb) {
30
- this.listeners.push(cb);
31
- return () => {
32
- this.listeners = this.listeners.filter(fn => fn !== cb);
33
- };
34
- }
35
- emitState() {
36
- for (const cb of this.listeners) {
37
- cb(this.state);
38
- }
39
- }
40
- }
41
- const scripts = new Map();
42
-
43
- /**
44
- * Hook for loading external script
45
- * @param {string} src - The URL of the script
46
- * @param {boolean} [doNotLoad=false] - If set to true the script will not be loaded
47
- * This can be handy because hooks can not be called conditionally by the consumer
48
- */
49
- function useScript(src, doNotLoad = false) {
50
- // Keeping track of script loaded and error state
51
- const [state, setState] = (0, _react.useState)({
52
- loaded: false,
53
- error: false
54
- });
55
- (0, _react.useEffect)(() => {
56
- // If doNotLoad we return early so the script will not be loaded
57
- if (doNotLoad) {
58
- setState({
59
- loaded: true,
60
- error: false
61
- });
62
- return;
63
- }
64
-
65
- // If scripts already includes src it means that the script was already
66
- // loaded by another instance of the hook, so no need to load again
67
- const script = scripts.get(src) || scripts.set(src, new Script(src)).get(src);
68
- if (script.state === 'LOADED') {
69
- setState({
70
- loaded: true,
71
- error: false
72
- });
73
- return;
74
- }
75
- return script.onStateChange(state => {
76
- if (state === 'ERROR') {
77
- scripts.delete(src);
78
- setState({
79
- loaded: true,
80
- error: true
81
- });
82
- } else {
83
- setState({
84
- loaded: true,
85
- error: false
86
- });
87
- }
88
- });
89
- }, [src, doNotLoad]);
90
- return [state.loaded, state.error];
91
- }
92
- var _default = useScript;
93
- exports.default = _default;
package/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- export { default as useScript } from './useScript';
2
- export { default as useResizeObserver } from './useResizeObserver';
3
- export { default as useForwardedRef } from './useForwardedRef';
4
- export { default as useOffline } from './useOffline';
5
- export { default as useDimensions } from './useDimensions';
6
- export * from './useGoogleReCaptchaV3';
package/index.js DELETED
@@ -1,6 +0,0 @@
1
- export { default as useScript } from './useScript';
2
- export { default as useResizeObserver } from './useResizeObserver';
3
- export { default as useForwardedRef } from './useForwardedRef';
4
- export { default as useOffline } from './useOffline';
5
- export { default as useDimensions } from './useDimensions';
6
- export * from './useGoogleReCaptchaV3';
@@ -1,16 +0,0 @@
1
- export interface DimensionObject {
2
- width: number;
3
- height: number;
4
- top: number;
5
- left: number;
6
- x: number;
7
- y: number;
8
- right: number;
9
- bottom: number;
10
- }
11
- export type UseDimensionsHook = [(node: HTMLElement | null) => void, DimensionObject, HTMLElement | null];
12
- export interface UseDimensionsArgs {
13
- liveMeasure?: boolean;
14
- }
15
- declare function useDimensions({ liveMeasure }?: UseDimensionsArgs): UseDimensionsHook;
16
- export default useDimensions;
package/useDimensions.js DELETED
@@ -1,75 +0,0 @@
1
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
5
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0) { ; } } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
- /* eslint-disable @typescript-eslint/ban-ts-comment */
8
- import { useState, useCallback, useLayoutEffect, useEffect } from 'react';
9
- var EMPTY_DIMENSION_OBJECT = {
10
- width: 0,
11
- height: 0,
12
- top: 0,
13
- left: 0,
14
- x: 0,
15
- y: 0,
16
- right: 0,
17
- bottom: 0
18
- };
19
- function getDimensionObject(node) {
20
- var rect = node.getBoundingClientRect();
21
- /** @ts-ignore */
22
- var left = 'x' in rect ? rect.x : rect.left;
23
- /** @ts-ignore */
24
- var top = 'y' in rect ? rect.y : rect.top;
25
- return {
26
- width: rect.width,
27
- height: rect.height,
28
- x: left,
29
- y: top,
30
- top: top,
31
- left: left,
32
- right: rect.right,
33
- bottom: rect.bottom
34
- };
35
- }
36
- function useDimensions() {
37
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
38
- _ref$liveMeasure = _ref.liveMeasure,
39
- liveMeasure = _ref$liveMeasure === void 0 ? true : _ref$liveMeasure;
40
- var _useState = useState(EMPTY_DIMENSION_OBJECT),
41
- _useState2 = _slicedToArray(_useState, 2),
42
- dimensions = _useState2[0],
43
- setDimensions = _useState2[1];
44
- var _useState3 = useState(null),
45
- _useState4 = _slicedToArray(_useState3, 2),
46
- node = _useState4[0],
47
- setNode = _useState4[1];
48
- var ref = useCallback(function (node) {
49
- setNode(node);
50
- }, []);
51
- var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;
52
- useIsomorphicLayoutEffect(function () {
53
- if (node) {
54
- var measure = function measure() {
55
- return window.requestAnimationFrame(function () {
56
- return setDimensions(getDimensionObject(node));
57
- });
58
- };
59
- measure();
60
- if (liveMeasure) {
61
- window.addEventListener('resize', measure);
62
- window.addEventListener('scroll', measure);
63
- return function () {
64
- window.removeEventListener('resize', measure);
65
- window.removeEventListener('scroll', measure);
66
- };
67
- }
68
- }
69
- return function () {
70
- /* no-op */
71
- };
72
- }, [liveMeasure, node]);
73
- return [ref, dimensions, node];
74
- }
75
- export default useDimensions;
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- declare function useForwardedRef<T>(forwardedRef: ((instance: T | null) => void) | React.MutableRefObject<T | null> | null): React.RefObject<T>;
3
- export default useForwardedRef;
@@ -1,16 +0,0 @@
1
- import React from 'react';
2
- function useForwardedRef(forwardedRef) {
3
- var innerRef = React.useRef(null);
4
- React.useEffect(function () {
5
- if (!forwardedRef) {
6
- return;
7
- }
8
- if (typeof forwardedRef === 'function') {
9
- forwardedRef(innerRef.current);
10
- } else {
11
- forwardedRef.current = innerRef.current;
12
- }
13
- }, [forwardedRef]);
14
- return innerRef;
15
- }
16
- export default useForwardedRef;
@@ -1,18 +0,0 @@
1
- declare global {
2
- interface Window {
3
- grecaptcha: any;
4
- }
5
- }
6
- export type GoogleReCaptchaV3Options = {
7
- /**
8
- * The `sitekey` to use with reCAPTCHA v3.
9
- * https://developers.google.com/recaptcha/docs/v3
10
- */
11
- siteKey: string;
12
- /**
13
- * Disable ReCaptcha preventing the script from loading and return undefined from the execute function.
14
- * This is useful when consumer needs to conditionally enable or disable ReCaptcha
15
- */
16
- disabled?: boolean;
17
- };
18
- export declare function useGoogleReCaptchaV3({ siteKey, disabled }: GoogleReCaptchaV3Options): (action?: string) => Promise<string | undefined>;
@@ -1,77 +0,0 @@
1
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) { if (n.call(e, o)) return next.value = e[o], next.done = !1, next; } return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) { r.push(n); } return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) { "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); } }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
5
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
6
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
9
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0) { ; } } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
10
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
11
- import { useCallback, useEffect } from 'react';
12
- import useScript from './useScript';
13
- export function useGoogleReCaptchaV3(_ref) {
14
- var siteKey = _ref.siteKey,
15
- _ref$disabled = _ref.disabled,
16
- disabled = _ref$disabled === void 0 ? false : _ref$disabled;
17
- // Load ReCaptcha script.
18
- var _useScript = useScript("https://www.google.com/recaptcha/api.js?render=".concat(siteKey), disabled),
19
- _useScript2 = _slicedToArray(_useScript, 2),
20
- loaded = _useScript2[0],
21
- error = _useScript2[1];
22
- useEffect(function () {
23
- if (loaded && !disabled) {
24
- // eslint-disable-next-line no-console
25
- console.log('Google ReCaptcha script loaded!');
26
- }
27
- if (error) throw new Error('Google ReCaptcha script failed to load');
28
- }, [loaded, error, disabled]);
29
- var executeReCaptcha = useCallback( /*#__PURE__*/function () {
30
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(action) {
31
- var _window, grecaptcha;
32
- return _regeneratorRuntime().wrap(function _callee$(_context) {
33
- while (1) {
34
- switch (_context.prev = _context.next) {
35
- case 0:
36
- if (window) {
37
- _context.next = 2;
38
- break;
39
- }
40
- throw new Error('ERROR: NOT A WEB BROWSER');
41
- case 2:
42
- if (!disabled) {
43
- _context.next = 4;
44
- break;
45
- }
46
- return _context.abrupt("return", Promise.resolve(undefined));
47
- case 4:
48
- _window = window, grecaptcha = _window.grecaptcha;
49
- if (grecaptcha) {
50
- _context.next = 7;
51
- break;
52
- }
53
- throw new Error('ERROR: SCRIPT NOT AVAILABLE');
54
- case 7:
55
- return _context.abrupt("return", new Promise(function (resolve) {
56
- // Invoke the ReCaptcha check.
57
- grecaptcha.ready(function () {
58
- grecaptcha.execute(siteKey, {
59
- action: action
60
- }).then(function (token) {
61
- resolve(token);
62
- });
63
- });
64
- }));
65
- case 8:
66
- case "end":
67
- return _context.stop();
68
- }
69
- }
70
- }, _callee);
71
- }));
72
- return function (_x) {
73
- return _ref2.apply(this, arguments);
74
- };
75
- }(), [siteKey, disabled]);
76
- return executeReCaptcha;
77
- }
package/useOffline.d.ts DELETED
@@ -1,5 +0,0 @@
1
- declare const useOffline: () => {
2
- isOnline: boolean;
3
- isOffline: boolean;
4
- };
5
- export default useOffline;
package/useOffline.js DELETED
@@ -1,35 +0,0 @@
1
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
5
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0) { ; } } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
- import { useEffect, useState } from 'react';
8
- var getOnLineStatus = function getOnLineStatus() {
9
- return typeof window !== 'undefined' && typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean' ? navigator.onLine : true;
10
- };
11
- var useOffline = function useOffline() {
12
- var _useState = useState(getOnLineStatus()),
13
- _useState2 = _slicedToArray(_useState, 2),
14
- status = _useState2[0],
15
- setStatus = _useState2[1];
16
- var setOnline = function setOnline() {
17
- return setStatus(true);
18
- };
19
- var setOffline = function setOffline() {
20
- return setStatus(false);
21
- };
22
- useEffect(function () {
23
- window.addEventListener('online', setOnline);
24
- window.addEventListener('offline', setOffline);
25
- return function () {
26
- window.removeEventListener('online', setOnline);
27
- window.removeEventListener('offline', setOffline);
28
- };
29
- }, []);
30
- return {
31
- isOnline: status,
32
- isOffline: !status
33
- };
34
- };
35
- export default useOffline;
@@ -1,2 +0,0 @@
1
- import useResizeObserver from 'use-resize-observer/polyfilled';
2
- export default useResizeObserver;
@@ -1,2 +0,0 @@
1
- import useResizeObserver from 'use-resize-observer/polyfilled';
2
- export default useResizeObserver;
package/useScript.d.ts DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * Hook for loading external script
3
- * @param {string} src - The URL of the script
4
- * @param {boolean} [doNotLoad=false] - If set to true the script will not be loaded
5
- * This can be handy because hooks can not be called conditionally by the consumer
6
- */
7
- declare function useScript(src: string, doNotLoad?: boolean): boolean[];
8
- export default useScript;
package/useScript.js DELETED
@@ -1,123 +0,0 @@
1
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0) { ; } } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
4
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
5
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
6
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
7
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
9
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
11
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
12
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
13
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
14
- import { useState, useEffect } from 'react';
15
- var Script = /*#__PURE__*/function () {
16
- function Script(src) {
17
- var _this = this;
18
- _classCallCheck(this, Script);
19
- this.state = 'PENDING';
20
- this.listeners = [];
21
- var script = document.createElement('script');
22
- script.src = src;
23
- script.async = true;
24
- var load = function load() {
25
- _this.state = 'LOADED';
26
- script.removeEventListener('load', load);
27
- _this.emitState();
28
- };
29
- var error = function error() {
30
- _this.state = 'ERROR';
31
- script.removeEventListener('error', error);
32
- _this.emitState();
33
- };
34
- script.addEventListener('load', load);
35
- script.addEventListener('error', error);
36
- document.body.appendChild(script);
37
- }
38
- _createClass(Script, [{
39
- key: "onStateChange",
40
- value: function onStateChange(cb) {
41
- var _this2 = this;
42
- this.listeners.push(cb);
43
- return function () {
44
- _this2.listeners = _this2.listeners.filter(function (fn) {
45
- return fn !== cb;
46
- });
47
- };
48
- }
49
- }, {
50
- key: "emitState",
51
- value: function emitState() {
52
- var _iterator = _createForOfIteratorHelper(this.listeners),
53
- _step;
54
- try {
55
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
56
- var cb = _step.value;
57
- cb(this.state);
58
- }
59
- } catch (err) {
60
- _iterator.e(err);
61
- } finally {
62
- _iterator.f();
63
- }
64
- }
65
- }]);
66
- return Script;
67
- }();
68
- var scripts = new Map();
69
-
70
- /**
71
- * Hook for loading external script
72
- * @param {string} src - The URL of the script
73
- * @param {boolean} [doNotLoad=false] - If set to true the script will not be loaded
74
- * This can be handy because hooks can not be called conditionally by the consumer
75
- */
76
- function useScript(src) {
77
- var doNotLoad = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
78
- // Keeping track of script loaded and error state
79
- var _useState = useState({
80
- loaded: false,
81
- error: false
82
- }),
83
- _useState2 = _slicedToArray(_useState, 2),
84
- state = _useState2[0],
85
- setState = _useState2[1];
86
- useEffect(function () {
87
- // If doNotLoad we return early so the script will not be loaded
88
- if (doNotLoad) {
89
- setState({
90
- loaded: true,
91
- error: false
92
- });
93
- return;
94
- }
95
-
96
- // If scripts already includes src it means that the script was already
97
- // loaded by another instance of the hook, so no need to load again
98
- var script = scripts.get(src) || scripts.set(src, new Script(src)).get(src);
99
- if (script.state === 'LOADED') {
100
- setState({
101
- loaded: true,
102
- error: false
103
- });
104
- return;
105
- }
106
- return script.onStateChange(function (state) {
107
- if (state === 'ERROR') {
108
- scripts["delete"](src);
109
- setState({
110
- loaded: true,
111
- error: true
112
- });
113
- } else {
114
- setState({
115
- loaded: true,
116
- error: false
117
- });
118
- }
119
- });
120
- }, [src, doNotLoad]);
121
- return [state.loaded, state.error];
122
- }
123
- export default useScript;