@cursorify/react
Version:
Customizable cursor component for any style 🕹️
49 lines (48 loc) • 2.28 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CursorifyProvider = void 0;
exports.useCursorifyState = useCursorifyState;
exports.useCursorifyDispatch = useCursorifyDispatch;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const DefaultCursor_1 = require("../DefaultCursor");
const Cursorify_1 = __importDefault(require("./Cursorify"));
const useBreakpoint_1 = __importDefault(require("./hooks/useBreakpoint"));
const useCursorifyReducer_1 = __importDefault(require("./hooks/useCursorifyReducer"));
const defaultCursorifyState = {
cursor: (0, jsx_runtime_1.jsx)(DefaultCursor_1.DefaultCursor, {}),
delay: 1,
opacity: 1,
defaultCursorVisible: false,
breakpoint: 0,
cursorStyle: 'default',
mouseState: 'default',
};
const CursorifyStateContext = (0, react_1.createContext)(defaultCursorifyState);
const CursorifyDispatchContext = (0, react_1.createContext)(null);
const CursorifyProvider = ({ children, enabled, ...props }) => {
const [state, dispatch] = (0, useCursorifyReducer_1.default)({
...defaultCursorifyState,
...props,
});
const breakpointEnabled = (0, useBreakpoint_1.default)(state.breakpoint);
return ((0, jsx_runtime_1.jsx)(CursorifyStateContext.Provider, { value: state, children: (0, jsx_runtime_1.jsxs)(CursorifyDispatchContext.Provider, { value: dispatch, children: [enabled && breakpointEnabled && (0, jsx_runtime_1.jsx)(Cursorify_1.default, { children: state.cursor }), children] }) }));
};
exports.CursorifyProvider = CursorifyProvider;
function useCursorifyState() {
const context = (0, react_1.useContext)(CursorifyStateContext);
if (!context) {
throw new Error('Cannot find Cursorify Provider. You need to use Cursorify Provider within its parent component.');
}
return context;
}
function useCursorifyDispatch() {
const context = (0, react_1.useContext)(CursorifyDispatchContext);
if (!context) {
throw new Error('Cannot find Cursorify Provider. You need to use Cursorify Provider within its parent component.');
}
return context;
}