UNPKG

@vue-widget/hooks

Version:

hooks from react to vue

44 lines (43 loc) 1.55 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useCookieState = useCookieState; var _tslib = require("tslib"); var _jsCookie = _interopRequireDefault(require("js-cookie")); var _useMemoizedFn = require("../useMemoizedFn"); var _utils = require("../utils"); var _useState = require("../useState"); function useCookieState(cookieKey, options) { if (options === void 0) { options = {}; } var _a = (0, _useState.useState)(function () { var cookieValue = _jsCookie["default"].get(cookieKey); if ((0, _utils.isString)(cookieValue)) return cookieValue; if ((0, _utils.isFunction)(options.defaultValue)) { return options.defaultValue(); } return options.defaultValue; }), state = _a[0], setState = _a[1]; var updateState = (0, _useMemoizedFn.useMemoizedFn)(function (newValue, newOptions) { if (newOptions === void 0) { newOptions = {}; } var _a = (0, _tslib.__assign)((0, _tslib.__assign)({}, options), newOptions), _b = _a.defaultValue, defaultValue = _b === void 0 ? {} : _b, restOptions = (0, _tslib.__rest)(_a, ["defaultValue"]); var value = (0, _utils.isFunction)(newValue) ? newValue(state.value) : newValue; setState(value); if (value === undefined) { _jsCookie["default"].remove(cookieKey); } else { _jsCookie["default"].set(cookieKey, value, restOptions); } }); return [state, updateState]; }