Sindbad~EG File Manager
{"version":3,"file":"core-data.js","mappings":";;;;;;;;;;;;;;;;;AAAkC;AACE;AAMN;;;AAG9B;AACA;AACA;;AAE0C;AACI;AAMhB;;AAE9B,sEAAe,gBAAgB,EAAE,6CAAI,EAAE,+CAAM;AAC7C,kBAAkB;AAClB,aAAa;AACb,uBAAuB;AACvB,yBAAyB;AACzB,CAAC,CAAC,E;;;;;;;;;;;;;;;;;;;;;;;AC5BqG;AAChG,qBAAqB,oDAAU;AAC/B,gBAAgB,oDAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,KAAK;AACL;AACA;AACA;AACA,iBAAiB;AACjB,KAAK;AACL;AACA;AACA;AACA,iBAAiB;AACjB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wDAAU;AAChC;AACA,uDAAuD,+BAA+B;AACtF,mCAAmC,kDAAkD;AACrF,iBAAiB;AACjB,KAAK;AACL;AACA;AACA;AACA,mCAAmC,mCAAmC,wDAAU,eAAe;AAC/F,iBAAiB;AACjB,KAAK;AACL;AACA,iBAAiB;AACjB,KAAK;AACL;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,YAAY,uDAAS;AACrB;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,iBAAiB;AACjB,KAAK;AACL;AACA;AACA,iBAAiB;AACjB,KAAK;AACL;AACA;AACA;AACA,iBAAiB;AACjB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACO;AACP,wCAAwC;AACxC,qCAAqC;AACrC,gDAAgD;AAChD,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,uEAAuE;AACvE,mFAAmF;AACnF,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,uBAAuB,wDAAU;AACjC;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mEAAqB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uDAAS;AACvD;AACA,sBAAsB;AACtB,6BAA6B,uDAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oBAAoB;AAC7C;AACO;AACP,qCAAqC;AACrC,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wDAAU;AAC7B;AACA;AACA,6CAA6C,cAAc;AAC3D;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,0DAAY;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wDAAU,YAAY,wDAAU;AACvD;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AChbA;AACA;AACA;AACA;AACA;AAC6F;AACrD;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wDAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,iCAAiC;AACjC;AACA;AACA;AACA,QAAQ,qDAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,yDAAW;AAC7B,kBAAkB,yDAAW;AAC7B;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA,YAAY,4DAAc;AAC1B;AACA;AACA,gEAAgE,iEAAmB;AACnF;AACA;AACA;AACA;AACA;AACA,uCAAuC,+BAA+B,iEAAmB,cAAc,wDAAU,UAAU;AAC3H;AACA,mCAAmC,kCAAkC,iEAAmB,cAAc,wDAAU,UAAU;AAC1H;AACA;AACA;AACA;AACA;AACA,+BAA+B,+BAA+B,iEAAmB,cAAc,wDAAU,UAAU;AACnH;AACA,2BAA2B,iCAAiC,iEAAmB,OAAO;AACtF,4BAA4B;AAC5B;AACA;AACA;AACA,+BAA+B,uCAAuC;AACtE;AACA,2BAA2B,uCAAuC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA,aAAa,4DAAc;AAC3B,2BAA2B,8BAA8B,iEAAmB,cAAc,wDAAU,YAAY;AAChH;AACA;AACA;AACA;AACA;AACA;AACO;AACP,iCAAiC;AACjC;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC/KA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACO;AACP;AACA;AACO;AACP;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB;AACO;AACP;AACA;AACA,oDAAoD;AACpD;AACA,yBAAyB;AACzB;AACA,wBAAwB;AACxB;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gDAAgD,WAAW;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,4DAA4D;AACxI;AACA;AACA;AACA;AACA,4DAA4D;AAC5D,8DAA8D,4DAA4D;AAC1H;AACA;AACA;AACA,CAAC;AACqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1KwB;AACgB;AAEd;AACW;AACD;AAEC;AAEb;AACW;AACL;AACX;AAUzC,MAAM;EACLgB,cAAc;EACdC,YAAY;EACZC,gBAAgB;EAChBC,WAAW;EACXC,oBAAoB;EACpBC,kBAAkB;EAClBC,gBAAgB;EAChBC,gBAAgB;EAChBC,iBAAiB;EACjBC,oBAAoB;EACpBC;AACD,CAAC,GAAGjB,oDAAY;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMkB,2BAA2B,GAAGA,CACnCC,KAAU,EACVC,KAAyB,EACzBC,QAAa,EACbC,QAAa,KACT;EACJ;EACA,IAAKH,KAAK,EAAEI,IAAI,KAAK,oBAAoB,IAAIJ,KAAK,EAAEK,IAAI,EAAEC,MAAM,EAAG;IAClE;IACA,IAAKL,KAAK,EAAG;MACZ,MAAMM,OAAO,GAAGJ,QAAQ,CACtBK,MAAM,CAAE7B,qDAAa,CAAC,CACtB8B,UAAU,CAAE3B,sDAAe,CAAC;MAC9B,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","sources":["webpack://popup-maker/core/./node_modules/fast-json-patch/index.mjs?","webpack://popup-maker/core/./node_modules/fast-json-patch/module/core.mjs?","webpack://popup-maker/core/./node_modules/fast-json-patch/module/duplex.mjs?","webpack://popup-maker/core/./node_modules/fast-json-patch/module/helpers.mjs?","webpack://popup-maker/core/./packages/core-data/src/call-to-actions/actions.ts?","webpack://popup-maker/core/./packages/core-data/src/call-to-actions/constants.ts?","webpack://popup-maker/core/./packages/core-data/src/call-to-actions/index.ts?","webpack://popup-maker/core/./packages/core-data/src/call-to-actions/reducer.ts?","webpack://popup-maker/core/./packages/core-data/src/call-to-actions/resolvers.ts?","webpack://popup-maker/core/./packages/core-data/src/call-to-actions/selectors.ts?","webpack://popup-maker/core/./packages/core-data/src/call-to-actions/store.ts?","webpack://popup-maker/core/./packages/core-data/src/call-to-actions/utils.ts?","webpack://popup-maker/core/./packages/core-data/src/call-to-actions/validation.ts?","webpack://popup-maker/core/./packages/core-data/src/constants.ts?","webpack://popup-maker/core/./packages/core-data/src/hooks/index.ts?","webpack://popup-maker/core/./packages/core-data/src/hooks/use-license.ts?","webpack://popup-maker/core/./packages/core-data/src/hooks/use-settings.ts?","webpack://popup-maker/core/./packages/core-data/src/license/actions.ts?","webpack://popup-maker/core/./packages/core-data/src/license/constants.ts?","webpack://popup-maker/core/./packages/core-data/src/license/index.ts?","webpack://popup-maker/core/./packages/core-data/src/license/reducer.ts?","webpack://popup-maker/core/./packages/core-data/src/license/resolvers.ts?","webpack://popup-maker/core/./packages/core-data/src/license/selectors.ts?","webpack://popup-maker/core/./packages/core-data/src/license/store.ts?","webpack://popup-maker/core/./packages/core-data/src/license/utils.ts?","webpack://popup-maker/core/./packages/core-data/src/popups/actions.ts?","webpack://popup-maker/core/./packages/core-data/src/popups/constants.ts?","webpack://popup-maker/core/./packages/core-data/src/popups/index.ts?","webpack://popup-maker/core/./packages/core-data/src/popups/reducer.ts?","webpack://popup-maker/core/./packages/core-data/src/popups/resolvers.ts?","webpack://popup-maker/core/./packages/core-data/src/popups/selectors.ts?","webpack://popup-maker/core/./packages/core-data/src/popups/store.ts?","webpack://popup-maker/core/./packages/core-data/src/popups/utils.ts?","webpack://popup-maker/core/./packages/core-data/src/popups/validation.ts?","webpack://popup-maker/core/./packages/core-data/src/settings/actions.ts?","webpack://popup-maker/core/./packages/core-data/src/settings/constants.ts?","webpack://popup-maker/core/./packages/core-data/src/settings/index.ts?","webpack://popup-maker/core/./packages/core-data/src/settings/reducer.ts?","webpack://popup-maker/core/./packages/core-data/src/settings/resolvers.ts?","webpack://popup-maker/core/./packages/core-data/src/settings/selectors.ts?","webpack://popup-maker/core/./packages/core-data/src/settings/store.ts?","webpack://popup-maker/core/./packages/core-data/src/settings/utils.ts?","webpack://popup-maker/core/./packages/core-data/src/url-search/actions.ts?","webpack://popup-maker/core/./packages/core-data/src/url-search/constants.ts?","webpack://popup-maker/core/./packages/core-data/src/url-search/index.ts?","webpack://popup-maker/core/./packages/core-data/src/url-search/reducer.ts?","webpack://popup-maker/core/./packages/core-data/src/url-search/selectors.ts?","webpack://popup-maker/core/./packages/core-data/src/url-search/store.ts?","webpack://popup-maker/core/./packages/core-data/src/url-search/utils.ts?","webpack://popup-maker/core/./packages/core-data/src/utils/controls.ts?","webpack://popup-maker/core/./packages/core-data/src/utils/index.ts?","webpack://popup-maker/core/external window [\"popupMaker\",\"i18n\"]?","webpack://popup-maker/core/external window [\"wp\",\"apiFetch\"]?","webpack://popup-maker/core/external window [\"wp\",\"data\"]?","webpack://popup-maker/core/external window [\"wp\",\"element\"]?","webpack://popup-maker/core/external window [\"wp\",\"hooks\"]?","webpack://popup-maker/core/external window [\"wp\",\"htmlEntities\"]?","webpack://popup-maker/core/external window [\"wp\",\"notices\"]?","webpack://popup-maker/core/external window \"lodash\"?","webpack://popup-maker/core/webpack/bootstrap?","webpack://popup-maker/core/webpack/runtime/compat get default export?","webpack://popup-maker/core/webpack/runtime/define property getters?","webpack://popup-maker/core/webpack/runtime/hasOwnProperty shorthand?","webpack://popup-maker/core/webpack/runtime/make namespace object?","webpack://popup-maker/core/./packages/core-data/src/index.ts?"],"sourcesContent":["export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\nexport default Object.assign({}, core, duplex, {\n JsonPatchError,\n deepClone,\n escapePathComponent,\n unescapePathComponent\n});","import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n add: function (obj, key, document) {\n obj[key] = this.value;\n return { newDocument: document };\n },\n remove: function (obj, key, document) {\n var removed = obj[key];\n delete obj[key];\n return { newDocument: document, removed: removed };\n },\n replace: function (obj, key, document) {\n var removed = obj[key];\n obj[key] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: function (obj, key, document) {\n /* in case move target overwrites an existing value,\n return the removed value, this can be taxing performance-wise,\n and is potentially unneeded */\n var removed = getValueByPointer(document, this.path);\n if (removed) {\n removed = _deepClone(removed);\n }\n var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n return { newDocument: document, removed: removed };\n },\n copy: function (obj, key, document) {\n var valueToCopy = getValueByPointer(document, this.from);\n // enforce copy by value so further operations don't affect source (see issue #177)\n applyOperation(document, { op: \"add\", path: this.path, value: _deepClone(valueToCopy) });\n return { newDocument: document };\n },\n test: function (obj, key, document) {\n return { newDocument: document, test: _areEquals(obj[key], this.value) };\n },\n _get: function (obj, key, document) {\n this.value = obj[key];\n return { newDocument: document };\n }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n add: function (arr, i, document) {\n if (isInteger(i)) {\n arr.splice(i, 0, this.value);\n }\n else { // array props\n arr[i] = this.value;\n }\n // this may be needed when using '-' in an array\n return { newDocument: document, index: i };\n },\n remove: function (arr, i, document) {\n var removedList = arr.splice(i, 1);\n return { newDocument: document, removed: removedList[0] };\n },\n replace: function (arr, i, document) {\n var removed = arr[i];\n arr[i] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: objOps.move,\n copy: objOps.copy,\n test: objOps.test,\n _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n if (pointer == '') {\n return document;\n }\n var getOriginalDestination = { op: \"_get\", path: pointer };\n applyOperation(document, getOriginalDestination);\n return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n if (validateOperation === void 0) { validateOperation = false; }\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (index === void 0) { index = 0; }\n if (validateOperation) {\n if (typeof validateOperation == 'function') {\n validateOperation(operation, 0, document, operation.path);\n }\n else {\n validator(operation, 0);\n }\n }\n /* ROOT OPERATIONS */\n if (operation.path === \"\") {\n var returnValue = { newDocument: document };\n if (operation.op === 'add') {\n returnValue.newDocument = operation.value;\n return returnValue;\n }\n else if (operation.op === 'replace') {\n returnValue.newDocument = operation.value;\n returnValue.removed = document; //document we removed\n return returnValue;\n }\n else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n if (operation.op === 'move') { // report removed item\n returnValue.removed = document;\n }\n return returnValue;\n }\n else if (operation.op === 'test') {\n returnValue.test = _areEquals(document, operation.value);\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n returnValue.newDocument = document;\n return returnValue;\n }\n else if (operation.op === 'remove') { // a remove on root\n returnValue.removed = document;\n returnValue.newDocument = null;\n return returnValue;\n }\n else if (operation.op === '_get') {\n operation.value = document;\n return returnValue;\n }\n else { /* bad operation */\n if (validateOperation) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else {\n return returnValue;\n }\n }\n } /* END ROOT OPERATIONS */\n else {\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var path = operation.path || \"\";\n var keys = path.split('/');\n var obj = document;\n var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n var len = keys.length;\n var existingPathFragment = undefined;\n var key = void 0;\n var validateFunction = void 0;\n if (typeof validateOperation == 'function') {\n validateFunction = validateOperation;\n }\n else {\n validateFunction = validator;\n }\n while (true) {\n key = keys[t];\n if (key && key.indexOf('~') != -1) {\n key = unescapePathComponent(key);\n }\n if (banPrototypeModifications &&\n (key == '__proto__' ||\n (key == 'prototype' && t > 0 && keys[t - 1] == 'constructor'))) {\n throw new TypeError('JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n }\n if (validateOperation) {\n if (existingPathFragment === undefined) {\n if (obj[key] === undefined) {\n existingPathFragment = keys.slice(0, t).join('/');\n }\n else if (t == len - 1) {\n existingPathFragment = operation.path;\n }\n if (existingPathFragment !== undefined) {\n validateFunction(operation, 0, document, existingPathFragment);\n }\n }\n }\n t++;\n if (Array.isArray(obj)) {\n if (key === '-') {\n key = obj.length;\n }\n else {\n if (validateOperation && !isInteger(key)) {\n throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n } // only parse key when it's an integer for `arr.prop` to work\n else if (isInteger(key)) {\n key = ~~key;\n }\n }\n if (t >= len) {\n if (validateOperation && operation.op === \"add\" && key > obj.length) {\n throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n }\n var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n else {\n if (t >= len) {\n var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n obj = obj[key];\n // If we have more keys in the path, but the next value isn't a non-null object,\n // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (validateOperation) {\n if (!Array.isArray(patch)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n }\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var results = new Array(patch.length);\n for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n document = results[i].newDocument; // in case root was replaced\n }\n results.newDocument = document;\n return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n var operationResult = applyOperation(document, operation);\n if (operationResult.test === false) { // failed test\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n }\n else if (!objOps[operation.op]) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else if (typeof operation.path !== 'string') {\n throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n // paths that aren't empty string should start with \"/\"\n throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n }\n else if (document) {\n if (operation.op == \"add\") {\n var pathLen = operation.path.split(\"/\").length;\n var existingPathLen = existingPathFragment.split(\"/\").length;\n if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n }\n }\n else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n if (operation.path !== existingPathFragment) {\n throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n else if (operation.op === 'move' || operation.op === 'copy') {\n var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n var error = validate([existingValue], document);\n if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n try {\n if (!Array.isArray(sequence)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n if (document) {\n //clone document and sequence so that we can safely try applying operations\n applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n }\n else {\n externalValidator = externalValidator || validator;\n for (var i = 0; i < sequence.length; i++) {\n externalValidator(sequence[i], i, document, undefined);\n }\n }\n }\n catch (e) {\n if (e instanceof JsonPatchError) {\n return e;\n }\n else {\n throw e;\n }\n }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!_areEquals(a[i], b[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!b.hasOwnProperty(keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!_areEquals(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n}\n;\n","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2021 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n function Mirror(obj) {\n this.observers = new Map();\n this.obj = obj;\n }\n return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n function ObserverInfo(callback, observer) {\n this.callback = callback;\n this.observer = observer;\n }\n return ObserverInfo;\n}());\nfunction getMirror(obj) {\n return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n var patches = [];\n var observer;\n var mirror = getMirror(obj);\n if (!mirror) {\n mirror = new Mirror(obj);\n beforeDict.set(obj, mirror);\n }\n else {\n var observerInfo = getObserverFromMirror(mirror, callback);\n observer = observerInfo && observerInfo.observer;\n }\n if (observer) {\n return observer;\n }\n observer = {};\n mirror.value = _deepClone(obj);\n if (callback) {\n observer.callback = callback;\n observer.next = null;\n var dirtyCheck = function () {\n generate(observer);\n };\n var fastCheck = function () {\n clearTimeout(observer.next);\n observer.next = setTimeout(dirtyCheck);\n };\n if (typeof window !== 'undefined') { //not Node\n window.addEventListener('mouseup', fastCheck);\n window.addEventListener('keyup', fastCheck);\n window.addEventListener('mousedown', fastCheck);\n window.addEventListener('keydown', fastCheck);\n window.addEventListener('change', fastCheck);\n }\n }\n observer.patches = patches;\n observer.object = obj;\n observer.unobserve = function () {\n generate(observer);\n clearTimeout(observer.next);\n removeObserverFromMirror(mirror, observer);\n if (typeof window !== 'undefined') {\n window.removeEventListener('mouseup', fastCheck);\n window.removeEventListener('keyup', fastCheck);\n window.removeEventListener('mousedown', fastCheck);\n window.removeEventListener('keydown', fastCheck);\n window.removeEventListener('change', fastCheck);\n }\n };\n mirror.observers.set(callback, new ObserverInfo(callback, observer));\n return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n if (invertible === void 0) { invertible = false; }\n var mirror = beforeDict.get(observer.object);\n _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n if (observer.patches.length) {\n applyPatch(mirror.value, observer.patches);\n }\n var temp = observer.patches;\n if (temp.length > 0) {\n observer.patches = [];\n if (observer.callback) {\n observer.callback(temp);\n }\n }\n return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n if (obj === mirror) {\n return;\n }\n if (typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n var newKeys = _objectKeys(obj);\n var oldKeys = _objectKeys(mirror);\n var changed = false;\n var deleted = false;\n //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n for (var t = oldKeys.length - 1; t >= 0; t--) {\n var key = oldKeys[t];\n var oldVal = mirror[key];\n if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n var newVal = obj[key];\n if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n }\n else {\n if (oldVal !== newVal) {\n changed = true;\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"replace\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(newVal) });\n }\n }\n }\n else if (Array.isArray(mirror) === Array.isArray(obj)) {\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"remove\", path: path + \"/\" + escapePathComponent(key) });\n deleted = true; // property has been deleted\n }\n else {\n if (invertible) {\n patches.push({ op: \"test\", path: path, value: mirror });\n }\n patches.push({ op: \"replace\", path: path, value: obj });\n changed = true;\n }\n }\n if (!deleted && newKeys.length == oldKeys.length) {\n return;\n }\n for (var t = 0; t < newKeys.length; t++) {\n var key = newKeys[t];\n if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n patches.push({ op: \"add\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(obj[key]) });\n }\n }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n if (invertible === void 0) { invertible = false; }\n var patches = [];\n _generate(tree1, tree2, patches, '', invertible);\n return patches;\n}\n","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2022 Joachim Wester\n * MIT licensed\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n if (Array.isArray(obj)) {\n var keys_1 = new Array(obj.length);\n for (var k = 0; k < keys_1.length; k++) {\n keys_1[k] = \"\" + k;\n }\n return keys_1;\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var i in obj) {\n if (hasOwnProperty(obj, i)) {\n keys.push(i);\n }\n }\n return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n switch (typeof obj) {\n case \"object\":\n return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case \"undefined\":\n return null; //this is how JSON.stringify behaves for array items\n default:\n return obj; //no need to clone primitives\n }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n var i = 0;\n var len = str.length;\n var charCode;\n while (i < len) {\n charCode = str.charCodeAt(i);\n if (charCode >= 48 && charCode <= 57) {\n i++;\n continue;\n }\n return false;\n }\n return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\n return path;\n return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n var found;\n for (var key in root) {\n if (hasOwnProperty(root, key)) {\n if (root[key] === obj) {\n return escapePathComponent(key) + '/';\n }\n else if (typeof root[key] === 'object') {\n found = _getPathRecursive(root[key], obj);\n if (found != '') {\n return escapePathComponent(key) + '/' + found;\n }\n }\n }\n }\n return '';\n}\nexport function getPath(root, obj) {\n if (root === obj) {\n return '/';\n }\n var path = _getPathRecursive(root, obj);\n if (path === '') {\n throw new Error(\"Object not found in root\");\n }\n return \"/\" + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n if (obj === undefined) {\n return true;\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {\n if (hasUndefined(obj[i_1])) {\n return true;\n }\n }\n }\n else if (typeof obj === \"object\") {\n var objKeys = _objectKeys(obj);\n var objKeysLength = objKeys.length;\n for (var i = 0; i < objKeysLength; i++) {\n if (hasUndefined(obj[objKeys[i]])) {\n return true;\n }\n }\n }\n }\n return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n var messageParts = [message];\n for (var key in args) {\n var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n if (typeof value !== 'undefined') {\n messageParts.push(key + \": \" + value);\n }\n }\n return messageParts.join('\\n');\n}\nvar PatchError = /** @class */ (function (_super) {\n __extends(PatchError, _super);\n function PatchError(message, name, index, operation, tree) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\n _this.name = name;\n _this.index = index;\n _this.operation = operation;\n _this.tree = tree;\n Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\n return _this;\n }\n return PatchError;\n}(Error));\nexport { PatchError };\n","import { cloneDeep, mergeWith } from 'lodash';\nimport { compare as jsonpatchCompare } from 'fast-json-patch';\n\nimport { __, sprintf } from '@popup-maker/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nimport { ACTION_TYPES, NOTICE_CONTEXT } from './constants';\n\nimport { DispatchStatus } from '../constants';\nimport { fetchFromApi, getErrorMessage } from '../utils';\nimport { validateCallToAction } from './validation';\nimport { editableEntity } from './utils';\nimport type { EditorId, Notice } from '../types';\nimport type {\n\tCallToAction,\n\tThunkAction,\n\tEditableCta,\n\tPartialEditableCta,\n} from './types';\nimport type { EditRecordAction } from './reducer';\n\nconst {\n\tRECEIVE_RECORD,\n\tPURGE_RECORD,\n\tEDITOR_CHANGE_ID,\n\tEDIT_RECORD,\n\tSTART_EDITING_RECORD,\n\tSAVE_EDITED_RECORD,\n\tUNDO_EDIT_RECORD,\n\tREDO_EDIT_RECORD,\n\tRESET_EDIT_RECORD,\n\tCHANGE_ACTION_STATUS,\n\tINVALIDATE_RESOLUTION,\n} = ACTION_TYPES;\n\n/**\n * Helper function to handle field-specific validation errors using WordPress notices\n *\n * @param {any} error The error object from the API\n * @param {number} ctaId The CTA ID for field error association\n * @param {Function} dispatch The dispatch function with createErrorNotice\n * @param {any} registry The registry for accessing stores\n */\nconst handleFieldValidationErrors = (\n\terror: any,\n\tctaId: number | undefined,\n\tdispatch: any,\n\tregistry: any\n) => {\n\t// Handle field-specific validation errors\n\tif ( error?.code === 'rest_invalid_param' && error?.data?.params ) {\n\t\t// Clear previous field errors for this CTA\n\t\tif ( ctaId ) {\n\t\t\tconst notices = registry\n\t\t\t\t.select( noticesStore )\n\t\t\t\t.getNotices( NOTICE_CONTEXT );\n\t\t\tconst fieldErrors = notices.filter(\n\t\t\t\t( n: Notice ) => n.id?.startsWith( `field-error-${ ctaId }-` )\n\t\t\t);\n\t\t\tfieldErrors.forEach( ( n: Notice ) =>\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.removeNotice( n.id, NOTICE_CONTEXT )\n\t\t\t);\n\t\t}\n\n\t\t// Create notices for each field error\n\t\tObject.entries( error.data.params ).forEach( ( [ field, message ] ) => {\n\t\t\t// Check if this is a nested field error with details\n\t\t\tif ( field === 'settings' && error.data.details?.settings ) {\n\t\t\t\tconst settingsError = error.data.details.settings;\n\n\t\t\t\t// Handle the primary error\n\t\t\t\tif ( settingsError.data?.field ) {\n\t\t\t\t\tdispatch.createErrorNotice( settingsError.message, {\n\t\t\t\t\t\tid: `field-error-${ ctaId || 'new' }-${\n\t\t\t\t\t\t\tsettingsError.data.field\n\t\t\t\t\t\t}`,\n\t\t\t\t\t\tisDismissible: false,\n\t\t\t\t\t\ttype: 'default', // Prevent auto-dismiss\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Handle additional errors\n\t\t\t\tif (\n\t\t\t\t\tsettingsError.additional_errors &&\n\t\t\t\t\tArray.isArray( settingsError.additional_errors )\n\t\t\t\t) {\n\t\t\t\t\tsettingsError.additional_errors.forEach(\n\t\t\t\t\t\t( additionalError: any ) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tadditionalError.data?.field &&\n\t\t\t\t\t\t\t\tadditionalError.message\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tdispatch.createErrorNotice(\n\t\t\t\t\t\t\t\t\tadditionalError.message,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: `field-error-${ ctaId || 'new' }-${\n\t\t\t\t\t\t\t\t\t\t\tadditionalError.data.field\n\t\t\t\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t\t\t\t\tisDismissible: false,\n\t\t\t\t\t\t\t\t\t\ttype: 'default', // Prevent auto-dismiss\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Regular field error\n\t\t\t\tdispatch.createErrorNotice( message as string, {\n\t\t\t\t\tid: `field-error-${ ctaId || 'new' }-${ field }`,\n\t\t\t\t\tisDismissible: false,\n\t\t\t\t\ttype: 'default', // Prevent auto-dismiss\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n/*****************************************************\n * SECTION: Entity actions\n *****************************************************/\nconst entityActions = {\n\t/**\n\t * Create a new entity record. Values sent to the server immediately.\n\t *\n\t * @param {Editable} callToAction The entity to create.\n\t * @param {boolean} validate An optional validation function.\n\t * @param {boolean} withNotices Whether to show notices.\n\t * @return {Promise<CallToAction< 'edit' > | false>} The created entity or false if validation fails.\n\t */\n\tcreateCallToAction:\n\t\t(\n\t\t\tcallToAction: Partial< EditableCta >,\n\t\t\tvalidate: boolean = true,\n\t\t\twithNotices: boolean = true\n\t\t): ThunkAction< CallToAction< 'edit' > | false > =>\n\t\tasync ( { dispatch, registry } ) => {\n\t\t\tconst action = 'createCallToAction';\n\n\t\t\ttry {\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Resolving,\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tconst { id, ...newCta } = callToAction;\n\n\t\t\t\tif ( validate ) {\n\t\t\t\t\tconst validation = validateCallToAction( newCta );\n\n\t\t\t\t\tif ( true !== validation ) {\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\t\tmessage: validation.message,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\t\tawait dispatch.createErrorNotice(\n\t\t\t\t\t\t\t\tvalidation.message,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: 'call-to-action-validation-error',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst result = await fetchFromApi< CallToAction< 'edit' > >(\n\t\t\t\t\t`ctas?context=edit`,\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\tdata: newCta,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif ( result ) {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\t\tstatus: DispatchStatus.Success,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\t\tdispatch.createSuccessNotice(\n\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t// translators: %s: call to action title.\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'Call to action \"%s\" saved successfully.',\n\t\t\t\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tdecodeEntities( result?.title.rendered )\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: 'call-to-action-saved',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: RECEIVE_RECORD,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\trecord: result,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t\t'An error occurred, call to action was not saved.',\n\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage = getErrorMessage( error );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t// Handle field-specific validation errors or generic error\n\t\t\t\t\tconst hasFieldErrors = handleFieldValidationErrors(\n\t\t\t\t\t\terror,\n\t\t\t\t\t\tcallToAction?.id,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tregistry\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! hasFieldErrors ) {\n\t\t\t\t\t\t// Generic error notice\n\t\t\t\t\t\tdispatch.createErrorNotice( errorMessage, {\n\t\t\t\t\t\t\tid: 'call-to-action-save-error',\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t/**\n\t * Update an existing entity record. Values sent to the server immediately.\n\t *\n\t * @param {PartialEditableCta} callToAction The entity to update.\n\t * @param {boolean} validate An optional validation function.\n\t * @param {boolean} withNotices Whether to show notices.\n\t * @return {Promise<T | boolean>} The updated entity or false if validation fails.\n\t */\n\tupdateCallToAction:\n\t\t(\n\t\t\tcallToAction: PartialEditableCta,\n\t\t\tvalidate: boolean = true,\n\t\t\twithNotices: boolean = true\n\t\t): ThunkAction< CallToAction< 'edit' > | false > =>\n\t\tasync ( { select, dispatch, registry } ) => {\n\t\t\tconst action = 'updateCallToAction';\n\n\t\t\ttry {\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Resolving,\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tif ( validate ) {\n\t\t\t\t\tconst validation = validateCallToAction( callToAction );\n\n\t\t\t\t\tif ( true !== validation ) {\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\t\tmessage: validation.message,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\t\tawait dispatch.createErrorNotice(\n\t\t\t\t\t\t\t\tvalidation.message,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: 'call-to-action-validation-error',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst canonicalCallToAction = await select.getCallToAction(\n\t\t\t\t\tcallToAction.id\n\t\t\t\t);\n\n\t\t\t\tif ( ! canonicalCallToAction ) {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t\t\t'Call to action not found',\n\t\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Also store the error by CTA ID for the editor to access\n\t\t\t\t\tif ( callToAction.id ) {\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tactionName: callToAction.id.toString(),\n\t\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t\t\t\t'Call to action not found',\n\t\t\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst result = await fetchFromApi< CallToAction< 'edit' > >(\n\t\t\t\t\t`ctas/${ canonicalCallToAction.id }`,\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\tdata: callToAction,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif ( result ) {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t// dispatch.finishResolution( action, operation );\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\t\tstatus: DispatchStatus.Success,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\t\tdispatch.createSuccessNotice(\n\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t// translators: %s: call to action title.\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'Call to action \"%s\" updated successfully.',\n\t\t\t\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tdecodeEntities( result?.title.rendered )\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: 'call-to-action-saved',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: RECEIVE_RECORD,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\trecord: result,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t\t'An error occurred, call to action was not saved.',\n\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage = getErrorMessage( error );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t// Handle field-specific validation errors or generic error\n\t\t\t\t\tconst hasFieldErrors = handleFieldValidationErrors(\n\t\t\t\t\t\terror,\n\t\t\t\t\t\tcallToAction?.id,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tregistry\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! hasFieldErrors ) {\n\t\t\t\t\t\t// Generic error notice\n\t\t\t\t\t\tdispatch.createErrorNotice( errorMessage, {\n\t\t\t\t\t\t\tid: 'call-to-action-save-error',\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t/**\n\t * Delete an existing entity record.\n\t *\n\t * @param {number} id The entity ID.\n\t * @param {boolean} forceDelete Whether to force the deletion.\n\t * @param {boolean} withNotices Whether to show notices.\n\t * @return {Promise<boolean>} Whether the deletion was successful.\n\t */\n\tdeleteCallToAction:\n\t\t(\n\t\t\tid: number,\n\t\t\tforceDelete: boolean = false,\n\t\t\twithNotices: boolean = true\n\t\t): ThunkAction< boolean > =>\n\t\tasync ( { dispatch, registry } ) => {\n\t\t\tconst action = 'deleteCallToAction';\n\n\t\t\ttry {\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Resolving,\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\t// Get the canonical directly from server to verify it exists.\n\t\t\t\tconst canonicalCallToAction = await fetchFromApi<\n\t\t\t\t\tCallToAction< 'edit' >\n\t\t\t\t>( `ctas/${ id }?context=edit` );\n\n\t\t\t\tif ( ! canonicalCallToAction ) {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t\t\t'Call to action not found',\n\t\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst force = forceDelete ? '?force=true' : '';\n\n\t\t\t\tconst result = await fetchFromApi< boolean >(\n\t\t\t\t\t`ctas/${ id }${ force }`,\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif ( result ) {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\t\tstatus: DispatchStatus.Success,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\t\tdispatch.createSuccessNotice(\n\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t// translators: %s: call to action title.\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'Call to action \"%s\" deleted successfully.',\n\t\t\t\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tdecodeEntities(\n\t\t\t\t\t\t\t\t\t\tcanonicalCallToAction?.title.rendered\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: 'call-to-action-deleted',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( forceDelete ) {\n\t\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\t\ttype: PURGE_RECORD,\n\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\t\ttype: RECEIVE_RECORD,\n\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\trecord: {\n\t\t\t\t\t\t\t\t\t\t...canonicalCallToAction,\n\t\t\t\t\t\t\t\t\t\tstatus: 'trash',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t} catch ( error ) {\n\t\t\t\t// await dispatch.failResolution( action, operation );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\tmessage: __( 'Failed to delete entity', 'popup-maker' ),\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tif ( withNotices ) {\n\t\t\t\t\tawait dispatch.createErrorNotice(\n\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t\t: __( 'Failed to delete entity', 'popup-maker' )\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n};\n\n/*****************************************************\n * SECTION: Editor actions\n *****************************************************/\nconst editorActions = {\n\t/**\n\t * Edit an existing entity record. Values are not sent to the server until save.\n\t *\n\t * @param {number} id The entity ID.\n\t * @param {Partial<EditableCta>} edits The edits to apply.\n\t * @return {Promise<boolean>} Whether the edit was successful.\n\t */\n\teditRecord:\n\t\t( id: number, edits: Partial< EditableCta > ): ThunkAction =>\n\t\tasync ( { select, dispatch, registry } ) => {\n\t\t\ttry {\n\t\t\t\tlet canonicalCallToAction: EditableCta | undefined;\n\t\t\t\tconst hasEditedEntity = select.hasEditedEntity( id );\n\n\t\t\t\tif ( hasEditedEntity ) {\n\t\t\t\t\tcanonicalCallToAction = select.getEditedCallToAction(\n\t\t\t\t\t\tid\n\t\t\t\t\t) as EditableCta;\n\t\t\t\t} else {\n\t\t\t\t\tcanonicalCallToAction = await fetchFromApi<\n\t\t\t\t\t\tCallToAction< 'edit' > & { _links: any }\n\t\t\t\t\t>( `ctas/${ id }?context=edit` ).then( ( result ) =>\n\t\t\t\t\t\t// Convert to editable entity if found.\n\t\t\t\t\t\tresult\n\t\t\t\t\t\t\t? editableEntity< CallToAction< 'edit' > >( result )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t);\n\t\t\t\t\tif ( ! canonicalCallToAction ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tregistry.batch( async () => {\n\t\t\t\t\tif ( ! hasEditedEntity ) {\n\t\t\t\t\t\tawait dispatch( {\n\t\t\t\t\t\t\ttype: START_EDITING_RECORD,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\teditableEntity: canonicalCallToAction,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Create a new object with the edits deeply merged into the canonical entity\n\t\t\t\t\t// First clone the canonical entity, then deep merge the edits\n\t\t\t\t\tconst editedEntity = mergeWith(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tcloneDeep( canonicalCallToAction ),\n\t\t\t\t\t\tedits,\n\t\t\t\t\t\t( _objValue, srcValue ) => {\n\t\t\t\t\t\t\tif ( Array.isArray( srcValue ) ) {\n\t\t\t\t\t\t\t\t// Always replace arrays completely, even if empty\n\t\t\t\t\t\t\t\treturn srcValue.slice();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\t// Force patches for empty arrays to ensure they are saved\n\t\t\t\t\tconst diff = jsonpatchCompare(\n\t\t\t\t\t\tcanonicalCallToAction ?? {},\n\t\t\t\t\t\teditedEntity\n\t\t\t\t\t);\n\n\t\t\t\t\tawait dispatch( {\n\t\t\t\t\t\ttype: EDIT_RECORD,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tedits: diff,\n\t\t\t\t\t\t},\n\t\t\t\t\t} as EditRecordAction );\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage = getErrorMessage( error );\n\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error( 'Edit failed:', error );\n\n\t\t\t\tawait dispatch.createErrorNotice( errorMessage, {\n\t\t\t\t\tid: 'call-to-action-edit-error',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\n\t/**\n\t * Save an edited entity record.\n\t *\n\t * @param {number} id The entity ID.\n\t * @param {boolean} validate An optional validation function.\n\t * @param {boolean} withNotices Whether to show notices.\n\t * @return {Promise<boolean>} Whether the save was successful.\n\t */\n\tsaveEditedRecord:\n\t\t(\n\t\t\tid: number,\n\t\t\tvalidate: boolean = true,\n\t\t\twithNotices: boolean = true\n\t\t): ThunkAction< boolean > =>\n\t\tasync ( { select, dispatch, registry } ) => {\n\t\t\tconst action = 'saveRecord';\n\n\t\t\ttry {\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Resolving,\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tif ( ! select.hasEdits( id ) ) {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\tmessage: __( 'No edits to save', 'popup-maker' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst historyIndex = select.getCurrentEditHistoryIndex( id );\n\t\t\t\tconst editedCallToAction = select.getEditedCallToAction( id );\n\n\t\t\t\tif ( ! editedCallToAction ) {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\tmessage: __( 'No edits to save', 'popup-maker' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( editedCallToAction && validate ) {\n\t\t\t\t\tconst validation =\n\t\t\t\t\t\tvalidateCallToAction( editedCallToAction );\n\n\t\t\t\t\tif ( true !== validation ) {\n\t\t\t\t\t\tregistry.batch( async () => {\n\t\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\t\t\tmessage: validation.message,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\t\t\tawait dispatch.createErrorNotice(\n\t\t\t\t\t\t\t\t\tvalidation.message,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: 'call-to-action-validation-error',\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst result = await dispatch.updateCallToAction(\n\t\t\t\t\teditedCallToAction,\n\t\t\t\t\tfalse,\n\t\t\t\t\twithNotices\n\t\t\t\t);\n\n\t\t\t\tif ( result ) {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\t\tstatus: DispatchStatus.Success,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\t\tdispatch.createSuccessNotice(\n\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t// translators: %s: call to action title.\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'Call to action \"%s\" saved successfully.',\n\t\t\t\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tdecodeEntities( result?.title.rendered )\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: 'call-to-action-saved',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: SAVE_EDITED_RECORD,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\thistoryIndex,\n\t\t\t\t\t\t\t\teditedEntity: editableEntity( result ),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage = getErrorMessage( error );\n\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error( 'Save failed:', error );\n\n\t\t\t\tregistry.batch( async () => {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\t// Handle field-specific validation errors or generic error\n\t\t\t\t\t\tconst hasFieldErrors = handleFieldValidationErrors(\n\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\tregistry\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( ! hasFieldErrors ) {\n\t\t\t\t\t\t\t// Generic error notice\n\t\t\t\t\t\t\tawait dispatch.createErrorNotice( errorMessage, {\n\t\t\t\t\t\t\t\tid: 'call-to-action-save-error',\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t/**\n\t * Undo the last action.\n\t *\n\t * @param {number} id The entity ID.\n\t * @param {number} steps The number of steps to undo.\n\t * @return {Promise<void>}\n\t */\n\tundo:\n\t\t( id: number, steps: number = 1 ): ThunkAction =>\n\t\tasync ( { select, dispatch } ) => {\n\t\t\tconst ctaId = id > 0 ? id : select.getEditorId();\n\n\t\t\tif ( typeof ctaId === 'undefined' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait dispatch( {\n\t\t\t\ttype: UNDO_EDIT_RECORD,\n\t\t\t\tpayload: {\n\t\t\t\t\tid: ctaId,\n\t\t\t\t\tsteps,\n\t\t\t\t},\n\t\t\t} );\n\t\t},\n\n\t/**\n\t * Redo the last action.\n\t *\n\t * @param {number} id The entity ID.\n\t * @param {number} steps The number of steps to redo.\n\t * @return {Promise<void>}\n\t */\n\tredo:\n\t\t( id: number, steps: number = 1 ): ThunkAction =>\n\t\tasync ( { select, dispatch } ) => {\n\t\t\tconst ctaId = id > 0 ? id : select.getEditorId();\n\n\t\t\tif ( typeof ctaId === 'undefined' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait dispatch( {\n\t\t\t\ttype: REDO_EDIT_RECORD,\n\t\t\t\tpayload: {\n\t\t\t\t\tid: ctaId,\n\t\t\t\t\tsteps,\n\t\t\t\t},\n\t\t\t} );\n\t\t},\n\n\t/**\n\t * Reset the edits for an entity record.\n\t *\n\t * @param {number} id The entity ID.\n\t * @return {Promise<void>}\n\t */\n\tresetRecordEdits:\n\t\t( id: number ): ThunkAction =>\n\t\tasync ( { select, dispatch } ) => {\n\t\t\tconst ctaId = id > 0 ? id : select.getEditorId();\n\n\t\t\tif ( typeof ctaId === 'undefined' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdispatch( {\n\t\t\t\ttype: RESET_EDIT_RECORD,\n\t\t\t\tpayload: {\n\t\t\t\t\tid: ctaId,\n\t\t\t\t},\n\t\t\t} );\n\t\t},\n\n\t/**\n\t * Update the editor values.\n\t *\n\t * @param {Partial<EditableCta>} values The values to update.\n\t * @return {Promise<void>}\n\t */\n\tupdateEditorValues:\n\t\t( values: PartialEditableCta ): ThunkAction< void > =>\n\t\tasync ( { dispatch, select } ) => {\n\t\t\tconst editorId = select.getEditorId();\n\n\t\t\tif ( typeof editorId === 'undefined' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdispatch.editRecord( editorId, values );\n\t\t},\n\n\t/**\n\t * Save the editor values.\n\t *\n\t * @return {Promise<boolean>} Whether the save was successful.\n\t */\n\tsaveEditorValues:\n\t\t(): ThunkAction< boolean > =>\n\t\tasync ( { dispatch, select } ) => {\n\t\t\tconst editorId = select.getEditorId();\n\t\t\tconst editorValues = select.getCurrentEditorValues();\n\n\t\t\tif ( ! editorId || ! editorValues ) {\n\t\t\t\tdispatch.createErrorNotice(\n\t\t\t\t\t__( 'No editor values to save', 'popup-maker' )\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn dispatch.saveEditedRecord( editorId );\n\t\t},\n\n\t/**\n\t * Reset the editor values.\n\t *\n\t * @return {Promise<void>}\n\t */\n\tresetEditorValues:\n\t\t(): ThunkAction< void > =>\n\t\tasync ( { dispatch, select } ) => {\n\t\t\tconst editorId = select.getEditorId();\n\n\t\t\tif ( typeof editorId === 'undefined' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdispatch.resetRecordEdits( editorId );\n\t\t},\n\n\t/**\n\t * Change the editor ID.\n\t *\n\t * @param {EditorId} editorId The editor ID.\n\t * @return {Promise<void>}\n\t */\n\tchangeEditorId:\n\t\t( editorId: EditorId ): ThunkAction< void > =>\n\t\tasync ( { select, dispatch } ) => {\n\t\t\ttry {\n\t\t\t\tif ( typeof editorId === 'undefined' ) {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: EDITOR_CHANGE_ID,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\teditorId: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( ! select.hasEditedEntity( editorId ) ) {\n\t\t\t\t\tconst entity = await fetchFromApi< CallToAction< 'edit' > >(\n\t\t\t\t\t\t`ctas/${ editorId }?context=edit`\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! entity ) {\n\t\t\t\t\t\tdispatch.createErrorNotice(\n\t\t\t\t\t\t\t__( 'Call to action not found', 'popup-maker' )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: START_EDITING_RECORD,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tid: editorId,\n\t\t\t\t\t\t\teditableEntity: editableEntity( entity ),\n\t\t\t\t\t\t\tsetEditorId: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: EDITOR_CHANGE_ID,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\teditorId,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage = getErrorMessage( error );\n\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error( 'Failed to change editor ID:', error );\n\n\t\t\t\tdispatch.createErrorNotice( errorMessage, {\n\t\t\t\t\tid: 'call-to-action-editor-error',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n};\n\n/*****************************************************\n * SECTION: Notice actions\n *****************************************************/\nconst noticeActions = {\n\t/**\n\t * Create a notice.\n\t *\n\t * @param {Notice[ 'status' ]} status The notice status.\n\t * @param {Notice[ 'content' ]} content The notice content.\n\t * @param {Notice} options The notice options.\n\t * @return {Promise<void>}\n\t */\n\tcreateNotice:\n\t\t(\n\t\t\t/**\n\t\t\t * Notice status.\n\t\t\t */\n\t\t\tstatus: Notice[ 'status' ] = 'info',\n\t\t\t/**\n\t\t\t * Notice content.\n\t\t\t */\n\t\t\tcontent: Notice[ 'content' ] = '',\n\t\t\t/**\n\t\t\t * Notice options.\n\t\t\t */\n\t\t\toptions?: Notice\n\t\t): ThunkAction =>\n\t\tasync ( { registry } ) => {\n\t\t\tregistry.dispatch( noticesStore ).createNotice( status, content, {\n\t\t\t\t...options,\n\t\t\t\tcontext: NOTICE_CONTEXT,\n\t\t\t} );\n\t\t},\n\n\t/**\n\t * Create an error notice.\n\t *\n\t * @param {string} content The notice content.\n\t * @param {Omit<Notice, 'status' | 'content'>} options The notice options.\n\t * @return {Promise<void>}\n\t */\n\tcreateErrorNotice:\n\t\t(\n\t\t\t/**\n\t\t\t * Notice content.\n\t\t\t */\n\t\t\tcontent: string,\n\t\t\t/**\n\t\t\t * Notice options.\n\t\t\t */\n\t\t\toptions?: Omit< Notice, 'status' | 'content' >\n\t\t): ThunkAction =>\n\t\tasync ( { registry } ) => {\n\t\t\tregistry.dispatch( noticesStore ).createNotice( 'error', content, {\n\t\t\t\t...options,\n\t\t\t\tcontext: NOTICE_CONTEXT,\n\t\t\t} );\n\t\t},\n\n\t/**\n\t * Create a success notice.\n\t *\n\t * @param {string} content The notice content.\n\t * @param {Omit<Notice, 'status' | 'content'>} options The notice options.\n\t * @return {Promise<void>}\n\t */\n\tcreateSuccessNotice:\n\t\t(\n\t\t\t/**\n\t\t\t * Notice content.\n\t\t\t */\n\t\t\tcontent: string,\n\t\t\t/**\n\t\t\t * Notice options.\n\t\t\t */\n\t\t\toptions?: Omit< Notice, 'status' | 'content' >\n\t\t): ThunkAction =>\n\t\tasync ( { registry } ) => {\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.createNotice( 'success', content, {\n\t\t\t\t\t...options,\n\t\t\t\t\tcontext: NOTICE_CONTEXT,\n\t\t\t\t} );\n\t\t},\n\n\t/**\n\t * Remove a notice for a given context.\n\t *\n\t * @param {string} id The notice ID.\n\t * @return {Promise<void>}\n\t */\n\tremoveNotice:\n\t\t( id: string ): ThunkAction =>\n\t\tasync ( { registry } ) => {\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.removeNotice( id, NOTICE_CONTEXT );\n\t\t},\n\n\t/**\n\t * Remove all notices for a given context.\n\t *\n\t * @param {string[]} ids The notice IDs.\n\t * @return {Promise<void>}\n\t */\n\tremoveAllNotices:\n\t\t( ids?: string[] ): ThunkAction =>\n\t\tasync ( { registry } ) => {\n\t\t\tif ( ids ) {\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.removeNotices( ids, NOTICE_CONTEXT );\n\t\t\t} else {\n\t\t\t\tconst notices = registry\n\t\t\t\t\t.select( noticesStore )\n\t\t\t\t\t.getNotices( NOTICE_CONTEXT );\n\t\t\t\tconst noticeIds = notices.map( ( notice ) => notice.id );\n\t\t\t\tregistry\n\t\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t\t.removeNotices( noticeIds, NOTICE_CONTEXT );\n\t\t\t}\n\t\t},\n};\n\n/*****************************************************\n * SECTION: Resolution actions\n *****************************************************/\nconst resolutionActions = {\n\t/**\n\t * Change status of a dispatch action request.\n\t *\n\t * @param {CallToActionsStore[ 'ActionNames' ]} actionName Action name to change status of.\n\t * @param {Statuses} status New status.\n\t * @param {string|undefined} message Optional error message.\n\t * @return {Object} Action object.\n\t */\n\tchangeActionStatus:\n\t\t(\n\t\t\tactionName: string,\n\t\t\tstatus: DispatchStatus,\n\t\t\tmessage?: string | { message: string; [ key: string ]: any }\n\t\t): ThunkAction =>\n\t\t( { dispatch } ) => {\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tpayload: {\n\t\t\t\t\tactionName,\n\t\t\t\t\tstatus,\n\t\t\t\t\tmessage,\n\t\t\t\t},\n\t\t\t} );\n\t\t},\n\n\t/**\n\t * Start resolution for an entity.\n\t */\n\t// startResolution:\n\t// \t( id: number | string, operation: string = 'fetch' ) =>\n\t// \t( { dispatch } ) => {\n\t// \t\tconsole.log( 'startResolution', id, operation );\n\t// \t\tdispatch( {\n\t// \t\t\ttype: START_RESOLUTION,\n\t// \t\t\tpayload: {\n\t// \t\t\t\tid,\n\t// \t\t\t\toperation,\n\t// \t\t\t},\n\t// \t\t} );\n\t// \t},\n\n\t/**\n\t * Finish resolution for an entity.\n\t */\n\t// finishResolution:\n\t// \t( id: number | string, operation: string = 'fetch' ) =>\n\t// \t( { dispatch } ) => {\n\t// \t\tdispatch( {\n\t// \t\t\ttype: FINISH_RESOLUTION,\n\t// \t\t\tpayload: {\n\t// \t\t\t\tid,\n\t// \t\t\t\toperation,\n\t// \t\t\t},\n\t// \t\t} );\n\t// \t},\n\n\t/**\n\t * Fail resolution for an entity.\n\t */\n\t// failResolution:\n\t// \t(\n\t// \t\tid: number | string,\n\t// \t\terror: string,\n\t// \t\toperation: string = 'fetch',\n\t// \t\textra?: Record< string, any >\n\t// \t): ThunkAction =>\n\t// \t( { dispatch } ) => {\n\t// \t\tdispatch( {\n\t// \t\t\ttype: FAIL_RESOLUTION,\n\t// \t\t\tpayload: {\n\t// \t\t\t\tid,\n\t// \t\t\t\terror,\n\t// \t\t\t\toperation,\n\t// \t\t\t\textra,\n\t// \t\t\t},\n\t// \t\t} );\n\t// \t},\n\n\t/**\n\t * Invalidate resolution for an entity.\n\t *\n\t * @param {number | string} id The entity ID.\n\t * @return {Promise<void>}\n\t */\n\tinvalidateResolution:\n\t\t( id: number | string ): ThunkAction =>\n\t\t( { dispatch } ) => {\n\t\t\tdispatch( {\n\t\t\t\ttype: INVALIDATE_RESOLUTION,\n\t\t\t\tpayload: {\n\t\t\t\t\tid,\n\t\t\t\t},\n\t\t\t} );\n\t\t},\n};\n\nconst actions = {\n\t// Entity actions\n\t...entityActions,\n\t// Notice actions\n\t...noticeActions,\n\t// Editor actions\n\t...editorActions,\n\t// Resolution state actions\n\t...resolutionActions,\n};\n\nexport default actions;\n","import type { State } from './reducer';\nimport type { EditableCta } from './types';\n\nexport const STORE_NAME = 'popup-maker/call-to-actions';\nexport const NOTICE_CONTEXT = 'pum-cta-editor';\n\n// Entity actions.\nexport const RECEIVE_RECORD = 'RECEIVE_RECORD';\nexport const RECEIVE_RECORDS = 'RECEIVE_RECORDS';\nexport const RECEIVE_QUERY_RECORDS = 'RECEIVE_QUERY_RECORDS';\nexport const RECEIVE_ERROR = 'RECEIVE_ERROR';\nexport const PURGE_RECORD = 'PURGE_RECORD';\nexport const PURGE_RECORDS = 'PURGE_RECORDS';\n\n// Editor actions.\nexport const EDITOR_CHANGE_ID = 'EDITOR_CHANGE_ID';\nexport const EDIT_RECORD = 'EDIT_RECORD';\nexport const START_EDITING_RECORD = 'START_EDITING_RECORD';\nexport const SAVE_EDITED_RECORD = 'SAVE_EDITED_RECORD';\nexport const UNDO_EDIT_RECORD = 'UNDO_EDIT_RECORD';\nexport const REDO_EDIT_RECORD = 'REDO_EDIT_RECORD';\nexport const RESET_EDIT_RECORD = 'RESET_EDIT_RECORD';\n\n// Resolution actions.\nexport const CHANGE_ACTION_STATUS = 'CHANGE_ACTION_STATUS';\n// Resolution actions.\nexport const START_RESOLUTION = 'START_RESOLUTION';\nexport const FINISH_RESOLUTION = 'FINISH_RESOLUTION';\nexport const FAIL_RESOLUTION = 'FAIL_RESOLUTION';\nexport const INVALIDATE_RESOLUTION = 'INVALIDATE_RESOLUTION';\n\nexport const ACTION_TYPES: {\n\t// Entity actions\n\tRECEIVE_RECORD: typeof RECEIVE_RECORD;\n\tRECEIVE_RECORDS: typeof RECEIVE_RECORDS;\n\tRECEIVE_QUERY_RECORDS: typeof RECEIVE_QUERY_RECORDS;\n\tRECEIVE_ERROR: typeof RECEIVE_ERROR;\n\tPURGE_RECORD: typeof PURGE_RECORD;\n\tPURGE_RECORDS: typeof PURGE_RECORDS;\n\n\t// Editor actions\n\tEDITOR_CHANGE_ID: typeof EDITOR_CHANGE_ID;\n\tEDIT_RECORD: typeof EDIT_RECORD;\n\tSTART_EDITING_RECORD: typeof START_EDITING_RECORD;\n\tSAVE_EDITED_RECORD: typeof SAVE_EDITED_RECORD;\n\tUNDO_EDIT_RECORD: typeof UNDO_EDIT_RECORD;\n\tREDO_EDIT_RECORD: typeof REDO_EDIT_RECORD;\n\tRESET_EDIT_RECORD: typeof RESET_EDIT_RECORD;\n\t// Resolution actions\n\tCHANGE_ACTION_STATUS: typeof CHANGE_ACTION_STATUS;\n\tSTART_RESOLUTION: typeof START_RESOLUTION;\n\tFINISH_RESOLUTION: typeof FINISH_RESOLUTION;\n\tFAIL_RESOLUTION: typeof FAIL_RESOLUTION;\n\tINVALIDATE_RESOLUTION: typeof INVALIDATE_RESOLUTION;\n} = {\n\tRECEIVE_RECORD,\n\tRECEIVE_RECORDS,\n\tRECEIVE_QUERY_RECORDS,\n\tRECEIVE_ERROR,\n\tPURGE_RECORD,\n\tPURGE_RECORDS,\n\tEDITOR_CHANGE_ID,\n\tEDIT_RECORD,\n\tSTART_EDITING_RECORD,\n\tSAVE_EDITED_RECORD,\n\tUNDO_EDIT_RECORD,\n\tREDO_EDIT_RECORD,\n\tRESET_EDIT_RECORD,\n\tCHANGE_ACTION_STATUS,\n\tSTART_RESOLUTION,\n\tFINISH_RESOLUTION,\n\tFAIL_RESOLUTION,\n\tINVALIDATE_RESOLUTION,\n};\n\n/**\n * Initial state for the call to actions store.\n */\nexport const initialState: State = {\n\tbyId: {},\n\tallIds: [],\n\tqueries: {},\n\teditorId: undefined,\n\teditedEntities: {},\n\teditHistory: {},\n\teditHistoryIndex: {},\n\tresolutionState: {},\n\tnotices: {},\n\terrors: {\n\t\tglobal: null,\n\t\tbyId: {},\n\t},\n};\n\n/**\n * Default values for a new notice.\n */\nexport const noticeDefaults = {\n\tid: '',\n\tmessage: '',\n\ttype: 'info',\n\tisDismissible: true,\n};\n\n/**\n * Default values for a new call to action.\n *\n * This should be kept in sync with the settings in the PHP code.\n *\n * @see /classes/Models/CallToAction.php\n * @see /includes/namespaced/default-values.php\n */\nexport const defaultValues: EditableCta = {\n\tid: 0,\n\tuuid: '',\n\tslug: '',\n\ttitle: '',\n\tcontent: '',\n\texcerpt: '',\n\tstatus: 'draft',\n\tsettings: {\n\t\ttype: 'link',\n\t\turl: '',\n\t},\n\t// Required Post fields\n\tdate: null,\n\tdate_gmt: null,\n\tguid: '',\n\tlink: '',\n\tmodified: '',\n\tmodified_gmt: '',\n\ttype: 'pum_cta',\n\tauthor: 0,\n\tgenerated_slug: '',\n\tpermalink_template: '',\n\tpassword: '',\n\tfeatured_media: 0,\n\tcomment_status: 'open',\n\tping_status: 'open',\n\tformat: 'standard',\n\tmeta: {},\n\tsticky: false,\n\ttemplate: '',\n\tcategories: [],\n\ttags: [],\n};\n","import type {\n\tCurriedSelectorsOf,\n\tDispatchReturn,\n} from '@wordpress/data/src/types';\n\nexport { default as callToActionStore } from './store';\nexport * from './validation';\n\nexport {\n\tdefaultValues as defaultCtaValues,\n\tSTORE_NAME as CALL_TO_ACTION_STORE,\n\tNOTICE_CONTEXT,\n} from './constants';\n\nexport type * from './types/posttype';\n\nimport type { StoreDescriptor, StoreState } from './types/store';\n\ntype Selectors = CurriedSelectorsOf< StoreDescriptor >;\ntype Actions = DispatchReturn< StoreDescriptor >;\n\nexport type {\n\tStoreDescriptor as CallToActionStore,\n\tStoreState as CallToActionStoreState,\n\tSelectors as CallToActionStoreSelectors,\n\tActions as CallToActionStoreActions,\n};\n","import { ACTION_TYPES, initialState } from './constants';\n\nimport type { DispatchStatuses, ResolutionState } from '../constants';\nimport type { EditorId, Notice, GetRecordsHttpQuery } from '../types';\nimport type { CallToAction, EditableCta } from './types';\nimport type { Operation } from 'fast-json-patch';\n\nconst {\n\tRECEIVE_RECORD,\n\tRECEIVE_RECORDS,\n\tRECEIVE_QUERY_RECORDS,\n\tRECEIVE_ERROR,\n\tPURGE_RECORD,\n\tPURGE_RECORDS,\n\tEDITOR_CHANGE_ID,\n\tEDIT_RECORD,\n\tSTART_EDITING_RECORD,\n\tSAVE_EDITED_RECORD,\n\tUNDO_EDIT_RECORD,\n\tREDO_EDIT_RECORD,\n\tRESET_EDIT_RECORD,\n\tCHANGE_ACTION_STATUS,\n\tINVALIDATE_RESOLUTION,\n} = ACTION_TYPES;\n\n/**\n * The shape of the state for the call to actions store.\n */\nexport type State = {\n\t/**\n\t * The call to actions by ID.\n\t */\n\tbyId: Record< number, CallToAction< 'edit' > >;\n\n\t/**\n\t * The IDs of all the call to actions.\n\t */\n\tallIds: number[];\n\n\t/**\n\t * The queries for the call to actions.\n\t */\n\tqueries?: Record< string, number[] >;\n\n\t/**\n\t * The ID of the editor.\n\t */\n\teditorId: number | undefined;\n\n\t/**\n\t * The edited entities.\n\t */\n\teditedEntities: Record< number, EditableCta >;\n\n\t/**\n\t * The edit history for each call to action.\n\t *\n\t * Each edit is an object with the same shape as the editable entity, but without the `id` property.\n\t */\n\teditHistory: Record< number, Operation[][] >;\n\n\t/**\n\t * The index of the current edit for each call to action.\n\t */\n\teditHistoryIndex: Record< number, number >;\n\n\t/**\n\t * The resolution state for each operation.\n\t */\n\tresolutionState: Record< string | number, ResolutionState >;\n\n\t/**\n\t * The notices for the call to actions.\n\t */\n\tnotices: Record< string, Notice >;\n\n\t/**\n\t * The errors for the call to actions.\n\t */\n\terrors: {\n\t\tglobal: string | null;\n\t\tbyId: { [ id: number ]: string };\n\t};\n};\n\ntype BaseAction = {\n\ttype: keyof typeof ACTION_TYPES;\n\tpayload?: Record< string, any >;\n};\n\nexport type ReceiveRecordAction = BaseAction & {\n\ttype: typeof RECEIVE_RECORD;\n\tpayload: {\n\t\trecord: CallToAction< 'edit' >;\n\t};\n};\n\nexport type ReceiveRecordsAction = BaseAction & {\n\ttype: typeof RECEIVE_RECORDS;\n\tpayload: {\n\t\trecords: CallToAction< 'edit' >[];\n\t};\n};\n\nexport type ReceiveErrorAction = BaseAction & {\n\ttype: typeof RECEIVE_ERROR;\n\tpayload: {\n\t\tid?: number;\n\t\terror: string;\n\t};\n};\n\nexport type ReceiveQueryRecordsAction = BaseAction & {\n\ttype: typeof RECEIVE_QUERY_RECORDS;\n\tpayload: {\n\t\tquery: GetRecordsHttpQuery;\n\t\trecords: CallToAction< 'edit' >[];\n\t};\n};\n\nexport type PurgeRecordAction = BaseAction & {\n\ttype: typeof PURGE_RECORD;\n\tpayload: {\n\t\tid: CallToAction[ 'id' ];\n\t};\n};\n\nexport type PurgeRecordsAction = BaseAction & {\n\ttype: typeof PURGE_RECORDS;\n\tpayload: {\n\t\tids: CallToAction[ 'id' ][];\n\t};\n};\n\nexport type ChangeEditorAction = BaseAction & {\n\ttype: typeof EDITOR_CHANGE_ID;\n\tpayload: {\n\t\teditorId: EditorId;\n\t};\n};\n\nexport type StartEditingRecordAction = BaseAction & {\n\ttype: typeof START_EDITING_RECORD;\n\tpayload: {\n\t\tid: number;\n\t\teditableEntity: EditableCta;\n\t\tsetEditorId: boolean;\n\t};\n};\n\nexport type EditRecordAction = BaseAction & {\n\ttype: typeof EDIT_RECORD;\n\tpayload: {\n\t\tid: number;\n\t\tedits: Operation[];\n\t};\n};\n\nexport type UndoEditRecordAction = BaseAction & {\n\ttype: typeof UNDO_EDIT_RECORD;\n\tpayload: {\n\t\tid: number;\n\t\tsteps: number;\n\t};\n};\n\nexport type RedoEditRecordAction = BaseAction & {\n\ttype: typeof REDO_EDIT_RECORD;\n\tpayload: {\n\t\tid: number;\n\t\tsteps: number;\n\t};\n};\n\nexport type ResetEditRecordAction = BaseAction & {\n\ttype: typeof RESET_EDIT_RECORD;\n\tpayload: {\n\t\tid: number;\n\t};\n};\n\nexport type SaveEditedRecordAction = BaseAction & {\n\ttype: typeof SAVE_EDITED_RECORD;\n\tpayload: {\n\t\tid: number;\n\t\thistoryIndex: number;\n\t\teditedEntity: EditableCta;\n\t};\n};\n\nexport type ChangeActionStatusAction = BaseAction & {\n\ttype: typeof CHANGE_ACTION_STATUS;\n\tpayload: {\n\t\tactionName: string;\n\t\tstatus: DispatchStatuses;\n\t\tmessage?: string;\n\t};\n};\n\n// export type StartResolutionAction = BaseAction & {\n// \ttype: typeof START_RESOLUTION;\n// \tpayload: {\n// \t\tid: number | string;\n// \t\toperation: string;\n// \t};\n// };\n\n// export type FinishResolutionAction = BaseAction & {\n// \ttype: typeof FINISH_RESOLUTION;\n// \tpayload: {\n// \t\tid: number | string;\n// \t\toperation: string;\n// \t};\n// };\n\n// export type FailResolutionAction = BaseAction & {\n// \ttype: typeof FAIL_RESOLUTION;\n// \tpayload: {\n// \t\tid: number | string;\n// \t\toperation: string;\n// \t\terror: string;\n// \t\textra?: Record< string, any >;\n// \t};\n// };\n\nexport type InvalidateResolutionAction = BaseAction & {\n\ttype: typeof INVALIDATE_RESOLUTION;\n\tpayload: {\n\t\tid: number | string;\n\t\toperation: string;\n\t};\n};\n\nexport type ReducerAction =\n\t| ReceiveRecordAction\n\t| ReceiveRecordsAction\n\t| ReceiveQueryRecordsAction\n\t| ReceiveErrorAction\n\t| PurgeRecordAction\n\t| PurgeRecordsAction\n\t| ChangeEditorAction\n\t| StartEditingRecordAction\n\t| EditRecordAction\n\t| UndoEditRecordAction\n\t| RedoEditRecordAction\n\t| ResetEditRecordAction\n\t| SaveEditedRecordAction\n\t| ChangeActionStatusAction\n\t| InvalidateResolutionAction;\n\nexport const reducer = (\n\tstate = initialState,\n\taction: ReducerAction\n): State => {\n\tswitch ( action.type ) {\n\t\tcase RECEIVE_RECORD: {\n\t\t\tconst { record } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tbyId: {\n\t\t\t\t\t...state.byId,\n\t\t\t\t\t[ record.id ]: record,\n\t\t\t\t},\n\t\t\t\tallIds: state.allIds.includes( record.id )\n\t\t\t\t\t? state.allIds\n\t\t\t\t\t: [ ...state.allIds, record.id ],\n\t\t\t};\n\t\t}\n\n\t\tcase RECEIVE_RECORDS:\n\t\tcase RECEIVE_QUERY_RECORDS: {\n\t\t\tconst { records, query = false } = action.payload;\n\n\t\t\t// Add the new records to the byId object.\n\t\t\tconst byId = records.reduce<\n\t\t\t\tRecord< number, CallToAction< 'edit' > >\n\t\t\t>(\n\t\t\t\t( acc, record ) => ( {\n\t\t\t\t\t...acc,\n\t\t\t\t\t[ record.id ]: record,\n\t\t\t\t} ),\n\t\t\t\tstate.byId\n\t\t\t);\n\n\t\t\t// Add the new records to the allIds array.\n\t\t\tconst allIds = Array.from(\n\t\t\t\tnew Set( [ ...state.allIds, ...records.map( ( r ) => r.id ) ] )\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tallIds,\n\t\t\t\tbyId,\n\t\t\t\tqueries: query\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...state.queries,\n\t\t\t\t\t\t\t[ JSON.stringify( query ) ]: records.map(\n\t\t\t\t\t\t\t\t( r ) => r.id\n\t\t\t\t\t\t\t),\n\t\t\t\t\t }\n\t\t\t\t\t: state.queries,\n\t\t\t};\n\t\t}\n\n\t\tcase RECEIVE_ERROR: {\n\t\t\tconst { error, id = false } = action.payload;\n\t\t\t// Ensure existing errors state or initialize if undefined\n\t\t\tconst prevErrors = state.errors || { global: null, byId: {} };\n\t\t\tconst newById = { ...prevErrors.byId };\n\t\t\tif ( id ) {\n\t\t\t\tnewById[ id ] = error;\n\t\t\t} else {\n\t\t\t\t// No id provided, set the global error\n\t\t\t\tprevErrors.global = error;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\terrors: {\n\t\t\t\t\tglobal: id ? prevErrors.global : error,\n\t\t\t\t\tbyId: newById,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase PURGE_RECORDS:\n\t\tcase PURGE_RECORD: {\n\t\t\tconst { ids = [], id = null } = action.payload;\n\n\t\t\tif ( id && id > 0 ) {\n\t\t\t\tids.push( id );\n\t\t\t}\n\n\t\t\tif ( ids.length === 0 ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\t// Remove the entity from the allIds array.\n\t\t\tconst allIds = state.allIds.filter(\n\t\t\t\t( _id ) => ! ids.includes( _id )\n\t\t\t);\n\n\t\t\t// Remove the entity from the byId object.\n\t\t\tconst byId = Object.fromEntries(\n\t\t\t\tObject.entries( state.byId ).filter(\n\t\t\t\t\t( [ _id ] ) => ! ids.includes( _id )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Remove the entity from the editedEntities object.\n\t\t\tconst editedEntities = Object.fromEntries(\n\t\t\t\tObject.entries( state.editedEntities ).filter(\n\t\t\t\t\t( [ _id ] ) => ! ids.includes( _id )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Remove the entity from the editHistory object.\n\t\t\tconst editHistory = Object.fromEntries(\n\t\t\t\tObject.entries( state.editHistory ).filter(\n\t\t\t\t\t( [ _id ] ) => ! ids.includes( _id )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Remove the entity from the editHistoryIndex object.\n\t\t\tconst editHistoryIndex = Object.fromEntries(\n\t\t\t\tObject.entries( state.editHistoryIndex ).filter(\n\t\t\t\t\t( [ _id ] ) => ! ids.includes( _id )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tbyId,\n\t\t\t\tallIds,\n\t\t\t\teditedEntities,\n\t\t\t\teditHistory,\n\t\t\t\teditHistoryIndex,\n\t\t\t};\n\t\t}\n\n\t\tcase EDITOR_CHANGE_ID: {\n\t\t\tconst { editorId } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditorId,\n\t\t\t};\n\t\t}\n\n\t\tcase START_EDITING_RECORD: {\n\t\t\tconst { id, editableEntity, setEditorId } = action.payload;\n\n\t\t\tconst newState = {\n\t\t\t\t...state,\n\t\t\t\teditedEntities: {\n\t\t\t\t\t...state.editedEntities,\n\t\t\t\t\t[ id ]: editableEntity,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tif ( ! setEditorId ) {\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...newState,\n\t\t\t\teditorId: id,\n\t\t\t};\n\t\t}\n\n\t\tcase EDIT_RECORD: {\n\t\t\tconst { id, edits } = action.payload;\n\n\t\t\tconst editHistory = state.editHistory[ id ] ?? [];\n\t\t\tconst currentIndex = state.editHistoryIndex[ id ] ?? -1;\n\n\t\t\t// If we're not at the end of history, we need to clear future edits\n\t\t\tconst newEditHistory =\n\t\t\t\tcurrentIndex < editHistory.length - 1\n\t\t\t\t\t? editHistory.slice( 0, currentIndex + 1 )\n\t\t\t\t\t: editHistory;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditHistory: {\n\t\t\t\t\t...state.editHistory,\n\t\t\t\t\t[ id ]: [ ...newEditHistory, edits ],\n\t\t\t\t},\n\t\t\t\teditHistoryIndex: {\n\t\t\t\t\t...state.editHistoryIndex,\n\t\t\t\t\t[ id ]: newEditHistory.length, // Points to the new edit\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase UNDO_EDIT_RECORD: {\n\t\t\tconst { id, steps = 1 } = action.payload;\n\n\t\t\tconst currentIndex = state.editHistoryIndex[ id ] ?? -1;\n\t\t\tconst newIndex = Math.max( -1, currentIndex - steps );\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditHistoryIndex: {\n\t\t\t\t\t...state.editHistoryIndex,\n\t\t\t\t\t[ id ]: newIndex,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase REDO_EDIT_RECORD: {\n\t\t\tconst { id, steps } = action.payload;\n\n\t\t\tconst currentIndex = state.editHistoryIndex[ id ] ?? -1;\n\t\t\t// Check if we have a history and if there are edits to redo\n\t\t\tconst maxIndex = ( state.editHistory[ id ]?.length ?? 0 ) - 1;\n\t\t\tconst newIndex =\n\t\t\t\tmaxIndex >= 0\n\t\t\t\t\t? Math.min( maxIndex, currentIndex + steps )\n\t\t\t\t\t: currentIndex;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditHistoryIndex: {\n\t\t\t\t\t...state.editHistoryIndex,\n\t\t\t\t\t[ id ]: newIndex,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase SAVE_EDITED_RECORD: {\n\t\t\tconst { id, historyIndex, editedEntity } = action.payload;\n\n\t\t\t// Get all edits up to current index\n\t\t\tconst remainingEdits = state.editHistory[ id ].slice(\n\t\t\t\thistoryIndex + 1\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditedEntities: {\n\t\t\t\t\t...state.editedEntities,\n\t\t\t\t\t[ id ]: editedEntity,\n\t\t\t\t},\n\t\t\t\teditHistory: {\n\t\t\t\t\t...state.editHistory,\n\t\t\t\t\t[ id ]: remainingEdits,\n\t\t\t\t},\n\t\t\t\teditHistoryIndex: {\n\t\t\t\t\t...state.editHistoryIndex,\n\t\t\t\t\t[ id ]: -1,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase RESET_EDIT_RECORD: {\n\t\t\tconst { id } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t// Remove all edit history for this record.\n\t\t\t\teditedEntities: Object.fromEntries(\n\t\t\t\t\tObject.entries( state.editedEntities ).filter(\n\t\t\t\t\t\t( [ _id ] ) => Number( _id ) !== id\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\teditHistory: Object.fromEntries(\n\t\t\t\t\tObject.entries( state.editHistory ).filter(\n\t\t\t\t\t\t( [ _id ] ) => Number( _id ) !== id\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\teditHistoryIndex: Object.fromEntries(\n\t\t\t\t\tObject.entries( state.editHistoryIndex ).filter(\n\t\t\t\t\t\t( [ _id ] ) => Number( _id ) !== id\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase CHANGE_ACTION_STATUS: {\n\t\t\tconst { actionName, status, message } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tresolutionState: {\n\t\t\t\t\t...state.resolutionState,\n\t\t\t\t\t[ actionName ]: {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\terror: message,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\t// case START_RESOLUTION: {\n\t\t// \tconst { id, operation } = action.payload;\n\n\t\t// \treturn {\n\t\t// \t\t...state,\n\t\t// \t\tresolutionState: {\n\t\t// \t\t\t...state.resolutionState,\n\t\t// \t\t\t[ operation ]: {\n\t\t// \t\t\t\t...state.resolutionState?.[ operation ],\n\t\t// \t\t\t\t[ id ]: {\n\t\t// \t\t\t\t\tstatus: DispatchStatus.Resolving,\n\t\t// \t\t\t\t\ttimestamp: Date.now(),\n\t\t// \t\t\t\t},\n\t\t// \t\t\t},\n\t\t// \t\t},\n\t\t// \t};\n\t\t// }\n\n\t\t// case FINISH_RESOLUTION: {\n\t\t// \tconst { id, operation } = action.payload;\n\n\t\t// \treturn {\n\t\t// \t\t...state,\n\t\t// \t\tresolutionState: {\n\t\t// \t\t\t...state.resolutionState,\n\t\t// \t\t\t[ operation ]: {\n\t\t// \t\t\t\t...state.resolutionState?.[ operation ],\n\t\t// \t\t\t\t[ id ]: {\n\t\t// \t\t\t\t\tstatus: DispatchStatus.Success,\n\t\t// \t\t\t\t\ttimestamp: Date.now(),\n\t\t// \t\t\t\t},\n\t\t// \t\t\t},\n\t\t// \t\t},\n\t\t// \t};\n\t\t// }\n\n\t\t// case FAIL_RESOLUTION: {\n\t\t// \tconst { id, operation, error, extra } = action.payload;\n\n\t\t// \treturn {\n\t\t// \t\t...state,\n\t\t// \t\tresolutionState: {\n\t\t// \t\t\t...state.resolutionState,\n\t\t// \t\t\t[ operation ]: {\n\t\t// \t\t\t\t...state.resolutionState?.[ operation ],\n\t\t// \t\t\t\t[ id ]: {\n\t\t// \t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t// \t\t\t\t\terror: error,\n\t\t// \t\t\t\t\textra: extra,\n\t\t// \t\t\t\t\ttimestamp: Date.now(),\n\t\t// \t\t\t\t},\n\t\t// \t\t\t},\n\t\t// \t\t},\n\t\t// \t};\n\t\t// }\n\n\t\tcase INVALIDATE_RESOLUTION: {\n\t\t\tconst { id, operation } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tresolutionState: {\n\t\t\t\t\t...state.resolutionState,\n\t\t\t\t\t[ operation ]: {\n\t\t\t\t\t\t...state.resolutionState?.[ operation ],\n\t\t\t\t\t\t[ id ]: undefined,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport default reducer;\n","import { appendUrlParams, fetchFromApi } from '../utils';\nimport { RECEIVE_RECORDS, RECEIVE_RECORD, RECEIVE_ERROR } from './constants';\nimport type { ReducerAction } from './reducer';\n\nimport type { CallToAction, ThunkAction } from './types';\n\nconst entityResolvers = {\n\tgetCallToActions:\n\t\t(): ThunkAction =>\n\t\tasync ( { dispatch } ) => {\n\t\t\ttry {\n\t\t\t\tconst urlParams = {\n\t\t\t\t\tstatus: [ 'any', 'trash', 'auto-draft' ],\n\t\t\t\t\tper_page: 100,\n\t\t\t\t\tcontext: 'edit',\n\t\t\t\t};\n\n\t\t\t\tconst url = appendUrlParams( 'ctas', urlParams );\n\n\t\t\t\tconst results = await fetchFromApi<\n\t\t\t\t\t( CallToAction< 'edit' > & { _links: any } )[]\n\t\t\t\t>( url, {\n\t\t\t\t\tmethod: 'GET',\n\t\t\t\t} );\n\n\t\t\t\tif ( results.length ) {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: RECEIVE_RECORDS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\trecords: results.map(\n\t\t\t\t\t\t\t\t// Remove _links from the API record.\n\t\t\t\t\t\t\t\t( { _links, ...record } ) => record\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t} as ReducerAction );\n\t\t\t\t}\n\t\t\t} catch ( error: any ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error( error );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: RECEIVE_ERROR,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\terror: error.message,\n\t\t\t\t\t},\n\t\t\t\t} as ReducerAction );\n\t\t\t}\n\t\t},\n\n\tgetCallToAction:\n\t\t( id: number ): ThunkAction =>\n\t\tasync ( { dispatch } ) => {\n\t\t\ttry {\n\t\t\t\tconst url = appendUrlParams( `ctas/${ id }`, {\n\t\t\t\t\tcontext: 'edit',\n\t\t\t\t} );\n\n\t\t\t\tconst { _links, ...record } = await fetchFromApi<\n\t\t\t\t\tCallToAction< 'edit' > & { _links: any }\n\t\t\t\t>( url, {\n\t\t\t\t\tmethod: 'GET',\n\t\t\t\t} );\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: RECEIVE_RECORD,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\trecord,\n\t\t\t\t\t},\n\t\t\t\t} as ReducerAction );\n\t\t\t} catch ( error: any ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error( error );\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: RECEIVE_ERROR,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\terror: error.message,\n\t\t\t\t\t\tid,\n\t\t\t\t\t},\n\t\t\t\t} as ReducerAction );\n\t\t\t}\n\t\t},\n};\n\nconst resolvers = {\n\t...entityResolvers,\n};\n\nexport default resolvers;\n","import { applyPatch } from 'fast-json-patch';\n\nimport { applyFilters } from '@wordpress/hooks';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { createRegistrySelector, createSelector } from '@wordpress/data';\n\nimport { DispatchStatus } from '../constants';\nimport { defaultValues, NOTICE_CONTEXT } from './constants';\n\nimport type { Updatable } from '@wordpress/core-data';\nimport type { Notice } from '../types';\nimport type { State } from './reducer';\nimport type { CallToAction } from './types';\n\n/*****************************************************\n * SECTION: Entity selectors\n *****************************************************/\nconst entitySelectors = {\n\t/**\n\t * Get all entities.\n\t *\n\t * @return {CallToAction[]} All entities.\n\t */\n\tgetCallToActions: createSelector(\n\t\t( state: State ) => state.allIds.map( ( id ) => state.byId[ id ] ),\n\t\t( state: State ) => [ state.allIds, Object.keys( state.byId ) ]\n\t),\n\n\t/**\n\t * Get a single entity.\n\t *\n\t * @param {number} id - The ID of the entity to get.\n\t *\n\t * @return {CallToAction} The entity.\n\t */\n\tgetCallToAction: createSelector(\n\t\t( state: State, id: number ) => {\n\t\t\tconst record = state?.byId?.[ id ];\n\t\t\treturn record;\n\t\t},\n\t\t( state: State, id: number ) => [ state, id ]\n\t),\n\n\t/**\n\t * Get the error for a specific entity.\n\t */\n\tgetFetchError: createSelector(\n\t\t( state: State, id?: number ) => {\n\t\t\tif ( typeof id === 'number' ) {\n\t\t\t\treturn state.errors.byId[ id ];\n\t\t\t}\n\t\t\treturn state.errors.global;\n\t\t},\n\t\t( state: State, id: number | string ) => [ state.errors, id ]\n\t),\n\n\t/**\n\t * Get filtered entities.\n\t *\n\t * @param {State} state The state.\n\t * @param {Function} predicate The predicate to filter the entities.\n\t * @param {boolean} maintainOrder Whether to maintain the order of the entities.\n\t *\n\t * @return {CallToAction< 'edit' >[]} The filtered entities.\n\t */\n\tgetFiltered: (\n\t\tstate: State,\n\t\tpredicate: ( item: CallToAction< 'edit' > ) => boolean,\n\t\tmaintainOrder: boolean = false\n\t) => {\n\t\tif ( ! maintainOrder ) {\n\t\t\treturn state.allIds\n\t\t\t\t.map( ( id ) => state.byId[ id ] )\n\t\t\t\t.filter( predicate );\n\t\t}\n\n\t\treturn entitySelectors\n\t\t\t.getFilteredIds( state, predicate )\n\t\t\t.map( ( id ) => state.byId[ id ] );\n\t},\n\n\t/**\n\t * Get filtered entity IDs.\n\t *\n\t * @param {State} state The state.\n\t * @param {Function} predicate The predicate to filter the entities.\n\t *\n\t * @return {number[]} The filtered entity IDs.\n\t */\n\tgetFilteredIds: (\n\t\tstate: State,\n\t\tpredicate: ( item: CallToAction< 'edit' > ) => boolean\n\t) => state.allIds.filter( ( id ) => predicate( state.byId[ id ] ) ),\n};\n\n/*****************************************************\n * SECTION: Editor selectors\n *****************************************************/\nconst editorSelectors = {\n\t/**\n\t * Get the editor ID.\n\t *\n\t * @return {number | undefined} The editor ID.\n\t */\n\tgetEditorId: createSelector(\n\t\t( state: State ) => state?.editorId,\n\t\t( state: State ) => [ state.editorId ]\n\t),\n\n\t/**\n\t * Check if the editor is active.\n\t *\n\t * @return {boolean} Whether the editor is active.\n\t */\n\tisEditorActive: createSelector(\n\t\t( state: State ): boolean => {\n\t\t\tconst editorId = state?.editorId;\n\n\t\t\t// TODO Support non-presaved new entities.\n\t\t\tif ( typeof editorId === 'string' && editorId === 'new' ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn typeof editorId === 'number' && editorId > 0;\n\t\t},\n\t\t( state: State ) => [ state.editorId ]\n\t),\n\n\t/**\n\t * Get the current editor values.\n\t *\n\t * @return {EditableCta} The current editor values.\n\t */\n\tgetCurrentEditorValues: createSelector(\n\t\t( state: State ) => {\n\t\t\tconst editorId = state?.editorId;\n\n\t\t\tif ( typeof editorId === 'undefined' ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn editorSelectors.getEditedCallToAction( state, editorId );\n\t\t},\n\t\t( state: State ) => [\n\t\t\tstate.editedEntities?.[ state.editorId || 0 ],\n\t\t\tstate.editHistoryIndex?.[ state.editorId || 0 ],\n\t\t\tstate.editHistory?.[ state.editorId || 0 ],\n\t\t\tstate.editorId,\n\t\t]\n\t),\n\n\t/**\n\t * Check if the entity has been edited.\n\t *\n\t * @param {number} id - The ID of the entity to check.\n\t *\n\t * @return {boolean} Whether the entity has been edited.\n\t */\n\thasEditedEntity: createSelector(\n\t\t( state: State, id: number ) => {\n\t\t\treturn !! state?.editedEntities?.[ id ];\n\t\t},\n\t\t( state: State, id: number ) => [ state.editedEntities?.[ id ], id ]\n\t),\n\n\t/**\n\t * Get the edited entity.\n\t *\n\t * @param {number} id - The ID of the entity to get.\n\t *\n\t * @return {EditableCta} The edited entity.\n\t */\n\tgetEditedEntity: createSelector(\n\t\t( state: State, id: number ) => {\n\t\t\treturn state?.editedEntities?.[ id ];\n\t\t},\n\t\t( state: State, id: number ) => [ state.editedEntities?.[ id ], id ]\n\t),\n\n\t/**\n\t * Get the edit history for an entity.\n\t *\n\t * @param {number} id - The ID of the entity to get.\n\t *\n\t * @return {Partial<EditableCta>[]} The edit history.\n\t */\n\tgetEntityEditHistory: createSelector(\n\t\t( state: State, id: number ) => {\n\t\t\treturn state?.editHistory?.[ id ];\n\t\t},\n\t\t( state: State, id: number ) => [ state.editHistory?.[ id ], id ]\n\t),\n\n\t/**\n\t * Get the current edit history index.\n\t *\n\t * @param {number} id - The ID of the entity to get.\n\t *\n\t * @return {number} The current edit history index.\n\t */\n\tgetCurrentEditHistoryIndex: createSelector(\n\t\t( state: State, id: number ) => {\n\t\t\treturn state.editHistoryIndex?.[ id ];\n\t\t},\n\t\t( state: State, id: number ) => [ state.editHistoryIndex?.[ id ], id ]\n\t),\n\n\t/**\n\t * Check if the entity has edits.\n\t *\n\t * @param {number} id - The ID of the entity to check.\n\t *\n\t * @return {boolean} Whether the entity has edits.\n\t */\n\thasEdits: createSelector(\n\t\t( state: State, id: number ) => {\n\t\t\treturn state.editHistory?.[ id ]?.length > 0;\n\t\t},\n\t\t( state: State, id: number ) => [ state.editHistory?.[ id ], id ]\n\t),\n\n\t/**\n\t * Check if the entity can be undone.\n\t *\n\t * @param {number} id - The ID of the entity to check.\n\t *\n\t * @return {boolean} Whether the entity can be undone.\n\t */\n\thasUndo: createSelector(\n\t\t( state: State, id: number ) => {\n\t\t\tif (\n\t\t\t\ttypeof state.editHistoryIndex?.[ id ] !== 'number' ||\n\t\t\t\ttypeof state.editHistory?.[ id ] !== 'object'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn state.editHistoryIndex?.[ id ] >= 0;\n\t\t},\n\t\t( state: State, id: number ) => [ state.editHistoryIndex?.[ id ], id ]\n\t),\n\n\t/**\n\t * Check if the entity can be redone.\n\t *\n\t * @param {number} id - The ID of the entity to check.\n\t *\n\t * @return {boolean} Whether the entity can be redone.\n\t */\n\thasRedo: createSelector(\n\t\t( state: State, id: number ) => {\n\t\t\tif (\n\t\t\t\ttypeof state.editHistoryIndex?.[ id ] !== 'number' ||\n\t\t\t\ttypeof state.editHistory?.[ id ] !== 'object'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tstate.editHistoryIndex?.[ id ] <\n\t\t\t\tstate.editHistory?.[ id ]?.length - 1\n\t\t\t);\n\t\t},\n\t\t( state: State, id: number ) => [ state.editHistoryIndex?.[ id ], id ]\n\t),\n\n\t/**\n\t * Get the edited call to action.\n\t *\n\t * This applies all edits to the entity up to the current edit history index.\n\t *\n\t * @param {number} id - The ID of the entity to get.\n\t *\n\t * @return {EditableCta} The current entity values.\n\t */\n\tgetEditedCallToAction: createSelector(\n\t\t( state: State, id: number ) => {\n\t\t\tconst baseEntity = state.editedEntities?.[ id ];\n\t\t\tconst editHistory = state.editHistory?.[ id ];\n\t\t\tconst editHistoryIndex = state.editHistoryIndex?.[ id ] ?? -1;\n\n\t\t\tif ( ! baseEntity ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// If index is -1, return base entity without edits\n\t\t\tif ( editHistoryIndex === -1 ) {\n\t\t\t\treturn baseEntity;\n\t\t\t}\n\n\t\t\tif ( ! editHistory?.length ) {\n\t\t\t\treturn baseEntity;\n\t\t\t}\n\n\t\t\t// Get the edits up to the current index\n\t\t\tconst editsToApply = editHistory.slice( 0, editHistoryIndex + 1 );\n\n\t\t\t// Apply each patch set in sequence\n\t\t\tconst editedEntity = editsToApply.reduce( ( entity, patchSet ) => {\n\t\t\t\tconst patchArray = Array.isArray( patchSet )\n\t\t\t\t\t? patchSet\n\t\t\t\t\t: [ patchSet ];\n\n\t\t\t\tconst patched = applyPatch( entity, patchArray, true, false );\n\t\t\t\treturn patched.newDocument;\n\t\t\t}, baseEntity );\n\n\t\t\treturn editedEntity;\n\t\t},\n\t\t( state: State, id: number ) => [\n\t\t\tstate.editedEntities?.[ id ],\n\t\t\tstate.editHistoryIndex?.[ id ],\n\t\t\tstate.editHistory?.[ id ],\n\t\t\tid,\n\t\t]\n\t),\n\n\t/**\n\t * Get default entity values.\n\t */\n\tgetDefaultValues: createSelector(\n\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t( _state: State ) => {\n\t\t\treturn applyFilters(\n\t\t\t\t'popupMaker.callToAction.defaultValues',\n\t\t\t\tdefaultValues\n\t\t\t) as Updatable< CallToAction< 'edit' > >;\n\t\t},\n\t\t( _state: State ) => [ _state.editorId ]\n\t),\n};\n\n/*****************************************************\n * SECTION: Notice selectors\n *****************************************************/\nconst noticeSelectors = {\n\t/**\n\t * Get notices.\n\t */\n\tgetNotices: createRegistrySelector( ( select ) => () => {\n\t\tconst notices = select( noticesStore ).getNotices( NOTICE_CONTEXT );\n\t\treturn ( notices || [] ) as Notice[];\n\t} ),\n\n\t/**\n\t * Get notice by id.\n\t */\n\tgetNoticeById: createRegistrySelector(\n\t\t( select ) =>\n\t\t\t( id: string ): Notice | undefined => {\n\t\t\t\tconst notices =\n\t\t\t\t\tselect( noticesStore ).getNotices( NOTICE_CONTEXT );\n\t\t\t\treturn notices?.find( ( n ) => n.id === id ) as\n\t\t\t\t\t| Notice\n\t\t\t\t\t| undefined;\n\t\t\t}\n\t),\n};\n\n/*****************************************************\n * SECTION: Resolution state selectors\n *****************************************************/\nconst resolutionSelectors = {\n\t/**\n\t * Get resolution state for a specific entity.\n\t */\n\tgetResolutionState: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = state.resolutionState?.[ id ];\n\n\t\t\t// If no resolution state exists, return idle\n\t\t\tif ( ! resolutionState ) {\n\t\t\t\treturn {\n\t\t\t\t\tstatus: DispatchStatus.Idle,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn resolutionState;\n\t\t},\n\t\t( state: State, id: number | string ) => [ state.resolutionState, id ]\n\t),\n\n\t/**\n\t * Check if a resolution is idle.\n\t */\n\tisIdle: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Idle;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Check if an entity is currently being resolved.\n\t */\n\tisResolving: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Resolving;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Check if an entity resolution has completed successfully.\n\t */\n\thasResolved: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Success;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Check if an entity resolution has failed.\n\t */\n\thasFailed: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Error;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Get the error for a failed resolution.\n\t */\n\tgetResolutionError: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.error;\n\t\t},\n\t\t( state: State, id: number | string ) => [ state.resolutionState, id ]\n\t),\n};\n\nconst selectors = {\n\t// Entity selectors\n\t...entitySelectors,\n\t// Editor selectors\n\t...editorSelectors,\n\t// Notice selectors\n\t...noticeSelectors,\n\t// Resolution state selectors\n\t...resolutionSelectors,\n};\n\nexport default selectors;\n","import { createReduxStore } from '@wordpress/data';\n\nimport reducer from './reducer';\nimport actions from './actions';\nimport selectors from './selectors';\nimport resolvers from './resolvers';\nimport { STORE_NAME, initialState } from './constants';\n\nimport type { StoreState, StoreActions, StoreSelectors } from './types';\n\n/**\n * Generate store config.\n */\nexport const storeConfig = () => ( {\n\tinitialState,\n\treducer,\n\tactions,\n\tselectors,\n\tresolvers,\n} );\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n */\nconst store = createReduxStore< StoreState, StoreActions, StoreSelectors >(\n\tSTORE_NAME,\n\tstoreConfig()\n);\n\nexport default store;\n","import type { Updatable } from '@wordpress/core-data';\nimport type { BaseEntity } from '../types';\n\n// Simple type guard for RenderedText fields\nexport function isRenderedText(\n\tvalue: any\n): value is { raw: string; rendered: string } {\n\treturn value && typeof value === 'object' && 'raw' in value;\n}\n\n/**\n * Convert an entity to an editable entity.\n *\n * @param {T} entity The entity to convert.\n * @return {Updatable<T>} The editable entity.\n */\nexport function editableEntity< T extends BaseEntity< 'edit' > >( {\n\t_links,\n\t...entity\n}: T & { _links?: any } ): Updatable< T > {\n\treturn Object.fromEntries(\n\t\tObject.entries( entity ).map( ( [ key, value ] ) => [\n\t\t\tkey,\n\t\t\tisRenderedText( value ) ? value.raw : value,\n\t\t] )\n\t) as Updatable< T >;\n}\n","import { __ } from '@popup-maker/i18n';\n\nimport type { CallToAction } from './types';\nimport type { Updatable } from '@wordpress/core-data';\n\n/**\n * Checks of the set values are valid.\n *\n * @param {CallToAction} callToAction CallToAction to validate.\n *\n * @return {boolean} True when set values are valid.\n */\nexport const validateCallToAction = (\n\tcallToAction: Partial< Updatable< CallToAction< 'edit' > > >\n):\n\t| true\n\t| {\n\t\t\tmessage: string;\n\t\t\ttabName?: string;\n\t\t\tfield?: string;\n\t\t\t[ key: string ]: any;\n\t } => {\n\tif ( ! callToAction ) {\n\t\treturn {\n\t\t\tmessage: __( 'Call to action not found', 'popup-maker' ),\n\t\t};\n\t}\n\n\tif ( callToAction.title && ! callToAction.title?.length ) {\n\t\treturn {\n\t\t\tmessage: __(\n\t\t\t\t'Please provide a name for this call to action.',\n\t\t\t\t'popup-maker'\n\t\t\t),\n\t\t\ttabName: 'general',\n\t\t\tfield: 'title',\n\t\t};\n\t}\n\n\treturn true;\n};\n","export enum DispatchStatus {\n\tIdle = 'IDLE',\n\tResolving = 'RESOLVING',\n\tError = 'ERROR',\n\tSuccess = 'SUCCESS',\n}\n\nexport type DispatchStatuses =\n\t( typeof DispatchStatus )[ keyof typeof DispatchStatus ];\n\nexport type ResolutionState = {\n\tstatus: DispatchStatuses;\n\terror?: string;\n\ttimestamp?: number;\n};\n","export { default as useLicense } from './use-license';\nexport { default as useSettings } from './use-settings';\n","import { useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\nimport { licenseStore } from '../license';\n\nconst useLicense = () => {\n\t// Fetch needed data from the @popup-maker/core-data & @wordpress/data stores.\n\tconst {\n\t\tconnectInfo,\n\t\tlicenseKey,\n\t\tlicenseStatus,\n\t\tisSaving,\n\t\tproWasActivated,\n\t\tisActivatingPro,\n\t} = useSelect( ( select ) => {\n\t\tconst storeSelect = select( licenseStore );\n\t\treturn {\n\t\t\tconnectInfo: storeSelect.getConnectInfo(),\n\t\t\tlicenseKey: storeSelect.getLicenseKey(),\n\t\t\tlicenseStatus: storeSelect.getLicenseStatus(),\n\t\t\tisSaving:\n\t\t\t\tstoreSelect.isDispatching( 'activateLicense' ) ||\n\t\t\t\tstoreSelect.isDispatching( 'deactivateLicense' ) ||\n\t\t\t\tstoreSelect.isDispatching( 'checkLicenseStatus' ) ||\n\t\t\t\tstoreSelect.isDispatching( 'updateLicenseKey' ) ||\n\t\t\t\tstoreSelect.isDispatching( 'removeLicense' ),\n\t\t\tisActivatingPro: storeSelect.isDispatching( 'activatePro' ),\n\t\t\tproWasActivated: storeSelect.hasDispatched( 'activatePro' ),\n\t\t};\n\t}, [] );\n\n\t// Grab needed action dispatchers.\n\tconst {\n\t\tactivateLicense,\n\t\tdeactivateLicense,\n\t\tcheckLicenseStatus,\n\t\tupdateLicenseKey,\n\t\tremoveLicense,\n\t\tactivatePro,\n\t} = useDispatch( licenseStore );\n\n\t// Create some helper variables.\n\n\t// Check if the license is active.\n\tconst isLicenseActive = 'valid' === licenseStatus?.license;\n\n\t// Check if the license is deactivated.\n\tconst isLicenseDeactivated = [\n\t\t'deactivated',\n\t\t'site_inactive',\n\t\t'inactive',\n\t].includes( licenseStatus?.license ?? '' );\n\n\t// Check if the license is invalid.\n\tconst isLicenseInvalid = [ 'invalid', 'failed' ].includes(\n\t\tlicenseStatus?.license\n\t);\n\n\t// Check if the license is missing (default state).\n\tconst isLicenseMissing =\n\t\tisLicenseInvalid &&\n\t\t[ '', 'missing' ].includes( licenseStatus?.error ?? '' );\n\n\t// Check if the license is expired.\n\tconst isLicenseExpired =\n\t\t'expired' === licenseStatus?.license ||\n\t\t( [ 'invalid', 'failed' ].includes( licenseStatus?.license ?? '' ) &&\n\t\t\t'expired' === licenseStatus?.error );\n\n\t// Check if the license is disabled.\n\tconst isLicenseDisabled =\n\t\t'disabled' === licenseStatus?.license ||\n\t\t( isLicenseInvalid && 'disabled' === licenseStatus?.error );\n\n\tconst isLicenseOverQuota = 'no_activations_left' === licenseStatus?.error;\n\n\t// Check if there is an error.\n\tconst hasError = !! licenseStatus?.error;\n\n\t// Check if there is a general error.\n\tconst isGeneralError =\n\t\tisLicenseInvalid &&\n\t\thasError &&\n\t\t! [ 'missing', 'expired', 'disabled' ].includes(\n\t\t\tlicenseStatus?.error ?? ''\n\t\t);\n\n\tconst isLicenseKeyValid = useMemo(\n\t\t() =>\n\t\t\tisLicenseActive ||\n\t\t\tisLicenseDeactivated ||\n\t\t\tisLicenseExpired ||\n\t\t\tisLicenseDisabled ||\n\t\t\tisLicenseOverQuota,\n\t\t[\n\t\t\tisLicenseActive,\n\t\t\tisLicenseDeactivated,\n\t\t\tisLicenseExpired,\n\t\t\tisLicenseDisabled,\n\t\t\tisLicenseOverQuota,\n\t\t]\n\t);\n\n\t// Create a helper function to get the current license status.\n\tconst getLicenseStatusName = useMemo( () => {\n\t\tif ( isLicenseActive ) {\n\t\t\treturn 'active';\n\t\t} else if ( isLicenseExpired ) {\n\t\t\treturn 'expired';\n\t\t} else if ( isLicenseMissing ) {\n\t\t\treturn 'missing';\n\t\t} else if ( isLicenseDeactivated ) {\n\t\t\treturn 'deactivated';\n\t\t} else if ( isLicenseDisabled ) {\n\t\t\treturn 'disabled';\n\t\t} else if ( isGeneralError ) {\n\t\t\treturn 'error';\n\t\t}\n\t\treturn 'unknown';\n\t}, [\n\t\tisLicenseActive,\n\t\tisLicenseExpired,\n\t\tisLicenseMissing,\n\t\tisLicenseDeactivated,\n\t\tisLicenseDisabled,\n\t\tisGeneralError,\n\t] );\n\n\tconst licenseLevel = useMemo( () => {\n\t\t// Price ID as an int\n\t\tlet priceId = licenseStatus?.price_id ?? null;\n\n\t\tif ( null === priceId ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif ( 'string' === typeof priceId ) {\n\t\t\tpriceId = parseInt( priceId, 10 );\n\t\t}\n\n\t\tswitch ( priceId ) {\n\t\t\tdefault:\n\t\t\t\treturn -1;\n\n\t\t\tcase false:\n\t\t\tcase 0:\n\t\t\t\treturn 0;\n\n\t\t\tcase 1:\n\t\t\tcase 2:\n\t\t\tcase 3:\n\t\t\tcase 4:\n\t\t\t\treturn priceId;\n\t\t}\n\t}, [ licenseStatus?.price_id ] );\n\n\treturn {\n\t\tconnectInfo,\n\t\tlicenseKey,\n\t\tlicenseStatus,\n\t\tlicenseLevel,\n\t\tactivateLicense,\n\t\tdeactivateLicense,\n\t\tcheckLicenseStatus,\n\t\tupdateLicenseKey,\n\t\tremoveLicense,\n\t\tactivatePro,\n\t\tgetLicenseStatusName,\n\t\tisSaving,\n\t\tisActivatingPro,\n\t\tproWasActivated,\n\t\tisLicenseKeyValid,\n\t\tisLicenseActive,\n\t\tisLicenseDeactivated,\n\t\tisLicenseMissing,\n\t\tisLicenseExpired,\n\t\tisLicenseInvalid,\n\t\tisLicenseDisabled,\n\t\tisLicenseOverQuota,\n\t\tisGeneralError,\n\t\thasError,\n\t};\n};\n\nexport default useLicense;\n","import { useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\nimport { settingsStore } from '../settings';\n\nimport type { Settings } from '../settings/types';\n\nconst useSettings = () => {\n\t// Fetch needed data from the @popup-maker/core-data & @wordpress/data stores.\n\tconst { currentSettings, unsavedChanges, hasUnsavedChanges, isSaving } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst storeSelect = select( settingsStore );\n\t\t\t\treturn {\n\t\t\t\t\tunsavedChanges: storeSelect.getUnsavedChanges(),\n\t\t\t\t\thasUnsavedChanges: storeSelect.hasUnsavedChanges(),\n\t\t\t\t\tcurrentSettings: storeSelect.getSettings(),\n\t\t\t\t\tisSaving:\n\t\t\t\t\t\tstoreSelect.isResolving( 'updateSettings' ) ||\n\t\t\t\t\t\tstoreSelect.isResolving( 'saveSettings' ),\n\t\t\t\t};\n\t\t\t},\n\t\t\t// TODO REVIEW: Should this have any dependencies to refresh the data?\n\t\t\t[]\n\t\t);\n\n\t// Grab needed action dispatchers.\n\tconst { updateSettings, saveSettings, stageUnsavedChanges } =\n\t\tuseDispatch( settingsStore );\n\n\t// Merge current & unsaved changes.\n\tconst settings = useMemo< Settings >(\n\t\t() => ( { ...currentSettings, ...unsavedChanges } ),\n\t\t[ currentSettings, unsavedChanges ]\n\t);\n\n\t/**\n\t * Get setting by name.\n\t *\n\t * @param {string} name Setting to get.\n\t * @param {any} defaultValue Default value if not already set.\n\t * @return {any} Current value of given setting.\n\t */\n\tconst getSetting = <\n\t\tK extends keyof Settings,\n\t\tD extends Settings[ K ] | undefined | false,\n\t>(\n\t\tname: K,\n\t\tdefaultValue: D\n\t): Settings[ K ] | D => {\n\t\treturn settings[ name ] ?? defaultValue;\n\t};\n\n\treturn {\n\t\tcurrentSettings,\n\t\tsettings,\n\t\tgetSetting,\n\t\tupdateSettings,\n\t\tsaveSettings,\n\t\tisSaving,\n\t\thasUnsavedChanges,\n\t\tstageUnsavedChanges,\n\t\tunsavedChanges,\n\t};\n};\n\nexport default useSettings;\n","import { __ } from '@popup-maker/i18n';\n\nimport { DispatchStatus } from '../constants';\nimport { getErrorMessage, fetchFromApi } from '../utils';\n\nimport { ACTION_TYPES } from './constants';\nimport { apiPath } from './utils';\n\nimport type {\n\tLicense,\n\tLicenseActivationResponse,\n\tLicenseKey,\n\tLicenseStatusResponse,\n\tStoreActionNames,\n\tThunkAction,\n} from './types';\n\nconst {\n\tACTIVATE_LICENSE,\n\tCONNECT_SITE,\n\tDEACTIVATE_LICENSE,\n\tUPDATE_LICENSE_KEY,\n\tREMOVE_LICENSE,\n\tCHECK_LICENSE_STATUS,\n\tHYDRATE_LICENSE_DATA,\n\tCHANGE_ACTION_STATUS,\n} = ACTION_TYPES;\n\n/**\n * Change status of a dispatch action request.\n *\n * @param {StoreActionNames} actionName Action name.\n * @param {DispatchStatus} status Status.\n * @param {string} message Message.\n */\nexport const changeActionStatus = (\n\tactionName: StoreActionNames,\n\tstatus: DispatchStatus,\n\tmessage?: string | undefined\n): {\n\ttype: string;\n\tactionName: StoreActionNames;\n\tstatus: DispatchStatus;\n\tmessage?: string;\n} => {\n\tif ( message ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log( actionName, message );\n\t}\n\n\treturn {\n\t\ttype: CHANGE_ACTION_STATUS,\n\t\tactionName,\n\t\tstatus,\n\t\tmessage,\n\t};\n};\n\n/**\n * Activate license.\n *\n * @param {LicenseKey} licenseKey License key.\n */\nexport const activateLicense =\n\t( licenseKey?: LicenseKey ): ThunkAction =>\n\tasync ( { dispatch } ) => {\n\t\tconst actionName = 'activateLicense';\n\n\t\ttry {\n\t\t\tdispatch.changeActionStatus( actionName, DispatchStatus.Resolving );\n\n\t\t\tconst result = await fetchFromApi< LicenseActivationResponse >(\n\t\t\t\tapiPath( 'activate' ),\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdata: { licenseKey },\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( result ) {\n\t\t\t\tconst { status, connectInfo } = result;\n\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Success\n\t\t\t\t);\n\n\t\t\t\tif ( connectInfo !== undefined ) {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CONNECT_SITE,\n\t\t\t\t\t\tlicenseStatus: status,\n\t\t\t\t\t\tconnectInfo,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: ACTIVATE_LICENSE,\n\t\t\t\t\tlicenseStatus: status,\n\t\t\t\t} );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// if execution arrives here, then thing didn't update in the state so return\n\t\t\t// action object that will add an error to the state about this.\n\t\t\t// returning an action object that will save the update error to the state.\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\t__(\n\t\t\t\t\t'An error occurred, license were not saved.',\n\t\t\t\t\t'popup-maker'\n\t\t\t\t)\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\t// returning an action object that will save the update error to the state.\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\tgetErrorMessage( error )\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Deactivate license.\n */\nexport const deactivateLicense =\n\t(): ThunkAction =>\n\tasync ( { dispatch } ) => {\n\t\tconst actionName = 'deactivateLicense';\n\n\t\ttry {\n\t\t\tdispatch.changeActionStatus( actionName, DispatchStatus.Resolving );\n\n\t\t\tconst result = await fetchFromApi< LicenseStatusResponse >(\n\t\t\t\tapiPath( 'deactivate' ),\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( result ) {\n\t\t\t\t// thing was successfully updated so return the action object that will\n\t\t\t\t// update the saved thing in the state.\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Success\n\t\t\t\t);\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: DEACTIVATE_LICENSE,\n\t\t\t\t\tlicenseStatus: result.status,\n\t\t\t\t} );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// if execution arrives here, then thing didn't update in the state so return\n\t\t\t// action object that will add an error to the state about this.\n\t\t\t// returning an action object that will save the update error to the state.\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\t__(\n\t\t\t\t\t'An error occurred, license were not saved.',\n\t\t\t\t\t'popup-maker'\n\t\t\t\t)\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\t// returning an action object that will save the update error to the state.\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\tgetErrorMessage( error )\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Check license status.\n */\nexport const checkLicenseStatus =\n\t(): ThunkAction =>\n\tasync ( { dispatch } ) => {\n\t\tconst actionName = 'checkLicenseStatus';\n\n\t\ttry {\n\t\t\tdispatch.changeActionStatus( actionName, DispatchStatus.Resolving );\n\n\t\t\tconst result = await fetchFromApi< LicenseStatusResponse >(\n\t\t\t\tapiPath( 'status' ),\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( result ) {\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Success\n\t\t\t\t);\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHECK_LICENSE_STATUS,\n\t\t\t\t\tlicenseStatus: result.status,\n\t\t\t\t} );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\t__(\n\t\t\t\t\t'An error occurred, license were not saved.',\n\t\t\t\t\t'popup-maker'\n\t\t\t\t)\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\t// returning an action object that will save the update error to the state.\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\tgetErrorMessage( error )\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Change license key.\n *\n * @param {LicenseKey} licenseKey License key.\n */\nexport const updateLicenseKey =\n\t( licenseKey: LicenseKey ): ThunkAction =>\n\tasync ( { select, dispatch } ) => {\n\t\tconst actionName = 'updateLicenseKey';\n\n\t\tconst currentKey = select.getLicenseKey();\n\n\t\tif ( currentKey === licenseKey ) {\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\t__(\n\t\t\t\t\t'The license key is the same as the current one.',\n\t\t\t\t\t'popup-maker'\n\t\t\t\t)\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tdispatch.changeActionStatus( actionName, DispatchStatus.Resolving );\n\n\t\t\tconst result = await fetchFromApi< LicenseStatusResponse >(\n\t\t\t\tapiPath(),\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdata: { licenseKey },\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( result ) {\n\t\t\t\t// thing was successfully updated so return the action object that will\n\t\t\t\t// update the saved thing in the state.\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Success\n\t\t\t\t);\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: UPDATE_LICENSE_KEY,\n\t\t\t\t\tlicenseKey,\n\t\t\t\t\tlicenseStatus: result.status,\n\t\t\t\t} );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// if execution arrives here, then thing didn't update in the state so return\n\t\t\t// action object that will add an error to the state about this.\n\t\t\t// returning an action object that will save the update error to the state.\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\t__(\n\t\t\t\t\t'An error occurred, license were not saved.',\n\t\t\t\t\t'popup-maker'\n\t\t\t\t)\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\t// returning an action object that will save the update error to the state.\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\tgetErrorMessage( error )\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Remove license.\n */\nexport const removeLicense =\n\t(): ThunkAction =>\n\tasync ( { dispatch } ) => {\n\t\tconst actionName = 'removeLicense';\n\n\t\ttry {\n\t\t\tdispatch.changeActionStatus( actionName, DispatchStatus.Resolving );\n\n\t\t\tconst result = await fetchFromApi< boolean >( apiPath(), {\n\t\t\t\tmethod: 'DELETE',\n\t\t\t} );\n\n\t\t\tif ( result ) {\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Success\n\t\t\t\t);\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: REMOVE_LICENSE,\n\t\t\t\t} );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\t__(\n\t\t\t\t\t'An error occurred, license were not saved.',\n\t\t\t\t\t'popup-maker'\n\t\t\t\t)\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\t// returning an action object that will save the update error to the state.\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\tgetErrorMessage( error )\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Activate pro version if installed.\n */\nexport const activatePro =\n\t(): ThunkAction =>\n\tasync ( { dispatch } ) => {\n\t\tconst actionName = 'activatePro';\n\n\t\ttry {\n\t\t\tdispatch.changeActionStatus( actionName, DispatchStatus.Resolving );\n\n\t\t\tconst result = await fetchFromApi< boolean >(\n\t\t\t\tapiPath( 'activate-pro' ),\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( result ) {\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Success\n\t\t\t\t);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\t__(\n\t\t\t\t\t'An error occurred, license were not saved.',\n\t\t\t\t\t'popup-maker'\n\t\t\t\t)\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\t// returning an action object that will save the update error to the state.\n\t\t\tdispatch.changeActionStatus(\n\t\t\t\tactionName,\n\t\t\t\tDispatchStatus.Error,\n\t\t\t\tgetErrorMessage( error )\n\t\t\t);\n\t\t}\n\t};\n\n/**\n * Hydrate license data.\n *\n * @param {License} license License.\n */\nexport const hydrate = (\n\tlicense: License\n): { type: string; license: License } => {\n\treturn {\n\t\ttype: HYDRATE_LICENSE_DATA,\n\t\tlicense,\n\t};\n};\n","import type { State } from './reducer';\nimport type { License, LicenseStatus } from './types';\n\nexport const STORE_NAME = 'popup-maker/license';\n\nexport const ACTIVATE_LICENSE = 'ACTIVATE_LICENSE';\nexport const CONNECT_SITE = 'CONNECT_SITE';\nexport const DEACTIVATE_LICENSE = 'DEACTIVATE_LICENSE';\nexport const REMOVE_LICENSE = 'REMOVE_LICENSE';\nexport const UPDATE_LICENSE_KEY = 'UPDATE_LICENSE_KEY';\nexport const CHECK_LICENSE_STATUS = 'CHECK_LICENSE_STATUS';\nexport const CHANGE_ACTION_STATUS = 'CHANGE_ACTION_STATUS';\nexport const HYDRATE_LICENSE_DATA = 'HYDRATE_LICENSE_DATA';\nexport const LICENSE_FETCH_ERROR = 'LICENSE_FETCH_ERROR';\n\nexport const ACTION_TYPES: {\n\tACTIVATE_LICENSE: typeof ACTIVATE_LICENSE;\n\tCONNECT_SITE: typeof CONNECT_SITE;\n\tDEACTIVATE_LICENSE: typeof DEACTIVATE_LICENSE;\n\tREMOVE_LICENSE: typeof REMOVE_LICENSE;\n\tUPDATE_LICENSE_KEY: typeof UPDATE_LICENSE_KEY;\n\tCHECK_LICENSE_STATUS: typeof CHECK_LICENSE_STATUS;\n\tCHANGE_ACTION_STATUS: typeof CHANGE_ACTION_STATUS;\n\tHYDRATE_LICENSE_DATA: typeof HYDRATE_LICENSE_DATA;\n\tLICENSE_FETCH_ERROR: typeof LICENSE_FETCH_ERROR;\n} = {\n\tACTIVATE_LICENSE,\n\tCONNECT_SITE,\n\tDEACTIVATE_LICENSE,\n\tREMOVE_LICENSE,\n\tUPDATE_LICENSE_KEY,\n\tCHECK_LICENSE_STATUS,\n\tCHANGE_ACTION_STATUS,\n\tHYDRATE_LICENSE_DATA,\n\tLICENSE_FETCH_ERROR,\n};\n\n/**\n * Default license status.\n */\nexport const licenseStatusDefaults: LicenseStatus = {\n\tsuccess: false,\n\tlicense: 'invalid',\n\tlicense_limit: 1,\n\tsite_count: 0,\n\texpires: '',\n\tactivations_left: 0,\n\tprice_id: 0,\n\terror: undefined,\n\terror_message: undefined,\n};\n\n/**\n * Default license state.\n */\nexport const defaultValues: License = {\n\tkey: '',\n\tstatus: licenseStatusDefaults,\n};\n\n/**\n * Default initial state.\n */\nexport const initialState: State = {\n\tlicense: defaultValues,\n};\n","import type {\n\tCurriedSelectorsOf,\n\tDispatchReturn,\n} from '@wordpress/data/src/types';\n\nexport { default as licenseStore } from './store';\n\nexport {\n\tdefaultValues as defaultLicenseValues,\n\tSTORE_NAME as LICENSE_STORE,\n} from './constants';\n\nexport type * from './types/licenses';\n\nimport type { StoreDescriptor, StoreState } from './types/store';\n\ntype Selectors = CurriedSelectorsOf< StoreDescriptor >;\ntype Actions = DispatchReturn< StoreDescriptor >;\n\nexport type {\n\tStoreDescriptor as LicenseStore,\n\tStoreState as LicenseStoreState,\n\tSelectors as LicenseStoreSelectors,\n\tActions as LicenseStoreActions,\n};\n","import { ACTION_TYPES, initialState } from './constants';\n\nimport type { DispatchStatuses } from '../constants';\nimport type {\n\tLicense,\n\tLicenseConnect,\n\tLicenseStatus,\n\tStoreActionNames,\n} from './types';\n\nconst {\n\tACTIVATE_LICENSE,\n\tCONNECT_SITE,\n\tDEACTIVATE_LICENSE,\n\tREMOVE_LICENSE,\n\tUPDATE_LICENSE_KEY,\n\tCHECK_LICENSE_STATUS,\n\tHYDRATE_LICENSE_DATA,\n\tCHANGE_ACTION_STATUS,\n\tLICENSE_FETCH_ERROR,\n} = ACTION_TYPES;\n\nexport type State = {\n\tlicense: License;\n\tconnectInfo?: LicenseConnect;\n\t// Boilerplate\n\tdispatchStatus?: {\n\t\t[ Property in StoreActionNames ]?: {\n\t\t\tstatus: string;\n\t\t\terror: string;\n\t\t};\n\t};\n\terror?: string;\n};\n\ntype BaseAction = {\n\ttype: keyof typeof ACTION_TYPES;\n};\n\ntype LicenseStatusAction = BaseAction & {\n\ttype:\n\t\t| typeof ACTIVATE_LICENSE\n\t\t| typeof DEACTIVATE_LICENSE\n\t\t| typeof CHECK_LICENSE_STATUS;\n\tlicenseStatus: LicenseStatus;\n};\n\ntype ConnectSiteAction = BaseAction & {\n\ttype: typeof CONNECT_SITE;\n\tlicenseStatus: LicenseStatus;\n\tconnectInfo: LicenseConnect;\n};\n\ntype UpdateLicenseKeyAction = BaseAction & {\n\ttype: typeof UPDATE_LICENSE_KEY;\n\tlicenseKey: string;\n\tlicenseStatus: LicenseStatus;\n};\n\ntype RemoveLicenseAction = BaseAction & {\n\ttype: typeof REMOVE_LICENSE;\n};\n\ntype HydrateLicenseDataAction = BaseAction & {\n\ttype: typeof HYDRATE_LICENSE_DATA;\n\tlicense: License;\n};\n\ntype LicenseFetchErrorAction = BaseAction & {\n\ttype: typeof LICENSE_FETCH_ERROR;\n\tmessage: string;\n};\n\ntype ChangeActionStatusAction = BaseAction & {\n\ttype: typeof CHANGE_ACTION_STATUS;\n\tactionName: StoreActionNames;\n\tstatus: DispatchStatuses;\n\tmessage: string;\n};\n\nexport type ReducerAction =\n\t| LicenseStatusAction\n\t| ConnectSiteAction\n\t| UpdateLicenseKeyAction\n\t| RemoveLicenseAction\n\t| HydrateLicenseDataAction\n\t| LicenseFetchErrorAction\n\t| ChangeActionStatusAction;\n\nconst reducer = ( state: State = initialState, action: ReducerAction ) => {\n\tswitch ( action.type ) {\n\t\tcase ACTIVATE_LICENSE:\n\t\tcase DEACTIVATE_LICENSE:\n\t\tcase CHECK_LICENSE_STATUS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlicense: {\n\t\t\t\t\t...state.license,\n\t\t\t\t\tstatus: action.licenseStatus,\n\t\t\t\t},\n\t\t\t};\n\t\t\treturn state;\n\n\t\tcase CONNECT_SITE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlicense: {\n\t\t\t\t\t...state.license,\n\t\t\t\t\tstatus: action.licenseStatus,\n\t\t\t\t},\n\t\t\t\tconnectInfo: action.connectInfo,\n\t\t\t};\n\n\t\tcase UPDATE_LICENSE_KEY:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlicense: {\n\t\t\t\t\t...state.license,\n\t\t\t\t\tkey: action.licenseKey,\n\t\t\t\t\tstatus: action.licenseStatus,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase REMOVE_LICENSE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlicense: {\n\t\t\t\t\tkey: '',\n\t\t\t\t\tstatus: {},\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase HYDRATE_LICENSE_DATA:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlicense: action.license,\n\t\t\t};\n\n\t\tcase LICENSE_FETCH_ERROR:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\terror: action.message,\n\t\t\t};\n\n\t\tcase CHANGE_ACTION_STATUS:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdispatchStatus: {\n\t\t\t\t\t...state.dispatchStatus,\n\t\t\t\t\t[ action.actionName ]: {\n\t\t\t\t\t\t...state?.dispatchStatus?.[ action.actionName ],\n\t\t\t\t\t\tstatus: action.status,\n\t\t\t\t\t\terror: action.message,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport default reducer;\n","import { __ } from '@popup-maker/i18n';\n\nimport { getErrorMessage, fetchFromApi } from '../utils';\nimport { LICENSE_FETCH_ERROR } from './constants';\nimport { apiPath } from './utils';\n\nimport type { License, LicenseKey, LicenseStatus, ThunkAction } from './types';\n\nexport const getLicenseData =\n\t(): ThunkAction =>\n\tasync ( { dispatch } ) => {\n\t\ttry {\n\t\t\tconst results = await fetchFromApi< License >( apiPath(), {\n\t\t\t\tmethod: 'GET',\n\t\t\t} );\n\n\t\t\tif ( results ) {\n\t\t\t\tdispatch.hydrate( results );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdispatch( {\n\t\t\t\ttype: LICENSE_FETCH_ERROR,\n\t\t\t\tmessage: __(\n\t\t\t\t\t'An error occurred, license data was not loaded.',\n\t\t\t\t\t'popup-maker'\n\t\t\t\t),\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tdispatch( {\n\t\t\t\ttype: LICENSE_FETCH_ERROR,\n\t\t\t\tmessage: getErrorMessage( error ),\n\t\t\t} );\n\t\t}\n\t};\n\nexport const getLicenseKey =\n\t(): ThunkAction< LicenseKey > =>\n\tasync ( { resolveSelect } ) => {\n\t\tconst { key = '' } = ( await resolveSelect.getLicenseData() ) ?? {};\n\n\t\treturn key;\n\t};\n\nexport const getLicenseStatus =\n\t(): ThunkAction< LicenseStatus > =>\n\tasync ( { resolveSelect } ) => {\n\t\tconst { status } = ( await resolveSelect.getLicenseData() ) ?? {};\n\n\t\treturn status;\n\t};\n","import { createSelector } from '@wordpress/data';\n\nimport { DispatchStatus } from '../constants';\nimport { licenseStatusDefaults } from './constants';\n\nimport type { State } from './reducer';\nimport type {\n\tLicense,\n\tLicenseKey,\n\tLicenseStatus,\n\tLicenseConnect,\n\tStoreActionNames,\n} from './types';\n\n/**\n * Get license\n *\n * @param {State} state State.\n *\n * @return {License} License.\n */\nexport const getLicenseData = ( state: State ): License => state.license;\n\n/**\n * Get license key.\n *\n * @param {State} state State.\n *\n * @return {LicenseKey} License key.\n */\nexport const getLicenseKey = ( state: State ): LicenseKey => {\n\tconst { key } = getLicenseData( state );\n\treturn key;\n};\n\n/**\n * Get license status.\n *\n * @param {State} state State.\n *\n * @return {LicenseStatus} License status.\n */\nexport const getLicenseStatus = createSelector(\n\t( state: State ): LicenseStatus => {\n\t\tconst { status } = getLicenseData( state );\n\n\t\treturn {\n\t\t\t...licenseStatusDefaults,\n\t\t\t...status,\n\t\t};\n\t},\n\t( state: State ) => [ state.license.status ]\n);\n\n/**\n * Get connect info for pro upgrade.\n *\n * @param {State} state State.\n *\n * @return {LicenseConnect | undefined} Connect info.\n */\nexport const getConnectInfo = ( state: State ): LicenseConnect | undefined =>\n\tstate.connectInfo;\n\n/**\n * Get current status for dispatched action.\n *\n * @param {State} state State.\n * @param {StoreActionNames} actionName Action name.\n *\n * @return {string | undefined} Status.\n */\nexport const getDispatchStatus = (\n\tstate: State,\n\tactionName: StoreActionNames\n): string | undefined => state?.dispatchStatus?.[ actionName ]?.status;\n\n/**\n * Check if action is dispatching.\n *\n * @param {State} state State.\n * @param {StoreActionNames | StoreActionNames[]} actionNames Action name or array of action names.\n *\n * @return {boolean} True if action is dispatching, false otherwise.\n */\nexport const isDispatching = createSelector(\n\t(\n\t\tstate: State,\n\t\tactionNames: StoreActionNames | StoreActionNames[]\n\t): boolean => {\n\t\tif ( ! Array.isArray( actionNames ) ) {\n\t\t\treturn (\n\t\t\t\tgetDispatchStatus( state, actionNames ) ===\n\t\t\t\tDispatchStatus.Resolving\n\t\t\t);\n\t\t}\n\n\t\tlet dispatching = false;\n\n\t\tfor ( let i = 0; actionNames.length > i; i++ ) {\n\t\t\tdispatching =\n\t\t\t\tgetDispatchStatus( state, actionNames[ i ] ) ===\n\t\t\t\tDispatchStatus.Resolving;\n\n\t\t\tif ( dispatching ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn dispatching;\n\t},\n\t( state: State, actionNames: StoreActionNames | StoreActionNames[] ) => [\n\t\tstate.dispatchStatus,\n\t\tactionNames,\n\t]\n);\n\n/**\n * Check if action has finished dispatching.\n *\n * @param {State} state State.\n * @param {StoreActionNames} actionName Action name.\n *\n * @return {boolean} True if action has finished dispatching, false otherwise.\n */\nexport const hasDispatched = createSelector(\n\t( state: State, actionName: StoreActionNames ): boolean => {\n\t\tconst status = getDispatchStatus( state, actionName );\n\n\t\treturn !! (\n\t\t\tstatus &&\n\t\t\t(\n\t\t\t\t[ DispatchStatus.Success, DispatchStatus.Error ] as string[]\n\t\t\t ).indexOf( status ) >= 0\n\t\t);\n\t},\n\t( state: State, actionName: StoreActionNames ) => [\n\t\tstate.dispatchStatus,\n\t\tactionName,\n\t]\n);\n\n/**\n * Get dispatch action error if esists.\n *\n * @param {State} state State.\n * @param {StoreActionNames} actionName Action name.\n *\n * @return {string | undefined} Error.\n */\nexport const getDispatchError = (\n\tstate: State,\n\tactionName: StoreActionNames\n): string | undefined => state?.dispatchStatus?.[ actionName ]?.error;\n","import { createReduxStore } from '@wordpress/data';\n\nimport reducer from './reducer';\nimport * as actions from './actions';\nimport * as resolvers from './resolvers';\nimport * as selectors from './selectors';\nimport { initialState, STORE_NAME } from './constants';\n\nimport type { StoreActions, StoreSelectors, StoreState } from './types';\n\nconst storeConfig = () => ( {\n\tinitialState,\n\treducer,\n\tactions,\n\tselectors,\n\tresolvers,\n} );\n\n/**\n * Store definition for the License data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n */\nconst store = createReduxStore< StoreState, StoreActions, StoreSelectors >(\n\tSTORE_NAME,\n\tstoreConfig()\n);\n\nexport default store;\n","export const apiPath = ( subpath = '' ) => {\n\tif ( subpath ) {\n\t\tsubpath = `/${ subpath }`;\n\t}\n\n\treturn `popup-maker/v2/license${ subpath }`;\n};\n","import { cloneDeep, mergeWith } from 'lodash';\nimport { compare as jsonpatchCompare } from 'fast-json-patch';\n\nimport { __, sprintf } from '@popup-maker/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nimport { ACTION_TYPES, NOTICE_CONTEXT } from './constants';\n\nimport { DispatchStatus } from '../constants';\nimport { fetchFromApi, getErrorMessage } from '../utils';\nimport { validatePopup } from './validation';\nimport { editableEntity } from './utils';\n\nimport type { EditorId, Notice } from '../types';\nimport type {\n\tPopup,\n\tThunkAction,\n\tEditablePopup,\n\tPartialEditablePopup,\n} from './types';\nimport { EditRecordAction } from './reducer';\n\n// import type { EditRecordAction } from './reducer';\n\nconst {\n\tRECEIVE_RECORD,\n\tPURGE_RECORD,\n\tEDITOR_CHANGE_ID,\n\tEDIT_RECORD,\n\tSTART_EDITING_RECORD,\n\tSAVE_EDITED_RECORD,\n\tUNDO_EDIT_RECORD,\n\tREDO_EDIT_RECORD,\n\tRESET_EDIT_RECORD,\n\tCHANGE_ACTION_STATUS,\n\tINVALIDATE_RESOLUTION,\n} = ACTION_TYPES;\n\n/*****************************************************\n * SECTION: Entity actions\n *****************************************************/\n\n/**\n * Create a new entity record. Values sent to the server immediately.\n *\n * @param {Editable} popup The entity to create.\n * @param {boolean} validate An optional validation function.\n * @param {boolean} withNotices Whether to show notices.\n * @return {Promise<Popup< 'edit' > | false>} The created entity or false if validation fails.\n */\nexport const createPopup =\n\t(\n\t\tpopup: Partial< EditablePopup >,\n\t\tvalidate: boolean = true,\n\t\twithNotices: boolean = true\n\t): ThunkAction< Popup< 'edit' > | false > =>\n\tasync ( { dispatch, registry } ) => {\n\t\tconst action = 'createPopup';\n\n\t\ttry {\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tpayload: {\n\t\t\t\t\tactionName: action,\n\t\t\t\t\tstatus: DispatchStatus.Resolving,\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tconst { id, ...newPopup } = popup;\n\n\t\t\tif ( validate ) {\n\t\t\t\tconst validation = validatePopup( newPopup );\n\n\t\t\t\tif ( true !== validation ) {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\tmessage: validation.message,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\tawait dispatch.createErrorNotice( validation.message, {\n\t\t\t\t\t\t\tid: 'popup-validation-error',\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst result = await fetchFromApi< Popup< 'edit' > >(\n\t\t\t\t`popups?context=edit`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdata: newPopup,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( result ) {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\tstatus: DispatchStatus.Success,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\tdispatch.createSuccessNotice(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %s: popup title.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Popup \"%s\" saved successfully.',\n\t\t\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdecodeEntities( result?.title.rendered )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'popup-saved',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: RECEIVE_RECORD,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\trecord: result,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tpayload: {\n\t\t\t\t\tactionName: action,\n\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t'An error occurred, popup was not saved.',\n\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage = getErrorMessage( error );\n\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tpayload: {\n\t\t\t\t\tactionName: action,\n\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tif ( withNotices ) {\n\t\t\t\t// Generate a generic error notice.\n\t\t\t\tdispatch.createErrorNotice( errorMessage );\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn false;\n\t};\n\n/**\n * Update an existing entity record. Values sent to the server immediately.\n *\n * @param {PartialEditablePopup} popup The entity to update.\n * @param {boolean} validate An optional validation function.\n * @param {boolean} withNotices Whether to show notices.\n * @return {Promise<T | boolean>} The updated entity or false if validation fails.\n */\nexport const updatePopup =\n\t(\n\t\tpopup: PartialEditablePopup,\n\t\tvalidate: boolean = true,\n\t\twithNotices: boolean = true\n\t): ThunkAction< Popup< 'edit' > | false > =>\n\tasync ( { select, dispatch, registry } ) => {\n\t\tconst action = 'updatePopup';\n\n\t\ttry {\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tpayload: {\n\t\t\t\t\tactionName: action,\n\t\t\t\t\tstatus: DispatchStatus.Resolving,\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tif ( validate ) {\n\t\t\t\tconst validation = validatePopup( popup );\n\n\t\t\t\tif ( true !== validation ) {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\tmessage: validation.message,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\tawait dispatch.createErrorNotice( validation.message, {\n\t\t\t\t\t\t\tid: 'popup-validation-error',\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst canonicalPopup = await select.getPopup( popup.id );\n\n\t\t\tif ( ! canonicalPopup ) {\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\tmessage: __( 'Popup not found', 'popup-maker' ),\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst result = await fetchFromApi< Popup< 'edit' > >(\n\t\t\t\t`popups/${ canonicalPopup.id }`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdata: popup,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( result ) {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\tstatus: DispatchStatus.Success,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\tif ( withNotices ) {\n\t\t\t\t\tdispatch.createSuccessNotice(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t// translators: %s: popup title.\n\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t'Popup \"%s\" updated successfully.',\n\t\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdecodeEntities( result?.title.rendered )\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'popup-saved',\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: RECEIVE_RECORD,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\trecord: result,\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tpayload: {\n\t\t\t\t\tactionName: action,\n\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t'An error occurred, popup was not saved.',\n\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage = getErrorMessage( error );\n\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tpayload: {\n\t\t\t\t\tactionName: action,\n\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tif ( withNotices ) {\n\t\t\t\t// Generate a generic error notice.\n\t\t\t\tdispatch.createErrorNotice( errorMessage );\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn false;\n\t};\n\n/**\n * Delete an existing entity record.\n *\n * @param {number} id The entity ID.\n * @param {boolean} forceDelete Whether to force the deletion.\n * @param {boolean} withNotices Whether to show notices.\n * @return {Promise<boolean>} Whether the deletion was successful.\n */\nexport const deletePopup =\n\t(\n\t\tid: number,\n\t\tforceDelete: boolean = false,\n\t\twithNotices: boolean = true\n\t): ThunkAction< boolean > =>\n\tasync ( { dispatch, registry } ) => {\n\t\tconst action = 'deletePopup';\n\n\t\ttry {\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tpayload: {\n\t\t\t\t\tactionName: action,\n\t\t\t\t\tstatus: DispatchStatus.Resolving,\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\t// Get the canonical directly from server to verify it exists.\n\t\t\tconst canonicalPopup = await fetchFromApi< Popup< 'edit' > >(\n\t\t\t\t`popups/${ id }?context=edit`\n\t\t\t);\n\n\t\t\tif ( ! canonicalPopup ) {\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\tmessage: __( 'Popup not found', 'popup-maker' ),\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst force = forceDelete ? '?force=true' : '';\n\n\t\t\tconst result = await fetchFromApi< boolean >(\n\t\t\t\t`popups/${ id }${ force }`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( result ) {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\tstatus: DispatchStatus.Success,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\tdispatch.createSuccessNotice(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %s: popup title.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Popup \"%s\" deleted successfully.',\n\t\t\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdecodeEntities( canonicalPopup?.title.rendered )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'popup-deleted',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( forceDelete ) {\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: PURGE_RECORD,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: RECEIVE_RECORD,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\trecord: {\n\t\t\t\t\t\t\t\t\t...canonicalPopup,\n\t\t\t\t\t\t\t\t\tstatus: 'trash',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t} catch ( error ) {\n\t\t\t// await dispatch.failResolution( action, operation );\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tpayload: {\n\t\t\t\t\tactionName: action,\n\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\tmessage: __( 'Popup not found', 'popup-maker' ),\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tif ( withNotices ) {\n\t\t\t\tawait dispatch.createErrorNotice(\n\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: __( 'Failed to delete entity', 'popup-maker' )\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t};\n\n/*****************************************************\n * SECTION: Editor actions\n * REVIEW: ALL OF THESE ACTIONS NEED TO BE REFACTORED TO USE THE NEW THUNK ACTIONS.\n *****************************************************/\n\n/**\n * Edit an existing entity record. Values are not sent to the server until save.\n *\n * @param {number} id The entity ID.\n * @param {Partial<EditablePopup>} edits The edits to apply.\n * @return {Promise<boolean>} Whether the edit was successful.\n */\nexport const editRecord =\n\t( id: number, edits: Partial< EditablePopup > ): ThunkAction =>\n\tasync ( { select, dispatch, registry } ) => {\n\t\ttry {\n\t\t\tlet canonicalPopup: EditablePopup | undefined;\n\t\t\tconst hasEditedEntity = select.hasEditedEntity( id );\n\n\t\t\tif ( hasEditedEntity ) {\n\t\t\t\tcanonicalPopup = select.getEditedPopup( id ) as EditablePopup;\n\t\t\t} else {\n\t\t\t\tcanonicalPopup = await fetchFromApi<\n\t\t\t\t\tPopup< 'edit' > & { _links: any }\n\t\t\t\t>( `popups/${ id }?context=edit` ).then( ( result ) =>\n\t\t\t\t\t// Convert to editable entity if found.\n\t\t\t\t\tresult\n\t\t\t\t\t\t? editableEntity< Popup< 'edit' > >( result )\n\t\t\t\t\t\t: undefined\n\t\t\t\t);\n\t\t\t\tif ( ! canonicalPopup ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tregistry.batch( async () => {\n\t\t\t\tif ( ! hasEditedEntity ) {\n\t\t\t\t\tawait dispatch( {\n\t\t\t\t\t\ttype: START_EDITING_RECORD,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\teditableEntity: canonicalPopup,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Create a new object with the edits deeply merged into the canonical entity\n\t\t\t\t// First clone the canonical entity, then deep merge the edits\n\t\t\t\tconst editedEntity = mergeWith(\n\t\t\t\t\t{},\n\t\t\t\t\tcloneDeep( canonicalPopup ),\n\t\t\t\t\tedits,\n\t\t\t\t\t( _objValue, srcValue ) => {\n\t\t\t\t\t\tif ( Array.isArray( srcValue ) ) {\n\t\t\t\t\t\t\t// Always replace arrays completely, even if empty\n\t\t\t\t\t\t\treturn srcValue.slice();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Force patches for empty arrays to ensure they are saved\n\t\t\t\tconst diff = jsonpatchCompare(\n\t\t\t\t\tcanonicalPopup ?? {},\n\t\t\t\t\teditedEntity\n\t\t\t\t);\n\n\t\t\t\tawait dispatch( {\n\t\t\t\t\ttype: EDIT_RECORD,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tedits: diff,\n\t\t\t\t\t},\n\t\t\t\t} as EditRecordAction );\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage = getErrorMessage( error );\n\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( 'Edit failed:', error );\n\n\t\t\tawait dispatch.createErrorNotice( errorMessage );\n\t\t}\n\t};\n\n/**\n * Save an edited entity record.\n *\n * @param {number} id The entity ID.\n * @param {boolean} validate An optional validation function.\n * @param {boolean} withNotices Whether to show notices.\n * @return {Promise<boolean>} Whether the save was successful.\n */\nexport const saveEditedRecord =\n\t(\n\t\tid: number,\n\t\tvalidate: boolean = true,\n\t\twithNotices: boolean = true\n\t): ThunkAction< boolean > =>\n\tasync ( { select, dispatch, registry } ) => {\n\t\tconst action = 'saveRecord';\n\n\t\ttry {\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tpayload: {\n\t\t\t\t\tactionName: action,\n\t\t\t\t\tstatus: DispatchStatus.Resolving,\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tif ( ! select.hasEdits( id ) ) {\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\tmessage: __( 'No edits to save', 'popup-maker' ),\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst historyIndex = select.getCurrentEditHistoryIndex( id );\n\t\t\tconst editedPopup = select.getEditedPopup( id );\n\n\t\t\tif ( ! editedPopup ) {\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\tmessage: __( 'No edits to save', 'popup-maker' ),\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( editedPopup && validate ) {\n\t\t\t\tconst validation = validatePopup( editedPopup );\n\n\t\t\t\tif ( true !== validation ) {\n\t\t\t\t\tregistry.batch( async () => {\n\t\t\t\t\t\tdispatch( {\n\t\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\t\t\tmessage: validation.message,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\t\tawait dispatch.createErrorNotice(\n\t\t\t\t\t\t\t\tvalidation.message,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: 'popup-validation-error',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst result = await dispatch.updatePopup(\n\t\t\t\teditedPopup,\n\t\t\t\tfalse,\n\t\t\t\tfalse\n\t\t\t);\n\n\t\t\tif ( result ) {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\t\tstatus: DispatchStatus.Success,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( withNotices ) {\n\t\t\t\t\t\tdispatch.createSuccessNotice(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %s: popup title.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Popup \"%s\" saved successfully.',\n\t\t\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tdecodeEntities( result?.title.rendered )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'popup-saved',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: SAVE_EDITED_RECORD,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\thistoryIndex,\n\t\t\t\t\t\t\teditedEntity: editableEntity( result ),\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage = getErrorMessage( error );\n\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( 'Save failed:', error );\n\n\t\t\tregistry.batch( async () => {\n\t\t\t\tif ( withNotices ) {\n\t\t\t\t\tawait dispatch.createErrorNotice( errorMessage );\n\t\t\t\t}\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tactionName: action,\n\t\t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tthrow error;\n\t\t}\n\t};\n\n/**\n * Undo the last action.\n *\n * @param {number} id The entity ID.\n * @param {number} steps The number of steps to undo.\n * @return {Promise<void>}\n */\nexport const undo =\n\t( id: number, steps: number = 1 ): ThunkAction =>\n\tasync ( { select, dispatch } ) => {\n\t\tconst popupId = id > 0 ? id : select.getEditorId();\n\n\t\tif ( typeof popupId === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait dispatch( {\n\t\t\ttype: UNDO_EDIT_RECORD,\n\t\t\tpayload: {\n\t\t\t\tid: popupId,\n\t\t\t\tsteps,\n\t\t\t},\n\t\t} );\n\t};\n\n/**\n * Redo the last action.\n *\n * @param {number} id The entity ID.\n * @param {number} steps The number of steps to redo.\n * @return {Promise<void>}\n */\nexport const redo =\n\t( id: number, steps: number = 1 ): ThunkAction =>\n\tasync ( { select, dispatch } ) => {\n\t\tconst popupId = id > 0 ? id : select.getEditorId();\n\n\t\tif ( typeof popupId === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait dispatch( {\n\t\t\ttype: REDO_EDIT_RECORD,\n\t\t\tpayload: {\n\t\t\t\tid: popupId,\n\t\t\t\tsteps,\n\t\t\t},\n\t\t} );\n\t};\n\n/**\n * Reset the edits for an entity record.\n *\n * @param {number} id The entity ID.\n * @return {Promise<void>}\n */\nexport const resetRecordEdits =\n\t( id: number ): ThunkAction =>\n\tasync ( { select, dispatch } ) => {\n\t\tconst popupId = id > 0 ? id : select.getEditorId();\n\n\t\tif ( typeof popupId === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdispatch( {\n\t\t\ttype: RESET_EDIT_RECORD,\n\t\t\tpayload: {\n\t\t\t\tid: popupId,\n\t\t\t},\n\t\t} );\n\t};\n\n/**\n * Update the editor values.\n *\n * @param {Partial<EditablePopup>} values The editor values.\n * @return {Promise<void>}\n */\nexport const updateEditorValues =\n\t( values: PartialEditablePopup ): ThunkAction< void > =>\n\tasync ( { dispatch, select } ) => {\n\t\tconst editorId = select.getEditorId();\n\n\t\tif ( typeof editorId === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdispatch.editRecord( editorId, values );\n\t};\n\n/**\n * Save the editor values.\n *\n * @return {Promise<boolean>} Whether the save was successful.\n */\nexport const saveEditorValues =\n\t(): ThunkAction< boolean > =>\n\tasync ( { dispatch, select } ) => {\n\t\tconst editorId = select.getEditorId();\n\t\tconst editorValues = select.getCurrentEditorValues();\n\n\t\tif ( ! editorId || ! editorValues ) {\n\t\t\tdispatch.createErrorNotice(\n\t\t\t\t__( 'No editor values to save', 'popup-maker' )\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\treturn dispatch.saveEditedRecord( editorId );\n\t};\n\n/**\n * Reset the editor values.\n *\n * @return {Promise<void>}\n */\nexport const resetEditorValues =\n\t(): ThunkAction< void > =>\n\tasync ( { dispatch, select } ) => {\n\t\tconst editorId = select.getEditorId();\n\n\t\tif ( typeof editorId === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdispatch.resetRecordEdits( editorId );\n\t};\n\n/**\n * Change the editor ID.\n *\n * @param {EditorId} editorId The editor ID.\n * @return {Promise<void>}\n */\nexport const changeEditorId =\n\t( editorId: EditorId ): ThunkAction< void > =>\n\tasync ( { select, dispatch } ) => {\n\t\ttry {\n\t\t\tif ( typeof editorId === 'undefined' ) {\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: EDITOR_CHANGE_ID,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\teditorId: undefined,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! select.hasEditedEntity( editorId ) ) {\n\t\t\t\tconst entity = await fetchFromApi< Popup< 'edit' > >(\n\t\t\t\t\t`popups/${ editorId }?context=edit`\n\t\t\t\t);\n\n\t\t\t\tif ( ! entity ) {\n\t\t\t\t\tdispatch.createErrorNotice(\n\t\t\t\t\t\t__( 'Popup not found', 'popup-maker' )\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: START_EDITING_RECORD,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tid: editorId,\n\t\t\t\t\t\teditableEntity: editableEntity( entity ),\n\t\t\t\t\t\tsetEditorId: true,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tdispatch( {\n\t\t\t\ttype: EDITOR_CHANGE_ID,\n\t\t\t\tpayload: {\n\t\t\t\t\teditorId,\n\t\t\t\t},\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage = getErrorMessage( error );\n\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( 'Failed to change editor ID:', error );\n\n\t\t\tdispatch.createErrorNotice( errorMessage );\n\t\t}\n\t};\n\n/*****************************************************\n * SECTION: Notice actions\n *****************************************************/\n\n/**\n * Create a notice.\n *\n * @param {Notice[ 'status' ]} status The notice status.\n * @param {Notice[ 'content' ]} content The notice content.\n * @param {Notice} options The notice options.\n * @return {Promise<void>}\n */\nexport const createNotice =\n\t(\n\t\t/**\n\t\t * Notice status.\n\t\t */\n\t\tstatus: Notice[ 'status' ] = 'info',\n\t\t/**\n\t\t * Notice content.\n\t\t */\n\t\tcontent: Notice[ 'content' ] = '',\n\t\t/**\n\t\t * Notice options.\n\t\t */\n\t\toptions?: Notice\n\t): ThunkAction =>\n\tasync ( { registry } ) => {\n\t\tregistry.dispatch( noticesStore ).createNotice( status, content, {\n\t\t\t...options,\n\t\t\tcontext: NOTICE_CONTEXT,\n\t\t} );\n\t};\n\n/**\n * Create an error notice.\n *\n * @param {string} content The notice content.\n * @param {Omit<Notice, 'status' | 'content'>} options The notice options.\n * @return {Promise<void>}\n */\nexport const createErrorNotice =\n\t(\n\t\t/**\n\t\t * Notice content.\n\t\t */\n\t\tcontent: string,\n\t\t/**\n\t\t * Notice options.\n\t\t */\n\t\toptions?: Omit< Notice, 'status' | 'content' >\n\t): ThunkAction =>\n\tasync ( { registry } ) => {\n\t\tregistry.dispatch( noticesStore ).createNotice( 'error', content, {\n\t\t\t...options,\n\t\t\tcontext: NOTICE_CONTEXT,\n\t\t} );\n\t};\n\n/**\n * Create a success notice.\n *\n * @param {string} content The notice content.\n * @param {Omit<Notice, 'status' | 'content'>} options The notice options.\n * @return {Promise<void>}\n */\nexport const createSuccessNotice =\n\t(\n\t\t/**\n\t\t * Notice content.\n\t\t */\n\t\tcontent: string,\n\t\t/**\n\t\t * Notice options.\n\t\t */\n\t\toptions?: Omit< Notice, 'status' | 'content' >\n\t): ThunkAction =>\n\tasync ( { registry } ) => {\n\t\tregistry.dispatch( noticesStore ).createNotice( 'success', content, {\n\t\t\t...options,\n\t\t\tcontext: NOTICE_CONTEXT,\n\t\t} );\n\t};\n\n/**\n * Remove a notice for a given context.\n *\n * @param {string} id The notice ID.\n * @return {Promise<void>}\n */\nexport const removeNotice =\n\t( id: string ): ThunkAction =>\n\tasync ( { registry } ) => {\n\t\tregistry.dispatch( noticesStore ).removeNotice( id, NOTICE_CONTEXT );\n\t};\n\n/**\n * Remove all notices for a given context.\n *\n * @param {string[]} ids The notice IDs.\n * @return {Promise<void>}\n */\nexport const removeAllNotices =\n\t( ids?: string[] ): ThunkAction =>\n\tasync ( { registry } ) => {\n\t\tif ( ids ) {\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.removeNotices( ids, NOTICE_CONTEXT );\n\t\t} else {\n\t\t\tconst notices = registry\n\t\t\t\t.select( noticesStore )\n\t\t\t\t.getNotices( NOTICE_CONTEXT );\n\t\t\tconst noticeIds = notices.map( ( notice ) => notice.id );\n\t\t\tregistry\n\t\t\t\t.dispatch( noticesStore )\n\t\t\t\t.removeNotices( noticeIds, NOTICE_CONTEXT );\n\t\t}\n\t};\n\n/*****************************************************\n * SECTION: Resolution actions\n *****************************************************/\n\n/**\n * Change status of a dispatch action request.\n *\n * @param {PopupsStore[ 'ActionNames' ]} actionName Action name to change status of.\n * @param {Statuses} status New status.\n * @param {string|undefined} message Optional error message.\n * @return {Object} Action object.\n */\nexport const changeActionStatus =\n\t(\n\t\tactionName: string,\n\t\tstatus: DispatchStatus,\n\t\tmessage?: string | { message: string; [ key: string ]: any }\n\t): ThunkAction =>\n\t( { dispatch } ) => {\n\t\tif ( message ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.log( actionName, message );\n\t\t}\n\n\t\tdispatch( {\n\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\tpayload: {\n\t\t\t\tactionName,\n\t\t\t\tstatus,\n\t\t\t\tmessage,\n\t\t\t},\n\t\t} );\n\t};\n\n/**\n * Invalidate resolution for an entity.\n *\n * @param {number | string} id The entity ID.\n * @return {Promise<void>}\n */\nexport const invalidateResolution =\n\t( id: number | string ): ThunkAction =>\n\t( { dispatch } ) => {\n\t\tdispatch( {\n\t\t\ttype: INVALIDATE_RESOLUTION,\n\t\t\tpayload: {\n\t\t\t\tid,\n\t\t\t},\n\t\t} );\n\t};\n\nexport default {\n\t/*****************************************************\n\t * SECTION: Entity actions\n\t *****************************************************/\n\tcreatePopup,\n\tupdatePopup,\n\tdeletePopup,\n\n\t/*****************************************************\n\t * SECTION: Editor actions\n\t *****************************************************/\n\teditRecord,\n\tsaveEditedRecord,\n\tundo,\n\tredo,\n\tresetRecordEdits,\n\tupdateEditorValues,\n\tsaveEditorValues,\n\tresetEditorValues,\n\tchangeEditorId,\n\n\t/*****************************************************\n\t * SECTION: Notice actions\n\t *****************************************************/\n\tcreateNotice,\n\tcreateErrorNotice,\n\tcreateSuccessNotice,\n\tremoveNotice,\n\tremoveAllNotices,\n\n\t/*****************************************************\n\t * SECTION: Resolution actions\n\t *****************************************************/\n\tchangeActionStatus,\n\tinvalidateResolution,\n};\n","import type { State } from './reducer';\nimport type { EditablePopup } from './types';\n\nexport const STORE_NAME = 'popup-maker/popups';\nexport const NOTICE_CONTEXT = 'pum-popup-editor';\n\n// Entity actions.\nexport const RECEIVE_RECORD = 'RECEIVE_RECORD';\nexport const RECEIVE_RECORDS = 'RECEIVE_RECORDS';\nexport const RECEIVE_QUERY_RECORDS = 'RECEIVE_QUERY_RECORDS';\nexport const RECEIVE_ERROR = 'RECEIVE_ERROR';\nexport const PURGE_RECORD = 'PURGE_RECORD';\nexport const PURGE_RECORDS = 'PURGE_RECORDS';\n\n// Editor actions.\nexport const EDITOR_CHANGE_ID = 'EDITOR_CHANGE_ID';\nexport const EDIT_RECORD = 'EDIT_RECORD';\nexport const START_EDITING_RECORD = 'START_EDITING_RECORD';\nexport const SAVE_EDITED_RECORD = 'SAVE_EDITED_RECORD';\nexport const UNDO_EDIT_RECORD = 'UNDO_EDIT_RECORD';\nexport const REDO_EDIT_RECORD = 'REDO_EDIT_RECORD';\nexport const RESET_EDIT_RECORD = 'RESET_EDIT_RECORD';\n\n// Resolution actions.\nexport const CHANGE_ACTION_STATUS = 'CHANGE_ACTION_STATUS';\nexport const START_RESOLUTION = 'START_RESOLUTION';\nexport const FINISH_RESOLUTION = 'FINISH_RESOLUTION';\nexport const FAIL_RESOLUTION = 'FAIL_RESOLUTION';\nexport const INVALIDATE_RESOLUTION = 'INVALIDATE_RESOLUTION';\n\nexport const ACTION_TYPES: {\n\t// Entity actions\n\tRECEIVE_RECORD: typeof RECEIVE_RECORD;\n\tRECEIVE_RECORDS: typeof RECEIVE_RECORDS;\n\tRECEIVE_QUERY_RECORDS: typeof RECEIVE_QUERY_RECORDS;\n\tRECEIVE_ERROR: typeof RECEIVE_ERROR;\n\tPURGE_RECORD: typeof PURGE_RECORD;\n\tPURGE_RECORDS: typeof PURGE_RECORDS;\n\n\t// Editor actions\n\tEDITOR_CHANGE_ID: typeof EDITOR_CHANGE_ID;\n\tEDIT_RECORD: typeof EDIT_RECORD;\n\tSTART_EDITING_RECORD: typeof START_EDITING_RECORD;\n\tSAVE_EDITED_RECORD: typeof SAVE_EDITED_RECORD;\n\tUNDO_EDIT_RECORD: typeof UNDO_EDIT_RECORD;\n\tREDO_EDIT_RECORD: typeof REDO_EDIT_RECORD;\n\tRESET_EDIT_RECORD: typeof RESET_EDIT_RECORD;\n\t// Resolution actions\n\tCHANGE_ACTION_STATUS: typeof CHANGE_ACTION_STATUS;\n\tSTART_RESOLUTION: typeof START_RESOLUTION;\n\tFINISH_RESOLUTION: typeof FINISH_RESOLUTION;\n\tFAIL_RESOLUTION: typeof FAIL_RESOLUTION;\n\tINVALIDATE_RESOLUTION: typeof INVALIDATE_RESOLUTION;\n} = {\n\tRECEIVE_RECORD,\n\tRECEIVE_RECORDS,\n\tRECEIVE_QUERY_RECORDS,\n\tRECEIVE_ERROR,\n\tPURGE_RECORDS,\n\tPURGE_RECORD,\n\tEDITOR_CHANGE_ID,\n\tEDIT_RECORD,\n\tSTART_EDITING_RECORD,\n\tSAVE_EDITED_RECORD,\n\tUNDO_EDIT_RECORD,\n\tREDO_EDIT_RECORD,\n\tRESET_EDIT_RECORD,\n\tCHANGE_ACTION_STATUS,\n\tSTART_RESOLUTION,\n\tFINISH_RESOLUTION,\n\tFAIL_RESOLUTION,\n\tINVALIDATE_RESOLUTION,\n};\n\n/**\n * Initial state for the popups store.\n */\nexport const initialState: State = {\n\tbyId: {},\n\tallIds: [],\n\tqueries: {},\n\teditorId: undefined,\n\teditedEntities: {},\n\teditHistory: {},\n\teditHistoryIndex: {},\n\tresolutionState: {},\n\tnotices: {},\n\terrors: {\n\t\tglobal: null,\n\t\tbyId: {},\n\t},\n};\n\n/**\n * Default values for a new notice.\n */\nexport const noticeDefaults = {\n\tid: '',\n\tmessage: '',\n\ttype: 'info',\n\tisDismissible: true,\n};\n\n/**\n * Default values for a new popup.\n *\n * This should be kept in sync with the settings in the PHP code.\n *\n * @see /classes/Models/Popup.php\n * @see /includes/namespaced/default-values.php\n * @see /classes/Model/Popup.php\n * @see /includes/functions/install.php:get_default_popup_settings()\n */\nexport const defaultValues: EditablePopup = {\n\tid: 0,\n\tuuid: '',\n\tslug: '',\n\ttitle: '',\n\tcontent: '',\n\texcerpt: '',\n\tstatus: 'draft',\n\tenabled: false,\n\tsettings: {\n\t\tconditions: {\n\t\t\tlogicalOperator: 'or',\n\t\t\titems: [],\n\t\t},\n\t},\n\t// Required Post fields\n\tdate: null,\n\tdate_gmt: null,\n\tguid: '',\n\tlink: '',\n\tmodified: '',\n\tmodified_gmt: '',\n\ttype: 'popup',\n\tauthor: 0,\n\tgenerated_slug: '',\n\tpermalink_template: '',\n\tpassword: '',\n\tfeatured_media: 0,\n\tcomment_status: 'open',\n\tping_status: 'open',\n\tformat: 'standard',\n\tmeta: {},\n\tsticky: false,\n\ttemplate: '',\n\tcategories: [],\n\ttags: [],\n};\n","import type {\n\tCurriedSelectorsOf,\n\tDispatchReturn,\n} from '@wordpress/data/src/types';\n\nexport { default as popupStore } from './store';\nexport * from './validation';\n\nexport {\n\tdefaultValues as defaultPopupValues,\n\tSTORE_NAME as POPUP_STORE,\n} from './constants';\n\nexport type * from './types/posttype';\n\nimport type { StoreDescriptor, StoreState } from './types/store';\n\ntype Selectors = CurriedSelectorsOf< StoreDescriptor >;\ntype Actions = DispatchReturn< StoreDescriptor >;\n\nexport type {\n\tStoreDescriptor as PopupStore,\n\tStoreState as PopupStoreState,\n\tSelectors as PopupStoreSelectors,\n\tActions as PopupStoreActions,\n};\n","import { ACTION_TYPES, initialState } from './constants';\n\nimport type { DispatchStatuses, ResolutionState } from '../constants';\nimport type { EditorId, Notice, GetRecordsHttpQuery } from '../types';\nimport type { Popup, EditablePopup } from './types';\nimport type { Operation } from 'fast-json-patch';\n\nconst {\n\tRECEIVE_RECORD,\n\tRECEIVE_RECORDS,\n\tRECEIVE_QUERY_RECORDS,\n\tRECEIVE_ERROR,\n\tPURGE_RECORD,\n\tPURGE_RECORDS,\n\tEDITOR_CHANGE_ID,\n\tEDIT_RECORD,\n\tSTART_EDITING_RECORD,\n\tSAVE_EDITED_RECORD,\n\tUNDO_EDIT_RECORD,\n\tREDO_EDIT_RECORD,\n\tRESET_EDIT_RECORD,\n\tINVALIDATE_RESOLUTION,\n\tCHANGE_ACTION_STATUS,\n} = ACTION_TYPES;\n\n/**\n * The shape of the state for the popups store.\n */\nexport type State = {\n\t/**\n\t * The popups by ID.\n\t */\n\tbyId: Record< number, Popup< 'edit' > >;\n\n\t/**\n\t * The IDs of all the popups.\n\t */\n\tallIds: number[];\n\n\t/**\n\t * The queries for the popups.\n\t */\n\tqueries?: Record< string, number[] >;\n\n\t/**\n\t * The ID of the editor.\n\t */\n\teditorId: number | undefined;\n\n\t/**\n\t * The edited entities.\n\t */\n\teditedEntities: Record< number, EditablePopup >;\n\n\t/**\n\t * The edit history for each popup.\n\t *\n\t * Each edit is an object with the same shape as the editable entity, but without the `id` property.\n\t */\n\teditHistory: Record< number, Operation[][] >;\n\n\t/**\n\t * The index of the current edit for each popup.\n\t */\n\teditHistoryIndex: Record< number, number >;\n\n\t/**\n\t * The resolution state for each operation.\n\t */\n\tresolutionState: Record< string | number, ResolutionState >;\n\n\t/**\n\t * The notices for the popups.\n\t */\n\tnotices: Record< string, Notice >;\n\n\t/**\n\t * The errors for the call to actions.\n\t */\n\terrors: {\n\t\tglobal: string | null;\n\t\tbyId: { [ id: number ]: string };\n\t};\n};\n\ntype BaseAction = {\n\ttype: keyof typeof ACTION_TYPES;\n\tpayload?: Record< string, any >;\n};\n\nexport type ReceiveRecordAction = BaseAction & {\n\ttype: typeof RECEIVE_RECORD;\n\tpayload: {\n\t\trecord: Popup< 'edit' >;\n\t};\n};\n\nexport type ReceiveRecordsAction = BaseAction & {\n\ttype: typeof RECEIVE_RECORDS;\n\tpayload: {\n\t\trecords: Popup< 'edit' >[];\n\t};\n};\n\nexport type ReceiveErrorAction = BaseAction & {\n\ttype: typeof RECEIVE_ERROR;\n\tpayload: {\n\t\tid?: number;\n\t\terror: string;\n\t};\n};\n\nexport type ReceiveQueryRecordsAction = BaseAction & {\n\ttype: typeof RECEIVE_QUERY_RECORDS;\n\tpayload: {\n\t\tquery: GetRecordsHttpQuery;\n\t\trecords: Popup< 'edit' >[];\n\t};\n};\n\nexport type PurgeRecordAction = BaseAction & {\n\ttype: typeof PURGE_RECORD;\n\tpayload: {\n\t\tid: Popup[ 'id' ];\n\t};\n};\n\nexport type PurgeRecordsAction = BaseAction & {\n\ttype: typeof PURGE_RECORDS;\n\tpayload: {\n\t\tids: Popup[ 'id' ][];\n\t};\n};\n\nexport type ChangeEditorAction = BaseAction & {\n\ttype: typeof EDITOR_CHANGE_ID;\n\tpayload: {\n\t\teditorId: EditorId;\n\t};\n};\n\nexport type StartEditingRecordAction = BaseAction & {\n\ttype: typeof START_EDITING_RECORD;\n\tpayload: {\n\t\tid: number;\n\t\teditableEntity: EditablePopup;\n\t\tsetEditorId: boolean;\n\t};\n};\n\nexport type EditRecordAction = BaseAction & {\n\ttype: typeof EDIT_RECORD;\n\tpayload: {\n\t\tid: number;\n\t\tedits: Operation[];\n\t};\n};\n\nexport type UndoEditRecordAction = BaseAction & {\n\ttype: typeof UNDO_EDIT_RECORD;\n\tpayload: {\n\t\tid: number;\n\t\tsteps: number;\n\t};\n};\n\nexport type RedoEditRecordAction = BaseAction & {\n\ttype: typeof REDO_EDIT_RECORD;\n\tpayload: {\n\t\tid: number;\n\t\tsteps: number;\n\t};\n};\n\nexport type ResetEditRecordAction = BaseAction & {\n\ttype: typeof RESET_EDIT_RECORD;\n\tpayload: {\n\t\tid: number;\n\t};\n};\n\nexport type SaveEditedRecordAction = BaseAction & {\n\ttype: typeof SAVE_EDITED_RECORD;\n\tpayload: {\n\t\tid: number;\n\t\thistoryIndex: number;\n\t\teditedEntity: EditablePopup;\n\t};\n};\n\nexport type ChangeActionStatusAction = BaseAction & {\n\ttype: typeof CHANGE_ACTION_STATUS;\n\tpayload: {\n\t\tactionName: string;\n\t\tstatus: DispatchStatuses;\n\t\tmessage?: string;\n\t};\n};\n\n// export type StartResolutionAction = BaseAction & {\n// \ttype: typeof START_RESOLUTION;\n// \tpayload: {\n// \t\tid: number | string;\n// \t\toperation: string;\n// \t};\n// };\n\n// export type FinishResolutionAction = BaseAction & {\n// \ttype: typeof FINISH_RESOLUTION;\n// \tpayload: {\n// \t\tid: number | string;\n// \t\toperation: string;\n// \t};\n// };\n\n// export type FailResolutionAction = BaseAction & {\n// \ttype: typeof FAIL_RESOLUTION;\n// \tpayload: {\n// \t\tid: number | string;\n// \t\toperation: string;\n// \t\terror: string;\n// \t\textra?: Record< string, any >;\n// \t};\n// };\n\nexport type InvalidateResolutionAction = BaseAction & {\n\ttype: typeof INVALIDATE_RESOLUTION;\n\tpayload: {\n\t\tid: number | string;\n\t\toperation: string;\n\t};\n};\n\nexport type ReducerAction =\n\t| ReceiveRecordAction\n\t| ReceiveRecordsAction\n\t| ReceiveQueryRecordsAction\n\t| ReceiveErrorAction\n\t| PurgeRecordAction\n\t| PurgeRecordsAction\n\t| ChangeEditorAction\n\t| StartEditingRecordAction\n\t| EditRecordAction\n\t| UndoEditRecordAction\n\t| RedoEditRecordAction\n\t| ResetEditRecordAction\n\t| SaveEditedRecordAction\n\t| ChangeActionStatusAction\n\t| InvalidateResolutionAction;\n\nexport const reducer = (\n\tstate: State = initialState,\n\taction: ReducerAction\n): State => {\n\tswitch ( action.type ) {\n\t\tcase RECEIVE_RECORD: {\n\t\t\tconst { record } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tbyId: {\n\t\t\t\t\t...state.byId,\n\t\t\t\t\t[ record.id ]: record,\n\t\t\t\t},\n\t\t\t\tallIds: state.allIds.includes( record.id )\n\t\t\t\t\t? state.allIds\n\t\t\t\t\t: [ ...state.allIds, record.id ],\n\t\t\t};\n\t\t}\n\n\t\tcase RECEIVE_RECORDS:\n\t\tcase RECEIVE_QUERY_RECORDS: {\n\t\t\tconst { records, query = false } = action.payload;\n\n\t\t\t// Add the new records to the byId object.\n\t\t\tconst byId = records.reduce< Record< number, Popup< 'edit' > > >(\n\t\t\t\t( acc, record ) => ( {\n\t\t\t\t\t...acc,\n\t\t\t\t\t[ record.id ]: record,\n\t\t\t\t} ),\n\t\t\t\tstate.byId\n\t\t\t);\n\n\t\t\t// Add the new records to the allIds array.\n\t\t\tconst allIds = Array.from(\n\t\t\t\tnew Set( [ ...state.allIds, ...records.map( ( r ) => r.id ) ] )\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tallIds,\n\t\t\t\tbyId,\n\t\t\t\tqueries: query\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...state.queries,\n\t\t\t\t\t\t\t[ JSON.stringify( query ) ]: records.map(\n\t\t\t\t\t\t\t\t( r ) => r.id\n\t\t\t\t\t\t\t),\n\t\t\t\t\t }\n\t\t\t\t\t: state.queries,\n\t\t\t};\n\t\t}\n\n\t\tcase RECEIVE_ERROR: {\n\t\t\tconst { error, id = false } = action.payload;\n\t\t\t// Ensure existing errors state or initialize if undefined\n\t\t\tconst prevErrors = state.errors || { global: null, byId: {} };\n\t\t\tconst newById = { ...prevErrors.byId };\n\t\t\tif ( id ) {\n\t\t\t\tnewById[ id ] = error;\n\t\t\t} else {\n\t\t\t\t// No id provided, set the global error\n\t\t\t\tprevErrors.global = error;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\terrors: {\n\t\t\t\t\tglobal: id ? prevErrors.global : error,\n\t\t\t\t\tbyId: newById,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase PURGE_RECORDS:\n\t\tcase PURGE_RECORD: {\n\t\t\tconst { ids = [], id = null } = action.payload;\n\n\t\t\tif ( id && id > 0 ) {\n\t\t\t\tids.push( id );\n\t\t\t}\n\n\t\t\tif ( ids.length === 0 ) {\n\t\t\t\treturn state;\n\t\t\t}\n\n\t\t\t// Remove the entity from the allIds array.\n\t\t\tconst allIds = state.allIds.filter(\n\t\t\t\t( _id ) => ! ids.includes( _id )\n\t\t\t);\n\n\t\t\t// Remove the entity from the byId object.\n\t\t\tconst byId = Object.fromEntries(\n\t\t\t\tObject.entries( state.byId ).filter(\n\t\t\t\t\t( [ _id ] ) => ! ids.includes( _id )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Remove the entity from the editedEntities object.\n\t\t\tconst editedEntities = Object.fromEntries(\n\t\t\t\tObject.entries( state.editedEntities ).filter(\n\t\t\t\t\t( [ _id ] ) => ! ids.includes( _id )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Remove the entity from the editHistory object.\n\t\t\tconst editHistory = Object.fromEntries(\n\t\t\t\tObject.entries( state.editHistory ).filter(\n\t\t\t\t\t( [ _id ] ) => ! ids.includes( _id )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Remove the entity from the editHistoryIndex object.\n\t\t\tconst editHistoryIndex = Object.fromEntries(\n\t\t\t\tObject.entries( state.editHistoryIndex ).filter(\n\t\t\t\t\t( [ _id ] ) => ! ids.includes( _id )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tbyId,\n\t\t\t\tallIds,\n\t\t\t\teditedEntities,\n\t\t\t\teditHistory,\n\t\t\t\teditHistoryIndex,\n\t\t\t};\n\t\t}\n\n\t\tcase EDITOR_CHANGE_ID: {\n\t\t\tconst { editorId } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditorId,\n\t\t\t};\n\t\t}\n\n\t\tcase START_EDITING_RECORD: {\n\t\t\tconst { id, editableEntity, setEditorId } = action.payload;\n\n\t\t\tconst newState = {\n\t\t\t\t...state,\n\t\t\t\teditedEntities: {\n\t\t\t\t\t...state.editedEntities,\n\t\t\t\t\t[ id ]: editableEntity,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tif ( ! setEditorId ) {\n\t\t\t\treturn newState;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...newState,\n\t\t\t\teditorId: id,\n\t\t\t};\n\t\t}\n\n\t\tcase EDIT_RECORD: {\n\t\t\tconst { id, edits } = action.payload;\n\n\t\t\tconst editHistory = state.editHistory[ id ] ?? [];\n\t\t\tconst currentIndex = state.editHistoryIndex[ id ] ?? -1;\n\n\t\t\t// If we're not at the end of history, we need to clear future edits\n\t\t\tconst newEditHistory =\n\t\t\t\tcurrentIndex < editHistory.length - 1\n\t\t\t\t\t? editHistory.slice( 0, currentIndex + 1 )\n\t\t\t\t\t: editHistory;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditHistory: {\n\t\t\t\t\t...state.editHistory,\n\t\t\t\t\t[ id ]: [ ...newEditHistory, edits ],\n\t\t\t\t},\n\t\t\t\teditHistoryIndex: {\n\t\t\t\t\t...state.editHistoryIndex,\n\t\t\t\t\t[ id ]: newEditHistory.length, // Points to the new edit\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase UNDO_EDIT_RECORD: {\n\t\t\tconst { id, steps = 1 } = action.payload;\n\n\t\t\tconst currentIndex = state.editHistoryIndex[ id ] ?? -1;\n\t\t\tconst newIndex = Math.max( -1, currentIndex - steps );\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditHistoryIndex: {\n\t\t\t\t\t...state.editHistoryIndex,\n\t\t\t\t\t[ id ]: newIndex,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase REDO_EDIT_RECORD: {\n\t\t\tconst { id, steps } = action.payload;\n\n\t\t\tconst currentIndex = state.editHistoryIndex[ id ] ?? -1;\n\t\t\t// Check if we have a history and if there are edits to redo\n\t\t\tconst maxIndex = ( state.editHistory[ id ]?.length ?? 0 ) - 1;\n\t\t\tconst newIndex =\n\t\t\t\tmaxIndex >= 0\n\t\t\t\t\t? Math.min( maxIndex, currentIndex + steps )\n\t\t\t\t\t: currentIndex;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditHistoryIndex: {\n\t\t\t\t\t...state.editHistoryIndex,\n\t\t\t\t\t[ id ]: newIndex,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase SAVE_EDITED_RECORD: {\n\t\t\tconst { id, historyIndex, editedEntity } = action.payload;\n\n\t\t\t// Get all edits up to current index\n\t\t\tconst remainingEdits = state.editHistory[ id ].slice(\n\t\t\t\thistoryIndex + 1\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\teditedEntities: {\n\t\t\t\t\t...state.editedEntities,\n\t\t\t\t\t[ id ]: editedEntity,\n\t\t\t\t},\n\t\t\t\teditHistory: {\n\t\t\t\t\t...state.editHistory,\n\t\t\t\t\t[ id ]: remainingEdits,\n\t\t\t\t},\n\t\t\t\teditHistoryIndex: {\n\t\t\t\t\t...state.editHistoryIndex,\n\t\t\t\t\t[ id ]: -1,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase RESET_EDIT_RECORD: {\n\t\t\tconst { id } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t// Remove all edit history for this record.\n\t\t\t\teditedEntities: Object.fromEntries(\n\t\t\t\t\tObject.entries( state.editedEntities ).filter(\n\t\t\t\t\t\t( [ _id ] ) => Number( _id ) !== id\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\teditHistory: Object.fromEntries(\n\t\t\t\t\tObject.entries( state.editHistory ).filter(\n\t\t\t\t\t\t( [ _id ] ) => Number( _id ) !== id\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\teditHistoryIndex: Object.fromEntries(\n\t\t\t\t\tObject.entries( state.editHistoryIndex ).filter(\n\t\t\t\t\t\t( [ _id ] ) => Number( _id ) !== id\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tcase CHANGE_ACTION_STATUS: {\n\t\t\tconst { actionName, status, message } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tresolutionState: {\n\t\t\t\t\t...state.resolutionState,\n\t\t\t\t\t[ actionName ]: {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\terror: message,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\t// case START_RESOLUTION: {\n\t\t// \tconst { id, operation } = action.payload;\n\n\t\t// \treturn {\n\t\t// \t\t...state,\n\t\t// \t\tresolutionState: {\n\t\t// \t\t\t...state.resolutionState,\n\t\t// \t\t\t[ operation ]: {\n\t\t// \t\t\t\t...state.resolutionState?.[ operation ],\n\t\t// \t\t\t\t[ id ]: {\n\t\t// \t\t\t\t\tstatus: DispatchStatus.Resolving,\n\t\t// \t\t\t\t\ttimestamp: Date.now(),\n\t\t// \t\t\t\t},\n\t\t// \t\t\t},\n\t\t// \t\t},\n\t\t// \t};\n\t\t// }\n\n\t\t// case FINISH_RESOLUTION: {\n\t\t// \tconst { id, operation } = action.payload;\n\n\t\t// \treturn {\n\t\t// \t\t...state,\n\t\t// \t\tresolutionState: {\n\t\t// \t\t\t...state.resolutionState,\n\t\t// \t\t\t[ operation ]: {\n\t\t// \t\t\t\t...state.resolutionState?.[ operation ],\n\t\t// \t\t\t\t[ id ]: {\n\t\t// \t\t\t\t\tstatus: DispatchStatus.Success,\n\t\t// \t\t\t\t\ttimestamp: Date.now(),\n\t\t// \t\t\t\t},\n\t\t// \t\t\t},\n\t\t// \t\t},\n\t\t// \t};\n\t\t// }\n\n\t\t// case FAIL_RESOLUTION: {\n\t\t// \tconst { id, operation, error, extra } = action.payload;\n\n\t\t// \treturn {\n\t\t// \t\t...state,\n\t\t// \t\tresolutionState: {\n\t\t// \t\t\t...state.resolutionState,\n\t\t// \t\t\t[ operation ]: {\n\t\t// \t\t\t\t...state.resolutionState?.[ operation ],\n\t\t// \t\t\t\t[ id ]: {\n\t\t// \t\t\t\t\tstatus: DispatchStatus.Error,\n\t\t// \t\t\t\t\terror: error,\n\t\t// \t\t\t\t\textra: extra,\n\t\t// \t\t\t\t\ttimestamp: Date.now(),\n\t\t// \t\t\t\t},\n\t\t// \t\t\t},\n\t\t// \t\t},\n\t\t// \t};\n\t\t// }\n\n\t\tcase INVALIDATE_RESOLUTION: {\n\t\t\tconst { id, operation } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tresolutionState: {\n\t\t\t\t\t...state.resolutionState,\n\t\t\t\t\t[ operation ]: {\n\t\t\t\t\t\t...state.resolutionState?.[ operation ],\n\t\t\t\t\t\t[ id ]: undefined,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport default reducer;\n","import {\n\tappendUrlParams,\n\tfetchFromApi,\n\t//getErrorMessage\n} from '../utils';\nimport { RECEIVE_RECORDS, RECEIVE_RECORD } from './constants';\nimport type { ReducerAction } from './reducer';\n\nimport type { Popup, ThunkAction } from './types';\n\nexport const getPopups =\n\t(): ThunkAction =>\n\tasync ( { dispatch } ) => {\n\t\t// const action = 'getAll';\n\n\t\ttry {\n\t\t\t// dispatch.startResolution( action );\n\n\t\t\tconst urlParams = {\n\t\t\t\tstatus: [ 'any', 'trash', 'auto-draft' ],\n\t\t\t\tper_page: 100,\n\t\t\t\tcontext: 'edit',\n\t\t\t};\n\n\t\t\tconst url = appendUrlParams( 'popups', urlParams );\n\n\t\t\tconst results = await fetchFromApi< Popup< 'edit' >[] >( url, {\n\t\t\t\tmethod: 'GET',\n\t\t\t} );\n\n\t\t\tif ( results.length ) {\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: RECEIVE_RECORDS,\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\trecords: results,\n\t\t\t\t\t},\n\t\t\t\t} as ReducerAction );\n\t\t\t\t// dispatch.finishResolution( action );\n\t\t\t}\n\n\t\t\t// dispatch.failResolution( action, 'No call to actions found' );\n\t\t} catch ( error: any ) {\n\t\t\t// const errorMessage = getErrorMessage( error );\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( error );\n\t\t\t// dispatch.failResolution( action, errorMessage );\n\t\t}\n\t};\n\nexport const getPopup =\n\t( id: number ): ThunkAction =>\n\tasync ( { dispatch } ) => {\n\t\t// const action = 'getById';\n\t\ttry {\n\t\t\t// dispatch.startResolution( action );\n\n\t\t\tconst url = appendUrlParams( `popups/${ id }`, {\n\t\t\t\tcontext: 'edit',\n\t\t\t} );\n\n\t\t\tconst record = await fetchFromApi< Popup< 'edit' > >( url, {\n\t\t\t\tmethod: 'GET',\n\t\t\t} );\n\n\t\t\tdispatch( {\n\t\t\t\ttype: RECEIVE_RECORD,\n\t\t\t\tpayload: {\n\t\t\t\t\trecord,\n\t\t\t\t},\n\t\t\t} as ReducerAction );\n\n\t\t\t// dispatch.finishResolution( action );\n\t\t} catch ( error: any ) {\n\t\t\t// const errorMessage = getErrorMessage( error );\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( error );\n\t\t\t// dispatch.failResolution( action, errorMessage );\n\t\t}\n\t};\n\nexport default {\n\tgetPopups,\n\tgetPopup,\n};\n","import { applyPatch } from 'fast-json-patch';\n\nimport { applyFilters } from '@wordpress/hooks';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { createRegistrySelector, createSelector } from '@wordpress/data';\n\nimport { DispatchStatus } from '../constants';\nimport { defaultValues, NOTICE_CONTEXT } from './constants';\n\nimport type { Notice } from '../types';\nimport type { State } from './reducer';\nimport type { Popup, EditablePopup } from './types';\n\n/*****************************************************\n * SECTION: Entity selectors\n *****************************************************/\n\n/**\n * Get all entities.\n *\n * @return {Popup[]} All entities.\n */\nexport const getPopups = createSelector(\n\t( state: State ) => state.allIds.map( ( id ) => state.byId[ id ] ),\n\t( state: State ) => [ state.allIds, state.byId ]\n);\n\n/**\n * Get a single entity.\n *\n * @param {number} id - The ID of the entity to get.\n *\n * @return {Popup} The entity.\n */\nexport const getPopup = createSelector(\n\t( state: State, id: number ) => {\n\t\tconst record = state?.byId?.[ id ];\n\t\treturn record;\n\t},\n\t( state: State, id: number ) => [ state, id ]\n);\n\n/**\n * Get the error for a specific entity.\n */\nexport const getFetchError = createSelector(\n\t( state: State, id?: number ) => {\n\t\tif ( typeof id === 'number' ) {\n\t\t\treturn state.errors.byId[ id ];\n\t\t}\n\t\treturn state.errors.global;\n\t},\n\t( state: State, id: number | string ) => [ state.errors, id ]\n);\n\n/**\n * Get filtered entities.\n *\n * TODO Should this be a createSelector?\n *\n * @param {State} state The state.\n * @param {Function} predicate - The predicate to filter the entities.\n * @param {boolean} maintainOrder - Whether to maintain the order of the entities.\n *\n * @return {Popup< 'edit' >[]} The filtered entities.\n */\nexport const getFiltered = (\n\tstate: State,\n\tpredicate: ( item: Popup< 'edit' > ) => boolean,\n\tmaintainOrder: boolean = false\n) => {\n\tif ( ! maintainOrder ) {\n\t\treturn state.allIds\n\t\t\t.map( ( id ) => state.byId[ id ] )\n\t\t\t.filter( predicate );\n\t}\n\n\treturn getFilteredIds( state, predicate ).map( ( id ) => state.byId[ id ] );\n};\n\n/**\n * Get filtered entity IDs.\n *\n * TODO Should this be a createSelector?\n *\n * @param {State} state The state.\n * @param {Function} predicate The predicate to filter the entities.\n *\n * @return {number[]} The filtered entity IDs.\n */\nexport const getFilteredIds = (\n\tstate: State,\n\tpredicate: ( item: Popup< 'edit' > ) => boolean\n) => state.allIds.filter( ( id ) => predicate( state.byId[ id ] ) );\n\n/*****************************************************\n * SECTION: Editor selectors\n *****************************************************/\n\n/**\n * Get the editor ID.\n *\n * @return {number | string} The editor ID.\n */\nexport const getEditorId = createSelector(\n\t( state: State ) => state?.editorId,\n\t( state: State ) => [ state.editorId ]\n);\n\n/**\n * Check if the editor is active.\n *\n * @return {boolean} Whether the editor is active.\n */\nexport const isEditorActive = createSelector(\n\t( state: State ): boolean => {\n\t\tconst editorId = state?.editorId;\n\n\t\t// TODO Support non-presaved new entities.\n\t\tif ( typeof editorId === 'string' && editorId === 'new' ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn typeof editorId === 'number' && editorId > 0;\n\t},\n\t( state: State ) => [ state.editorId ]\n);\n\n/**\n * Get the current editor values.\n *\n * @return {EditablePopup | undefined} The current editor values.\n */\nexport const getCurrentEditorValues = createSelector(\n\t( state: State ) => {\n\t\tconst editorId = state?.editorId;\n\n\t\tif ( typeof editorId === 'undefined' ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn getEditedPopup( state, editorId );\n\t},\n\t( state: State ) => [\n\t\tstate.editedEntities?.[ state.editorId || 0 ],\n\t\tstate.editHistoryIndex?.[ state.editorId || 0 ],\n\t\tstate.editHistory?.[ state.editorId || 0 ],\n\t\tstate.editorId,\n\t]\n);\n\n/**\n * Check if the entity has been edited.\n *\n * @param {number} id - The ID of the entity to check.\n *\n * @return {boolean} Whether the entity has been edited.\n */\nexport const hasEditedEntity = createSelector(\n\t( state: State, id: number ) => {\n\t\treturn !! state?.editedEntities?.[ id ];\n\t},\n\t( state: State, id: number ) => [ state.editedEntities?.[ id ], id ]\n);\n\n/**\n * Get the edited entity.\n *\n * @param {number} id - The ID of the entity to get.\n *\n * @return {EditablePopup} The edited entity.\n */\nexport const getEditedEntity = createSelector(\n\t( state: State, id: number ) => {\n\t\treturn state?.editedEntities?.[ id ];\n\t},\n\t( state: State, id: number ) => [ state.editedEntities?.[ id ], id ]\n);\n\n/**\n * Get the edit history for an entity.\n *\n * @param {number} id - The ID of the entity to get.\n *\n * @return {Operation[][]} The edit history operations.\n */\nexport const getEntityEditHistory = createSelector(\n\t( state: State, id: number ) => {\n\t\treturn state?.editHistory?.[ id ];\n\t},\n\t( state: State, id: number ) => [ state.editHistory?.[ id ], id ]\n);\n\n/**\n * Get the current edit history index.\n *\n * @param {number} id - The ID of the entity to get.\n *\n * @return {number} The current edit history index.\n */\nexport const getCurrentEditHistoryIndex = createSelector(\n\t( state: State, id: number ) => {\n\t\treturn state.editHistoryIndex?.[ id ];\n\t},\n\t( state: State, id: number ) => [ state.editHistoryIndex?.[ id ], id ]\n);\n\n/**\n * Check if the entity has edits.\n *\n * @param {number} id - The ID of the entity to check.\n *\n * @return {boolean} Whether the entity has edits.\n */\nexport const hasEdits = createSelector(\n\t( state: State, id: number ) => {\n\t\treturn state.editHistory?.[ id ]?.length > 0;\n\t},\n\t( state: State, id: number ) => [ state.editHistory?.[ id ], id ]\n);\n\n/**\n * Check if the entity can be undone.\n *\n * @param {number} id - The ID of the entity to check.\n *\n * @return {boolean} Whether the entity can be undone.\n */\nexport const hasUndo = createSelector(\n\t( state: State, id: number ) => {\n\t\tif (\n\t\t\ttypeof state.editHistoryIndex?.[ id ] !== 'number' ||\n\t\t\ttypeof state.editHistory?.[ id ] !== 'object'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn state.editHistoryIndex?.[ id ] >= 0;\n\t},\n\t( state: State, id: number ) => [ state.editHistoryIndex?.[ id ], id ]\n);\n\n/**\n * Check if the entity can be redone.\n *\n * @param {number} id - The ID of the entity to check.\n *\n * @return {boolean} Whether the entity can be redone.\n */\nexport const hasRedo = createSelector(\n\t( state: State, id: number ) => {\n\t\tif (\n\t\t\ttypeof state.editHistoryIndex?.[ id ] !== 'number' ||\n\t\t\ttypeof state.editHistory?.[ id ] !== 'object'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn (\n\t\t\tstate.editHistoryIndex?.[ id ] <\n\t\t\tstate.editHistory?.[ id ]?.length - 1\n\t\t);\n\t},\n\t( state: State, id: number ) => [ state.editHistoryIndex?.[ id ], id ]\n);\n\n/**\n * Get the edited popup.\n *\n * This applies all edits to the entity up to the current edit history index.\n *\n * @param {number} id - The ID of the entity to get.\n *\n * @return {EditablePopup} The current entity values.\n */\nexport const getEditedPopup = createSelector(\n\t( state: State, id: number ) => {\n\t\tconst baseEntity = state.editedEntities?.[ id ];\n\t\tconst editHistory = state.editHistory?.[ id ];\n\t\tconst editHistoryIndex = state.editHistoryIndex?.[ id ];\n\n\t\tif ( ! baseEntity ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// If index is -1, return base entity without edits\n\t\tif ( editHistoryIndex === -1 ) {\n\t\t\treturn baseEntity;\n\t\t}\n\n\t\tif ( ! editHistory?.length ) {\n\t\t\treturn baseEntity;\n\t\t}\n\n\t\t// Get the edits up to the current index\n\t\tconst editsToApply = editHistory.slice( 0, editHistoryIndex + 1 );\n\n\t\t// Apply each patch set in sequence\n\t\tconst editedEntity = editsToApply.reduce( ( entity, patchSet ) => {\n\t\t\tconst patchArray = Array.isArray( patchSet )\n\t\t\t\t? patchSet\n\t\t\t\t: [ patchSet ];\n\n\t\t\tconst patched = applyPatch( entity, patchArray, true, false );\n\t\t\treturn patched.newDocument;\n\t\t}, baseEntity );\n\n\t\treturn editedEntity;\n\t},\n\t( state: State, id: number ) => [\n\t\tstate.editedEntities?.[ id ],\n\t\tstate.editHistoryIndex?.[ id ],\n\t\tstate.editHistory?.[ id ],\n\t\tid,\n\t]\n);\n\n/**\n * Get default entity values.\n */\nexport const getDefaultValues = createSelector(\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t( _state: State ) => {\n\t\treturn applyFilters(\n\t\t\t'popupMaker.popup.defaultValues',\n\t\t\tdefaultValues\n\t\t) as EditablePopup;\n\t},\n\t( _state: State ) => [ _state.editorId ]\n);\n\n/*****************************************************\n * SECTION: Notice selectors\n *****************************************************/\n\n/**\n * Get notices.\n */\nexport const getNotices = createRegistrySelector( ( select ) => () => {\n\tconst notices = select( noticesStore ).getNotices( NOTICE_CONTEXT );\n\treturn ( notices || [] ) as Notice[];\n} );\n\n/**\n * Get notice by id.\n */\nexport const getNoticeById = createRegistrySelector(\n\t( select ) =>\n\t\t( id: string ): Notice | undefined => {\n\t\t\tconst notices = select( noticesStore ).getNotices( NOTICE_CONTEXT );\n\t\t\treturn notices?.find( ( n ) => n.id === id ) as Notice | undefined;\n\t\t}\n);\n\n/*****************************************************\n * SECTION: Resolution state selectors\n *****************************************************/\n\n/**\n * Get resolution state for a specific entity.\n */\nexport const getResolutionState = createSelector(\n\t( state: State, id: number | string ) => {\n\t\tconst resolutionState = state.resolutionState?.[ id ];\n\n\t\t// If no resolution state exists, return idle\n\t\tif ( ! resolutionState ) {\n\t\t\treturn {\n\t\t\t\tstatus: DispatchStatus.Idle,\n\t\t\t};\n\t\t}\n\n\t\treturn resolutionState;\n\t},\n\t( state: State, id: number | string ) => [ state.resolutionState, id ]\n);\n\n/**\n * Check if a resolution is idle.\n */\nexport const isIdle = createSelector(\n\t( state: State, id: number | string ) => {\n\t\tconst resolutionState = getResolutionState( state, id );\n\t\treturn resolutionState.status === DispatchStatus.Idle;\n\t},\n\t( _state: State, id: number | string ) => [ id ]\n);\n\n/**\n * Check if an entity is currently being resolved.\n */\nexport const isResolving = createSelector(\n\t( state: State, id: number | string ) => {\n\t\tconst resolutionState = getResolutionState( state, id );\n\t\treturn resolutionState.status === DispatchStatus.Resolving;\n\t},\n\t( _state: State, id: number | string ) => [ id ]\n);\n\n/**\n * Check if an entity resolution has completed successfully.\n */\nexport const hasResolved = createSelector(\n\t( state: State, id: number | string ) => {\n\t\tconst resolutionState = getResolutionState( state, id );\n\t\treturn resolutionState.status === DispatchStatus.Success;\n\t},\n\t( _state: State, id: number | string ) => [ id ]\n);\n\n/**\n * Check if an entity resolution has failed.\n */\nexport const hasFailed = createSelector(\n\t( state: State, id: number | string ) => {\n\t\tconst resolutionState = getResolutionState( state, id );\n\t\treturn resolutionState.status === DispatchStatus.Error;\n\t},\n\t( _state: State, id: number | string ) => [ id ]\n);\n\n/**\n * Get the error for a failed resolution.\n */\nexport const getResolutionError = createSelector(\n\t( state: State, id: number | string ) => {\n\t\tconst resolutionState = getResolutionState( state, id );\n\t\treturn resolutionState.error;\n\t},\n\t( state: State, id: number | string ) => [ state.resolutionState, id ]\n);\n\nexport default {\n\t/*****************************************************\n\t * SECTION: Entity selectors\n\t *****************************************************/\n\tgetPopups,\n\tgetPopup,\n\tgetFetchError,\n\tgetFiltered,\n\tgetFilteredIds,\n\n\t/*****************************************************\n\t * SECTION: Editor selectors\n\t *****************************************************/\n\tgetEditorId,\n\tisEditorActive,\n\tgetCurrentEditorValues,\n\thasEditedEntity,\n\tgetEditedEntity,\n\tgetEntityEditHistory,\n\tgetCurrentEditHistoryIndex,\n\thasEdits,\n\thasUndo,\n\thasRedo,\n\tgetEditedPopup,\n\tgetDefaultValues,\n\n\t/*****************************************************\n\t * SECTION: Notice selectors\n\t *****************************************************/\n\tgetNotices,\n\tgetNoticeById,\n\n\t/*****************************************************\n\t * SECTION: Resolution state selectors\n\t *****************************************************/\n\tgetResolutionState,\n\tisIdle,\n\tisResolving,\n\thasResolved,\n\thasFailed,\n\tgetResolutionError,\n};\n","import { createReduxStore } from '@wordpress/data';\n\nimport reducer from './reducer';\nimport actions from './actions';\nimport selectors from './selectors';\nimport resolvers from './resolvers';\nimport { STORE_NAME, initialState } from './constants';\n\nimport type { StoreState, StoreActions, StoreSelectors } from './types';\n\n/**\n * Generate store config.\n */\nexport const storeConfig = () => ( {\n\tinitialState,\n\treducer,\n\tactions,\n\tselectors,\n\tresolvers,\n} );\n\n/**\n * Store definition for the code data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n */\nconst store = createReduxStore< StoreState, StoreActions, StoreSelectors >(\n\tSTORE_NAME,\n\tstoreConfig()\n);\n\nexport default store;\n","import type { Updatable } from '@wordpress/core-data';\nimport type { BaseEntity } from '../types';\n\n// Simple type guard for RenderedText fields\nexport function isRenderedText(\n\tvalue: any\n): value is { raw: string; rendered: string } {\n\treturn value && typeof value === 'object' && 'raw' in value;\n}\n\n/**\n * Convert an entity to an editable entity.\n *\n * @param {T} entity The entity to convert.\n * @return {Updatable<T>} The editable entity.\n */\nexport function editableEntity< T extends BaseEntity< 'edit' > >(\n\tentity: T\n): Updatable< T > {\n\treturn Object.fromEntries(\n\t\tObject.entries( entity ).map( ( [ key, value ] ) => [\n\t\t\tkey,\n\t\t\tisRenderedText( value ) ? value.raw : value,\n\t\t] )\n\t) as Updatable< T >;\n}\n","import { __ } from '@popup-maker/i18n';\n\nimport type { Popup } from './types';\nimport type { Updatable } from '@wordpress/core-data';\n\n/**\n * Checks of the set values are valid.\n *\n * @param {Popup} popup Popup to validate.\n *\n * @return {boolean} True when set values are valid.\n */\nexport const validatePopup = (\n\tpopup: Partial< Updatable< Popup< 'edit' > > >\n):\n\t| true\n\t| {\n\t\t\tmessage: string;\n\t\t\ttabName?: string;\n\t\t\tfield?: string;\n\t\t\t[ key: string ]: any;\n\t } => {\n\tif ( ! popup ) {\n\t\treturn {\n\t\t\tmessage: __( 'Popup not found', 'popup-maker' ),\n\t\t};\n\t}\n\n\tif ( popup.title && ! popup.title?.length ) {\n\t\treturn {\n\t\t\tmessage: __(\n\t\t\t\t'Please provide a name for this popup.',\n\t\t\t\t'popup-maker'\n\t\t\t),\n\t\t\ttabName: 'general',\n\t\t\tfield: 'title',\n\t\t};\n\t}\n\n\tif (\n\t\t! popup.settings?.conditions?.items?.length &&\n\t\tpopup.status === 'publish'\n\t) {\n\t\treturn {\n\t\t\tmessage: __(\n\t\t\t\t'Please provide at least one condition for this popup before enabling it.',\n\t\t\t\t'popup-maker'\n\t\t\t),\n\t\t\ttabName: 'content',\n\t\t};\n\t}\n\n\treturn true;\n};\n","import { __ } from '@popup-maker/i18n';\n\nimport { DispatchStatus } from '../constants';\nimport { getErrorMessage, fetchFromApi } from '../utils';\n\nimport { ACTION_TYPES } from './constants';\nimport { apiPath } from './utils';\n\nimport type { ReducerAction } from './reducer';\nimport type { Settings, ThunkAction } from './types';\n\nconst {\n\tUPDATE,\n\tSAVE_CHANGES,\n\tSTAGE_CHANGES,\n\tHYDRATE,\n\tCHANGE_ACTION_STATUS,\n\tINVALIDATE_RESOLUTION,\n} = ACTION_TYPES;\n\n/*****************************************************\n * SECTION: Settings actions\n *****************************************************/\nconst settingsActions = {\n\t/**\n\t * Update settings.\n\t *\n\t * @param {Partial<Settings>} settings Settings to update.\n\t *\n\t * @return {ThunkAction} The action.\n\t */\n\tupdateSettings:\n\t\t(\n\t\t\t/**\n\t\t\t * Settings to update.\n\t\t\t */\n\t\t\tsettings: Partial< Settings >\n\t\t): ThunkAction =>\n\t\tasync ( { dispatch, resolveSelect } ) => {\n\t\t\tconst actionName = 'updateSettings';\n\n\t\t\ttry {\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Resolving\n\t\t\t\t);\n\n\t\t\t\tconst currentSettings = await resolveSelect.getSettings();\n\n\t\t\t\tconst result = await fetchFromApi< Settings >( apiPath(), {\n\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tsettings: { ...currentSettings, ...settings },\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tif ( result ) {\n\t\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\t\tactionName,\n\t\t\t\t\t\tDispatchStatus.Success\n\t\t\t\t\t);\n\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: UPDATE,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tsettings: result,\n\t\t\t\t\t\t},\n\t\t\t\t\t} as ReducerAction );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Error,\n\t\t\t\t\t__(\n\t\t\t\t\t\t'An error occurred, settings were not saved.',\n\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Error,\n\t\t\t\t\tgetErrorMessage( error )\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\n\t/**\n\t * Save staged/unsaved changes.\n\t *\n\t * @param {Partial<Settings>} settings Settings to save.\n\t *\n\t * @return {ThunkAction} The action.\n\t */\n\tsaveSettings:\n\t\t(\n\t\t\t/**\n\t\t\t * Settings to save.\n\t\t\t */\n\t\t\tsettings?: Partial< Settings >\n\t\t): ThunkAction =>\n\t\tasync ( { dispatch, resolveSelect } ) => {\n\t\t\tconst actionName = 'saveSettings';\n\n\t\t\ttry {\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Resolving\n\t\t\t\t);\n\n\t\t\t\tconst currentSettings = await resolveSelect.getSettings();\n\n\t\t\t\tconst unsavedChanges = await resolveSelect.getUnsavedChanges();\n\n\t\t\t\tconst result = await fetchFromApi< Settings >( apiPath(), {\n\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\t...currentSettings,\n\t\t\t\t\t\t\t...unsavedChanges,\n\t\t\t\t\t\t\t...settings,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tif ( result ) {\n\t\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\t\tactionName,\n\t\t\t\t\t\tDispatchStatus.Success\n\t\t\t\t\t);\n\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: SAVE_CHANGES,\n\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\tsettings: result,\n\t\t\t\t\t\t},\n\t\t\t\t\t} as ReducerAction );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Error,\n\t\t\t\t\t__(\n\t\t\t\t\t\t'An error occurred, settings were not saved.',\n\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Error,\n\t\t\t\t\tgetErrorMessage( error )\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\n\t/**\n\t * Stage unsaved changes.\n\t *\n\t * @param {Partial<Settings>} settings Settings to stage.\n\t *\n\t * @return {ReducerAction} The action.\n\t */\n\tstageUnsavedChanges: (\n\t\t/**\n\t\t * Settings to stage.\n\t\t */\n\t\tsettings: Partial< Settings >\n\t): ReducerAction => {\n\t\treturn {\n\t\t\ttype: STAGE_CHANGES,\n\t\t\tpayload: {\n\t\t\t\tsettings,\n\t\t\t},\n\t\t} as ReducerAction;\n\t},\n\n\t/**\n\t * Hydrate settings.\n\t *\n\t * @param {Settings} settings Settings to hydrate.\n\t *\n\t * @return {ReducerAction} The action.\n\t */\n\thydrate: (\n\t\t/**\n\t\t * Settings to hydrate.\n\t\t */\n\t\tsettings: Settings\n\t): ReducerAction => {\n\t\treturn {\n\t\t\ttype: HYDRATE,\n\t\t\tpayload: {\n\t\t\t\tsettings,\n\t\t\t},\n\t\t} as ReducerAction;\n\t},\n};\n\n/*****************************************************\n * SECTION: Resolution actions\n *****************************************************/\nconst resolutionActions = {\n\t/**\n\t * Change status of a dispatch action request.\n\t *\n\t * @param {CallToActionsStore[ 'ActionNames' ]} actionName Action name to change status of.\n\t * @param {Statuses} status New status.\n\t * @param {string|undefined} message Optional error message.\n\t * @return {Object} Action object.\n\t */\n\tchangeActionStatus:\n\t\t(\n\t\t\tactionName: string,\n\t\t\tstatus: DispatchStatus,\n\t\t\tmessage?: string | { message: string; [ key: string ]: any }\n\t\t): ThunkAction =>\n\t\t( { dispatch } ) => {\n\t\t\tif ( message ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.log( actionName, message );\n\t\t\t}\n\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tactionName,\n\t\t\t\tstatus,\n\t\t\t\tmessage,\n\t\t\t} );\n\t\t},\n\n\t/**\n\t * Start resolution for an entity.\n\t */\n\t// startResolution:\n\t// \t( id: number | string, operation: string = 'fetch' ) =>\n\t// \t( { dispatch } ) => {\n\t// \t\tconsole.log( 'startResolution', id, operation );\n\t// \t\tdispatch( {\n\t// \t\t\ttype: START_RESOLUTION,\n\t// \t\t\tpayload: {\n\t// \t\t\t\tid,\n\t// \t\t\t\toperation,\n\t// \t\t\t},\n\t// \t\t} );\n\t// \t},\n\n\t/**\n\t * Finish resolution for an entity.\n\t */\n\t// finishResolution:\n\t// \t( id: number | string, operation: string = 'fetch' ) =>\n\t// \t( { dispatch } ) => {\n\t// \t\tdispatch( {\n\t// \t\t\ttype: FINISH_RESOLUTION,\n\t// \t\t\tpayload: {\n\t// \t\t\t\tid,\n\t// \t\t\t\toperation,\n\t// \t\t\t},\n\t// \t\t} );\n\t// \t},\n\n\t/**\n\t * Fail resolution for an entity.\n\t */\n\t// failResolution:\n\t// \t(\n\t// \t\tid: number | string,\n\t// \t\terror: string,\n\t// \t\toperation: string = 'fetch',\n\t// \t\textra?: Record< string, any >\n\t// \t): ThunkAction =>\n\t// \t( { dispatch } ) => {\n\t// \t\tdispatch( {\n\t// \t\t\ttype: FAIL_RESOLUTION,\n\t// \t\t\tpayload: {\n\t// \t\t\t\tid,\n\t// \t\t\t\terror,\n\t// \t\t\t\toperation,\n\t// \t\t\t\textra,\n\t// \t\t\t},\n\t// \t\t} );\n\t// \t},\n\n\t/**\n\t * Invalidate resolution for an entity.\n\t *\n\t * @param {number | string} id The entity ID.\n\t * @return {Promise<void>}\n\t */\n\tinvalidateResolution:\n\t\t( id: number | string ): ThunkAction =>\n\t\t( { dispatch } ) => {\n\t\t\tdispatch( {\n\t\t\t\ttype: INVALIDATE_RESOLUTION,\n\t\t\t\tpayload: {\n\t\t\t\t\tid,\n\t\t\t\t},\n\t\t\t} );\n\t\t},\n};\n\nconst actions = {\n\t// Settings actions\n\t...settingsActions,\n\t// Resolution state actions\n\t...resolutionActions,\n};\n\nexport default actions;\n","import { applyFilters } from '@wordpress/hooks';\n\nimport type { State } from './reducer';\nimport type { Settings } from './types';\n\nexport const STORE_NAME = 'popup-maker/settings';\n\nexport const UPDATE = 'UPDATE';\nexport const STAGE_CHANGES = 'STAGE_CHANGES';\nexport const SAVE_CHANGES = 'SAVE_CHANGES';\nexport const HYDRATE = 'HYDRATE';\nexport const CHANGE_ACTION_STATUS = 'CHANGE_ACTION_STATUS';\nexport const INVALIDATE_RESOLUTION = 'INVALIDATE_RESOLUTION';\nexport const SETTINGS_FETCH_ERROR = 'SETTINGS_FETCH_ERROR';\n\nexport const ACTION_TYPES: {\n\tUPDATE: typeof UPDATE;\n\tSTAGE_CHANGES: typeof STAGE_CHANGES;\n\tSAVE_CHANGES: typeof SAVE_CHANGES;\n\tHYDRATE: typeof HYDRATE;\n\tCHANGE_ACTION_STATUS: typeof CHANGE_ACTION_STATUS;\n\tINVALIDATE_RESOLUTION: typeof INVALIDATE_RESOLUTION;\n\tSETTINGS_FETCH_ERROR: typeof SETTINGS_FETCH_ERROR;\n} = {\n\tUPDATE,\n\tSTAGE_CHANGES,\n\tSAVE_CHANGES,\n\tHYDRATE,\n\tCHANGE_ACTION_STATUS,\n\tINVALIDATE_RESOLUTION,\n\tSETTINGS_FETCH_ERROR,\n};\n\n/**\n * Default settings.\n *\n * NOTE: These should match the defaults in PHP.\n * Update get_default_settings function.\n */\nexport const defaultValues: Settings =\n\t/**\n\t * Filter the default settings.\n\t *\n\t * @param {Settings} settings Default settings.\n\t *\n\t * @return {Settings} Default settings.\n\t */\n\tapplyFilters( 'popupMaker.defaultSettings', {\n\t\tpermissions: {\n\t\t\t// Block Controls\n\t\t\tview_block_controls: 'edit_posts',\n\t\t\tedit_block_controls: 'edit_posts',\n\t\t\t// Restrictions\n\t\t\tedit_restrictions: 'manage_options',\n\t\t\t// Settings\n\t\t\tmanage_settings: 'manage_options',\n\t\t},\n\t} ) as Settings;\n\n/**\n * Prefill settings from window global varis if set.\n */\nconst { currentSettings = defaultValues } = popupMakerCoreData ?? {};\n\nexport const initialState: State = {\n\tsettings: currentSettings,\n\tunsavedChanges: {},\n\tresolutionState: {},\n};\n","import type {\n\tCurriedSelectorsOf,\n\tDispatchReturn,\n} from '@wordpress/data/src/types';\n\nexport { default as settingsStore } from './store';\n\nexport {\n\tdefaultValues as defaultSettings,\n\tSTORE_NAME as SETTINGS_STORE,\n} from './constants';\n\nimport type { StoreDescriptor, StoreState } from './types';\n\ntype Selectors = CurriedSelectorsOf< StoreDescriptor >;\ntype Actions = DispatchReturn< StoreDescriptor >;\n\nexport type {\n\tStoreDescriptor as SettingsStore,\n\tStoreState as SettingsStoreState,\n\tSelectors as SettingsStoreSelectors,\n\tActions as SettingsStoreActions,\n};\n","import { ACTION_TYPES, initialState } from './constants';\n\nimport type { DispatchStatuses, ResolutionState } from '../constants';\nimport type { Settings } from './types';\n\nconst {\n\tUPDATE,\n\tSTAGE_CHANGES,\n\tSAVE_CHANGES,\n\tHYDRATE,\n\tCHANGE_ACTION_STATUS,\n\tSETTINGS_FETCH_ERROR,\n\tINVALIDATE_RESOLUTION,\n} = ACTION_TYPES;\n\nexport type State = {\n\t/**\n\t * The settings.\n\t */\n\tsettings: Settings;\n\n\t/**\n\t * The unsaved changes.\n\t */\n\tunsavedChanges?: Partial< Settings >;\n\n\t/**\n\t * The resolution state for each operation.\n\t */\n\tresolutionState: Record< string | number, ResolutionState >;\n};\n\nexport type BaseAction = {\n\ttype: keyof typeof ACTION_TYPES;\n};\n\nexport type HydrateAction = BaseAction & {\n\ttype: typeof HYDRATE;\n\tpayload: {\n\t\tsettings: Settings;\n\t};\n};\n\nexport type UpdateSettingsAction = BaseAction & {\n\ttype: typeof UPDATE;\n\tpayload: {\n\t\tsettings: Settings;\n\t};\n};\n\nexport type StageChangesAction = BaseAction & {\n\ttype: typeof STAGE_CHANGES;\n\tpayload: {\n\t\tsettings: Settings;\n\t};\n};\n\nexport type SaveChangesAction = BaseAction & {\n\ttype: typeof SAVE_CHANGES;\n\tpayload: {\n\t\tsettings: Settings;\n\t};\n};\n\nexport type FetchSettingsErrorAction = BaseAction & {\n\ttype: typeof SETTINGS_FETCH_ERROR;\n\tpayload: {\n\t\tmessage: string;\n\t};\n};\n\nexport type ChangeActionStatusAction = BaseAction & {\n\ttype: typeof CHANGE_ACTION_STATUS;\n\tpayload: {\n\t\tactionName: string;\n\t\tstatus: DispatchStatuses;\n\t\tmessage?: string;\n\t};\n};\n\nexport type InvalidateResolutionAction = BaseAction & {\n\ttype: typeof INVALIDATE_RESOLUTION;\n\tpayload: {\n\t\tid: number | string;\n\t\toperation: string;\n\t};\n};\n\nexport type ReducerAction =\n\t| HydrateAction\n\t| UpdateSettingsAction\n\t| FetchSettingsErrorAction\n\t| StageChangesAction\n\t| SaveChangesAction\n\t| ChangeActionStatusAction\n\t| InvalidateResolutionAction;\n\nconst reducer = ( state: State = initialState, action: ReducerAction ) => {\n\tswitch ( action.type ) {\n\t\tcase HYDRATE: {\n\t\t\tconst { settings } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tsettings,\n\t\t\t};\n\t\t}\n\n\t\tcase SETTINGS_FETCH_ERROR: {\n\t\t\tconst { message } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\terror: message,\n\t\t\t};\n\t\t}\n\n\t\tcase STAGE_CHANGES: {\n\t\t\tconst { settings } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tunsavedChanges: {\n\t\t\t\t\t...( state.unsavedChanges ?? {} ),\n\t\t\t\t\t...settings,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase SAVE_CHANGES: {\n\t\t\tconst { settings } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tsettings: {\n\t\t\t\t\t...state.settings,\n\t\t\t\t\t...settings,\n\t\t\t\t},\n\t\t\t\tunsavedChanges: {},\n\t\t\t};\n\t\t}\n\n\t\tcase UPDATE: {\n\t\t\tconst { settings } = action.payload;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tsettings: {\n\t\t\t\t\t...state.settings,\n\t\t\t\t\t...settings,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase CHANGE_ACTION_STATUS: {\n\t\t\tconst { actionName, status, message } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tresolutionState: {\n\t\t\t\t\t...state.resolutionState,\n\t\t\t\t\t[ actionName ]: {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\terror: message,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase INVALIDATE_RESOLUTION: {\n\t\t\tconst { id, operation } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tresolutionState: {\n\t\t\t\t\t...state.resolutionState,\n\t\t\t\t\t[ operation ]: {\n\t\t\t\t\t\t...state.resolutionState?.[ operation ],\n\t\t\t\t\t\t[ id ]: undefined,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport default reducer;\n","import { __ } from '@popup-maker/i18n';\n\nimport { fetchFromApi, getErrorMessage } from '../utils';\nimport { SETTINGS_FETCH_ERROR } from './constants';\nimport { apiPath } from './utils';\n\nimport type { Settings, ThunkAction } from './types';\n\nconst settingsResolvers = {\n\tgetSettings:\n\t\t(): ThunkAction =>\n\t\tasync ( { dispatch, registry } ) => {\n\t\t\ttry {\n\t\t\t\tconst settings = await fetchFromApi< Settings >( apiPath(), {\n\t\t\t\t\tmethod: 'GET',\n\t\t\t\t} );\n\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\tif ( settings ) {\n\t\t\t\t\t\tdispatch.hydrate( settings );\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatch( {\n\t\t\t\t\t\ttype: SETTINGS_FETCH_ERROR,\n\t\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t\t'An error occurred, settings were not loaded.',\n\t\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t\t),\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tdispatch( {\n\t\t\t\t\ttype: SETTINGS_FETCH_ERROR,\n\t\t\t\t\tmessage: getErrorMessage( error ),\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n};\n\nexport default settingsResolvers;\n","import { createSelector } from '@wordpress/data';\n\nimport { DispatchStatus } from '../constants';\nimport { defaultValues } from './constants';\n\nimport type { State } from './reducer';\nimport type { Settings } from './types';\n\nconst settingsSelectors = {\n\t/**\n\t * Get setting by name.\n\t *\n\t * @param {State} state The state.\n\t *\n\t * @return {Settings} The settings.\n\t */\n\tgetSettings: createSelector(\n\t\t( state: State ) => state.settings,\n\t\t( state: State ) => [ state.settings ]\n\t),\n\n\t/**\n\t * Get setting by name.\n\t *\n\t * @param {State} state The state.\n\t * @param {K} name The setting name.\n\t * @param {D} defaultValue The default value.\n\t *\n\t * @return {Settings[K] | D} The setting value.\n\t */\n\tgetSetting: createSelector(\n\t\t<\n\t\t\tK extends keyof Settings,\n\t\t\tD extends Settings[ K ] | undefined | false,\n\t\t>(\n\t\t\tstate: State,\n\t\t\tname: K,\n\t\t\tdefaultValue: D\n\t\t) => {\n\t\t\tconst settings = settingsSelectors.getSettings( state );\n\n\t\t\treturn settings[ name ] ?? defaultValue;\n\t\t},\n\t\t<\n\t\t\tK extends keyof Settings,\n\t\t\tD extends Settings[ K ] | undefined | false,\n\t\t>(\n\t\t\tstate: State,\n\t\t\tname: K,\n\t\t\tdefaultValue: D\n\t\t) => [ state.settings, name, defaultValue ]\n\t),\n\n\t/**\n\t * Gets object of unsaved settings changes.\n\t *\n\t * @param {State} state The state.\n\t *\n\t * @return {State[ 'unsavedChanges' ]} The unsaved changes.\n\t */\n\tgetUnsavedChanges: createSelector(\n\t\t( state: State ) => state.unsavedChanges,\n\t\t( state: State ) => [ state.unsavedChanges ]\n\t),\n\n\t/**\n\t * Check if there are any unsaved changes.\n\t */\n\thasUnsavedChanges: createSelector(\n\t\t( state: State ): boolean => {\n\t\t\treturn Object.keys( state?.unsavedChanges ?? {} ).length > 0;\n\t\t},\n\t\t( state: State ) => [ state.unsavedChanges ]\n\t),\n\n\t/**\n\t * Get required cap/permission for given capability.\n\t */\n\tgetReqPermission: createSelector(\n\t\t< T extends keyof Settings[ 'permissions' ] >(\n\t\t\tstate: State,\n\t\t\t/**\n\t\t\t * Capability to check for.\n\t\t\t */\n\t\t\tcap: T\n\t\t): string => {\n\t\t\tconst permissions = settingsSelectors.getSetting(\n\t\t\t\tstate,\n\t\t\t\t'permissions',\n\t\t\t\tdefaultValues.permissions\n\t\t\t);\n\n\t\t\tconst defaultPermission = 'manage_options';\n\n\t\t\tconst permission = permissions[ cap ];\n\n\t\t\treturn typeof permission === 'string'\n\t\t\t\t? permission\n\t\t\t\t: defaultPermission;\n\t\t},\n\t\t( state: State, cap: keyof Settings[ 'permissions' ] ) => [\n\t\t\tstate.settings.permissions,\n\t\t\tcap,\n\t\t]\n\t),\n};\n\n/*****************************************************\n * SECTION: Resolution state selectors\n *****************************************************/\nconst resolutionSelectors = {\n\t/**\n\t * Get resolution state for a specific entity.\n\t */\n\tgetResolutionState: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = state.resolutionState?.[ id ];\n\n\t\t\t// If no resolution state exists, return idle\n\t\t\tif ( ! resolutionState ) {\n\t\t\t\treturn {\n\t\t\t\t\tstatus: DispatchStatus.Idle,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn resolutionState;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Check if a resolution is idle.\n\t */\n\tisIdle: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Idle;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Check if an entity is currently being resolved.\n\t */\n\tisResolving: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Resolving;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Check if an entity resolution has completed successfully.\n\t */\n\thasResolved: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Success;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Check if an entity resolution has failed.\n\t */\n\thasFailed: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Error;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Get the error for a failed resolution.\n\t */\n\tgetResolutionError: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.error;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n};\n\nconst selectors = {\n\t// Settings selectors\n\t...settingsSelectors,\n\t// Resolution state selectors\n\t...resolutionSelectors,\n};\n\nexport default selectors;\n","import { createReduxStore } from '@wordpress/data';\n\nimport reducer from './reducer';\nimport actions from './actions';\nimport resolvers from './resolvers';\nimport selectors from './selectors';\nimport { initialState, STORE_NAME } from './constants';\n\nimport type { StoreActions, StoreSelectors, StoreState } from './types';\n\nconst storeConfig = () => ( {\n\tinitialState,\n\treducer,\n\tactions,\n\tselectors,\n\tresolvers,\n} );\n\n/**\n * Store definition for the License data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n */\nconst store = createReduxStore< StoreState, StoreActions, StoreSelectors >(\n\tSTORE_NAME,\n\tstoreConfig()\n);\n\nexport default store;\n","export const apiPath = () => 'popup-maker/v2/settings';\n","import { __ } from '@popup-maker/i18n';\n\nimport { DispatchStatus } from '../constants';\nimport { getErrorMessage } from '../utils';\n\nimport { ACTION_TYPES } from './constants';\nimport { fetchLinkSuggestions } from './utils';\n\nimport type { ReducerAction } from './reducer';\nimport type { SearchOptions, ThunkAction, WPLinkSearchResult } from './types';\n\nconst {\n\tSEARCH_REQUEST,\n\tSEARCH_SUCCESS,\n\tSEARCH_ERROR,\n\tCHANGE_ACTION_STATUS,\n\tINVALIDATE_RESOLUTION,\n} = ACTION_TYPES;\n\nconst searchActions = {\n\t/**\n\t * Set query search text.\n\t * @param {string} queryText Query text.\n\t * @param {SearchOptions} searchOptions Search options.\n\t */\n\tupdateSuggestions:\n\t\t(\n\t\t\t/**\n\t\t\t * Query text.\n\t\t\t */\n\t\t\tqueryText: string,\n\t\t\t/**\n\t\t\t * Search options.\n\t\t\t */\n\t\t\tsearchOptions?: SearchOptions\n\t\t): ThunkAction =>\n\t\tasync ( { dispatch, registry } ) => {\n\t\t\tconst actionName = 'updateSuggestions';\n\n\t\t\ttry {\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Resolving\n\t\t\t\t);\n\n\t\t\t\tawait registry.batch( async () => {\n\t\t\t\t\tdispatch.searchRequest( queryText );\n\n\t\t\t\t\tconst results = await fetchLinkSuggestions(\n\t\t\t\t\t\tqueryText,\n\t\t\t\t\t\tsearchOptions\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( results ) {\n\t\t\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\t\t\tactionName,\n\t\t\t\t\t\t\tDispatchStatus.Success\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tdispatch.searchSuccess( queryText, results );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst errorMessage = __(\n\t\t\t\t\t\t'No results returned',\n\t\t\t\t\t\t'popup-maker'\n\t\t\t\t\t);\n\n\t\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\t\tactionName,\n\t\t\t\t\t\tDispatchStatus.Error,\n\t\t\t\t\t\terrorMessage\n\t\t\t\t\t);\n\n\t\t\t\t\tdispatch.searchError( queryText, errorMessage );\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage = getErrorMessage( error );\n\n\t\t\t\tdispatch.changeActionStatus(\n\t\t\t\t\tactionName,\n\t\t\t\t\tDispatchStatus.Error,\n\t\t\t\t\terrorMessage\n\t\t\t\t);\n\t\t\t\tdispatch.searchError( queryText, errorMessage );\n\t\t\t}\n\t\t},\n\n\t/**\n\t * Populate search results.\n\t *\n\t * @param {string} queryText Query text.\n\t */\n\tsearchRequest: (\n\t\t/**\n\t\t * Query text.\n\t\t */\n\t\tqueryText: string\n\t): ReducerAction =>\n\t\t( {\n\t\t\ttype: SEARCH_REQUEST,\n\t\t\tpayload: {\n\t\t\t\tqueryText,\n\t\t\t},\n\t\t} ) as ReducerAction,\n\n\t/**\n\t * Populate search results.\n\t *\n\t * @param {string} queryText Query text.\n\t * @param {WPLinkSearchResult[]} results Search results.\n\t */\n\tsearchSuccess: (\n\t\t/**\n\t\t * Query text.\n\t\t */\n\t\tqueryText: string,\n\t\t/**\n\t\t * Search results.\n\t\t */\n\t\tresults: WPLinkSearchResult[]\n\t): ReducerAction => {\n\t\treturn {\n\t\t\ttype: SEARCH_SUCCESS,\n\t\t\tpayload: {\n\t\t\t\tqueryText,\n\t\t\t\tresults,\n\t\t\t},\n\t\t} as ReducerAction;\n\t},\n\n\t/**\n\t * Generate a search error action.\n\t *\n\t * @param {string} queryText Query text.\n\t * @param {string} error Error message.\n\t */\n\tsearchError: (\n\t\t/**\n\t\t * Query text.\n\t\t */\n\t\tqueryText: string,\n\t\t/**\n\t\t * Error message.\n\t\t */\n\t\terror: string\n\t): ReducerAction => {\n\t\treturn {\n\t\t\ttype: SEARCH_ERROR,\n\t\t\tpayload: {\n\t\t\t\tqueryText,\n\t\t\t\terror,\n\t\t\t},\n\t\t};\n\t},\n};\n\n/*****************************************************\n * SECTION: Resolution actions\n *****************************************************/\nconst resolutionActions = {\n\t/**\n\t * Change status of a dispatch action request.\n\t *\n\t * @param {CallToActionsStore[ 'ActionNames' ]} actionName Action name to change status of.\n\t * @param {Statuses} status New status.\n\t * @param {string|undefined} message Optional error message.\n\t * @return {Object} Action object.\n\t */\n\tchangeActionStatus:\n\t\t(\n\t\t\tactionName: string,\n\t\t\tstatus: DispatchStatus,\n\t\t\tmessage?: string | { message: string; [ key: string ]: any }\n\t\t): ThunkAction =>\n\t\t( { dispatch } ) => {\n\t\t\tif ( message ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.log( actionName, message );\n\t\t\t}\n\n\t\t\tdispatch( {\n\t\t\t\ttype: CHANGE_ACTION_STATUS,\n\t\t\t\tactionName,\n\t\t\t\tstatus,\n\t\t\t\tmessage,\n\t\t\t} );\n\t\t},\n\n\t/**\n\t * Start resolution for an entity.\n\t */\n\t// startResolution:\n\t// \t( id: number | string, operation: string = 'fetch' ) =>\n\t// \t( { dispatch } ) => {\n\t// \t\tconsole.log( 'startResolution', id, operation );\n\t// \t\tdispatch( {\n\t// \t\t\ttype: START_RESOLUTION,\n\t// \t\t\tpayload: {\n\t// \t\t\t\tid,\n\t// \t\t\t\toperation,\n\t// \t\t\t},\n\t// \t\t} );\n\t// \t},\n\n\t/**\n\t * Finish resolution for an entity.\n\t */\n\t// finishResolution:\n\t// \t( id: number | string, operation: string = 'fetch' ) =>\n\t// \t( { dispatch } ) => {\n\t// \t\tdispatch( {\n\t// \t\t\ttype: FINISH_RESOLUTION,\n\t// \t\t\tpayload: {\n\t// \t\t\t\tid,\n\t// \t\t\t\toperation,\n\t// \t\t\t},\n\t// \t\t} );\n\t// \t},\n\n\t/**\n\t * Fail resolution for an entity.\n\t */\n\t// failResolution:\n\t// \t(\n\t// \t\tid: number | string,\n\t// \t\terror: string,\n\t// \t\toperation: string = 'fetch',\n\t// \t\textra?: Record< string, any >\n\t// \t): ThunkAction =>\n\t// \t( { dispatch } ) => {\n\t// \t\tdispatch( {\n\t// \t\t\ttype: FAIL_RESOLUTION,\n\t// \t\t\tpayload: {\n\t// \t\t\t\tid,\n\t// \t\t\t\terror,\n\t// \t\t\t\toperation,\n\t// \t\t\t\textra,\n\t// \t\t\t},\n\t// \t\t} );\n\t// \t},\n\n\t/**\n\t * Invalidate resolution for an entity.\n\t *\n\t * @param {number | string} id The entity ID.\n\t * @return {Promise<void>}\n\t */\n\tinvalidateResolution:\n\t\t( id: number | string ): ThunkAction =>\n\t\t( { dispatch } ) => {\n\t\t\tdispatch( {\n\t\t\t\ttype: INVALIDATE_RESOLUTION,\n\t\t\t\tpayload: {\n\t\t\t\t\tid,\n\t\t\t\t},\n\t\t\t} );\n\t\t},\n};\n\nconst actions = {\n\t// Search actions\n\t...searchActions,\n\t// Resolution actions\n\t...resolutionActions,\n};\n\nexport default actions;\n","import type { State } from './reducer';\n\nexport const STORE_NAME = 'popup-maker/url-search';\n\n// Search actions.\nexport const SEARCH_REQUEST = 'SEARCH_REQUEST';\nexport const SEARCH_SUCCESS = 'SEARCH_SUCCESS';\nexport const SEARCH_ERROR = 'SEARCH_ERROR';\nexport const UPDATE_SUGGESTIONS = 'UPDATE_SUGGESTIONS';\n\n// Resolution actions.\nexport const CHANGE_ACTION_STATUS = 'CHANGE_ACTION_STATUS';\nexport const INVALIDATE_RESOLUTION = 'INVALIDATE_RESOLUTION';\n\nexport const ACTION_TYPES: {\n\tSEARCH_REQUEST: typeof SEARCH_REQUEST;\n\tSEARCH_SUCCESS: typeof SEARCH_SUCCESS;\n\tSEARCH_ERROR: typeof SEARCH_ERROR;\n\tUPDATE_SUGGESTIONS: typeof UPDATE_SUGGESTIONS;\n\tCHANGE_ACTION_STATUS: typeof CHANGE_ACTION_STATUS;\n\tINVALIDATE_RESOLUTION: typeof INVALIDATE_RESOLUTION;\n} = {\n\tSEARCH_REQUEST,\n\tSEARCH_SUCCESS,\n\tSEARCH_ERROR,\n\tUPDATE_SUGGESTIONS,\n\tCHANGE_ACTION_STATUS,\n\tINVALIDATE_RESOLUTION,\n};\n\nexport const initialState: State = {\n\tcurrentQuery: '',\n\tsearchResults: [],\n\tqueries: {},\n\tresolutionState: {},\n};\n","import type {\n\tCurriedSelectorsOf,\n\tDispatchReturn,\n} from '@wordpress/data/src/types';\n\nexport { default as urlSearchStore } from './store';\n\nexport { STORE_NAME as URL_SEARCH_STORE } from './constants';\n\nexport type * from './types/url-search';\n\nimport type { StoreDescriptor, StoreState } from './types/store';\n\ntype Selectors = CurriedSelectorsOf< StoreDescriptor >;\ntype Actions = DispatchReturn< StoreDescriptor >;\n\nexport type {\n\tStoreDescriptor as UrlSearchStore,\n\tStoreState as UrlSearchStoreState,\n\tSelectors as UrlSearchStoreSelectors,\n\tActions as UrlSearchStoreActions,\n};\n","import type { DispatchStatuses, ResolutionState } from '../constants';\nimport { ACTION_TYPES, initialState } from './constants';\n\nimport type { WPLinkSearchResult, URLSearchQuery } from './types';\n\nconst {\n\tSEARCH_ERROR,\n\tSEARCH_REQUEST,\n\tSEARCH_SUCCESS,\n\tCHANGE_ACTION_STATUS,\n\tINVALIDATE_RESOLUTION,\n} = ACTION_TYPES;\n\n/**\n * The state of the URL search store.\n */\nexport type State = {\n\t/**\n\t * The current query.\n\t */\n\tcurrentQuery?: string;\n\t/**\n\t * The search results.\n\t */\n\tsearchResults?: WPLinkSearchResult[];\n\t/**\n\t * The queries.\n\t */\n\tqueries: Record< URLSearchQuery[ 'text' ], URLSearchQuery >;\n\t/**\n\t * The error.\n\t */\n\terror?: string;\n\n\t/**\n\t * The resolution state for each operation.\n\t */\n\tresolutionState: Record< string | number, ResolutionState >;\n};\n\n/**\n * The base action for the URL search store.\n */\nexport type BaseAction = {\n\ttype: keyof typeof ACTION_TYPES;\n\tpayload?: Record< string, any >;\n};\n\n/**\n * The action for the URL search store.\n */\nexport type SearchRequestAction = BaseAction & {\n\ttype: typeof SEARCH_REQUEST;\n\tpayload: {\n\t\tqueryText: string;\n\t};\n};\n\n/**\n * The action for the URL search store.\n */\nexport type SearchSuccessAction = BaseAction & {\n\ttype: typeof SEARCH_SUCCESS;\n\tpayload: {\n\t\tqueryText: string;\n\t\tresults: WPLinkSearchResult[];\n\t};\n};\n\n/**\n * The action for the URL search store.\n */\nexport type SearchErrorAction = BaseAction & {\n\ttype: typeof SEARCH_ERROR;\n\tpayload: {\n\t\tqueryText: string;\n\t\terror: string;\n\t};\n};\n\nexport type ChangeActionStatusAction = BaseAction & {\n\ttype: typeof CHANGE_ACTION_STATUS;\n\tactionName: string;\n\tstatus: DispatchStatuses;\n\tmessage?: string;\n};\n\nexport type InvalidateResolutionAction = BaseAction & {\n\ttype: typeof INVALIDATE_RESOLUTION;\n\tpayload: {\n\t\tid: number | string;\n\t\toperation: string;\n\t};\n};\n\n/**\n * The action for the URL search store.\n */\nexport type ReducerAction =\n\t| SearchRequestAction\n\t| SearchSuccessAction\n\t| SearchErrorAction\n\t| ChangeActionStatusAction\n\t| InvalidateResolutionAction;\n\nexport const reducer = (\n\tstate: State = initialState,\n\taction: ReducerAction\n): State => {\n\tswitch ( action.type ) {\n\t\tcase SEARCH_REQUEST: {\n\t\t\tconst { queryText } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tcurrentQuery: queryText,\n\t\t\t};\n\t\t}\n\n\t\tcase SEARCH_SUCCESS: {\n\t\t\tconst { queryText, results } = action.payload;\n\n\t\t\tif ( state.currentQuery === queryText ) {\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\tsearchResults: results,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn state;\n\t\t}\n\n\t\tcase SEARCH_ERROR: {\n\t\t\tconst { queryText, error } = action.payload;\n\n\t\t\tif ( state.currentQuery === queryText ) {\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\terror,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn state;\n\t\t}\n\n\t\tcase CHANGE_ACTION_STATUS: {\n\t\t\tconst { actionName, status, message } = action;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tresolutionState: {\n\t\t\t\t\t...state.resolutionState,\n\t\t\t\t\t[ actionName ]: {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\terror: message,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tcase INVALIDATE_RESOLUTION: {\n\t\t\tconst { id, operation } = action.payload;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tresolutionState: {\n\t\t\t\t\t...state.resolutionState,\n\t\t\t\t\t[ operation ]: {\n\t\t\t\t\t\t...state.resolutionState?.[ operation ],\n\t\t\t\t\t\t[ id ]: undefined,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport default reducer;\n","import { createSelector } from '@wordpress/data';\n\nimport { DispatchStatus } from '../constants';\n\nimport type { State } from './reducer';\nimport type { WPLinkSearchResult } from './types';\n\n/*****************************************************\n * SECTION: Suggestion selectors\n *****************************************************/\nconst suggestionSelectors = {\n\t/**\n\t * Get search results for link suggestions.\n\t */\n\tgetSuggestions: createSelector(\n\t\t( state: State ): WPLinkSearchResult[] => state.searchResults || [],\n\t\t( state: State ) => [ state.searchResults ]\n\t),\n};\n\n/*****************************************************\n * SECTION: Resolution state selectors\n *****************************************************/\nconst resolutionSelectors = {\n\t/**\n\t * Get resolution state for a specific entity.\n\t */\n\tgetResolutionState: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = state.resolutionState?.[ id ];\n\n\t\t\t// If no resolution state exists, return idle\n\t\t\tif ( ! resolutionState ) {\n\t\t\t\treturn {\n\t\t\t\t\tstatus: DispatchStatus.Idle,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn resolutionState;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Check if a resolution is idle.\n\t */\n\tisIdle: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Idle;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Check if an entity is currently being resolved.\n\t */\n\tisResolving: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Resolving;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Check if an entity resolution has completed successfully.\n\t */\n\thasResolved: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Success;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Check if an entity resolution has failed.\n\t */\n\thasFailed: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.status === DispatchStatus.Error;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n\n\t/**\n\t * Get the error for a failed resolution.\n\t */\n\tgetResolutionError: createSelector(\n\t\t( state: State, id: number | string ) => {\n\t\t\tconst resolutionState = resolutionSelectors.getResolutionState(\n\t\t\t\tstate,\n\t\t\t\tid\n\t\t\t);\n\t\t\treturn resolutionState.error;\n\t\t},\n\t\t( _state: State, id: number | string ) => [ id ]\n\t),\n};\n\nconst selectors = {\n\t// Suggestion selectors\n\t...suggestionSelectors,\n\t// Resolution state selectors\n\t...resolutionSelectors,\n};\n\nexport default selectors;\n","import { createReduxStore } from '@wordpress/data';\n\nimport reducer from './reducer';\nimport actions from './actions';\nimport selectors from './selectors';\nimport { initialState, STORE_NAME } from './constants';\n\nimport type { StoreActions, StoreSelectors, StoreState } from './types';\n\n/**\n * Generate store config.\n */\nexport const storeConfig = () => ( {\n\tinitialState,\n\treducer,\n\tactions,\n\tselectors,\n} );\n\n/**\n * Store definition for the License data namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n */\nconst store = createReduxStore< StoreState, StoreActions, StoreSelectors >(\n\tSTORE_NAME,\n\tstoreConfig()\n);\n\nexport default store;\n","import { __ } from '@popup-maker/i18n';\nimport { appendUrlParams, fetchFromWPApi } from '../utils';\n\nimport type {\n\tSearchArgs,\n\tSearchOptions,\n\tWPLinkAPIResult,\n\tWPLinkSearchResult,\n} from './types';\n\nexport const apiQueryUrl = ( queryParams: SearchArgs = { search: '' } ) =>\n\tappendUrlParams( 'wp/v2/search', queryParams );\n\n/**\n * Fetch link suggestions from the WordPress API\n *\n * @param {string} search The search term.\n * @param {SearchOptions} searchOptions The search options.\n *\n * @return {Promise<WPLinkSearchResult[]>} The link suggestions.\n */\nexport const fetchLinkSuggestions = async (\n\tsearch: string,\n\tsearchOptions: SearchOptions = {}\n): Promise< WPLinkSearchResult[] > => {\n\tconst {\n\t\tisInitialSuggestions = false,\n\t\ttype = undefined,\n\t\tsubtype = undefined,\n\t\tpage = undefined,\n\t\tperPage = isInitialSuggestions ? 3 : 20,\n\t} = searchOptions;\n\n\tconst queries: Promise< WPLinkAPIResult[] >[] = [];\n\n\tconst typeCheck = ( t: string ) =>\n\t\t! type ||\n\t\ttype === t ||\n\t\t( Array.isArray( type ) && type.indexOf( t ) >= 0 );\n\n\t// Helper function to fetch and transform results\n\tconst fetchResults = async ( queryType?: string, kind?: string ) => {\n\t\ttry {\n\t\t\tconst results = await fetchFromWPApi< WPLinkAPIResult[] >(\n\t\t\t\tapiQueryUrl( {\n\t\t\t\t\tsearch,\n\t\t\t\t\tpage,\n\t\t\t\t\tper_page: perPage,\n\t\t\t\t\ttype: queryType,\n\t\t\t\t\tsubtype,\n\t\t\t\t} ),\n\t\t\t\t{ cache: 'no-cache' }\n\t\t\t);\n\n\t\t\treturn results.map( ( result ) => ( {\n\t\t\t\t...result,\n\t\t\t\tmeta: { kind: kind || queryType, subtype },\n\t\t\t} ) );\n\t\t} catch {\n\t\t\treturn []; // Fail by returning no results\n\t\t}\n\t};\n\n\t// Fetch posts\n\tif ( typeCheck( 'post' ) ) {\n\t\tqueries.push( fetchResults( 'post', 'post-type' ) );\n\t}\n\n\t// Fetch terms\n\tif ( typeCheck( 'term' ) ) {\n\t\tqueries.push( fetchResults( 'term', 'taxonomy' ) );\n\t}\n\n\t// Fetch post formats\n\tif ( typeCheck( 'post-format' ) ) {\n\t\tqueries.push( fetchResults( 'post-format', 'taxonomy' ) );\n\t}\n\n\t// Fetch attachments\n\tif ( typeCheck( 'attachment' ) ) {\n\t\tqueries.push( fetchResults( 'attachment', 'media' ) );\n\t}\n\n\tconst results = await Promise.all( queries );\n\n\treturn results\n\t\t.flat()\n\t\t.filter( ( result ): result is WPLinkAPIResult => !! result.id )\n\t\t.slice( 0, perPage )\n\t\t.map( ( result ) => {\n\t\t\tconst isMedia = result.type === 'attachment';\n\t\t\tconst title =\n\t\t\t\ttypeof result.title === 'object'\n\t\t\t\t\t? result.title.rendered ?? result.title.raw\n\t\t\t\t\t: result.title || __( '(no title)', 'popup-maker' );\n\n\t\t\treturn {\n\t\t\t\tid: result.id,\n\t\t\t\turl:\n\t\t\t\t\tisMedia && result.source_url\n\t\t\t\t\t\t? result.source_url\n\t\t\t\t\t\t: result.url,\n\t\t\t\ttitle,\n\t\t\t\ttype: result?.subtype || result.type,\n\t\t\t\tkind: result?.meta?.kind,\n\t\t\t} as WPLinkSearchResult;\n\t\t} );\n};\n","import apiFetch, { type APIFetchOptions } from '@wordpress/api-fetch';\n\nexport const restBase = 'popup-maker/v2';\n\nexport const restApiUrl = `${ wpApiSettings.root }`;\nexport const restUrl = `${ wpApiSettings.root }${ restBase }/`;\n\ntype WPError = {\n\tcode?: string;\n\tmessage?: string;\n\tdata?: {\n\t\tstatus?: number;\n\t\tparams?: Record< string, string >;\n\t\tdetails?: {\n\t\t\tsettings: {\n\t\t\t\tcode: string;\n\t\t\t\tmessage: string;\n\t\t\t\tdata?: {\n\t\t\t\t\tfield: string;\n\t\t\t\t};\n\t\t\t};\n\t\t\t[ key: string ]: {\n\t\t\t\tcode: string;\n\t\t\t\tmessage: string;\n\t\t\t\tdata?: any;\n\t\t\t};\n\t\t};\n\t};\n};\n\n/**\n * Creates default headers with authentication and content type\n */\nconst getDefaultHeaders = (): Record< string, string > => ( {\n\t'Content-Type': 'application/json',\n\t'X-WP-Nonce': wpApiSettings.nonce,\n} );\n\n/**\n * Handles path modification for WordPress API URLs with existing query parameters\n * @param {string} path The API path to modify if needed\n * @return {string} Modified path\n */\nconst getModifiedPath = ( path: string ): string => {\n\tif ( wpApiSettings.root.includes( '?' ) ) {\n\t\treturn path.replace( '?', '&' );\n\t}\n\treturn path;\n};\n\n/**\n * Base function to fetch data from any WordPress API endpoint with proper authentication and error handling\n *\n * @param {string} path - The full API endpoint path\n * @param {APIFetchOptions} [options={}] - API Fetch options\n * @return {Promise<T>} Promise that resolves with the JSON response\n * @throws {Error} If the fetch fails or returns an error status\n *\n * Example usage:\n * const saveRecord = (id: string, record: any) => async (dispatch: any) => {\n * try {\n * dispatch({ type: 'BEFORE_SAVE', id, record });\n * const results = await fetchFromApi(`/records/${id}`, {\n * method: 'POST',\n * body: record,\n * });\n * dispatch({ type: 'AFTER_SAVE', id, results });\n * return results;\n * } catch (error) {\n * dispatch({ type: 'SAVE_ERROR', id, error });\n * throw error;\n * }\n * };\n */\nexport const fetchFromWPApi = async < T extends any = any >(\n\tpath: string,\n\toptions: APIFetchOptions = {}\n): Promise< T > => {\n\t// Combine default and custom headers\n\tconst headers: Record< string, string > = {\n\t\t...getDefaultHeaders(),\n\t\t...( ( options.headers as Record< string, string > ) || {} ),\n\t};\n\n\t// Modify path if needed\n\tconst modifiedPath = getModifiedPath( path );\n\n\ttry {\n\t\t// Use apiFetch instead of window.fetch\n\t\treturn await apiFetch< T >( {\n\t\t\turl: `${ restApiUrl }${ modifiedPath }`,\n\t\t\t...options,\n\t\t\theaders,\n\t\t\tcredentials: 'same-origin',\n\t\t\tparse: true, // Let apiFetch handle JSON parsing\n\t\t} );\n\t} catch ( error ) {\n\t\t// If it's already an Error instance, just throw it\n\t\tif ( error instanceof Error ) {\n\t\t\tthrow error;\n\t\t}\n\n\t\t// Handle WordPress API error format\n\t\tif ( typeof error === 'object' && error !== null ) {\n\t\t\tconst wpError = error as WPError;\n\n\t\t\t// Pass through the original error with validation params\n\t\t\tif ( wpError.code === 'rest_invalid_param' ) {\n\t\t\t\tthrow wpError;\n\t\t\t}\n\n\t\t\t// For other errors, throw generic error\n\t\t\tconst message = wpError.message || 'API request failed';\n\t\t\tthrow new Error( message );\n\t\t}\n\n\t\t// Fallback error\n\t\tthrow new Error( 'Unknown error occurred' );\n\t}\n};\n\n/**\n * Fetches data specifically from the Popup Maker API endpoints\n *\n * @param {string} path - The API endpoint path\n * @param {APIFetchOptions} [options={}] - API Fetch options\n * @return {Promise<T>} Promise that resolves with the JSON response\n * @throws {Error} If the fetch fails or returns an error status\n *\n * Example usage:\n * const saveRecord = (id: string, record: any) => async (dispatch: any) => {\n * try {\n * dispatch({ type: 'BEFORE_SAVE', id, record });\n * const results = await fetchFromApi(`/records/${id}`, {\n * method: 'POST',\n * body: record,\n * });\n * dispatch({ type: 'AFTER_SAVE', id, results });\n * return results;\n * } catch (error) {\n * dispatch({ type: 'SAVE_ERROR', id, error });\n * throw error;\n * }\n * };\n */\nexport const fetchFromApi = async < T extends any = any >(\n\tpath: string,\n\toptions: APIFetchOptions = {}\n): Promise< T > => {\n\treturn fetchFromWPApi< T >( `${ restBase }/${ path }`, options );\n};\n","export * from './controls';\n\n/**\n * Append params to url.\n *\n * @param {string} url Url to append params to.\n * @param {Object} params Object of url parameters.\n * @return {string} Resulting resource path.\n */\nexport const appendUrlParams = ( url: string, params: object ): string => {\n\tconst filteredParams = Object.fromEntries(\n\t\tObject.entries( params ).filter( ( [ , value ] ) => !! value )\n\t);\n\n\tconst query = new URLSearchParams( {\n\t\t...filteredParams,\n\t} );\n\n\treturn `${ url }?${ query }`;\n};\n\n/**\n * Gets error message from unknonw error type.\n *\n * @param {unknown} error Error typeed variable or string.\n * @return {string} String error message.\n */\nexport const getErrorMessage = ( error: unknown ): string => {\n\tif ( error instanceof Error ) {\n\t\treturn error.message;\n\t}\n\n\t// Handle objects with a message property (like validation errors)\n\tif ( typeof error === 'object' && error !== null && 'message' in error ) {\n\t\treturn String( ( error as { message: unknown } ).message );\n\t}\n\n\treturn String( error );\n};\n\n// mapRestValidationError removed - using WordPress notices for field errors\n","module.exports = window[\"popupMaker\"][\"i18n\"];","module.exports = window[\"wp\"][\"apiFetch\"];","module.exports = window[\"wp\"][\"data\"];","module.exports = window[\"wp\"][\"element\"];","module.exports = window[\"wp\"][\"hooks\"];","module.exports = window[\"wp\"][\"htmlEntities\"];","module.exports = window[\"wp\"][\"notices\"];","module.exports = window[\"lodash\"];","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export * from './call-to-actions';\nexport * from './constants';\nexport * from './license';\nexport * from './popups';\nexport * from './settings';\nexport * from './url-search';\n\nexport * from './hooks';\nexport * from './utils';\n\nexport type * from './types';\n"],"names":["cloneDeep","mergeWith","compare","jsonpatchCompare","__","sprintf","store","noticesStore","decodeEntities","ACTION_TYPES","NOTICE_CONTEXT","DispatchStatus","fetchFromApi","getErrorMessage","validateCallToAction","editableEntity","RECEIVE_RECORD","PURGE_RECORD","EDITOR_CHANGE_ID","EDIT_RECORD","START_EDITING_RECORD","SAVE_EDITED_RECORD","UNDO_EDIT_RECORD","REDO_EDIT_RECORD","RESET_EDIT_RECORD","CHANGE_ACTION_STATUS","INVALIDATE_RESOLUTION","handleFieldValidationErrors","error","ctaId","dispatch","registry","code","data","params","notices","select","getNotices","fieldErrors","filter","n","id","startsWith","forEach","removeNotice","Object","entries","field","message","details","settings","settingsError","createErrorNotice","isDismissible","type","additional_errors","Array","isArray","additionalError","entityActions","createCallToAction","callToAction","validate","withNotices","action","payload","actionName","status","Resolving","newCta","validation","Error","result","method","batch","Success","createSuccessNotice","title","rendered","record","errorMessage","hasFieldErrors","updateCallToAction","canonicalCallToAction","getCallToAction","toString","deleteCallToAction","forceDelete","force","editorActions","editRecord","edits","hasEditedEntity","getEditedCallToAction","then","undefined","editedEntity","_objValue","srcValue","slice","diff","console","saveEditedRecord","hasEdits","historyIndex","getCurrentEditHistoryIndex","editedCallToAction","undo","steps","getEditorId","redo","resetRecordEdits","updateEditorValues","values","editorId","saveEditorValues","editorValues","getCurrentEditorValues","resetEditorValues","changeEditorId","entity","setEditorId","noticeActions","createNotice","content","options","context","removeAllNotices","ids","removeNotices","noticeIds","map","notice","resolutionActions","changeActionStatus","invalidateResolution","actions","STORE_NAME","RECEIVE_RECORDS","RECEIVE_QUERY_RECORDS","RECEIVE_ERROR","PURGE_RECORDS","START_RESOLUTION","FINISH_RESOLUTION","FAIL_RESOLUTION","initialState","byId","allIds","queries","editedEntities","editHistory","editHistoryIndex","resolutionState","errors","global","noticeDefaults","defaultValues","uuid","slug","excerpt","url","date","date_gmt","guid","link","modified","modified_gmt","author","generated_slug","permalink_template","password","featured_media","comment_status","ping_status","format","meta","sticky","template","categories","tags","default","callToActionStore","defaultCtaValues","CALL_TO_ACTION_STORE","reducer","state","includes","records","query","reduce","acc","from","Set","r","JSON","stringify","prevErrors","newById","push","length","_id","fromEntries","newState","_state$editHistory$id","_state$editHistoryInd","currentIndex","newEditHistory","_state$editHistoryInd2","newIndex","Math","max","_state$editHistoryInd3","_state$editHistory$id2","maxIndex","min","remainingEdits","Number","operation","appendUrlParams","entityResolvers","getCallToActions","urlParams","per_page","results","_links","resolvers","applyPatch","applyFilters","createRegistrySelector","createSelector","entitySelectors","keys","getFetchError","getFiltered","predicate","maintainOrder","getFilteredIds","editorSelectors","isEditorActive","getEditedEntity","getEntityEditHistory","hasUndo","hasRedo","baseEntity","editsToApply","patchSet","patchArray","patched","newDocument","getDefaultValues","_state","noticeSelectors","getNoticeById","find","resolutionSelectors","getResolutionState","Idle","isIdle","isResolving","hasResolved","hasFailed","getResolutionError","selectors","createReduxStore","storeConfig","isRenderedText","value","key","raw","tabName","useLicense","useSettings","useMemo","useDispatch","useSelect","licenseStore","_licenseStatus$licens","_licenseStatus$error","_licenseStatus$licens2","_licenseStatus$error2","connectInfo","licenseKey","licenseStatus","isSaving","proWasActivated","isActivatingPro","storeSelect","getConnectInfo","getLicenseKey","getLicenseStatus","isDispatching","hasDispatched","activateLicense","deactivateLicense","checkLicenseStatus","updateLicenseKey","removeLicense","activatePro","isLicenseActive","license","isLicenseDeactivated","isLicenseInvalid","isLicenseMissing","isLicenseExpired","isLicenseDisabled","isLicenseOverQuota","hasError","isGeneralError","isLicenseKeyValid","getLicenseStatusName","licenseLevel","_licenseStatus$price_","priceId","price_id","parseInt","settingsStore","currentSettings","unsavedChanges","hasUnsavedChanges","getUnsavedChanges","getSettings","updateSettings","saveSettings","stageUnsavedChanges","getSetting","name","defaultValue","_settings$name","apiPath","ACTIVATE_LICENSE","CONNECT_SITE","DEACTIVATE_LICENSE","UPDATE_LICENSE_KEY","REMOVE_LICENSE","CHECK_LICENSE_STATUS","HYDRATE_LICENSE_DATA","log","currentKey","hydrate","LICENSE_FETCH_ERROR","licenseStatusDefaults","success","license_limit","site_count","expires","activations_left","error_message","defaultLicenseValues","LICENSE_STORE","dispatchStatus","getLicenseData","resolveSelect","_await$resolveSelect$","_await$resolveSelect$2","getDispatchStatus","actionNames","dispatching","i","indexOf","getDispatchError","subpath","validatePopup","createPopup","popup","newPopup","updatePopup","canonicalPopup","getPopup","deletePopup","getEditedPopup","editedPopup","popupId","enabled","conditions","logicalOperator","items","popupStore","defaultPopupValues","POPUP_STORE","getPopups","UPDATE","SAVE_CHANGES","STAGE_CHANGES","HYDRATE","settingsActions","SETTINGS_FETCH_ERROR","permissions","view_block_controls","edit_block_controls","edit_restrictions","manage_settings","_popupMakerCoreData","popupMakerCoreData","defaultSettings","SETTINGS_STORE","_state$unsavedChanges","settingsResolvers","settingsSelectors","getReqPermission","cap","defaultPermission","permission","fetchLinkSuggestions","SEARCH_REQUEST","SEARCH_SUCCESS","SEARCH_ERROR","searchActions","updateSuggestions","queryText","searchOptions","searchRequest","searchSuccess","searchError","UPDATE_SUGGESTIONS","currentQuery","searchResults","urlSearchStore","URL_SEARCH_STORE","suggestionSelectors","getSuggestions","fetchFromWPApi","apiQueryUrl","queryParams","search","isInitialSuggestions","subtype","page","perPage","typeCheck","t","fetchResults","queryType","kind","cache","Promise","all","flat","_result$title$rendere","isMedia","source_url","apiFetch","restBase","restApiUrl","wpApiSettings","root","restUrl","getDefaultHeaders","nonce","getModifiedPath","path","replace","headers","modifiedPath","credentials","parse","wpError","filteredParams","URLSearchParams","String"],"sourceRoot":""}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists