Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu.../js/dist
File: data.js
*/
[2500] Fix | Delete
function invalidateResolution(selectorName, args) {
[2501] Fix | Delete
return {
[2502] Fix | Delete
type: 'INVALIDATE_RESOLUTION',
[2503] Fix | Delete
selectorName,
[2504] Fix | Delete
args
[2505] Fix | Delete
};
[2506] Fix | Delete
}
[2507] Fix | Delete
[2508] Fix | Delete
/**
[2509] Fix | Delete
* Returns an action object used in signalling that the resolution
[2510] Fix | Delete
* should be invalidated.
[2511] Fix | Delete
*
[2512] Fix | Delete
* @return {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE' }} Action object.
[2513] Fix | Delete
*/
[2514] Fix | Delete
function invalidateResolutionForStore() {
[2515] Fix | Delete
return {
[2516] Fix | Delete
type: 'INVALIDATE_RESOLUTION_FOR_STORE'
[2517] Fix | Delete
};
[2518] Fix | Delete
}
[2519] Fix | Delete
[2520] Fix | Delete
/**
[2521] Fix | Delete
* Returns an action object used in signalling that the resolution cache for a
[2522] Fix | Delete
* given selectorName should be invalidated.
[2523] Fix | Delete
*
[2524] Fix | Delete
* @param {string} selectorName Name of selector for which all resolvers should
[2525] Fix | Delete
* be invalidated.
[2526] Fix | Delete
*
[2527] Fix | Delete
* @return {{ type: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR', selectorName: string }} Action object.
[2528] Fix | Delete
*/
[2529] Fix | Delete
function invalidateResolutionForStoreSelector(selectorName) {
[2530] Fix | Delete
return {
[2531] Fix | Delete
type: 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR',
[2532] Fix | Delete
selectorName
[2533] Fix | Delete
};
[2534] Fix | Delete
}
[2535] Fix | Delete
[2536] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/data/build-module/redux-store/index.js
[2537] Fix | Delete
/**
[2538] Fix | Delete
* External dependencies
[2539] Fix | Delete
*/
[2540] Fix | Delete
[2541] Fix | Delete
[2542] Fix | Delete
[2543] Fix | Delete
/**
[2544] Fix | Delete
* WordPress dependencies
[2545] Fix | Delete
*/
[2546] Fix | Delete
[2547] Fix | Delete
[2548] Fix | Delete
[2549] Fix | Delete
/**
[2550] Fix | Delete
* Internal dependencies
[2551] Fix | Delete
*/
[2552] Fix | Delete
[2553] Fix | Delete
[2554] Fix | Delete
[2555] Fix | Delete
[2556] Fix | Delete
[2557] Fix | Delete
[2558] Fix | Delete
[2559] Fix | Delete
[2560] Fix | Delete
[2561] Fix | Delete
[2562] Fix | Delete
[2563] Fix | Delete
/** @typedef {import('../types').DataRegistry} DataRegistry */
[2564] Fix | Delete
/** @typedef {import('../types').ListenerFunction} ListenerFunction */
[2565] Fix | Delete
/**
[2566] Fix | Delete
* @typedef {import('../types').StoreDescriptor<C>} StoreDescriptor
[2567] Fix | Delete
* @template {import('../types').AnyConfig} C
[2568] Fix | Delete
*/
[2569] Fix | Delete
/**
[2570] Fix | Delete
* @typedef {import('../types').ReduxStoreConfig<State,Actions,Selectors>} ReduxStoreConfig
[2571] Fix | Delete
* @template State
[2572] Fix | Delete
* @template {Record<string,import('../types').ActionCreator>} Actions
[2573] Fix | Delete
* @template Selectors
[2574] Fix | Delete
*/
[2575] Fix | Delete
[2576] Fix | Delete
const trimUndefinedValues = array => {
[2577] Fix | Delete
const result = [...array];
[2578] Fix | Delete
for (let i = result.length - 1; i >= 0; i--) {
[2579] Fix | Delete
if (result[i] === undefined) {
[2580] Fix | Delete
result.splice(i, 1);
[2581] Fix | Delete
}
[2582] Fix | Delete
}
[2583] Fix | Delete
return result;
[2584] Fix | Delete
};
[2585] Fix | Delete
[2586] Fix | Delete
/**
[2587] Fix | Delete
* Creates a new object with the same keys, but with `callback()` called as
[2588] Fix | Delete
* a transformer function on each of the values.
[2589] Fix | Delete
*
[2590] Fix | Delete
* @param {Object} obj The object to transform.
[2591] Fix | Delete
* @param {Function} callback The function to transform each object value.
[2592] Fix | Delete
* @return {Array} Transformed object.
[2593] Fix | Delete
*/
[2594] Fix | Delete
const mapValues = (obj, callback) => Object.fromEntries(Object.entries(obj !== null && obj !== void 0 ? obj : {}).map(([key, value]) => [key, callback(value, key)]));
[2595] Fix | Delete
[2596] Fix | Delete
// Convert non serializable types to plain objects
[2597] Fix | Delete
const devToolsReplacer = (key, state) => {
[2598] Fix | Delete
if (state instanceof Map) {
[2599] Fix | Delete
return Object.fromEntries(state);
[2600] Fix | Delete
}
[2601] Fix | Delete
if (state instanceof window.HTMLElement) {
[2602] Fix | Delete
return null;
[2603] Fix | Delete
}
[2604] Fix | Delete
return state;
[2605] Fix | Delete
};
[2606] Fix | Delete
[2607] Fix | Delete
/**
[2608] Fix | Delete
* Create a cache to track whether resolvers started running or not.
[2609] Fix | Delete
*
[2610] Fix | Delete
* @return {Object} Resolvers Cache.
[2611] Fix | Delete
*/
[2612] Fix | Delete
function createResolversCache() {
[2613] Fix | Delete
const cache = {};
[2614] Fix | Delete
return {
[2615] Fix | Delete
isRunning(selectorName, args) {
[2616] Fix | Delete
return cache[selectorName] && cache[selectorName].get(trimUndefinedValues(args));
[2617] Fix | Delete
},
[2618] Fix | Delete
clear(selectorName, args) {
[2619] Fix | Delete
if (cache[selectorName]) {
[2620] Fix | Delete
cache[selectorName].delete(trimUndefinedValues(args));
[2621] Fix | Delete
}
[2622] Fix | Delete
},
[2623] Fix | Delete
markAsRunning(selectorName, args) {
[2624] Fix | Delete
if (!cache[selectorName]) {
[2625] Fix | Delete
cache[selectorName] = new (equivalent_key_map_default())();
[2626] Fix | Delete
}
[2627] Fix | Delete
cache[selectorName].set(trimUndefinedValues(args), true);
[2628] Fix | Delete
}
[2629] Fix | Delete
};
[2630] Fix | Delete
}
[2631] Fix | Delete
function createBindingCache(bind) {
[2632] Fix | Delete
const cache = new WeakMap();
[2633] Fix | Delete
return {
[2634] Fix | Delete
get(item, itemName) {
[2635] Fix | Delete
let boundItem = cache.get(item);
[2636] Fix | Delete
if (!boundItem) {
[2637] Fix | Delete
boundItem = bind(item, itemName);
[2638] Fix | Delete
cache.set(item, boundItem);
[2639] Fix | Delete
}
[2640] Fix | Delete
return boundItem;
[2641] Fix | Delete
}
[2642] Fix | Delete
};
[2643] Fix | Delete
}
[2644] Fix | Delete
[2645] Fix | Delete
/**
[2646] Fix | Delete
* Creates a data store descriptor for the provided Redux store configuration containing
[2647] Fix | Delete
* properties describing reducer, actions, selectors, controls and resolvers.
[2648] Fix | Delete
*
[2649] Fix | Delete
* @example
[2650] Fix | Delete
* ```js
[2651] Fix | Delete
* import { createReduxStore } from '@wordpress/data';
[2652] Fix | Delete
*
[2653] Fix | Delete
* const store = createReduxStore( 'demo', {
[2654] Fix | Delete
* reducer: ( state = 'OK' ) => state,
[2655] Fix | Delete
* selectors: {
[2656] Fix | Delete
* getValue: ( state ) => state,
[2657] Fix | Delete
* },
[2658] Fix | Delete
* } );
[2659] Fix | Delete
* ```
[2660] Fix | Delete
*
[2661] Fix | Delete
* @template State
[2662] Fix | Delete
* @template {Record<string,import('../types').ActionCreator>} Actions
[2663] Fix | Delete
* @template Selectors
[2664] Fix | Delete
* @param {string} key Unique namespace identifier.
[2665] Fix | Delete
* @param {ReduxStoreConfig<State,Actions,Selectors>} options Registered store options, with properties
[2666] Fix | Delete
* describing reducer, actions, selectors,
[2667] Fix | Delete
* and resolvers.
[2668] Fix | Delete
*
[2669] Fix | Delete
* @return {StoreDescriptor<ReduxStoreConfig<State,Actions,Selectors>>} Store Object.
[2670] Fix | Delete
*/
[2671] Fix | Delete
function createReduxStore(key, options) {
[2672] Fix | Delete
const privateActions = {};
[2673] Fix | Delete
const privateSelectors = {};
[2674] Fix | Delete
const privateRegistrationFunctions = {
[2675] Fix | Delete
privateActions,
[2676] Fix | Delete
registerPrivateActions: actions => {
[2677] Fix | Delete
Object.assign(privateActions, actions);
[2678] Fix | Delete
},
[2679] Fix | Delete
privateSelectors,
[2680] Fix | Delete
registerPrivateSelectors: selectors => {
[2681] Fix | Delete
Object.assign(privateSelectors, selectors);
[2682] Fix | Delete
}
[2683] Fix | Delete
};
[2684] Fix | Delete
const storeDescriptor = {
[2685] Fix | Delete
name: key,
[2686] Fix | Delete
instantiate: registry => {
[2687] Fix | Delete
/**
[2688] Fix | Delete
* Stores listener functions registered with `subscribe()`.
[2689] Fix | Delete
*
[2690] Fix | Delete
* When functions register to listen to store changes with
[2691] Fix | Delete
* `subscribe()` they get added here. Although Redux offers
[2692] Fix | Delete
* its own `subscribe()` function directly, by wrapping the
[2693] Fix | Delete
* subscription in this store instance it's possible to
[2694] Fix | Delete
* optimize checking if the state has changed before calling
[2695] Fix | Delete
* each listener.
[2696] Fix | Delete
*
[2697] Fix | Delete
* @type {Set<ListenerFunction>}
[2698] Fix | Delete
*/
[2699] Fix | Delete
const listeners = new Set();
[2700] Fix | Delete
const reducer = options.reducer;
[2701] Fix | Delete
const thunkArgs = {
[2702] Fix | Delete
registry,
[2703] Fix | Delete
get dispatch() {
[2704] Fix | Delete
return thunkActions;
[2705] Fix | Delete
},
[2706] Fix | Delete
get select() {
[2707] Fix | Delete
return thunkSelectors;
[2708] Fix | Delete
},
[2709] Fix | Delete
get resolveSelect() {
[2710] Fix | Delete
return getResolveSelectors();
[2711] Fix | Delete
}
[2712] Fix | Delete
};
[2713] Fix | Delete
const store = instantiateReduxStore(key, options, registry, thunkArgs);
[2714] Fix | Delete
// Expose the private registration functions on the store
[2715] Fix | Delete
// so they can be copied to a sub registry in registry.js.
[2716] Fix | Delete
lock(store, privateRegistrationFunctions);
[2717] Fix | Delete
const resolversCache = createResolversCache();
[2718] Fix | Delete
function bindAction(action) {
[2719] Fix | Delete
return (...args) => Promise.resolve(store.dispatch(action(...args)));
[2720] Fix | Delete
}
[2721] Fix | Delete
const actions = {
[2722] Fix | Delete
...mapValues(actions_namespaceObject, bindAction),
[2723] Fix | Delete
...mapValues(options.actions, bindAction)
[2724] Fix | Delete
};
[2725] Fix | Delete
const boundPrivateActions = createBindingCache(bindAction);
[2726] Fix | Delete
const allActions = new Proxy(() => {}, {
[2727] Fix | Delete
get: (target, prop) => {
[2728] Fix | Delete
const privateAction = privateActions[prop];
[2729] Fix | Delete
return privateAction ? boundPrivateActions.get(privateAction, prop) : actions[prop];
[2730] Fix | Delete
}
[2731] Fix | Delete
});
[2732] Fix | Delete
const thunkActions = new Proxy(allActions, {
[2733] Fix | Delete
apply: (target, thisArg, [action]) => store.dispatch(action)
[2734] Fix | Delete
});
[2735] Fix | Delete
lock(actions, allActions);
[2736] Fix | Delete
const resolvers = options.resolvers ? mapResolvers(options.resolvers) : {};
[2737] Fix | Delete
function bindSelector(selector, selectorName) {
[2738] Fix | Delete
if (selector.isRegistrySelector) {
[2739] Fix | Delete
selector.registry = registry;
[2740] Fix | Delete
}
[2741] Fix | Delete
const boundSelector = (...args) => {
[2742] Fix | Delete
args = normalize(selector, args);
[2743] Fix | Delete
const state = store.__unstableOriginalGetState();
[2744] Fix | Delete
// Before calling the selector, switch to the correct
[2745] Fix | Delete
// registry.
[2746] Fix | Delete
if (selector.isRegistrySelector) {
[2747] Fix | Delete
selector.registry = registry;
[2748] Fix | Delete
}
[2749] Fix | Delete
return selector(state.root, ...args);
[2750] Fix | Delete
};
[2751] Fix | Delete
[2752] Fix | Delete
// Expose normalization method on the bound selector
[2753] Fix | Delete
// in order that it can be called when fullfilling
[2754] Fix | Delete
// the resolver.
[2755] Fix | Delete
boundSelector.__unstableNormalizeArgs = selector.__unstableNormalizeArgs;
[2756] Fix | Delete
const resolver = resolvers[selectorName];
[2757] Fix | Delete
if (!resolver) {
[2758] Fix | Delete
boundSelector.hasResolver = false;
[2759] Fix | Delete
return boundSelector;
[2760] Fix | Delete
}
[2761] Fix | Delete
return mapSelectorWithResolver(boundSelector, selectorName, resolver, store, resolversCache);
[2762] Fix | Delete
}
[2763] Fix | Delete
function bindMetadataSelector(metaDataSelector) {
[2764] Fix | Delete
const boundSelector = (...args) => {
[2765] Fix | Delete
const state = store.__unstableOriginalGetState();
[2766] Fix | Delete
const originalSelectorName = args && args[0];
[2767] Fix | Delete
const originalSelectorArgs = args && args[1];
[2768] Fix | Delete
const targetSelector = options?.selectors?.[originalSelectorName];
[2769] Fix | Delete
[2770] Fix | Delete
// Normalize the arguments passed to the target selector.
[2771] Fix | Delete
if (originalSelectorName && targetSelector) {
[2772] Fix | Delete
args[1] = normalize(targetSelector, originalSelectorArgs);
[2773] Fix | Delete
}
[2774] Fix | Delete
return metaDataSelector(state.metadata, ...args);
[2775] Fix | Delete
};
[2776] Fix | Delete
boundSelector.hasResolver = false;
[2777] Fix | Delete
return boundSelector;
[2778] Fix | Delete
}
[2779] Fix | Delete
const selectors = {
[2780] Fix | Delete
...mapValues(selectors_namespaceObject, bindMetadataSelector),
[2781] Fix | Delete
...mapValues(options.selectors, bindSelector)
[2782] Fix | Delete
};
[2783] Fix | Delete
const boundPrivateSelectors = createBindingCache(bindSelector);
[2784] Fix | Delete
[2785] Fix | Delete
// Pre-bind the private selectors that have been registered by the time of
[2786] Fix | Delete
// instantiation, so that registry selectors are bound to the registry.
[2787] Fix | Delete
for (const [selectorName, selector] of Object.entries(privateSelectors)) {
[2788] Fix | Delete
boundPrivateSelectors.get(selector, selectorName);
[2789] Fix | Delete
}
[2790] Fix | Delete
const allSelectors = new Proxy(() => {}, {
[2791] Fix | Delete
get: (target, prop) => {
[2792] Fix | Delete
const privateSelector = privateSelectors[prop];
[2793] Fix | Delete
return privateSelector ? boundPrivateSelectors.get(privateSelector, prop) : selectors[prop];
[2794] Fix | Delete
}
[2795] Fix | Delete
});
[2796] Fix | Delete
const thunkSelectors = new Proxy(allSelectors, {
[2797] Fix | Delete
apply: (target, thisArg, [selector]) => selector(store.__unstableOriginalGetState())
[2798] Fix | Delete
});
[2799] Fix | Delete
lock(selectors, allSelectors);
[2800] Fix | Delete
const resolveSelectors = mapResolveSelectors(selectors, store);
[2801] Fix | Delete
const suspendSelectors = mapSuspendSelectors(selectors, store);
[2802] Fix | Delete
const getSelectors = () => selectors;
[2803] Fix | Delete
const getActions = () => actions;
[2804] Fix | Delete
const getResolveSelectors = () => resolveSelectors;
[2805] Fix | Delete
const getSuspendSelectors = () => suspendSelectors;
[2806] Fix | Delete
[2807] Fix | Delete
// We have some modules monkey-patching the store object
[2808] Fix | Delete
// It's wrong to do so but until we refactor all of our effects to controls
[2809] Fix | Delete
// We need to keep the same "store" instance here.
[2810] Fix | Delete
store.__unstableOriginalGetState = store.getState;
[2811] Fix | Delete
store.getState = () => store.__unstableOriginalGetState().root;
[2812] Fix | Delete
[2813] Fix | Delete
// Customize subscribe behavior to call listeners only on effective change,
[2814] Fix | Delete
// not on every dispatch.
[2815] Fix | Delete
const subscribe = store && (listener => {
[2816] Fix | Delete
listeners.add(listener);
[2817] Fix | Delete
return () => listeners.delete(listener);
[2818] Fix | Delete
});
[2819] Fix | Delete
let lastState = store.__unstableOriginalGetState();
[2820] Fix | Delete
store.subscribe(() => {
[2821] Fix | Delete
const state = store.__unstableOriginalGetState();
[2822] Fix | Delete
const hasChanged = state !== lastState;
[2823] Fix | Delete
lastState = state;
[2824] Fix | Delete
if (hasChanged) {
[2825] Fix | Delete
for (const listener of listeners) {
[2826] Fix | Delete
listener();
[2827] Fix | Delete
}
[2828] Fix | Delete
}
[2829] Fix | Delete
});
[2830] Fix | Delete
[2831] Fix | Delete
// This can be simplified to just { subscribe, getSelectors, getActions }
[2832] Fix | Delete
// Once we remove the use function.
[2833] Fix | Delete
return {
[2834] Fix | Delete
reducer,
[2835] Fix | Delete
store,
[2836] Fix | Delete
actions,
[2837] Fix | Delete
selectors,
[2838] Fix | Delete
resolvers,
[2839] Fix | Delete
getSelectors,
[2840] Fix | Delete
getResolveSelectors,
[2841] Fix | Delete
getSuspendSelectors,
[2842] Fix | Delete
getActions,
[2843] Fix | Delete
subscribe
[2844] Fix | Delete
};
[2845] Fix | Delete
}
[2846] Fix | Delete
};
[2847] Fix | Delete
[2848] Fix | Delete
// Expose the private registration functions on the store
[2849] Fix | Delete
// descriptor. That's a natural choice since that's where the
[2850] Fix | Delete
// public actions and selectors are stored .
[2851] Fix | Delete
lock(storeDescriptor, privateRegistrationFunctions);
[2852] Fix | Delete
return storeDescriptor;
[2853] Fix | Delete
}
[2854] Fix | Delete
[2855] Fix | Delete
/**
[2856] Fix | Delete
* Creates a redux store for a namespace.
[2857] Fix | Delete
*
[2858] Fix | Delete
* @param {string} key Unique namespace identifier.
[2859] Fix | Delete
* @param {Object} options Registered store options, with properties
[2860] Fix | Delete
* describing reducer, actions, selectors,
[2861] Fix | Delete
* and resolvers.
[2862] Fix | Delete
* @param {DataRegistry} registry Registry reference.
[2863] Fix | Delete
* @param {Object} thunkArgs Argument object for the thunk middleware.
[2864] Fix | Delete
* @return {Object} Newly created redux store.
[2865] Fix | Delete
*/
[2866] Fix | Delete
function instantiateReduxStore(key, options, registry, thunkArgs) {
[2867] Fix | Delete
const controls = {
[2868] Fix | Delete
...options.controls,
[2869] Fix | Delete
...builtinControls
[2870] Fix | Delete
};
[2871] Fix | Delete
const normalizedControls = mapValues(controls, control => control.isRegistryControl ? control(registry) : control);
[2872] Fix | Delete
const middlewares = [resolvers_cache_middleware(registry, key), promise_middleware, external_wp_reduxRoutine_default()(normalizedControls), createThunkMiddleware(thunkArgs)];
[2873] Fix | Delete
const enhancers = [applyMiddleware(...middlewares)];
[2874] Fix | Delete
if (typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__) {
[2875] Fix | Delete
enhancers.push(window.__REDUX_DEVTOOLS_EXTENSION__({
[2876] Fix | Delete
name: key,
[2877] Fix | Delete
instanceId: key,
[2878] Fix | Delete
serialize: {
[2879] Fix | Delete
replacer: devToolsReplacer
[2880] Fix | Delete
}
[2881] Fix | Delete
}));
[2882] Fix | Delete
}
[2883] Fix | Delete
const {
[2884] Fix | Delete
reducer,
[2885] Fix | Delete
initialState
[2886] Fix | Delete
} = options;
[2887] Fix | Delete
const enhancedReducer = combine_reducers_combineReducers({
[2888] Fix | Delete
metadata: metadata_reducer,
[2889] Fix | Delete
root: reducer
[2890] Fix | Delete
});
[2891] Fix | Delete
return createStore(enhancedReducer, {
[2892] Fix | Delete
root: initialState
[2893] Fix | Delete
}, (0,external_wp_compose_namespaceObject.compose)(enhancers));
[2894] Fix | Delete
}
[2895] Fix | Delete
[2896] Fix | Delete
/**
[2897] Fix | Delete
* Maps selectors to functions that return a resolution promise for them
[2898] Fix | Delete
*
[2899] Fix | Delete
* @param {Object} selectors Selectors to map.
[2900] Fix | Delete
* @param {Object} store The redux store the selectors select from.
[2901] Fix | Delete
*
[2902] Fix | Delete
* @return {Object} Selectors mapped to their resolution functions.
[2903] Fix | Delete
*/
[2904] Fix | Delete
function mapResolveSelectors(selectors, store) {
[2905] Fix | Delete
const {
[2906] Fix | Delete
getIsResolving,
[2907] Fix | Delete
hasStartedResolution,
[2908] Fix | Delete
hasFinishedResolution,
[2909] Fix | Delete
hasResolutionFailed,
[2910] Fix | Delete
isResolving,
[2911] Fix | Delete
getCachedResolvers,
[2912] Fix | Delete
getResolutionState,
[2913] Fix | Delete
getResolutionError,
[2914] Fix | Delete
hasResolvingSelectors,
[2915] Fix | Delete
countSelectorsByStatus,
[2916] Fix | Delete
...storeSelectors
[2917] Fix | Delete
} = selectors;
[2918] Fix | Delete
return mapValues(storeSelectors, (selector, selectorName) => {
[2919] Fix | Delete
// If the selector doesn't have a resolver, just convert the return value
[2920] Fix | Delete
// (including exceptions) to a Promise, no additional extra behavior is needed.
[2921] Fix | Delete
if (!selector.hasResolver) {
[2922] Fix | Delete
return async (...args) => selector.apply(null, args);
[2923] Fix | Delete
}
[2924] Fix | Delete
return (...args) => {
[2925] Fix | Delete
return new Promise((resolve, reject) => {
[2926] Fix | Delete
const hasFinished = () => selectors.hasFinishedResolution(selectorName, args);
[2927] Fix | Delete
const finalize = result => {
[2928] Fix | Delete
const hasFailed = selectors.hasResolutionFailed(selectorName, args);
[2929] Fix | Delete
if (hasFailed) {
[2930] Fix | Delete
const error = selectors.getResolutionError(selectorName, args);
[2931] Fix | Delete
reject(error);
[2932] Fix | Delete
} else {
[2933] Fix | Delete
resolve(result);
[2934] Fix | Delete
}
[2935] Fix | Delete
};
[2936] Fix | Delete
const getResult = () => selector.apply(null, args);
[2937] Fix | Delete
// Trigger the selector (to trigger the resolver)
[2938] Fix | Delete
const result = getResult();
[2939] Fix | Delete
if (hasFinished()) {
[2940] Fix | Delete
return finalize(result);
[2941] Fix | Delete
}
[2942] Fix | Delete
const unsubscribe = store.subscribe(() => {
[2943] Fix | Delete
if (hasFinished()) {
[2944] Fix | Delete
unsubscribe();
[2945] Fix | Delete
finalize(getResult());
[2946] Fix | Delete
}
[2947] Fix | Delete
});
[2948] Fix | Delete
});
[2949] Fix | Delete
};
[2950] Fix | Delete
});
[2951] Fix | Delete
}
[2952] Fix | Delete
[2953] Fix | Delete
/**
[2954] Fix | Delete
* Maps selectors to functions that throw a suspense promise if not yet resolved.
[2955] Fix | Delete
*
[2956] Fix | Delete
* @param {Object} selectors Selectors to map.
[2957] Fix | Delete
* @param {Object} store The redux store the selectors select from.
[2958] Fix | Delete
*
[2959] Fix | Delete
* @return {Object} Selectors mapped to their suspense functions.
[2960] Fix | Delete
*/
[2961] Fix | Delete
function mapSuspendSelectors(selectors, store) {
[2962] Fix | Delete
return mapValues(selectors, (selector, selectorName) => {
[2963] Fix | Delete
// Selector without a resolver doesn't have any extra suspense behavior.
[2964] Fix | Delete
if (!selector.hasResolver) {
[2965] Fix | Delete
return selector;
[2966] Fix | Delete
}
[2967] Fix | Delete
return (...args) => {
[2968] Fix | Delete
const result = selector.apply(null, args);
[2969] Fix | Delete
if (selectors.hasFinishedResolution(selectorName, args)) {
[2970] Fix | Delete
if (selectors.hasResolutionFailed(selectorName, args)) {
[2971] Fix | Delete
throw selectors.getResolutionError(selectorName, args);
[2972] Fix | Delete
}
[2973] Fix | Delete
return result;
[2974] Fix | Delete
}
[2975] Fix | Delete
throw new Promise(resolve => {
[2976] Fix | Delete
const unsubscribe = store.subscribe(() => {
[2977] Fix | Delete
if (selectors.hasFinishedResolution(selectorName, args)) {
[2978] Fix | Delete
resolve();
[2979] Fix | Delete
unsubscribe();
[2980] Fix | Delete
}
[2981] Fix | Delete
});
[2982] Fix | Delete
});
[2983] Fix | Delete
};
[2984] Fix | Delete
});
[2985] Fix | Delete
}
[2986] Fix | Delete
[2987] Fix | Delete
/**
[2988] Fix | Delete
* Convert resolvers to a normalized form, an object with `fulfill` method and
[2989] Fix | Delete
* optional methods like `isFulfilled`.
[2990] Fix | Delete
*
[2991] Fix | Delete
* @param {Object} resolvers Resolver to convert
[2992] Fix | Delete
*/
[2993] Fix | Delete
function mapResolvers(resolvers) {
[2994] Fix | Delete
return mapValues(resolvers, resolver => {
[2995] Fix | Delete
if (resolver.fulfill) {
[2996] Fix | Delete
return resolver;
[2997] Fix | Delete
}
[2998] Fix | Delete
return {
[2999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function