Base Directory:
/home/ecedu/public_html/wp-includes/js/dist
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ 3249:
/***/ ((module) => {
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
/**
* Given an instance of EquivalentKeyMap, returns its internal value pair tuple
* for a key, if one exists. The tuple members consist of the last reference
* value for the key (used in efficient subsequent lookups) and the value
* assigned for the key at the leaf node.
*
* @param {EquivalentKeyMap} instance EquivalentKeyMap instance.
* @param {*} key The key for which to return value pair.
*
* @return {?Array} Value pair, if exists.
*/
function getValuePair(instance, key) {
var _map = instance._map,
_arrayTreeMap = instance._arrayTreeMap,
_objectTreeMap = instance._objectTreeMap; // Map keeps a reference to the last object-like key used to set the
// value, which can be used to shortcut immediately to the value.
if (_map.has(key)) {
return _map.get(key);
} // Sort keys to ensure stable retrieval from tree.
var properties = Object.keys(key).sort(); // Tree by type to avoid conflicts on numeric object keys, empty value.
var map = Array.isArray(key) ? _arrayTreeMap : _objectTreeMap;
for (var i = 0; i < properties.length; i++) {
var property = properties[i];
map = map.get(property);
if (map === undefined) {
return;
}
var propertyValue = key[property];
map = map.get(propertyValue);
if (map === undefined) {
return;
}
}
var valuePair = map.get('_ekm_value');
if (!valuePair) {
return;
} // If reached, it implies that an object-like key was set with another
// reference, so delete the reference and replace with the current.
_map.delete(valuePair[0]);
valuePair[0] = key;
map.set('_ekm_value', valuePair);
_map.set(key, valuePair);
return valuePair;
}
/**
* Variant of a Map object which enables lookup by equivalent (deeply equal)
* object and array keys.
*/
var EquivalentKeyMap =
/*#__PURE__*/
function () {
/**
* Constructs a new instance of EquivalentKeyMap.
*
* @param {Iterable.<*>} iterable Initial pair of key, value for map.
*/
function EquivalentKeyMap(iterable) {
_classCallCheck(this, EquivalentKeyMap);
this.clear();
if (iterable instanceof EquivalentKeyMap) {
// Map#forEach is only means of iterating with support for IE11.
var iterablePairs = [];
iterable.forEach(function (value, key) {
iterablePairs.push([key, value]);
});
iterable = iterablePairs;
}
if (iterable != null) {
for (var i = 0; i < iterable.length; i++) {
this.set(iterable[i][0], iterable[i][1]);
}
}
}
/**
* Accessor property returning the number of elements.
*
* @return {number} Number of elements.
*/
_createClass(EquivalentKeyMap, [{
key: "set",
/**
* Add or update an element with a specified key and value.
*
* @param {*} key The key of the element to add.
* @param {*} value The value of the element to add.
*
* @return {EquivalentKeyMap} Map instance.
*/
value: function set(key, value) {
// Shortcut non-object-like to set on internal Map.
if (key === null || _typeof(key) !== 'object') {
this._map.set(key, value);
return this;
} // Sort keys to ensure stable assignment into tree.
var properties = Object.keys(key).sort();
var valuePair = [key, value]; // Tree by type to avoid conflicts on numeric object keys, empty value.
var map = Array.isArray(key) ? this._arrayTreeMap : this._objectTreeMap;
for (var i = 0; i < properties.length; i++) {
var property = properties[i];
if (!map.has(property)) {
map.set(property, new EquivalentKeyMap());
}
map = map.get(property);
var propertyValue = key[property];
if (!map.has(propertyValue)) {
map.set(propertyValue, new EquivalentKeyMap());
}
map = map.get(propertyValue);
} // If an _ekm_value exists, there was already an equivalent key. Before
// overriding, ensure that the old key reference is removed from map to
// avoid memory leak of accumulating equivalent keys. This is, in a
// sense, a poor man's WeakMap, while still enabling iterability.
var previousValuePair = map.get('_ekm_value');
if (previousValuePair) {
this._map.delete(previousValuePair[0]);
}
map.set('_ekm_value', valuePair);
this._map.set(key, valuePair);
return this;
}
/**
* Returns a specified element.
*
* @param {*} key The key of the element to return.
*
* @return {?*} The element associated with the specified key or undefined
* if the key can't be found.
*/
}, {
key: "get",
value: function get(key) {
// Shortcut non-object-like to get from internal Map.
if (key === null || _typeof(key) !== 'object') {
return this._map.get(key);
}
var valuePair = getValuePair(this, key);
if (valuePair) {
return valuePair[1];
}
}
/**
* Returns a boolean indicating whether an element with the specified key
* exists or not.
*
* @param {*} key The key of the element to test for presence.
*
* @return {boolean} Whether an element with the specified key exists.
*/
}, {
key: "has",
value: function has(key) {
if (key === null || _typeof(key) !== 'object') {
return this._map.has(key);
} // Test on the _presence_ of the pair, not its value, as even undefined
// can be a valid member value for a key.
return getValuePair(this, key) !== undefined;
}
/**
* Removes the specified element.
*
* @param {*} key The key of the element to remove.
*
* @return {boolean} Returns true if an element existed and has been
* removed, or false if the element does not exist.
*/
}, {
key: "delete",
value: function _delete(key) {
if (!this.has(key)) {
return false;
} // This naive implementation will leave orphaned child trees. A better
// implementation should traverse and remove orphans.
this.set(key, undefined);
return true;
}
/**
* Executes a provided function once per each key/value pair, in insertion
* order.
*
* @param {Function} callback Function to execute for each element.
* @param {*} thisArg Value to use as `this` when executing
* `callback`.
*/
}, {
key: "forEach",
value: function forEach(callback) {
var _this = this;
var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this;
this._map.forEach(function (value, key) {
// Unwrap value from object-like value pair.
if (key !== null && _typeof(key) === 'object') {
value = value[1];
}
callback.call(thisArg, value, key, _this);
});
}
/**
* Removes all elements.
*/
}, {
key: "clear",
value: function clear() {
this._map = new Map();
this._arrayTreeMap = new Map();
this._objectTreeMap = new Map();
}
}, {
key: "size",
get: function get() {
return this._map.size;
}
}]);
return EquivalentKeyMap;
}();
module.exports = EquivalentKeyMap;
/***/ }),
/***/ 7734:
/***/ ((module) => {
// do not edit .js files directly - edit src/index.jst
var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';
module.exports = function equal(a, b) {
if (a === b) return true;
if (a && b && typeof a == 'object' && typeof b == 'object') {
if (a.constructor !== b.constructor) return false;
var length, i, keys;
if (Array.isArray(a)) {
length = a.length;
if (length != b.length) return false;
for (i = length; i-- !== 0;)
if (!equal(a[i], b[i])) return false;
return true;
}
if ((a instanceof Map) && (b instanceof Map)) {
if (a.size !== b.size) return false;
for (i of a.entries())
if (!b.has(i[0])) return false;
for (i of a.entries())
if (!equal(i[1], b.get(i[0]))) return false;
return true;
}
if ((a instanceof Set) && (b instanceof Set)) {
if (a.size !== b.size) return false;
for (i of a.entries())
if (!b.has(i[0])) return false;
return true;
}
if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
length = a.length;
if (length != b.length) return false;
for (i = length; i-- !== 0;)
if (a[i] !== b[i]) return false;
return true;
}
if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
keys = Object.keys(a);
length = keys.length;
if (length !== Object.keys(b).length) return false;
for (i = length; i-- !== 0;)
if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
for (i = length; i-- !== 0;) {
var key = keys[i];
if (!equal(a[key], b[key])) return false;
}
return true;
}
// true if both NaN, false otherwise
return a!==a && b!==b;
};
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* 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__, {
EntityProvider: () => (/* reexport */ EntityProvider),
__experimentalFetchLinkSuggestions: () => (/* reexport */ fetchLinkSuggestions),
__experimentalFetchUrlData: () => (/* reexport */ _experimental_fetch_url_data),
__experimentalUseEntityRecord: () => (/* reexport */ __experimentalUseEntityRecord),
__experimentalUseEntityRecords: () => (/* reexport */ __experimentalUseEntityRecords),
__experimentalUseResourcePermissions: () => (/* reexport */ __experimentalUseResourcePermissions),
fetchBlockPatterns: () => (/* reexport */ fetchBlockPatterns),
privateApis: () => (/* reexport */ privateApis),
store: () => (/* binding */ store),
useEntityBlockEditor: () => (/* reexport */ useEntityBlockEditor),
useEntityId: () => (/* reexport */ useEntityId),
useEntityProp: () => (/* reexport */ useEntityProp),
useEntityRecord: () => (/* reexport */ useEntityRecord),
useEntityRecords: () => (/* reexport */ useEntityRecords),
useResourcePermissions: () => (/* reexport */ use_resource_permissions)
});
// NAMESPACE OBJECT: ./node_modules/@wordpress/core-data/build-module/selectors.js
var build_module_selectors_namespaceObject = {};
__webpack_require__.r(build_module_selectors_namespaceObject);
__webpack_require__.d(build_module_selectors_namespaceObject, {
__experimentalGetCurrentGlobalStylesId: () => (__experimentalGetCurrentGlobalStylesId),
__experimentalGetCurrentThemeBaseGlobalStyles: () => (__experimentalGetCurrentThemeBaseGlobalStyles),
__experimentalGetCurrentThemeGlobalStylesVariations: () => (__experimentalGetCurrentThemeGlobalStylesVariations),
__experimentalGetDirtyEntityRecords: () => (__experimentalGetDirtyEntityRecords),
__experimentalGetEntitiesBeingSaved: () => (__experimentalGetEntitiesBeingSaved),
__experimentalGetEntityRecordNoResolver: () => (__experimentalGetEntityRecordNoResolver),
canUser: () => (canUser),
canUserEditEntityRecord: () => (canUserEditEntityRecord),
getAuthors: () => (getAuthors),
getAutosave: () => (getAutosave),
getAutosaves: () => (getAutosaves),
getBlockPatternCategories: () => (getBlockPatternCategories),
getBlockPatterns: () => (getBlockPatterns),
getCurrentTheme: () => (getCurrentTheme),
getCurrentThemeGlobalStylesRevisions: () => (getCurrentThemeGlobalStylesRevisions),
getCurrentUser: () => (getCurrentUser),
getDefaultTemplateId: () => (getDefaultTemplateId),
getEditedEntityRecord: () => (getEditedEntityRecord),
getEmbedPreview: () => (getEmbedPreview),
getEntitiesByKind: () => (getEntitiesByKind),
getEntitiesConfig: () => (getEntitiesConfig),
getEntity: () => (getEntity),
getEntityConfig: () => (getEntityConfig),
getEntityRecord: () => (getEntityRecord),
getEntityRecordEdits: () => (getEntityRecordEdits),
getEntityRecordNonTransientEdits: () => (getEntityRecordNonTransientEdits),
getEntityRecords: () => (getEntityRecords),
getEntityRecordsTotalItems: () => (getEntityRecordsTotalItems),
getEntityRecordsTotalPages: () => (getEntityRecordsTotalPages),
getLastEntityDeleteError: () => (getLastEntityDeleteError),
getLastEntitySaveError: () => (getLastEntitySaveError),
getRawEntityRecord: () => (getRawEntityRecord),
getRedoEdit: () => (getRedoEdit),
getReferenceByDistinctEdits: () => (getReferenceByDistinctEdits),
getRevision: () => (getRevision),
getRevisions: () => (getRevisions),
getThemeSupports: () => (getThemeSupports),
getUndoEdit: () => (getUndoEdit),
getUserPatternCategories: () => (getUserPatternCategories),
getUserQueryResults: () => (getUserQueryResults),
hasEditsForEntityRecord: () => (hasEditsForEntityRecord),
hasEntityRecords: () => (hasEntityRecords),
hasFetchedAutosaves: () => (hasFetchedAutosaves),
hasRedo: () => (hasRedo),
hasUndo: () => (hasUndo),
isAutosavingEntityRecord: () => (isAutosavingEntityRecord),
isDeletingEntityRecord: () => (isDeletingEntityRecord),
isPreviewEmbedFallback: () => (isPreviewEmbedFallback),
isRequestingEmbedPreview: () => (isRequestingEmbedPreview),
isSavingEntityRecord: () => (isSavingEntityRecord)
});
// NAMESPACE OBJECT: ./node_modules/@wordpress/core-data/build-module/private-selectors.js
var private_selectors_namespaceObject = {};
__webpack_require__.r(private_selectors_namespaceObject);
__webpack_require__.d(private_selectors_namespaceObject, {
getBlockPatternsForPostType: () => (getBlockPatternsForPostType),
getEntityRecordPermissions: () => (getEntityRecordPermissions),
getEntityRecordsPermissions: () => (getEntityRecordsPermissions),
getHomePage: () => (getHomePage),
getNavigationFallbackId: () => (getNavigationFallbackId),
getPostsPageId: () => (getPostsPageId),
getRegisteredPostMeta: () => (getRegisteredPostMeta),
getTemplateId: () => (getTemplateId),
getUndoManager: () => (getUndoManager)
});
// NAMESPACE OBJECT: ./node_modules/@wordpress/core-data/build-module/actions.js
var build_module_actions_namespaceObject = {};
__webpack_require__.r(build_module_actions_namespaceObject);
__webpack_require__.d(build_module_actions_namespaceObject, {
__experimentalBatch: () => (__experimentalBatch),
__experimentalReceiveCurrentGlobalStylesId: () => (__experimentalReceiveCurrentGlobalStylesId),
__experimentalReceiveThemeBaseGlobalStyles: () => (__experimentalReceiveThemeBaseGlobalStyles),
__experimentalReceiveThemeGlobalStyleVariations: () => (__experimentalReceiveThemeGlobalStyleVariations),
__experimentalSaveSpecifiedEntityEdits: () => (__experimentalSaveSpecifiedEntityEdits),
__unstableCreateUndoLevel: () => (__unstableCreateUndoLevel),
addEntities: () => (addEntities),
deleteEntityRecord: () => (deleteEntityRecord),
editEntityRecord: () => (editEntityRecord),
receiveAutosaves: () => (receiveAutosaves),
receiveCurrentTheme: () => (receiveCurrentTheme),
receiveCurrentUser: () => (receiveCurrentUser),
receiveDefaultTemplateId: () => (receiveDefaultTemplateId),
receiveEmbedPreview: () => (receiveEmbedPreview),
receiveEntityRecords: () => (receiveEntityRecords),
receiveNavigationFallbackId: () => (receiveNavigationFallbackId),
receiveRevisions: () => (receiveRevisions),
receiveThemeGlobalStyleRevisions: () => (receiveThemeGlobalStyleRevisions),
receiveThemeSupports: () => (receiveThemeSupports),
receiveUploadPermissions: () => (receiveUploadPermissions),
receiveUserPermission: () => (receiveUserPermission),
receiveUserPermissions: () => (receiveUserPermissions),
receiveUserQuery: () => (receiveUserQuery),
redo: () => (redo),
saveEditedEntityRecord: () => (saveEditedEntityRecord),
saveEntityRecord: () => (saveEntityRecord),
undo: () => (undo)
});
// NAMESPACE OBJECT: ./node_modules/@wordpress/core-data/build-module/private-actions.js
var private_actions_namespaceObject = {};
__webpack_require__.r(private_actions_namespaceObject);
__webpack_require__.d(private_actions_namespaceObject, {
receiveRegisteredPostMeta: () => (receiveRegisteredPostMeta)
});
// NAMESPACE OBJECT: ./node_modules/@wordpress/core-data/build-module/resolvers.js
var resolvers_namespaceObject = {};
__webpack_require__.r(resolvers_namespaceObject);
__webpack_require__.d(resolvers_namespaceObject, {
__experimentalGetCurrentGlobalStylesId: () => (resolvers_experimentalGetCurrentGlobalStylesId),
__experimentalGetCurrentThemeBaseGlobalStyles: () => (resolvers_experimentalGetCurrentThemeBaseGlobalStyles),
__experimentalGetCurrentThemeGlobalStylesVariations: () => (resolvers_experimentalGetCurrentThemeGlobalStylesVariations),
canUser: () => (resolvers_canUser),
canUserEditEntityRecord: () => (resolvers_canUserEditEntityRecord),
getAuthors: () => (resolvers_getAuthors),
getAutosave: () => (resolvers_getAutosave),
getAutosaves: () => (resolvers_getAutosaves),
getBlockPatternCategories: () => (resolvers_getBlockPatternCategories),
getBlockPatterns: () => (resolvers_getBlockPatterns),
getCurrentTheme: () => (resolvers_getCurrentTheme),
getCurrentThemeGlobalStylesRevisions: () => (resolvers_getCurrentThemeGlobalStylesRevisions),
getCurrentUser: () => (resolvers_getCurrentUser),
getDefaultTemplateId: () => (resolvers_getDefaultTemplateId),
getEditedEntityRecord: () => (resolvers_getEditedEntityRecord),
getEmbedPreview: () => (resolvers_getEmbedPreview),
getEntitiesConfig: () => (resolvers_getEntitiesConfig),
getEntityRecord: () => (resolvers_getEntityRecord),
getEntityRecords: () => (resolvers_getEntityRecords),
getNavigationFallbackId: () => (resolvers_getNavigationFallbackId),
getRawEntityRecord: () => (resolvers_getRawEntityRecord),
getRegisteredPostMeta: () => (resolvers_getRegisteredPostMeta),
getRevision: () => (resolvers_getRevision),
getRevisions: () => (resolvers_getRevisions),
getThemeSupports: () => (resolvers_getThemeSupports),
getUserPatternCategories: () => (resolvers_getUserPatternCategories)
});
;// external ["wp","data"]
const external_wp_data_namespaceObject = window["wp"]["data"];
// EXTERNAL MODULE: ./node_modules/fast-deep-equal/es6/index.js
var es6 = __webpack_require__(7734);
var es6_default = /*#__PURE__*/__webpack_require__.n(es6);
;// external ["wp","compose"]
const external_wp_compose_namespaceObject = window["wp"]["compose"];
;// external ["wp","isShallowEqual"]
const external_wp_isShallowEqual_namespaceObject = window["wp"]["isShallowEqual"];
var external_wp_isShallowEqual_default = /*#__PURE__*/__webpack_require__.n(external_wp_isShallowEqual_namespaceObject);
;// ./node_modules/@wordpress/undo-manager/build-module/index.js
/**
* WordPress dependencies
*/
/** @typedef {import('./types').HistoryRecord} HistoryRecord */
/** @typedef {import('./types').HistoryChange} HistoryChange */
/** @typedef {import('./types').HistoryChanges} HistoryChanges */
/** @typedef {import('./types').UndoManager} UndoManager */
/**
* Merge changes for a single item into a record of changes.
*
* @param {Record< string, HistoryChange >} changes1 Previous changes
* @param {Record< string, HistoryChange >} changes2 NextChanges
*
* @return {Record< string, HistoryChange >} Merged changes
*/
function mergeHistoryChanges(changes1, changes2) {
/**
* @type {Record< string, HistoryChange >}
*/
const newChanges = {
...changes1
};
Object.entries(changes2).forEach(([key, value]) => {
if (newChanges[key]) {
newChanges[key] = {
...newChanges[key],
to: value.to
};
} else {
newChanges[key] = value;
}
});
return newChanges;
}
/**
* Adds history changes for a single item into a record of changes.
*
* @param {HistoryRecord} record The record to merge into.
* @param {HistoryChanges} changes The changes to merge.
*/
const addHistoryChangesIntoRecord = (record, changes) => {
const existingChangesIndex = record?.findIndex(({
id: recordIdentifier
}) => {
return typeof recordIdentifier === 'string' ? recordIdentifier === changes.id : external_wp_isShallowEqual_default()(recordIdentifier, changes.id);
});
const nextRecord = [...record];
if (existingChangesIndex !== -1) {
// If the edit is already in the stack leave the initial "from" value.
nextRecord[existingChangesIndex] = {
id: changes.id,
changes: mergeHistoryChanges(nextRecord[existingChangesIndex].changes, changes.changes)
};
} else {
nextRecord.push(changes);
}
return nextRecord;
};
/**
* Creates an undo manager.
*
* @return {UndoManager} Undo manager.
*/
function createUndoManager() {
/**
* @type {HistoryRecord[]}
*/
let history = [];
/**
* @type {HistoryRecord}
*/
let stagedRecord = [];
/**
* @type {number}
*/
let offset = 0;
const dropPendingRedos = () => {
history = history.slice(0, offset || undefined);
offset = 0;
};
const appendStagedRecordToLatestHistoryRecord = () => {
var _history$index;
const index = history.length === 0 ? 0 : history.length - 1;
let latestRecord = (_history$index = history[index]) !== null && _history$index !== void 0 ? _history$index : [];
stagedRecord.forEach(changes => {
latestRecord = addHistoryChangesIntoRecord(latestRecord, changes);
});
stagedRecord = [];
history[index] = latestRecord;
};
/**
* Checks whether a record is empty.
* A record is considered empty if it the changes keep the same values.
* Also updates to function values are ignored.
*
* @param {HistoryRecord} record
* @return {boolean} Whether the record is empty.
*/
const isRecordEmpty = record => {
const filteredRecord = record.filter(({
changes
}) => {
return Object.values(changes).some(({
from,
to
}) => typeof from !== 'function' && typeof to !== 'function' && !external_wp_isShallowEqual_default()(from, to));
});
return !filteredRecord.length;
};
return {
/**
* Record changes into the history.
*
* @param {HistoryRecord=} record A record of changes to record.
* @param {boolean} isStaged Whether to immediately create an undo point or not.
*/
addRecord(record, isStaged = false) {
const isEmpty = !record || isRecordEmpty(record);
if (isStaged) {
if (isEmpty) {
return;
}
record.forEach(changes => {
stagedRecord = addHistoryChangesIntoRecord(stagedRecord, changes);
});
} else {
dropPendingRedos();
if (stagedRecord.length) {
appendStagedRecordToLatestHistoryRecord();
}
if (isEmpty) {
return;
}
history.push(record);
}
},
undo() {
if (stagedRecord.length) {
dropPendingRedos();
appendStagedRecordToLatestHistoryRecord();
}
const undoRecord = history[history.length - 1 + offset];
if (!undoRecord) {
return;
}
offset -= 1;
return undoRecord;
},
redo() {
const redoRecord = history[history.length + offset];
if (!redoRecord) {
return;
}
offset += 1;
return redoRecord;
},
hasUndo() {
return !!history[history.length - 1 + offset];
},
hasRedo() {
return !!history[history.length + offset];
}
};
}
;// ./node_modules/@wordpress/core-data/build-module/utils/if-matching-action.js
/** @typedef {import('../types').AnyFunction} AnyFunction */
/**
* A higher-order reducer creator which invokes the original reducer only if
* the dispatching action matches the given predicate, **OR** if state is
* initializing (undefined).
*
* @param {AnyFunction} isMatch Function predicate for allowing reducer call.
*
* @return {AnyFunction} Higher-order reducer.
*/
const ifMatchingAction = isMatch => reducer => (state, action) => {
if (state === undefined || isMatch(action)) {
return reducer(state, action);
}
return state;
};
/* harmony default export */ const if_matching_action = (ifMatchingAction);
;// ./node_modules/@wordpress/core-data/build-module/utils/replace-action.js
/** @typedef {import('../types').AnyFunction} AnyFunction */
/**
* Higher-order reducer creator which substitutes the action object before
* passing to the original reducer.
*
* @param {AnyFunction} replacer Function mapping original action to replacement.
*
* @return {AnyFunction} Higher-order reducer.
*/
const replaceAction = replacer => reducer => (state, action) => {
return reducer(state, replacer(action));
};
/* harmony default export */ const replace_action = (replaceAction);
;// ./node_modules/@wordpress/core-data/build-module/utils/conservative-map-item.js
/**
* External dependencies
*/
/**
* Given the current and next item entity record, returns the minimally "modified"
* result of the next item, preferring value references from the original item
* if equal. If all values match, the original item is returned.
*
* @param {Object} item Original item.
* @param {Object} nextItem Next item.
*
* @return {Object} Minimally modified merged item.
*/
function conservativeMapItem(item, nextItem) {
// Return next item in its entirety if there is no original item.
if (!item) {
return nextItem;
}
let hasChanges = false;
const result = {};
for (const key in nextItem) {
if (es6_default()(item[key], nextItem[key])) {
result[key] = item[key];
} else {
hasChanges = true;
result[key] = nextItem[key];
}
}
if (!hasChanges) {
return item;
}
// Only at this point, backfill properties from the original item which
// weren't explicitly set into the result above. This is an optimization
// to allow `hasChanges` to return early.
for (const key in item) {
if (!result.hasOwnProperty(key)) {
result[key] = item[key];
}
}
return result;
}
;// ./node_modules/@wordpress/core-data/build-module/utils/on-sub-key.js
/** @typedef {import('../types').AnyFunction} AnyFunction */
/**
* Higher-order reducer creator which creates a combined reducer object, keyed
* by a property on the action object.
*
* @param {string} actionProperty Action property by which to key object.
*
* @return {AnyFunction} Higher-order reducer.
*/
const onSubKey = actionProperty => reducer => (state = {}, action) => {
// Retrieve subkey from action. Do not track if undefined; useful for cases
// where reducer is scoped by action shape.
const key = action[actionProperty];
if (key === undefined) {
return state;
}
// Avoid updating state if unchanged. Note that this also accounts for a
// reducer which returns undefined on a key which is not yet tracked.
const nextKeyState = reducer(state[key], action);
if (nextKeyState === state[key]) {
return state;
}
return {
...state,
[key]: nextKeyState
};
};
/* harmony default export */ const on_sub_key = (onSubKey);
;// ./node_modules/tslib/tslib.es6.mjs
/******************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
}
return __assign.apply(this, arguments);
}
function __rest(s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
}
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __param(paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
}
function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
function __runInitializers(thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
function __propKey(x) {
return typeof x === "symbol" ? x : "".concat(x);
};
function __setFunctionName(f, name, prefix) {
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
};
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
}
var __createBinding = Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
function __exportStar(m, o) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
}
function __values(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
}
/** @deprecated */
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
/** @deprecated */
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
}
function __spreadArray(to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
}
function __await(v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
}
function __asyncGenerator(thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
}
function __asyncDelegator(o) {
var i, p;
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }
}
function __asyncValues(o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
}
function __makeTemplateObject(cooked, raw) {
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
return cooked;
};
var __setModuleDefault = Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
};
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
function __importStar(mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
}
function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { default: mod };
}
function __classPrivateFieldGet(receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
}
function __classPrivateFieldSet(receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
}
function __classPrivateFieldIn(state, receiver) {
if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object");
return typeof state === "function" ? receiver === state : state.has(receiver);
}
function __addDisposableResource(env, value, async) {
if (value !== null && value !== void 0) {
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
var dispose, inner;
if (async) {
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
dispose = value[Symbol.asyncDispose];
}
if (dispose === void 0) {
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
dispose = value[Symbol.dispose];
if (async) inner = dispose;
}
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
env.stack.push({ value: value, dispose: dispose, async: async });
}
else if (async) {
env.stack.push({ async: true });
}
return value;
}
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
var e = new Error(message);
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
};
function __disposeResources(env) {
function fail(e) {
env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
env.hasError = true;
}
var r, s = 0;
function next() {
while (r = env.stack.pop()) {
try {
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
if (r.dispose) {
var result = r.dispose.call(r.value);
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
}
else s |= 1;
}
catch (e) {
fail(e);
}
}
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
if (env.hasError) throw env.error;
}
return next();
}
function __rewriteRelativeImportExtension(path, preserveJsx) {
if (typeof path === "string" && /^\.\.?\//.test(path)) {
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
});
}
return path;
}
/* harmony default export */ const tslib_es6 = ({
__extends,
__assign,
__rest,
__decorate,
__param,
__esDecorate,
__runInitializers,
__propKey,
__setFunctionName,
__metadata,
__awaiter,
__generator,
__createBinding,
__exportStar,
__values,
__read,
__spread,
__spreadArrays,
__spreadArray,
__await,
__asyncGenerator,
__asyncDelegator,
__asyncValues,
__makeTemplateObject,
__importStar,
__importDefault,
__classPrivateFieldGet,
__classPrivateFieldSet,
__classPrivateFieldIn,
__addDisposableResource,
__disposeResources,
__rewriteRelativeImportExtension,
});
;// ./node_modules/lower-case/dist.es2015/index.js
/**
* Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt
*/
var SUPPORTED_LOCALE = {
tr: {
regexp: /\u0130|\u0049|\u0049\u0307/g,
map: {
İ: "\u0069",
I: "\u0131",
İ: "\u0069",
},
},
az: {
regexp: /\u0130/g,
map: {
İ: "\u0069",
I: "\u0131",
İ: "\u0069",
},
},
lt: {
regexp: /\u0049|\u004A|\u012E|\u00CC|\u00CD|\u0128/g,
map: {
I: "\u0069\u0307",
J: "\u006A\u0307",
Į: "\u012F\u0307",
Ì: "\u0069\u0307\u0300",
Í: "\u0069\u0307\u0301",
Ĩ: "\u0069\u0307\u0303",
},
},
};
/**
* Localized lower case.
*/
function localeLowerCase(str, locale) {
var lang = SUPPORTED_LOCALE[locale.toLowerCase()];
if (lang)
return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; }));
return lowerCase(str);
}
/**
* Lower case as a function.
*/
function lowerCase(str) {
return str.toLowerCase();
}
;// ./node_modules/no-case/dist.es2015/index.js
// Support camel case ("camelCase" -> "camel Case" and "CAMELCase" -> "CAMEL Case").
var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
// Remove all non-word characters.
var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
/**
* Normalize the string into something other libraries can manipulate easier.
*/
function noCase(input, options) {
if (options === void 0) { options = {}; }
var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d;
var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
var start = 0;
var end = result.length;
// Trim the delimiter from around the output string.
while (result.charAt(start) === "\0")
start++;
while (result.charAt(end - 1) === "\0")
end--;
// Transform each token independently.
return result.slice(start, end).split("\0").map(transform).join(delimiter);
}
/**
* Replace `re` in the input string with the replacement value.
*/
function replace(input, re, value) {
if (re instanceof RegExp)
return input.replace(re, value);
return re.reduce(function (input, re) { return input.replace(re, value); }, input);
}
;// ./node_modules/upper-case-first/dist.es2015/index.js
/**
* Upper case the first character of an input string.
*/
function upperCaseFirst(input) {
return input.charAt(0).toUpperCase() + input.substr(1);
}
;// ./node_modules/capital-case/dist.es2015/index.js
function capitalCaseTransform(input) {
return upperCaseFirst(input.toLowerCase());
}
function capitalCase(input, options) {
if (options === void 0) { options = {}; }
return noCase(input, __assign({ delimiter: " ", transform: capitalCaseTransform }, options));
}
;// ./node_modules/pascal-case/dist.es2015/index.js
function pascalCaseTransform(input, index) {
var firstChar = input.charAt(0);
var lowerChars = input.substr(1).toLowerCase();
if (index > 0 && firstChar >= "0" && firstChar <= "9") {
return "_" + firstChar + lowerChars;
}
return "" + firstChar.toUpperCase() + lowerChars;
}
function dist_es2015_pascalCaseTransformMerge(input) {
return input.charAt(0).toUpperCase() + input.slice(1).toLowerCase();
}
function pascalCase(input, options) {
if (options === void 0) { options = {}; }
return noCase(input, __assign({ delimiter: "", transform: pascalCaseTransform }, options));
}
;// external ["wp","apiFetch"]
const external_wp_apiFetch_namespaceObject = window["wp"]["apiFetch"];
var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_namespaceObject);
;// external ["wp","i18n"]
const external_wp_i18n_namespaceObject = window["wp"]["i18n"];
;// external ["wp","richText"]
const external_wp_richText_namespaceObject = window["wp"]["richText"];
;// ./node_modules/@wordpress/core-data/build-module/entities.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
const DEFAULT_ENTITY_KEY = 'id';
const POST_RAW_ATTRIBUTES = ['title', 'excerpt', 'content'];
const rootEntitiesConfig = [{
label: (0,external_wp_i18n_namespaceObject.__)('Base'),
kind: 'root',
name: '__unstableBase',
baseURL: '/',
baseURLParams: {
// Please also change the preload path when changing this.
// @see lib/compat/wordpress-6.8/preload.php
_fields: ['description', 'gmt_offset', 'home', 'name', 'site_icon', 'site_icon_url', 'site_logo', 'timezone_string', 'url', 'page_for_posts', 'page_on_front', 'show_on_front'].join(',')
},
// The entity doesn't support selecting multiple records.
// The property is maintained for backward compatibility.
plural: '__unstableBases',
syncConfig: {
fetch: async () => {
return external_wp_apiFetch_default()({
path: '/'
});
},
applyChangesToDoc: (doc, changes) => {
const document = doc.getMap('document');
Object.entries(changes).forEach(([key, value]) => {
if (document.get(key) !== value) {
document.set(key, value);
}
});
},
fromCRDTDoc: doc => {
return doc.getMap('document').toJSON();
}
},
syncObjectType: 'root/base',
getSyncObjectId: () => 'index'
}, {
label: (0,external_wp_i18n_namespaceObject.__)('Post Type'),
name: 'postType',
kind: 'root',
key: 'slug',
baseURL: '/wp/v2/types',
baseURLParams: {
context: 'edit'
},
plural: 'postTypes',
syncConfig: {
fetch: async id => {
return external_wp_apiFetch_default()({
path: `/wp/v2/types/${id}?context=edit`
});
},
applyChangesToDoc: (doc, changes) => {
const document = doc.getMap('document');
Object.entries(changes).forEach(([key, value]) => {
if (document.get(key) !== value) {
document.set(key, value);
}
});
},
fromCRDTDoc: doc => {
return doc.getMap('document').toJSON();
}
},
syncObjectType: 'root/postType',
getSyncObjectId: id => id
}, {
name: 'media',
kind: 'root',
baseURL: '/wp/v2/media',
baseURLParams: {
context: 'edit'
},
plural: 'mediaItems',
label: (0,external_wp_i18n_namespaceObject.__)('Media'),
rawAttributes: ['caption', 'title', 'description'],
supportsPagination: true
}, {
name: 'taxonomy',
kind: 'root',
key: 'slug',
baseURL: '/wp/v2/taxonomies',
baseURLParams: {
context: 'edit'
},
plural: 'taxonomies',
label: (0,external_wp_i18n_namespaceObject.__)('Taxonomy')
}, {
name: 'sidebar',
kind: 'root',
baseURL: '/wp/v2/sidebars',
baseURLParams: {
context: 'edit'
},
plural: 'sidebars',
transientEdits: {
blocks: true
},
label: (0,external_wp_i18n_namespaceObject.__)('Widget areas')
}, {
name: 'widget',
kind: 'root',
baseURL: '/wp/v2/widgets',
baseURLParams: {
context: 'edit'
},
plural: 'widgets',
transientEdits: {
blocks: true
},
label: (0,external_wp_i18n_namespaceObject.__)('Widgets')
}, {
name: 'widgetType',
kind: 'root',
baseURL: '/wp/v2/widget-types',
baseURLParams: {
context: 'edit'
},
plural: 'widgetTypes',
label: (0,external_wp_i18n_namespaceObject.__)('Widget types')
}, {
label: (0,external_wp_i18n_namespaceObject.__)('User'),
name: 'user',
kind: 'root',
baseURL: '/wp/v2/users',
baseURLParams: {
context: 'edit'
},
plural: 'users'
}, {
name: 'comment',
kind: 'root',
baseURL: '/wp/v2/comments',
baseURLParams: {
context: 'edit'
},
plural: 'comments',
label: (0,external_wp_i18n_namespaceObject.__)('Comment')
}, {
name: 'menu',
kind: 'root',
baseURL: '/wp/v2/menus',
baseURLParams: {
context: 'edit'
},
plural: 'menus',
label: (0,external_wp_i18n_namespaceObject.__)('Menu')
}, {
name: 'menuItem',
kind: 'root',
baseURL: '/wp/v2/menu-items',
baseURLParams: {
context: 'edit'
},
plural: 'menuItems',
label: (0,external_wp_i18n_namespaceObject.__)('Menu Item'),
rawAttributes: ['title']
}, {
name: 'menuLocation',
kind: 'root',
baseURL: '/wp/v2/menu-locations',
baseURLParams: {
context: 'edit'
},
plural: 'menuLocations',
label: (0,external_wp_i18n_namespaceObject.__)('Menu Location'),
key: 'name'
}, {
label: (0,external_wp_i18n_namespaceObject.__)('Global Styles'),
name: 'globalStyles',
kind: 'root',
baseURL: '/wp/v2/global-styles',
baseURLParams: {
context: 'edit'
},
plural: 'globalStylesVariations',
// Should be different from name.
getTitle: record => record?.title?.rendered || record?.title,
getRevisionsUrl: (parentId, revisionId) => `/wp/v2/global-styles/${parentId}/revisions${revisionId ? '/' + revisionId : ''}`,
supportsPagination: true
}, {
label: (0,external_wp_i18n_namespaceObject.__)('Themes'),
name: 'theme',
kind: 'root',
baseURL: '/wp/v2/themes',
baseURLParams: {
context: 'edit'
},
plural: 'themes',
key: 'stylesheet'
}, {
label: (0,external_wp_i18n_namespaceObject.__)('Plugins'),
name: 'plugin',
kind: 'root',
baseURL: '/wp/v2/plugins',
baseURLParams: {
context: 'edit'
},
plural: 'plugins',
key: 'plugin'
}, {
label: (0,external_wp_i18n_namespaceObject.__)('Status'),
name: 'status',
kind: 'root',
baseURL: '/wp/v2/statuses',
baseURLParams: {
context: 'edit'
},
plural: 'statuses',
key: 'slug'
}];
const additionalEntityConfigLoaders = [{
kind: 'postType',
loadEntities: loadPostTypeEntities
}, {
kind: 'taxonomy',
loadEntities: loadTaxonomyEntities
}, {
kind: 'root',
name: 'site',
plural: 'sites',
loadEntities: loadSiteEntity
}];
/**
* Returns a function to be used to retrieve extra edits to apply before persisting a post type.
*
* @param {Object} persistedRecord Already persisted Post
* @param {Object} edits Edits.
* @return {Object} Updated edits.
*/
const prePersistPostType = (persistedRecord, edits) => {
const newEdits = {};
if (persistedRecord?.status === 'auto-draft') {
// Saving an auto-draft should create a draft by default.
if (!edits.status && !newEdits.status) {
newEdits.status = 'draft';
}
// Fix the auto-draft default title.
if ((!edits.title || edits.title === 'Auto Draft') && !newEdits.title && (!persistedRecord?.title || persistedRecord?.title === 'Auto Draft')) {
newEdits.title = '';
}
}
return newEdits;
};
const serialisableBlocksCache = new WeakMap();
function makeBlockAttributesSerializable(attributes) {
const newAttributes = {
...attributes
};
for (const [key, value] of Object.entries(attributes)) {
if (value instanceof external_wp_richText_namespaceObject.RichTextData) {
newAttributes[key] = value.valueOf();
}
}
return newAttributes;
}
function makeBlocksSerializable(blocks) {
return blocks.map(block => {
const {
innerBlocks,
attributes,
...rest
} = block;
return {
...rest,
attributes: makeBlockAttributesSerializable(attributes),
innerBlocks: makeBlocksSerializable(innerBlocks)
};
});
}
/**
* Returns the list of post type entities.
*
* @return {Promise} Entities promise
*/
async function loadPostTypeEntities() {
const postTypes = await external_wp_apiFetch_default()({
path: '/wp/v2/types?context=view'
});
return Object.entries(postTypes !== null && postTypes !== void 0 ? postTypes : {}).map(([name, postType]) => {
var _postType$rest_namesp;
const isTemplate = ['wp_template', 'wp_template_part'].includes(name);
const namespace = (_postType$rest_namesp = postType?.rest_namespace) !== null && _postType$rest_namesp !== void 0 ? _postType$rest_namesp : 'wp/v2';
return {
kind: 'postType',
baseURL: `/${namespace}/${postType.rest_base}`,
baseURLParams: {
context: 'edit'
},
name,
label: postType.name,
transientEdits: {
blocks: true,
selection: true
},
mergedEdits: {
meta: true
},
rawAttributes: POST_RAW_ATTRIBUTES,
getTitle: record => {
var _record$slug;
return record?.title?.rendered || record?.title || (isTemplate ? capitalCase((_record$slug = record.slug) !== null && _record$slug !== void 0 ? _record$slug : '') : String(record.id));
},
__unstablePrePersist: isTemplate ? undefined : prePersistPostType,
__unstable_rest_base: postType.rest_base,
syncConfig: {
fetch: async id => {
return external_wp_apiFetch_default()({
path: `/${namespace}/${postType.rest_base}/${id}?context=edit`
});
},
applyChangesToDoc: (doc, changes) => {
const document = doc.getMap('document');
Object.entries(changes).forEach(([key, value]) => {
if (typeof value !== 'function') {
if (key === 'blocks') {
if (!serialisableBlocksCache.has(value)) {
serialisableBlocksCache.set(value, makeBlocksSerializable(value));
}
value = serialisableBlocksCache.get(value);
}
if (document.get(key) !== value) {
document.set(key, value);
}
}
});
},
fromCRDTDoc: doc => {
return doc.getMap('document').toJSON();
}
},
syncObjectType: 'postType/' + postType.name,
getSyncObjectId: id => id,
supportsPagination: true,
getRevisionsUrl: (parentId, revisionId) => `/${namespace}/${postType.rest_base}/${parentId}/revisions${revisionId ? '/' + revisionId : ''}`,
revisionKey: isTemplate ? 'wp_id' : DEFAULT_ENTITY_KEY
};
});
}
/**
* Returns the list of the taxonomies entities.
*
* @return {Promise} Entities promise
*/
async function loadTaxonomyEntities() {
const taxonomies = await external_wp_apiFetch_default()({
path: '/wp/v2/taxonomies?context=view'
});
return Object.entries(taxonomies !== null && taxonomies !== void 0 ? taxonomies : {}).map(([name, taxonomy]) => {
var _taxonomy$rest_namesp;
const namespace = (_taxonomy$rest_namesp = taxonomy?.rest_namespace) !== null && _taxonomy$rest_namesp !== void 0 ? _taxonomy$rest_namesp : 'wp/v2';
return {
kind: 'taxonomy',
baseURL: `/${namespace}/${taxonomy.rest_base}`,
baseURLParams: {
context: 'edit'
},
name,
label: taxonomy.name
};
});
}
/**
* Returns the Site entity.
*
* @return {Promise} Entity promise
*/
async function loadSiteEntity() {
var _site$schema$properti;
const entity = {
label: (0,external_wp_i18n_namespaceObject.__)('Site'),
name: 'site',
kind: 'root',
baseURL: '/wp/v2/settings',
syncConfig: {
fetch: async () => {
return external_wp_apiFetch_default()({
path: '/wp/v2/settings'
});
},
applyChangesToDoc: (doc, changes) => {
const document = doc.getMap('document');
Object.entries(changes).forEach(([key, value]) => {
if (document.get(key) !== value) {
document.set(key, value);
}
});
},
fromCRDTDoc: doc => {
return doc.getMap('document').toJSON();
}
},
syncObjectType: 'root/site',
getSyncObjectId: () => 'index',
meta: {}
};
const site = await external_wp_apiFetch_default()({
path: entity.baseURL,
method: 'OPTIONS'
});
const labels = {};
Object.entries((_site$schema$properti = site?.schema?.properties) !== null && _site$schema$properti !== void 0 ? _site$schema$properti : {}).forEach(([key, value]) => {
// Ignore properties `title` and `type` keys.
if (typeof value === 'object' && value.title) {
labels[key] = value.title;
}
});
return [{
...entity,
meta: {
labels
}
}];
}
/**
* Returns the entity's getter method name given its kind and name or plural name.
*
* @example
* ```js
* const nameSingular = getMethodName( 'root', 'theme', 'get' );
* // nameSingular is getRootTheme
*
* const namePlural = getMethodName( 'root', 'themes', 'set' );
* // namePlural is setRootThemes
* ```
*
* @param {string} kind Entity kind.
* @param {string} name Entity name or plural name.
* @param {string} prefix Function prefix.
*
* @return {string} Method name
*/
const getMethodName = (kind, name, prefix = 'get') => {
const kindPrefix = kind === 'root' ? '' : pascalCase(kind);
const suffix = pascalCase(name);
return `${prefix}${kindPrefix}${suffix}`;
};
;// external ["wp","url"]
const external_wp_url_namespaceObject = window["wp"]["url"];
;// ./node_modules/@wordpress/core-data/build-module/utils/get-normalized-comma-separable.js
/**
* Given a value which can be specified as one or the other of a comma-separated
* string or an array, returns a value normalized to an array of strings, or
* null if the value cannot be interpreted as either.
*
* @param {string|string[]|*} value
*
* @return {?(string[])} Normalized field value.
*/
function getNormalizedCommaSeparable(value) {
if (typeof value === 'string') {
return value.split(',');
} else if (Array.isArray(value)) {
return value;
}
return null;
}
/* harmony default export */ const get_normalized_comma_separable = (getNormalizedCommaSeparable);
;// ./node_modules/@wordpress/core-data/build-module/utils/with-weak-map-cache.js
/**
* Given a function, returns an enhanced function which caches the result and
* tracks in WeakMap. The result is only cached if the original function is
* passed a valid object-like argument (requirement for WeakMap key).
*
* @param {Function} fn Original function.
*
* @return {Function} Enhanced caching function.
*/
function withWeakMapCache(fn) {
const cache = new WeakMap();
return key => {
let value;
if (cache.has(key)) {
value = cache.get(key);
} else {
value = fn(key);
// Can reach here if key is not valid for WeakMap, since `has`
// will return false for invalid key. Since `set` will throw,
// ensure that key is valid before setting into cache.
if (key !== null && typeof key === 'object') {
cache.set(key, value);
}
}
return value;
};
}
/* harmony default export */ const with_weak_map_cache = (withWeakMapCache);
;// ./node_modules/@wordpress/core-data/build-module/queried-data/get-query-parts.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* An object of properties describing a specific query.
*
* @typedef {Object} WPQueriedDataQueryParts
*
* @property {number} page The query page (1-based index, default 1).
* @property {number} perPage Items per page for query (default 10).
* @property {string} stableKey An encoded stable string of all non-
* pagination, non-fields query parameters.
* @property {?(string[])} fields Target subset of fields to derive from
* item objects.
* @property {?(number[])} include Specific item IDs to include.
* @property {string} context Scope under which the request is made;
* determines returned fields in response.
*/
/**
* Given a query object, returns an object of parts, including pagination
* details (`page` and `perPage`, or default values). All other properties are
* encoded into a stable (idempotent) `stableKey` value.
*
* @param {Object} query Optional query object.
*
* @return {WPQueriedDataQueryParts} Query parts.
*/
function getQueryParts(query) {
/**
* @type {WPQueriedDataQueryParts}
*/
const parts = {
stableKey: '',
page: 1,
perPage: 10,
fields: null,
include: null,
context: 'default'
};
// Ensure stable key by sorting keys. Also more efficient for iterating.
const keys = Object.keys(query).sort();
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
let value = query[key];
switch (key) {
case 'page':
parts[key] = Number(value);
break;
case 'per_page':
parts.perPage = Number(value);
break;
case 'context':
parts.context = value;
break;
default:
// While in theory, we could exclude "_fields" from the stableKey
// because two request with different fields have the same results
// We're not able to ensure that because the server can decide to omit
// fields from the response even if we explicitly asked for it.
// Example: Asking for titles in posts without title support.
if (key === '_fields') {
var _getNormalizedCommaSe;
parts.fields = (_getNormalizedCommaSe = get_normalized_comma_separable(value)) !== null && _getNormalizedCommaSe !== void 0 ? _getNormalizedCommaSe : [];
// Make sure to normalize value for `stableKey`
value = parts.fields.join();
}
// Two requests with different include values cannot have same results.
if (key === 'include') {
var _getNormalizedCommaSe2;
if (typeof value === 'number') {
value = value.toString();
}
parts.include = ((_getNormalizedCommaSe2 = get_normalized_comma_separable(value)) !== null && _getNormalizedCommaSe2 !== void 0 ? _getNormalizedCommaSe2 : []).map(Number);
// Normalize value for `stableKey`.
value = parts.include.join();
}
// While it could be any deterministic string, for simplicity's
// sake mimic querystring encoding for stable key.
//
// TODO: For consistency with PHP implementation, addQueryArgs
// should accept a key value pair, which may optimize its
// implementation for our use here, vs. iterating an object
// with only a single key.
parts.stableKey += (parts.stableKey ? '&' : '') + (0,external_wp_url_namespaceObject.addQueryArgs)('', {
[key]: value
}).slice(1);
}
}
return parts;
}
/* harmony default export */ const get_query_parts = (with_weak_map_cache(getQueryParts));
;// ./node_modules/@wordpress/core-data/build-module/queried-data/reducer.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function getContextFromAction(action) {
const {
query
} = action;
if (!query) {
return 'default';
}
const queryParts = get_query_parts(query);
return queryParts.context;
}
/**
* Returns a merged array of item IDs, given details of the received paginated
* items. The array is sparse-like with `undefined` entries where holes exist.
*
* @param {?Array
} itemIds Original item IDs (default empty array).
* @param {number[]} nextItemIds Item IDs to merge.
* @param {number} page Page of items merged.
* @param {number} perPage Number of items per page.
*
* @return {number[]} Merged array of item IDs.
*/
function getMergedItemIds(itemIds, nextItemIds, page, perPage) {
var _itemIds$length;
const receivedAllIds = page === 1 && perPage === -1;
if (receivedAllIds) {
return nextItemIds;
}
const nextItemIdsStartIndex = (page - 1) * perPage;
// If later page has already been received, default to the larger known
// size of the existing array, else calculate as extending the existing.
const size = Math.max((_itemIds$length = itemIds?.length) !== null && _itemIds$length !== void 0 ? _itemIds$length : 0, nextItemIdsStartIndex + nextItemIds.length);
// Preallocate array since size is known.
const mergedItemIds = new Array(size);
for (let i = 0; i < size; i++) {
// Preserve existing item ID except for subset of range of next items.
// We need to check against the possible maximum upper boundary because
// a page could receive fewer than what was previously stored.
const isInNextItemsRange = i >= nextItemIdsStartIndex && i < nextItemIdsStartIndex + perPage;
mergedItemIds[i] = isInNextItemsRange ? nextItemIds[i - nextItemIdsStartIndex] : itemIds?.[i];
}
return mergedItemIds;
}
/**
* Helper function to filter out entities with certain IDs.
* Entities are keyed by their ID.
*
* @param {Object} entities Entity objects, keyed by entity ID.
* @param {Array} ids Entity IDs to filter out.
*
* @return {Object} Filtered entities.
*/
function removeEntitiesById(entities, ids) {
return Object.fromEntries(Object.entries(entities).filter(([id]) => !ids.some(itemId => {
if (Number.isInteger(itemId)) {
return itemId === +id;
}
return itemId === id;
})));
}
/**
* Reducer tracking items state, keyed by ID. Items are assumed to be normal,
* where identifiers are common across all queries.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Next state.
*/
function items(state = {}, action) {
switch (action.type) {
case 'RECEIVE_ITEMS':
{
const context = getContextFromAction(action);
const key = action.key || DEFAULT_ENTITY_KEY;
return {
...state,
[context]: {
...state[context],
...action.items.reduce((accumulator, value) => {
const itemId = value?.[key];
accumulator[itemId] = conservativeMapItem(state?.[context]?.[itemId], value);
return accumulator;
}, {})
}
};
}
case 'REMOVE_ITEMS':
return Object.fromEntries(Object.entries(state).map(([itemId, contextState]) => [itemId, removeEntitiesById(contextState, action.itemIds)]));
}
return state;
}
/**
* Reducer tracking item completeness, keyed by ID. A complete item is one for
* which all fields are known. This is used in supporting `_fields` queries,
* where not all properties associated with an entity are necessarily returned.
* In such cases, completeness is used as an indication of whether it would be
* safe to use queried data for a non-`_fields`-limited request.
*
* @param {Object>} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object>} Next state.
*/
function itemIsComplete(state = {}, action) {
switch (action.type) {
case 'RECEIVE_ITEMS':
{
const context = getContextFromAction(action);
const {
query,
key = DEFAULT_ENTITY_KEY
} = action;
// An item is considered complete if it is received without an associated
// fields query. Ideally, this would be implemented in such a way where the
// complete aggregate of all fields would satisfy completeness. Since the
// fields are not consistent across all entities, this would require
// introspection on the REST schema for each entity to know which fields
// compose a complete item for that entity.
const queryParts = query ? get_query_parts(query) : {};
const isCompleteQuery = !query || !Array.isArray(queryParts.fields);
return {
...state,
[context]: {
...state[context],
...action.items.reduce((result, item) => {
const itemId = item?.[key];
// Defer to completeness if already assigned. Technically the
// data may be outdated if receiving items for a field subset.
result[itemId] = state?.[context]?.[itemId] || isCompleteQuery;
return result;
}, {})
}
};
}
case 'REMOVE_ITEMS':
return Object.fromEntries(Object.entries(state).map(([itemId, contextState]) => [itemId, removeEntitiesById(contextState, action.itemIds)]));
}
return state;
}
/**
* Reducer tracking queries state, keyed by stable query key. Each reducer
* query object includes `itemIds` and `requestingPageByPerPage`.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Next state.
*/
const receiveQueries = (0,external_wp_compose_namespaceObject.compose)([
// Limit to matching action type so we don't attempt to replace action on
// an unhandled action.
if_matching_action(action => 'query' in action),
// Inject query parts into action for use both in `onSubKey` and reducer.
replace_action(action => {
// `ifMatchingAction` still passes on initialization, where state is
// undefined and a query is not assigned. Avoid attempting to parse
// parts. `onSubKey` will omit by lack of `stableKey`.
if (action.query) {
return {
...action,
...get_query_parts(action.query)
};
}
return action;
}), on_sub_key('context'),
// Queries shape is shared, but keyed by query `stableKey` part. Original
// reducer tracks only a single query object.
on_sub_key('stableKey')])((state = {}, action) => {
const {
type,
page,
perPage,
key = DEFAULT_ENTITY_KEY
} = action;
if (type !== 'RECEIVE_ITEMS') {
return state;
}
return {
itemIds: getMergedItemIds(state?.itemIds || [], action.items.map(item => item?.[key]).filter(Boolean), page, perPage),
meta: action.meta
};
});
/**
* Reducer tracking queries state.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Next state.
*/
const queries = (state = {}, action) => {
switch (action.type) {
case 'RECEIVE_ITEMS':
return receiveQueries(state, action);
case 'REMOVE_ITEMS':
const removedItems = action.itemIds.reduce((result, itemId) => {
result[itemId] = true;
return result;
}, {});
return Object.fromEntries(Object.entries(state).map(([queryGroup, contextQueries]) => [queryGroup, Object.fromEntries(Object.entries(contextQueries).map(([query, queryItems]) => [query, {
...queryItems,
itemIds: queryItems.itemIds.filter(queryId => !removedItems[queryId])
}]))]));
default:
return state;
}
};
/* harmony default export */ const reducer = ((0,external_wp_data_namespaceObject.combineReducers)({
items,
itemIsComplete,
queries
}));
;// ./node_modules/@wordpress/core-data/build-module/reducer.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/** @typedef {import('./types').AnyFunction} AnyFunction */
/**
* Reducer managing terms state. Keyed by taxonomy slug, the value is either
* undefined (if no request has been made for given taxonomy), null (if a
* request is in-flight for given taxonomy), or the array of terms for the
* taxonomy.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function terms(state = {}, action) {
switch (action.type) {
case 'RECEIVE_TERMS':
return {
...state,
[action.taxonomy]: action.terms
};
}
return state;
}
/**
* Reducer managing authors state. Keyed by id.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function users(state = {
byId: {},
queries: {}
}, action) {
switch (action.type) {
case 'RECEIVE_USER_QUERY':
return {
byId: {
...state.byId,
// Key users by their ID.
...action.users.reduce((newUsers, user) => ({
...newUsers,
[user.id]: user
}), {})
},
queries: {
...state.queries,
[action.queryID]: action.users.map(user => user.id)
}
};
}
return state;
}
/**
* Reducer managing current user state.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function currentUser(state = {}, action) {
switch (action.type) {
case 'RECEIVE_CURRENT_USER':
return action.currentUser;
}
return state;
}
/**
* Reducer managing taxonomies.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function taxonomies(state = [], action) {
switch (action.type) {
case 'RECEIVE_TAXONOMIES':
return action.taxonomies;
}
return state;
}
/**
* Reducer managing the current theme.
*
* @param {string|undefined} state Current state.
* @param {Object} action Dispatched action.
*
* @return {string|undefined} Updated state.
*/
function currentTheme(state = undefined, action) {
switch (action.type) {
case 'RECEIVE_CURRENT_THEME':
return action.currentTheme.stylesheet;
}
return state;
}
/**
* Reducer managing the current global styles id.
*
* @param {string|undefined} state Current state.
* @param {Object} action Dispatched action.
*
* @return {string|undefined} Updated state.
*/
function currentGlobalStylesId(state = undefined, action) {
switch (action.type) {
case 'RECEIVE_CURRENT_GLOBAL_STYLES_ID':
return action.id;
}
return state;
}
/**
* Reducer managing the theme base global styles.
*
* @param {Record} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Record} Updated state.
*/
function themeBaseGlobalStyles(state = {}, action) {
switch (action.type) {
case 'RECEIVE_THEME_GLOBAL_STYLES':
return {
...state,
[action.stylesheet]: action.globalStyles
};
}
return state;
}
/**
* Reducer managing the theme global styles variations.
*
* @param {Record} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Record} Updated state.
*/
function themeGlobalStyleVariations(state = {}, action) {
switch (action.type) {
case 'RECEIVE_THEME_GLOBAL_STYLE_VARIATIONS':
return {
...state,
[action.stylesheet]: action.variations
};
}
return state;
}
const withMultiEntityRecordEdits = reducer => (state, action) => {
if (action.type === 'UNDO' || action.type === 'REDO') {
const {
record
} = action;
let newState = state;
record.forEach(({
id: {
kind,
name,
recordId
},
changes
}) => {
newState = reducer(newState, {
type: 'EDIT_ENTITY_RECORD',
kind,
name,
recordId,
edits: Object.entries(changes).reduce((acc, [key, value]) => {
acc[key] = action.type === 'UNDO' ? value.from : value.to;
return acc;
}, {})
});
});
return newState;
}
return reducer(state, action);
};
/**
* Higher Order Reducer for a given entity config. It supports:
*
* - Fetching
* - Editing
* - Saving
*
* @param {Object} entityConfig Entity config.
*
* @return {AnyFunction} Reducer.
*/
function entity(entityConfig) {
return (0,external_wp_compose_namespaceObject.compose)([withMultiEntityRecordEdits,
// Limit to matching action type so we don't attempt to replace action on
// an unhandled action.
if_matching_action(action => action.name && action.kind && action.name === entityConfig.name && action.kind === entityConfig.kind),
// Inject the entity config into the action.
replace_action(action => {
return {
key: entityConfig.key || DEFAULT_ENTITY_KEY,
...action
};
})])((0,external_wp_data_namespaceObject.combineReducers)({
queriedData: reducer,
edits: (state = {}, action) => {
var _action$query$context;
switch (action.type) {
case 'RECEIVE_ITEMS':
const context = (_action$query$context = action?.query?.context) !== null && _action$query$context !== void 0 ? _action$query$context : 'default';
if (context !== 'default') {
return state;
}
const nextState = {
...state
};
for (const record of action.items) {
const recordId = record?.[action.key];
const edits = nextState[recordId];
if (!edits) {
continue;
}
const nextEdits = Object.keys(edits).reduce((acc, key) => {
var _record$key$raw;
// If the edited value is still different to the persisted value,
// keep the edited value in edits.
if (
// Edits are the "raw" attribute values, but records may have
// objects with more properties, so we use `get` here for the
// comparison.
!es6_default()(edits[key], (_record$key$raw = record[key]?.raw) !== null && _record$key$raw !== void 0 ? _record$key$raw : record[key]) && (
// Sometimes the server alters the sent value which means
// we need to also remove the edits before the api request.
!action.persistedEdits || !es6_default()(edits[key], action.persistedEdits[key]))) {
acc[key] = edits[key];
}
return acc;
}, {});
if (Object.keys(nextEdits).length) {
nextState[recordId] = nextEdits;
} else {
delete nextState[recordId];
}
}
return nextState;
case 'EDIT_ENTITY_RECORD':
const nextEdits = {
...state[action.recordId],
...action.edits
};
Object.keys(nextEdits).forEach(key => {
// Delete cleared edits so that the properties
// are not considered dirty.
if (nextEdits[key] === undefined) {
delete nextEdits[key];
}
});
return {
...state,
[action.recordId]: nextEdits
};
}
return state;
},
saving: (state = {}, action) => {
switch (action.type) {
case 'SAVE_ENTITY_RECORD_START':
case 'SAVE_ENTITY_RECORD_FINISH':
return {
...state,
[action.recordId]: {
pending: action.type === 'SAVE_ENTITY_RECORD_START',
error: action.error,
isAutosave: action.isAutosave
}
};
}
return state;
},
deleting: (state = {}, action) => {
switch (action.type) {
case 'DELETE_ENTITY_RECORD_START':
case 'DELETE_ENTITY_RECORD_FINISH':
return {
...state,
[action.recordId]: {
pending: action.type === 'DELETE_ENTITY_RECORD_START',
error: action.error
}
};
}
return state;
},
revisions: (state = {}, action) => {
// Use the same queriedDataReducer shape for revisions.
if (action.type === 'RECEIVE_ITEM_REVISIONS') {
const recordKey = action.recordKey;
delete action.recordKey;
const newState = reducer(state[recordKey], {
...action,
type: 'RECEIVE_ITEMS'
});
return {
...state,
[recordKey]: newState
};
}
if (action.type === 'REMOVE_ITEMS') {
return Object.fromEntries(Object.entries(state).filter(([id]) => !action.itemIds.some(itemId => {
if (Number.isInteger(itemId)) {
return itemId === +id;
}
return itemId === id;
})));
}
return state;
}
}));
}
/**
* Reducer keeping track of the registered entities.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function entitiesConfig(state = rootEntitiesConfig, action) {
switch (action.type) {
case 'ADD_ENTITIES':
return [...state, ...action.entities];
}
return state;
}
/**
* Reducer keeping track of the registered entities config and data.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
const entities = (state = {}, action) => {
const newConfig = entitiesConfig(state.config, action);
// Generates a dynamic reducer for the entities.
let entitiesDataReducer = state.reducer;
if (!entitiesDataReducer || newConfig !== state.config) {
const entitiesByKind = newConfig.reduce((acc, record) => {
const {
kind
} = record;
if (!acc[kind]) {
acc[kind] = [];
}
acc[kind].push(record);
return acc;
}, {});
entitiesDataReducer = (0,external_wp_data_namespaceObject.combineReducers)(Object.entries(entitiesByKind).reduce((memo, [kind, subEntities]) => {
const kindReducer = (0,external_wp_data_namespaceObject.combineReducers)(subEntities.reduce((kindMemo, entityConfig) => ({
...kindMemo,
[entityConfig.name]: entity(entityConfig)
}), {}));
memo[kind] = kindReducer;
return memo;
}, {}));
}
const newData = entitiesDataReducer(state.records, action);
if (newData === state.records && newConfig === state.config && entitiesDataReducer === state.reducer) {
return state;
}
return {
reducer: entitiesDataReducer,
records: newData,
config: newConfig
};
};
/**
* @type {UndoManager}
*/
function undoManager(state = createUndoManager()) {
return state;
}
function editsReference(state = {}, action) {
switch (action.type) {
case 'EDIT_ENTITY_RECORD':
case 'UNDO':
case 'REDO':
return {};
}
return state;
}
/**
* Reducer managing embed preview data.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function embedPreviews(state = {}, action) {
switch (action.type) {
case 'RECEIVE_EMBED_PREVIEW':
const {
url,
preview
} = action;
return {
...state,
[url]: preview
};
}
return state;
}
/**
* State which tracks whether the user can perform an action on a REST
* resource.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function userPermissions(state = {}, action) {
switch (action.type) {
case 'RECEIVE_USER_PERMISSION':
return {
...state,
[action.key]: action.isAllowed
};
case 'RECEIVE_USER_PERMISSIONS':
return {
...state,
...action.permissions
};
}
return state;
}
/**
* Reducer returning autosaves keyed by their parent's post id.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function autosaves(state = {}, action) {
switch (action.type) {
case 'RECEIVE_AUTOSAVES':
const {
postId,
autosaves: autosavesData
} = action;
return {
...state,
[postId]: autosavesData
};
}
return state;
}
function blockPatterns(state = [], action) {
switch (action.type) {
case 'RECEIVE_BLOCK_PATTERNS':
return action.patterns;
}
return state;
}
function blockPatternCategories(state = [], action) {
switch (action.type) {
case 'RECEIVE_BLOCK_PATTERN_CATEGORIES':
return action.categories;
}
return state;
}
function userPatternCategories(state = [], action) {
switch (action.type) {
case 'RECEIVE_USER_PATTERN_CATEGORIES':
return action.patternCategories;
}
return state;
}
function navigationFallbackId(state = null, action) {
switch (action.type) {
case 'RECEIVE_NAVIGATION_FALLBACK_ID':
return action.fallbackId;
}
return state;
}
/**
* Reducer managing the theme global styles revisions.
*
* @param {Record} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Record} Updated state.
*/
function themeGlobalStyleRevisions(state = {}, action) {
switch (action.type) {
case 'RECEIVE_THEME_GLOBAL_STYLE_REVISIONS':
return {
...state,
[action.currentId]: action.revisions
};
}
return state;
}
/**
* Reducer managing the template lookup per query.
*
* @param {Record} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Record} Updated state.
*/
function defaultTemplates(state = {}, action) {
switch (action.type) {
case 'RECEIVE_DEFAULT_TEMPLATE':
return {
...state,
[JSON.stringify(action.query)]: action.templateId
};
}
return state;
}
/**
* Reducer returning an object of registered post meta.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function registeredPostMeta(state = {}, action) {
switch (action.type) {
case 'RECEIVE_REGISTERED_POST_META':
return {
...state,
[action.postType]: action.registeredPostMeta
};
}
return state;
}
/* harmony default export */ const build_module_reducer = ((0,external_wp_data_namespaceObject.combineReducers)({
terms,
users,
currentTheme,
currentGlobalStylesId,
currentUser,
themeGlobalStyleVariations,
themeBaseGlobalStyles,
themeGlobalStyleRevisions,
taxonomies,
entities,
editsReference,
undoManager,
embedPreviews,
userPermissions,
autosaves,
blockPatterns,
blockPatternCategories,
userPatternCategories,
navigationFallbackId,
defaultTemplates,
registeredPostMeta
}));
;// external ["wp","deprecated"]
const external_wp_deprecated_namespaceObject = window["wp"]["deprecated"];
var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_namespaceObject);
;// ./node_modules/@wordpress/core-data/build-module/name.js
/**
* The reducer key used by core data in store registration.
* This is defined in a separate file to avoid cycle-dependency
*
* @type {string}
*/
const STORE_NAME = 'core';
// EXTERNAL MODULE: ./node_modules/equivalent-key-map/equivalent-key-map.js
var equivalent_key_map = __webpack_require__(3249);
var equivalent_key_map_default = /*#__PURE__*/__webpack_require__.n(equivalent_key_map);
;// ./node_modules/@wordpress/core-data/build-module/utils/set-nested-value.js
/**
* Sets the value at path of object.
* If a portion of path doesn’t exist, it’s created.
* Arrays are created for missing index properties while objects are created
* for all other missing properties.
*
* Path is specified as either:
* - a string of properties, separated by dots, for example: "x.y".
* - an array of properties, for example `[ 'x', 'y' ]`.
*
* This function intentionally mutates the input object.
*
* Inspired by _.set().
*
* @see https://lodash.com/docs/4.17.15#set
*
* @todo Needs to be deduplicated with its copy in `@wordpress/edit-site`.
*
* @param {Object} object Object to modify
* @param {Array|string} path Path of the property to set.
* @param {*} value Value to set.
*/
function setNestedValue(object, path, value) {
if (!object || typeof object !== 'object') {
return object;
}
const normalizedPath = Array.isArray(path) ? path : path.split('.');
normalizedPath.reduce((acc, key, idx) => {
if (acc[key] === undefined) {
if (Number.isInteger(normalizedPath[idx + 1])) {
acc[key] = [];
} else {
acc[key] = {};
}
}
if (idx === normalizedPath.length - 1) {
acc[key] = value;
}
return acc[key];
}, object);
return object;
}
;// ./node_modules/@wordpress/core-data/build-module/queried-data/selectors.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Cache of state keys to EquivalentKeyMap where the inner map tracks queries
* to their resulting items set. WeakMap allows garbage collection on expired
* state references.
*
* @type {WeakMap