UNPKG

@cursorify/react

Version:

Customizable cursor component for any style 🕹️

49 lines (48 loc) 2.28 kB
"use strict"; 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; }