UNPKG

@knockout-js/org

Version:
102 lines (101 loc) 3.9 kB
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator"; import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array"; import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array"; import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator"; import { getDictItems } from "@knockout-js/api"; import { useAppCode } from "@knockout-js/layout/esm/components/provider"; import { useEffect, useState } from "react"; var timeoutFn = undefined, isLoad = false; var distData = {}, distDataChangeEvent = "distDataChangeEvent", collectRefCodes = []; /** * 用来处理缓存字典项列表 * @returns */ export var useDistItems = function(dictCode, appCode, dataSource) { var _ref; var refCode = "".concat((_ref = appCode !== null && appCode !== void 0 ? appCode : useAppCode()) !== null && _ref !== void 0 ? _ref : "", ":").concat(dictCode); var _distData_refCode; var _useState = _sliced_to_array(useState((_distData_refCode = distData[refCode]) !== null && _distData_refCode !== void 0 ? _distData_refCode : []), 2), items = _useState[0], setItems = _useState[1]; /** * 通过列表设置存储 * @param list */ var setDistItems = function(list) { var refCodes = _to_consumable_array(new Set(list.map(function(item) { return item.refCode; }))); refCodes.forEach(function(code) { if (code) { distData[code] = list.filter(function(item) { return item.refCode == code; }); } }); document.dispatchEvent(new CustomEvent(distDataChangeEvent)); }; /** * 刷新列表接口 */ var reloadDistItems = function() { var _ref = _async_to_generator(function() { var result; return _ts_generator(this, function(_state) { switch(_state.label){ case 0: return [ 4, getDictItems(refCode, true) ]; case 1: result = _state.sent(); if (result.length) { setDistItems(result); } return [ 2 ]; } }); }); return function reloadDistItems() { return _ref.apply(this, arguments); }; }(); useEffect(function() { var _dataSource; if ((_dataSource = dataSource) === null || _dataSource === void 0 ? void 0 : _dataSource.length) { setDistItems(dataSource); } else { if (!collectRefCodes.includes(refCode)) { collectRefCodes.push(refCode); isLoad = true; } if (isLoad) { clearTimeout(timeoutFn); timeoutFn = setTimeout(function() { getDictItems(collectRefCodes).then(function(result) { if (result.length) { setDistItems(result); } isLoad = false; }); }, 100); } } }, [ refCode, dataSource ]); useEffect(function() { var handleChange = function() { var _distData_refCode; setItems((_distData_refCode = distData[refCode]) !== null && _distData_refCode !== void 0 ? _distData_refCode : []); }; document.addEventListener(distDataChangeEvent, handleChange); return function() { document.removeEventListener(distDataChangeEvent, handleChange); }; }, []); return [ items, reloadDistItems ]; }; //# sourceMappingURL=index.js.map