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: core-data.js
innerBlocks: makeBlocksSerializable(innerBlocks)
[3000] Fix | Delete
};
[3001] Fix | Delete
});
[3002] Fix | Delete
}
[3003] Fix | Delete
[3004] Fix | Delete
/**
[3005] Fix | Delete
* Returns the list of post type entities.
[3006] Fix | Delete
*
[3007] Fix | Delete
* @return {Promise} Entities promise
[3008] Fix | Delete
*/
[3009] Fix | Delete
async function loadPostTypeEntities() {
[3010] Fix | Delete
const postTypes = await external_wp_apiFetch_default()({
[3011] Fix | Delete
path: '/wp/v2/types?context=view'
[3012] Fix | Delete
});
[3013] Fix | Delete
return Object.entries(postTypes !== null && postTypes !== void 0 ? postTypes : {}).map(([name, postType]) => {
[3014] Fix | Delete
var _postType$rest_namesp;
[3015] Fix | Delete
const isTemplate = ['wp_template', 'wp_template_part'].includes(name);
[3016] Fix | Delete
const namespace = (_postType$rest_namesp = postType?.rest_namespace) !== null && _postType$rest_namesp !== void 0 ? _postType$rest_namesp : 'wp/v2';
[3017] Fix | Delete
return {
[3018] Fix | Delete
kind: 'postType',
[3019] Fix | Delete
baseURL: `/${namespace}/${postType.rest_base}`,
[3020] Fix | Delete
baseURLParams: {
[3021] Fix | Delete
context: 'edit'
[3022] Fix | Delete
},
[3023] Fix | Delete
name,
[3024] Fix | Delete
label: postType.name,
[3025] Fix | Delete
transientEdits: {
[3026] Fix | Delete
blocks: true,
[3027] Fix | Delete
selection: true
[3028] Fix | Delete
},
[3029] Fix | Delete
mergedEdits: {
[3030] Fix | Delete
meta: true
[3031] Fix | Delete
},
[3032] Fix | Delete
rawAttributes: POST_RAW_ATTRIBUTES,
[3033] Fix | Delete
getTitle: record => {
[3034] Fix | Delete
var _record$slug;
[3035] Fix | Delete
return record?.title?.rendered || record?.title || (isTemplate ? capitalCase((_record$slug = record.slug) !== null && _record$slug !== void 0 ? _record$slug : '') : String(record.id));
[3036] Fix | Delete
},
[3037] Fix | Delete
__unstablePrePersist: isTemplate ? undefined : prePersistPostType,
[3038] Fix | Delete
__unstable_rest_base: postType.rest_base,
[3039] Fix | Delete
syncConfig: {
[3040] Fix | Delete
fetch: async id => {
[3041] Fix | Delete
return external_wp_apiFetch_default()({
[3042] Fix | Delete
path: `/${namespace}/${postType.rest_base}/${id}?context=edit`
[3043] Fix | Delete
});
[3044] Fix | Delete
},
[3045] Fix | Delete
applyChangesToDoc: (doc, changes) => {
[3046] Fix | Delete
const document = doc.getMap('document');
[3047] Fix | Delete
Object.entries(changes).forEach(([key, value]) => {
[3048] Fix | Delete
if (typeof value !== 'function') {
[3049] Fix | Delete
if (key === 'blocks') {
[3050] Fix | Delete
if (!serialisableBlocksCache.has(value)) {
[3051] Fix | Delete
serialisableBlocksCache.set(value, makeBlocksSerializable(value));
[3052] Fix | Delete
}
[3053] Fix | Delete
value = serialisableBlocksCache.get(value);
[3054] Fix | Delete
}
[3055] Fix | Delete
if (document.get(key) !== value) {
[3056] Fix | Delete
document.set(key, value);
[3057] Fix | Delete
}
[3058] Fix | Delete
}
[3059] Fix | Delete
});
[3060] Fix | Delete
},
[3061] Fix | Delete
fromCRDTDoc: doc => {
[3062] Fix | Delete
return doc.getMap('document').toJSON();
[3063] Fix | Delete
}
[3064] Fix | Delete
},
[3065] Fix | Delete
syncObjectType: 'postType/' + postType.name,
[3066] Fix | Delete
getSyncObjectId: id => id,
[3067] Fix | Delete
supportsPagination: true,
[3068] Fix | Delete
getRevisionsUrl: (parentId, revisionId) => `/${namespace}/${postType.rest_base}/${parentId}/revisions${revisionId ? '/' + revisionId : ''}`,
[3069] Fix | Delete
revisionKey: isTemplate ? 'wp_id' : DEFAULT_ENTITY_KEY
[3070] Fix | Delete
};
[3071] Fix | Delete
});
[3072] Fix | Delete
}
[3073] Fix | Delete
[3074] Fix | Delete
/**
[3075] Fix | Delete
* Returns the list of the taxonomies entities.
[3076] Fix | Delete
*
[3077] Fix | Delete
* @return {Promise} Entities promise
[3078] Fix | Delete
*/
[3079] Fix | Delete
async function loadTaxonomyEntities() {
[3080] Fix | Delete
const taxonomies = await external_wp_apiFetch_default()({
[3081] Fix | Delete
path: '/wp/v2/taxonomies?context=view'
[3082] Fix | Delete
});
[3083] Fix | Delete
return Object.entries(taxonomies !== null && taxonomies !== void 0 ? taxonomies : {}).map(([name, taxonomy]) => {
[3084] Fix | Delete
var _taxonomy$rest_namesp;
[3085] Fix | Delete
const namespace = (_taxonomy$rest_namesp = taxonomy?.rest_namespace) !== null && _taxonomy$rest_namesp !== void 0 ? _taxonomy$rest_namesp : 'wp/v2';
[3086] Fix | Delete
return {
[3087] Fix | Delete
kind: 'taxonomy',
[3088] Fix | Delete
baseURL: `/${namespace}/${taxonomy.rest_base}`,
[3089] Fix | Delete
baseURLParams: {
[3090] Fix | Delete
context: 'edit'
[3091] Fix | Delete
},
[3092] Fix | Delete
name,
[3093] Fix | Delete
label: taxonomy.name
[3094] Fix | Delete
};
[3095] Fix | Delete
});
[3096] Fix | Delete
}
[3097] Fix | Delete
[3098] Fix | Delete
/**
[3099] Fix | Delete
* Returns the Site entity.
[3100] Fix | Delete
*
[3101] Fix | Delete
* @return {Promise} Entity promise
[3102] Fix | Delete
*/
[3103] Fix | Delete
async function loadSiteEntity() {
[3104] Fix | Delete
var _site$schema$properti;
[3105] Fix | Delete
const entity = {
[3106] Fix | Delete
label: (0,external_wp_i18n_namespaceObject.__)('Site'),
[3107] Fix | Delete
name: 'site',
[3108] Fix | Delete
kind: 'root',
[3109] Fix | Delete
baseURL: '/wp/v2/settings',
[3110] Fix | Delete
syncConfig: {
[3111] Fix | Delete
fetch: async () => {
[3112] Fix | Delete
return external_wp_apiFetch_default()({
[3113] Fix | Delete
path: '/wp/v2/settings'
[3114] Fix | Delete
});
[3115] Fix | Delete
},
[3116] Fix | Delete
applyChangesToDoc: (doc, changes) => {
[3117] Fix | Delete
const document = doc.getMap('document');
[3118] Fix | Delete
Object.entries(changes).forEach(([key, value]) => {
[3119] Fix | Delete
if (document.get(key) !== value) {
[3120] Fix | Delete
document.set(key, value);
[3121] Fix | Delete
}
[3122] Fix | Delete
});
[3123] Fix | Delete
},
[3124] Fix | Delete
fromCRDTDoc: doc => {
[3125] Fix | Delete
return doc.getMap('document').toJSON();
[3126] Fix | Delete
}
[3127] Fix | Delete
},
[3128] Fix | Delete
syncObjectType: 'root/site',
[3129] Fix | Delete
getSyncObjectId: () => 'index',
[3130] Fix | Delete
meta: {}
[3131] Fix | Delete
};
[3132] Fix | Delete
const site = await external_wp_apiFetch_default()({
[3133] Fix | Delete
path: entity.baseURL,
[3134] Fix | Delete
method: 'OPTIONS'
[3135] Fix | Delete
});
[3136] Fix | Delete
const labels = {};
[3137] Fix | Delete
Object.entries((_site$schema$properti = site?.schema?.properties) !== null && _site$schema$properti !== void 0 ? _site$schema$properti : {}).forEach(([key, value]) => {
[3138] Fix | Delete
// Ignore properties `title` and `type` keys.
[3139] Fix | Delete
if (typeof value === 'object' && value.title) {
[3140] Fix | Delete
labels[key] = value.title;
[3141] Fix | Delete
}
[3142] Fix | Delete
});
[3143] Fix | Delete
return [{
[3144] Fix | Delete
...entity,
[3145] Fix | Delete
meta: {
[3146] Fix | Delete
labels
[3147] Fix | Delete
}
[3148] Fix | Delete
}];
[3149] Fix | Delete
}
[3150] Fix | Delete
[3151] Fix | Delete
/**
[3152] Fix | Delete
* Returns the entity's getter method name given its kind and name or plural name.
[3153] Fix | Delete
*
[3154] Fix | Delete
* @example
[3155] Fix | Delete
* ```js
[3156] Fix | Delete
* const nameSingular = getMethodName( 'root', 'theme', 'get' );
[3157] Fix | Delete
* // nameSingular is getRootTheme
[3158] Fix | Delete
*
[3159] Fix | Delete
* const namePlural = getMethodName( 'root', 'themes', 'set' );
[3160] Fix | Delete
* // namePlural is setRootThemes
[3161] Fix | Delete
* ```
[3162] Fix | Delete
*
[3163] Fix | Delete
* @param {string} kind Entity kind.
[3164] Fix | Delete
* @param {string} name Entity name or plural name.
[3165] Fix | Delete
* @param {string} prefix Function prefix.
[3166] Fix | Delete
*
[3167] Fix | Delete
* @return {string} Method name
[3168] Fix | Delete
*/
[3169] Fix | Delete
const getMethodName = (kind, name, prefix = 'get') => {
[3170] Fix | Delete
const kindPrefix = kind === 'root' ? '' : pascalCase(kind);
[3171] Fix | Delete
const suffix = pascalCase(name);
[3172] Fix | Delete
return `${prefix}${kindPrefix}${suffix}`;
[3173] Fix | Delete
};
[3174] Fix | Delete
function registerSyncConfigs(configs) {
[3175] Fix | Delete
configs.forEach(({
[3176] Fix | Delete
syncObjectType,
[3177] Fix | Delete
syncConfig
[3178] Fix | Delete
}) => {
[3179] Fix | Delete
getSyncProvider().register(syncObjectType, syncConfig);
[3180] Fix | Delete
const editSyncConfig = {
[3181] Fix | Delete
...syncConfig
[3182] Fix | Delete
};
[3183] Fix | Delete
delete editSyncConfig.fetch;
[3184] Fix | Delete
getSyncProvider().register(syncObjectType + '--edit', editSyncConfig);
[3185] Fix | Delete
});
[3186] Fix | Delete
}
[3187] Fix | Delete
[3188] Fix | Delete
/**
[3189] Fix | Delete
* Loads the entities into the store.
[3190] Fix | Delete
*
[3191] Fix | Delete
* Note: The `name` argument is used for `root` entities requiring additional server data.
[3192] Fix | Delete
*
[3193] Fix | Delete
* @param {string} kind Kind
[3194] Fix | Delete
* @param {string} name Name
[3195] Fix | Delete
* @return {(thunkArgs: object) => Promise<Array>} Entities
[3196] Fix | Delete
*/
[3197] Fix | Delete
const getOrLoadEntitiesConfig = (kind, name) => async ({
[3198] Fix | Delete
select,
[3199] Fix | Delete
dispatch
[3200] Fix | Delete
}) => {
[3201] Fix | Delete
let configs = select.getEntitiesConfig(kind);
[3202] Fix | Delete
const hasConfig = !!select.getEntityConfig(kind, name);
[3203] Fix | Delete
if (configs?.length > 0 && hasConfig) {
[3204] Fix | Delete
if (window.__experimentalEnableSync) {
[3205] Fix | Delete
if (false) {}
[3206] Fix | Delete
}
[3207] Fix | Delete
return configs;
[3208] Fix | Delete
}
[3209] Fix | Delete
const loader = additionalEntityConfigLoaders.find(l => {
[3210] Fix | Delete
if (!name || !l.name) {
[3211] Fix | Delete
return l.kind === kind;
[3212] Fix | Delete
}
[3213] Fix | Delete
return l.kind === kind && l.name === name;
[3214] Fix | Delete
});
[3215] Fix | Delete
if (!loader) {
[3216] Fix | Delete
return [];
[3217] Fix | Delete
}
[3218] Fix | Delete
configs = await loader.loadEntities();
[3219] Fix | Delete
if (window.__experimentalEnableSync) {
[3220] Fix | Delete
if (false) {}
[3221] Fix | Delete
}
[3222] Fix | Delete
dispatch(addEntities(configs));
[3223] Fix | Delete
return configs;
[3224] Fix | Delete
};
[3225] Fix | Delete
[3226] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/core-data/build-module/utils/get-normalized-comma-separable.js
[3227] Fix | Delete
/**
[3228] Fix | Delete
* Given a value which can be specified as one or the other of a comma-separated
[3229] Fix | Delete
* string or an array, returns a value normalized to an array of strings, or
[3230] Fix | Delete
* null if the value cannot be interpreted as either.
[3231] Fix | Delete
*
[3232] Fix | Delete
* @param {string|string[]|*} value
[3233] Fix | Delete
*
[3234] Fix | Delete
* @return {?(string[])} Normalized field value.
[3235] Fix | Delete
*/
[3236] Fix | Delete
function getNormalizedCommaSeparable(value) {
[3237] Fix | Delete
if (typeof value === 'string') {
[3238] Fix | Delete
return value.split(',');
[3239] Fix | Delete
} else if (Array.isArray(value)) {
[3240] Fix | Delete
return value;
[3241] Fix | Delete
}
[3242] Fix | Delete
return null;
[3243] Fix | Delete
}
[3244] Fix | Delete
/* harmony default export */ const get_normalized_comma_separable = (getNormalizedCommaSeparable);
[3245] Fix | Delete
[3246] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/core-data/build-module/utils/with-weak-map-cache.js
[3247] Fix | Delete
/**
[3248] Fix | Delete
* Given a function, returns an enhanced function which caches the result and
[3249] Fix | Delete
* tracks in WeakMap. The result is only cached if the original function is
[3250] Fix | Delete
* passed a valid object-like argument (requirement for WeakMap key).
[3251] Fix | Delete
*
[3252] Fix | Delete
* @param {Function} fn Original function.
[3253] Fix | Delete
*
[3254] Fix | Delete
* @return {Function} Enhanced caching function.
[3255] Fix | Delete
*/
[3256] Fix | Delete
function withWeakMapCache(fn) {
[3257] Fix | Delete
const cache = new WeakMap();
[3258] Fix | Delete
return key => {
[3259] Fix | Delete
let value;
[3260] Fix | Delete
if (cache.has(key)) {
[3261] Fix | Delete
value = cache.get(key);
[3262] Fix | Delete
} else {
[3263] Fix | Delete
value = fn(key);
[3264] Fix | Delete
[3265] Fix | Delete
// Can reach here if key is not valid for WeakMap, since `has`
[3266] Fix | Delete
// will return false for invalid key. Since `set` will throw,
[3267] Fix | Delete
// ensure that key is valid before setting into cache.
[3268] Fix | Delete
if (key !== null && typeof key === 'object') {
[3269] Fix | Delete
cache.set(key, value);
[3270] Fix | Delete
}
[3271] Fix | Delete
}
[3272] Fix | Delete
return value;
[3273] Fix | Delete
};
[3274] Fix | Delete
}
[3275] Fix | Delete
/* harmony default export */ const with_weak_map_cache = (withWeakMapCache);
[3276] Fix | Delete
[3277] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/core-data/build-module/queried-data/get-query-parts.js
[3278] Fix | Delete
/**
[3279] Fix | Delete
* WordPress dependencies
[3280] Fix | Delete
*/
[3281] Fix | Delete
[3282] Fix | Delete
[3283] Fix | Delete
/**
[3284] Fix | Delete
* Internal dependencies
[3285] Fix | Delete
*/
[3286] Fix | Delete
[3287] Fix | Delete
[3288] Fix | Delete
/**
[3289] Fix | Delete
* An object of properties describing a specific query.
[3290] Fix | Delete
*
[3291] Fix | Delete
* @typedef {Object} WPQueriedDataQueryParts
[3292] Fix | Delete
*
[3293] Fix | Delete
* @property {number} page The query page (1-based index, default 1).
[3294] Fix | Delete
* @property {number} perPage Items per page for query (default 10).
[3295] Fix | Delete
* @property {string} stableKey An encoded stable string of all non-
[3296] Fix | Delete
* pagination, non-fields query parameters.
[3297] Fix | Delete
* @property {?(string[])} fields Target subset of fields to derive from
[3298] Fix | Delete
* item objects.
[3299] Fix | Delete
* @property {?(number[])} include Specific item IDs to include.
[3300] Fix | Delete
* @property {string} context Scope under which the request is made;
[3301] Fix | Delete
* determines returned fields in response.
[3302] Fix | Delete
*/
[3303] Fix | Delete
[3304] Fix | Delete
/**
[3305] Fix | Delete
* Given a query object, returns an object of parts, including pagination
[3306] Fix | Delete
* details (`page` and `perPage`, or default values). All other properties are
[3307] Fix | Delete
* encoded into a stable (idempotent) `stableKey` value.
[3308] Fix | Delete
*
[3309] Fix | Delete
* @param {Object} query Optional query object.
[3310] Fix | Delete
*
[3311] Fix | Delete
* @return {WPQueriedDataQueryParts} Query parts.
[3312] Fix | Delete
*/
[3313] Fix | Delete
function getQueryParts(query) {
[3314] Fix | Delete
/**
[3315] Fix | Delete
* @type {WPQueriedDataQueryParts}
[3316] Fix | Delete
*/
[3317] Fix | Delete
const parts = {
[3318] Fix | Delete
stableKey: '',
[3319] Fix | Delete
page: 1,
[3320] Fix | Delete
perPage: 10,
[3321] Fix | Delete
fields: null,
[3322] Fix | Delete
include: null,
[3323] Fix | Delete
context: 'default'
[3324] Fix | Delete
};
[3325] Fix | Delete
[3326] Fix | Delete
// Ensure stable key by sorting keys. Also more efficient for iterating.
[3327] Fix | Delete
const keys = Object.keys(query).sort();
[3328] Fix | Delete
for (let i = 0; i < keys.length; i++) {
[3329] Fix | Delete
const key = keys[i];
[3330] Fix | Delete
let value = query[key];
[3331] Fix | Delete
switch (key) {
[3332] Fix | Delete
case 'page':
[3333] Fix | Delete
parts[key] = Number(value);
[3334] Fix | Delete
break;
[3335] Fix | Delete
case 'per_page':
[3336] Fix | Delete
parts.perPage = Number(value);
[3337] Fix | Delete
break;
[3338] Fix | Delete
case 'context':
[3339] Fix | Delete
parts.context = value;
[3340] Fix | Delete
break;
[3341] Fix | Delete
default:
[3342] Fix | Delete
// While in theory, we could exclude "_fields" from the stableKey
[3343] Fix | Delete
// because two request with different fields have the same results
[3344] Fix | Delete
// We're not able to ensure that because the server can decide to omit
[3345] Fix | Delete
// fields from the response even if we explicitly asked for it.
[3346] Fix | Delete
// Example: Asking for titles in posts without title support.
[3347] Fix | Delete
if (key === '_fields') {
[3348] Fix | Delete
var _getNormalizedCommaSe;
[3349] Fix | Delete
parts.fields = (_getNormalizedCommaSe = get_normalized_comma_separable(value)) !== null && _getNormalizedCommaSe !== void 0 ? _getNormalizedCommaSe : [];
[3350] Fix | Delete
// Make sure to normalize value for `stableKey`
[3351] Fix | Delete
value = parts.fields.join();
[3352] Fix | Delete
}
[3353] Fix | Delete
[3354] Fix | Delete
// Two requests with different include values cannot have same results.
[3355] Fix | Delete
if (key === 'include') {
[3356] Fix | Delete
var _getNormalizedCommaSe2;
[3357] Fix | Delete
if (typeof value === 'number') {
[3358] Fix | Delete
value = value.toString();
[3359] Fix | Delete
}
[3360] Fix | Delete
parts.include = ((_getNormalizedCommaSe2 = get_normalized_comma_separable(value)) !== null && _getNormalizedCommaSe2 !== void 0 ? _getNormalizedCommaSe2 : []).map(Number);
[3361] Fix | Delete
// Normalize value for `stableKey`.
[3362] Fix | Delete
value = parts.include.join();
[3363] Fix | Delete
}
[3364] Fix | Delete
[3365] Fix | Delete
// While it could be any deterministic string, for simplicity's
[3366] Fix | Delete
// sake mimic querystring encoding for stable key.
[3367] Fix | Delete
//
[3368] Fix | Delete
// TODO: For consistency with PHP implementation, addQueryArgs
[3369] Fix | Delete
// should accept a key value pair, which may optimize its
[3370] Fix | Delete
// implementation for our use here, vs. iterating an object
[3371] Fix | Delete
// with only a single key.
[3372] Fix | Delete
parts.stableKey += (parts.stableKey ? '&' : '') + (0,external_wp_url_namespaceObject.addQueryArgs)('', {
[3373] Fix | Delete
[key]: value
[3374] Fix | Delete
}).slice(1);
[3375] Fix | Delete
}
[3376] Fix | Delete
}
[3377] Fix | Delete
return parts;
[3378] Fix | Delete
}
[3379] Fix | Delete
/* harmony default export */ const get_query_parts = (with_weak_map_cache(getQueryParts));
[3380] Fix | Delete
[3381] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/core-data/build-module/queried-data/reducer.js
[3382] Fix | Delete
/**
[3383] Fix | Delete
* WordPress dependencies
[3384] Fix | Delete
*/
[3385] Fix | Delete
[3386] Fix | Delete
[3387] Fix | Delete
[3388] Fix | Delete
/**
[3389] Fix | Delete
* Internal dependencies
[3390] Fix | Delete
*/
[3391] Fix | Delete
[3392] Fix | Delete
[3393] Fix | Delete
[3394] Fix | Delete
function getContextFromAction(action) {
[3395] Fix | Delete
const {
[3396] Fix | Delete
query
[3397] Fix | Delete
} = action;
[3398] Fix | Delete
if (!query) {
[3399] Fix | Delete
return 'default';
[3400] Fix | Delete
}
[3401] Fix | Delete
const queryParts = get_query_parts(query);
[3402] Fix | Delete
return queryParts.context;
[3403] Fix | Delete
}
[3404] Fix | Delete
[3405] Fix | Delete
/**
[3406] Fix | Delete
* Returns a merged array of item IDs, given details of the received paginated
[3407] Fix | Delete
* items. The array is sparse-like with `undefined` entries where holes exist.
[3408] Fix | Delete
*
[3409] Fix | Delete
* @param {?Array<number>} itemIds Original item IDs (default empty array).
[3410] Fix | Delete
* @param {number[]} nextItemIds Item IDs to merge.
[3411] Fix | Delete
* @param {number} page Page of items merged.
[3412] Fix | Delete
* @param {number} perPage Number of items per page.
[3413] Fix | Delete
*
[3414] Fix | Delete
* @return {number[]} Merged array of item IDs.
[3415] Fix | Delete
*/
[3416] Fix | Delete
function getMergedItemIds(itemIds, nextItemIds, page, perPage) {
[3417] Fix | Delete
var _itemIds$length;
[3418] Fix | Delete
const receivedAllIds = page === 1 && perPage === -1;
[3419] Fix | Delete
if (receivedAllIds) {
[3420] Fix | Delete
return nextItemIds;
[3421] Fix | Delete
}
[3422] Fix | Delete
const nextItemIdsStartIndex = (page - 1) * perPage;
[3423] Fix | Delete
[3424] Fix | Delete
// If later page has already been received, default to the larger known
[3425] Fix | Delete
// size of the existing array, else calculate as extending the existing.
[3426] Fix | Delete
const size = Math.max((_itemIds$length = itemIds?.length) !== null && _itemIds$length !== void 0 ? _itemIds$length : 0, nextItemIdsStartIndex + nextItemIds.length);
[3427] Fix | Delete
[3428] Fix | Delete
// Preallocate array since size is known.
[3429] Fix | Delete
const mergedItemIds = new Array(size);
[3430] Fix | Delete
for (let i = 0; i < size; i++) {
[3431] Fix | Delete
// Preserve existing item ID except for subset of range of next items.
[3432] Fix | Delete
// We need to check against the possible maximum upper boundary because
[3433] Fix | Delete
// a page could receive fewer than what was previously stored.
[3434] Fix | Delete
const isInNextItemsRange = i >= nextItemIdsStartIndex && i < nextItemIdsStartIndex + perPage;
[3435] Fix | Delete
mergedItemIds[i] = isInNextItemsRange ? nextItemIds[i - nextItemIdsStartIndex] : itemIds?.[i];
[3436] Fix | Delete
}
[3437] Fix | Delete
return mergedItemIds;
[3438] Fix | Delete
}
[3439] Fix | Delete
[3440] Fix | Delete
/**
[3441] Fix | Delete
* Helper function to filter out entities with certain IDs.
[3442] Fix | Delete
* Entities are keyed by their ID.
[3443] Fix | Delete
*
[3444] Fix | Delete
* @param {Object} entities Entity objects, keyed by entity ID.
[3445] Fix | Delete
* @param {Array} ids Entity IDs to filter out.
[3446] Fix | Delete
*
[3447] Fix | Delete
* @return {Object} Filtered entities.
[3448] Fix | Delete
*/
[3449] Fix | Delete
function removeEntitiesById(entities, ids) {
[3450] Fix | Delete
return Object.fromEntries(Object.entries(entities).filter(([id]) => !ids.some(itemId => {
[3451] Fix | Delete
if (Number.isInteger(itemId)) {
[3452] Fix | Delete
return itemId === +id;
[3453] Fix | Delete
}
[3454] Fix | Delete
return itemId === id;
[3455] Fix | Delete
})));
[3456] Fix | Delete
}
[3457] Fix | Delete
[3458] Fix | Delete
/**
[3459] Fix | Delete
* Reducer tracking items state, keyed by ID. Items are assumed to be normal,
[3460] Fix | Delete
* where identifiers are common across all queries.
[3461] Fix | Delete
*
[3462] Fix | Delete
* @param {Object} state Current state.
[3463] Fix | Delete
* @param {Object} action Dispatched action.
[3464] Fix | Delete
*
[3465] Fix | Delete
* @return {Object} Next state.
[3466] Fix | Delete
*/
[3467] Fix | Delete
function items(state = {}, action) {
[3468] Fix | Delete
switch (action.type) {
[3469] Fix | Delete
case 'RECEIVE_ITEMS':
[3470] Fix | Delete
{
[3471] Fix | Delete
const context = getContextFromAction(action);
[3472] Fix | Delete
const key = action.key || DEFAULT_ENTITY_KEY;
[3473] Fix | Delete
return {
[3474] Fix | Delete
...state,
[3475] Fix | Delete
[context]: {
[3476] Fix | Delete
...state[context],
[3477] Fix | Delete
...action.items.reduce((accumulator, value) => {
[3478] Fix | Delete
const itemId = value?.[key];
[3479] Fix | Delete
accumulator[itemId] = conservativeMapItem(state?.[context]?.[itemId], value);
[3480] Fix | Delete
return accumulator;
[3481] Fix | Delete
}, {})
[3482] Fix | Delete
}
[3483] Fix | Delete
};
[3484] Fix | Delete
}
[3485] Fix | Delete
case 'REMOVE_ITEMS':
[3486] Fix | Delete
return Object.fromEntries(Object.entries(state).map(([itemId, contextState]) => [itemId, removeEntitiesById(contextState, action.itemIds)]));
[3487] Fix | Delete
}
[3488] Fix | Delete
return state;
[3489] Fix | Delete
}
[3490] Fix | Delete
[3491] Fix | Delete
/**
[3492] Fix | Delete
* Reducer tracking item completeness, keyed by ID. A complete item is one for
[3493] Fix | Delete
* which all fields are known. This is used in supporting `_fields` queries,
[3494] Fix | Delete
* where not all properties associated with an entity are necessarily returned.
[3495] Fix | Delete
* In such cases, completeness is used as an indication of whether it would be
[3496] Fix | Delete
* safe to use queried data for a non-`_fields`-limited request.
[3497] Fix | Delete
*
[3498] Fix | Delete
* @param {Object<string,Object<string,boolean>>} state Current state.
[3499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function