@cloudflare/util-cl1-compat-router 2.0.0
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/CHANGELOG.md +7 -0
- package/dist/Link.d.ts +8 -0
- package/dist/RouterContext.d.ts +22 -0
- package/dist/hooks.d.ts +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/types.d.ts +9 -0
- package/es/Link.js +35 -0
- package/es/RouterContext.js +25 -0
- package/es/hooks.js +5 -0
- package/es/index.js +3 -0
- package/es/types.js +1 -0
- package/lib/Link.js +50 -0
- package/lib/RouterContext.js +44 -0
- package/lib/hooks.js +16 -0
- package/lib/index.js +35 -0
- package/lib/types.js +5 -0
- package/package.json +24 -0
- package/src/Link.tsx +24 -0
- package/src/RouterContext.tsx +58 -0
- package/src/hooks.ts +6 -0
- package/src/index.ts +8 -0
- package/src/types.ts +11 -0
package/CHANGELOG.md
ADDED
package/dist/Link.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { RouterLinkProps } from './RouterContext';
|
|
3
|
+
export declare type LinkProps = RouterLinkProps;
|
|
4
|
+
export declare const Link: React.ForwardRefExoticComponent<{
|
|
5
|
+
to: string;
|
|
6
|
+
state?: any;
|
|
7
|
+
replace?: boolean | undefined;
|
|
8
|
+
} & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href"> & React.RefAttributes<HTMLAnchorElement>>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { NavigateFunction } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Subset of react-router link props that are currently used in the component library
|
|
5
|
+
*/
|
|
6
|
+
export declare type RouterLinkProps = {
|
|
7
|
+
to: string;
|
|
8
|
+
state?: any;
|
|
9
|
+
replace?: boolean;
|
|
10
|
+
} & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'>;
|
|
11
|
+
export declare type RouterLinkComponent = React.ComponentType<RouterLinkProps>;
|
|
12
|
+
export declare type RouterContextValue = {
|
|
13
|
+
navigate: NavigateFunction;
|
|
14
|
+
Link: RouterLinkComponent;
|
|
15
|
+
};
|
|
16
|
+
export declare const CL1CompatRouterContext: React.Context<RouterContextValue>;
|
|
17
|
+
export declare type CL1CompatRouterProviderProps = {
|
|
18
|
+
children: React.ReactNode;
|
|
19
|
+
navigate: NavigateFunction;
|
|
20
|
+
linkComponent: RouterLinkComponent;
|
|
21
|
+
};
|
|
22
|
+
export declare const CL1CompatRouterProvider: ({ children, navigate, linkComponent }: CL1CompatRouterProviderProps) => JSX.Element;
|
package/dist/hooks.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useNavigate: () => import("./types").NavigateFunction;
|
package/dist/index.d.ts
ADDED
package/dist/types.d.ts
ADDED
package/es/Link.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
var _excluded = ["to", "state", "replace", "onClick", "target", "rel"];
|
|
2
|
+
|
|
3
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
4
|
+
|
|
5
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
6
|
+
|
|
7
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
8
|
+
|
|
9
|
+
import React, { useContext } from 'react';
|
|
10
|
+
import { CL1CompatRouterContext } from './RouterContext';
|
|
11
|
+
export var Link = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
12
|
+
var {
|
|
13
|
+
to,
|
|
14
|
+
state,
|
|
15
|
+
replace,
|
|
16
|
+
onClick,
|
|
17
|
+
target,
|
|
18
|
+
rel
|
|
19
|
+
} = _ref,
|
|
20
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
21
|
+
|
|
22
|
+
var {
|
|
23
|
+
Link: LinkComponent
|
|
24
|
+
} = useContext(CL1CompatRouterContext);
|
|
25
|
+
return /*#__PURE__*/React.createElement(LinkComponent, _extends({}, rest, {
|
|
26
|
+
to: to,
|
|
27
|
+
state: state,
|
|
28
|
+
replace: replace,
|
|
29
|
+
onClick: onClick,
|
|
30
|
+
target: target,
|
|
31
|
+
rel: rel // @ts-ignore ref typing differs across component implementations
|
|
32
|
+
,
|
|
33
|
+
ref: ref
|
|
34
|
+
}));
|
|
35
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React, { createContext, useMemo } from 'react';
|
|
2
|
+
|
|
3
|
+
var MissingLink = () => {
|
|
4
|
+
throw new Error('Missing router Link implementation. Wrap your tree in <CL1CompatRouterProvider linkComponent={...} navigate={...}>.');
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
var defaultValue = {
|
|
8
|
+
navigate: () => undefined,
|
|
9
|
+
Link: MissingLink
|
|
10
|
+
};
|
|
11
|
+
export var CL1CompatRouterContext = /*#__PURE__*/createContext(defaultValue);
|
|
12
|
+
export var CL1CompatRouterProvider = _ref => {
|
|
13
|
+
var {
|
|
14
|
+
children,
|
|
15
|
+
navigate,
|
|
16
|
+
linkComponent
|
|
17
|
+
} = _ref;
|
|
18
|
+
var value = useMemo(() => ({
|
|
19
|
+
navigate,
|
|
20
|
+
Link: linkComponent
|
|
21
|
+
}), [navigate, linkComponent]);
|
|
22
|
+
return /*#__PURE__*/React.createElement(CL1CompatRouterContext.Provider, {
|
|
23
|
+
value: value
|
|
24
|
+
}, children);
|
|
25
|
+
};
|
package/es/hooks.js
ADDED
package/es/index.js
ADDED
package/es/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/Link.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.Link = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _RouterContext = require("./RouterContext");
|
|
13
|
+
|
|
14
|
+
var _excluded = ["to", "state", "replace", "onClick", "target", "rel"];
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
21
|
+
|
|
22
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
23
|
+
|
|
24
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
25
|
+
|
|
26
|
+
var Link = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
27
|
+
var to = _ref.to,
|
|
28
|
+
state = _ref.state,
|
|
29
|
+
replace = _ref.replace,
|
|
30
|
+
onClick = _ref.onClick,
|
|
31
|
+
target = _ref.target,
|
|
32
|
+
rel = _ref.rel,
|
|
33
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
34
|
+
|
|
35
|
+
var _useContext = (0, _react.useContext)(_RouterContext.CL1CompatRouterContext),
|
|
36
|
+
LinkComponent = _useContext.Link;
|
|
37
|
+
|
|
38
|
+
return /*#__PURE__*/_react.default.createElement(LinkComponent, _extends({}, rest, {
|
|
39
|
+
to: to,
|
|
40
|
+
state: state,
|
|
41
|
+
replace: replace,
|
|
42
|
+
onClick: onClick,
|
|
43
|
+
target: target,
|
|
44
|
+
rel: rel // @ts-ignore ref typing differs across component implementations
|
|
45
|
+
,
|
|
46
|
+
ref: ref
|
|
47
|
+
}));
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
exports.Link = Link;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.CL1CompatRouterProvider = exports.CL1CompatRouterContext = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
|
|
16
|
+
var MissingLink = function MissingLink() {
|
|
17
|
+
throw new Error('Missing router Link implementation. Wrap your tree in <CL1CompatRouterProvider linkComponent={...} navigate={...}>.');
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
var defaultValue = {
|
|
21
|
+
navigate: function navigate() {
|
|
22
|
+
return undefined;
|
|
23
|
+
},
|
|
24
|
+
Link: MissingLink
|
|
25
|
+
};
|
|
26
|
+
var CL1CompatRouterContext = /*#__PURE__*/(0, _react.createContext)(defaultValue);
|
|
27
|
+
exports.CL1CompatRouterContext = CL1CompatRouterContext;
|
|
28
|
+
|
|
29
|
+
var CL1CompatRouterProvider = function CL1CompatRouterProvider(_ref) {
|
|
30
|
+
var children = _ref.children,
|
|
31
|
+
navigate = _ref.navigate,
|
|
32
|
+
linkComponent = _ref.linkComponent;
|
|
33
|
+
var value = (0, _react.useMemo)(function () {
|
|
34
|
+
return {
|
|
35
|
+
navigate: navigate,
|
|
36
|
+
Link: linkComponent
|
|
37
|
+
};
|
|
38
|
+
}, [navigate, linkComponent]);
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement(CL1CompatRouterContext.Provider, {
|
|
40
|
+
value: value
|
|
41
|
+
}, children);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
exports.CL1CompatRouterProvider = CL1CompatRouterProvider;
|
package/lib/hooks.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useNavigate = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _RouterContext = require("./RouterContext");
|
|
11
|
+
|
|
12
|
+
var useNavigate = function useNavigate() {
|
|
13
|
+
return (0, _react.useContext)(_RouterContext.CL1CompatRouterContext).navigate;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
exports.useNavigate = useNavigate;
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "CL1CompatRouterContext", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _RouterContext.CL1CompatRouterContext;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "CL1CompatRouterProvider", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _RouterContext.CL1CompatRouterProvider;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "Link", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _Link.Link;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "useNavigate", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _hooks.useNavigate;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
var _RouterContext = require("./RouterContext");
|
|
32
|
+
|
|
33
|
+
var _Link = require("./Link");
|
|
34
|
+
|
|
35
|
+
var _hooks = require("./hooks");
|
package/lib/types.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cloudflare/util-cl1-compat-router",
|
|
3
|
+
"description": "Router-agnostic navigation context and Link component (RR6-shaped API)",
|
|
4
|
+
"version": "2.0.0",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"module": "es/index.js",
|
|
7
|
+
"author": "Frontend Team <frontend@cloudflare.com>",
|
|
8
|
+
"license": "BSD-3-Clause",
|
|
9
|
+
"publishConfig": {
|
|
10
|
+
"access": "public",
|
|
11
|
+
"main": "lib/index.js",
|
|
12
|
+
"module": "es/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
},
|
|
15
|
+
"peerDependencies": {
|
|
16
|
+
"react": "^16.0.0-0 || ^17.0.0-0"
|
|
17
|
+
},
|
|
18
|
+
"stratus": {
|
|
19
|
+
"srcDirectory": "./src",
|
|
20
|
+
"isStandAloneApp": false,
|
|
21
|
+
"autoGeneratedReadme": true
|
|
22
|
+
},
|
|
23
|
+
"types": "./dist/index.d.ts"
|
|
24
|
+
}
|
package/src/Link.tsx
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import { CL1CompatRouterContext, RouterLinkProps } from './RouterContext';
|
|
3
|
+
|
|
4
|
+
export type LinkProps = RouterLinkProps;
|
|
5
|
+
|
|
6
|
+
export const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(
|
|
7
|
+
({ to, state, replace, onClick, target, rel, ...rest }, ref) => {
|
|
8
|
+
const { Link: LinkComponent } = useContext(CL1CompatRouterContext);
|
|
9
|
+
|
|
10
|
+
return (
|
|
11
|
+
<LinkComponent
|
|
12
|
+
{...rest}
|
|
13
|
+
to={to}
|
|
14
|
+
state={state}
|
|
15
|
+
replace={replace}
|
|
16
|
+
onClick={onClick}
|
|
17
|
+
target={target}
|
|
18
|
+
rel={rel}
|
|
19
|
+
// @ts-ignore ref typing differs across component implementations
|
|
20
|
+
ref={ref}
|
|
21
|
+
/>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React, { createContext, useMemo } from 'react';
|
|
2
|
+
import { NavigateFunction } from './types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Subset of react-router link props that are currently used in the component library
|
|
6
|
+
*/
|
|
7
|
+
export type RouterLinkProps = {
|
|
8
|
+
to: string;
|
|
9
|
+
state?: any;
|
|
10
|
+
replace?: boolean;
|
|
11
|
+
} & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'>;
|
|
12
|
+
|
|
13
|
+
export type RouterLinkComponent = React.ComponentType<RouterLinkProps>;
|
|
14
|
+
|
|
15
|
+
export type RouterContextValue = {
|
|
16
|
+
navigate: NavigateFunction;
|
|
17
|
+
Link: RouterLinkComponent;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const MissingLink: RouterLinkComponent = () => {
|
|
21
|
+
throw new Error(
|
|
22
|
+
'Missing router Link implementation. Wrap your tree in <CL1CompatRouterProvider linkComponent={...} navigate={...}>.'
|
|
23
|
+
);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const defaultValue: RouterContextValue = {
|
|
27
|
+
navigate: () => undefined,
|
|
28
|
+
Link: MissingLink
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const CL1CompatRouterContext =
|
|
32
|
+
createContext<RouterContextValue>(defaultValue);
|
|
33
|
+
|
|
34
|
+
export type CL1CompatRouterProviderProps = {
|
|
35
|
+
children: React.ReactNode;
|
|
36
|
+
navigate: NavigateFunction;
|
|
37
|
+
linkComponent: RouterLinkComponent;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const CL1CompatRouterProvider = ({
|
|
41
|
+
children,
|
|
42
|
+
navigate,
|
|
43
|
+
linkComponent
|
|
44
|
+
}: CL1CompatRouterProviderProps) => {
|
|
45
|
+
const value = useMemo<RouterContextValue>(
|
|
46
|
+
() => ({
|
|
47
|
+
navigate,
|
|
48
|
+
Link: linkComponent
|
|
49
|
+
}),
|
|
50
|
+
[navigate, linkComponent]
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
<CL1CompatRouterContext.Provider value={value}>
|
|
55
|
+
{children}
|
|
56
|
+
</CL1CompatRouterContext.Provider>
|
|
57
|
+
);
|
|
58
|
+
};
|
package/src/hooks.ts
ADDED
package/src/index.ts
ADDED
package/src/types.ts
ADDED