UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

47 lines 5.79 kB
import { isBoolean } from 'lodash-es'; import { isObservable, of, switchMap } from 'rxjs'; import { publishRef } from './operators'; // 同步 Chain function buildDisabledQueryChain(judgeFns, index) { if (!judgeFns[index]) { return null; } let result = judgeFns[index](); if (isBoolean(result)) { result = { disabled: result }; } if (result?.disabled) { return result; } return buildDisabledQueryChain(judgeFns, index + 1); } // 异步 Chain function buildDisabledQueryChain$(judgeFns, index) { if (!judgeFns[index]) { return of(null); } let result$ = judgeFns[index](); result$ = isObservable(result$) ? result$ : of(result$); return result$.pipe(switchMap(result => { if (isBoolean(result)) { result = { disabled: result }; } if (result?.disabled) { return of(result); } return buildDisabledQueryChain$(judgeFns, index + 1); })); } /** * @description 获取同步状态 */ export function getDisabledState(...judgeFns) { return buildDisabledQueryChain(judgeFns, 0); } /** * @description 获取异步状态 */ export function getDisabledState$(...judgeFns) { return buildDisabledQueryChain$(judgeFns, 0).pipe(publishRef()); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQtc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY29yZS91dGlscy9kaXNhYmxlZC1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBYyxZQUFZLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBYXpDLFdBQVc7QUFDWCxTQUFTLHVCQUF1QixDQUM5QixRQUE2QixFQUM3QixLQUFhO0lBRWIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBb0IsQ0FBQztJQUVqRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDckIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sdUJBQXVCLENBQUMsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsV0FBVztBQUNYLFNBQVMsd0JBQXdCLENBQy9CLFFBQTZCLEVBQzdCLEtBQWE7SUFFYixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUNELElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ2hDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FDakIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2pCLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBRyxRQUE2QjtJQUMvRCxPQUFPLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBRyxRQUE2QjtJQUNoRSxPQUFPLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNCb29sZWFuIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGlzT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBwdWJsaXNoUmVmIH0gZnJvbSAnLi9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBEaXNhYmxlZFJlc3VsdCA9XG4gIHwge1xuICAgICAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgICB0b29sdGlwPzogc3RyaW5nO1xuICAgIH1cbiAgfCBib29sZWFuO1xuXG5leHBvcnQgdHlwZSBRdWVyeURpc2FibGVkRnVuYyA9ICgpID0+XG4gIHwgRGlzYWJsZWRSZXN1bHRcbiAgfCBPYnNlcnZhYmxlPERpc2FibGVkUmVzdWx0PjtcblxuLy8g5ZCM5q2lIENoYWluXG5mdW5jdGlvbiBidWlsZERpc2FibGVkUXVlcnlDaGFpbihcbiAganVkZ2VGbnM6IFF1ZXJ5RGlzYWJsZWRGdW5jW10sXG4gIGluZGV4OiBudW1iZXIsXG4pOiBFeGNsdWRlPERpc2FibGVkUmVzdWx0LCBib29sZWFuPiB7XG4gIGlmICghanVkZ2VGbnNbaW5kZXhdKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGp1ZGdlRm5zW2luZGV4XSgpIGFzIERpc2FibGVkUmVzdWx0O1xuXG4gIGlmIChpc0Jvb2xlYW4ocmVzdWx0KSkge1xuICAgIHJlc3VsdCA9IHsgZGlzYWJsZWQ6IHJlc3VsdCB9O1xuICB9XG5cbiAgaWYgKHJlc3VsdD8uZGlzYWJsZWQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkRGlzYWJsZWRRdWVyeUNoYWluKGp1ZGdlRm5zLCBpbmRleCArIDEpO1xufVxuXG4vLyDlvILmraUgQ2hhaW5cbmZ1bmN0aW9uIGJ1aWxkRGlzYWJsZWRRdWVyeUNoYWluJChcbiAganVkZ2VGbnM6IFF1ZXJ5RGlzYWJsZWRGdW5jW10sXG4gIGluZGV4OiBudW1iZXIsXG4pOiBPYnNlcnZhYmxlPEV4Y2x1ZGU8RGlzYWJsZWRSZXN1bHQsIGJvb2xlYW4+PiB7XG4gIGlmICghanVkZ2VGbnNbaW5kZXhdKSB7XG4gICAgcmV0dXJuIG9mKG51bGwpO1xuICB9XG4gIGxldCByZXN1bHQkID0ganVkZ2VGbnNbaW5kZXhdKCk7XG4gIHJlc3VsdCQgPSBpc09ic2VydmFibGUocmVzdWx0JCkgPyByZXN1bHQkIDogb2YocmVzdWx0JCk7XG4gIHJldHVybiByZXN1bHQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKHJlc3VsdCA9PiB7XG4gICAgICBpZiAoaXNCb29sZWFuKHJlc3VsdCkpIHtcbiAgICAgICAgcmVzdWx0ID0geyBkaXNhYmxlZDogcmVzdWx0IH07XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0Py5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4gb2YocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBidWlsZERpc2FibGVkUXVlcnlDaGFpbiQoanVkZ2VGbnMsIGluZGV4ICsgMSk7XG4gICAgfSksXG4gICk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIOiOt+WPluWQjOatpeeKtuaAgVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlzYWJsZWRTdGF0ZSguLi5qdWRnZUZuczogUXVlcnlEaXNhYmxlZEZ1bmNbXSkge1xuICByZXR1cm4gYnVpbGREaXNhYmxlZFF1ZXJ5Q2hhaW4oanVkZ2VGbnMsIDApO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiDojrflj5blvILmraXnirbmgIFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpc2FibGVkU3RhdGUkKC4uLmp1ZGdlRm5zOiBRdWVyeURpc2FibGVkRnVuY1tdKSB7XG4gIHJldHVybiBidWlsZERpc2FibGVkUXVlcnlDaGFpbiQoanVkZ2VGbnMsIDApLnBpcGUocHVibGlzaFJlZigpKTtcbn1cbiJdfQ==