@vue-widget/hooks
Version:
hooks from react to vue
44 lines (43 loc) • 1.55 kB
JavaScript
;
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];
}