123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881 |
- /******/ (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 `lodash.debounce` 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__;
- /******/ })()
- ;
|