UNPKG

taro-hooks

Version:
65 lines (64 loc) 3.04 kB
"use strict"; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var taro_1 = require("@tarojs/taro"); var core_1 = require("@taro-hooks/core"); var usePromise_1 = tslib_1.__importDefault(require("../usePromise")); var tool_1 = require("../utils/tool"); function useNavigationBar(option) { var generalOption = (0, core_1.useRef)(option); var hideButton = (0, usePromise_1["default"])(taro_1.hideHomeButton); var showNavigationBarLoadingAsync = (0, usePromise_1["default"])(taro_1.showNavigationBarLoading); var hideNavigationBarLoadingAsync = (0, usePromise_1["default"])(taro_1.hideNavigationBarLoading); var toggleLoading = function toggleLoading(toggle) { var _generalOption$curren; var loading = toggle != null ? toggle : !(generalOption != null && (_generalOption$curren = generalOption.current) != null && _generalOption$curren.loading); var toggleAction = loading ? showNavigationBarLoadingAsync : hideNavigationBarLoadingAsync; generalOption.current = _extends({}, generalOption.current || {}, { loading: loading }); return toggleAction(); }; var setTitleAsync = (0, usePromise_1["default"])(taro_1.setNavigationBarTitle); var setTitle = function setTitle(title) { var _generalOption$curren2; var navigationTitle = title != null ? title : (_generalOption$curren2 = generalOption.current) == null ? void 0 : _generalOption$curren2.title; if (typeof navigationTitle === 'string') { return setTitleAsync({ title: navigationTitle }); } return Promise.reject((0, tool_1.generateGeneralFail)('setTitle', 'please provide a title')); }; var setColorAsync = (0, usePromise_1["default"])(taro_1.setNavigationBarColor); var setColor = function setColor(option) { var setColorOption = (0, tool_1.combineOptions)(generalOption.current, option); if (!setColorOption.backgroundColor || !setColorOption.frontColor) { return Promise.reject((0, tool_1.generateGeneralFail)('setColor', 'please provide backgroundColor or frontColor')); } return setColorAsync(setColorOption); }; (0, core_1.useEffect)(function () { if (option) { var autoRun = []; option.hideButton && autoRun.push(hideButton()); 'loading' in option && autoRun.push(toggleLoading(option.loading)); ['backgroundColor', 'frontColor'].every(function (v) { return option[v]; }) && autoRun.push(setColor(option)); Promise.all(autoRun)["finally"](function () { generalOption.current = option; }); } }, [option]); return { setTitle: setTitle, hideButton: hideButton, toggleLoading: toggleLoading, setColor: setColor }; } exports["default"] = useNavigationBar;