From a9b720188d3125ca0e2f15cbc7a57c4e5e0e17f9 Mon Sep 17 00:00:00 2001 From: Kirtesh Suthar Date: Thu, 10 Aug 2023 00:08:59 +0530 Subject: [PATCH 1/8] feat: add entry field support to RTE Locatiojn --- dist/index.js | 2 +- dist/index.js.map | 2 +- dist/src/RTE/types.d.ts | 3 +++ dist/src/RTE/types.d.ts.map | 2 +- dist/src/entry.d.ts | 4 ++-- dist/src/entry.d.ts.map | 2 +- dist/src/extension.d.ts | 3 ++- dist/src/extension.d.ts.map | 2 +- dist/src/types.d.ts | 8 ++++++++ dist/src/types.d.ts.map | 2 +- src/RTE/types.tsx | 4 ++++ src/entry.ts | 2 ++ src/extension.ts | 12 +++++++++++- src/types.ts | 9 +++++++++ 14 files changed, 47 insertions(+), 10 deletions(-) diff --git a/dist/index.js b/dist/index.js index 3c255f6..cdac528 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,3 +1,3 @@ /*! For license information please see index.js.LICENSE.txt */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ContentstackAppSDK=e():t.ContentstackAppSDK=e()}(this,(()=>{return t={957:function(t){"undefined"!=typeof self&&self,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/index.js")}({"./src/index.js":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={};function o(t){return"[object RegExp]"===Object.prototype.toString.call(t)}n.d(r,"cleanUpWindow",(function(){return Pt})),n.d(r,"Promise",(function(){return K})),n.d(r,"bridge",(function(){return St})),n.d(r,"init",(function(){return At})),n.d(r,"parent",(function(){return Ot})),n.d(r,"send",(function(){return pt})),n.d(r,"request",(function(){return ht})),n.d(r,"sendToParent",(function(){return yt})),n.d(r,"client",(function(){return vt})),n.d(r,"on",(function(){return gt})),n.d(r,"listen",(function(){return mt})),n.d(r,"once",(function(){return wt})),n.d(r,"listener",(function(){return bt})),n.d(r,"CONFIG",(function(){return R})),n.d(r,"CONSTANTS",(function(){return T})),n.d(r,"disable",(function(){return Et}));var i="mock:",a="file:",s="about:",u="Call was rejected by callee.\r\n";function c(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window).location.protocol===s}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t)try{if(t.parent&&t.parent!==t)return t.parent}catch(t){}}function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t&&!l(t))try{return t.opener}catch(t){}}function d(t){try{return t&&t.location&&t.location.href,!0}catch(t){}return!1}function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=t.location;if(!e)throw new Error("Can not read window location");var n=e.protocol;if(!n)throw new Error("Can not read window protocol");if(n===a)return a+"//";if(n===s){var r=l(t);return r&&d(r)?h(r):s+"//"}var o=e.host;if(!o)throw new Error("Can not read window host");return n+"//"+o}function p(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=h(t);return e&&t.mockDomain&&0===t.mockDomain.indexOf(i)?t.mockDomain:e}function y(t){try{if(t===window)return!0}catch(t){}try{var e=Object.getOwnPropertyDescriptor(t,"location");if(e&&!1===e.enumerable)return!1}catch(t){}try{if(c(t)&&d(t))return!0}catch(t){}try{if(h(t)===h(window))return!0}catch(t){}return!1}function v(t,e){if(!t||!e)return!1;var n=l(e);return n?n===t:-1!==function(t){var e=[];try{for(;t.parent!==t;)e.push(t.parent),t=t.parent}catch(t){}return e}(e).indexOf(t)}function _(t){var e=[],n=void 0;try{n=t.frames}catch(e){n=t}var r=void 0;try{r=n.length}catch(t){}if(0===r)return e;if(r){for(var o=0;o1&&void 0!==arguments[1])||arguments[1];try{if(t===window)return!1}catch(t){return!0}try{if(!t)return!0}catch(t){return!0}try{if(t.closed)return!0}catch(t){return!t||t.message!==u}if(e&&function(t){if(!y(t))return!1;try{if(t===window)return!0;if(c(t)&&d(t))return!0;if(p(window)===p(t))return!0}catch(t){}return!1}(t))try{if(t.mockclosed)return!0}catch(t){}try{if(!t.parent||!t.top)return!0}catch(t){}var n=function(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window;return f(t=t||window)||l(t)||void 0}function E(t,e){if("string"==typeof t){if("string"==typeof e)return"*"===t||e===t;if(o(e))return!1;if(Array.isArray(e))return!1}return o(t)?o(e)?t.toString()===e.toString():!Array.isArray(e)&&Boolean(e.match(t)):!!Array.isArray(t)&&(Array.isArray(e)?JSON.stringify(t)===JSON.stringify(e):!o(e)&&t.some((function(t){return E(t,e)})))}function O(t){try{if(t===window)return!0}catch(t){if(t&&t.message===u)return!0}try{if("[object Window]"===Object.prototype.toString.call(t))return!0}catch(t){if(t&&t.message===u)return!0}try{if(window.Window&&t instanceof window.Window)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.self===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.parent===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.top===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&"__unlikely_value__"===t.__cross_domain_utils_window_check__)return!1}catch(t){return!0}return!1}function P(t,e){for(var n=0;n>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var t=new WeakMap,e={};return Object.freeze(e),t.set(e,"__testvalue__"),"__testvalue__"===t.get(e)}catch(t){return!1}}())try{this.weakmap=new WeakMap}catch(t){}this.keys=[],this.values=[]}return t.prototype._cleanupClosedWindows=function(){for(var t=this.weakmap,e=this.keys,n=0;n1&&void 0!==arguments[1]?arguments[1]:1;if(e>=3)return"stringifyError stack overflow";try{if(!t)return"";if("string"==typeof t)return t;if(t instanceof Error){var n=t&&t.stack,r=t&&t.message;if(n&&r)return-1!==n.indexOf(r)?n:r+"\n"+n;if(n)return n;if(r)return r}return"function"==typeof t.toString?t.toString():Object.prototype.toString.call(t)}catch(t){return"Error while stringifying error: "+j(t,e+1)}}var M=function(t){if(!t)return t;var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}};function x(){}function C(){var t="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return t.charAt(Math.floor(Math.random()*t.length))}))}function I(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n>=100)throw new Error("Self-referential object passed, or object contained too many layers");var r=void 0;if("object"!==(void 0===t?"undefined":k(t))||null===t||Array.isArray(t)){if(!Array.isArray(t))throw new TypeError("Invalid type: "+(void 0===t?"undefined":k(t)));r=[]}else r={};return function(t,e){Array.isArray(t)?function(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},r=C(),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(f(t))}()?T.WINDOW_TYPES.POPUP:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(l(t))}()?T.WINDOW_TYPES.IFRAME:T.WINDOW_TYPES.FULLPAGE,i=p(window);return et({},e,n,{sourceDomain:i,id:e.id||r,windowType:o})}(t,e,{data:function(t,n,r){return I({obj:e.data},(function(e,r){return"function"==typeof e?Z(t,n,e,r.toString()):e instanceof Error?(o=e,{__type__:T.SERIALIZATION_TYPES.ERROR,__message__:j(o),__code__:o.code}):window.Promise&&e instanceof window.Promise?function(t,e,n,r){return{__type__:T.SERIALIZATION_TYPES.PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):K.isPromise(e)?function(t,e,n,r){return{__type__:T.SERIALIZATION_TYPES.ZALGO_PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):L(e)?(i=e,{__type__:T.SERIALIZATION_TYPES.REGEX,__source__:i.source}):void 0;var o,i})).obj}(t,n),domain:n}),t===window&&!R.ALLOW_SAME_ORIGIN)throw new Error("Attemping to send message to self");if(w(t))throw new Error("Window is closed");var o=[],i=function(t,e,n){var r=void 0,o=void 0;try{if("{}"!==JSON.stringify({})&&(r=Object.prototype.toJSON,delete Object.prototype.toJSON),"{}"!==JSON.stringify({}))throw new Error("Can not correctly serialize JSON objects");if("[]"!==JSON.stringify([])&&(o=Array.prototype.toJSON,delete Array.prototype.toJSON),"[]"!==JSON.stringify([]))throw new Error("Can not correctly serialize JSON objects")}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}var i=JSON.stringify.call(this,t,null,2);try{r&&(Object.prototype.toJSON=r),o&&(Array.prototype.toJSON=o)}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}return i}(((r={})[T.WINDOW_PROPS.POSTROBOT]=e,r));return K.map(Object.keys(tt),(function(e){return K.try((function(){if(!R.ALLOWED_POST_MESSAGE_METHODS[e])throw new Error("Strategy disallowed: "+e);return tt[e](t,i,n)})).then((function(){return o.push(e+": success"),!0}),(function(t){return o.push(e+": "+j(t)+"\n"),!1}))})).then((function(t){var n=t.some(Boolean),r=e.type+" "+e.name+" "+(n?"success":"error")+":\n - "+o.join("\n - ")+"\n";if(!n)throw new Error(r)}))}))}H.responseListeners=H.responseListeners||{},H.requestListeners=H.requestListeners||{},H.WINDOW_WILDCARD=H.WINDOW_WILDCARD||new function(){},H.erroredResponseListeners=H.erroredResponseListeners||{};var rt;function ot(t){return H.responseListeners[t]}function it(t){delete H.responseListeners[t]}function at(t){return Boolean(H.erroredResponseListeners[t])}function st(t){var e=t.name,n=t.win,r=t.domain;if(n===T.WILDCARD&&(n=null),r===T.WILDCARD&&(r=null),!e)throw new Error("Name required to get request listener");var o=H.requestListeners[e];if(o)for(var i=0,a=[n,H.WINDOW_WILDCARD],s=null==a?0:a.length;i0&&void 0!==arguments[0]?arguments[0]:window;try{if(t.top)return t.top}catch(t){}if(l(t)===t)return t;try{if(v(window,t)&&window.top)return window.top}catch(t){}try{if(v(t,window)&&window.top)return window.top}catch(t){}for(var e=0,n=function t(e){for(var n=[],r=0,o=_(e),i=null==o?0:o.length;r1&&void 0!==arguments[1]?arguments[1]:5e3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Window",r=H.readyPromises.get(t);return r||(r=new K,H.readyPromises.set(t,r),-1!==e&&setTimeout((function(){return r.reject(new Error(n+" did not load after "+e+"ms"))}),e),r)}(i,t.timeout||R.CHILD_WINDOW_TIMEOUT)})).then((function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(L(r)&&!t)return X(i)})).then((function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(L(r)){if(!E(r,n))throw new Error("Remote window domain "+n+" does not match regex: "+r.toString());r=n}if("string"!=typeof r&&!Array.isArray(r))throw new TypeError("Expected domain to be a string or array");var o=r;return new K((function(n,r){var l=void 0;if(t.fireAndForget||function(t,e){H.responseListeners[t]=e}(a,l={name:e,window:i,domain:o,respond:function(t,e){t||(s=!0,u.splice(u.indexOf(c,1))),t?r(t):n(e)}}),nt(i,{type:T.POST_MESSAGE_TYPE.REQUEST,hash:a,name:e,data:t.data,fireAndForget:t.fireAndForget},o).catch(r),t.fireAndForget)return n();var f=R.ACK_TIMEOUT,d=t.timeout||R.RES_TIMEOUT,h=100;setTimeout((function n(){if(!s){if(w(i))return l.ack?r(new Error("Window closed for "+e+" before response")):r(new Error("Window closed for "+e+" before ack"));if(f=Math.max(f-h,0),-1!==d&&(d=Math.max(d-h,0)),l.ack){if(-1===d)return;h=Math.min(d,2e3)}else{if(0===f)return r(new Error("No ack for postMessage "+e+" in "+p()+" in "+R.ACK_TIMEOUT+"ms"));if(0===d)return r(new Error("No response for postMessage "+e+" in "+p()+" in "+(t.timeout||R.RES_TIMEOUT)+"ms"))}setTimeout(n,h)}}),h)}))}));return c.catch((function(){!function(t){H.erroredResponseListeners[t]=!0}(a),it(a)})),u.push(c),c}))}function pt(t,e,n,r){return(r=r||{}).window=t,r.name=e,r.data=n,ht(r)}function yt(t,e,n){var r=b();return r?pt(r,t,e,n):new K((function(t,e){return e(new Error("Window does not have a parent"))}))}function vt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!t.window)throw new Error("Expected options.window");var e=t.window;return{send:function(n,r){return pt(e,n,r,t)}}}H.receivedMessages=H.receivedMessages||[],H.receiveMessage=ft,H.requestPromises=H.requestPromises||new A,H.send=pt;var _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function mt(t){if(!t.name)throw new Error("Expected options.name");if(!t.handler)throw new Error("Expected options.handler");var e,n=t.name,r=t.window,o=t.domain,i={handler:t.handler,handleError:t.errorHandler||function(t){throw t},window:r,domain:o||T.WILDCARD,name:n},a=function t(e,n){var r=e.name,o=e.win,i=e.domain;if(!r||"string"!=typeof r)throw new Error("Name required to add request listener");if(Array.isArray(o)){for(var a=[],s=0,u=o,c=null==u?0:u.length;s1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"function"==typeof e&&(n=e,e={}),e=e||{},n=n||e.handler;var r=e.errorHandler,o=new K((function(o,i){(e=e||{}).name=t,e.once=!0,e.handler=function(t){if(o(t),n)return n(t)},e.errorHandler=function(t){if(i(t),r)return r(t)}})),i=mt(e);return o.cancel=i.cancel,o}function bt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{on:function(e,n){return gt(e,t,n)}}}function Et(){delete window[T.WINDOW_PROPS.POSTROBOT],window.removeEventListener("message",dt)}H.on=gt;var Ot=b();function Pt(t){var e=H.requestPromises.get(t);if(e)for(var n=0,r=null==e?0:e.length;n{t.exports=n(957),t.exports.default=t.exports},979:function(t,e,n){"use strict";var r=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=["file","reference","blocks","group","global_field"],r=function(){function t(t,e,n){this.uid=t.data.uid,this.data_type=t.data.schema.data_type,this.schema=t.data.schema,this._emitter=n;var r,o,i,a,s=(r=this,i=o=t.data.value,a=o,"file"===r.data_type&&(o?(i=o,a=!0===r.schema.multiple?o.map((function(t){return t.uid})):o.uid):!0===r.schema.multiple&&(i=[],a=[])),{resolvedData:i,unResolvedData:a});this._data=s.unResolvedData,this._resolvedData=s.resolvedData,this._connection=e,this._self=t.data.self||!1;var u=this;n.on("updateFields",(function(t){var e=u.uid.split("."),n=t.data;e.forEach((function(t){n&&(n=n[t])})),u._data!==n&&(u._data=n)}))}return t.prototype.setData=function(t){var e=this,r=this,o={data:t,uid:r.uid,self:r._self};return r._self||-1===n.indexOf(r.data_type)&&r.data_type?this._connection.sendToParent("setData",o).then((function(){return e._data=t,Promise.resolve(r)})).catch((function(t){return Promise.reject(t)})):Promise.reject(new Error("Cannot call set data for current field type"))},t.prototype.getData=function(t){var e=(void 0===t?{}:t).resolved;return void 0!==e&&e?this._resolvedData:this._data},t.prototype.setFocus=function(){return this._connection.sendToParent("focus")},t.prototype.onChange=function(t){var e=this;if(!t||"function"!=typeof t)throw Error("Callback must be a function");this._emitter.on("extensionFieldChange",(function(n){e._data=n.data,e._resolvedData=n.data,t(n.data)}))},t}();e.default=r},632:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),a=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&i(e,t,n);return a(e,t),e},u=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},c=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(974),o=function(){function t(){var t;if(!Object.prototype.hasOwnProperty.call(window,"iframeRef")){var e=(0,r.getPreferredBodyElement)(null===(t=null===document||void 0===document?void 0:document.body)||void 0===t?void 0:t.children);window.iframeRef=e}}return t.prototype.setBackgroundElement=function(t){window.iframeRef=t},t}();e.default=o},160:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},a=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getReferences=e.includeReference=e.includeSchema=e.includeContentType=e.includeOwner=e.environment=e.language=e.addQuery=e.addParam=e._type=e.mergeDeep=e.merge=e.transform=void 0,e.transform=function(t){return function(){switch(arguments.length){case 1:if(Array.isArray(arguments[0])||"string"==typeof arguments[0])return e=(e=this._query[t+"[BASE]"]||[]).concat(arguments[0]),this._query[t+"[BASE]"]=e,this;throw Error("Kindly provide valid parameters");case 2:var e;if("string"==typeof arguments[0]&&(Array.isArray(arguments[1])||"string"==typeof arguments[1]))return e=(e=this._query[t+"["+arguments[0]+"]"]||[]).concat(arguments[1]),this._query[t+"["+arguments[0]+"]"]=e,this;throw Error("Kindly provide valid parameters");default:throw Error("Kindly provide valid parameters")}}},e.merge=function(t,e){var n=t;return t&&e&&Object.keys(e).forEach((function(t){n[t]=e[t]})),n},e.mergeDeep=function(t,e){var n=t,r=this,o=function(t,e){var n=t;Object.keys(e).forEach((function(t){"object"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?o(n[t],e[t]):"array"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?n[t]=n[t].concat(e[t]):n[t]=e[t]}))};return o(n,e),n},e._type=function(t){var e=typeof t;return"object"===e&&Array.isArray(t)&&(e="array"),e},e.addParam=function(t,e){if(t&&"string"==typeof t&&e&&"string"==typeof e)return this._query[t]=e,this;throw Error("Kindly provide valid parameters.")},e.addQuery=function(t,e){if(t&&e&&"string"==typeof t)return this._query[t]=e,this;throw Error("First argument should be a String.")},e.language=function(t){if(t&&"string"==typeof t)return this._query.locale=t,this;throw Error("Argument should be a String.")},e.environment=function(t){if(t&&"string"==typeof t)return this._query.environment=t,this;throw Error("Argument should be a String.")},e.includeOwner=function(){return this._query.include_owner=!0,this},e.includeContentType=function(){return this._query.include_content_type=!0,this},e.includeSchema=function(){return this._query.include_schema=!0,this},e.includeReference=function(t){if(Array.isArray(t))for(var e=0;e{"use strict";function n(t){return Promise.reject(t)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t){this._connection=t}return t.prototype.get=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"get",key:t}).then((function(t){return Promise.resolve(t.data)})).catch(n)},t.prototype.getAll=function(){return this._connection.sendToParent("store",{action:"getAll"}).then((function(t){var e=t.data,n=void 0===e?{}:e;return Promise.resolve(n)})).catch(n)},t.prototype.set=function(t,e){if(!t||!e||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"set",key:t,value:e}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.remove=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"remove",key:t}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.clear=function(){return this._connection.sendToParent("store",{action:"clear"}).then((function(){return Promise.resolve(!0)})).catch(n)},t}();e.default=r},699:(t,e)=>{"use strict";var n,r;Object.defineProperty(e,"__esModule",{value:!0}),e.Region=e.OrganizationLocation=e.StackLocation=void 0,(r=e.StackLocation||(e.StackLocation={})).STACK_CONFIG="cs.cm.stack.config",r.DASHBOARD="cs.cm.stack.dashboard",r.SIDEBAR="cs.cm.stack.sidebar",r.CUSTOM_FIELD="cs.cm.stack.custom_field",r.RTE="cs.cm.stack.rte",(e.OrganizationLocation||(e.OrganizationLocation={})).ORG_CONFIG="cs.org.config",(n=e.Region||(e.Region={})).UNKNOWN="UNKNOWN",n.NA="NA",n.EU="EU",n.AZURE_NA="AZURE_NA",n.AZURE_EU="AZURE_EU"},194:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ERROR_MESSAGES=void 0,e.ERROR_MESSAGES=Object.freeze({configPage:{setValidity:{isValidTypeBoolean:"isValid should be a boolean",messageTypeString:"message should be a string"}},entryField:{entry:{tagsShouldNotBeBlank:"Tags cannot be blank",tagsShouldBeArrayOfStrings:"Tags must be an array of strings"},frame:{dimensionHeightShouldBeNumber:"Dimension height must be a number",dimensionWidthShouldBeNumber:"Dimension width must be a number"}}}),e.default=function(t){return"Contentstack App SDK: "+t}},974:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getPreferredBodyElement=e.formatAppRegion=e.onError=e.onData=void 0;var r=n(699);e.onData=function(t){return"string"==typeof t.data?Promise.reject(t.data):Promise.resolve(t.data)},e.onError=function(t){return Promise.reject(t)},e.formatAppRegion=function(t){switch(t){case"NA":return r.Region.NA;case"EU":return r.Region.EU;case"AZURE_NA":return r.Region.AZURE_NA;case"AZURE_EU":return r.Region.AZURE_EU;default:return r.Region.UNKNOWN}},e.getPreferredBodyElement=function(t){var e,n=1/0,r=["HEADER","NAV","MAIN","SECTION","ARTICLE","ASIDE","FOOTER","DIV"],o=["SCRIPT","NOSCRIPT","STYLE","TEMPLATE"];return Array.from(t).forEach((function(t){var o=r.indexOf(t.nodeName);o>=0&&o{"use strict";t.exports=JSON.parse('{"name":"@contentstack/app-sdk","version":"1.6.0","types":"dist/src/index.d.ts","description":"This SDK helps connect to the development server of the Contentstack and sync the data.","main":"dist/index.js","repository":"https://github.com/contentstack/app-sdk","scripts":{"prepublish":"npm run build","build":"webpack","test":"jest","test:watch":"jest --watchAll","test:coverage":"jest --coverage --coverageDirectory=\\"coverage\\"","dev":"webpack --watch --mode development","lint":"eslint . --ext .ts --max-warnings=0","docs":"typedoc --out doc --entryPointStrategy expand ./src","prettier":"npx prettier src --check","prettier:fix":"npx prettier src --write","lint:fix":"eslint --fix","prepare":"npm run build && husky install","format":"npm run prettier:fix && npm run lint:fix"},"keywords":[],"author":{"name":"Contentstack","url":"https://www.contentstack.com/"},"maintainers":[{"name":"Deepak Kharah","email":"deepak.kharah@contentstack.com"}],"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.3.1","@testing-library/jest-dom":"^5.16.5","@types/chai":"^4.2.22","@types/jest":"^27.0.2","@types/post-robot":"^10.0.3","@types/react":"^17.0.18","@typescript-eslint/eslint-plugin":"^5.10.1","@typescript-eslint/parser":"^5.10.1","babel-loader":"^9.1.0","chai":"^4.3.4","css-loader":"^5.2.2","eslint":"^8.7.0","eslint-plugin-only-warn":"^1.1.0","husky":"^8.0.0","jest":"^27.3.1","lint-staged":"^13.1.0","react":"^17.0.2","slate":"^0.72.3","ts-jest":"^27.0.7","ts-loader":"^8.1.0","ts-node":"^10.3.0","typedoc":"^0.22.17","typescript":"^4.4.4","webpack":"^5.65.0","webpack-cli":"^4.9.1","webpack-dev-server":"^4.7.3"},"dependencies":{"loader-utils":"^3.2.1","post-robot":"^8.0.31","wolfy87-eventemitter":"^5.2.9"},"files":["dist"],"lint-staged":{"src/**/*.{ts,css,md}":["npm run prettier:fix ","npm run lint:fix"]}}')}},e={},function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r].call(i.exports,i,i.exports,n),i.exports}(607);var t,e})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ContentstackAppSDK=e():t.ContentstackAppSDK=e()}(this,(()=>{return t={957:function(t){"undefined"!=typeof self&&self,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/index.js")}({"./src/index.js":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={};function o(t){return"[object RegExp]"===Object.prototype.toString.call(t)}n.d(r,"cleanUpWindow",(function(){return Pt})),n.d(r,"Promise",(function(){return K})),n.d(r,"bridge",(function(){return St})),n.d(r,"init",(function(){return Tt})),n.d(r,"parent",(function(){return Ot})),n.d(r,"send",(function(){return pt})),n.d(r,"request",(function(){return ht})),n.d(r,"sendToParent",(function(){return yt})),n.d(r,"client",(function(){return vt})),n.d(r,"on",(function(){return gt})),n.d(r,"listen",(function(){return mt})),n.d(r,"once",(function(){return wt})),n.d(r,"listener",(function(){return bt})),n.d(r,"CONFIG",(function(){return R})),n.d(r,"CONSTANTS",(function(){return A})),n.d(r,"disable",(function(){return Et}));var i="mock:",a="file:",s="about:",u="Call was rejected by callee.\r\n";function c(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window).location.protocol===s}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t)try{if(t.parent&&t.parent!==t)return t.parent}catch(t){}}function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t&&!l(t))try{return t.opener}catch(t){}}function d(t){try{return t&&t.location&&t.location.href,!0}catch(t){}return!1}function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=t.location;if(!e)throw new Error("Can not read window location");var n=e.protocol;if(!n)throw new Error("Can not read window protocol");if(n===a)return a+"//";if(n===s){var r=l(t);return r&&d(r)?h(r):s+"//"}var o=e.host;if(!o)throw new Error("Can not read window host");return n+"//"+o}function p(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=h(t);return e&&t.mockDomain&&0===t.mockDomain.indexOf(i)?t.mockDomain:e}function y(t){try{if(t===window)return!0}catch(t){}try{var e=Object.getOwnPropertyDescriptor(t,"location");if(e&&!1===e.enumerable)return!1}catch(t){}try{if(c(t)&&d(t))return!0}catch(t){}try{if(h(t)===h(window))return!0}catch(t){}return!1}function v(t,e){if(!t||!e)return!1;var n=l(e);return n?n===t:-1!==function(t){var e=[];try{for(;t.parent!==t;)e.push(t.parent),t=t.parent}catch(t){}return e}(e).indexOf(t)}function _(t){var e=[],n=void 0;try{n=t.frames}catch(e){n=t}var r=void 0;try{r=n.length}catch(t){}if(0===r)return e;if(r){for(var o=0;o1&&void 0!==arguments[1])||arguments[1];try{if(t===window)return!1}catch(t){return!0}try{if(!t)return!0}catch(t){return!0}try{if(t.closed)return!0}catch(t){return!t||t.message!==u}if(e&&function(t){if(!y(t))return!1;try{if(t===window)return!0;if(c(t)&&d(t))return!0;if(p(window)===p(t))return!0}catch(t){}return!1}(t))try{if(t.mockclosed)return!0}catch(t){}try{if(!t.parent||!t.top)return!0}catch(t){}var n=function(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window;return f(t=t||window)||l(t)||void 0}function E(t,e){if("string"==typeof t){if("string"==typeof e)return"*"===t||e===t;if(o(e))return!1;if(Array.isArray(e))return!1}return o(t)?o(e)?t.toString()===e.toString():!Array.isArray(e)&&Boolean(e.match(t)):!!Array.isArray(t)&&(Array.isArray(e)?JSON.stringify(t)===JSON.stringify(e):!o(e)&&t.some((function(t){return E(t,e)})))}function O(t){try{if(t===window)return!0}catch(t){if(t&&t.message===u)return!0}try{if("[object Window]"===Object.prototype.toString.call(t))return!0}catch(t){if(t&&t.message===u)return!0}try{if(window.Window&&t instanceof window.Window)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.self===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.parent===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.top===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&"__unlikely_value__"===t.__cross_domain_utils_window_check__)return!1}catch(t){return!0}return!1}function P(t,e){for(var n=0;n>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var t=new WeakMap,e={};return Object.freeze(e),t.set(e,"__testvalue__"),"__testvalue__"===t.get(e)}catch(t){return!1}}())try{this.weakmap=new WeakMap}catch(t){}this.keys=[],this.values=[]}return t.prototype._cleanupClosedWindows=function(){for(var t=this.weakmap,e=this.keys,n=0;n1&&void 0!==arguments[1]?arguments[1]:1;if(e>=3)return"stringifyError stack overflow";try{if(!t)return"";if("string"==typeof t)return t;if(t instanceof Error){var n=t&&t.stack,r=t&&t.message;if(n&&r)return-1!==n.indexOf(r)?n:r+"\n"+n;if(n)return n;if(r)return r}return"function"==typeof t.toString?t.toString():Object.prototype.toString.call(t)}catch(t){return"Error while stringifying error: "+j(t,e+1)}}var M=function(t){if(!t)return t;var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}};function x(){}function C(){var t="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return t.charAt(Math.floor(Math.random()*t.length))}))}function L(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n>=100)throw new Error("Self-referential object passed, or object contained too many layers");var r=void 0;if("object"!==(void 0===t?"undefined":k(t))||null===t||Array.isArray(t)){if(!Array.isArray(t))throw new TypeError("Invalid type: "+(void 0===t?"undefined":k(t)));r=[]}else r={};return function(t,e){Array.isArray(t)?function(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},r=C(),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(f(t))}()?A.WINDOW_TYPES.POPUP:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(l(t))}()?A.WINDOW_TYPES.IFRAME:A.WINDOW_TYPES.FULLPAGE,i=p(window);return et({},e,n,{sourceDomain:i,id:e.id||r,windowType:o})}(t,e,{data:function(t,n,r){return L({obj:e.data},(function(e,r){return"function"==typeof e?Z(t,n,e,r.toString()):e instanceof Error?(o=e,{__type__:A.SERIALIZATION_TYPES.ERROR,__message__:j(o),__code__:o.code}):window.Promise&&e instanceof window.Promise?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):K.isPromise(e)?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.ZALGO_PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):I(e)?(i=e,{__type__:A.SERIALIZATION_TYPES.REGEX,__source__:i.source}):void 0;var o,i})).obj}(t,n),domain:n}),t===window&&!R.ALLOW_SAME_ORIGIN)throw new Error("Attemping to send message to self");if(w(t))throw new Error("Window is closed");var o=[],i=function(t,e,n){var r=void 0,o=void 0;try{if("{}"!==JSON.stringify({})&&(r=Object.prototype.toJSON,delete Object.prototype.toJSON),"{}"!==JSON.stringify({}))throw new Error("Can not correctly serialize JSON objects");if("[]"!==JSON.stringify([])&&(o=Array.prototype.toJSON,delete Array.prototype.toJSON),"[]"!==JSON.stringify([]))throw new Error("Can not correctly serialize JSON objects")}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}var i=JSON.stringify.call(this,t,null,2);try{r&&(Object.prototype.toJSON=r),o&&(Array.prototype.toJSON=o)}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}return i}(((r={})[A.WINDOW_PROPS.POSTROBOT]=e,r));return K.map(Object.keys(tt),(function(e){return K.try((function(){if(!R.ALLOWED_POST_MESSAGE_METHODS[e])throw new Error("Strategy disallowed: "+e);return tt[e](t,i,n)})).then((function(){return o.push(e+": success"),!0}),(function(t){return o.push(e+": "+j(t)+"\n"),!1}))})).then((function(t){var n=t.some(Boolean),r=e.type+" "+e.name+" "+(n?"success":"error")+":\n - "+o.join("\n - ")+"\n";if(!n)throw new Error(r)}))}))}H.responseListeners=H.responseListeners||{},H.requestListeners=H.requestListeners||{},H.WINDOW_WILDCARD=H.WINDOW_WILDCARD||new function(){},H.erroredResponseListeners=H.erroredResponseListeners||{};var rt;function ot(t){return H.responseListeners[t]}function it(t){delete H.responseListeners[t]}function at(t){return Boolean(H.erroredResponseListeners[t])}function st(t){var e=t.name,n=t.win,r=t.domain;if(n===A.WILDCARD&&(n=null),r===A.WILDCARD&&(r=null),!e)throw new Error("Name required to get request listener");var o=H.requestListeners[e];if(o)for(var i=0,a=[n,H.WINDOW_WILDCARD],s=null==a?0:a.length;i0&&void 0!==arguments[0]?arguments[0]:window;try{if(t.top)return t.top}catch(t){}if(l(t)===t)return t;try{if(v(window,t)&&window.top)return window.top}catch(t){}try{if(v(t,window)&&window.top)return window.top}catch(t){}for(var e=0,n=function t(e){for(var n=[],r=0,o=_(e),i=null==o?0:o.length;r1&&void 0!==arguments[1]?arguments[1]:5e3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Window",r=H.readyPromises.get(t);return r||(r=new K,H.readyPromises.set(t,r),-1!==e&&setTimeout((function(){return r.reject(new Error(n+" did not load after "+e+"ms"))}),e),r)}(i,t.timeout||R.CHILD_WINDOW_TIMEOUT)})).then((function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)&&!t)return X(i)})).then((function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)){if(!E(r,n))throw new Error("Remote window domain "+n+" does not match regex: "+r.toString());r=n}if("string"!=typeof r&&!Array.isArray(r))throw new TypeError("Expected domain to be a string or array");var o=r;return new K((function(n,r){var l=void 0;if(t.fireAndForget||function(t,e){H.responseListeners[t]=e}(a,l={name:e,window:i,domain:o,respond:function(t,e){t||(s=!0,u.splice(u.indexOf(c,1))),t?r(t):n(e)}}),nt(i,{type:A.POST_MESSAGE_TYPE.REQUEST,hash:a,name:e,data:t.data,fireAndForget:t.fireAndForget},o).catch(r),t.fireAndForget)return n();var f=R.ACK_TIMEOUT,d=t.timeout||R.RES_TIMEOUT,h=100;setTimeout((function n(){if(!s){if(w(i))return l.ack?r(new Error("Window closed for "+e+" before response")):r(new Error("Window closed for "+e+" before ack"));if(f=Math.max(f-h,0),-1!==d&&(d=Math.max(d-h,0)),l.ack){if(-1===d)return;h=Math.min(d,2e3)}else{if(0===f)return r(new Error("No ack for postMessage "+e+" in "+p()+" in "+R.ACK_TIMEOUT+"ms"));if(0===d)return r(new Error("No response for postMessage "+e+" in "+p()+" in "+(t.timeout||R.RES_TIMEOUT)+"ms"))}setTimeout(n,h)}}),h)}))}));return c.catch((function(){!function(t){H.erroredResponseListeners[t]=!0}(a),it(a)})),u.push(c),c}))}function pt(t,e,n,r){return(r=r||{}).window=t,r.name=e,r.data=n,ht(r)}function yt(t,e,n){var r=b();return r?pt(r,t,e,n):new K((function(t,e){return e(new Error("Window does not have a parent"))}))}function vt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!t.window)throw new Error("Expected options.window");var e=t.window;return{send:function(n,r){return pt(e,n,r,t)}}}H.receivedMessages=H.receivedMessages||[],H.receiveMessage=ft,H.requestPromises=H.requestPromises||new T,H.send=pt;var _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function mt(t){if(!t.name)throw new Error("Expected options.name");if(!t.handler)throw new Error("Expected options.handler");var e,n=t.name,r=t.window,o=t.domain,i={handler:t.handler,handleError:t.errorHandler||function(t){throw t},window:r,domain:o||A.WILDCARD,name:n},a=function t(e,n){var r=e.name,o=e.win,i=e.domain;if(!r||"string"!=typeof r)throw new Error("Name required to add request listener");if(Array.isArray(o)){for(var a=[],s=0,u=o,c=null==u?0:u.length;s1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"function"==typeof e&&(n=e,e={}),e=e||{},n=n||e.handler;var r=e.errorHandler,o=new K((function(o,i){(e=e||{}).name=t,e.once=!0,e.handler=function(t){if(o(t),n)return n(t)},e.errorHandler=function(t){if(i(t),r)return r(t)}})),i=mt(e);return o.cancel=i.cancel,o}function bt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{on:function(e,n){return gt(e,t,n)}}}function Et(){delete window[A.WINDOW_PROPS.POSTROBOT],window.removeEventListener("message",dt)}H.on=gt;var Ot=b();function Pt(t){var e=H.requestPromises.get(t);if(e)for(var n=0,r=null==e?0:e.length;n{t.exports=n(957),t.exports.default=t.exports},979:function(t,e,n){"use strict";var r=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=["file","reference","blocks","group","global_field"],r=function(){function t(t,e,n){this.uid=t.data.uid,this.data_type=t.data.schema.data_type,this.schema=t.data.schema,this._emitter=n;var r,o,i,a,s=(r=this,i=o=t.data.value,a=o,"file"===r.data_type&&(o?(i=o,a=!0===r.schema.multiple?o.map((function(t){return t.uid})):o.uid):!0===r.schema.multiple&&(i=[],a=[])),{resolvedData:i,unResolvedData:a});this._data=s.unResolvedData,this._resolvedData=s.resolvedData,this._connection=e,this._self=t.data.self||!1;var u=this;n.on("updateFields",(function(t){var e=u.uid.split("."),n=t.data;e.forEach((function(t){n&&(n=n[t])})),u._data!==n&&(u._data=n)}))}return t.prototype.setData=function(t){var e=this,r=this,o={data:t,uid:r.uid,self:r._self};return r._self||-1===n.indexOf(r.data_type)&&r.data_type?this._connection.sendToParent("setData",o).then((function(){return e._data=t,Promise.resolve(r)})).catch((function(t){return Promise.reject(t)})):Promise.reject(new Error("Cannot call set data for current field type"))},t.prototype.getData=function(t){var e=(void 0===t?{}:t).resolved;return void 0!==e&&e?this._resolvedData:this._data},t.prototype.setFocus=function(){return this._connection.sendToParent("focus")},t.prototype.onChange=function(t){var e=this;if(!t||"function"!=typeof t)throw Error("Callback must be a function");this._emitter.on("extensionFieldChange",(function(n){e._data=n.data,e._resolvedData=n.data,t(n.data)}))},t}();e.default=r},632:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),a=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&i(e,t,n);return a(e,t),e},u=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},c=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(974),o=function(){function t(){var t;if(!Object.prototype.hasOwnProperty.call(window,"iframeRef")){var e=(0,r.getPreferredBodyElement)(null===(t=null===document||void 0===document?void 0:document.body)||void 0===t?void 0:t.children);window.iframeRef=e}}return t.prototype.setBackgroundElement=function(t){window.iframeRef=t},t}();e.default=o},160:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},a=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getReferences=e.includeReference=e.includeSchema=e.includeContentType=e.includeOwner=e.environment=e.language=e.addQuery=e.addParam=e._type=e.mergeDeep=e.merge=e.transform=void 0,e.transform=function(t){return function(){switch(arguments.length){case 1:if(Array.isArray(arguments[0])||"string"==typeof arguments[0])return e=(e=this._query[t+"[BASE]"]||[]).concat(arguments[0]),this._query[t+"[BASE]"]=e,this;throw Error("Kindly provide valid parameters");case 2:var e;if("string"==typeof arguments[0]&&(Array.isArray(arguments[1])||"string"==typeof arguments[1]))return e=(e=this._query[t+"["+arguments[0]+"]"]||[]).concat(arguments[1]),this._query[t+"["+arguments[0]+"]"]=e,this;throw Error("Kindly provide valid parameters");default:throw Error("Kindly provide valid parameters")}}},e.merge=function(t,e){var n=t;return t&&e&&Object.keys(e).forEach((function(t){n[t]=e[t]})),n},e.mergeDeep=function(t,e){var n=t,r=this,o=function(t,e){var n=t;Object.keys(e).forEach((function(t){"object"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?o(n[t],e[t]):"array"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?n[t]=n[t].concat(e[t]):n[t]=e[t]}))};return o(n,e),n},e._type=function(t){var e=typeof t;return"object"===e&&Array.isArray(t)&&(e="array"),e},e.addParam=function(t,e){if(t&&"string"==typeof t&&e&&"string"==typeof e)return this._query[t]=e,this;throw Error("Kindly provide valid parameters.")},e.addQuery=function(t,e){if(t&&e&&"string"==typeof t)return this._query[t]=e,this;throw Error("First argument should be a String.")},e.language=function(t){if(t&&"string"==typeof t)return this._query.locale=t,this;throw Error("Argument should be a String.")},e.environment=function(t){if(t&&"string"==typeof t)return this._query.environment=t,this;throw Error("Argument should be a String.")},e.includeOwner=function(){return this._query.include_owner=!0,this},e.includeContentType=function(){return this._query.include_content_type=!0,this},e.includeSchema=function(){return this._query.include_schema=!0,this},e.includeReference=function(t){if(Array.isArray(t))for(var e=0;e{"use strict";function n(t){return Promise.reject(t)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t){this._connection=t}return t.prototype.get=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"get",key:t}).then((function(t){return Promise.resolve(t.data)})).catch(n)},t.prototype.getAll=function(){return this._connection.sendToParent("store",{action:"getAll"}).then((function(t){var e=t.data,n=void 0===e?{}:e;return Promise.resolve(n)})).catch(n)},t.prototype.set=function(t,e){if(!t||!e||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"set",key:t,value:e}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.remove=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"remove",key:t}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.clear=function(){return this._connection.sendToParent("store",{action:"clear"}).then((function(){return Promise.resolve(!0)})).catch(n)},t}();e.default=r},699:(t,e)=>{"use strict";var n,r;Object.defineProperty(e,"__esModule",{value:!0}),e.Region=e.OrganizationLocation=e.StackLocation=void 0,(r=e.StackLocation||(e.StackLocation={})).STACK_CONFIG="cs.cm.stack.config",r.DASHBOARD="cs.cm.stack.dashboard",r.SIDEBAR="cs.cm.stack.sidebar",r.CUSTOM_FIELD="cs.cm.stack.custom_field",r.RTE="cs.cm.stack.rte",(e.OrganizationLocation||(e.OrganizationLocation={})).ORG_CONFIG="cs.org.config",(n=e.Region||(e.Region={})).UNKNOWN="UNKNOWN",n.NA="NA",n.EU="EU",n.AZURE_NA="AZURE_NA",n.AZURE_EU="AZURE_EU"},194:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ERROR_MESSAGES=void 0,e.ERROR_MESSAGES=Object.freeze({configPage:{setValidity:{isValidTypeBoolean:"isValid should be a boolean",messageTypeString:"message should be a string"}},entryField:{entry:{tagsShouldNotBeBlank:"Tags cannot be blank",tagsShouldBeArrayOfStrings:"Tags must be an array of strings"},frame:{dimensionHeightShouldBeNumber:"Dimension height must be a number",dimensionWidthShouldBeNumber:"Dimension width must be a number"}}}),e.default=function(t){return"Contentstack App SDK: "+t}},974:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getPreferredBodyElement=e.formatAppRegion=e.onError=e.onData=void 0;var r=n(699);e.onData=function(t){return"string"==typeof t.data?Promise.reject(t.data):Promise.resolve(t.data)},e.onError=function(t){return Promise.reject(t)},e.formatAppRegion=function(t){switch(t){case"NA":return r.Region.NA;case"EU":return r.Region.EU;case"AZURE_NA":return r.Region.AZURE_NA;case"AZURE_EU":return r.Region.AZURE_EU;default:return r.Region.UNKNOWN}},e.getPreferredBodyElement=function(t){var e,n=1/0,r=["HEADER","NAV","MAIN","SECTION","ARTICLE","ASIDE","FOOTER","DIV"],o=["SCRIPT","NOSCRIPT","STYLE","TEMPLATE"];return Array.from(t).forEach((function(t){var o=r.indexOf(t.nodeName);o>=0&&o{"use strict";t.exports=JSON.parse('{"name":"@contentstack/app-sdk","version":"1.6.0","types":"dist/src/index.d.ts","description":"This SDK helps connect to the development server of the Contentstack and sync the data.","main":"dist/index.js","repository":"https://github.com/contentstack/app-sdk","scripts":{"prepublish":"npm run build","build":"webpack","test":"jest","test:watch":"jest --watchAll","test:coverage":"jest --coverage --coverageDirectory=\\"coverage\\"","dev":"webpack --watch --mode development","lint":"eslint . --ext .ts --max-warnings=0","docs":"typedoc --out doc --entryPointStrategy expand ./src","prettier":"npx prettier src --check","prettier:fix":"npx prettier src --write","lint:fix":"eslint --fix","prepare":"npm run build && husky install","format":"npm run prettier:fix && npm run lint:fix"},"keywords":[],"author":{"name":"Contentstack","url":"https://www.contentstack.com/"},"maintainers":[{"name":"Deepak Kharah","email":"deepak.kharah@contentstack.com"}],"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.3.1","@testing-library/jest-dom":"^5.16.5","@types/chai":"^4.2.22","@types/jest":"^27.0.2","@types/post-robot":"^10.0.3","@types/react":"^17.0.18","@typescript-eslint/eslint-plugin":"^5.10.1","@typescript-eslint/parser":"^5.10.1","babel-loader":"^9.1.0","chai":"^4.3.4","css-loader":"^5.2.2","eslint":"^8.7.0","eslint-plugin-only-warn":"^1.1.0","husky":"^8.0.0","jest":"^27.3.1","lint-staged":"^13.1.0","react":"^17.0.2","slate":"^0.72.3","ts-jest":"^27.0.7","ts-loader":"^8.1.0","ts-node":"^10.3.0","typedoc":"^0.22.17","typescript":"^4.4.4","webpack":"^5.65.0","webpack-cli":"^4.9.1","webpack-dev-server":"^4.7.3"},"dependencies":{"loader-utils":"^3.2.1","post-robot":"^8.0.31","wolfy87-eventemitter":"^5.2.9"},"files":["dist"],"lint-staged":{"src/**/*.{ts,css,md}":["npm run prettier:fix ","npm run lint:fix"]}}')}},e={},function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r].call(i.exports,i,i.exports,n),i.exports}(607);var t,e})); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 253c079..cfb64e5 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":"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","sources":["webpack://ContentstackAppSDK/webpack/universalModuleDefinition","webpack://ContentstackAppSDK/./node_modules/post-robot/dist/post-robot.js","webpack://ContentstackAppSDK/./node_modules/post-robot/index.js","webpack://ContentstackAppSDK/./src/AssetSidebarWidget.ts","webpack://ContentstackAppSDK/./src/RTE/index.tsx","webpack://ContentstackAppSDK/./src/appConfig/index.ts","webpack://ContentstackAppSDK/./src/entry.ts","webpack://ContentstackAppSDK/./src/extension.ts","webpack://ContentstackAppSDK/./src/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/entry.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/frame.ts","webpack://ContentstackAppSDK/./src/index.ts","webpack://ContentstackAppSDK/./src/metadata.ts","webpack://ContentstackAppSDK/./src/modal.ts","webpack://ContentstackAppSDK/./src/stack/api/asset/index.ts","webpack://ContentstackAppSDK/./src/stack/api/base.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/entry.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/index.ts","webpack://ContentstackAppSDK/./src/stack/api/query.ts","webpack://ContentstackAppSDK/./src/stack/index.ts","webpack://ContentstackAppSDK/./src/stack/utils.ts","webpack://ContentstackAppSDK/./src/store.ts","webpack://ContentstackAppSDK/./src/types.ts","webpack://ContentstackAppSDK/./src/utils/errorMessages.ts","webpack://ContentstackAppSDK/./src/utils/utils.ts","webpack://ContentstackAppSDK/./src/window.ts","webpack://ContentstackAppSDK/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://ContentstackAppSDK/webpack/bootstrap","webpack://ContentstackAppSDK/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ContentstackAppSDK\"] = factory();\n\telse\n\t\troot[\"ContentstackAppSDK\"] = factory();\n})(this, () => {\nreturn ","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"postRobot\", [], factory) : \"object\" == typeof exports ? exports.postRobot = factory() : root.postRobot = factory();\n}(\"undefined\" != typeof self ? self : this, function() {\n return function(modules) {\n var installedModules = {};\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n module.l = !0;\n return module.exports;\n }\n __webpack_require__.m = modules;\n __webpack_require__.c = installedModules;\n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n configurable: !1,\n enumerable: !0,\n get: getter\n });\n };\n __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n __webpack_require__.d(getter, \"a\", getter);\n return getter;\n };\n __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n __webpack_require__.p = \"\";\n return __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n }({\n \"./src/index.js\": function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n Object.defineProperty(__webpack_exports__, \"__esModule\", {\n value: !0\n });\n var interface_namespaceObject = {};\n __webpack_require__.d(interface_namespaceObject, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(interface_namespaceObject, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(interface_namespaceObject, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(interface_namespaceObject, \"init\", function() {\n return init;\n });\n __webpack_require__.d(interface_namespaceObject, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(interface_namespaceObject, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(interface_namespaceObject, \"request\", function() {\n return request;\n });\n __webpack_require__.d(interface_namespaceObject, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(interface_namespaceObject, \"client\", function() {\n return client;\n });\n __webpack_require__.d(interface_namespaceObject, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(interface_namespaceObject, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(interface_namespaceObject, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(interface_namespaceObject, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(interface_namespaceObject, \"disable\", function() {\n return disable;\n });\n function isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n var PROTOCOL = {\n MOCK: \"mock:\",\n FILE: \"file:\",\n ABOUT: \"about:\"\n }, WILDCARD = \"*\", IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n function isAboutProtocol() {\n return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window).location.protocol === PROTOCOL.ABOUT;\n }\n function getParent() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win) try {\n if (win.parent && win.parent !== win) return win.parent;\n } catch (err) {}\n }\n function getOpener() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win && !getParent(win)) try {\n return win.opener;\n } catch (err) {}\n }\n function canReadFromWindow(win) {\n try {\n win && win.location && win.location.href;\n return !0;\n } catch (err) {}\n return !1;\n }\n function getActualDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, location = win.location;\n if (!location) throw new Error(\"Can not read window location\");\n var protocol = location.protocol;\n if (!protocol) throw new Error(\"Can not read window protocol\");\n if (protocol === PROTOCOL.FILE) return PROTOCOL.FILE + \"//\";\n if (protocol === PROTOCOL.ABOUT) {\n var parent = getParent(win);\n return parent && canReadFromWindow(parent) ? getActualDomain(parent) : PROTOCOL.ABOUT + \"//\";\n }\n var host = location.host;\n if (!host) throw new Error(\"Can not read window host\");\n return protocol + \"//\" + host;\n }\n function utils_getDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, domain = getActualDomain(win);\n return domain && win.mockDomain && 0 === win.mockDomain.indexOf(PROTOCOL.MOCK) ? win.mockDomain : domain;\n }\n function isActuallySameDomain(win) {\n try {\n if (win === window) return !0;\n } catch (err) {}\n try {\n var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n if (desc && !1 === desc.enumerable) return !1;\n } catch (err) {}\n try {\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n } catch (err) {}\n try {\n if (getActualDomain(win) === getActualDomain(window)) return !0;\n } catch (err) {}\n return !1;\n }\n function isAncestorParent(parent, child) {\n if (!parent || !child) return !1;\n var childParent = getParent(child);\n return childParent ? childParent === parent : -1 !== function(win) {\n var result = [];\n try {\n for (;win.parent !== win; ) {\n result.push(win.parent);\n win = win.parent;\n }\n } catch (err) {}\n return result;\n }(child).indexOf(parent);\n }\n function getFrames(win) {\n var result = [], frames = void 0;\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n var len = void 0;\n try {\n len = frames.length;\n } catch (err) {}\n if (0 === len) return result;\n if (len) {\n for (var i = 0; i < len; i++) {\n var frame = void 0;\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n result.push(frame);\n }\n return result;\n }\n for (var _i = 0; _i < 100; _i++) {\n var _frame = void 0;\n try {\n _frame = frames[_i];\n } catch (err) {\n return result;\n }\n if (!_frame) return result;\n result.push(_frame);\n }\n return result;\n }\n var iframeWindows = [], iframeFrames = [];\n function isWindowClosed(win) {\n var allowMock = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n try {\n if (win === window) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (!win) return !0;\n } catch (err) {\n return !0;\n }\n try {\n if (win.closed) return !0;\n } catch (err) {\n return !err || err.message !== IE_WIN_ACCESS_ERROR;\n }\n if (allowMock && function(win) {\n if (!isActuallySameDomain(win)) return !1;\n try {\n if (win === window) return !0;\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n if (utils_getDomain(window) === utils_getDomain(win)) return !0;\n } catch (err) {}\n return !1;\n }(win)) try {\n if (win.mockclosed) return !0;\n } catch (err) {}\n try {\n if (!win.parent || !win.top) return !0;\n } catch (err) {}\n var iframeIndex = function(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }(iframeWindows, win);\n if (-1 !== iframeIndex) {\n var frame = iframeFrames[iframeIndex];\n if (frame && function(frame) {\n if (!frame.contentWindow) return !0;\n if (!frame.parentNode) return !0;\n var doc = frame.ownerDocument;\n return !(!doc || !doc.documentElement || doc.documentElement.contains(frame));\n }(frame)) return !0;\n }\n return !1;\n }\n function getAncestor() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return getOpener(win = win || window) || getParent(win) || void 0;\n }\n function matchDomain(pattern, origin) {\n if (\"string\" == typeof pattern) {\n if (\"string\" == typeof origin) return pattern === WILDCARD || origin === pattern;\n if (isRegex(origin)) return !1;\n if (Array.isArray(origin)) return !1;\n }\n return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some(function(subpattern) {\n return matchDomain(subpattern, origin);\n }));\n }\n function isWindow(obj) {\n try {\n if (obj === window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (\"[object Window]\" === Object.prototype.toString.call(obj)) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (window.Window && obj instanceof window.Window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.self === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.parent === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.top === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n } catch (err) {\n return !0;\n }\n return !1;\n }\n function util_safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }\n var _ALLOWED_POST_MESSAGE, weakmap_CrossDomainSafeWeakMap = function() {\n function CrossDomainSafeWeakMap() {\n !function(instance, Constructor) {\n if (!(instance instanceof CrossDomainSafeWeakMap)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n if (function() {\n if (\"undefined\" == typeof WeakMap) return !1;\n if (void 0 === Object.freeze) return !1;\n try {\n var testWeakMap = new WeakMap(), testKey = {};\n Object.freeze(testKey);\n testWeakMap.set(testKey, \"__testvalue__\");\n return \"__testvalue__\" === testWeakMap.get(testKey);\n } catch (err) {\n return !1;\n }\n }()) try {\n this.weakmap = new WeakMap();\n } catch (err) {}\n this.keys = [];\n this.values = [];\n }\n CrossDomainSafeWeakMap.prototype._cleanupClosedWindows = function() {\n for (var weakmap = this.weakmap, keys = this.keys, i = 0; i < keys.length; i++) {\n var value = keys[i];\n if (isWindow(value) && isWindowClosed(value)) {\n if (weakmap) try {\n weakmap.delete(value);\n } catch (err) {}\n keys.splice(i, 1);\n this.values.splice(i, 1);\n i -= 1;\n }\n }\n };\n CrossDomainSafeWeakMap.prototype.isSafeToReadWrite = function(key) {\n if (isWindow(key)) return !1;\n try {\n key && key.self;\n key && key[this.name];\n } catch (err) {\n return !1;\n }\n return !0;\n };\n CrossDomainSafeWeakMap.prototype.set = function(key, value) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var name = this.name, entry = key[name];\n entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: !0\n });\n return;\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, values = this.values, index = util_safeIndexOf(keys, key);\n if (-1 === index) {\n keys.push(key);\n values.push(value);\n } else values[index] = value;\n };\n CrossDomainSafeWeakMap.prototype.get = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return weakmap.get(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return entry && entry[0] === key ? entry[1] : void 0;\n } catch (err) {}\n this._cleanupClosedWindows();\n var index = util_safeIndexOf(this.keys, key);\n if (-1 !== index) return this.values[index];\n };\n CrossDomainSafeWeakMap.prototype.delete = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, index = util_safeIndexOf(keys, key);\n if (-1 !== index) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n };\n CrossDomainSafeWeakMap.prototype.has = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return !0;\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return !(!entry || entry[0] !== key);\n } catch (err) {}\n this._cleanupClosedWindows();\n return -1 !== util_safeIndexOf(this.keys, key);\n };\n CrossDomainSafeWeakMap.prototype.getOrSet = function(key, getter) {\n if (this.has(key)) return this.get(key);\n var value = getter();\n this.set(key, value);\n return value;\n };\n return CrossDomainSafeWeakMap;\n }(), constants_CONSTANTS = {\n POST_MESSAGE_TYPE: {\n REQUEST: \"postrobot_message_request\",\n RESPONSE: \"postrobot_message_response\",\n ACK: \"postrobot_message_ack\"\n },\n POST_MESSAGE_ACK: {\n SUCCESS: \"success\",\n ERROR: \"error\"\n },\n POST_MESSAGE_NAMES: {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_ready\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n },\n WINDOW_TYPES: {\n FULLPAGE: \"fullpage\",\n POPUP: \"popup\",\n IFRAME: \"iframe\"\n },\n WINDOW_PROPS: {\n POSTROBOT: \"__postRobot__\"\n },\n SERIALIZATION_TYPES: {\n METHOD: \"postrobot_method\",\n ERROR: \"postrobot_error\",\n PROMISE: \"postrobot_promise\",\n ZALGO_PROMISE: \"postrobot_zalgo_promise\",\n REGEX: \"regex\"\n },\n SEND_STRATEGIES: {\n POST_MESSAGE: \"postrobot_post_message\",\n BRIDGE: \"postrobot_bridge\",\n GLOBAL: \"postrobot_global\"\n },\n MOCK_PROTOCOL: \"mock:\",\n FILE_PROTOCOL: \"file:\",\n BRIDGE_NAME_PREFIX: \"__postrobot_bridge__\",\n POSTROBOT_PROXY: \"__postrobot_proxy__\",\n WILDCARD: \"*\"\n }, POST_MESSAGE_NAMES = {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_hello\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n }, CONFIG = (Object.keys(POST_MESSAGE_NAMES).map(function(key) {\n return POST_MESSAGE_NAMES[key];\n }), {\n ALLOW_POSTMESSAGE_POPUP: !(\"__ALLOW_POSTMESSAGE_POPUP__\" in window) || window.__ALLOW_POSTMESSAGE_POPUP__,\n BRIDGE_TIMEOUT: 5e3,\n CHILD_WINDOW_TIMEOUT: 5e3,\n ACK_TIMEOUT: -1 !== window.navigator.userAgent.match(/MSIE/i) ? 1e4 : 2e3,\n RES_TIMEOUT: -1,\n ALLOWED_POST_MESSAGE_METHODS: (_ALLOWED_POST_MESSAGE = {}, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = !0, \n _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.BRIDGE] = !0, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.GLOBAL] = !0, \n _ALLOWED_POST_MESSAGE),\n ALLOW_SAME_ORIGIN: !1\n });\n 0 === window.location.href.indexOf(constants_CONSTANTS.FILE_PROTOCOL) && (CONFIG.ALLOW_POSTMESSAGE_POPUP = !0);\n var _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function stringifyError(err) {\n var level = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\n if (level >= 3) return \"stringifyError stack overflow\";\n try {\n if (!err) return \"\";\n if (\"string\" == typeof err) return err;\n if (err instanceof Error) {\n var stack = err && err.stack, message = err && err.message;\n if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n if (stack) return stack;\n if (message) return message;\n }\n return \"function\" == typeof err.toString ? err.toString() : Object.prototype.toString.call(err);\n } catch (newErr) {\n return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n }\n }\n var once = function(method) {\n if (!method) return method;\n var called = !1;\n return function() {\n if (!called) {\n called = !0;\n return method.apply(this, arguments);\n }\n };\n };\n function lib_util_noop() {}\n function uniqueID() {\n var chars = \"0123456789abcdef\";\n return \"xxxxxxxxxx\".replace(/./g, function() {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n }\n function replaceObject(item, callback) {\n var depth = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\n if (depth >= 100) throw new Error(\"Self-referential object passed, or object contained too many layers\");\n var newobj = void 0;\n if (\"object\" !== (void 0 === item ? \"undefined\" : _typeof(item)) || null === item || Array.isArray(item)) {\n if (!Array.isArray(item)) throw new TypeError(\"Invalid type: \" + (void 0 === item ? \"undefined\" : _typeof(item)));\n newobj = [];\n } else newobj = {};\n !function(item, callback) {\n Array.isArray(item) ? function(item, callback) {\n for (var i = 0; i < item.length; i++) callback(item[i], i);\n }(item, callback) : \"object\" === (void 0 === item ? \"undefined\" : _typeof(item)) && null !== item && function(item, callback) {\n for (var _key in item) item.hasOwnProperty(_key) && callback(item[_key], _key);\n }(item, callback);\n }(item, function(childItem, key) {\n var result = callback(childItem, key);\n void 0 !== result ? newobj[key] = result : \"object\" === (void 0 === childItem ? \"undefined\" : _typeof(childItem)) && null !== childItem ? newobj[key] = replaceObject(childItem, callback, depth + 1) : newobj[key] = childItem;\n });\n return newobj;\n }\n function util_isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n function utils_isPromise(item) {\n try {\n if (!item) return !1;\n if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n var _toString = {}.toString;\n if (_toString) {\n var name = _toString.call(item);\n if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n }\n if (\"function\" == typeof item.then) return !0;\n } catch (err) {\n return !1;\n }\n return !1;\n }\n var dispatchedErrors = [], possiblyUnhandledPromiseHandlers = [], activeCount = 0, flushPromise = void 0;\n function flushActive() {\n if (!activeCount && flushPromise) {\n var promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n }\n function startActive() {\n activeCount += 1;\n }\n function endActive() {\n activeCount -= 1;\n flushActive();\n }\n var promise_ZalgoPromise = function() {\n function ZalgoPromise(handler) {\n var _this = this;\n !function(instance, Constructor) {\n if (!(instance instanceof ZalgoPromise)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.resolved = !1;\n this.rejected = !1;\n this.errorHandled = !1;\n this.handlers = [];\n if (handler) {\n var _result = void 0, _error = void 0, resolved = !1, rejected = !1, isAsync = !1;\n startActive();\n try {\n handler(function(res) {\n if (isAsync) _this.resolve(res); else {\n resolved = !0;\n _result = res;\n }\n }, function(err) {\n if (isAsync) _this.reject(err); else {\n rejected = !0;\n _error = err;\n }\n });\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n endActive();\n isAsync = !0;\n resolved ? this.resolve(_result) : rejected && this.reject(_error);\n }\n }\n ZalgoPromise.prototype.resolve = function(result) {\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n this.resolved = !0;\n this.value = result;\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.reject = function(error) {\n var _this2 = this;\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n if (!error) {\n var _err = error && \"function\" == typeof error.toString ? error.toString() : Object.prototype.toString.call(error);\n error = new Error(\"Expected reject to be called with Error, got \" + _err);\n }\n this.rejected = !0;\n this.error = error;\n this.errorHandled || setTimeout(function() {\n _this2.errorHandled || function(err, promise) {\n if (-1 === dispatchedErrors.indexOf(err)) {\n dispatchedErrors.push(err);\n setTimeout(function() {\n throw err;\n }, 1);\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n }(error, _this2);\n }, 1);\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.asyncReject = function(error) {\n this.errorHandled = !0;\n this.reject(error);\n return this;\n };\n ZalgoPromise.prototype.dispatch = function() {\n var dispatching = this.dispatching, resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n if (!dispatching && (resolved || rejected)) {\n this.dispatching = !0;\n startActive();\n for (var chain = function(firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n secondPromise.resolve(res);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < handlers.length; i++) {\n var _handlers$i = handlers[i], _onSuccess = _handlers$i.onSuccess, _onError = _handlers$i.onError, _promise = _handlers$i.promise, _result2 = void 0;\n if (resolved) try {\n _result2 = _onSuccess ? _onSuccess(this.value) : this.value;\n } catch (err) {\n _promise.reject(err);\n continue;\n } else if (rejected) {\n if (!_onError) {\n _promise.reject(this.error);\n continue;\n }\n try {\n _result2 = _onError(this.error);\n } catch (err) {\n _promise.reject(err);\n continue;\n }\n }\n if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error);\n _result2.errorHandled = !0;\n } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error) : chain(_result2, _promise) : _promise.resolve(_result2);\n }\n handlers.length = 0;\n this.dispatching = !1;\n endActive();\n }\n };\n ZalgoPromise.prototype.then = function(onSuccess, onError) {\n if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n var promise = new ZalgoPromise();\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n this.errorHandled = !0;\n this.dispatch();\n return promise;\n };\n ZalgoPromise.prototype.catch = function(onError) {\n return this.then(void 0, onError);\n };\n ZalgoPromise.prototype.finally = function(onFinally) {\n if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n return this.then(function(result) {\n return ZalgoPromise.try(onFinally).then(function() {\n return result;\n });\n }, function(err) {\n return ZalgoPromise.try(onFinally).then(function() {\n throw err;\n });\n });\n };\n ZalgoPromise.prototype.timeout = function(time, err) {\n var _this3 = this;\n if (this.resolved || this.rejected) return this;\n var timeout = setTimeout(function() {\n _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n }, time);\n return this.then(function(result) {\n clearTimeout(timeout);\n return result;\n });\n };\n ZalgoPromise.prototype.toPromise = function() {\n if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n return Promise.resolve(this);\n };\n ZalgoPromise.resolve = function(value) {\n return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise(function(resolve, reject) {\n return value.then(resolve, reject);\n }) : new ZalgoPromise().resolve(value);\n };\n ZalgoPromise.reject = function(error) {\n return new ZalgoPromise().reject(error);\n };\n ZalgoPromise.asyncReject = function(error) {\n return new ZalgoPromise().asyncReject(error);\n };\n ZalgoPromise.all = function(promises) {\n var promise = new ZalgoPromise(), count = promises.length, results = [];\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n for (var chain = function(i, firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n results[i] = res;\n 0 == (count -= 1) && promise.resolve(results);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < promises.length; i++) {\n var prom = promises[i];\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!utils_isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n 0 === count && promise.resolve(results);\n return promise;\n };\n ZalgoPromise.hash = function(promises) {\n var result = {};\n return ZalgoPromise.all(Object.keys(promises).map(function(key) {\n return ZalgoPromise.resolve(promises[key]).then(function(value) {\n result[key] = value;\n });\n })).then(function() {\n return result;\n });\n };\n ZalgoPromise.map = function(items, method) {\n return ZalgoPromise.all(items.map(method));\n };\n ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n return function(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n return {\n cancel: function() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n }(handler);\n };\n ZalgoPromise.try = function(method, context, args) {\n if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n var result = void 0;\n startActive();\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n endActive();\n return ZalgoPromise.resolve(result);\n };\n ZalgoPromise.delay = function(_delay) {\n return new ZalgoPromise(function(resolve) {\n setTimeout(resolve, _delay);\n });\n };\n ZalgoPromise.isPromise = function(value) {\n return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n };\n ZalgoPromise.flush = function() {\n return function(Zalgo) {\n var promise = flushPromise = flushPromise || new ZalgoPromise();\n flushActive();\n return promise;\n }();\n };\n return ZalgoPromise;\n }(), global = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n global.registerSelf = function() {};\n var serialize__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.methods = global.methods || new weakmap_CrossDomainSafeWeakMap();\n var listenForMethods = once(function() {\n global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n origin: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin, data = _ref.data, methods = global.methods.get(source);\n if (!methods) throw new Error(\"Could not find any methods this window has privileges to call\");\n var meth = methods[data.id];\n if (!meth) throw new Error(\"Could not find method with id: \" + data.id);\n if (!matchDomain(meth.domain, origin)) throw new Error(\"Method domain \" + meth.domain + \" does not match origin \" + origin);\n return promise_ZalgoPromise.try(function() {\n return meth.method.apply({\n source: source,\n origin: origin,\n data: data\n }, data.args);\n }).then(function(result) {\n return {\n result: result,\n id: data.id,\n name: data.name\n };\n });\n });\n });\n function isSerialized(item, type) {\n return \"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item && item.__type__ === type;\n }\n function serializeMethod(destination, domain, method, name) {\n var id = uniqueID(), methods = global.methods.get(destination);\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n methods[id] = {\n domain: domain,\n method: method\n };\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n }\n function deserializeMethod(source, origin, obj) {\n function wrapper() {\n var args = Array.prototype.slice.call(arguments);\n return global.send(source, constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args: args\n }, {\n domain: origin,\n timeout: -1\n }).then(function(_ref2) {\n return _ref2.data.result;\n }, function(err) {\n throw err;\n });\n }\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = !0;\n wrapper.source = source;\n wrapper.origin = origin;\n return wrapper;\n }\n function deserializeZalgoPromise(source, origin, prom) {\n return new promise_ZalgoPromise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n });\n }\n global.readyPromises = global.readyPromises || new weakmap_CrossDomainSafeWeakMap();\n function sayHello(win) {\n return global.send(win, constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, {\n domain: constants_CONSTANTS.WILDCARD,\n timeout: -1\n }).then(function(_ref2) {\n return {\n origin: _ref2.origin\n };\n });\n }\n var SEND_MESSAGE_STRATEGIES = {};\n SEND_MESSAGE_STRATEGIES[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = function(win, serializedMessage, domain) {\n (Array.isArray(domain) ? domain : \"string\" == typeof domain ? [ domain ] : [ constants_CONSTANTS.WILDCARD ]).map(function(dom) {\n if (0 === dom.indexOf(constants_CONSTANTS.MOCK_PROTOCOL)) {\n if (window.location.protocol === constants_CONSTANTS.FILE_PROTOCOL) return constants_CONSTANTS.WILDCARD;\n if (!isActuallySameDomain(win)) throw new Error(\"Attempting to send messsage to mock domain \" + dom + \", but window is actually cross-domain\");\n return getActualDomain(win);\n }\n return 0 === dom.indexOf(constants_CONSTANTS.FILE_PROTOCOL) ? constants_CONSTANTS.WILDCARD : dom;\n }).forEach(function(dom) {\n return win.postMessage(serializedMessage, dom);\n });\n };\n var _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n };\n function sendMessage(win, message, domain) {\n return promise_ZalgoPromise.try(function() {\n var _jsonStringify;\n message = function(win, message) {\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, id = uniqueID(), type = function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getOpener(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.POPUP : function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getParent(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.IFRAME : constants_CONSTANTS.WINDOW_TYPES.FULLPAGE, sourceDomain = utils_getDomain(window);\n return _extends({}, message, options, {\n sourceDomain: sourceDomain,\n id: message.id || id,\n windowType: type\n });\n }(win, message, {\n data: function(destination, domain, obj) {\n return replaceObject({\n obj: message.data\n }, function(item, key) {\n return \"function\" == typeof item ? serializeMethod(destination, domain, item, key.toString()) : item instanceof Error ? (err = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n __code__: err.code\n }) : window.Promise && item instanceof window.Promise ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : promise_ZalgoPromise.isPromise(item) ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : util_isRegex(item) ? (regex = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n }) : void 0;\n var err, regex;\n }).obj;\n }(win, domain),\n domain: domain\n });\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) throw new Error(\"Attemping to send message to self\");\n if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n var messages = [], serializedMessage = function(obj, replacer, indent) {\n var objectToJSON = void 0, arrayToJSON = void 0;\n try {\n if (\"{}\" !== JSON.stringify({})) {\n objectToJSON = Object.prototype.toJSON;\n delete Object.prototype.toJSON;\n }\n if (\"{}\" !== JSON.stringify({})) throw new Error(\"Can not correctly serialize JSON objects\");\n if (\"[]\" !== JSON.stringify([])) {\n arrayToJSON = Array.prototype.toJSON;\n delete Array.prototype.toJSON;\n }\n if (\"[]\" !== JSON.stringify([])) throw new Error(\"Can not correctly serialize JSON objects\");\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n var result = JSON.stringify.call(this, obj, null, 2);\n try {\n objectToJSON && (Object.prototype.toJSON = objectToJSON);\n arrayToJSON && (Array.prototype.toJSON = arrayToJSON);\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n return result;\n }(((_jsonStringify = {})[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = message, \n _jsonStringify));\n return promise_ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), function(strategyName) {\n return promise_ZalgoPromise.try(function() {\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) throw new Error(\"Strategy disallowed: \" + strategyName);\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n }).then(function() {\n messages.push(strategyName + \": success\");\n return !0;\n }, function(err) {\n messages.push(strategyName + \": \" + stringifyError(err) + \"\\n\");\n return !1;\n });\n }).then(function(results) {\n var success = results.some(Boolean), status = message.type + \" \" + message.name + \" \" + (success ? \"success\" : \"error\") + \":\\n - \" + messages.join(\"\\n - \") + \"\\n\";\n if (!success) throw new Error(status);\n });\n });\n }\n global.responseListeners = global.responseListeners || {};\n global.requestListeners = global.requestListeners || {};\n global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new function() {}();\n global.erroredResponseListeners = global.erroredResponseListeners || {};\n var _RECEIVE_MESSAGE_TYPE, __DOMAIN_REGEX__ = \"__domain_regex__\";\n function getResponseListener(hash) {\n return global.responseListeners[hash];\n }\n function deleteResponseListener(hash) {\n delete global.responseListeners[hash];\n }\n function isResponseListenerErrored(hash) {\n return Boolean(global.erroredResponseListeners[hash]);\n }\n function getRequestListener(_ref) {\n var name = _ref.name, win = _ref.win, domain = _ref.domain;\n win === constants_CONSTANTS.WILDCARD && (win = null);\n domain === constants_CONSTANTS.WILDCARD && (domain = null);\n if (!name) throw new Error(\"Name required to get request listener\");\n var nameListeners = global.requestListeners[name];\n if (nameListeners) for (var _i2 = 0, _ref3 = [ win, global.WINDOW_WILDCARD ], _length2 = null == _ref3 ? 0 : _ref3.length; _i2 < _length2; _i2++) {\n var winQualifier = _ref3[_i2], winListeners = winQualifier && nameListeners.get(winQualifier);\n if (winListeners) {\n if (domain && \"string\" == typeof domain) {\n if (winListeners[domain]) return winListeners[domain];\n if (winListeners[__DOMAIN_REGEX__]) for (var _i4 = 0, _winListeners$__DOMAI2 = winListeners[__DOMAIN_REGEX__], _length4 = null == _winListeners$__DOMAI2 ? 0 : _winListeners$__DOMAI2.length; _i4 < _length4; _i4++) {\n var _ref5 = _winListeners$__DOMAI2[_i4], regex = _ref5.regex, listener = _ref5.listener;\n if (matchDomain(regex, domain)) return listener;\n }\n }\n if (winListeners[constants_CONSTANTS.WILDCARD]) return winListeners[constants_CONSTANTS.WILDCARD];\n }\n }\n }\n var types__extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }, RECEIVE_MESSAGE_TYPES = ((_RECEIVE_MESSAGE_TYPE = {})[constants_CONSTANTS.POST_MESSAGE_TYPE.ACK] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message ack for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n options.ack = !0;\n }\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST] = function(source, origin, message) {\n var options = getRequestListener({\n name: message.name,\n win: source,\n domain: origin\n });\n function respond(data) {\n return message.fireAndForget || isWindowClosed(source) ? promise_ZalgoPromise.resolve() : sendMessage(source, types__extends({\n target: message.originalSource,\n hash: message.hash,\n name: message.name\n }, data), origin);\n }\n return promise_ZalgoPromise.all([ respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.ACK\n }), promise_ZalgoPromise.try(function() {\n if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Request origin \" + origin + \" does not match domain \" + options.domain.toString());\n var data = message.data;\n return options.handler({\n source: source,\n origin: origin,\n data: data\n });\n }).then(function(data) {\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data: data\n });\n }, function(err) {\n var error = stringifyError(err).replace(/^Error: /, \"\"), code = err.code;\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error: error,\n code: code\n });\n }) ]).then(lib_util_noop).catch(function(err) {\n if (options && options.handleError) return options.handleError(err);\n throw err;\n });\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var pattern, options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message response for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() : pattern.toString()));\n deleteResponseListener(message.hash);\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n var err = new Error(message.error);\n message.code && (err.code = message.code);\n return options.respond(err, null);\n }\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n var data = message.data || message.response;\n return options.respond(null, {\n source: source,\n origin: origin,\n data: data\n });\n }\n }\n }, _RECEIVE_MESSAGE_TYPE), receive__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.receivedMessages = global.receivedMessages || [];\n function receiveMessage(event) {\n if (window && !window.closed) {\n try {\n if (!event.source) return;\n } catch (err) {\n return;\n }\n var source = event.source, origin = event.origin, message = function(message) {\n var item, parsedMessage = void 0;\n try {\n parsedMessage = (item = message, JSON.parse(item));\n } catch (err) {\n return;\n }\n if (parsedMessage && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && (parsedMessage = parsedMessage[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT]) && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && parsedMessage.type && \"string\" == typeof parsedMessage.type && RECEIVE_MESSAGE_TYPES[parsedMessage.type]) return parsedMessage;\n }(event.data);\n if (message) {\n if (!message.sourceDomain || \"string\" != typeof message.sourceDomain) throw new Error(\"Expected message to have sourceDomain\");\n 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.MOCK_PROTOCOL) && 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.FILE_PROTOCOL) || (origin = message.sourceDomain);\n if (-1 === global.receivedMessages.indexOf(message.id)) {\n global.receivedMessages.push(message.id);\n if (!isWindowClosed(source) || message.fireAndForget) {\n message.data && (message.data = function(source, origin, obj) {\n return replaceObject({\n obj: message.data\n }, function(item) {\n if (\"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item) return isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.METHOD) ? deserializeMethod(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ERROR) ? function(source, origin, obj) {\n var err = new Error(obj.__message__);\n obj.__code__ && (err.code = obj.__code__);\n return err;\n }(0, 0, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE) ? function(source, origin, prom) {\n return window.Promise ? new window.Promise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n }) : deserializeZalgoPromise(source, origin, prom);\n }(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE) ? deserializeZalgoPromise(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.REGEX) ? function(source, origin, item) {\n return new RegExp(item.__source__);\n }(0, 0, item) : void 0;\n }).obj;\n }(source, origin));\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n }\n }\n }\n }\n }\n function messageListener(event) {\n try {\n event.source;\n } catch (err) {\n return;\n }\n receiveMessage({\n source: event.source || event.sourceElement,\n origin: event.origin || event.originalEvent && event.originalEvent.origin,\n data: event.data\n });\n }\n global.receiveMessage = receiveMessage;\n global.requestPromises = global.requestPromises || new weakmap_CrossDomainSafeWeakMap();\n function request(options) {\n return promise_ZalgoPromise.try(function() {\n if (!options.name) throw new Error(\"Expected options.name\");\n var name = options.name, targetWindow = void 0, domain = void 0;\n if (\"string\" == typeof options.window) {\n var el = document.getElementById(options.window);\n if (!el) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be a valid element id\");\n if (\"iframe\" !== el.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (!el.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n targetWindow = el.contentWindow;\n } else if (options.window instanceof HTMLIFrameElement) {\n if (\"iframe\" !== options.window.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (options.window && !options.window.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n options.window && options.window.contentWindow && (targetWindow = options.window.contentWindow);\n } else targetWindow = options.window;\n if (!targetWindow) throw new Error(\"Expected options.window to be a window object, iframe, or iframe element id.\");\n var win = targetWindow;\n domain = options.domain || constants_CONSTANTS.WILDCARD;\n var hash = options.name + \"_\" + uniqueID();\n if (isWindowClosed(win)) throw new Error(\"Target window is closed\");\n var hasResult = !1, requestPromises = global.requestPromises.get(win);\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n var requestPromise = promise_ZalgoPromise.try(function() {\n if (function(parent, child) {\n var actualParent = getAncestor(child);\n if (actualParent) return actualParent === parent;\n if (child === parent) return !1;\n if (function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n try {\n if (win.top) return win.top;\n } catch (err) {}\n if (getParent(win) === win) return win;\n try {\n if (isAncestorParent(window, win) && window.top) return window.top;\n } catch (err) {}\n try {\n if (isAncestorParent(win, window) && window.top) return window.top;\n } catch (err) {}\n for (var _i7 = 0, _getAllChildFrames4 = function getAllChildFrames(win) {\n for (var result = [], _i3 = 0, _getFrames2 = getFrames(win), _length2 = null == _getFrames2 ? 0 : _getFrames2.length; _i3 < _length2; _i3++) {\n var frame = _getFrames2[_i3];\n result.push(frame);\n for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame), _length4 = null == _getAllChildFrames2 ? 0 : _getAllChildFrames2.length; _i5 < _length4; _i5++) {\n var childFrame = _getAllChildFrames2[_i5];\n result.push(childFrame);\n }\n }\n return result;\n }(win), _length6 = null == _getAllChildFrames4 ? 0 : _getAllChildFrames4.length; _i7 < _length6; _i7++) {\n var frame = _getAllChildFrames4[_i7];\n try {\n if (frame.top) return frame.top;\n } catch (err) {}\n if (getParent(frame) === frame) return frame;\n }\n }(child) === child) return !1;\n for (var _i15 = 0, _getFrames8 = getFrames(parent), _length14 = null == _getFrames8 ? 0 : _getFrames8.length; _i15 < _length14; _i15++) if (_getFrames8[_i15] === child) return !0;\n return !1;\n }(window, win)) return function(win) {\n var timeout = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 5e3, name = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : \"Window\", promise = global.readyPromises.get(win);\n if (promise) return promise;\n promise = new promise_ZalgoPromise();\n global.readyPromises.set(win, promise);\n -1 !== timeout && setTimeout(function() {\n return promise.reject(new Error(name + \" did not load after \" + timeout + \"ms\"));\n }, timeout);\n return promise;\n }(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain) && !origin) return sayHello(win);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain)) {\n if (!matchDomain(domain, origin)) throw new Error(\"Remote window domain \" + origin + \" does not match regex: \" + domain.toString());\n domain = origin;\n }\n if (\"string\" != typeof domain && !Array.isArray(domain)) throw new TypeError(\"Expected domain to be a string or array\");\n var actualDomain = domain;\n return new promise_ZalgoPromise(function(resolve, reject) {\n var responseListener = void 0;\n options.fireAndForget || function(hash, listener) {\n global.responseListeners[hash] = listener;\n }(hash, responseListener = {\n name: name,\n window: win,\n domain: actualDomain,\n respond: function(err, result) {\n if (!err) {\n hasResult = !0;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n err ? reject(err) : resolve(result);\n }\n });\n sendMessage(win, {\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash: hash,\n name: name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n if (options.fireAndForget) return resolve();\n var ackTimeout = CONFIG.ACK_TIMEOUT, resTimeout = options.timeout || CONFIG.RES_TIMEOUT, cycleTime = 100;\n setTimeout(function cycle() {\n if (!hasResult) {\n if (isWindowClosed(win)) return responseListener.ack ? reject(new Error(\"Window closed for \" + name + \" before response\")) : reject(new Error(\"Window closed for \" + name + \" before ack\"));\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n -1 !== resTimeout && (resTimeout = Math.max(resTimeout - cycleTime, 0));\n if (responseListener.ack) {\n if (-1 === resTimeout) return;\n cycleTime = Math.min(resTimeout, 2e3);\n } else {\n if (0 === ackTimeout) return reject(new Error(\"No ack for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + CONFIG.ACK_TIMEOUT + \"ms\"));\n if (0 === resTimeout) return reject(new Error(\"No response for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + (options.timeout || CONFIG.RES_TIMEOUT) + \"ms\"));\n }\n setTimeout(cycle, cycleTime);\n }\n }, cycleTime);\n });\n });\n requestPromise.catch(function() {\n !function(hash) {\n global.erroredResponseListeners[hash] = !0;\n }(hash);\n deleteResponseListener(hash);\n });\n requestPromises.push(requestPromise);\n return requestPromise;\n });\n }\n function _send(window, name, data, options) {\n (options = options || {}).window = window;\n options.name = name;\n options.data = data;\n return request(options);\n }\n function sendToParent(name, data, options) {\n var win = getAncestor();\n return win ? _send(win, name, data, options) : new promise_ZalgoPromise(function(resolve, reject) {\n return reject(new Error(\"Window does not have a parent\"));\n });\n }\n function client() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (!options.window) throw new Error(\"Expected options.window\");\n var win = options.window;\n return {\n send: function(name, data) {\n return _send(win, name, data, options);\n }\n };\n }\n global.send = _send;\n var server__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function listen(options) {\n if (!options.name) throw new Error(\"Expected options.name\");\n if (!options.handler) throw new Error(\"Expected options.handler\");\n var name = options.name, win = options.window, domain = options.domain, listenerOptions = {\n handler: options.handler,\n handleError: options.errorHandler || function(err) {\n throw err;\n },\n window: win,\n domain: domain || constants_CONSTANTS.WILDCARD,\n name: name\n }, requestListener = function addRequestListener(_ref6, listener) {\n var name = _ref6.name, win = _ref6.win, domain = _ref6.domain;\n if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n if (Array.isArray(win)) {\n for (var listenersCollection = [], _i6 = 0, _win2 = win, _length6 = null == _win2 ? 0 : _win2.length; _i6 < _length6; _i6++) {\n var item = _win2[_i6];\n listenersCollection.push(addRequestListener({\n name: name,\n domain: domain,\n win: item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i8 = 0, _length8 = null == listenersCollection ? 0 : listenersCollection.length; _i8 < _length8; _i8++) listenersCollection[_i8].cancel();\n }\n };\n }\n if (Array.isArray(domain)) {\n for (var _listenersCollection = [], _i10 = 0, _domain2 = domain, _length10 = null == _domain2 ? 0 : _domain2.length; _i10 < _length10; _i10++) {\n var _item = _domain2[_i10];\n _listenersCollection.push(addRequestListener({\n name: name,\n win: win,\n domain: _item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i12 = 0, _length12 = null == _listenersCollection ? 0 : _listenersCollection.length; _i12 < _length12; _i12++) _listenersCollection[_i12].cancel();\n }\n };\n }\n var existingListener = getRequestListener({\n name: name,\n win: win,\n domain: domain\n });\n win && win !== constants_CONSTANTS.WILDCARD || (win = global.WINDOW_WILDCARD);\n domain = domain || constants_CONSTANTS.WILDCARD;\n if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n var requestListeners = global.requestListeners, nameListeners = requestListeners[name];\n if (!nameListeners) {\n nameListeners = new weakmap_CrossDomainSafeWeakMap();\n requestListeners[name] = nameListeners;\n }\n var winListeners = nameListeners.get(win);\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n var strDomain = domain.toString(), regexListeners = winListeners[__DOMAIN_REGEX__], regexListener = void 0;\n if (util_isRegex(domain)) {\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n regexListener = {\n regex: domain,\n listener: listener\n };\n regexListeners.push(regexListener);\n } else winListeners[strDomain] = listener;\n return {\n cancel: function() {\n if (winListeners) {\n delete winListeners[strDomain];\n win && 0 === Object.keys(winListeners).length && nameListeners.delete(win);\n regexListener && regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n };\n }({\n name: name,\n win: win,\n domain: domain\n }, listenerOptions);\n if (options.once) {\n var _handler = listenerOptions.handler;\n listenerOptions.handler = once(function() {\n requestListener.cancel();\n return _handler.apply(this, arguments);\n });\n }\n if (listenerOptions.window && options.errorOnClose) var interval = function(method, time) {\n var timeout = void 0;\n timeout = setTimeout(function runInterval() {\n timeout = setTimeout(runInterval, 50);\n (function() {\n if (win && \"object\" === (void 0 === win ? \"undefined\" : server__typeof(win)) && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error(\"Post message target window is closed\"));\n }\n }).call();\n }, 50);\n return {\n cancel: function() {\n clearTimeout(timeout);\n }\n };\n }();\n return {\n cancel: function() {\n requestListener.cancel();\n }\n };\n }\n function _on(name, options, handler) {\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n (options = options || {}).name = name;\n options.handler = handler || options.handler;\n return listen(options);\n }\n function server_once(name) {\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, handler = arguments[2];\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n options = options || {};\n handler = handler || options.handler;\n var errorHandler = options.errorHandler, promise = new promise_ZalgoPromise(function(resolve, reject) {\n (options = options || {}).name = name;\n options.once = !0;\n options.handler = function(event) {\n resolve(event);\n if (handler) return handler(event);\n };\n options.errorHandler = function(err) {\n reject(err);\n if (errorHandler) return errorHandler(err);\n };\n }), onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n return promise;\n }\n function server_listener() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return {\n on: function(name, handler) {\n return _on(name, options, handler);\n }\n };\n }\n global.on = _on;\n function disable() {\n delete window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener(\"message\", messageListener);\n }\n var public_parent = getAncestor();\n function cleanUpWindow(win) {\n var requestPromises = global.requestPromises.get(win);\n if (requestPromises) for (var _i2 = 0, _length2 = null == requestPromises ? 0 : requestPromises.length; _i2 < _length2; _i2++) requestPromises[_i2].reject(new Error(\"No response from window - cleaned up\"));\n global.popupWindowsByWin && global.popupWindowsByWin.delete(win);\n global.remoteWindows && global.remoteWindows.delete(win);\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n }\n var bridge = null;\n function init() {\n if (!global.initialized) {\n handler = messageListener, (obj = window).addEventListener ? obj.addEventListener(\"message\", handler) : obj.attachEvent(\"onmessage\", handler);\n !function() {\n handler = function(_ref3) {\n var source = _ref3.source, origin = _ref3.origin, promise = global.readyPromises.get(source) || new promise_ZalgoPromise();\n promise.resolve({\n origin: origin\n });\n global.readyPromises.set(source, promise);\n }, global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {\n domain: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin;\n return handler({\n source: source,\n origin: origin\n });\n });\n var handler, parent = getAncestor();\n parent && sayHello(parent).catch(lib_util_noop);\n }();\n listenForMethods({\n on: _on,\n send: _send\n });\n }\n var obj, handler;\n global.initialized = !0;\n }\n init();\n __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(__webpack_exports__, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(__webpack_exports__, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(__webpack_exports__, \"init\", function() {\n return init;\n });\n __webpack_require__.d(__webpack_exports__, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(__webpack_exports__, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(__webpack_exports__, \"request\", function() {\n return request;\n });\n __webpack_require__.d(__webpack_exports__, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(__webpack_exports__, \"client\", function() {\n return client;\n });\n __webpack_require__.d(__webpack_exports__, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(__webpack_exports__, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(__webpack_exports__, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(__webpack_exports__, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(__webpack_exports__, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(__webpack_exports__, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(__webpack_exports__, \"disable\", function() {\n return disable;\n });\n __webpack_exports__.default = interface_namespaceObject;\n }\n });\n});\n//# sourceMappingURL=post-robot.js.map","/* @flow */\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = require('./dist/post-robot');\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports.default = module.exports;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IAssetSidebarInitData, setAssetDto } from \"./types\";\nimport Asset from './stack/api/asset'\n\n/** Class representing an asset Extension from Contentstack UI. */\n\nclass AssetSidebarWidget {\n /**\n * @hideconstructor\n */\n\n currentAsset: { [key: string]: any };\n _emitter: EventEmitter;\n _connection: any;\n _changedData?: { [key: string]: any };\n\n constructor(\n initializationData: IAssetSidebarInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * Gets the content type of the current asset.\n * @type {Object}\n */\n\n this.currentAsset = initializationData.data.currentAsset;\n\n this._emitter = emitter;\n\n this._connection = connection;\n\n const thisAsset = this;\n\n this._emitter.on(\n \"assetSave\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset.currentAsset = event.data;\n }\n );\n\n this._emitter.on(\n \"assetChange\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset._changedData = event.data;\n }\n );\n\n this.getData = this.getData.bind(this);\n this.setData = this.setData.bind(this);\n this.syncAsset = this.syncAsset.bind(this);\n this.updateWidth = this.updateWidth.bind(this);\n this.onSave = this.onSave.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onPublish = this.onPublish.bind(this);\n this.onUnPublish = this.onUnPublish.bind(this);\n this.replaceAsset = this.replaceAsset.bind(this);\n }\n\n getData() {\n return this.currentAsset;\n }\n\n async setData(asset: Partial): Promise {\n return this._connection.sendToParent(\"setData\", asset);\n }\n\n async syncAsset(): Promise {\n return this._connection.sendToParent(\"syncAsset\");\n }\n\n async updateWidth(width: number): Promise {\n if (typeof width !== \"number\") {\n throw new Error(\"Width must be a number\");\n }\n return this._connection.sendToParent(\"updateAssetSidebarWidth\", width);\n }\n\n async replaceAsset(file: File): Promise {\n const asset = Asset(this._emitter);\n return asset.handleUpload([file], 'replace');\n }\n\n /**\n * This function executes the callback function every time an asset is saved.\n * @param {function} callback The function to be called when an asset is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetSave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an asset is edited/changed.\n */\n\n onChange(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetChange\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an asset has been published with the respective payload.\n * @param {function} callback The function to be called when an asset is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an asset has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an asset is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default AssetSidebarWidget;\n","import {\n IConfigCallback,\n IContainerMetaData,\n IOnFunction,\n IPluginMetaData,\n IRteParam,\n IConfig\n} from \"./types\";\n\nexport class RTEPlugin {\n private pluginMetaData: IPluginMetaData = {\n registry: {\n title: \"\",\n toolbar: {\n inMainToolbar: true,\n inHoveringToolbar: true,\n },\n isContentstackElement: true,\n },\n meta: {\n id: \"\",\n elementType: null,\n editorCallbacks: {},\n isDependent: false,\n },\n };\n private isContainer: boolean = false;\n private containerMetaData: IContainerMetaData = {\n registry: {\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n id: this.pluginMetaData.meta.id,\n dependentPlugins: [],\n },\n };\n\n constructor(id: string, private configCallback: IConfigCallback) {\n this.pluginMetaData.meta.id = id;\n }\n\n addPlugins = (...plugins: RTEPlugin[]) => {\n // convert to dropdown if not already\n if (this.pluginMetaData.meta.isDependent)\n throw Error(\"cannot have another container inside\");\n\n this.isContainer = true;\n\n // clean pluginMetaData\n\n plugins.forEach((plugin) => {\n // make sure that this plugin is not another dropdown\n if (plugin.isContainer) {\n throw Error(\"cannot have another container inside\");\n }\n\n plugin.pluginMetaData.registry.category =\n this.pluginMetaData.meta.id;\n this.containerMetaData.meta.dependentPlugins.push(plugin);\n plugin.pluginMetaData.meta.isDependent = true;\n });\n };\n\n on = (\n type: Type,\n callback: IOnFunction[Type]\n ) => {\n switch (type) {\n case \"beforeChildRender\": {\n this.pluginMetaData.registry.beforeChildrenRender = callback;\n break;\n }\n\n case \"beforeRender\": {\n this.pluginMetaData.registry.beforeElementRender = callback;\n break;\n }\n\n case \"exec\": {\n this.pluginMetaData.registry.handleMouseDown = callback;\n break;\n }\n\n case \"keydown\": {\n this.pluginMetaData.meta.editorCallbacks[\"keydown\"] = callback;\n break;\n }\n\n case \"paste\":\n case \"deleteBackward\":\n case \"deleteForward\":\n case \"insertBreak\":\n case \"normalize\":\n default: {\n this.pluginMetaData.meta.editorCallbacks[type] = callback;\n break;\n }\n }\n };\n\n get = async (rte: IRteParam | void) => {\n const config = await this.configCallback(rte);\n\n Object.entries(config).forEach(\n //@ts-ignore\n ([key, value]: [Key, any]) => {\n switch (key) {\n case \"title\": {\n this.pluginMetaData.registry.title = value;\n break;\n }\n case \"icon\": {\n this.pluginMetaData.registry.iconName = value;\n this.containerMetaData.registry.iconName = value;\n break;\n }\n case \"display\": {\n // make every other options false\n this.pluginMetaData.registry.toolbar = {\n inHoveringToolbar: false,\n inMainToolbar: false,\n };\n\n if (typeof value === \"string\") {\n switch (value) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach((display) => {\n switch (display) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n });\n }\n break;\n }\n\n case \"elementType\": {\n const isInline = (\n typeof value === 'string' && value === 'inline' ||\n Array.isArray(value) && value.includes('inline')\n )\n if(isInline) {\n let dndOptions = this.pluginMetaData['registry']['dndOptions'];\n if(!dndOptions) {\n this.pluginMetaData['registry']['dndOptions'] = {};\n dndOptions = this.pluginMetaData['registry']['dndOptions']\n }\n dndOptions['DisableDND'] = true;\n dndOptions['DisableSelectionHalo'] = true;\n }\n this.pluginMetaData.meta.elementType = value;\n break;\n }\n\n case \"render\": {\n this.pluginMetaData.registry.Component = value;\n break;\n }\n\n case \"shouldOverride\" : {\n this.pluginMetaData.registry.shouldOverride = value\n }\n }\n }\n );\n\n const containerMeta = this.containerMetaData.meta;\n this.containerMetaData = {\n registry: {\n ...this.containerMetaData.registry,\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n ...containerMeta,\n id: this.pluginMetaData.meta.id,\n },\n };\n\n return this.isContainer ? this.containerMetaData : this.pluginMetaData;\n };\n}\n\nexport const rtePluginInitializer = (\n id: string,\n configCallback: IConfigCallback\n) => {\n if (!(id && configCallback)) throw Error('Please provide value \"id\" and \"configCallback\"');\n\n return new RTEPlugin(id, configCallback);\n};\n","import Stack from \"../stack\";\nimport { IInstallationData, ValidationOptions } from \"../types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport { onData, onError } from \"../utils/utils\";\n\nexport declare interface AppConfigAdditionalData {\n currentBranch: string;\n}\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nexport class AppConfig {\n _data: { [key: string]: any };\n _connection: any;\n _emitter: EventEmitter;\n private _additionalData: AppConfigAdditionalData;\n\n constructor(\n data: { [key: string]: any },\n connection: any,\n emitter: EventEmitter,\n additionalData: AppConfigAdditionalData\n ) {\n this._data = data;\n this._connection = connection;\n this._emitter = emitter;\n\n this.setValidity = this.setValidity.bind(this);\n this._additionalData = additionalData;\n }\n\n stack = () => {\n return new Stack(this._data.stack, this._connection, {\n currentBranch: this._additionalData.currentBranch,\n });\n };\n\n setInstallationData = (\n installationData: IInstallationData\n ): Promise<{ [key: string]: any }> => {\n return this._connection\n .sendToParent(\"setInstallationData\", installationData)\n .then(onData)\n .catch(onError);\n };\n\n getInstallationData = (): Promise => {\n return this._connection\n .sendToParent(\"getInstallationData\")\n .then(onData)\n .catch(onError);\n };\n\n /**\n * Set the validation state of the app. If the validation is false, the Contentstack App Config\n * will not allow to save the configuration. The message will be displayed if provided.\n * @param isValid set the validation state of the app\n * @param options additional options to be sent to the parent\n * @returns returns a promise with the data sent from the parent\n */\n async setValidity(\n isValid: boolean,\n options?: ValidationOptions\n ): Promise> {\n if (typeof isValid !== \"boolean\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.isValidTypeBoolean\n )\n );\n }\n\n if (options?.message && typeof options.message !== \"string\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.messageTypeString\n )\n );\n }\n\n return this._connection\n .sendToParent(\"setValidity\", { isValid, options })\n .then(onData)\n .catch(onError);\n }\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\n\nimport Field from \"./field\";\nimport {\n ICurrentContentType,\n IFieldInitData,\n IFieldModifierLocationInitData,\n ISidebarInitData,\n} from \"./types\";\nimport {\n IEntryOptions,\n IGetFieldOptions,\n IOnEntryChangeCallback,\n} from \"./types/entry.types\";\n\n/** Class representing an entry from Contentstack UI. Not available for Dashboard Widget extension. */\n\nclass Entry {\n /**\n * @hideconstructor\n */\n\n content_type: ICurrentContentType;\n _data: { [key: string]: any };\n locale: string;\n _connection: any;\n _emitter: EventEmitter;\n _changedData?: { [key: string]: any };\n _options: IEntryOptions;\n\n constructor(\n initializationData:\n | IFieldInitData\n | ISidebarInitData\n | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter,\n options?: IEntryOptions\n ) {\n /**\n * Gets the content type of the current entry.\n * @type {Object}\n */\n this.content_type = initializationData.data.content_type;\n\n this._data = initializationData.data.entry;\n\n if (initializationData.data.changedData) {\n this._changedData = initializationData.data.changedData;\n }\n\n /**\n * Gets the locale of the current entry.\n * @type {string}\n */\n this.locale = initializationData.data.locale;\n\n this._connection = connection;\n\n this._emitter = emitter;\n\n this._options = options || {};\n\n const thisEntry = this;\n\n this._emitter.on(\n \"entrySave\",\n (event: { data: { [key: string]: any } }) => {\n thisEntry._data = event.data;\n }\n );\n\n this._emitter.on(\n \"entryChange\",\n (event: { data: { [key: string]: any } }) => {\n thisEntry._changedData = event.data;\n }\n );\n }\n\n /**\n * Gets data of the current entry.\n * @return {Object} Returns entry data.\n */\n\n getData() {\n return this._data;\n }\n\n /**\n * Gets the field object for the saved data, which allows you to interact with the field.\n * This object will have all the same methods and properties of extension.field.\n * Note: For fields initialized using the getFields function, the setData function currently works only for the following fields: as single_line, multi_line, RTE, markdown, select, number, boolean, date, link, and extension of data type text, number, boolean, and date.\n * @example\n * var field = entry.getField('field_uid');\n * var fieldSchema = field.schema;\n * var fieldUid = field.uid;\n * var fieldData = field.getData();\n * @param {string} uid Unique ID of the field\n * @param {boolean} options.useUnsavedSchema If set to true, the field will get the unsaved field\n * @return {Object} Field object\n */\n\n getField(uid: string, options?: IGetFieldOptions): Field {\n const { useUnsavedSchema = false } = options || {};\n const { FieldInstance = Field } = this._options._internalFlags || {};\n\n const path = uid.split(\".\");\n let value = useUnsavedSchema\n ? this._changedData || this._data\n : this._data;\n let schema = this.content_type.schema;\n\n const isDataEmpty = Object.keys(value).length === 0;\n\n if (isDataEmpty) {\n throw new Error(\n \"The data is unsaved. Save the data before requesting the field.\"\n );\n }\n\n try {\n let skipNext = false;\n let skipNextTwo = false;\n path.forEach((key: string | number, index: number) => {\n if (skipNext) {\n if (skipNextTwo) {\n skipNextTwo = false;\n } else {\n skipNext = false;\n }\n return;\n }\n\n schema = schema.find((x: { uid: any }) => x.uid === key);\n if (!schema) {\n throw Error(\"schema not found\");\n }\n\n value = value[key];\n\n if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === false &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n } else if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === true &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n value = value[path[index + 1]];\n skipNext = true;\n } else if (\n schema.data_type === \"blocks\" &&\n path.length !== index + 1\n ) {\n const blockId = Object.keys(value[path[index + 1]])[0];\n schema = schema.blocks.find(\n (block: { uid: string }) => block.uid === blockId\n );\n if (path.length === index + 2) {\n // complete block value with uid\n value = value[path[index + 1]];\n } else {\n // block value without uid\n value = value[path[index + 1]][blockId];\n schema = schema.schema;\n }\n\n skipNext = true;\n skipNextTwo = true;\n }\n });\n } catch (e) {\n throw Error(\"Invalid uid, Field not found\");\n }\n const fieldIntilaizationDataObject = {\n data: {\n uid,\n value,\n schema,\n data_type: schema.data_type,\n },\n };\n\n //@ts-ignore\n const fieldObject = new FieldInstance(\n fieldIntilaizationDataObject,\n this._connection,\n this._emitter\n );\n delete fieldObject.onChange;\n return fieldObject;\n }\n\n /**\n * This function executes the callback function every time an entry is saved.\n * @param {function} callback The function to be called when an entry is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entrySave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an entry is edited/changed.\n */\n\n onChange(callback: IOnEntryChangeCallback) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\n \"entryChange\",\n (event: { data: any; resolvedData: Record }) => {\n callback(event.data, event.resolvedData);\n }\n );\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an entry has been published with the respective payload.\n * @param {function} callback The function to be called when an entry is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an entry has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an entry is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default Entry;\n","import postRobot from \"post-robot\";\nimport EventEmitter from \"wolfy87-eventemitter\";\n\nimport AssetSidebarWidget from \"./AssetSidebarWidget\";\nimport { IRTEPluginInitializer } from \"./RTE/types\";\nimport { AppConfig } from \"./appConfig\";\nimport Entry from \"./entry\";\nimport Field from \"./field\";\nimport FieldModifierLocationEntry from \"./fieldModifierLocation/entry\";\nimport FieldModifierLocationField from \"./fieldModifierLocation/field\";\nimport FieldModifierLocationFrame from \"./fieldModifierLocation/frame\";\nimport Metadata from \"./metadata\";\nimport Modal from \"./modal\";\nimport Stack from \"./stack\";\nimport Store from \"./store\";\nimport {\n IAppConfigInitData,\n IAppConfigWidget,\n IAssetSidebarInitData,\n ICustomField,\n IDashboardInitData,\n IDashboardWidget,\n IEntryFieldLocation,\n IEntryFieldLocationInitData,\n IFieldInitData,\n IFieldModifierLocation,\n IFieldModifierLocationInitData,\n IFullPageLocation,\n IFullPageLocationInitData,\n ILocation,\n IPageWidget,\n IRTEInitData,\n ISidebarInitData,\n ISidebarWidget,\n IUser,\n Manifest,\n Region,\n} from \"./types\";\nimport { AnyObject } from \"./types/common.types\";\nimport { formatAppRegion, onData, onError } from \"./utils/utils\";\nimport Window from \"./window\";\n\nconst emitter = new EventEmitter();\n\n/** Class representing an extension from Contentstack App Framework SDK. */\n\nclass Extension {\n /**\n * @hideconstructor\n */\n\n appUID: string;\n installationUID: string;\n currentUser: IUser;\n private type: ILocation;\n private config: AnyObject;\n postRobot: any;\n stack: Stack;\n store: Store;\n metadata: Metadata;\n locationUID: string;\n modal: Modal;\n readonly region: Region;\n version: number | null;\n\n location: {\n DashboardWidget: IDashboardWidget | null;\n SidebarWidget: ISidebarWidget | null;\n CustomField: ICustomField | null;\n RTEPlugin: IRTEPluginInitializer | null;\n AppConfigWidget: IAppConfigWidget | null;\n FullscreenAppWidget: IPageWidget | null;\n AssetSidebarWidget: AssetSidebarWidget | null;\n EntryFieldLocation: IEntryFieldLocation | null;\n FullPage: IFullPageLocation | null;\n FieldModifierLocation: IFieldModifierLocation | null;\n };\n\n constructor(\n initData:\n | IRTEInitData\n | IDashboardInitData\n | IFieldInitData\n | ISidebarInitData\n | IAppConfigInitData\n | IAssetSidebarInitData\n | IFullPageLocationInitData\n | IEntryFieldLocationInitData\n | IFieldModifierLocationInitData\n ) {\n const initializationData = initData;\n\n this.postRobot = postRobot;\n\n /**\n * This value represents the current App's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.appUID = initializationData.data.app_id;\n\n /**\n * This value represents the current location's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.locationUID = initializationData.data.extension_uid;\n\n /**\n * This object holds details of the app initialization user.\n * @type {Object}\n */\n this.installationUID = initializationData.data.installation_uid;\n /**\n * This object holds details of the current user.\n * @type {Object}\n */\n this.currentUser = initializationData.data.user;\n\n /**\n * location of extension, \"RTE\" | \"FIELD\" | \"DASHBOARD\" | \"WIDGET\" | \"APP_CONFIG_WIDGET\" | \"FULL_SCREEN_WIDGET\".\n * @type {string}\n */\n this.type = initializationData.data.type;\n\n /**\n * Store to persist data for extension.\n * Note: Data is stored in the browser {@link external:localStorage} and will be lost if the {@link external:localStorage} is cleared in the browser.\n * @type {Store}\n */\n this.store = new Store(postRobot);\n\n /**\n * This method returns stack object which allows users to read and manipulate a range of objects in a stack.\n * @type {Stack}\n */\n this.stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n this.metadata = new Metadata(postRobot);\n\n this.config = initializationData.data.config ?? {};\n\n this.location = {\n DashboardWidget: null,\n CustomField: null,\n SidebarWidget: null,\n RTEPlugin: null,\n AppConfigWidget: null,\n FullscreenAppWidget: null,\n AssetSidebarWidget: null,\n FullPage: null,\n EntryFieldLocation: null,\n FieldModifierLocation: null,\n };\n\n window[\"postRobot\"] = postRobot;\n\n this.modal = new Modal();\n\n this.region = formatAppRegion(initializationData.data.region);\n\n this.version = initializationData.data.manifest?.version || null;\n\n const stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n\n switch (initializationData.data.type) {\n case \"DASHBOARD\": {\n this.location.DashboardWidget = {\n frame: new Window(\n postRobot,\n this.type as \"DASHBOARD\",\n emitter,\n initializationData.data.dashboard_width\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n case \"WIDGET\": {\n this.location.SidebarWidget = {\n entry: new Entry(\n initializationData as ISidebarInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"APP_CONFIG_WIDGET\": {\n this.location.AppConfigWidget = {\n installation: new AppConfig(\n initializationData,\n postRobot,\n emitter,\n {\n currentBranch:\n initializationData.data.currentBranch,\n }\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"ASSET_SIDEBAR_WIDGET\": {\n this.location.AssetSidebarWidget = new AssetSidebarWidget(\n initializationData as IAssetSidebarInitData,\n postRobot,\n emitter\n );\n\n break;\n }\n\n case \"RTE\": {\n import(\"./RTE\").then(({ rtePluginInitializer }) => {\n this.location.RTEPlugin = rtePluginInitializer;\n });\n break;\n }\n\n case \"FIELD_MODIFIER_LOCATION\":\n case \"ENTRY_FIELD_LOCATION\": {\n initializationData.data.self = true;\n this.location.FieldModifierLocation = {\n entry: new FieldModifierLocationEntry(\n initializationData as IFieldModifierLocationInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n field: new FieldModifierLocationField(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n frame: new FieldModifierLocationFrame(postRobot, emitter),\n };\n break;\n }\n\n case \"FULL_PAGE_LOCATION\": {\n this.location.FullPage = {\n stack: stack,\n };\n break;\n }\n\n case \"FIELD\":\n default: {\n initializationData.data.self = true;\n this.location.CustomField = {\n field: new Field(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n fieldConfig: initializationData.data.field_config,\n entry: new Entry(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n frame: new Window(postRobot, this.type as \"FIELD\", emitter),\n };\n\n break;\n }\n }\n\n try {\n //@ts-ignore\n postRobot.on(\"extensionEvent\", (event) => {\n if (event.data.name === \"entrySave\") {\n emitter.emitEvent(\"entrySave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryChange\") {\n emitter.emitEvent(\"entryChange\", [\n {\n data: event.data.data,\n resolvedData: event.data.otherData.resolvedData,\n },\n ]);\n }\n\n if (event.data.name === \"entryPublish\") {\n emitter.emitEvent(\"entryPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryUnPublish\") {\n emitter.emitEvent(\"entryUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetSave\") {\n emitter.emitEvent(\"assetSave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetChange\") {\n emitter.emitEvent(\"assetChange\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetPublish\") {\n emitter.emitEvent(\"assetPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetUnPublish\") {\n emitter.emitEvent(\"assetUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"dashboardResize\") {\n emitter.emitEvent(\"dashboardResize\", [\n { state: event.data.state },\n ]);\n }\n\n if (event.data.name === \"extensionFieldChange\") {\n emitter.emitEvent(\"extensionFieldChange\", [\n { data: event.data.data },\n ]);\n }\n });\n } catch (err) {\n console.error(\"extension Event\", err);\n }\n }\n\n pulse = (eventName: string, metadata: { [key: string]: any }) => {\n this.postRobot.sendToParent(\"analytics\", { eventName, metadata });\n };\n\n getConfig = (): Promise<{ [key: string]: any }> => {\n if (!this.installationUID) {\n return Promise.resolve(this.config);\n }\n return this.postRobot\n .sendToParent(\"getConfig\")\n .then(onData)\n .catch(onError);\n };\n\n getCurrentLocation = () => {\n return this.type;\n };\n\n /**\n * Conditionally retrieves and returns the app version if not present already\n * @returns version of the app currently running.\n */\n getAppVersion = async (): Promise => {\n if (this.version) {\n return Promise.resolve(this.version);\n }\n if (!this.installationUID) {\n return Promise.resolve(null);\n }\n const orgUid = this.stack._data.org_uid;\n const options = {\n uid: this.installationUID,\n action: \"getAppManifest\",\n headers: { organization_uid: orgUid },\n skip_api_key: true,\n };\n const app: Manifest = await this.postRobot\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n this.version = app.version;\n return this.version;\n };\n\n getCurrentRegion = () => {\n return this.region;\n };\n\n static initialize(version: string) {\n const meta = {\n sdkType: \"app-sdk\",\n };\n //@ts-ignore\n return postRobot.sendToParent(\"init\", { version, meta });\n }\n\n setReady() {\n return this.postRobot.sendToParent(\"ready\");\n }\n}\n\nexport default Extension;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"./types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(field: Field, value: { [key: string]: any }) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass Field {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n\n setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false } = {}) {\n return resolved ? this._resolvedData : this._data;\n }\n\n /**\n * Sets the focus for a field when an extension is being used. This method shows user presence and highlights the extension field that the user is currently accessing in Contentstack UI.\n * @return {Object} A promise object which is resolved when Contentstack UI returns an acknowledgement of the focused state.\n */\n setFocus() {\n return this._connection.sendToParent(\"focus\");\n }\n\n /**\n * This function is called when another extension programmatically changes data of this field using field.setData() function, only available for extension field, only support extensions of data type text, number, boolean or date.\n * @param {function} callback The function to be called when an entry is published.\n */\n onChange?(callback: (data: any) => any) {\n const fieldObj = this;\n if (callback && typeof callback === \"function\") {\n fieldObj._emitter.on(\"extensionFieldChange\", (event: any) => {\n this._data = event.data;\n this._resolvedData = event.data;\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\n\nexport default Field;\n","import Entry from \"../entry\";\nimport { IFieldModifierLocationInitData } from \"../types\";\nimport { IGetTagsOptions } from \"../types/entry.types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport Field from \"./field\";\n\nclass FieldModifierLocationEntry extends Entry {\n constructor(\n initializationData: IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n super(initializationData, connection, emitter, {\n _internalFlags: {\n FieldInstance: Field as any,\n },\n });\n }\n\n /**\n * Returns the value of the tags associated with the entry.\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n getTags(options?: IGetTagsOptions): Array {\n const { useUnsavedSchema = false } = options || {};\n\n if (useUnsavedSchema) {\n return this._changedData?.tags || this._data.tags;\n } else {\n return this._data.tags;\n }\n }\n\n /**\n * Sets the tags on the entry.\n * @param tags tags to be set on the entry\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n async setTags(tags: Array): Promise> {\n /**\n * Validate if the tags are array of strings\n * @param {Array} tags\n * @returns {boolean} Returns true if the tags are array of strings\n */\n function areTagsValid(tags: Array): tags is Array {\n return (\n Array.isArray(tags) &&\n tags.every((tag) => typeof tag === \"string\")\n );\n }\n\n if (tags === undefined) {\n throw new Error(generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldNotBeBlank));\n }\n\n if (!areTagsValid(tags)) {\n throw new Error(\n generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldBeArrayOfStrings)\n );\n }\n\n await this._connection.sendToParent(\"setTags\", { tags });\n\n if (!this._changedData) {\n this._changedData = {};\n }\n\n this._changedData.tags = tags;\n\n return tags;\n }\n}\n\nexport default FieldModifierLocationEntry;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"../types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(\n field: FieldModifierLocationField,\n value: { [key: string]: any }\n) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass FieldModifierLocationField {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n async setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false }: { resolved?: boolean } = {}): any {\n return resolved ? this._resolvedData : this._data;\n }\n}\n\nexport default FieldModifierLocationField;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\nimport { ERROR_MESSAGES } from \"../utils/errorMessages\";\n\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass FieldModifierLocationFrame {\n /**\n * @hideconstructor\n */\n\n _connection: any;\n _autoResizingEnabled = false;\n _emitter: EventEmitter;\n _height?: number;\n _width?: number;\n\n private observer: MutationObserver | undefined;\n\n constructor(connection: any, emitter: EventEmitter) {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._emitter = emitter;\n\n this.updateDimension = this.updateDimension.bind(this);\n this.enableAutoResizing = this.enableAutoResizing.bind(this);\n this.disableAutoResizing = this.disableAutoResizing.bind(this);\n this.closeModal = this.closeModal.bind(this);\n\n /**\n * The auto resizing should be enabled by default.\n */\n this.enableAutoResizing();\n }\n\n /**\n * This method updates the extension height and width on Contentstack UI.\n * If the value is not passed, it will update the height and width of the\n * extension with the current height and width of the extension.\n * @param {string|number} height Desired height of the iframe window\n */\n async updateDimension(dimension?: { height?: number; width?: number }) {\n const { height, width } = dimension || {};\n\n if (height === undefined && width === undefined) {\n this._height = Math.ceil(\n document.documentElement.getBoundingClientRect().height\n );\n\n this._width = Math.ceil(\n document.documentElement.getBoundingClientRect().width\n );\n\n await this._connection.sendToParent(\"resize\", {\n height: this._height,\n width: this._width,\n });\n return;\n }\n\n const dimensionBody = {};\n\n if (height !== undefined && typeof height !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionHeightShouldBeNumber\n );\n }\n\n if (this._height !== height) {\n this._height = height;\n dimensionBody[\"height\"] = this._height;\n }\n\n if (width !== undefined && typeof width !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionWidthShouldBeNumber\n );\n }\n\n if (this._width !== width) {\n this._width = width;\n dimensionBody[\"width\"] = this._width;\n }\n\n if (Object.keys(dimensionBody).length !== 0) {\n await this._connection.sendToParent(\"resize\", dimensionBody);\n }\n }\n\n /**\n * Prevent user from accidently closing the app by clicking outside the frame\n * if the app is performing some active task.\n */\n async preventFrameClose(state: boolean) {\n await this._connection.sendToParent(\"preventFrameClose\", {\n state,\n });\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n enableAutoResizing(): FieldModifierLocationFrame {\n if (this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = true;\n\n this.observer = new MutationObserver(\n async () => await this.updateDimension()\n );\n\n const mutationObserverConfig = {\n attributes: true,\n childList: true,\n subtree: true,\n };\n\n this.observer.observe(window.document.body, mutationObserverConfig);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n disableAutoResizing(): FieldModifierLocationFrame {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n this.observer?.disconnect();\n return this;\n }\n\n /**\n * It closes the app modal.\n * @returns {Promise}\n */\n async closeModal(): Promise {\n return await this._connection.sendToParent(\"closeModal\");\n }\n}\n\nexport default FieldModifierLocationFrame;\n","import Extension from './extension';\nimport postRobot from 'post-robot';\nimport { version } from '../package.json';\nimport { IDashboardInitData, IFieldInitData, ISidebarInitData } from './types.js';\n\n//@ts-ignore\npostRobot.CONFIG.LOG_LEVEL = 'error';\n\n/** Class to initialize the plugin on Contentstack UI. */\n/**\n * @hideconstructor\n */\n\nclass ContentstackAppSDK {\n /**\n * You need to first include Contentstack UI Extensions SDK and\n * Contentstack UI Stylesheet in you HTML file and then call\n * ContentstackUIExtension.init in the script tag.\n * @example\n * HTML\n * \n * \n * @example Custom Filed\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var value = extension.field.getData()\n * extension.field.setData(\"New Field Data\")\n * })\n * @example Custom Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var entry = extension.entry.getData()\n * })\n * @example Dashboard Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var stack = extension.stack;\n * var stackData = stack.getData();\n * })\n * @return {external:Promise} A promise object which will be resolved with an instance of the {@link Extension} class which is instantiated using the data received from the Contentstack UI.\n */\n\n static _extension: Extension\n\n static init(): Promise {\n if (this._extension) { return Promise.resolve(this._extension); }\n return Extension.initialize(version).then((initializationData: ISidebarInitData | IDashboardInitData | IFieldInitData) => {\n this._extension = new Extension(initializationData);\n return Promise.resolve(this._extension);\n }).catch((e: Error) => Promise.reject(e));\n }\n\n\n /**\n * Version of Contentstack UI extension.\n * @type {string}\n */\n static get SDK_VERSION() {\n return version;\n }\n}\n\nexport default ContentstackAppSDK;\nmodule.exports = ContentstackAppSDK\n","import { AnyObject } from \"./types/common.types\";\n\nexport declare interface IMetadata {\n uid: string;\n type: \"asset\" | \"entry\";\n _content_type_uid?: string;\n locale?: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataCreateDto\n extends Omit, \"uid\"> {\n entity_uid: string;\n}\n\nexport declare interface IMetadataUpdateDto {\n uid: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataRetrieveDto {\n uid: string;\n}\n\nexport declare interface IMetadataDeleteDto {\n uid: string;\n}\n\nconst metadataTypes = {\n creteMetadata: \"createMetadata\",\n retrieveMetadata: \"getMetadata\",\n retrieveAllMetadata: \"getAllMetadata\",\n updateMetadata: \"updateMetadata\",\n deleteMetadata: \"deleteMetadata\",\n} as const;\n\nclass Metadata {\n constructor(private _connection: any) {}\n\n createMetaData(metadataConfig: IMetadataCreateDto) {\n const { entity_uid, type = \"asset\", ...otherMetaData } = metadataConfig;\n\n const data = {\n action: metadataTypes.creteMetadata,\n payload: {\n metadata: {\n entity_uid,\n type,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveMetaData(metadataConfig: IMetadataRetrieveDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.retrieveMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveAllMetaData(params: AnyObject = {}) {\n const data = {\n action: metadataTypes.retrieveAllMetadata,\n params,\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n updateMetaData(metadataConfig: IMetadataUpdateDto) {\n const { uid, ...otherMetaData } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.updateMetadata,\n payload: {\n metadata: {\n uid,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n deleteMetaData(metadataConfig: IMetadataDeleteDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.deleteMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n}\nexport default Metadata;\n","import { getPreferredBodyElement } from \"./utils/utils\";\n\nclass Modal {\n constructor() {\n if (!Object.prototype.hasOwnProperty.call(window, \"iframeRef\")) {\n const rootElement = getPreferredBodyElement(\n document?.body?.children\n );\n window[\"iframeRef\"] = rootElement;\n }\n }\n\n setBackgroundElement(element: HTMLElement) {\n window[\"iframeRef\"] = element;\n }\n}\n\nexport default Modal;\n","\nimport Base from '../base';\nimport { getReferences, language, environment } from '../../utils';\nimport postRobot from 'post-robot';\nimport { IAnyObject } from '../../../RTE/types';\n\nlet connection: any = {};\n\n/**\n * @summary Creates an instance of `Asset`.\n * @description An initializer is responsible for creating an Asset object.\n * @param {String} uid - uid of the asset\n * @example\n * let Asset = extension.stack.Asset('bltsomething123');\n * @returns {Asset}\n * @ignore\n */\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nclass Asset extends Base {\n getReferences: any\n environment: any\n constructor(uid) {\n super(uid);\n this.getReferences = getReferences;\n this.environment = environment;\n return this;\n }\n\n /**\n * @function\n * @name Stack#Asset.Query\n * @description This static method instantiates the query module for assets. To see the list of methods that can be used for querying assets, refer the {@link Query} module.\n * @example\n * let assetQuery = extension.stack.Asset.Query();\n * assetQuery.where(\"title\": \"main.js\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment\n });\n return entryQuery;\n }\n\n static module(plural = false) {\n return plural ? 'Assets' : 'Asset';\n }\n\n static get connection() {\n return connection;\n }\n\n /**\n * @function\n * @name Stack#Asset.getRteAssets\n * @description This static method retrieves comprehensive information on all assets uploaded through the Rich Text Editor field.\n * @return {external:Promise}\n */\n\n static getRteAssets() {\n return this.connection.sendToParent('stackQuery', { action: 'getRteAssets' }).then(onData).catch(onError);\n }\n\n /**\n * @function\n * @name Stack#Asset.getAssetsOfSpecificTypes\n * @description This static method retrieves assets that are either image or video files, based on the request query.\n * @param {String} assetType Type of asset to be received for e.g., ‘image/png’\n * @return {external:Promise}\n */\n static getAssetsOfSpecificTypes(assetType) {\n if (!assetType || typeof assetType !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.connection.sendToParent('stackQuery', { action: 'getAssetsOfSpecificTypes', asset_type: assetType }).then(onData).catch(onError);\n }\n\n\n /**\n * @name Stack#Asset#only\n * @function\n * @description This method is used to show the selected fields of the assets in the result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('title').fetch();\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @name Stack#Asset#except\n * @function\n * @description This method is used to hide the selected fields of the assets in result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('title').fetch();\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('BASE','title').fetch();\n * @example\n * .Except with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @function\n * @name Stack#Asset#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.Asset('bltsomething123').environment('development').fetch()\n * @returns {Stack#Asset}\n */\n\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addParam\n @function\n @example extension.stack.Asset('uid').addParam('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addQuery\n @function\n @example extension.stack.Asset('uid').addQuery('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n\n /**\n This method will fetch the details of the entries and the assets in which the specified asset is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-asset|\n Asset References}\n @name Stack#Asset#getReferences\n @function\n @example extension.stack.Asset('uid').getReferences().then().catch();\n @return {external:Promise}\n */\n\n /**\n This method deletes an existing asset.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-asset|\n Delete Asset}\n @name Stack#Asset#delete\n @function\n @example extension.stack.Asset('uid').delete().then().catch();\n @return {external:Promise}\n */\n\n\n /**\n * @name Stack#Asset#publish\n * @function\n * @description This method allows you to publish the asset either immediately or schedule the publish for a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .publish(\n {\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n publish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('publishAsset', payload);\n }\n\n /**\n * @function\n * @name Stack#Asset#unpublish\n * @description This method will instantly unpublish the asset, and also give you the provision to automatically unpublish the asset at a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .unpublish({\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n unpublish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('unpublishAsset', payload);\n }\n\n static async handleUpload(_files, type, options?: {parentFolderUid?: string, customUploadHandler?: IAnyObject}) {\n if (!_files || !_files.length) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n const files: File[] = [];\n Array.from(_files).forEach(_ => {\n // @ts-ignore\n const file = new File([_], _.name, { type: _.type });\n files.push(file);\n })\n const uid = new Date().getUTCMilliseconds();\n return (async function() {\n try {\n const uploadReadyListener = postRobot.on(\n `uploadReady_${uid}`,\n function () {\n window.parent.postMessage(\n {\n type: `upload_${uid}`,\n upload_type: type,\n files,\n parentFolderUid: options?.parentFolderUid,\n customUploadHandler: options?.customUploadHandler\n },\n \"*\"\n );\n\n uploadReadyListener.cancel();\n return Promise.resolve({});\n }\n );\n //@ts-ignore\n await postRobot.sendToParent(\"stackOptionsQuery\", {\n action: `upload_${uid}`,\n uid,\n });\n //@ts-ignore\n return postRobot.sendToParent(`upload_${uid}`, {});\n } catch(err) {\n return Promise.reject(err);\n }\n })();\n }\n\n static uploadAsset(files, options?: {parentFolderUid?: string}) {\n return Asset.handleUpload(files, 'upload', options);\n }\n}\n\nexport default (uiConnection) => {\n connection = uiConnection;\n return new Proxy(Asset, {\n apply(Target, thisArg, argumentsList) {\n //@ts-ignore\n return new Target(...argumentsList);\n }\n });\n};\n","//@ts-nocheck\n\nimport Query from './query';\nimport { transform, addParam } from '../utils';\n\n\nfunction onData(data: { data: any; }) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error: any) {\n return Promise.reject(error);\n}\n/**\n * This is Base class, it holds all the methods required for Modle instance,\n * eg ContentType('uid').delete() or Asset('uid').update({...})\n * @ignore\n */\nexport default class Base {\n\n\n uid: string\n _query: { [key: string]: any }\n only: any\n except: any\n addParam: any\n\n static connection: any\n static contentTypeUid: string\n\n constructor(uid: string) {\n if (!uid) { throw new Error('uid is required'); }\n this.uid = uid;\n this._query = {};\n this.only = transform('only');\n this.except = transform('except');\n this.addParam = addParam;\n }\n\n static Query() {\n //@ts-ignore\n return new Query(this.connection, this.module(true), this.contentTypeUid);\n }\n\n\n static create(payload: { [key: string]: any }) {\n const options = { payload, content_type_uid: this.contentTypeUid, action: `create${this.module()}` };\n return this.connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n update(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch(`update${this.constructor.module()}`, payload);\n }\n\n delete() {\n return this.fetch(`delete${this.constructor.module()}`);\n }\n\n fetch(action: string, payload?: { [key: string]: any }) {\n const options = {\n payload,\n content_type_uid: this.constructor.contentTypeUid,\n uid: this.uid,\n params: this._query,\n action: action || `get${this.constructor.module()}`\n };\n\n if (!payload) { delete options.payload; }\n if (!this.constructor.contentTypeUid) { delete options.content_type_uid; }\n return this.constructor.connection.sendToParent('stackQuery', options)\n .then(onData).catch(onError);\n }\n}\n","import Base from '../base';\nimport { getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference } from '../../utils';\n\nlet connection = {};\nlet contentTypeUid = '';\n\n\nclass Entry extends Base {\n constructor(uid: string) {\n super(uid);\n this._query = {};\n return this;\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry.Query\n * @description This static method instantiates the query module for entries. To see the list of methods that can be used for querying entries, refer the {@link Query} module.\n * @example\n * let entryQuery = extension.stack.ContentType('content_type_uid').Entry.Query();\n * entryQuery.where(\"field_uid\": \"10\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryQuery;\n }\n\n static get connection() {\n return connection;\n }\n\n static get contentTypeUid() {\n return contentTypeUid;\n }\n\n static module(plural = false) {\n return plural ? 'Entries' : 'Entry';\n }\n /**\n This method creates a new entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#create-a-an-entry|\n Create Entry}\n @name Stack#ContentType#Entry.create\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.create({\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n @param {Object} payload Data to create an entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @name Stack#ContentType#Entry#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('title').fetch();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @name Stack#ContentType#Entry#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('title').fetch();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('BASE','title').fetch();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * This method includes a query parameter in your query.\n * @name Stack#ContentType#Entry#addParam\n * @function\n * @example extension.stack.ContentType('content_type_uid').Entry('uid').addParam('include_count', 'true').fetch().then().catch();\n * @param {string} key - Key of the parameter\n * @param {string} value - Value of the parameter\n * @return {Stack#ContentType#Entry} Returns\n */\n\n\n /**\n This method will fetch all the entries in which the current entry is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-an-entry|\n Entry References}\n @name Stack#ContentType#Entry#getReferences\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').getReferences().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n @example extension.stack.ContentType('content_type_uid').Entry('uid').update({\"entry\" : {...}}).then().catch();\n @param {Object} payload Data to be update exsisting entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method deletes an existing entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-entry|\n Delete Entry}\n @name Stack#ContentType#Entry#delete\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').delete().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method fetches information of a specific entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-an-entry|\n Get A Single Entry}\n @name Stack#ContentType#Entry#fetch\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').fetch().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeReference\n * @description This method is used to include referenced entries from other content types.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference(['category', 'author']).fetch()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference('category', 'author').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#language\n * @description This method is used to set the language code of which you want to retrieve the data.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').language('en-us').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').environment('development').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#addQuery\n * @description This method is used to add a query to an entry object.\n * @param {String} key - Key of the query\n * @param {String} value - Value of the query\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').addQuery('include_schema',true).fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeSchema().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies).\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeContentType().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeOwner().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#getLanguages\n * @description This method returns the details of all the languages that an entry is localized in.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').getLanguages()\n * @return {external:Promise}\n */\n getLanguages() {\n return this.fetch('getEntryLanguages');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unlocalize\n * @description This method is used to unlocalize an entry\n * @param {string} locale Locale in which the entry has to be unlocalized\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unlocalize('fr-fr').then(...).catch(...);\n * @return {external:Promise}\n */\n unlocalize(locale: string) {\n if (!locale || typeof locale !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('unlocalizeEntry');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#publish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').publish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n publish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('publishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unpublish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unpublish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n unpublish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('unpublishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#setWorkflowStage\n * @description This method allows you to either set a particular workflow stage or update the workflow stage details of an entry.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').setWorkflowStage({\n \"workflow\": {\n \"workflow_stage\": {\n \"comment\": \"Test Comment\",\n \"due_date\": \"Thu Dec 01 2018\",\n \"notify\": false,\n \"uid\": \"blt9f52a2cd5e0014fb\",\n \"assigned_to\": [{\n \"uid\": \"blt296a22e28cc0c63c\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@contentstack.com\"\n }],\n \"assigned_by_roles\": [{\n \"uid\": \"blt5b74c24c7ae25d94\",\n \"name\": \"Content Manager\"\n }]\n }\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n setWorkflowStage(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('setWorkflowStageEntry', payload);\n }\n\n /**\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#update-an-entry| Update Entry}\n * @name Stack#ContentType#Entry#update\n * @function\n * @description This call allows you to update entry content.\n * @param {object} payload - Payload for the request\n * @param {string} [locale] - Passing the ‘locale’ parameter will localize the entry in the specified locale\n * to be localized in the specified locale.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').update(\n {\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n //@ts-ignore\n update(payload: { [key: string]: any }, locale: string) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('updateEntry', payload);\n }\n}\n\nexport default (uiConnection: any, contentType: string) => {\n connection = uiConnection;\n contentTypeUid = contentType;\n return new Proxy(Entry, {\n apply(Target: any, thisArg, argumentsList: any[]) {\n const entryTarget = new Target(...argumentsList);\n Object.assign(entryTarget, {\n getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryTarget;\n }\n });\n};\n","import Entry from './entry';\nimport Base from '../base';\n\nlet connection = {};\n\n\nclass ContentType extends Base {\n\n Entry: typeof Entry\n\n constructor(uid: string) {\n super(uid);\n /**\n * @constructor\n * @hideconstructor\n * @name Stack#ContentType#Entry\n * @desc An entry is the actual piece of content created using one of the defined content types\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#entries| Entries}\n */\n\n // @ts-ignore\n this.Entry = Entry(this.constructor.connection, this.uid);\n return this;\n }\n\n // static module(plural = false) {\n // return plural ? 'ContentTypes' : 'ContentType';\n // }\n static get connection() {\n return connection;\n }\n}\nexport default (uiConnection: any) => {\n connection = uiConnection;\n return new Proxy(ContentType, {\n // target = Foo\n apply(Target: any, thisArg, argumentsList: any[]) {\n return new Target(...argumentsList);\n }\n });\n};\n","import * as Utils from '../utils';\n\n\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nconst _extend = {\n compare(type) {\n return function (key, value) {\n if (key && value && typeof key === 'string' && typeof value !== 'undefined') {\n this._query.query[key] = this._query.query.file_size || {};\n this._query.query[key][type] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n contained(bool) {\n const type = (bool) ? '$in' : '$nin';\n return function (key, value) {\n if (key && value && typeof key === 'string' && Array.isArray(value)) {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key][type] = this._query.query[key][type] || [];\n this._query.query[key][type] = this._query.query[key][type].concat(value);\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n exists(bool) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key].$exists = bool;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n logical(type) {\n return function () {\n const _query: any[] = [];\n for (let i = 0, _i = arguments.length; i < _i; i += 1) {\n if (arguments[i] instanceof Query && arguments[i]._query.query) {\n _query.push(arguments[i]._query.query);\n } else if (typeof arguments[i] === 'object') {\n _query.push(arguments[i]);\n }\n }\n if (this._query.query[type]) {\n this._query.query[type] = this._query.query[type].concat(_query);\n } else {\n this._query.query[type] = _query;\n }\n return this;\n };\n },\n sort(type) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query[type] = key;\n return this;\n }\n throw Error('Argument should be a string.');\n };\n },\n pagination(type) {\n return function (value) {\n if (typeof value === 'number') {\n this._query[type] = value;\n return this;\n }\n throw Error('Argument should be a number.');\n };\n }\n};\n\n/**\n * Creates an instance of the query\n * @hideconstructor\n */\nclass Query {\n module: any\n _connection: any\n _query: {[key: string]: any}\n contentTypeUid: string\n only: any\n except: any\n addQuery: any\n lessThan: any\n lessThanOrEqualTo: any\n greaterThan: any\n greaterThanOrEqualTo: any\n notEqualTo: any\n containedIn: any\n notContainedIn: any\n exists: any\n notExists: any\n ascending: ReturnType\n descending: ReturnType\n beforeUid: ReturnType\n afterUid: ReturnType\n skip: ReturnType\n limit: ReturnType\n or: ReturnType\n and: ReturnType\n addParam: ReturnType\n singleEntry: any\n\n constructor(connection, module, contentTypeUid) {\n this.module = module;\n this._connection = connection;\n this._query = {};\n this._query.query = this._query.query || {};\n this.contentTypeUid = contentTypeUid;\n\n /**\n * @name Query#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('title').find();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('BASE','title').find();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().only(['title','description']).find();\n * @returns {Query}\n */\n\n this.only = Utils.transform('only');\n\n /**\n * @name Query#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('title').find();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('BASE','title').find();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().except(['title','description']).find();\n * @returns {Query}\n */\n\n this.except = Utils.transform('except');\n /**\n This method includes a query parameter in your query.\n @name Query#addQuery\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addQuery('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addQuery = Utils.addQuery;\n\n /**\n * @name Query#lessThan\n * @description This method provides only the entries with values less than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThan('created_at','2015-06-22')\n * @returns {Query}\n */\n this.lessThan = _extend.compare('$lt');\n\n /**\n * @name Query#lessThanOrEqualTo\n * @description This method provides only the entries with values less than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThanOrEqualTo('created_at','2015-03-12')\n * @returns {Query}\n */\n this.lessThanOrEqualTo = _extend.compare('$lte');\n /**\n * @function\n * @name Query#greaterThan\n * @description This method provides only the entrieswith values\n * greater than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThan('created_at','2015-03-12')\n * @returns {Query}\n */\n this.greaterThan = _extend.compare('$gt');\n\n /**\n * @function\n * @name Query#greaterThanOrEqualTo\n * @description This method provides only the entries with values greater than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThanOrEqualTo('created_at', '2015-06-22')\n * @returns {Query}\n */\n this.greaterThanOrEqualTo = _extend.compare('$gte');\n\n /**\n * @function\n * @name Query#notEqualTo\n * @description This method provides only the entries with values not equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').notEqualTo('title','Demo')\n * @returns {Query}\n */\n this.notEqualTo = _extend.compare('$ne');\n\n /**\n * @function\n * @name Query#containedIn\n * @description This method provides only the entries with values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {*} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').containedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.containedIn = _extend.contained(true);\n\n /**\n * @function\n * @name Query#notContainedIn\n * @description This method provides only the entries that do not contain values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {Array} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').notContainedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.notContainedIn = _extend.contained(false);\n\n /**\n * @function\n * @name Query#exists\n * @description This method provides only the entries that contains the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').exists('featured')\n * @returns {Query}\n */\n this.exists = _extend.exists(true);\n\n /**\n * @function\n * @name Query#notExists\n * @description This method provides only the entries that do not contain the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').notExists('featured')\n * @returns {Query}\n */\n this.notExists = _extend.exists(false);\n\n /**\n * @function\n * @name Query#ascending\n * @description This parameter sorts the entries in ascending order on the basis of the value of the specified field.\n * @param {String} key - Field UID to be used for sorting.\n * @example extension.stack.ContentType('blog').ascending('created_at')\n * @returns {Query}\n */\n this.ascending = _extend.sort('asc');\n\n /**\n * @function\n * @name Query#descending\n * @description This method sorts the entries in descending order on the basis of the specified field.\n * @param {String} key - Field UID to be used for sorting\n * @example extension.stack.ContentType('blog').descending('created_at')\n * @returns {Query}\n */\n this.descending = _extend.sort('desc');\n\n /**\n * @function\n * @name Query#beforeUid\n * @description This method provides only the entries that are placed before the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').beforeUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.beforeUid = _extend.sort('before_uid');\n\n /**\n * @function\n * @name Query#afterUid\n * @description This method provides only the entries that are placed after the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').afterUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.afterUid = _extend.sort('after_uid');\n\n /**\n * @function\n * @name Query#skip\n * @description This method skips the specified number of entries.\n * @param {Number} skip - Number of entries to be skipped\n * @example extension.stack.ContentType('blog').skip(5)\n * @returns {Query}\n */\n this.skip = _extend.pagination('skip');\n\n /**\n * @function\n * @name Query#limit\n * @description This method limits the response by providing only the specified number of entries.\n * @param {Number} limit - Maximum number of entries to be returned in the result.\n * @example extension.stack.ContentType('blog').limit(10)\n * @returns {Query}\n */\n this.limit = _extend.pagination('limit');\n\n /**\n * @function\n * @name Query#or\n * @description This method performs the OR operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries\n * to be taken into consideration\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo')\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10)\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery()\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery()\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @returns {Query}\n */\n this.or = _extend.logical('$or');\n\n /**\n * @function\n * @name Query#and\n * @description This method performs the AND operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries to be taken into consideration\n * @example\n * AND with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo');\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10);\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @example\n * .and with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery();\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery();\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @returns {Query}\n */\n this.and = _extend.logical('$and');\n /**\n This method includes a query parameter in your query.\n @name Query#addParam\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addParam('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addParam = Utils.addParam;\n }\n\n // -------------------------------------Entry Queries--------------------------------------------------\n /**\n * @function\n * @name Query#includeReference\n * @description This method is used to include referenced entries from other content types. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference(['category', 'author']).find()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference('category', 'author').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeSchema().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#language\n * @description This method is used to set the language code of which you want to retrieve the data. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().language('en-us').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies). Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeContentType().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeOwner().find()\n * @returns {Query}\n */\n // -----------------------------------------Entry Queries End------------------------------------------------------\n\n /**\n * @function\n * @name Query#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().environment('development').find()\n * @returns {Query}\n */\n\n /**\n * @description This method provides only the entries containing field values matching the specified condition.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').where('title','Demo')\n * @returns {Query}\n */\n equalTo(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n where(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides only the number of entries matching the specified filters.\n * @example extension.stack.ContentType('blog').count()\n * @returns {Query}\n */\n count() {\n this._query.count = true;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method is used to set raw queries on the Query instance.\n * @param {object} query - Raw{json} queries to filter the entries in the result set.\n * @returns {Query}\n */\n query(query) {\n if (typeof query === 'object') {\n this._query.query = Utils.mergeDeep(this._query.query, query);\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description The ’tags’ parameter allows you to specify an array of tags to search for objects.\n * @param {Array} values - Tags\n * @example extension.stack.ContentType('blog').tags(['technology', 'business'])\n * @returns {Query}\n */\n tags(values) {\n if (Array.isArray(values)) {\n this._query.tags = values;\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description This method also includes the total number of entries returned in the response.\n * @example extension.stack.ContentType('blog').includeCount()\n * @returns {Query}\n */\n includeCount() {\n this._query.include_count = true;\n return this;\n }\n\n /**\n * @summary returns Returns the raw query which can be used for further calls (.and/.or).\n * @description This method provides raw{json} queries based on the filters applied on the Query object.\n * @example extension.stack.ContentType('blog').where('title','Demo').getQuery()\n * @returns {Query}\n */\n getQuery() {\n return this._query.query;\n }\n\n /**\n * @description This method provides only the entries matching the regular expression for the specified field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @param {String} [options] - Match or compare a value in the entry\n * @example\n * .regex without options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo')\n * @example\n * .regex with options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo', 'i')\n * @returns {Query}\n */\n regex(key, value, options) {\n if (key && value && typeof key === 'string' && typeof value === 'string') {\n this._query.query[key] = {\n $regex: value\n };\n if (options) this._query.query[key].$options = options;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method is used to search data in entries.\n * @param {string} value - Value to search in the entries.\n * @example extension.stack.ContentType('blog').search('Welcome to demo')\n * @returns {Query}\n */\n search(value) {\n if (value && typeof value === 'string') {\n this._query.typeahead = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides all the entries which satisfy the specified query.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').find()\n */\n find() {\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method provides a single entry from the result set.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').findOne()\n */\n findOne() {\n this.singleEntry = true;\n this._query.limit = 1;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n}\n\nexport default Query;\n","import Asset from './api/asset/index';\nimport ContentType from './api/content-type/index';\nimport { onData, onError } from \"../utils/utils\";\nimport { BranchDetail, GetAllStacksOptions, StackAdditionalData, StackDetail, StackSearchQuery } from '../types/stack.types';\nimport { IManagementTokenDetails } from '../types';\n\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nclass Stack {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _data: StackDetail\n ContentType: any // TODO: change it\n Asset: any // TODO: change it\n private _currentBranch: BranchDetail | null = null;\n\n\n constructor(data: StackDetail = {} as StackDetail, connection: any, additionalData: StackAdditionalData) {\n this._connection = connection;\n this._data = data;\n /**\n * @constructor\n * @hideconstructor\n * @desc Content type defines the structure or schema of a page or a section of your web or mobile property\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#content-types| ContentType}\n * @param {string} uid - Uid of contenttype.\n * @example extension.stack.ContentType('content_type_uid')\n * */\n this.ContentType = ContentType(connection);\n /**\n * @constructor\n * @hideconstructor\n * @desc An initializer is responsible for creating an Asset object.\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#assets| Asset}\n * @param {string} uid - UID of the asset.\n * @example extension.stack.Asset('asset_uid')\n * */\n this.Asset = Asset(connection);\n\n const currentBranch = additionalData.currentBranch || \"\"\n\n if (currentBranch) {\n this._currentBranch =\n (data.branches || []).find(\n (branch) => branch.uid === additionalData.currentBranch\n ) || null;\n }\n\n }\n\n\n /**\n * This method returns the data of the current stack.\n * @return Returns stack data.\n */\n\n getData(): StackDetail {\n return this._data;\n }\n\n\n /**\n * This method returns all the stacks in the current organization.\n * @param query asks for organization UID and query params to get all stacks\n * @returns Stacks within current organization\n */\n async getAllStacks({orgUid = \"\", params = {}}: GetAllStacksOptions = {}): Promise {\n \n // validation\n if (typeof orgUid !== 'string') {\n throw new TypeError('orgUid must be a string');\n }\n\n const options = {\n action: \"getStacks\",\n headers: { organization_uid: orgUid || this._data.org_uid },\n skip_api_key: true,\n params\n };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .then((data) => data.stacks || [])\n .catch(onError);\n\n }\n\n /**\n * Get the details of all the management tokens of the stack.\n * Note: This API does not return the token value.\n * @see {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-management-tokens | Get all management tokens}\n * @returns Details of all the management token of the stack\n */\n async getManagementTokens(): Promise {\n const options = { action: \"getManagementTokens\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(async (response) => {\n const data = await onData<{tokens: IManagementTokenDetails[]}>(response);\n return data.tokens || [];\n })\n .catch(onError);\n }\n\n /**\n * Gets the results of the search based on user query\n * @param queries Array of key value pair of query parameters\n * @param apiKey API key of the stack\n * @returns Result of the query\n */\n search(queries: StackSearchQuery, apiKey: string | null = this._data.api_key) {\n const options = { params: queries, api_key: apiKey, action: \"search\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n }\n\n\n /**\n * This API allows you to retrieve data of a content type of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-content-type| Content Type API} requests. This method returns a Promise object.\n * @param {string} uid Uid of the desired content type\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with content type details.\n */\n getContentType(uid: string, params = {}): Promise<{ [key: string]: any }> {\n if (!uid) {\n return Promise.reject(new Error('uid is required'));\n }\n const options = { uid, params, action: 'getContentType' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve data of a content types of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Content Types API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with details of the content type.\n */\n getContentTypes(query = {}, params: { [key: string]: any } = {}): Promise<{ [key: string]: any }> {\n const optionParams = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getContentTypes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve environment details of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-environment| Environment API} requests. This method returns a Promise object.\n * @param {string} name Name of the desired environment\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with environment details.\n */\n getEnvironment(name: string, params = {}) {\n if (!name) {\n return Promise.reject(new Error('name is required'));\n }\n const options = { name, params, action: 'getEnvironment' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of environments of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-environments| Environments API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the environments.\n */\n getEnvironments(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getEnvironments' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of releases of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-releases| Releases API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the releases.\n */\n getReleases(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getReleases' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of publish queue of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-publish-queue| Publish Queue API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the publish queue.\n */\n getPublishes(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getPublishes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a locale of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-language| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getLocale(code: string, params = {}) {\n if (!code) {\n return Promise.reject(new Error('code is required'));\n }\n const options = { code, params, action: 'getLocale' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getLocales(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getLocales' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a workflow of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-workflow| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getWorkflow(uid: string, params = {}) {\n if (!uid) {\n return Promise.reject(new Error('workflow uid is required'));\n }\n const options = { uid, params, action: 'getWorkflow' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n \n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getWorkflows(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getWorkflows' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve all the branches in the current stack\n * @returns All branches of the current stack\n */\n getAllBranches(): BranchDetail[] {\n return this._data.branches || [];\n }\n\n /**\n * Returns the details of the current branch of the stack if available\n * @returns current branch of the current stack if available\n */\n getCurrentBranch(): BranchDetail | null {\n return this._currentBranch;\n }\n}\n\nexport default Stack;\n","export function transform(type) {\n return function () {\n switch (arguments.length) {\n case 1:\n if (\n Array.isArray(arguments[0]) ||\n typeof arguments[0] === \"string\"\n ) {\n let query = this._query[`${type}[BASE]`] || [];\n query = query.concat(arguments[0]);\n this._query[`${type}[BASE]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n case 2:\n if (\n typeof arguments[0] === \"string\" &&\n (Array.isArray(arguments[1]) ||\n typeof arguments[1] === \"string\")\n ) {\n let query = this._query[`${type}[${arguments[0]}]`] || [];\n query = query.concat(arguments[1]);\n this._query[`${type}[${arguments[0]}]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n default:\n throw Error(\"Kindly provide valid parameters\");\n }\n };\n}\n\n// merge two objects\nexport function merge(\n target: { [key: string]: any },\n source: { [key: string]: any }\n) {\n const newTraget = target;\n if (target && source) {\n Object.keys(source).forEach((key) => {\n newTraget[key] = source[key];\n });\n }\n return newTraget;\n}\n\n// merge two objects\nexport function mergeDeep(\n oldTarget: { [key: string]: any },\n oldSource: { [key: string]: any }\n) {\n const newTarget = oldTarget;\n const self = this;\n const _mergeRecursive = (anotherTarget, source) => {\n const target = anotherTarget;\n Object.keys(source).forEach((key) => {\n if (\n self._type(source[key]) === \"object\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n _mergeRecursive(target[key], source[key]);\n } else if (\n self._type(source[key]) === \"array\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n target[key] = target[key].concat(source[key]);\n } else {\n target[key] = source[key];\n }\n });\n };\n _mergeRecursive(newTarget, oldSource);\n return newTarget;\n}\n\nexport function _type(val) {\n let __typeof = typeof val;\n if (__typeof === \"object\" && Array.isArray(val)) {\n //@ts-ignore\n __typeof = \"array\";\n }\n return __typeof;\n}\n\nexport function addParam(key, value) {\n if (key && typeof key === \"string\" && value && typeof value === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"Kindly provide valid parameters.\");\n}\n\nexport function addQuery(key, value) {\n if (key && value && typeof key === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"First argument should be a String.\");\n}\n\nexport function language(languageCode) {\n if (languageCode && typeof languageCode === \"string\") {\n this._query.locale = languageCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function environment(environmentCode) {\n if (environmentCode && typeof environmentCode === \"string\") {\n this._query.environment = environmentCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function includeOwner() {\n this._query.include_owner = true;\n return this;\n}\n\nexport function includeContentType() {\n this._query.include_content_type = true;\n return this;\n}\n\nexport function includeSchema() {\n this._query.include_schema = true;\n return this;\n}\n\nexport function includeReference(val) {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(val[i]);\n }\n } else if (typeof val === \"string\") {\n for (let i = 0; i < arguments.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(\n arguments[i]\n );\n }\n } else {\n throw Error(\"Argument should be a String or an Array.\");\n }\n return this;\n}\n\nexport function getReferences() {\n return this.fetch(`get${this.constructor.module()}References`);\n}\n","function onError(error: Error) {\n return Promise.reject(error);\n}\n/**\n * Class used by an extension to store your data in {@link external:localStorage}.\n */\nclass Store {\n /**\n * @hideconstructor\n */\n\n _connection: any\n\n constructor(connection: any) {\n this._connection = connection;\n }\n /**\n * Gets the value of key\n * @param {string} key Key of the stored data\n * @example extension.store.get('key').then((value) => console.log(value)) // will log value for the given key\n * @return {external:Promise}\n */\n get(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'get', key })\n .then((event: { data: any; }) => Promise.resolve(event.data)).catch(onError);\n }\n\n /**\n * Gets an object with all the stored key-value pairs.\n * @example extension.store.getAll().then((obj) => obj)\n * @return {external:Promise}\n */\n getAll() {\n return this._connection.sendToParent('store', { action: 'getAll' })\n .then(({ data = {} }) => Promise.resolve(data)).catch(onError);\n }\n\n /**\n * Sets the value of a key\n * @param {string} key Key of the stored data.\n * @param {*} value Data to be stored.\n * @example extension.store.set('key', 'value').then((success) => console.log(success)) // will log ‘true’ when value is set\n * @return {external:Promise}\n */\n\n set(key: string, value: string) {\n if (!key || !value || typeof key !== 'string') {\n throw new Error('Kindly provide valid parameters');\n }\n return this._connection.sendToParent('store', { action: 'set', key, value })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Removes the value of a key\n * @param {string} key Key of the data to be removed from the store\n * @example extension.store.remove('key').then((success) => console.log(success)) // will log ‘true’ when value is removed\n * @return {external:Promise}\n */\n\n remove(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'remove', key })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Clears all the stored data of an extension\n * @example extension.store.clear().then((success) => console.log(success)) // will log ‘true’ when values are cleared\n * @return {external:Promise}\n */\n\n clear() {\n return this._connection.sendToParent('store', { action: 'clear' })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n}\n\nexport default Store;\n","import { AnyObject } from \"./types/common.types\";\nimport { StackDetail } from \"./types/stack.types\";\n\nexport declare interface IDashboardWidget {\n [key: string]: any;\n}\n\nexport declare interface ICustomField {\n [key: string]: any;\n}\n\nexport declare interface ISidebarWidget {\n [key: string]: any;\n}\n\nexport declare interface IRTE {\n [key: string]: any;\n}\n\nexport declare interface IFieldModifierLocation {\n [key: string]: any;\n}\n\nexport declare interface IEntryFieldLocation {\n [key: string]: any;\n}\n\nexport declare interface IFullPageLocation {\n [key: string]: any;\n}\n\nexport declare interface User {\n uid: string;\n first_name: string;\n last_name: string;\n}\n\nexport declare interface Manifest {\n created_by: User;\n icon: string;\n name: string;\n target_type: string;\n uid: string;\n updated_by: User;\n version: number;\n visibility: string;\n}\n\nexport declare interface IAppConfigWidget {\n installation: {\n setInstallationData: (\n installationData: IInstallationData\n ) => Promise;\n getInstallationData: () => Promise;\n setValidity: (isValid: boolean, options?: ValidationOptions) => void;\n [key: string]: any;\n };\n stack: AnyObject;\n}\n\nexport declare interface IPageWidget {\n [key: string]: any;\n}\n\n// initialization data\nexport declare interface IUser {\n [key: string]: any;\n}\n\nexport declare interface ICurrentEntry {\n [key: string]: any;\n}\n\nexport declare interface ICurrentContentType {\n [key: string]: any;\n}\n\nexport declare interface IConfig {\n [key: string]: any;\n}\n\nexport declare interface ISchema {\n [key: string]: any;\n}\n\nexport declare interface IFieldConfig {\n [key: string]: any;\n}\n\n// Init data\n\ndeclare interface ICommonInitData {\n app_id: string;\n installation_uid: string;\n extension_uid: string;\n stack: StackDetail;\n user: IUser;\n currentBranch: string;\n region: string;\n manifest?: Manifest;\n}\n\nexport declare interface IDashboardInitData {\n data: ICommonInitData & {\n dashboard_width: \"full_width\" | \"half_width\";\n config?: AnyObject;\n type: \"DASHBOARD\";\n };\n}\n\nexport declare interface ISidebarInitData {\n data: ICommonInitData & {\n app_config: IConfig;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n config?: AnyObject;\n changedData: ICurrentEntry;\n type: \"WIDGET\";\n };\n}\n\nexport declare interface IFieldInitData {\n data: ICommonInitData & {\n entry: ICurrentEntry;\n content_type: ICurrentContentType;\n locale: string;\n uid: string;\n schema: ISchema;\n app_config: IConfig;\n value: any;\n field_config: IFieldConfig;\n config?: AnyObject;\n changedData: ICurrentEntry;\n self: boolean;\n type: \"FIELD\";\n };\n}\n\nexport declare interface IFullPageLocationInitData {\n data: ICommonInitData & {\n type: \"FULL_PAGE_LOCATION\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IRTEInitData {\n data: ICommonInitData & {\n type: \"RTE\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IAppConfigInitData {\n data: ICommonInitData & {\n type: \"APP_CONFIG_WIDGET\";\n config?: AnyObject;\n };\n}\n\nexport declare interface ICurrentAsset {\n [key: string]: any;\n}\n\nexport declare interface IAssetSidebarInitData {\n data: ICommonInitData & {\n type: \"ASSET_SIDEBAR_WIDGET\";\n currentAsset: ICurrentAsset;\n config: { [key: string]: any };\n };\n}\n\nexport declare interface IFieldModifierLocationInitData {\n data: ICommonInitData & {\n type: \"FIELD_MODIFIER_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface IEntryFieldLocationInitData {\n data: ICommonInitData & {\n type: \"ENTRY_FIELD_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface setAssetDto {\n title: string;\n description: string;\n tags: string[];\n}\n\nexport enum StackLocation {\n STACK_CONFIG = \"cs.cm.stack.config\",\n DASHBOARD = \"cs.cm.stack.dashboard\",\n SIDEBAR = \"cs.cm.stack.sidebar\",\n CUSTOM_FIELD = \"cs.cm.stack.custom_field\",\n RTE = \"cs.cm.stack.rte\",\n}\n\nexport enum OrganizationLocation {\n ORG_CONFIG = \"cs.org.config\",\n}\n\nexport type AppLocation = StackLocation | OrganizationLocation;\n\nexport interface Scope {\n content_types: string[];\n}\n\n/**\n * installation details API response\n */\nexport interface IInstallationData {\n configuration: { [key: string]: any };\n serverConfiguration: { [key: string]: any };\n webhooks?: {\n channels: string[];\n }[];\n uiLocations?: {\n type: AppLocation;\n meta: {\n enabled: boolean;\n scope?: Scope;\n name: string;\n extentionUid: string;\n }[];\n }[];\n}\n// End of Init data\n\nexport declare interface IInitializationData {\n FIELD: IFieldConfig;\n WIDGET: ISidebarInitData;\n DASHBOARD: IDashboardInitData;\n RTE: IRTEInitData;\n APP_CONFIG_WIDGET: IAppConfigInitData;\n ASSET_SIDEBAR_WIDGET: IAssetSidebarInitData;\n}\n\nexport declare type ILocation =\n | \"RTE\"\n | \"FIELD\"\n | \"DASHBOARD\"\n | \"WIDGET\"\n | \"APP_CONFIG_WIDGET\"\n | \"ASSET_SIDEBAR_WIDGET\"\n | \"FULL_PAGE_LOCATION\"\n | \"ENTRY_FIELD_LOCATION\"\n | \"FIELD_MODIFIER_LOCATION\";\n\nexport declare interface ValidationOptions {\n message?: string;\n}\n\nexport declare interface IManagementTokenDetails {\n uid: string;\n name: string;\n}\n\nexport enum Region {\n UNKNOWN = \"UNKNOWN\",\n NA = \"NA\",\n EU = \"EU\",\n AZURE_NA = \"AZURE_NA\",\n AZURE_EU = \"AZURE_EU\",\n}\n","export const ERROR_MESSAGES = Object.freeze({\n configPage: {\n setValidity: {\n isValidTypeBoolean: \"isValid should be a boolean\",\n messageTypeString: \"message should be a string\",\n },\n },\n entryField: {\n entry: {\n tagsShouldNotBeBlank: \"Tags cannot be blank\",\n tagsShouldBeArrayOfStrings: \"Tags must be an array of strings\",\n },\n frame: {\n dimensionHeightShouldBeNumber: \"Dimension height must be a number\",\n dimensionWidthShouldBeNumber: \"Dimension width must be a number\",\n },\n },\n});\n\nexport default function generateErrorMessages(message: string) {\n return `Contentstack App SDK: ${message}`;\n}\n","import { Region } from \"../types\";\n\nexport function onData>(data: { data: Data }) {\n if (typeof data.data === \"string\") {\n return Promise.reject(data.data);\n }\n return Promise.resolve(data.data);\n}\n\nexport function onError(error: Error) {\n return Promise.reject(error);\n}\n\nexport function formatAppRegion(region: string): Region {\n switch (region) {\n case \"NA\":\n return Region.NA;\n case \"EU\":\n return Region.EU;\n case \"AZURE_NA\":\n return Region.AZURE_NA;\n case \"AZURE_EU\":\n return Region.AZURE_EU;\n default:\n return Region.UNKNOWN;\n }\n}\n\nexport function getPreferredBodyElement(nodeCollection: HTMLCollection) {\n let rootElementIndex = Infinity;\n let rootElement: Element | undefined;\n const elementPreferenceList = [\n \"HEADER\",\n \"NAV\",\n \"MAIN\",\n \"SECTION\",\n \"ARTICLE\",\n \"ASIDE\",\n \"FOOTER\",\n \"DIV\",\n ];\n const nonRenderingTags = [\"SCRIPT\", \"NOSCRIPT\", \"STYLE\", \"TEMPLATE\"];\n // ? choose higher preference semantic HTML tags\n Array.from(nodeCollection).forEach((el) => {\n const elIndex = elementPreferenceList.indexOf(el.nodeName);\n if (elIndex >= 0 && elIndex < rootElementIndex) {\n rootElementIndex = elIndex;\n rootElement = el;\n }\n });\n // ? choose the first rendering HTML tag found if no semantic tags found\n if (!rootElement) {\n rootElement = Array.from(nodeCollection).find(\n (el) => !nonRenderingTags.includes(el.nodeName)\n );\n }\n return rootElement || nodeCollection[0];\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\n\nconst config = { attributes: true, childList: true, subtree: true };\nlet observer: MutationObserver;\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass Window {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _autoResizingEnabled: boolean\n _resizingEnabled: boolean\n type: 'DASHBOARD' | 'FIELD'\n _emitter: EventEmitter\n state: 'half_width' | 'full_width'\n _height?: number\n\n constructor(connection: any, type: 'DASHBOARD' | 'FIELD', emitter: EventEmitter, state: 'half_width' | 'full_width' = 'half_width') {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._resizingEnabled = false;\n this.type = type;\n this.state = state;\n this._emitter = emitter;\n }\n\n /**\n * This method activates the resize button that gives you the provision to resize the window size of your Dashboard Widget.\n * @return {external:Promise} A promise object which will resolve when a resize button is visible on the Dashboard Widget.\n */\n enableResizing() {\n if (this.type !== 'DASHBOARD') { return Promise.resolve(); }\n this._resizingEnabled = true;\n return this._connection.sendToParent('window', { action: 'enableResizing' });\n }\n\n\n /**\n * This function executes the callback function whenever a Dashboard Widget extension is maximized or minimized. Only applicable on Dashboard Widget extensions.\n * @param {function} callback Function to be called when a Dashboard Widget extension is maximized or minimized\n * @return {boolean} Will return true\n */\n\n onDashboardResize(callback: (event: any) => void) {\n const windowObj = this;\n if (this.type !== 'DASHBOARD') {\n return false;\n }\n if (callback && typeof (callback) === 'function') {\n windowObj._emitter.on('dashboardResize', (event: { state: 'half_width' | 'full_width'; }) => {\n windowObj.state = event.state;\n callback(event.state);\n });\n } else {\n throw Error('Callback must be a function');\n }\n return true;\n }\n\n\n /**\n * This method updates the extension height on Contentstack UI.\n * If the ‘height’ argument is not passed, it will calculate the scroll height and set the height of extension window accordingly.\n * @param {string|number} height Desired height of the iframe window\n * @return {external:Promise} A promise object which will be resolved when Contentstack UI sends an acknowledgement stating that the height has been updated.\n */\n updateHeight(height?: number) {\n if (this.type === 'DASHBOARD' && this.state === 'half_width') { return Promise.resolve(); }\n if (!height || isNaN(height)) {\n this._height = Math.ceil(document.documentElement.getBoundingClientRect().height);\n } else if (this._height === height) {\n return Promise.resolve();\n } else {\n this._height = height;\n }\n return this._connection.sendToParent('resize', this._height);\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {Window}.\n */\n enableAutoResizing() {\n if (this._autoResizingEnabled || (this.state === 'half_width' && this.type === 'DASHBOARD')) {\n return this;\n }\n this._autoResizingEnabled = true;\n //@ts-ignore\n observer = new MutationObserver(this.updateHeight.bind(this));\n observer.observe(window.document.body, config);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {Window}.\n */\n disableAutoResizing() {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n observer.disconnect();\n return this;\n }\n\n enablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent(\"window\", {\n action: \"dashboardEnableTopPadding\",\n });\n }\n\n disablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent('window', {\n action: 'dashboardDisableTopPadding' \n });\n }\n \n}\n\nexport default Window;\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","// 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].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n"],"names":["root","factory","exports","module","define","amd","this","self","modules","installedModules","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","value","interface_namespaceObject","isRegex","item","toString","cleanUpWindow","promise_ZalgoPromise","bridge","init","public_parent","_send","request","sendToParent","client","_on","listen","server_once","server_listener","CONFIG","constants_CONSTANTS","disable","PROTOCOL","IE_WIN_ACCESS_ERROR","isAboutProtocol","arguments","length","window","location","protocol","getParent","win","parent","err","getOpener","opener","canReadFromWindow","href","getActualDomain","Error","host","utils_getDomain","domain","mockDomain","indexOf","isActuallySameDomain","desc","getOwnPropertyDescriptor","isAncestorParent","child","childParent","result","push","getFrames","frames","len","frame","_i","_frame","iframeWindows","iframeFrames","isWindowClosed","allowMock","closed","message","mockclosed","top","iframeIndex","collection","contentWindow","parentNode","doc","ownerDocument","documentElement","contains","getAncestor","matchDomain","pattern","origin","Array","isArray","Boolean","match","JSON","stringify","some","subpattern","isWindow","obj","Window","__cross_domain_utils_window_check__","util_safeIndexOf","_ALLOWED_POST_MESSAGE","weakmap_CrossDomainSafeWeakMap","CrossDomainSafeWeakMap","instance","Constructor","TypeError","Math","random","WeakMap","freeze","testWeakMap","testKey","set","weakmap","keys","values","_cleanupClosedWindows","delete","splice","isSafeToReadWrite","key","entry","writable","index","has","getOrSet","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","ERROR","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","POPUP","IFRAME","WINDOW_PROPS","POSTROBOT","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","POST_MESSAGE","BRIDGE","GLOBAL","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","WILDCARD","map","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","navigator","userAgent","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_typeof","Symbol","iterator","constructor","stringifyError","level","stack","newErr","once","method","called","apply","lib_util_noop","uniqueID","chars","replace","charAt","floor","replaceObject","callback","depth","newobj","_key","childItem","util_isRegex","utils_isPromise","Promise","_toString","then","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushPromise","flushActive","promise","resolve","startActive","endActive","ZalgoPromise","handler","_this","resolved","rejected","errorHandled","handlers","_result","_error","isAsync","res","reject","dispatch","error","_this2","_err","setTimeout","j","asyncReject","dispatching","chain","firstPromise","secondPromise","_handlers$i","_onSuccess","onSuccess","_onError","onError","_promise","_result2","catch","finally","onFinally","try","timeout","time","_this3","clearTimeout","toPromise","all","promises","count","results","prom","hash","items","onPossiblyUnhandledException","cancel","context","args","delay","_delay","isPromise","flush","global","registerSelf","serialize__typeof","methods","listenForMethods","on","_ref","source","data","meth","id","isSerialized","type","__type__","serializeMethod","destination","__id__","__name__","deserializeMethod","wrapper","slice","send","_ref2","__xdomain__","deserializeZalgoPromise","__then__","sayHello","readyPromises","SEND_MESSAGE_STRATEGIES","serializedMessage","dom","forEach","postMessage","_extends","assign","target","sendMessage","_jsonStringify","options","sourceDomain","windowType","__message__","__code__","code","regex","__source__","messages","replacer","indent","objectToJSON","arrayToJSON","toJSON","strategyName","success","status","join","responseListeners","requestListeners","WINDOW_WILDCARD","erroredResponseListeners","_RECEIVE_MESSAGE_TYPE","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","nameListeners","_i2","_ref3","_length2","winQualifier","winListeners","_i4","_winListeners$__DOMAI2","_length4","_ref5","listener","types__extends","RECEIVE_MESSAGE_TYPES","pathname","ack","respond","fireAndForget","originalSource","handleError","response","receive__typeof","receiveMessage","event","parsedMessage","parse","receivedMessages","RegExp","messageListener","sourceElement","originalEvent","targetWindow","el","document","getElementById","tagName","toLowerCase","HTMLIFrameElement","hasResult","requestPromises","requestPromise","actualParent","_i7","_getAllChildFrames4","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","childFrame","_length6","_i15","_getFrames8","_length14","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","cycle","max","min","server__typeof","listenerOptions","errorHandler","requestListener","addRequestListener","_ref6","listenersCollection","_i6","_win2","_i8","_length8","_listenersCollection","_i10","_domain2","_length10","_item","_i12","_length12","existingListener","strDomain","regexListeners","regexListener","_handler","errorOnClose","interval","runInterval","onceListener","removeEventListener","popupWindowsByWin","remoteWindows","initialized","addEventListener","attachEvent","initializationData","connection","emitter","currentAsset","_emitter","_connection","thisAsset","_changedData","getData","bind","setData","syncAsset","updateWidth","onSave","onChange","onPublish","onUnPublish","replaceAsset","asset","width","file","handleUpload","AssetSidebarWidget","configCallback","pluginMetaData","registry","title","toolbar","inMainToolbar","inHoveringToolbar","isContentstackElement","meta","elementType","editorCallbacks","isDependent","isContainer","containerMetaData","rootCategory","dependentPlugins","addPlugins","plugins","plugin","category","beforeChildrenRender","beforeElementRender","handleMouseDown","rte","config","entries","iconName","display","includes","dndOptions","Component","shouldOverride","containerMeta","RTEPlugin","rtePluginInitializer","additionalData","_data","currentBranch","_additionalData","setInstallationData","installationData","onData","getInstallationData","setValidity","isValid","ERROR_MESSAGES","configPage","isValidTypeBoolean","messageTypeString","AppConfig","content_type","changedData","locale","_options","thisEntry","getField","uid","useUnsavedSchema","_internalFlags","FieldInstance","path","split","schema","find","x","data_type","multiple","blocks","block","e","fieldObject","resolvedData","Entry","initData","pulse","eventName","metadata","postRobot","getConfig","installationUID","getCurrentLocation","getAppVersion","version","orgUid","org_uid","action","headers","organization_uid","skip_api_key","app","getCurrentRegion","region","appUID","app_id","locationUID","extension_uid","installation_uid","currentUser","user","store","DashboardWidget","CustomField","SidebarWidget","AppConfigWidget","FullscreenAppWidget","FullPage","EntryFieldLocation","FieldModifierLocation","modal","formatAppRegion","manifest","dashboard_width","installation","field","fieldConfig","field_config","emitEvent","otherData","state","console","initialize","sdkType","setReady","Extension","excludedDataTypesForSetField","fieldDataObject","unResolvedData","separatedData","_resolvedData","_self","fieldObj","currentFieldObj","dataObj","setFocus","Field","getTags","tags","setTags","undefined","entryField","tagsShouldNotBeBlank","every","tag","areTagsValid","tagsShouldBeArrayOfStrings","FieldModifierLocationEntry","FieldModifierLocationField","_autoResizingEnabled","updateDimension","enableAutoResizing","disableAutoResizing","closeModal","dimension","height","_height","ceil","getBoundingClientRect","_width","dimensionBody","dimensionHeightShouldBeNumber","dimensionWidthShouldBeNumber","preventFrameClose","observer","MutationObserver","observe","body","attributes","childList","subtree","disconnect","FieldModifierLocationFrame","LOG_LEVEL","_extension","ContentstackAppSDK","createMetaData","metadataConfig","entity_uid","otherMetaData","payload","retrieveMetaData","retrieveAllMetaData","params","updateMetaData","deleteMetaData","Metadata","rootElement","getPreferredBodyElement","children","setBackgroundElement","element","Modal","getReferences","environment","Query","entryQuery","language","plural","getRteAssets","getAssetsOfSpecificTypes","assetType","asset_type","publish","fetch","unpublish","_files","files","from","_","File","Date","getUTCMilliseconds","upload_type","parentFolderUid","customUploadHandler","uploadAsset","Asset","uiConnection","Proxy","Target","thisArg","argumentsList","_query","only","transform","except","addParam","contentTypeUid","create","content_type_uid","update","includeOwner","includeContentType","includeSchema","includeReference","getLanguages","unlocalize","setWorkflowStage","contentType","entryTarget","addQuery","ContentType","_extend","query","file_size","bool","concat","$exists","Utils","lessThan","lessThanOrEqualTo","greaterThan","greaterThanOrEqualTo","notEqualTo","containedIn","notContainedIn","exists","notExists","ascending","descending","beforeUid","afterUid","skip","limit","or","and","equalTo","where","mergeDeep","includeCount","include_count","getQuery","$regex","$options","search","typeahead","findOne","singleEntry","_currentBranch","branches","branch","getAllStacks","stacks","getManagementTokens","tokens","queries","apiKey","api_key","getContentType","getContentTypes","optionParams","getEnvironment","getEnvironments","getReleases","getPublishes","getLocale","getLocales","getWorkflow","getWorkflows","getAllBranches","getCurrentBranch","Stack","newTraget","oldTarget","oldSource","newTarget","_mergeRecursive","anotherTarget","_type","val","__typeof","languageCode","environmentCode","include_owner","include_content_type","include_schema","getAll","remove","clear","Store","Region","StackLocation","OrganizationLocation","NA","EU","AZURE_NA","AZURE_EU","UNKNOWN","nodeCollection","rootElementIndex","Infinity","elementPreferenceList","nonRenderingTags","elIndex","nodeName","_resizingEnabled","enableResizing","onDashboardResize","windowObj","updateHeight","isNaN","enablePaddingTop","disablePaddingTop","EventEmitter","proto","originalGlobalValue","indexOfListener","listeners","alias","isValidListener","getListeners","evt","events","_getEvents","test","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","__webpack_module_cache__","__webpack_require__","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://ContentstackAppSDK/webpack/universalModuleDefinition","webpack://ContentstackAppSDK/./node_modules/post-robot/dist/post-robot.js","webpack://ContentstackAppSDK/./node_modules/post-robot/index.js","webpack://ContentstackAppSDK/./src/AssetSidebarWidget.ts","webpack://ContentstackAppSDK/./src/RTE/index.tsx","webpack://ContentstackAppSDK/./src/appConfig/index.ts","webpack://ContentstackAppSDK/./src/entry.ts","webpack://ContentstackAppSDK/./src/extension.ts","webpack://ContentstackAppSDK/./src/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/entry.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/frame.ts","webpack://ContentstackAppSDK/./src/index.ts","webpack://ContentstackAppSDK/./src/metadata.ts","webpack://ContentstackAppSDK/./src/modal.ts","webpack://ContentstackAppSDK/./src/stack/api/asset/index.ts","webpack://ContentstackAppSDK/./src/stack/api/base.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/entry.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/index.ts","webpack://ContentstackAppSDK/./src/stack/api/query.ts","webpack://ContentstackAppSDK/./src/stack/index.ts","webpack://ContentstackAppSDK/./src/stack/utils.ts","webpack://ContentstackAppSDK/./src/store.ts","webpack://ContentstackAppSDK/./src/types.ts","webpack://ContentstackAppSDK/./src/utils/errorMessages.ts","webpack://ContentstackAppSDK/./src/utils/utils.ts","webpack://ContentstackAppSDK/./src/window.ts","webpack://ContentstackAppSDK/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://ContentstackAppSDK/webpack/bootstrap","webpack://ContentstackAppSDK/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ContentstackAppSDK\"] = factory();\n\telse\n\t\troot[\"ContentstackAppSDK\"] = factory();\n})(this, () => {\nreturn ","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"postRobot\", [], factory) : \"object\" == typeof exports ? exports.postRobot = factory() : root.postRobot = factory();\n}(\"undefined\" != typeof self ? self : this, function() {\n return function(modules) {\n var installedModules = {};\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n module.l = !0;\n return module.exports;\n }\n __webpack_require__.m = modules;\n __webpack_require__.c = installedModules;\n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n configurable: !1,\n enumerable: !0,\n get: getter\n });\n };\n __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n __webpack_require__.d(getter, \"a\", getter);\n return getter;\n };\n __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n __webpack_require__.p = \"\";\n return __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n }({\n \"./src/index.js\": function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n Object.defineProperty(__webpack_exports__, \"__esModule\", {\n value: !0\n });\n var interface_namespaceObject = {};\n __webpack_require__.d(interface_namespaceObject, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(interface_namespaceObject, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(interface_namespaceObject, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(interface_namespaceObject, \"init\", function() {\n return init;\n });\n __webpack_require__.d(interface_namespaceObject, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(interface_namespaceObject, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(interface_namespaceObject, \"request\", function() {\n return request;\n });\n __webpack_require__.d(interface_namespaceObject, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(interface_namespaceObject, \"client\", function() {\n return client;\n });\n __webpack_require__.d(interface_namespaceObject, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(interface_namespaceObject, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(interface_namespaceObject, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(interface_namespaceObject, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(interface_namespaceObject, \"disable\", function() {\n return disable;\n });\n function isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n var PROTOCOL = {\n MOCK: \"mock:\",\n FILE: \"file:\",\n ABOUT: \"about:\"\n }, WILDCARD = \"*\", IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n function isAboutProtocol() {\n return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window).location.protocol === PROTOCOL.ABOUT;\n }\n function getParent() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win) try {\n if (win.parent && win.parent !== win) return win.parent;\n } catch (err) {}\n }\n function getOpener() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win && !getParent(win)) try {\n return win.opener;\n } catch (err) {}\n }\n function canReadFromWindow(win) {\n try {\n win && win.location && win.location.href;\n return !0;\n } catch (err) {}\n return !1;\n }\n function getActualDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, location = win.location;\n if (!location) throw new Error(\"Can not read window location\");\n var protocol = location.protocol;\n if (!protocol) throw new Error(\"Can not read window protocol\");\n if (protocol === PROTOCOL.FILE) return PROTOCOL.FILE + \"//\";\n if (protocol === PROTOCOL.ABOUT) {\n var parent = getParent(win);\n return parent && canReadFromWindow(parent) ? getActualDomain(parent) : PROTOCOL.ABOUT + \"//\";\n }\n var host = location.host;\n if (!host) throw new Error(\"Can not read window host\");\n return protocol + \"//\" + host;\n }\n function utils_getDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, domain = getActualDomain(win);\n return domain && win.mockDomain && 0 === win.mockDomain.indexOf(PROTOCOL.MOCK) ? win.mockDomain : domain;\n }\n function isActuallySameDomain(win) {\n try {\n if (win === window) return !0;\n } catch (err) {}\n try {\n var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n if (desc && !1 === desc.enumerable) return !1;\n } catch (err) {}\n try {\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n } catch (err) {}\n try {\n if (getActualDomain(win) === getActualDomain(window)) return !0;\n } catch (err) {}\n return !1;\n }\n function isAncestorParent(parent, child) {\n if (!parent || !child) return !1;\n var childParent = getParent(child);\n return childParent ? childParent === parent : -1 !== function(win) {\n var result = [];\n try {\n for (;win.parent !== win; ) {\n result.push(win.parent);\n win = win.parent;\n }\n } catch (err) {}\n return result;\n }(child).indexOf(parent);\n }\n function getFrames(win) {\n var result = [], frames = void 0;\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n var len = void 0;\n try {\n len = frames.length;\n } catch (err) {}\n if (0 === len) return result;\n if (len) {\n for (var i = 0; i < len; i++) {\n var frame = void 0;\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n result.push(frame);\n }\n return result;\n }\n for (var _i = 0; _i < 100; _i++) {\n var _frame = void 0;\n try {\n _frame = frames[_i];\n } catch (err) {\n return result;\n }\n if (!_frame) return result;\n result.push(_frame);\n }\n return result;\n }\n var iframeWindows = [], iframeFrames = [];\n function isWindowClosed(win) {\n var allowMock = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n try {\n if (win === window) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (!win) return !0;\n } catch (err) {\n return !0;\n }\n try {\n if (win.closed) return !0;\n } catch (err) {\n return !err || err.message !== IE_WIN_ACCESS_ERROR;\n }\n if (allowMock && function(win) {\n if (!isActuallySameDomain(win)) return !1;\n try {\n if (win === window) return !0;\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n if (utils_getDomain(window) === utils_getDomain(win)) return !0;\n } catch (err) {}\n return !1;\n }(win)) try {\n if (win.mockclosed) return !0;\n } catch (err) {}\n try {\n if (!win.parent || !win.top) return !0;\n } catch (err) {}\n var iframeIndex = function(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }(iframeWindows, win);\n if (-1 !== iframeIndex) {\n var frame = iframeFrames[iframeIndex];\n if (frame && function(frame) {\n if (!frame.contentWindow) return !0;\n if (!frame.parentNode) return !0;\n var doc = frame.ownerDocument;\n return !(!doc || !doc.documentElement || doc.documentElement.contains(frame));\n }(frame)) return !0;\n }\n return !1;\n }\n function getAncestor() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return getOpener(win = win || window) || getParent(win) || void 0;\n }\n function matchDomain(pattern, origin) {\n if (\"string\" == typeof pattern) {\n if (\"string\" == typeof origin) return pattern === WILDCARD || origin === pattern;\n if (isRegex(origin)) return !1;\n if (Array.isArray(origin)) return !1;\n }\n return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some(function(subpattern) {\n return matchDomain(subpattern, origin);\n }));\n }\n function isWindow(obj) {\n try {\n if (obj === window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (\"[object Window]\" === Object.prototype.toString.call(obj)) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (window.Window && obj instanceof window.Window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.self === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.parent === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.top === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n } catch (err) {\n return !0;\n }\n return !1;\n }\n function util_safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }\n var _ALLOWED_POST_MESSAGE, weakmap_CrossDomainSafeWeakMap = function() {\n function CrossDomainSafeWeakMap() {\n !function(instance, Constructor) {\n if (!(instance instanceof CrossDomainSafeWeakMap)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n if (function() {\n if (\"undefined\" == typeof WeakMap) return !1;\n if (void 0 === Object.freeze) return !1;\n try {\n var testWeakMap = new WeakMap(), testKey = {};\n Object.freeze(testKey);\n testWeakMap.set(testKey, \"__testvalue__\");\n return \"__testvalue__\" === testWeakMap.get(testKey);\n } catch (err) {\n return !1;\n }\n }()) try {\n this.weakmap = new WeakMap();\n } catch (err) {}\n this.keys = [];\n this.values = [];\n }\n CrossDomainSafeWeakMap.prototype._cleanupClosedWindows = function() {\n for (var weakmap = this.weakmap, keys = this.keys, i = 0; i < keys.length; i++) {\n var value = keys[i];\n if (isWindow(value) && isWindowClosed(value)) {\n if (weakmap) try {\n weakmap.delete(value);\n } catch (err) {}\n keys.splice(i, 1);\n this.values.splice(i, 1);\n i -= 1;\n }\n }\n };\n CrossDomainSafeWeakMap.prototype.isSafeToReadWrite = function(key) {\n if (isWindow(key)) return !1;\n try {\n key && key.self;\n key && key[this.name];\n } catch (err) {\n return !1;\n }\n return !0;\n };\n CrossDomainSafeWeakMap.prototype.set = function(key, value) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var name = this.name, entry = key[name];\n entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: !0\n });\n return;\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, values = this.values, index = util_safeIndexOf(keys, key);\n if (-1 === index) {\n keys.push(key);\n values.push(value);\n } else values[index] = value;\n };\n CrossDomainSafeWeakMap.prototype.get = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return weakmap.get(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return entry && entry[0] === key ? entry[1] : void 0;\n } catch (err) {}\n this._cleanupClosedWindows();\n var index = util_safeIndexOf(this.keys, key);\n if (-1 !== index) return this.values[index];\n };\n CrossDomainSafeWeakMap.prototype.delete = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, index = util_safeIndexOf(keys, key);\n if (-1 !== index) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n };\n CrossDomainSafeWeakMap.prototype.has = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return !0;\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return !(!entry || entry[0] !== key);\n } catch (err) {}\n this._cleanupClosedWindows();\n return -1 !== util_safeIndexOf(this.keys, key);\n };\n CrossDomainSafeWeakMap.prototype.getOrSet = function(key, getter) {\n if (this.has(key)) return this.get(key);\n var value = getter();\n this.set(key, value);\n return value;\n };\n return CrossDomainSafeWeakMap;\n }(), constants_CONSTANTS = {\n POST_MESSAGE_TYPE: {\n REQUEST: \"postrobot_message_request\",\n RESPONSE: \"postrobot_message_response\",\n ACK: \"postrobot_message_ack\"\n },\n POST_MESSAGE_ACK: {\n SUCCESS: \"success\",\n ERROR: \"error\"\n },\n POST_MESSAGE_NAMES: {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_ready\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n },\n WINDOW_TYPES: {\n FULLPAGE: \"fullpage\",\n POPUP: \"popup\",\n IFRAME: \"iframe\"\n },\n WINDOW_PROPS: {\n POSTROBOT: \"__postRobot__\"\n },\n SERIALIZATION_TYPES: {\n METHOD: \"postrobot_method\",\n ERROR: \"postrobot_error\",\n PROMISE: \"postrobot_promise\",\n ZALGO_PROMISE: \"postrobot_zalgo_promise\",\n REGEX: \"regex\"\n },\n SEND_STRATEGIES: {\n POST_MESSAGE: \"postrobot_post_message\",\n BRIDGE: \"postrobot_bridge\",\n GLOBAL: \"postrobot_global\"\n },\n MOCK_PROTOCOL: \"mock:\",\n FILE_PROTOCOL: \"file:\",\n BRIDGE_NAME_PREFIX: \"__postrobot_bridge__\",\n POSTROBOT_PROXY: \"__postrobot_proxy__\",\n WILDCARD: \"*\"\n }, POST_MESSAGE_NAMES = {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_hello\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n }, CONFIG = (Object.keys(POST_MESSAGE_NAMES).map(function(key) {\n return POST_MESSAGE_NAMES[key];\n }), {\n ALLOW_POSTMESSAGE_POPUP: !(\"__ALLOW_POSTMESSAGE_POPUP__\" in window) || window.__ALLOW_POSTMESSAGE_POPUP__,\n BRIDGE_TIMEOUT: 5e3,\n CHILD_WINDOW_TIMEOUT: 5e3,\n ACK_TIMEOUT: -1 !== window.navigator.userAgent.match(/MSIE/i) ? 1e4 : 2e3,\n RES_TIMEOUT: -1,\n ALLOWED_POST_MESSAGE_METHODS: (_ALLOWED_POST_MESSAGE = {}, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = !0, \n _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.BRIDGE] = !0, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.GLOBAL] = !0, \n _ALLOWED_POST_MESSAGE),\n ALLOW_SAME_ORIGIN: !1\n });\n 0 === window.location.href.indexOf(constants_CONSTANTS.FILE_PROTOCOL) && (CONFIG.ALLOW_POSTMESSAGE_POPUP = !0);\n var _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function stringifyError(err) {\n var level = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\n if (level >= 3) return \"stringifyError stack overflow\";\n try {\n if (!err) return \"\";\n if (\"string\" == typeof err) return err;\n if (err instanceof Error) {\n var stack = err && err.stack, message = err && err.message;\n if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n if (stack) return stack;\n if (message) return message;\n }\n return \"function\" == typeof err.toString ? err.toString() : Object.prototype.toString.call(err);\n } catch (newErr) {\n return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n }\n }\n var once = function(method) {\n if (!method) return method;\n var called = !1;\n return function() {\n if (!called) {\n called = !0;\n return method.apply(this, arguments);\n }\n };\n };\n function lib_util_noop() {}\n function uniqueID() {\n var chars = \"0123456789abcdef\";\n return \"xxxxxxxxxx\".replace(/./g, function() {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n }\n function replaceObject(item, callback) {\n var depth = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\n if (depth >= 100) throw new Error(\"Self-referential object passed, or object contained too many layers\");\n var newobj = void 0;\n if (\"object\" !== (void 0 === item ? \"undefined\" : _typeof(item)) || null === item || Array.isArray(item)) {\n if (!Array.isArray(item)) throw new TypeError(\"Invalid type: \" + (void 0 === item ? \"undefined\" : _typeof(item)));\n newobj = [];\n } else newobj = {};\n !function(item, callback) {\n Array.isArray(item) ? function(item, callback) {\n for (var i = 0; i < item.length; i++) callback(item[i], i);\n }(item, callback) : \"object\" === (void 0 === item ? \"undefined\" : _typeof(item)) && null !== item && function(item, callback) {\n for (var _key in item) item.hasOwnProperty(_key) && callback(item[_key], _key);\n }(item, callback);\n }(item, function(childItem, key) {\n var result = callback(childItem, key);\n void 0 !== result ? newobj[key] = result : \"object\" === (void 0 === childItem ? \"undefined\" : _typeof(childItem)) && null !== childItem ? newobj[key] = replaceObject(childItem, callback, depth + 1) : newobj[key] = childItem;\n });\n return newobj;\n }\n function util_isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n function utils_isPromise(item) {\n try {\n if (!item) return !1;\n if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n var _toString = {}.toString;\n if (_toString) {\n var name = _toString.call(item);\n if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n }\n if (\"function\" == typeof item.then) return !0;\n } catch (err) {\n return !1;\n }\n return !1;\n }\n var dispatchedErrors = [], possiblyUnhandledPromiseHandlers = [], activeCount = 0, flushPromise = void 0;\n function flushActive() {\n if (!activeCount && flushPromise) {\n var promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n }\n function startActive() {\n activeCount += 1;\n }\n function endActive() {\n activeCount -= 1;\n flushActive();\n }\n var promise_ZalgoPromise = function() {\n function ZalgoPromise(handler) {\n var _this = this;\n !function(instance, Constructor) {\n if (!(instance instanceof ZalgoPromise)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.resolved = !1;\n this.rejected = !1;\n this.errorHandled = !1;\n this.handlers = [];\n if (handler) {\n var _result = void 0, _error = void 0, resolved = !1, rejected = !1, isAsync = !1;\n startActive();\n try {\n handler(function(res) {\n if (isAsync) _this.resolve(res); else {\n resolved = !0;\n _result = res;\n }\n }, function(err) {\n if (isAsync) _this.reject(err); else {\n rejected = !0;\n _error = err;\n }\n });\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n endActive();\n isAsync = !0;\n resolved ? this.resolve(_result) : rejected && this.reject(_error);\n }\n }\n ZalgoPromise.prototype.resolve = function(result) {\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n this.resolved = !0;\n this.value = result;\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.reject = function(error) {\n var _this2 = this;\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n if (!error) {\n var _err = error && \"function\" == typeof error.toString ? error.toString() : Object.prototype.toString.call(error);\n error = new Error(\"Expected reject to be called with Error, got \" + _err);\n }\n this.rejected = !0;\n this.error = error;\n this.errorHandled || setTimeout(function() {\n _this2.errorHandled || function(err, promise) {\n if (-1 === dispatchedErrors.indexOf(err)) {\n dispatchedErrors.push(err);\n setTimeout(function() {\n throw err;\n }, 1);\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n }(error, _this2);\n }, 1);\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.asyncReject = function(error) {\n this.errorHandled = !0;\n this.reject(error);\n return this;\n };\n ZalgoPromise.prototype.dispatch = function() {\n var dispatching = this.dispatching, resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n if (!dispatching && (resolved || rejected)) {\n this.dispatching = !0;\n startActive();\n for (var chain = function(firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n secondPromise.resolve(res);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < handlers.length; i++) {\n var _handlers$i = handlers[i], _onSuccess = _handlers$i.onSuccess, _onError = _handlers$i.onError, _promise = _handlers$i.promise, _result2 = void 0;\n if (resolved) try {\n _result2 = _onSuccess ? _onSuccess(this.value) : this.value;\n } catch (err) {\n _promise.reject(err);\n continue;\n } else if (rejected) {\n if (!_onError) {\n _promise.reject(this.error);\n continue;\n }\n try {\n _result2 = _onError(this.error);\n } catch (err) {\n _promise.reject(err);\n continue;\n }\n }\n if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error);\n _result2.errorHandled = !0;\n } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error) : chain(_result2, _promise) : _promise.resolve(_result2);\n }\n handlers.length = 0;\n this.dispatching = !1;\n endActive();\n }\n };\n ZalgoPromise.prototype.then = function(onSuccess, onError) {\n if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n var promise = new ZalgoPromise();\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n this.errorHandled = !0;\n this.dispatch();\n return promise;\n };\n ZalgoPromise.prototype.catch = function(onError) {\n return this.then(void 0, onError);\n };\n ZalgoPromise.prototype.finally = function(onFinally) {\n if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n return this.then(function(result) {\n return ZalgoPromise.try(onFinally).then(function() {\n return result;\n });\n }, function(err) {\n return ZalgoPromise.try(onFinally).then(function() {\n throw err;\n });\n });\n };\n ZalgoPromise.prototype.timeout = function(time, err) {\n var _this3 = this;\n if (this.resolved || this.rejected) return this;\n var timeout = setTimeout(function() {\n _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n }, time);\n return this.then(function(result) {\n clearTimeout(timeout);\n return result;\n });\n };\n ZalgoPromise.prototype.toPromise = function() {\n if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n return Promise.resolve(this);\n };\n ZalgoPromise.resolve = function(value) {\n return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise(function(resolve, reject) {\n return value.then(resolve, reject);\n }) : new ZalgoPromise().resolve(value);\n };\n ZalgoPromise.reject = function(error) {\n return new ZalgoPromise().reject(error);\n };\n ZalgoPromise.asyncReject = function(error) {\n return new ZalgoPromise().asyncReject(error);\n };\n ZalgoPromise.all = function(promises) {\n var promise = new ZalgoPromise(), count = promises.length, results = [];\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n for (var chain = function(i, firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n results[i] = res;\n 0 == (count -= 1) && promise.resolve(results);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < promises.length; i++) {\n var prom = promises[i];\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!utils_isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n 0 === count && promise.resolve(results);\n return promise;\n };\n ZalgoPromise.hash = function(promises) {\n var result = {};\n return ZalgoPromise.all(Object.keys(promises).map(function(key) {\n return ZalgoPromise.resolve(promises[key]).then(function(value) {\n result[key] = value;\n });\n })).then(function() {\n return result;\n });\n };\n ZalgoPromise.map = function(items, method) {\n return ZalgoPromise.all(items.map(method));\n };\n ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n return function(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n return {\n cancel: function() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n }(handler);\n };\n ZalgoPromise.try = function(method, context, args) {\n if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n var result = void 0;\n startActive();\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n endActive();\n return ZalgoPromise.resolve(result);\n };\n ZalgoPromise.delay = function(_delay) {\n return new ZalgoPromise(function(resolve) {\n setTimeout(resolve, _delay);\n });\n };\n ZalgoPromise.isPromise = function(value) {\n return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n };\n ZalgoPromise.flush = function() {\n return function(Zalgo) {\n var promise = flushPromise = flushPromise || new ZalgoPromise();\n flushActive();\n return promise;\n }();\n };\n return ZalgoPromise;\n }(), global = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n global.registerSelf = function() {};\n var serialize__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.methods = global.methods || new weakmap_CrossDomainSafeWeakMap();\n var listenForMethods = once(function() {\n global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n origin: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin, data = _ref.data, methods = global.methods.get(source);\n if (!methods) throw new Error(\"Could not find any methods this window has privileges to call\");\n var meth = methods[data.id];\n if (!meth) throw new Error(\"Could not find method with id: \" + data.id);\n if (!matchDomain(meth.domain, origin)) throw new Error(\"Method domain \" + meth.domain + \" does not match origin \" + origin);\n return promise_ZalgoPromise.try(function() {\n return meth.method.apply({\n source: source,\n origin: origin,\n data: data\n }, data.args);\n }).then(function(result) {\n return {\n result: result,\n id: data.id,\n name: data.name\n };\n });\n });\n });\n function isSerialized(item, type) {\n return \"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item && item.__type__ === type;\n }\n function serializeMethod(destination, domain, method, name) {\n var id = uniqueID(), methods = global.methods.get(destination);\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n methods[id] = {\n domain: domain,\n method: method\n };\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n }\n function deserializeMethod(source, origin, obj) {\n function wrapper() {\n var args = Array.prototype.slice.call(arguments);\n return global.send(source, constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args: args\n }, {\n domain: origin,\n timeout: -1\n }).then(function(_ref2) {\n return _ref2.data.result;\n }, function(err) {\n throw err;\n });\n }\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = !0;\n wrapper.source = source;\n wrapper.origin = origin;\n return wrapper;\n }\n function deserializeZalgoPromise(source, origin, prom) {\n return new promise_ZalgoPromise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n });\n }\n global.readyPromises = global.readyPromises || new weakmap_CrossDomainSafeWeakMap();\n function sayHello(win) {\n return global.send(win, constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, {\n domain: constants_CONSTANTS.WILDCARD,\n timeout: -1\n }).then(function(_ref2) {\n return {\n origin: _ref2.origin\n };\n });\n }\n var SEND_MESSAGE_STRATEGIES = {};\n SEND_MESSAGE_STRATEGIES[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = function(win, serializedMessage, domain) {\n (Array.isArray(domain) ? domain : \"string\" == typeof domain ? [ domain ] : [ constants_CONSTANTS.WILDCARD ]).map(function(dom) {\n if (0 === dom.indexOf(constants_CONSTANTS.MOCK_PROTOCOL)) {\n if (window.location.protocol === constants_CONSTANTS.FILE_PROTOCOL) return constants_CONSTANTS.WILDCARD;\n if (!isActuallySameDomain(win)) throw new Error(\"Attempting to send messsage to mock domain \" + dom + \", but window is actually cross-domain\");\n return getActualDomain(win);\n }\n return 0 === dom.indexOf(constants_CONSTANTS.FILE_PROTOCOL) ? constants_CONSTANTS.WILDCARD : dom;\n }).forEach(function(dom) {\n return win.postMessage(serializedMessage, dom);\n });\n };\n var _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n };\n function sendMessage(win, message, domain) {\n return promise_ZalgoPromise.try(function() {\n var _jsonStringify;\n message = function(win, message) {\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, id = uniqueID(), type = function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getOpener(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.POPUP : function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getParent(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.IFRAME : constants_CONSTANTS.WINDOW_TYPES.FULLPAGE, sourceDomain = utils_getDomain(window);\n return _extends({}, message, options, {\n sourceDomain: sourceDomain,\n id: message.id || id,\n windowType: type\n });\n }(win, message, {\n data: function(destination, domain, obj) {\n return replaceObject({\n obj: message.data\n }, function(item, key) {\n return \"function\" == typeof item ? serializeMethod(destination, domain, item, key.toString()) : item instanceof Error ? (err = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n __code__: err.code\n }) : window.Promise && item instanceof window.Promise ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : promise_ZalgoPromise.isPromise(item) ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : util_isRegex(item) ? (regex = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n }) : void 0;\n var err, regex;\n }).obj;\n }(win, domain),\n domain: domain\n });\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) throw new Error(\"Attemping to send message to self\");\n if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n var messages = [], serializedMessage = function(obj, replacer, indent) {\n var objectToJSON = void 0, arrayToJSON = void 0;\n try {\n if (\"{}\" !== JSON.stringify({})) {\n objectToJSON = Object.prototype.toJSON;\n delete Object.prototype.toJSON;\n }\n if (\"{}\" !== JSON.stringify({})) throw new Error(\"Can not correctly serialize JSON objects\");\n if (\"[]\" !== JSON.stringify([])) {\n arrayToJSON = Array.prototype.toJSON;\n delete Array.prototype.toJSON;\n }\n if (\"[]\" !== JSON.stringify([])) throw new Error(\"Can not correctly serialize JSON objects\");\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n var result = JSON.stringify.call(this, obj, null, 2);\n try {\n objectToJSON && (Object.prototype.toJSON = objectToJSON);\n arrayToJSON && (Array.prototype.toJSON = arrayToJSON);\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n return result;\n }(((_jsonStringify = {})[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = message, \n _jsonStringify));\n return promise_ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), function(strategyName) {\n return promise_ZalgoPromise.try(function() {\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) throw new Error(\"Strategy disallowed: \" + strategyName);\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n }).then(function() {\n messages.push(strategyName + \": success\");\n return !0;\n }, function(err) {\n messages.push(strategyName + \": \" + stringifyError(err) + \"\\n\");\n return !1;\n });\n }).then(function(results) {\n var success = results.some(Boolean), status = message.type + \" \" + message.name + \" \" + (success ? \"success\" : \"error\") + \":\\n - \" + messages.join(\"\\n - \") + \"\\n\";\n if (!success) throw new Error(status);\n });\n });\n }\n global.responseListeners = global.responseListeners || {};\n global.requestListeners = global.requestListeners || {};\n global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new function() {}();\n global.erroredResponseListeners = global.erroredResponseListeners || {};\n var _RECEIVE_MESSAGE_TYPE, __DOMAIN_REGEX__ = \"__domain_regex__\";\n function getResponseListener(hash) {\n return global.responseListeners[hash];\n }\n function deleteResponseListener(hash) {\n delete global.responseListeners[hash];\n }\n function isResponseListenerErrored(hash) {\n return Boolean(global.erroredResponseListeners[hash]);\n }\n function getRequestListener(_ref) {\n var name = _ref.name, win = _ref.win, domain = _ref.domain;\n win === constants_CONSTANTS.WILDCARD && (win = null);\n domain === constants_CONSTANTS.WILDCARD && (domain = null);\n if (!name) throw new Error(\"Name required to get request listener\");\n var nameListeners = global.requestListeners[name];\n if (nameListeners) for (var _i2 = 0, _ref3 = [ win, global.WINDOW_WILDCARD ], _length2 = null == _ref3 ? 0 : _ref3.length; _i2 < _length2; _i2++) {\n var winQualifier = _ref3[_i2], winListeners = winQualifier && nameListeners.get(winQualifier);\n if (winListeners) {\n if (domain && \"string\" == typeof domain) {\n if (winListeners[domain]) return winListeners[domain];\n if (winListeners[__DOMAIN_REGEX__]) for (var _i4 = 0, _winListeners$__DOMAI2 = winListeners[__DOMAIN_REGEX__], _length4 = null == _winListeners$__DOMAI2 ? 0 : _winListeners$__DOMAI2.length; _i4 < _length4; _i4++) {\n var _ref5 = _winListeners$__DOMAI2[_i4], regex = _ref5.regex, listener = _ref5.listener;\n if (matchDomain(regex, domain)) return listener;\n }\n }\n if (winListeners[constants_CONSTANTS.WILDCARD]) return winListeners[constants_CONSTANTS.WILDCARD];\n }\n }\n }\n var types__extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }, RECEIVE_MESSAGE_TYPES = ((_RECEIVE_MESSAGE_TYPE = {})[constants_CONSTANTS.POST_MESSAGE_TYPE.ACK] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message ack for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n options.ack = !0;\n }\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST] = function(source, origin, message) {\n var options = getRequestListener({\n name: message.name,\n win: source,\n domain: origin\n });\n function respond(data) {\n return message.fireAndForget || isWindowClosed(source) ? promise_ZalgoPromise.resolve() : sendMessage(source, types__extends({\n target: message.originalSource,\n hash: message.hash,\n name: message.name\n }, data), origin);\n }\n return promise_ZalgoPromise.all([ respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.ACK\n }), promise_ZalgoPromise.try(function() {\n if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Request origin \" + origin + \" does not match domain \" + options.domain.toString());\n var data = message.data;\n return options.handler({\n source: source,\n origin: origin,\n data: data\n });\n }).then(function(data) {\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data: data\n });\n }, function(err) {\n var error = stringifyError(err).replace(/^Error: /, \"\"), code = err.code;\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error: error,\n code: code\n });\n }) ]).then(lib_util_noop).catch(function(err) {\n if (options && options.handleError) return options.handleError(err);\n throw err;\n });\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var pattern, options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message response for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() : pattern.toString()));\n deleteResponseListener(message.hash);\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n var err = new Error(message.error);\n message.code && (err.code = message.code);\n return options.respond(err, null);\n }\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n var data = message.data || message.response;\n return options.respond(null, {\n source: source,\n origin: origin,\n data: data\n });\n }\n }\n }, _RECEIVE_MESSAGE_TYPE), receive__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.receivedMessages = global.receivedMessages || [];\n function receiveMessage(event) {\n if (window && !window.closed) {\n try {\n if (!event.source) return;\n } catch (err) {\n return;\n }\n var source = event.source, origin = event.origin, message = function(message) {\n var item, parsedMessage = void 0;\n try {\n parsedMessage = (item = message, JSON.parse(item));\n } catch (err) {\n return;\n }\n if (parsedMessage && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && (parsedMessage = parsedMessage[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT]) && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && parsedMessage.type && \"string\" == typeof parsedMessage.type && RECEIVE_MESSAGE_TYPES[parsedMessage.type]) return parsedMessage;\n }(event.data);\n if (message) {\n if (!message.sourceDomain || \"string\" != typeof message.sourceDomain) throw new Error(\"Expected message to have sourceDomain\");\n 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.MOCK_PROTOCOL) && 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.FILE_PROTOCOL) || (origin = message.sourceDomain);\n if (-1 === global.receivedMessages.indexOf(message.id)) {\n global.receivedMessages.push(message.id);\n if (!isWindowClosed(source) || message.fireAndForget) {\n message.data && (message.data = function(source, origin, obj) {\n return replaceObject({\n obj: message.data\n }, function(item) {\n if (\"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item) return isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.METHOD) ? deserializeMethod(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ERROR) ? function(source, origin, obj) {\n var err = new Error(obj.__message__);\n obj.__code__ && (err.code = obj.__code__);\n return err;\n }(0, 0, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE) ? function(source, origin, prom) {\n return window.Promise ? new window.Promise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n }) : deserializeZalgoPromise(source, origin, prom);\n }(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE) ? deserializeZalgoPromise(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.REGEX) ? function(source, origin, item) {\n return new RegExp(item.__source__);\n }(0, 0, item) : void 0;\n }).obj;\n }(source, origin));\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n }\n }\n }\n }\n }\n function messageListener(event) {\n try {\n event.source;\n } catch (err) {\n return;\n }\n receiveMessage({\n source: event.source || event.sourceElement,\n origin: event.origin || event.originalEvent && event.originalEvent.origin,\n data: event.data\n });\n }\n global.receiveMessage = receiveMessage;\n global.requestPromises = global.requestPromises || new weakmap_CrossDomainSafeWeakMap();\n function request(options) {\n return promise_ZalgoPromise.try(function() {\n if (!options.name) throw new Error(\"Expected options.name\");\n var name = options.name, targetWindow = void 0, domain = void 0;\n if (\"string\" == typeof options.window) {\n var el = document.getElementById(options.window);\n if (!el) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be a valid element id\");\n if (\"iframe\" !== el.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (!el.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n targetWindow = el.contentWindow;\n } else if (options.window instanceof HTMLIFrameElement) {\n if (\"iframe\" !== options.window.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (options.window && !options.window.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n options.window && options.window.contentWindow && (targetWindow = options.window.contentWindow);\n } else targetWindow = options.window;\n if (!targetWindow) throw new Error(\"Expected options.window to be a window object, iframe, or iframe element id.\");\n var win = targetWindow;\n domain = options.domain || constants_CONSTANTS.WILDCARD;\n var hash = options.name + \"_\" + uniqueID();\n if (isWindowClosed(win)) throw new Error(\"Target window is closed\");\n var hasResult = !1, requestPromises = global.requestPromises.get(win);\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n var requestPromise = promise_ZalgoPromise.try(function() {\n if (function(parent, child) {\n var actualParent = getAncestor(child);\n if (actualParent) return actualParent === parent;\n if (child === parent) return !1;\n if (function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n try {\n if (win.top) return win.top;\n } catch (err) {}\n if (getParent(win) === win) return win;\n try {\n if (isAncestorParent(window, win) && window.top) return window.top;\n } catch (err) {}\n try {\n if (isAncestorParent(win, window) && window.top) return window.top;\n } catch (err) {}\n for (var _i7 = 0, _getAllChildFrames4 = function getAllChildFrames(win) {\n for (var result = [], _i3 = 0, _getFrames2 = getFrames(win), _length2 = null == _getFrames2 ? 0 : _getFrames2.length; _i3 < _length2; _i3++) {\n var frame = _getFrames2[_i3];\n result.push(frame);\n for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame), _length4 = null == _getAllChildFrames2 ? 0 : _getAllChildFrames2.length; _i5 < _length4; _i5++) {\n var childFrame = _getAllChildFrames2[_i5];\n result.push(childFrame);\n }\n }\n return result;\n }(win), _length6 = null == _getAllChildFrames4 ? 0 : _getAllChildFrames4.length; _i7 < _length6; _i7++) {\n var frame = _getAllChildFrames4[_i7];\n try {\n if (frame.top) return frame.top;\n } catch (err) {}\n if (getParent(frame) === frame) return frame;\n }\n }(child) === child) return !1;\n for (var _i15 = 0, _getFrames8 = getFrames(parent), _length14 = null == _getFrames8 ? 0 : _getFrames8.length; _i15 < _length14; _i15++) if (_getFrames8[_i15] === child) return !0;\n return !1;\n }(window, win)) return function(win) {\n var timeout = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 5e3, name = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : \"Window\", promise = global.readyPromises.get(win);\n if (promise) return promise;\n promise = new promise_ZalgoPromise();\n global.readyPromises.set(win, promise);\n -1 !== timeout && setTimeout(function() {\n return promise.reject(new Error(name + \" did not load after \" + timeout + \"ms\"));\n }, timeout);\n return promise;\n }(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain) && !origin) return sayHello(win);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain)) {\n if (!matchDomain(domain, origin)) throw new Error(\"Remote window domain \" + origin + \" does not match regex: \" + domain.toString());\n domain = origin;\n }\n if (\"string\" != typeof domain && !Array.isArray(domain)) throw new TypeError(\"Expected domain to be a string or array\");\n var actualDomain = domain;\n return new promise_ZalgoPromise(function(resolve, reject) {\n var responseListener = void 0;\n options.fireAndForget || function(hash, listener) {\n global.responseListeners[hash] = listener;\n }(hash, responseListener = {\n name: name,\n window: win,\n domain: actualDomain,\n respond: function(err, result) {\n if (!err) {\n hasResult = !0;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n err ? reject(err) : resolve(result);\n }\n });\n sendMessage(win, {\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash: hash,\n name: name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n if (options.fireAndForget) return resolve();\n var ackTimeout = CONFIG.ACK_TIMEOUT, resTimeout = options.timeout || CONFIG.RES_TIMEOUT, cycleTime = 100;\n setTimeout(function cycle() {\n if (!hasResult) {\n if (isWindowClosed(win)) return responseListener.ack ? reject(new Error(\"Window closed for \" + name + \" before response\")) : reject(new Error(\"Window closed for \" + name + \" before ack\"));\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n -1 !== resTimeout && (resTimeout = Math.max(resTimeout - cycleTime, 0));\n if (responseListener.ack) {\n if (-1 === resTimeout) return;\n cycleTime = Math.min(resTimeout, 2e3);\n } else {\n if (0 === ackTimeout) return reject(new Error(\"No ack for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + CONFIG.ACK_TIMEOUT + \"ms\"));\n if (0 === resTimeout) return reject(new Error(\"No response for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + (options.timeout || CONFIG.RES_TIMEOUT) + \"ms\"));\n }\n setTimeout(cycle, cycleTime);\n }\n }, cycleTime);\n });\n });\n requestPromise.catch(function() {\n !function(hash) {\n global.erroredResponseListeners[hash] = !0;\n }(hash);\n deleteResponseListener(hash);\n });\n requestPromises.push(requestPromise);\n return requestPromise;\n });\n }\n function _send(window, name, data, options) {\n (options = options || {}).window = window;\n options.name = name;\n options.data = data;\n return request(options);\n }\n function sendToParent(name, data, options) {\n var win = getAncestor();\n return win ? _send(win, name, data, options) : new promise_ZalgoPromise(function(resolve, reject) {\n return reject(new Error(\"Window does not have a parent\"));\n });\n }\n function client() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (!options.window) throw new Error(\"Expected options.window\");\n var win = options.window;\n return {\n send: function(name, data) {\n return _send(win, name, data, options);\n }\n };\n }\n global.send = _send;\n var server__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function listen(options) {\n if (!options.name) throw new Error(\"Expected options.name\");\n if (!options.handler) throw new Error(\"Expected options.handler\");\n var name = options.name, win = options.window, domain = options.domain, listenerOptions = {\n handler: options.handler,\n handleError: options.errorHandler || function(err) {\n throw err;\n },\n window: win,\n domain: domain || constants_CONSTANTS.WILDCARD,\n name: name\n }, requestListener = function addRequestListener(_ref6, listener) {\n var name = _ref6.name, win = _ref6.win, domain = _ref6.domain;\n if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n if (Array.isArray(win)) {\n for (var listenersCollection = [], _i6 = 0, _win2 = win, _length6 = null == _win2 ? 0 : _win2.length; _i6 < _length6; _i6++) {\n var item = _win2[_i6];\n listenersCollection.push(addRequestListener({\n name: name,\n domain: domain,\n win: item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i8 = 0, _length8 = null == listenersCollection ? 0 : listenersCollection.length; _i8 < _length8; _i8++) listenersCollection[_i8].cancel();\n }\n };\n }\n if (Array.isArray(domain)) {\n for (var _listenersCollection = [], _i10 = 0, _domain2 = domain, _length10 = null == _domain2 ? 0 : _domain2.length; _i10 < _length10; _i10++) {\n var _item = _domain2[_i10];\n _listenersCollection.push(addRequestListener({\n name: name,\n win: win,\n domain: _item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i12 = 0, _length12 = null == _listenersCollection ? 0 : _listenersCollection.length; _i12 < _length12; _i12++) _listenersCollection[_i12].cancel();\n }\n };\n }\n var existingListener = getRequestListener({\n name: name,\n win: win,\n domain: domain\n });\n win && win !== constants_CONSTANTS.WILDCARD || (win = global.WINDOW_WILDCARD);\n domain = domain || constants_CONSTANTS.WILDCARD;\n if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n var requestListeners = global.requestListeners, nameListeners = requestListeners[name];\n if (!nameListeners) {\n nameListeners = new weakmap_CrossDomainSafeWeakMap();\n requestListeners[name] = nameListeners;\n }\n var winListeners = nameListeners.get(win);\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n var strDomain = domain.toString(), regexListeners = winListeners[__DOMAIN_REGEX__], regexListener = void 0;\n if (util_isRegex(domain)) {\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n regexListener = {\n regex: domain,\n listener: listener\n };\n regexListeners.push(regexListener);\n } else winListeners[strDomain] = listener;\n return {\n cancel: function() {\n if (winListeners) {\n delete winListeners[strDomain];\n win && 0 === Object.keys(winListeners).length && nameListeners.delete(win);\n regexListener && regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n };\n }({\n name: name,\n win: win,\n domain: domain\n }, listenerOptions);\n if (options.once) {\n var _handler = listenerOptions.handler;\n listenerOptions.handler = once(function() {\n requestListener.cancel();\n return _handler.apply(this, arguments);\n });\n }\n if (listenerOptions.window && options.errorOnClose) var interval = function(method, time) {\n var timeout = void 0;\n timeout = setTimeout(function runInterval() {\n timeout = setTimeout(runInterval, 50);\n (function() {\n if (win && \"object\" === (void 0 === win ? \"undefined\" : server__typeof(win)) && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error(\"Post message target window is closed\"));\n }\n }).call();\n }, 50);\n return {\n cancel: function() {\n clearTimeout(timeout);\n }\n };\n }();\n return {\n cancel: function() {\n requestListener.cancel();\n }\n };\n }\n function _on(name, options, handler) {\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n (options = options || {}).name = name;\n options.handler = handler || options.handler;\n return listen(options);\n }\n function server_once(name) {\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, handler = arguments[2];\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n options = options || {};\n handler = handler || options.handler;\n var errorHandler = options.errorHandler, promise = new promise_ZalgoPromise(function(resolve, reject) {\n (options = options || {}).name = name;\n options.once = !0;\n options.handler = function(event) {\n resolve(event);\n if (handler) return handler(event);\n };\n options.errorHandler = function(err) {\n reject(err);\n if (errorHandler) return errorHandler(err);\n };\n }), onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n return promise;\n }\n function server_listener() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return {\n on: function(name, handler) {\n return _on(name, options, handler);\n }\n };\n }\n global.on = _on;\n function disable() {\n delete window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener(\"message\", messageListener);\n }\n var public_parent = getAncestor();\n function cleanUpWindow(win) {\n var requestPromises = global.requestPromises.get(win);\n if (requestPromises) for (var _i2 = 0, _length2 = null == requestPromises ? 0 : requestPromises.length; _i2 < _length2; _i2++) requestPromises[_i2].reject(new Error(\"No response from window - cleaned up\"));\n global.popupWindowsByWin && global.popupWindowsByWin.delete(win);\n global.remoteWindows && global.remoteWindows.delete(win);\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n }\n var bridge = null;\n function init() {\n if (!global.initialized) {\n handler = messageListener, (obj = window).addEventListener ? obj.addEventListener(\"message\", handler) : obj.attachEvent(\"onmessage\", handler);\n !function() {\n handler = function(_ref3) {\n var source = _ref3.source, origin = _ref3.origin, promise = global.readyPromises.get(source) || new promise_ZalgoPromise();\n promise.resolve({\n origin: origin\n });\n global.readyPromises.set(source, promise);\n }, global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {\n domain: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin;\n return handler({\n source: source,\n origin: origin\n });\n });\n var handler, parent = getAncestor();\n parent && sayHello(parent).catch(lib_util_noop);\n }();\n listenForMethods({\n on: _on,\n send: _send\n });\n }\n var obj, handler;\n global.initialized = !0;\n }\n init();\n __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(__webpack_exports__, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(__webpack_exports__, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(__webpack_exports__, \"init\", function() {\n return init;\n });\n __webpack_require__.d(__webpack_exports__, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(__webpack_exports__, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(__webpack_exports__, \"request\", function() {\n return request;\n });\n __webpack_require__.d(__webpack_exports__, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(__webpack_exports__, \"client\", function() {\n return client;\n });\n __webpack_require__.d(__webpack_exports__, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(__webpack_exports__, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(__webpack_exports__, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(__webpack_exports__, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(__webpack_exports__, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(__webpack_exports__, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(__webpack_exports__, \"disable\", function() {\n return disable;\n });\n __webpack_exports__.default = interface_namespaceObject;\n }\n });\n});\n//# sourceMappingURL=post-robot.js.map","/* @flow */\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = require('./dist/post-robot');\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports.default = module.exports;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IAssetSidebarInitData, setAssetDto } from \"./types\";\nimport Asset from './stack/api/asset'\n\n/** Class representing an asset Extension from Contentstack UI. */\n\nclass AssetSidebarWidget {\n /**\n * @hideconstructor\n */\n\n currentAsset: { [key: string]: any };\n _emitter: EventEmitter;\n _connection: any;\n _changedData?: { [key: string]: any };\n\n constructor(\n initializationData: IAssetSidebarInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * Gets the content type of the current asset.\n * @type {Object}\n */\n\n this.currentAsset = initializationData.data.currentAsset;\n\n this._emitter = emitter;\n\n this._connection = connection;\n\n const thisAsset = this;\n\n this._emitter.on(\n \"assetSave\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset.currentAsset = event.data;\n }\n );\n\n this._emitter.on(\n \"assetChange\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset._changedData = event.data;\n }\n );\n\n this.getData = this.getData.bind(this);\n this.setData = this.setData.bind(this);\n this.syncAsset = this.syncAsset.bind(this);\n this.updateWidth = this.updateWidth.bind(this);\n this.onSave = this.onSave.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onPublish = this.onPublish.bind(this);\n this.onUnPublish = this.onUnPublish.bind(this);\n this.replaceAsset = this.replaceAsset.bind(this);\n }\n\n getData() {\n return this.currentAsset;\n }\n\n async setData(asset: Partial): Promise {\n return this._connection.sendToParent(\"setData\", asset);\n }\n\n async syncAsset(): Promise {\n return this._connection.sendToParent(\"syncAsset\");\n }\n\n async updateWidth(width: number): Promise {\n if (typeof width !== \"number\") {\n throw new Error(\"Width must be a number\");\n }\n return this._connection.sendToParent(\"updateAssetSidebarWidth\", width);\n }\n\n async replaceAsset(file: File): Promise {\n const asset = Asset(this._emitter);\n return asset.handleUpload([file], 'replace');\n }\n\n /**\n * This function executes the callback function every time an asset is saved.\n * @param {function} callback The function to be called when an asset is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetSave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an asset is edited/changed.\n */\n\n onChange(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetChange\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an asset has been published with the respective payload.\n * @param {function} callback The function to be called when an asset is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an asset has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an asset is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default AssetSidebarWidget;\n","import {\n IConfigCallback,\n IContainerMetaData,\n IOnFunction,\n IPluginMetaData,\n IRteParam,\n IConfig\n} from \"./types\";\n\nexport class RTEPlugin {\n private pluginMetaData: IPluginMetaData = {\n registry: {\n title: \"\",\n toolbar: {\n inMainToolbar: true,\n inHoveringToolbar: true,\n },\n isContentstackElement: true,\n },\n meta: {\n id: \"\",\n elementType: null,\n editorCallbacks: {},\n isDependent: false,\n },\n };\n private isContainer: boolean = false;\n private containerMetaData: IContainerMetaData = {\n registry: {\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n id: this.pluginMetaData.meta.id,\n dependentPlugins: [],\n },\n };\n\n constructor(id: string, private configCallback: IConfigCallback) {\n this.pluginMetaData.meta.id = id;\n }\n\n addPlugins = (...plugins: RTEPlugin[]) => {\n // convert to dropdown if not already\n if (this.pluginMetaData.meta.isDependent)\n throw Error(\"cannot have another container inside\");\n\n this.isContainer = true;\n\n // clean pluginMetaData\n\n plugins.forEach((plugin) => {\n // make sure that this plugin is not another dropdown\n if (plugin.isContainer) {\n throw Error(\"cannot have another container inside\");\n }\n\n plugin.pluginMetaData.registry.category =\n this.pluginMetaData.meta.id;\n this.containerMetaData.meta.dependentPlugins.push(plugin);\n plugin.pluginMetaData.meta.isDependent = true;\n });\n };\n\n on = (\n type: Type,\n callback: IOnFunction[Type]\n ) => {\n switch (type) {\n case \"beforeChildRender\": {\n this.pluginMetaData.registry.beforeChildrenRender = callback;\n break;\n }\n\n case \"beforeRender\": {\n this.pluginMetaData.registry.beforeElementRender = callback;\n break;\n }\n\n case \"exec\": {\n this.pluginMetaData.registry.handleMouseDown = callback;\n break;\n }\n\n case \"keydown\": {\n this.pluginMetaData.meta.editorCallbacks[\"keydown\"] = callback;\n break;\n }\n\n case \"paste\":\n case \"deleteBackward\":\n case \"deleteForward\":\n case \"insertBreak\":\n case \"normalize\":\n default: {\n this.pluginMetaData.meta.editorCallbacks[type] = callback;\n break;\n }\n }\n };\n\n get = async (rte: IRteParam | void) => {\n const config = await this.configCallback(rte);\n\n Object.entries(config).forEach(\n //@ts-ignore\n ([key, value]: [Key, any]) => {\n switch (key) {\n case \"title\": {\n this.pluginMetaData.registry.title = value;\n break;\n }\n case \"icon\": {\n this.pluginMetaData.registry.iconName = value;\n this.containerMetaData.registry.iconName = value;\n break;\n }\n case \"display\": {\n // make every other options false\n this.pluginMetaData.registry.toolbar = {\n inHoveringToolbar: false,\n inMainToolbar: false,\n };\n\n if (typeof value === \"string\") {\n switch (value) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach((display) => {\n switch (display) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n });\n }\n break;\n }\n\n case \"elementType\": {\n const isInline = (\n typeof value === 'string' && value === 'inline' ||\n Array.isArray(value) && value.includes('inline')\n )\n if(isInline) {\n let dndOptions = this.pluginMetaData['registry']['dndOptions'];\n if(!dndOptions) {\n this.pluginMetaData['registry']['dndOptions'] = {};\n dndOptions = this.pluginMetaData['registry']['dndOptions']\n }\n dndOptions['DisableDND'] = true;\n dndOptions['DisableSelectionHalo'] = true;\n }\n this.pluginMetaData.meta.elementType = value;\n break;\n }\n\n case \"render\": {\n this.pluginMetaData.registry.Component = value;\n break;\n }\n\n case \"shouldOverride\" : {\n this.pluginMetaData.registry.shouldOverride = value\n }\n }\n }\n );\n\n const containerMeta = this.containerMetaData.meta;\n this.containerMetaData = {\n registry: {\n ...this.containerMetaData.registry,\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n ...containerMeta,\n id: this.pluginMetaData.meta.id,\n },\n };\n\n return this.isContainer ? this.containerMetaData : this.pluginMetaData;\n };\n}\n\nexport const rtePluginInitializer = (\n id: string,\n configCallback: IConfigCallback\n) => {\n if (!(id && configCallback)) throw Error('Please provide value \"id\" and \"configCallback\"');\n\n return new RTEPlugin(id, configCallback);\n};\n","import Stack from \"../stack\";\nimport { IInstallationData, ValidationOptions } from \"../types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport { onData, onError } from \"../utils/utils\";\n\nexport declare interface AppConfigAdditionalData {\n currentBranch: string;\n}\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nexport class AppConfig {\n _data: { [key: string]: any };\n _connection: any;\n _emitter: EventEmitter;\n private _additionalData: AppConfigAdditionalData;\n\n constructor(\n data: { [key: string]: any },\n connection: any,\n emitter: EventEmitter,\n additionalData: AppConfigAdditionalData\n ) {\n this._data = data;\n this._connection = connection;\n this._emitter = emitter;\n\n this.setValidity = this.setValidity.bind(this);\n this._additionalData = additionalData;\n }\n\n stack = () => {\n return new Stack(this._data.stack, this._connection, {\n currentBranch: this._additionalData.currentBranch,\n });\n };\n\n setInstallationData = (\n installationData: IInstallationData\n ): Promise<{ [key: string]: any }> => {\n return this._connection\n .sendToParent(\"setInstallationData\", installationData)\n .then(onData)\n .catch(onError);\n };\n\n getInstallationData = (): Promise => {\n return this._connection\n .sendToParent(\"getInstallationData\")\n .then(onData)\n .catch(onError);\n };\n\n /**\n * Set the validation state of the app. If the validation is false, the Contentstack App Config\n * will not allow to save the configuration. The message will be displayed if provided.\n * @param isValid set the validation state of the app\n * @param options additional options to be sent to the parent\n * @returns returns a promise with the data sent from the parent\n */\n async setValidity(\n isValid: boolean,\n options?: ValidationOptions\n ): Promise> {\n if (typeof isValid !== \"boolean\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.isValidTypeBoolean\n )\n );\n }\n\n if (options?.message && typeof options.message !== \"string\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.messageTypeString\n )\n );\n }\n\n return this._connection\n .sendToParent(\"setValidity\", { isValid, options })\n .then(onData)\n .catch(onError);\n }\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\n\nimport Field from \"./field\";\nimport {\n ICurrentContentType,\n IFieldInitData,\n IFieldModifierLocationInitData,\n IRTELocationInitData,\n ISidebarInitData,\n} from \"./types\";\nimport {\n IEntryOptions,\n IGetFieldOptions,\n IOnEntryChangeCallback,\n} from \"./types/entry.types\";\n\n/** Class representing an entry from Contentstack UI. Not available for Dashboard Widget extension. */\n\nclass Entry {\n /**\n * @hideconstructor\n */\n\n content_type: ICurrentContentType;\n _data: { [key: string]: any };\n locale: string;\n _connection: any;\n _emitter: EventEmitter;\n _changedData?: { [key: string]: any };\n _options: IEntryOptions;\n\n constructor(\n initializationData:\n | IFieldInitData\n | ISidebarInitData\n | IRTELocationInitData\n | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter,\n options?: IEntryOptions\n ) {\n /**\n * Gets the content type of the current entry.\n * @type {Object}\n */\n this.content_type = initializationData.data.content_type;\n\n this._data = initializationData.data.entry;\n\n if (initializationData.data.changedData) {\n this._changedData = initializationData.data.changedData;\n }\n\n /**\n * Gets the locale of the current entry.\n * @type {string}\n */\n this.locale = initializationData.data.locale;\n\n this._connection = connection;\n\n this._emitter = emitter;\n\n this._options = options || {};\n\n const thisEntry = this;\n\n this._emitter.on(\n \"entrySave\",\n (event: { data: { [key: string]: any } }) => {\n thisEntry._data = event.data;\n }\n );\n\n this._emitter.on(\n \"entryChange\",\n (event: { data: { [key: string]: any } }) => {\n thisEntry._changedData = event.data;\n }\n );\n }\n\n /**\n * Gets data of the current entry.\n * @return {Object} Returns entry data.\n */\n\n getData() {\n return this._data;\n }\n\n /**\n * Gets the field object for the saved data, which allows you to interact with the field.\n * This object will have all the same methods and properties of extension.field.\n * Note: For fields initialized using the getFields function, the setData function currently works only for the following fields: as single_line, multi_line, RTE, markdown, select, number, boolean, date, link, and extension of data type text, number, boolean, and date.\n * @example\n * var field = entry.getField('field_uid');\n * var fieldSchema = field.schema;\n * var fieldUid = field.uid;\n * var fieldData = field.getData();\n * @param {string} uid Unique ID of the field\n * @param {boolean} options.useUnsavedSchema If set to true, the field will get the unsaved field\n * @return {Object} Field object\n */\n\n getField(uid: string, options?: IGetFieldOptions): Field {\n const { useUnsavedSchema = false } = options || {};\n const { FieldInstance = Field } = this._options._internalFlags || {};\n\n const path = uid.split(\".\");\n let value = useUnsavedSchema\n ? this._changedData || this._data\n : this._data;\n let schema = this.content_type.schema;\n\n const isDataEmpty = Object.keys(value).length === 0;\n\n if (isDataEmpty) {\n throw new Error(\n \"The data is unsaved. Save the data before requesting the field.\"\n );\n }\n\n try {\n let skipNext = false;\n let skipNextTwo = false;\n path.forEach((key: string | number, index: number) => {\n if (skipNext) {\n if (skipNextTwo) {\n skipNextTwo = false;\n } else {\n skipNext = false;\n }\n return;\n }\n\n schema = schema.find((x: { uid: any }) => x.uid === key);\n if (!schema) {\n throw Error(\"schema not found\");\n }\n\n value = value[key];\n\n if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === false &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n } else if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === true &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n value = value[path[index + 1]];\n skipNext = true;\n } else if (\n schema.data_type === \"blocks\" &&\n path.length !== index + 1\n ) {\n const blockId = Object.keys(value[path[index + 1]])[0];\n schema = schema.blocks.find(\n (block: { uid: string }) => block.uid === blockId\n );\n if (path.length === index + 2) {\n // complete block value with uid\n value = value[path[index + 1]];\n } else {\n // block value without uid\n value = value[path[index + 1]][blockId];\n schema = schema.schema;\n }\n\n skipNext = true;\n skipNextTwo = true;\n }\n });\n } catch (e) {\n throw Error(\"Invalid uid, Field not found\");\n }\n const fieldIntilaizationDataObject = {\n data: {\n uid,\n value,\n schema,\n data_type: schema.data_type,\n },\n };\n\n //@ts-ignore\n const fieldObject = new FieldInstance(\n fieldIntilaizationDataObject,\n this._connection,\n this._emitter\n );\n delete fieldObject.onChange;\n return fieldObject;\n }\n\n /**\n * This function executes the callback function every time an entry is saved.\n * @param {function} callback The function to be called when an entry is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entrySave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an entry is edited/changed.\n */\n\n onChange(callback: IOnEntryChangeCallback) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\n \"entryChange\",\n (event: { data: any; resolvedData: Record }) => {\n callback(event.data, event.resolvedData);\n }\n );\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an entry has been published with the respective payload.\n * @param {function} callback The function to be called when an entry is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an entry has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an entry is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default Entry;\n","import postRobot from \"post-robot\";\nimport EventEmitter from \"wolfy87-eventemitter\";\n\nimport AssetSidebarWidget from \"./AssetSidebarWidget\";\nimport { IRTELocation, IRTEPluginInitializer } from \"./RTE/types\";\nimport { AppConfig } from \"./appConfig\";\nimport Entry from \"./entry\";\nimport Field from \"./field\";\nimport FieldModifierLocationEntry from \"./fieldModifierLocation/entry\";\nimport FieldModifierLocationField from \"./fieldModifierLocation/field\";\nimport FieldModifierLocationFrame from \"./fieldModifierLocation/frame\";\nimport Metadata from \"./metadata\";\nimport Modal from \"./modal\";\nimport Stack from \"./stack\";\nimport Store from \"./store\";\nimport {\n IAppConfigInitData,\n IAppConfigWidget,\n IAssetSidebarInitData,\n ICustomField,\n IDashboardInitData,\n IDashboardWidget,\n IEntryFieldLocation,\n IEntryFieldLocationInitData,\n IFieldInitData,\n IFieldModifierLocation,\n IFieldModifierLocationInitData,\n IFullPageLocation,\n IFullPageLocationInitData,\n ILocation,\n IPageWidget,\n IRTEInitData,\n IRTELocationInitData,\n ISidebarInitData,\n ISidebarWidget,\n IUser,\n Manifest,\n Region,\n} from \"./types\";\nimport { AnyObject } from \"./types/common.types\";\nimport { formatAppRegion, onData, onError } from \"./utils/utils\";\nimport Window from \"./window\";\n\nconst emitter = new EventEmitter();\n\n/** Class representing an extension from Contentstack App Framework SDK. */\n\nclass Extension {\n /**\n * @hideconstructor\n */\n\n appUID: string;\n installationUID: string;\n currentUser: IUser;\n private type: ILocation;\n private config: AnyObject;\n postRobot: any;\n stack: Stack;\n store: Store;\n metadata: Metadata;\n locationUID: string;\n modal: Modal;\n readonly region: Region;\n version: number | null;\n\n location: {\n DashboardWidget: IDashboardWidget | null;\n SidebarWidget: ISidebarWidget | null;\n CustomField: ICustomField | null;\n RTEPlugin: IRTEPluginInitializer | null;\n RTELocation: IRTELocation | null;\n AppConfigWidget: IAppConfigWidget | null;\n FullscreenAppWidget: IPageWidget | null;\n AssetSidebarWidget: AssetSidebarWidget | null;\n EntryFieldLocation: IEntryFieldLocation | null;\n FullPage: IFullPageLocation | null;\n FieldModifierLocation: IFieldModifierLocation | null;\n };\n\n constructor(\n initData:\n | IRTEInitData\n | IDashboardInitData\n | IFieldInitData\n | ISidebarInitData\n | IAppConfigInitData\n | IAssetSidebarInitData\n | IFullPageLocationInitData\n | IEntryFieldLocationInitData\n | IFieldModifierLocationInitData\n ) {\n const initializationData = initData;\n\n this.postRobot = postRobot;\n\n /**\n * This value represents the current App's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.appUID = initializationData.data.app_id;\n\n /**\n * This value represents the current location's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.locationUID = initializationData.data.extension_uid;\n\n /**\n * This object holds details of the app initialization user.\n * @type {Object}\n */\n this.installationUID = initializationData.data.installation_uid;\n /**\n * This object holds details of the current user.\n * @type {Object}\n */\n this.currentUser = initializationData.data.user;\n\n /**\n * location of extension, \"RTE\" | \"FIELD\" | \"DASHBOARD\" | \"WIDGET\" | \"APP_CONFIG_WIDGET\" | \"FULL_SCREEN_WIDGET\".\n * @type {string}\n */\n this.type = initializationData.data.type;\n\n /**\n * Store to persist data for extension.\n * Note: Data is stored in the browser {@link external:localStorage} and will be lost if the {@link external:localStorage} is cleared in the browser.\n * @type {Store}\n */\n this.store = new Store(postRobot);\n\n /**\n * This method returns stack object which allows users to read and manipulate a range of objects in a stack.\n * @type {Stack}\n */\n this.stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n this.metadata = new Metadata(postRobot);\n\n this.config = initializationData.data.config ?? {};\n\n this.location = {\n DashboardWidget: null,\n CustomField: null,\n SidebarWidget: null,\n RTEPlugin: null,\n RTELocation: null,\n AppConfigWidget: null,\n FullscreenAppWidget: null,\n AssetSidebarWidget: null,\n FullPage: null,\n EntryFieldLocation: null,\n FieldModifierLocation: null,\n };\n\n window[\"postRobot\"] = postRobot;\n\n this.modal = new Modal();\n\n this.region = formatAppRegion(initializationData.data.region);\n\n this.version = initializationData.data.manifest?.version || null;\n\n const stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n\n switch (initializationData.data.type) {\n case \"DASHBOARD\": {\n this.location.DashboardWidget = {\n frame: new Window(\n postRobot,\n this.type as \"DASHBOARD\",\n emitter,\n initializationData.data.dashboard_width\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n case \"WIDGET\": {\n this.location.SidebarWidget = {\n entry: new Entry(\n initializationData as ISidebarInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"APP_CONFIG_WIDGET\": {\n this.location.AppConfigWidget = {\n installation: new AppConfig(\n initializationData,\n postRobot,\n emitter,\n {\n currentBranch:\n initializationData.data.currentBranch,\n }\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"ASSET_SIDEBAR_WIDGET\": {\n this.location.AssetSidebarWidget = new AssetSidebarWidget(\n initializationData as IAssetSidebarInitData,\n postRobot,\n emitter\n );\n\n break;\n }\n\n case \"RTE\": {\n import(\"./RTE\").then(({ rtePluginInitializer }) => {\n this.location.RTEPlugin = rtePluginInitializer;\n this.location.RTELocation = {\n entry: new Entry(\n initializationData as IRTELocationInitData,\n postRobot,\n emitter\n ),\n }\n });\n break;\n }\n\n case \"FIELD_MODIFIER_LOCATION\":\n case \"ENTRY_FIELD_LOCATION\": {\n initializationData.data.self = true;\n this.location.FieldModifierLocation = {\n entry: new FieldModifierLocationEntry(\n initializationData as IFieldModifierLocationInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n field: new FieldModifierLocationField(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n frame: new FieldModifierLocationFrame(postRobot, emitter),\n };\n break;\n }\n\n case \"FULL_PAGE_LOCATION\": {\n this.location.FullPage = {\n stack: stack,\n };\n break;\n }\n\n case \"FIELD\":\n default: {\n initializationData.data.self = true;\n this.location.CustomField = {\n field: new Field(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n fieldConfig: initializationData.data.field_config,\n entry: new Entry(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n frame: new Window(postRobot, this.type as \"FIELD\", emitter),\n };\n\n break;\n }\n }\n\n try {\n //@ts-ignore\n postRobot.on(\"extensionEvent\", (event) => {\n if (event.data.name === \"entrySave\") {\n emitter.emitEvent(\"entrySave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryChange\") {\n emitter.emitEvent(\"entryChange\", [\n {\n data: event.data.data,\n resolvedData: event.data.otherData.resolvedData,\n },\n ]);\n }\n\n if (event.data.name === \"entryPublish\") {\n emitter.emitEvent(\"entryPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryUnPublish\") {\n emitter.emitEvent(\"entryUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetSave\") {\n emitter.emitEvent(\"assetSave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetChange\") {\n emitter.emitEvent(\"assetChange\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetPublish\") {\n emitter.emitEvent(\"assetPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetUnPublish\") {\n emitter.emitEvent(\"assetUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"dashboardResize\") {\n emitter.emitEvent(\"dashboardResize\", [\n { state: event.data.state },\n ]);\n }\n\n if (event.data.name === \"extensionFieldChange\") {\n emitter.emitEvent(\"extensionFieldChange\", [\n { data: event.data.data },\n ]);\n }\n });\n } catch (err) {\n console.error(\"extension Event\", err);\n }\n }\n\n pulse = (eventName: string, metadata: { [key: string]: any }) => {\n this.postRobot.sendToParent(\"analytics\", { eventName, metadata });\n };\n\n getConfig = (): Promise<{ [key: string]: any }> => {\n if (!this.installationUID) {\n return Promise.resolve(this.config);\n }\n return this.postRobot\n .sendToParent(\"getConfig\")\n .then(onData)\n .catch(onError);\n };\n\n getCurrentLocation = () => {\n return this.type;\n };\n\n /**\n * Conditionally retrieves and returns the app version if not present already\n * @returns version of the app currently running.\n */\n getAppVersion = async (): Promise => {\n if (this.version) {\n return Promise.resolve(this.version);\n }\n if (!this.installationUID) {\n return Promise.resolve(null);\n }\n const orgUid = this.stack._data.org_uid;\n const options = {\n uid: this.installationUID,\n action: \"getAppManifest\",\n headers: { organization_uid: orgUid },\n skip_api_key: true,\n };\n const app: Manifest = await this.postRobot\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n this.version = app.version;\n return this.version;\n };\n\n getCurrentRegion = () => {\n return this.region;\n };\n\n static initialize(version: string) {\n const meta = {\n sdkType: \"app-sdk\",\n };\n //@ts-ignore\n return postRobot.sendToParent(\"init\", { version, meta });\n }\n\n setReady() {\n return this.postRobot.sendToParent(\"ready\");\n }\n}\n\nexport default Extension;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"./types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(field: Field, value: { [key: string]: any }) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass Field {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n\n setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false } = {}) {\n return resolved ? this._resolvedData : this._data;\n }\n\n /**\n * Sets the focus for a field when an extension is being used. This method shows user presence and highlights the extension field that the user is currently accessing in Contentstack UI.\n * @return {Object} A promise object which is resolved when Contentstack UI returns an acknowledgement of the focused state.\n */\n setFocus() {\n return this._connection.sendToParent(\"focus\");\n }\n\n /**\n * This function is called when another extension programmatically changes data of this field using field.setData() function, only available for extension field, only support extensions of data type text, number, boolean or date.\n * @param {function} callback The function to be called when an entry is published.\n */\n onChange?(callback: (data: any) => any) {\n const fieldObj = this;\n if (callback && typeof callback === \"function\") {\n fieldObj._emitter.on(\"extensionFieldChange\", (event: any) => {\n this._data = event.data;\n this._resolvedData = event.data;\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\n\nexport default Field;\n","import Entry from \"../entry\";\nimport { IFieldModifierLocationInitData } from \"../types\";\nimport { IGetTagsOptions } from \"../types/entry.types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport Field from \"./field\";\n\nclass FieldModifierLocationEntry extends Entry {\n constructor(\n initializationData: IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n super(initializationData, connection, emitter, {\n _internalFlags: {\n FieldInstance: Field as any,\n },\n });\n }\n\n /**\n * Returns the value of the tags associated with the entry.\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n getTags(options?: IGetTagsOptions): Array {\n const { useUnsavedSchema = false } = options || {};\n\n if (useUnsavedSchema) {\n return this._changedData?.tags || this._data.tags;\n } else {\n return this._data.tags;\n }\n }\n\n /**\n * Sets the tags on the entry.\n * @param tags tags to be set on the entry\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n async setTags(tags: Array): Promise> {\n /**\n * Validate if the tags are array of strings\n * @param {Array} tags\n * @returns {boolean} Returns true if the tags are array of strings\n */\n function areTagsValid(tags: Array): tags is Array {\n return (\n Array.isArray(tags) &&\n tags.every((tag) => typeof tag === \"string\")\n );\n }\n\n if (tags === undefined) {\n throw new Error(generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldNotBeBlank));\n }\n\n if (!areTagsValid(tags)) {\n throw new Error(\n generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldBeArrayOfStrings)\n );\n }\n\n await this._connection.sendToParent(\"setTags\", { tags });\n\n if (!this._changedData) {\n this._changedData = {};\n }\n\n this._changedData.tags = tags;\n\n return tags;\n }\n}\n\nexport default FieldModifierLocationEntry;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"../types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(\n field: FieldModifierLocationField,\n value: { [key: string]: any }\n) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass FieldModifierLocationField {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n async setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false }: { resolved?: boolean } = {}): any {\n return resolved ? this._resolvedData : this._data;\n }\n}\n\nexport default FieldModifierLocationField;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\nimport { ERROR_MESSAGES } from \"../utils/errorMessages\";\n\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass FieldModifierLocationFrame {\n /**\n * @hideconstructor\n */\n\n _connection: any;\n _autoResizingEnabled = false;\n _emitter: EventEmitter;\n _height?: number;\n _width?: number;\n\n private observer: MutationObserver | undefined;\n\n constructor(connection: any, emitter: EventEmitter) {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._emitter = emitter;\n\n this.updateDimension = this.updateDimension.bind(this);\n this.enableAutoResizing = this.enableAutoResizing.bind(this);\n this.disableAutoResizing = this.disableAutoResizing.bind(this);\n this.closeModal = this.closeModal.bind(this);\n\n /**\n * The auto resizing should be enabled by default.\n */\n this.enableAutoResizing();\n }\n\n /**\n * This method updates the extension height and width on Contentstack UI.\n * If the value is not passed, it will update the height and width of the\n * extension with the current height and width of the extension.\n * @param {string|number} height Desired height of the iframe window\n */\n async updateDimension(dimension?: { height?: number; width?: number }) {\n const { height, width } = dimension || {};\n\n if (height === undefined && width === undefined) {\n this._height = Math.ceil(\n document.documentElement.getBoundingClientRect().height\n );\n\n this._width = Math.ceil(\n document.documentElement.getBoundingClientRect().width\n );\n\n await this._connection.sendToParent(\"resize\", {\n height: this._height,\n width: this._width,\n });\n return;\n }\n\n const dimensionBody = {};\n\n if (height !== undefined && typeof height !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionHeightShouldBeNumber\n );\n }\n\n if (this._height !== height) {\n this._height = height;\n dimensionBody[\"height\"] = this._height;\n }\n\n if (width !== undefined && typeof width !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionWidthShouldBeNumber\n );\n }\n\n if (this._width !== width) {\n this._width = width;\n dimensionBody[\"width\"] = this._width;\n }\n\n if (Object.keys(dimensionBody).length !== 0) {\n await this._connection.sendToParent(\"resize\", dimensionBody);\n }\n }\n\n /**\n * Prevent user from accidently closing the app by clicking outside the frame\n * if the app is performing some active task.\n */\n async preventFrameClose(state: boolean) {\n await this._connection.sendToParent(\"preventFrameClose\", {\n state,\n });\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n enableAutoResizing(): FieldModifierLocationFrame {\n if (this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = true;\n\n this.observer = new MutationObserver(\n async () => await this.updateDimension()\n );\n\n const mutationObserverConfig = {\n attributes: true,\n childList: true,\n subtree: true,\n };\n\n this.observer.observe(window.document.body, mutationObserverConfig);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n disableAutoResizing(): FieldModifierLocationFrame {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n this.observer?.disconnect();\n return this;\n }\n\n /**\n * It closes the app modal.\n * @returns {Promise}\n */\n async closeModal(): Promise {\n return await this._connection.sendToParent(\"closeModal\");\n }\n}\n\nexport default FieldModifierLocationFrame;\n","import Extension from './extension';\nimport postRobot from 'post-robot';\nimport { version } from '../package.json';\nimport { IDashboardInitData, IFieldInitData, ISidebarInitData } from './types.js';\n\n//@ts-ignore\npostRobot.CONFIG.LOG_LEVEL = 'error';\n\n/** Class to initialize the plugin on Contentstack UI. */\n/**\n * @hideconstructor\n */\n\nclass ContentstackAppSDK {\n /**\n * You need to first include Contentstack UI Extensions SDK and\n * Contentstack UI Stylesheet in you HTML file and then call\n * ContentstackUIExtension.init in the script tag.\n * @example\n * HTML\n * \n * \n * @example Custom Filed\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var value = extension.field.getData()\n * extension.field.setData(\"New Field Data\")\n * })\n * @example Custom Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var entry = extension.entry.getData()\n * })\n * @example Dashboard Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var stack = extension.stack;\n * var stackData = stack.getData();\n * })\n * @return {external:Promise} A promise object which will be resolved with an instance of the {@link Extension} class which is instantiated using the data received from the Contentstack UI.\n */\n\n static _extension: Extension\n\n static init(): Promise {\n if (this._extension) { return Promise.resolve(this._extension); }\n return Extension.initialize(version).then((initializationData: ISidebarInitData | IDashboardInitData | IFieldInitData) => {\n this._extension = new Extension(initializationData);\n return Promise.resolve(this._extension);\n }).catch((e: Error) => Promise.reject(e));\n }\n\n\n /**\n * Version of Contentstack UI extension.\n * @type {string}\n */\n static get SDK_VERSION() {\n return version;\n }\n}\n\nexport default ContentstackAppSDK;\nmodule.exports = ContentstackAppSDK\n","import { AnyObject } from \"./types/common.types\";\n\nexport declare interface IMetadata {\n uid: string;\n type: \"asset\" | \"entry\";\n _content_type_uid?: string;\n locale?: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataCreateDto\n extends Omit, \"uid\"> {\n entity_uid: string;\n}\n\nexport declare interface IMetadataUpdateDto {\n uid: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataRetrieveDto {\n uid: string;\n}\n\nexport declare interface IMetadataDeleteDto {\n uid: string;\n}\n\nconst metadataTypes = {\n creteMetadata: \"createMetadata\",\n retrieveMetadata: \"getMetadata\",\n retrieveAllMetadata: \"getAllMetadata\",\n updateMetadata: \"updateMetadata\",\n deleteMetadata: \"deleteMetadata\",\n} as const;\n\nclass Metadata {\n constructor(private _connection: any) {}\n\n createMetaData(metadataConfig: IMetadataCreateDto) {\n const { entity_uid, type = \"asset\", ...otherMetaData } = metadataConfig;\n\n const data = {\n action: metadataTypes.creteMetadata,\n payload: {\n metadata: {\n entity_uid,\n type,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveMetaData(metadataConfig: IMetadataRetrieveDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.retrieveMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveAllMetaData(params: AnyObject = {}) {\n const data = {\n action: metadataTypes.retrieveAllMetadata,\n params,\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n updateMetaData(metadataConfig: IMetadataUpdateDto) {\n const { uid, ...otherMetaData } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.updateMetadata,\n payload: {\n metadata: {\n uid,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n deleteMetaData(metadataConfig: IMetadataDeleteDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.deleteMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n}\nexport default Metadata;\n","import { getPreferredBodyElement } from \"./utils/utils\";\n\nclass Modal {\n constructor() {\n if (!Object.prototype.hasOwnProperty.call(window, \"iframeRef\")) {\n const rootElement = getPreferredBodyElement(\n document?.body?.children\n );\n window[\"iframeRef\"] = rootElement;\n }\n }\n\n setBackgroundElement(element: HTMLElement) {\n window[\"iframeRef\"] = element;\n }\n}\n\nexport default Modal;\n","\nimport Base from '../base';\nimport { getReferences, language, environment } from '../../utils';\nimport postRobot from 'post-robot';\nimport { IAnyObject } from '../../../RTE/types';\n\nlet connection: any = {};\n\n/**\n * @summary Creates an instance of `Asset`.\n * @description An initializer is responsible for creating an Asset object.\n * @param {String} uid - uid of the asset\n * @example\n * let Asset = extension.stack.Asset('bltsomething123');\n * @returns {Asset}\n * @ignore\n */\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nclass Asset extends Base {\n getReferences: any\n environment: any\n constructor(uid) {\n super(uid);\n this.getReferences = getReferences;\n this.environment = environment;\n return this;\n }\n\n /**\n * @function\n * @name Stack#Asset.Query\n * @description This static method instantiates the query module for assets. To see the list of methods that can be used for querying assets, refer the {@link Query} module.\n * @example\n * let assetQuery = extension.stack.Asset.Query();\n * assetQuery.where(\"title\": \"main.js\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment\n });\n return entryQuery;\n }\n\n static module(plural = false) {\n return plural ? 'Assets' : 'Asset';\n }\n\n static get connection() {\n return connection;\n }\n\n /**\n * @function\n * @name Stack#Asset.getRteAssets\n * @description This static method retrieves comprehensive information on all assets uploaded through the Rich Text Editor field.\n * @return {external:Promise}\n */\n\n static getRteAssets() {\n return this.connection.sendToParent('stackQuery', { action: 'getRteAssets' }).then(onData).catch(onError);\n }\n\n /**\n * @function\n * @name Stack#Asset.getAssetsOfSpecificTypes\n * @description This static method retrieves assets that are either image or video files, based on the request query.\n * @param {String} assetType Type of asset to be received for e.g., ‘image/png’\n * @return {external:Promise}\n */\n static getAssetsOfSpecificTypes(assetType) {\n if (!assetType || typeof assetType !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.connection.sendToParent('stackQuery', { action: 'getAssetsOfSpecificTypes', asset_type: assetType }).then(onData).catch(onError);\n }\n\n\n /**\n * @name Stack#Asset#only\n * @function\n * @description This method is used to show the selected fields of the assets in the result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('title').fetch();\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @name Stack#Asset#except\n * @function\n * @description This method is used to hide the selected fields of the assets in result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('title').fetch();\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('BASE','title').fetch();\n * @example\n * .Except with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @function\n * @name Stack#Asset#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.Asset('bltsomething123').environment('development').fetch()\n * @returns {Stack#Asset}\n */\n\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addParam\n @function\n @example extension.stack.Asset('uid').addParam('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addQuery\n @function\n @example extension.stack.Asset('uid').addQuery('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n\n /**\n This method will fetch the details of the entries and the assets in which the specified asset is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-asset|\n Asset References}\n @name Stack#Asset#getReferences\n @function\n @example extension.stack.Asset('uid').getReferences().then().catch();\n @return {external:Promise}\n */\n\n /**\n This method deletes an existing asset.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-asset|\n Delete Asset}\n @name Stack#Asset#delete\n @function\n @example extension.stack.Asset('uid').delete().then().catch();\n @return {external:Promise}\n */\n\n\n /**\n * @name Stack#Asset#publish\n * @function\n * @description This method allows you to publish the asset either immediately or schedule the publish for a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .publish(\n {\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n publish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('publishAsset', payload);\n }\n\n /**\n * @function\n * @name Stack#Asset#unpublish\n * @description This method will instantly unpublish the asset, and also give you the provision to automatically unpublish the asset at a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .unpublish({\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n unpublish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('unpublishAsset', payload);\n }\n\n static async handleUpload(_files, type, options?: {parentFolderUid?: string, customUploadHandler?: IAnyObject}) {\n if (!_files || !_files.length) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n const files: File[] = [];\n Array.from(_files).forEach(_ => {\n // @ts-ignore\n const file = new File([_], _.name, { type: _.type });\n files.push(file);\n })\n const uid = new Date().getUTCMilliseconds();\n return (async function() {\n try {\n const uploadReadyListener = postRobot.on(\n `uploadReady_${uid}`,\n function () {\n window.parent.postMessage(\n {\n type: `upload_${uid}`,\n upload_type: type,\n files,\n parentFolderUid: options?.parentFolderUid,\n customUploadHandler: options?.customUploadHandler\n },\n \"*\"\n );\n\n uploadReadyListener.cancel();\n return Promise.resolve({});\n }\n );\n //@ts-ignore\n await postRobot.sendToParent(\"stackOptionsQuery\", {\n action: `upload_${uid}`,\n uid,\n });\n //@ts-ignore\n return postRobot.sendToParent(`upload_${uid}`, {});\n } catch(err) {\n return Promise.reject(err);\n }\n })();\n }\n\n static uploadAsset(files, options?: {parentFolderUid?: string}) {\n return Asset.handleUpload(files, 'upload', options);\n }\n}\n\nexport default (uiConnection) => {\n connection = uiConnection;\n return new Proxy(Asset, {\n apply(Target, thisArg, argumentsList) {\n //@ts-ignore\n return new Target(...argumentsList);\n }\n });\n};\n","//@ts-nocheck\n\nimport Query from './query';\nimport { transform, addParam } from '../utils';\n\n\nfunction onData(data: { data: any; }) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error: any) {\n return Promise.reject(error);\n}\n/**\n * This is Base class, it holds all the methods required for Modle instance,\n * eg ContentType('uid').delete() or Asset('uid').update({...})\n * @ignore\n */\nexport default class Base {\n\n\n uid: string\n _query: { [key: string]: any }\n only: any\n except: any\n addParam: any\n\n static connection: any\n static contentTypeUid: string\n\n constructor(uid: string) {\n if (!uid) { throw new Error('uid is required'); }\n this.uid = uid;\n this._query = {};\n this.only = transform('only');\n this.except = transform('except');\n this.addParam = addParam;\n }\n\n static Query() {\n //@ts-ignore\n return new Query(this.connection, this.module(true), this.contentTypeUid);\n }\n\n\n static create(payload: { [key: string]: any }) {\n const options = { payload, content_type_uid: this.contentTypeUid, action: `create${this.module()}` };\n return this.connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n update(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch(`update${this.constructor.module()}`, payload);\n }\n\n delete() {\n return this.fetch(`delete${this.constructor.module()}`);\n }\n\n fetch(action: string, payload?: { [key: string]: any }) {\n const options = {\n payload,\n content_type_uid: this.constructor.contentTypeUid,\n uid: this.uid,\n params: this._query,\n action: action || `get${this.constructor.module()}`\n };\n\n if (!payload) { delete options.payload; }\n if (!this.constructor.contentTypeUid) { delete options.content_type_uid; }\n return this.constructor.connection.sendToParent('stackQuery', options)\n .then(onData).catch(onError);\n }\n}\n","import Base from '../base';\nimport { getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference } from '../../utils';\n\nlet connection = {};\nlet contentTypeUid = '';\n\n\nclass Entry extends Base {\n constructor(uid: string) {\n super(uid);\n this._query = {};\n return this;\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry.Query\n * @description This static method instantiates the query module for entries. To see the list of methods that can be used for querying entries, refer the {@link Query} module.\n * @example\n * let entryQuery = extension.stack.ContentType('content_type_uid').Entry.Query();\n * entryQuery.where(\"field_uid\": \"10\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryQuery;\n }\n\n static get connection() {\n return connection;\n }\n\n static get contentTypeUid() {\n return contentTypeUid;\n }\n\n static module(plural = false) {\n return plural ? 'Entries' : 'Entry';\n }\n /**\n This method creates a new entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#create-a-an-entry|\n Create Entry}\n @name Stack#ContentType#Entry.create\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.create({\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n @param {Object} payload Data to create an entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @name Stack#ContentType#Entry#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('title').fetch();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @name Stack#ContentType#Entry#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('title').fetch();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('BASE','title').fetch();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * This method includes a query parameter in your query.\n * @name Stack#ContentType#Entry#addParam\n * @function\n * @example extension.stack.ContentType('content_type_uid').Entry('uid').addParam('include_count', 'true').fetch().then().catch();\n * @param {string} key - Key of the parameter\n * @param {string} value - Value of the parameter\n * @return {Stack#ContentType#Entry} Returns\n */\n\n\n /**\n This method will fetch all the entries in which the current entry is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-an-entry|\n Entry References}\n @name Stack#ContentType#Entry#getReferences\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').getReferences().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n @example extension.stack.ContentType('content_type_uid').Entry('uid').update({\"entry\" : {...}}).then().catch();\n @param {Object} payload Data to be update exsisting entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method deletes an existing entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-entry|\n Delete Entry}\n @name Stack#ContentType#Entry#delete\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').delete().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method fetches information of a specific entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-an-entry|\n Get A Single Entry}\n @name Stack#ContentType#Entry#fetch\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').fetch().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeReference\n * @description This method is used to include referenced entries from other content types.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference(['category', 'author']).fetch()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference('category', 'author').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#language\n * @description This method is used to set the language code of which you want to retrieve the data.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').language('en-us').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').environment('development').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#addQuery\n * @description This method is used to add a query to an entry object.\n * @param {String} key - Key of the query\n * @param {String} value - Value of the query\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').addQuery('include_schema',true).fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeSchema().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies).\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeContentType().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeOwner().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#getLanguages\n * @description This method returns the details of all the languages that an entry is localized in.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').getLanguages()\n * @return {external:Promise}\n */\n getLanguages() {\n return this.fetch('getEntryLanguages');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unlocalize\n * @description This method is used to unlocalize an entry\n * @param {string} locale Locale in which the entry has to be unlocalized\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unlocalize('fr-fr').then(...).catch(...);\n * @return {external:Promise}\n */\n unlocalize(locale: string) {\n if (!locale || typeof locale !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('unlocalizeEntry');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#publish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').publish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n publish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('publishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unpublish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unpublish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n unpublish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('unpublishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#setWorkflowStage\n * @description This method allows you to either set a particular workflow stage or update the workflow stage details of an entry.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').setWorkflowStage({\n \"workflow\": {\n \"workflow_stage\": {\n \"comment\": \"Test Comment\",\n \"due_date\": \"Thu Dec 01 2018\",\n \"notify\": false,\n \"uid\": \"blt9f52a2cd5e0014fb\",\n \"assigned_to\": [{\n \"uid\": \"blt296a22e28cc0c63c\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@contentstack.com\"\n }],\n \"assigned_by_roles\": [{\n \"uid\": \"blt5b74c24c7ae25d94\",\n \"name\": \"Content Manager\"\n }]\n }\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n setWorkflowStage(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('setWorkflowStageEntry', payload);\n }\n\n /**\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#update-an-entry| Update Entry}\n * @name Stack#ContentType#Entry#update\n * @function\n * @description This call allows you to update entry content.\n * @param {object} payload - Payload for the request\n * @param {string} [locale] - Passing the ‘locale’ parameter will localize the entry in the specified locale\n * to be localized in the specified locale.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').update(\n {\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n //@ts-ignore\n update(payload: { [key: string]: any }, locale: string) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('updateEntry', payload);\n }\n}\n\nexport default (uiConnection: any, contentType: string) => {\n connection = uiConnection;\n contentTypeUid = contentType;\n return new Proxy(Entry, {\n apply(Target: any, thisArg, argumentsList: any[]) {\n const entryTarget = new Target(...argumentsList);\n Object.assign(entryTarget, {\n getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryTarget;\n }\n });\n};\n","import Entry from './entry';\nimport Base from '../base';\n\nlet connection = {};\n\n\nclass ContentType extends Base {\n\n Entry: typeof Entry\n\n constructor(uid: string) {\n super(uid);\n /**\n * @constructor\n * @hideconstructor\n * @name Stack#ContentType#Entry\n * @desc An entry is the actual piece of content created using one of the defined content types\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#entries| Entries}\n */\n\n // @ts-ignore\n this.Entry = Entry(this.constructor.connection, this.uid);\n return this;\n }\n\n // static module(plural = false) {\n // return plural ? 'ContentTypes' : 'ContentType';\n // }\n static get connection() {\n return connection;\n }\n}\nexport default (uiConnection: any) => {\n connection = uiConnection;\n return new Proxy(ContentType, {\n // target = Foo\n apply(Target: any, thisArg, argumentsList: any[]) {\n return new Target(...argumentsList);\n }\n });\n};\n","import * as Utils from '../utils';\n\n\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nconst _extend = {\n compare(type) {\n return function (key, value) {\n if (key && value && typeof key === 'string' && typeof value !== 'undefined') {\n this._query.query[key] = this._query.query.file_size || {};\n this._query.query[key][type] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n contained(bool) {\n const type = (bool) ? '$in' : '$nin';\n return function (key, value) {\n if (key && value && typeof key === 'string' && Array.isArray(value)) {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key][type] = this._query.query[key][type] || [];\n this._query.query[key][type] = this._query.query[key][type].concat(value);\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n exists(bool) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key].$exists = bool;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n logical(type) {\n return function () {\n const _query: any[] = [];\n for (let i = 0, _i = arguments.length; i < _i; i += 1) {\n if (arguments[i] instanceof Query && arguments[i]._query.query) {\n _query.push(arguments[i]._query.query);\n } else if (typeof arguments[i] === 'object') {\n _query.push(arguments[i]);\n }\n }\n if (this._query.query[type]) {\n this._query.query[type] = this._query.query[type].concat(_query);\n } else {\n this._query.query[type] = _query;\n }\n return this;\n };\n },\n sort(type) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query[type] = key;\n return this;\n }\n throw Error('Argument should be a string.');\n };\n },\n pagination(type) {\n return function (value) {\n if (typeof value === 'number') {\n this._query[type] = value;\n return this;\n }\n throw Error('Argument should be a number.');\n };\n }\n};\n\n/**\n * Creates an instance of the query\n * @hideconstructor\n */\nclass Query {\n module: any\n _connection: any\n _query: {[key: string]: any}\n contentTypeUid: string\n only: any\n except: any\n addQuery: any\n lessThan: any\n lessThanOrEqualTo: any\n greaterThan: any\n greaterThanOrEqualTo: any\n notEqualTo: any\n containedIn: any\n notContainedIn: any\n exists: any\n notExists: any\n ascending: ReturnType\n descending: ReturnType\n beforeUid: ReturnType\n afterUid: ReturnType\n skip: ReturnType\n limit: ReturnType\n or: ReturnType\n and: ReturnType\n addParam: ReturnType\n singleEntry: any\n\n constructor(connection, module, contentTypeUid) {\n this.module = module;\n this._connection = connection;\n this._query = {};\n this._query.query = this._query.query || {};\n this.contentTypeUid = contentTypeUid;\n\n /**\n * @name Query#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('title').find();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('BASE','title').find();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().only(['title','description']).find();\n * @returns {Query}\n */\n\n this.only = Utils.transform('only');\n\n /**\n * @name Query#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('title').find();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('BASE','title').find();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().except(['title','description']).find();\n * @returns {Query}\n */\n\n this.except = Utils.transform('except');\n /**\n This method includes a query parameter in your query.\n @name Query#addQuery\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addQuery('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addQuery = Utils.addQuery;\n\n /**\n * @name Query#lessThan\n * @description This method provides only the entries with values less than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThan('created_at','2015-06-22')\n * @returns {Query}\n */\n this.lessThan = _extend.compare('$lt');\n\n /**\n * @name Query#lessThanOrEqualTo\n * @description This method provides only the entries with values less than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThanOrEqualTo('created_at','2015-03-12')\n * @returns {Query}\n */\n this.lessThanOrEqualTo = _extend.compare('$lte');\n /**\n * @function\n * @name Query#greaterThan\n * @description This method provides only the entrieswith values\n * greater than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThan('created_at','2015-03-12')\n * @returns {Query}\n */\n this.greaterThan = _extend.compare('$gt');\n\n /**\n * @function\n * @name Query#greaterThanOrEqualTo\n * @description This method provides only the entries with values greater than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThanOrEqualTo('created_at', '2015-06-22')\n * @returns {Query}\n */\n this.greaterThanOrEqualTo = _extend.compare('$gte');\n\n /**\n * @function\n * @name Query#notEqualTo\n * @description This method provides only the entries with values not equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').notEqualTo('title','Demo')\n * @returns {Query}\n */\n this.notEqualTo = _extend.compare('$ne');\n\n /**\n * @function\n * @name Query#containedIn\n * @description This method provides only the entries with values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {*} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').containedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.containedIn = _extend.contained(true);\n\n /**\n * @function\n * @name Query#notContainedIn\n * @description This method provides only the entries that do not contain values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {Array} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').notContainedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.notContainedIn = _extend.contained(false);\n\n /**\n * @function\n * @name Query#exists\n * @description This method provides only the entries that contains the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').exists('featured')\n * @returns {Query}\n */\n this.exists = _extend.exists(true);\n\n /**\n * @function\n * @name Query#notExists\n * @description This method provides only the entries that do not contain the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').notExists('featured')\n * @returns {Query}\n */\n this.notExists = _extend.exists(false);\n\n /**\n * @function\n * @name Query#ascending\n * @description This parameter sorts the entries in ascending order on the basis of the value of the specified field.\n * @param {String} key - Field UID to be used for sorting.\n * @example extension.stack.ContentType('blog').ascending('created_at')\n * @returns {Query}\n */\n this.ascending = _extend.sort('asc');\n\n /**\n * @function\n * @name Query#descending\n * @description This method sorts the entries in descending order on the basis of the specified field.\n * @param {String} key - Field UID to be used for sorting\n * @example extension.stack.ContentType('blog').descending('created_at')\n * @returns {Query}\n */\n this.descending = _extend.sort('desc');\n\n /**\n * @function\n * @name Query#beforeUid\n * @description This method provides only the entries that are placed before the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').beforeUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.beforeUid = _extend.sort('before_uid');\n\n /**\n * @function\n * @name Query#afterUid\n * @description This method provides only the entries that are placed after the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').afterUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.afterUid = _extend.sort('after_uid');\n\n /**\n * @function\n * @name Query#skip\n * @description This method skips the specified number of entries.\n * @param {Number} skip - Number of entries to be skipped\n * @example extension.stack.ContentType('blog').skip(5)\n * @returns {Query}\n */\n this.skip = _extend.pagination('skip');\n\n /**\n * @function\n * @name Query#limit\n * @description This method limits the response by providing only the specified number of entries.\n * @param {Number} limit - Maximum number of entries to be returned in the result.\n * @example extension.stack.ContentType('blog').limit(10)\n * @returns {Query}\n */\n this.limit = _extend.pagination('limit');\n\n /**\n * @function\n * @name Query#or\n * @description This method performs the OR operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries\n * to be taken into consideration\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo')\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10)\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery()\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery()\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @returns {Query}\n */\n this.or = _extend.logical('$or');\n\n /**\n * @function\n * @name Query#and\n * @description This method performs the AND operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries to be taken into consideration\n * @example\n * AND with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo');\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10);\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @example\n * .and with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery();\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery();\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @returns {Query}\n */\n this.and = _extend.logical('$and');\n /**\n This method includes a query parameter in your query.\n @name Query#addParam\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addParam('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addParam = Utils.addParam;\n }\n\n // -------------------------------------Entry Queries--------------------------------------------------\n /**\n * @function\n * @name Query#includeReference\n * @description This method is used to include referenced entries from other content types. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference(['category', 'author']).find()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference('category', 'author').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeSchema().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#language\n * @description This method is used to set the language code of which you want to retrieve the data. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().language('en-us').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies). Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeContentType().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeOwner().find()\n * @returns {Query}\n */\n // -----------------------------------------Entry Queries End------------------------------------------------------\n\n /**\n * @function\n * @name Query#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().environment('development').find()\n * @returns {Query}\n */\n\n /**\n * @description This method provides only the entries containing field values matching the specified condition.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').where('title','Demo')\n * @returns {Query}\n */\n equalTo(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n where(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides only the number of entries matching the specified filters.\n * @example extension.stack.ContentType('blog').count()\n * @returns {Query}\n */\n count() {\n this._query.count = true;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method is used to set raw queries on the Query instance.\n * @param {object} query - Raw{json} queries to filter the entries in the result set.\n * @returns {Query}\n */\n query(query) {\n if (typeof query === 'object') {\n this._query.query = Utils.mergeDeep(this._query.query, query);\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description The ’tags’ parameter allows you to specify an array of tags to search for objects.\n * @param {Array} values - Tags\n * @example extension.stack.ContentType('blog').tags(['technology', 'business'])\n * @returns {Query}\n */\n tags(values) {\n if (Array.isArray(values)) {\n this._query.tags = values;\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description This method also includes the total number of entries returned in the response.\n * @example extension.stack.ContentType('blog').includeCount()\n * @returns {Query}\n */\n includeCount() {\n this._query.include_count = true;\n return this;\n }\n\n /**\n * @summary returns Returns the raw query which can be used for further calls (.and/.or).\n * @description This method provides raw{json} queries based on the filters applied on the Query object.\n * @example extension.stack.ContentType('blog').where('title','Demo').getQuery()\n * @returns {Query}\n */\n getQuery() {\n return this._query.query;\n }\n\n /**\n * @description This method provides only the entries matching the regular expression for the specified field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @param {String} [options] - Match or compare a value in the entry\n * @example\n * .regex without options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo')\n * @example\n * .regex with options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo', 'i')\n * @returns {Query}\n */\n regex(key, value, options) {\n if (key && value && typeof key === 'string' && typeof value === 'string') {\n this._query.query[key] = {\n $regex: value\n };\n if (options) this._query.query[key].$options = options;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method is used to search data in entries.\n * @param {string} value - Value to search in the entries.\n * @example extension.stack.ContentType('blog').search('Welcome to demo')\n * @returns {Query}\n */\n search(value) {\n if (value && typeof value === 'string') {\n this._query.typeahead = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides all the entries which satisfy the specified query.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').find()\n */\n find() {\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method provides a single entry from the result set.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').findOne()\n */\n findOne() {\n this.singleEntry = true;\n this._query.limit = 1;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n}\n\nexport default Query;\n","import Asset from './api/asset/index';\nimport ContentType from './api/content-type/index';\nimport { onData, onError } from \"../utils/utils\";\nimport { BranchDetail, GetAllStacksOptions, StackAdditionalData, StackDetail, StackSearchQuery } from '../types/stack.types';\nimport { IManagementTokenDetails } from '../types';\n\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nclass Stack {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _data: StackDetail\n ContentType: any // TODO: change it\n Asset: any // TODO: change it\n private _currentBranch: BranchDetail | null = null;\n\n\n constructor(data: StackDetail = {} as StackDetail, connection: any, additionalData: StackAdditionalData) {\n this._connection = connection;\n this._data = data;\n /**\n * @constructor\n * @hideconstructor\n * @desc Content type defines the structure or schema of a page or a section of your web or mobile property\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#content-types| ContentType}\n * @param {string} uid - Uid of contenttype.\n * @example extension.stack.ContentType('content_type_uid')\n * */\n this.ContentType = ContentType(connection);\n /**\n * @constructor\n * @hideconstructor\n * @desc An initializer is responsible for creating an Asset object.\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#assets| Asset}\n * @param {string} uid - UID of the asset.\n * @example extension.stack.Asset('asset_uid')\n * */\n this.Asset = Asset(connection);\n\n const currentBranch = additionalData.currentBranch || \"\"\n\n if (currentBranch) {\n this._currentBranch =\n (data.branches || []).find(\n (branch) => branch.uid === additionalData.currentBranch\n ) || null;\n }\n\n }\n\n\n /**\n * This method returns the data of the current stack.\n * @return Returns stack data.\n */\n\n getData(): StackDetail {\n return this._data;\n }\n\n\n /**\n * This method returns all the stacks in the current organization.\n * @param query asks for organization UID and query params to get all stacks\n * @returns Stacks within current organization\n */\n async getAllStacks({orgUid = \"\", params = {}}: GetAllStacksOptions = {}): Promise {\n \n // validation\n if (typeof orgUid !== 'string') {\n throw new TypeError('orgUid must be a string');\n }\n\n const options = {\n action: \"getStacks\",\n headers: { organization_uid: orgUid || this._data.org_uid },\n skip_api_key: true,\n params\n };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .then((data) => data.stacks || [])\n .catch(onError);\n\n }\n\n /**\n * Get the details of all the management tokens of the stack.\n * Note: This API does not return the token value.\n * @see {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-management-tokens | Get all management tokens}\n * @returns Details of all the management token of the stack\n */\n async getManagementTokens(): Promise {\n const options = { action: \"getManagementTokens\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(async (response) => {\n const data = await onData<{tokens: IManagementTokenDetails[]}>(response);\n return data.tokens || [];\n })\n .catch(onError);\n }\n\n /**\n * Gets the results of the search based on user query\n * @param queries Array of key value pair of query parameters\n * @param apiKey API key of the stack\n * @returns Result of the query\n */\n search(queries: StackSearchQuery, apiKey: string | null = this._data.api_key) {\n const options = { params: queries, api_key: apiKey, action: \"search\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n }\n\n\n /**\n * This API allows you to retrieve data of a content type of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-content-type| Content Type API} requests. This method returns a Promise object.\n * @param {string} uid Uid of the desired content type\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with content type details.\n */\n getContentType(uid: string, params = {}): Promise<{ [key: string]: any }> {\n if (!uid) {\n return Promise.reject(new Error('uid is required'));\n }\n const options = { uid, params, action: 'getContentType' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve data of a content types of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Content Types API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with details of the content type.\n */\n getContentTypes(query = {}, params: { [key: string]: any } = {}): Promise<{ [key: string]: any }> {\n const optionParams = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getContentTypes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve environment details of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-environment| Environment API} requests. This method returns a Promise object.\n * @param {string} name Name of the desired environment\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with environment details.\n */\n getEnvironment(name: string, params = {}) {\n if (!name) {\n return Promise.reject(new Error('name is required'));\n }\n const options = { name, params, action: 'getEnvironment' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of environments of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-environments| Environments API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the environments.\n */\n getEnvironments(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getEnvironments' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of releases of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-releases| Releases API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the releases.\n */\n getReleases(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getReleases' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of publish queue of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-publish-queue| Publish Queue API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the publish queue.\n */\n getPublishes(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getPublishes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a locale of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-language| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getLocale(code: string, params = {}) {\n if (!code) {\n return Promise.reject(new Error('code is required'));\n }\n const options = { code, params, action: 'getLocale' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getLocales(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getLocales' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a workflow of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-workflow| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getWorkflow(uid: string, params = {}) {\n if (!uid) {\n return Promise.reject(new Error('workflow uid is required'));\n }\n const options = { uid, params, action: 'getWorkflow' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n \n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getWorkflows(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getWorkflows' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve all the branches in the current stack\n * @returns All branches of the current stack\n */\n getAllBranches(): BranchDetail[] {\n return this._data.branches || [];\n }\n\n /**\n * Returns the details of the current branch of the stack if available\n * @returns current branch of the current stack if available\n */\n getCurrentBranch(): BranchDetail | null {\n return this._currentBranch;\n }\n}\n\nexport default Stack;\n","export function transform(type) {\n return function () {\n switch (arguments.length) {\n case 1:\n if (\n Array.isArray(arguments[0]) ||\n typeof arguments[0] === \"string\"\n ) {\n let query = this._query[`${type}[BASE]`] || [];\n query = query.concat(arguments[0]);\n this._query[`${type}[BASE]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n case 2:\n if (\n typeof arguments[0] === \"string\" &&\n (Array.isArray(arguments[1]) ||\n typeof arguments[1] === \"string\")\n ) {\n let query = this._query[`${type}[${arguments[0]}]`] || [];\n query = query.concat(arguments[1]);\n this._query[`${type}[${arguments[0]}]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n default:\n throw Error(\"Kindly provide valid parameters\");\n }\n };\n}\n\n// merge two objects\nexport function merge(\n target: { [key: string]: any },\n source: { [key: string]: any }\n) {\n const newTraget = target;\n if (target && source) {\n Object.keys(source).forEach((key) => {\n newTraget[key] = source[key];\n });\n }\n return newTraget;\n}\n\n// merge two objects\nexport function mergeDeep(\n oldTarget: { [key: string]: any },\n oldSource: { [key: string]: any }\n) {\n const newTarget = oldTarget;\n const self = this;\n const _mergeRecursive = (anotherTarget, source) => {\n const target = anotherTarget;\n Object.keys(source).forEach((key) => {\n if (\n self._type(source[key]) === \"object\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n _mergeRecursive(target[key], source[key]);\n } else if (\n self._type(source[key]) === \"array\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n target[key] = target[key].concat(source[key]);\n } else {\n target[key] = source[key];\n }\n });\n };\n _mergeRecursive(newTarget, oldSource);\n return newTarget;\n}\n\nexport function _type(val) {\n let __typeof = typeof val;\n if (__typeof === \"object\" && Array.isArray(val)) {\n //@ts-ignore\n __typeof = \"array\";\n }\n return __typeof;\n}\n\nexport function addParam(key, value) {\n if (key && typeof key === \"string\" && value && typeof value === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"Kindly provide valid parameters.\");\n}\n\nexport function addQuery(key, value) {\n if (key && value && typeof key === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"First argument should be a String.\");\n}\n\nexport function language(languageCode) {\n if (languageCode && typeof languageCode === \"string\") {\n this._query.locale = languageCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function environment(environmentCode) {\n if (environmentCode && typeof environmentCode === \"string\") {\n this._query.environment = environmentCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function includeOwner() {\n this._query.include_owner = true;\n return this;\n}\n\nexport function includeContentType() {\n this._query.include_content_type = true;\n return this;\n}\n\nexport function includeSchema() {\n this._query.include_schema = true;\n return this;\n}\n\nexport function includeReference(val) {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(val[i]);\n }\n } else if (typeof val === \"string\") {\n for (let i = 0; i < arguments.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(\n arguments[i]\n );\n }\n } else {\n throw Error(\"Argument should be a String or an Array.\");\n }\n return this;\n}\n\nexport function getReferences() {\n return this.fetch(`get${this.constructor.module()}References`);\n}\n","function onError(error: Error) {\n return Promise.reject(error);\n}\n/**\n * Class used by an extension to store your data in {@link external:localStorage}.\n */\nclass Store {\n /**\n * @hideconstructor\n */\n\n _connection: any\n\n constructor(connection: any) {\n this._connection = connection;\n }\n /**\n * Gets the value of key\n * @param {string} key Key of the stored data\n * @example extension.store.get('key').then((value) => console.log(value)) // will log value for the given key\n * @return {external:Promise}\n */\n get(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'get', key })\n .then((event: { data: any; }) => Promise.resolve(event.data)).catch(onError);\n }\n\n /**\n * Gets an object with all the stored key-value pairs.\n * @example extension.store.getAll().then((obj) => obj)\n * @return {external:Promise}\n */\n getAll() {\n return this._connection.sendToParent('store', { action: 'getAll' })\n .then(({ data = {} }) => Promise.resolve(data)).catch(onError);\n }\n\n /**\n * Sets the value of a key\n * @param {string} key Key of the stored data.\n * @param {*} value Data to be stored.\n * @example extension.store.set('key', 'value').then((success) => console.log(success)) // will log ‘true’ when value is set\n * @return {external:Promise}\n */\n\n set(key: string, value: string) {\n if (!key || !value || typeof key !== 'string') {\n throw new Error('Kindly provide valid parameters');\n }\n return this._connection.sendToParent('store', { action: 'set', key, value })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Removes the value of a key\n * @param {string} key Key of the data to be removed from the store\n * @example extension.store.remove('key').then((success) => console.log(success)) // will log ‘true’ when value is removed\n * @return {external:Promise}\n */\n\n remove(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'remove', key })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Clears all the stored data of an extension\n * @example extension.store.clear().then((success) => console.log(success)) // will log ‘true’ when values are cleared\n * @return {external:Promise}\n */\n\n clear() {\n return this._connection.sendToParent('store', { action: 'clear' })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n}\n\nexport default Store;\n","import { AnyObject } from \"./types/common.types\";\nimport { StackDetail } from \"./types/stack.types\";\n\nexport declare interface IDashboardWidget {\n [key: string]: any;\n}\n\nexport declare interface ICustomField {\n [key: string]: any;\n}\n\nexport declare interface ISidebarWidget {\n [key: string]: any;\n}\n\nexport declare interface IRTE {\n [key: string]: any;\n}\n\nexport declare interface IFieldModifierLocation {\n [key: string]: any;\n}\n\nexport declare interface IEntryFieldLocation {\n [key: string]: any;\n}\n\nexport declare interface IFullPageLocation {\n [key: string]: any;\n}\n\nexport declare interface User {\n uid: string;\n first_name: string;\n last_name: string;\n}\n\nexport declare interface Manifest {\n created_by: User;\n icon: string;\n name: string;\n target_type: string;\n uid: string;\n updated_by: User;\n version: number;\n visibility: string;\n}\n\nexport declare interface IAppConfigWidget {\n installation: {\n setInstallationData: (\n installationData: IInstallationData\n ) => Promise;\n getInstallationData: () => Promise;\n setValidity: (isValid: boolean, options?: ValidationOptions) => void;\n [key: string]: any;\n };\n stack: AnyObject;\n}\n\nexport declare interface IPageWidget {\n [key: string]: any;\n}\n\n// initialization data\nexport declare interface IUser {\n [key: string]: any;\n}\n\nexport declare interface ICurrentEntry {\n [key: string]: any;\n}\n\nexport declare interface ICurrentContentType {\n [key: string]: any;\n}\n\nexport declare interface IConfig {\n [key: string]: any;\n}\n\nexport declare interface ISchema {\n [key: string]: any;\n}\n\nexport declare interface IFieldConfig {\n [key: string]: any;\n}\n\n// Init data\n\ndeclare interface ICommonInitData {\n app_id: string;\n installation_uid: string;\n extension_uid: string;\n stack: StackDetail;\n user: IUser;\n currentBranch: string;\n region: string;\n manifest?: Manifest;\n}\n\nexport declare interface IDashboardInitData {\n data: ICommonInitData & {\n dashboard_width: \"full_width\" | \"half_width\";\n config?: AnyObject;\n type: \"DASHBOARD\";\n };\n}\n\nexport declare interface ISidebarInitData {\n data: ICommonInitData & {\n app_config: IConfig;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n config?: AnyObject;\n changedData: ICurrentEntry;\n type: \"WIDGET\";\n };\n}\n\nexport declare interface IRTELocationInitData {\n data: ICommonInitData & {\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n changedData: ICurrentEntry;\n }\n}\n\nexport declare interface IFieldInitData {\n data: ICommonInitData & {\n entry: ICurrentEntry;\n content_type: ICurrentContentType;\n locale: string;\n uid: string;\n schema: ISchema;\n app_config: IConfig;\n value: any;\n field_config: IFieldConfig;\n config?: AnyObject;\n changedData: ICurrentEntry;\n self: boolean;\n type: \"FIELD\";\n };\n}\n\nexport declare interface IFullPageLocationInitData {\n data: ICommonInitData & {\n type: \"FULL_PAGE_LOCATION\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IRTEInitData {\n data: ICommonInitData & {\n type: \"RTE\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IAppConfigInitData {\n data: ICommonInitData & {\n type: \"APP_CONFIG_WIDGET\";\n config?: AnyObject;\n };\n}\n\nexport declare interface ICurrentAsset {\n [key: string]: any;\n}\n\nexport declare interface IAssetSidebarInitData {\n data: ICommonInitData & {\n type: \"ASSET_SIDEBAR_WIDGET\";\n currentAsset: ICurrentAsset;\n config: { [key: string]: any };\n };\n}\n\nexport declare interface IFieldModifierLocationInitData {\n data: ICommonInitData & {\n type: \"FIELD_MODIFIER_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface IEntryFieldLocationInitData {\n data: ICommonInitData & {\n type: \"ENTRY_FIELD_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface setAssetDto {\n title: string;\n description: string;\n tags: string[];\n}\n\nexport enum StackLocation {\n STACK_CONFIG = \"cs.cm.stack.config\",\n DASHBOARD = \"cs.cm.stack.dashboard\",\n SIDEBAR = \"cs.cm.stack.sidebar\",\n CUSTOM_FIELD = \"cs.cm.stack.custom_field\",\n RTE = \"cs.cm.stack.rte\",\n}\n\nexport enum OrganizationLocation {\n ORG_CONFIG = \"cs.org.config\",\n}\n\nexport type AppLocation = StackLocation | OrganizationLocation;\n\nexport interface Scope {\n content_types: string[];\n}\n\n/**\n * installation details API response\n */\nexport interface IInstallationData {\n configuration: { [key: string]: any };\n serverConfiguration: { [key: string]: any };\n webhooks?: {\n channels: string[];\n }[];\n uiLocations?: {\n type: AppLocation;\n meta: {\n enabled: boolean;\n scope?: Scope;\n name: string;\n extentionUid: string;\n }[];\n }[];\n}\n// End of Init data\n\nexport declare interface IInitializationData {\n FIELD: IFieldConfig;\n WIDGET: ISidebarInitData;\n DASHBOARD: IDashboardInitData;\n RTE: IRTEInitData;\n APP_CONFIG_WIDGET: IAppConfigInitData;\n ASSET_SIDEBAR_WIDGET: IAssetSidebarInitData;\n}\n\nexport declare type ILocation =\n | \"RTE\"\n | \"FIELD\"\n | \"DASHBOARD\"\n | \"WIDGET\"\n | \"APP_CONFIG_WIDGET\"\n | \"ASSET_SIDEBAR_WIDGET\"\n | \"FULL_PAGE_LOCATION\"\n | \"ENTRY_FIELD_LOCATION\"\n | \"FIELD_MODIFIER_LOCATION\";\n\nexport declare interface ValidationOptions {\n message?: string;\n}\n\nexport declare interface IManagementTokenDetails {\n uid: string;\n name: string;\n}\n\nexport enum Region {\n UNKNOWN = \"UNKNOWN\",\n NA = \"NA\",\n EU = \"EU\",\n AZURE_NA = \"AZURE_NA\",\n AZURE_EU = \"AZURE_EU\",\n}\n","export const ERROR_MESSAGES = Object.freeze({\n configPage: {\n setValidity: {\n isValidTypeBoolean: \"isValid should be a boolean\",\n messageTypeString: \"message should be a string\",\n },\n },\n entryField: {\n entry: {\n tagsShouldNotBeBlank: \"Tags cannot be blank\",\n tagsShouldBeArrayOfStrings: \"Tags must be an array of strings\",\n },\n frame: {\n dimensionHeightShouldBeNumber: \"Dimension height must be a number\",\n dimensionWidthShouldBeNumber: \"Dimension width must be a number\",\n },\n },\n});\n\nexport default function generateErrorMessages(message: string) {\n return `Contentstack App SDK: ${message}`;\n}\n","import { Region } from \"../types\";\n\nexport function onData>(data: { data: Data }) {\n if (typeof data.data === \"string\") {\n return Promise.reject(data.data);\n }\n return Promise.resolve(data.data);\n}\n\nexport function onError(error: Error) {\n return Promise.reject(error);\n}\n\nexport function formatAppRegion(region: string): Region {\n switch (region) {\n case \"NA\":\n return Region.NA;\n case \"EU\":\n return Region.EU;\n case \"AZURE_NA\":\n return Region.AZURE_NA;\n case \"AZURE_EU\":\n return Region.AZURE_EU;\n default:\n return Region.UNKNOWN;\n }\n}\n\nexport function getPreferredBodyElement(nodeCollection: HTMLCollection) {\n let rootElementIndex = Infinity;\n let rootElement: Element | undefined;\n const elementPreferenceList = [\n \"HEADER\",\n \"NAV\",\n \"MAIN\",\n \"SECTION\",\n \"ARTICLE\",\n \"ASIDE\",\n \"FOOTER\",\n \"DIV\",\n ];\n const nonRenderingTags = [\"SCRIPT\", \"NOSCRIPT\", \"STYLE\", \"TEMPLATE\"];\n // ? choose higher preference semantic HTML tags\n Array.from(nodeCollection).forEach((el) => {\n const elIndex = elementPreferenceList.indexOf(el.nodeName);\n if (elIndex >= 0 && elIndex < rootElementIndex) {\n rootElementIndex = elIndex;\n rootElement = el;\n }\n });\n // ? choose the first rendering HTML tag found if no semantic tags found\n if (!rootElement) {\n rootElement = Array.from(nodeCollection).find(\n (el) => !nonRenderingTags.includes(el.nodeName)\n );\n }\n return rootElement || nodeCollection[0];\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\n\nconst config = { attributes: true, childList: true, subtree: true };\nlet observer: MutationObserver;\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass Window {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _autoResizingEnabled: boolean\n _resizingEnabled: boolean\n type: 'DASHBOARD' | 'FIELD'\n _emitter: EventEmitter\n state: 'half_width' | 'full_width'\n _height?: number\n\n constructor(connection: any, type: 'DASHBOARD' | 'FIELD', emitter: EventEmitter, state: 'half_width' | 'full_width' = 'half_width') {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._resizingEnabled = false;\n this.type = type;\n this.state = state;\n this._emitter = emitter;\n }\n\n /**\n * This method activates the resize button that gives you the provision to resize the window size of your Dashboard Widget.\n * @return {external:Promise} A promise object which will resolve when a resize button is visible on the Dashboard Widget.\n */\n enableResizing() {\n if (this.type !== 'DASHBOARD') { return Promise.resolve(); }\n this._resizingEnabled = true;\n return this._connection.sendToParent('window', { action: 'enableResizing' });\n }\n\n\n /**\n * This function executes the callback function whenever a Dashboard Widget extension is maximized or minimized. Only applicable on Dashboard Widget extensions.\n * @param {function} callback Function to be called when a Dashboard Widget extension is maximized or minimized\n * @return {boolean} Will return true\n */\n\n onDashboardResize(callback: (event: any) => void) {\n const windowObj = this;\n if (this.type !== 'DASHBOARD') {\n return false;\n }\n if (callback && typeof (callback) === 'function') {\n windowObj._emitter.on('dashboardResize', (event: { state: 'half_width' | 'full_width'; }) => {\n windowObj.state = event.state;\n callback(event.state);\n });\n } else {\n throw Error('Callback must be a function');\n }\n return true;\n }\n\n\n /**\n * This method updates the extension height on Contentstack UI.\n * If the ‘height’ argument is not passed, it will calculate the scroll height and set the height of extension window accordingly.\n * @param {string|number} height Desired height of the iframe window\n * @return {external:Promise} A promise object which will be resolved when Contentstack UI sends an acknowledgement stating that the height has been updated.\n */\n updateHeight(height?: number) {\n if (this.type === 'DASHBOARD' && this.state === 'half_width') { return Promise.resolve(); }\n if (!height || isNaN(height)) {\n this._height = Math.ceil(document.documentElement.getBoundingClientRect().height);\n } else if (this._height === height) {\n return Promise.resolve();\n } else {\n this._height = height;\n }\n return this._connection.sendToParent('resize', this._height);\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {Window}.\n */\n enableAutoResizing() {\n if (this._autoResizingEnabled || (this.state === 'half_width' && this.type === 'DASHBOARD')) {\n return this;\n }\n this._autoResizingEnabled = true;\n //@ts-ignore\n observer = new MutationObserver(this.updateHeight.bind(this));\n observer.observe(window.document.body, config);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {Window}.\n */\n disableAutoResizing() {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n observer.disconnect();\n return this;\n }\n\n enablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent(\"window\", {\n action: \"dashboardEnableTopPadding\",\n });\n }\n\n disablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent('window', {\n action: 'dashboardDisableTopPadding' \n });\n }\n \n}\n\nexport default Window;\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","// 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].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n"],"names":["root","factory","exports","module","define","amd","this","self","modules","installedModules","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","value","interface_namespaceObject","isRegex","item","toString","cleanUpWindow","promise_ZalgoPromise","bridge","init","public_parent","_send","request","sendToParent","client","_on","listen","server_once","server_listener","CONFIG","constants_CONSTANTS","disable","PROTOCOL","IE_WIN_ACCESS_ERROR","isAboutProtocol","arguments","length","window","location","protocol","getParent","win","parent","err","getOpener","opener","canReadFromWindow","href","getActualDomain","Error","host","utils_getDomain","domain","mockDomain","indexOf","isActuallySameDomain","desc","getOwnPropertyDescriptor","isAncestorParent","child","childParent","result","push","getFrames","frames","len","frame","_i","_frame","iframeWindows","iframeFrames","isWindowClosed","allowMock","closed","message","mockclosed","top","iframeIndex","collection","contentWindow","parentNode","doc","ownerDocument","documentElement","contains","getAncestor","matchDomain","pattern","origin","Array","isArray","Boolean","match","JSON","stringify","some","subpattern","isWindow","obj","Window","__cross_domain_utils_window_check__","util_safeIndexOf","_ALLOWED_POST_MESSAGE","weakmap_CrossDomainSafeWeakMap","CrossDomainSafeWeakMap","instance","Constructor","TypeError","Math","random","WeakMap","freeze","testWeakMap","testKey","set","weakmap","keys","values","_cleanupClosedWindows","delete","splice","isSafeToReadWrite","key","entry","writable","index","has","getOrSet","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","ERROR","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","POPUP","IFRAME","WINDOW_PROPS","POSTROBOT","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","POST_MESSAGE","BRIDGE","GLOBAL","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","WILDCARD","map","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","navigator","userAgent","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_typeof","Symbol","iterator","constructor","stringifyError","level","stack","newErr","once","method","called","apply","lib_util_noop","uniqueID","chars","replace","charAt","floor","replaceObject","callback","depth","newobj","_key","childItem","util_isRegex","utils_isPromise","Promise","_toString","then","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushPromise","flushActive","promise","resolve","startActive","endActive","ZalgoPromise","handler","_this","resolved","rejected","errorHandled","handlers","_result","_error","isAsync","res","reject","dispatch","error","_this2","_err","setTimeout","j","asyncReject","dispatching","chain","firstPromise","secondPromise","_handlers$i","_onSuccess","onSuccess","_onError","onError","_promise","_result2","catch","finally","onFinally","try","timeout","time","_this3","clearTimeout","toPromise","all","promises","count","results","prom","hash","items","onPossiblyUnhandledException","cancel","context","args","delay","_delay","isPromise","flush","global","registerSelf","serialize__typeof","methods","listenForMethods","on","_ref","source","data","meth","id","isSerialized","type","__type__","serializeMethod","destination","__id__","__name__","deserializeMethod","wrapper","slice","send","_ref2","__xdomain__","deserializeZalgoPromise","__then__","sayHello","readyPromises","SEND_MESSAGE_STRATEGIES","serializedMessage","dom","forEach","postMessage","_extends","assign","target","sendMessage","_jsonStringify","options","sourceDomain","windowType","__message__","__code__","code","regex","__source__","messages","replacer","indent","objectToJSON","arrayToJSON","toJSON","strategyName","success","status","join","responseListeners","requestListeners","WINDOW_WILDCARD","erroredResponseListeners","_RECEIVE_MESSAGE_TYPE","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","nameListeners","_i2","_ref3","_length2","winQualifier","winListeners","_i4","_winListeners$__DOMAI2","_length4","_ref5","listener","types__extends","RECEIVE_MESSAGE_TYPES","pathname","ack","respond","fireAndForget","originalSource","handleError","response","receive__typeof","receiveMessage","event","parsedMessage","parse","receivedMessages","RegExp","messageListener","sourceElement","originalEvent","targetWindow","el","document","getElementById","tagName","toLowerCase","HTMLIFrameElement","hasResult","requestPromises","requestPromise","actualParent","_i7","_getAllChildFrames4","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","childFrame","_length6","_i15","_getFrames8","_length14","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","cycle","max","min","server__typeof","listenerOptions","errorHandler","requestListener","addRequestListener","_ref6","listenersCollection","_i6","_win2","_i8","_length8","_listenersCollection","_i10","_domain2","_length10","_item","_i12","_length12","existingListener","strDomain","regexListeners","regexListener","_handler","errorOnClose","interval","runInterval","onceListener","removeEventListener","popupWindowsByWin","remoteWindows","initialized","addEventListener","attachEvent","initializationData","connection","emitter","currentAsset","_emitter","_connection","thisAsset","_changedData","getData","bind","setData","syncAsset","updateWidth","onSave","onChange","onPublish","onUnPublish","replaceAsset","asset","width","file","handleUpload","AssetSidebarWidget","configCallback","pluginMetaData","registry","title","toolbar","inMainToolbar","inHoveringToolbar","isContentstackElement","meta","elementType","editorCallbacks","isDependent","isContainer","containerMetaData","rootCategory","dependentPlugins","addPlugins","plugins","plugin","category","beforeChildrenRender","beforeElementRender","handleMouseDown","rte","config","entries","iconName","display","includes","dndOptions","Component","shouldOverride","containerMeta","RTEPlugin","rtePluginInitializer","additionalData","_data","currentBranch","_additionalData","setInstallationData","installationData","onData","getInstallationData","setValidity","isValid","ERROR_MESSAGES","configPage","isValidTypeBoolean","messageTypeString","AppConfig","content_type","changedData","locale","_options","thisEntry","getField","uid","useUnsavedSchema","_internalFlags","FieldInstance","path","split","schema","find","x","data_type","multiple","blocks","block","e","fieldObject","resolvedData","Entry","initData","pulse","eventName","metadata","postRobot","getConfig","installationUID","getCurrentLocation","getAppVersion","version","orgUid","org_uid","action","headers","organization_uid","skip_api_key","app","getCurrentRegion","region","appUID","app_id","locationUID","extension_uid","installation_uid","currentUser","user","store","DashboardWidget","CustomField","SidebarWidget","RTELocation","AppConfigWidget","FullscreenAppWidget","FullPage","EntryFieldLocation","FieldModifierLocation","modal","formatAppRegion","manifest","dashboard_width","installation","field","fieldConfig","field_config","emitEvent","otherData","state","console","initialize","sdkType","setReady","Extension","excludedDataTypesForSetField","fieldDataObject","unResolvedData","separatedData","_resolvedData","_self","fieldObj","currentFieldObj","dataObj","setFocus","Field","getTags","tags","setTags","undefined","entryField","tagsShouldNotBeBlank","every","tag","areTagsValid","tagsShouldBeArrayOfStrings","FieldModifierLocationEntry","FieldModifierLocationField","_autoResizingEnabled","updateDimension","enableAutoResizing","disableAutoResizing","closeModal","dimension","height","_height","ceil","getBoundingClientRect","_width","dimensionBody","dimensionHeightShouldBeNumber","dimensionWidthShouldBeNumber","preventFrameClose","observer","MutationObserver","observe","body","attributes","childList","subtree","disconnect","FieldModifierLocationFrame","LOG_LEVEL","_extension","ContentstackAppSDK","createMetaData","metadataConfig","entity_uid","otherMetaData","payload","retrieveMetaData","retrieveAllMetaData","params","updateMetaData","deleteMetaData","Metadata","rootElement","getPreferredBodyElement","children","setBackgroundElement","element","Modal","getReferences","environment","Query","entryQuery","language","plural","getRteAssets","getAssetsOfSpecificTypes","assetType","asset_type","publish","fetch","unpublish","_files","files","from","_","File","Date","getUTCMilliseconds","upload_type","parentFolderUid","customUploadHandler","uploadAsset","Asset","uiConnection","Proxy","Target","thisArg","argumentsList","_query","only","transform","except","addParam","contentTypeUid","create","content_type_uid","update","includeOwner","includeContentType","includeSchema","includeReference","getLanguages","unlocalize","setWorkflowStage","contentType","entryTarget","addQuery","ContentType","_extend","query","file_size","bool","concat","$exists","Utils","lessThan","lessThanOrEqualTo","greaterThan","greaterThanOrEqualTo","notEqualTo","containedIn","notContainedIn","exists","notExists","ascending","descending","beforeUid","afterUid","skip","limit","or","and","equalTo","where","mergeDeep","includeCount","include_count","getQuery","$regex","$options","search","typeahead","findOne","singleEntry","_currentBranch","branches","branch","getAllStacks","stacks","getManagementTokens","tokens","queries","apiKey","api_key","getContentType","getContentTypes","optionParams","getEnvironment","getEnvironments","getReleases","getPublishes","getLocale","getLocales","getWorkflow","getWorkflows","getAllBranches","getCurrentBranch","Stack","newTraget","oldTarget","oldSource","newTarget","_mergeRecursive","anotherTarget","_type","val","__typeof","languageCode","environmentCode","include_owner","include_content_type","include_schema","getAll","remove","clear","Store","Region","StackLocation","OrganizationLocation","NA","EU","AZURE_NA","AZURE_EU","UNKNOWN","nodeCollection","rootElementIndex","Infinity","elementPreferenceList","nonRenderingTags","elIndex","nodeName","_resizingEnabled","enableResizing","onDashboardResize","windowObj","updateHeight","isNaN","enablePaddingTop","disablePaddingTop","EventEmitter","proto","originalGlobalValue","indexOfListener","listeners","alias","isValidListener","getListeners","evt","events","_getEvents","test","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","__webpack_module_cache__","__webpack_require__","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/src/RTE/types.d.ts b/dist/src/RTE/types.d.ts index 0f83a42..a1c1be1 100644 --- a/dist/src/RTE/types.d.ts +++ b/dist/src/RTE/types.d.ts @@ -95,6 +95,9 @@ export declare interface IRteParam { getVariable: (name: string, defaultValue: any) => T; setVariable: (name: string, value: T) => void; } +export declare interface IRTELocation { + [key: string]: any; +} export declare type IRteParamWithPreventDefault = { rte: IRteParam; preventDefault: () => void; diff --git a/dist/src/RTE/types.d.ts.map b/dist/src/RTE/types.d.ts.map index 2d438ab..38b1a33 100644 --- a/dist/src/RTE/types.d.ts.map +++ b/dist/src/RTE/types.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/RTE/types.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/RTE/types.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/entry.d.ts b/dist/src/entry.d.ts index f7cfdfe..c2c3b5d 100644 --- a/dist/src/entry.d.ts +++ b/dist/src/entry.d.ts @@ -1,6 +1,6 @@ import EventEmitter from "wolfy87-eventemitter"; import Field from "./field"; -import { ICurrentContentType, IFieldInitData, IFieldModifierLocationInitData, ISidebarInitData } from "./types"; +import { ICurrentContentType, IFieldInitData, IFieldModifierLocationInitData, IRTELocationInitData, ISidebarInitData } from "./types"; import { IEntryOptions, IGetFieldOptions, IOnEntryChangeCallback } from "./types/entry.types"; /** Class representing an entry from Contentstack UI. Not available for Dashboard Widget extension. */ declare class Entry { @@ -18,7 +18,7 @@ declare class Entry { [key: string]: any; }; _options: IEntryOptions; - constructor(initializationData: IFieldInitData | ISidebarInitData | IFieldModifierLocationInitData, connection: any, emitter: EventEmitter, options?: IEntryOptions); + constructor(initializationData: IFieldInitData | ISidebarInitData | IRTELocationInitData | IFieldModifierLocationInitData, connection: any, emitter: EventEmitter, options?: IEntryOptions); /** * Gets data of the current entry. * @return {Object} Returns entry data. diff --git a/dist/src/entry.d.ts.map b/dist/src/entry.d.ts.map index 4323d52..6645a86 100644 --- a/dist/src/entry.d.ts.map +++ b/dist/src/entry.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/entry.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,8BAA8B,EAC9B,gBAAgB,EACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,uGAAuG;AAEvG,cAAM,KAAK;IACP;;OAEG;IAEH,YAAY,EAAE,mBAAmB,CAAC;IAClC,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,GAAG,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACtC,QAAQ,EAAE,aAAa,CAAC;gBAGpB,kBAAkB,EACZ,cAAc,GACd,gBAAgB,GAChB,8BAA8B,EACpC,UAAU,EAAE,GAAG,EACf,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa;IA2C3B;;;OAGG;IAEH,OAAO;;;IAIP;;;;;;;;;;;;OAYG;IAEH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,KAAK;IAiGxD;;;OAGG;IAEH,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAWpC;;;OAGG;IAEH,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IAczC;;;OAGG;IAEH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAWvC;;;OAGG;IAEH,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;CAU5C;AACD,eAAe,KAAK,CAAC"} \ No newline at end of file +{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/entry.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,8BAA8B,EAC9B,oBAAoB,EACpB,gBAAgB,EACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,uGAAuG;AAEvG,cAAM,KAAK;IACP;;OAEG;IAEH,YAAY,EAAE,mBAAmB,CAAC;IAClC,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,GAAG,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACtC,QAAQ,EAAE,aAAa,CAAC;gBAGpB,kBAAkB,EACZ,cAAc,GACd,gBAAgB,GAChB,oBAAoB,GACpB,8BAA8B,EACpC,UAAU,EAAE,GAAG,EACf,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa;IA2C3B;;;OAGG;IAEH,OAAO;;;IAIP;;;;;;;;;;;;OAYG;IAEH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,KAAK;IAiGxD;;;OAGG;IAEH,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAWpC;;;OAGG;IAEH,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IAczC;;;OAGG;IAEH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAWvC;;;OAGG;IAEH,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;CAU5C;AACD,eAAe,KAAK,CAAC"} \ No newline at end of file diff --git a/dist/src/extension.d.ts b/dist/src/extension.d.ts index adbc3ce..afe8056 100644 --- a/dist/src/extension.d.ts +++ b/dist/src/extension.d.ts @@ -1,5 +1,5 @@ import AssetSidebarWidget from "./AssetSidebarWidget"; -import { IRTEPluginInitializer } from "./RTE/types"; +import { IRTELocation, IRTEPluginInitializer } from "./RTE/types"; import Metadata from "./metadata"; import Modal from "./modal"; import Stack from "./stack"; @@ -28,6 +28,7 @@ declare class Extension { SidebarWidget: ISidebarWidget | null; CustomField: ICustomField | null; RTEPlugin: IRTEPluginInitializer | null; + RTELocation: IRTELocation | null; AppConfigWidget: IAppConfigWidget | null; FullscreenAppWidget: IPageWidget | null; AssetSidebarWidget: AssetSidebarWidget | null; diff --git a/dist/src/extension.d.ts.map b/dist/src/extension.d.ts.map index 18df830..8dc42b4 100644 --- a/dist/src/extension.d.ts.map +++ b/dist/src/extension.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/extension.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAOpD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,2BAA2B,EAC3B,cAAc,EACd,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,yBAAyB,EACzB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,KAAK,EAEL,MAAM,EACT,MAAM,SAAS,CAAC;AAOjB,2EAA2E;AAE3E,cAAM,SAAS;IACX;;OAEG;IAEH,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC;IACnB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,MAAM,CAAY;IAC1B,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,QAAQ,EAAE;QACN,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC;QACzC,aAAa,EAAE,cAAc,GAAG,IAAI,CAAC;QACrC,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;QACjC,SAAS,EAAE,qBAAqB,GAAG,IAAI,CAAC;QACxC,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC;QACzC,mBAAmB,EAAE,WAAW,GAAG,IAAI,CAAC;QACxC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;QAC9C,kBAAkB,EAAE,mBAAmB,GAAG,IAAI,CAAC;QAC/C,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;QACnC,qBAAqB,EAAE,sBAAsB,GAAG,IAAI,CAAC;KACxD,CAAC;gBAGE,QAAQ,EACF,YAAY,GACZ,kBAAkB,GAClB,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,qBAAqB,GACrB,yBAAyB,GACzB,2BAA2B,GAC3B,8BAA8B;IA6QxC,KAAK,cAAe,MAAM;;eAExB;IAEF,SAAS;;OAQP;IAEF,kBAAkB,kBAEhB;IAEF;;;OAGG;IACH,aAAa,QAAa,QAAQ,MAAM,GAAG,IAAI,CAAC,CAoB9C;IAEF,gBAAgB,eAEd;IAEF,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM;IAQjC,QAAQ;CAGX;AAED,eAAe,SAAS,CAAC"} \ No newline at end of file +{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/extension.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAOlE,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,2BAA2B,EAC3B,cAAc,EACd,sBAAsB,EACtB,8BAA8B,EAC9B,iBAAiB,EACjB,yBAAyB,EACzB,SAAS,EACT,WAAW,EACX,YAAY,EAEZ,gBAAgB,EAChB,cAAc,EACd,KAAK,EAEL,MAAM,EACT,MAAM,SAAS,CAAC;AAOjB,2EAA2E;AAE3E,cAAM,SAAS;IACX;;OAEG;IAEH,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC;IACnB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,MAAM,CAAY;IAC1B,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,QAAQ,EAAE;QACN,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC;QACzC,aAAa,EAAE,cAAc,GAAG,IAAI,CAAC;QACrC,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;QACjC,SAAS,EAAE,qBAAqB,GAAG,IAAI,CAAC;QACxC,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;QACjC,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC;QACzC,mBAAmB,EAAE,WAAW,GAAG,IAAI,CAAC;QACxC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;QAC9C,kBAAkB,EAAE,mBAAmB,GAAG,IAAI,CAAC;QAC/C,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;QACnC,qBAAqB,EAAE,sBAAsB,GAAG,IAAI,CAAC;KACxD,CAAC;gBAGE,QAAQ,EACF,YAAY,GACZ,kBAAkB,GAClB,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,qBAAqB,GACrB,yBAAyB,GACzB,2BAA2B,GAC3B,8BAA8B;IAqRxC,KAAK,cAAe,MAAM;;eAExB;IAEF,SAAS;;OAQP;IAEF,kBAAkB,kBAEhB;IAEF;;;OAGG;IACH,aAAa,QAAa,QAAQ,MAAM,GAAG,IAAI,CAAC,CAoB9C;IAEF,gBAAgB,eAEd;IAEF,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM;IAQjC,QAAQ;CAGX;AAED,eAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/dist/src/types.d.ts b/dist/src/types.d.ts index 23f5fdd..bf30db5 100644 --- a/dist/src/types.d.ts +++ b/dist/src/types.d.ts @@ -94,6 +94,14 @@ export declare interface ISidebarInitData { type: "WIDGET"; }; } +export declare interface IRTELocationInitData { + data: ICommonInitData & { + content_type: ICurrentContentType; + entry: ICurrentEntry; + locale: string; + changedData: ICurrentEntry; + }; +} export declare interface IFieldInitData { data: ICommonInitData & { entry: ICurrentEntry; diff --git a/dist/src/types.d.ts.map b/dist/src/types.d.ts.map index d31b495..114934d 100644 --- a/dist/src/types.d.ts.map +++ b/dist/src/types.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/RTE/types.tsx b/src/RTE/types.tsx index 1412168..1fc70ea 100644 --- a/src/RTE/types.tsx +++ b/src/RTE/types.tsx @@ -142,6 +142,10 @@ export declare interface IRteParam { setVariable: (name: string, value: T) => void; } +export declare interface IRTELocation { + [key: string]: any; +} + export declare type IRteParamWithPreventDefault = { rte: IRteParam; preventDefault: () => void; diff --git a/src/entry.ts b/src/entry.ts index 659bf82..310223a 100755 --- a/src/entry.ts +++ b/src/entry.ts @@ -5,6 +5,7 @@ import { ICurrentContentType, IFieldInitData, IFieldModifierLocationInitData, + IRTELocationInitData, ISidebarInitData, } from "./types"; import { @@ -32,6 +33,7 @@ class Entry { initializationData: | IFieldInitData | ISidebarInitData + | IRTELocationInitData | IFieldModifierLocationInitData, connection: any, emitter: EventEmitter, diff --git a/src/extension.ts b/src/extension.ts index b4ec606..6637ab4 100755 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,7 +2,7 @@ import postRobot from "post-robot"; import EventEmitter from "wolfy87-eventemitter"; import AssetSidebarWidget from "./AssetSidebarWidget"; -import { IRTEPluginInitializer } from "./RTE/types"; +import { IRTELocation, IRTEPluginInitializer } from "./RTE/types"; import { AppConfig } from "./appConfig"; import Entry from "./entry"; import Field from "./field"; @@ -30,6 +30,7 @@ import { ILocation, IPageWidget, IRTEInitData, + IRTELocationInitData, ISidebarInitData, ISidebarWidget, IUser, @@ -68,6 +69,7 @@ class Extension { SidebarWidget: ISidebarWidget | null; CustomField: ICustomField | null; RTEPlugin: IRTEPluginInitializer | null; + RTELocation: IRTELocation | null; AppConfigWidget: IAppConfigWidget | null; FullscreenAppWidget: IPageWidget | null; AssetSidebarWidget: AssetSidebarWidget | null; @@ -144,6 +146,7 @@ class Extension { CustomField: null, SidebarWidget: null, RTEPlugin: null, + RTELocation: null, AppConfigWidget: null, FullscreenAppWidget: null, AssetSidebarWidget: null, @@ -224,6 +227,13 @@ class Extension { case "RTE": { import("./RTE").then(({ rtePluginInitializer }) => { this.location.RTEPlugin = rtePluginInitializer; + this.location.RTELocation = { + entry: new Entry( + initializationData as IRTELocationInitData, + postRobot, + emitter + ), + } }); break; } diff --git a/src/types.ts b/src/types.ts index d1932da..5adb95c 100644 --- a/src/types.ts +++ b/src/types.ts @@ -120,6 +120,15 @@ export declare interface ISidebarInitData { }; } +export declare interface IRTELocationInitData { + data: ICommonInitData & { + content_type: ICurrentContentType; + entry: ICurrentEntry; + locale: string; + changedData: ICurrentEntry; + } +} + export declare interface IFieldInitData { data: ICommonInitData & { entry: ICurrentEntry; From 54a85c920253af76a7851c3279a8aa7542be0e3f Mon Sep 17 00:00:00 2001 From: Kirtesh Suthar Date: Thu, 10 Aug 2023 02:00:24 +0530 Subject: [PATCH 2/8] try: changing the event listener property name --- dist/index.js | 2 +- dist/index.js.map | 2 +- dist/src/entry.d.ts.map | 2 +- src/entry.ts | 1 + src/extension.ts | 4 ++-- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/dist/index.js b/dist/index.js index cdac528..07da817 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,3 +1,3 @@ /*! For license information please see index.js.LICENSE.txt */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ContentstackAppSDK=e():t.ContentstackAppSDK=e()}(this,(()=>{return t={957:function(t){"undefined"!=typeof self&&self,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/index.js")}({"./src/index.js":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={};function o(t){return"[object RegExp]"===Object.prototype.toString.call(t)}n.d(r,"cleanUpWindow",(function(){return Pt})),n.d(r,"Promise",(function(){return K})),n.d(r,"bridge",(function(){return St})),n.d(r,"init",(function(){return Tt})),n.d(r,"parent",(function(){return Ot})),n.d(r,"send",(function(){return pt})),n.d(r,"request",(function(){return ht})),n.d(r,"sendToParent",(function(){return yt})),n.d(r,"client",(function(){return vt})),n.d(r,"on",(function(){return gt})),n.d(r,"listen",(function(){return mt})),n.d(r,"once",(function(){return wt})),n.d(r,"listener",(function(){return bt})),n.d(r,"CONFIG",(function(){return R})),n.d(r,"CONSTANTS",(function(){return A})),n.d(r,"disable",(function(){return Et}));var i="mock:",a="file:",s="about:",u="Call was rejected by callee.\r\n";function c(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window).location.protocol===s}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t)try{if(t.parent&&t.parent!==t)return t.parent}catch(t){}}function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t&&!l(t))try{return t.opener}catch(t){}}function d(t){try{return t&&t.location&&t.location.href,!0}catch(t){}return!1}function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=t.location;if(!e)throw new Error("Can not read window location");var n=e.protocol;if(!n)throw new Error("Can not read window protocol");if(n===a)return a+"//";if(n===s){var r=l(t);return r&&d(r)?h(r):s+"//"}var o=e.host;if(!o)throw new Error("Can not read window host");return n+"//"+o}function p(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=h(t);return e&&t.mockDomain&&0===t.mockDomain.indexOf(i)?t.mockDomain:e}function y(t){try{if(t===window)return!0}catch(t){}try{var e=Object.getOwnPropertyDescriptor(t,"location");if(e&&!1===e.enumerable)return!1}catch(t){}try{if(c(t)&&d(t))return!0}catch(t){}try{if(h(t)===h(window))return!0}catch(t){}return!1}function v(t,e){if(!t||!e)return!1;var n=l(e);return n?n===t:-1!==function(t){var e=[];try{for(;t.parent!==t;)e.push(t.parent),t=t.parent}catch(t){}return e}(e).indexOf(t)}function _(t){var e=[],n=void 0;try{n=t.frames}catch(e){n=t}var r=void 0;try{r=n.length}catch(t){}if(0===r)return e;if(r){for(var o=0;o1&&void 0!==arguments[1])||arguments[1];try{if(t===window)return!1}catch(t){return!0}try{if(!t)return!0}catch(t){return!0}try{if(t.closed)return!0}catch(t){return!t||t.message!==u}if(e&&function(t){if(!y(t))return!1;try{if(t===window)return!0;if(c(t)&&d(t))return!0;if(p(window)===p(t))return!0}catch(t){}return!1}(t))try{if(t.mockclosed)return!0}catch(t){}try{if(!t.parent||!t.top)return!0}catch(t){}var n=function(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window;return f(t=t||window)||l(t)||void 0}function E(t,e){if("string"==typeof t){if("string"==typeof e)return"*"===t||e===t;if(o(e))return!1;if(Array.isArray(e))return!1}return o(t)?o(e)?t.toString()===e.toString():!Array.isArray(e)&&Boolean(e.match(t)):!!Array.isArray(t)&&(Array.isArray(e)?JSON.stringify(t)===JSON.stringify(e):!o(e)&&t.some((function(t){return E(t,e)})))}function O(t){try{if(t===window)return!0}catch(t){if(t&&t.message===u)return!0}try{if("[object Window]"===Object.prototype.toString.call(t))return!0}catch(t){if(t&&t.message===u)return!0}try{if(window.Window&&t instanceof window.Window)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.self===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.parent===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.top===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&"__unlikely_value__"===t.__cross_domain_utils_window_check__)return!1}catch(t){return!0}return!1}function P(t,e){for(var n=0;n>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var t=new WeakMap,e={};return Object.freeze(e),t.set(e,"__testvalue__"),"__testvalue__"===t.get(e)}catch(t){return!1}}())try{this.weakmap=new WeakMap}catch(t){}this.keys=[],this.values=[]}return t.prototype._cleanupClosedWindows=function(){for(var t=this.weakmap,e=this.keys,n=0;n1&&void 0!==arguments[1]?arguments[1]:1;if(e>=3)return"stringifyError stack overflow";try{if(!t)return"";if("string"==typeof t)return t;if(t instanceof Error){var n=t&&t.stack,r=t&&t.message;if(n&&r)return-1!==n.indexOf(r)?n:r+"\n"+n;if(n)return n;if(r)return r}return"function"==typeof t.toString?t.toString():Object.prototype.toString.call(t)}catch(t){return"Error while stringifying error: "+j(t,e+1)}}var M=function(t){if(!t)return t;var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}};function x(){}function C(){var t="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return t.charAt(Math.floor(Math.random()*t.length))}))}function L(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n>=100)throw new Error("Self-referential object passed, or object contained too many layers");var r=void 0;if("object"!==(void 0===t?"undefined":k(t))||null===t||Array.isArray(t)){if(!Array.isArray(t))throw new TypeError("Invalid type: "+(void 0===t?"undefined":k(t)));r=[]}else r={};return function(t,e){Array.isArray(t)?function(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},r=C(),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(f(t))}()?A.WINDOW_TYPES.POPUP:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(l(t))}()?A.WINDOW_TYPES.IFRAME:A.WINDOW_TYPES.FULLPAGE,i=p(window);return et({},e,n,{sourceDomain:i,id:e.id||r,windowType:o})}(t,e,{data:function(t,n,r){return L({obj:e.data},(function(e,r){return"function"==typeof e?Z(t,n,e,r.toString()):e instanceof Error?(o=e,{__type__:A.SERIALIZATION_TYPES.ERROR,__message__:j(o),__code__:o.code}):window.Promise&&e instanceof window.Promise?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):K.isPromise(e)?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.ZALGO_PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):I(e)?(i=e,{__type__:A.SERIALIZATION_TYPES.REGEX,__source__:i.source}):void 0;var o,i})).obj}(t,n),domain:n}),t===window&&!R.ALLOW_SAME_ORIGIN)throw new Error("Attemping to send message to self");if(w(t))throw new Error("Window is closed");var o=[],i=function(t,e,n){var r=void 0,o=void 0;try{if("{}"!==JSON.stringify({})&&(r=Object.prototype.toJSON,delete Object.prototype.toJSON),"{}"!==JSON.stringify({}))throw new Error("Can not correctly serialize JSON objects");if("[]"!==JSON.stringify([])&&(o=Array.prototype.toJSON,delete Array.prototype.toJSON),"[]"!==JSON.stringify([]))throw new Error("Can not correctly serialize JSON objects")}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}var i=JSON.stringify.call(this,t,null,2);try{r&&(Object.prototype.toJSON=r),o&&(Array.prototype.toJSON=o)}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}return i}(((r={})[A.WINDOW_PROPS.POSTROBOT]=e,r));return K.map(Object.keys(tt),(function(e){return K.try((function(){if(!R.ALLOWED_POST_MESSAGE_METHODS[e])throw new Error("Strategy disallowed: "+e);return tt[e](t,i,n)})).then((function(){return o.push(e+": success"),!0}),(function(t){return o.push(e+": "+j(t)+"\n"),!1}))})).then((function(t){var n=t.some(Boolean),r=e.type+" "+e.name+" "+(n?"success":"error")+":\n - "+o.join("\n - ")+"\n";if(!n)throw new Error(r)}))}))}H.responseListeners=H.responseListeners||{},H.requestListeners=H.requestListeners||{},H.WINDOW_WILDCARD=H.WINDOW_WILDCARD||new function(){},H.erroredResponseListeners=H.erroredResponseListeners||{};var rt;function ot(t){return H.responseListeners[t]}function it(t){delete H.responseListeners[t]}function at(t){return Boolean(H.erroredResponseListeners[t])}function st(t){var e=t.name,n=t.win,r=t.domain;if(n===A.WILDCARD&&(n=null),r===A.WILDCARD&&(r=null),!e)throw new Error("Name required to get request listener");var o=H.requestListeners[e];if(o)for(var i=0,a=[n,H.WINDOW_WILDCARD],s=null==a?0:a.length;i0&&void 0!==arguments[0]?arguments[0]:window;try{if(t.top)return t.top}catch(t){}if(l(t)===t)return t;try{if(v(window,t)&&window.top)return window.top}catch(t){}try{if(v(t,window)&&window.top)return window.top}catch(t){}for(var e=0,n=function t(e){for(var n=[],r=0,o=_(e),i=null==o?0:o.length;r1&&void 0!==arguments[1]?arguments[1]:5e3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Window",r=H.readyPromises.get(t);return r||(r=new K,H.readyPromises.set(t,r),-1!==e&&setTimeout((function(){return r.reject(new Error(n+" did not load after "+e+"ms"))}),e),r)}(i,t.timeout||R.CHILD_WINDOW_TIMEOUT)})).then((function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)&&!t)return X(i)})).then((function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)){if(!E(r,n))throw new Error("Remote window domain "+n+" does not match regex: "+r.toString());r=n}if("string"!=typeof r&&!Array.isArray(r))throw new TypeError("Expected domain to be a string or array");var o=r;return new K((function(n,r){var l=void 0;if(t.fireAndForget||function(t,e){H.responseListeners[t]=e}(a,l={name:e,window:i,domain:o,respond:function(t,e){t||(s=!0,u.splice(u.indexOf(c,1))),t?r(t):n(e)}}),nt(i,{type:A.POST_MESSAGE_TYPE.REQUEST,hash:a,name:e,data:t.data,fireAndForget:t.fireAndForget},o).catch(r),t.fireAndForget)return n();var f=R.ACK_TIMEOUT,d=t.timeout||R.RES_TIMEOUT,h=100;setTimeout((function n(){if(!s){if(w(i))return l.ack?r(new Error("Window closed for "+e+" before response")):r(new Error("Window closed for "+e+" before ack"));if(f=Math.max(f-h,0),-1!==d&&(d=Math.max(d-h,0)),l.ack){if(-1===d)return;h=Math.min(d,2e3)}else{if(0===f)return r(new Error("No ack for postMessage "+e+" in "+p()+" in "+R.ACK_TIMEOUT+"ms"));if(0===d)return r(new Error("No response for postMessage "+e+" in "+p()+" in "+(t.timeout||R.RES_TIMEOUT)+"ms"))}setTimeout(n,h)}}),h)}))}));return c.catch((function(){!function(t){H.erroredResponseListeners[t]=!0}(a),it(a)})),u.push(c),c}))}function pt(t,e,n,r){return(r=r||{}).window=t,r.name=e,r.data=n,ht(r)}function yt(t,e,n){var r=b();return r?pt(r,t,e,n):new K((function(t,e){return e(new Error("Window does not have a parent"))}))}function vt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!t.window)throw new Error("Expected options.window");var e=t.window;return{send:function(n,r){return pt(e,n,r,t)}}}H.receivedMessages=H.receivedMessages||[],H.receiveMessage=ft,H.requestPromises=H.requestPromises||new T,H.send=pt;var _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function mt(t){if(!t.name)throw new Error("Expected options.name");if(!t.handler)throw new Error("Expected options.handler");var e,n=t.name,r=t.window,o=t.domain,i={handler:t.handler,handleError:t.errorHandler||function(t){throw t},window:r,domain:o||A.WILDCARD,name:n},a=function t(e,n){var r=e.name,o=e.win,i=e.domain;if(!r||"string"!=typeof r)throw new Error("Name required to add request listener");if(Array.isArray(o)){for(var a=[],s=0,u=o,c=null==u?0:u.length;s1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"function"==typeof e&&(n=e,e={}),e=e||{},n=n||e.handler;var r=e.errorHandler,o=new K((function(o,i){(e=e||{}).name=t,e.once=!0,e.handler=function(t){if(o(t),n)return n(t)},e.errorHandler=function(t){if(i(t),r)return r(t)}})),i=mt(e);return o.cancel=i.cancel,o}function bt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{on:function(e,n){return gt(e,t,n)}}}function Et(){delete window[A.WINDOW_PROPS.POSTROBOT],window.removeEventListener("message",dt)}H.on=gt;var Ot=b();function Pt(t){var e=H.requestPromises.get(t);if(e)for(var n=0,r=null==e?0:e.length;n{t.exports=n(957),t.exports.default=t.exports},979:function(t,e,n){"use strict";var r=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=["file","reference","blocks","group","global_field"],r=function(){function t(t,e,n){this.uid=t.data.uid,this.data_type=t.data.schema.data_type,this.schema=t.data.schema,this._emitter=n;var r,o,i,a,s=(r=this,i=o=t.data.value,a=o,"file"===r.data_type&&(o?(i=o,a=!0===r.schema.multiple?o.map((function(t){return t.uid})):o.uid):!0===r.schema.multiple&&(i=[],a=[])),{resolvedData:i,unResolvedData:a});this._data=s.unResolvedData,this._resolvedData=s.resolvedData,this._connection=e,this._self=t.data.self||!1;var u=this;n.on("updateFields",(function(t){var e=u.uid.split("."),n=t.data;e.forEach((function(t){n&&(n=n[t])})),u._data!==n&&(u._data=n)}))}return t.prototype.setData=function(t){var e=this,r=this,o={data:t,uid:r.uid,self:r._self};return r._self||-1===n.indexOf(r.data_type)&&r.data_type?this._connection.sendToParent("setData",o).then((function(){return e._data=t,Promise.resolve(r)})).catch((function(t){return Promise.reject(t)})):Promise.reject(new Error("Cannot call set data for current field type"))},t.prototype.getData=function(t){var e=(void 0===t?{}:t).resolved;return void 0!==e&&e?this._resolvedData:this._data},t.prototype.setFocus=function(){return this._connection.sendToParent("focus")},t.prototype.onChange=function(t){var e=this;if(!t||"function"!=typeof t)throw Error("Callback must be a function");this._emitter.on("extensionFieldChange",(function(n){e._data=n.data,e._resolvedData=n.data,t(n.data)}))},t}();e.default=r},632:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),a=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&i(e,t,n);return a(e,t),e},u=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},c=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(974),o=function(){function t(){var t;if(!Object.prototype.hasOwnProperty.call(window,"iframeRef")){var e=(0,r.getPreferredBodyElement)(null===(t=null===document||void 0===document?void 0:document.body)||void 0===t?void 0:t.children);window.iframeRef=e}}return t.prototype.setBackgroundElement=function(t){window.iframeRef=t},t}();e.default=o},160:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},a=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getReferences=e.includeReference=e.includeSchema=e.includeContentType=e.includeOwner=e.environment=e.language=e.addQuery=e.addParam=e._type=e.mergeDeep=e.merge=e.transform=void 0,e.transform=function(t){return function(){switch(arguments.length){case 1:if(Array.isArray(arguments[0])||"string"==typeof arguments[0])return e=(e=this._query[t+"[BASE]"]||[]).concat(arguments[0]),this._query[t+"[BASE]"]=e,this;throw Error("Kindly provide valid parameters");case 2:var e;if("string"==typeof arguments[0]&&(Array.isArray(arguments[1])||"string"==typeof arguments[1]))return e=(e=this._query[t+"["+arguments[0]+"]"]||[]).concat(arguments[1]),this._query[t+"["+arguments[0]+"]"]=e,this;throw Error("Kindly provide valid parameters");default:throw Error("Kindly provide valid parameters")}}},e.merge=function(t,e){var n=t;return t&&e&&Object.keys(e).forEach((function(t){n[t]=e[t]})),n},e.mergeDeep=function(t,e){var n=t,r=this,o=function(t,e){var n=t;Object.keys(e).forEach((function(t){"object"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?o(n[t],e[t]):"array"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?n[t]=n[t].concat(e[t]):n[t]=e[t]}))};return o(n,e),n},e._type=function(t){var e=typeof t;return"object"===e&&Array.isArray(t)&&(e="array"),e},e.addParam=function(t,e){if(t&&"string"==typeof t&&e&&"string"==typeof e)return this._query[t]=e,this;throw Error("Kindly provide valid parameters.")},e.addQuery=function(t,e){if(t&&e&&"string"==typeof t)return this._query[t]=e,this;throw Error("First argument should be a String.")},e.language=function(t){if(t&&"string"==typeof t)return this._query.locale=t,this;throw Error("Argument should be a String.")},e.environment=function(t){if(t&&"string"==typeof t)return this._query.environment=t,this;throw Error("Argument should be a String.")},e.includeOwner=function(){return this._query.include_owner=!0,this},e.includeContentType=function(){return this._query.include_content_type=!0,this},e.includeSchema=function(){return this._query.include_schema=!0,this},e.includeReference=function(t){if(Array.isArray(t))for(var e=0;e{"use strict";function n(t){return Promise.reject(t)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t){this._connection=t}return t.prototype.get=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"get",key:t}).then((function(t){return Promise.resolve(t.data)})).catch(n)},t.prototype.getAll=function(){return this._connection.sendToParent("store",{action:"getAll"}).then((function(t){var e=t.data,n=void 0===e?{}:e;return Promise.resolve(n)})).catch(n)},t.prototype.set=function(t,e){if(!t||!e||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"set",key:t,value:e}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.remove=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"remove",key:t}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.clear=function(){return this._connection.sendToParent("store",{action:"clear"}).then((function(){return Promise.resolve(!0)})).catch(n)},t}();e.default=r},699:(t,e)=>{"use strict";var n,r;Object.defineProperty(e,"__esModule",{value:!0}),e.Region=e.OrganizationLocation=e.StackLocation=void 0,(r=e.StackLocation||(e.StackLocation={})).STACK_CONFIG="cs.cm.stack.config",r.DASHBOARD="cs.cm.stack.dashboard",r.SIDEBAR="cs.cm.stack.sidebar",r.CUSTOM_FIELD="cs.cm.stack.custom_field",r.RTE="cs.cm.stack.rte",(e.OrganizationLocation||(e.OrganizationLocation={})).ORG_CONFIG="cs.org.config",(n=e.Region||(e.Region={})).UNKNOWN="UNKNOWN",n.NA="NA",n.EU="EU",n.AZURE_NA="AZURE_NA",n.AZURE_EU="AZURE_EU"},194:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ERROR_MESSAGES=void 0,e.ERROR_MESSAGES=Object.freeze({configPage:{setValidity:{isValidTypeBoolean:"isValid should be a boolean",messageTypeString:"message should be a string"}},entryField:{entry:{tagsShouldNotBeBlank:"Tags cannot be blank",tagsShouldBeArrayOfStrings:"Tags must be an array of strings"},frame:{dimensionHeightShouldBeNumber:"Dimension height must be a number",dimensionWidthShouldBeNumber:"Dimension width must be a number"}}}),e.default=function(t){return"Contentstack App SDK: "+t}},974:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getPreferredBodyElement=e.formatAppRegion=e.onError=e.onData=void 0;var r=n(699);e.onData=function(t){return"string"==typeof t.data?Promise.reject(t.data):Promise.resolve(t.data)},e.onError=function(t){return Promise.reject(t)},e.formatAppRegion=function(t){switch(t){case"NA":return r.Region.NA;case"EU":return r.Region.EU;case"AZURE_NA":return r.Region.AZURE_NA;case"AZURE_EU":return r.Region.AZURE_EU;default:return r.Region.UNKNOWN}},e.getPreferredBodyElement=function(t){var e,n=1/0,r=["HEADER","NAV","MAIN","SECTION","ARTICLE","ASIDE","FOOTER","DIV"],o=["SCRIPT","NOSCRIPT","STYLE","TEMPLATE"];return Array.from(t).forEach((function(t){var o=r.indexOf(t.nodeName);o>=0&&o{"use strict";t.exports=JSON.parse('{"name":"@contentstack/app-sdk","version":"1.6.0","types":"dist/src/index.d.ts","description":"This SDK helps connect to the development server of the Contentstack and sync the data.","main":"dist/index.js","repository":"https://github.com/contentstack/app-sdk","scripts":{"prepublish":"npm run build","build":"webpack","test":"jest","test:watch":"jest --watchAll","test:coverage":"jest --coverage --coverageDirectory=\\"coverage\\"","dev":"webpack --watch --mode development","lint":"eslint . --ext .ts --max-warnings=0","docs":"typedoc --out doc --entryPointStrategy expand ./src","prettier":"npx prettier src --check","prettier:fix":"npx prettier src --write","lint:fix":"eslint --fix","prepare":"npm run build && husky install","format":"npm run prettier:fix && npm run lint:fix"},"keywords":[],"author":{"name":"Contentstack","url":"https://www.contentstack.com/"},"maintainers":[{"name":"Deepak Kharah","email":"deepak.kharah@contentstack.com"}],"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.3.1","@testing-library/jest-dom":"^5.16.5","@types/chai":"^4.2.22","@types/jest":"^27.0.2","@types/post-robot":"^10.0.3","@types/react":"^17.0.18","@typescript-eslint/eslint-plugin":"^5.10.1","@typescript-eslint/parser":"^5.10.1","babel-loader":"^9.1.0","chai":"^4.3.4","css-loader":"^5.2.2","eslint":"^8.7.0","eslint-plugin-only-warn":"^1.1.0","husky":"^8.0.0","jest":"^27.3.1","lint-staged":"^13.1.0","react":"^17.0.2","slate":"^0.72.3","ts-jest":"^27.0.7","ts-loader":"^8.1.0","ts-node":"^10.3.0","typedoc":"^0.22.17","typescript":"^4.4.4","webpack":"^5.65.0","webpack-cli":"^4.9.1","webpack-dev-server":"^4.7.3"},"dependencies":{"loader-utils":"^3.2.1","post-robot":"^8.0.31","wolfy87-eventemitter":"^5.2.9"},"files":["dist"],"lint-staged":{"src/**/*.{ts,css,md}":["npm run prettier:fix ","npm run lint:fix"]}}')}},e={},function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r].call(i.exports,i,i.exports,n),i.exports}(607);var t,e})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ContentstackAppSDK=e():t.ContentstackAppSDK=e()}(this,(()=>{return t={957:function(t){"undefined"!=typeof self&&self,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/index.js")}({"./src/index.js":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={};function o(t){return"[object RegExp]"===Object.prototype.toString.call(t)}n.d(r,"cleanUpWindow",(function(){return Pt})),n.d(r,"Promise",(function(){return K})),n.d(r,"bridge",(function(){return St})),n.d(r,"init",(function(){return Tt})),n.d(r,"parent",(function(){return Ot})),n.d(r,"send",(function(){return pt})),n.d(r,"request",(function(){return ht})),n.d(r,"sendToParent",(function(){return yt})),n.d(r,"client",(function(){return vt})),n.d(r,"on",(function(){return gt})),n.d(r,"listen",(function(){return mt})),n.d(r,"once",(function(){return wt})),n.d(r,"listener",(function(){return bt})),n.d(r,"CONFIG",(function(){return R})),n.d(r,"CONSTANTS",(function(){return A})),n.d(r,"disable",(function(){return Et}));var i="mock:",a="file:",s="about:",u="Call was rejected by callee.\r\n";function c(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window).location.protocol===s}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t)try{if(t.parent&&t.parent!==t)return t.parent}catch(t){}}function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t&&!l(t))try{return t.opener}catch(t){}}function d(t){try{return t&&t.location&&t.location.href,!0}catch(t){}return!1}function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=t.location;if(!e)throw new Error("Can not read window location");var n=e.protocol;if(!n)throw new Error("Can not read window protocol");if(n===a)return a+"//";if(n===s){var r=l(t);return r&&d(r)?h(r):s+"//"}var o=e.host;if(!o)throw new Error("Can not read window host");return n+"//"+o}function p(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=h(t);return e&&t.mockDomain&&0===t.mockDomain.indexOf(i)?t.mockDomain:e}function y(t){try{if(t===window)return!0}catch(t){}try{var e=Object.getOwnPropertyDescriptor(t,"location");if(e&&!1===e.enumerable)return!1}catch(t){}try{if(c(t)&&d(t))return!0}catch(t){}try{if(h(t)===h(window))return!0}catch(t){}return!1}function v(t,e){if(!t||!e)return!1;var n=l(e);return n?n===t:-1!==function(t){var e=[];try{for(;t.parent!==t;)e.push(t.parent),t=t.parent}catch(t){}return e}(e).indexOf(t)}function _(t){var e=[],n=void 0;try{n=t.frames}catch(e){n=t}var r=void 0;try{r=n.length}catch(t){}if(0===r)return e;if(r){for(var o=0;o1&&void 0!==arguments[1])||arguments[1];try{if(t===window)return!1}catch(t){return!0}try{if(!t)return!0}catch(t){return!0}try{if(t.closed)return!0}catch(t){return!t||t.message!==u}if(e&&function(t){if(!y(t))return!1;try{if(t===window)return!0;if(c(t)&&d(t))return!0;if(p(window)===p(t))return!0}catch(t){}return!1}(t))try{if(t.mockclosed)return!0}catch(t){}try{if(!t.parent||!t.top)return!0}catch(t){}var n=function(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window;return f(t=t||window)||l(t)||void 0}function E(t,e){if("string"==typeof t){if("string"==typeof e)return"*"===t||e===t;if(o(e))return!1;if(Array.isArray(e))return!1}return o(t)?o(e)?t.toString()===e.toString():!Array.isArray(e)&&Boolean(e.match(t)):!!Array.isArray(t)&&(Array.isArray(e)?JSON.stringify(t)===JSON.stringify(e):!o(e)&&t.some((function(t){return E(t,e)})))}function O(t){try{if(t===window)return!0}catch(t){if(t&&t.message===u)return!0}try{if("[object Window]"===Object.prototype.toString.call(t))return!0}catch(t){if(t&&t.message===u)return!0}try{if(window.Window&&t instanceof window.Window)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.self===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.parent===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.top===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&"__unlikely_value__"===t.__cross_domain_utils_window_check__)return!1}catch(t){return!0}return!1}function P(t,e){for(var n=0;n>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var t=new WeakMap,e={};return Object.freeze(e),t.set(e,"__testvalue__"),"__testvalue__"===t.get(e)}catch(t){return!1}}())try{this.weakmap=new WeakMap}catch(t){}this.keys=[],this.values=[]}return t.prototype._cleanupClosedWindows=function(){for(var t=this.weakmap,e=this.keys,n=0;n1&&void 0!==arguments[1]?arguments[1]:1;if(e>=3)return"stringifyError stack overflow";try{if(!t)return"";if("string"==typeof t)return t;if(t instanceof Error){var n=t&&t.stack,r=t&&t.message;if(n&&r)return-1!==n.indexOf(r)?n:r+"\n"+n;if(n)return n;if(r)return r}return"function"==typeof t.toString?t.toString():Object.prototype.toString.call(t)}catch(t){return"Error while stringifying error: "+j(t,e+1)}}var M=function(t){if(!t)return t;var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}};function x(){}function C(){var t="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return t.charAt(Math.floor(Math.random()*t.length))}))}function L(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n>=100)throw new Error("Self-referential object passed, or object contained too many layers");var r=void 0;if("object"!==(void 0===t?"undefined":k(t))||null===t||Array.isArray(t)){if(!Array.isArray(t))throw new TypeError("Invalid type: "+(void 0===t?"undefined":k(t)));r=[]}else r={};return function(t,e){Array.isArray(t)?function(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},r=C(),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(f(t))}()?A.WINDOW_TYPES.POPUP:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(l(t))}()?A.WINDOW_TYPES.IFRAME:A.WINDOW_TYPES.FULLPAGE,i=p(window);return et({},e,n,{sourceDomain:i,id:e.id||r,windowType:o})}(t,e,{data:function(t,n,r){return L({obj:e.data},(function(e,r){return"function"==typeof e?Z(t,n,e,r.toString()):e instanceof Error?(o=e,{__type__:A.SERIALIZATION_TYPES.ERROR,__message__:j(o),__code__:o.code}):window.Promise&&e instanceof window.Promise?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):K.isPromise(e)?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.ZALGO_PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):I(e)?(i=e,{__type__:A.SERIALIZATION_TYPES.REGEX,__source__:i.source}):void 0;var o,i})).obj}(t,n),domain:n}),t===window&&!R.ALLOW_SAME_ORIGIN)throw new Error("Attemping to send message to self");if(w(t))throw new Error("Window is closed");var o=[],i=function(t,e,n){var r=void 0,o=void 0;try{if("{}"!==JSON.stringify({})&&(r=Object.prototype.toJSON,delete Object.prototype.toJSON),"{}"!==JSON.stringify({}))throw new Error("Can not correctly serialize JSON objects");if("[]"!==JSON.stringify([])&&(o=Array.prototype.toJSON,delete Array.prototype.toJSON),"[]"!==JSON.stringify([]))throw new Error("Can not correctly serialize JSON objects")}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}var i=JSON.stringify.call(this,t,null,2);try{r&&(Object.prototype.toJSON=r),o&&(Array.prototype.toJSON=o)}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}return i}(((r={})[A.WINDOW_PROPS.POSTROBOT]=e,r));return K.map(Object.keys(tt),(function(e){return K.try((function(){if(!R.ALLOWED_POST_MESSAGE_METHODS[e])throw new Error("Strategy disallowed: "+e);return tt[e](t,i,n)})).then((function(){return o.push(e+": success"),!0}),(function(t){return o.push(e+": "+j(t)+"\n"),!1}))})).then((function(t){var n=t.some(Boolean),r=e.type+" "+e.name+" "+(n?"success":"error")+":\n - "+o.join("\n - ")+"\n";if(!n)throw new Error(r)}))}))}H.responseListeners=H.responseListeners||{},H.requestListeners=H.requestListeners||{},H.WINDOW_WILDCARD=H.WINDOW_WILDCARD||new function(){},H.erroredResponseListeners=H.erroredResponseListeners||{};var rt;function ot(t){return H.responseListeners[t]}function it(t){delete H.responseListeners[t]}function at(t){return Boolean(H.erroredResponseListeners[t])}function st(t){var e=t.name,n=t.win,r=t.domain;if(n===A.WILDCARD&&(n=null),r===A.WILDCARD&&(r=null),!e)throw new Error("Name required to get request listener");var o=H.requestListeners[e];if(o)for(var i=0,a=[n,H.WINDOW_WILDCARD],s=null==a?0:a.length;i0&&void 0!==arguments[0]?arguments[0]:window;try{if(t.top)return t.top}catch(t){}if(l(t)===t)return t;try{if(v(window,t)&&window.top)return window.top}catch(t){}try{if(v(t,window)&&window.top)return window.top}catch(t){}for(var e=0,n=function t(e){for(var n=[],r=0,o=_(e),i=null==o?0:o.length;r1&&void 0!==arguments[1]?arguments[1]:5e3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Window",r=H.readyPromises.get(t);return r||(r=new K,H.readyPromises.set(t,r),-1!==e&&setTimeout((function(){return r.reject(new Error(n+" did not load after "+e+"ms"))}),e),r)}(i,t.timeout||R.CHILD_WINDOW_TIMEOUT)})).then((function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)&&!t)return X(i)})).then((function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)){if(!E(r,n))throw new Error("Remote window domain "+n+" does not match regex: "+r.toString());r=n}if("string"!=typeof r&&!Array.isArray(r))throw new TypeError("Expected domain to be a string or array");var o=r;return new K((function(n,r){var l=void 0;if(t.fireAndForget||function(t,e){H.responseListeners[t]=e}(a,l={name:e,window:i,domain:o,respond:function(t,e){t||(s=!0,u.splice(u.indexOf(c,1))),t?r(t):n(e)}}),nt(i,{type:A.POST_MESSAGE_TYPE.REQUEST,hash:a,name:e,data:t.data,fireAndForget:t.fireAndForget},o).catch(r),t.fireAndForget)return n();var f=R.ACK_TIMEOUT,d=t.timeout||R.RES_TIMEOUT,h=100;setTimeout((function n(){if(!s){if(w(i))return l.ack?r(new Error("Window closed for "+e+" before response")):r(new Error("Window closed for "+e+" before ack"));if(f=Math.max(f-h,0),-1!==d&&(d=Math.max(d-h,0)),l.ack){if(-1===d)return;h=Math.min(d,2e3)}else{if(0===f)return r(new Error("No ack for postMessage "+e+" in "+p()+" in "+R.ACK_TIMEOUT+"ms"));if(0===d)return r(new Error("No response for postMessage "+e+" in "+p()+" in "+(t.timeout||R.RES_TIMEOUT)+"ms"))}setTimeout(n,h)}}),h)}))}));return c.catch((function(){!function(t){H.erroredResponseListeners[t]=!0}(a),it(a)})),u.push(c),c}))}function pt(t,e,n,r){return(r=r||{}).window=t,r.name=e,r.data=n,ht(r)}function yt(t,e,n){var r=b();return r?pt(r,t,e,n):new K((function(t,e){return e(new Error("Window does not have a parent"))}))}function vt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!t.window)throw new Error("Expected options.window");var e=t.window;return{send:function(n,r){return pt(e,n,r,t)}}}H.receivedMessages=H.receivedMessages||[],H.receiveMessage=ft,H.requestPromises=H.requestPromises||new T,H.send=pt;var _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function mt(t){if(!t.name)throw new Error("Expected options.name");if(!t.handler)throw new Error("Expected options.handler");var e,n=t.name,r=t.window,o=t.domain,i={handler:t.handler,handleError:t.errorHandler||function(t){throw t},window:r,domain:o||A.WILDCARD,name:n},a=function t(e,n){var r=e.name,o=e.win,i=e.domain;if(!r||"string"!=typeof r)throw new Error("Name required to add request listener");if(Array.isArray(o)){for(var a=[],s=0,u=o,c=null==u?0:u.length;s1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"function"==typeof e&&(n=e,e={}),e=e||{},n=n||e.handler;var r=e.errorHandler,o=new K((function(o,i){(e=e||{}).name=t,e.once=!0,e.handler=function(t){if(o(t),n)return n(t)},e.errorHandler=function(t){if(i(t),r)return r(t)}})),i=mt(e);return o.cancel=i.cancel,o}function bt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{on:function(e,n){return gt(e,t,n)}}}function Et(){delete window[A.WINDOW_PROPS.POSTROBOT],window.removeEventListener("message",dt)}H.on=gt;var Ot=b();function Pt(t){var e=H.requestPromises.get(t);if(e)for(var n=0,r=null==e?0:e.length;n{t.exports=n(957),t.exports.default=t.exports},979:function(t,e,n){"use strict";var r=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=["file","reference","blocks","group","global_field"],r=function(){function t(t,e,n){this.uid=t.data.uid,this.data_type=t.data.schema.data_type,this.schema=t.data.schema,this._emitter=n;var r,o,i,a,s=(r=this,i=o=t.data.value,a=o,"file"===r.data_type&&(o?(i=o,a=!0===r.schema.multiple?o.map((function(t){return t.uid})):o.uid):!0===r.schema.multiple&&(i=[],a=[])),{resolvedData:i,unResolvedData:a});this._data=s.unResolvedData,this._resolvedData=s.resolvedData,this._connection=e,this._self=t.data.self||!1;var u=this;n.on("updateFields",(function(t){var e=u.uid.split("."),n=t.data;e.forEach((function(t){n&&(n=n[t])})),u._data!==n&&(u._data=n)}))}return t.prototype.setData=function(t){var e=this,r=this,o={data:t,uid:r.uid,self:r._self};return r._self||-1===n.indexOf(r.data_type)&&r.data_type?this._connection.sendToParent("setData",o).then((function(){return e._data=t,Promise.resolve(r)})).catch((function(t){return Promise.reject(t)})):Promise.reject(new Error("Cannot call set data for current field type"))},t.prototype.getData=function(t){var e=(void 0===t?{}:t).resolved;return void 0!==e&&e?this._resolvedData:this._data},t.prototype.setFocus=function(){return this._connection.sendToParent("focus")},t.prototype.onChange=function(t){var e=this;if(!t||"function"!=typeof t)throw Error("Callback must be a function");this._emitter.on("extensionFieldChange",(function(n){e._data=n.data,e._resolvedData=n.data,t(n.data)}))},t}();e.default=r},632:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),a=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&i(e,t,n);return a(e,t),e},u=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},c=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(974),o=function(){function t(){var t;if(!Object.prototype.hasOwnProperty.call(window,"iframeRef")){var e=(0,r.getPreferredBodyElement)(null===(t=null===document||void 0===document?void 0:document.body)||void 0===t?void 0:t.children);window.iframeRef=e}}return t.prototype.setBackgroundElement=function(t){window.iframeRef=t},t}();e.default=o},160:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},a=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getReferences=e.includeReference=e.includeSchema=e.includeContentType=e.includeOwner=e.environment=e.language=e.addQuery=e.addParam=e._type=e.mergeDeep=e.merge=e.transform=void 0,e.transform=function(t){return function(){switch(arguments.length){case 1:if(Array.isArray(arguments[0])||"string"==typeof arguments[0])return e=(e=this._query[t+"[BASE]"]||[]).concat(arguments[0]),this._query[t+"[BASE]"]=e,this;throw Error("Kindly provide valid parameters");case 2:var e;if("string"==typeof arguments[0]&&(Array.isArray(arguments[1])||"string"==typeof arguments[1]))return e=(e=this._query[t+"["+arguments[0]+"]"]||[]).concat(arguments[1]),this._query[t+"["+arguments[0]+"]"]=e,this;throw Error("Kindly provide valid parameters");default:throw Error("Kindly provide valid parameters")}}},e.merge=function(t,e){var n=t;return t&&e&&Object.keys(e).forEach((function(t){n[t]=e[t]})),n},e.mergeDeep=function(t,e){var n=t,r=this,o=function(t,e){var n=t;Object.keys(e).forEach((function(t){"object"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?o(n[t],e[t]):"array"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?n[t]=n[t].concat(e[t]):n[t]=e[t]}))};return o(n,e),n},e._type=function(t){var e=typeof t;return"object"===e&&Array.isArray(t)&&(e="array"),e},e.addParam=function(t,e){if(t&&"string"==typeof t&&e&&"string"==typeof e)return this._query[t]=e,this;throw Error("Kindly provide valid parameters.")},e.addQuery=function(t,e){if(t&&e&&"string"==typeof t)return this._query[t]=e,this;throw Error("First argument should be a String.")},e.language=function(t){if(t&&"string"==typeof t)return this._query.locale=t,this;throw Error("Argument should be a String.")},e.environment=function(t){if(t&&"string"==typeof t)return this._query.environment=t,this;throw Error("Argument should be a String.")},e.includeOwner=function(){return this._query.include_owner=!0,this},e.includeContentType=function(){return this._query.include_content_type=!0,this},e.includeSchema=function(){return this._query.include_schema=!0,this},e.includeReference=function(t){if(Array.isArray(t))for(var e=0;e{"use strict";function n(t){return Promise.reject(t)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t){this._connection=t}return t.prototype.get=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"get",key:t}).then((function(t){return Promise.resolve(t.data)})).catch(n)},t.prototype.getAll=function(){return this._connection.sendToParent("store",{action:"getAll"}).then((function(t){var e=t.data,n=void 0===e?{}:e;return Promise.resolve(n)})).catch(n)},t.prototype.set=function(t,e){if(!t||!e||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"set",key:t,value:e}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.remove=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"remove",key:t}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.clear=function(){return this._connection.sendToParent("store",{action:"clear"}).then((function(){return Promise.resolve(!0)})).catch(n)},t}();e.default=r},699:(t,e)=>{"use strict";var n,r;Object.defineProperty(e,"__esModule",{value:!0}),e.Region=e.OrganizationLocation=e.StackLocation=void 0,(r=e.StackLocation||(e.StackLocation={})).STACK_CONFIG="cs.cm.stack.config",r.DASHBOARD="cs.cm.stack.dashboard",r.SIDEBAR="cs.cm.stack.sidebar",r.CUSTOM_FIELD="cs.cm.stack.custom_field",r.RTE="cs.cm.stack.rte",(e.OrganizationLocation||(e.OrganizationLocation={})).ORG_CONFIG="cs.org.config",(n=e.Region||(e.Region={})).UNKNOWN="UNKNOWN",n.NA="NA",n.EU="EU",n.AZURE_NA="AZURE_NA",n.AZURE_EU="AZURE_EU"},194:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ERROR_MESSAGES=void 0,e.ERROR_MESSAGES=Object.freeze({configPage:{setValidity:{isValidTypeBoolean:"isValid should be a boolean",messageTypeString:"message should be a string"}},entryField:{entry:{tagsShouldNotBeBlank:"Tags cannot be blank",tagsShouldBeArrayOfStrings:"Tags must be an array of strings"},frame:{dimensionHeightShouldBeNumber:"Dimension height must be a number",dimensionWidthShouldBeNumber:"Dimension width must be a number"}}}),e.default=function(t){return"Contentstack App SDK: "+t}},974:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getPreferredBodyElement=e.formatAppRegion=e.onError=e.onData=void 0;var r=n(699);e.onData=function(t){return"string"==typeof t.data?Promise.reject(t.data):Promise.resolve(t.data)},e.onError=function(t){return Promise.reject(t)},e.formatAppRegion=function(t){switch(t){case"NA":return r.Region.NA;case"EU":return r.Region.EU;case"AZURE_NA":return r.Region.AZURE_NA;case"AZURE_EU":return r.Region.AZURE_EU;default:return r.Region.UNKNOWN}},e.getPreferredBodyElement=function(t){var e,n=1/0,r=["HEADER","NAV","MAIN","SECTION","ARTICLE","ASIDE","FOOTER","DIV"],o=["SCRIPT","NOSCRIPT","STYLE","TEMPLATE"];return Array.from(t).forEach((function(t){var o=r.indexOf(t.nodeName);o>=0&&o{"use strict";t.exports=JSON.parse('{"name":"@contentstack/app-sdk","version":"1.6.0","types":"dist/src/index.d.ts","description":"This SDK helps connect to the development server of the Contentstack and sync the data.","main":"dist/index.js","repository":"https://github.com/contentstack/app-sdk","scripts":{"prepublish":"npm run build","build":"webpack","test":"jest","test:watch":"jest --watchAll","test:coverage":"jest --coverage --coverageDirectory=\\"coverage\\"","dev":"webpack --watch --mode development","lint":"eslint . --ext .ts --max-warnings=0","docs":"typedoc --out doc --entryPointStrategy expand ./src","prettier":"npx prettier src --check","prettier:fix":"npx prettier src --write","lint:fix":"eslint --fix","prepare":"npm run build && husky install","format":"npm run prettier:fix && npm run lint:fix"},"keywords":[],"author":{"name":"Contentstack","url":"https://www.contentstack.com/"},"maintainers":[{"name":"Deepak Kharah","email":"deepak.kharah@contentstack.com"}],"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.3.1","@testing-library/jest-dom":"^5.16.5","@types/chai":"^4.2.22","@types/jest":"^27.0.2","@types/post-robot":"^10.0.3","@types/react":"^17.0.18","@typescript-eslint/eslint-plugin":"^5.10.1","@typescript-eslint/parser":"^5.10.1","babel-loader":"^9.1.0","chai":"^4.3.4","css-loader":"^5.2.2","eslint":"^8.7.0","eslint-plugin-only-warn":"^1.1.0","husky":"^8.0.0","jest":"^27.3.1","lint-staged":"^13.1.0","react":"^17.0.2","slate":"^0.72.3","ts-jest":"^27.0.7","ts-loader":"^8.1.0","ts-node":"^10.3.0","typedoc":"^0.22.17","typescript":"^4.4.4","webpack":"^5.65.0","webpack-cli":"^4.9.1","webpack-dev-server":"^4.7.3"},"dependencies":{"loader-utils":"^3.2.1","post-robot":"^8.0.31","wolfy87-eventemitter":"^5.2.9"},"files":["dist"],"lint-staged":{"src/**/*.{ts,css,md}":["npm run prettier:fix ","npm run lint:fix"]}}')}},e={},function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r].call(i.exports,i,i.exports,n),i.exports}(607);var t,e})); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index cfb64e5..98483c4 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":"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","sources":["webpack://ContentstackAppSDK/webpack/universalModuleDefinition","webpack://ContentstackAppSDK/./node_modules/post-robot/dist/post-robot.js","webpack://ContentstackAppSDK/./node_modules/post-robot/index.js","webpack://ContentstackAppSDK/./src/AssetSidebarWidget.ts","webpack://ContentstackAppSDK/./src/RTE/index.tsx","webpack://ContentstackAppSDK/./src/appConfig/index.ts","webpack://ContentstackAppSDK/./src/entry.ts","webpack://ContentstackAppSDK/./src/extension.ts","webpack://ContentstackAppSDK/./src/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/entry.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/frame.ts","webpack://ContentstackAppSDK/./src/index.ts","webpack://ContentstackAppSDK/./src/metadata.ts","webpack://ContentstackAppSDK/./src/modal.ts","webpack://ContentstackAppSDK/./src/stack/api/asset/index.ts","webpack://ContentstackAppSDK/./src/stack/api/base.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/entry.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/index.ts","webpack://ContentstackAppSDK/./src/stack/api/query.ts","webpack://ContentstackAppSDK/./src/stack/index.ts","webpack://ContentstackAppSDK/./src/stack/utils.ts","webpack://ContentstackAppSDK/./src/store.ts","webpack://ContentstackAppSDK/./src/types.ts","webpack://ContentstackAppSDK/./src/utils/errorMessages.ts","webpack://ContentstackAppSDK/./src/utils/utils.ts","webpack://ContentstackAppSDK/./src/window.ts","webpack://ContentstackAppSDK/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://ContentstackAppSDK/webpack/bootstrap","webpack://ContentstackAppSDK/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ContentstackAppSDK\"] = factory();\n\telse\n\t\troot[\"ContentstackAppSDK\"] = factory();\n})(this, () => {\nreturn ","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"postRobot\", [], factory) : \"object\" == typeof exports ? exports.postRobot = factory() : root.postRobot = factory();\n}(\"undefined\" != typeof self ? self : this, function() {\n return function(modules) {\n var installedModules = {};\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n module.l = !0;\n return module.exports;\n }\n __webpack_require__.m = modules;\n __webpack_require__.c = installedModules;\n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n configurable: !1,\n enumerable: !0,\n get: getter\n });\n };\n __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n __webpack_require__.d(getter, \"a\", getter);\n return getter;\n };\n __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n __webpack_require__.p = \"\";\n return __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n }({\n \"./src/index.js\": function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n Object.defineProperty(__webpack_exports__, \"__esModule\", {\n value: !0\n });\n var interface_namespaceObject = {};\n __webpack_require__.d(interface_namespaceObject, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(interface_namespaceObject, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(interface_namespaceObject, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(interface_namespaceObject, \"init\", function() {\n return init;\n });\n __webpack_require__.d(interface_namespaceObject, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(interface_namespaceObject, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(interface_namespaceObject, \"request\", function() {\n return request;\n });\n __webpack_require__.d(interface_namespaceObject, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(interface_namespaceObject, \"client\", function() {\n return client;\n });\n __webpack_require__.d(interface_namespaceObject, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(interface_namespaceObject, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(interface_namespaceObject, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(interface_namespaceObject, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(interface_namespaceObject, \"disable\", function() {\n return disable;\n });\n function isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n var PROTOCOL = {\n MOCK: \"mock:\",\n FILE: \"file:\",\n ABOUT: \"about:\"\n }, WILDCARD = \"*\", IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n function isAboutProtocol() {\n return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window).location.protocol === PROTOCOL.ABOUT;\n }\n function getParent() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win) try {\n if (win.parent && win.parent !== win) return win.parent;\n } catch (err) {}\n }\n function getOpener() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win && !getParent(win)) try {\n return win.opener;\n } catch (err) {}\n }\n function canReadFromWindow(win) {\n try {\n win && win.location && win.location.href;\n return !0;\n } catch (err) {}\n return !1;\n }\n function getActualDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, location = win.location;\n if (!location) throw new Error(\"Can not read window location\");\n var protocol = location.protocol;\n if (!protocol) throw new Error(\"Can not read window protocol\");\n if (protocol === PROTOCOL.FILE) return PROTOCOL.FILE + \"//\";\n if (protocol === PROTOCOL.ABOUT) {\n var parent = getParent(win);\n return parent && canReadFromWindow(parent) ? getActualDomain(parent) : PROTOCOL.ABOUT + \"//\";\n }\n var host = location.host;\n if (!host) throw new Error(\"Can not read window host\");\n return protocol + \"//\" + host;\n }\n function utils_getDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, domain = getActualDomain(win);\n return domain && win.mockDomain && 0 === win.mockDomain.indexOf(PROTOCOL.MOCK) ? win.mockDomain : domain;\n }\n function isActuallySameDomain(win) {\n try {\n if (win === window) return !0;\n } catch (err) {}\n try {\n var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n if (desc && !1 === desc.enumerable) return !1;\n } catch (err) {}\n try {\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n } catch (err) {}\n try {\n if (getActualDomain(win) === getActualDomain(window)) return !0;\n } catch (err) {}\n return !1;\n }\n function isAncestorParent(parent, child) {\n if (!parent || !child) return !1;\n var childParent = getParent(child);\n return childParent ? childParent === parent : -1 !== function(win) {\n var result = [];\n try {\n for (;win.parent !== win; ) {\n result.push(win.parent);\n win = win.parent;\n }\n } catch (err) {}\n return result;\n }(child).indexOf(parent);\n }\n function getFrames(win) {\n var result = [], frames = void 0;\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n var len = void 0;\n try {\n len = frames.length;\n } catch (err) {}\n if (0 === len) return result;\n if (len) {\n for (var i = 0; i < len; i++) {\n var frame = void 0;\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n result.push(frame);\n }\n return result;\n }\n for (var _i = 0; _i < 100; _i++) {\n var _frame = void 0;\n try {\n _frame = frames[_i];\n } catch (err) {\n return result;\n }\n if (!_frame) return result;\n result.push(_frame);\n }\n return result;\n }\n var iframeWindows = [], iframeFrames = [];\n function isWindowClosed(win) {\n var allowMock = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n try {\n if (win === window) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (!win) return !0;\n } catch (err) {\n return !0;\n }\n try {\n if (win.closed) return !0;\n } catch (err) {\n return !err || err.message !== IE_WIN_ACCESS_ERROR;\n }\n if (allowMock && function(win) {\n if (!isActuallySameDomain(win)) return !1;\n try {\n if (win === window) return !0;\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n if (utils_getDomain(window) === utils_getDomain(win)) return !0;\n } catch (err) {}\n return !1;\n }(win)) try {\n if (win.mockclosed) return !0;\n } catch (err) {}\n try {\n if (!win.parent || !win.top) return !0;\n } catch (err) {}\n var iframeIndex = function(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }(iframeWindows, win);\n if (-1 !== iframeIndex) {\n var frame = iframeFrames[iframeIndex];\n if (frame && function(frame) {\n if (!frame.contentWindow) return !0;\n if (!frame.parentNode) return !0;\n var doc = frame.ownerDocument;\n return !(!doc || !doc.documentElement || doc.documentElement.contains(frame));\n }(frame)) return !0;\n }\n return !1;\n }\n function getAncestor() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return getOpener(win = win || window) || getParent(win) || void 0;\n }\n function matchDomain(pattern, origin) {\n if (\"string\" == typeof pattern) {\n if (\"string\" == typeof origin) return pattern === WILDCARD || origin === pattern;\n if (isRegex(origin)) return !1;\n if (Array.isArray(origin)) return !1;\n }\n return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some(function(subpattern) {\n return matchDomain(subpattern, origin);\n }));\n }\n function isWindow(obj) {\n try {\n if (obj === window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (\"[object Window]\" === Object.prototype.toString.call(obj)) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (window.Window && obj instanceof window.Window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.self === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.parent === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.top === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n } catch (err) {\n return !0;\n }\n return !1;\n }\n function util_safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }\n var _ALLOWED_POST_MESSAGE, weakmap_CrossDomainSafeWeakMap = function() {\n function CrossDomainSafeWeakMap() {\n !function(instance, Constructor) {\n if (!(instance instanceof CrossDomainSafeWeakMap)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n if (function() {\n if (\"undefined\" == typeof WeakMap) return !1;\n if (void 0 === Object.freeze) return !1;\n try {\n var testWeakMap = new WeakMap(), testKey = {};\n Object.freeze(testKey);\n testWeakMap.set(testKey, \"__testvalue__\");\n return \"__testvalue__\" === testWeakMap.get(testKey);\n } catch (err) {\n return !1;\n }\n }()) try {\n this.weakmap = new WeakMap();\n } catch (err) {}\n this.keys = [];\n this.values = [];\n }\n CrossDomainSafeWeakMap.prototype._cleanupClosedWindows = function() {\n for (var weakmap = this.weakmap, keys = this.keys, i = 0; i < keys.length; i++) {\n var value = keys[i];\n if (isWindow(value) && isWindowClosed(value)) {\n if (weakmap) try {\n weakmap.delete(value);\n } catch (err) {}\n keys.splice(i, 1);\n this.values.splice(i, 1);\n i -= 1;\n }\n }\n };\n CrossDomainSafeWeakMap.prototype.isSafeToReadWrite = function(key) {\n if (isWindow(key)) return !1;\n try {\n key && key.self;\n key && key[this.name];\n } catch (err) {\n return !1;\n }\n return !0;\n };\n CrossDomainSafeWeakMap.prototype.set = function(key, value) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var name = this.name, entry = key[name];\n entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: !0\n });\n return;\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, values = this.values, index = util_safeIndexOf(keys, key);\n if (-1 === index) {\n keys.push(key);\n values.push(value);\n } else values[index] = value;\n };\n CrossDomainSafeWeakMap.prototype.get = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return weakmap.get(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return entry && entry[0] === key ? entry[1] : void 0;\n } catch (err) {}\n this._cleanupClosedWindows();\n var index = util_safeIndexOf(this.keys, key);\n if (-1 !== index) return this.values[index];\n };\n CrossDomainSafeWeakMap.prototype.delete = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, index = util_safeIndexOf(keys, key);\n if (-1 !== index) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n };\n CrossDomainSafeWeakMap.prototype.has = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return !0;\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return !(!entry || entry[0] !== key);\n } catch (err) {}\n this._cleanupClosedWindows();\n return -1 !== util_safeIndexOf(this.keys, key);\n };\n CrossDomainSafeWeakMap.prototype.getOrSet = function(key, getter) {\n if (this.has(key)) return this.get(key);\n var value = getter();\n this.set(key, value);\n return value;\n };\n return CrossDomainSafeWeakMap;\n }(), constants_CONSTANTS = {\n POST_MESSAGE_TYPE: {\n REQUEST: \"postrobot_message_request\",\n RESPONSE: \"postrobot_message_response\",\n ACK: \"postrobot_message_ack\"\n },\n POST_MESSAGE_ACK: {\n SUCCESS: \"success\",\n ERROR: \"error\"\n },\n POST_MESSAGE_NAMES: {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_ready\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n },\n WINDOW_TYPES: {\n FULLPAGE: \"fullpage\",\n POPUP: \"popup\",\n IFRAME: \"iframe\"\n },\n WINDOW_PROPS: {\n POSTROBOT: \"__postRobot__\"\n },\n SERIALIZATION_TYPES: {\n METHOD: \"postrobot_method\",\n ERROR: \"postrobot_error\",\n PROMISE: \"postrobot_promise\",\n ZALGO_PROMISE: \"postrobot_zalgo_promise\",\n REGEX: \"regex\"\n },\n SEND_STRATEGIES: {\n POST_MESSAGE: \"postrobot_post_message\",\n BRIDGE: \"postrobot_bridge\",\n GLOBAL: \"postrobot_global\"\n },\n MOCK_PROTOCOL: \"mock:\",\n FILE_PROTOCOL: \"file:\",\n BRIDGE_NAME_PREFIX: \"__postrobot_bridge__\",\n POSTROBOT_PROXY: \"__postrobot_proxy__\",\n WILDCARD: \"*\"\n }, POST_MESSAGE_NAMES = {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_hello\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n }, CONFIG = (Object.keys(POST_MESSAGE_NAMES).map(function(key) {\n return POST_MESSAGE_NAMES[key];\n }), {\n ALLOW_POSTMESSAGE_POPUP: !(\"__ALLOW_POSTMESSAGE_POPUP__\" in window) || window.__ALLOW_POSTMESSAGE_POPUP__,\n BRIDGE_TIMEOUT: 5e3,\n CHILD_WINDOW_TIMEOUT: 5e3,\n ACK_TIMEOUT: -1 !== window.navigator.userAgent.match(/MSIE/i) ? 1e4 : 2e3,\n RES_TIMEOUT: -1,\n ALLOWED_POST_MESSAGE_METHODS: (_ALLOWED_POST_MESSAGE = {}, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = !0, \n _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.BRIDGE] = !0, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.GLOBAL] = !0, \n _ALLOWED_POST_MESSAGE),\n ALLOW_SAME_ORIGIN: !1\n });\n 0 === window.location.href.indexOf(constants_CONSTANTS.FILE_PROTOCOL) && (CONFIG.ALLOW_POSTMESSAGE_POPUP = !0);\n var _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function stringifyError(err) {\n var level = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\n if (level >= 3) return \"stringifyError stack overflow\";\n try {\n if (!err) return \"\";\n if (\"string\" == typeof err) return err;\n if (err instanceof Error) {\n var stack = err && err.stack, message = err && err.message;\n if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n if (stack) return stack;\n if (message) return message;\n }\n return \"function\" == typeof err.toString ? err.toString() : Object.prototype.toString.call(err);\n } catch (newErr) {\n return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n }\n }\n var once = function(method) {\n if (!method) return method;\n var called = !1;\n return function() {\n if (!called) {\n called = !0;\n return method.apply(this, arguments);\n }\n };\n };\n function lib_util_noop() {}\n function uniqueID() {\n var chars = \"0123456789abcdef\";\n return \"xxxxxxxxxx\".replace(/./g, function() {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n }\n function replaceObject(item, callback) {\n var depth = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\n if (depth >= 100) throw new Error(\"Self-referential object passed, or object contained too many layers\");\n var newobj = void 0;\n if (\"object\" !== (void 0 === item ? \"undefined\" : _typeof(item)) || null === item || Array.isArray(item)) {\n if (!Array.isArray(item)) throw new TypeError(\"Invalid type: \" + (void 0 === item ? \"undefined\" : _typeof(item)));\n newobj = [];\n } else newobj = {};\n !function(item, callback) {\n Array.isArray(item) ? function(item, callback) {\n for (var i = 0; i < item.length; i++) callback(item[i], i);\n }(item, callback) : \"object\" === (void 0 === item ? \"undefined\" : _typeof(item)) && null !== item && function(item, callback) {\n for (var _key in item) item.hasOwnProperty(_key) && callback(item[_key], _key);\n }(item, callback);\n }(item, function(childItem, key) {\n var result = callback(childItem, key);\n void 0 !== result ? newobj[key] = result : \"object\" === (void 0 === childItem ? \"undefined\" : _typeof(childItem)) && null !== childItem ? newobj[key] = replaceObject(childItem, callback, depth + 1) : newobj[key] = childItem;\n });\n return newobj;\n }\n function util_isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n function utils_isPromise(item) {\n try {\n if (!item) return !1;\n if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n var _toString = {}.toString;\n if (_toString) {\n var name = _toString.call(item);\n if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n }\n if (\"function\" == typeof item.then) return !0;\n } catch (err) {\n return !1;\n }\n return !1;\n }\n var dispatchedErrors = [], possiblyUnhandledPromiseHandlers = [], activeCount = 0, flushPromise = void 0;\n function flushActive() {\n if (!activeCount && flushPromise) {\n var promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n }\n function startActive() {\n activeCount += 1;\n }\n function endActive() {\n activeCount -= 1;\n flushActive();\n }\n var promise_ZalgoPromise = function() {\n function ZalgoPromise(handler) {\n var _this = this;\n !function(instance, Constructor) {\n if (!(instance instanceof ZalgoPromise)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.resolved = !1;\n this.rejected = !1;\n this.errorHandled = !1;\n this.handlers = [];\n if (handler) {\n var _result = void 0, _error = void 0, resolved = !1, rejected = !1, isAsync = !1;\n startActive();\n try {\n handler(function(res) {\n if (isAsync) _this.resolve(res); else {\n resolved = !0;\n _result = res;\n }\n }, function(err) {\n if (isAsync) _this.reject(err); else {\n rejected = !0;\n _error = err;\n }\n });\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n endActive();\n isAsync = !0;\n resolved ? this.resolve(_result) : rejected && this.reject(_error);\n }\n }\n ZalgoPromise.prototype.resolve = function(result) {\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n this.resolved = !0;\n this.value = result;\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.reject = function(error) {\n var _this2 = this;\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n if (!error) {\n var _err = error && \"function\" == typeof error.toString ? error.toString() : Object.prototype.toString.call(error);\n error = new Error(\"Expected reject to be called with Error, got \" + _err);\n }\n this.rejected = !0;\n this.error = error;\n this.errorHandled || setTimeout(function() {\n _this2.errorHandled || function(err, promise) {\n if (-1 === dispatchedErrors.indexOf(err)) {\n dispatchedErrors.push(err);\n setTimeout(function() {\n throw err;\n }, 1);\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n }(error, _this2);\n }, 1);\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.asyncReject = function(error) {\n this.errorHandled = !0;\n this.reject(error);\n return this;\n };\n ZalgoPromise.prototype.dispatch = function() {\n var dispatching = this.dispatching, resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n if (!dispatching && (resolved || rejected)) {\n this.dispatching = !0;\n startActive();\n for (var chain = function(firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n secondPromise.resolve(res);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < handlers.length; i++) {\n var _handlers$i = handlers[i], _onSuccess = _handlers$i.onSuccess, _onError = _handlers$i.onError, _promise = _handlers$i.promise, _result2 = void 0;\n if (resolved) try {\n _result2 = _onSuccess ? _onSuccess(this.value) : this.value;\n } catch (err) {\n _promise.reject(err);\n continue;\n } else if (rejected) {\n if (!_onError) {\n _promise.reject(this.error);\n continue;\n }\n try {\n _result2 = _onError(this.error);\n } catch (err) {\n _promise.reject(err);\n continue;\n }\n }\n if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error);\n _result2.errorHandled = !0;\n } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error) : chain(_result2, _promise) : _promise.resolve(_result2);\n }\n handlers.length = 0;\n this.dispatching = !1;\n endActive();\n }\n };\n ZalgoPromise.prototype.then = function(onSuccess, onError) {\n if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n var promise = new ZalgoPromise();\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n this.errorHandled = !0;\n this.dispatch();\n return promise;\n };\n ZalgoPromise.prototype.catch = function(onError) {\n return this.then(void 0, onError);\n };\n ZalgoPromise.prototype.finally = function(onFinally) {\n if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n return this.then(function(result) {\n return ZalgoPromise.try(onFinally).then(function() {\n return result;\n });\n }, function(err) {\n return ZalgoPromise.try(onFinally).then(function() {\n throw err;\n });\n });\n };\n ZalgoPromise.prototype.timeout = function(time, err) {\n var _this3 = this;\n if (this.resolved || this.rejected) return this;\n var timeout = setTimeout(function() {\n _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n }, time);\n return this.then(function(result) {\n clearTimeout(timeout);\n return result;\n });\n };\n ZalgoPromise.prototype.toPromise = function() {\n if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n return Promise.resolve(this);\n };\n ZalgoPromise.resolve = function(value) {\n return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise(function(resolve, reject) {\n return value.then(resolve, reject);\n }) : new ZalgoPromise().resolve(value);\n };\n ZalgoPromise.reject = function(error) {\n return new ZalgoPromise().reject(error);\n };\n ZalgoPromise.asyncReject = function(error) {\n return new ZalgoPromise().asyncReject(error);\n };\n ZalgoPromise.all = function(promises) {\n var promise = new ZalgoPromise(), count = promises.length, results = [];\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n for (var chain = function(i, firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n results[i] = res;\n 0 == (count -= 1) && promise.resolve(results);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < promises.length; i++) {\n var prom = promises[i];\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!utils_isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n 0 === count && promise.resolve(results);\n return promise;\n };\n ZalgoPromise.hash = function(promises) {\n var result = {};\n return ZalgoPromise.all(Object.keys(promises).map(function(key) {\n return ZalgoPromise.resolve(promises[key]).then(function(value) {\n result[key] = value;\n });\n })).then(function() {\n return result;\n });\n };\n ZalgoPromise.map = function(items, method) {\n return ZalgoPromise.all(items.map(method));\n };\n ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n return function(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n return {\n cancel: function() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n }(handler);\n };\n ZalgoPromise.try = function(method, context, args) {\n if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n var result = void 0;\n startActive();\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n endActive();\n return ZalgoPromise.resolve(result);\n };\n ZalgoPromise.delay = function(_delay) {\n return new ZalgoPromise(function(resolve) {\n setTimeout(resolve, _delay);\n });\n };\n ZalgoPromise.isPromise = function(value) {\n return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n };\n ZalgoPromise.flush = function() {\n return function(Zalgo) {\n var promise = flushPromise = flushPromise || new ZalgoPromise();\n flushActive();\n return promise;\n }();\n };\n return ZalgoPromise;\n }(), global = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n global.registerSelf = function() {};\n var serialize__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.methods = global.methods || new weakmap_CrossDomainSafeWeakMap();\n var listenForMethods = once(function() {\n global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n origin: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin, data = _ref.data, methods = global.methods.get(source);\n if (!methods) throw new Error(\"Could not find any methods this window has privileges to call\");\n var meth = methods[data.id];\n if (!meth) throw new Error(\"Could not find method with id: \" + data.id);\n if (!matchDomain(meth.domain, origin)) throw new Error(\"Method domain \" + meth.domain + \" does not match origin \" + origin);\n return promise_ZalgoPromise.try(function() {\n return meth.method.apply({\n source: source,\n origin: origin,\n data: data\n }, data.args);\n }).then(function(result) {\n return {\n result: result,\n id: data.id,\n name: data.name\n };\n });\n });\n });\n function isSerialized(item, type) {\n return \"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item && item.__type__ === type;\n }\n function serializeMethod(destination, domain, method, name) {\n var id = uniqueID(), methods = global.methods.get(destination);\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n methods[id] = {\n domain: domain,\n method: method\n };\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n }\n function deserializeMethod(source, origin, obj) {\n function wrapper() {\n var args = Array.prototype.slice.call(arguments);\n return global.send(source, constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args: args\n }, {\n domain: origin,\n timeout: -1\n }).then(function(_ref2) {\n return _ref2.data.result;\n }, function(err) {\n throw err;\n });\n }\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = !0;\n wrapper.source = source;\n wrapper.origin = origin;\n return wrapper;\n }\n function deserializeZalgoPromise(source, origin, prom) {\n return new promise_ZalgoPromise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n });\n }\n global.readyPromises = global.readyPromises || new weakmap_CrossDomainSafeWeakMap();\n function sayHello(win) {\n return global.send(win, constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, {\n domain: constants_CONSTANTS.WILDCARD,\n timeout: -1\n }).then(function(_ref2) {\n return {\n origin: _ref2.origin\n };\n });\n }\n var SEND_MESSAGE_STRATEGIES = {};\n SEND_MESSAGE_STRATEGIES[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = function(win, serializedMessage, domain) {\n (Array.isArray(domain) ? domain : \"string\" == typeof domain ? [ domain ] : [ constants_CONSTANTS.WILDCARD ]).map(function(dom) {\n if (0 === dom.indexOf(constants_CONSTANTS.MOCK_PROTOCOL)) {\n if (window.location.protocol === constants_CONSTANTS.FILE_PROTOCOL) return constants_CONSTANTS.WILDCARD;\n if (!isActuallySameDomain(win)) throw new Error(\"Attempting to send messsage to mock domain \" + dom + \", but window is actually cross-domain\");\n return getActualDomain(win);\n }\n return 0 === dom.indexOf(constants_CONSTANTS.FILE_PROTOCOL) ? constants_CONSTANTS.WILDCARD : dom;\n }).forEach(function(dom) {\n return win.postMessage(serializedMessage, dom);\n });\n };\n var _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n };\n function sendMessage(win, message, domain) {\n return promise_ZalgoPromise.try(function() {\n var _jsonStringify;\n message = function(win, message) {\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, id = uniqueID(), type = function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getOpener(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.POPUP : function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getParent(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.IFRAME : constants_CONSTANTS.WINDOW_TYPES.FULLPAGE, sourceDomain = utils_getDomain(window);\n return _extends({}, message, options, {\n sourceDomain: sourceDomain,\n id: message.id || id,\n windowType: type\n });\n }(win, message, {\n data: function(destination, domain, obj) {\n return replaceObject({\n obj: message.data\n }, function(item, key) {\n return \"function\" == typeof item ? serializeMethod(destination, domain, item, key.toString()) : item instanceof Error ? (err = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n __code__: err.code\n }) : window.Promise && item instanceof window.Promise ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : promise_ZalgoPromise.isPromise(item) ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : util_isRegex(item) ? (regex = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n }) : void 0;\n var err, regex;\n }).obj;\n }(win, domain),\n domain: domain\n });\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) throw new Error(\"Attemping to send message to self\");\n if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n var messages = [], serializedMessage = function(obj, replacer, indent) {\n var objectToJSON = void 0, arrayToJSON = void 0;\n try {\n if (\"{}\" !== JSON.stringify({})) {\n objectToJSON = Object.prototype.toJSON;\n delete Object.prototype.toJSON;\n }\n if (\"{}\" !== JSON.stringify({})) throw new Error(\"Can not correctly serialize JSON objects\");\n if (\"[]\" !== JSON.stringify([])) {\n arrayToJSON = Array.prototype.toJSON;\n delete Array.prototype.toJSON;\n }\n if (\"[]\" !== JSON.stringify([])) throw new Error(\"Can not correctly serialize JSON objects\");\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n var result = JSON.stringify.call(this, obj, null, 2);\n try {\n objectToJSON && (Object.prototype.toJSON = objectToJSON);\n arrayToJSON && (Array.prototype.toJSON = arrayToJSON);\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n return result;\n }(((_jsonStringify = {})[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = message, \n _jsonStringify));\n return promise_ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), function(strategyName) {\n return promise_ZalgoPromise.try(function() {\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) throw new Error(\"Strategy disallowed: \" + strategyName);\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n }).then(function() {\n messages.push(strategyName + \": success\");\n return !0;\n }, function(err) {\n messages.push(strategyName + \": \" + stringifyError(err) + \"\\n\");\n return !1;\n });\n }).then(function(results) {\n var success = results.some(Boolean), status = message.type + \" \" + message.name + \" \" + (success ? \"success\" : \"error\") + \":\\n - \" + messages.join(\"\\n - \") + \"\\n\";\n if (!success) throw new Error(status);\n });\n });\n }\n global.responseListeners = global.responseListeners || {};\n global.requestListeners = global.requestListeners || {};\n global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new function() {}();\n global.erroredResponseListeners = global.erroredResponseListeners || {};\n var _RECEIVE_MESSAGE_TYPE, __DOMAIN_REGEX__ = \"__domain_regex__\";\n function getResponseListener(hash) {\n return global.responseListeners[hash];\n }\n function deleteResponseListener(hash) {\n delete global.responseListeners[hash];\n }\n function isResponseListenerErrored(hash) {\n return Boolean(global.erroredResponseListeners[hash]);\n }\n function getRequestListener(_ref) {\n var name = _ref.name, win = _ref.win, domain = _ref.domain;\n win === constants_CONSTANTS.WILDCARD && (win = null);\n domain === constants_CONSTANTS.WILDCARD && (domain = null);\n if (!name) throw new Error(\"Name required to get request listener\");\n var nameListeners = global.requestListeners[name];\n if (nameListeners) for (var _i2 = 0, _ref3 = [ win, global.WINDOW_WILDCARD ], _length2 = null == _ref3 ? 0 : _ref3.length; _i2 < _length2; _i2++) {\n var winQualifier = _ref3[_i2], winListeners = winQualifier && nameListeners.get(winQualifier);\n if (winListeners) {\n if (domain && \"string\" == typeof domain) {\n if (winListeners[domain]) return winListeners[domain];\n if (winListeners[__DOMAIN_REGEX__]) for (var _i4 = 0, _winListeners$__DOMAI2 = winListeners[__DOMAIN_REGEX__], _length4 = null == _winListeners$__DOMAI2 ? 0 : _winListeners$__DOMAI2.length; _i4 < _length4; _i4++) {\n var _ref5 = _winListeners$__DOMAI2[_i4], regex = _ref5.regex, listener = _ref5.listener;\n if (matchDomain(regex, domain)) return listener;\n }\n }\n if (winListeners[constants_CONSTANTS.WILDCARD]) return winListeners[constants_CONSTANTS.WILDCARD];\n }\n }\n }\n var types__extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }, RECEIVE_MESSAGE_TYPES = ((_RECEIVE_MESSAGE_TYPE = {})[constants_CONSTANTS.POST_MESSAGE_TYPE.ACK] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message ack for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n options.ack = !0;\n }\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST] = function(source, origin, message) {\n var options = getRequestListener({\n name: message.name,\n win: source,\n domain: origin\n });\n function respond(data) {\n return message.fireAndForget || isWindowClosed(source) ? promise_ZalgoPromise.resolve() : sendMessage(source, types__extends({\n target: message.originalSource,\n hash: message.hash,\n name: message.name\n }, data), origin);\n }\n return promise_ZalgoPromise.all([ respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.ACK\n }), promise_ZalgoPromise.try(function() {\n if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Request origin \" + origin + \" does not match domain \" + options.domain.toString());\n var data = message.data;\n return options.handler({\n source: source,\n origin: origin,\n data: data\n });\n }).then(function(data) {\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data: data\n });\n }, function(err) {\n var error = stringifyError(err).replace(/^Error: /, \"\"), code = err.code;\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error: error,\n code: code\n });\n }) ]).then(lib_util_noop).catch(function(err) {\n if (options && options.handleError) return options.handleError(err);\n throw err;\n });\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var pattern, options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message response for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() : pattern.toString()));\n deleteResponseListener(message.hash);\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n var err = new Error(message.error);\n message.code && (err.code = message.code);\n return options.respond(err, null);\n }\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n var data = message.data || message.response;\n return options.respond(null, {\n source: source,\n origin: origin,\n data: data\n });\n }\n }\n }, _RECEIVE_MESSAGE_TYPE), receive__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.receivedMessages = global.receivedMessages || [];\n function receiveMessage(event) {\n if (window && !window.closed) {\n try {\n if (!event.source) return;\n } catch (err) {\n return;\n }\n var source = event.source, origin = event.origin, message = function(message) {\n var item, parsedMessage = void 0;\n try {\n parsedMessage = (item = message, JSON.parse(item));\n } catch (err) {\n return;\n }\n if (parsedMessage && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && (parsedMessage = parsedMessage[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT]) && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && parsedMessage.type && \"string\" == typeof parsedMessage.type && RECEIVE_MESSAGE_TYPES[parsedMessage.type]) return parsedMessage;\n }(event.data);\n if (message) {\n if (!message.sourceDomain || \"string\" != typeof message.sourceDomain) throw new Error(\"Expected message to have sourceDomain\");\n 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.MOCK_PROTOCOL) && 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.FILE_PROTOCOL) || (origin = message.sourceDomain);\n if (-1 === global.receivedMessages.indexOf(message.id)) {\n global.receivedMessages.push(message.id);\n if (!isWindowClosed(source) || message.fireAndForget) {\n message.data && (message.data = function(source, origin, obj) {\n return replaceObject({\n obj: message.data\n }, function(item) {\n if (\"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item) return isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.METHOD) ? deserializeMethod(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ERROR) ? function(source, origin, obj) {\n var err = new Error(obj.__message__);\n obj.__code__ && (err.code = obj.__code__);\n return err;\n }(0, 0, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE) ? function(source, origin, prom) {\n return window.Promise ? new window.Promise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n }) : deserializeZalgoPromise(source, origin, prom);\n }(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE) ? deserializeZalgoPromise(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.REGEX) ? function(source, origin, item) {\n return new RegExp(item.__source__);\n }(0, 0, item) : void 0;\n }).obj;\n }(source, origin));\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n }\n }\n }\n }\n }\n function messageListener(event) {\n try {\n event.source;\n } catch (err) {\n return;\n }\n receiveMessage({\n source: event.source || event.sourceElement,\n origin: event.origin || event.originalEvent && event.originalEvent.origin,\n data: event.data\n });\n }\n global.receiveMessage = receiveMessage;\n global.requestPromises = global.requestPromises || new weakmap_CrossDomainSafeWeakMap();\n function request(options) {\n return promise_ZalgoPromise.try(function() {\n if (!options.name) throw new Error(\"Expected options.name\");\n var name = options.name, targetWindow = void 0, domain = void 0;\n if (\"string\" == typeof options.window) {\n var el = document.getElementById(options.window);\n if (!el) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be a valid element id\");\n if (\"iframe\" !== el.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (!el.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n targetWindow = el.contentWindow;\n } else if (options.window instanceof HTMLIFrameElement) {\n if (\"iframe\" !== options.window.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (options.window && !options.window.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n options.window && options.window.contentWindow && (targetWindow = options.window.contentWindow);\n } else targetWindow = options.window;\n if (!targetWindow) throw new Error(\"Expected options.window to be a window object, iframe, or iframe element id.\");\n var win = targetWindow;\n domain = options.domain || constants_CONSTANTS.WILDCARD;\n var hash = options.name + \"_\" + uniqueID();\n if (isWindowClosed(win)) throw new Error(\"Target window is closed\");\n var hasResult = !1, requestPromises = global.requestPromises.get(win);\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n var requestPromise = promise_ZalgoPromise.try(function() {\n if (function(parent, child) {\n var actualParent = getAncestor(child);\n if (actualParent) return actualParent === parent;\n if (child === parent) return !1;\n if (function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n try {\n if (win.top) return win.top;\n } catch (err) {}\n if (getParent(win) === win) return win;\n try {\n if (isAncestorParent(window, win) && window.top) return window.top;\n } catch (err) {}\n try {\n if (isAncestorParent(win, window) && window.top) return window.top;\n } catch (err) {}\n for (var _i7 = 0, _getAllChildFrames4 = function getAllChildFrames(win) {\n for (var result = [], _i3 = 0, _getFrames2 = getFrames(win), _length2 = null == _getFrames2 ? 0 : _getFrames2.length; _i3 < _length2; _i3++) {\n var frame = _getFrames2[_i3];\n result.push(frame);\n for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame), _length4 = null == _getAllChildFrames2 ? 0 : _getAllChildFrames2.length; _i5 < _length4; _i5++) {\n var childFrame = _getAllChildFrames2[_i5];\n result.push(childFrame);\n }\n }\n return result;\n }(win), _length6 = null == _getAllChildFrames4 ? 0 : _getAllChildFrames4.length; _i7 < _length6; _i7++) {\n var frame = _getAllChildFrames4[_i7];\n try {\n if (frame.top) return frame.top;\n } catch (err) {}\n if (getParent(frame) === frame) return frame;\n }\n }(child) === child) return !1;\n for (var _i15 = 0, _getFrames8 = getFrames(parent), _length14 = null == _getFrames8 ? 0 : _getFrames8.length; _i15 < _length14; _i15++) if (_getFrames8[_i15] === child) return !0;\n return !1;\n }(window, win)) return function(win) {\n var timeout = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 5e3, name = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : \"Window\", promise = global.readyPromises.get(win);\n if (promise) return promise;\n promise = new promise_ZalgoPromise();\n global.readyPromises.set(win, promise);\n -1 !== timeout && setTimeout(function() {\n return promise.reject(new Error(name + \" did not load after \" + timeout + \"ms\"));\n }, timeout);\n return promise;\n }(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain) && !origin) return sayHello(win);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain)) {\n if (!matchDomain(domain, origin)) throw new Error(\"Remote window domain \" + origin + \" does not match regex: \" + domain.toString());\n domain = origin;\n }\n if (\"string\" != typeof domain && !Array.isArray(domain)) throw new TypeError(\"Expected domain to be a string or array\");\n var actualDomain = domain;\n return new promise_ZalgoPromise(function(resolve, reject) {\n var responseListener = void 0;\n options.fireAndForget || function(hash, listener) {\n global.responseListeners[hash] = listener;\n }(hash, responseListener = {\n name: name,\n window: win,\n domain: actualDomain,\n respond: function(err, result) {\n if (!err) {\n hasResult = !0;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n err ? reject(err) : resolve(result);\n }\n });\n sendMessage(win, {\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash: hash,\n name: name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n if (options.fireAndForget) return resolve();\n var ackTimeout = CONFIG.ACK_TIMEOUT, resTimeout = options.timeout || CONFIG.RES_TIMEOUT, cycleTime = 100;\n setTimeout(function cycle() {\n if (!hasResult) {\n if (isWindowClosed(win)) return responseListener.ack ? reject(new Error(\"Window closed for \" + name + \" before response\")) : reject(new Error(\"Window closed for \" + name + \" before ack\"));\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n -1 !== resTimeout && (resTimeout = Math.max(resTimeout - cycleTime, 0));\n if (responseListener.ack) {\n if (-1 === resTimeout) return;\n cycleTime = Math.min(resTimeout, 2e3);\n } else {\n if (0 === ackTimeout) return reject(new Error(\"No ack for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + CONFIG.ACK_TIMEOUT + \"ms\"));\n if (0 === resTimeout) return reject(new Error(\"No response for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + (options.timeout || CONFIG.RES_TIMEOUT) + \"ms\"));\n }\n setTimeout(cycle, cycleTime);\n }\n }, cycleTime);\n });\n });\n requestPromise.catch(function() {\n !function(hash) {\n global.erroredResponseListeners[hash] = !0;\n }(hash);\n deleteResponseListener(hash);\n });\n requestPromises.push(requestPromise);\n return requestPromise;\n });\n }\n function _send(window, name, data, options) {\n (options = options || {}).window = window;\n options.name = name;\n options.data = data;\n return request(options);\n }\n function sendToParent(name, data, options) {\n var win = getAncestor();\n return win ? _send(win, name, data, options) : new promise_ZalgoPromise(function(resolve, reject) {\n return reject(new Error(\"Window does not have a parent\"));\n });\n }\n function client() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (!options.window) throw new Error(\"Expected options.window\");\n var win = options.window;\n return {\n send: function(name, data) {\n return _send(win, name, data, options);\n }\n };\n }\n global.send = _send;\n var server__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function listen(options) {\n if (!options.name) throw new Error(\"Expected options.name\");\n if (!options.handler) throw new Error(\"Expected options.handler\");\n var name = options.name, win = options.window, domain = options.domain, listenerOptions = {\n handler: options.handler,\n handleError: options.errorHandler || function(err) {\n throw err;\n },\n window: win,\n domain: domain || constants_CONSTANTS.WILDCARD,\n name: name\n }, requestListener = function addRequestListener(_ref6, listener) {\n var name = _ref6.name, win = _ref6.win, domain = _ref6.domain;\n if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n if (Array.isArray(win)) {\n for (var listenersCollection = [], _i6 = 0, _win2 = win, _length6 = null == _win2 ? 0 : _win2.length; _i6 < _length6; _i6++) {\n var item = _win2[_i6];\n listenersCollection.push(addRequestListener({\n name: name,\n domain: domain,\n win: item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i8 = 0, _length8 = null == listenersCollection ? 0 : listenersCollection.length; _i8 < _length8; _i8++) listenersCollection[_i8].cancel();\n }\n };\n }\n if (Array.isArray(domain)) {\n for (var _listenersCollection = [], _i10 = 0, _domain2 = domain, _length10 = null == _domain2 ? 0 : _domain2.length; _i10 < _length10; _i10++) {\n var _item = _domain2[_i10];\n _listenersCollection.push(addRequestListener({\n name: name,\n win: win,\n domain: _item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i12 = 0, _length12 = null == _listenersCollection ? 0 : _listenersCollection.length; _i12 < _length12; _i12++) _listenersCollection[_i12].cancel();\n }\n };\n }\n var existingListener = getRequestListener({\n name: name,\n win: win,\n domain: domain\n });\n win && win !== constants_CONSTANTS.WILDCARD || (win = global.WINDOW_WILDCARD);\n domain = domain || constants_CONSTANTS.WILDCARD;\n if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n var requestListeners = global.requestListeners, nameListeners = requestListeners[name];\n if (!nameListeners) {\n nameListeners = new weakmap_CrossDomainSafeWeakMap();\n requestListeners[name] = nameListeners;\n }\n var winListeners = nameListeners.get(win);\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n var strDomain = domain.toString(), regexListeners = winListeners[__DOMAIN_REGEX__], regexListener = void 0;\n if (util_isRegex(domain)) {\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n regexListener = {\n regex: domain,\n listener: listener\n };\n regexListeners.push(regexListener);\n } else winListeners[strDomain] = listener;\n return {\n cancel: function() {\n if (winListeners) {\n delete winListeners[strDomain];\n win && 0 === Object.keys(winListeners).length && nameListeners.delete(win);\n regexListener && regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n };\n }({\n name: name,\n win: win,\n domain: domain\n }, listenerOptions);\n if (options.once) {\n var _handler = listenerOptions.handler;\n listenerOptions.handler = once(function() {\n requestListener.cancel();\n return _handler.apply(this, arguments);\n });\n }\n if (listenerOptions.window && options.errorOnClose) var interval = function(method, time) {\n var timeout = void 0;\n timeout = setTimeout(function runInterval() {\n timeout = setTimeout(runInterval, 50);\n (function() {\n if (win && \"object\" === (void 0 === win ? \"undefined\" : server__typeof(win)) && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error(\"Post message target window is closed\"));\n }\n }).call();\n }, 50);\n return {\n cancel: function() {\n clearTimeout(timeout);\n }\n };\n }();\n return {\n cancel: function() {\n requestListener.cancel();\n }\n };\n }\n function _on(name, options, handler) {\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n (options = options || {}).name = name;\n options.handler = handler || options.handler;\n return listen(options);\n }\n function server_once(name) {\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, handler = arguments[2];\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n options = options || {};\n handler = handler || options.handler;\n var errorHandler = options.errorHandler, promise = new promise_ZalgoPromise(function(resolve, reject) {\n (options = options || {}).name = name;\n options.once = !0;\n options.handler = function(event) {\n resolve(event);\n if (handler) return handler(event);\n };\n options.errorHandler = function(err) {\n reject(err);\n if (errorHandler) return errorHandler(err);\n };\n }), onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n return promise;\n }\n function server_listener() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return {\n on: function(name, handler) {\n return _on(name, options, handler);\n }\n };\n }\n global.on = _on;\n function disable() {\n delete window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener(\"message\", messageListener);\n }\n var public_parent = getAncestor();\n function cleanUpWindow(win) {\n var requestPromises = global.requestPromises.get(win);\n if (requestPromises) for (var _i2 = 0, _length2 = null == requestPromises ? 0 : requestPromises.length; _i2 < _length2; _i2++) requestPromises[_i2].reject(new Error(\"No response from window - cleaned up\"));\n global.popupWindowsByWin && global.popupWindowsByWin.delete(win);\n global.remoteWindows && global.remoteWindows.delete(win);\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n }\n var bridge = null;\n function init() {\n if (!global.initialized) {\n handler = messageListener, (obj = window).addEventListener ? obj.addEventListener(\"message\", handler) : obj.attachEvent(\"onmessage\", handler);\n !function() {\n handler = function(_ref3) {\n var source = _ref3.source, origin = _ref3.origin, promise = global.readyPromises.get(source) || new promise_ZalgoPromise();\n promise.resolve({\n origin: origin\n });\n global.readyPromises.set(source, promise);\n }, global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {\n domain: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin;\n return handler({\n source: source,\n origin: origin\n });\n });\n var handler, parent = getAncestor();\n parent && sayHello(parent).catch(lib_util_noop);\n }();\n listenForMethods({\n on: _on,\n send: _send\n });\n }\n var obj, handler;\n global.initialized = !0;\n }\n init();\n __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(__webpack_exports__, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(__webpack_exports__, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(__webpack_exports__, \"init\", function() {\n return init;\n });\n __webpack_require__.d(__webpack_exports__, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(__webpack_exports__, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(__webpack_exports__, \"request\", function() {\n return request;\n });\n __webpack_require__.d(__webpack_exports__, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(__webpack_exports__, \"client\", function() {\n return client;\n });\n __webpack_require__.d(__webpack_exports__, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(__webpack_exports__, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(__webpack_exports__, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(__webpack_exports__, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(__webpack_exports__, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(__webpack_exports__, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(__webpack_exports__, \"disable\", function() {\n return disable;\n });\n __webpack_exports__.default = interface_namespaceObject;\n }\n });\n});\n//# sourceMappingURL=post-robot.js.map","/* @flow */\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = require('./dist/post-robot');\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports.default = module.exports;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IAssetSidebarInitData, setAssetDto } from \"./types\";\nimport Asset from './stack/api/asset'\n\n/** Class representing an asset Extension from Contentstack UI. */\n\nclass AssetSidebarWidget {\n /**\n * @hideconstructor\n */\n\n currentAsset: { [key: string]: any };\n _emitter: EventEmitter;\n _connection: any;\n _changedData?: { [key: string]: any };\n\n constructor(\n initializationData: IAssetSidebarInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * Gets the content type of the current asset.\n * @type {Object}\n */\n\n this.currentAsset = initializationData.data.currentAsset;\n\n this._emitter = emitter;\n\n this._connection = connection;\n\n const thisAsset = this;\n\n this._emitter.on(\n \"assetSave\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset.currentAsset = event.data;\n }\n );\n\n this._emitter.on(\n \"assetChange\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset._changedData = event.data;\n }\n );\n\n this.getData = this.getData.bind(this);\n this.setData = this.setData.bind(this);\n this.syncAsset = this.syncAsset.bind(this);\n this.updateWidth = this.updateWidth.bind(this);\n this.onSave = this.onSave.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onPublish = this.onPublish.bind(this);\n this.onUnPublish = this.onUnPublish.bind(this);\n this.replaceAsset = this.replaceAsset.bind(this);\n }\n\n getData() {\n return this.currentAsset;\n }\n\n async setData(asset: Partial): Promise {\n return this._connection.sendToParent(\"setData\", asset);\n }\n\n async syncAsset(): Promise {\n return this._connection.sendToParent(\"syncAsset\");\n }\n\n async updateWidth(width: number): Promise {\n if (typeof width !== \"number\") {\n throw new Error(\"Width must be a number\");\n }\n return this._connection.sendToParent(\"updateAssetSidebarWidth\", width);\n }\n\n async replaceAsset(file: File): Promise {\n const asset = Asset(this._emitter);\n return asset.handleUpload([file], 'replace');\n }\n\n /**\n * This function executes the callback function every time an asset is saved.\n * @param {function} callback The function to be called when an asset is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetSave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an asset is edited/changed.\n */\n\n onChange(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetChange\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an asset has been published with the respective payload.\n * @param {function} callback The function to be called when an asset is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an asset has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an asset is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default AssetSidebarWidget;\n","import {\n IConfigCallback,\n IContainerMetaData,\n IOnFunction,\n IPluginMetaData,\n IRteParam,\n IConfig\n} from \"./types\";\n\nexport class RTEPlugin {\n private pluginMetaData: IPluginMetaData = {\n registry: {\n title: \"\",\n toolbar: {\n inMainToolbar: true,\n inHoveringToolbar: true,\n },\n isContentstackElement: true,\n },\n meta: {\n id: \"\",\n elementType: null,\n editorCallbacks: {},\n isDependent: false,\n },\n };\n private isContainer: boolean = false;\n private containerMetaData: IContainerMetaData = {\n registry: {\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n id: this.pluginMetaData.meta.id,\n dependentPlugins: [],\n },\n };\n\n constructor(id: string, private configCallback: IConfigCallback) {\n this.pluginMetaData.meta.id = id;\n }\n\n addPlugins = (...plugins: RTEPlugin[]) => {\n // convert to dropdown if not already\n if (this.pluginMetaData.meta.isDependent)\n throw Error(\"cannot have another container inside\");\n\n this.isContainer = true;\n\n // clean pluginMetaData\n\n plugins.forEach((plugin) => {\n // make sure that this plugin is not another dropdown\n if (plugin.isContainer) {\n throw Error(\"cannot have another container inside\");\n }\n\n plugin.pluginMetaData.registry.category =\n this.pluginMetaData.meta.id;\n this.containerMetaData.meta.dependentPlugins.push(plugin);\n plugin.pluginMetaData.meta.isDependent = true;\n });\n };\n\n on = (\n type: Type,\n callback: IOnFunction[Type]\n ) => {\n switch (type) {\n case \"beforeChildRender\": {\n this.pluginMetaData.registry.beforeChildrenRender = callback;\n break;\n }\n\n case \"beforeRender\": {\n this.pluginMetaData.registry.beforeElementRender = callback;\n break;\n }\n\n case \"exec\": {\n this.pluginMetaData.registry.handleMouseDown = callback;\n break;\n }\n\n case \"keydown\": {\n this.pluginMetaData.meta.editorCallbacks[\"keydown\"] = callback;\n break;\n }\n\n case \"paste\":\n case \"deleteBackward\":\n case \"deleteForward\":\n case \"insertBreak\":\n case \"normalize\":\n default: {\n this.pluginMetaData.meta.editorCallbacks[type] = callback;\n break;\n }\n }\n };\n\n get = async (rte: IRteParam | void) => {\n const config = await this.configCallback(rte);\n\n Object.entries(config).forEach(\n //@ts-ignore\n ([key, value]: [Key, any]) => {\n switch (key) {\n case \"title\": {\n this.pluginMetaData.registry.title = value;\n break;\n }\n case \"icon\": {\n this.pluginMetaData.registry.iconName = value;\n this.containerMetaData.registry.iconName = value;\n break;\n }\n case \"display\": {\n // make every other options false\n this.pluginMetaData.registry.toolbar = {\n inHoveringToolbar: false,\n inMainToolbar: false,\n };\n\n if (typeof value === \"string\") {\n switch (value) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach((display) => {\n switch (display) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n });\n }\n break;\n }\n\n case \"elementType\": {\n const isInline = (\n typeof value === 'string' && value === 'inline' ||\n Array.isArray(value) && value.includes('inline')\n )\n if(isInline) {\n let dndOptions = this.pluginMetaData['registry']['dndOptions'];\n if(!dndOptions) {\n this.pluginMetaData['registry']['dndOptions'] = {};\n dndOptions = this.pluginMetaData['registry']['dndOptions']\n }\n dndOptions['DisableDND'] = true;\n dndOptions['DisableSelectionHalo'] = true;\n }\n this.pluginMetaData.meta.elementType = value;\n break;\n }\n\n case \"render\": {\n this.pluginMetaData.registry.Component = value;\n break;\n }\n\n case \"shouldOverride\" : {\n this.pluginMetaData.registry.shouldOverride = value\n }\n }\n }\n );\n\n const containerMeta = this.containerMetaData.meta;\n this.containerMetaData = {\n registry: {\n ...this.containerMetaData.registry,\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n ...containerMeta,\n id: this.pluginMetaData.meta.id,\n },\n };\n\n return this.isContainer ? this.containerMetaData : this.pluginMetaData;\n };\n}\n\nexport const rtePluginInitializer = (\n id: string,\n configCallback: IConfigCallback\n) => {\n if (!(id && configCallback)) throw Error('Please provide value \"id\" and \"configCallback\"');\n\n return new RTEPlugin(id, configCallback);\n};\n","import Stack from \"../stack\";\nimport { IInstallationData, ValidationOptions } from \"../types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport { onData, onError } from \"../utils/utils\";\n\nexport declare interface AppConfigAdditionalData {\n currentBranch: string;\n}\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nexport class AppConfig {\n _data: { [key: string]: any };\n _connection: any;\n _emitter: EventEmitter;\n private _additionalData: AppConfigAdditionalData;\n\n constructor(\n data: { [key: string]: any },\n connection: any,\n emitter: EventEmitter,\n additionalData: AppConfigAdditionalData\n ) {\n this._data = data;\n this._connection = connection;\n this._emitter = emitter;\n\n this.setValidity = this.setValidity.bind(this);\n this._additionalData = additionalData;\n }\n\n stack = () => {\n return new Stack(this._data.stack, this._connection, {\n currentBranch: this._additionalData.currentBranch,\n });\n };\n\n setInstallationData = (\n installationData: IInstallationData\n ): Promise<{ [key: string]: any }> => {\n return this._connection\n .sendToParent(\"setInstallationData\", installationData)\n .then(onData)\n .catch(onError);\n };\n\n getInstallationData = (): Promise => {\n return this._connection\n .sendToParent(\"getInstallationData\")\n .then(onData)\n .catch(onError);\n };\n\n /**\n * Set the validation state of the app. If the validation is false, the Contentstack App Config\n * will not allow to save the configuration. The message will be displayed if provided.\n * @param isValid set the validation state of the app\n * @param options additional options to be sent to the parent\n * @returns returns a promise with the data sent from the parent\n */\n async setValidity(\n isValid: boolean,\n options?: ValidationOptions\n ): Promise> {\n if (typeof isValid !== \"boolean\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.isValidTypeBoolean\n )\n );\n }\n\n if (options?.message && typeof options.message !== \"string\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.messageTypeString\n )\n );\n }\n\n return this._connection\n .sendToParent(\"setValidity\", { isValid, options })\n .then(onData)\n .catch(onError);\n }\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\n\nimport Field from \"./field\";\nimport {\n ICurrentContentType,\n IFieldInitData,\n IFieldModifierLocationInitData,\n IRTELocationInitData,\n ISidebarInitData,\n} from \"./types\";\nimport {\n IEntryOptions,\n IGetFieldOptions,\n IOnEntryChangeCallback,\n} from \"./types/entry.types\";\n\n/** Class representing an entry from Contentstack UI. Not available for Dashboard Widget extension. */\n\nclass Entry {\n /**\n * @hideconstructor\n */\n\n content_type: ICurrentContentType;\n _data: { [key: string]: any };\n locale: string;\n _connection: any;\n _emitter: EventEmitter;\n _changedData?: { [key: string]: any };\n _options: IEntryOptions;\n\n constructor(\n initializationData:\n | IFieldInitData\n | ISidebarInitData\n | IRTELocationInitData\n | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter,\n options?: IEntryOptions\n ) {\n /**\n * Gets the content type of the current entry.\n * @type {Object}\n */\n this.content_type = initializationData.data.content_type;\n\n this._data = initializationData.data.entry;\n\n if (initializationData.data.changedData) {\n this._changedData = initializationData.data.changedData;\n }\n\n /**\n * Gets the locale of the current entry.\n * @type {string}\n */\n this.locale = initializationData.data.locale;\n\n this._connection = connection;\n\n this._emitter = emitter;\n\n this._options = options || {};\n\n const thisEntry = this;\n\n this._emitter.on(\n \"entrySave\",\n (event: { data: { [key: string]: any } }) => {\n thisEntry._data = event.data;\n }\n );\n\n this._emitter.on(\n \"entryChange\",\n (event: { data: { [key: string]: any } }) => {\n thisEntry._changedData = event.data;\n }\n );\n }\n\n /**\n * Gets data of the current entry.\n * @return {Object} Returns entry data.\n */\n\n getData() {\n return this._data;\n }\n\n /**\n * Gets the field object for the saved data, which allows you to interact with the field.\n * This object will have all the same methods and properties of extension.field.\n * Note: For fields initialized using the getFields function, the setData function currently works only for the following fields: as single_line, multi_line, RTE, markdown, select, number, boolean, date, link, and extension of data type text, number, boolean, and date.\n * @example\n * var field = entry.getField('field_uid');\n * var fieldSchema = field.schema;\n * var fieldUid = field.uid;\n * var fieldData = field.getData();\n * @param {string} uid Unique ID of the field\n * @param {boolean} options.useUnsavedSchema If set to true, the field will get the unsaved field\n * @return {Object} Field object\n */\n\n getField(uid: string, options?: IGetFieldOptions): Field {\n const { useUnsavedSchema = false } = options || {};\n const { FieldInstance = Field } = this._options._internalFlags || {};\n\n const path = uid.split(\".\");\n let value = useUnsavedSchema\n ? this._changedData || this._data\n : this._data;\n let schema = this.content_type.schema;\n\n const isDataEmpty = Object.keys(value).length === 0;\n\n if (isDataEmpty) {\n throw new Error(\n \"The data is unsaved. Save the data before requesting the field.\"\n );\n }\n\n try {\n let skipNext = false;\n let skipNextTwo = false;\n path.forEach((key: string | number, index: number) => {\n if (skipNext) {\n if (skipNextTwo) {\n skipNextTwo = false;\n } else {\n skipNext = false;\n }\n return;\n }\n\n schema = schema.find((x: { uid: any }) => x.uid === key);\n if (!schema) {\n throw Error(\"schema not found\");\n }\n\n value = value[key];\n\n if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === false &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n } else if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === true &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n value = value[path[index + 1]];\n skipNext = true;\n } else if (\n schema.data_type === \"blocks\" &&\n path.length !== index + 1\n ) {\n const blockId = Object.keys(value[path[index + 1]])[0];\n schema = schema.blocks.find(\n (block: { uid: string }) => block.uid === blockId\n );\n if (path.length === index + 2) {\n // complete block value with uid\n value = value[path[index + 1]];\n } else {\n // block value without uid\n value = value[path[index + 1]][blockId];\n schema = schema.schema;\n }\n\n skipNext = true;\n skipNextTwo = true;\n }\n });\n } catch (e) {\n throw Error(\"Invalid uid, Field not found\");\n }\n const fieldIntilaizationDataObject = {\n data: {\n uid,\n value,\n schema,\n data_type: schema.data_type,\n },\n };\n\n //@ts-ignore\n const fieldObject = new FieldInstance(\n fieldIntilaizationDataObject,\n this._connection,\n this._emitter\n );\n delete fieldObject.onChange;\n return fieldObject;\n }\n\n /**\n * This function executes the callback function every time an entry is saved.\n * @param {function} callback The function to be called when an entry is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entrySave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an entry is edited/changed.\n */\n\n onChange(callback: IOnEntryChangeCallback) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\n \"entryChange\",\n (event: { data: any; resolvedData: Record }) => {\n callback(event.data, event.resolvedData);\n }\n );\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an entry has been published with the respective payload.\n * @param {function} callback The function to be called when an entry is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an entry has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an entry is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default Entry;\n","import postRobot from \"post-robot\";\nimport EventEmitter from \"wolfy87-eventemitter\";\n\nimport AssetSidebarWidget from \"./AssetSidebarWidget\";\nimport { IRTELocation, IRTEPluginInitializer } from \"./RTE/types\";\nimport { AppConfig } from \"./appConfig\";\nimport Entry from \"./entry\";\nimport Field from \"./field\";\nimport FieldModifierLocationEntry from \"./fieldModifierLocation/entry\";\nimport FieldModifierLocationField from \"./fieldModifierLocation/field\";\nimport FieldModifierLocationFrame from \"./fieldModifierLocation/frame\";\nimport Metadata from \"./metadata\";\nimport Modal from \"./modal\";\nimport Stack from \"./stack\";\nimport Store from \"./store\";\nimport {\n IAppConfigInitData,\n IAppConfigWidget,\n IAssetSidebarInitData,\n ICustomField,\n IDashboardInitData,\n IDashboardWidget,\n IEntryFieldLocation,\n IEntryFieldLocationInitData,\n IFieldInitData,\n IFieldModifierLocation,\n IFieldModifierLocationInitData,\n IFullPageLocation,\n IFullPageLocationInitData,\n ILocation,\n IPageWidget,\n IRTEInitData,\n IRTELocationInitData,\n ISidebarInitData,\n ISidebarWidget,\n IUser,\n Manifest,\n Region,\n} from \"./types\";\nimport { AnyObject } from \"./types/common.types\";\nimport { formatAppRegion, onData, onError } from \"./utils/utils\";\nimport Window from \"./window\";\n\nconst emitter = new EventEmitter();\n\n/** Class representing an extension from Contentstack App Framework SDK. */\n\nclass Extension {\n /**\n * @hideconstructor\n */\n\n appUID: string;\n installationUID: string;\n currentUser: IUser;\n private type: ILocation;\n private config: AnyObject;\n postRobot: any;\n stack: Stack;\n store: Store;\n metadata: Metadata;\n locationUID: string;\n modal: Modal;\n readonly region: Region;\n version: number | null;\n\n location: {\n DashboardWidget: IDashboardWidget | null;\n SidebarWidget: ISidebarWidget | null;\n CustomField: ICustomField | null;\n RTEPlugin: IRTEPluginInitializer | null;\n RTELocation: IRTELocation | null;\n AppConfigWidget: IAppConfigWidget | null;\n FullscreenAppWidget: IPageWidget | null;\n AssetSidebarWidget: AssetSidebarWidget | null;\n EntryFieldLocation: IEntryFieldLocation | null;\n FullPage: IFullPageLocation | null;\n FieldModifierLocation: IFieldModifierLocation | null;\n };\n\n constructor(\n initData:\n | IRTEInitData\n | IDashboardInitData\n | IFieldInitData\n | ISidebarInitData\n | IAppConfigInitData\n | IAssetSidebarInitData\n | IFullPageLocationInitData\n | IEntryFieldLocationInitData\n | IFieldModifierLocationInitData\n ) {\n const initializationData = initData;\n\n this.postRobot = postRobot;\n\n /**\n * This value represents the current App's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.appUID = initializationData.data.app_id;\n\n /**\n * This value represents the current location's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.locationUID = initializationData.data.extension_uid;\n\n /**\n * This object holds details of the app initialization user.\n * @type {Object}\n */\n this.installationUID = initializationData.data.installation_uid;\n /**\n * This object holds details of the current user.\n * @type {Object}\n */\n this.currentUser = initializationData.data.user;\n\n /**\n * location of extension, \"RTE\" | \"FIELD\" | \"DASHBOARD\" | \"WIDGET\" | \"APP_CONFIG_WIDGET\" | \"FULL_SCREEN_WIDGET\".\n * @type {string}\n */\n this.type = initializationData.data.type;\n\n /**\n * Store to persist data for extension.\n * Note: Data is stored in the browser {@link external:localStorage} and will be lost if the {@link external:localStorage} is cleared in the browser.\n * @type {Store}\n */\n this.store = new Store(postRobot);\n\n /**\n * This method returns stack object which allows users to read and manipulate a range of objects in a stack.\n * @type {Stack}\n */\n this.stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n this.metadata = new Metadata(postRobot);\n\n this.config = initializationData.data.config ?? {};\n\n this.location = {\n DashboardWidget: null,\n CustomField: null,\n SidebarWidget: null,\n RTEPlugin: null,\n RTELocation: null,\n AppConfigWidget: null,\n FullscreenAppWidget: null,\n AssetSidebarWidget: null,\n FullPage: null,\n EntryFieldLocation: null,\n FieldModifierLocation: null,\n };\n\n window[\"postRobot\"] = postRobot;\n\n this.modal = new Modal();\n\n this.region = formatAppRegion(initializationData.data.region);\n\n this.version = initializationData.data.manifest?.version || null;\n\n const stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n\n switch (initializationData.data.type) {\n case \"DASHBOARD\": {\n this.location.DashboardWidget = {\n frame: new Window(\n postRobot,\n this.type as \"DASHBOARD\",\n emitter,\n initializationData.data.dashboard_width\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n case \"WIDGET\": {\n this.location.SidebarWidget = {\n entry: new Entry(\n initializationData as ISidebarInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"APP_CONFIG_WIDGET\": {\n this.location.AppConfigWidget = {\n installation: new AppConfig(\n initializationData,\n postRobot,\n emitter,\n {\n currentBranch:\n initializationData.data.currentBranch,\n }\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"ASSET_SIDEBAR_WIDGET\": {\n this.location.AssetSidebarWidget = new AssetSidebarWidget(\n initializationData as IAssetSidebarInitData,\n postRobot,\n emitter\n );\n\n break;\n }\n\n case \"RTE\": {\n import(\"./RTE\").then(({ rtePluginInitializer }) => {\n this.location.RTEPlugin = rtePluginInitializer;\n this.location.RTELocation = {\n entry: new Entry(\n initializationData as IRTELocationInitData,\n postRobot,\n emitter\n ),\n }\n });\n break;\n }\n\n case \"FIELD_MODIFIER_LOCATION\":\n case \"ENTRY_FIELD_LOCATION\": {\n initializationData.data.self = true;\n this.location.FieldModifierLocation = {\n entry: new FieldModifierLocationEntry(\n initializationData as IFieldModifierLocationInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n field: new FieldModifierLocationField(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n frame: new FieldModifierLocationFrame(postRobot, emitter),\n };\n break;\n }\n\n case \"FULL_PAGE_LOCATION\": {\n this.location.FullPage = {\n stack: stack,\n };\n break;\n }\n\n case \"FIELD\":\n default: {\n initializationData.data.self = true;\n this.location.CustomField = {\n field: new Field(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n fieldConfig: initializationData.data.field_config,\n entry: new Entry(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n frame: new Window(postRobot, this.type as \"FIELD\", emitter),\n };\n\n break;\n }\n }\n\n try {\n //@ts-ignore\n postRobot.on(\"extensionEvent\", (event) => {\n if (event.data.name === \"entrySave\") {\n emitter.emitEvent(\"entrySave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryChange\") {\n emitter.emitEvent(\"entryChange\", [\n {\n data: event.data.data,\n resolvedData: event.data.otherData.resolvedData,\n },\n ]);\n }\n\n if (event.data.name === \"entryPublish\") {\n emitter.emitEvent(\"entryPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryUnPublish\") {\n emitter.emitEvent(\"entryUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetSave\") {\n emitter.emitEvent(\"assetSave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetChange\") {\n emitter.emitEvent(\"assetChange\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetPublish\") {\n emitter.emitEvent(\"assetPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetUnPublish\") {\n emitter.emitEvent(\"assetUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"dashboardResize\") {\n emitter.emitEvent(\"dashboardResize\", [\n { state: event.data.state },\n ]);\n }\n\n if (event.data.name === \"extensionFieldChange\") {\n emitter.emitEvent(\"extensionFieldChange\", [\n { data: event.data.data },\n ]);\n }\n });\n } catch (err) {\n console.error(\"extension Event\", err);\n }\n }\n\n pulse = (eventName: string, metadata: { [key: string]: any }) => {\n this.postRobot.sendToParent(\"analytics\", { eventName, metadata });\n };\n\n getConfig = (): Promise<{ [key: string]: any }> => {\n if (!this.installationUID) {\n return Promise.resolve(this.config);\n }\n return this.postRobot\n .sendToParent(\"getConfig\")\n .then(onData)\n .catch(onError);\n };\n\n getCurrentLocation = () => {\n return this.type;\n };\n\n /**\n * Conditionally retrieves and returns the app version if not present already\n * @returns version of the app currently running.\n */\n getAppVersion = async (): Promise => {\n if (this.version) {\n return Promise.resolve(this.version);\n }\n if (!this.installationUID) {\n return Promise.resolve(null);\n }\n const orgUid = this.stack._data.org_uid;\n const options = {\n uid: this.installationUID,\n action: \"getAppManifest\",\n headers: { organization_uid: orgUid },\n skip_api_key: true,\n };\n const app: Manifest = await this.postRobot\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n this.version = app.version;\n return this.version;\n };\n\n getCurrentRegion = () => {\n return this.region;\n };\n\n static initialize(version: string) {\n const meta = {\n sdkType: \"app-sdk\",\n };\n //@ts-ignore\n return postRobot.sendToParent(\"init\", { version, meta });\n }\n\n setReady() {\n return this.postRobot.sendToParent(\"ready\");\n }\n}\n\nexport default Extension;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"./types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(field: Field, value: { [key: string]: any }) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass Field {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n\n setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false } = {}) {\n return resolved ? this._resolvedData : this._data;\n }\n\n /**\n * Sets the focus for a field when an extension is being used. This method shows user presence and highlights the extension field that the user is currently accessing in Contentstack UI.\n * @return {Object} A promise object which is resolved when Contentstack UI returns an acknowledgement of the focused state.\n */\n setFocus() {\n return this._connection.sendToParent(\"focus\");\n }\n\n /**\n * This function is called when another extension programmatically changes data of this field using field.setData() function, only available for extension field, only support extensions of data type text, number, boolean or date.\n * @param {function} callback The function to be called when an entry is published.\n */\n onChange?(callback: (data: any) => any) {\n const fieldObj = this;\n if (callback && typeof callback === \"function\") {\n fieldObj._emitter.on(\"extensionFieldChange\", (event: any) => {\n this._data = event.data;\n this._resolvedData = event.data;\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\n\nexport default Field;\n","import Entry from \"../entry\";\nimport { IFieldModifierLocationInitData } from \"../types\";\nimport { IGetTagsOptions } from \"../types/entry.types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport Field from \"./field\";\n\nclass FieldModifierLocationEntry extends Entry {\n constructor(\n initializationData: IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n super(initializationData, connection, emitter, {\n _internalFlags: {\n FieldInstance: Field as any,\n },\n });\n }\n\n /**\n * Returns the value of the tags associated with the entry.\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n getTags(options?: IGetTagsOptions): Array {\n const { useUnsavedSchema = false } = options || {};\n\n if (useUnsavedSchema) {\n return this._changedData?.tags || this._data.tags;\n } else {\n return this._data.tags;\n }\n }\n\n /**\n * Sets the tags on the entry.\n * @param tags tags to be set on the entry\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n async setTags(tags: Array): Promise> {\n /**\n * Validate if the tags are array of strings\n * @param {Array} tags\n * @returns {boolean} Returns true if the tags are array of strings\n */\n function areTagsValid(tags: Array): tags is Array {\n return (\n Array.isArray(tags) &&\n tags.every((tag) => typeof tag === \"string\")\n );\n }\n\n if (tags === undefined) {\n throw new Error(generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldNotBeBlank));\n }\n\n if (!areTagsValid(tags)) {\n throw new Error(\n generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldBeArrayOfStrings)\n );\n }\n\n await this._connection.sendToParent(\"setTags\", { tags });\n\n if (!this._changedData) {\n this._changedData = {};\n }\n\n this._changedData.tags = tags;\n\n return tags;\n }\n}\n\nexport default FieldModifierLocationEntry;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"../types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(\n field: FieldModifierLocationField,\n value: { [key: string]: any }\n) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass FieldModifierLocationField {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n async setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false }: { resolved?: boolean } = {}): any {\n return resolved ? this._resolvedData : this._data;\n }\n}\n\nexport default FieldModifierLocationField;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\nimport { ERROR_MESSAGES } from \"../utils/errorMessages\";\n\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass FieldModifierLocationFrame {\n /**\n * @hideconstructor\n */\n\n _connection: any;\n _autoResizingEnabled = false;\n _emitter: EventEmitter;\n _height?: number;\n _width?: number;\n\n private observer: MutationObserver | undefined;\n\n constructor(connection: any, emitter: EventEmitter) {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._emitter = emitter;\n\n this.updateDimension = this.updateDimension.bind(this);\n this.enableAutoResizing = this.enableAutoResizing.bind(this);\n this.disableAutoResizing = this.disableAutoResizing.bind(this);\n this.closeModal = this.closeModal.bind(this);\n\n /**\n * The auto resizing should be enabled by default.\n */\n this.enableAutoResizing();\n }\n\n /**\n * This method updates the extension height and width on Contentstack UI.\n * If the value is not passed, it will update the height and width of the\n * extension with the current height and width of the extension.\n * @param {string|number} height Desired height of the iframe window\n */\n async updateDimension(dimension?: { height?: number; width?: number }) {\n const { height, width } = dimension || {};\n\n if (height === undefined && width === undefined) {\n this._height = Math.ceil(\n document.documentElement.getBoundingClientRect().height\n );\n\n this._width = Math.ceil(\n document.documentElement.getBoundingClientRect().width\n );\n\n await this._connection.sendToParent(\"resize\", {\n height: this._height,\n width: this._width,\n });\n return;\n }\n\n const dimensionBody = {};\n\n if (height !== undefined && typeof height !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionHeightShouldBeNumber\n );\n }\n\n if (this._height !== height) {\n this._height = height;\n dimensionBody[\"height\"] = this._height;\n }\n\n if (width !== undefined && typeof width !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionWidthShouldBeNumber\n );\n }\n\n if (this._width !== width) {\n this._width = width;\n dimensionBody[\"width\"] = this._width;\n }\n\n if (Object.keys(dimensionBody).length !== 0) {\n await this._connection.sendToParent(\"resize\", dimensionBody);\n }\n }\n\n /**\n * Prevent user from accidently closing the app by clicking outside the frame\n * if the app is performing some active task.\n */\n async preventFrameClose(state: boolean) {\n await this._connection.sendToParent(\"preventFrameClose\", {\n state,\n });\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n enableAutoResizing(): FieldModifierLocationFrame {\n if (this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = true;\n\n this.observer = new MutationObserver(\n async () => await this.updateDimension()\n );\n\n const mutationObserverConfig = {\n attributes: true,\n childList: true,\n subtree: true,\n };\n\n this.observer.observe(window.document.body, mutationObserverConfig);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n disableAutoResizing(): FieldModifierLocationFrame {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n this.observer?.disconnect();\n return this;\n }\n\n /**\n * It closes the app modal.\n * @returns {Promise}\n */\n async closeModal(): Promise {\n return await this._connection.sendToParent(\"closeModal\");\n }\n}\n\nexport default FieldModifierLocationFrame;\n","import Extension from './extension';\nimport postRobot from 'post-robot';\nimport { version } from '../package.json';\nimport { IDashboardInitData, IFieldInitData, ISidebarInitData } from './types.js';\n\n//@ts-ignore\npostRobot.CONFIG.LOG_LEVEL = 'error';\n\n/** Class to initialize the plugin on Contentstack UI. */\n/**\n * @hideconstructor\n */\n\nclass ContentstackAppSDK {\n /**\n * You need to first include Contentstack UI Extensions SDK and\n * Contentstack UI Stylesheet in you HTML file and then call\n * ContentstackUIExtension.init in the script tag.\n * @example\n * HTML\n * \n * \n * @example Custom Filed\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var value = extension.field.getData()\n * extension.field.setData(\"New Field Data\")\n * })\n * @example Custom Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var entry = extension.entry.getData()\n * })\n * @example Dashboard Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var stack = extension.stack;\n * var stackData = stack.getData();\n * })\n * @return {external:Promise} A promise object which will be resolved with an instance of the {@link Extension} class which is instantiated using the data received from the Contentstack UI.\n */\n\n static _extension: Extension\n\n static init(): Promise {\n if (this._extension) { return Promise.resolve(this._extension); }\n return Extension.initialize(version).then((initializationData: ISidebarInitData | IDashboardInitData | IFieldInitData) => {\n this._extension = new Extension(initializationData);\n return Promise.resolve(this._extension);\n }).catch((e: Error) => Promise.reject(e));\n }\n\n\n /**\n * Version of Contentstack UI extension.\n * @type {string}\n */\n static get SDK_VERSION() {\n return version;\n }\n}\n\nexport default ContentstackAppSDK;\nmodule.exports = ContentstackAppSDK\n","import { AnyObject } from \"./types/common.types\";\n\nexport declare interface IMetadata {\n uid: string;\n type: \"asset\" | \"entry\";\n _content_type_uid?: string;\n locale?: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataCreateDto\n extends Omit, \"uid\"> {\n entity_uid: string;\n}\n\nexport declare interface IMetadataUpdateDto {\n uid: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataRetrieveDto {\n uid: string;\n}\n\nexport declare interface IMetadataDeleteDto {\n uid: string;\n}\n\nconst metadataTypes = {\n creteMetadata: \"createMetadata\",\n retrieveMetadata: \"getMetadata\",\n retrieveAllMetadata: \"getAllMetadata\",\n updateMetadata: \"updateMetadata\",\n deleteMetadata: \"deleteMetadata\",\n} as const;\n\nclass Metadata {\n constructor(private _connection: any) {}\n\n createMetaData(metadataConfig: IMetadataCreateDto) {\n const { entity_uid, type = \"asset\", ...otherMetaData } = metadataConfig;\n\n const data = {\n action: metadataTypes.creteMetadata,\n payload: {\n metadata: {\n entity_uid,\n type,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveMetaData(metadataConfig: IMetadataRetrieveDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.retrieveMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveAllMetaData(params: AnyObject = {}) {\n const data = {\n action: metadataTypes.retrieveAllMetadata,\n params,\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n updateMetaData(metadataConfig: IMetadataUpdateDto) {\n const { uid, ...otherMetaData } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.updateMetadata,\n payload: {\n metadata: {\n uid,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n deleteMetaData(metadataConfig: IMetadataDeleteDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.deleteMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n}\nexport default Metadata;\n","import { getPreferredBodyElement } from \"./utils/utils\";\n\nclass Modal {\n constructor() {\n if (!Object.prototype.hasOwnProperty.call(window, \"iframeRef\")) {\n const rootElement = getPreferredBodyElement(\n document?.body?.children\n );\n window[\"iframeRef\"] = rootElement;\n }\n }\n\n setBackgroundElement(element: HTMLElement) {\n window[\"iframeRef\"] = element;\n }\n}\n\nexport default Modal;\n","\nimport Base from '../base';\nimport { getReferences, language, environment } from '../../utils';\nimport postRobot from 'post-robot';\nimport { IAnyObject } from '../../../RTE/types';\n\nlet connection: any = {};\n\n/**\n * @summary Creates an instance of `Asset`.\n * @description An initializer is responsible for creating an Asset object.\n * @param {String} uid - uid of the asset\n * @example\n * let Asset = extension.stack.Asset('bltsomething123');\n * @returns {Asset}\n * @ignore\n */\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nclass Asset extends Base {\n getReferences: any\n environment: any\n constructor(uid) {\n super(uid);\n this.getReferences = getReferences;\n this.environment = environment;\n return this;\n }\n\n /**\n * @function\n * @name Stack#Asset.Query\n * @description This static method instantiates the query module for assets. To see the list of methods that can be used for querying assets, refer the {@link Query} module.\n * @example\n * let assetQuery = extension.stack.Asset.Query();\n * assetQuery.where(\"title\": \"main.js\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment\n });\n return entryQuery;\n }\n\n static module(plural = false) {\n return plural ? 'Assets' : 'Asset';\n }\n\n static get connection() {\n return connection;\n }\n\n /**\n * @function\n * @name Stack#Asset.getRteAssets\n * @description This static method retrieves comprehensive information on all assets uploaded through the Rich Text Editor field.\n * @return {external:Promise}\n */\n\n static getRteAssets() {\n return this.connection.sendToParent('stackQuery', { action: 'getRteAssets' }).then(onData).catch(onError);\n }\n\n /**\n * @function\n * @name Stack#Asset.getAssetsOfSpecificTypes\n * @description This static method retrieves assets that are either image or video files, based on the request query.\n * @param {String} assetType Type of asset to be received for e.g., ‘image/png’\n * @return {external:Promise}\n */\n static getAssetsOfSpecificTypes(assetType) {\n if (!assetType || typeof assetType !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.connection.sendToParent('stackQuery', { action: 'getAssetsOfSpecificTypes', asset_type: assetType }).then(onData).catch(onError);\n }\n\n\n /**\n * @name Stack#Asset#only\n * @function\n * @description This method is used to show the selected fields of the assets in the result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('title').fetch();\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @name Stack#Asset#except\n * @function\n * @description This method is used to hide the selected fields of the assets in result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('title').fetch();\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('BASE','title').fetch();\n * @example\n * .Except with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @function\n * @name Stack#Asset#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.Asset('bltsomething123').environment('development').fetch()\n * @returns {Stack#Asset}\n */\n\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addParam\n @function\n @example extension.stack.Asset('uid').addParam('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addQuery\n @function\n @example extension.stack.Asset('uid').addQuery('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n\n /**\n This method will fetch the details of the entries and the assets in which the specified asset is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-asset|\n Asset References}\n @name Stack#Asset#getReferences\n @function\n @example extension.stack.Asset('uid').getReferences().then().catch();\n @return {external:Promise}\n */\n\n /**\n This method deletes an existing asset.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-asset|\n Delete Asset}\n @name Stack#Asset#delete\n @function\n @example extension.stack.Asset('uid').delete().then().catch();\n @return {external:Promise}\n */\n\n\n /**\n * @name Stack#Asset#publish\n * @function\n * @description This method allows you to publish the asset either immediately or schedule the publish for a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .publish(\n {\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n publish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('publishAsset', payload);\n }\n\n /**\n * @function\n * @name Stack#Asset#unpublish\n * @description This method will instantly unpublish the asset, and also give you the provision to automatically unpublish the asset at a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .unpublish({\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n unpublish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('unpublishAsset', payload);\n }\n\n static async handleUpload(_files, type, options?: {parentFolderUid?: string, customUploadHandler?: IAnyObject}) {\n if (!_files || !_files.length) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n const files: File[] = [];\n Array.from(_files).forEach(_ => {\n // @ts-ignore\n const file = new File([_], _.name, { type: _.type });\n files.push(file);\n })\n const uid = new Date().getUTCMilliseconds();\n return (async function() {\n try {\n const uploadReadyListener = postRobot.on(\n `uploadReady_${uid}`,\n function () {\n window.parent.postMessage(\n {\n type: `upload_${uid}`,\n upload_type: type,\n files,\n parentFolderUid: options?.parentFolderUid,\n customUploadHandler: options?.customUploadHandler\n },\n \"*\"\n );\n\n uploadReadyListener.cancel();\n return Promise.resolve({});\n }\n );\n //@ts-ignore\n await postRobot.sendToParent(\"stackOptionsQuery\", {\n action: `upload_${uid}`,\n uid,\n });\n //@ts-ignore\n return postRobot.sendToParent(`upload_${uid}`, {});\n } catch(err) {\n return Promise.reject(err);\n }\n })();\n }\n\n static uploadAsset(files, options?: {parentFolderUid?: string}) {\n return Asset.handleUpload(files, 'upload', options);\n }\n}\n\nexport default (uiConnection) => {\n connection = uiConnection;\n return new Proxy(Asset, {\n apply(Target, thisArg, argumentsList) {\n //@ts-ignore\n return new Target(...argumentsList);\n }\n });\n};\n","//@ts-nocheck\n\nimport Query from './query';\nimport { transform, addParam } from '../utils';\n\n\nfunction onData(data: { data: any; }) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error: any) {\n return Promise.reject(error);\n}\n/**\n * This is Base class, it holds all the methods required for Modle instance,\n * eg ContentType('uid').delete() or Asset('uid').update({...})\n * @ignore\n */\nexport default class Base {\n\n\n uid: string\n _query: { [key: string]: any }\n only: any\n except: any\n addParam: any\n\n static connection: any\n static contentTypeUid: string\n\n constructor(uid: string) {\n if (!uid) { throw new Error('uid is required'); }\n this.uid = uid;\n this._query = {};\n this.only = transform('only');\n this.except = transform('except');\n this.addParam = addParam;\n }\n\n static Query() {\n //@ts-ignore\n return new Query(this.connection, this.module(true), this.contentTypeUid);\n }\n\n\n static create(payload: { [key: string]: any }) {\n const options = { payload, content_type_uid: this.contentTypeUid, action: `create${this.module()}` };\n return this.connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n update(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch(`update${this.constructor.module()}`, payload);\n }\n\n delete() {\n return this.fetch(`delete${this.constructor.module()}`);\n }\n\n fetch(action: string, payload?: { [key: string]: any }) {\n const options = {\n payload,\n content_type_uid: this.constructor.contentTypeUid,\n uid: this.uid,\n params: this._query,\n action: action || `get${this.constructor.module()}`\n };\n\n if (!payload) { delete options.payload; }\n if (!this.constructor.contentTypeUid) { delete options.content_type_uid; }\n return this.constructor.connection.sendToParent('stackQuery', options)\n .then(onData).catch(onError);\n }\n}\n","import Base from '../base';\nimport { getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference } from '../../utils';\n\nlet connection = {};\nlet contentTypeUid = '';\n\n\nclass Entry extends Base {\n constructor(uid: string) {\n super(uid);\n this._query = {};\n return this;\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry.Query\n * @description This static method instantiates the query module for entries. To see the list of methods that can be used for querying entries, refer the {@link Query} module.\n * @example\n * let entryQuery = extension.stack.ContentType('content_type_uid').Entry.Query();\n * entryQuery.where(\"field_uid\": \"10\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryQuery;\n }\n\n static get connection() {\n return connection;\n }\n\n static get contentTypeUid() {\n return contentTypeUid;\n }\n\n static module(plural = false) {\n return plural ? 'Entries' : 'Entry';\n }\n /**\n This method creates a new entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#create-a-an-entry|\n Create Entry}\n @name Stack#ContentType#Entry.create\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.create({\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n @param {Object} payload Data to create an entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @name Stack#ContentType#Entry#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('title').fetch();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @name Stack#ContentType#Entry#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('title').fetch();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('BASE','title').fetch();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * This method includes a query parameter in your query.\n * @name Stack#ContentType#Entry#addParam\n * @function\n * @example extension.stack.ContentType('content_type_uid').Entry('uid').addParam('include_count', 'true').fetch().then().catch();\n * @param {string} key - Key of the parameter\n * @param {string} value - Value of the parameter\n * @return {Stack#ContentType#Entry} Returns\n */\n\n\n /**\n This method will fetch all the entries in which the current entry is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-an-entry|\n Entry References}\n @name Stack#ContentType#Entry#getReferences\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').getReferences().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n @example extension.stack.ContentType('content_type_uid').Entry('uid').update({\"entry\" : {...}}).then().catch();\n @param {Object} payload Data to be update exsisting entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method deletes an existing entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-entry|\n Delete Entry}\n @name Stack#ContentType#Entry#delete\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').delete().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method fetches information of a specific entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-an-entry|\n Get A Single Entry}\n @name Stack#ContentType#Entry#fetch\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').fetch().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeReference\n * @description This method is used to include referenced entries from other content types.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference(['category', 'author']).fetch()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference('category', 'author').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#language\n * @description This method is used to set the language code of which you want to retrieve the data.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').language('en-us').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').environment('development').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#addQuery\n * @description This method is used to add a query to an entry object.\n * @param {String} key - Key of the query\n * @param {String} value - Value of the query\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').addQuery('include_schema',true).fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeSchema().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies).\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeContentType().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeOwner().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#getLanguages\n * @description This method returns the details of all the languages that an entry is localized in.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').getLanguages()\n * @return {external:Promise}\n */\n getLanguages() {\n return this.fetch('getEntryLanguages');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unlocalize\n * @description This method is used to unlocalize an entry\n * @param {string} locale Locale in which the entry has to be unlocalized\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unlocalize('fr-fr').then(...).catch(...);\n * @return {external:Promise}\n */\n unlocalize(locale: string) {\n if (!locale || typeof locale !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('unlocalizeEntry');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#publish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').publish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n publish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('publishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unpublish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unpublish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n unpublish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('unpublishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#setWorkflowStage\n * @description This method allows you to either set a particular workflow stage or update the workflow stage details of an entry.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').setWorkflowStage({\n \"workflow\": {\n \"workflow_stage\": {\n \"comment\": \"Test Comment\",\n \"due_date\": \"Thu Dec 01 2018\",\n \"notify\": false,\n \"uid\": \"blt9f52a2cd5e0014fb\",\n \"assigned_to\": [{\n \"uid\": \"blt296a22e28cc0c63c\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@contentstack.com\"\n }],\n \"assigned_by_roles\": [{\n \"uid\": \"blt5b74c24c7ae25d94\",\n \"name\": \"Content Manager\"\n }]\n }\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n setWorkflowStage(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('setWorkflowStageEntry', payload);\n }\n\n /**\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#update-an-entry| Update Entry}\n * @name Stack#ContentType#Entry#update\n * @function\n * @description This call allows you to update entry content.\n * @param {object} payload - Payload for the request\n * @param {string} [locale] - Passing the ‘locale’ parameter will localize the entry in the specified locale\n * to be localized in the specified locale.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').update(\n {\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n //@ts-ignore\n update(payload: { [key: string]: any }, locale: string) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('updateEntry', payload);\n }\n}\n\nexport default (uiConnection: any, contentType: string) => {\n connection = uiConnection;\n contentTypeUid = contentType;\n return new Proxy(Entry, {\n apply(Target: any, thisArg, argumentsList: any[]) {\n const entryTarget = new Target(...argumentsList);\n Object.assign(entryTarget, {\n getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryTarget;\n }\n });\n};\n","import Entry from './entry';\nimport Base from '../base';\n\nlet connection = {};\n\n\nclass ContentType extends Base {\n\n Entry: typeof Entry\n\n constructor(uid: string) {\n super(uid);\n /**\n * @constructor\n * @hideconstructor\n * @name Stack#ContentType#Entry\n * @desc An entry is the actual piece of content created using one of the defined content types\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#entries| Entries}\n */\n\n // @ts-ignore\n this.Entry = Entry(this.constructor.connection, this.uid);\n return this;\n }\n\n // static module(plural = false) {\n // return plural ? 'ContentTypes' : 'ContentType';\n // }\n static get connection() {\n return connection;\n }\n}\nexport default (uiConnection: any) => {\n connection = uiConnection;\n return new Proxy(ContentType, {\n // target = Foo\n apply(Target: any, thisArg, argumentsList: any[]) {\n return new Target(...argumentsList);\n }\n });\n};\n","import * as Utils from '../utils';\n\n\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nconst _extend = {\n compare(type) {\n return function (key, value) {\n if (key && value && typeof key === 'string' && typeof value !== 'undefined') {\n this._query.query[key] = this._query.query.file_size || {};\n this._query.query[key][type] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n contained(bool) {\n const type = (bool) ? '$in' : '$nin';\n return function (key, value) {\n if (key && value && typeof key === 'string' && Array.isArray(value)) {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key][type] = this._query.query[key][type] || [];\n this._query.query[key][type] = this._query.query[key][type].concat(value);\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n exists(bool) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key].$exists = bool;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n logical(type) {\n return function () {\n const _query: any[] = [];\n for (let i = 0, _i = arguments.length; i < _i; i += 1) {\n if (arguments[i] instanceof Query && arguments[i]._query.query) {\n _query.push(arguments[i]._query.query);\n } else if (typeof arguments[i] === 'object') {\n _query.push(arguments[i]);\n }\n }\n if (this._query.query[type]) {\n this._query.query[type] = this._query.query[type].concat(_query);\n } else {\n this._query.query[type] = _query;\n }\n return this;\n };\n },\n sort(type) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query[type] = key;\n return this;\n }\n throw Error('Argument should be a string.');\n };\n },\n pagination(type) {\n return function (value) {\n if (typeof value === 'number') {\n this._query[type] = value;\n return this;\n }\n throw Error('Argument should be a number.');\n };\n }\n};\n\n/**\n * Creates an instance of the query\n * @hideconstructor\n */\nclass Query {\n module: any\n _connection: any\n _query: {[key: string]: any}\n contentTypeUid: string\n only: any\n except: any\n addQuery: any\n lessThan: any\n lessThanOrEqualTo: any\n greaterThan: any\n greaterThanOrEqualTo: any\n notEqualTo: any\n containedIn: any\n notContainedIn: any\n exists: any\n notExists: any\n ascending: ReturnType\n descending: ReturnType\n beforeUid: ReturnType\n afterUid: ReturnType\n skip: ReturnType\n limit: ReturnType\n or: ReturnType\n and: ReturnType\n addParam: ReturnType\n singleEntry: any\n\n constructor(connection, module, contentTypeUid) {\n this.module = module;\n this._connection = connection;\n this._query = {};\n this._query.query = this._query.query || {};\n this.contentTypeUid = contentTypeUid;\n\n /**\n * @name Query#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('title').find();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('BASE','title').find();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().only(['title','description']).find();\n * @returns {Query}\n */\n\n this.only = Utils.transform('only');\n\n /**\n * @name Query#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('title').find();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('BASE','title').find();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().except(['title','description']).find();\n * @returns {Query}\n */\n\n this.except = Utils.transform('except');\n /**\n This method includes a query parameter in your query.\n @name Query#addQuery\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addQuery('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addQuery = Utils.addQuery;\n\n /**\n * @name Query#lessThan\n * @description This method provides only the entries with values less than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThan('created_at','2015-06-22')\n * @returns {Query}\n */\n this.lessThan = _extend.compare('$lt');\n\n /**\n * @name Query#lessThanOrEqualTo\n * @description This method provides only the entries with values less than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThanOrEqualTo('created_at','2015-03-12')\n * @returns {Query}\n */\n this.lessThanOrEqualTo = _extend.compare('$lte');\n /**\n * @function\n * @name Query#greaterThan\n * @description This method provides only the entrieswith values\n * greater than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThan('created_at','2015-03-12')\n * @returns {Query}\n */\n this.greaterThan = _extend.compare('$gt');\n\n /**\n * @function\n * @name Query#greaterThanOrEqualTo\n * @description This method provides only the entries with values greater than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThanOrEqualTo('created_at', '2015-06-22')\n * @returns {Query}\n */\n this.greaterThanOrEqualTo = _extend.compare('$gte');\n\n /**\n * @function\n * @name Query#notEqualTo\n * @description This method provides only the entries with values not equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').notEqualTo('title','Demo')\n * @returns {Query}\n */\n this.notEqualTo = _extend.compare('$ne');\n\n /**\n * @function\n * @name Query#containedIn\n * @description This method provides only the entries with values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {*} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').containedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.containedIn = _extend.contained(true);\n\n /**\n * @function\n * @name Query#notContainedIn\n * @description This method provides only the entries that do not contain values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {Array} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').notContainedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.notContainedIn = _extend.contained(false);\n\n /**\n * @function\n * @name Query#exists\n * @description This method provides only the entries that contains the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').exists('featured')\n * @returns {Query}\n */\n this.exists = _extend.exists(true);\n\n /**\n * @function\n * @name Query#notExists\n * @description This method provides only the entries that do not contain the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').notExists('featured')\n * @returns {Query}\n */\n this.notExists = _extend.exists(false);\n\n /**\n * @function\n * @name Query#ascending\n * @description This parameter sorts the entries in ascending order on the basis of the value of the specified field.\n * @param {String} key - Field UID to be used for sorting.\n * @example extension.stack.ContentType('blog').ascending('created_at')\n * @returns {Query}\n */\n this.ascending = _extend.sort('asc');\n\n /**\n * @function\n * @name Query#descending\n * @description This method sorts the entries in descending order on the basis of the specified field.\n * @param {String} key - Field UID to be used for sorting\n * @example extension.stack.ContentType('blog').descending('created_at')\n * @returns {Query}\n */\n this.descending = _extend.sort('desc');\n\n /**\n * @function\n * @name Query#beforeUid\n * @description This method provides only the entries that are placed before the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').beforeUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.beforeUid = _extend.sort('before_uid');\n\n /**\n * @function\n * @name Query#afterUid\n * @description This method provides only the entries that are placed after the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').afterUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.afterUid = _extend.sort('after_uid');\n\n /**\n * @function\n * @name Query#skip\n * @description This method skips the specified number of entries.\n * @param {Number} skip - Number of entries to be skipped\n * @example extension.stack.ContentType('blog').skip(5)\n * @returns {Query}\n */\n this.skip = _extend.pagination('skip');\n\n /**\n * @function\n * @name Query#limit\n * @description This method limits the response by providing only the specified number of entries.\n * @param {Number} limit - Maximum number of entries to be returned in the result.\n * @example extension.stack.ContentType('blog').limit(10)\n * @returns {Query}\n */\n this.limit = _extend.pagination('limit');\n\n /**\n * @function\n * @name Query#or\n * @description This method performs the OR operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries\n * to be taken into consideration\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo')\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10)\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery()\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery()\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @returns {Query}\n */\n this.or = _extend.logical('$or');\n\n /**\n * @function\n * @name Query#and\n * @description This method performs the AND operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries to be taken into consideration\n * @example\n * AND with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo');\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10);\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @example\n * .and with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery();\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery();\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @returns {Query}\n */\n this.and = _extend.logical('$and');\n /**\n This method includes a query parameter in your query.\n @name Query#addParam\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addParam('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addParam = Utils.addParam;\n }\n\n // -------------------------------------Entry Queries--------------------------------------------------\n /**\n * @function\n * @name Query#includeReference\n * @description This method is used to include referenced entries from other content types. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference(['category', 'author']).find()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference('category', 'author').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeSchema().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#language\n * @description This method is used to set the language code of which you want to retrieve the data. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().language('en-us').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies). Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeContentType().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeOwner().find()\n * @returns {Query}\n */\n // -----------------------------------------Entry Queries End------------------------------------------------------\n\n /**\n * @function\n * @name Query#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().environment('development').find()\n * @returns {Query}\n */\n\n /**\n * @description This method provides only the entries containing field values matching the specified condition.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').where('title','Demo')\n * @returns {Query}\n */\n equalTo(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n where(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides only the number of entries matching the specified filters.\n * @example extension.stack.ContentType('blog').count()\n * @returns {Query}\n */\n count() {\n this._query.count = true;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method is used to set raw queries on the Query instance.\n * @param {object} query - Raw{json} queries to filter the entries in the result set.\n * @returns {Query}\n */\n query(query) {\n if (typeof query === 'object') {\n this._query.query = Utils.mergeDeep(this._query.query, query);\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description The ’tags’ parameter allows you to specify an array of tags to search for objects.\n * @param {Array} values - Tags\n * @example extension.stack.ContentType('blog').tags(['technology', 'business'])\n * @returns {Query}\n */\n tags(values) {\n if (Array.isArray(values)) {\n this._query.tags = values;\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description This method also includes the total number of entries returned in the response.\n * @example extension.stack.ContentType('blog').includeCount()\n * @returns {Query}\n */\n includeCount() {\n this._query.include_count = true;\n return this;\n }\n\n /**\n * @summary returns Returns the raw query which can be used for further calls (.and/.or).\n * @description This method provides raw{json} queries based on the filters applied on the Query object.\n * @example extension.stack.ContentType('blog').where('title','Demo').getQuery()\n * @returns {Query}\n */\n getQuery() {\n return this._query.query;\n }\n\n /**\n * @description This method provides only the entries matching the regular expression for the specified field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @param {String} [options] - Match or compare a value in the entry\n * @example\n * .regex without options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo')\n * @example\n * .regex with options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo', 'i')\n * @returns {Query}\n */\n regex(key, value, options) {\n if (key && value && typeof key === 'string' && typeof value === 'string') {\n this._query.query[key] = {\n $regex: value\n };\n if (options) this._query.query[key].$options = options;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method is used to search data in entries.\n * @param {string} value - Value to search in the entries.\n * @example extension.stack.ContentType('blog').search('Welcome to demo')\n * @returns {Query}\n */\n search(value) {\n if (value && typeof value === 'string') {\n this._query.typeahead = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides all the entries which satisfy the specified query.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').find()\n */\n find() {\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method provides a single entry from the result set.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').findOne()\n */\n findOne() {\n this.singleEntry = true;\n this._query.limit = 1;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n}\n\nexport default Query;\n","import Asset from './api/asset/index';\nimport ContentType from './api/content-type/index';\nimport { onData, onError } from \"../utils/utils\";\nimport { BranchDetail, GetAllStacksOptions, StackAdditionalData, StackDetail, StackSearchQuery } from '../types/stack.types';\nimport { IManagementTokenDetails } from '../types';\n\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nclass Stack {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _data: StackDetail\n ContentType: any // TODO: change it\n Asset: any // TODO: change it\n private _currentBranch: BranchDetail | null = null;\n\n\n constructor(data: StackDetail = {} as StackDetail, connection: any, additionalData: StackAdditionalData) {\n this._connection = connection;\n this._data = data;\n /**\n * @constructor\n * @hideconstructor\n * @desc Content type defines the structure or schema of a page or a section of your web or mobile property\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#content-types| ContentType}\n * @param {string} uid - Uid of contenttype.\n * @example extension.stack.ContentType('content_type_uid')\n * */\n this.ContentType = ContentType(connection);\n /**\n * @constructor\n * @hideconstructor\n * @desc An initializer is responsible for creating an Asset object.\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#assets| Asset}\n * @param {string} uid - UID of the asset.\n * @example extension.stack.Asset('asset_uid')\n * */\n this.Asset = Asset(connection);\n\n const currentBranch = additionalData.currentBranch || \"\"\n\n if (currentBranch) {\n this._currentBranch =\n (data.branches || []).find(\n (branch) => branch.uid === additionalData.currentBranch\n ) || null;\n }\n\n }\n\n\n /**\n * This method returns the data of the current stack.\n * @return Returns stack data.\n */\n\n getData(): StackDetail {\n return this._data;\n }\n\n\n /**\n * This method returns all the stacks in the current organization.\n * @param query asks for organization UID and query params to get all stacks\n * @returns Stacks within current organization\n */\n async getAllStacks({orgUid = \"\", params = {}}: GetAllStacksOptions = {}): Promise {\n \n // validation\n if (typeof orgUid !== 'string') {\n throw new TypeError('orgUid must be a string');\n }\n\n const options = {\n action: \"getStacks\",\n headers: { organization_uid: orgUid || this._data.org_uid },\n skip_api_key: true,\n params\n };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .then((data) => data.stacks || [])\n .catch(onError);\n\n }\n\n /**\n * Get the details of all the management tokens of the stack.\n * Note: This API does not return the token value.\n * @see {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-management-tokens | Get all management tokens}\n * @returns Details of all the management token of the stack\n */\n async getManagementTokens(): Promise {\n const options = { action: \"getManagementTokens\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(async (response) => {\n const data = await onData<{tokens: IManagementTokenDetails[]}>(response);\n return data.tokens || [];\n })\n .catch(onError);\n }\n\n /**\n * Gets the results of the search based on user query\n * @param queries Array of key value pair of query parameters\n * @param apiKey API key of the stack\n * @returns Result of the query\n */\n search(queries: StackSearchQuery, apiKey: string | null = this._data.api_key) {\n const options = { params: queries, api_key: apiKey, action: \"search\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n }\n\n\n /**\n * This API allows you to retrieve data of a content type of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-content-type| Content Type API} requests. This method returns a Promise object.\n * @param {string} uid Uid of the desired content type\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with content type details.\n */\n getContentType(uid: string, params = {}): Promise<{ [key: string]: any }> {\n if (!uid) {\n return Promise.reject(new Error('uid is required'));\n }\n const options = { uid, params, action: 'getContentType' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve data of a content types of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Content Types API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with details of the content type.\n */\n getContentTypes(query = {}, params: { [key: string]: any } = {}): Promise<{ [key: string]: any }> {\n const optionParams = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getContentTypes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve environment details of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-environment| Environment API} requests. This method returns a Promise object.\n * @param {string} name Name of the desired environment\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with environment details.\n */\n getEnvironment(name: string, params = {}) {\n if (!name) {\n return Promise.reject(new Error('name is required'));\n }\n const options = { name, params, action: 'getEnvironment' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of environments of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-environments| Environments API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the environments.\n */\n getEnvironments(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getEnvironments' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of releases of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-releases| Releases API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the releases.\n */\n getReleases(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getReleases' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of publish queue of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-publish-queue| Publish Queue API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the publish queue.\n */\n getPublishes(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getPublishes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a locale of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-language| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getLocale(code: string, params = {}) {\n if (!code) {\n return Promise.reject(new Error('code is required'));\n }\n const options = { code, params, action: 'getLocale' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getLocales(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getLocales' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a workflow of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-workflow| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getWorkflow(uid: string, params = {}) {\n if (!uid) {\n return Promise.reject(new Error('workflow uid is required'));\n }\n const options = { uid, params, action: 'getWorkflow' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n \n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getWorkflows(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getWorkflows' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve all the branches in the current stack\n * @returns All branches of the current stack\n */\n getAllBranches(): BranchDetail[] {\n return this._data.branches || [];\n }\n\n /**\n * Returns the details of the current branch of the stack if available\n * @returns current branch of the current stack if available\n */\n getCurrentBranch(): BranchDetail | null {\n return this._currentBranch;\n }\n}\n\nexport default Stack;\n","export function transform(type) {\n return function () {\n switch (arguments.length) {\n case 1:\n if (\n Array.isArray(arguments[0]) ||\n typeof arguments[0] === \"string\"\n ) {\n let query = this._query[`${type}[BASE]`] || [];\n query = query.concat(arguments[0]);\n this._query[`${type}[BASE]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n case 2:\n if (\n typeof arguments[0] === \"string\" &&\n (Array.isArray(arguments[1]) ||\n typeof arguments[1] === \"string\")\n ) {\n let query = this._query[`${type}[${arguments[0]}]`] || [];\n query = query.concat(arguments[1]);\n this._query[`${type}[${arguments[0]}]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n default:\n throw Error(\"Kindly provide valid parameters\");\n }\n };\n}\n\n// merge two objects\nexport function merge(\n target: { [key: string]: any },\n source: { [key: string]: any }\n) {\n const newTraget = target;\n if (target && source) {\n Object.keys(source).forEach((key) => {\n newTraget[key] = source[key];\n });\n }\n return newTraget;\n}\n\n// merge two objects\nexport function mergeDeep(\n oldTarget: { [key: string]: any },\n oldSource: { [key: string]: any }\n) {\n const newTarget = oldTarget;\n const self = this;\n const _mergeRecursive = (anotherTarget, source) => {\n const target = anotherTarget;\n Object.keys(source).forEach((key) => {\n if (\n self._type(source[key]) === \"object\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n _mergeRecursive(target[key], source[key]);\n } else if (\n self._type(source[key]) === \"array\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n target[key] = target[key].concat(source[key]);\n } else {\n target[key] = source[key];\n }\n });\n };\n _mergeRecursive(newTarget, oldSource);\n return newTarget;\n}\n\nexport function _type(val) {\n let __typeof = typeof val;\n if (__typeof === \"object\" && Array.isArray(val)) {\n //@ts-ignore\n __typeof = \"array\";\n }\n return __typeof;\n}\n\nexport function addParam(key, value) {\n if (key && typeof key === \"string\" && value && typeof value === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"Kindly provide valid parameters.\");\n}\n\nexport function addQuery(key, value) {\n if (key && value && typeof key === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"First argument should be a String.\");\n}\n\nexport function language(languageCode) {\n if (languageCode && typeof languageCode === \"string\") {\n this._query.locale = languageCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function environment(environmentCode) {\n if (environmentCode && typeof environmentCode === \"string\") {\n this._query.environment = environmentCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function includeOwner() {\n this._query.include_owner = true;\n return this;\n}\n\nexport function includeContentType() {\n this._query.include_content_type = true;\n return this;\n}\n\nexport function includeSchema() {\n this._query.include_schema = true;\n return this;\n}\n\nexport function includeReference(val) {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(val[i]);\n }\n } else if (typeof val === \"string\") {\n for (let i = 0; i < arguments.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(\n arguments[i]\n );\n }\n } else {\n throw Error(\"Argument should be a String or an Array.\");\n }\n return this;\n}\n\nexport function getReferences() {\n return this.fetch(`get${this.constructor.module()}References`);\n}\n","function onError(error: Error) {\n return Promise.reject(error);\n}\n/**\n * Class used by an extension to store your data in {@link external:localStorage}.\n */\nclass Store {\n /**\n * @hideconstructor\n */\n\n _connection: any\n\n constructor(connection: any) {\n this._connection = connection;\n }\n /**\n * Gets the value of key\n * @param {string} key Key of the stored data\n * @example extension.store.get('key').then((value) => console.log(value)) // will log value for the given key\n * @return {external:Promise}\n */\n get(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'get', key })\n .then((event: { data: any; }) => Promise.resolve(event.data)).catch(onError);\n }\n\n /**\n * Gets an object with all the stored key-value pairs.\n * @example extension.store.getAll().then((obj) => obj)\n * @return {external:Promise}\n */\n getAll() {\n return this._connection.sendToParent('store', { action: 'getAll' })\n .then(({ data = {} }) => Promise.resolve(data)).catch(onError);\n }\n\n /**\n * Sets the value of a key\n * @param {string} key Key of the stored data.\n * @param {*} value Data to be stored.\n * @example extension.store.set('key', 'value').then((success) => console.log(success)) // will log ‘true’ when value is set\n * @return {external:Promise}\n */\n\n set(key: string, value: string) {\n if (!key || !value || typeof key !== 'string') {\n throw new Error('Kindly provide valid parameters');\n }\n return this._connection.sendToParent('store', { action: 'set', key, value })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Removes the value of a key\n * @param {string} key Key of the data to be removed from the store\n * @example extension.store.remove('key').then((success) => console.log(success)) // will log ‘true’ when value is removed\n * @return {external:Promise}\n */\n\n remove(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'remove', key })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Clears all the stored data of an extension\n * @example extension.store.clear().then((success) => console.log(success)) // will log ‘true’ when values are cleared\n * @return {external:Promise}\n */\n\n clear() {\n return this._connection.sendToParent('store', { action: 'clear' })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n}\n\nexport default Store;\n","import { AnyObject } from \"./types/common.types\";\nimport { StackDetail } from \"./types/stack.types\";\n\nexport declare interface IDashboardWidget {\n [key: string]: any;\n}\n\nexport declare interface ICustomField {\n [key: string]: any;\n}\n\nexport declare interface ISidebarWidget {\n [key: string]: any;\n}\n\nexport declare interface IRTE {\n [key: string]: any;\n}\n\nexport declare interface IFieldModifierLocation {\n [key: string]: any;\n}\n\nexport declare interface IEntryFieldLocation {\n [key: string]: any;\n}\n\nexport declare interface IFullPageLocation {\n [key: string]: any;\n}\n\nexport declare interface User {\n uid: string;\n first_name: string;\n last_name: string;\n}\n\nexport declare interface Manifest {\n created_by: User;\n icon: string;\n name: string;\n target_type: string;\n uid: string;\n updated_by: User;\n version: number;\n visibility: string;\n}\n\nexport declare interface IAppConfigWidget {\n installation: {\n setInstallationData: (\n installationData: IInstallationData\n ) => Promise;\n getInstallationData: () => Promise;\n setValidity: (isValid: boolean, options?: ValidationOptions) => void;\n [key: string]: any;\n };\n stack: AnyObject;\n}\n\nexport declare interface IPageWidget {\n [key: string]: any;\n}\n\n// initialization data\nexport declare interface IUser {\n [key: string]: any;\n}\n\nexport declare interface ICurrentEntry {\n [key: string]: any;\n}\n\nexport declare interface ICurrentContentType {\n [key: string]: any;\n}\n\nexport declare interface IConfig {\n [key: string]: any;\n}\n\nexport declare interface ISchema {\n [key: string]: any;\n}\n\nexport declare interface IFieldConfig {\n [key: string]: any;\n}\n\n// Init data\n\ndeclare interface ICommonInitData {\n app_id: string;\n installation_uid: string;\n extension_uid: string;\n stack: StackDetail;\n user: IUser;\n currentBranch: string;\n region: string;\n manifest?: Manifest;\n}\n\nexport declare interface IDashboardInitData {\n data: ICommonInitData & {\n dashboard_width: \"full_width\" | \"half_width\";\n config?: AnyObject;\n type: \"DASHBOARD\";\n };\n}\n\nexport declare interface ISidebarInitData {\n data: ICommonInitData & {\n app_config: IConfig;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n config?: AnyObject;\n changedData: ICurrentEntry;\n type: \"WIDGET\";\n };\n}\n\nexport declare interface IRTELocationInitData {\n data: ICommonInitData & {\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n changedData: ICurrentEntry;\n }\n}\n\nexport declare interface IFieldInitData {\n data: ICommonInitData & {\n entry: ICurrentEntry;\n content_type: ICurrentContentType;\n locale: string;\n uid: string;\n schema: ISchema;\n app_config: IConfig;\n value: any;\n field_config: IFieldConfig;\n config?: AnyObject;\n changedData: ICurrentEntry;\n self: boolean;\n type: \"FIELD\";\n };\n}\n\nexport declare interface IFullPageLocationInitData {\n data: ICommonInitData & {\n type: \"FULL_PAGE_LOCATION\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IRTEInitData {\n data: ICommonInitData & {\n type: \"RTE\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IAppConfigInitData {\n data: ICommonInitData & {\n type: \"APP_CONFIG_WIDGET\";\n config?: AnyObject;\n };\n}\n\nexport declare interface ICurrentAsset {\n [key: string]: any;\n}\n\nexport declare interface IAssetSidebarInitData {\n data: ICommonInitData & {\n type: \"ASSET_SIDEBAR_WIDGET\";\n currentAsset: ICurrentAsset;\n config: { [key: string]: any };\n };\n}\n\nexport declare interface IFieldModifierLocationInitData {\n data: ICommonInitData & {\n type: \"FIELD_MODIFIER_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface IEntryFieldLocationInitData {\n data: ICommonInitData & {\n type: \"ENTRY_FIELD_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface setAssetDto {\n title: string;\n description: string;\n tags: string[];\n}\n\nexport enum StackLocation {\n STACK_CONFIG = \"cs.cm.stack.config\",\n DASHBOARD = \"cs.cm.stack.dashboard\",\n SIDEBAR = \"cs.cm.stack.sidebar\",\n CUSTOM_FIELD = \"cs.cm.stack.custom_field\",\n RTE = \"cs.cm.stack.rte\",\n}\n\nexport enum OrganizationLocation {\n ORG_CONFIG = \"cs.org.config\",\n}\n\nexport type AppLocation = StackLocation | OrganizationLocation;\n\nexport interface Scope {\n content_types: string[];\n}\n\n/**\n * installation details API response\n */\nexport interface IInstallationData {\n configuration: { [key: string]: any };\n serverConfiguration: { [key: string]: any };\n webhooks?: {\n channels: string[];\n }[];\n uiLocations?: {\n type: AppLocation;\n meta: {\n enabled: boolean;\n scope?: Scope;\n name: string;\n extentionUid: string;\n }[];\n }[];\n}\n// End of Init data\n\nexport declare interface IInitializationData {\n FIELD: IFieldConfig;\n WIDGET: ISidebarInitData;\n DASHBOARD: IDashboardInitData;\n RTE: IRTEInitData;\n APP_CONFIG_WIDGET: IAppConfigInitData;\n ASSET_SIDEBAR_WIDGET: IAssetSidebarInitData;\n}\n\nexport declare type ILocation =\n | \"RTE\"\n | \"FIELD\"\n | \"DASHBOARD\"\n | \"WIDGET\"\n | \"APP_CONFIG_WIDGET\"\n | \"ASSET_SIDEBAR_WIDGET\"\n | \"FULL_PAGE_LOCATION\"\n | \"ENTRY_FIELD_LOCATION\"\n | \"FIELD_MODIFIER_LOCATION\";\n\nexport declare interface ValidationOptions {\n message?: string;\n}\n\nexport declare interface IManagementTokenDetails {\n uid: string;\n name: string;\n}\n\nexport enum Region {\n UNKNOWN = \"UNKNOWN\",\n NA = \"NA\",\n EU = \"EU\",\n AZURE_NA = \"AZURE_NA\",\n AZURE_EU = \"AZURE_EU\",\n}\n","export const ERROR_MESSAGES = Object.freeze({\n configPage: {\n setValidity: {\n isValidTypeBoolean: \"isValid should be a boolean\",\n messageTypeString: \"message should be a string\",\n },\n },\n entryField: {\n entry: {\n tagsShouldNotBeBlank: \"Tags cannot be blank\",\n tagsShouldBeArrayOfStrings: \"Tags must be an array of strings\",\n },\n frame: {\n dimensionHeightShouldBeNumber: \"Dimension height must be a number\",\n dimensionWidthShouldBeNumber: \"Dimension width must be a number\",\n },\n },\n});\n\nexport default function generateErrorMessages(message: string) {\n return `Contentstack App SDK: ${message}`;\n}\n","import { Region } from \"../types\";\n\nexport function onData>(data: { data: Data }) {\n if (typeof data.data === \"string\") {\n return Promise.reject(data.data);\n }\n return Promise.resolve(data.data);\n}\n\nexport function onError(error: Error) {\n return Promise.reject(error);\n}\n\nexport function formatAppRegion(region: string): Region {\n switch (region) {\n case \"NA\":\n return Region.NA;\n case \"EU\":\n return Region.EU;\n case \"AZURE_NA\":\n return Region.AZURE_NA;\n case \"AZURE_EU\":\n return Region.AZURE_EU;\n default:\n return Region.UNKNOWN;\n }\n}\n\nexport function getPreferredBodyElement(nodeCollection: HTMLCollection) {\n let rootElementIndex = Infinity;\n let rootElement: Element | undefined;\n const elementPreferenceList = [\n \"HEADER\",\n \"NAV\",\n \"MAIN\",\n \"SECTION\",\n \"ARTICLE\",\n \"ASIDE\",\n \"FOOTER\",\n \"DIV\",\n ];\n const nonRenderingTags = [\"SCRIPT\", \"NOSCRIPT\", \"STYLE\", \"TEMPLATE\"];\n // ? choose higher preference semantic HTML tags\n Array.from(nodeCollection).forEach((el) => {\n const elIndex = elementPreferenceList.indexOf(el.nodeName);\n if (elIndex >= 0 && elIndex < rootElementIndex) {\n rootElementIndex = elIndex;\n rootElement = el;\n }\n });\n // ? choose the first rendering HTML tag found if no semantic tags found\n if (!rootElement) {\n rootElement = Array.from(nodeCollection).find(\n (el) => !nonRenderingTags.includes(el.nodeName)\n );\n }\n return rootElement || nodeCollection[0];\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\n\nconst config = { attributes: true, childList: true, subtree: true };\nlet observer: MutationObserver;\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass Window {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _autoResizingEnabled: boolean\n _resizingEnabled: boolean\n type: 'DASHBOARD' | 'FIELD'\n _emitter: EventEmitter\n state: 'half_width' | 'full_width'\n _height?: number\n\n constructor(connection: any, type: 'DASHBOARD' | 'FIELD', emitter: EventEmitter, state: 'half_width' | 'full_width' = 'half_width') {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._resizingEnabled = false;\n this.type = type;\n this.state = state;\n this._emitter = emitter;\n }\n\n /**\n * This method activates the resize button that gives you the provision to resize the window size of your Dashboard Widget.\n * @return {external:Promise} A promise object which will resolve when a resize button is visible on the Dashboard Widget.\n */\n enableResizing() {\n if (this.type !== 'DASHBOARD') { return Promise.resolve(); }\n this._resizingEnabled = true;\n return this._connection.sendToParent('window', { action: 'enableResizing' });\n }\n\n\n /**\n * This function executes the callback function whenever a Dashboard Widget extension is maximized or minimized. Only applicable on Dashboard Widget extensions.\n * @param {function} callback Function to be called when a Dashboard Widget extension is maximized or minimized\n * @return {boolean} Will return true\n */\n\n onDashboardResize(callback: (event: any) => void) {\n const windowObj = this;\n if (this.type !== 'DASHBOARD') {\n return false;\n }\n if (callback && typeof (callback) === 'function') {\n windowObj._emitter.on('dashboardResize', (event: { state: 'half_width' | 'full_width'; }) => {\n windowObj.state = event.state;\n callback(event.state);\n });\n } else {\n throw Error('Callback must be a function');\n }\n return true;\n }\n\n\n /**\n * This method updates the extension height on Contentstack UI.\n * If the ‘height’ argument is not passed, it will calculate the scroll height and set the height of extension window accordingly.\n * @param {string|number} height Desired height of the iframe window\n * @return {external:Promise} A promise object which will be resolved when Contentstack UI sends an acknowledgement stating that the height has been updated.\n */\n updateHeight(height?: number) {\n if (this.type === 'DASHBOARD' && this.state === 'half_width') { return Promise.resolve(); }\n if (!height || isNaN(height)) {\n this._height = Math.ceil(document.documentElement.getBoundingClientRect().height);\n } else if (this._height === height) {\n return Promise.resolve();\n } else {\n this._height = height;\n }\n return this._connection.sendToParent('resize', this._height);\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {Window}.\n */\n enableAutoResizing() {\n if (this._autoResizingEnabled || (this.state === 'half_width' && this.type === 'DASHBOARD')) {\n return this;\n }\n this._autoResizingEnabled = true;\n //@ts-ignore\n observer = new MutationObserver(this.updateHeight.bind(this));\n observer.observe(window.document.body, config);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {Window}.\n */\n disableAutoResizing() {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n observer.disconnect();\n return this;\n }\n\n enablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent(\"window\", {\n action: \"dashboardEnableTopPadding\",\n });\n }\n\n disablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent('window', {\n action: 'dashboardDisableTopPadding' \n });\n }\n \n}\n\nexport default Window;\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","// 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].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n"],"names":["root","factory","exports","module","define","amd","this","self","modules","installedModules","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","value","interface_namespaceObject","isRegex","item","toString","cleanUpWindow","promise_ZalgoPromise","bridge","init","public_parent","_send","request","sendToParent","client","_on","listen","server_once","server_listener","CONFIG","constants_CONSTANTS","disable","PROTOCOL","IE_WIN_ACCESS_ERROR","isAboutProtocol","arguments","length","window","location","protocol","getParent","win","parent","err","getOpener","opener","canReadFromWindow","href","getActualDomain","Error","host","utils_getDomain","domain","mockDomain","indexOf","isActuallySameDomain","desc","getOwnPropertyDescriptor","isAncestorParent","child","childParent","result","push","getFrames","frames","len","frame","_i","_frame","iframeWindows","iframeFrames","isWindowClosed","allowMock","closed","message","mockclosed","top","iframeIndex","collection","contentWindow","parentNode","doc","ownerDocument","documentElement","contains","getAncestor","matchDomain","pattern","origin","Array","isArray","Boolean","match","JSON","stringify","some","subpattern","isWindow","obj","Window","__cross_domain_utils_window_check__","util_safeIndexOf","_ALLOWED_POST_MESSAGE","weakmap_CrossDomainSafeWeakMap","CrossDomainSafeWeakMap","instance","Constructor","TypeError","Math","random","WeakMap","freeze","testWeakMap","testKey","set","weakmap","keys","values","_cleanupClosedWindows","delete","splice","isSafeToReadWrite","key","entry","writable","index","has","getOrSet","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","ERROR","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","POPUP","IFRAME","WINDOW_PROPS","POSTROBOT","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","POST_MESSAGE","BRIDGE","GLOBAL","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","WILDCARD","map","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","navigator","userAgent","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_typeof","Symbol","iterator","constructor","stringifyError","level","stack","newErr","once","method","called","apply","lib_util_noop","uniqueID","chars","replace","charAt","floor","replaceObject","callback","depth","newobj","_key","childItem","util_isRegex","utils_isPromise","Promise","_toString","then","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushPromise","flushActive","promise","resolve","startActive","endActive","ZalgoPromise","handler","_this","resolved","rejected","errorHandled","handlers","_result","_error","isAsync","res","reject","dispatch","error","_this2","_err","setTimeout","j","asyncReject","dispatching","chain","firstPromise","secondPromise","_handlers$i","_onSuccess","onSuccess","_onError","onError","_promise","_result2","catch","finally","onFinally","try","timeout","time","_this3","clearTimeout","toPromise","all","promises","count","results","prom","hash","items","onPossiblyUnhandledException","cancel","context","args","delay","_delay","isPromise","flush","global","registerSelf","serialize__typeof","methods","listenForMethods","on","_ref","source","data","meth","id","isSerialized","type","__type__","serializeMethod","destination","__id__","__name__","deserializeMethod","wrapper","slice","send","_ref2","__xdomain__","deserializeZalgoPromise","__then__","sayHello","readyPromises","SEND_MESSAGE_STRATEGIES","serializedMessage","dom","forEach","postMessage","_extends","assign","target","sendMessage","_jsonStringify","options","sourceDomain","windowType","__message__","__code__","code","regex","__source__","messages","replacer","indent","objectToJSON","arrayToJSON","toJSON","strategyName","success","status","join","responseListeners","requestListeners","WINDOW_WILDCARD","erroredResponseListeners","_RECEIVE_MESSAGE_TYPE","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","nameListeners","_i2","_ref3","_length2","winQualifier","winListeners","_i4","_winListeners$__DOMAI2","_length4","_ref5","listener","types__extends","RECEIVE_MESSAGE_TYPES","pathname","ack","respond","fireAndForget","originalSource","handleError","response","receive__typeof","receiveMessage","event","parsedMessage","parse","receivedMessages","RegExp","messageListener","sourceElement","originalEvent","targetWindow","el","document","getElementById","tagName","toLowerCase","HTMLIFrameElement","hasResult","requestPromises","requestPromise","actualParent","_i7","_getAllChildFrames4","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","childFrame","_length6","_i15","_getFrames8","_length14","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","cycle","max","min","server__typeof","listenerOptions","errorHandler","requestListener","addRequestListener","_ref6","listenersCollection","_i6","_win2","_i8","_length8","_listenersCollection","_i10","_domain2","_length10","_item","_i12","_length12","existingListener","strDomain","regexListeners","regexListener","_handler","errorOnClose","interval","runInterval","onceListener","removeEventListener","popupWindowsByWin","remoteWindows","initialized","addEventListener","attachEvent","initializationData","connection","emitter","currentAsset","_emitter","_connection","thisAsset","_changedData","getData","bind","setData","syncAsset","updateWidth","onSave","onChange","onPublish","onUnPublish","replaceAsset","asset","width","file","handleUpload","AssetSidebarWidget","configCallback","pluginMetaData","registry","title","toolbar","inMainToolbar","inHoveringToolbar","isContentstackElement","meta","elementType","editorCallbacks","isDependent","isContainer","containerMetaData","rootCategory","dependentPlugins","addPlugins","plugins","plugin","category","beforeChildrenRender","beforeElementRender","handleMouseDown","rte","config","entries","iconName","display","includes","dndOptions","Component","shouldOverride","containerMeta","RTEPlugin","rtePluginInitializer","additionalData","_data","currentBranch","_additionalData","setInstallationData","installationData","onData","getInstallationData","setValidity","isValid","ERROR_MESSAGES","configPage","isValidTypeBoolean","messageTypeString","AppConfig","content_type","changedData","locale","_options","thisEntry","getField","uid","useUnsavedSchema","_internalFlags","FieldInstance","path","split","schema","find","x","data_type","multiple","blocks","block","e","fieldObject","resolvedData","Entry","initData","pulse","eventName","metadata","postRobot","getConfig","installationUID","getCurrentLocation","getAppVersion","version","orgUid","org_uid","action","headers","organization_uid","skip_api_key","app","getCurrentRegion","region","appUID","app_id","locationUID","extension_uid","installation_uid","currentUser","user","store","DashboardWidget","CustomField","SidebarWidget","RTELocation","AppConfigWidget","FullscreenAppWidget","FullPage","EntryFieldLocation","FieldModifierLocation","modal","formatAppRegion","manifest","dashboard_width","installation","field","fieldConfig","field_config","emitEvent","otherData","state","console","initialize","sdkType","setReady","Extension","excludedDataTypesForSetField","fieldDataObject","unResolvedData","separatedData","_resolvedData","_self","fieldObj","currentFieldObj","dataObj","setFocus","Field","getTags","tags","setTags","undefined","entryField","tagsShouldNotBeBlank","every","tag","areTagsValid","tagsShouldBeArrayOfStrings","FieldModifierLocationEntry","FieldModifierLocationField","_autoResizingEnabled","updateDimension","enableAutoResizing","disableAutoResizing","closeModal","dimension","height","_height","ceil","getBoundingClientRect","_width","dimensionBody","dimensionHeightShouldBeNumber","dimensionWidthShouldBeNumber","preventFrameClose","observer","MutationObserver","observe","body","attributes","childList","subtree","disconnect","FieldModifierLocationFrame","LOG_LEVEL","_extension","ContentstackAppSDK","createMetaData","metadataConfig","entity_uid","otherMetaData","payload","retrieveMetaData","retrieveAllMetaData","params","updateMetaData","deleteMetaData","Metadata","rootElement","getPreferredBodyElement","children","setBackgroundElement","element","Modal","getReferences","environment","Query","entryQuery","language","plural","getRteAssets","getAssetsOfSpecificTypes","assetType","asset_type","publish","fetch","unpublish","_files","files","from","_","File","Date","getUTCMilliseconds","upload_type","parentFolderUid","customUploadHandler","uploadAsset","Asset","uiConnection","Proxy","Target","thisArg","argumentsList","_query","only","transform","except","addParam","contentTypeUid","create","content_type_uid","update","includeOwner","includeContentType","includeSchema","includeReference","getLanguages","unlocalize","setWorkflowStage","contentType","entryTarget","addQuery","ContentType","_extend","query","file_size","bool","concat","$exists","Utils","lessThan","lessThanOrEqualTo","greaterThan","greaterThanOrEqualTo","notEqualTo","containedIn","notContainedIn","exists","notExists","ascending","descending","beforeUid","afterUid","skip","limit","or","and","equalTo","where","mergeDeep","includeCount","include_count","getQuery","$regex","$options","search","typeahead","findOne","singleEntry","_currentBranch","branches","branch","getAllStacks","stacks","getManagementTokens","tokens","queries","apiKey","api_key","getContentType","getContentTypes","optionParams","getEnvironment","getEnvironments","getReleases","getPublishes","getLocale","getLocales","getWorkflow","getWorkflows","getAllBranches","getCurrentBranch","Stack","newTraget","oldTarget","oldSource","newTarget","_mergeRecursive","anotherTarget","_type","val","__typeof","languageCode","environmentCode","include_owner","include_content_type","include_schema","getAll","remove","clear","Store","Region","StackLocation","OrganizationLocation","NA","EU","AZURE_NA","AZURE_EU","UNKNOWN","nodeCollection","rootElementIndex","Infinity","elementPreferenceList","nonRenderingTags","elIndex","nodeName","_resizingEnabled","enableResizing","onDashboardResize","windowObj","updateHeight","isNaN","enablePaddingTop","disablePaddingTop","EventEmitter","proto","originalGlobalValue","indexOfListener","listeners","alias","isValidListener","getListeners","evt","events","_getEvents","test","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","__webpack_module_cache__","__webpack_require__","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://ContentstackAppSDK/webpack/universalModuleDefinition","webpack://ContentstackAppSDK/./node_modules/post-robot/dist/post-robot.js","webpack://ContentstackAppSDK/./node_modules/post-robot/index.js","webpack://ContentstackAppSDK/./src/AssetSidebarWidget.ts","webpack://ContentstackAppSDK/./src/RTE/index.tsx","webpack://ContentstackAppSDK/./src/appConfig/index.ts","webpack://ContentstackAppSDK/./src/entry.ts","webpack://ContentstackAppSDK/./src/extension.ts","webpack://ContentstackAppSDK/./src/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/entry.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/frame.ts","webpack://ContentstackAppSDK/./src/index.ts","webpack://ContentstackAppSDK/./src/metadata.ts","webpack://ContentstackAppSDK/./src/modal.ts","webpack://ContentstackAppSDK/./src/stack/api/asset/index.ts","webpack://ContentstackAppSDK/./src/stack/api/base.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/entry.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/index.ts","webpack://ContentstackAppSDK/./src/stack/api/query.ts","webpack://ContentstackAppSDK/./src/stack/index.ts","webpack://ContentstackAppSDK/./src/stack/utils.ts","webpack://ContentstackAppSDK/./src/store.ts","webpack://ContentstackAppSDK/./src/types.ts","webpack://ContentstackAppSDK/./src/utils/errorMessages.ts","webpack://ContentstackAppSDK/./src/utils/utils.ts","webpack://ContentstackAppSDK/./src/window.ts","webpack://ContentstackAppSDK/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://ContentstackAppSDK/webpack/bootstrap","webpack://ContentstackAppSDK/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ContentstackAppSDK\"] = factory();\n\telse\n\t\troot[\"ContentstackAppSDK\"] = factory();\n})(this, () => {\nreturn ","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"postRobot\", [], factory) : \"object\" == typeof exports ? exports.postRobot = factory() : root.postRobot = factory();\n}(\"undefined\" != typeof self ? self : this, function() {\n return function(modules) {\n var installedModules = {};\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n module.l = !0;\n return module.exports;\n }\n __webpack_require__.m = modules;\n __webpack_require__.c = installedModules;\n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n configurable: !1,\n enumerable: !0,\n get: getter\n });\n };\n __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n __webpack_require__.d(getter, \"a\", getter);\n return getter;\n };\n __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n __webpack_require__.p = \"\";\n return __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n }({\n \"./src/index.js\": function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n Object.defineProperty(__webpack_exports__, \"__esModule\", {\n value: !0\n });\n var interface_namespaceObject = {};\n __webpack_require__.d(interface_namespaceObject, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(interface_namespaceObject, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(interface_namespaceObject, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(interface_namespaceObject, \"init\", function() {\n return init;\n });\n __webpack_require__.d(interface_namespaceObject, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(interface_namespaceObject, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(interface_namespaceObject, \"request\", function() {\n return request;\n });\n __webpack_require__.d(interface_namespaceObject, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(interface_namespaceObject, \"client\", function() {\n return client;\n });\n __webpack_require__.d(interface_namespaceObject, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(interface_namespaceObject, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(interface_namespaceObject, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(interface_namespaceObject, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(interface_namespaceObject, \"disable\", function() {\n return disable;\n });\n function isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n var PROTOCOL = {\n MOCK: \"mock:\",\n FILE: \"file:\",\n ABOUT: \"about:\"\n }, WILDCARD = \"*\", IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n function isAboutProtocol() {\n return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window).location.protocol === PROTOCOL.ABOUT;\n }\n function getParent() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win) try {\n if (win.parent && win.parent !== win) return win.parent;\n } catch (err) {}\n }\n function getOpener() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win && !getParent(win)) try {\n return win.opener;\n } catch (err) {}\n }\n function canReadFromWindow(win) {\n try {\n win && win.location && win.location.href;\n return !0;\n } catch (err) {}\n return !1;\n }\n function getActualDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, location = win.location;\n if (!location) throw new Error(\"Can not read window location\");\n var protocol = location.protocol;\n if (!protocol) throw new Error(\"Can not read window protocol\");\n if (protocol === PROTOCOL.FILE) return PROTOCOL.FILE + \"//\";\n if (protocol === PROTOCOL.ABOUT) {\n var parent = getParent(win);\n return parent && canReadFromWindow(parent) ? getActualDomain(parent) : PROTOCOL.ABOUT + \"//\";\n }\n var host = location.host;\n if (!host) throw new Error(\"Can not read window host\");\n return protocol + \"//\" + host;\n }\n function utils_getDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, domain = getActualDomain(win);\n return domain && win.mockDomain && 0 === win.mockDomain.indexOf(PROTOCOL.MOCK) ? win.mockDomain : domain;\n }\n function isActuallySameDomain(win) {\n try {\n if (win === window) return !0;\n } catch (err) {}\n try {\n var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n if (desc && !1 === desc.enumerable) return !1;\n } catch (err) {}\n try {\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n } catch (err) {}\n try {\n if (getActualDomain(win) === getActualDomain(window)) return !0;\n } catch (err) {}\n return !1;\n }\n function isAncestorParent(parent, child) {\n if (!parent || !child) return !1;\n var childParent = getParent(child);\n return childParent ? childParent === parent : -1 !== function(win) {\n var result = [];\n try {\n for (;win.parent !== win; ) {\n result.push(win.parent);\n win = win.parent;\n }\n } catch (err) {}\n return result;\n }(child).indexOf(parent);\n }\n function getFrames(win) {\n var result = [], frames = void 0;\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n var len = void 0;\n try {\n len = frames.length;\n } catch (err) {}\n if (0 === len) return result;\n if (len) {\n for (var i = 0; i < len; i++) {\n var frame = void 0;\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n result.push(frame);\n }\n return result;\n }\n for (var _i = 0; _i < 100; _i++) {\n var _frame = void 0;\n try {\n _frame = frames[_i];\n } catch (err) {\n return result;\n }\n if (!_frame) return result;\n result.push(_frame);\n }\n return result;\n }\n var iframeWindows = [], iframeFrames = [];\n function isWindowClosed(win) {\n var allowMock = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n try {\n if (win === window) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (!win) return !0;\n } catch (err) {\n return !0;\n }\n try {\n if (win.closed) return !0;\n } catch (err) {\n return !err || err.message !== IE_WIN_ACCESS_ERROR;\n }\n if (allowMock && function(win) {\n if (!isActuallySameDomain(win)) return !1;\n try {\n if (win === window) return !0;\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n if (utils_getDomain(window) === utils_getDomain(win)) return !0;\n } catch (err) {}\n return !1;\n }(win)) try {\n if (win.mockclosed) return !0;\n } catch (err) {}\n try {\n if (!win.parent || !win.top) return !0;\n } catch (err) {}\n var iframeIndex = function(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }(iframeWindows, win);\n if (-1 !== iframeIndex) {\n var frame = iframeFrames[iframeIndex];\n if (frame && function(frame) {\n if (!frame.contentWindow) return !0;\n if (!frame.parentNode) return !0;\n var doc = frame.ownerDocument;\n return !(!doc || !doc.documentElement || doc.documentElement.contains(frame));\n }(frame)) return !0;\n }\n return !1;\n }\n function getAncestor() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return getOpener(win = win || window) || getParent(win) || void 0;\n }\n function matchDomain(pattern, origin) {\n if (\"string\" == typeof pattern) {\n if (\"string\" == typeof origin) return pattern === WILDCARD || origin === pattern;\n if (isRegex(origin)) return !1;\n if (Array.isArray(origin)) return !1;\n }\n return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some(function(subpattern) {\n return matchDomain(subpattern, origin);\n }));\n }\n function isWindow(obj) {\n try {\n if (obj === window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (\"[object Window]\" === Object.prototype.toString.call(obj)) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (window.Window && obj instanceof window.Window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.self === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.parent === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.top === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n } catch (err) {\n return !0;\n }\n return !1;\n }\n function util_safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }\n var _ALLOWED_POST_MESSAGE, weakmap_CrossDomainSafeWeakMap = function() {\n function CrossDomainSafeWeakMap() {\n !function(instance, Constructor) {\n if (!(instance instanceof CrossDomainSafeWeakMap)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n if (function() {\n if (\"undefined\" == typeof WeakMap) return !1;\n if (void 0 === Object.freeze) return !1;\n try {\n var testWeakMap = new WeakMap(), testKey = {};\n Object.freeze(testKey);\n testWeakMap.set(testKey, \"__testvalue__\");\n return \"__testvalue__\" === testWeakMap.get(testKey);\n } catch (err) {\n return !1;\n }\n }()) try {\n this.weakmap = new WeakMap();\n } catch (err) {}\n this.keys = [];\n this.values = [];\n }\n CrossDomainSafeWeakMap.prototype._cleanupClosedWindows = function() {\n for (var weakmap = this.weakmap, keys = this.keys, i = 0; i < keys.length; i++) {\n var value = keys[i];\n if (isWindow(value) && isWindowClosed(value)) {\n if (weakmap) try {\n weakmap.delete(value);\n } catch (err) {}\n keys.splice(i, 1);\n this.values.splice(i, 1);\n i -= 1;\n }\n }\n };\n CrossDomainSafeWeakMap.prototype.isSafeToReadWrite = function(key) {\n if (isWindow(key)) return !1;\n try {\n key && key.self;\n key && key[this.name];\n } catch (err) {\n return !1;\n }\n return !0;\n };\n CrossDomainSafeWeakMap.prototype.set = function(key, value) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var name = this.name, entry = key[name];\n entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: !0\n });\n return;\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, values = this.values, index = util_safeIndexOf(keys, key);\n if (-1 === index) {\n keys.push(key);\n values.push(value);\n } else values[index] = value;\n };\n CrossDomainSafeWeakMap.prototype.get = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return weakmap.get(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return entry && entry[0] === key ? entry[1] : void 0;\n } catch (err) {}\n this._cleanupClosedWindows();\n var index = util_safeIndexOf(this.keys, key);\n if (-1 !== index) return this.values[index];\n };\n CrossDomainSafeWeakMap.prototype.delete = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, index = util_safeIndexOf(keys, key);\n if (-1 !== index) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n };\n CrossDomainSafeWeakMap.prototype.has = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return !0;\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return !(!entry || entry[0] !== key);\n } catch (err) {}\n this._cleanupClosedWindows();\n return -1 !== util_safeIndexOf(this.keys, key);\n };\n CrossDomainSafeWeakMap.prototype.getOrSet = function(key, getter) {\n if (this.has(key)) return this.get(key);\n var value = getter();\n this.set(key, value);\n return value;\n };\n return CrossDomainSafeWeakMap;\n }(), constants_CONSTANTS = {\n POST_MESSAGE_TYPE: {\n REQUEST: \"postrobot_message_request\",\n RESPONSE: \"postrobot_message_response\",\n ACK: \"postrobot_message_ack\"\n },\n POST_MESSAGE_ACK: {\n SUCCESS: \"success\",\n ERROR: \"error\"\n },\n POST_MESSAGE_NAMES: {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_ready\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n },\n WINDOW_TYPES: {\n FULLPAGE: \"fullpage\",\n POPUP: \"popup\",\n IFRAME: \"iframe\"\n },\n WINDOW_PROPS: {\n POSTROBOT: \"__postRobot__\"\n },\n SERIALIZATION_TYPES: {\n METHOD: \"postrobot_method\",\n ERROR: \"postrobot_error\",\n PROMISE: \"postrobot_promise\",\n ZALGO_PROMISE: \"postrobot_zalgo_promise\",\n REGEX: \"regex\"\n },\n SEND_STRATEGIES: {\n POST_MESSAGE: \"postrobot_post_message\",\n BRIDGE: \"postrobot_bridge\",\n GLOBAL: \"postrobot_global\"\n },\n MOCK_PROTOCOL: \"mock:\",\n FILE_PROTOCOL: \"file:\",\n BRIDGE_NAME_PREFIX: \"__postrobot_bridge__\",\n POSTROBOT_PROXY: \"__postrobot_proxy__\",\n WILDCARD: \"*\"\n }, POST_MESSAGE_NAMES = {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_hello\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n }, CONFIG = (Object.keys(POST_MESSAGE_NAMES).map(function(key) {\n return POST_MESSAGE_NAMES[key];\n }), {\n ALLOW_POSTMESSAGE_POPUP: !(\"__ALLOW_POSTMESSAGE_POPUP__\" in window) || window.__ALLOW_POSTMESSAGE_POPUP__,\n BRIDGE_TIMEOUT: 5e3,\n CHILD_WINDOW_TIMEOUT: 5e3,\n ACK_TIMEOUT: -1 !== window.navigator.userAgent.match(/MSIE/i) ? 1e4 : 2e3,\n RES_TIMEOUT: -1,\n ALLOWED_POST_MESSAGE_METHODS: (_ALLOWED_POST_MESSAGE = {}, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = !0, \n _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.BRIDGE] = !0, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.GLOBAL] = !0, \n _ALLOWED_POST_MESSAGE),\n ALLOW_SAME_ORIGIN: !1\n });\n 0 === window.location.href.indexOf(constants_CONSTANTS.FILE_PROTOCOL) && (CONFIG.ALLOW_POSTMESSAGE_POPUP = !0);\n var _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function stringifyError(err) {\n var level = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\n if (level >= 3) return \"stringifyError stack overflow\";\n try {\n if (!err) return \"\";\n if (\"string\" == typeof err) return err;\n if (err instanceof Error) {\n var stack = err && err.stack, message = err && err.message;\n if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n if (stack) return stack;\n if (message) return message;\n }\n return \"function\" == typeof err.toString ? err.toString() : Object.prototype.toString.call(err);\n } catch (newErr) {\n return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n }\n }\n var once = function(method) {\n if (!method) return method;\n var called = !1;\n return function() {\n if (!called) {\n called = !0;\n return method.apply(this, arguments);\n }\n };\n };\n function lib_util_noop() {}\n function uniqueID() {\n var chars = \"0123456789abcdef\";\n return \"xxxxxxxxxx\".replace(/./g, function() {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n }\n function replaceObject(item, callback) {\n var depth = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\n if (depth >= 100) throw new Error(\"Self-referential object passed, or object contained too many layers\");\n var newobj = void 0;\n if (\"object\" !== (void 0 === item ? \"undefined\" : _typeof(item)) || null === item || Array.isArray(item)) {\n if (!Array.isArray(item)) throw new TypeError(\"Invalid type: \" + (void 0 === item ? \"undefined\" : _typeof(item)));\n newobj = [];\n } else newobj = {};\n !function(item, callback) {\n Array.isArray(item) ? function(item, callback) {\n for (var i = 0; i < item.length; i++) callback(item[i], i);\n }(item, callback) : \"object\" === (void 0 === item ? \"undefined\" : _typeof(item)) && null !== item && function(item, callback) {\n for (var _key in item) item.hasOwnProperty(_key) && callback(item[_key], _key);\n }(item, callback);\n }(item, function(childItem, key) {\n var result = callback(childItem, key);\n void 0 !== result ? newobj[key] = result : \"object\" === (void 0 === childItem ? \"undefined\" : _typeof(childItem)) && null !== childItem ? newobj[key] = replaceObject(childItem, callback, depth + 1) : newobj[key] = childItem;\n });\n return newobj;\n }\n function util_isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n function utils_isPromise(item) {\n try {\n if (!item) return !1;\n if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n var _toString = {}.toString;\n if (_toString) {\n var name = _toString.call(item);\n if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n }\n if (\"function\" == typeof item.then) return !0;\n } catch (err) {\n return !1;\n }\n return !1;\n }\n var dispatchedErrors = [], possiblyUnhandledPromiseHandlers = [], activeCount = 0, flushPromise = void 0;\n function flushActive() {\n if (!activeCount && flushPromise) {\n var promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n }\n function startActive() {\n activeCount += 1;\n }\n function endActive() {\n activeCount -= 1;\n flushActive();\n }\n var promise_ZalgoPromise = function() {\n function ZalgoPromise(handler) {\n var _this = this;\n !function(instance, Constructor) {\n if (!(instance instanceof ZalgoPromise)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.resolved = !1;\n this.rejected = !1;\n this.errorHandled = !1;\n this.handlers = [];\n if (handler) {\n var _result = void 0, _error = void 0, resolved = !1, rejected = !1, isAsync = !1;\n startActive();\n try {\n handler(function(res) {\n if (isAsync) _this.resolve(res); else {\n resolved = !0;\n _result = res;\n }\n }, function(err) {\n if (isAsync) _this.reject(err); else {\n rejected = !0;\n _error = err;\n }\n });\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n endActive();\n isAsync = !0;\n resolved ? this.resolve(_result) : rejected && this.reject(_error);\n }\n }\n ZalgoPromise.prototype.resolve = function(result) {\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n this.resolved = !0;\n this.value = result;\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.reject = function(error) {\n var _this2 = this;\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n if (!error) {\n var _err = error && \"function\" == typeof error.toString ? error.toString() : Object.prototype.toString.call(error);\n error = new Error(\"Expected reject to be called with Error, got \" + _err);\n }\n this.rejected = !0;\n this.error = error;\n this.errorHandled || setTimeout(function() {\n _this2.errorHandled || function(err, promise) {\n if (-1 === dispatchedErrors.indexOf(err)) {\n dispatchedErrors.push(err);\n setTimeout(function() {\n throw err;\n }, 1);\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n }(error, _this2);\n }, 1);\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.asyncReject = function(error) {\n this.errorHandled = !0;\n this.reject(error);\n return this;\n };\n ZalgoPromise.prototype.dispatch = function() {\n var dispatching = this.dispatching, resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n if (!dispatching && (resolved || rejected)) {\n this.dispatching = !0;\n startActive();\n for (var chain = function(firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n secondPromise.resolve(res);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < handlers.length; i++) {\n var _handlers$i = handlers[i], _onSuccess = _handlers$i.onSuccess, _onError = _handlers$i.onError, _promise = _handlers$i.promise, _result2 = void 0;\n if (resolved) try {\n _result2 = _onSuccess ? _onSuccess(this.value) : this.value;\n } catch (err) {\n _promise.reject(err);\n continue;\n } else if (rejected) {\n if (!_onError) {\n _promise.reject(this.error);\n continue;\n }\n try {\n _result2 = _onError(this.error);\n } catch (err) {\n _promise.reject(err);\n continue;\n }\n }\n if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error);\n _result2.errorHandled = !0;\n } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error) : chain(_result2, _promise) : _promise.resolve(_result2);\n }\n handlers.length = 0;\n this.dispatching = !1;\n endActive();\n }\n };\n ZalgoPromise.prototype.then = function(onSuccess, onError) {\n if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n var promise = new ZalgoPromise();\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n this.errorHandled = !0;\n this.dispatch();\n return promise;\n };\n ZalgoPromise.prototype.catch = function(onError) {\n return this.then(void 0, onError);\n };\n ZalgoPromise.prototype.finally = function(onFinally) {\n if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n return this.then(function(result) {\n return ZalgoPromise.try(onFinally).then(function() {\n return result;\n });\n }, function(err) {\n return ZalgoPromise.try(onFinally).then(function() {\n throw err;\n });\n });\n };\n ZalgoPromise.prototype.timeout = function(time, err) {\n var _this3 = this;\n if (this.resolved || this.rejected) return this;\n var timeout = setTimeout(function() {\n _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n }, time);\n return this.then(function(result) {\n clearTimeout(timeout);\n return result;\n });\n };\n ZalgoPromise.prototype.toPromise = function() {\n if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n return Promise.resolve(this);\n };\n ZalgoPromise.resolve = function(value) {\n return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise(function(resolve, reject) {\n return value.then(resolve, reject);\n }) : new ZalgoPromise().resolve(value);\n };\n ZalgoPromise.reject = function(error) {\n return new ZalgoPromise().reject(error);\n };\n ZalgoPromise.asyncReject = function(error) {\n return new ZalgoPromise().asyncReject(error);\n };\n ZalgoPromise.all = function(promises) {\n var promise = new ZalgoPromise(), count = promises.length, results = [];\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n for (var chain = function(i, firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n results[i] = res;\n 0 == (count -= 1) && promise.resolve(results);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < promises.length; i++) {\n var prom = promises[i];\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!utils_isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n 0 === count && promise.resolve(results);\n return promise;\n };\n ZalgoPromise.hash = function(promises) {\n var result = {};\n return ZalgoPromise.all(Object.keys(promises).map(function(key) {\n return ZalgoPromise.resolve(promises[key]).then(function(value) {\n result[key] = value;\n });\n })).then(function() {\n return result;\n });\n };\n ZalgoPromise.map = function(items, method) {\n return ZalgoPromise.all(items.map(method));\n };\n ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n return function(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n return {\n cancel: function() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n }(handler);\n };\n ZalgoPromise.try = function(method, context, args) {\n if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n var result = void 0;\n startActive();\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n endActive();\n return ZalgoPromise.resolve(result);\n };\n ZalgoPromise.delay = function(_delay) {\n return new ZalgoPromise(function(resolve) {\n setTimeout(resolve, _delay);\n });\n };\n ZalgoPromise.isPromise = function(value) {\n return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n };\n ZalgoPromise.flush = function() {\n return function(Zalgo) {\n var promise = flushPromise = flushPromise || new ZalgoPromise();\n flushActive();\n return promise;\n }();\n };\n return ZalgoPromise;\n }(), global = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n global.registerSelf = function() {};\n var serialize__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.methods = global.methods || new weakmap_CrossDomainSafeWeakMap();\n var listenForMethods = once(function() {\n global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n origin: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin, data = _ref.data, methods = global.methods.get(source);\n if (!methods) throw new Error(\"Could not find any methods this window has privileges to call\");\n var meth = methods[data.id];\n if (!meth) throw new Error(\"Could not find method with id: \" + data.id);\n if (!matchDomain(meth.domain, origin)) throw new Error(\"Method domain \" + meth.domain + \" does not match origin \" + origin);\n return promise_ZalgoPromise.try(function() {\n return meth.method.apply({\n source: source,\n origin: origin,\n data: data\n }, data.args);\n }).then(function(result) {\n return {\n result: result,\n id: data.id,\n name: data.name\n };\n });\n });\n });\n function isSerialized(item, type) {\n return \"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item && item.__type__ === type;\n }\n function serializeMethod(destination, domain, method, name) {\n var id = uniqueID(), methods = global.methods.get(destination);\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n methods[id] = {\n domain: domain,\n method: method\n };\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n }\n function deserializeMethod(source, origin, obj) {\n function wrapper() {\n var args = Array.prototype.slice.call(arguments);\n return global.send(source, constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args: args\n }, {\n domain: origin,\n timeout: -1\n }).then(function(_ref2) {\n return _ref2.data.result;\n }, function(err) {\n throw err;\n });\n }\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = !0;\n wrapper.source = source;\n wrapper.origin = origin;\n return wrapper;\n }\n function deserializeZalgoPromise(source, origin, prom) {\n return new promise_ZalgoPromise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n });\n }\n global.readyPromises = global.readyPromises || new weakmap_CrossDomainSafeWeakMap();\n function sayHello(win) {\n return global.send(win, constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, {\n domain: constants_CONSTANTS.WILDCARD,\n timeout: -1\n }).then(function(_ref2) {\n return {\n origin: _ref2.origin\n };\n });\n }\n var SEND_MESSAGE_STRATEGIES = {};\n SEND_MESSAGE_STRATEGIES[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = function(win, serializedMessage, domain) {\n (Array.isArray(domain) ? domain : \"string\" == typeof domain ? [ domain ] : [ constants_CONSTANTS.WILDCARD ]).map(function(dom) {\n if (0 === dom.indexOf(constants_CONSTANTS.MOCK_PROTOCOL)) {\n if (window.location.protocol === constants_CONSTANTS.FILE_PROTOCOL) return constants_CONSTANTS.WILDCARD;\n if (!isActuallySameDomain(win)) throw new Error(\"Attempting to send messsage to mock domain \" + dom + \", but window is actually cross-domain\");\n return getActualDomain(win);\n }\n return 0 === dom.indexOf(constants_CONSTANTS.FILE_PROTOCOL) ? constants_CONSTANTS.WILDCARD : dom;\n }).forEach(function(dom) {\n return win.postMessage(serializedMessage, dom);\n });\n };\n var _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n };\n function sendMessage(win, message, domain) {\n return promise_ZalgoPromise.try(function() {\n var _jsonStringify;\n message = function(win, message) {\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, id = uniqueID(), type = function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getOpener(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.POPUP : function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getParent(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.IFRAME : constants_CONSTANTS.WINDOW_TYPES.FULLPAGE, sourceDomain = utils_getDomain(window);\n return _extends({}, message, options, {\n sourceDomain: sourceDomain,\n id: message.id || id,\n windowType: type\n });\n }(win, message, {\n data: function(destination, domain, obj) {\n return replaceObject({\n obj: message.data\n }, function(item, key) {\n return \"function\" == typeof item ? serializeMethod(destination, domain, item, key.toString()) : item instanceof Error ? (err = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n __code__: err.code\n }) : window.Promise && item instanceof window.Promise ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : promise_ZalgoPromise.isPromise(item) ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : util_isRegex(item) ? (regex = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n }) : void 0;\n var err, regex;\n }).obj;\n }(win, domain),\n domain: domain\n });\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) throw new Error(\"Attemping to send message to self\");\n if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n var messages = [], serializedMessage = function(obj, replacer, indent) {\n var objectToJSON = void 0, arrayToJSON = void 0;\n try {\n if (\"{}\" !== JSON.stringify({})) {\n objectToJSON = Object.prototype.toJSON;\n delete Object.prototype.toJSON;\n }\n if (\"{}\" !== JSON.stringify({})) throw new Error(\"Can not correctly serialize JSON objects\");\n if (\"[]\" !== JSON.stringify([])) {\n arrayToJSON = Array.prototype.toJSON;\n delete Array.prototype.toJSON;\n }\n if (\"[]\" !== JSON.stringify([])) throw new Error(\"Can not correctly serialize JSON objects\");\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n var result = JSON.stringify.call(this, obj, null, 2);\n try {\n objectToJSON && (Object.prototype.toJSON = objectToJSON);\n arrayToJSON && (Array.prototype.toJSON = arrayToJSON);\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n return result;\n }(((_jsonStringify = {})[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = message, \n _jsonStringify));\n return promise_ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), function(strategyName) {\n return promise_ZalgoPromise.try(function() {\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) throw new Error(\"Strategy disallowed: \" + strategyName);\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n }).then(function() {\n messages.push(strategyName + \": success\");\n return !0;\n }, function(err) {\n messages.push(strategyName + \": \" + stringifyError(err) + \"\\n\");\n return !1;\n });\n }).then(function(results) {\n var success = results.some(Boolean), status = message.type + \" \" + message.name + \" \" + (success ? \"success\" : \"error\") + \":\\n - \" + messages.join(\"\\n - \") + \"\\n\";\n if (!success) throw new Error(status);\n });\n });\n }\n global.responseListeners = global.responseListeners || {};\n global.requestListeners = global.requestListeners || {};\n global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new function() {}();\n global.erroredResponseListeners = global.erroredResponseListeners || {};\n var _RECEIVE_MESSAGE_TYPE, __DOMAIN_REGEX__ = \"__domain_regex__\";\n function getResponseListener(hash) {\n return global.responseListeners[hash];\n }\n function deleteResponseListener(hash) {\n delete global.responseListeners[hash];\n }\n function isResponseListenerErrored(hash) {\n return Boolean(global.erroredResponseListeners[hash]);\n }\n function getRequestListener(_ref) {\n var name = _ref.name, win = _ref.win, domain = _ref.domain;\n win === constants_CONSTANTS.WILDCARD && (win = null);\n domain === constants_CONSTANTS.WILDCARD && (domain = null);\n if (!name) throw new Error(\"Name required to get request listener\");\n var nameListeners = global.requestListeners[name];\n if (nameListeners) for (var _i2 = 0, _ref3 = [ win, global.WINDOW_WILDCARD ], _length2 = null == _ref3 ? 0 : _ref3.length; _i2 < _length2; _i2++) {\n var winQualifier = _ref3[_i2], winListeners = winQualifier && nameListeners.get(winQualifier);\n if (winListeners) {\n if (domain && \"string\" == typeof domain) {\n if (winListeners[domain]) return winListeners[domain];\n if (winListeners[__DOMAIN_REGEX__]) for (var _i4 = 0, _winListeners$__DOMAI2 = winListeners[__DOMAIN_REGEX__], _length4 = null == _winListeners$__DOMAI2 ? 0 : _winListeners$__DOMAI2.length; _i4 < _length4; _i4++) {\n var _ref5 = _winListeners$__DOMAI2[_i4], regex = _ref5.regex, listener = _ref5.listener;\n if (matchDomain(regex, domain)) return listener;\n }\n }\n if (winListeners[constants_CONSTANTS.WILDCARD]) return winListeners[constants_CONSTANTS.WILDCARD];\n }\n }\n }\n var types__extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }, RECEIVE_MESSAGE_TYPES = ((_RECEIVE_MESSAGE_TYPE = {})[constants_CONSTANTS.POST_MESSAGE_TYPE.ACK] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message ack for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n options.ack = !0;\n }\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST] = function(source, origin, message) {\n var options = getRequestListener({\n name: message.name,\n win: source,\n domain: origin\n });\n function respond(data) {\n return message.fireAndForget || isWindowClosed(source) ? promise_ZalgoPromise.resolve() : sendMessage(source, types__extends({\n target: message.originalSource,\n hash: message.hash,\n name: message.name\n }, data), origin);\n }\n return promise_ZalgoPromise.all([ respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.ACK\n }), promise_ZalgoPromise.try(function() {\n if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Request origin \" + origin + \" does not match domain \" + options.domain.toString());\n var data = message.data;\n return options.handler({\n source: source,\n origin: origin,\n data: data\n });\n }).then(function(data) {\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data: data\n });\n }, function(err) {\n var error = stringifyError(err).replace(/^Error: /, \"\"), code = err.code;\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error: error,\n code: code\n });\n }) ]).then(lib_util_noop).catch(function(err) {\n if (options && options.handleError) return options.handleError(err);\n throw err;\n });\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var pattern, options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message response for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() : pattern.toString()));\n deleteResponseListener(message.hash);\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n var err = new Error(message.error);\n message.code && (err.code = message.code);\n return options.respond(err, null);\n }\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n var data = message.data || message.response;\n return options.respond(null, {\n source: source,\n origin: origin,\n data: data\n });\n }\n }\n }, _RECEIVE_MESSAGE_TYPE), receive__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.receivedMessages = global.receivedMessages || [];\n function receiveMessage(event) {\n if (window && !window.closed) {\n try {\n if (!event.source) return;\n } catch (err) {\n return;\n }\n var source = event.source, origin = event.origin, message = function(message) {\n var item, parsedMessage = void 0;\n try {\n parsedMessage = (item = message, JSON.parse(item));\n } catch (err) {\n return;\n }\n if (parsedMessage && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && (parsedMessage = parsedMessage[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT]) && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && parsedMessage.type && \"string\" == typeof parsedMessage.type && RECEIVE_MESSAGE_TYPES[parsedMessage.type]) return parsedMessage;\n }(event.data);\n if (message) {\n if (!message.sourceDomain || \"string\" != typeof message.sourceDomain) throw new Error(\"Expected message to have sourceDomain\");\n 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.MOCK_PROTOCOL) && 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.FILE_PROTOCOL) || (origin = message.sourceDomain);\n if (-1 === global.receivedMessages.indexOf(message.id)) {\n global.receivedMessages.push(message.id);\n if (!isWindowClosed(source) || message.fireAndForget) {\n message.data && (message.data = function(source, origin, obj) {\n return replaceObject({\n obj: message.data\n }, function(item) {\n if (\"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item) return isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.METHOD) ? deserializeMethod(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ERROR) ? function(source, origin, obj) {\n var err = new Error(obj.__message__);\n obj.__code__ && (err.code = obj.__code__);\n return err;\n }(0, 0, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE) ? function(source, origin, prom) {\n return window.Promise ? new window.Promise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n }) : deserializeZalgoPromise(source, origin, prom);\n }(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE) ? deserializeZalgoPromise(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.REGEX) ? function(source, origin, item) {\n return new RegExp(item.__source__);\n }(0, 0, item) : void 0;\n }).obj;\n }(source, origin));\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n }\n }\n }\n }\n }\n function messageListener(event) {\n try {\n event.source;\n } catch (err) {\n return;\n }\n receiveMessage({\n source: event.source || event.sourceElement,\n origin: event.origin || event.originalEvent && event.originalEvent.origin,\n data: event.data\n });\n }\n global.receiveMessage = receiveMessage;\n global.requestPromises = global.requestPromises || new weakmap_CrossDomainSafeWeakMap();\n function request(options) {\n return promise_ZalgoPromise.try(function() {\n if (!options.name) throw new Error(\"Expected options.name\");\n var name = options.name, targetWindow = void 0, domain = void 0;\n if (\"string\" == typeof options.window) {\n var el = document.getElementById(options.window);\n if (!el) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be a valid element id\");\n if (\"iframe\" !== el.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (!el.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n targetWindow = el.contentWindow;\n } else if (options.window instanceof HTMLIFrameElement) {\n if (\"iframe\" !== options.window.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (options.window && !options.window.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n options.window && options.window.contentWindow && (targetWindow = options.window.contentWindow);\n } else targetWindow = options.window;\n if (!targetWindow) throw new Error(\"Expected options.window to be a window object, iframe, or iframe element id.\");\n var win = targetWindow;\n domain = options.domain || constants_CONSTANTS.WILDCARD;\n var hash = options.name + \"_\" + uniqueID();\n if (isWindowClosed(win)) throw new Error(\"Target window is closed\");\n var hasResult = !1, requestPromises = global.requestPromises.get(win);\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n var requestPromise = promise_ZalgoPromise.try(function() {\n if (function(parent, child) {\n var actualParent = getAncestor(child);\n if (actualParent) return actualParent === parent;\n if (child === parent) return !1;\n if (function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n try {\n if (win.top) return win.top;\n } catch (err) {}\n if (getParent(win) === win) return win;\n try {\n if (isAncestorParent(window, win) && window.top) return window.top;\n } catch (err) {}\n try {\n if (isAncestorParent(win, window) && window.top) return window.top;\n } catch (err) {}\n for (var _i7 = 0, _getAllChildFrames4 = function getAllChildFrames(win) {\n for (var result = [], _i3 = 0, _getFrames2 = getFrames(win), _length2 = null == _getFrames2 ? 0 : _getFrames2.length; _i3 < _length2; _i3++) {\n var frame = _getFrames2[_i3];\n result.push(frame);\n for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame), _length4 = null == _getAllChildFrames2 ? 0 : _getAllChildFrames2.length; _i5 < _length4; _i5++) {\n var childFrame = _getAllChildFrames2[_i5];\n result.push(childFrame);\n }\n }\n return result;\n }(win), _length6 = null == _getAllChildFrames4 ? 0 : _getAllChildFrames4.length; _i7 < _length6; _i7++) {\n var frame = _getAllChildFrames4[_i7];\n try {\n if (frame.top) return frame.top;\n } catch (err) {}\n if (getParent(frame) === frame) return frame;\n }\n }(child) === child) return !1;\n for (var _i15 = 0, _getFrames8 = getFrames(parent), _length14 = null == _getFrames8 ? 0 : _getFrames8.length; _i15 < _length14; _i15++) if (_getFrames8[_i15] === child) return !0;\n return !1;\n }(window, win)) return function(win) {\n var timeout = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 5e3, name = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : \"Window\", promise = global.readyPromises.get(win);\n if (promise) return promise;\n promise = new promise_ZalgoPromise();\n global.readyPromises.set(win, promise);\n -1 !== timeout && setTimeout(function() {\n return promise.reject(new Error(name + \" did not load after \" + timeout + \"ms\"));\n }, timeout);\n return promise;\n }(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain) && !origin) return sayHello(win);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain)) {\n if (!matchDomain(domain, origin)) throw new Error(\"Remote window domain \" + origin + \" does not match regex: \" + domain.toString());\n domain = origin;\n }\n if (\"string\" != typeof domain && !Array.isArray(domain)) throw new TypeError(\"Expected domain to be a string or array\");\n var actualDomain = domain;\n return new promise_ZalgoPromise(function(resolve, reject) {\n var responseListener = void 0;\n options.fireAndForget || function(hash, listener) {\n global.responseListeners[hash] = listener;\n }(hash, responseListener = {\n name: name,\n window: win,\n domain: actualDomain,\n respond: function(err, result) {\n if (!err) {\n hasResult = !0;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n err ? reject(err) : resolve(result);\n }\n });\n sendMessage(win, {\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash: hash,\n name: name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n if (options.fireAndForget) return resolve();\n var ackTimeout = CONFIG.ACK_TIMEOUT, resTimeout = options.timeout || CONFIG.RES_TIMEOUT, cycleTime = 100;\n setTimeout(function cycle() {\n if (!hasResult) {\n if (isWindowClosed(win)) return responseListener.ack ? reject(new Error(\"Window closed for \" + name + \" before response\")) : reject(new Error(\"Window closed for \" + name + \" before ack\"));\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n -1 !== resTimeout && (resTimeout = Math.max(resTimeout - cycleTime, 0));\n if (responseListener.ack) {\n if (-1 === resTimeout) return;\n cycleTime = Math.min(resTimeout, 2e3);\n } else {\n if (0 === ackTimeout) return reject(new Error(\"No ack for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + CONFIG.ACK_TIMEOUT + \"ms\"));\n if (0 === resTimeout) return reject(new Error(\"No response for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + (options.timeout || CONFIG.RES_TIMEOUT) + \"ms\"));\n }\n setTimeout(cycle, cycleTime);\n }\n }, cycleTime);\n });\n });\n requestPromise.catch(function() {\n !function(hash) {\n global.erroredResponseListeners[hash] = !0;\n }(hash);\n deleteResponseListener(hash);\n });\n requestPromises.push(requestPromise);\n return requestPromise;\n });\n }\n function _send(window, name, data, options) {\n (options = options || {}).window = window;\n options.name = name;\n options.data = data;\n return request(options);\n }\n function sendToParent(name, data, options) {\n var win = getAncestor();\n return win ? _send(win, name, data, options) : new promise_ZalgoPromise(function(resolve, reject) {\n return reject(new Error(\"Window does not have a parent\"));\n });\n }\n function client() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (!options.window) throw new Error(\"Expected options.window\");\n var win = options.window;\n return {\n send: function(name, data) {\n return _send(win, name, data, options);\n }\n };\n }\n global.send = _send;\n var server__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function listen(options) {\n if (!options.name) throw new Error(\"Expected options.name\");\n if (!options.handler) throw new Error(\"Expected options.handler\");\n var name = options.name, win = options.window, domain = options.domain, listenerOptions = {\n handler: options.handler,\n handleError: options.errorHandler || function(err) {\n throw err;\n },\n window: win,\n domain: domain || constants_CONSTANTS.WILDCARD,\n name: name\n }, requestListener = function addRequestListener(_ref6, listener) {\n var name = _ref6.name, win = _ref6.win, domain = _ref6.domain;\n if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n if (Array.isArray(win)) {\n for (var listenersCollection = [], _i6 = 0, _win2 = win, _length6 = null == _win2 ? 0 : _win2.length; _i6 < _length6; _i6++) {\n var item = _win2[_i6];\n listenersCollection.push(addRequestListener({\n name: name,\n domain: domain,\n win: item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i8 = 0, _length8 = null == listenersCollection ? 0 : listenersCollection.length; _i8 < _length8; _i8++) listenersCollection[_i8].cancel();\n }\n };\n }\n if (Array.isArray(domain)) {\n for (var _listenersCollection = [], _i10 = 0, _domain2 = domain, _length10 = null == _domain2 ? 0 : _domain2.length; _i10 < _length10; _i10++) {\n var _item = _domain2[_i10];\n _listenersCollection.push(addRequestListener({\n name: name,\n win: win,\n domain: _item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i12 = 0, _length12 = null == _listenersCollection ? 0 : _listenersCollection.length; _i12 < _length12; _i12++) _listenersCollection[_i12].cancel();\n }\n };\n }\n var existingListener = getRequestListener({\n name: name,\n win: win,\n domain: domain\n });\n win && win !== constants_CONSTANTS.WILDCARD || (win = global.WINDOW_WILDCARD);\n domain = domain || constants_CONSTANTS.WILDCARD;\n if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n var requestListeners = global.requestListeners, nameListeners = requestListeners[name];\n if (!nameListeners) {\n nameListeners = new weakmap_CrossDomainSafeWeakMap();\n requestListeners[name] = nameListeners;\n }\n var winListeners = nameListeners.get(win);\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n var strDomain = domain.toString(), regexListeners = winListeners[__DOMAIN_REGEX__], regexListener = void 0;\n if (util_isRegex(domain)) {\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n regexListener = {\n regex: domain,\n listener: listener\n };\n regexListeners.push(regexListener);\n } else winListeners[strDomain] = listener;\n return {\n cancel: function() {\n if (winListeners) {\n delete winListeners[strDomain];\n win && 0 === Object.keys(winListeners).length && nameListeners.delete(win);\n regexListener && regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n };\n }({\n name: name,\n win: win,\n domain: domain\n }, listenerOptions);\n if (options.once) {\n var _handler = listenerOptions.handler;\n listenerOptions.handler = once(function() {\n requestListener.cancel();\n return _handler.apply(this, arguments);\n });\n }\n if (listenerOptions.window && options.errorOnClose) var interval = function(method, time) {\n var timeout = void 0;\n timeout = setTimeout(function runInterval() {\n timeout = setTimeout(runInterval, 50);\n (function() {\n if (win && \"object\" === (void 0 === win ? \"undefined\" : server__typeof(win)) && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error(\"Post message target window is closed\"));\n }\n }).call();\n }, 50);\n return {\n cancel: function() {\n clearTimeout(timeout);\n }\n };\n }();\n return {\n cancel: function() {\n requestListener.cancel();\n }\n };\n }\n function _on(name, options, handler) {\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n (options = options || {}).name = name;\n options.handler = handler || options.handler;\n return listen(options);\n }\n function server_once(name) {\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, handler = arguments[2];\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n options = options || {};\n handler = handler || options.handler;\n var errorHandler = options.errorHandler, promise = new promise_ZalgoPromise(function(resolve, reject) {\n (options = options || {}).name = name;\n options.once = !0;\n options.handler = function(event) {\n resolve(event);\n if (handler) return handler(event);\n };\n options.errorHandler = function(err) {\n reject(err);\n if (errorHandler) return errorHandler(err);\n };\n }), onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n return promise;\n }\n function server_listener() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return {\n on: function(name, handler) {\n return _on(name, options, handler);\n }\n };\n }\n global.on = _on;\n function disable() {\n delete window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener(\"message\", messageListener);\n }\n var public_parent = getAncestor();\n function cleanUpWindow(win) {\n var requestPromises = global.requestPromises.get(win);\n if (requestPromises) for (var _i2 = 0, _length2 = null == requestPromises ? 0 : requestPromises.length; _i2 < _length2; _i2++) requestPromises[_i2].reject(new Error(\"No response from window - cleaned up\"));\n global.popupWindowsByWin && global.popupWindowsByWin.delete(win);\n global.remoteWindows && global.remoteWindows.delete(win);\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n }\n var bridge = null;\n function init() {\n if (!global.initialized) {\n handler = messageListener, (obj = window).addEventListener ? obj.addEventListener(\"message\", handler) : obj.attachEvent(\"onmessage\", handler);\n !function() {\n handler = function(_ref3) {\n var source = _ref3.source, origin = _ref3.origin, promise = global.readyPromises.get(source) || new promise_ZalgoPromise();\n promise.resolve({\n origin: origin\n });\n global.readyPromises.set(source, promise);\n }, global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {\n domain: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin;\n return handler({\n source: source,\n origin: origin\n });\n });\n var handler, parent = getAncestor();\n parent && sayHello(parent).catch(lib_util_noop);\n }();\n listenForMethods({\n on: _on,\n send: _send\n });\n }\n var obj, handler;\n global.initialized = !0;\n }\n init();\n __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(__webpack_exports__, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(__webpack_exports__, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(__webpack_exports__, \"init\", function() {\n return init;\n });\n __webpack_require__.d(__webpack_exports__, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(__webpack_exports__, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(__webpack_exports__, \"request\", function() {\n return request;\n });\n __webpack_require__.d(__webpack_exports__, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(__webpack_exports__, \"client\", function() {\n return client;\n });\n __webpack_require__.d(__webpack_exports__, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(__webpack_exports__, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(__webpack_exports__, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(__webpack_exports__, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(__webpack_exports__, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(__webpack_exports__, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(__webpack_exports__, \"disable\", function() {\n return disable;\n });\n __webpack_exports__.default = interface_namespaceObject;\n }\n });\n});\n//# sourceMappingURL=post-robot.js.map","/* @flow */\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = require('./dist/post-robot');\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports.default = module.exports;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IAssetSidebarInitData, setAssetDto } from \"./types\";\nimport Asset from './stack/api/asset'\n\n/** Class representing an asset Extension from Contentstack UI. */\n\nclass AssetSidebarWidget {\n /**\n * @hideconstructor\n */\n\n currentAsset: { [key: string]: any };\n _emitter: EventEmitter;\n _connection: any;\n _changedData?: { [key: string]: any };\n\n constructor(\n initializationData: IAssetSidebarInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * Gets the content type of the current asset.\n * @type {Object}\n */\n\n this.currentAsset = initializationData.data.currentAsset;\n\n this._emitter = emitter;\n\n this._connection = connection;\n\n const thisAsset = this;\n\n this._emitter.on(\n \"assetSave\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset.currentAsset = event.data;\n }\n );\n\n this._emitter.on(\n \"assetChange\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset._changedData = event.data;\n }\n );\n\n this.getData = this.getData.bind(this);\n this.setData = this.setData.bind(this);\n this.syncAsset = this.syncAsset.bind(this);\n this.updateWidth = this.updateWidth.bind(this);\n this.onSave = this.onSave.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onPublish = this.onPublish.bind(this);\n this.onUnPublish = this.onUnPublish.bind(this);\n this.replaceAsset = this.replaceAsset.bind(this);\n }\n\n getData() {\n return this.currentAsset;\n }\n\n async setData(asset: Partial): Promise {\n return this._connection.sendToParent(\"setData\", asset);\n }\n\n async syncAsset(): Promise {\n return this._connection.sendToParent(\"syncAsset\");\n }\n\n async updateWidth(width: number): Promise {\n if (typeof width !== \"number\") {\n throw new Error(\"Width must be a number\");\n }\n return this._connection.sendToParent(\"updateAssetSidebarWidth\", width);\n }\n\n async replaceAsset(file: File): Promise {\n const asset = Asset(this._emitter);\n return asset.handleUpload([file], 'replace');\n }\n\n /**\n * This function executes the callback function every time an asset is saved.\n * @param {function} callback The function to be called when an asset is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetSave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an asset is edited/changed.\n */\n\n onChange(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetChange\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an asset has been published with the respective payload.\n * @param {function} callback The function to be called when an asset is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an asset has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an asset is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default AssetSidebarWidget;\n","import {\n IConfigCallback,\n IContainerMetaData,\n IOnFunction,\n IPluginMetaData,\n IRteParam,\n IConfig\n} from \"./types\";\n\nexport class RTEPlugin {\n private pluginMetaData: IPluginMetaData = {\n registry: {\n title: \"\",\n toolbar: {\n inMainToolbar: true,\n inHoveringToolbar: true,\n },\n isContentstackElement: true,\n },\n meta: {\n id: \"\",\n elementType: null,\n editorCallbacks: {},\n isDependent: false,\n },\n };\n private isContainer: boolean = false;\n private containerMetaData: IContainerMetaData = {\n registry: {\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n id: this.pluginMetaData.meta.id,\n dependentPlugins: [],\n },\n };\n\n constructor(id: string, private configCallback: IConfigCallback) {\n this.pluginMetaData.meta.id = id;\n }\n\n addPlugins = (...plugins: RTEPlugin[]) => {\n // convert to dropdown if not already\n if (this.pluginMetaData.meta.isDependent)\n throw Error(\"cannot have another container inside\");\n\n this.isContainer = true;\n\n // clean pluginMetaData\n\n plugins.forEach((plugin) => {\n // make sure that this plugin is not another dropdown\n if (plugin.isContainer) {\n throw Error(\"cannot have another container inside\");\n }\n\n plugin.pluginMetaData.registry.category =\n this.pluginMetaData.meta.id;\n this.containerMetaData.meta.dependentPlugins.push(plugin);\n plugin.pluginMetaData.meta.isDependent = true;\n });\n };\n\n on = (\n type: Type,\n callback: IOnFunction[Type]\n ) => {\n switch (type) {\n case \"beforeChildRender\": {\n this.pluginMetaData.registry.beforeChildrenRender = callback;\n break;\n }\n\n case \"beforeRender\": {\n this.pluginMetaData.registry.beforeElementRender = callback;\n break;\n }\n\n case \"exec\": {\n this.pluginMetaData.registry.handleMouseDown = callback;\n break;\n }\n\n case \"keydown\": {\n this.pluginMetaData.meta.editorCallbacks[\"keydown\"] = callback;\n break;\n }\n\n case \"paste\":\n case \"deleteBackward\":\n case \"deleteForward\":\n case \"insertBreak\":\n case \"normalize\":\n default: {\n this.pluginMetaData.meta.editorCallbacks[type] = callback;\n break;\n }\n }\n };\n\n get = async (rte: IRteParam | void) => {\n const config = await this.configCallback(rte);\n\n Object.entries(config).forEach(\n //@ts-ignore\n ([key, value]: [Key, any]) => {\n switch (key) {\n case \"title\": {\n this.pluginMetaData.registry.title = value;\n break;\n }\n case \"icon\": {\n this.pluginMetaData.registry.iconName = value;\n this.containerMetaData.registry.iconName = value;\n break;\n }\n case \"display\": {\n // make every other options false\n this.pluginMetaData.registry.toolbar = {\n inHoveringToolbar: false,\n inMainToolbar: false,\n };\n\n if (typeof value === \"string\") {\n switch (value) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach((display) => {\n switch (display) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n });\n }\n break;\n }\n\n case \"elementType\": {\n const isInline = (\n typeof value === 'string' && value === 'inline' ||\n Array.isArray(value) && value.includes('inline')\n )\n if(isInline) {\n let dndOptions = this.pluginMetaData['registry']['dndOptions'];\n if(!dndOptions) {\n this.pluginMetaData['registry']['dndOptions'] = {};\n dndOptions = this.pluginMetaData['registry']['dndOptions']\n }\n dndOptions['DisableDND'] = true;\n dndOptions['DisableSelectionHalo'] = true;\n }\n this.pluginMetaData.meta.elementType = value;\n break;\n }\n\n case \"render\": {\n this.pluginMetaData.registry.Component = value;\n break;\n }\n\n case \"shouldOverride\" : {\n this.pluginMetaData.registry.shouldOverride = value\n }\n }\n }\n );\n\n const containerMeta = this.containerMetaData.meta;\n this.containerMetaData = {\n registry: {\n ...this.containerMetaData.registry,\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n ...containerMeta,\n id: this.pluginMetaData.meta.id,\n },\n };\n\n return this.isContainer ? this.containerMetaData : this.pluginMetaData;\n };\n}\n\nexport const rtePluginInitializer = (\n id: string,\n configCallback: IConfigCallback\n) => {\n if (!(id && configCallback)) throw Error('Please provide value \"id\" and \"configCallback\"');\n\n return new RTEPlugin(id, configCallback);\n};\n","import Stack from \"../stack\";\nimport { IInstallationData, ValidationOptions } from \"../types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport { onData, onError } from \"../utils/utils\";\n\nexport declare interface AppConfigAdditionalData {\n currentBranch: string;\n}\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nexport class AppConfig {\n _data: { [key: string]: any };\n _connection: any;\n _emitter: EventEmitter;\n private _additionalData: AppConfigAdditionalData;\n\n constructor(\n data: { [key: string]: any },\n connection: any,\n emitter: EventEmitter,\n additionalData: AppConfigAdditionalData\n ) {\n this._data = data;\n this._connection = connection;\n this._emitter = emitter;\n\n this.setValidity = this.setValidity.bind(this);\n this._additionalData = additionalData;\n }\n\n stack = () => {\n return new Stack(this._data.stack, this._connection, {\n currentBranch: this._additionalData.currentBranch,\n });\n };\n\n setInstallationData = (\n installationData: IInstallationData\n ): Promise<{ [key: string]: any }> => {\n return this._connection\n .sendToParent(\"setInstallationData\", installationData)\n .then(onData)\n .catch(onError);\n };\n\n getInstallationData = (): Promise => {\n return this._connection\n .sendToParent(\"getInstallationData\")\n .then(onData)\n .catch(onError);\n };\n\n /**\n * Set the validation state of the app. If the validation is false, the Contentstack App Config\n * will not allow to save the configuration. The message will be displayed if provided.\n * @param isValid set the validation state of the app\n * @param options additional options to be sent to the parent\n * @returns returns a promise with the data sent from the parent\n */\n async setValidity(\n isValid: boolean,\n options?: ValidationOptions\n ): Promise> {\n if (typeof isValid !== \"boolean\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.isValidTypeBoolean\n )\n );\n }\n\n if (options?.message && typeof options.message !== \"string\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.messageTypeString\n )\n );\n }\n\n return this._connection\n .sendToParent(\"setValidity\", { isValid, options })\n .then(onData)\n .catch(onError);\n }\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\n\nimport Field from \"./field\";\nimport {\n ICurrentContentType,\n IFieldInitData,\n IFieldModifierLocationInitData,\n IRTELocationInitData,\n ISidebarInitData,\n} from \"./types\";\nimport {\n IEntryOptions,\n IGetFieldOptions,\n IOnEntryChangeCallback,\n} from \"./types/entry.types\";\n\n/** Class representing an entry from Contentstack UI. Not available for Dashboard Widget extension. */\n\nclass Entry {\n /**\n * @hideconstructor\n */\n\n content_type: ICurrentContentType;\n _data: { [key: string]: any };\n locale: string;\n _connection: any;\n _emitter: EventEmitter;\n _changedData?: { [key: string]: any };\n _options: IEntryOptions;\n\n constructor(\n initializationData:\n | IFieldInitData\n | ISidebarInitData\n | IRTELocationInitData\n | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter,\n options?: IEntryOptions\n ) {\n /**\n * Gets the content type of the current entry.\n * @type {Object}\n */\n this.content_type = initializationData.data.content_type;\n\n this._data = initializationData.data.entry;\n\n if (initializationData.data.changedData) {\n this._changedData = initializationData.data.changedData;\n }\n\n /**\n * Gets the locale of the current entry.\n * @type {string}\n */\n this.locale = initializationData.data.locale;\n\n this._connection = connection;\n\n this._emitter = emitter;\n\n this._options = options || {};\n\n const thisEntry = this;\n\n this._emitter.on(\n \"entrySave\",\n (event: { data: { [key: string]: any } }) => {\n thisEntry._data = event.data;\n }\n );\n\n this._emitter.on(\n \"entryChange\",\n (event: { data: { [key: string]: any } }) => {\n console.log(\"rte listened to the change\", event.data);\n thisEntry._changedData = event.data;\n }\n );\n }\n\n /**\n * Gets data of the current entry.\n * @return {Object} Returns entry data.\n */\n\n getData() {\n return this._data;\n }\n\n /**\n * Gets the field object for the saved data, which allows you to interact with the field.\n * This object will have all the same methods and properties of extension.field.\n * Note: For fields initialized using the getFields function, the setData function currently works only for the following fields: as single_line, multi_line, RTE, markdown, select, number, boolean, date, link, and extension of data type text, number, boolean, and date.\n * @example\n * var field = entry.getField('field_uid');\n * var fieldSchema = field.schema;\n * var fieldUid = field.uid;\n * var fieldData = field.getData();\n * @param {string} uid Unique ID of the field\n * @param {boolean} options.useUnsavedSchema If set to true, the field will get the unsaved field\n * @return {Object} Field object\n */\n\n getField(uid: string, options?: IGetFieldOptions): Field {\n const { useUnsavedSchema = false } = options || {};\n const { FieldInstance = Field } = this._options._internalFlags || {};\n\n const path = uid.split(\".\");\n let value = useUnsavedSchema\n ? this._changedData || this._data\n : this._data;\n let schema = this.content_type.schema;\n\n const isDataEmpty = Object.keys(value).length === 0;\n\n if (isDataEmpty) {\n throw new Error(\n \"The data is unsaved. Save the data before requesting the field.\"\n );\n }\n\n try {\n let skipNext = false;\n let skipNextTwo = false;\n path.forEach((key: string | number, index: number) => {\n if (skipNext) {\n if (skipNextTwo) {\n skipNextTwo = false;\n } else {\n skipNext = false;\n }\n return;\n }\n\n schema = schema.find((x: { uid: any }) => x.uid === key);\n if (!schema) {\n throw Error(\"schema not found\");\n }\n\n value = value[key];\n\n if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === false &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n } else if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === true &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n value = value[path[index + 1]];\n skipNext = true;\n } else if (\n schema.data_type === \"blocks\" &&\n path.length !== index + 1\n ) {\n const blockId = Object.keys(value[path[index + 1]])[0];\n schema = schema.blocks.find(\n (block: { uid: string }) => block.uid === blockId\n );\n if (path.length === index + 2) {\n // complete block value with uid\n value = value[path[index + 1]];\n } else {\n // block value without uid\n value = value[path[index + 1]][blockId];\n schema = schema.schema;\n }\n\n skipNext = true;\n skipNextTwo = true;\n }\n });\n } catch (e) {\n throw Error(\"Invalid uid, Field not found\");\n }\n const fieldIntilaizationDataObject = {\n data: {\n uid,\n value,\n schema,\n data_type: schema.data_type,\n },\n };\n\n //@ts-ignore\n const fieldObject = new FieldInstance(\n fieldIntilaizationDataObject,\n this._connection,\n this._emitter\n );\n delete fieldObject.onChange;\n return fieldObject;\n }\n\n /**\n * This function executes the callback function every time an entry is saved.\n * @param {function} callback The function to be called when an entry is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entrySave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an entry is edited/changed.\n */\n\n onChange(callback: IOnEntryChangeCallback) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\n \"entryChange\",\n (event: { data: any; resolvedData: Record }) => {\n callback(event.data, event.resolvedData);\n }\n );\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an entry has been published with the respective payload.\n * @param {function} callback The function to be called when an entry is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an entry has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an entry is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default Entry;\n","import postRobot from \"post-robot\";\nimport EventEmitter from \"wolfy87-eventemitter\";\n\nimport AssetSidebarWidget from \"./AssetSidebarWidget\";\nimport { IRTELocation, IRTEPluginInitializer } from \"./RTE/types\";\nimport { AppConfig } from \"./appConfig\";\nimport Entry from \"./entry\";\nimport Field from \"./field\";\nimport FieldModifierLocationEntry from \"./fieldModifierLocation/entry\";\nimport FieldModifierLocationField from \"./fieldModifierLocation/field\";\nimport FieldModifierLocationFrame from \"./fieldModifierLocation/frame\";\nimport Metadata from \"./metadata\";\nimport Modal from \"./modal\";\nimport Stack from \"./stack\";\nimport Store from \"./store\";\nimport {\n IAppConfigInitData,\n IAppConfigWidget,\n IAssetSidebarInitData,\n ICustomField,\n IDashboardInitData,\n IDashboardWidget,\n IEntryFieldLocation,\n IEntryFieldLocationInitData,\n IFieldInitData,\n IFieldModifierLocation,\n IFieldModifierLocationInitData,\n IFullPageLocation,\n IFullPageLocationInitData,\n ILocation,\n IPageWidget,\n IRTEInitData,\n IRTELocationInitData,\n ISidebarInitData,\n ISidebarWidget,\n IUser,\n Manifest,\n Region,\n} from \"./types\";\nimport { AnyObject } from \"./types/common.types\";\nimport { formatAppRegion, onData, onError } from \"./utils/utils\";\nimport Window from \"./window\";\n\nconst emitter = new EventEmitter();\n\n/** Class representing an extension from Contentstack App Framework SDK. */\n\nclass Extension {\n /**\n * @hideconstructor\n */\n\n appUID: string;\n installationUID: string;\n currentUser: IUser;\n private type: ILocation;\n private config: AnyObject;\n postRobot: any;\n stack: Stack;\n store: Store;\n metadata: Metadata;\n locationUID: string;\n modal: Modal;\n readonly region: Region;\n version: number | null;\n\n location: {\n DashboardWidget: IDashboardWidget | null;\n SidebarWidget: ISidebarWidget | null;\n CustomField: ICustomField | null;\n RTEPlugin: IRTEPluginInitializer | null;\n RTELocation: IRTELocation | null;\n AppConfigWidget: IAppConfigWidget | null;\n FullscreenAppWidget: IPageWidget | null;\n AssetSidebarWidget: AssetSidebarWidget | null;\n EntryFieldLocation: IEntryFieldLocation | null;\n FullPage: IFullPageLocation | null;\n FieldModifierLocation: IFieldModifierLocation | null;\n };\n\n constructor(\n initData:\n | IRTEInitData\n | IDashboardInitData\n | IFieldInitData\n | ISidebarInitData\n | IAppConfigInitData\n | IAssetSidebarInitData\n | IFullPageLocationInitData\n | IEntryFieldLocationInitData\n | IFieldModifierLocationInitData\n ) {\n const initializationData = initData;\n\n this.postRobot = postRobot;\n\n /**\n * This value represents the current App's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.appUID = initializationData.data.app_id;\n\n /**\n * This value represents the current location's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.locationUID = initializationData.data.extension_uid;\n\n /**\n * This object holds details of the app initialization user.\n * @type {Object}\n */\n this.installationUID = initializationData.data.installation_uid;\n /**\n * This object holds details of the current user.\n * @type {Object}\n */\n this.currentUser = initializationData.data.user;\n\n /**\n * location of extension, \"RTE\" | \"FIELD\" | \"DASHBOARD\" | \"WIDGET\" | \"APP_CONFIG_WIDGET\" | \"FULL_SCREEN_WIDGET\".\n * @type {string}\n */\n this.type = initializationData.data.type;\n\n /**\n * Store to persist data for extension.\n * Note: Data is stored in the browser {@link external:localStorage} and will be lost if the {@link external:localStorage} is cleared in the browser.\n * @type {Store}\n */\n this.store = new Store(postRobot);\n\n /**\n * This method returns stack object which allows users to read and manipulate a range of objects in a stack.\n * @type {Stack}\n */\n this.stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n this.metadata = new Metadata(postRobot);\n\n this.config = initializationData.data.config ?? {};\n\n this.location = {\n DashboardWidget: null,\n CustomField: null,\n SidebarWidget: null,\n RTEPlugin: null,\n RTELocation: null,\n AppConfigWidget: null,\n FullscreenAppWidget: null,\n AssetSidebarWidget: null,\n FullPage: null,\n EntryFieldLocation: null,\n FieldModifierLocation: null,\n };\n\n window[\"postRobot\"] = postRobot;\n\n this.modal = new Modal();\n\n this.region = formatAppRegion(initializationData.data.region);\n\n this.version = initializationData.data.manifest?.version || null;\n\n const stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n\n switch (initializationData.data.type) {\n case \"DASHBOARD\": {\n this.location.DashboardWidget = {\n frame: new Window(\n postRobot,\n this.type as \"DASHBOARD\",\n emitter,\n initializationData.data.dashboard_width\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n case \"WIDGET\": {\n this.location.SidebarWidget = {\n entry: new Entry(\n initializationData as ISidebarInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"APP_CONFIG_WIDGET\": {\n this.location.AppConfigWidget = {\n installation: new AppConfig(\n initializationData,\n postRobot,\n emitter,\n {\n currentBranch:\n initializationData.data.currentBranch,\n }\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"ASSET_SIDEBAR_WIDGET\": {\n this.location.AssetSidebarWidget = new AssetSidebarWidget(\n initializationData as IAssetSidebarInitData,\n postRobot,\n emitter\n );\n\n break;\n }\n\n case \"RTE\": {\n import(\"./RTE\").then(({ rtePluginInitializer }) => {\n this.location.RTEPlugin = rtePluginInitializer;\n this.location.RTELocation = {\n entry: new Entry(\n initializationData as IRTELocationInitData,\n postRobot,\n emitter\n ),\n };\n });\n break;\n }\n\n case \"FIELD_MODIFIER_LOCATION\":\n case \"ENTRY_FIELD_LOCATION\": {\n initializationData.data.self = true;\n this.location.FieldModifierLocation = {\n entry: new FieldModifierLocationEntry(\n initializationData as IFieldModifierLocationInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n field: new FieldModifierLocationField(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n frame: new FieldModifierLocationFrame(postRobot, emitter),\n };\n break;\n }\n\n case \"FULL_PAGE_LOCATION\": {\n this.location.FullPage = {\n stack: stack,\n };\n break;\n }\n\n case \"FIELD\":\n default: {\n initializationData.data.self = true;\n this.location.CustomField = {\n field: new Field(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n fieldConfig: initializationData.data.field_config,\n entry: new Entry(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n frame: new Window(postRobot, this.type as \"FIELD\", emitter),\n };\n\n break;\n }\n }\n\n try {\n //@ts-ignore\n postRobot.on(\"extensionEvent\", (event) => {\n if (event.data.name === \"entrySave\") {\n emitter.emitEvent(\"entrySave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.eventName === \"entryChange\") {\n emitter.emitEvent(\"entryChange\", [\n {\n data: event.data.data,\n resolvedData: event.data.otherData.resolvedData,\n },\n ]);\n }\n\n if (event.data.name === \"entryPublish\") {\n emitter.emitEvent(\"entryPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryUnPublish\") {\n emitter.emitEvent(\"entryUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetSave\") {\n emitter.emitEvent(\"assetSave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetChange\") {\n emitter.emitEvent(\"assetChange\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetPublish\") {\n emitter.emitEvent(\"assetPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetUnPublish\") {\n emitter.emitEvent(\"assetUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"dashboardResize\") {\n emitter.emitEvent(\"dashboardResize\", [\n { state: event.data.state },\n ]);\n }\n\n if (event.data.name === \"extensionFieldChange\") {\n emitter.emitEvent(\"extensionFieldChange\", [\n { data: event.data.data },\n ]);\n }\n });\n } catch (err) {\n console.error(\"extension Event\", err);\n }\n }\n\n pulse = (eventName: string, metadata: { [key: string]: any }) => {\n this.postRobot.sendToParent(\"analytics\", { eventName, metadata });\n };\n\n getConfig = (): Promise<{ [key: string]: any }> => {\n if (!this.installationUID) {\n return Promise.resolve(this.config);\n }\n return this.postRobot\n .sendToParent(\"getConfig\")\n .then(onData)\n .catch(onError);\n };\n\n getCurrentLocation = () => {\n return this.type;\n };\n\n /**\n * Conditionally retrieves and returns the app version if not present already\n * @returns version of the app currently running.\n */\n getAppVersion = async (): Promise => {\n if (this.version) {\n return Promise.resolve(this.version);\n }\n if (!this.installationUID) {\n return Promise.resolve(null);\n }\n const orgUid = this.stack._data.org_uid;\n const options = {\n uid: this.installationUID,\n action: \"getAppManifest\",\n headers: { organization_uid: orgUid },\n skip_api_key: true,\n };\n const app: Manifest = await this.postRobot\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n this.version = app.version;\n return this.version;\n };\n\n getCurrentRegion = () => {\n return this.region;\n };\n\n static initialize(version: string) {\n const meta = {\n sdkType: \"app-sdk\",\n };\n //@ts-ignore\n return postRobot.sendToParent(\"init\", { version, meta });\n }\n\n setReady() {\n return this.postRobot.sendToParent(\"ready\");\n }\n}\n\nexport default Extension;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"./types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(field: Field, value: { [key: string]: any }) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass Field {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n\n setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false } = {}) {\n return resolved ? this._resolvedData : this._data;\n }\n\n /**\n * Sets the focus for a field when an extension is being used. This method shows user presence and highlights the extension field that the user is currently accessing in Contentstack UI.\n * @return {Object} A promise object which is resolved when Contentstack UI returns an acknowledgement of the focused state.\n */\n setFocus() {\n return this._connection.sendToParent(\"focus\");\n }\n\n /**\n * This function is called when another extension programmatically changes data of this field using field.setData() function, only available for extension field, only support extensions of data type text, number, boolean or date.\n * @param {function} callback The function to be called when an entry is published.\n */\n onChange?(callback: (data: any) => any) {\n const fieldObj = this;\n if (callback && typeof callback === \"function\") {\n fieldObj._emitter.on(\"extensionFieldChange\", (event: any) => {\n this._data = event.data;\n this._resolvedData = event.data;\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\n\nexport default Field;\n","import Entry from \"../entry\";\nimport { IFieldModifierLocationInitData } from \"../types\";\nimport { IGetTagsOptions } from \"../types/entry.types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport Field from \"./field\";\n\nclass FieldModifierLocationEntry extends Entry {\n constructor(\n initializationData: IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n super(initializationData, connection, emitter, {\n _internalFlags: {\n FieldInstance: Field as any,\n },\n });\n }\n\n /**\n * Returns the value of the tags associated with the entry.\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n getTags(options?: IGetTagsOptions): Array {\n const { useUnsavedSchema = false } = options || {};\n\n if (useUnsavedSchema) {\n return this._changedData?.tags || this._data.tags;\n } else {\n return this._data.tags;\n }\n }\n\n /**\n * Sets the tags on the entry.\n * @param tags tags to be set on the entry\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n async setTags(tags: Array): Promise> {\n /**\n * Validate if the tags are array of strings\n * @param {Array} tags\n * @returns {boolean} Returns true if the tags are array of strings\n */\n function areTagsValid(tags: Array): tags is Array {\n return (\n Array.isArray(tags) &&\n tags.every((tag) => typeof tag === \"string\")\n );\n }\n\n if (tags === undefined) {\n throw new Error(generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldNotBeBlank));\n }\n\n if (!areTagsValid(tags)) {\n throw new Error(\n generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldBeArrayOfStrings)\n );\n }\n\n await this._connection.sendToParent(\"setTags\", { tags });\n\n if (!this._changedData) {\n this._changedData = {};\n }\n\n this._changedData.tags = tags;\n\n return tags;\n }\n}\n\nexport default FieldModifierLocationEntry;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"../types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(\n field: FieldModifierLocationField,\n value: { [key: string]: any }\n) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass FieldModifierLocationField {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n async setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false }: { resolved?: boolean } = {}): any {\n return resolved ? this._resolvedData : this._data;\n }\n}\n\nexport default FieldModifierLocationField;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\nimport { ERROR_MESSAGES } from \"../utils/errorMessages\";\n\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass FieldModifierLocationFrame {\n /**\n * @hideconstructor\n */\n\n _connection: any;\n _autoResizingEnabled = false;\n _emitter: EventEmitter;\n _height?: number;\n _width?: number;\n\n private observer: MutationObserver | undefined;\n\n constructor(connection: any, emitter: EventEmitter) {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._emitter = emitter;\n\n this.updateDimension = this.updateDimension.bind(this);\n this.enableAutoResizing = this.enableAutoResizing.bind(this);\n this.disableAutoResizing = this.disableAutoResizing.bind(this);\n this.closeModal = this.closeModal.bind(this);\n\n /**\n * The auto resizing should be enabled by default.\n */\n this.enableAutoResizing();\n }\n\n /**\n * This method updates the extension height and width on Contentstack UI.\n * If the value is not passed, it will update the height and width of the\n * extension with the current height and width of the extension.\n * @param {string|number} height Desired height of the iframe window\n */\n async updateDimension(dimension?: { height?: number; width?: number }) {\n const { height, width } = dimension || {};\n\n if (height === undefined && width === undefined) {\n this._height = Math.ceil(\n document.documentElement.getBoundingClientRect().height\n );\n\n this._width = Math.ceil(\n document.documentElement.getBoundingClientRect().width\n );\n\n await this._connection.sendToParent(\"resize\", {\n height: this._height,\n width: this._width,\n });\n return;\n }\n\n const dimensionBody = {};\n\n if (height !== undefined && typeof height !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionHeightShouldBeNumber\n );\n }\n\n if (this._height !== height) {\n this._height = height;\n dimensionBody[\"height\"] = this._height;\n }\n\n if (width !== undefined && typeof width !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionWidthShouldBeNumber\n );\n }\n\n if (this._width !== width) {\n this._width = width;\n dimensionBody[\"width\"] = this._width;\n }\n\n if (Object.keys(dimensionBody).length !== 0) {\n await this._connection.sendToParent(\"resize\", dimensionBody);\n }\n }\n\n /**\n * Prevent user from accidently closing the app by clicking outside the frame\n * if the app is performing some active task.\n */\n async preventFrameClose(state: boolean) {\n await this._connection.sendToParent(\"preventFrameClose\", {\n state,\n });\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n enableAutoResizing(): FieldModifierLocationFrame {\n if (this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = true;\n\n this.observer = new MutationObserver(\n async () => await this.updateDimension()\n );\n\n const mutationObserverConfig = {\n attributes: true,\n childList: true,\n subtree: true,\n };\n\n this.observer.observe(window.document.body, mutationObserverConfig);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n disableAutoResizing(): FieldModifierLocationFrame {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n this.observer?.disconnect();\n return this;\n }\n\n /**\n * It closes the app modal.\n * @returns {Promise}\n */\n async closeModal(): Promise {\n return await this._connection.sendToParent(\"closeModal\");\n }\n}\n\nexport default FieldModifierLocationFrame;\n","import Extension from './extension';\nimport postRobot from 'post-robot';\nimport { version } from '../package.json';\nimport { IDashboardInitData, IFieldInitData, ISidebarInitData } from './types.js';\n\n//@ts-ignore\npostRobot.CONFIG.LOG_LEVEL = 'error';\n\n/** Class to initialize the plugin on Contentstack UI. */\n/**\n * @hideconstructor\n */\n\nclass ContentstackAppSDK {\n /**\n * You need to first include Contentstack UI Extensions SDK and\n * Contentstack UI Stylesheet in you HTML file and then call\n * ContentstackUIExtension.init in the script tag.\n * @example\n * HTML\n * \n * \n * @example Custom Filed\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var value = extension.field.getData()\n * extension.field.setData(\"New Field Data\")\n * })\n * @example Custom Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var entry = extension.entry.getData()\n * })\n * @example Dashboard Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var stack = extension.stack;\n * var stackData = stack.getData();\n * })\n * @return {external:Promise} A promise object which will be resolved with an instance of the {@link Extension} class which is instantiated using the data received from the Contentstack UI.\n */\n\n static _extension: Extension\n\n static init(): Promise {\n if (this._extension) { return Promise.resolve(this._extension); }\n return Extension.initialize(version).then((initializationData: ISidebarInitData | IDashboardInitData | IFieldInitData) => {\n this._extension = new Extension(initializationData);\n return Promise.resolve(this._extension);\n }).catch((e: Error) => Promise.reject(e));\n }\n\n\n /**\n * Version of Contentstack UI extension.\n * @type {string}\n */\n static get SDK_VERSION() {\n return version;\n }\n}\n\nexport default ContentstackAppSDK;\nmodule.exports = ContentstackAppSDK\n","import { AnyObject } from \"./types/common.types\";\n\nexport declare interface IMetadata {\n uid: string;\n type: \"asset\" | \"entry\";\n _content_type_uid?: string;\n locale?: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataCreateDto\n extends Omit, \"uid\"> {\n entity_uid: string;\n}\n\nexport declare interface IMetadataUpdateDto {\n uid: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataRetrieveDto {\n uid: string;\n}\n\nexport declare interface IMetadataDeleteDto {\n uid: string;\n}\n\nconst metadataTypes = {\n creteMetadata: \"createMetadata\",\n retrieveMetadata: \"getMetadata\",\n retrieveAllMetadata: \"getAllMetadata\",\n updateMetadata: \"updateMetadata\",\n deleteMetadata: \"deleteMetadata\",\n} as const;\n\nclass Metadata {\n constructor(private _connection: any) {}\n\n createMetaData(metadataConfig: IMetadataCreateDto) {\n const { entity_uid, type = \"asset\", ...otherMetaData } = metadataConfig;\n\n const data = {\n action: metadataTypes.creteMetadata,\n payload: {\n metadata: {\n entity_uid,\n type,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveMetaData(metadataConfig: IMetadataRetrieveDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.retrieveMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveAllMetaData(params: AnyObject = {}) {\n const data = {\n action: metadataTypes.retrieveAllMetadata,\n params,\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n updateMetaData(metadataConfig: IMetadataUpdateDto) {\n const { uid, ...otherMetaData } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.updateMetadata,\n payload: {\n metadata: {\n uid,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n deleteMetaData(metadataConfig: IMetadataDeleteDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.deleteMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n}\nexport default Metadata;\n","import { getPreferredBodyElement } from \"./utils/utils\";\n\nclass Modal {\n constructor() {\n if (!Object.prototype.hasOwnProperty.call(window, \"iframeRef\")) {\n const rootElement = getPreferredBodyElement(\n document?.body?.children\n );\n window[\"iframeRef\"] = rootElement;\n }\n }\n\n setBackgroundElement(element: HTMLElement) {\n window[\"iframeRef\"] = element;\n }\n}\n\nexport default Modal;\n","\nimport Base from '../base';\nimport { getReferences, language, environment } from '../../utils';\nimport postRobot from 'post-robot';\nimport { IAnyObject } from '../../../RTE/types';\n\nlet connection: any = {};\n\n/**\n * @summary Creates an instance of `Asset`.\n * @description An initializer is responsible for creating an Asset object.\n * @param {String} uid - uid of the asset\n * @example\n * let Asset = extension.stack.Asset('bltsomething123');\n * @returns {Asset}\n * @ignore\n */\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nclass Asset extends Base {\n getReferences: any\n environment: any\n constructor(uid) {\n super(uid);\n this.getReferences = getReferences;\n this.environment = environment;\n return this;\n }\n\n /**\n * @function\n * @name Stack#Asset.Query\n * @description This static method instantiates the query module for assets. To see the list of methods that can be used for querying assets, refer the {@link Query} module.\n * @example\n * let assetQuery = extension.stack.Asset.Query();\n * assetQuery.where(\"title\": \"main.js\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment\n });\n return entryQuery;\n }\n\n static module(plural = false) {\n return plural ? 'Assets' : 'Asset';\n }\n\n static get connection() {\n return connection;\n }\n\n /**\n * @function\n * @name Stack#Asset.getRteAssets\n * @description This static method retrieves comprehensive information on all assets uploaded through the Rich Text Editor field.\n * @return {external:Promise}\n */\n\n static getRteAssets() {\n return this.connection.sendToParent('stackQuery', { action: 'getRteAssets' }).then(onData).catch(onError);\n }\n\n /**\n * @function\n * @name Stack#Asset.getAssetsOfSpecificTypes\n * @description This static method retrieves assets that are either image or video files, based on the request query.\n * @param {String} assetType Type of asset to be received for e.g., ‘image/png’\n * @return {external:Promise}\n */\n static getAssetsOfSpecificTypes(assetType) {\n if (!assetType || typeof assetType !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.connection.sendToParent('stackQuery', { action: 'getAssetsOfSpecificTypes', asset_type: assetType }).then(onData).catch(onError);\n }\n\n\n /**\n * @name Stack#Asset#only\n * @function\n * @description This method is used to show the selected fields of the assets in the result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('title').fetch();\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @name Stack#Asset#except\n * @function\n * @description This method is used to hide the selected fields of the assets in result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('title').fetch();\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('BASE','title').fetch();\n * @example\n * .Except with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @function\n * @name Stack#Asset#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.Asset('bltsomething123').environment('development').fetch()\n * @returns {Stack#Asset}\n */\n\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addParam\n @function\n @example extension.stack.Asset('uid').addParam('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addQuery\n @function\n @example extension.stack.Asset('uid').addQuery('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n\n /**\n This method will fetch the details of the entries and the assets in which the specified asset is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-asset|\n Asset References}\n @name Stack#Asset#getReferences\n @function\n @example extension.stack.Asset('uid').getReferences().then().catch();\n @return {external:Promise}\n */\n\n /**\n This method deletes an existing asset.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-asset|\n Delete Asset}\n @name Stack#Asset#delete\n @function\n @example extension.stack.Asset('uid').delete().then().catch();\n @return {external:Promise}\n */\n\n\n /**\n * @name Stack#Asset#publish\n * @function\n * @description This method allows you to publish the asset either immediately or schedule the publish for a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .publish(\n {\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n publish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('publishAsset', payload);\n }\n\n /**\n * @function\n * @name Stack#Asset#unpublish\n * @description This method will instantly unpublish the asset, and also give you the provision to automatically unpublish the asset at a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .unpublish({\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n unpublish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('unpublishAsset', payload);\n }\n\n static async handleUpload(_files, type, options?: {parentFolderUid?: string, customUploadHandler?: IAnyObject}) {\n if (!_files || !_files.length) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n const files: File[] = [];\n Array.from(_files).forEach(_ => {\n // @ts-ignore\n const file = new File([_], _.name, { type: _.type });\n files.push(file);\n })\n const uid = new Date().getUTCMilliseconds();\n return (async function() {\n try {\n const uploadReadyListener = postRobot.on(\n `uploadReady_${uid}`,\n function () {\n window.parent.postMessage(\n {\n type: `upload_${uid}`,\n upload_type: type,\n files,\n parentFolderUid: options?.parentFolderUid,\n customUploadHandler: options?.customUploadHandler\n },\n \"*\"\n );\n\n uploadReadyListener.cancel();\n return Promise.resolve({});\n }\n );\n //@ts-ignore\n await postRobot.sendToParent(\"stackOptionsQuery\", {\n action: `upload_${uid}`,\n uid,\n });\n //@ts-ignore\n return postRobot.sendToParent(`upload_${uid}`, {});\n } catch(err) {\n return Promise.reject(err);\n }\n })();\n }\n\n static uploadAsset(files, options?: {parentFolderUid?: string}) {\n return Asset.handleUpload(files, 'upload', options);\n }\n}\n\nexport default (uiConnection) => {\n connection = uiConnection;\n return new Proxy(Asset, {\n apply(Target, thisArg, argumentsList) {\n //@ts-ignore\n return new Target(...argumentsList);\n }\n });\n};\n","//@ts-nocheck\n\nimport Query from './query';\nimport { transform, addParam } from '../utils';\n\n\nfunction onData(data: { data: any; }) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error: any) {\n return Promise.reject(error);\n}\n/**\n * This is Base class, it holds all the methods required for Modle instance,\n * eg ContentType('uid').delete() or Asset('uid').update({...})\n * @ignore\n */\nexport default class Base {\n\n\n uid: string\n _query: { [key: string]: any }\n only: any\n except: any\n addParam: any\n\n static connection: any\n static contentTypeUid: string\n\n constructor(uid: string) {\n if (!uid) { throw new Error('uid is required'); }\n this.uid = uid;\n this._query = {};\n this.only = transform('only');\n this.except = transform('except');\n this.addParam = addParam;\n }\n\n static Query() {\n //@ts-ignore\n return new Query(this.connection, this.module(true), this.contentTypeUid);\n }\n\n\n static create(payload: { [key: string]: any }) {\n const options = { payload, content_type_uid: this.contentTypeUid, action: `create${this.module()}` };\n return this.connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n update(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch(`update${this.constructor.module()}`, payload);\n }\n\n delete() {\n return this.fetch(`delete${this.constructor.module()}`);\n }\n\n fetch(action: string, payload?: { [key: string]: any }) {\n const options = {\n payload,\n content_type_uid: this.constructor.contentTypeUid,\n uid: this.uid,\n params: this._query,\n action: action || `get${this.constructor.module()}`\n };\n\n if (!payload) { delete options.payload; }\n if (!this.constructor.contentTypeUid) { delete options.content_type_uid; }\n return this.constructor.connection.sendToParent('stackQuery', options)\n .then(onData).catch(onError);\n }\n}\n","import Base from '../base';\nimport { getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference } from '../../utils';\n\nlet connection = {};\nlet contentTypeUid = '';\n\n\nclass Entry extends Base {\n constructor(uid: string) {\n super(uid);\n this._query = {};\n return this;\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry.Query\n * @description This static method instantiates the query module for entries. To see the list of methods that can be used for querying entries, refer the {@link Query} module.\n * @example\n * let entryQuery = extension.stack.ContentType('content_type_uid').Entry.Query();\n * entryQuery.where(\"field_uid\": \"10\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryQuery;\n }\n\n static get connection() {\n return connection;\n }\n\n static get contentTypeUid() {\n return contentTypeUid;\n }\n\n static module(plural = false) {\n return plural ? 'Entries' : 'Entry';\n }\n /**\n This method creates a new entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#create-a-an-entry|\n Create Entry}\n @name Stack#ContentType#Entry.create\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.create({\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n @param {Object} payload Data to create an entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @name Stack#ContentType#Entry#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('title').fetch();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @name Stack#ContentType#Entry#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('title').fetch();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('BASE','title').fetch();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * This method includes a query parameter in your query.\n * @name Stack#ContentType#Entry#addParam\n * @function\n * @example extension.stack.ContentType('content_type_uid').Entry('uid').addParam('include_count', 'true').fetch().then().catch();\n * @param {string} key - Key of the parameter\n * @param {string} value - Value of the parameter\n * @return {Stack#ContentType#Entry} Returns\n */\n\n\n /**\n This method will fetch all the entries in which the current entry is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-an-entry|\n Entry References}\n @name Stack#ContentType#Entry#getReferences\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').getReferences().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n @example extension.stack.ContentType('content_type_uid').Entry('uid').update({\"entry\" : {...}}).then().catch();\n @param {Object} payload Data to be update exsisting entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method deletes an existing entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-entry|\n Delete Entry}\n @name Stack#ContentType#Entry#delete\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').delete().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method fetches information of a specific entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-an-entry|\n Get A Single Entry}\n @name Stack#ContentType#Entry#fetch\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').fetch().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeReference\n * @description This method is used to include referenced entries from other content types.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference(['category', 'author']).fetch()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference('category', 'author').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#language\n * @description This method is used to set the language code of which you want to retrieve the data.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').language('en-us').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').environment('development').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#addQuery\n * @description This method is used to add a query to an entry object.\n * @param {String} key - Key of the query\n * @param {String} value - Value of the query\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').addQuery('include_schema',true).fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeSchema().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies).\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeContentType().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeOwner().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#getLanguages\n * @description This method returns the details of all the languages that an entry is localized in.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').getLanguages()\n * @return {external:Promise}\n */\n getLanguages() {\n return this.fetch('getEntryLanguages');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unlocalize\n * @description This method is used to unlocalize an entry\n * @param {string} locale Locale in which the entry has to be unlocalized\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unlocalize('fr-fr').then(...).catch(...);\n * @return {external:Promise}\n */\n unlocalize(locale: string) {\n if (!locale || typeof locale !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('unlocalizeEntry');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#publish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').publish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n publish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('publishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unpublish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unpublish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n unpublish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('unpublishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#setWorkflowStage\n * @description This method allows you to either set a particular workflow stage or update the workflow stage details of an entry.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').setWorkflowStage({\n \"workflow\": {\n \"workflow_stage\": {\n \"comment\": \"Test Comment\",\n \"due_date\": \"Thu Dec 01 2018\",\n \"notify\": false,\n \"uid\": \"blt9f52a2cd5e0014fb\",\n \"assigned_to\": [{\n \"uid\": \"blt296a22e28cc0c63c\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@contentstack.com\"\n }],\n \"assigned_by_roles\": [{\n \"uid\": \"blt5b74c24c7ae25d94\",\n \"name\": \"Content Manager\"\n }]\n }\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n setWorkflowStage(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('setWorkflowStageEntry', payload);\n }\n\n /**\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#update-an-entry| Update Entry}\n * @name Stack#ContentType#Entry#update\n * @function\n * @description This call allows you to update entry content.\n * @param {object} payload - Payload for the request\n * @param {string} [locale] - Passing the ‘locale’ parameter will localize the entry in the specified locale\n * to be localized in the specified locale.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').update(\n {\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n //@ts-ignore\n update(payload: { [key: string]: any }, locale: string) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('updateEntry', payload);\n }\n}\n\nexport default (uiConnection: any, contentType: string) => {\n connection = uiConnection;\n contentTypeUid = contentType;\n return new Proxy(Entry, {\n apply(Target: any, thisArg, argumentsList: any[]) {\n const entryTarget = new Target(...argumentsList);\n Object.assign(entryTarget, {\n getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryTarget;\n }\n });\n};\n","import Entry from './entry';\nimport Base from '../base';\n\nlet connection = {};\n\n\nclass ContentType extends Base {\n\n Entry: typeof Entry\n\n constructor(uid: string) {\n super(uid);\n /**\n * @constructor\n * @hideconstructor\n * @name Stack#ContentType#Entry\n * @desc An entry is the actual piece of content created using one of the defined content types\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#entries| Entries}\n */\n\n // @ts-ignore\n this.Entry = Entry(this.constructor.connection, this.uid);\n return this;\n }\n\n // static module(plural = false) {\n // return plural ? 'ContentTypes' : 'ContentType';\n // }\n static get connection() {\n return connection;\n }\n}\nexport default (uiConnection: any) => {\n connection = uiConnection;\n return new Proxy(ContentType, {\n // target = Foo\n apply(Target: any, thisArg, argumentsList: any[]) {\n return new Target(...argumentsList);\n }\n });\n};\n","import * as Utils from '../utils';\n\n\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nconst _extend = {\n compare(type) {\n return function (key, value) {\n if (key && value && typeof key === 'string' && typeof value !== 'undefined') {\n this._query.query[key] = this._query.query.file_size || {};\n this._query.query[key][type] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n contained(bool) {\n const type = (bool) ? '$in' : '$nin';\n return function (key, value) {\n if (key && value && typeof key === 'string' && Array.isArray(value)) {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key][type] = this._query.query[key][type] || [];\n this._query.query[key][type] = this._query.query[key][type].concat(value);\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n exists(bool) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key].$exists = bool;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n logical(type) {\n return function () {\n const _query: any[] = [];\n for (let i = 0, _i = arguments.length; i < _i; i += 1) {\n if (arguments[i] instanceof Query && arguments[i]._query.query) {\n _query.push(arguments[i]._query.query);\n } else if (typeof arguments[i] === 'object') {\n _query.push(arguments[i]);\n }\n }\n if (this._query.query[type]) {\n this._query.query[type] = this._query.query[type].concat(_query);\n } else {\n this._query.query[type] = _query;\n }\n return this;\n };\n },\n sort(type) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query[type] = key;\n return this;\n }\n throw Error('Argument should be a string.');\n };\n },\n pagination(type) {\n return function (value) {\n if (typeof value === 'number') {\n this._query[type] = value;\n return this;\n }\n throw Error('Argument should be a number.');\n };\n }\n};\n\n/**\n * Creates an instance of the query\n * @hideconstructor\n */\nclass Query {\n module: any\n _connection: any\n _query: {[key: string]: any}\n contentTypeUid: string\n only: any\n except: any\n addQuery: any\n lessThan: any\n lessThanOrEqualTo: any\n greaterThan: any\n greaterThanOrEqualTo: any\n notEqualTo: any\n containedIn: any\n notContainedIn: any\n exists: any\n notExists: any\n ascending: ReturnType\n descending: ReturnType\n beforeUid: ReturnType\n afterUid: ReturnType\n skip: ReturnType\n limit: ReturnType\n or: ReturnType\n and: ReturnType\n addParam: ReturnType\n singleEntry: any\n\n constructor(connection, module, contentTypeUid) {\n this.module = module;\n this._connection = connection;\n this._query = {};\n this._query.query = this._query.query || {};\n this.contentTypeUid = contentTypeUid;\n\n /**\n * @name Query#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('title').find();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('BASE','title').find();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().only(['title','description']).find();\n * @returns {Query}\n */\n\n this.only = Utils.transform('only');\n\n /**\n * @name Query#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('title').find();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('BASE','title').find();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().except(['title','description']).find();\n * @returns {Query}\n */\n\n this.except = Utils.transform('except');\n /**\n This method includes a query parameter in your query.\n @name Query#addQuery\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addQuery('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addQuery = Utils.addQuery;\n\n /**\n * @name Query#lessThan\n * @description This method provides only the entries with values less than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThan('created_at','2015-06-22')\n * @returns {Query}\n */\n this.lessThan = _extend.compare('$lt');\n\n /**\n * @name Query#lessThanOrEqualTo\n * @description This method provides only the entries with values less than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThanOrEqualTo('created_at','2015-03-12')\n * @returns {Query}\n */\n this.lessThanOrEqualTo = _extend.compare('$lte');\n /**\n * @function\n * @name Query#greaterThan\n * @description This method provides only the entrieswith values\n * greater than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThan('created_at','2015-03-12')\n * @returns {Query}\n */\n this.greaterThan = _extend.compare('$gt');\n\n /**\n * @function\n * @name Query#greaterThanOrEqualTo\n * @description This method provides only the entries with values greater than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThanOrEqualTo('created_at', '2015-06-22')\n * @returns {Query}\n */\n this.greaterThanOrEqualTo = _extend.compare('$gte');\n\n /**\n * @function\n * @name Query#notEqualTo\n * @description This method provides only the entries with values not equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').notEqualTo('title','Demo')\n * @returns {Query}\n */\n this.notEqualTo = _extend.compare('$ne');\n\n /**\n * @function\n * @name Query#containedIn\n * @description This method provides only the entries with values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {*} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').containedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.containedIn = _extend.contained(true);\n\n /**\n * @function\n * @name Query#notContainedIn\n * @description This method provides only the entries that do not contain values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {Array} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').notContainedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.notContainedIn = _extend.contained(false);\n\n /**\n * @function\n * @name Query#exists\n * @description This method provides only the entries that contains the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').exists('featured')\n * @returns {Query}\n */\n this.exists = _extend.exists(true);\n\n /**\n * @function\n * @name Query#notExists\n * @description This method provides only the entries that do not contain the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').notExists('featured')\n * @returns {Query}\n */\n this.notExists = _extend.exists(false);\n\n /**\n * @function\n * @name Query#ascending\n * @description This parameter sorts the entries in ascending order on the basis of the value of the specified field.\n * @param {String} key - Field UID to be used for sorting.\n * @example extension.stack.ContentType('blog').ascending('created_at')\n * @returns {Query}\n */\n this.ascending = _extend.sort('asc');\n\n /**\n * @function\n * @name Query#descending\n * @description This method sorts the entries in descending order on the basis of the specified field.\n * @param {String} key - Field UID to be used for sorting\n * @example extension.stack.ContentType('blog').descending('created_at')\n * @returns {Query}\n */\n this.descending = _extend.sort('desc');\n\n /**\n * @function\n * @name Query#beforeUid\n * @description This method provides only the entries that are placed before the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').beforeUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.beforeUid = _extend.sort('before_uid');\n\n /**\n * @function\n * @name Query#afterUid\n * @description This method provides only the entries that are placed after the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').afterUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.afterUid = _extend.sort('after_uid');\n\n /**\n * @function\n * @name Query#skip\n * @description This method skips the specified number of entries.\n * @param {Number} skip - Number of entries to be skipped\n * @example extension.stack.ContentType('blog').skip(5)\n * @returns {Query}\n */\n this.skip = _extend.pagination('skip');\n\n /**\n * @function\n * @name Query#limit\n * @description This method limits the response by providing only the specified number of entries.\n * @param {Number} limit - Maximum number of entries to be returned in the result.\n * @example extension.stack.ContentType('blog').limit(10)\n * @returns {Query}\n */\n this.limit = _extend.pagination('limit');\n\n /**\n * @function\n * @name Query#or\n * @description This method performs the OR operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries\n * to be taken into consideration\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo')\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10)\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery()\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery()\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @returns {Query}\n */\n this.or = _extend.logical('$or');\n\n /**\n * @function\n * @name Query#and\n * @description This method performs the AND operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries to be taken into consideration\n * @example\n * AND with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo');\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10);\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @example\n * .and with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery();\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery();\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @returns {Query}\n */\n this.and = _extend.logical('$and');\n /**\n This method includes a query parameter in your query.\n @name Query#addParam\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addParam('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addParam = Utils.addParam;\n }\n\n // -------------------------------------Entry Queries--------------------------------------------------\n /**\n * @function\n * @name Query#includeReference\n * @description This method is used to include referenced entries from other content types. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference(['category', 'author']).find()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference('category', 'author').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeSchema().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#language\n * @description This method is used to set the language code of which you want to retrieve the data. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().language('en-us').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies). Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeContentType().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeOwner().find()\n * @returns {Query}\n */\n // -----------------------------------------Entry Queries End------------------------------------------------------\n\n /**\n * @function\n * @name Query#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().environment('development').find()\n * @returns {Query}\n */\n\n /**\n * @description This method provides only the entries containing field values matching the specified condition.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').where('title','Demo')\n * @returns {Query}\n */\n equalTo(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n where(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides only the number of entries matching the specified filters.\n * @example extension.stack.ContentType('blog').count()\n * @returns {Query}\n */\n count() {\n this._query.count = true;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method is used to set raw queries on the Query instance.\n * @param {object} query - Raw{json} queries to filter the entries in the result set.\n * @returns {Query}\n */\n query(query) {\n if (typeof query === 'object') {\n this._query.query = Utils.mergeDeep(this._query.query, query);\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description The ’tags’ parameter allows you to specify an array of tags to search for objects.\n * @param {Array} values - Tags\n * @example extension.stack.ContentType('blog').tags(['technology', 'business'])\n * @returns {Query}\n */\n tags(values) {\n if (Array.isArray(values)) {\n this._query.tags = values;\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description This method also includes the total number of entries returned in the response.\n * @example extension.stack.ContentType('blog').includeCount()\n * @returns {Query}\n */\n includeCount() {\n this._query.include_count = true;\n return this;\n }\n\n /**\n * @summary returns Returns the raw query which can be used for further calls (.and/.or).\n * @description This method provides raw{json} queries based on the filters applied on the Query object.\n * @example extension.stack.ContentType('blog').where('title','Demo').getQuery()\n * @returns {Query}\n */\n getQuery() {\n return this._query.query;\n }\n\n /**\n * @description This method provides only the entries matching the regular expression for the specified field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @param {String} [options] - Match or compare a value in the entry\n * @example\n * .regex without options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo')\n * @example\n * .regex with options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo', 'i')\n * @returns {Query}\n */\n regex(key, value, options) {\n if (key && value && typeof key === 'string' && typeof value === 'string') {\n this._query.query[key] = {\n $regex: value\n };\n if (options) this._query.query[key].$options = options;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method is used to search data in entries.\n * @param {string} value - Value to search in the entries.\n * @example extension.stack.ContentType('blog').search('Welcome to demo')\n * @returns {Query}\n */\n search(value) {\n if (value && typeof value === 'string') {\n this._query.typeahead = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides all the entries which satisfy the specified query.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').find()\n */\n find() {\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method provides a single entry from the result set.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').findOne()\n */\n findOne() {\n this.singleEntry = true;\n this._query.limit = 1;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n}\n\nexport default Query;\n","import Asset from './api/asset/index';\nimport ContentType from './api/content-type/index';\nimport { onData, onError } from \"../utils/utils\";\nimport { BranchDetail, GetAllStacksOptions, StackAdditionalData, StackDetail, StackSearchQuery } from '../types/stack.types';\nimport { IManagementTokenDetails } from '../types';\n\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nclass Stack {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _data: StackDetail\n ContentType: any // TODO: change it\n Asset: any // TODO: change it\n private _currentBranch: BranchDetail | null = null;\n\n\n constructor(data: StackDetail = {} as StackDetail, connection: any, additionalData: StackAdditionalData) {\n this._connection = connection;\n this._data = data;\n /**\n * @constructor\n * @hideconstructor\n * @desc Content type defines the structure or schema of a page or a section of your web or mobile property\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#content-types| ContentType}\n * @param {string} uid - Uid of contenttype.\n * @example extension.stack.ContentType('content_type_uid')\n * */\n this.ContentType = ContentType(connection);\n /**\n * @constructor\n * @hideconstructor\n * @desc An initializer is responsible for creating an Asset object.\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#assets| Asset}\n * @param {string} uid - UID of the asset.\n * @example extension.stack.Asset('asset_uid')\n * */\n this.Asset = Asset(connection);\n\n const currentBranch = additionalData.currentBranch || \"\"\n\n if (currentBranch) {\n this._currentBranch =\n (data.branches || []).find(\n (branch) => branch.uid === additionalData.currentBranch\n ) || null;\n }\n\n }\n\n\n /**\n * This method returns the data of the current stack.\n * @return Returns stack data.\n */\n\n getData(): StackDetail {\n return this._data;\n }\n\n\n /**\n * This method returns all the stacks in the current organization.\n * @param query asks for organization UID and query params to get all stacks\n * @returns Stacks within current organization\n */\n async getAllStacks({orgUid = \"\", params = {}}: GetAllStacksOptions = {}): Promise {\n \n // validation\n if (typeof orgUid !== 'string') {\n throw new TypeError('orgUid must be a string');\n }\n\n const options = {\n action: \"getStacks\",\n headers: { organization_uid: orgUid || this._data.org_uid },\n skip_api_key: true,\n params\n };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .then((data) => data.stacks || [])\n .catch(onError);\n\n }\n\n /**\n * Get the details of all the management tokens of the stack.\n * Note: This API does not return the token value.\n * @see {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-management-tokens | Get all management tokens}\n * @returns Details of all the management token of the stack\n */\n async getManagementTokens(): Promise {\n const options = { action: \"getManagementTokens\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(async (response) => {\n const data = await onData<{tokens: IManagementTokenDetails[]}>(response);\n return data.tokens || [];\n })\n .catch(onError);\n }\n\n /**\n * Gets the results of the search based on user query\n * @param queries Array of key value pair of query parameters\n * @param apiKey API key of the stack\n * @returns Result of the query\n */\n search(queries: StackSearchQuery, apiKey: string | null = this._data.api_key) {\n const options = { params: queries, api_key: apiKey, action: \"search\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n }\n\n\n /**\n * This API allows you to retrieve data of a content type of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-content-type| Content Type API} requests. This method returns a Promise object.\n * @param {string} uid Uid of the desired content type\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with content type details.\n */\n getContentType(uid: string, params = {}): Promise<{ [key: string]: any }> {\n if (!uid) {\n return Promise.reject(new Error('uid is required'));\n }\n const options = { uid, params, action: 'getContentType' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve data of a content types of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Content Types API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with details of the content type.\n */\n getContentTypes(query = {}, params: { [key: string]: any } = {}): Promise<{ [key: string]: any }> {\n const optionParams = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getContentTypes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve environment details of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-environment| Environment API} requests. This method returns a Promise object.\n * @param {string} name Name of the desired environment\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with environment details.\n */\n getEnvironment(name: string, params = {}) {\n if (!name) {\n return Promise.reject(new Error('name is required'));\n }\n const options = { name, params, action: 'getEnvironment' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of environments of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-environments| Environments API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the environments.\n */\n getEnvironments(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getEnvironments' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of releases of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-releases| Releases API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the releases.\n */\n getReleases(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getReleases' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of publish queue of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-publish-queue| Publish Queue API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the publish queue.\n */\n getPublishes(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getPublishes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a locale of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-language| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getLocale(code: string, params = {}) {\n if (!code) {\n return Promise.reject(new Error('code is required'));\n }\n const options = { code, params, action: 'getLocale' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getLocales(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getLocales' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a workflow of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-workflow| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getWorkflow(uid: string, params = {}) {\n if (!uid) {\n return Promise.reject(new Error('workflow uid is required'));\n }\n const options = { uid, params, action: 'getWorkflow' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n \n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getWorkflows(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getWorkflows' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve all the branches in the current stack\n * @returns All branches of the current stack\n */\n getAllBranches(): BranchDetail[] {\n return this._data.branches || [];\n }\n\n /**\n * Returns the details of the current branch of the stack if available\n * @returns current branch of the current stack if available\n */\n getCurrentBranch(): BranchDetail | null {\n return this._currentBranch;\n }\n}\n\nexport default Stack;\n","export function transform(type) {\n return function () {\n switch (arguments.length) {\n case 1:\n if (\n Array.isArray(arguments[0]) ||\n typeof arguments[0] === \"string\"\n ) {\n let query = this._query[`${type}[BASE]`] || [];\n query = query.concat(arguments[0]);\n this._query[`${type}[BASE]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n case 2:\n if (\n typeof arguments[0] === \"string\" &&\n (Array.isArray(arguments[1]) ||\n typeof arguments[1] === \"string\")\n ) {\n let query = this._query[`${type}[${arguments[0]}]`] || [];\n query = query.concat(arguments[1]);\n this._query[`${type}[${arguments[0]}]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n default:\n throw Error(\"Kindly provide valid parameters\");\n }\n };\n}\n\n// merge two objects\nexport function merge(\n target: { [key: string]: any },\n source: { [key: string]: any }\n) {\n const newTraget = target;\n if (target && source) {\n Object.keys(source).forEach((key) => {\n newTraget[key] = source[key];\n });\n }\n return newTraget;\n}\n\n// merge two objects\nexport function mergeDeep(\n oldTarget: { [key: string]: any },\n oldSource: { [key: string]: any }\n) {\n const newTarget = oldTarget;\n const self = this;\n const _mergeRecursive = (anotherTarget, source) => {\n const target = anotherTarget;\n Object.keys(source).forEach((key) => {\n if (\n self._type(source[key]) === \"object\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n _mergeRecursive(target[key], source[key]);\n } else if (\n self._type(source[key]) === \"array\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n target[key] = target[key].concat(source[key]);\n } else {\n target[key] = source[key];\n }\n });\n };\n _mergeRecursive(newTarget, oldSource);\n return newTarget;\n}\n\nexport function _type(val) {\n let __typeof = typeof val;\n if (__typeof === \"object\" && Array.isArray(val)) {\n //@ts-ignore\n __typeof = \"array\";\n }\n return __typeof;\n}\n\nexport function addParam(key, value) {\n if (key && typeof key === \"string\" && value && typeof value === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"Kindly provide valid parameters.\");\n}\n\nexport function addQuery(key, value) {\n if (key && value && typeof key === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"First argument should be a String.\");\n}\n\nexport function language(languageCode) {\n if (languageCode && typeof languageCode === \"string\") {\n this._query.locale = languageCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function environment(environmentCode) {\n if (environmentCode && typeof environmentCode === \"string\") {\n this._query.environment = environmentCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function includeOwner() {\n this._query.include_owner = true;\n return this;\n}\n\nexport function includeContentType() {\n this._query.include_content_type = true;\n return this;\n}\n\nexport function includeSchema() {\n this._query.include_schema = true;\n return this;\n}\n\nexport function includeReference(val) {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(val[i]);\n }\n } else if (typeof val === \"string\") {\n for (let i = 0; i < arguments.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(\n arguments[i]\n );\n }\n } else {\n throw Error(\"Argument should be a String or an Array.\");\n }\n return this;\n}\n\nexport function getReferences() {\n return this.fetch(`get${this.constructor.module()}References`);\n}\n","function onError(error: Error) {\n return Promise.reject(error);\n}\n/**\n * Class used by an extension to store your data in {@link external:localStorage}.\n */\nclass Store {\n /**\n * @hideconstructor\n */\n\n _connection: any\n\n constructor(connection: any) {\n this._connection = connection;\n }\n /**\n * Gets the value of key\n * @param {string} key Key of the stored data\n * @example extension.store.get('key').then((value) => console.log(value)) // will log value for the given key\n * @return {external:Promise}\n */\n get(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'get', key })\n .then((event: { data: any; }) => Promise.resolve(event.data)).catch(onError);\n }\n\n /**\n * Gets an object with all the stored key-value pairs.\n * @example extension.store.getAll().then((obj) => obj)\n * @return {external:Promise}\n */\n getAll() {\n return this._connection.sendToParent('store', { action: 'getAll' })\n .then(({ data = {} }) => Promise.resolve(data)).catch(onError);\n }\n\n /**\n * Sets the value of a key\n * @param {string} key Key of the stored data.\n * @param {*} value Data to be stored.\n * @example extension.store.set('key', 'value').then((success) => console.log(success)) // will log ‘true’ when value is set\n * @return {external:Promise}\n */\n\n set(key: string, value: string) {\n if (!key || !value || typeof key !== 'string') {\n throw new Error('Kindly provide valid parameters');\n }\n return this._connection.sendToParent('store', { action: 'set', key, value })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Removes the value of a key\n * @param {string} key Key of the data to be removed from the store\n * @example extension.store.remove('key').then((success) => console.log(success)) // will log ‘true’ when value is removed\n * @return {external:Promise}\n */\n\n remove(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'remove', key })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Clears all the stored data of an extension\n * @example extension.store.clear().then((success) => console.log(success)) // will log ‘true’ when values are cleared\n * @return {external:Promise}\n */\n\n clear() {\n return this._connection.sendToParent('store', { action: 'clear' })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n}\n\nexport default Store;\n","import { AnyObject } from \"./types/common.types\";\nimport { StackDetail } from \"./types/stack.types\";\n\nexport declare interface IDashboardWidget {\n [key: string]: any;\n}\n\nexport declare interface ICustomField {\n [key: string]: any;\n}\n\nexport declare interface ISidebarWidget {\n [key: string]: any;\n}\n\nexport declare interface IRTE {\n [key: string]: any;\n}\n\nexport declare interface IFieldModifierLocation {\n [key: string]: any;\n}\n\nexport declare interface IEntryFieldLocation {\n [key: string]: any;\n}\n\nexport declare interface IFullPageLocation {\n [key: string]: any;\n}\n\nexport declare interface User {\n uid: string;\n first_name: string;\n last_name: string;\n}\n\nexport declare interface Manifest {\n created_by: User;\n icon: string;\n name: string;\n target_type: string;\n uid: string;\n updated_by: User;\n version: number;\n visibility: string;\n}\n\nexport declare interface IAppConfigWidget {\n installation: {\n setInstallationData: (\n installationData: IInstallationData\n ) => Promise;\n getInstallationData: () => Promise;\n setValidity: (isValid: boolean, options?: ValidationOptions) => void;\n [key: string]: any;\n };\n stack: AnyObject;\n}\n\nexport declare interface IPageWidget {\n [key: string]: any;\n}\n\n// initialization data\nexport declare interface IUser {\n [key: string]: any;\n}\n\nexport declare interface ICurrentEntry {\n [key: string]: any;\n}\n\nexport declare interface ICurrentContentType {\n [key: string]: any;\n}\n\nexport declare interface IConfig {\n [key: string]: any;\n}\n\nexport declare interface ISchema {\n [key: string]: any;\n}\n\nexport declare interface IFieldConfig {\n [key: string]: any;\n}\n\n// Init data\n\ndeclare interface ICommonInitData {\n app_id: string;\n installation_uid: string;\n extension_uid: string;\n stack: StackDetail;\n user: IUser;\n currentBranch: string;\n region: string;\n manifest?: Manifest;\n}\n\nexport declare interface IDashboardInitData {\n data: ICommonInitData & {\n dashboard_width: \"full_width\" | \"half_width\";\n config?: AnyObject;\n type: \"DASHBOARD\";\n };\n}\n\nexport declare interface ISidebarInitData {\n data: ICommonInitData & {\n app_config: IConfig;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n config?: AnyObject;\n changedData: ICurrentEntry;\n type: \"WIDGET\";\n };\n}\n\nexport declare interface IRTELocationInitData {\n data: ICommonInitData & {\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n changedData: ICurrentEntry;\n }\n}\n\nexport declare interface IFieldInitData {\n data: ICommonInitData & {\n entry: ICurrentEntry;\n content_type: ICurrentContentType;\n locale: string;\n uid: string;\n schema: ISchema;\n app_config: IConfig;\n value: any;\n field_config: IFieldConfig;\n config?: AnyObject;\n changedData: ICurrentEntry;\n self: boolean;\n type: \"FIELD\";\n };\n}\n\nexport declare interface IFullPageLocationInitData {\n data: ICommonInitData & {\n type: \"FULL_PAGE_LOCATION\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IRTEInitData {\n data: ICommonInitData & {\n type: \"RTE\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IAppConfigInitData {\n data: ICommonInitData & {\n type: \"APP_CONFIG_WIDGET\";\n config?: AnyObject;\n };\n}\n\nexport declare interface ICurrentAsset {\n [key: string]: any;\n}\n\nexport declare interface IAssetSidebarInitData {\n data: ICommonInitData & {\n type: \"ASSET_SIDEBAR_WIDGET\";\n currentAsset: ICurrentAsset;\n config: { [key: string]: any };\n };\n}\n\nexport declare interface IFieldModifierLocationInitData {\n data: ICommonInitData & {\n type: \"FIELD_MODIFIER_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface IEntryFieldLocationInitData {\n data: ICommonInitData & {\n type: \"ENTRY_FIELD_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface setAssetDto {\n title: string;\n description: string;\n tags: string[];\n}\n\nexport enum StackLocation {\n STACK_CONFIG = \"cs.cm.stack.config\",\n DASHBOARD = \"cs.cm.stack.dashboard\",\n SIDEBAR = \"cs.cm.stack.sidebar\",\n CUSTOM_FIELD = \"cs.cm.stack.custom_field\",\n RTE = \"cs.cm.stack.rte\",\n}\n\nexport enum OrganizationLocation {\n ORG_CONFIG = \"cs.org.config\",\n}\n\nexport type AppLocation = StackLocation | OrganizationLocation;\n\nexport interface Scope {\n content_types: string[];\n}\n\n/**\n * installation details API response\n */\nexport interface IInstallationData {\n configuration: { [key: string]: any };\n serverConfiguration: { [key: string]: any };\n webhooks?: {\n channels: string[];\n }[];\n uiLocations?: {\n type: AppLocation;\n meta: {\n enabled: boolean;\n scope?: Scope;\n name: string;\n extentionUid: string;\n }[];\n }[];\n}\n// End of Init data\n\nexport declare interface IInitializationData {\n FIELD: IFieldConfig;\n WIDGET: ISidebarInitData;\n DASHBOARD: IDashboardInitData;\n RTE: IRTEInitData;\n APP_CONFIG_WIDGET: IAppConfigInitData;\n ASSET_SIDEBAR_WIDGET: IAssetSidebarInitData;\n}\n\nexport declare type ILocation =\n | \"RTE\"\n | \"FIELD\"\n | \"DASHBOARD\"\n | \"WIDGET\"\n | \"APP_CONFIG_WIDGET\"\n | \"ASSET_SIDEBAR_WIDGET\"\n | \"FULL_PAGE_LOCATION\"\n | \"ENTRY_FIELD_LOCATION\"\n | \"FIELD_MODIFIER_LOCATION\";\n\nexport declare interface ValidationOptions {\n message?: string;\n}\n\nexport declare interface IManagementTokenDetails {\n uid: string;\n name: string;\n}\n\nexport enum Region {\n UNKNOWN = \"UNKNOWN\",\n NA = \"NA\",\n EU = \"EU\",\n AZURE_NA = \"AZURE_NA\",\n AZURE_EU = \"AZURE_EU\",\n}\n","export const ERROR_MESSAGES = Object.freeze({\n configPage: {\n setValidity: {\n isValidTypeBoolean: \"isValid should be a boolean\",\n messageTypeString: \"message should be a string\",\n },\n },\n entryField: {\n entry: {\n tagsShouldNotBeBlank: \"Tags cannot be blank\",\n tagsShouldBeArrayOfStrings: \"Tags must be an array of strings\",\n },\n frame: {\n dimensionHeightShouldBeNumber: \"Dimension height must be a number\",\n dimensionWidthShouldBeNumber: \"Dimension width must be a number\",\n },\n },\n});\n\nexport default function generateErrorMessages(message: string) {\n return `Contentstack App SDK: ${message}`;\n}\n","import { Region } from \"../types\";\n\nexport function onData>(data: { data: Data }) {\n if (typeof data.data === \"string\") {\n return Promise.reject(data.data);\n }\n return Promise.resolve(data.data);\n}\n\nexport function onError(error: Error) {\n return Promise.reject(error);\n}\n\nexport function formatAppRegion(region: string): Region {\n switch (region) {\n case \"NA\":\n return Region.NA;\n case \"EU\":\n return Region.EU;\n case \"AZURE_NA\":\n return Region.AZURE_NA;\n case \"AZURE_EU\":\n return Region.AZURE_EU;\n default:\n return Region.UNKNOWN;\n }\n}\n\nexport function getPreferredBodyElement(nodeCollection: HTMLCollection) {\n let rootElementIndex = Infinity;\n let rootElement: Element | undefined;\n const elementPreferenceList = [\n \"HEADER\",\n \"NAV\",\n \"MAIN\",\n \"SECTION\",\n \"ARTICLE\",\n \"ASIDE\",\n \"FOOTER\",\n \"DIV\",\n ];\n const nonRenderingTags = [\"SCRIPT\", \"NOSCRIPT\", \"STYLE\", \"TEMPLATE\"];\n // ? choose higher preference semantic HTML tags\n Array.from(nodeCollection).forEach((el) => {\n const elIndex = elementPreferenceList.indexOf(el.nodeName);\n if (elIndex >= 0 && elIndex < rootElementIndex) {\n rootElementIndex = elIndex;\n rootElement = el;\n }\n });\n // ? choose the first rendering HTML tag found if no semantic tags found\n if (!rootElement) {\n rootElement = Array.from(nodeCollection).find(\n (el) => !nonRenderingTags.includes(el.nodeName)\n );\n }\n return rootElement || nodeCollection[0];\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\n\nconst config = { attributes: true, childList: true, subtree: true };\nlet observer: MutationObserver;\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass Window {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _autoResizingEnabled: boolean\n _resizingEnabled: boolean\n type: 'DASHBOARD' | 'FIELD'\n _emitter: EventEmitter\n state: 'half_width' | 'full_width'\n _height?: number\n\n constructor(connection: any, type: 'DASHBOARD' | 'FIELD', emitter: EventEmitter, state: 'half_width' | 'full_width' = 'half_width') {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._resizingEnabled = false;\n this.type = type;\n this.state = state;\n this._emitter = emitter;\n }\n\n /**\n * This method activates the resize button that gives you the provision to resize the window size of your Dashboard Widget.\n * @return {external:Promise} A promise object which will resolve when a resize button is visible on the Dashboard Widget.\n */\n enableResizing() {\n if (this.type !== 'DASHBOARD') { return Promise.resolve(); }\n this._resizingEnabled = true;\n return this._connection.sendToParent('window', { action: 'enableResizing' });\n }\n\n\n /**\n * This function executes the callback function whenever a Dashboard Widget extension is maximized or minimized. Only applicable on Dashboard Widget extensions.\n * @param {function} callback Function to be called when a Dashboard Widget extension is maximized or minimized\n * @return {boolean} Will return true\n */\n\n onDashboardResize(callback: (event: any) => void) {\n const windowObj = this;\n if (this.type !== 'DASHBOARD') {\n return false;\n }\n if (callback && typeof (callback) === 'function') {\n windowObj._emitter.on('dashboardResize', (event: { state: 'half_width' | 'full_width'; }) => {\n windowObj.state = event.state;\n callback(event.state);\n });\n } else {\n throw Error('Callback must be a function');\n }\n return true;\n }\n\n\n /**\n * This method updates the extension height on Contentstack UI.\n * If the ‘height’ argument is not passed, it will calculate the scroll height and set the height of extension window accordingly.\n * @param {string|number} height Desired height of the iframe window\n * @return {external:Promise} A promise object which will be resolved when Contentstack UI sends an acknowledgement stating that the height has been updated.\n */\n updateHeight(height?: number) {\n if (this.type === 'DASHBOARD' && this.state === 'half_width') { return Promise.resolve(); }\n if (!height || isNaN(height)) {\n this._height = Math.ceil(document.documentElement.getBoundingClientRect().height);\n } else if (this._height === height) {\n return Promise.resolve();\n } else {\n this._height = height;\n }\n return this._connection.sendToParent('resize', this._height);\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {Window}.\n */\n enableAutoResizing() {\n if (this._autoResizingEnabled || (this.state === 'half_width' && this.type === 'DASHBOARD')) {\n return this;\n }\n this._autoResizingEnabled = true;\n //@ts-ignore\n observer = new MutationObserver(this.updateHeight.bind(this));\n observer.observe(window.document.body, config);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {Window}.\n */\n disableAutoResizing() {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n observer.disconnect();\n return this;\n }\n\n enablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent(\"window\", {\n action: \"dashboardEnableTopPadding\",\n });\n }\n\n disablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent('window', {\n action: 'dashboardDisableTopPadding' \n });\n }\n \n}\n\nexport default Window;\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","// 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].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n"],"names":["root","factory","exports","module","define","amd","this","self","modules","installedModules","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","value","interface_namespaceObject","isRegex","item","toString","cleanUpWindow","promise_ZalgoPromise","bridge","init","public_parent","_send","request","sendToParent","client","_on","listen","server_once","server_listener","CONFIG","constants_CONSTANTS","disable","PROTOCOL","IE_WIN_ACCESS_ERROR","isAboutProtocol","arguments","length","window","location","protocol","getParent","win","parent","err","getOpener","opener","canReadFromWindow","href","getActualDomain","Error","host","utils_getDomain","domain","mockDomain","indexOf","isActuallySameDomain","desc","getOwnPropertyDescriptor","isAncestorParent","child","childParent","result","push","getFrames","frames","len","frame","_i","_frame","iframeWindows","iframeFrames","isWindowClosed","allowMock","closed","message","mockclosed","top","iframeIndex","collection","contentWindow","parentNode","doc","ownerDocument","documentElement","contains","getAncestor","matchDomain","pattern","origin","Array","isArray","Boolean","match","JSON","stringify","some","subpattern","isWindow","obj","Window","__cross_domain_utils_window_check__","util_safeIndexOf","_ALLOWED_POST_MESSAGE","weakmap_CrossDomainSafeWeakMap","CrossDomainSafeWeakMap","instance","Constructor","TypeError","Math","random","WeakMap","freeze","testWeakMap","testKey","set","weakmap","keys","values","_cleanupClosedWindows","delete","splice","isSafeToReadWrite","key","entry","writable","index","has","getOrSet","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","ERROR","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","POPUP","IFRAME","WINDOW_PROPS","POSTROBOT","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","POST_MESSAGE","BRIDGE","GLOBAL","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","WILDCARD","map","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","navigator","userAgent","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_typeof","Symbol","iterator","constructor","stringifyError","level","stack","newErr","once","method","called","apply","lib_util_noop","uniqueID","chars","replace","charAt","floor","replaceObject","callback","depth","newobj","_key","childItem","util_isRegex","utils_isPromise","Promise","_toString","then","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushPromise","flushActive","promise","resolve","startActive","endActive","ZalgoPromise","handler","_this","resolved","rejected","errorHandled","handlers","_result","_error","isAsync","res","reject","dispatch","error","_this2","_err","setTimeout","j","asyncReject","dispatching","chain","firstPromise","secondPromise","_handlers$i","_onSuccess","onSuccess","_onError","onError","_promise","_result2","catch","finally","onFinally","try","timeout","time","_this3","clearTimeout","toPromise","all","promises","count","results","prom","hash","items","onPossiblyUnhandledException","cancel","context","args","delay","_delay","isPromise","flush","global","registerSelf","serialize__typeof","methods","listenForMethods","on","_ref","source","data","meth","id","isSerialized","type","__type__","serializeMethod","destination","__id__","__name__","deserializeMethod","wrapper","slice","send","_ref2","__xdomain__","deserializeZalgoPromise","__then__","sayHello","readyPromises","SEND_MESSAGE_STRATEGIES","serializedMessage","dom","forEach","postMessage","_extends","assign","target","sendMessage","_jsonStringify","options","sourceDomain","windowType","__message__","__code__","code","regex","__source__","messages","replacer","indent","objectToJSON","arrayToJSON","toJSON","strategyName","success","status","join","responseListeners","requestListeners","WINDOW_WILDCARD","erroredResponseListeners","_RECEIVE_MESSAGE_TYPE","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","nameListeners","_i2","_ref3","_length2","winQualifier","winListeners","_i4","_winListeners$__DOMAI2","_length4","_ref5","listener","types__extends","RECEIVE_MESSAGE_TYPES","pathname","ack","respond","fireAndForget","originalSource","handleError","response","receive__typeof","receiveMessage","event","parsedMessage","parse","receivedMessages","RegExp","messageListener","sourceElement","originalEvent","targetWindow","el","document","getElementById","tagName","toLowerCase","HTMLIFrameElement","hasResult","requestPromises","requestPromise","actualParent","_i7","_getAllChildFrames4","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","childFrame","_length6","_i15","_getFrames8","_length14","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","cycle","max","min","server__typeof","listenerOptions","errorHandler","requestListener","addRequestListener","_ref6","listenersCollection","_i6","_win2","_i8","_length8","_listenersCollection","_i10","_domain2","_length10","_item","_i12","_length12","existingListener","strDomain","regexListeners","regexListener","_handler","errorOnClose","interval","runInterval","onceListener","removeEventListener","popupWindowsByWin","remoteWindows","initialized","addEventListener","attachEvent","initializationData","connection","emitter","currentAsset","_emitter","_connection","thisAsset","_changedData","getData","bind","setData","syncAsset","updateWidth","onSave","onChange","onPublish","onUnPublish","replaceAsset","asset","width","file","handleUpload","AssetSidebarWidget","configCallback","pluginMetaData","registry","title","toolbar","inMainToolbar","inHoveringToolbar","isContentstackElement","meta","elementType","editorCallbacks","isDependent","isContainer","containerMetaData","rootCategory","dependentPlugins","addPlugins","plugins","plugin","category","beforeChildrenRender","beforeElementRender","handleMouseDown","rte","config","entries","iconName","display","includes","dndOptions","Component","shouldOverride","containerMeta","RTEPlugin","rtePluginInitializer","additionalData","_data","currentBranch","_additionalData","setInstallationData","installationData","onData","getInstallationData","setValidity","isValid","ERROR_MESSAGES","configPage","isValidTypeBoolean","messageTypeString","AppConfig","content_type","changedData","locale","_options","thisEntry","console","log","getField","uid","useUnsavedSchema","_internalFlags","FieldInstance","path","split","schema","find","x","data_type","multiple","blocks","block","e","fieldObject","resolvedData","Entry","initData","pulse","eventName","metadata","postRobot","getConfig","installationUID","getCurrentLocation","getAppVersion","version","orgUid","org_uid","action","headers","organization_uid","skip_api_key","app","getCurrentRegion","region","appUID","app_id","locationUID","extension_uid","installation_uid","currentUser","user","store","DashboardWidget","CustomField","SidebarWidget","RTELocation","AppConfigWidget","FullscreenAppWidget","FullPage","EntryFieldLocation","FieldModifierLocation","modal","formatAppRegion","manifest","dashboard_width","installation","field","fieldConfig","field_config","emitEvent","otherData","state","initialize","sdkType","setReady","Extension","excludedDataTypesForSetField","fieldDataObject","unResolvedData","separatedData","_resolvedData","_self","fieldObj","currentFieldObj","dataObj","setFocus","Field","getTags","tags","setTags","undefined","entryField","tagsShouldNotBeBlank","every","tag","areTagsValid","tagsShouldBeArrayOfStrings","FieldModifierLocationEntry","FieldModifierLocationField","_autoResizingEnabled","updateDimension","enableAutoResizing","disableAutoResizing","closeModal","dimension","height","_height","ceil","getBoundingClientRect","_width","dimensionBody","dimensionHeightShouldBeNumber","dimensionWidthShouldBeNumber","preventFrameClose","observer","MutationObserver","observe","body","attributes","childList","subtree","disconnect","FieldModifierLocationFrame","LOG_LEVEL","_extension","ContentstackAppSDK","createMetaData","metadataConfig","entity_uid","otherMetaData","payload","retrieveMetaData","retrieveAllMetaData","params","updateMetaData","deleteMetaData","Metadata","rootElement","getPreferredBodyElement","children","setBackgroundElement","element","Modal","getReferences","environment","Query","entryQuery","language","plural","getRteAssets","getAssetsOfSpecificTypes","assetType","asset_type","publish","fetch","unpublish","_files","files","from","_","File","Date","getUTCMilliseconds","upload_type","parentFolderUid","customUploadHandler","uploadAsset","Asset","uiConnection","Proxy","Target","thisArg","argumentsList","_query","only","transform","except","addParam","contentTypeUid","create","content_type_uid","update","includeOwner","includeContentType","includeSchema","includeReference","getLanguages","unlocalize","setWorkflowStage","contentType","entryTarget","addQuery","ContentType","_extend","query","file_size","bool","concat","$exists","Utils","lessThan","lessThanOrEqualTo","greaterThan","greaterThanOrEqualTo","notEqualTo","containedIn","notContainedIn","exists","notExists","ascending","descending","beforeUid","afterUid","skip","limit","or","and","equalTo","where","mergeDeep","includeCount","include_count","getQuery","$regex","$options","search","typeahead","findOne","singleEntry","_currentBranch","branches","branch","getAllStacks","stacks","getManagementTokens","tokens","queries","apiKey","api_key","getContentType","getContentTypes","optionParams","getEnvironment","getEnvironments","getReleases","getPublishes","getLocale","getLocales","getWorkflow","getWorkflows","getAllBranches","getCurrentBranch","Stack","newTraget","oldTarget","oldSource","newTarget","_mergeRecursive","anotherTarget","_type","val","__typeof","languageCode","environmentCode","include_owner","include_content_type","include_schema","getAll","remove","clear","Store","Region","StackLocation","OrganizationLocation","NA","EU","AZURE_NA","AZURE_EU","UNKNOWN","nodeCollection","rootElementIndex","Infinity","elementPreferenceList","nonRenderingTags","elIndex","nodeName","_resizingEnabled","enableResizing","onDashboardResize","windowObj","updateHeight","isNaN","enablePaddingTop","disablePaddingTop","EventEmitter","proto","originalGlobalValue","indexOfListener","listeners","alias","isValidListener","getListeners","evt","events","_getEvents","test","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","__webpack_module_cache__","__webpack_require__","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/src/entry.d.ts.map b/dist/src/entry.d.ts.map index 6645a86..9756104 100644 --- a/dist/src/entry.d.ts.map +++ b/dist/src/entry.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/entry.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,8BAA8B,EAC9B,oBAAoB,EACpB,gBAAgB,EACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,uGAAuG;AAEvG,cAAM,KAAK;IACP;;OAEG;IAEH,YAAY,EAAE,mBAAmB,CAAC;IAClC,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,GAAG,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACtC,QAAQ,EAAE,aAAa,CAAC;gBAGpB,kBAAkB,EACZ,cAAc,GACd,gBAAgB,GAChB,oBAAoB,GACpB,8BAA8B,EACpC,UAAU,EAAE,GAAG,EACf,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa;IA2C3B;;;OAGG;IAEH,OAAO;;;IAIP;;;;;;;;;;;;OAYG;IAEH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,KAAK;IAiGxD;;;OAGG;IAEH,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAWpC;;;OAGG;IAEH,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IAczC;;;OAGG;IAEH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAWvC;;;OAGG;IAEH,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;CAU5C;AACD,eAAe,KAAK,CAAC"} \ No newline at end of file +{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/entry.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,8BAA8B,EAC9B,oBAAoB,EACpB,gBAAgB,EACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,uGAAuG;AAEvG,cAAM,KAAK;IACP;;OAEG;IAEH,YAAY,EAAE,mBAAmB,CAAC;IAClC,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,GAAG,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,YAAY,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACtC,QAAQ,EAAE,aAAa,CAAC;gBAGpB,kBAAkB,EACZ,cAAc,GACd,gBAAgB,GAChB,oBAAoB,GACpB,8BAA8B,EACpC,UAAU,EAAE,GAAG,EACf,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa;IA4C3B;;;OAGG;IAEH,OAAO;;;IAIP;;;;;;;;;;;;OAYG;IAEH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,KAAK;IAiGxD;;;OAGG;IAEH,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAWpC;;;OAGG;IAEH,QAAQ,CAAC,QAAQ,EAAE,sBAAsB;IAczC;;;OAGG;IAEH,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IAWvC;;;OAGG;IAEH,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;CAU5C;AACD,eAAe,KAAK,CAAC"} \ No newline at end of file diff --git a/src/entry.ts b/src/entry.ts index 310223a..8b17f72 100755 --- a/src/entry.ts +++ b/src/entry.ts @@ -75,6 +75,7 @@ class Entry { this._emitter.on( "entryChange", (event: { data: { [key: string]: any } }) => { + console.log("rte listened to the change", event.data); thisEntry._changedData = event.data; } ); diff --git a/src/extension.ts b/src/extension.ts index 6637ab4..c9c39c2 100755 --- a/src/extension.ts +++ b/src/extension.ts @@ -233,7 +233,7 @@ class Extension { postRobot, emitter ), - } + }; }); break; } @@ -302,7 +302,7 @@ class Extension { ]); } - if (event.data.name === "entryChange") { + if (event.data.eventName === "entryChange") { emitter.emitEvent("entryChange", [ { data: event.data.data, From 77c33c7b47d58560dda31996b43db38a87f8899d Mon Sep 17 00:00:00 2001 From: Kirtesh Suthar Date: Thu, 10 Aug 2023 16:12:06 +0530 Subject: [PATCH 3/8] chore: undo the name change --- dist/index.js | 2 +- dist/index.js.map | 2 +- src/extension.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/index.js b/dist/index.js index 07da817..6beaa19 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,3 +1,3 @@ /*! For license information please see index.js.LICENSE.txt */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ContentstackAppSDK=e():t.ContentstackAppSDK=e()}(this,(()=>{return t={957:function(t){"undefined"!=typeof self&&self,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/index.js")}({"./src/index.js":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={};function o(t){return"[object RegExp]"===Object.prototype.toString.call(t)}n.d(r,"cleanUpWindow",(function(){return Pt})),n.d(r,"Promise",(function(){return K})),n.d(r,"bridge",(function(){return St})),n.d(r,"init",(function(){return Tt})),n.d(r,"parent",(function(){return Ot})),n.d(r,"send",(function(){return pt})),n.d(r,"request",(function(){return ht})),n.d(r,"sendToParent",(function(){return yt})),n.d(r,"client",(function(){return vt})),n.d(r,"on",(function(){return gt})),n.d(r,"listen",(function(){return mt})),n.d(r,"once",(function(){return wt})),n.d(r,"listener",(function(){return bt})),n.d(r,"CONFIG",(function(){return R})),n.d(r,"CONSTANTS",(function(){return A})),n.d(r,"disable",(function(){return Et}));var i="mock:",a="file:",s="about:",u="Call was rejected by callee.\r\n";function c(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window).location.protocol===s}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t)try{if(t.parent&&t.parent!==t)return t.parent}catch(t){}}function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t&&!l(t))try{return t.opener}catch(t){}}function d(t){try{return t&&t.location&&t.location.href,!0}catch(t){}return!1}function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=t.location;if(!e)throw new Error("Can not read window location");var n=e.protocol;if(!n)throw new Error("Can not read window protocol");if(n===a)return a+"//";if(n===s){var r=l(t);return r&&d(r)?h(r):s+"//"}var o=e.host;if(!o)throw new Error("Can not read window host");return n+"//"+o}function p(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=h(t);return e&&t.mockDomain&&0===t.mockDomain.indexOf(i)?t.mockDomain:e}function y(t){try{if(t===window)return!0}catch(t){}try{var e=Object.getOwnPropertyDescriptor(t,"location");if(e&&!1===e.enumerable)return!1}catch(t){}try{if(c(t)&&d(t))return!0}catch(t){}try{if(h(t)===h(window))return!0}catch(t){}return!1}function v(t,e){if(!t||!e)return!1;var n=l(e);return n?n===t:-1!==function(t){var e=[];try{for(;t.parent!==t;)e.push(t.parent),t=t.parent}catch(t){}return e}(e).indexOf(t)}function _(t){var e=[],n=void 0;try{n=t.frames}catch(e){n=t}var r=void 0;try{r=n.length}catch(t){}if(0===r)return e;if(r){for(var o=0;o1&&void 0!==arguments[1])||arguments[1];try{if(t===window)return!1}catch(t){return!0}try{if(!t)return!0}catch(t){return!0}try{if(t.closed)return!0}catch(t){return!t||t.message!==u}if(e&&function(t){if(!y(t))return!1;try{if(t===window)return!0;if(c(t)&&d(t))return!0;if(p(window)===p(t))return!0}catch(t){}return!1}(t))try{if(t.mockclosed)return!0}catch(t){}try{if(!t.parent||!t.top)return!0}catch(t){}var n=function(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window;return f(t=t||window)||l(t)||void 0}function E(t,e){if("string"==typeof t){if("string"==typeof e)return"*"===t||e===t;if(o(e))return!1;if(Array.isArray(e))return!1}return o(t)?o(e)?t.toString()===e.toString():!Array.isArray(e)&&Boolean(e.match(t)):!!Array.isArray(t)&&(Array.isArray(e)?JSON.stringify(t)===JSON.stringify(e):!o(e)&&t.some((function(t){return E(t,e)})))}function O(t){try{if(t===window)return!0}catch(t){if(t&&t.message===u)return!0}try{if("[object Window]"===Object.prototype.toString.call(t))return!0}catch(t){if(t&&t.message===u)return!0}try{if(window.Window&&t instanceof window.Window)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.self===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.parent===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.top===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&"__unlikely_value__"===t.__cross_domain_utils_window_check__)return!1}catch(t){return!0}return!1}function P(t,e){for(var n=0;n>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var t=new WeakMap,e={};return Object.freeze(e),t.set(e,"__testvalue__"),"__testvalue__"===t.get(e)}catch(t){return!1}}())try{this.weakmap=new WeakMap}catch(t){}this.keys=[],this.values=[]}return t.prototype._cleanupClosedWindows=function(){for(var t=this.weakmap,e=this.keys,n=0;n1&&void 0!==arguments[1]?arguments[1]:1;if(e>=3)return"stringifyError stack overflow";try{if(!t)return"";if("string"==typeof t)return t;if(t instanceof Error){var n=t&&t.stack,r=t&&t.message;if(n&&r)return-1!==n.indexOf(r)?n:r+"\n"+n;if(n)return n;if(r)return r}return"function"==typeof t.toString?t.toString():Object.prototype.toString.call(t)}catch(t){return"Error while stringifying error: "+j(t,e+1)}}var M=function(t){if(!t)return t;var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}};function x(){}function C(){var t="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return t.charAt(Math.floor(Math.random()*t.length))}))}function L(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n>=100)throw new Error("Self-referential object passed, or object contained too many layers");var r=void 0;if("object"!==(void 0===t?"undefined":k(t))||null===t||Array.isArray(t)){if(!Array.isArray(t))throw new TypeError("Invalid type: "+(void 0===t?"undefined":k(t)));r=[]}else r={};return function(t,e){Array.isArray(t)?function(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},r=C(),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(f(t))}()?A.WINDOW_TYPES.POPUP:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(l(t))}()?A.WINDOW_TYPES.IFRAME:A.WINDOW_TYPES.FULLPAGE,i=p(window);return et({},e,n,{sourceDomain:i,id:e.id||r,windowType:o})}(t,e,{data:function(t,n,r){return L({obj:e.data},(function(e,r){return"function"==typeof e?Z(t,n,e,r.toString()):e instanceof Error?(o=e,{__type__:A.SERIALIZATION_TYPES.ERROR,__message__:j(o),__code__:o.code}):window.Promise&&e instanceof window.Promise?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):K.isPromise(e)?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.ZALGO_PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):I(e)?(i=e,{__type__:A.SERIALIZATION_TYPES.REGEX,__source__:i.source}):void 0;var o,i})).obj}(t,n),domain:n}),t===window&&!R.ALLOW_SAME_ORIGIN)throw new Error("Attemping to send message to self");if(w(t))throw new Error("Window is closed");var o=[],i=function(t,e,n){var r=void 0,o=void 0;try{if("{}"!==JSON.stringify({})&&(r=Object.prototype.toJSON,delete Object.prototype.toJSON),"{}"!==JSON.stringify({}))throw new Error("Can not correctly serialize JSON objects");if("[]"!==JSON.stringify([])&&(o=Array.prototype.toJSON,delete Array.prototype.toJSON),"[]"!==JSON.stringify([]))throw new Error("Can not correctly serialize JSON objects")}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}var i=JSON.stringify.call(this,t,null,2);try{r&&(Object.prototype.toJSON=r),o&&(Array.prototype.toJSON=o)}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}return i}(((r={})[A.WINDOW_PROPS.POSTROBOT]=e,r));return K.map(Object.keys(tt),(function(e){return K.try((function(){if(!R.ALLOWED_POST_MESSAGE_METHODS[e])throw new Error("Strategy disallowed: "+e);return tt[e](t,i,n)})).then((function(){return o.push(e+": success"),!0}),(function(t){return o.push(e+": "+j(t)+"\n"),!1}))})).then((function(t){var n=t.some(Boolean),r=e.type+" "+e.name+" "+(n?"success":"error")+":\n - "+o.join("\n - ")+"\n";if(!n)throw new Error(r)}))}))}H.responseListeners=H.responseListeners||{},H.requestListeners=H.requestListeners||{},H.WINDOW_WILDCARD=H.WINDOW_WILDCARD||new function(){},H.erroredResponseListeners=H.erroredResponseListeners||{};var rt;function ot(t){return H.responseListeners[t]}function it(t){delete H.responseListeners[t]}function at(t){return Boolean(H.erroredResponseListeners[t])}function st(t){var e=t.name,n=t.win,r=t.domain;if(n===A.WILDCARD&&(n=null),r===A.WILDCARD&&(r=null),!e)throw new Error("Name required to get request listener");var o=H.requestListeners[e];if(o)for(var i=0,a=[n,H.WINDOW_WILDCARD],s=null==a?0:a.length;i0&&void 0!==arguments[0]?arguments[0]:window;try{if(t.top)return t.top}catch(t){}if(l(t)===t)return t;try{if(v(window,t)&&window.top)return window.top}catch(t){}try{if(v(t,window)&&window.top)return window.top}catch(t){}for(var e=0,n=function t(e){for(var n=[],r=0,o=_(e),i=null==o?0:o.length;r1&&void 0!==arguments[1]?arguments[1]:5e3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Window",r=H.readyPromises.get(t);return r||(r=new K,H.readyPromises.set(t,r),-1!==e&&setTimeout((function(){return r.reject(new Error(n+" did not load after "+e+"ms"))}),e),r)}(i,t.timeout||R.CHILD_WINDOW_TIMEOUT)})).then((function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)&&!t)return X(i)})).then((function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)){if(!E(r,n))throw new Error("Remote window domain "+n+" does not match regex: "+r.toString());r=n}if("string"!=typeof r&&!Array.isArray(r))throw new TypeError("Expected domain to be a string or array");var o=r;return new K((function(n,r){var l=void 0;if(t.fireAndForget||function(t,e){H.responseListeners[t]=e}(a,l={name:e,window:i,domain:o,respond:function(t,e){t||(s=!0,u.splice(u.indexOf(c,1))),t?r(t):n(e)}}),nt(i,{type:A.POST_MESSAGE_TYPE.REQUEST,hash:a,name:e,data:t.data,fireAndForget:t.fireAndForget},o).catch(r),t.fireAndForget)return n();var f=R.ACK_TIMEOUT,d=t.timeout||R.RES_TIMEOUT,h=100;setTimeout((function n(){if(!s){if(w(i))return l.ack?r(new Error("Window closed for "+e+" before response")):r(new Error("Window closed for "+e+" before ack"));if(f=Math.max(f-h,0),-1!==d&&(d=Math.max(d-h,0)),l.ack){if(-1===d)return;h=Math.min(d,2e3)}else{if(0===f)return r(new Error("No ack for postMessage "+e+" in "+p()+" in "+R.ACK_TIMEOUT+"ms"));if(0===d)return r(new Error("No response for postMessage "+e+" in "+p()+" in "+(t.timeout||R.RES_TIMEOUT)+"ms"))}setTimeout(n,h)}}),h)}))}));return c.catch((function(){!function(t){H.erroredResponseListeners[t]=!0}(a),it(a)})),u.push(c),c}))}function pt(t,e,n,r){return(r=r||{}).window=t,r.name=e,r.data=n,ht(r)}function yt(t,e,n){var r=b();return r?pt(r,t,e,n):new K((function(t,e){return e(new Error("Window does not have a parent"))}))}function vt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!t.window)throw new Error("Expected options.window");var e=t.window;return{send:function(n,r){return pt(e,n,r,t)}}}H.receivedMessages=H.receivedMessages||[],H.receiveMessage=ft,H.requestPromises=H.requestPromises||new T,H.send=pt;var _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function mt(t){if(!t.name)throw new Error("Expected options.name");if(!t.handler)throw new Error("Expected options.handler");var e,n=t.name,r=t.window,o=t.domain,i={handler:t.handler,handleError:t.errorHandler||function(t){throw t},window:r,domain:o||A.WILDCARD,name:n},a=function t(e,n){var r=e.name,o=e.win,i=e.domain;if(!r||"string"!=typeof r)throw new Error("Name required to add request listener");if(Array.isArray(o)){for(var a=[],s=0,u=o,c=null==u?0:u.length;s1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"function"==typeof e&&(n=e,e={}),e=e||{},n=n||e.handler;var r=e.errorHandler,o=new K((function(o,i){(e=e||{}).name=t,e.once=!0,e.handler=function(t){if(o(t),n)return n(t)},e.errorHandler=function(t){if(i(t),r)return r(t)}})),i=mt(e);return o.cancel=i.cancel,o}function bt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{on:function(e,n){return gt(e,t,n)}}}function Et(){delete window[A.WINDOW_PROPS.POSTROBOT],window.removeEventListener("message",dt)}H.on=gt;var Ot=b();function Pt(t){var e=H.requestPromises.get(t);if(e)for(var n=0,r=null==e?0:e.length;n{t.exports=n(957),t.exports.default=t.exports},979:function(t,e,n){"use strict";var r=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=["file","reference","blocks","group","global_field"],r=function(){function t(t,e,n){this.uid=t.data.uid,this.data_type=t.data.schema.data_type,this.schema=t.data.schema,this._emitter=n;var r,o,i,a,s=(r=this,i=o=t.data.value,a=o,"file"===r.data_type&&(o?(i=o,a=!0===r.schema.multiple?o.map((function(t){return t.uid})):o.uid):!0===r.schema.multiple&&(i=[],a=[])),{resolvedData:i,unResolvedData:a});this._data=s.unResolvedData,this._resolvedData=s.resolvedData,this._connection=e,this._self=t.data.self||!1;var u=this;n.on("updateFields",(function(t){var e=u.uid.split("."),n=t.data;e.forEach((function(t){n&&(n=n[t])})),u._data!==n&&(u._data=n)}))}return t.prototype.setData=function(t){var e=this,r=this,o={data:t,uid:r.uid,self:r._self};return r._self||-1===n.indexOf(r.data_type)&&r.data_type?this._connection.sendToParent("setData",o).then((function(){return e._data=t,Promise.resolve(r)})).catch((function(t){return Promise.reject(t)})):Promise.reject(new Error("Cannot call set data for current field type"))},t.prototype.getData=function(t){var e=(void 0===t?{}:t).resolved;return void 0!==e&&e?this._resolvedData:this._data},t.prototype.setFocus=function(){return this._connection.sendToParent("focus")},t.prototype.onChange=function(t){var e=this;if(!t||"function"!=typeof t)throw Error("Callback must be a function");this._emitter.on("extensionFieldChange",(function(n){e._data=n.data,e._resolvedData=n.data,t(n.data)}))},t}();e.default=r},632:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),a=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&i(e,t,n);return a(e,t),e},u=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},c=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(974),o=function(){function t(){var t;if(!Object.prototype.hasOwnProperty.call(window,"iframeRef")){var e=(0,r.getPreferredBodyElement)(null===(t=null===document||void 0===document?void 0:document.body)||void 0===t?void 0:t.children);window.iframeRef=e}}return t.prototype.setBackgroundElement=function(t){window.iframeRef=t},t}();e.default=o},160:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},a=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getReferences=e.includeReference=e.includeSchema=e.includeContentType=e.includeOwner=e.environment=e.language=e.addQuery=e.addParam=e._type=e.mergeDeep=e.merge=e.transform=void 0,e.transform=function(t){return function(){switch(arguments.length){case 1:if(Array.isArray(arguments[0])||"string"==typeof arguments[0])return e=(e=this._query[t+"[BASE]"]||[]).concat(arguments[0]),this._query[t+"[BASE]"]=e,this;throw Error("Kindly provide valid parameters");case 2:var e;if("string"==typeof arguments[0]&&(Array.isArray(arguments[1])||"string"==typeof arguments[1]))return e=(e=this._query[t+"["+arguments[0]+"]"]||[]).concat(arguments[1]),this._query[t+"["+arguments[0]+"]"]=e,this;throw Error("Kindly provide valid parameters");default:throw Error("Kindly provide valid parameters")}}},e.merge=function(t,e){var n=t;return t&&e&&Object.keys(e).forEach((function(t){n[t]=e[t]})),n},e.mergeDeep=function(t,e){var n=t,r=this,o=function(t,e){var n=t;Object.keys(e).forEach((function(t){"object"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?o(n[t],e[t]):"array"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?n[t]=n[t].concat(e[t]):n[t]=e[t]}))};return o(n,e),n},e._type=function(t){var e=typeof t;return"object"===e&&Array.isArray(t)&&(e="array"),e},e.addParam=function(t,e){if(t&&"string"==typeof t&&e&&"string"==typeof e)return this._query[t]=e,this;throw Error("Kindly provide valid parameters.")},e.addQuery=function(t,e){if(t&&e&&"string"==typeof t)return this._query[t]=e,this;throw Error("First argument should be a String.")},e.language=function(t){if(t&&"string"==typeof t)return this._query.locale=t,this;throw Error("Argument should be a String.")},e.environment=function(t){if(t&&"string"==typeof t)return this._query.environment=t,this;throw Error("Argument should be a String.")},e.includeOwner=function(){return this._query.include_owner=!0,this},e.includeContentType=function(){return this._query.include_content_type=!0,this},e.includeSchema=function(){return this._query.include_schema=!0,this},e.includeReference=function(t){if(Array.isArray(t))for(var e=0;e{"use strict";function n(t){return Promise.reject(t)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t){this._connection=t}return t.prototype.get=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"get",key:t}).then((function(t){return Promise.resolve(t.data)})).catch(n)},t.prototype.getAll=function(){return this._connection.sendToParent("store",{action:"getAll"}).then((function(t){var e=t.data,n=void 0===e?{}:e;return Promise.resolve(n)})).catch(n)},t.prototype.set=function(t,e){if(!t||!e||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"set",key:t,value:e}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.remove=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"remove",key:t}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.clear=function(){return this._connection.sendToParent("store",{action:"clear"}).then((function(){return Promise.resolve(!0)})).catch(n)},t}();e.default=r},699:(t,e)=>{"use strict";var n,r;Object.defineProperty(e,"__esModule",{value:!0}),e.Region=e.OrganizationLocation=e.StackLocation=void 0,(r=e.StackLocation||(e.StackLocation={})).STACK_CONFIG="cs.cm.stack.config",r.DASHBOARD="cs.cm.stack.dashboard",r.SIDEBAR="cs.cm.stack.sidebar",r.CUSTOM_FIELD="cs.cm.stack.custom_field",r.RTE="cs.cm.stack.rte",(e.OrganizationLocation||(e.OrganizationLocation={})).ORG_CONFIG="cs.org.config",(n=e.Region||(e.Region={})).UNKNOWN="UNKNOWN",n.NA="NA",n.EU="EU",n.AZURE_NA="AZURE_NA",n.AZURE_EU="AZURE_EU"},194:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ERROR_MESSAGES=void 0,e.ERROR_MESSAGES=Object.freeze({configPage:{setValidity:{isValidTypeBoolean:"isValid should be a boolean",messageTypeString:"message should be a string"}},entryField:{entry:{tagsShouldNotBeBlank:"Tags cannot be blank",tagsShouldBeArrayOfStrings:"Tags must be an array of strings"},frame:{dimensionHeightShouldBeNumber:"Dimension height must be a number",dimensionWidthShouldBeNumber:"Dimension width must be a number"}}}),e.default=function(t){return"Contentstack App SDK: "+t}},974:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getPreferredBodyElement=e.formatAppRegion=e.onError=e.onData=void 0;var r=n(699);e.onData=function(t){return"string"==typeof t.data?Promise.reject(t.data):Promise.resolve(t.data)},e.onError=function(t){return Promise.reject(t)},e.formatAppRegion=function(t){switch(t){case"NA":return r.Region.NA;case"EU":return r.Region.EU;case"AZURE_NA":return r.Region.AZURE_NA;case"AZURE_EU":return r.Region.AZURE_EU;default:return r.Region.UNKNOWN}},e.getPreferredBodyElement=function(t){var e,n=1/0,r=["HEADER","NAV","MAIN","SECTION","ARTICLE","ASIDE","FOOTER","DIV"],o=["SCRIPT","NOSCRIPT","STYLE","TEMPLATE"];return Array.from(t).forEach((function(t){var o=r.indexOf(t.nodeName);o>=0&&o{"use strict";t.exports=JSON.parse('{"name":"@contentstack/app-sdk","version":"1.6.0","types":"dist/src/index.d.ts","description":"This SDK helps connect to the development server of the Contentstack and sync the data.","main":"dist/index.js","repository":"https://github.com/contentstack/app-sdk","scripts":{"prepublish":"npm run build","build":"webpack","test":"jest","test:watch":"jest --watchAll","test:coverage":"jest --coverage --coverageDirectory=\\"coverage\\"","dev":"webpack --watch --mode development","lint":"eslint . --ext .ts --max-warnings=0","docs":"typedoc --out doc --entryPointStrategy expand ./src","prettier":"npx prettier src --check","prettier:fix":"npx prettier src --write","lint:fix":"eslint --fix","prepare":"npm run build && husky install","format":"npm run prettier:fix && npm run lint:fix"},"keywords":[],"author":{"name":"Contentstack","url":"https://www.contentstack.com/"},"maintainers":[{"name":"Deepak Kharah","email":"deepak.kharah@contentstack.com"}],"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.3.1","@testing-library/jest-dom":"^5.16.5","@types/chai":"^4.2.22","@types/jest":"^27.0.2","@types/post-robot":"^10.0.3","@types/react":"^17.0.18","@typescript-eslint/eslint-plugin":"^5.10.1","@typescript-eslint/parser":"^5.10.1","babel-loader":"^9.1.0","chai":"^4.3.4","css-loader":"^5.2.2","eslint":"^8.7.0","eslint-plugin-only-warn":"^1.1.0","husky":"^8.0.0","jest":"^27.3.1","lint-staged":"^13.1.0","react":"^17.0.2","slate":"^0.72.3","ts-jest":"^27.0.7","ts-loader":"^8.1.0","ts-node":"^10.3.0","typedoc":"^0.22.17","typescript":"^4.4.4","webpack":"^5.65.0","webpack-cli":"^4.9.1","webpack-dev-server":"^4.7.3"},"dependencies":{"loader-utils":"^3.2.1","post-robot":"^8.0.31","wolfy87-eventemitter":"^5.2.9"},"files":["dist"],"lint-staged":{"src/**/*.{ts,css,md}":["npm run prettier:fix ","npm run lint:fix"]}}')}},e={},function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r].call(i.exports,i,i.exports,n),i.exports}(607);var t,e})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ContentstackAppSDK=e():t.ContentstackAppSDK=e()}(this,(()=>{return t={957:function(t){"undefined"!=typeof self&&self,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/index.js")}({"./src/index.js":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={};function o(t){return"[object RegExp]"===Object.prototype.toString.call(t)}n.d(r,"cleanUpWindow",(function(){return Pt})),n.d(r,"Promise",(function(){return K})),n.d(r,"bridge",(function(){return St})),n.d(r,"init",(function(){return Tt})),n.d(r,"parent",(function(){return Ot})),n.d(r,"send",(function(){return pt})),n.d(r,"request",(function(){return ht})),n.d(r,"sendToParent",(function(){return yt})),n.d(r,"client",(function(){return vt})),n.d(r,"on",(function(){return gt})),n.d(r,"listen",(function(){return mt})),n.d(r,"once",(function(){return wt})),n.d(r,"listener",(function(){return bt})),n.d(r,"CONFIG",(function(){return R})),n.d(r,"CONSTANTS",(function(){return A})),n.d(r,"disable",(function(){return Et}));var i="mock:",a="file:",s="about:",u="Call was rejected by callee.\r\n";function c(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window).location.protocol===s}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t)try{if(t.parent&&t.parent!==t)return t.parent}catch(t){}}function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t&&!l(t))try{return t.opener}catch(t){}}function d(t){try{return t&&t.location&&t.location.href,!0}catch(t){}return!1}function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=t.location;if(!e)throw new Error("Can not read window location");var n=e.protocol;if(!n)throw new Error("Can not read window protocol");if(n===a)return a+"//";if(n===s){var r=l(t);return r&&d(r)?h(r):s+"//"}var o=e.host;if(!o)throw new Error("Can not read window host");return n+"//"+o}function p(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=h(t);return e&&t.mockDomain&&0===t.mockDomain.indexOf(i)?t.mockDomain:e}function y(t){try{if(t===window)return!0}catch(t){}try{var e=Object.getOwnPropertyDescriptor(t,"location");if(e&&!1===e.enumerable)return!1}catch(t){}try{if(c(t)&&d(t))return!0}catch(t){}try{if(h(t)===h(window))return!0}catch(t){}return!1}function v(t,e){if(!t||!e)return!1;var n=l(e);return n?n===t:-1!==function(t){var e=[];try{for(;t.parent!==t;)e.push(t.parent),t=t.parent}catch(t){}return e}(e).indexOf(t)}function _(t){var e=[],n=void 0;try{n=t.frames}catch(e){n=t}var r=void 0;try{r=n.length}catch(t){}if(0===r)return e;if(r){for(var o=0;o1&&void 0!==arguments[1])||arguments[1];try{if(t===window)return!1}catch(t){return!0}try{if(!t)return!0}catch(t){return!0}try{if(t.closed)return!0}catch(t){return!t||t.message!==u}if(e&&function(t){if(!y(t))return!1;try{if(t===window)return!0;if(c(t)&&d(t))return!0;if(p(window)===p(t))return!0}catch(t){}return!1}(t))try{if(t.mockclosed)return!0}catch(t){}try{if(!t.parent||!t.top)return!0}catch(t){}var n=function(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window;return f(t=t||window)||l(t)||void 0}function E(t,e){if("string"==typeof t){if("string"==typeof e)return"*"===t||e===t;if(o(e))return!1;if(Array.isArray(e))return!1}return o(t)?o(e)?t.toString()===e.toString():!Array.isArray(e)&&Boolean(e.match(t)):!!Array.isArray(t)&&(Array.isArray(e)?JSON.stringify(t)===JSON.stringify(e):!o(e)&&t.some((function(t){return E(t,e)})))}function O(t){try{if(t===window)return!0}catch(t){if(t&&t.message===u)return!0}try{if("[object Window]"===Object.prototype.toString.call(t))return!0}catch(t){if(t&&t.message===u)return!0}try{if(window.Window&&t instanceof window.Window)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.self===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.parent===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.top===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&"__unlikely_value__"===t.__cross_domain_utils_window_check__)return!1}catch(t){return!0}return!1}function P(t,e){for(var n=0;n>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var t=new WeakMap,e={};return Object.freeze(e),t.set(e,"__testvalue__"),"__testvalue__"===t.get(e)}catch(t){return!1}}())try{this.weakmap=new WeakMap}catch(t){}this.keys=[],this.values=[]}return t.prototype._cleanupClosedWindows=function(){for(var t=this.weakmap,e=this.keys,n=0;n1&&void 0!==arguments[1]?arguments[1]:1;if(e>=3)return"stringifyError stack overflow";try{if(!t)return"";if("string"==typeof t)return t;if(t instanceof Error){var n=t&&t.stack,r=t&&t.message;if(n&&r)return-1!==n.indexOf(r)?n:r+"\n"+n;if(n)return n;if(r)return r}return"function"==typeof t.toString?t.toString():Object.prototype.toString.call(t)}catch(t){return"Error while stringifying error: "+j(t,e+1)}}var M=function(t){if(!t)return t;var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}};function x(){}function C(){var t="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return t.charAt(Math.floor(Math.random()*t.length))}))}function L(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n>=100)throw new Error("Self-referential object passed, or object contained too many layers");var r=void 0;if("object"!==(void 0===t?"undefined":k(t))||null===t||Array.isArray(t)){if(!Array.isArray(t))throw new TypeError("Invalid type: "+(void 0===t?"undefined":k(t)));r=[]}else r={};return function(t,e){Array.isArray(t)?function(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},r=C(),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(f(t))}()?A.WINDOW_TYPES.POPUP:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(l(t))}()?A.WINDOW_TYPES.IFRAME:A.WINDOW_TYPES.FULLPAGE,i=p(window);return et({},e,n,{sourceDomain:i,id:e.id||r,windowType:o})}(t,e,{data:function(t,n,r){return L({obj:e.data},(function(e,r){return"function"==typeof e?Z(t,n,e,r.toString()):e instanceof Error?(o=e,{__type__:A.SERIALIZATION_TYPES.ERROR,__message__:j(o),__code__:o.code}):window.Promise&&e instanceof window.Promise?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):K.isPromise(e)?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.ZALGO_PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):I(e)?(i=e,{__type__:A.SERIALIZATION_TYPES.REGEX,__source__:i.source}):void 0;var o,i})).obj}(t,n),domain:n}),t===window&&!R.ALLOW_SAME_ORIGIN)throw new Error("Attemping to send message to self");if(w(t))throw new Error("Window is closed");var o=[],i=function(t,e,n){var r=void 0,o=void 0;try{if("{}"!==JSON.stringify({})&&(r=Object.prototype.toJSON,delete Object.prototype.toJSON),"{}"!==JSON.stringify({}))throw new Error("Can not correctly serialize JSON objects");if("[]"!==JSON.stringify([])&&(o=Array.prototype.toJSON,delete Array.prototype.toJSON),"[]"!==JSON.stringify([]))throw new Error("Can not correctly serialize JSON objects")}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}var i=JSON.stringify.call(this,t,null,2);try{r&&(Object.prototype.toJSON=r),o&&(Array.prototype.toJSON=o)}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}return i}(((r={})[A.WINDOW_PROPS.POSTROBOT]=e,r));return K.map(Object.keys(tt),(function(e){return K.try((function(){if(!R.ALLOWED_POST_MESSAGE_METHODS[e])throw new Error("Strategy disallowed: "+e);return tt[e](t,i,n)})).then((function(){return o.push(e+": success"),!0}),(function(t){return o.push(e+": "+j(t)+"\n"),!1}))})).then((function(t){var n=t.some(Boolean),r=e.type+" "+e.name+" "+(n?"success":"error")+":\n - "+o.join("\n - ")+"\n";if(!n)throw new Error(r)}))}))}H.responseListeners=H.responseListeners||{},H.requestListeners=H.requestListeners||{},H.WINDOW_WILDCARD=H.WINDOW_WILDCARD||new function(){},H.erroredResponseListeners=H.erroredResponseListeners||{};var rt;function ot(t){return H.responseListeners[t]}function it(t){delete H.responseListeners[t]}function at(t){return Boolean(H.erroredResponseListeners[t])}function st(t){var e=t.name,n=t.win,r=t.domain;if(n===A.WILDCARD&&(n=null),r===A.WILDCARD&&(r=null),!e)throw new Error("Name required to get request listener");var o=H.requestListeners[e];if(o)for(var i=0,a=[n,H.WINDOW_WILDCARD],s=null==a?0:a.length;i0&&void 0!==arguments[0]?arguments[0]:window;try{if(t.top)return t.top}catch(t){}if(l(t)===t)return t;try{if(v(window,t)&&window.top)return window.top}catch(t){}try{if(v(t,window)&&window.top)return window.top}catch(t){}for(var e=0,n=function t(e){for(var n=[],r=0,o=_(e),i=null==o?0:o.length;r1&&void 0!==arguments[1]?arguments[1]:5e3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Window",r=H.readyPromises.get(t);return r||(r=new K,H.readyPromises.set(t,r),-1!==e&&setTimeout((function(){return r.reject(new Error(n+" did not load after "+e+"ms"))}),e),r)}(i,t.timeout||R.CHILD_WINDOW_TIMEOUT)})).then((function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)&&!t)return X(i)})).then((function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)){if(!E(r,n))throw new Error("Remote window domain "+n+" does not match regex: "+r.toString());r=n}if("string"!=typeof r&&!Array.isArray(r))throw new TypeError("Expected domain to be a string or array");var o=r;return new K((function(n,r){var l=void 0;if(t.fireAndForget||function(t,e){H.responseListeners[t]=e}(a,l={name:e,window:i,domain:o,respond:function(t,e){t||(s=!0,u.splice(u.indexOf(c,1))),t?r(t):n(e)}}),nt(i,{type:A.POST_MESSAGE_TYPE.REQUEST,hash:a,name:e,data:t.data,fireAndForget:t.fireAndForget},o).catch(r),t.fireAndForget)return n();var f=R.ACK_TIMEOUT,d=t.timeout||R.RES_TIMEOUT,h=100;setTimeout((function n(){if(!s){if(w(i))return l.ack?r(new Error("Window closed for "+e+" before response")):r(new Error("Window closed for "+e+" before ack"));if(f=Math.max(f-h,0),-1!==d&&(d=Math.max(d-h,0)),l.ack){if(-1===d)return;h=Math.min(d,2e3)}else{if(0===f)return r(new Error("No ack for postMessage "+e+" in "+p()+" in "+R.ACK_TIMEOUT+"ms"));if(0===d)return r(new Error("No response for postMessage "+e+" in "+p()+" in "+(t.timeout||R.RES_TIMEOUT)+"ms"))}setTimeout(n,h)}}),h)}))}));return c.catch((function(){!function(t){H.erroredResponseListeners[t]=!0}(a),it(a)})),u.push(c),c}))}function pt(t,e,n,r){return(r=r||{}).window=t,r.name=e,r.data=n,ht(r)}function yt(t,e,n){var r=b();return r?pt(r,t,e,n):new K((function(t,e){return e(new Error("Window does not have a parent"))}))}function vt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!t.window)throw new Error("Expected options.window");var e=t.window;return{send:function(n,r){return pt(e,n,r,t)}}}H.receivedMessages=H.receivedMessages||[],H.receiveMessage=ft,H.requestPromises=H.requestPromises||new T,H.send=pt;var _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function mt(t){if(!t.name)throw new Error("Expected options.name");if(!t.handler)throw new Error("Expected options.handler");var e,n=t.name,r=t.window,o=t.domain,i={handler:t.handler,handleError:t.errorHandler||function(t){throw t},window:r,domain:o||A.WILDCARD,name:n},a=function t(e,n){var r=e.name,o=e.win,i=e.domain;if(!r||"string"!=typeof r)throw new Error("Name required to add request listener");if(Array.isArray(o)){for(var a=[],s=0,u=o,c=null==u?0:u.length;s1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"function"==typeof e&&(n=e,e={}),e=e||{},n=n||e.handler;var r=e.errorHandler,o=new K((function(o,i){(e=e||{}).name=t,e.once=!0,e.handler=function(t){if(o(t),n)return n(t)},e.errorHandler=function(t){if(i(t),r)return r(t)}})),i=mt(e);return o.cancel=i.cancel,o}function bt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{on:function(e,n){return gt(e,t,n)}}}function Et(){delete window[A.WINDOW_PROPS.POSTROBOT],window.removeEventListener("message",dt)}H.on=gt;var Ot=b();function Pt(t){var e=H.requestPromises.get(t);if(e)for(var n=0,r=null==e?0:e.length;n{t.exports=n(957),t.exports.default=t.exports},979:function(t,e,n){"use strict";var r=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=["file","reference","blocks","group","global_field"],r=function(){function t(t,e,n){this.uid=t.data.uid,this.data_type=t.data.schema.data_type,this.schema=t.data.schema,this._emitter=n;var r,o,i,a,s=(r=this,i=o=t.data.value,a=o,"file"===r.data_type&&(o?(i=o,a=!0===r.schema.multiple?o.map((function(t){return t.uid})):o.uid):!0===r.schema.multiple&&(i=[],a=[])),{resolvedData:i,unResolvedData:a});this._data=s.unResolvedData,this._resolvedData=s.resolvedData,this._connection=e,this._self=t.data.self||!1;var u=this;n.on("updateFields",(function(t){var e=u.uid.split("."),n=t.data;e.forEach((function(t){n&&(n=n[t])})),u._data!==n&&(u._data=n)}))}return t.prototype.setData=function(t){var e=this,r=this,o={data:t,uid:r.uid,self:r._self};return r._self||-1===n.indexOf(r.data_type)&&r.data_type?this._connection.sendToParent("setData",o).then((function(){return e._data=t,Promise.resolve(r)})).catch((function(t){return Promise.reject(t)})):Promise.reject(new Error("Cannot call set data for current field type"))},t.prototype.getData=function(t){var e=(void 0===t?{}:t).resolved;return void 0!==e&&e?this._resolvedData:this._data},t.prototype.setFocus=function(){return this._connection.sendToParent("focus")},t.prototype.onChange=function(t){var e=this;if(!t||"function"!=typeof t)throw Error("Callback must be a function");this._emitter.on("extensionFieldChange",(function(n){e._data=n.data,e._resolvedData=n.data,t(n.data)}))},t}();e.default=r},632:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),a=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&i(e,t,n);return a(e,t),e},u=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},c=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(974),o=function(){function t(){var t;if(!Object.prototype.hasOwnProperty.call(window,"iframeRef")){var e=(0,r.getPreferredBodyElement)(null===(t=null===document||void 0===document?void 0:document.body)||void 0===t?void 0:t.children);window.iframeRef=e}}return t.prototype.setBackgroundElement=function(t){window.iframeRef=t},t}();e.default=o},160:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},a=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getReferences=e.includeReference=e.includeSchema=e.includeContentType=e.includeOwner=e.environment=e.language=e.addQuery=e.addParam=e._type=e.mergeDeep=e.merge=e.transform=void 0,e.transform=function(t){return function(){switch(arguments.length){case 1:if(Array.isArray(arguments[0])||"string"==typeof arguments[0])return e=(e=this._query[t+"[BASE]"]||[]).concat(arguments[0]),this._query[t+"[BASE]"]=e,this;throw Error("Kindly provide valid parameters");case 2:var e;if("string"==typeof arguments[0]&&(Array.isArray(arguments[1])||"string"==typeof arguments[1]))return e=(e=this._query[t+"["+arguments[0]+"]"]||[]).concat(arguments[1]),this._query[t+"["+arguments[0]+"]"]=e,this;throw Error("Kindly provide valid parameters");default:throw Error("Kindly provide valid parameters")}}},e.merge=function(t,e){var n=t;return t&&e&&Object.keys(e).forEach((function(t){n[t]=e[t]})),n},e.mergeDeep=function(t,e){var n=t,r=this,o=function(t,e){var n=t;Object.keys(e).forEach((function(t){"object"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?o(n[t],e[t]):"array"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?n[t]=n[t].concat(e[t]):n[t]=e[t]}))};return o(n,e),n},e._type=function(t){var e=typeof t;return"object"===e&&Array.isArray(t)&&(e="array"),e},e.addParam=function(t,e){if(t&&"string"==typeof t&&e&&"string"==typeof e)return this._query[t]=e,this;throw Error("Kindly provide valid parameters.")},e.addQuery=function(t,e){if(t&&e&&"string"==typeof t)return this._query[t]=e,this;throw Error("First argument should be a String.")},e.language=function(t){if(t&&"string"==typeof t)return this._query.locale=t,this;throw Error("Argument should be a String.")},e.environment=function(t){if(t&&"string"==typeof t)return this._query.environment=t,this;throw Error("Argument should be a String.")},e.includeOwner=function(){return this._query.include_owner=!0,this},e.includeContentType=function(){return this._query.include_content_type=!0,this},e.includeSchema=function(){return this._query.include_schema=!0,this},e.includeReference=function(t){if(Array.isArray(t))for(var e=0;e{"use strict";function n(t){return Promise.reject(t)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t){this._connection=t}return t.prototype.get=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"get",key:t}).then((function(t){return Promise.resolve(t.data)})).catch(n)},t.prototype.getAll=function(){return this._connection.sendToParent("store",{action:"getAll"}).then((function(t){var e=t.data,n=void 0===e?{}:e;return Promise.resolve(n)})).catch(n)},t.prototype.set=function(t,e){if(!t||!e||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"set",key:t,value:e}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.remove=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"remove",key:t}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.clear=function(){return this._connection.sendToParent("store",{action:"clear"}).then((function(){return Promise.resolve(!0)})).catch(n)},t}();e.default=r},699:(t,e)=>{"use strict";var n,r;Object.defineProperty(e,"__esModule",{value:!0}),e.Region=e.OrganizationLocation=e.StackLocation=void 0,(r=e.StackLocation||(e.StackLocation={})).STACK_CONFIG="cs.cm.stack.config",r.DASHBOARD="cs.cm.stack.dashboard",r.SIDEBAR="cs.cm.stack.sidebar",r.CUSTOM_FIELD="cs.cm.stack.custom_field",r.RTE="cs.cm.stack.rte",(e.OrganizationLocation||(e.OrganizationLocation={})).ORG_CONFIG="cs.org.config",(n=e.Region||(e.Region={})).UNKNOWN="UNKNOWN",n.NA="NA",n.EU="EU",n.AZURE_NA="AZURE_NA",n.AZURE_EU="AZURE_EU"},194:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ERROR_MESSAGES=void 0,e.ERROR_MESSAGES=Object.freeze({configPage:{setValidity:{isValidTypeBoolean:"isValid should be a boolean",messageTypeString:"message should be a string"}},entryField:{entry:{tagsShouldNotBeBlank:"Tags cannot be blank",tagsShouldBeArrayOfStrings:"Tags must be an array of strings"},frame:{dimensionHeightShouldBeNumber:"Dimension height must be a number",dimensionWidthShouldBeNumber:"Dimension width must be a number"}}}),e.default=function(t){return"Contentstack App SDK: "+t}},974:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getPreferredBodyElement=e.formatAppRegion=e.onError=e.onData=void 0;var r=n(699);e.onData=function(t){return"string"==typeof t.data?Promise.reject(t.data):Promise.resolve(t.data)},e.onError=function(t){return Promise.reject(t)},e.formatAppRegion=function(t){switch(t){case"NA":return r.Region.NA;case"EU":return r.Region.EU;case"AZURE_NA":return r.Region.AZURE_NA;case"AZURE_EU":return r.Region.AZURE_EU;default:return r.Region.UNKNOWN}},e.getPreferredBodyElement=function(t){var e,n=1/0,r=["HEADER","NAV","MAIN","SECTION","ARTICLE","ASIDE","FOOTER","DIV"],o=["SCRIPT","NOSCRIPT","STYLE","TEMPLATE"];return Array.from(t).forEach((function(t){var o=r.indexOf(t.nodeName);o>=0&&o{"use strict";t.exports=JSON.parse('{"name":"@contentstack/app-sdk","version":"1.6.0","types":"dist/src/index.d.ts","description":"This SDK helps connect to the development server of the Contentstack and sync the data.","main":"dist/index.js","repository":"https://github.com/contentstack/app-sdk","scripts":{"prepublish":"npm run build","build":"webpack","test":"jest","test:watch":"jest --watchAll","test:coverage":"jest --coverage --coverageDirectory=\\"coverage\\"","dev":"webpack --watch --mode development","lint":"eslint . --ext .ts --max-warnings=0","docs":"typedoc --out doc --entryPointStrategy expand ./src","prettier":"npx prettier src --check","prettier:fix":"npx prettier src --write","lint:fix":"eslint --fix","prepare":"npm run build && husky install","format":"npm run prettier:fix && npm run lint:fix"},"keywords":[],"author":{"name":"Contentstack","url":"https://www.contentstack.com/"},"maintainers":[{"name":"Deepak Kharah","email":"deepak.kharah@contentstack.com"}],"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.3.1","@testing-library/jest-dom":"^5.16.5","@types/chai":"^4.2.22","@types/jest":"^27.0.2","@types/post-robot":"^10.0.3","@types/react":"^17.0.18","@typescript-eslint/eslint-plugin":"^5.10.1","@typescript-eslint/parser":"^5.10.1","babel-loader":"^9.1.0","chai":"^4.3.4","css-loader":"^5.2.2","eslint":"^8.7.0","eslint-plugin-only-warn":"^1.1.0","husky":"^8.0.0","jest":"^27.3.1","lint-staged":"^13.1.0","react":"^17.0.2","slate":"^0.72.3","ts-jest":"^27.0.7","ts-loader":"^8.1.0","ts-node":"^10.3.0","typedoc":"^0.22.17","typescript":"^4.4.4","webpack":"^5.65.0","webpack-cli":"^4.9.1","webpack-dev-server":"^4.7.3"},"dependencies":{"loader-utils":"^3.2.1","post-robot":"^8.0.31","wolfy87-eventemitter":"^5.2.9"},"files":["dist"],"lint-staged":{"src/**/*.{ts,css,md}":["npm run prettier:fix ","npm run lint:fix"]}}')}},e={},function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r].call(i.exports,i,i.exports,n),i.exports}(607);var t,e})); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 98483c4..9cb5edb 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":"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","sources":["webpack://ContentstackAppSDK/webpack/universalModuleDefinition","webpack://ContentstackAppSDK/./node_modules/post-robot/dist/post-robot.js","webpack://ContentstackAppSDK/./node_modules/post-robot/index.js","webpack://ContentstackAppSDK/./src/AssetSidebarWidget.ts","webpack://ContentstackAppSDK/./src/RTE/index.tsx","webpack://ContentstackAppSDK/./src/appConfig/index.ts","webpack://ContentstackAppSDK/./src/entry.ts","webpack://ContentstackAppSDK/./src/extension.ts","webpack://ContentstackAppSDK/./src/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/entry.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/frame.ts","webpack://ContentstackAppSDK/./src/index.ts","webpack://ContentstackAppSDK/./src/metadata.ts","webpack://ContentstackAppSDK/./src/modal.ts","webpack://ContentstackAppSDK/./src/stack/api/asset/index.ts","webpack://ContentstackAppSDK/./src/stack/api/base.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/entry.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/index.ts","webpack://ContentstackAppSDK/./src/stack/api/query.ts","webpack://ContentstackAppSDK/./src/stack/index.ts","webpack://ContentstackAppSDK/./src/stack/utils.ts","webpack://ContentstackAppSDK/./src/store.ts","webpack://ContentstackAppSDK/./src/types.ts","webpack://ContentstackAppSDK/./src/utils/errorMessages.ts","webpack://ContentstackAppSDK/./src/utils/utils.ts","webpack://ContentstackAppSDK/./src/window.ts","webpack://ContentstackAppSDK/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://ContentstackAppSDK/webpack/bootstrap","webpack://ContentstackAppSDK/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ContentstackAppSDK\"] = factory();\n\telse\n\t\troot[\"ContentstackAppSDK\"] = factory();\n})(this, () => {\nreturn ","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"postRobot\", [], factory) : \"object\" == typeof exports ? exports.postRobot = factory() : root.postRobot = factory();\n}(\"undefined\" != typeof self ? self : this, function() {\n return function(modules) {\n var installedModules = {};\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n module.l = !0;\n return module.exports;\n }\n __webpack_require__.m = modules;\n __webpack_require__.c = installedModules;\n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n configurable: !1,\n enumerable: !0,\n get: getter\n });\n };\n __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n __webpack_require__.d(getter, \"a\", getter);\n return getter;\n };\n __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n __webpack_require__.p = \"\";\n return __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n }({\n \"./src/index.js\": function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n Object.defineProperty(__webpack_exports__, \"__esModule\", {\n value: !0\n });\n var interface_namespaceObject = {};\n __webpack_require__.d(interface_namespaceObject, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(interface_namespaceObject, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(interface_namespaceObject, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(interface_namespaceObject, \"init\", function() {\n return init;\n });\n __webpack_require__.d(interface_namespaceObject, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(interface_namespaceObject, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(interface_namespaceObject, \"request\", function() {\n return request;\n });\n __webpack_require__.d(interface_namespaceObject, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(interface_namespaceObject, \"client\", function() {\n return client;\n });\n __webpack_require__.d(interface_namespaceObject, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(interface_namespaceObject, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(interface_namespaceObject, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(interface_namespaceObject, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(interface_namespaceObject, \"disable\", function() {\n return disable;\n });\n function isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n var PROTOCOL = {\n MOCK: \"mock:\",\n FILE: \"file:\",\n ABOUT: \"about:\"\n }, WILDCARD = \"*\", IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n function isAboutProtocol() {\n return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window).location.protocol === PROTOCOL.ABOUT;\n }\n function getParent() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win) try {\n if (win.parent && win.parent !== win) return win.parent;\n } catch (err) {}\n }\n function getOpener() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win && !getParent(win)) try {\n return win.opener;\n } catch (err) {}\n }\n function canReadFromWindow(win) {\n try {\n win && win.location && win.location.href;\n return !0;\n } catch (err) {}\n return !1;\n }\n function getActualDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, location = win.location;\n if (!location) throw new Error(\"Can not read window location\");\n var protocol = location.protocol;\n if (!protocol) throw new Error(\"Can not read window protocol\");\n if (protocol === PROTOCOL.FILE) return PROTOCOL.FILE + \"//\";\n if (protocol === PROTOCOL.ABOUT) {\n var parent = getParent(win);\n return parent && canReadFromWindow(parent) ? getActualDomain(parent) : PROTOCOL.ABOUT + \"//\";\n }\n var host = location.host;\n if (!host) throw new Error(\"Can not read window host\");\n return protocol + \"//\" + host;\n }\n function utils_getDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, domain = getActualDomain(win);\n return domain && win.mockDomain && 0 === win.mockDomain.indexOf(PROTOCOL.MOCK) ? win.mockDomain : domain;\n }\n function isActuallySameDomain(win) {\n try {\n if (win === window) return !0;\n } catch (err) {}\n try {\n var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n if (desc && !1 === desc.enumerable) return !1;\n } catch (err) {}\n try {\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n } catch (err) {}\n try {\n if (getActualDomain(win) === getActualDomain(window)) return !0;\n } catch (err) {}\n return !1;\n }\n function isAncestorParent(parent, child) {\n if (!parent || !child) return !1;\n var childParent = getParent(child);\n return childParent ? childParent === parent : -1 !== function(win) {\n var result = [];\n try {\n for (;win.parent !== win; ) {\n result.push(win.parent);\n win = win.parent;\n }\n } catch (err) {}\n return result;\n }(child).indexOf(parent);\n }\n function getFrames(win) {\n var result = [], frames = void 0;\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n var len = void 0;\n try {\n len = frames.length;\n } catch (err) {}\n if (0 === len) return result;\n if (len) {\n for (var i = 0; i < len; i++) {\n var frame = void 0;\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n result.push(frame);\n }\n return result;\n }\n for (var _i = 0; _i < 100; _i++) {\n var _frame = void 0;\n try {\n _frame = frames[_i];\n } catch (err) {\n return result;\n }\n if (!_frame) return result;\n result.push(_frame);\n }\n return result;\n }\n var iframeWindows = [], iframeFrames = [];\n function isWindowClosed(win) {\n var allowMock = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n try {\n if (win === window) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (!win) return !0;\n } catch (err) {\n return !0;\n }\n try {\n if (win.closed) return !0;\n } catch (err) {\n return !err || err.message !== IE_WIN_ACCESS_ERROR;\n }\n if (allowMock && function(win) {\n if (!isActuallySameDomain(win)) return !1;\n try {\n if (win === window) return !0;\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n if (utils_getDomain(window) === utils_getDomain(win)) return !0;\n } catch (err) {}\n return !1;\n }(win)) try {\n if (win.mockclosed) return !0;\n } catch (err) {}\n try {\n if (!win.parent || !win.top) return !0;\n } catch (err) {}\n var iframeIndex = function(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }(iframeWindows, win);\n if (-1 !== iframeIndex) {\n var frame = iframeFrames[iframeIndex];\n if (frame && function(frame) {\n if (!frame.contentWindow) return !0;\n if (!frame.parentNode) return !0;\n var doc = frame.ownerDocument;\n return !(!doc || !doc.documentElement || doc.documentElement.contains(frame));\n }(frame)) return !0;\n }\n return !1;\n }\n function getAncestor() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return getOpener(win = win || window) || getParent(win) || void 0;\n }\n function matchDomain(pattern, origin) {\n if (\"string\" == typeof pattern) {\n if (\"string\" == typeof origin) return pattern === WILDCARD || origin === pattern;\n if (isRegex(origin)) return !1;\n if (Array.isArray(origin)) return !1;\n }\n return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some(function(subpattern) {\n return matchDomain(subpattern, origin);\n }));\n }\n function isWindow(obj) {\n try {\n if (obj === window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (\"[object Window]\" === Object.prototype.toString.call(obj)) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (window.Window && obj instanceof window.Window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.self === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.parent === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.top === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n } catch (err) {\n return !0;\n }\n return !1;\n }\n function util_safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }\n var _ALLOWED_POST_MESSAGE, weakmap_CrossDomainSafeWeakMap = function() {\n function CrossDomainSafeWeakMap() {\n !function(instance, Constructor) {\n if (!(instance instanceof CrossDomainSafeWeakMap)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n if (function() {\n if (\"undefined\" == typeof WeakMap) return !1;\n if (void 0 === Object.freeze) return !1;\n try {\n var testWeakMap = new WeakMap(), testKey = {};\n Object.freeze(testKey);\n testWeakMap.set(testKey, \"__testvalue__\");\n return \"__testvalue__\" === testWeakMap.get(testKey);\n } catch (err) {\n return !1;\n }\n }()) try {\n this.weakmap = new WeakMap();\n } catch (err) {}\n this.keys = [];\n this.values = [];\n }\n CrossDomainSafeWeakMap.prototype._cleanupClosedWindows = function() {\n for (var weakmap = this.weakmap, keys = this.keys, i = 0; i < keys.length; i++) {\n var value = keys[i];\n if (isWindow(value) && isWindowClosed(value)) {\n if (weakmap) try {\n weakmap.delete(value);\n } catch (err) {}\n keys.splice(i, 1);\n this.values.splice(i, 1);\n i -= 1;\n }\n }\n };\n CrossDomainSafeWeakMap.prototype.isSafeToReadWrite = function(key) {\n if (isWindow(key)) return !1;\n try {\n key && key.self;\n key && key[this.name];\n } catch (err) {\n return !1;\n }\n return !0;\n };\n CrossDomainSafeWeakMap.prototype.set = function(key, value) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var name = this.name, entry = key[name];\n entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: !0\n });\n return;\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, values = this.values, index = util_safeIndexOf(keys, key);\n if (-1 === index) {\n keys.push(key);\n values.push(value);\n } else values[index] = value;\n };\n CrossDomainSafeWeakMap.prototype.get = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return weakmap.get(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return entry && entry[0] === key ? entry[1] : void 0;\n } catch (err) {}\n this._cleanupClosedWindows();\n var index = util_safeIndexOf(this.keys, key);\n if (-1 !== index) return this.values[index];\n };\n CrossDomainSafeWeakMap.prototype.delete = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, index = util_safeIndexOf(keys, key);\n if (-1 !== index) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n };\n CrossDomainSafeWeakMap.prototype.has = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return !0;\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return !(!entry || entry[0] !== key);\n } catch (err) {}\n this._cleanupClosedWindows();\n return -1 !== util_safeIndexOf(this.keys, key);\n };\n CrossDomainSafeWeakMap.prototype.getOrSet = function(key, getter) {\n if (this.has(key)) return this.get(key);\n var value = getter();\n this.set(key, value);\n return value;\n };\n return CrossDomainSafeWeakMap;\n }(), constants_CONSTANTS = {\n POST_MESSAGE_TYPE: {\n REQUEST: \"postrobot_message_request\",\n RESPONSE: \"postrobot_message_response\",\n ACK: \"postrobot_message_ack\"\n },\n POST_MESSAGE_ACK: {\n SUCCESS: \"success\",\n ERROR: \"error\"\n },\n POST_MESSAGE_NAMES: {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_ready\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n },\n WINDOW_TYPES: {\n FULLPAGE: \"fullpage\",\n POPUP: \"popup\",\n IFRAME: \"iframe\"\n },\n WINDOW_PROPS: {\n POSTROBOT: \"__postRobot__\"\n },\n SERIALIZATION_TYPES: {\n METHOD: \"postrobot_method\",\n ERROR: \"postrobot_error\",\n PROMISE: \"postrobot_promise\",\n ZALGO_PROMISE: \"postrobot_zalgo_promise\",\n REGEX: \"regex\"\n },\n SEND_STRATEGIES: {\n POST_MESSAGE: \"postrobot_post_message\",\n BRIDGE: \"postrobot_bridge\",\n GLOBAL: \"postrobot_global\"\n },\n MOCK_PROTOCOL: \"mock:\",\n FILE_PROTOCOL: \"file:\",\n BRIDGE_NAME_PREFIX: \"__postrobot_bridge__\",\n POSTROBOT_PROXY: \"__postrobot_proxy__\",\n WILDCARD: \"*\"\n }, POST_MESSAGE_NAMES = {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_hello\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n }, CONFIG = (Object.keys(POST_MESSAGE_NAMES).map(function(key) {\n return POST_MESSAGE_NAMES[key];\n }), {\n ALLOW_POSTMESSAGE_POPUP: !(\"__ALLOW_POSTMESSAGE_POPUP__\" in window) || window.__ALLOW_POSTMESSAGE_POPUP__,\n BRIDGE_TIMEOUT: 5e3,\n CHILD_WINDOW_TIMEOUT: 5e3,\n ACK_TIMEOUT: -1 !== window.navigator.userAgent.match(/MSIE/i) ? 1e4 : 2e3,\n RES_TIMEOUT: -1,\n ALLOWED_POST_MESSAGE_METHODS: (_ALLOWED_POST_MESSAGE = {}, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = !0, \n _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.BRIDGE] = !0, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.GLOBAL] = !0, \n _ALLOWED_POST_MESSAGE),\n ALLOW_SAME_ORIGIN: !1\n });\n 0 === window.location.href.indexOf(constants_CONSTANTS.FILE_PROTOCOL) && (CONFIG.ALLOW_POSTMESSAGE_POPUP = !0);\n var _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function stringifyError(err) {\n var level = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\n if (level >= 3) return \"stringifyError stack overflow\";\n try {\n if (!err) return \"\";\n if (\"string\" == typeof err) return err;\n if (err instanceof Error) {\n var stack = err && err.stack, message = err && err.message;\n if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n if (stack) return stack;\n if (message) return message;\n }\n return \"function\" == typeof err.toString ? err.toString() : Object.prototype.toString.call(err);\n } catch (newErr) {\n return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n }\n }\n var once = function(method) {\n if (!method) return method;\n var called = !1;\n return function() {\n if (!called) {\n called = !0;\n return method.apply(this, arguments);\n }\n };\n };\n function lib_util_noop() {}\n function uniqueID() {\n var chars = \"0123456789abcdef\";\n return \"xxxxxxxxxx\".replace(/./g, function() {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n }\n function replaceObject(item, callback) {\n var depth = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\n if (depth >= 100) throw new Error(\"Self-referential object passed, or object contained too many layers\");\n var newobj = void 0;\n if (\"object\" !== (void 0 === item ? \"undefined\" : _typeof(item)) || null === item || Array.isArray(item)) {\n if (!Array.isArray(item)) throw new TypeError(\"Invalid type: \" + (void 0 === item ? \"undefined\" : _typeof(item)));\n newobj = [];\n } else newobj = {};\n !function(item, callback) {\n Array.isArray(item) ? function(item, callback) {\n for (var i = 0; i < item.length; i++) callback(item[i], i);\n }(item, callback) : \"object\" === (void 0 === item ? \"undefined\" : _typeof(item)) && null !== item && function(item, callback) {\n for (var _key in item) item.hasOwnProperty(_key) && callback(item[_key], _key);\n }(item, callback);\n }(item, function(childItem, key) {\n var result = callback(childItem, key);\n void 0 !== result ? newobj[key] = result : \"object\" === (void 0 === childItem ? \"undefined\" : _typeof(childItem)) && null !== childItem ? newobj[key] = replaceObject(childItem, callback, depth + 1) : newobj[key] = childItem;\n });\n return newobj;\n }\n function util_isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n function utils_isPromise(item) {\n try {\n if (!item) return !1;\n if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n var _toString = {}.toString;\n if (_toString) {\n var name = _toString.call(item);\n if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n }\n if (\"function\" == typeof item.then) return !0;\n } catch (err) {\n return !1;\n }\n return !1;\n }\n var dispatchedErrors = [], possiblyUnhandledPromiseHandlers = [], activeCount = 0, flushPromise = void 0;\n function flushActive() {\n if (!activeCount && flushPromise) {\n var promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n }\n function startActive() {\n activeCount += 1;\n }\n function endActive() {\n activeCount -= 1;\n flushActive();\n }\n var promise_ZalgoPromise = function() {\n function ZalgoPromise(handler) {\n var _this = this;\n !function(instance, Constructor) {\n if (!(instance instanceof ZalgoPromise)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.resolved = !1;\n this.rejected = !1;\n this.errorHandled = !1;\n this.handlers = [];\n if (handler) {\n var _result = void 0, _error = void 0, resolved = !1, rejected = !1, isAsync = !1;\n startActive();\n try {\n handler(function(res) {\n if (isAsync) _this.resolve(res); else {\n resolved = !0;\n _result = res;\n }\n }, function(err) {\n if (isAsync) _this.reject(err); else {\n rejected = !0;\n _error = err;\n }\n });\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n endActive();\n isAsync = !0;\n resolved ? this.resolve(_result) : rejected && this.reject(_error);\n }\n }\n ZalgoPromise.prototype.resolve = function(result) {\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n this.resolved = !0;\n this.value = result;\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.reject = function(error) {\n var _this2 = this;\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n if (!error) {\n var _err = error && \"function\" == typeof error.toString ? error.toString() : Object.prototype.toString.call(error);\n error = new Error(\"Expected reject to be called with Error, got \" + _err);\n }\n this.rejected = !0;\n this.error = error;\n this.errorHandled || setTimeout(function() {\n _this2.errorHandled || function(err, promise) {\n if (-1 === dispatchedErrors.indexOf(err)) {\n dispatchedErrors.push(err);\n setTimeout(function() {\n throw err;\n }, 1);\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n }(error, _this2);\n }, 1);\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.asyncReject = function(error) {\n this.errorHandled = !0;\n this.reject(error);\n return this;\n };\n ZalgoPromise.prototype.dispatch = function() {\n var dispatching = this.dispatching, resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n if (!dispatching && (resolved || rejected)) {\n this.dispatching = !0;\n startActive();\n for (var chain = function(firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n secondPromise.resolve(res);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < handlers.length; i++) {\n var _handlers$i = handlers[i], _onSuccess = _handlers$i.onSuccess, _onError = _handlers$i.onError, _promise = _handlers$i.promise, _result2 = void 0;\n if (resolved) try {\n _result2 = _onSuccess ? _onSuccess(this.value) : this.value;\n } catch (err) {\n _promise.reject(err);\n continue;\n } else if (rejected) {\n if (!_onError) {\n _promise.reject(this.error);\n continue;\n }\n try {\n _result2 = _onError(this.error);\n } catch (err) {\n _promise.reject(err);\n continue;\n }\n }\n if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error);\n _result2.errorHandled = !0;\n } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error) : chain(_result2, _promise) : _promise.resolve(_result2);\n }\n handlers.length = 0;\n this.dispatching = !1;\n endActive();\n }\n };\n ZalgoPromise.prototype.then = function(onSuccess, onError) {\n if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n var promise = new ZalgoPromise();\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n this.errorHandled = !0;\n this.dispatch();\n return promise;\n };\n ZalgoPromise.prototype.catch = function(onError) {\n return this.then(void 0, onError);\n };\n ZalgoPromise.prototype.finally = function(onFinally) {\n if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n return this.then(function(result) {\n return ZalgoPromise.try(onFinally).then(function() {\n return result;\n });\n }, function(err) {\n return ZalgoPromise.try(onFinally).then(function() {\n throw err;\n });\n });\n };\n ZalgoPromise.prototype.timeout = function(time, err) {\n var _this3 = this;\n if (this.resolved || this.rejected) return this;\n var timeout = setTimeout(function() {\n _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n }, time);\n return this.then(function(result) {\n clearTimeout(timeout);\n return result;\n });\n };\n ZalgoPromise.prototype.toPromise = function() {\n if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n return Promise.resolve(this);\n };\n ZalgoPromise.resolve = function(value) {\n return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise(function(resolve, reject) {\n return value.then(resolve, reject);\n }) : new ZalgoPromise().resolve(value);\n };\n ZalgoPromise.reject = function(error) {\n return new ZalgoPromise().reject(error);\n };\n ZalgoPromise.asyncReject = function(error) {\n return new ZalgoPromise().asyncReject(error);\n };\n ZalgoPromise.all = function(promises) {\n var promise = new ZalgoPromise(), count = promises.length, results = [];\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n for (var chain = function(i, firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n results[i] = res;\n 0 == (count -= 1) && promise.resolve(results);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < promises.length; i++) {\n var prom = promises[i];\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!utils_isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n 0 === count && promise.resolve(results);\n return promise;\n };\n ZalgoPromise.hash = function(promises) {\n var result = {};\n return ZalgoPromise.all(Object.keys(promises).map(function(key) {\n return ZalgoPromise.resolve(promises[key]).then(function(value) {\n result[key] = value;\n });\n })).then(function() {\n return result;\n });\n };\n ZalgoPromise.map = function(items, method) {\n return ZalgoPromise.all(items.map(method));\n };\n ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n return function(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n return {\n cancel: function() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n }(handler);\n };\n ZalgoPromise.try = function(method, context, args) {\n if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n var result = void 0;\n startActive();\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n endActive();\n return ZalgoPromise.resolve(result);\n };\n ZalgoPromise.delay = function(_delay) {\n return new ZalgoPromise(function(resolve) {\n setTimeout(resolve, _delay);\n });\n };\n ZalgoPromise.isPromise = function(value) {\n return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n };\n ZalgoPromise.flush = function() {\n return function(Zalgo) {\n var promise = flushPromise = flushPromise || new ZalgoPromise();\n flushActive();\n return promise;\n }();\n };\n return ZalgoPromise;\n }(), global = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n global.registerSelf = function() {};\n var serialize__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.methods = global.methods || new weakmap_CrossDomainSafeWeakMap();\n var listenForMethods = once(function() {\n global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n origin: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin, data = _ref.data, methods = global.methods.get(source);\n if (!methods) throw new Error(\"Could not find any methods this window has privileges to call\");\n var meth = methods[data.id];\n if (!meth) throw new Error(\"Could not find method with id: \" + data.id);\n if (!matchDomain(meth.domain, origin)) throw new Error(\"Method domain \" + meth.domain + \" does not match origin \" + origin);\n return promise_ZalgoPromise.try(function() {\n return meth.method.apply({\n source: source,\n origin: origin,\n data: data\n }, data.args);\n }).then(function(result) {\n return {\n result: result,\n id: data.id,\n name: data.name\n };\n });\n });\n });\n function isSerialized(item, type) {\n return \"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item && item.__type__ === type;\n }\n function serializeMethod(destination, domain, method, name) {\n var id = uniqueID(), methods = global.methods.get(destination);\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n methods[id] = {\n domain: domain,\n method: method\n };\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n }\n function deserializeMethod(source, origin, obj) {\n function wrapper() {\n var args = Array.prototype.slice.call(arguments);\n return global.send(source, constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args: args\n }, {\n domain: origin,\n timeout: -1\n }).then(function(_ref2) {\n return _ref2.data.result;\n }, function(err) {\n throw err;\n });\n }\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = !0;\n wrapper.source = source;\n wrapper.origin = origin;\n return wrapper;\n }\n function deserializeZalgoPromise(source, origin, prom) {\n return new promise_ZalgoPromise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n });\n }\n global.readyPromises = global.readyPromises || new weakmap_CrossDomainSafeWeakMap();\n function sayHello(win) {\n return global.send(win, constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, {\n domain: constants_CONSTANTS.WILDCARD,\n timeout: -1\n }).then(function(_ref2) {\n return {\n origin: _ref2.origin\n };\n });\n }\n var SEND_MESSAGE_STRATEGIES = {};\n SEND_MESSAGE_STRATEGIES[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = function(win, serializedMessage, domain) {\n (Array.isArray(domain) ? domain : \"string\" == typeof domain ? [ domain ] : [ constants_CONSTANTS.WILDCARD ]).map(function(dom) {\n if (0 === dom.indexOf(constants_CONSTANTS.MOCK_PROTOCOL)) {\n if (window.location.protocol === constants_CONSTANTS.FILE_PROTOCOL) return constants_CONSTANTS.WILDCARD;\n if (!isActuallySameDomain(win)) throw new Error(\"Attempting to send messsage to mock domain \" + dom + \", but window is actually cross-domain\");\n return getActualDomain(win);\n }\n return 0 === dom.indexOf(constants_CONSTANTS.FILE_PROTOCOL) ? constants_CONSTANTS.WILDCARD : dom;\n }).forEach(function(dom) {\n return win.postMessage(serializedMessage, dom);\n });\n };\n var _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n };\n function sendMessage(win, message, domain) {\n return promise_ZalgoPromise.try(function() {\n var _jsonStringify;\n message = function(win, message) {\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, id = uniqueID(), type = function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getOpener(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.POPUP : function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getParent(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.IFRAME : constants_CONSTANTS.WINDOW_TYPES.FULLPAGE, sourceDomain = utils_getDomain(window);\n return _extends({}, message, options, {\n sourceDomain: sourceDomain,\n id: message.id || id,\n windowType: type\n });\n }(win, message, {\n data: function(destination, domain, obj) {\n return replaceObject({\n obj: message.data\n }, function(item, key) {\n return \"function\" == typeof item ? serializeMethod(destination, domain, item, key.toString()) : item instanceof Error ? (err = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n __code__: err.code\n }) : window.Promise && item instanceof window.Promise ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : promise_ZalgoPromise.isPromise(item) ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : util_isRegex(item) ? (regex = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n }) : void 0;\n var err, regex;\n }).obj;\n }(win, domain),\n domain: domain\n });\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) throw new Error(\"Attemping to send message to self\");\n if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n var messages = [], serializedMessage = function(obj, replacer, indent) {\n var objectToJSON = void 0, arrayToJSON = void 0;\n try {\n if (\"{}\" !== JSON.stringify({})) {\n objectToJSON = Object.prototype.toJSON;\n delete Object.prototype.toJSON;\n }\n if (\"{}\" !== JSON.stringify({})) throw new Error(\"Can not correctly serialize JSON objects\");\n if (\"[]\" !== JSON.stringify([])) {\n arrayToJSON = Array.prototype.toJSON;\n delete Array.prototype.toJSON;\n }\n if (\"[]\" !== JSON.stringify([])) throw new Error(\"Can not correctly serialize JSON objects\");\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n var result = JSON.stringify.call(this, obj, null, 2);\n try {\n objectToJSON && (Object.prototype.toJSON = objectToJSON);\n arrayToJSON && (Array.prototype.toJSON = arrayToJSON);\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n return result;\n }(((_jsonStringify = {})[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = message, \n _jsonStringify));\n return promise_ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), function(strategyName) {\n return promise_ZalgoPromise.try(function() {\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) throw new Error(\"Strategy disallowed: \" + strategyName);\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n }).then(function() {\n messages.push(strategyName + \": success\");\n return !0;\n }, function(err) {\n messages.push(strategyName + \": \" + stringifyError(err) + \"\\n\");\n return !1;\n });\n }).then(function(results) {\n var success = results.some(Boolean), status = message.type + \" \" + message.name + \" \" + (success ? \"success\" : \"error\") + \":\\n - \" + messages.join(\"\\n - \") + \"\\n\";\n if (!success) throw new Error(status);\n });\n });\n }\n global.responseListeners = global.responseListeners || {};\n global.requestListeners = global.requestListeners || {};\n global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new function() {}();\n global.erroredResponseListeners = global.erroredResponseListeners || {};\n var _RECEIVE_MESSAGE_TYPE, __DOMAIN_REGEX__ = \"__domain_regex__\";\n function getResponseListener(hash) {\n return global.responseListeners[hash];\n }\n function deleteResponseListener(hash) {\n delete global.responseListeners[hash];\n }\n function isResponseListenerErrored(hash) {\n return Boolean(global.erroredResponseListeners[hash]);\n }\n function getRequestListener(_ref) {\n var name = _ref.name, win = _ref.win, domain = _ref.domain;\n win === constants_CONSTANTS.WILDCARD && (win = null);\n domain === constants_CONSTANTS.WILDCARD && (domain = null);\n if (!name) throw new Error(\"Name required to get request listener\");\n var nameListeners = global.requestListeners[name];\n if (nameListeners) for (var _i2 = 0, _ref3 = [ win, global.WINDOW_WILDCARD ], _length2 = null == _ref3 ? 0 : _ref3.length; _i2 < _length2; _i2++) {\n var winQualifier = _ref3[_i2], winListeners = winQualifier && nameListeners.get(winQualifier);\n if (winListeners) {\n if (domain && \"string\" == typeof domain) {\n if (winListeners[domain]) return winListeners[domain];\n if (winListeners[__DOMAIN_REGEX__]) for (var _i4 = 0, _winListeners$__DOMAI2 = winListeners[__DOMAIN_REGEX__], _length4 = null == _winListeners$__DOMAI2 ? 0 : _winListeners$__DOMAI2.length; _i4 < _length4; _i4++) {\n var _ref5 = _winListeners$__DOMAI2[_i4], regex = _ref5.regex, listener = _ref5.listener;\n if (matchDomain(regex, domain)) return listener;\n }\n }\n if (winListeners[constants_CONSTANTS.WILDCARD]) return winListeners[constants_CONSTANTS.WILDCARD];\n }\n }\n }\n var types__extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }, RECEIVE_MESSAGE_TYPES = ((_RECEIVE_MESSAGE_TYPE = {})[constants_CONSTANTS.POST_MESSAGE_TYPE.ACK] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message ack for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n options.ack = !0;\n }\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST] = function(source, origin, message) {\n var options = getRequestListener({\n name: message.name,\n win: source,\n domain: origin\n });\n function respond(data) {\n return message.fireAndForget || isWindowClosed(source) ? promise_ZalgoPromise.resolve() : sendMessage(source, types__extends({\n target: message.originalSource,\n hash: message.hash,\n name: message.name\n }, data), origin);\n }\n return promise_ZalgoPromise.all([ respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.ACK\n }), promise_ZalgoPromise.try(function() {\n if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Request origin \" + origin + \" does not match domain \" + options.domain.toString());\n var data = message.data;\n return options.handler({\n source: source,\n origin: origin,\n data: data\n });\n }).then(function(data) {\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data: data\n });\n }, function(err) {\n var error = stringifyError(err).replace(/^Error: /, \"\"), code = err.code;\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error: error,\n code: code\n });\n }) ]).then(lib_util_noop).catch(function(err) {\n if (options && options.handleError) return options.handleError(err);\n throw err;\n });\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var pattern, options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message response for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() : pattern.toString()));\n deleteResponseListener(message.hash);\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n var err = new Error(message.error);\n message.code && (err.code = message.code);\n return options.respond(err, null);\n }\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n var data = message.data || message.response;\n return options.respond(null, {\n source: source,\n origin: origin,\n data: data\n });\n }\n }\n }, _RECEIVE_MESSAGE_TYPE), receive__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.receivedMessages = global.receivedMessages || [];\n function receiveMessage(event) {\n if (window && !window.closed) {\n try {\n if (!event.source) return;\n } catch (err) {\n return;\n }\n var source = event.source, origin = event.origin, message = function(message) {\n var item, parsedMessage = void 0;\n try {\n parsedMessage = (item = message, JSON.parse(item));\n } catch (err) {\n return;\n }\n if (parsedMessage && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && (parsedMessage = parsedMessage[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT]) && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && parsedMessage.type && \"string\" == typeof parsedMessage.type && RECEIVE_MESSAGE_TYPES[parsedMessage.type]) return parsedMessage;\n }(event.data);\n if (message) {\n if (!message.sourceDomain || \"string\" != typeof message.sourceDomain) throw new Error(\"Expected message to have sourceDomain\");\n 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.MOCK_PROTOCOL) && 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.FILE_PROTOCOL) || (origin = message.sourceDomain);\n if (-1 === global.receivedMessages.indexOf(message.id)) {\n global.receivedMessages.push(message.id);\n if (!isWindowClosed(source) || message.fireAndForget) {\n message.data && (message.data = function(source, origin, obj) {\n return replaceObject({\n obj: message.data\n }, function(item) {\n if (\"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item) return isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.METHOD) ? deserializeMethod(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ERROR) ? function(source, origin, obj) {\n var err = new Error(obj.__message__);\n obj.__code__ && (err.code = obj.__code__);\n return err;\n }(0, 0, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE) ? function(source, origin, prom) {\n return window.Promise ? new window.Promise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n }) : deserializeZalgoPromise(source, origin, prom);\n }(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE) ? deserializeZalgoPromise(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.REGEX) ? function(source, origin, item) {\n return new RegExp(item.__source__);\n }(0, 0, item) : void 0;\n }).obj;\n }(source, origin));\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n }\n }\n }\n }\n }\n function messageListener(event) {\n try {\n event.source;\n } catch (err) {\n return;\n }\n receiveMessage({\n source: event.source || event.sourceElement,\n origin: event.origin || event.originalEvent && event.originalEvent.origin,\n data: event.data\n });\n }\n global.receiveMessage = receiveMessage;\n global.requestPromises = global.requestPromises || new weakmap_CrossDomainSafeWeakMap();\n function request(options) {\n return promise_ZalgoPromise.try(function() {\n if (!options.name) throw new Error(\"Expected options.name\");\n var name = options.name, targetWindow = void 0, domain = void 0;\n if (\"string\" == typeof options.window) {\n var el = document.getElementById(options.window);\n if (!el) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be a valid element id\");\n if (\"iframe\" !== el.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (!el.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n targetWindow = el.contentWindow;\n } else if (options.window instanceof HTMLIFrameElement) {\n if (\"iframe\" !== options.window.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (options.window && !options.window.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n options.window && options.window.contentWindow && (targetWindow = options.window.contentWindow);\n } else targetWindow = options.window;\n if (!targetWindow) throw new Error(\"Expected options.window to be a window object, iframe, or iframe element id.\");\n var win = targetWindow;\n domain = options.domain || constants_CONSTANTS.WILDCARD;\n var hash = options.name + \"_\" + uniqueID();\n if (isWindowClosed(win)) throw new Error(\"Target window is closed\");\n var hasResult = !1, requestPromises = global.requestPromises.get(win);\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n var requestPromise = promise_ZalgoPromise.try(function() {\n if (function(parent, child) {\n var actualParent = getAncestor(child);\n if (actualParent) return actualParent === parent;\n if (child === parent) return !1;\n if (function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n try {\n if (win.top) return win.top;\n } catch (err) {}\n if (getParent(win) === win) return win;\n try {\n if (isAncestorParent(window, win) && window.top) return window.top;\n } catch (err) {}\n try {\n if (isAncestorParent(win, window) && window.top) return window.top;\n } catch (err) {}\n for (var _i7 = 0, _getAllChildFrames4 = function getAllChildFrames(win) {\n for (var result = [], _i3 = 0, _getFrames2 = getFrames(win), _length2 = null == _getFrames2 ? 0 : _getFrames2.length; _i3 < _length2; _i3++) {\n var frame = _getFrames2[_i3];\n result.push(frame);\n for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame), _length4 = null == _getAllChildFrames2 ? 0 : _getAllChildFrames2.length; _i5 < _length4; _i5++) {\n var childFrame = _getAllChildFrames2[_i5];\n result.push(childFrame);\n }\n }\n return result;\n }(win), _length6 = null == _getAllChildFrames4 ? 0 : _getAllChildFrames4.length; _i7 < _length6; _i7++) {\n var frame = _getAllChildFrames4[_i7];\n try {\n if (frame.top) return frame.top;\n } catch (err) {}\n if (getParent(frame) === frame) return frame;\n }\n }(child) === child) return !1;\n for (var _i15 = 0, _getFrames8 = getFrames(parent), _length14 = null == _getFrames8 ? 0 : _getFrames8.length; _i15 < _length14; _i15++) if (_getFrames8[_i15] === child) return !0;\n return !1;\n }(window, win)) return function(win) {\n var timeout = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 5e3, name = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : \"Window\", promise = global.readyPromises.get(win);\n if (promise) return promise;\n promise = new promise_ZalgoPromise();\n global.readyPromises.set(win, promise);\n -1 !== timeout && setTimeout(function() {\n return promise.reject(new Error(name + \" did not load after \" + timeout + \"ms\"));\n }, timeout);\n return promise;\n }(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain) && !origin) return sayHello(win);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain)) {\n if (!matchDomain(domain, origin)) throw new Error(\"Remote window domain \" + origin + \" does not match regex: \" + domain.toString());\n domain = origin;\n }\n if (\"string\" != typeof domain && !Array.isArray(domain)) throw new TypeError(\"Expected domain to be a string or array\");\n var actualDomain = domain;\n return new promise_ZalgoPromise(function(resolve, reject) {\n var responseListener = void 0;\n options.fireAndForget || function(hash, listener) {\n global.responseListeners[hash] = listener;\n }(hash, responseListener = {\n name: name,\n window: win,\n domain: actualDomain,\n respond: function(err, result) {\n if (!err) {\n hasResult = !0;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n err ? reject(err) : resolve(result);\n }\n });\n sendMessage(win, {\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash: hash,\n name: name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n if (options.fireAndForget) return resolve();\n var ackTimeout = CONFIG.ACK_TIMEOUT, resTimeout = options.timeout || CONFIG.RES_TIMEOUT, cycleTime = 100;\n setTimeout(function cycle() {\n if (!hasResult) {\n if (isWindowClosed(win)) return responseListener.ack ? reject(new Error(\"Window closed for \" + name + \" before response\")) : reject(new Error(\"Window closed for \" + name + \" before ack\"));\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n -1 !== resTimeout && (resTimeout = Math.max(resTimeout - cycleTime, 0));\n if (responseListener.ack) {\n if (-1 === resTimeout) return;\n cycleTime = Math.min(resTimeout, 2e3);\n } else {\n if (0 === ackTimeout) return reject(new Error(\"No ack for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + CONFIG.ACK_TIMEOUT + \"ms\"));\n if (0 === resTimeout) return reject(new Error(\"No response for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + (options.timeout || CONFIG.RES_TIMEOUT) + \"ms\"));\n }\n setTimeout(cycle, cycleTime);\n }\n }, cycleTime);\n });\n });\n requestPromise.catch(function() {\n !function(hash) {\n global.erroredResponseListeners[hash] = !0;\n }(hash);\n deleteResponseListener(hash);\n });\n requestPromises.push(requestPromise);\n return requestPromise;\n });\n }\n function _send(window, name, data, options) {\n (options = options || {}).window = window;\n options.name = name;\n options.data = data;\n return request(options);\n }\n function sendToParent(name, data, options) {\n var win = getAncestor();\n return win ? _send(win, name, data, options) : new promise_ZalgoPromise(function(resolve, reject) {\n return reject(new Error(\"Window does not have a parent\"));\n });\n }\n function client() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (!options.window) throw new Error(\"Expected options.window\");\n var win = options.window;\n return {\n send: function(name, data) {\n return _send(win, name, data, options);\n }\n };\n }\n global.send = _send;\n var server__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function listen(options) {\n if (!options.name) throw new Error(\"Expected options.name\");\n if (!options.handler) throw new Error(\"Expected options.handler\");\n var name = options.name, win = options.window, domain = options.domain, listenerOptions = {\n handler: options.handler,\n handleError: options.errorHandler || function(err) {\n throw err;\n },\n window: win,\n domain: domain || constants_CONSTANTS.WILDCARD,\n name: name\n }, requestListener = function addRequestListener(_ref6, listener) {\n var name = _ref6.name, win = _ref6.win, domain = _ref6.domain;\n if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n if (Array.isArray(win)) {\n for (var listenersCollection = [], _i6 = 0, _win2 = win, _length6 = null == _win2 ? 0 : _win2.length; _i6 < _length6; _i6++) {\n var item = _win2[_i6];\n listenersCollection.push(addRequestListener({\n name: name,\n domain: domain,\n win: item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i8 = 0, _length8 = null == listenersCollection ? 0 : listenersCollection.length; _i8 < _length8; _i8++) listenersCollection[_i8].cancel();\n }\n };\n }\n if (Array.isArray(domain)) {\n for (var _listenersCollection = [], _i10 = 0, _domain2 = domain, _length10 = null == _domain2 ? 0 : _domain2.length; _i10 < _length10; _i10++) {\n var _item = _domain2[_i10];\n _listenersCollection.push(addRequestListener({\n name: name,\n win: win,\n domain: _item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i12 = 0, _length12 = null == _listenersCollection ? 0 : _listenersCollection.length; _i12 < _length12; _i12++) _listenersCollection[_i12].cancel();\n }\n };\n }\n var existingListener = getRequestListener({\n name: name,\n win: win,\n domain: domain\n });\n win && win !== constants_CONSTANTS.WILDCARD || (win = global.WINDOW_WILDCARD);\n domain = domain || constants_CONSTANTS.WILDCARD;\n if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n var requestListeners = global.requestListeners, nameListeners = requestListeners[name];\n if (!nameListeners) {\n nameListeners = new weakmap_CrossDomainSafeWeakMap();\n requestListeners[name] = nameListeners;\n }\n var winListeners = nameListeners.get(win);\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n var strDomain = domain.toString(), regexListeners = winListeners[__DOMAIN_REGEX__], regexListener = void 0;\n if (util_isRegex(domain)) {\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n regexListener = {\n regex: domain,\n listener: listener\n };\n regexListeners.push(regexListener);\n } else winListeners[strDomain] = listener;\n return {\n cancel: function() {\n if (winListeners) {\n delete winListeners[strDomain];\n win && 0 === Object.keys(winListeners).length && nameListeners.delete(win);\n regexListener && regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n };\n }({\n name: name,\n win: win,\n domain: domain\n }, listenerOptions);\n if (options.once) {\n var _handler = listenerOptions.handler;\n listenerOptions.handler = once(function() {\n requestListener.cancel();\n return _handler.apply(this, arguments);\n });\n }\n if (listenerOptions.window && options.errorOnClose) var interval = function(method, time) {\n var timeout = void 0;\n timeout = setTimeout(function runInterval() {\n timeout = setTimeout(runInterval, 50);\n (function() {\n if (win && \"object\" === (void 0 === win ? \"undefined\" : server__typeof(win)) && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error(\"Post message target window is closed\"));\n }\n }).call();\n }, 50);\n return {\n cancel: function() {\n clearTimeout(timeout);\n }\n };\n }();\n return {\n cancel: function() {\n requestListener.cancel();\n }\n };\n }\n function _on(name, options, handler) {\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n (options = options || {}).name = name;\n options.handler = handler || options.handler;\n return listen(options);\n }\n function server_once(name) {\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, handler = arguments[2];\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n options = options || {};\n handler = handler || options.handler;\n var errorHandler = options.errorHandler, promise = new promise_ZalgoPromise(function(resolve, reject) {\n (options = options || {}).name = name;\n options.once = !0;\n options.handler = function(event) {\n resolve(event);\n if (handler) return handler(event);\n };\n options.errorHandler = function(err) {\n reject(err);\n if (errorHandler) return errorHandler(err);\n };\n }), onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n return promise;\n }\n function server_listener() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return {\n on: function(name, handler) {\n return _on(name, options, handler);\n }\n };\n }\n global.on = _on;\n function disable() {\n delete window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener(\"message\", messageListener);\n }\n var public_parent = getAncestor();\n function cleanUpWindow(win) {\n var requestPromises = global.requestPromises.get(win);\n if (requestPromises) for (var _i2 = 0, _length2 = null == requestPromises ? 0 : requestPromises.length; _i2 < _length2; _i2++) requestPromises[_i2].reject(new Error(\"No response from window - cleaned up\"));\n global.popupWindowsByWin && global.popupWindowsByWin.delete(win);\n global.remoteWindows && global.remoteWindows.delete(win);\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n }\n var bridge = null;\n function init() {\n if (!global.initialized) {\n handler = messageListener, (obj = window).addEventListener ? obj.addEventListener(\"message\", handler) : obj.attachEvent(\"onmessage\", handler);\n !function() {\n handler = function(_ref3) {\n var source = _ref3.source, origin = _ref3.origin, promise = global.readyPromises.get(source) || new promise_ZalgoPromise();\n promise.resolve({\n origin: origin\n });\n global.readyPromises.set(source, promise);\n }, global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {\n domain: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin;\n return handler({\n source: source,\n origin: origin\n });\n });\n var handler, parent = getAncestor();\n parent && sayHello(parent).catch(lib_util_noop);\n }();\n listenForMethods({\n on: _on,\n send: _send\n });\n }\n var obj, handler;\n global.initialized = !0;\n }\n init();\n __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(__webpack_exports__, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(__webpack_exports__, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(__webpack_exports__, \"init\", function() {\n return init;\n });\n __webpack_require__.d(__webpack_exports__, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(__webpack_exports__, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(__webpack_exports__, \"request\", function() {\n return request;\n });\n __webpack_require__.d(__webpack_exports__, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(__webpack_exports__, \"client\", function() {\n return client;\n });\n __webpack_require__.d(__webpack_exports__, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(__webpack_exports__, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(__webpack_exports__, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(__webpack_exports__, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(__webpack_exports__, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(__webpack_exports__, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(__webpack_exports__, \"disable\", function() {\n return disable;\n });\n __webpack_exports__.default = interface_namespaceObject;\n }\n });\n});\n//# sourceMappingURL=post-robot.js.map","/* @flow */\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = require('./dist/post-robot');\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports.default = module.exports;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IAssetSidebarInitData, setAssetDto } from \"./types\";\nimport Asset from './stack/api/asset'\n\n/** Class representing an asset Extension from Contentstack UI. */\n\nclass AssetSidebarWidget {\n /**\n * @hideconstructor\n */\n\n currentAsset: { [key: string]: any };\n _emitter: EventEmitter;\n _connection: any;\n _changedData?: { [key: string]: any };\n\n constructor(\n initializationData: IAssetSidebarInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * Gets the content type of the current asset.\n * @type {Object}\n */\n\n this.currentAsset = initializationData.data.currentAsset;\n\n this._emitter = emitter;\n\n this._connection = connection;\n\n const thisAsset = this;\n\n this._emitter.on(\n \"assetSave\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset.currentAsset = event.data;\n }\n );\n\n this._emitter.on(\n \"assetChange\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset._changedData = event.data;\n }\n );\n\n this.getData = this.getData.bind(this);\n this.setData = this.setData.bind(this);\n this.syncAsset = this.syncAsset.bind(this);\n this.updateWidth = this.updateWidth.bind(this);\n this.onSave = this.onSave.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onPublish = this.onPublish.bind(this);\n this.onUnPublish = this.onUnPublish.bind(this);\n this.replaceAsset = this.replaceAsset.bind(this);\n }\n\n getData() {\n return this.currentAsset;\n }\n\n async setData(asset: Partial): Promise {\n return this._connection.sendToParent(\"setData\", asset);\n }\n\n async syncAsset(): Promise {\n return this._connection.sendToParent(\"syncAsset\");\n }\n\n async updateWidth(width: number): Promise {\n if (typeof width !== \"number\") {\n throw new Error(\"Width must be a number\");\n }\n return this._connection.sendToParent(\"updateAssetSidebarWidth\", width);\n }\n\n async replaceAsset(file: File): Promise {\n const asset = Asset(this._emitter);\n return asset.handleUpload([file], 'replace');\n }\n\n /**\n * This function executes the callback function every time an asset is saved.\n * @param {function} callback The function to be called when an asset is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetSave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an asset is edited/changed.\n */\n\n onChange(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetChange\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an asset has been published with the respective payload.\n * @param {function} callback The function to be called when an asset is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an asset has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an asset is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default AssetSidebarWidget;\n","import {\n IConfigCallback,\n IContainerMetaData,\n IOnFunction,\n IPluginMetaData,\n IRteParam,\n IConfig\n} from \"./types\";\n\nexport class RTEPlugin {\n private pluginMetaData: IPluginMetaData = {\n registry: {\n title: \"\",\n toolbar: {\n inMainToolbar: true,\n inHoveringToolbar: true,\n },\n isContentstackElement: true,\n },\n meta: {\n id: \"\",\n elementType: null,\n editorCallbacks: {},\n isDependent: false,\n },\n };\n private isContainer: boolean = false;\n private containerMetaData: IContainerMetaData = {\n registry: {\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n id: this.pluginMetaData.meta.id,\n dependentPlugins: [],\n },\n };\n\n constructor(id: string, private configCallback: IConfigCallback) {\n this.pluginMetaData.meta.id = id;\n }\n\n addPlugins = (...plugins: RTEPlugin[]) => {\n // convert to dropdown if not already\n if (this.pluginMetaData.meta.isDependent)\n throw Error(\"cannot have another container inside\");\n\n this.isContainer = true;\n\n // clean pluginMetaData\n\n plugins.forEach((plugin) => {\n // make sure that this plugin is not another dropdown\n if (plugin.isContainer) {\n throw Error(\"cannot have another container inside\");\n }\n\n plugin.pluginMetaData.registry.category =\n this.pluginMetaData.meta.id;\n this.containerMetaData.meta.dependentPlugins.push(plugin);\n plugin.pluginMetaData.meta.isDependent = true;\n });\n };\n\n on = (\n type: Type,\n callback: IOnFunction[Type]\n ) => {\n switch (type) {\n case \"beforeChildRender\": {\n this.pluginMetaData.registry.beforeChildrenRender = callback;\n break;\n }\n\n case \"beforeRender\": {\n this.pluginMetaData.registry.beforeElementRender = callback;\n break;\n }\n\n case \"exec\": {\n this.pluginMetaData.registry.handleMouseDown = callback;\n break;\n }\n\n case \"keydown\": {\n this.pluginMetaData.meta.editorCallbacks[\"keydown\"] = callback;\n break;\n }\n\n case \"paste\":\n case \"deleteBackward\":\n case \"deleteForward\":\n case \"insertBreak\":\n case \"normalize\":\n default: {\n this.pluginMetaData.meta.editorCallbacks[type] = callback;\n break;\n }\n }\n };\n\n get = async (rte: IRteParam | void) => {\n const config = await this.configCallback(rte);\n\n Object.entries(config).forEach(\n //@ts-ignore\n ([key, value]: [Key, any]) => {\n switch (key) {\n case \"title\": {\n this.pluginMetaData.registry.title = value;\n break;\n }\n case \"icon\": {\n this.pluginMetaData.registry.iconName = value;\n this.containerMetaData.registry.iconName = value;\n break;\n }\n case \"display\": {\n // make every other options false\n this.pluginMetaData.registry.toolbar = {\n inHoveringToolbar: false,\n inMainToolbar: false,\n };\n\n if (typeof value === \"string\") {\n switch (value) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach((display) => {\n switch (display) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n });\n }\n break;\n }\n\n case \"elementType\": {\n const isInline = (\n typeof value === 'string' && value === 'inline' ||\n Array.isArray(value) && value.includes('inline')\n )\n if(isInline) {\n let dndOptions = this.pluginMetaData['registry']['dndOptions'];\n if(!dndOptions) {\n this.pluginMetaData['registry']['dndOptions'] = {};\n dndOptions = this.pluginMetaData['registry']['dndOptions']\n }\n dndOptions['DisableDND'] = true;\n dndOptions['DisableSelectionHalo'] = true;\n }\n this.pluginMetaData.meta.elementType = value;\n break;\n }\n\n case \"render\": {\n this.pluginMetaData.registry.Component = value;\n break;\n }\n\n case \"shouldOverride\" : {\n this.pluginMetaData.registry.shouldOverride = value\n }\n }\n }\n );\n\n const containerMeta = this.containerMetaData.meta;\n this.containerMetaData = {\n registry: {\n ...this.containerMetaData.registry,\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n ...containerMeta,\n id: this.pluginMetaData.meta.id,\n },\n };\n\n return this.isContainer ? this.containerMetaData : this.pluginMetaData;\n };\n}\n\nexport const rtePluginInitializer = (\n id: string,\n configCallback: IConfigCallback\n) => {\n if (!(id && configCallback)) throw Error('Please provide value \"id\" and \"configCallback\"');\n\n return new RTEPlugin(id, configCallback);\n};\n","import Stack from \"../stack\";\nimport { IInstallationData, ValidationOptions } from \"../types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport { onData, onError } from \"../utils/utils\";\n\nexport declare interface AppConfigAdditionalData {\n currentBranch: string;\n}\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nexport class AppConfig {\n _data: { [key: string]: any };\n _connection: any;\n _emitter: EventEmitter;\n private _additionalData: AppConfigAdditionalData;\n\n constructor(\n data: { [key: string]: any },\n connection: any,\n emitter: EventEmitter,\n additionalData: AppConfigAdditionalData\n ) {\n this._data = data;\n this._connection = connection;\n this._emitter = emitter;\n\n this.setValidity = this.setValidity.bind(this);\n this._additionalData = additionalData;\n }\n\n stack = () => {\n return new Stack(this._data.stack, this._connection, {\n currentBranch: this._additionalData.currentBranch,\n });\n };\n\n setInstallationData = (\n installationData: IInstallationData\n ): Promise<{ [key: string]: any }> => {\n return this._connection\n .sendToParent(\"setInstallationData\", installationData)\n .then(onData)\n .catch(onError);\n };\n\n getInstallationData = (): Promise => {\n return this._connection\n .sendToParent(\"getInstallationData\")\n .then(onData)\n .catch(onError);\n };\n\n /**\n * Set the validation state of the app. If the validation is false, the Contentstack App Config\n * will not allow to save the configuration. The message will be displayed if provided.\n * @param isValid set the validation state of the app\n * @param options additional options to be sent to the parent\n * @returns returns a promise with the data sent from the parent\n */\n async setValidity(\n isValid: boolean,\n options?: ValidationOptions\n ): Promise> {\n if (typeof isValid !== \"boolean\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.isValidTypeBoolean\n )\n );\n }\n\n if (options?.message && typeof options.message !== \"string\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.messageTypeString\n )\n );\n }\n\n return this._connection\n .sendToParent(\"setValidity\", { isValid, options })\n .then(onData)\n .catch(onError);\n }\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\n\nimport Field from \"./field\";\nimport {\n ICurrentContentType,\n IFieldInitData,\n IFieldModifierLocationInitData,\n IRTELocationInitData,\n ISidebarInitData,\n} from \"./types\";\nimport {\n IEntryOptions,\n IGetFieldOptions,\n IOnEntryChangeCallback,\n} from \"./types/entry.types\";\n\n/** Class representing an entry from Contentstack UI. Not available for Dashboard Widget extension. */\n\nclass Entry {\n /**\n * @hideconstructor\n */\n\n content_type: ICurrentContentType;\n _data: { [key: string]: any };\n locale: string;\n _connection: any;\n _emitter: EventEmitter;\n _changedData?: { [key: string]: any };\n _options: IEntryOptions;\n\n constructor(\n initializationData:\n | IFieldInitData\n | ISidebarInitData\n | IRTELocationInitData\n | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter,\n options?: IEntryOptions\n ) {\n /**\n * Gets the content type of the current entry.\n * @type {Object}\n */\n this.content_type = initializationData.data.content_type;\n\n this._data = initializationData.data.entry;\n\n if (initializationData.data.changedData) {\n this._changedData = initializationData.data.changedData;\n }\n\n /**\n * Gets the locale of the current entry.\n * @type {string}\n */\n this.locale = initializationData.data.locale;\n\n this._connection = connection;\n\n this._emitter = emitter;\n\n this._options = options || {};\n\n const thisEntry = this;\n\n this._emitter.on(\n \"entrySave\",\n (event: { data: { [key: string]: any } }) => {\n thisEntry._data = event.data;\n }\n );\n\n this._emitter.on(\n \"entryChange\",\n (event: { data: { [key: string]: any } }) => {\n console.log(\"rte listened to the change\", event.data);\n thisEntry._changedData = event.data;\n }\n );\n }\n\n /**\n * Gets data of the current entry.\n * @return {Object} Returns entry data.\n */\n\n getData() {\n return this._data;\n }\n\n /**\n * Gets the field object for the saved data, which allows you to interact with the field.\n * This object will have all the same methods and properties of extension.field.\n * Note: For fields initialized using the getFields function, the setData function currently works only for the following fields: as single_line, multi_line, RTE, markdown, select, number, boolean, date, link, and extension of data type text, number, boolean, and date.\n * @example\n * var field = entry.getField('field_uid');\n * var fieldSchema = field.schema;\n * var fieldUid = field.uid;\n * var fieldData = field.getData();\n * @param {string} uid Unique ID of the field\n * @param {boolean} options.useUnsavedSchema If set to true, the field will get the unsaved field\n * @return {Object} Field object\n */\n\n getField(uid: string, options?: IGetFieldOptions): Field {\n const { useUnsavedSchema = false } = options || {};\n const { FieldInstance = Field } = this._options._internalFlags || {};\n\n const path = uid.split(\".\");\n let value = useUnsavedSchema\n ? this._changedData || this._data\n : this._data;\n let schema = this.content_type.schema;\n\n const isDataEmpty = Object.keys(value).length === 0;\n\n if (isDataEmpty) {\n throw new Error(\n \"The data is unsaved. Save the data before requesting the field.\"\n );\n }\n\n try {\n let skipNext = false;\n let skipNextTwo = false;\n path.forEach((key: string | number, index: number) => {\n if (skipNext) {\n if (skipNextTwo) {\n skipNextTwo = false;\n } else {\n skipNext = false;\n }\n return;\n }\n\n schema = schema.find((x: { uid: any }) => x.uid === key);\n if (!schema) {\n throw Error(\"schema not found\");\n }\n\n value = value[key];\n\n if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === false &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n } else if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === true &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n value = value[path[index + 1]];\n skipNext = true;\n } else if (\n schema.data_type === \"blocks\" &&\n path.length !== index + 1\n ) {\n const blockId = Object.keys(value[path[index + 1]])[0];\n schema = schema.blocks.find(\n (block: { uid: string }) => block.uid === blockId\n );\n if (path.length === index + 2) {\n // complete block value with uid\n value = value[path[index + 1]];\n } else {\n // block value without uid\n value = value[path[index + 1]][blockId];\n schema = schema.schema;\n }\n\n skipNext = true;\n skipNextTwo = true;\n }\n });\n } catch (e) {\n throw Error(\"Invalid uid, Field not found\");\n }\n const fieldIntilaizationDataObject = {\n data: {\n uid,\n value,\n schema,\n data_type: schema.data_type,\n },\n };\n\n //@ts-ignore\n const fieldObject = new FieldInstance(\n fieldIntilaizationDataObject,\n this._connection,\n this._emitter\n );\n delete fieldObject.onChange;\n return fieldObject;\n }\n\n /**\n * This function executes the callback function every time an entry is saved.\n * @param {function} callback The function to be called when an entry is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entrySave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an entry is edited/changed.\n */\n\n onChange(callback: IOnEntryChangeCallback) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\n \"entryChange\",\n (event: { data: any; resolvedData: Record }) => {\n callback(event.data, event.resolvedData);\n }\n );\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an entry has been published with the respective payload.\n * @param {function} callback The function to be called when an entry is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an entry has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an entry is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default Entry;\n","import postRobot from \"post-robot\";\nimport EventEmitter from \"wolfy87-eventemitter\";\n\nimport AssetSidebarWidget from \"./AssetSidebarWidget\";\nimport { IRTELocation, IRTEPluginInitializer } from \"./RTE/types\";\nimport { AppConfig } from \"./appConfig\";\nimport Entry from \"./entry\";\nimport Field from \"./field\";\nimport FieldModifierLocationEntry from \"./fieldModifierLocation/entry\";\nimport FieldModifierLocationField from \"./fieldModifierLocation/field\";\nimport FieldModifierLocationFrame from \"./fieldModifierLocation/frame\";\nimport Metadata from \"./metadata\";\nimport Modal from \"./modal\";\nimport Stack from \"./stack\";\nimport Store from \"./store\";\nimport {\n IAppConfigInitData,\n IAppConfigWidget,\n IAssetSidebarInitData,\n ICustomField,\n IDashboardInitData,\n IDashboardWidget,\n IEntryFieldLocation,\n IEntryFieldLocationInitData,\n IFieldInitData,\n IFieldModifierLocation,\n IFieldModifierLocationInitData,\n IFullPageLocation,\n IFullPageLocationInitData,\n ILocation,\n IPageWidget,\n IRTEInitData,\n IRTELocationInitData,\n ISidebarInitData,\n ISidebarWidget,\n IUser,\n Manifest,\n Region,\n} from \"./types\";\nimport { AnyObject } from \"./types/common.types\";\nimport { formatAppRegion, onData, onError } from \"./utils/utils\";\nimport Window from \"./window\";\n\nconst emitter = new EventEmitter();\n\n/** Class representing an extension from Contentstack App Framework SDK. */\n\nclass Extension {\n /**\n * @hideconstructor\n */\n\n appUID: string;\n installationUID: string;\n currentUser: IUser;\n private type: ILocation;\n private config: AnyObject;\n postRobot: any;\n stack: Stack;\n store: Store;\n metadata: Metadata;\n locationUID: string;\n modal: Modal;\n readonly region: Region;\n version: number | null;\n\n location: {\n DashboardWidget: IDashboardWidget | null;\n SidebarWidget: ISidebarWidget | null;\n CustomField: ICustomField | null;\n RTEPlugin: IRTEPluginInitializer | null;\n RTELocation: IRTELocation | null;\n AppConfigWidget: IAppConfigWidget | null;\n FullscreenAppWidget: IPageWidget | null;\n AssetSidebarWidget: AssetSidebarWidget | null;\n EntryFieldLocation: IEntryFieldLocation | null;\n FullPage: IFullPageLocation | null;\n FieldModifierLocation: IFieldModifierLocation | null;\n };\n\n constructor(\n initData:\n | IRTEInitData\n | IDashboardInitData\n | IFieldInitData\n | ISidebarInitData\n | IAppConfigInitData\n | IAssetSidebarInitData\n | IFullPageLocationInitData\n | IEntryFieldLocationInitData\n | IFieldModifierLocationInitData\n ) {\n const initializationData = initData;\n\n this.postRobot = postRobot;\n\n /**\n * This value represents the current App's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.appUID = initializationData.data.app_id;\n\n /**\n * This value represents the current location's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.locationUID = initializationData.data.extension_uid;\n\n /**\n * This object holds details of the app initialization user.\n * @type {Object}\n */\n this.installationUID = initializationData.data.installation_uid;\n /**\n * This object holds details of the current user.\n * @type {Object}\n */\n this.currentUser = initializationData.data.user;\n\n /**\n * location of extension, \"RTE\" | \"FIELD\" | \"DASHBOARD\" | \"WIDGET\" | \"APP_CONFIG_WIDGET\" | \"FULL_SCREEN_WIDGET\".\n * @type {string}\n */\n this.type = initializationData.data.type;\n\n /**\n * Store to persist data for extension.\n * Note: Data is stored in the browser {@link external:localStorage} and will be lost if the {@link external:localStorage} is cleared in the browser.\n * @type {Store}\n */\n this.store = new Store(postRobot);\n\n /**\n * This method returns stack object which allows users to read and manipulate a range of objects in a stack.\n * @type {Stack}\n */\n this.stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n this.metadata = new Metadata(postRobot);\n\n this.config = initializationData.data.config ?? {};\n\n this.location = {\n DashboardWidget: null,\n CustomField: null,\n SidebarWidget: null,\n RTEPlugin: null,\n RTELocation: null,\n AppConfigWidget: null,\n FullscreenAppWidget: null,\n AssetSidebarWidget: null,\n FullPage: null,\n EntryFieldLocation: null,\n FieldModifierLocation: null,\n };\n\n window[\"postRobot\"] = postRobot;\n\n this.modal = new Modal();\n\n this.region = formatAppRegion(initializationData.data.region);\n\n this.version = initializationData.data.manifest?.version || null;\n\n const stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n\n switch (initializationData.data.type) {\n case \"DASHBOARD\": {\n this.location.DashboardWidget = {\n frame: new Window(\n postRobot,\n this.type as \"DASHBOARD\",\n emitter,\n initializationData.data.dashboard_width\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n case \"WIDGET\": {\n this.location.SidebarWidget = {\n entry: new Entry(\n initializationData as ISidebarInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"APP_CONFIG_WIDGET\": {\n this.location.AppConfigWidget = {\n installation: new AppConfig(\n initializationData,\n postRobot,\n emitter,\n {\n currentBranch:\n initializationData.data.currentBranch,\n }\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"ASSET_SIDEBAR_WIDGET\": {\n this.location.AssetSidebarWidget = new AssetSidebarWidget(\n initializationData as IAssetSidebarInitData,\n postRobot,\n emitter\n );\n\n break;\n }\n\n case \"RTE\": {\n import(\"./RTE\").then(({ rtePluginInitializer }) => {\n this.location.RTEPlugin = rtePluginInitializer;\n this.location.RTELocation = {\n entry: new Entry(\n initializationData as IRTELocationInitData,\n postRobot,\n emitter\n ),\n };\n });\n break;\n }\n\n case \"FIELD_MODIFIER_LOCATION\":\n case \"ENTRY_FIELD_LOCATION\": {\n initializationData.data.self = true;\n this.location.FieldModifierLocation = {\n entry: new FieldModifierLocationEntry(\n initializationData as IFieldModifierLocationInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n field: new FieldModifierLocationField(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n frame: new FieldModifierLocationFrame(postRobot, emitter),\n };\n break;\n }\n\n case \"FULL_PAGE_LOCATION\": {\n this.location.FullPage = {\n stack: stack,\n };\n break;\n }\n\n case \"FIELD\":\n default: {\n initializationData.data.self = true;\n this.location.CustomField = {\n field: new Field(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n fieldConfig: initializationData.data.field_config,\n entry: new Entry(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n frame: new Window(postRobot, this.type as \"FIELD\", emitter),\n };\n\n break;\n }\n }\n\n try {\n //@ts-ignore\n postRobot.on(\"extensionEvent\", (event) => {\n if (event.data.name === \"entrySave\") {\n emitter.emitEvent(\"entrySave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.eventName === \"entryChange\") {\n emitter.emitEvent(\"entryChange\", [\n {\n data: event.data.data,\n resolvedData: event.data.otherData.resolvedData,\n },\n ]);\n }\n\n if (event.data.name === \"entryPublish\") {\n emitter.emitEvent(\"entryPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryUnPublish\") {\n emitter.emitEvent(\"entryUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetSave\") {\n emitter.emitEvent(\"assetSave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetChange\") {\n emitter.emitEvent(\"assetChange\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetPublish\") {\n emitter.emitEvent(\"assetPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetUnPublish\") {\n emitter.emitEvent(\"assetUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"dashboardResize\") {\n emitter.emitEvent(\"dashboardResize\", [\n { state: event.data.state },\n ]);\n }\n\n if (event.data.name === \"extensionFieldChange\") {\n emitter.emitEvent(\"extensionFieldChange\", [\n { data: event.data.data },\n ]);\n }\n });\n } catch (err) {\n console.error(\"extension Event\", err);\n }\n }\n\n pulse = (eventName: string, metadata: { [key: string]: any }) => {\n this.postRobot.sendToParent(\"analytics\", { eventName, metadata });\n };\n\n getConfig = (): Promise<{ [key: string]: any }> => {\n if (!this.installationUID) {\n return Promise.resolve(this.config);\n }\n return this.postRobot\n .sendToParent(\"getConfig\")\n .then(onData)\n .catch(onError);\n };\n\n getCurrentLocation = () => {\n return this.type;\n };\n\n /**\n * Conditionally retrieves and returns the app version if not present already\n * @returns version of the app currently running.\n */\n getAppVersion = async (): Promise => {\n if (this.version) {\n return Promise.resolve(this.version);\n }\n if (!this.installationUID) {\n return Promise.resolve(null);\n }\n const orgUid = this.stack._data.org_uid;\n const options = {\n uid: this.installationUID,\n action: \"getAppManifest\",\n headers: { organization_uid: orgUid },\n skip_api_key: true,\n };\n const app: Manifest = await this.postRobot\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n this.version = app.version;\n return this.version;\n };\n\n getCurrentRegion = () => {\n return this.region;\n };\n\n static initialize(version: string) {\n const meta = {\n sdkType: \"app-sdk\",\n };\n //@ts-ignore\n return postRobot.sendToParent(\"init\", { version, meta });\n }\n\n setReady() {\n return this.postRobot.sendToParent(\"ready\");\n }\n}\n\nexport default Extension;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"./types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(field: Field, value: { [key: string]: any }) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass Field {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n\n setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false } = {}) {\n return resolved ? this._resolvedData : this._data;\n }\n\n /**\n * Sets the focus for a field when an extension is being used. This method shows user presence and highlights the extension field that the user is currently accessing in Contentstack UI.\n * @return {Object} A promise object which is resolved when Contentstack UI returns an acknowledgement of the focused state.\n */\n setFocus() {\n return this._connection.sendToParent(\"focus\");\n }\n\n /**\n * This function is called when another extension programmatically changes data of this field using field.setData() function, only available for extension field, only support extensions of data type text, number, boolean or date.\n * @param {function} callback The function to be called when an entry is published.\n */\n onChange?(callback: (data: any) => any) {\n const fieldObj = this;\n if (callback && typeof callback === \"function\") {\n fieldObj._emitter.on(\"extensionFieldChange\", (event: any) => {\n this._data = event.data;\n this._resolvedData = event.data;\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\n\nexport default Field;\n","import Entry from \"../entry\";\nimport { IFieldModifierLocationInitData } from \"../types\";\nimport { IGetTagsOptions } from \"../types/entry.types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport Field from \"./field\";\n\nclass FieldModifierLocationEntry extends Entry {\n constructor(\n initializationData: IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n super(initializationData, connection, emitter, {\n _internalFlags: {\n FieldInstance: Field as any,\n },\n });\n }\n\n /**\n * Returns the value of the tags associated with the entry.\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n getTags(options?: IGetTagsOptions): Array {\n const { useUnsavedSchema = false } = options || {};\n\n if (useUnsavedSchema) {\n return this._changedData?.tags || this._data.tags;\n } else {\n return this._data.tags;\n }\n }\n\n /**\n * Sets the tags on the entry.\n * @param tags tags to be set on the entry\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n async setTags(tags: Array): Promise> {\n /**\n * Validate if the tags are array of strings\n * @param {Array} tags\n * @returns {boolean} Returns true if the tags are array of strings\n */\n function areTagsValid(tags: Array): tags is Array {\n return (\n Array.isArray(tags) &&\n tags.every((tag) => typeof tag === \"string\")\n );\n }\n\n if (tags === undefined) {\n throw new Error(generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldNotBeBlank));\n }\n\n if (!areTagsValid(tags)) {\n throw new Error(\n generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldBeArrayOfStrings)\n );\n }\n\n await this._connection.sendToParent(\"setTags\", { tags });\n\n if (!this._changedData) {\n this._changedData = {};\n }\n\n this._changedData.tags = tags;\n\n return tags;\n }\n}\n\nexport default FieldModifierLocationEntry;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"../types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(\n field: FieldModifierLocationField,\n value: { [key: string]: any }\n) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass FieldModifierLocationField {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n async setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false }: { resolved?: boolean } = {}): any {\n return resolved ? this._resolvedData : this._data;\n }\n}\n\nexport default FieldModifierLocationField;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\nimport { ERROR_MESSAGES } from \"../utils/errorMessages\";\n\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass FieldModifierLocationFrame {\n /**\n * @hideconstructor\n */\n\n _connection: any;\n _autoResizingEnabled = false;\n _emitter: EventEmitter;\n _height?: number;\n _width?: number;\n\n private observer: MutationObserver | undefined;\n\n constructor(connection: any, emitter: EventEmitter) {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._emitter = emitter;\n\n this.updateDimension = this.updateDimension.bind(this);\n this.enableAutoResizing = this.enableAutoResizing.bind(this);\n this.disableAutoResizing = this.disableAutoResizing.bind(this);\n this.closeModal = this.closeModal.bind(this);\n\n /**\n * The auto resizing should be enabled by default.\n */\n this.enableAutoResizing();\n }\n\n /**\n * This method updates the extension height and width on Contentstack UI.\n * If the value is not passed, it will update the height and width of the\n * extension with the current height and width of the extension.\n * @param {string|number} height Desired height of the iframe window\n */\n async updateDimension(dimension?: { height?: number; width?: number }) {\n const { height, width } = dimension || {};\n\n if (height === undefined && width === undefined) {\n this._height = Math.ceil(\n document.documentElement.getBoundingClientRect().height\n );\n\n this._width = Math.ceil(\n document.documentElement.getBoundingClientRect().width\n );\n\n await this._connection.sendToParent(\"resize\", {\n height: this._height,\n width: this._width,\n });\n return;\n }\n\n const dimensionBody = {};\n\n if (height !== undefined && typeof height !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionHeightShouldBeNumber\n );\n }\n\n if (this._height !== height) {\n this._height = height;\n dimensionBody[\"height\"] = this._height;\n }\n\n if (width !== undefined && typeof width !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionWidthShouldBeNumber\n );\n }\n\n if (this._width !== width) {\n this._width = width;\n dimensionBody[\"width\"] = this._width;\n }\n\n if (Object.keys(dimensionBody).length !== 0) {\n await this._connection.sendToParent(\"resize\", dimensionBody);\n }\n }\n\n /**\n * Prevent user from accidently closing the app by clicking outside the frame\n * if the app is performing some active task.\n */\n async preventFrameClose(state: boolean) {\n await this._connection.sendToParent(\"preventFrameClose\", {\n state,\n });\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n enableAutoResizing(): FieldModifierLocationFrame {\n if (this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = true;\n\n this.observer = new MutationObserver(\n async () => await this.updateDimension()\n );\n\n const mutationObserverConfig = {\n attributes: true,\n childList: true,\n subtree: true,\n };\n\n this.observer.observe(window.document.body, mutationObserverConfig);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n disableAutoResizing(): FieldModifierLocationFrame {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n this.observer?.disconnect();\n return this;\n }\n\n /**\n * It closes the app modal.\n * @returns {Promise}\n */\n async closeModal(): Promise {\n return await this._connection.sendToParent(\"closeModal\");\n }\n}\n\nexport default FieldModifierLocationFrame;\n","import Extension from './extension';\nimport postRobot from 'post-robot';\nimport { version } from '../package.json';\nimport { IDashboardInitData, IFieldInitData, ISidebarInitData } from './types.js';\n\n//@ts-ignore\npostRobot.CONFIG.LOG_LEVEL = 'error';\n\n/** Class to initialize the plugin on Contentstack UI. */\n/**\n * @hideconstructor\n */\n\nclass ContentstackAppSDK {\n /**\n * You need to first include Contentstack UI Extensions SDK and\n * Contentstack UI Stylesheet in you HTML file and then call\n * ContentstackUIExtension.init in the script tag.\n * @example\n * HTML\n * \n * \n * @example Custom Filed\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var value = extension.field.getData()\n * extension.field.setData(\"New Field Data\")\n * })\n * @example Custom Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var entry = extension.entry.getData()\n * })\n * @example Dashboard Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var stack = extension.stack;\n * var stackData = stack.getData();\n * })\n * @return {external:Promise} A promise object which will be resolved with an instance of the {@link Extension} class which is instantiated using the data received from the Contentstack UI.\n */\n\n static _extension: Extension\n\n static init(): Promise {\n if (this._extension) { return Promise.resolve(this._extension); }\n return Extension.initialize(version).then((initializationData: ISidebarInitData | IDashboardInitData | IFieldInitData) => {\n this._extension = new Extension(initializationData);\n return Promise.resolve(this._extension);\n }).catch((e: Error) => Promise.reject(e));\n }\n\n\n /**\n * Version of Contentstack UI extension.\n * @type {string}\n */\n static get SDK_VERSION() {\n return version;\n }\n}\n\nexport default ContentstackAppSDK;\nmodule.exports = ContentstackAppSDK\n","import { AnyObject } from \"./types/common.types\";\n\nexport declare interface IMetadata {\n uid: string;\n type: \"asset\" | \"entry\";\n _content_type_uid?: string;\n locale?: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataCreateDto\n extends Omit, \"uid\"> {\n entity_uid: string;\n}\n\nexport declare interface IMetadataUpdateDto {\n uid: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataRetrieveDto {\n uid: string;\n}\n\nexport declare interface IMetadataDeleteDto {\n uid: string;\n}\n\nconst metadataTypes = {\n creteMetadata: \"createMetadata\",\n retrieveMetadata: \"getMetadata\",\n retrieveAllMetadata: \"getAllMetadata\",\n updateMetadata: \"updateMetadata\",\n deleteMetadata: \"deleteMetadata\",\n} as const;\n\nclass Metadata {\n constructor(private _connection: any) {}\n\n createMetaData(metadataConfig: IMetadataCreateDto) {\n const { entity_uid, type = \"asset\", ...otherMetaData } = metadataConfig;\n\n const data = {\n action: metadataTypes.creteMetadata,\n payload: {\n metadata: {\n entity_uid,\n type,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveMetaData(metadataConfig: IMetadataRetrieveDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.retrieveMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveAllMetaData(params: AnyObject = {}) {\n const data = {\n action: metadataTypes.retrieveAllMetadata,\n params,\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n updateMetaData(metadataConfig: IMetadataUpdateDto) {\n const { uid, ...otherMetaData } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.updateMetadata,\n payload: {\n metadata: {\n uid,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n deleteMetaData(metadataConfig: IMetadataDeleteDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.deleteMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n}\nexport default Metadata;\n","import { getPreferredBodyElement } from \"./utils/utils\";\n\nclass Modal {\n constructor() {\n if (!Object.prototype.hasOwnProperty.call(window, \"iframeRef\")) {\n const rootElement = getPreferredBodyElement(\n document?.body?.children\n );\n window[\"iframeRef\"] = rootElement;\n }\n }\n\n setBackgroundElement(element: HTMLElement) {\n window[\"iframeRef\"] = element;\n }\n}\n\nexport default Modal;\n","\nimport Base from '../base';\nimport { getReferences, language, environment } from '../../utils';\nimport postRobot from 'post-robot';\nimport { IAnyObject } from '../../../RTE/types';\n\nlet connection: any = {};\n\n/**\n * @summary Creates an instance of `Asset`.\n * @description An initializer is responsible for creating an Asset object.\n * @param {String} uid - uid of the asset\n * @example\n * let Asset = extension.stack.Asset('bltsomething123');\n * @returns {Asset}\n * @ignore\n */\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nclass Asset extends Base {\n getReferences: any\n environment: any\n constructor(uid) {\n super(uid);\n this.getReferences = getReferences;\n this.environment = environment;\n return this;\n }\n\n /**\n * @function\n * @name Stack#Asset.Query\n * @description This static method instantiates the query module for assets. To see the list of methods that can be used for querying assets, refer the {@link Query} module.\n * @example\n * let assetQuery = extension.stack.Asset.Query();\n * assetQuery.where(\"title\": \"main.js\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment\n });\n return entryQuery;\n }\n\n static module(plural = false) {\n return plural ? 'Assets' : 'Asset';\n }\n\n static get connection() {\n return connection;\n }\n\n /**\n * @function\n * @name Stack#Asset.getRteAssets\n * @description This static method retrieves comprehensive information on all assets uploaded through the Rich Text Editor field.\n * @return {external:Promise}\n */\n\n static getRteAssets() {\n return this.connection.sendToParent('stackQuery', { action: 'getRteAssets' }).then(onData).catch(onError);\n }\n\n /**\n * @function\n * @name Stack#Asset.getAssetsOfSpecificTypes\n * @description This static method retrieves assets that are either image or video files, based on the request query.\n * @param {String} assetType Type of asset to be received for e.g., ‘image/png’\n * @return {external:Promise}\n */\n static getAssetsOfSpecificTypes(assetType) {\n if (!assetType || typeof assetType !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.connection.sendToParent('stackQuery', { action: 'getAssetsOfSpecificTypes', asset_type: assetType }).then(onData).catch(onError);\n }\n\n\n /**\n * @name Stack#Asset#only\n * @function\n * @description This method is used to show the selected fields of the assets in the result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('title').fetch();\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @name Stack#Asset#except\n * @function\n * @description This method is used to hide the selected fields of the assets in result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('title').fetch();\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('BASE','title').fetch();\n * @example\n * .Except with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @function\n * @name Stack#Asset#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.Asset('bltsomething123').environment('development').fetch()\n * @returns {Stack#Asset}\n */\n\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addParam\n @function\n @example extension.stack.Asset('uid').addParam('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addQuery\n @function\n @example extension.stack.Asset('uid').addQuery('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n\n /**\n This method will fetch the details of the entries and the assets in which the specified asset is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-asset|\n Asset References}\n @name Stack#Asset#getReferences\n @function\n @example extension.stack.Asset('uid').getReferences().then().catch();\n @return {external:Promise}\n */\n\n /**\n This method deletes an existing asset.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-asset|\n Delete Asset}\n @name Stack#Asset#delete\n @function\n @example extension.stack.Asset('uid').delete().then().catch();\n @return {external:Promise}\n */\n\n\n /**\n * @name Stack#Asset#publish\n * @function\n * @description This method allows you to publish the asset either immediately or schedule the publish for a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .publish(\n {\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n publish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('publishAsset', payload);\n }\n\n /**\n * @function\n * @name Stack#Asset#unpublish\n * @description This method will instantly unpublish the asset, and also give you the provision to automatically unpublish the asset at a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .unpublish({\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n unpublish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('unpublishAsset', payload);\n }\n\n static async handleUpload(_files, type, options?: {parentFolderUid?: string, customUploadHandler?: IAnyObject}) {\n if (!_files || !_files.length) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n const files: File[] = [];\n Array.from(_files).forEach(_ => {\n // @ts-ignore\n const file = new File([_], _.name, { type: _.type });\n files.push(file);\n })\n const uid = new Date().getUTCMilliseconds();\n return (async function() {\n try {\n const uploadReadyListener = postRobot.on(\n `uploadReady_${uid}`,\n function () {\n window.parent.postMessage(\n {\n type: `upload_${uid}`,\n upload_type: type,\n files,\n parentFolderUid: options?.parentFolderUid,\n customUploadHandler: options?.customUploadHandler\n },\n \"*\"\n );\n\n uploadReadyListener.cancel();\n return Promise.resolve({});\n }\n );\n //@ts-ignore\n await postRobot.sendToParent(\"stackOptionsQuery\", {\n action: `upload_${uid}`,\n uid,\n });\n //@ts-ignore\n return postRobot.sendToParent(`upload_${uid}`, {});\n } catch(err) {\n return Promise.reject(err);\n }\n })();\n }\n\n static uploadAsset(files, options?: {parentFolderUid?: string}) {\n return Asset.handleUpload(files, 'upload', options);\n }\n}\n\nexport default (uiConnection) => {\n connection = uiConnection;\n return new Proxy(Asset, {\n apply(Target, thisArg, argumentsList) {\n //@ts-ignore\n return new Target(...argumentsList);\n }\n });\n};\n","//@ts-nocheck\n\nimport Query from './query';\nimport { transform, addParam } from '../utils';\n\n\nfunction onData(data: { data: any; }) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error: any) {\n return Promise.reject(error);\n}\n/**\n * This is Base class, it holds all the methods required for Modle instance,\n * eg ContentType('uid').delete() or Asset('uid').update({...})\n * @ignore\n */\nexport default class Base {\n\n\n uid: string\n _query: { [key: string]: any }\n only: any\n except: any\n addParam: any\n\n static connection: any\n static contentTypeUid: string\n\n constructor(uid: string) {\n if (!uid) { throw new Error('uid is required'); }\n this.uid = uid;\n this._query = {};\n this.only = transform('only');\n this.except = transform('except');\n this.addParam = addParam;\n }\n\n static Query() {\n //@ts-ignore\n return new Query(this.connection, this.module(true), this.contentTypeUid);\n }\n\n\n static create(payload: { [key: string]: any }) {\n const options = { payload, content_type_uid: this.contentTypeUid, action: `create${this.module()}` };\n return this.connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n update(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch(`update${this.constructor.module()}`, payload);\n }\n\n delete() {\n return this.fetch(`delete${this.constructor.module()}`);\n }\n\n fetch(action: string, payload?: { [key: string]: any }) {\n const options = {\n payload,\n content_type_uid: this.constructor.contentTypeUid,\n uid: this.uid,\n params: this._query,\n action: action || `get${this.constructor.module()}`\n };\n\n if (!payload) { delete options.payload; }\n if (!this.constructor.contentTypeUid) { delete options.content_type_uid; }\n return this.constructor.connection.sendToParent('stackQuery', options)\n .then(onData).catch(onError);\n }\n}\n","import Base from '../base';\nimport { getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference } from '../../utils';\n\nlet connection = {};\nlet contentTypeUid = '';\n\n\nclass Entry extends Base {\n constructor(uid: string) {\n super(uid);\n this._query = {};\n return this;\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry.Query\n * @description This static method instantiates the query module for entries. To see the list of methods that can be used for querying entries, refer the {@link Query} module.\n * @example\n * let entryQuery = extension.stack.ContentType('content_type_uid').Entry.Query();\n * entryQuery.where(\"field_uid\": \"10\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryQuery;\n }\n\n static get connection() {\n return connection;\n }\n\n static get contentTypeUid() {\n return contentTypeUid;\n }\n\n static module(plural = false) {\n return plural ? 'Entries' : 'Entry';\n }\n /**\n This method creates a new entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#create-a-an-entry|\n Create Entry}\n @name Stack#ContentType#Entry.create\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.create({\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n @param {Object} payload Data to create an entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @name Stack#ContentType#Entry#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('title').fetch();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @name Stack#ContentType#Entry#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('title').fetch();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('BASE','title').fetch();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * This method includes a query parameter in your query.\n * @name Stack#ContentType#Entry#addParam\n * @function\n * @example extension.stack.ContentType('content_type_uid').Entry('uid').addParam('include_count', 'true').fetch().then().catch();\n * @param {string} key - Key of the parameter\n * @param {string} value - Value of the parameter\n * @return {Stack#ContentType#Entry} Returns\n */\n\n\n /**\n This method will fetch all the entries in which the current entry is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-an-entry|\n Entry References}\n @name Stack#ContentType#Entry#getReferences\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').getReferences().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n @example extension.stack.ContentType('content_type_uid').Entry('uid').update({\"entry\" : {...}}).then().catch();\n @param {Object} payload Data to be update exsisting entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method deletes an existing entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-entry|\n Delete Entry}\n @name Stack#ContentType#Entry#delete\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').delete().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method fetches information of a specific entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-an-entry|\n Get A Single Entry}\n @name Stack#ContentType#Entry#fetch\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').fetch().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeReference\n * @description This method is used to include referenced entries from other content types.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference(['category', 'author']).fetch()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference('category', 'author').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#language\n * @description This method is used to set the language code of which you want to retrieve the data.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').language('en-us').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').environment('development').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#addQuery\n * @description This method is used to add a query to an entry object.\n * @param {String} key - Key of the query\n * @param {String} value - Value of the query\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').addQuery('include_schema',true).fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeSchema().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies).\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeContentType().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeOwner().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#getLanguages\n * @description This method returns the details of all the languages that an entry is localized in.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').getLanguages()\n * @return {external:Promise}\n */\n getLanguages() {\n return this.fetch('getEntryLanguages');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unlocalize\n * @description This method is used to unlocalize an entry\n * @param {string} locale Locale in which the entry has to be unlocalized\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unlocalize('fr-fr').then(...).catch(...);\n * @return {external:Promise}\n */\n unlocalize(locale: string) {\n if (!locale || typeof locale !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('unlocalizeEntry');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#publish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').publish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n publish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('publishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unpublish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unpublish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n unpublish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('unpublishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#setWorkflowStage\n * @description This method allows you to either set a particular workflow stage or update the workflow stage details of an entry.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').setWorkflowStage({\n \"workflow\": {\n \"workflow_stage\": {\n \"comment\": \"Test Comment\",\n \"due_date\": \"Thu Dec 01 2018\",\n \"notify\": false,\n \"uid\": \"blt9f52a2cd5e0014fb\",\n \"assigned_to\": [{\n \"uid\": \"blt296a22e28cc0c63c\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@contentstack.com\"\n }],\n \"assigned_by_roles\": [{\n \"uid\": \"blt5b74c24c7ae25d94\",\n \"name\": \"Content Manager\"\n }]\n }\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n setWorkflowStage(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('setWorkflowStageEntry', payload);\n }\n\n /**\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#update-an-entry| Update Entry}\n * @name Stack#ContentType#Entry#update\n * @function\n * @description This call allows you to update entry content.\n * @param {object} payload - Payload for the request\n * @param {string} [locale] - Passing the ‘locale’ parameter will localize the entry in the specified locale\n * to be localized in the specified locale.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').update(\n {\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n //@ts-ignore\n update(payload: { [key: string]: any }, locale: string) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('updateEntry', payload);\n }\n}\n\nexport default (uiConnection: any, contentType: string) => {\n connection = uiConnection;\n contentTypeUid = contentType;\n return new Proxy(Entry, {\n apply(Target: any, thisArg, argumentsList: any[]) {\n const entryTarget = new Target(...argumentsList);\n Object.assign(entryTarget, {\n getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryTarget;\n }\n });\n};\n","import Entry from './entry';\nimport Base from '../base';\n\nlet connection = {};\n\n\nclass ContentType extends Base {\n\n Entry: typeof Entry\n\n constructor(uid: string) {\n super(uid);\n /**\n * @constructor\n * @hideconstructor\n * @name Stack#ContentType#Entry\n * @desc An entry is the actual piece of content created using one of the defined content types\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#entries| Entries}\n */\n\n // @ts-ignore\n this.Entry = Entry(this.constructor.connection, this.uid);\n return this;\n }\n\n // static module(plural = false) {\n // return plural ? 'ContentTypes' : 'ContentType';\n // }\n static get connection() {\n return connection;\n }\n}\nexport default (uiConnection: any) => {\n connection = uiConnection;\n return new Proxy(ContentType, {\n // target = Foo\n apply(Target: any, thisArg, argumentsList: any[]) {\n return new Target(...argumentsList);\n }\n });\n};\n","import * as Utils from '../utils';\n\n\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nconst _extend = {\n compare(type) {\n return function (key, value) {\n if (key && value && typeof key === 'string' && typeof value !== 'undefined') {\n this._query.query[key] = this._query.query.file_size || {};\n this._query.query[key][type] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n contained(bool) {\n const type = (bool) ? '$in' : '$nin';\n return function (key, value) {\n if (key && value && typeof key === 'string' && Array.isArray(value)) {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key][type] = this._query.query[key][type] || [];\n this._query.query[key][type] = this._query.query[key][type].concat(value);\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n exists(bool) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key].$exists = bool;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n logical(type) {\n return function () {\n const _query: any[] = [];\n for (let i = 0, _i = arguments.length; i < _i; i += 1) {\n if (arguments[i] instanceof Query && arguments[i]._query.query) {\n _query.push(arguments[i]._query.query);\n } else if (typeof arguments[i] === 'object') {\n _query.push(arguments[i]);\n }\n }\n if (this._query.query[type]) {\n this._query.query[type] = this._query.query[type].concat(_query);\n } else {\n this._query.query[type] = _query;\n }\n return this;\n };\n },\n sort(type) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query[type] = key;\n return this;\n }\n throw Error('Argument should be a string.');\n };\n },\n pagination(type) {\n return function (value) {\n if (typeof value === 'number') {\n this._query[type] = value;\n return this;\n }\n throw Error('Argument should be a number.');\n };\n }\n};\n\n/**\n * Creates an instance of the query\n * @hideconstructor\n */\nclass Query {\n module: any\n _connection: any\n _query: {[key: string]: any}\n contentTypeUid: string\n only: any\n except: any\n addQuery: any\n lessThan: any\n lessThanOrEqualTo: any\n greaterThan: any\n greaterThanOrEqualTo: any\n notEqualTo: any\n containedIn: any\n notContainedIn: any\n exists: any\n notExists: any\n ascending: ReturnType\n descending: ReturnType\n beforeUid: ReturnType\n afterUid: ReturnType\n skip: ReturnType\n limit: ReturnType\n or: ReturnType\n and: ReturnType\n addParam: ReturnType\n singleEntry: any\n\n constructor(connection, module, contentTypeUid) {\n this.module = module;\n this._connection = connection;\n this._query = {};\n this._query.query = this._query.query || {};\n this.contentTypeUid = contentTypeUid;\n\n /**\n * @name Query#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('title').find();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('BASE','title').find();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().only(['title','description']).find();\n * @returns {Query}\n */\n\n this.only = Utils.transform('only');\n\n /**\n * @name Query#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('title').find();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('BASE','title').find();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().except(['title','description']).find();\n * @returns {Query}\n */\n\n this.except = Utils.transform('except');\n /**\n This method includes a query parameter in your query.\n @name Query#addQuery\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addQuery('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addQuery = Utils.addQuery;\n\n /**\n * @name Query#lessThan\n * @description This method provides only the entries with values less than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThan('created_at','2015-06-22')\n * @returns {Query}\n */\n this.lessThan = _extend.compare('$lt');\n\n /**\n * @name Query#lessThanOrEqualTo\n * @description This method provides only the entries with values less than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThanOrEqualTo('created_at','2015-03-12')\n * @returns {Query}\n */\n this.lessThanOrEqualTo = _extend.compare('$lte');\n /**\n * @function\n * @name Query#greaterThan\n * @description This method provides only the entrieswith values\n * greater than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThan('created_at','2015-03-12')\n * @returns {Query}\n */\n this.greaterThan = _extend.compare('$gt');\n\n /**\n * @function\n * @name Query#greaterThanOrEqualTo\n * @description This method provides only the entries with values greater than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThanOrEqualTo('created_at', '2015-06-22')\n * @returns {Query}\n */\n this.greaterThanOrEqualTo = _extend.compare('$gte');\n\n /**\n * @function\n * @name Query#notEqualTo\n * @description This method provides only the entries with values not equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').notEqualTo('title','Demo')\n * @returns {Query}\n */\n this.notEqualTo = _extend.compare('$ne');\n\n /**\n * @function\n * @name Query#containedIn\n * @description This method provides only the entries with values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {*} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').containedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.containedIn = _extend.contained(true);\n\n /**\n * @function\n * @name Query#notContainedIn\n * @description This method provides only the entries that do not contain values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {Array} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').notContainedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.notContainedIn = _extend.contained(false);\n\n /**\n * @function\n * @name Query#exists\n * @description This method provides only the entries that contains the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').exists('featured')\n * @returns {Query}\n */\n this.exists = _extend.exists(true);\n\n /**\n * @function\n * @name Query#notExists\n * @description This method provides only the entries that do not contain the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').notExists('featured')\n * @returns {Query}\n */\n this.notExists = _extend.exists(false);\n\n /**\n * @function\n * @name Query#ascending\n * @description This parameter sorts the entries in ascending order on the basis of the value of the specified field.\n * @param {String} key - Field UID to be used for sorting.\n * @example extension.stack.ContentType('blog').ascending('created_at')\n * @returns {Query}\n */\n this.ascending = _extend.sort('asc');\n\n /**\n * @function\n * @name Query#descending\n * @description This method sorts the entries in descending order on the basis of the specified field.\n * @param {String} key - Field UID to be used for sorting\n * @example extension.stack.ContentType('blog').descending('created_at')\n * @returns {Query}\n */\n this.descending = _extend.sort('desc');\n\n /**\n * @function\n * @name Query#beforeUid\n * @description This method provides only the entries that are placed before the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').beforeUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.beforeUid = _extend.sort('before_uid');\n\n /**\n * @function\n * @name Query#afterUid\n * @description This method provides only the entries that are placed after the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').afterUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.afterUid = _extend.sort('after_uid');\n\n /**\n * @function\n * @name Query#skip\n * @description This method skips the specified number of entries.\n * @param {Number} skip - Number of entries to be skipped\n * @example extension.stack.ContentType('blog').skip(5)\n * @returns {Query}\n */\n this.skip = _extend.pagination('skip');\n\n /**\n * @function\n * @name Query#limit\n * @description This method limits the response by providing only the specified number of entries.\n * @param {Number} limit - Maximum number of entries to be returned in the result.\n * @example extension.stack.ContentType('blog').limit(10)\n * @returns {Query}\n */\n this.limit = _extend.pagination('limit');\n\n /**\n * @function\n * @name Query#or\n * @description This method performs the OR operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries\n * to be taken into consideration\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo')\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10)\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery()\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery()\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @returns {Query}\n */\n this.or = _extend.logical('$or');\n\n /**\n * @function\n * @name Query#and\n * @description This method performs the AND operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries to be taken into consideration\n * @example\n * AND with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo');\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10);\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @example\n * .and with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery();\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery();\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @returns {Query}\n */\n this.and = _extend.logical('$and');\n /**\n This method includes a query parameter in your query.\n @name Query#addParam\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addParam('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addParam = Utils.addParam;\n }\n\n // -------------------------------------Entry Queries--------------------------------------------------\n /**\n * @function\n * @name Query#includeReference\n * @description This method is used to include referenced entries from other content types. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference(['category', 'author']).find()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference('category', 'author').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeSchema().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#language\n * @description This method is used to set the language code of which you want to retrieve the data. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().language('en-us').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies). Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeContentType().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeOwner().find()\n * @returns {Query}\n */\n // -----------------------------------------Entry Queries End------------------------------------------------------\n\n /**\n * @function\n * @name Query#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().environment('development').find()\n * @returns {Query}\n */\n\n /**\n * @description This method provides only the entries containing field values matching the specified condition.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').where('title','Demo')\n * @returns {Query}\n */\n equalTo(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n where(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides only the number of entries matching the specified filters.\n * @example extension.stack.ContentType('blog').count()\n * @returns {Query}\n */\n count() {\n this._query.count = true;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method is used to set raw queries on the Query instance.\n * @param {object} query - Raw{json} queries to filter the entries in the result set.\n * @returns {Query}\n */\n query(query) {\n if (typeof query === 'object') {\n this._query.query = Utils.mergeDeep(this._query.query, query);\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description The ’tags’ parameter allows you to specify an array of tags to search for objects.\n * @param {Array} values - Tags\n * @example extension.stack.ContentType('blog').tags(['technology', 'business'])\n * @returns {Query}\n */\n tags(values) {\n if (Array.isArray(values)) {\n this._query.tags = values;\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description This method also includes the total number of entries returned in the response.\n * @example extension.stack.ContentType('blog').includeCount()\n * @returns {Query}\n */\n includeCount() {\n this._query.include_count = true;\n return this;\n }\n\n /**\n * @summary returns Returns the raw query which can be used for further calls (.and/.or).\n * @description This method provides raw{json} queries based on the filters applied on the Query object.\n * @example extension.stack.ContentType('blog').where('title','Demo').getQuery()\n * @returns {Query}\n */\n getQuery() {\n return this._query.query;\n }\n\n /**\n * @description This method provides only the entries matching the regular expression for the specified field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @param {String} [options] - Match or compare a value in the entry\n * @example\n * .regex without options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo')\n * @example\n * .regex with options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo', 'i')\n * @returns {Query}\n */\n regex(key, value, options) {\n if (key && value && typeof key === 'string' && typeof value === 'string') {\n this._query.query[key] = {\n $regex: value\n };\n if (options) this._query.query[key].$options = options;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method is used to search data in entries.\n * @param {string} value - Value to search in the entries.\n * @example extension.stack.ContentType('blog').search('Welcome to demo')\n * @returns {Query}\n */\n search(value) {\n if (value && typeof value === 'string') {\n this._query.typeahead = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides all the entries which satisfy the specified query.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').find()\n */\n find() {\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method provides a single entry from the result set.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').findOne()\n */\n findOne() {\n this.singleEntry = true;\n this._query.limit = 1;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n}\n\nexport default Query;\n","import Asset from './api/asset/index';\nimport ContentType from './api/content-type/index';\nimport { onData, onError } from \"../utils/utils\";\nimport { BranchDetail, GetAllStacksOptions, StackAdditionalData, StackDetail, StackSearchQuery } from '../types/stack.types';\nimport { IManagementTokenDetails } from '../types';\n\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nclass Stack {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _data: StackDetail\n ContentType: any // TODO: change it\n Asset: any // TODO: change it\n private _currentBranch: BranchDetail | null = null;\n\n\n constructor(data: StackDetail = {} as StackDetail, connection: any, additionalData: StackAdditionalData) {\n this._connection = connection;\n this._data = data;\n /**\n * @constructor\n * @hideconstructor\n * @desc Content type defines the structure or schema of a page or a section of your web or mobile property\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#content-types| ContentType}\n * @param {string} uid - Uid of contenttype.\n * @example extension.stack.ContentType('content_type_uid')\n * */\n this.ContentType = ContentType(connection);\n /**\n * @constructor\n * @hideconstructor\n * @desc An initializer is responsible for creating an Asset object.\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#assets| Asset}\n * @param {string} uid - UID of the asset.\n * @example extension.stack.Asset('asset_uid')\n * */\n this.Asset = Asset(connection);\n\n const currentBranch = additionalData.currentBranch || \"\"\n\n if (currentBranch) {\n this._currentBranch =\n (data.branches || []).find(\n (branch) => branch.uid === additionalData.currentBranch\n ) || null;\n }\n\n }\n\n\n /**\n * This method returns the data of the current stack.\n * @return Returns stack data.\n */\n\n getData(): StackDetail {\n return this._data;\n }\n\n\n /**\n * This method returns all the stacks in the current organization.\n * @param query asks for organization UID and query params to get all stacks\n * @returns Stacks within current organization\n */\n async getAllStacks({orgUid = \"\", params = {}}: GetAllStacksOptions = {}): Promise {\n \n // validation\n if (typeof orgUid !== 'string') {\n throw new TypeError('orgUid must be a string');\n }\n\n const options = {\n action: \"getStacks\",\n headers: { organization_uid: orgUid || this._data.org_uid },\n skip_api_key: true,\n params\n };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .then((data) => data.stacks || [])\n .catch(onError);\n\n }\n\n /**\n * Get the details of all the management tokens of the stack.\n * Note: This API does not return the token value.\n * @see {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-management-tokens | Get all management tokens}\n * @returns Details of all the management token of the stack\n */\n async getManagementTokens(): Promise {\n const options = { action: \"getManagementTokens\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(async (response) => {\n const data = await onData<{tokens: IManagementTokenDetails[]}>(response);\n return data.tokens || [];\n })\n .catch(onError);\n }\n\n /**\n * Gets the results of the search based on user query\n * @param queries Array of key value pair of query parameters\n * @param apiKey API key of the stack\n * @returns Result of the query\n */\n search(queries: StackSearchQuery, apiKey: string | null = this._data.api_key) {\n const options = { params: queries, api_key: apiKey, action: \"search\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n }\n\n\n /**\n * This API allows you to retrieve data of a content type of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-content-type| Content Type API} requests. This method returns a Promise object.\n * @param {string} uid Uid of the desired content type\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with content type details.\n */\n getContentType(uid: string, params = {}): Promise<{ [key: string]: any }> {\n if (!uid) {\n return Promise.reject(new Error('uid is required'));\n }\n const options = { uid, params, action: 'getContentType' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve data of a content types of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Content Types API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with details of the content type.\n */\n getContentTypes(query = {}, params: { [key: string]: any } = {}): Promise<{ [key: string]: any }> {\n const optionParams = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getContentTypes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve environment details of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-environment| Environment API} requests. This method returns a Promise object.\n * @param {string} name Name of the desired environment\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with environment details.\n */\n getEnvironment(name: string, params = {}) {\n if (!name) {\n return Promise.reject(new Error('name is required'));\n }\n const options = { name, params, action: 'getEnvironment' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of environments of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-environments| Environments API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the environments.\n */\n getEnvironments(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getEnvironments' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of releases of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-releases| Releases API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the releases.\n */\n getReleases(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getReleases' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of publish queue of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-publish-queue| Publish Queue API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the publish queue.\n */\n getPublishes(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getPublishes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a locale of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-language| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getLocale(code: string, params = {}) {\n if (!code) {\n return Promise.reject(new Error('code is required'));\n }\n const options = { code, params, action: 'getLocale' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getLocales(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getLocales' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a workflow of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-workflow| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getWorkflow(uid: string, params = {}) {\n if (!uid) {\n return Promise.reject(new Error('workflow uid is required'));\n }\n const options = { uid, params, action: 'getWorkflow' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n \n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getWorkflows(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getWorkflows' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve all the branches in the current stack\n * @returns All branches of the current stack\n */\n getAllBranches(): BranchDetail[] {\n return this._data.branches || [];\n }\n\n /**\n * Returns the details of the current branch of the stack if available\n * @returns current branch of the current stack if available\n */\n getCurrentBranch(): BranchDetail | null {\n return this._currentBranch;\n }\n}\n\nexport default Stack;\n","export function transform(type) {\n return function () {\n switch (arguments.length) {\n case 1:\n if (\n Array.isArray(arguments[0]) ||\n typeof arguments[0] === \"string\"\n ) {\n let query = this._query[`${type}[BASE]`] || [];\n query = query.concat(arguments[0]);\n this._query[`${type}[BASE]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n case 2:\n if (\n typeof arguments[0] === \"string\" &&\n (Array.isArray(arguments[1]) ||\n typeof arguments[1] === \"string\")\n ) {\n let query = this._query[`${type}[${arguments[0]}]`] || [];\n query = query.concat(arguments[1]);\n this._query[`${type}[${arguments[0]}]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n default:\n throw Error(\"Kindly provide valid parameters\");\n }\n };\n}\n\n// merge two objects\nexport function merge(\n target: { [key: string]: any },\n source: { [key: string]: any }\n) {\n const newTraget = target;\n if (target && source) {\n Object.keys(source).forEach((key) => {\n newTraget[key] = source[key];\n });\n }\n return newTraget;\n}\n\n// merge two objects\nexport function mergeDeep(\n oldTarget: { [key: string]: any },\n oldSource: { [key: string]: any }\n) {\n const newTarget = oldTarget;\n const self = this;\n const _mergeRecursive = (anotherTarget, source) => {\n const target = anotherTarget;\n Object.keys(source).forEach((key) => {\n if (\n self._type(source[key]) === \"object\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n _mergeRecursive(target[key], source[key]);\n } else if (\n self._type(source[key]) === \"array\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n target[key] = target[key].concat(source[key]);\n } else {\n target[key] = source[key];\n }\n });\n };\n _mergeRecursive(newTarget, oldSource);\n return newTarget;\n}\n\nexport function _type(val) {\n let __typeof = typeof val;\n if (__typeof === \"object\" && Array.isArray(val)) {\n //@ts-ignore\n __typeof = \"array\";\n }\n return __typeof;\n}\n\nexport function addParam(key, value) {\n if (key && typeof key === \"string\" && value && typeof value === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"Kindly provide valid parameters.\");\n}\n\nexport function addQuery(key, value) {\n if (key && value && typeof key === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"First argument should be a String.\");\n}\n\nexport function language(languageCode) {\n if (languageCode && typeof languageCode === \"string\") {\n this._query.locale = languageCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function environment(environmentCode) {\n if (environmentCode && typeof environmentCode === \"string\") {\n this._query.environment = environmentCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function includeOwner() {\n this._query.include_owner = true;\n return this;\n}\n\nexport function includeContentType() {\n this._query.include_content_type = true;\n return this;\n}\n\nexport function includeSchema() {\n this._query.include_schema = true;\n return this;\n}\n\nexport function includeReference(val) {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(val[i]);\n }\n } else if (typeof val === \"string\") {\n for (let i = 0; i < arguments.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(\n arguments[i]\n );\n }\n } else {\n throw Error(\"Argument should be a String or an Array.\");\n }\n return this;\n}\n\nexport function getReferences() {\n return this.fetch(`get${this.constructor.module()}References`);\n}\n","function onError(error: Error) {\n return Promise.reject(error);\n}\n/**\n * Class used by an extension to store your data in {@link external:localStorage}.\n */\nclass Store {\n /**\n * @hideconstructor\n */\n\n _connection: any\n\n constructor(connection: any) {\n this._connection = connection;\n }\n /**\n * Gets the value of key\n * @param {string} key Key of the stored data\n * @example extension.store.get('key').then((value) => console.log(value)) // will log value for the given key\n * @return {external:Promise}\n */\n get(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'get', key })\n .then((event: { data: any; }) => Promise.resolve(event.data)).catch(onError);\n }\n\n /**\n * Gets an object with all the stored key-value pairs.\n * @example extension.store.getAll().then((obj) => obj)\n * @return {external:Promise}\n */\n getAll() {\n return this._connection.sendToParent('store', { action: 'getAll' })\n .then(({ data = {} }) => Promise.resolve(data)).catch(onError);\n }\n\n /**\n * Sets the value of a key\n * @param {string} key Key of the stored data.\n * @param {*} value Data to be stored.\n * @example extension.store.set('key', 'value').then((success) => console.log(success)) // will log ‘true’ when value is set\n * @return {external:Promise}\n */\n\n set(key: string, value: string) {\n if (!key || !value || typeof key !== 'string') {\n throw new Error('Kindly provide valid parameters');\n }\n return this._connection.sendToParent('store', { action: 'set', key, value })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Removes the value of a key\n * @param {string} key Key of the data to be removed from the store\n * @example extension.store.remove('key').then((success) => console.log(success)) // will log ‘true’ when value is removed\n * @return {external:Promise}\n */\n\n remove(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'remove', key })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Clears all the stored data of an extension\n * @example extension.store.clear().then((success) => console.log(success)) // will log ‘true’ when values are cleared\n * @return {external:Promise}\n */\n\n clear() {\n return this._connection.sendToParent('store', { action: 'clear' })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n}\n\nexport default Store;\n","import { AnyObject } from \"./types/common.types\";\nimport { StackDetail } from \"./types/stack.types\";\n\nexport declare interface IDashboardWidget {\n [key: string]: any;\n}\n\nexport declare interface ICustomField {\n [key: string]: any;\n}\n\nexport declare interface ISidebarWidget {\n [key: string]: any;\n}\n\nexport declare interface IRTE {\n [key: string]: any;\n}\n\nexport declare interface IFieldModifierLocation {\n [key: string]: any;\n}\n\nexport declare interface IEntryFieldLocation {\n [key: string]: any;\n}\n\nexport declare interface IFullPageLocation {\n [key: string]: any;\n}\n\nexport declare interface User {\n uid: string;\n first_name: string;\n last_name: string;\n}\n\nexport declare interface Manifest {\n created_by: User;\n icon: string;\n name: string;\n target_type: string;\n uid: string;\n updated_by: User;\n version: number;\n visibility: string;\n}\n\nexport declare interface IAppConfigWidget {\n installation: {\n setInstallationData: (\n installationData: IInstallationData\n ) => Promise;\n getInstallationData: () => Promise;\n setValidity: (isValid: boolean, options?: ValidationOptions) => void;\n [key: string]: any;\n };\n stack: AnyObject;\n}\n\nexport declare interface IPageWidget {\n [key: string]: any;\n}\n\n// initialization data\nexport declare interface IUser {\n [key: string]: any;\n}\n\nexport declare interface ICurrentEntry {\n [key: string]: any;\n}\n\nexport declare interface ICurrentContentType {\n [key: string]: any;\n}\n\nexport declare interface IConfig {\n [key: string]: any;\n}\n\nexport declare interface ISchema {\n [key: string]: any;\n}\n\nexport declare interface IFieldConfig {\n [key: string]: any;\n}\n\n// Init data\n\ndeclare interface ICommonInitData {\n app_id: string;\n installation_uid: string;\n extension_uid: string;\n stack: StackDetail;\n user: IUser;\n currentBranch: string;\n region: string;\n manifest?: Manifest;\n}\n\nexport declare interface IDashboardInitData {\n data: ICommonInitData & {\n dashboard_width: \"full_width\" | \"half_width\";\n config?: AnyObject;\n type: \"DASHBOARD\";\n };\n}\n\nexport declare interface ISidebarInitData {\n data: ICommonInitData & {\n app_config: IConfig;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n config?: AnyObject;\n changedData: ICurrentEntry;\n type: \"WIDGET\";\n };\n}\n\nexport declare interface IRTELocationInitData {\n data: ICommonInitData & {\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n changedData: ICurrentEntry;\n }\n}\n\nexport declare interface IFieldInitData {\n data: ICommonInitData & {\n entry: ICurrentEntry;\n content_type: ICurrentContentType;\n locale: string;\n uid: string;\n schema: ISchema;\n app_config: IConfig;\n value: any;\n field_config: IFieldConfig;\n config?: AnyObject;\n changedData: ICurrentEntry;\n self: boolean;\n type: \"FIELD\";\n };\n}\n\nexport declare interface IFullPageLocationInitData {\n data: ICommonInitData & {\n type: \"FULL_PAGE_LOCATION\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IRTEInitData {\n data: ICommonInitData & {\n type: \"RTE\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IAppConfigInitData {\n data: ICommonInitData & {\n type: \"APP_CONFIG_WIDGET\";\n config?: AnyObject;\n };\n}\n\nexport declare interface ICurrentAsset {\n [key: string]: any;\n}\n\nexport declare interface IAssetSidebarInitData {\n data: ICommonInitData & {\n type: \"ASSET_SIDEBAR_WIDGET\";\n currentAsset: ICurrentAsset;\n config: { [key: string]: any };\n };\n}\n\nexport declare interface IFieldModifierLocationInitData {\n data: ICommonInitData & {\n type: \"FIELD_MODIFIER_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface IEntryFieldLocationInitData {\n data: ICommonInitData & {\n type: \"ENTRY_FIELD_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface setAssetDto {\n title: string;\n description: string;\n tags: string[];\n}\n\nexport enum StackLocation {\n STACK_CONFIG = \"cs.cm.stack.config\",\n DASHBOARD = \"cs.cm.stack.dashboard\",\n SIDEBAR = \"cs.cm.stack.sidebar\",\n CUSTOM_FIELD = \"cs.cm.stack.custom_field\",\n RTE = \"cs.cm.stack.rte\",\n}\n\nexport enum OrganizationLocation {\n ORG_CONFIG = \"cs.org.config\",\n}\n\nexport type AppLocation = StackLocation | OrganizationLocation;\n\nexport interface Scope {\n content_types: string[];\n}\n\n/**\n * installation details API response\n */\nexport interface IInstallationData {\n configuration: { [key: string]: any };\n serverConfiguration: { [key: string]: any };\n webhooks?: {\n channels: string[];\n }[];\n uiLocations?: {\n type: AppLocation;\n meta: {\n enabled: boolean;\n scope?: Scope;\n name: string;\n extentionUid: string;\n }[];\n }[];\n}\n// End of Init data\n\nexport declare interface IInitializationData {\n FIELD: IFieldConfig;\n WIDGET: ISidebarInitData;\n DASHBOARD: IDashboardInitData;\n RTE: IRTEInitData;\n APP_CONFIG_WIDGET: IAppConfigInitData;\n ASSET_SIDEBAR_WIDGET: IAssetSidebarInitData;\n}\n\nexport declare type ILocation =\n | \"RTE\"\n | \"FIELD\"\n | \"DASHBOARD\"\n | \"WIDGET\"\n | \"APP_CONFIG_WIDGET\"\n | \"ASSET_SIDEBAR_WIDGET\"\n | \"FULL_PAGE_LOCATION\"\n | \"ENTRY_FIELD_LOCATION\"\n | \"FIELD_MODIFIER_LOCATION\";\n\nexport declare interface ValidationOptions {\n message?: string;\n}\n\nexport declare interface IManagementTokenDetails {\n uid: string;\n name: string;\n}\n\nexport enum Region {\n UNKNOWN = \"UNKNOWN\",\n NA = \"NA\",\n EU = \"EU\",\n AZURE_NA = \"AZURE_NA\",\n AZURE_EU = \"AZURE_EU\",\n}\n","export const ERROR_MESSAGES = Object.freeze({\n configPage: {\n setValidity: {\n isValidTypeBoolean: \"isValid should be a boolean\",\n messageTypeString: \"message should be a string\",\n },\n },\n entryField: {\n entry: {\n tagsShouldNotBeBlank: \"Tags cannot be blank\",\n tagsShouldBeArrayOfStrings: \"Tags must be an array of strings\",\n },\n frame: {\n dimensionHeightShouldBeNumber: \"Dimension height must be a number\",\n dimensionWidthShouldBeNumber: \"Dimension width must be a number\",\n },\n },\n});\n\nexport default function generateErrorMessages(message: string) {\n return `Contentstack App SDK: ${message}`;\n}\n","import { Region } from \"../types\";\n\nexport function onData>(data: { data: Data }) {\n if (typeof data.data === \"string\") {\n return Promise.reject(data.data);\n }\n return Promise.resolve(data.data);\n}\n\nexport function onError(error: Error) {\n return Promise.reject(error);\n}\n\nexport function formatAppRegion(region: string): Region {\n switch (region) {\n case \"NA\":\n return Region.NA;\n case \"EU\":\n return Region.EU;\n case \"AZURE_NA\":\n return Region.AZURE_NA;\n case \"AZURE_EU\":\n return Region.AZURE_EU;\n default:\n return Region.UNKNOWN;\n }\n}\n\nexport function getPreferredBodyElement(nodeCollection: HTMLCollection) {\n let rootElementIndex = Infinity;\n let rootElement: Element | undefined;\n const elementPreferenceList = [\n \"HEADER\",\n \"NAV\",\n \"MAIN\",\n \"SECTION\",\n \"ARTICLE\",\n \"ASIDE\",\n \"FOOTER\",\n \"DIV\",\n ];\n const nonRenderingTags = [\"SCRIPT\", \"NOSCRIPT\", \"STYLE\", \"TEMPLATE\"];\n // ? choose higher preference semantic HTML tags\n Array.from(nodeCollection).forEach((el) => {\n const elIndex = elementPreferenceList.indexOf(el.nodeName);\n if (elIndex >= 0 && elIndex < rootElementIndex) {\n rootElementIndex = elIndex;\n rootElement = el;\n }\n });\n // ? choose the first rendering HTML tag found if no semantic tags found\n if (!rootElement) {\n rootElement = Array.from(nodeCollection).find(\n (el) => !nonRenderingTags.includes(el.nodeName)\n );\n }\n return rootElement || nodeCollection[0];\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\n\nconst config = { attributes: true, childList: true, subtree: true };\nlet observer: MutationObserver;\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass Window {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _autoResizingEnabled: boolean\n _resizingEnabled: boolean\n type: 'DASHBOARD' | 'FIELD'\n _emitter: EventEmitter\n state: 'half_width' | 'full_width'\n _height?: number\n\n constructor(connection: any, type: 'DASHBOARD' | 'FIELD', emitter: EventEmitter, state: 'half_width' | 'full_width' = 'half_width') {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._resizingEnabled = false;\n this.type = type;\n this.state = state;\n this._emitter = emitter;\n }\n\n /**\n * This method activates the resize button that gives you the provision to resize the window size of your Dashboard Widget.\n * @return {external:Promise} A promise object which will resolve when a resize button is visible on the Dashboard Widget.\n */\n enableResizing() {\n if (this.type !== 'DASHBOARD') { return Promise.resolve(); }\n this._resizingEnabled = true;\n return this._connection.sendToParent('window', { action: 'enableResizing' });\n }\n\n\n /**\n * This function executes the callback function whenever a Dashboard Widget extension is maximized or minimized. Only applicable on Dashboard Widget extensions.\n * @param {function} callback Function to be called when a Dashboard Widget extension is maximized or minimized\n * @return {boolean} Will return true\n */\n\n onDashboardResize(callback: (event: any) => void) {\n const windowObj = this;\n if (this.type !== 'DASHBOARD') {\n return false;\n }\n if (callback && typeof (callback) === 'function') {\n windowObj._emitter.on('dashboardResize', (event: { state: 'half_width' | 'full_width'; }) => {\n windowObj.state = event.state;\n callback(event.state);\n });\n } else {\n throw Error('Callback must be a function');\n }\n return true;\n }\n\n\n /**\n * This method updates the extension height on Contentstack UI.\n * If the ‘height’ argument is not passed, it will calculate the scroll height and set the height of extension window accordingly.\n * @param {string|number} height Desired height of the iframe window\n * @return {external:Promise} A promise object which will be resolved when Contentstack UI sends an acknowledgement stating that the height has been updated.\n */\n updateHeight(height?: number) {\n if (this.type === 'DASHBOARD' && this.state === 'half_width') { return Promise.resolve(); }\n if (!height || isNaN(height)) {\n this._height = Math.ceil(document.documentElement.getBoundingClientRect().height);\n } else if (this._height === height) {\n return Promise.resolve();\n } else {\n this._height = height;\n }\n return this._connection.sendToParent('resize', this._height);\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {Window}.\n */\n enableAutoResizing() {\n if (this._autoResizingEnabled || (this.state === 'half_width' && this.type === 'DASHBOARD')) {\n return this;\n }\n this._autoResizingEnabled = true;\n //@ts-ignore\n observer = new MutationObserver(this.updateHeight.bind(this));\n observer.observe(window.document.body, config);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {Window}.\n */\n disableAutoResizing() {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n observer.disconnect();\n return this;\n }\n\n enablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent(\"window\", {\n action: \"dashboardEnableTopPadding\",\n });\n }\n\n disablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent('window', {\n action: 'dashboardDisableTopPadding' \n });\n }\n \n}\n\nexport default Window;\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","// 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].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n"],"names":["root","factory","exports","module","define","amd","this","self","modules","installedModules","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","value","interface_namespaceObject","isRegex","item","toString","cleanUpWindow","promise_ZalgoPromise","bridge","init","public_parent","_send","request","sendToParent","client","_on","listen","server_once","server_listener","CONFIG","constants_CONSTANTS","disable","PROTOCOL","IE_WIN_ACCESS_ERROR","isAboutProtocol","arguments","length","window","location","protocol","getParent","win","parent","err","getOpener","opener","canReadFromWindow","href","getActualDomain","Error","host","utils_getDomain","domain","mockDomain","indexOf","isActuallySameDomain","desc","getOwnPropertyDescriptor","isAncestorParent","child","childParent","result","push","getFrames","frames","len","frame","_i","_frame","iframeWindows","iframeFrames","isWindowClosed","allowMock","closed","message","mockclosed","top","iframeIndex","collection","contentWindow","parentNode","doc","ownerDocument","documentElement","contains","getAncestor","matchDomain","pattern","origin","Array","isArray","Boolean","match","JSON","stringify","some","subpattern","isWindow","obj","Window","__cross_domain_utils_window_check__","util_safeIndexOf","_ALLOWED_POST_MESSAGE","weakmap_CrossDomainSafeWeakMap","CrossDomainSafeWeakMap","instance","Constructor","TypeError","Math","random","WeakMap","freeze","testWeakMap","testKey","set","weakmap","keys","values","_cleanupClosedWindows","delete","splice","isSafeToReadWrite","key","entry","writable","index","has","getOrSet","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","ERROR","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","POPUP","IFRAME","WINDOW_PROPS","POSTROBOT","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","POST_MESSAGE","BRIDGE","GLOBAL","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","WILDCARD","map","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","navigator","userAgent","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_typeof","Symbol","iterator","constructor","stringifyError","level","stack","newErr","once","method","called","apply","lib_util_noop","uniqueID","chars","replace","charAt","floor","replaceObject","callback","depth","newobj","_key","childItem","util_isRegex","utils_isPromise","Promise","_toString","then","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushPromise","flushActive","promise","resolve","startActive","endActive","ZalgoPromise","handler","_this","resolved","rejected","errorHandled","handlers","_result","_error","isAsync","res","reject","dispatch","error","_this2","_err","setTimeout","j","asyncReject","dispatching","chain","firstPromise","secondPromise","_handlers$i","_onSuccess","onSuccess","_onError","onError","_promise","_result2","catch","finally","onFinally","try","timeout","time","_this3","clearTimeout","toPromise","all","promises","count","results","prom","hash","items","onPossiblyUnhandledException","cancel","context","args","delay","_delay","isPromise","flush","global","registerSelf","serialize__typeof","methods","listenForMethods","on","_ref","source","data","meth","id","isSerialized","type","__type__","serializeMethod","destination","__id__","__name__","deserializeMethod","wrapper","slice","send","_ref2","__xdomain__","deserializeZalgoPromise","__then__","sayHello","readyPromises","SEND_MESSAGE_STRATEGIES","serializedMessage","dom","forEach","postMessage","_extends","assign","target","sendMessage","_jsonStringify","options","sourceDomain","windowType","__message__","__code__","code","regex","__source__","messages","replacer","indent","objectToJSON","arrayToJSON","toJSON","strategyName","success","status","join","responseListeners","requestListeners","WINDOW_WILDCARD","erroredResponseListeners","_RECEIVE_MESSAGE_TYPE","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","nameListeners","_i2","_ref3","_length2","winQualifier","winListeners","_i4","_winListeners$__DOMAI2","_length4","_ref5","listener","types__extends","RECEIVE_MESSAGE_TYPES","pathname","ack","respond","fireAndForget","originalSource","handleError","response","receive__typeof","receiveMessage","event","parsedMessage","parse","receivedMessages","RegExp","messageListener","sourceElement","originalEvent","targetWindow","el","document","getElementById","tagName","toLowerCase","HTMLIFrameElement","hasResult","requestPromises","requestPromise","actualParent","_i7","_getAllChildFrames4","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","childFrame","_length6","_i15","_getFrames8","_length14","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","cycle","max","min","server__typeof","listenerOptions","errorHandler","requestListener","addRequestListener","_ref6","listenersCollection","_i6","_win2","_i8","_length8","_listenersCollection","_i10","_domain2","_length10","_item","_i12","_length12","existingListener","strDomain","regexListeners","regexListener","_handler","errorOnClose","interval","runInterval","onceListener","removeEventListener","popupWindowsByWin","remoteWindows","initialized","addEventListener","attachEvent","initializationData","connection","emitter","currentAsset","_emitter","_connection","thisAsset","_changedData","getData","bind","setData","syncAsset","updateWidth","onSave","onChange","onPublish","onUnPublish","replaceAsset","asset","width","file","handleUpload","AssetSidebarWidget","configCallback","pluginMetaData","registry","title","toolbar","inMainToolbar","inHoveringToolbar","isContentstackElement","meta","elementType","editorCallbacks","isDependent","isContainer","containerMetaData","rootCategory","dependentPlugins","addPlugins","plugins","plugin","category","beforeChildrenRender","beforeElementRender","handleMouseDown","rte","config","entries","iconName","display","includes","dndOptions","Component","shouldOverride","containerMeta","RTEPlugin","rtePluginInitializer","additionalData","_data","currentBranch","_additionalData","setInstallationData","installationData","onData","getInstallationData","setValidity","isValid","ERROR_MESSAGES","configPage","isValidTypeBoolean","messageTypeString","AppConfig","content_type","changedData","locale","_options","thisEntry","console","log","getField","uid","useUnsavedSchema","_internalFlags","FieldInstance","path","split","schema","find","x","data_type","multiple","blocks","block","e","fieldObject","resolvedData","Entry","initData","pulse","eventName","metadata","postRobot","getConfig","installationUID","getCurrentLocation","getAppVersion","version","orgUid","org_uid","action","headers","organization_uid","skip_api_key","app","getCurrentRegion","region","appUID","app_id","locationUID","extension_uid","installation_uid","currentUser","user","store","DashboardWidget","CustomField","SidebarWidget","RTELocation","AppConfigWidget","FullscreenAppWidget","FullPage","EntryFieldLocation","FieldModifierLocation","modal","formatAppRegion","manifest","dashboard_width","installation","field","fieldConfig","field_config","emitEvent","otherData","state","initialize","sdkType","setReady","Extension","excludedDataTypesForSetField","fieldDataObject","unResolvedData","separatedData","_resolvedData","_self","fieldObj","currentFieldObj","dataObj","setFocus","Field","getTags","tags","setTags","undefined","entryField","tagsShouldNotBeBlank","every","tag","areTagsValid","tagsShouldBeArrayOfStrings","FieldModifierLocationEntry","FieldModifierLocationField","_autoResizingEnabled","updateDimension","enableAutoResizing","disableAutoResizing","closeModal","dimension","height","_height","ceil","getBoundingClientRect","_width","dimensionBody","dimensionHeightShouldBeNumber","dimensionWidthShouldBeNumber","preventFrameClose","observer","MutationObserver","observe","body","attributes","childList","subtree","disconnect","FieldModifierLocationFrame","LOG_LEVEL","_extension","ContentstackAppSDK","createMetaData","metadataConfig","entity_uid","otherMetaData","payload","retrieveMetaData","retrieveAllMetaData","params","updateMetaData","deleteMetaData","Metadata","rootElement","getPreferredBodyElement","children","setBackgroundElement","element","Modal","getReferences","environment","Query","entryQuery","language","plural","getRteAssets","getAssetsOfSpecificTypes","assetType","asset_type","publish","fetch","unpublish","_files","files","from","_","File","Date","getUTCMilliseconds","upload_type","parentFolderUid","customUploadHandler","uploadAsset","Asset","uiConnection","Proxy","Target","thisArg","argumentsList","_query","only","transform","except","addParam","contentTypeUid","create","content_type_uid","update","includeOwner","includeContentType","includeSchema","includeReference","getLanguages","unlocalize","setWorkflowStage","contentType","entryTarget","addQuery","ContentType","_extend","query","file_size","bool","concat","$exists","Utils","lessThan","lessThanOrEqualTo","greaterThan","greaterThanOrEqualTo","notEqualTo","containedIn","notContainedIn","exists","notExists","ascending","descending","beforeUid","afterUid","skip","limit","or","and","equalTo","where","mergeDeep","includeCount","include_count","getQuery","$regex","$options","search","typeahead","findOne","singleEntry","_currentBranch","branches","branch","getAllStacks","stacks","getManagementTokens","tokens","queries","apiKey","api_key","getContentType","getContentTypes","optionParams","getEnvironment","getEnvironments","getReleases","getPublishes","getLocale","getLocales","getWorkflow","getWorkflows","getAllBranches","getCurrentBranch","Stack","newTraget","oldTarget","oldSource","newTarget","_mergeRecursive","anotherTarget","_type","val","__typeof","languageCode","environmentCode","include_owner","include_content_type","include_schema","getAll","remove","clear","Store","Region","StackLocation","OrganizationLocation","NA","EU","AZURE_NA","AZURE_EU","UNKNOWN","nodeCollection","rootElementIndex","Infinity","elementPreferenceList","nonRenderingTags","elIndex","nodeName","_resizingEnabled","enableResizing","onDashboardResize","windowObj","updateHeight","isNaN","enablePaddingTop","disablePaddingTop","EventEmitter","proto","originalGlobalValue","indexOfListener","listeners","alias","isValidListener","getListeners","evt","events","_getEvents","test","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","__webpack_module_cache__","__webpack_require__","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://ContentstackAppSDK/webpack/universalModuleDefinition","webpack://ContentstackAppSDK/./node_modules/post-robot/dist/post-robot.js","webpack://ContentstackAppSDK/./node_modules/post-robot/index.js","webpack://ContentstackAppSDK/./src/AssetSidebarWidget.ts","webpack://ContentstackAppSDK/./src/RTE/index.tsx","webpack://ContentstackAppSDK/./src/appConfig/index.ts","webpack://ContentstackAppSDK/./src/entry.ts","webpack://ContentstackAppSDK/./src/extension.ts","webpack://ContentstackAppSDK/./src/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/entry.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/frame.ts","webpack://ContentstackAppSDK/./src/index.ts","webpack://ContentstackAppSDK/./src/metadata.ts","webpack://ContentstackAppSDK/./src/modal.ts","webpack://ContentstackAppSDK/./src/stack/api/asset/index.ts","webpack://ContentstackAppSDK/./src/stack/api/base.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/entry.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/index.ts","webpack://ContentstackAppSDK/./src/stack/api/query.ts","webpack://ContentstackAppSDK/./src/stack/index.ts","webpack://ContentstackAppSDK/./src/stack/utils.ts","webpack://ContentstackAppSDK/./src/store.ts","webpack://ContentstackAppSDK/./src/types.ts","webpack://ContentstackAppSDK/./src/utils/errorMessages.ts","webpack://ContentstackAppSDK/./src/utils/utils.ts","webpack://ContentstackAppSDK/./src/window.ts","webpack://ContentstackAppSDK/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://ContentstackAppSDK/webpack/bootstrap","webpack://ContentstackAppSDK/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ContentstackAppSDK\"] = factory();\n\telse\n\t\troot[\"ContentstackAppSDK\"] = factory();\n})(this, () => {\nreturn ","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"postRobot\", [], factory) : \"object\" == typeof exports ? exports.postRobot = factory() : root.postRobot = factory();\n}(\"undefined\" != typeof self ? self : this, function() {\n return function(modules) {\n var installedModules = {};\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n module.l = !0;\n return module.exports;\n }\n __webpack_require__.m = modules;\n __webpack_require__.c = installedModules;\n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n configurable: !1,\n enumerable: !0,\n get: getter\n });\n };\n __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n __webpack_require__.d(getter, \"a\", getter);\n return getter;\n };\n __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n __webpack_require__.p = \"\";\n return __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n }({\n \"./src/index.js\": function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n Object.defineProperty(__webpack_exports__, \"__esModule\", {\n value: !0\n });\n var interface_namespaceObject = {};\n __webpack_require__.d(interface_namespaceObject, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(interface_namespaceObject, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(interface_namespaceObject, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(interface_namespaceObject, \"init\", function() {\n return init;\n });\n __webpack_require__.d(interface_namespaceObject, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(interface_namespaceObject, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(interface_namespaceObject, \"request\", function() {\n return request;\n });\n __webpack_require__.d(interface_namespaceObject, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(interface_namespaceObject, \"client\", function() {\n return client;\n });\n __webpack_require__.d(interface_namespaceObject, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(interface_namespaceObject, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(interface_namespaceObject, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(interface_namespaceObject, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(interface_namespaceObject, \"disable\", function() {\n return disable;\n });\n function isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n var PROTOCOL = {\n MOCK: \"mock:\",\n FILE: \"file:\",\n ABOUT: \"about:\"\n }, WILDCARD = \"*\", IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n function isAboutProtocol() {\n return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window).location.protocol === PROTOCOL.ABOUT;\n }\n function getParent() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win) try {\n if (win.parent && win.parent !== win) return win.parent;\n } catch (err) {}\n }\n function getOpener() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win && !getParent(win)) try {\n return win.opener;\n } catch (err) {}\n }\n function canReadFromWindow(win) {\n try {\n win && win.location && win.location.href;\n return !0;\n } catch (err) {}\n return !1;\n }\n function getActualDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, location = win.location;\n if (!location) throw new Error(\"Can not read window location\");\n var protocol = location.protocol;\n if (!protocol) throw new Error(\"Can not read window protocol\");\n if (protocol === PROTOCOL.FILE) return PROTOCOL.FILE + \"//\";\n if (protocol === PROTOCOL.ABOUT) {\n var parent = getParent(win);\n return parent && canReadFromWindow(parent) ? getActualDomain(parent) : PROTOCOL.ABOUT + \"//\";\n }\n var host = location.host;\n if (!host) throw new Error(\"Can not read window host\");\n return protocol + \"//\" + host;\n }\n function utils_getDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, domain = getActualDomain(win);\n return domain && win.mockDomain && 0 === win.mockDomain.indexOf(PROTOCOL.MOCK) ? win.mockDomain : domain;\n }\n function isActuallySameDomain(win) {\n try {\n if (win === window) return !0;\n } catch (err) {}\n try {\n var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n if (desc && !1 === desc.enumerable) return !1;\n } catch (err) {}\n try {\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n } catch (err) {}\n try {\n if (getActualDomain(win) === getActualDomain(window)) return !0;\n } catch (err) {}\n return !1;\n }\n function isAncestorParent(parent, child) {\n if (!parent || !child) return !1;\n var childParent = getParent(child);\n return childParent ? childParent === parent : -1 !== function(win) {\n var result = [];\n try {\n for (;win.parent !== win; ) {\n result.push(win.parent);\n win = win.parent;\n }\n } catch (err) {}\n return result;\n }(child).indexOf(parent);\n }\n function getFrames(win) {\n var result = [], frames = void 0;\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n var len = void 0;\n try {\n len = frames.length;\n } catch (err) {}\n if (0 === len) return result;\n if (len) {\n for (var i = 0; i < len; i++) {\n var frame = void 0;\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n result.push(frame);\n }\n return result;\n }\n for (var _i = 0; _i < 100; _i++) {\n var _frame = void 0;\n try {\n _frame = frames[_i];\n } catch (err) {\n return result;\n }\n if (!_frame) return result;\n result.push(_frame);\n }\n return result;\n }\n var iframeWindows = [], iframeFrames = [];\n function isWindowClosed(win) {\n var allowMock = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n try {\n if (win === window) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (!win) return !0;\n } catch (err) {\n return !0;\n }\n try {\n if (win.closed) return !0;\n } catch (err) {\n return !err || err.message !== IE_WIN_ACCESS_ERROR;\n }\n if (allowMock && function(win) {\n if (!isActuallySameDomain(win)) return !1;\n try {\n if (win === window) return !0;\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n if (utils_getDomain(window) === utils_getDomain(win)) return !0;\n } catch (err) {}\n return !1;\n }(win)) try {\n if (win.mockclosed) return !0;\n } catch (err) {}\n try {\n if (!win.parent || !win.top) return !0;\n } catch (err) {}\n var iframeIndex = function(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }(iframeWindows, win);\n if (-1 !== iframeIndex) {\n var frame = iframeFrames[iframeIndex];\n if (frame && function(frame) {\n if (!frame.contentWindow) return !0;\n if (!frame.parentNode) return !0;\n var doc = frame.ownerDocument;\n return !(!doc || !doc.documentElement || doc.documentElement.contains(frame));\n }(frame)) return !0;\n }\n return !1;\n }\n function getAncestor() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return getOpener(win = win || window) || getParent(win) || void 0;\n }\n function matchDomain(pattern, origin) {\n if (\"string\" == typeof pattern) {\n if (\"string\" == typeof origin) return pattern === WILDCARD || origin === pattern;\n if (isRegex(origin)) return !1;\n if (Array.isArray(origin)) return !1;\n }\n return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some(function(subpattern) {\n return matchDomain(subpattern, origin);\n }));\n }\n function isWindow(obj) {\n try {\n if (obj === window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (\"[object Window]\" === Object.prototype.toString.call(obj)) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (window.Window && obj instanceof window.Window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.self === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.parent === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.top === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n } catch (err) {\n return !0;\n }\n return !1;\n }\n function util_safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }\n var _ALLOWED_POST_MESSAGE, weakmap_CrossDomainSafeWeakMap = function() {\n function CrossDomainSafeWeakMap() {\n !function(instance, Constructor) {\n if (!(instance instanceof CrossDomainSafeWeakMap)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n if (function() {\n if (\"undefined\" == typeof WeakMap) return !1;\n if (void 0 === Object.freeze) return !1;\n try {\n var testWeakMap = new WeakMap(), testKey = {};\n Object.freeze(testKey);\n testWeakMap.set(testKey, \"__testvalue__\");\n return \"__testvalue__\" === testWeakMap.get(testKey);\n } catch (err) {\n return !1;\n }\n }()) try {\n this.weakmap = new WeakMap();\n } catch (err) {}\n this.keys = [];\n this.values = [];\n }\n CrossDomainSafeWeakMap.prototype._cleanupClosedWindows = function() {\n for (var weakmap = this.weakmap, keys = this.keys, i = 0; i < keys.length; i++) {\n var value = keys[i];\n if (isWindow(value) && isWindowClosed(value)) {\n if (weakmap) try {\n weakmap.delete(value);\n } catch (err) {}\n keys.splice(i, 1);\n this.values.splice(i, 1);\n i -= 1;\n }\n }\n };\n CrossDomainSafeWeakMap.prototype.isSafeToReadWrite = function(key) {\n if (isWindow(key)) return !1;\n try {\n key && key.self;\n key && key[this.name];\n } catch (err) {\n return !1;\n }\n return !0;\n };\n CrossDomainSafeWeakMap.prototype.set = function(key, value) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var name = this.name, entry = key[name];\n entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: !0\n });\n return;\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, values = this.values, index = util_safeIndexOf(keys, key);\n if (-1 === index) {\n keys.push(key);\n values.push(value);\n } else values[index] = value;\n };\n CrossDomainSafeWeakMap.prototype.get = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return weakmap.get(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return entry && entry[0] === key ? entry[1] : void 0;\n } catch (err) {}\n this._cleanupClosedWindows();\n var index = util_safeIndexOf(this.keys, key);\n if (-1 !== index) return this.values[index];\n };\n CrossDomainSafeWeakMap.prototype.delete = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, index = util_safeIndexOf(keys, key);\n if (-1 !== index) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n };\n CrossDomainSafeWeakMap.prototype.has = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return !0;\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return !(!entry || entry[0] !== key);\n } catch (err) {}\n this._cleanupClosedWindows();\n return -1 !== util_safeIndexOf(this.keys, key);\n };\n CrossDomainSafeWeakMap.prototype.getOrSet = function(key, getter) {\n if (this.has(key)) return this.get(key);\n var value = getter();\n this.set(key, value);\n return value;\n };\n return CrossDomainSafeWeakMap;\n }(), constants_CONSTANTS = {\n POST_MESSAGE_TYPE: {\n REQUEST: \"postrobot_message_request\",\n RESPONSE: \"postrobot_message_response\",\n ACK: \"postrobot_message_ack\"\n },\n POST_MESSAGE_ACK: {\n SUCCESS: \"success\",\n ERROR: \"error\"\n },\n POST_MESSAGE_NAMES: {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_ready\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n },\n WINDOW_TYPES: {\n FULLPAGE: \"fullpage\",\n POPUP: \"popup\",\n IFRAME: \"iframe\"\n },\n WINDOW_PROPS: {\n POSTROBOT: \"__postRobot__\"\n },\n SERIALIZATION_TYPES: {\n METHOD: \"postrobot_method\",\n ERROR: \"postrobot_error\",\n PROMISE: \"postrobot_promise\",\n ZALGO_PROMISE: \"postrobot_zalgo_promise\",\n REGEX: \"regex\"\n },\n SEND_STRATEGIES: {\n POST_MESSAGE: \"postrobot_post_message\",\n BRIDGE: \"postrobot_bridge\",\n GLOBAL: \"postrobot_global\"\n },\n MOCK_PROTOCOL: \"mock:\",\n FILE_PROTOCOL: \"file:\",\n BRIDGE_NAME_PREFIX: \"__postrobot_bridge__\",\n POSTROBOT_PROXY: \"__postrobot_proxy__\",\n WILDCARD: \"*\"\n }, POST_MESSAGE_NAMES = {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_hello\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n }, CONFIG = (Object.keys(POST_MESSAGE_NAMES).map(function(key) {\n return POST_MESSAGE_NAMES[key];\n }), {\n ALLOW_POSTMESSAGE_POPUP: !(\"__ALLOW_POSTMESSAGE_POPUP__\" in window) || window.__ALLOW_POSTMESSAGE_POPUP__,\n BRIDGE_TIMEOUT: 5e3,\n CHILD_WINDOW_TIMEOUT: 5e3,\n ACK_TIMEOUT: -1 !== window.navigator.userAgent.match(/MSIE/i) ? 1e4 : 2e3,\n RES_TIMEOUT: -1,\n ALLOWED_POST_MESSAGE_METHODS: (_ALLOWED_POST_MESSAGE = {}, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = !0, \n _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.BRIDGE] = !0, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.GLOBAL] = !0, \n _ALLOWED_POST_MESSAGE),\n ALLOW_SAME_ORIGIN: !1\n });\n 0 === window.location.href.indexOf(constants_CONSTANTS.FILE_PROTOCOL) && (CONFIG.ALLOW_POSTMESSAGE_POPUP = !0);\n var _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function stringifyError(err) {\n var level = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\n if (level >= 3) return \"stringifyError stack overflow\";\n try {\n if (!err) return \"\";\n if (\"string\" == typeof err) return err;\n if (err instanceof Error) {\n var stack = err && err.stack, message = err && err.message;\n if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n if (stack) return stack;\n if (message) return message;\n }\n return \"function\" == typeof err.toString ? err.toString() : Object.prototype.toString.call(err);\n } catch (newErr) {\n return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n }\n }\n var once = function(method) {\n if (!method) return method;\n var called = !1;\n return function() {\n if (!called) {\n called = !0;\n return method.apply(this, arguments);\n }\n };\n };\n function lib_util_noop() {}\n function uniqueID() {\n var chars = \"0123456789abcdef\";\n return \"xxxxxxxxxx\".replace(/./g, function() {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n }\n function replaceObject(item, callback) {\n var depth = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\n if (depth >= 100) throw new Error(\"Self-referential object passed, or object contained too many layers\");\n var newobj = void 0;\n if (\"object\" !== (void 0 === item ? \"undefined\" : _typeof(item)) || null === item || Array.isArray(item)) {\n if (!Array.isArray(item)) throw new TypeError(\"Invalid type: \" + (void 0 === item ? \"undefined\" : _typeof(item)));\n newobj = [];\n } else newobj = {};\n !function(item, callback) {\n Array.isArray(item) ? function(item, callback) {\n for (var i = 0; i < item.length; i++) callback(item[i], i);\n }(item, callback) : \"object\" === (void 0 === item ? \"undefined\" : _typeof(item)) && null !== item && function(item, callback) {\n for (var _key in item) item.hasOwnProperty(_key) && callback(item[_key], _key);\n }(item, callback);\n }(item, function(childItem, key) {\n var result = callback(childItem, key);\n void 0 !== result ? newobj[key] = result : \"object\" === (void 0 === childItem ? \"undefined\" : _typeof(childItem)) && null !== childItem ? newobj[key] = replaceObject(childItem, callback, depth + 1) : newobj[key] = childItem;\n });\n return newobj;\n }\n function util_isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n function utils_isPromise(item) {\n try {\n if (!item) return !1;\n if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n var _toString = {}.toString;\n if (_toString) {\n var name = _toString.call(item);\n if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n }\n if (\"function\" == typeof item.then) return !0;\n } catch (err) {\n return !1;\n }\n return !1;\n }\n var dispatchedErrors = [], possiblyUnhandledPromiseHandlers = [], activeCount = 0, flushPromise = void 0;\n function flushActive() {\n if (!activeCount && flushPromise) {\n var promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n }\n function startActive() {\n activeCount += 1;\n }\n function endActive() {\n activeCount -= 1;\n flushActive();\n }\n var promise_ZalgoPromise = function() {\n function ZalgoPromise(handler) {\n var _this = this;\n !function(instance, Constructor) {\n if (!(instance instanceof ZalgoPromise)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.resolved = !1;\n this.rejected = !1;\n this.errorHandled = !1;\n this.handlers = [];\n if (handler) {\n var _result = void 0, _error = void 0, resolved = !1, rejected = !1, isAsync = !1;\n startActive();\n try {\n handler(function(res) {\n if (isAsync) _this.resolve(res); else {\n resolved = !0;\n _result = res;\n }\n }, function(err) {\n if (isAsync) _this.reject(err); else {\n rejected = !0;\n _error = err;\n }\n });\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n endActive();\n isAsync = !0;\n resolved ? this.resolve(_result) : rejected && this.reject(_error);\n }\n }\n ZalgoPromise.prototype.resolve = function(result) {\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n this.resolved = !0;\n this.value = result;\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.reject = function(error) {\n var _this2 = this;\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n if (!error) {\n var _err = error && \"function\" == typeof error.toString ? error.toString() : Object.prototype.toString.call(error);\n error = new Error(\"Expected reject to be called with Error, got \" + _err);\n }\n this.rejected = !0;\n this.error = error;\n this.errorHandled || setTimeout(function() {\n _this2.errorHandled || function(err, promise) {\n if (-1 === dispatchedErrors.indexOf(err)) {\n dispatchedErrors.push(err);\n setTimeout(function() {\n throw err;\n }, 1);\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n }(error, _this2);\n }, 1);\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.asyncReject = function(error) {\n this.errorHandled = !0;\n this.reject(error);\n return this;\n };\n ZalgoPromise.prototype.dispatch = function() {\n var dispatching = this.dispatching, resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n if (!dispatching && (resolved || rejected)) {\n this.dispatching = !0;\n startActive();\n for (var chain = function(firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n secondPromise.resolve(res);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < handlers.length; i++) {\n var _handlers$i = handlers[i], _onSuccess = _handlers$i.onSuccess, _onError = _handlers$i.onError, _promise = _handlers$i.promise, _result2 = void 0;\n if (resolved) try {\n _result2 = _onSuccess ? _onSuccess(this.value) : this.value;\n } catch (err) {\n _promise.reject(err);\n continue;\n } else if (rejected) {\n if (!_onError) {\n _promise.reject(this.error);\n continue;\n }\n try {\n _result2 = _onError(this.error);\n } catch (err) {\n _promise.reject(err);\n continue;\n }\n }\n if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error);\n _result2.errorHandled = !0;\n } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error) : chain(_result2, _promise) : _promise.resolve(_result2);\n }\n handlers.length = 0;\n this.dispatching = !1;\n endActive();\n }\n };\n ZalgoPromise.prototype.then = function(onSuccess, onError) {\n if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n var promise = new ZalgoPromise();\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n this.errorHandled = !0;\n this.dispatch();\n return promise;\n };\n ZalgoPromise.prototype.catch = function(onError) {\n return this.then(void 0, onError);\n };\n ZalgoPromise.prototype.finally = function(onFinally) {\n if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n return this.then(function(result) {\n return ZalgoPromise.try(onFinally).then(function() {\n return result;\n });\n }, function(err) {\n return ZalgoPromise.try(onFinally).then(function() {\n throw err;\n });\n });\n };\n ZalgoPromise.prototype.timeout = function(time, err) {\n var _this3 = this;\n if (this.resolved || this.rejected) return this;\n var timeout = setTimeout(function() {\n _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n }, time);\n return this.then(function(result) {\n clearTimeout(timeout);\n return result;\n });\n };\n ZalgoPromise.prototype.toPromise = function() {\n if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n return Promise.resolve(this);\n };\n ZalgoPromise.resolve = function(value) {\n return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise(function(resolve, reject) {\n return value.then(resolve, reject);\n }) : new ZalgoPromise().resolve(value);\n };\n ZalgoPromise.reject = function(error) {\n return new ZalgoPromise().reject(error);\n };\n ZalgoPromise.asyncReject = function(error) {\n return new ZalgoPromise().asyncReject(error);\n };\n ZalgoPromise.all = function(promises) {\n var promise = new ZalgoPromise(), count = promises.length, results = [];\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n for (var chain = function(i, firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n results[i] = res;\n 0 == (count -= 1) && promise.resolve(results);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < promises.length; i++) {\n var prom = promises[i];\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!utils_isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n 0 === count && promise.resolve(results);\n return promise;\n };\n ZalgoPromise.hash = function(promises) {\n var result = {};\n return ZalgoPromise.all(Object.keys(promises).map(function(key) {\n return ZalgoPromise.resolve(promises[key]).then(function(value) {\n result[key] = value;\n });\n })).then(function() {\n return result;\n });\n };\n ZalgoPromise.map = function(items, method) {\n return ZalgoPromise.all(items.map(method));\n };\n ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n return function(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n return {\n cancel: function() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n }(handler);\n };\n ZalgoPromise.try = function(method, context, args) {\n if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n var result = void 0;\n startActive();\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n endActive();\n return ZalgoPromise.resolve(result);\n };\n ZalgoPromise.delay = function(_delay) {\n return new ZalgoPromise(function(resolve) {\n setTimeout(resolve, _delay);\n });\n };\n ZalgoPromise.isPromise = function(value) {\n return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n };\n ZalgoPromise.flush = function() {\n return function(Zalgo) {\n var promise = flushPromise = flushPromise || new ZalgoPromise();\n flushActive();\n return promise;\n }();\n };\n return ZalgoPromise;\n }(), global = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n global.registerSelf = function() {};\n var serialize__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.methods = global.methods || new weakmap_CrossDomainSafeWeakMap();\n var listenForMethods = once(function() {\n global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n origin: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin, data = _ref.data, methods = global.methods.get(source);\n if (!methods) throw new Error(\"Could not find any methods this window has privileges to call\");\n var meth = methods[data.id];\n if (!meth) throw new Error(\"Could not find method with id: \" + data.id);\n if (!matchDomain(meth.domain, origin)) throw new Error(\"Method domain \" + meth.domain + \" does not match origin \" + origin);\n return promise_ZalgoPromise.try(function() {\n return meth.method.apply({\n source: source,\n origin: origin,\n data: data\n }, data.args);\n }).then(function(result) {\n return {\n result: result,\n id: data.id,\n name: data.name\n };\n });\n });\n });\n function isSerialized(item, type) {\n return \"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item && item.__type__ === type;\n }\n function serializeMethod(destination, domain, method, name) {\n var id = uniqueID(), methods = global.methods.get(destination);\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n methods[id] = {\n domain: domain,\n method: method\n };\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n }\n function deserializeMethod(source, origin, obj) {\n function wrapper() {\n var args = Array.prototype.slice.call(arguments);\n return global.send(source, constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args: args\n }, {\n domain: origin,\n timeout: -1\n }).then(function(_ref2) {\n return _ref2.data.result;\n }, function(err) {\n throw err;\n });\n }\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = !0;\n wrapper.source = source;\n wrapper.origin = origin;\n return wrapper;\n }\n function deserializeZalgoPromise(source, origin, prom) {\n return new promise_ZalgoPromise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n });\n }\n global.readyPromises = global.readyPromises || new weakmap_CrossDomainSafeWeakMap();\n function sayHello(win) {\n return global.send(win, constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, {\n domain: constants_CONSTANTS.WILDCARD,\n timeout: -1\n }).then(function(_ref2) {\n return {\n origin: _ref2.origin\n };\n });\n }\n var SEND_MESSAGE_STRATEGIES = {};\n SEND_MESSAGE_STRATEGIES[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = function(win, serializedMessage, domain) {\n (Array.isArray(domain) ? domain : \"string\" == typeof domain ? [ domain ] : [ constants_CONSTANTS.WILDCARD ]).map(function(dom) {\n if (0 === dom.indexOf(constants_CONSTANTS.MOCK_PROTOCOL)) {\n if (window.location.protocol === constants_CONSTANTS.FILE_PROTOCOL) return constants_CONSTANTS.WILDCARD;\n if (!isActuallySameDomain(win)) throw new Error(\"Attempting to send messsage to mock domain \" + dom + \", but window is actually cross-domain\");\n return getActualDomain(win);\n }\n return 0 === dom.indexOf(constants_CONSTANTS.FILE_PROTOCOL) ? constants_CONSTANTS.WILDCARD : dom;\n }).forEach(function(dom) {\n return win.postMessage(serializedMessage, dom);\n });\n };\n var _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n };\n function sendMessage(win, message, domain) {\n return promise_ZalgoPromise.try(function() {\n var _jsonStringify;\n message = function(win, message) {\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, id = uniqueID(), type = function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getOpener(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.POPUP : function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getParent(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.IFRAME : constants_CONSTANTS.WINDOW_TYPES.FULLPAGE, sourceDomain = utils_getDomain(window);\n return _extends({}, message, options, {\n sourceDomain: sourceDomain,\n id: message.id || id,\n windowType: type\n });\n }(win, message, {\n data: function(destination, domain, obj) {\n return replaceObject({\n obj: message.data\n }, function(item, key) {\n return \"function\" == typeof item ? serializeMethod(destination, domain, item, key.toString()) : item instanceof Error ? (err = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n __code__: err.code\n }) : window.Promise && item instanceof window.Promise ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : promise_ZalgoPromise.isPromise(item) ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : util_isRegex(item) ? (regex = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n }) : void 0;\n var err, regex;\n }).obj;\n }(win, domain),\n domain: domain\n });\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) throw new Error(\"Attemping to send message to self\");\n if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n var messages = [], serializedMessage = function(obj, replacer, indent) {\n var objectToJSON = void 0, arrayToJSON = void 0;\n try {\n if (\"{}\" !== JSON.stringify({})) {\n objectToJSON = Object.prototype.toJSON;\n delete Object.prototype.toJSON;\n }\n if (\"{}\" !== JSON.stringify({})) throw new Error(\"Can not correctly serialize JSON objects\");\n if (\"[]\" !== JSON.stringify([])) {\n arrayToJSON = Array.prototype.toJSON;\n delete Array.prototype.toJSON;\n }\n if (\"[]\" !== JSON.stringify([])) throw new Error(\"Can not correctly serialize JSON objects\");\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n var result = JSON.stringify.call(this, obj, null, 2);\n try {\n objectToJSON && (Object.prototype.toJSON = objectToJSON);\n arrayToJSON && (Array.prototype.toJSON = arrayToJSON);\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n return result;\n }(((_jsonStringify = {})[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = message, \n _jsonStringify));\n return promise_ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), function(strategyName) {\n return promise_ZalgoPromise.try(function() {\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) throw new Error(\"Strategy disallowed: \" + strategyName);\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n }).then(function() {\n messages.push(strategyName + \": success\");\n return !0;\n }, function(err) {\n messages.push(strategyName + \": \" + stringifyError(err) + \"\\n\");\n return !1;\n });\n }).then(function(results) {\n var success = results.some(Boolean), status = message.type + \" \" + message.name + \" \" + (success ? \"success\" : \"error\") + \":\\n - \" + messages.join(\"\\n - \") + \"\\n\";\n if (!success) throw new Error(status);\n });\n });\n }\n global.responseListeners = global.responseListeners || {};\n global.requestListeners = global.requestListeners || {};\n global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new function() {}();\n global.erroredResponseListeners = global.erroredResponseListeners || {};\n var _RECEIVE_MESSAGE_TYPE, __DOMAIN_REGEX__ = \"__domain_regex__\";\n function getResponseListener(hash) {\n return global.responseListeners[hash];\n }\n function deleteResponseListener(hash) {\n delete global.responseListeners[hash];\n }\n function isResponseListenerErrored(hash) {\n return Boolean(global.erroredResponseListeners[hash]);\n }\n function getRequestListener(_ref) {\n var name = _ref.name, win = _ref.win, domain = _ref.domain;\n win === constants_CONSTANTS.WILDCARD && (win = null);\n domain === constants_CONSTANTS.WILDCARD && (domain = null);\n if (!name) throw new Error(\"Name required to get request listener\");\n var nameListeners = global.requestListeners[name];\n if (nameListeners) for (var _i2 = 0, _ref3 = [ win, global.WINDOW_WILDCARD ], _length2 = null == _ref3 ? 0 : _ref3.length; _i2 < _length2; _i2++) {\n var winQualifier = _ref3[_i2], winListeners = winQualifier && nameListeners.get(winQualifier);\n if (winListeners) {\n if (domain && \"string\" == typeof domain) {\n if (winListeners[domain]) return winListeners[domain];\n if (winListeners[__DOMAIN_REGEX__]) for (var _i4 = 0, _winListeners$__DOMAI2 = winListeners[__DOMAIN_REGEX__], _length4 = null == _winListeners$__DOMAI2 ? 0 : _winListeners$__DOMAI2.length; _i4 < _length4; _i4++) {\n var _ref5 = _winListeners$__DOMAI2[_i4], regex = _ref5.regex, listener = _ref5.listener;\n if (matchDomain(regex, domain)) return listener;\n }\n }\n if (winListeners[constants_CONSTANTS.WILDCARD]) return winListeners[constants_CONSTANTS.WILDCARD];\n }\n }\n }\n var types__extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }, RECEIVE_MESSAGE_TYPES = ((_RECEIVE_MESSAGE_TYPE = {})[constants_CONSTANTS.POST_MESSAGE_TYPE.ACK] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message ack for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n options.ack = !0;\n }\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST] = function(source, origin, message) {\n var options = getRequestListener({\n name: message.name,\n win: source,\n domain: origin\n });\n function respond(data) {\n return message.fireAndForget || isWindowClosed(source) ? promise_ZalgoPromise.resolve() : sendMessage(source, types__extends({\n target: message.originalSource,\n hash: message.hash,\n name: message.name\n }, data), origin);\n }\n return promise_ZalgoPromise.all([ respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.ACK\n }), promise_ZalgoPromise.try(function() {\n if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Request origin \" + origin + \" does not match domain \" + options.domain.toString());\n var data = message.data;\n return options.handler({\n source: source,\n origin: origin,\n data: data\n });\n }).then(function(data) {\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data: data\n });\n }, function(err) {\n var error = stringifyError(err).replace(/^Error: /, \"\"), code = err.code;\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error: error,\n code: code\n });\n }) ]).then(lib_util_noop).catch(function(err) {\n if (options && options.handleError) return options.handleError(err);\n throw err;\n });\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var pattern, options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message response for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() : pattern.toString()));\n deleteResponseListener(message.hash);\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n var err = new Error(message.error);\n message.code && (err.code = message.code);\n return options.respond(err, null);\n }\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n var data = message.data || message.response;\n return options.respond(null, {\n source: source,\n origin: origin,\n data: data\n });\n }\n }\n }, _RECEIVE_MESSAGE_TYPE), receive__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.receivedMessages = global.receivedMessages || [];\n function receiveMessage(event) {\n if (window && !window.closed) {\n try {\n if (!event.source) return;\n } catch (err) {\n return;\n }\n var source = event.source, origin = event.origin, message = function(message) {\n var item, parsedMessage = void 0;\n try {\n parsedMessage = (item = message, JSON.parse(item));\n } catch (err) {\n return;\n }\n if (parsedMessage && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && (parsedMessage = parsedMessage[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT]) && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && parsedMessage.type && \"string\" == typeof parsedMessage.type && RECEIVE_MESSAGE_TYPES[parsedMessage.type]) return parsedMessage;\n }(event.data);\n if (message) {\n if (!message.sourceDomain || \"string\" != typeof message.sourceDomain) throw new Error(\"Expected message to have sourceDomain\");\n 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.MOCK_PROTOCOL) && 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.FILE_PROTOCOL) || (origin = message.sourceDomain);\n if (-1 === global.receivedMessages.indexOf(message.id)) {\n global.receivedMessages.push(message.id);\n if (!isWindowClosed(source) || message.fireAndForget) {\n message.data && (message.data = function(source, origin, obj) {\n return replaceObject({\n obj: message.data\n }, function(item) {\n if (\"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item) return isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.METHOD) ? deserializeMethod(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ERROR) ? function(source, origin, obj) {\n var err = new Error(obj.__message__);\n obj.__code__ && (err.code = obj.__code__);\n return err;\n }(0, 0, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE) ? function(source, origin, prom) {\n return window.Promise ? new window.Promise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n }) : deserializeZalgoPromise(source, origin, prom);\n }(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE) ? deserializeZalgoPromise(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.REGEX) ? function(source, origin, item) {\n return new RegExp(item.__source__);\n }(0, 0, item) : void 0;\n }).obj;\n }(source, origin));\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n }\n }\n }\n }\n }\n function messageListener(event) {\n try {\n event.source;\n } catch (err) {\n return;\n }\n receiveMessage({\n source: event.source || event.sourceElement,\n origin: event.origin || event.originalEvent && event.originalEvent.origin,\n data: event.data\n });\n }\n global.receiveMessage = receiveMessage;\n global.requestPromises = global.requestPromises || new weakmap_CrossDomainSafeWeakMap();\n function request(options) {\n return promise_ZalgoPromise.try(function() {\n if (!options.name) throw new Error(\"Expected options.name\");\n var name = options.name, targetWindow = void 0, domain = void 0;\n if (\"string\" == typeof options.window) {\n var el = document.getElementById(options.window);\n if (!el) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be a valid element id\");\n if (\"iframe\" !== el.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (!el.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n targetWindow = el.contentWindow;\n } else if (options.window instanceof HTMLIFrameElement) {\n if (\"iframe\" !== options.window.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (options.window && !options.window.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n options.window && options.window.contentWindow && (targetWindow = options.window.contentWindow);\n } else targetWindow = options.window;\n if (!targetWindow) throw new Error(\"Expected options.window to be a window object, iframe, or iframe element id.\");\n var win = targetWindow;\n domain = options.domain || constants_CONSTANTS.WILDCARD;\n var hash = options.name + \"_\" + uniqueID();\n if (isWindowClosed(win)) throw new Error(\"Target window is closed\");\n var hasResult = !1, requestPromises = global.requestPromises.get(win);\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n var requestPromise = promise_ZalgoPromise.try(function() {\n if (function(parent, child) {\n var actualParent = getAncestor(child);\n if (actualParent) return actualParent === parent;\n if (child === parent) return !1;\n if (function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n try {\n if (win.top) return win.top;\n } catch (err) {}\n if (getParent(win) === win) return win;\n try {\n if (isAncestorParent(window, win) && window.top) return window.top;\n } catch (err) {}\n try {\n if (isAncestorParent(win, window) && window.top) return window.top;\n } catch (err) {}\n for (var _i7 = 0, _getAllChildFrames4 = function getAllChildFrames(win) {\n for (var result = [], _i3 = 0, _getFrames2 = getFrames(win), _length2 = null == _getFrames2 ? 0 : _getFrames2.length; _i3 < _length2; _i3++) {\n var frame = _getFrames2[_i3];\n result.push(frame);\n for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame), _length4 = null == _getAllChildFrames2 ? 0 : _getAllChildFrames2.length; _i5 < _length4; _i5++) {\n var childFrame = _getAllChildFrames2[_i5];\n result.push(childFrame);\n }\n }\n return result;\n }(win), _length6 = null == _getAllChildFrames4 ? 0 : _getAllChildFrames4.length; _i7 < _length6; _i7++) {\n var frame = _getAllChildFrames4[_i7];\n try {\n if (frame.top) return frame.top;\n } catch (err) {}\n if (getParent(frame) === frame) return frame;\n }\n }(child) === child) return !1;\n for (var _i15 = 0, _getFrames8 = getFrames(parent), _length14 = null == _getFrames8 ? 0 : _getFrames8.length; _i15 < _length14; _i15++) if (_getFrames8[_i15] === child) return !0;\n return !1;\n }(window, win)) return function(win) {\n var timeout = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 5e3, name = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : \"Window\", promise = global.readyPromises.get(win);\n if (promise) return promise;\n promise = new promise_ZalgoPromise();\n global.readyPromises.set(win, promise);\n -1 !== timeout && setTimeout(function() {\n return promise.reject(new Error(name + \" did not load after \" + timeout + \"ms\"));\n }, timeout);\n return promise;\n }(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain) && !origin) return sayHello(win);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain)) {\n if (!matchDomain(domain, origin)) throw new Error(\"Remote window domain \" + origin + \" does not match regex: \" + domain.toString());\n domain = origin;\n }\n if (\"string\" != typeof domain && !Array.isArray(domain)) throw new TypeError(\"Expected domain to be a string or array\");\n var actualDomain = domain;\n return new promise_ZalgoPromise(function(resolve, reject) {\n var responseListener = void 0;\n options.fireAndForget || function(hash, listener) {\n global.responseListeners[hash] = listener;\n }(hash, responseListener = {\n name: name,\n window: win,\n domain: actualDomain,\n respond: function(err, result) {\n if (!err) {\n hasResult = !0;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n err ? reject(err) : resolve(result);\n }\n });\n sendMessage(win, {\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash: hash,\n name: name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n if (options.fireAndForget) return resolve();\n var ackTimeout = CONFIG.ACK_TIMEOUT, resTimeout = options.timeout || CONFIG.RES_TIMEOUT, cycleTime = 100;\n setTimeout(function cycle() {\n if (!hasResult) {\n if (isWindowClosed(win)) return responseListener.ack ? reject(new Error(\"Window closed for \" + name + \" before response\")) : reject(new Error(\"Window closed for \" + name + \" before ack\"));\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n -1 !== resTimeout && (resTimeout = Math.max(resTimeout - cycleTime, 0));\n if (responseListener.ack) {\n if (-1 === resTimeout) return;\n cycleTime = Math.min(resTimeout, 2e3);\n } else {\n if (0 === ackTimeout) return reject(new Error(\"No ack for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + CONFIG.ACK_TIMEOUT + \"ms\"));\n if (0 === resTimeout) return reject(new Error(\"No response for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + (options.timeout || CONFIG.RES_TIMEOUT) + \"ms\"));\n }\n setTimeout(cycle, cycleTime);\n }\n }, cycleTime);\n });\n });\n requestPromise.catch(function() {\n !function(hash) {\n global.erroredResponseListeners[hash] = !0;\n }(hash);\n deleteResponseListener(hash);\n });\n requestPromises.push(requestPromise);\n return requestPromise;\n });\n }\n function _send(window, name, data, options) {\n (options = options || {}).window = window;\n options.name = name;\n options.data = data;\n return request(options);\n }\n function sendToParent(name, data, options) {\n var win = getAncestor();\n return win ? _send(win, name, data, options) : new promise_ZalgoPromise(function(resolve, reject) {\n return reject(new Error(\"Window does not have a parent\"));\n });\n }\n function client() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (!options.window) throw new Error(\"Expected options.window\");\n var win = options.window;\n return {\n send: function(name, data) {\n return _send(win, name, data, options);\n }\n };\n }\n global.send = _send;\n var server__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function listen(options) {\n if (!options.name) throw new Error(\"Expected options.name\");\n if (!options.handler) throw new Error(\"Expected options.handler\");\n var name = options.name, win = options.window, domain = options.domain, listenerOptions = {\n handler: options.handler,\n handleError: options.errorHandler || function(err) {\n throw err;\n },\n window: win,\n domain: domain || constants_CONSTANTS.WILDCARD,\n name: name\n }, requestListener = function addRequestListener(_ref6, listener) {\n var name = _ref6.name, win = _ref6.win, domain = _ref6.domain;\n if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n if (Array.isArray(win)) {\n for (var listenersCollection = [], _i6 = 0, _win2 = win, _length6 = null == _win2 ? 0 : _win2.length; _i6 < _length6; _i6++) {\n var item = _win2[_i6];\n listenersCollection.push(addRequestListener({\n name: name,\n domain: domain,\n win: item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i8 = 0, _length8 = null == listenersCollection ? 0 : listenersCollection.length; _i8 < _length8; _i8++) listenersCollection[_i8].cancel();\n }\n };\n }\n if (Array.isArray(domain)) {\n for (var _listenersCollection = [], _i10 = 0, _domain2 = domain, _length10 = null == _domain2 ? 0 : _domain2.length; _i10 < _length10; _i10++) {\n var _item = _domain2[_i10];\n _listenersCollection.push(addRequestListener({\n name: name,\n win: win,\n domain: _item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i12 = 0, _length12 = null == _listenersCollection ? 0 : _listenersCollection.length; _i12 < _length12; _i12++) _listenersCollection[_i12].cancel();\n }\n };\n }\n var existingListener = getRequestListener({\n name: name,\n win: win,\n domain: domain\n });\n win && win !== constants_CONSTANTS.WILDCARD || (win = global.WINDOW_WILDCARD);\n domain = domain || constants_CONSTANTS.WILDCARD;\n if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n var requestListeners = global.requestListeners, nameListeners = requestListeners[name];\n if (!nameListeners) {\n nameListeners = new weakmap_CrossDomainSafeWeakMap();\n requestListeners[name] = nameListeners;\n }\n var winListeners = nameListeners.get(win);\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n var strDomain = domain.toString(), regexListeners = winListeners[__DOMAIN_REGEX__], regexListener = void 0;\n if (util_isRegex(domain)) {\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n regexListener = {\n regex: domain,\n listener: listener\n };\n regexListeners.push(regexListener);\n } else winListeners[strDomain] = listener;\n return {\n cancel: function() {\n if (winListeners) {\n delete winListeners[strDomain];\n win && 0 === Object.keys(winListeners).length && nameListeners.delete(win);\n regexListener && regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n };\n }({\n name: name,\n win: win,\n domain: domain\n }, listenerOptions);\n if (options.once) {\n var _handler = listenerOptions.handler;\n listenerOptions.handler = once(function() {\n requestListener.cancel();\n return _handler.apply(this, arguments);\n });\n }\n if (listenerOptions.window && options.errorOnClose) var interval = function(method, time) {\n var timeout = void 0;\n timeout = setTimeout(function runInterval() {\n timeout = setTimeout(runInterval, 50);\n (function() {\n if (win && \"object\" === (void 0 === win ? \"undefined\" : server__typeof(win)) && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error(\"Post message target window is closed\"));\n }\n }).call();\n }, 50);\n return {\n cancel: function() {\n clearTimeout(timeout);\n }\n };\n }();\n return {\n cancel: function() {\n requestListener.cancel();\n }\n };\n }\n function _on(name, options, handler) {\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n (options = options || {}).name = name;\n options.handler = handler || options.handler;\n return listen(options);\n }\n function server_once(name) {\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, handler = arguments[2];\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n options = options || {};\n handler = handler || options.handler;\n var errorHandler = options.errorHandler, promise = new promise_ZalgoPromise(function(resolve, reject) {\n (options = options || {}).name = name;\n options.once = !0;\n options.handler = function(event) {\n resolve(event);\n if (handler) return handler(event);\n };\n options.errorHandler = function(err) {\n reject(err);\n if (errorHandler) return errorHandler(err);\n };\n }), onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n return promise;\n }\n function server_listener() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return {\n on: function(name, handler) {\n return _on(name, options, handler);\n }\n };\n }\n global.on = _on;\n function disable() {\n delete window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener(\"message\", messageListener);\n }\n var public_parent = getAncestor();\n function cleanUpWindow(win) {\n var requestPromises = global.requestPromises.get(win);\n if (requestPromises) for (var _i2 = 0, _length2 = null == requestPromises ? 0 : requestPromises.length; _i2 < _length2; _i2++) requestPromises[_i2].reject(new Error(\"No response from window - cleaned up\"));\n global.popupWindowsByWin && global.popupWindowsByWin.delete(win);\n global.remoteWindows && global.remoteWindows.delete(win);\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n }\n var bridge = null;\n function init() {\n if (!global.initialized) {\n handler = messageListener, (obj = window).addEventListener ? obj.addEventListener(\"message\", handler) : obj.attachEvent(\"onmessage\", handler);\n !function() {\n handler = function(_ref3) {\n var source = _ref3.source, origin = _ref3.origin, promise = global.readyPromises.get(source) || new promise_ZalgoPromise();\n promise.resolve({\n origin: origin\n });\n global.readyPromises.set(source, promise);\n }, global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {\n domain: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin;\n return handler({\n source: source,\n origin: origin\n });\n });\n var handler, parent = getAncestor();\n parent && sayHello(parent).catch(lib_util_noop);\n }();\n listenForMethods({\n on: _on,\n send: _send\n });\n }\n var obj, handler;\n global.initialized = !0;\n }\n init();\n __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(__webpack_exports__, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(__webpack_exports__, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(__webpack_exports__, \"init\", function() {\n return init;\n });\n __webpack_require__.d(__webpack_exports__, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(__webpack_exports__, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(__webpack_exports__, \"request\", function() {\n return request;\n });\n __webpack_require__.d(__webpack_exports__, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(__webpack_exports__, \"client\", function() {\n return client;\n });\n __webpack_require__.d(__webpack_exports__, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(__webpack_exports__, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(__webpack_exports__, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(__webpack_exports__, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(__webpack_exports__, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(__webpack_exports__, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(__webpack_exports__, \"disable\", function() {\n return disable;\n });\n __webpack_exports__.default = interface_namespaceObject;\n }\n });\n});\n//# sourceMappingURL=post-robot.js.map","/* @flow */\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = require('./dist/post-robot');\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports.default = module.exports;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IAssetSidebarInitData, setAssetDto } from \"./types\";\nimport Asset from './stack/api/asset'\n\n/** Class representing an asset Extension from Contentstack UI. */\n\nclass AssetSidebarWidget {\n /**\n * @hideconstructor\n */\n\n currentAsset: { [key: string]: any };\n _emitter: EventEmitter;\n _connection: any;\n _changedData?: { [key: string]: any };\n\n constructor(\n initializationData: IAssetSidebarInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * Gets the content type of the current asset.\n * @type {Object}\n */\n\n this.currentAsset = initializationData.data.currentAsset;\n\n this._emitter = emitter;\n\n this._connection = connection;\n\n const thisAsset = this;\n\n this._emitter.on(\n \"assetSave\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset.currentAsset = event.data;\n }\n );\n\n this._emitter.on(\n \"assetChange\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset._changedData = event.data;\n }\n );\n\n this.getData = this.getData.bind(this);\n this.setData = this.setData.bind(this);\n this.syncAsset = this.syncAsset.bind(this);\n this.updateWidth = this.updateWidth.bind(this);\n this.onSave = this.onSave.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onPublish = this.onPublish.bind(this);\n this.onUnPublish = this.onUnPublish.bind(this);\n this.replaceAsset = this.replaceAsset.bind(this);\n }\n\n getData() {\n return this.currentAsset;\n }\n\n async setData(asset: Partial): Promise {\n return this._connection.sendToParent(\"setData\", asset);\n }\n\n async syncAsset(): Promise {\n return this._connection.sendToParent(\"syncAsset\");\n }\n\n async updateWidth(width: number): Promise {\n if (typeof width !== \"number\") {\n throw new Error(\"Width must be a number\");\n }\n return this._connection.sendToParent(\"updateAssetSidebarWidth\", width);\n }\n\n async replaceAsset(file: File): Promise {\n const asset = Asset(this._emitter);\n return asset.handleUpload([file], 'replace');\n }\n\n /**\n * This function executes the callback function every time an asset is saved.\n * @param {function} callback The function to be called when an asset is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetSave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an asset is edited/changed.\n */\n\n onChange(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetChange\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an asset has been published with the respective payload.\n * @param {function} callback The function to be called when an asset is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an asset has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an asset is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default AssetSidebarWidget;\n","import {\n IConfigCallback,\n IContainerMetaData,\n IOnFunction,\n IPluginMetaData,\n IRteParam,\n IConfig\n} from \"./types\";\n\nexport class RTEPlugin {\n private pluginMetaData: IPluginMetaData = {\n registry: {\n title: \"\",\n toolbar: {\n inMainToolbar: true,\n inHoveringToolbar: true,\n },\n isContentstackElement: true,\n },\n meta: {\n id: \"\",\n elementType: null,\n editorCallbacks: {},\n isDependent: false,\n },\n };\n private isContainer: boolean = false;\n private containerMetaData: IContainerMetaData = {\n registry: {\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n id: this.pluginMetaData.meta.id,\n dependentPlugins: [],\n },\n };\n\n constructor(id: string, private configCallback: IConfigCallback) {\n this.pluginMetaData.meta.id = id;\n }\n\n addPlugins = (...plugins: RTEPlugin[]) => {\n // convert to dropdown if not already\n if (this.pluginMetaData.meta.isDependent)\n throw Error(\"cannot have another container inside\");\n\n this.isContainer = true;\n\n // clean pluginMetaData\n\n plugins.forEach((plugin) => {\n // make sure that this plugin is not another dropdown\n if (plugin.isContainer) {\n throw Error(\"cannot have another container inside\");\n }\n\n plugin.pluginMetaData.registry.category =\n this.pluginMetaData.meta.id;\n this.containerMetaData.meta.dependentPlugins.push(plugin);\n plugin.pluginMetaData.meta.isDependent = true;\n });\n };\n\n on = (\n type: Type,\n callback: IOnFunction[Type]\n ) => {\n switch (type) {\n case \"beforeChildRender\": {\n this.pluginMetaData.registry.beforeChildrenRender = callback;\n break;\n }\n\n case \"beforeRender\": {\n this.pluginMetaData.registry.beforeElementRender = callback;\n break;\n }\n\n case \"exec\": {\n this.pluginMetaData.registry.handleMouseDown = callback;\n break;\n }\n\n case \"keydown\": {\n this.pluginMetaData.meta.editorCallbacks[\"keydown\"] = callback;\n break;\n }\n\n case \"paste\":\n case \"deleteBackward\":\n case \"deleteForward\":\n case \"insertBreak\":\n case \"normalize\":\n default: {\n this.pluginMetaData.meta.editorCallbacks[type] = callback;\n break;\n }\n }\n };\n\n get = async (rte: IRteParam | void) => {\n const config = await this.configCallback(rte);\n\n Object.entries(config).forEach(\n //@ts-ignore\n ([key, value]: [Key, any]) => {\n switch (key) {\n case \"title\": {\n this.pluginMetaData.registry.title = value;\n break;\n }\n case \"icon\": {\n this.pluginMetaData.registry.iconName = value;\n this.containerMetaData.registry.iconName = value;\n break;\n }\n case \"display\": {\n // make every other options false\n this.pluginMetaData.registry.toolbar = {\n inHoveringToolbar: false,\n inMainToolbar: false,\n };\n\n if (typeof value === \"string\") {\n switch (value) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach((display) => {\n switch (display) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n });\n }\n break;\n }\n\n case \"elementType\": {\n const isInline = (\n typeof value === 'string' && value === 'inline' ||\n Array.isArray(value) && value.includes('inline')\n )\n if(isInline) {\n let dndOptions = this.pluginMetaData['registry']['dndOptions'];\n if(!dndOptions) {\n this.pluginMetaData['registry']['dndOptions'] = {};\n dndOptions = this.pluginMetaData['registry']['dndOptions']\n }\n dndOptions['DisableDND'] = true;\n dndOptions['DisableSelectionHalo'] = true;\n }\n this.pluginMetaData.meta.elementType = value;\n break;\n }\n\n case \"render\": {\n this.pluginMetaData.registry.Component = value;\n break;\n }\n\n case \"shouldOverride\" : {\n this.pluginMetaData.registry.shouldOverride = value\n }\n }\n }\n );\n\n const containerMeta = this.containerMetaData.meta;\n this.containerMetaData = {\n registry: {\n ...this.containerMetaData.registry,\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n ...containerMeta,\n id: this.pluginMetaData.meta.id,\n },\n };\n\n return this.isContainer ? this.containerMetaData : this.pluginMetaData;\n };\n}\n\nexport const rtePluginInitializer = (\n id: string,\n configCallback: IConfigCallback\n) => {\n if (!(id && configCallback)) throw Error('Please provide value \"id\" and \"configCallback\"');\n\n return new RTEPlugin(id, configCallback);\n};\n","import Stack from \"../stack\";\nimport { IInstallationData, ValidationOptions } from \"../types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport { onData, onError } from \"../utils/utils\";\n\nexport declare interface AppConfigAdditionalData {\n currentBranch: string;\n}\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nexport class AppConfig {\n _data: { [key: string]: any };\n _connection: any;\n _emitter: EventEmitter;\n private _additionalData: AppConfigAdditionalData;\n\n constructor(\n data: { [key: string]: any },\n connection: any,\n emitter: EventEmitter,\n additionalData: AppConfigAdditionalData\n ) {\n this._data = data;\n this._connection = connection;\n this._emitter = emitter;\n\n this.setValidity = this.setValidity.bind(this);\n this._additionalData = additionalData;\n }\n\n stack = () => {\n return new Stack(this._data.stack, this._connection, {\n currentBranch: this._additionalData.currentBranch,\n });\n };\n\n setInstallationData = (\n installationData: IInstallationData\n ): Promise<{ [key: string]: any }> => {\n return this._connection\n .sendToParent(\"setInstallationData\", installationData)\n .then(onData)\n .catch(onError);\n };\n\n getInstallationData = (): Promise => {\n return this._connection\n .sendToParent(\"getInstallationData\")\n .then(onData)\n .catch(onError);\n };\n\n /**\n * Set the validation state of the app. If the validation is false, the Contentstack App Config\n * will not allow to save the configuration. The message will be displayed if provided.\n * @param isValid set the validation state of the app\n * @param options additional options to be sent to the parent\n * @returns returns a promise with the data sent from the parent\n */\n async setValidity(\n isValid: boolean,\n options?: ValidationOptions\n ): Promise> {\n if (typeof isValid !== \"boolean\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.isValidTypeBoolean\n )\n );\n }\n\n if (options?.message && typeof options.message !== \"string\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.messageTypeString\n )\n );\n }\n\n return this._connection\n .sendToParent(\"setValidity\", { isValid, options })\n .then(onData)\n .catch(onError);\n }\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\n\nimport Field from \"./field\";\nimport {\n ICurrentContentType,\n IFieldInitData,\n IFieldModifierLocationInitData,\n IRTELocationInitData,\n ISidebarInitData,\n} from \"./types\";\nimport {\n IEntryOptions,\n IGetFieldOptions,\n IOnEntryChangeCallback,\n} from \"./types/entry.types\";\n\n/** Class representing an entry from Contentstack UI. Not available for Dashboard Widget extension. */\n\nclass Entry {\n /**\n * @hideconstructor\n */\n\n content_type: ICurrentContentType;\n _data: { [key: string]: any };\n locale: string;\n _connection: any;\n _emitter: EventEmitter;\n _changedData?: { [key: string]: any };\n _options: IEntryOptions;\n\n constructor(\n initializationData:\n | IFieldInitData\n | ISidebarInitData\n | IRTELocationInitData\n | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter,\n options?: IEntryOptions\n ) {\n /**\n * Gets the content type of the current entry.\n * @type {Object}\n */\n this.content_type = initializationData.data.content_type;\n\n this._data = initializationData.data.entry;\n\n if (initializationData.data.changedData) {\n this._changedData = initializationData.data.changedData;\n }\n\n /**\n * Gets the locale of the current entry.\n * @type {string}\n */\n this.locale = initializationData.data.locale;\n\n this._connection = connection;\n\n this._emitter = emitter;\n\n this._options = options || {};\n\n const thisEntry = this;\n\n this._emitter.on(\n \"entrySave\",\n (event: { data: { [key: string]: any } }) => {\n thisEntry._data = event.data;\n }\n );\n\n this._emitter.on(\n \"entryChange\",\n (event: { data: { [key: string]: any } }) => {\n console.log(\"rte listened to the change\", event.data);\n thisEntry._changedData = event.data;\n }\n );\n }\n\n /**\n * Gets data of the current entry.\n * @return {Object} Returns entry data.\n */\n\n getData() {\n return this._data;\n }\n\n /**\n * Gets the field object for the saved data, which allows you to interact with the field.\n * This object will have all the same methods and properties of extension.field.\n * Note: For fields initialized using the getFields function, the setData function currently works only for the following fields: as single_line, multi_line, RTE, markdown, select, number, boolean, date, link, and extension of data type text, number, boolean, and date.\n * @example\n * var field = entry.getField('field_uid');\n * var fieldSchema = field.schema;\n * var fieldUid = field.uid;\n * var fieldData = field.getData();\n * @param {string} uid Unique ID of the field\n * @param {boolean} options.useUnsavedSchema If set to true, the field will get the unsaved field\n * @return {Object} Field object\n */\n\n getField(uid: string, options?: IGetFieldOptions): Field {\n const { useUnsavedSchema = false } = options || {};\n const { FieldInstance = Field } = this._options._internalFlags || {};\n\n const path = uid.split(\".\");\n let value = useUnsavedSchema\n ? this._changedData || this._data\n : this._data;\n let schema = this.content_type.schema;\n\n const isDataEmpty = Object.keys(value).length === 0;\n\n if (isDataEmpty) {\n throw new Error(\n \"The data is unsaved. Save the data before requesting the field.\"\n );\n }\n\n try {\n let skipNext = false;\n let skipNextTwo = false;\n path.forEach((key: string | number, index: number) => {\n if (skipNext) {\n if (skipNextTwo) {\n skipNextTwo = false;\n } else {\n skipNext = false;\n }\n return;\n }\n\n schema = schema.find((x: { uid: any }) => x.uid === key);\n if (!schema) {\n throw Error(\"schema not found\");\n }\n\n value = value[key];\n\n if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === false &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n } else if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === true &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n value = value[path[index + 1]];\n skipNext = true;\n } else if (\n schema.data_type === \"blocks\" &&\n path.length !== index + 1\n ) {\n const blockId = Object.keys(value[path[index + 1]])[0];\n schema = schema.blocks.find(\n (block: { uid: string }) => block.uid === blockId\n );\n if (path.length === index + 2) {\n // complete block value with uid\n value = value[path[index + 1]];\n } else {\n // block value without uid\n value = value[path[index + 1]][blockId];\n schema = schema.schema;\n }\n\n skipNext = true;\n skipNextTwo = true;\n }\n });\n } catch (e) {\n throw Error(\"Invalid uid, Field not found\");\n }\n const fieldIntilaizationDataObject = {\n data: {\n uid,\n value,\n schema,\n data_type: schema.data_type,\n },\n };\n\n //@ts-ignore\n const fieldObject = new FieldInstance(\n fieldIntilaizationDataObject,\n this._connection,\n this._emitter\n );\n delete fieldObject.onChange;\n return fieldObject;\n }\n\n /**\n * This function executes the callback function every time an entry is saved.\n * @param {function} callback The function to be called when an entry is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entrySave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an entry is edited/changed.\n */\n\n onChange(callback: IOnEntryChangeCallback) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\n \"entryChange\",\n (event: { data: any; resolvedData: Record }) => {\n callback(event.data, event.resolvedData);\n }\n );\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an entry has been published with the respective payload.\n * @param {function} callback The function to be called when an entry is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an entry has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an entry is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default Entry;\n","import postRobot from \"post-robot\";\nimport EventEmitter from \"wolfy87-eventemitter\";\n\nimport AssetSidebarWidget from \"./AssetSidebarWidget\";\nimport { IRTELocation, IRTEPluginInitializer } from \"./RTE/types\";\nimport { AppConfig } from \"./appConfig\";\nimport Entry from \"./entry\";\nimport Field from \"./field\";\nimport FieldModifierLocationEntry from \"./fieldModifierLocation/entry\";\nimport FieldModifierLocationField from \"./fieldModifierLocation/field\";\nimport FieldModifierLocationFrame from \"./fieldModifierLocation/frame\";\nimport Metadata from \"./metadata\";\nimport Modal from \"./modal\";\nimport Stack from \"./stack\";\nimport Store from \"./store\";\nimport {\n IAppConfigInitData,\n IAppConfigWidget,\n IAssetSidebarInitData,\n ICustomField,\n IDashboardInitData,\n IDashboardWidget,\n IEntryFieldLocation,\n IEntryFieldLocationInitData,\n IFieldInitData,\n IFieldModifierLocation,\n IFieldModifierLocationInitData,\n IFullPageLocation,\n IFullPageLocationInitData,\n ILocation,\n IPageWidget,\n IRTEInitData,\n IRTELocationInitData,\n ISidebarInitData,\n ISidebarWidget,\n IUser,\n Manifest,\n Region,\n} from \"./types\";\nimport { AnyObject } from \"./types/common.types\";\nimport { formatAppRegion, onData, onError } from \"./utils/utils\";\nimport Window from \"./window\";\n\nconst emitter = new EventEmitter();\n\n/** Class representing an extension from Contentstack App Framework SDK. */\n\nclass Extension {\n /**\n * @hideconstructor\n */\n\n appUID: string;\n installationUID: string;\n currentUser: IUser;\n private type: ILocation;\n private config: AnyObject;\n postRobot: any;\n stack: Stack;\n store: Store;\n metadata: Metadata;\n locationUID: string;\n modal: Modal;\n readonly region: Region;\n version: number | null;\n\n location: {\n DashboardWidget: IDashboardWidget | null;\n SidebarWidget: ISidebarWidget | null;\n CustomField: ICustomField | null;\n RTEPlugin: IRTEPluginInitializer | null;\n RTELocation: IRTELocation | null;\n AppConfigWidget: IAppConfigWidget | null;\n FullscreenAppWidget: IPageWidget | null;\n AssetSidebarWidget: AssetSidebarWidget | null;\n EntryFieldLocation: IEntryFieldLocation | null;\n FullPage: IFullPageLocation | null;\n FieldModifierLocation: IFieldModifierLocation | null;\n };\n\n constructor(\n initData:\n | IRTEInitData\n | IDashboardInitData\n | IFieldInitData\n | ISidebarInitData\n | IAppConfigInitData\n | IAssetSidebarInitData\n | IFullPageLocationInitData\n | IEntryFieldLocationInitData\n | IFieldModifierLocationInitData\n ) {\n const initializationData = initData;\n\n this.postRobot = postRobot;\n\n /**\n * This value represents the current App's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.appUID = initializationData.data.app_id;\n\n /**\n * This value represents the current location's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.locationUID = initializationData.data.extension_uid;\n\n /**\n * This object holds details of the app initialization user.\n * @type {Object}\n */\n this.installationUID = initializationData.data.installation_uid;\n /**\n * This object holds details of the current user.\n * @type {Object}\n */\n this.currentUser = initializationData.data.user;\n\n /**\n * location of extension, \"RTE\" | \"FIELD\" | \"DASHBOARD\" | \"WIDGET\" | \"APP_CONFIG_WIDGET\" | \"FULL_SCREEN_WIDGET\".\n * @type {string}\n */\n this.type = initializationData.data.type;\n\n /**\n * Store to persist data for extension.\n * Note: Data is stored in the browser {@link external:localStorage} and will be lost if the {@link external:localStorage} is cleared in the browser.\n * @type {Store}\n */\n this.store = new Store(postRobot);\n\n /**\n * This method returns stack object which allows users to read and manipulate a range of objects in a stack.\n * @type {Stack}\n */\n this.stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n this.metadata = new Metadata(postRobot);\n\n this.config = initializationData.data.config ?? {};\n\n this.location = {\n DashboardWidget: null,\n CustomField: null,\n SidebarWidget: null,\n RTEPlugin: null,\n RTELocation: null,\n AppConfigWidget: null,\n FullscreenAppWidget: null,\n AssetSidebarWidget: null,\n FullPage: null,\n EntryFieldLocation: null,\n FieldModifierLocation: null,\n };\n\n window[\"postRobot\"] = postRobot;\n\n this.modal = new Modal();\n\n this.region = formatAppRegion(initializationData.data.region);\n\n this.version = initializationData.data.manifest?.version || null;\n\n const stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n\n switch (initializationData.data.type) {\n case \"DASHBOARD\": {\n this.location.DashboardWidget = {\n frame: new Window(\n postRobot,\n this.type as \"DASHBOARD\",\n emitter,\n initializationData.data.dashboard_width\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n case \"WIDGET\": {\n this.location.SidebarWidget = {\n entry: new Entry(\n initializationData as ISidebarInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"APP_CONFIG_WIDGET\": {\n this.location.AppConfigWidget = {\n installation: new AppConfig(\n initializationData,\n postRobot,\n emitter,\n {\n currentBranch:\n initializationData.data.currentBranch,\n }\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"ASSET_SIDEBAR_WIDGET\": {\n this.location.AssetSidebarWidget = new AssetSidebarWidget(\n initializationData as IAssetSidebarInitData,\n postRobot,\n emitter\n );\n\n break;\n }\n\n case \"RTE\": {\n import(\"./RTE\").then(({ rtePluginInitializer }) => {\n this.location.RTEPlugin = rtePluginInitializer;\n this.location.RTELocation = {\n entry: new Entry(\n initializationData as IRTELocationInitData,\n postRobot,\n emitter\n ),\n };\n });\n break;\n }\n\n case \"FIELD_MODIFIER_LOCATION\":\n case \"ENTRY_FIELD_LOCATION\": {\n initializationData.data.self = true;\n this.location.FieldModifierLocation = {\n entry: new FieldModifierLocationEntry(\n initializationData as IFieldModifierLocationInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n field: new FieldModifierLocationField(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n frame: new FieldModifierLocationFrame(postRobot, emitter),\n };\n break;\n }\n\n case \"FULL_PAGE_LOCATION\": {\n this.location.FullPage = {\n stack: stack,\n };\n break;\n }\n\n case \"FIELD\":\n default: {\n initializationData.data.self = true;\n this.location.CustomField = {\n field: new Field(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n fieldConfig: initializationData.data.field_config,\n entry: new Entry(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n frame: new Window(postRobot, this.type as \"FIELD\", emitter),\n };\n\n break;\n }\n }\n\n try {\n //@ts-ignore\n postRobot.on(\"extensionEvent\", (event) => {\n if (event.data.name === \"entrySave\") {\n emitter.emitEvent(\"entrySave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryChange\") {\n emitter.emitEvent(\"entryChange\", [\n {\n data: event.data.data,\n resolvedData: event.data.otherData.resolvedData,\n },\n ]);\n }\n\n if (event.data.name === \"entryPublish\") {\n emitter.emitEvent(\"entryPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryUnPublish\") {\n emitter.emitEvent(\"entryUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetSave\") {\n emitter.emitEvent(\"assetSave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetChange\") {\n emitter.emitEvent(\"assetChange\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetPublish\") {\n emitter.emitEvent(\"assetPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetUnPublish\") {\n emitter.emitEvent(\"assetUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"dashboardResize\") {\n emitter.emitEvent(\"dashboardResize\", [\n { state: event.data.state },\n ]);\n }\n\n if (event.data.name === \"extensionFieldChange\") {\n emitter.emitEvent(\"extensionFieldChange\", [\n { data: event.data.data },\n ]);\n }\n });\n } catch (err) {\n console.error(\"extension Event\", err);\n }\n }\n\n pulse = (eventName: string, metadata: { [key: string]: any }) => {\n this.postRobot.sendToParent(\"analytics\", { eventName, metadata });\n };\n\n getConfig = (): Promise<{ [key: string]: any }> => {\n if (!this.installationUID) {\n return Promise.resolve(this.config);\n }\n return this.postRobot\n .sendToParent(\"getConfig\")\n .then(onData)\n .catch(onError);\n };\n\n getCurrentLocation = () => {\n return this.type;\n };\n\n /**\n * Conditionally retrieves and returns the app version if not present already\n * @returns version of the app currently running.\n */\n getAppVersion = async (): Promise => {\n if (this.version) {\n return Promise.resolve(this.version);\n }\n if (!this.installationUID) {\n return Promise.resolve(null);\n }\n const orgUid = this.stack._data.org_uid;\n const options = {\n uid: this.installationUID,\n action: \"getAppManifest\",\n headers: { organization_uid: orgUid },\n skip_api_key: true,\n };\n const app: Manifest = await this.postRobot\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n this.version = app.version;\n return this.version;\n };\n\n getCurrentRegion = () => {\n return this.region;\n };\n\n static initialize(version: string) {\n const meta = {\n sdkType: \"app-sdk\",\n };\n //@ts-ignore\n return postRobot.sendToParent(\"init\", { version, meta });\n }\n\n setReady() {\n return this.postRobot.sendToParent(\"ready\");\n }\n}\n\nexport default Extension;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"./types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(field: Field, value: { [key: string]: any }) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass Field {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n\n setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false } = {}) {\n return resolved ? this._resolvedData : this._data;\n }\n\n /**\n * Sets the focus for a field when an extension is being used. This method shows user presence and highlights the extension field that the user is currently accessing in Contentstack UI.\n * @return {Object} A promise object which is resolved when Contentstack UI returns an acknowledgement of the focused state.\n */\n setFocus() {\n return this._connection.sendToParent(\"focus\");\n }\n\n /**\n * This function is called when another extension programmatically changes data of this field using field.setData() function, only available for extension field, only support extensions of data type text, number, boolean or date.\n * @param {function} callback The function to be called when an entry is published.\n */\n onChange?(callback: (data: any) => any) {\n const fieldObj = this;\n if (callback && typeof callback === \"function\") {\n fieldObj._emitter.on(\"extensionFieldChange\", (event: any) => {\n this._data = event.data;\n this._resolvedData = event.data;\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\n\nexport default Field;\n","import Entry from \"../entry\";\nimport { IFieldModifierLocationInitData } from \"../types\";\nimport { IGetTagsOptions } from \"../types/entry.types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport Field from \"./field\";\n\nclass FieldModifierLocationEntry extends Entry {\n constructor(\n initializationData: IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n super(initializationData, connection, emitter, {\n _internalFlags: {\n FieldInstance: Field as any,\n },\n });\n }\n\n /**\n * Returns the value of the tags associated with the entry.\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n getTags(options?: IGetTagsOptions): Array {\n const { useUnsavedSchema = false } = options || {};\n\n if (useUnsavedSchema) {\n return this._changedData?.tags || this._data.tags;\n } else {\n return this._data.tags;\n }\n }\n\n /**\n * Sets the tags on the entry.\n * @param tags tags to be set on the entry\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n async setTags(tags: Array): Promise> {\n /**\n * Validate if the tags are array of strings\n * @param {Array} tags\n * @returns {boolean} Returns true if the tags are array of strings\n */\n function areTagsValid(tags: Array): tags is Array {\n return (\n Array.isArray(tags) &&\n tags.every((tag) => typeof tag === \"string\")\n );\n }\n\n if (tags === undefined) {\n throw new Error(generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldNotBeBlank));\n }\n\n if (!areTagsValid(tags)) {\n throw new Error(\n generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldBeArrayOfStrings)\n );\n }\n\n await this._connection.sendToParent(\"setTags\", { tags });\n\n if (!this._changedData) {\n this._changedData = {};\n }\n\n this._changedData.tags = tags;\n\n return tags;\n }\n}\n\nexport default FieldModifierLocationEntry;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"../types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(\n field: FieldModifierLocationField,\n value: { [key: string]: any }\n) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass FieldModifierLocationField {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n async setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false }: { resolved?: boolean } = {}): any {\n return resolved ? this._resolvedData : this._data;\n }\n}\n\nexport default FieldModifierLocationField;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\nimport { ERROR_MESSAGES } from \"../utils/errorMessages\";\n\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass FieldModifierLocationFrame {\n /**\n * @hideconstructor\n */\n\n _connection: any;\n _autoResizingEnabled = false;\n _emitter: EventEmitter;\n _height?: number;\n _width?: number;\n\n private observer: MutationObserver | undefined;\n\n constructor(connection: any, emitter: EventEmitter) {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._emitter = emitter;\n\n this.updateDimension = this.updateDimension.bind(this);\n this.enableAutoResizing = this.enableAutoResizing.bind(this);\n this.disableAutoResizing = this.disableAutoResizing.bind(this);\n this.closeModal = this.closeModal.bind(this);\n\n /**\n * The auto resizing should be enabled by default.\n */\n this.enableAutoResizing();\n }\n\n /**\n * This method updates the extension height and width on Contentstack UI.\n * If the value is not passed, it will update the height and width of the\n * extension with the current height and width of the extension.\n * @param {string|number} height Desired height of the iframe window\n */\n async updateDimension(dimension?: { height?: number; width?: number }) {\n const { height, width } = dimension || {};\n\n if (height === undefined && width === undefined) {\n this._height = Math.ceil(\n document.documentElement.getBoundingClientRect().height\n );\n\n this._width = Math.ceil(\n document.documentElement.getBoundingClientRect().width\n );\n\n await this._connection.sendToParent(\"resize\", {\n height: this._height,\n width: this._width,\n });\n return;\n }\n\n const dimensionBody = {};\n\n if (height !== undefined && typeof height !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionHeightShouldBeNumber\n );\n }\n\n if (this._height !== height) {\n this._height = height;\n dimensionBody[\"height\"] = this._height;\n }\n\n if (width !== undefined && typeof width !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionWidthShouldBeNumber\n );\n }\n\n if (this._width !== width) {\n this._width = width;\n dimensionBody[\"width\"] = this._width;\n }\n\n if (Object.keys(dimensionBody).length !== 0) {\n await this._connection.sendToParent(\"resize\", dimensionBody);\n }\n }\n\n /**\n * Prevent user from accidently closing the app by clicking outside the frame\n * if the app is performing some active task.\n */\n async preventFrameClose(state: boolean) {\n await this._connection.sendToParent(\"preventFrameClose\", {\n state,\n });\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n enableAutoResizing(): FieldModifierLocationFrame {\n if (this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = true;\n\n this.observer = new MutationObserver(\n async () => await this.updateDimension()\n );\n\n const mutationObserverConfig = {\n attributes: true,\n childList: true,\n subtree: true,\n };\n\n this.observer.observe(window.document.body, mutationObserverConfig);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n disableAutoResizing(): FieldModifierLocationFrame {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n this.observer?.disconnect();\n return this;\n }\n\n /**\n * It closes the app modal.\n * @returns {Promise}\n */\n async closeModal(): Promise {\n return await this._connection.sendToParent(\"closeModal\");\n }\n}\n\nexport default FieldModifierLocationFrame;\n","import Extension from './extension';\nimport postRobot from 'post-robot';\nimport { version } from '../package.json';\nimport { IDashboardInitData, IFieldInitData, ISidebarInitData } from './types.js';\n\n//@ts-ignore\npostRobot.CONFIG.LOG_LEVEL = 'error';\n\n/** Class to initialize the plugin on Contentstack UI. */\n/**\n * @hideconstructor\n */\n\nclass ContentstackAppSDK {\n /**\n * You need to first include Contentstack UI Extensions SDK and\n * Contentstack UI Stylesheet in you HTML file and then call\n * ContentstackUIExtension.init in the script tag.\n * @example\n * HTML\n * \n * \n * @example Custom Filed\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var value = extension.field.getData()\n * extension.field.setData(\"New Field Data\")\n * })\n * @example Custom Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var entry = extension.entry.getData()\n * })\n * @example Dashboard Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var stack = extension.stack;\n * var stackData = stack.getData();\n * })\n * @return {external:Promise} A promise object which will be resolved with an instance of the {@link Extension} class which is instantiated using the data received from the Contentstack UI.\n */\n\n static _extension: Extension\n\n static init(): Promise {\n if (this._extension) { return Promise.resolve(this._extension); }\n return Extension.initialize(version).then((initializationData: ISidebarInitData | IDashboardInitData | IFieldInitData) => {\n this._extension = new Extension(initializationData);\n return Promise.resolve(this._extension);\n }).catch((e: Error) => Promise.reject(e));\n }\n\n\n /**\n * Version of Contentstack UI extension.\n * @type {string}\n */\n static get SDK_VERSION() {\n return version;\n }\n}\n\nexport default ContentstackAppSDK;\nmodule.exports = ContentstackAppSDK\n","import { AnyObject } from \"./types/common.types\";\n\nexport declare interface IMetadata {\n uid: string;\n type: \"asset\" | \"entry\";\n _content_type_uid?: string;\n locale?: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataCreateDto\n extends Omit, \"uid\"> {\n entity_uid: string;\n}\n\nexport declare interface IMetadataUpdateDto {\n uid: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataRetrieveDto {\n uid: string;\n}\n\nexport declare interface IMetadataDeleteDto {\n uid: string;\n}\n\nconst metadataTypes = {\n creteMetadata: \"createMetadata\",\n retrieveMetadata: \"getMetadata\",\n retrieveAllMetadata: \"getAllMetadata\",\n updateMetadata: \"updateMetadata\",\n deleteMetadata: \"deleteMetadata\",\n} as const;\n\nclass Metadata {\n constructor(private _connection: any) {}\n\n createMetaData(metadataConfig: IMetadataCreateDto) {\n const { entity_uid, type = \"asset\", ...otherMetaData } = metadataConfig;\n\n const data = {\n action: metadataTypes.creteMetadata,\n payload: {\n metadata: {\n entity_uid,\n type,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveMetaData(metadataConfig: IMetadataRetrieveDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.retrieveMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveAllMetaData(params: AnyObject = {}) {\n const data = {\n action: metadataTypes.retrieveAllMetadata,\n params,\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n updateMetaData(metadataConfig: IMetadataUpdateDto) {\n const { uid, ...otherMetaData } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.updateMetadata,\n payload: {\n metadata: {\n uid,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n deleteMetaData(metadataConfig: IMetadataDeleteDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.deleteMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n}\nexport default Metadata;\n","import { getPreferredBodyElement } from \"./utils/utils\";\n\nclass Modal {\n constructor() {\n if (!Object.prototype.hasOwnProperty.call(window, \"iframeRef\")) {\n const rootElement = getPreferredBodyElement(\n document?.body?.children\n );\n window[\"iframeRef\"] = rootElement;\n }\n }\n\n setBackgroundElement(element: HTMLElement) {\n window[\"iframeRef\"] = element;\n }\n}\n\nexport default Modal;\n","\nimport Base from '../base';\nimport { getReferences, language, environment } from '../../utils';\nimport postRobot from 'post-robot';\nimport { IAnyObject } from '../../../RTE/types';\n\nlet connection: any = {};\n\n/**\n * @summary Creates an instance of `Asset`.\n * @description An initializer is responsible for creating an Asset object.\n * @param {String} uid - uid of the asset\n * @example\n * let Asset = extension.stack.Asset('bltsomething123');\n * @returns {Asset}\n * @ignore\n */\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nclass Asset extends Base {\n getReferences: any\n environment: any\n constructor(uid) {\n super(uid);\n this.getReferences = getReferences;\n this.environment = environment;\n return this;\n }\n\n /**\n * @function\n * @name Stack#Asset.Query\n * @description This static method instantiates the query module for assets. To see the list of methods that can be used for querying assets, refer the {@link Query} module.\n * @example\n * let assetQuery = extension.stack.Asset.Query();\n * assetQuery.where(\"title\": \"main.js\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment\n });\n return entryQuery;\n }\n\n static module(plural = false) {\n return plural ? 'Assets' : 'Asset';\n }\n\n static get connection() {\n return connection;\n }\n\n /**\n * @function\n * @name Stack#Asset.getRteAssets\n * @description This static method retrieves comprehensive information on all assets uploaded through the Rich Text Editor field.\n * @return {external:Promise}\n */\n\n static getRteAssets() {\n return this.connection.sendToParent('stackQuery', { action: 'getRteAssets' }).then(onData).catch(onError);\n }\n\n /**\n * @function\n * @name Stack#Asset.getAssetsOfSpecificTypes\n * @description This static method retrieves assets that are either image or video files, based on the request query.\n * @param {String} assetType Type of asset to be received for e.g., ‘image/png’\n * @return {external:Promise}\n */\n static getAssetsOfSpecificTypes(assetType) {\n if (!assetType || typeof assetType !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.connection.sendToParent('stackQuery', { action: 'getAssetsOfSpecificTypes', asset_type: assetType }).then(onData).catch(onError);\n }\n\n\n /**\n * @name Stack#Asset#only\n * @function\n * @description This method is used to show the selected fields of the assets in the result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('title').fetch();\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @name Stack#Asset#except\n * @function\n * @description This method is used to hide the selected fields of the assets in result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('title').fetch();\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('BASE','title').fetch();\n * @example\n * .Except with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @function\n * @name Stack#Asset#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.Asset('bltsomething123').environment('development').fetch()\n * @returns {Stack#Asset}\n */\n\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addParam\n @function\n @example extension.stack.Asset('uid').addParam('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addQuery\n @function\n @example extension.stack.Asset('uid').addQuery('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n\n /**\n This method will fetch the details of the entries and the assets in which the specified asset is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-asset|\n Asset References}\n @name Stack#Asset#getReferences\n @function\n @example extension.stack.Asset('uid').getReferences().then().catch();\n @return {external:Promise}\n */\n\n /**\n This method deletes an existing asset.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-asset|\n Delete Asset}\n @name Stack#Asset#delete\n @function\n @example extension.stack.Asset('uid').delete().then().catch();\n @return {external:Promise}\n */\n\n\n /**\n * @name Stack#Asset#publish\n * @function\n * @description This method allows you to publish the asset either immediately or schedule the publish for a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .publish(\n {\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n publish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('publishAsset', payload);\n }\n\n /**\n * @function\n * @name Stack#Asset#unpublish\n * @description This method will instantly unpublish the asset, and also give you the provision to automatically unpublish the asset at a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .unpublish({\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n unpublish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('unpublishAsset', payload);\n }\n\n static async handleUpload(_files, type, options?: {parentFolderUid?: string, customUploadHandler?: IAnyObject}) {\n if (!_files || !_files.length) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n const files: File[] = [];\n Array.from(_files).forEach(_ => {\n // @ts-ignore\n const file = new File([_], _.name, { type: _.type });\n files.push(file);\n })\n const uid = new Date().getUTCMilliseconds();\n return (async function() {\n try {\n const uploadReadyListener = postRobot.on(\n `uploadReady_${uid}`,\n function () {\n window.parent.postMessage(\n {\n type: `upload_${uid}`,\n upload_type: type,\n files,\n parentFolderUid: options?.parentFolderUid,\n customUploadHandler: options?.customUploadHandler\n },\n \"*\"\n );\n\n uploadReadyListener.cancel();\n return Promise.resolve({});\n }\n );\n //@ts-ignore\n await postRobot.sendToParent(\"stackOptionsQuery\", {\n action: `upload_${uid}`,\n uid,\n });\n //@ts-ignore\n return postRobot.sendToParent(`upload_${uid}`, {});\n } catch(err) {\n return Promise.reject(err);\n }\n })();\n }\n\n static uploadAsset(files, options?: {parentFolderUid?: string}) {\n return Asset.handleUpload(files, 'upload', options);\n }\n}\n\nexport default (uiConnection) => {\n connection = uiConnection;\n return new Proxy(Asset, {\n apply(Target, thisArg, argumentsList) {\n //@ts-ignore\n return new Target(...argumentsList);\n }\n });\n};\n","//@ts-nocheck\n\nimport Query from './query';\nimport { transform, addParam } from '../utils';\n\n\nfunction onData(data: { data: any; }) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error: any) {\n return Promise.reject(error);\n}\n/**\n * This is Base class, it holds all the methods required for Modle instance,\n * eg ContentType('uid').delete() or Asset('uid').update({...})\n * @ignore\n */\nexport default class Base {\n\n\n uid: string\n _query: { [key: string]: any }\n only: any\n except: any\n addParam: any\n\n static connection: any\n static contentTypeUid: string\n\n constructor(uid: string) {\n if (!uid) { throw new Error('uid is required'); }\n this.uid = uid;\n this._query = {};\n this.only = transform('only');\n this.except = transform('except');\n this.addParam = addParam;\n }\n\n static Query() {\n //@ts-ignore\n return new Query(this.connection, this.module(true), this.contentTypeUid);\n }\n\n\n static create(payload: { [key: string]: any }) {\n const options = { payload, content_type_uid: this.contentTypeUid, action: `create${this.module()}` };\n return this.connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n update(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch(`update${this.constructor.module()}`, payload);\n }\n\n delete() {\n return this.fetch(`delete${this.constructor.module()}`);\n }\n\n fetch(action: string, payload?: { [key: string]: any }) {\n const options = {\n payload,\n content_type_uid: this.constructor.contentTypeUid,\n uid: this.uid,\n params: this._query,\n action: action || `get${this.constructor.module()}`\n };\n\n if (!payload) { delete options.payload; }\n if (!this.constructor.contentTypeUid) { delete options.content_type_uid; }\n return this.constructor.connection.sendToParent('stackQuery', options)\n .then(onData).catch(onError);\n }\n}\n","import Base from '../base';\nimport { getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference } from '../../utils';\n\nlet connection = {};\nlet contentTypeUid = '';\n\n\nclass Entry extends Base {\n constructor(uid: string) {\n super(uid);\n this._query = {};\n return this;\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry.Query\n * @description This static method instantiates the query module for entries. To see the list of methods that can be used for querying entries, refer the {@link Query} module.\n * @example\n * let entryQuery = extension.stack.ContentType('content_type_uid').Entry.Query();\n * entryQuery.where(\"field_uid\": \"10\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryQuery;\n }\n\n static get connection() {\n return connection;\n }\n\n static get contentTypeUid() {\n return contentTypeUid;\n }\n\n static module(plural = false) {\n return plural ? 'Entries' : 'Entry';\n }\n /**\n This method creates a new entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#create-a-an-entry|\n Create Entry}\n @name Stack#ContentType#Entry.create\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.create({\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n @param {Object} payload Data to create an entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @name Stack#ContentType#Entry#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('title').fetch();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @name Stack#ContentType#Entry#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('title').fetch();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('BASE','title').fetch();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * This method includes a query parameter in your query.\n * @name Stack#ContentType#Entry#addParam\n * @function\n * @example extension.stack.ContentType('content_type_uid').Entry('uid').addParam('include_count', 'true').fetch().then().catch();\n * @param {string} key - Key of the parameter\n * @param {string} value - Value of the parameter\n * @return {Stack#ContentType#Entry} Returns\n */\n\n\n /**\n This method will fetch all the entries in which the current entry is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-an-entry|\n Entry References}\n @name Stack#ContentType#Entry#getReferences\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').getReferences().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n @example extension.stack.ContentType('content_type_uid').Entry('uid').update({\"entry\" : {...}}).then().catch();\n @param {Object} payload Data to be update exsisting entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method deletes an existing entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-entry|\n Delete Entry}\n @name Stack#ContentType#Entry#delete\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').delete().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method fetches information of a specific entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-an-entry|\n Get A Single Entry}\n @name Stack#ContentType#Entry#fetch\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').fetch().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeReference\n * @description This method is used to include referenced entries from other content types.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference(['category', 'author']).fetch()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference('category', 'author').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#language\n * @description This method is used to set the language code of which you want to retrieve the data.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').language('en-us').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').environment('development').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#addQuery\n * @description This method is used to add a query to an entry object.\n * @param {String} key - Key of the query\n * @param {String} value - Value of the query\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').addQuery('include_schema',true).fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeSchema().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies).\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeContentType().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeOwner().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#getLanguages\n * @description This method returns the details of all the languages that an entry is localized in.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').getLanguages()\n * @return {external:Promise}\n */\n getLanguages() {\n return this.fetch('getEntryLanguages');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unlocalize\n * @description This method is used to unlocalize an entry\n * @param {string} locale Locale in which the entry has to be unlocalized\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unlocalize('fr-fr').then(...).catch(...);\n * @return {external:Promise}\n */\n unlocalize(locale: string) {\n if (!locale || typeof locale !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('unlocalizeEntry');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#publish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').publish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n publish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('publishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unpublish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unpublish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n unpublish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('unpublishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#setWorkflowStage\n * @description This method allows you to either set a particular workflow stage or update the workflow stage details of an entry.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').setWorkflowStage({\n \"workflow\": {\n \"workflow_stage\": {\n \"comment\": \"Test Comment\",\n \"due_date\": \"Thu Dec 01 2018\",\n \"notify\": false,\n \"uid\": \"blt9f52a2cd5e0014fb\",\n \"assigned_to\": [{\n \"uid\": \"blt296a22e28cc0c63c\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@contentstack.com\"\n }],\n \"assigned_by_roles\": [{\n \"uid\": \"blt5b74c24c7ae25d94\",\n \"name\": \"Content Manager\"\n }]\n }\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n setWorkflowStage(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('setWorkflowStageEntry', payload);\n }\n\n /**\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#update-an-entry| Update Entry}\n * @name Stack#ContentType#Entry#update\n * @function\n * @description This call allows you to update entry content.\n * @param {object} payload - Payload for the request\n * @param {string} [locale] - Passing the ‘locale’ parameter will localize the entry in the specified locale\n * to be localized in the specified locale.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').update(\n {\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n //@ts-ignore\n update(payload: { [key: string]: any }, locale: string) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('updateEntry', payload);\n }\n}\n\nexport default (uiConnection: any, contentType: string) => {\n connection = uiConnection;\n contentTypeUid = contentType;\n return new Proxy(Entry, {\n apply(Target: any, thisArg, argumentsList: any[]) {\n const entryTarget = new Target(...argumentsList);\n Object.assign(entryTarget, {\n getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryTarget;\n }\n });\n};\n","import Entry from './entry';\nimport Base from '../base';\n\nlet connection = {};\n\n\nclass ContentType extends Base {\n\n Entry: typeof Entry\n\n constructor(uid: string) {\n super(uid);\n /**\n * @constructor\n * @hideconstructor\n * @name Stack#ContentType#Entry\n * @desc An entry is the actual piece of content created using one of the defined content types\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#entries| Entries}\n */\n\n // @ts-ignore\n this.Entry = Entry(this.constructor.connection, this.uid);\n return this;\n }\n\n // static module(plural = false) {\n // return plural ? 'ContentTypes' : 'ContentType';\n // }\n static get connection() {\n return connection;\n }\n}\nexport default (uiConnection: any) => {\n connection = uiConnection;\n return new Proxy(ContentType, {\n // target = Foo\n apply(Target: any, thisArg, argumentsList: any[]) {\n return new Target(...argumentsList);\n }\n });\n};\n","import * as Utils from '../utils';\n\n\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nconst _extend = {\n compare(type) {\n return function (key, value) {\n if (key && value && typeof key === 'string' && typeof value !== 'undefined') {\n this._query.query[key] = this._query.query.file_size || {};\n this._query.query[key][type] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n contained(bool) {\n const type = (bool) ? '$in' : '$nin';\n return function (key, value) {\n if (key && value && typeof key === 'string' && Array.isArray(value)) {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key][type] = this._query.query[key][type] || [];\n this._query.query[key][type] = this._query.query[key][type].concat(value);\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n exists(bool) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key].$exists = bool;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n logical(type) {\n return function () {\n const _query: any[] = [];\n for (let i = 0, _i = arguments.length; i < _i; i += 1) {\n if (arguments[i] instanceof Query && arguments[i]._query.query) {\n _query.push(arguments[i]._query.query);\n } else if (typeof arguments[i] === 'object') {\n _query.push(arguments[i]);\n }\n }\n if (this._query.query[type]) {\n this._query.query[type] = this._query.query[type].concat(_query);\n } else {\n this._query.query[type] = _query;\n }\n return this;\n };\n },\n sort(type) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query[type] = key;\n return this;\n }\n throw Error('Argument should be a string.');\n };\n },\n pagination(type) {\n return function (value) {\n if (typeof value === 'number') {\n this._query[type] = value;\n return this;\n }\n throw Error('Argument should be a number.');\n };\n }\n};\n\n/**\n * Creates an instance of the query\n * @hideconstructor\n */\nclass Query {\n module: any\n _connection: any\n _query: {[key: string]: any}\n contentTypeUid: string\n only: any\n except: any\n addQuery: any\n lessThan: any\n lessThanOrEqualTo: any\n greaterThan: any\n greaterThanOrEqualTo: any\n notEqualTo: any\n containedIn: any\n notContainedIn: any\n exists: any\n notExists: any\n ascending: ReturnType\n descending: ReturnType\n beforeUid: ReturnType\n afterUid: ReturnType\n skip: ReturnType\n limit: ReturnType\n or: ReturnType\n and: ReturnType\n addParam: ReturnType\n singleEntry: any\n\n constructor(connection, module, contentTypeUid) {\n this.module = module;\n this._connection = connection;\n this._query = {};\n this._query.query = this._query.query || {};\n this.contentTypeUid = contentTypeUid;\n\n /**\n * @name Query#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('title').find();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('BASE','title').find();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().only(['title','description']).find();\n * @returns {Query}\n */\n\n this.only = Utils.transform('only');\n\n /**\n * @name Query#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('title').find();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('BASE','title').find();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().except(['title','description']).find();\n * @returns {Query}\n */\n\n this.except = Utils.transform('except');\n /**\n This method includes a query parameter in your query.\n @name Query#addQuery\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addQuery('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addQuery = Utils.addQuery;\n\n /**\n * @name Query#lessThan\n * @description This method provides only the entries with values less than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThan('created_at','2015-06-22')\n * @returns {Query}\n */\n this.lessThan = _extend.compare('$lt');\n\n /**\n * @name Query#lessThanOrEqualTo\n * @description This method provides only the entries with values less than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThanOrEqualTo('created_at','2015-03-12')\n * @returns {Query}\n */\n this.lessThanOrEqualTo = _extend.compare('$lte');\n /**\n * @function\n * @name Query#greaterThan\n * @description This method provides only the entrieswith values\n * greater than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThan('created_at','2015-03-12')\n * @returns {Query}\n */\n this.greaterThan = _extend.compare('$gt');\n\n /**\n * @function\n * @name Query#greaterThanOrEqualTo\n * @description This method provides only the entries with values greater than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThanOrEqualTo('created_at', '2015-06-22')\n * @returns {Query}\n */\n this.greaterThanOrEqualTo = _extend.compare('$gte');\n\n /**\n * @function\n * @name Query#notEqualTo\n * @description This method provides only the entries with values not equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').notEqualTo('title','Demo')\n * @returns {Query}\n */\n this.notEqualTo = _extend.compare('$ne');\n\n /**\n * @function\n * @name Query#containedIn\n * @description This method provides only the entries with values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {*} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').containedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.containedIn = _extend.contained(true);\n\n /**\n * @function\n * @name Query#notContainedIn\n * @description This method provides only the entries that do not contain values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {Array} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').notContainedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.notContainedIn = _extend.contained(false);\n\n /**\n * @function\n * @name Query#exists\n * @description This method provides only the entries that contains the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').exists('featured')\n * @returns {Query}\n */\n this.exists = _extend.exists(true);\n\n /**\n * @function\n * @name Query#notExists\n * @description This method provides only the entries that do not contain the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').notExists('featured')\n * @returns {Query}\n */\n this.notExists = _extend.exists(false);\n\n /**\n * @function\n * @name Query#ascending\n * @description This parameter sorts the entries in ascending order on the basis of the value of the specified field.\n * @param {String} key - Field UID to be used for sorting.\n * @example extension.stack.ContentType('blog').ascending('created_at')\n * @returns {Query}\n */\n this.ascending = _extend.sort('asc');\n\n /**\n * @function\n * @name Query#descending\n * @description This method sorts the entries in descending order on the basis of the specified field.\n * @param {String} key - Field UID to be used for sorting\n * @example extension.stack.ContentType('blog').descending('created_at')\n * @returns {Query}\n */\n this.descending = _extend.sort('desc');\n\n /**\n * @function\n * @name Query#beforeUid\n * @description This method provides only the entries that are placed before the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').beforeUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.beforeUid = _extend.sort('before_uid');\n\n /**\n * @function\n * @name Query#afterUid\n * @description This method provides only the entries that are placed after the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').afterUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.afterUid = _extend.sort('after_uid');\n\n /**\n * @function\n * @name Query#skip\n * @description This method skips the specified number of entries.\n * @param {Number} skip - Number of entries to be skipped\n * @example extension.stack.ContentType('blog').skip(5)\n * @returns {Query}\n */\n this.skip = _extend.pagination('skip');\n\n /**\n * @function\n * @name Query#limit\n * @description This method limits the response by providing only the specified number of entries.\n * @param {Number} limit - Maximum number of entries to be returned in the result.\n * @example extension.stack.ContentType('blog').limit(10)\n * @returns {Query}\n */\n this.limit = _extend.pagination('limit');\n\n /**\n * @function\n * @name Query#or\n * @description This method performs the OR operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries\n * to be taken into consideration\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo')\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10)\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery()\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery()\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @returns {Query}\n */\n this.or = _extend.logical('$or');\n\n /**\n * @function\n * @name Query#and\n * @description This method performs the AND operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries to be taken into consideration\n * @example\n * AND with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo');\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10);\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @example\n * .and with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery();\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery();\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @returns {Query}\n */\n this.and = _extend.logical('$and');\n /**\n This method includes a query parameter in your query.\n @name Query#addParam\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addParam('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addParam = Utils.addParam;\n }\n\n // -------------------------------------Entry Queries--------------------------------------------------\n /**\n * @function\n * @name Query#includeReference\n * @description This method is used to include referenced entries from other content types. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference(['category', 'author']).find()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference('category', 'author').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeSchema().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#language\n * @description This method is used to set the language code of which you want to retrieve the data. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().language('en-us').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies). Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeContentType().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeOwner().find()\n * @returns {Query}\n */\n // -----------------------------------------Entry Queries End------------------------------------------------------\n\n /**\n * @function\n * @name Query#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().environment('development').find()\n * @returns {Query}\n */\n\n /**\n * @description This method provides only the entries containing field values matching the specified condition.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').where('title','Demo')\n * @returns {Query}\n */\n equalTo(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n where(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides only the number of entries matching the specified filters.\n * @example extension.stack.ContentType('blog').count()\n * @returns {Query}\n */\n count() {\n this._query.count = true;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method is used to set raw queries on the Query instance.\n * @param {object} query - Raw{json} queries to filter the entries in the result set.\n * @returns {Query}\n */\n query(query) {\n if (typeof query === 'object') {\n this._query.query = Utils.mergeDeep(this._query.query, query);\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description The ’tags’ parameter allows you to specify an array of tags to search for objects.\n * @param {Array} values - Tags\n * @example extension.stack.ContentType('blog').tags(['technology', 'business'])\n * @returns {Query}\n */\n tags(values) {\n if (Array.isArray(values)) {\n this._query.tags = values;\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description This method also includes the total number of entries returned in the response.\n * @example extension.stack.ContentType('blog').includeCount()\n * @returns {Query}\n */\n includeCount() {\n this._query.include_count = true;\n return this;\n }\n\n /**\n * @summary returns Returns the raw query which can be used for further calls (.and/.or).\n * @description This method provides raw{json} queries based on the filters applied on the Query object.\n * @example extension.stack.ContentType('blog').where('title','Demo').getQuery()\n * @returns {Query}\n */\n getQuery() {\n return this._query.query;\n }\n\n /**\n * @description This method provides only the entries matching the regular expression for the specified field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @param {String} [options] - Match or compare a value in the entry\n * @example\n * .regex without options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo')\n * @example\n * .regex with options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo', 'i')\n * @returns {Query}\n */\n regex(key, value, options) {\n if (key && value && typeof key === 'string' && typeof value === 'string') {\n this._query.query[key] = {\n $regex: value\n };\n if (options) this._query.query[key].$options = options;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method is used to search data in entries.\n * @param {string} value - Value to search in the entries.\n * @example extension.stack.ContentType('blog').search('Welcome to demo')\n * @returns {Query}\n */\n search(value) {\n if (value && typeof value === 'string') {\n this._query.typeahead = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides all the entries which satisfy the specified query.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').find()\n */\n find() {\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method provides a single entry from the result set.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').findOne()\n */\n findOne() {\n this.singleEntry = true;\n this._query.limit = 1;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n}\n\nexport default Query;\n","import Asset from './api/asset/index';\nimport ContentType from './api/content-type/index';\nimport { onData, onError } from \"../utils/utils\";\nimport { BranchDetail, GetAllStacksOptions, StackAdditionalData, StackDetail, StackSearchQuery } from '../types/stack.types';\nimport { IManagementTokenDetails } from '../types';\n\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nclass Stack {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _data: StackDetail\n ContentType: any // TODO: change it\n Asset: any // TODO: change it\n private _currentBranch: BranchDetail | null = null;\n\n\n constructor(data: StackDetail = {} as StackDetail, connection: any, additionalData: StackAdditionalData) {\n this._connection = connection;\n this._data = data;\n /**\n * @constructor\n * @hideconstructor\n * @desc Content type defines the structure or schema of a page or a section of your web or mobile property\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#content-types| ContentType}\n * @param {string} uid - Uid of contenttype.\n * @example extension.stack.ContentType('content_type_uid')\n * */\n this.ContentType = ContentType(connection);\n /**\n * @constructor\n * @hideconstructor\n * @desc An initializer is responsible for creating an Asset object.\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#assets| Asset}\n * @param {string} uid - UID of the asset.\n * @example extension.stack.Asset('asset_uid')\n * */\n this.Asset = Asset(connection);\n\n const currentBranch = additionalData.currentBranch || \"\"\n\n if (currentBranch) {\n this._currentBranch =\n (data.branches || []).find(\n (branch) => branch.uid === additionalData.currentBranch\n ) || null;\n }\n\n }\n\n\n /**\n * This method returns the data of the current stack.\n * @return Returns stack data.\n */\n\n getData(): StackDetail {\n return this._data;\n }\n\n\n /**\n * This method returns all the stacks in the current organization.\n * @param query asks for organization UID and query params to get all stacks\n * @returns Stacks within current organization\n */\n async getAllStacks({orgUid = \"\", params = {}}: GetAllStacksOptions = {}): Promise {\n \n // validation\n if (typeof orgUid !== 'string') {\n throw new TypeError('orgUid must be a string');\n }\n\n const options = {\n action: \"getStacks\",\n headers: { organization_uid: orgUid || this._data.org_uid },\n skip_api_key: true,\n params\n };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .then((data) => data.stacks || [])\n .catch(onError);\n\n }\n\n /**\n * Get the details of all the management tokens of the stack.\n * Note: This API does not return the token value.\n * @see {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-management-tokens | Get all management tokens}\n * @returns Details of all the management token of the stack\n */\n async getManagementTokens(): Promise {\n const options = { action: \"getManagementTokens\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(async (response) => {\n const data = await onData<{tokens: IManagementTokenDetails[]}>(response);\n return data.tokens || [];\n })\n .catch(onError);\n }\n\n /**\n * Gets the results of the search based on user query\n * @param queries Array of key value pair of query parameters\n * @param apiKey API key of the stack\n * @returns Result of the query\n */\n search(queries: StackSearchQuery, apiKey: string | null = this._data.api_key) {\n const options = { params: queries, api_key: apiKey, action: \"search\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n }\n\n\n /**\n * This API allows you to retrieve data of a content type of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-content-type| Content Type API} requests. This method returns a Promise object.\n * @param {string} uid Uid of the desired content type\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with content type details.\n */\n getContentType(uid: string, params = {}): Promise<{ [key: string]: any }> {\n if (!uid) {\n return Promise.reject(new Error('uid is required'));\n }\n const options = { uid, params, action: 'getContentType' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve data of a content types of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Content Types API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with details of the content type.\n */\n getContentTypes(query = {}, params: { [key: string]: any } = {}): Promise<{ [key: string]: any }> {\n const optionParams = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getContentTypes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve environment details of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-environment| Environment API} requests. This method returns a Promise object.\n * @param {string} name Name of the desired environment\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with environment details.\n */\n getEnvironment(name: string, params = {}) {\n if (!name) {\n return Promise.reject(new Error('name is required'));\n }\n const options = { name, params, action: 'getEnvironment' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of environments of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-environments| Environments API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the environments.\n */\n getEnvironments(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getEnvironments' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of releases of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-releases| Releases API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the releases.\n */\n getReleases(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getReleases' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of publish queue of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-publish-queue| Publish Queue API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the publish queue.\n */\n getPublishes(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getPublishes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a locale of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-language| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getLocale(code: string, params = {}) {\n if (!code) {\n return Promise.reject(new Error('code is required'));\n }\n const options = { code, params, action: 'getLocale' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getLocales(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getLocales' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a workflow of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-workflow| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getWorkflow(uid: string, params = {}) {\n if (!uid) {\n return Promise.reject(new Error('workflow uid is required'));\n }\n const options = { uid, params, action: 'getWorkflow' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n \n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getWorkflows(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getWorkflows' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve all the branches in the current stack\n * @returns All branches of the current stack\n */\n getAllBranches(): BranchDetail[] {\n return this._data.branches || [];\n }\n\n /**\n * Returns the details of the current branch of the stack if available\n * @returns current branch of the current stack if available\n */\n getCurrentBranch(): BranchDetail | null {\n return this._currentBranch;\n }\n}\n\nexport default Stack;\n","export function transform(type) {\n return function () {\n switch (arguments.length) {\n case 1:\n if (\n Array.isArray(arguments[0]) ||\n typeof arguments[0] === \"string\"\n ) {\n let query = this._query[`${type}[BASE]`] || [];\n query = query.concat(arguments[0]);\n this._query[`${type}[BASE]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n case 2:\n if (\n typeof arguments[0] === \"string\" &&\n (Array.isArray(arguments[1]) ||\n typeof arguments[1] === \"string\")\n ) {\n let query = this._query[`${type}[${arguments[0]}]`] || [];\n query = query.concat(arguments[1]);\n this._query[`${type}[${arguments[0]}]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n default:\n throw Error(\"Kindly provide valid parameters\");\n }\n };\n}\n\n// merge two objects\nexport function merge(\n target: { [key: string]: any },\n source: { [key: string]: any }\n) {\n const newTraget = target;\n if (target && source) {\n Object.keys(source).forEach((key) => {\n newTraget[key] = source[key];\n });\n }\n return newTraget;\n}\n\n// merge two objects\nexport function mergeDeep(\n oldTarget: { [key: string]: any },\n oldSource: { [key: string]: any }\n) {\n const newTarget = oldTarget;\n const self = this;\n const _mergeRecursive = (anotherTarget, source) => {\n const target = anotherTarget;\n Object.keys(source).forEach((key) => {\n if (\n self._type(source[key]) === \"object\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n _mergeRecursive(target[key], source[key]);\n } else if (\n self._type(source[key]) === \"array\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n target[key] = target[key].concat(source[key]);\n } else {\n target[key] = source[key];\n }\n });\n };\n _mergeRecursive(newTarget, oldSource);\n return newTarget;\n}\n\nexport function _type(val) {\n let __typeof = typeof val;\n if (__typeof === \"object\" && Array.isArray(val)) {\n //@ts-ignore\n __typeof = \"array\";\n }\n return __typeof;\n}\n\nexport function addParam(key, value) {\n if (key && typeof key === \"string\" && value && typeof value === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"Kindly provide valid parameters.\");\n}\n\nexport function addQuery(key, value) {\n if (key && value && typeof key === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"First argument should be a String.\");\n}\n\nexport function language(languageCode) {\n if (languageCode && typeof languageCode === \"string\") {\n this._query.locale = languageCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function environment(environmentCode) {\n if (environmentCode && typeof environmentCode === \"string\") {\n this._query.environment = environmentCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function includeOwner() {\n this._query.include_owner = true;\n return this;\n}\n\nexport function includeContentType() {\n this._query.include_content_type = true;\n return this;\n}\n\nexport function includeSchema() {\n this._query.include_schema = true;\n return this;\n}\n\nexport function includeReference(val) {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(val[i]);\n }\n } else if (typeof val === \"string\") {\n for (let i = 0; i < arguments.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(\n arguments[i]\n );\n }\n } else {\n throw Error(\"Argument should be a String or an Array.\");\n }\n return this;\n}\n\nexport function getReferences() {\n return this.fetch(`get${this.constructor.module()}References`);\n}\n","function onError(error: Error) {\n return Promise.reject(error);\n}\n/**\n * Class used by an extension to store your data in {@link external:localStorage}.\n */\nclass Store {\n /**\n * @hideconstructor\n */\n\n _connection: any\n\n constructor(connection: any) {\n this._connection = connection;\n }\n /**\n * Gets the value of key\n * @param {string} key Key of the stored data\n * @example extension.store.get('key').then((value) => console.log(value)) // will log value for the given key\n * @return {external:Promise}\n */\n get(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'get', key })\n .then((event: { data: any; }) => Promise.resolve(event.data)).catch(onError);\n }\n\n /**\n * Gets an object with all the stored key-value pairs.\n * @example extension.store.getAll().then((obj) => obj)\n * @return {external:Promise}\n */\n getAll() {\n return this._connection.sendToParent('store', { action: 'getAll' })\n .then(({ data = {} }) => Promise.resolve(data)).catch(onError);\n }\n\n /**\n * Sets the value of a key\n * @param {string} key Key of the stored data.\n * @param {*} value Data to be stored.\n * @example extension.store.set('key', 'value').then((success) => console.log(success)) // will log ‘true’ when value is set\n * @return {external:Promise}\n */\n\n set(key: string, value: string) {\n if (!key || !value || typeof key !== 'string') {\n throw new Error('Kindly provide valid parameters');\n }\n return this._connection.sendToParent('store', { action: 'set', key, value })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Removes the value of a key\n * @param {string} key Key of the data to be removed from the store\n * @example extension.store.remove('key').then((success) => console.log(success)) // will log ‘true’ when value is removed\n * @return {external:Promise}\n */\n\n remove(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'remove', key })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Clears all the stored data of an extension\n * @example extension.store.clear().then((success) => console.log(success)) // will log ‘true’ when values are cleared\n * @return {external:Promise}\n */\n\n clear() {\n return this._connection.sendToParent('store', { action: 'clear' })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n}\n\nexport default Store;\n","import { AnyObject } from \"./types/common.types\";\nimport { StackDetail } from \"./types/stack.types\";\n\nexport declare interface IDashboardWidget {\n [key: string]: any;\n}\n\nexport declare interface ICustomField {\n [key: string]: any;\n}\n\nexport declare interface ISidebarWidget {\n [key: string]: any;\n}\n\nexport declare interface IRTE {\n [key: string]: any;\n}\n\nexport declare interface IFieldModifierLocation {\n [key: string]: any;\n}\n\nexport declare interface IEntryFieldLocation {\n [key: string]: any;\n}\n\nexport declare interface IFullPageLocation {\n [key: string]: any;\n}\n\nexport declare interface User {\n uid: string;\n first_name: string;\n last_name: string;\n}\n\nexport declare interface Manifest {\n created_by: User;\n icon: string;\n name: string;\n target_type: string;\n uid: string;\n updated_by: User;\n version: number;\n visibility: string;\n}\n\nexport declare interface IAppConfigWidget {\n installation: {\n setInstallationData: (\n installationData: IInstallationData\n ) => Promise;\n getInstallationData: () => Promise;\n setValidity: (isValid: boolean, options?: ValidationOptions) => void;\n [key: string]: any;\n };\n stack: AnyObject;\n}\n\nexport declare interface IPageWidget {\n [key: string]: any;\n}\n\n// initialization data\nexport declare interface IUser {\n [key: string]: any;\n}\n\nexport declare interface ICurrentEntry {\n [key: string]: any;\n}\n\nexport declare interface ICurrentContentType {\n [key: string]: any;\n}\n\nexport declare interface IConfig {\n [key: string]: any;\n}\n\nexport declare interface ISchema {\n [key: string]: any;\n}\n\nexport declare interface IFieldConfig {\n [key: string]: any;\n}\n\n// Init data\n\ndeclare interface ICommonInitData {\n app_id: string;\n installation_uid: string;\n extension_uid: string;\n stack: StackDetail;\n user: IUser;\n currentBranch: string;\n region: string;\n manifest?: Manifest;\n}\n\nexport declare interface IDashboardInitData {\n data: ICommonInitData & {\n dashboard_width: \"full_width\" | \"half_width\";\n config?: AnyObject;\n type: \"DASHBOARD\";\n };\n}\n\nexport declare interface ISidebarInitData {\n data: ICommonInitData & {\n app_config: IConfig;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n config?: AnyObject;\n changedData: ICurrentEntry;\n type: \"WIDGET\";\n };\n}\n\nexport declare interface IRTELocationInitData {\n data: ICommonInitData & {\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n changedData: ICurrentEntry;\n }\n}\n\nexport declare interface IFieldInitData {\n data: ICommonInitData & {\n entry: ICurrentEntry;\n content_type: ICurrentContentType;\n locale: string;\n uid: string;\n schema: ISchema;\n app_config: IConfig;\n value: any;\n field_config: IFieldConfig;\n config?: AnyObject;\n changedData: ICurrentEntry;\n self: boolean;\n type: \"FIELD\";\n };\n}\n\nexport declare interface IFullPageLocationInitData {\n data: ICommonInitData & {\n type: \"FULL_PAGE_LOCATION\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IRTEInitData {\n data: ICommonInitData & {\n type: \"RTE\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IAppConfigInitData {\n data: ICommonInitData & {\n type: \"APP_CONFIG_WIDGET\";\n config?: AnyObject;\n };\n}\n\nexport declare interface ICurrentAsset {\n [key: string]: any;\n}\n\nexport declare interface IAssetSidebarInitData {\n data: ICommonInitData & {\n type: \"ASSET_SIDEBAR_WIDGET\";\n currentAsset: ICurrentAsset;\n config: { [key: string]: any };\n };\n}\n\nexport declare interface IFieldModifierLocationInitData {\n data: ICommonInitData & {\n type: \"FIELD_MODIFIER_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface IEntryFieldLocationInitData {\n data: ICommonInitData & {\n type: \"ENTRY_FIELD_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface setAssetDto {\n title: string;\n description: string;\n tags: string[];\n}\n\nexport enum StackLocation {\n STACK_CONFIG = \"cs.cm.stack.config\",\n DASHBOARD = \"cs.cm.stack.dashboard\",\n SIDEBAR = \"cs.cm.stack.sidebar\",\n CUSTOM_FIELD = \"cs.cm.stack.custom_field\",\n RTE = \"cs.cm.stack.rte\",\n}\n\nexport enum OrganizationLocation {\n ORG_CONFIG = \"cs.org.config\",\n}\n\nexport type AppLocation = StackLocation | OrganizationLocation;\n\nexport interface Scope {\n content_types: string[];\n}\n\n/**\n * installation details API response\n */\nexport interface IInstallationData {\n configuration: { [key: string]: any };\n serverConfiguration: { [key: string]: any };\n webhooks?: {\n channels: string[];\n }[];\n uiLocations?: {\n type: AppLocation;\n meta: {\n enabled: boolean;\n scope?: Scope;\n name: string;\n extentionUid: string;\n }[];\n }[];\n}\n// End of Init data\n\nexport declare interface IInitializationData {\n FIELD: IFieldConfig;\n WIDGET: ISidebarInitData;\n DASHBOARD: IDashboardInitData;\n RTE: IRTEInitData;\n APP_CONFIG_WIDGET: IAppConfigInitData;\n ASSET_SIDEBAR_WIDGET: IAssetSidebarInitData;\n}\n\nexport declare type ILocation =\n | \"RTE\"\n | \"FIELD\"\n | \"DASHBOARD\"\n | \"WIDGET\"\n | \"APP_CONFIG_WIDGET\"\n | \"ASSET_SIDEBAR_WIDGET\"\n | \"FULL_PAGE_LOCATION\"\n | \"ENTRY_FIELD_LOCATION\"\n | \"FIELD_MODIFIER_LOCATION\";\n\nexport declare interface ValidationOptions {\n message?: string;\n}\n\nexport declare interface IManagementTokenDetails {\n uid: string;\n name: string;\n}\n\nexport enum Region {\n UNKNOWN = \"UNKNOWN\",\n NA = \"NA\",\n EU = \"EU\",\n AZURE_NA = \"AZURE_NA\",\n AZURE_EU = \"AZURE_EU\",\n}\n","export const ERROR_MESSAGES = Object.freeze({\n configPage: {\n setValidity: {\n isValidTypeBoolean: \"isValid should be a boolean\",\n messageTypeString: \"message should be a string\",\n },\n },\n entryField: {\n entry: {\n tagsShouldNotBeBlank: \"Tags cannot be blank\",\n tagsShouldBeArrayOfStrings: \"Tags must be an array of strings\",\n },\n frame: {\n dimensionHeightShouldBeNumber: \"Dimension height must be a number\",\n dimensionWidthShouldBeNumber: \"Dimension width must be a number\",\n },\n },\n});\n\nexport default function generateErrorMessages(message: string) {\n return `Contentstack App SDK: ${message}`;\n}\n","import { Region } from \"../types\";\n\nexport function onData>(data: { data: Data }) {\n if (typeof data.data === \"string\") {\n return Promise.reject(data.data);\n }\n return Promise.resolve(data.data);\n}\n\nexport function onError(error: Error) {\n return Promise.reject(error);\n}\n\nexport function formatAppRegion(region: string): Region {\n switch (region) {\n case \"NA\":\n return Region.NA;\n case \"EU\":\n return Region.EU;\n case \"AZURE_NA\":\n return Region.AZURE_NA;\n case \"AZURE_EU\":\n return Region.AZURE_EU;\n default:\n return Region.UNKNOWN;\n }\n}\n\nexport function getPreferredBodyElement(nodeCollection: HTMLCollection) {\n let rootElementIndex = Infinity;\n let rootElement: Element | undefined;\n const elementPreferenceList = [\n \"HEADER\",\n \"NAV\",\n \"MAIN\",\n \"SECTION\",\n \"ARTICLE\",\n \"ASIDE\",\n \"FOOTER\",\n \"DIV\",\n ];\n const nonRenderingTags = [\"SCRIPT\", \"NOSCRIPT\", \"STYLE\", \"TEMPLATE\"];\n // ? choose higher preference semantic HTML tags\n Array.from(nodeCollection).forEach((el) => {\n const elIndex = elementPreferenceList.indexOf(el.nodeName);\n if (elIndex >= 0 && elIndex < rootElementIndex) {\n rootElementIndex = elIndex;\n rootElement = el;\n }\n });\n // ? choose the first rendering HTML tag found if no semantic tags found\n if (!rootElement) {\n rootElement = Array.from(nodeCollection).find(\n (el) => !nonRenderingTags.includes(el.nodeName)\n );\n }\n return rootElement || nodeCollection[0];\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\n\nconst config = { attributes: true, childList: true, subtree: true };\nlet observer: MutationObserver;\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass Window {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _autoResizingEnabled: boolean\n _resizingEnabled: boolean\n type: 'DASHBOARD' | 'FIELD'\n _emitter: EventEmitter\n state: 'half_width' | 'full_width'\n _height?: number\n\n constructor(connection: any, type: 'DASHBOARD' | 'FIELD', emitter: EventEmitter, state: 'half_width' | 'full_width' = 'half_width') {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._resizingEnabled = false;\n this.type = type;\n this.state = state;\n this._emitter = emitter;\n }\n\n /**\n * This method activates the resize button that gives you the provision to resize the window size of your Dashboard Widget.\n * @return {external:Promise} A promise object which will resolve when a resize button is visible on the Dashboard Widget.\n */\n enableResizing() {\n if (this.type !== 'DASHBOARD') { return Promise.resolve(); }\n this._resizingEnabled = true;\n return this._connection.sendToParent('window', { action: 'enableResizing' });\n }\n\n\n /**\n * This function executes the callback function whenever a Dashboard Widget extension is maximized or minimized. Only applicable on Dashboard Widget extensions.\n * @param {function} callback Function to be called when a Dashboard Widget extension is maximized or minimized\n * @return {boolean} Will return true\n */\n\n onDashboardResize(callback: (event: any) => void) {\n const windowObj = this;\n if (this.type !== 'DASHBOARD') {\n return false;\n }\n if (callback && typeof (callback) === 'function') {\n windowObj._emitter.on('dashboardResize', (event: { state: 'half_width' | 'full_width'; }) => {\n windowObj.state = event.state;\n callback(event.state);\n });\n } else {\n throw Error('Callback must be a function');\n }\n return true;\n }\n\n\n /**\n * This method updates the extension height on Contentstack UI.\n * If the ‘height’ argument is not passed, it will calculate the scroll height and set the height of extension window accordingly.\n * @param {string|number} height Desired height of the iframe window\n * @return {external:Promise} A promise object which will be resolved when Contentstack UI sends an acknowledgement stating that the height has been updated.\n */\n updateHeight(height?: number) {\n if (this.type === 'DASHBOARD' && this.state === 'half_width') { return Promise.resolve(); }\n if (!height || isNaN(height)) {\n this._height = Math.ceil(document.documentElement.getBoundingClientRect().height);\n } else if (this._height === height) {\n return Promise.resolve();\n } else {\n this._height = height;\n }\n return this._connection.sendToParent('resize', this._height);\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {Window}.\n */\n enableAutoResizing() {\n if (this._autoResizingEnabled || (this.state === 'half_width' && this.type === 'DASHBOARD')) {\n return this;\n }\n this._autoResizingEnabled = true;\n //@ts-ignore\n observer = new MutationObserver(this.updateHeight.bind(this));\n observer.observe(window.document.body, config);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {Window}.\n */\n disableAutoResizing() {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n observer.disconnect();\n return this;\n }\n\n enablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent(\"window\", {\n action: \"dashboardEnableTopPadding\",\n });\n }\n\n disablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent('window', {\n action: 'dashboardDisableTopPadding' \n });\n }\n \n}\n\nexport default Window;\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","// 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].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n"],"names":["root","factory","exports","module","define","amd","this","self","modules","installedModules","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","value","interface_namespaceObject","isRegex","item","toString","cleanUpWindow","promise_ZalgoPromise","bridge","init","public_parent","_send","request","sendToParent","client","_on","listen","server_once","server_listener","CONFIG","constants_CONSTANTS","disable","PROTOCOL","IE_WIN_ACCESS_ERROR","isAboutProtocol","arguments","length","window","location","protocol","getParent","win","parent","err","getOpener","opener","canReadFromWindow","href","getActualDomain","Error","host","utils_getDomain","domain","mockDomain","indexOf","isActuallySameDomain","desc","getOwnPropertyDescriptor","isAncestorParent","child","childParent","result","push","getFrames","frames","len","frame","_i","_frame","iframeWindows","iframeFrames","isWindowClosed","allowMock","closed","message","mockclosed","top","iframeIndex","collection","contentWindow","parentNode","doc","ownerDocument","documentElement","contains","getAncestor","matchDomain","pattern","origin","Array","isArray","Boolean","match","JSON","stringify","some","subpattern","isWindow","obj","Window","__cross_domain_utils_window_check__","util_safeIndexOf","_ALLOWED_POST_MESSAGE","weakmap_CrossDomainSafeWeakMap","CrossDomainSafeWeakMap","instance","Constructor","TypeError","Math","random","WeakMap","freeze","testWeakMap","testKey","set","weakmap","keys","values","_cleanupClosedWindows","delete","splice","isSafeToReadWrite","key","entry","writable","index","has","getOrSet","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","ERROR","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","POPUP","IFRAME","WINDOW_PROPS","POSTROBOT","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","POST_MESSAGE","BRIDGE","GLOBAL","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","WILDCARD","map","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","navigator","userAgent","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_typeof","Symbol","iterator","constructor","stringifyError","level","stack","newErr","once","method","called","apply","lib_util_noop","uniqueID","chars","replace","charAt","floor","replaceObject","callback","depth","newobj","_key","childItem","util_isRegex","utils_isPromise","Promise","_toString","then","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushPromise","flushActive","promise","resolve","startActive","endActive","ZalgoPromise","handler","_this","resolved","rejected","errorHandled","handlers","_result","_error","isAsync","res","reject","dispatch","error","_this2","_err","setTimeout","j","asyncReject","dispatching","chain","firstPromise","secondPromise","_handlers$i","_onSuccess","onSuccess","_onError","onError","_promise","_result2","catch","finally","onFinally","try","timeout","time","_this3","clearTimeout","toPromise","all","promises","count","results","prom","hash","items","onPossiblyUnhandledException","cancel","context","args","delay","_delay","isPromise","flush","global","registerSelf","serialize__typeof","methods","listenForMethods","on","_ref","source","data","meth","id","isSerialized","type","__type__","serializeMethod","destination","__id__","__name__","deserializeMethod","wrapper","slice","send","_ref2","__xdomain__","deserializeZalgoPromise","__then__","sayHello","readyPromises","SEND_MESSAGE_STRATEGIES","serializedMessage","dom","forEach","postMessage","_extends","assign","target","sendMessage","_jsonStringify","options","sourceDomain","windowType","__message__","__code__","code","regex","__source__","messages","replacer","indent","objectToJSON","arrayToJSON","toJSON","strategyName","success","status","join","responseListeners","requestListeners","WINDOW_WILDCARD","erroredResponseListeners","_RECEIVE_MESSAGE_TYPE","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","nameListeners","_i2","_ref3","_length2","winQualifier","winListeners","_i4","_winListeners$__DOMAI2","_length4","_ref5","listener","types__extends","RECEIVE_MESSAGE_TYPES","pathname","ack","respond","fireAndForget","originalSource","handleError","response","receive__typeof","receiveMessage","event","parsedMessage","parse","receivedMessages","RegExp","messageListener","sourceElement","originalEvent","targetWindow","el","document","getElementById","tagName","toLowerCase","HTMLIFrameElement","hasResult","requestPromises","requestPromise","actualParent","_i7","_getAllChildFrames4","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","childFrame","_length6","_i15","_getFrames8","_length14","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","cycle","max","min","server__typeof","listenerOptions","errorHandler","requestListener","addRequestListener","_ref6","listenersCollection","_i6","_win2","_i8","_length8","_listenersCollection","_i10","_domain2","_length10","_item","_i12","_length12","existingListener","strDomain","regexListeners","regexListener","_handler","errorOnClose","interval","runInterval","onceListener","removeEventListener","popupWindowsByWin","remoteWindows","initialized","addEventListener","attachEvent","initializationData","connection","emitter","currentAsset","_emitter","_connection","thisAsset","_changedData","getData","bind","setData","syncAsset","updateWidth","onSave","onChange","onPublish","onUnPublish","replaceAsset","asset","width","file","handleUpload","AssetSidebarWidget","configCallback","pluginMetaData","registry","title","toolbar","inMainToolbar","inHoveringToolbar","isContentstackElement","meta","elementType","editorCallbacks","isDependent","isContainer","containerMetaData","rootCategory","dependentPlugins","addPlugins","plugins","plugin","category","beforeChildrenRender","beforeElementRender","handleMouseDown","rte","config","entries","iconName","display","includes","dndOptions","Component","shouldOverride","containerMeta","RTEPlugin","rtePluginInitializer","additionalData","_data","currentBranch","_additionalData","setInstallationData","installationData","onData","getInstallationData","setValidity","isValid","ERROR_MESSAGES","configPage","isValidTypeBoolean","messageTypeString","AppConfig","content_type","changedData","locale","_options","thisEntry","console","log","getField","uid","useUnsavedSchema","_internalFlags","FieldInstance","path","split","schema","find","x","data_type","multiple","blocks","block","e","fieldObject","resolvedData","Entry","initData","pulse","eventName","metadata","postRobot","getConfig","installationUID","getCurrentLocation","getAppVersion","version","orgUid","org_uid","action","headers","organization_uid","skip_api_key","app","getCurrentRegion","region","appUID","app_id","locationUID","extension_uid","installation_uid","currentUser","user","store","DashboardWidget","CustomField","SidebarWidget","RTELocation","AppConfigWidget","FullscreenAppWidget","FullPage","EntryFieldLocation","FieldModifierLocation","modal","formatAppRegion","manifest","dashboard_width","installation","field","fieldConfig","field_config","emitEvent","otherData","state","initialize","sdkType","setReady","Extension","excludedDataTypesForSetField","fieldDataObject","unResolvedData","separatedData","_resolvedData","_self","fieldObj","currentFieldObj","dataObj","setFocus","Field","getTags","tags","setTags","undefined","entryField","tagsShouldNotBeBlank","every","tag","areTagsValid","tagsShouldBeArrayOfStrings","FieldModifierLocationEntry","FieldModifierLocationField","_autoResizingEnabled","updateDimension","enableAutoResizing","disableAutoResizing","closeModal","dimension","height","_height","ceil","getBoundingClientRect","_width","dimensionBody","dimensionHeightShouldBeNumber","dimensionWidthShouldBeNumber","preventFrameClose","observer","MutationObserver","observe","body","attributes","childList","subtree","disconnect","FieldModifierLocationFrame","LOG_LEVEL","_extension","ContentstackAppSDK","createMetaData","metadataConfig","entity_uid","otherMetaData","payload","retrieveMetaData","retrieveAllMetaData","params","updateMetaData","deleteMetaData","Metadata","rootElement","getPreferredBodyElement","children","setBackgroundElement","element","Modal","getReferences","environment","Query","entryQuery","language","plural","getRteAssets","getAssetsOfSpecificTypes","assetType","asset_type","publish","fetch","unpublish","_files","files","from","_","File","Date","getUTCMilliseconds","upload_type","parentFolderUid","customUploadHandler","uploadAsset","Asset","uiConnection","Proxy","Target","thisArg","argumentsList","_query","only","transform","except","addParam","contentTypeUid","create","content_type_uid","update","includeOwner","includeContentType","includeSchema","includeReference","getLanguages","unlocalize","setWorkflowStage","contentType","entryTarget","addQuery","ContentType","_extend","query","file_size","bool","concat","$exists","Utils","lessThan","lessThanOrEqualTo","greaterThan","greaterThanOrEqualTo","notEqualTo","containedIn","notContainedIn","exists","notExists","ascending","descending","beforeUid","afterUid","skip","limit","or","and","equalTo","where","mergeDeep","includeCount","include_count","getQuery","$regex","$options","search","typeahead","findOne","singleEntry","_currentBranch","branches","branch","getAllStacks","stacks","getManagementTokens","tokens","queries","apiKey","api_key","getContentType","getContentTypes","optionParams","getEnvironment","getEnvironments","getReleases","getPublishes","getLocale","getLocales","getWorkflow","getWorkflows","getAllBranches","getCurrentBranch","Stack","newTraget","oldTarget","oldSource","newTarget","_mergeRecursive","anotherTarget","_type","val","__typeof","languageCode","environmentCode","include_owner","include_content_type","include_schema","getAll","remove","clear","Store","Region","StackLocation","OrganizationLocation","NA","EU","AZURE_NA","AZURE_EU","UNKNOWN","nodeCollection","rootElementIndex","Infinity","elementPreferenceList","nonRenderingTags","elIndex","nodeName","_resizingEnabled","enableResizing","onDashboardResize","windowObj","updateHeight","isNaN","enablePaddingTop","disablePaddingTop","EventEmitter","proto","originalGlobalValue","indexOfListener","listeners","alias","isValidListener","getListeners","evt","events","_getEvents","test","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","__webpack_module_cache__","__webpack_require__","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index c9c39c2..1305791 100755 --- a/src/extension.ts +++ b/src/extension.ts @@ -302,7 +302,7 @@ class Extension { ]); } - if (event.data.eventName === "entryChange") { + if (event.data.name === "entryChange") { emitter.emitEvent("entryChange", [ { data: event.data.data, From c084e9a2c4e0e777f570f2bd9f1084b4afd656c6 Mon Sep 17 00:00:00 2001 From: Kirtesh Suthar Date: Mon, 21 Aug 2023 15:49:47 +0530 Subject: [PATCH 4/8] feat: add new option for auto-width in hover toolbar --- dist/index.js | 2 +- dist/index.js.map | 2 +- dist/src/RTE/index.d.ts.map | 2 +- dist/src/RTE/types.d.ts | 7 +++++++ dist/src/RTE/types.d.ts.map | 2 +- src/RTE/index.tsx | 7 +++++++ src/RTE/types.tsx | 7 +++++++ 7 files changed, 25 insertions(+), 4 deletions(-) diff --git a/dist/index.js b/dist/index.js index 6beaa19..d1e960f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,3 +1,3 @@ /*! For license information please see index.js.LICENSE.txt */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ContentstackAppSDK=e():t.ContentstackAppSDK=e()}(this,(()=>{return t={957:function(t){"undefined"!=typeof self&&self,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/index.js")}({"./src/index.js":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={};function o(t){return"[object RegExp]"===Object.prototype.toString.call(t)}n.d(r,"cleanUpWindow",(function(){return Pt})),n.d(r,"Promise",(function(){return K})),n.d(r,"bridge",(function(){return St})),n.d(r,"init",(function(){return Tt})),n.d(r,"parent",(function(){return Ot})),n.d(r,"send",(function(){return pt})),n.d(r,"request",(function(){return ht})),n.d(r,"sendToParent",(function(){return yt})),n.d(r,"client",(function(){return vt})),n.d(r,"on",(function(){return gt})),n.d(r,"listen",(function(){return mt})),n.d(r,"once",(function(){return wt})),n.d(r,"listener",(function(){return bt})),n.d(r,"CONFIG",(function(){return R})),n.d(r,"CONSTANTS",(function(){return A})),n.d(r,"disable",(function(){return Et}));var i="mock:",a="file:",s="about:",u="Call was rejected by callee.\r\n";function c(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window).location.protocol===s}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t)try{if(t.parent&&t.parent!==t)return t.parent}catch(t){}}function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t&&!l(t))try{return t.opener}catch(t){}}function d(t){try{return t&&t.location&&t.location.href,!0}catch(t){}return!1}function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=t.location;if(!e)throw new Error("Can not read window location");var n=e.protocol;if(!n)throw new Error("Can not read window protocol");if(n===a)return a+"//";if(n===s){var r=l(t);return r&&d(r)?h(r):s+"//"}var o=e.host;if(!o)throw new Error("Can not read window host");return n+"//"+o}function p(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=h(t);return e&&t.mockDomain&&0===t.mockDomain.indexOf(i)?t.mockDomain:e}function y(t){try{if(t===window)return!0}catch(t){}try{var e=Object.getOwnPropertyDescriptor(t,"location");if(e&&!1===e.enumerable)return!1}catch(t){}try{if(c(t)&&d(t))return!0}catch(t){}try{if(h(t)===h(window))return!0}catch(t){}return!1}function v(t,e){if(!t||!e)return!1;var n=l(e);return n?n===t:-1!==function(t){var e=[];try{for(;t.parent!==t;)e.push(t.parent),t=t.parent}catch(t){}return e}(e).indexOf(t)}function _(t){var e=[],n=void 0;try{n=t.frames}catch(e){n=t}var r=void 0;try{r=n.length}catch(t){}if(0===r)return e;if(r){for(var o=0;o1&&void 0!==arguments[1])||arguments[1];try{if(t===window)return!1}catch(t){return!0}try{if(!t)return!0}catch(t){return!0}try{if(t.closed)return!0}catch(t){return!t||t.message!==u}if(e&&function(t){if(!y(t))return!1;try{if(t===window)return!0;if(c(t)&&d(t))return!0;if(p(window)===p(t))return!0}catch(t){}return!1}(t))try{if(t.mockclosed)return!0}catch(t){}try{if(!t.parent||!t.top)return!0}catch(t){}var n=function(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window;return f(t=t||window)||l(t)||void 0}function E(t,e){if("string"==typeof t){if("string"==typeof e)return"*"===t||e===t;if(o(e))return!1;if(Array.isArray(e))return!1}return o(t)?o(e)?t.toString()===e.toString():!Array.isArray(e)&&Boolean(e.match(t)):!!Array.isArray(t)&&(Array.isArray(e)?JSON.stringify(t)===JSON.stringify(e):!o(e)&&t.some((function(t){return E(t,e)})))}function O(t){try{if(t===window)return!0}catch(t){if(t&&t.message===u)return!0}try{if("[object Window]"===Object.prototype.toString.call(t))return!0}catch(t){if(t&&t.message===u)return!0}try{if(window.Window&&t instanceof window.Window)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.self===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.parent===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.top===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&"__unlikely_value__"===t.__cross_domain_utils_window_check__)return!1}catch(t){return!0}return!1}function P(t,e){for(var n=0;n>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var t=new WeakMap,e={};return Object.freeze(e),t.set(e,"__testvalue__"),"__testvalue__"===t.get(e)}catch(t){return!1}}())try{this.weakmap=new WeakMap}catch(t){}this.keys=[],this.values=[]}return t.prototype._cleanupClosedWindows=function(){for(var t=this.weakmap,e=this.keys,n=0;n1&&void 0!==arguments[1]?arguments[1]:1;if(e>=3)return"stringifyError stack overflow";try{if(!t)return"";if("string"==typeof t)return t;if(t instanceof Error){var n=t&&t.stack,r=t&&t.message;if(n&&r)return-1!==n.indexOf(r)?n:r+"\n"+n;if(n)return n;if(r)return r}return"function"==typeof t.toString?t.toString():Object.prototype.toString.call(t)}catch(t){return"Error while stringifying error: "+j(t,e+1)}}var M=function(t){if(!t)return t;var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}};function x(){}function C(){var t="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return t.charAt(Math.floor(Math.random()*t.length))}))}function L(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n>=100)throw new Error("Self-referential object passed, or object contained too many layers");var r=void 0;if("object"!==(void 0===t?"undefined":k(t))||null===t||Array.isArray(t)){if(!Array.isArray(t))throw new TypeError("Invalid type: "+(void 0===t?"undefined":k(t)));r=[]}else r={};return function(t,e){Array.isArray(t)?function(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},r=C(),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(f(t))}()?A.WINDOW_TYPES.POPUP:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(l(t))}()?A.WINDOW_TYPES.IFRAME:A.WINDOW_TYPES.FULLPAGE,i=p(window);return et({},e,n,{sourceDomain:i,id:e.id||r,windowType:o})}(t,e,{data:function(t,n,r){return L({obj:e.data},(function(e,r){return"function"==typeof e?Z(t,n,e,r.toString()):e instanceof Error?(o=e,{__type__:A.SERIALIZATION_TYPES.ERROR,__message__:j(o),__code__:o.code}):window.Promise&&e instanceof window.Promise?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):K.isPromise(e)?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.ZALGO_PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):I(e)?(i=e,{__type__:A.SERIALIZATION_TYPES.REGEX,__source__:i.source}):void 0;var o,i})).obj}(t,n),domain:n}),t===window&&!R.ALLOW_SAME_ORIGIN)throw new Error("Attemping to send message to self");if(w(t))throw new Error("Window is closed");var o=[],i=function(t,e,n){var r=void 0,o=void 0;try{if("{}"!==JSON.stringify({})&&(r=Object.prototype.toJSON,delete Object.prototype.toJSON),"{}"!==JSON.stringify({}))throw new Error("Can not correctly serialize JSON objects");if("[]"!==JSON.stringify([])&&(o=Array.prototype.toJSON,delete Array.prototype.toJSON),"[]"!==JSON.stringify([]))throw new Error("Can not correctly serialize JSON objects")}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}var i=JSON.stringify.call(this,t,null,2);try{r&&(Object.prototype.toJSON=r),o&&(Array.prototype.toJSON=o)}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}return i}(((r={})[A.WINDOW_PROPS.POSTROBOT]=e,r));return K.map(Object.keys(tt),(function(e){return K.try((function(){if(!R.ALLOWED_POST_MESSAGE_METHODS[e])throw new Error("Strategy disallowed: "+e);return tt[e](t,i,n)})).then((function(){return o.push(e+": success"),!0}),(function(t){return o.push(e+": "+j(t)+"\n"),!1}))})).then((function(t){var n=t.some(Boolean),r=e.type+" "+e.name+" "+(n?"success":"error")+":\n - "+o.join("\n - ")+"\n";if(!n)throw new Error(r)}))}))}H.responseListeners=H.responseListeners||{},H.requestListeners=H.requestListeners||{},H.WINDOW_WILDCARD=H.WINDOW_WILDCARD||new function(){},H.erroredResponseListeners=H.erroredResponseListeners||{};var rt;function ot(t){return H.responseListeners[t]}function it(t){delete H.responseListeners[t]}function at(t){return Boolean(H.erroredResponseListeners[t])}function st(t){var e=t.name,n=t.win,r=t.domain;if(n===A.WILDCARD&&(n=null),r===A.WILDCARD&&(r=null),!e)throw new Error("Name required to get request listener");var o=H.requestListeners[e];if(o)for(var i=0,a=[n,H.WINDOW_WILDCARD],s=null==a?0:a.length;i0&&void 0!==arguments[0]?arguments[0]:window;try{if(t.top)return t.top}catch(t){}if(l(t)===t)return t;try{if(v(window,t)&&window.top)return window.top}catch(t){}try{if(v(t,window)&&window.top)return window.top}catch(t){}for(var e=0,n=function t(e){for(var n=[],r=0,o=_(e),i=null==o?0:o.length;r1&&void 0!==arguments[1]?arguments[1]:5e3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Window",r=H.readyPromises.get(t);return r||(r=new K,H.readyPromises.set(t,r),-1!==e&&setTimeout((function(){return r.reject(new Error(n+" did not load after "+e+"ms"))}),e),r)}(i,t.timeout||R.CHILD_WINDOW_TIMEOUT)})).then((function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)&&!t)return X(i)})).then((function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)){if(!E(r,n))throw new Error("Remote window domain "+n+" does not match regex: "+r.toString());r=n}if("string"!=typeof r&&!Array.isArray(r))throw new TypeError("Expected domain to be a string or array");var o=r;return new K((function(n,r){var l=void 0;if(t.fireAndForget||function(t,e){H.responseListeners[t]=e}(a,l={name:e,window:i,domain:o,respond:function(t,e){t||(s=!0,u.splice(u.indexOf(c,1))),t?r(t):n(e)}}),nt(i,{type:A.POST_MESSAGE_TYPE.REQUEST,hash:a,name:e,data:t.data,fireAndForget:t.fireAndForget},o).catch(r),t.fireAndForget)return n();var f=R.ACK_TIMEOUT,d=t.timeout||R.RES_TIMEOUT,h=100;setTimeout((function n(){if(!s){if(w(i))return l.ack?r(new Error("Window closed for "+e+" before response")):r(new Error("Window closed for "+e+" before ack"));if(f=Math.max(f-h,0),-1!==d&&(d=Math.max(d-h,0)),l.ack){if(-1===d)return;h=Math.min(d,2e3)}else{if(0===f)return r(new Error("No ack for postMessage "+e+" in "+p()+" in "+R.ACK_TIMEOUT+"ms"));if(0===d)return r(new Error("No response for postMessage "+e+" in "+p()+" in "+(t.timeout||R.RES_TIMEOUT)+"ms"))}setTimeout(n,h)}}),h)}))}));return c.catch((function(){!function(t){H.erroredResponseListeners[t]=!0}(a),it(a)})),u.push(c),c}))}function pt(t,e,n,r){return(r=r||{}).window=t,r.name=e,r.data=n,ht(r)}function yt(t,e,n){var r=b();return r?pt(r,t,e,n):new K((function(t,e){return e(new Error("Window does not have a parent"))}))}function vt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!t.window)throw new Error("Expected options.window");var e=t.window;return{send:function(n,r){return pt(e,n,r,t)}}}H.receivedMessages=H.receivedMessages||[],H.receiveMessage=ft,H.requestPromises=H.requestPromises||new T,H.send=pt;var _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function mt(t){if(!t.name)throw new Error("Expected options.name");if(!t.handler)throw new Error("Expected options.handler");var e,n=t.name,r=t.window,o=t.domain,i={handler:t.handler,handleError:t.errorHandler||function(t){throw t},window:r,domain:o||A.WILDCARD,name:n},a=function t(e,n){var r=e.name,o=e.win,i=e.domain;if(!r||"string"!=typeof r)throw new Error("Name required to add request listener");if(Array.isArray(o)){for(var a=[],s=0,u=o,c=null==u?0:u.length;s1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"function"==typeof e&&(n=e,e={}),e=e||{},n=n||e.handler;var r=e.errorHandler,o=new K((function(o,i){(e=e||{}).name=t,e.once=!0,e.handler=function(t){if(o(t),n)return n(t)},e.errorHandler=function(t){if(i(t),r)return r(t)}})),i=mt(e);return o.cancel=i.cancel,o}function bt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{on:function(e,n){return gt(e,t,n)}}}function Et(){delete window[A.WINDOW_PROPS.POSTROBOT],window.removeEventListener("message",dt)}H.on=gt;var Ot=b();function Pt(t){var e=H.requestPromises.get(t);if(e)for(var n=0,r=null==e?0:e.length;n{t.exports=n(957),t.exports.default=t.exports},979:function(t,e,n){"use strict";var r=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=["file","reference","blocks","group","global_field"],r=function(){function t(t,e,n){this.uid=t.data.uid,this.data_type=t.data.schema.data_type,this.schema=t.data.schema,this._emitter=n;var r,o,i,a,s=(r=this,i=o=t.data.value,a=o,"file"===r.data_type&&(o?(i=o,a=!0===r.schema.multiple?o.map((function(t){return t.uid})):o.uid):!0===r.schema.multiple&&(i=[],a=[])),{resolvedData:i,unResolvedData:a});this._data=s.unResolvedData,this._resolvedData=s.resolvedData,this._connection=e,this._self=t.data.self||!1;var u=this;n.on("updateFields",(function(t){var e=u.uid.split("."),n=t.data;e.forEach((function(t){n&&(n=n[t])})),u._data!==n&&(u._data=n)}))}return t.prototype.setData=function(t){var e=this,r=this,o={data:t,uid:r.uid,self:r._self};return r._self||-1===n.indexOf(r.data_type)&&r.data_type?this._connection.sendToParent("setData",o).then((function(){return e._data=t,Promise.resolve(r)})).catch((function(t){return Promise.reject(t)})):Promise.reject(new Error("Cannot call set data for current field type"))},t.prototype.getData=function(t){var e=(void 0===t?{}:t).resolved;return void 0!==e&&e?this._resolvedData:this._data},t.prototype.setFocus=function(){return this._connection.sendToParent("focus")},t.prototype.onChange=function(t){var e=this;if(!t||"function"!=typeof t)throw Error("Callback must be a function");this._emitter.on("extensionFieldChange",(function(n){e._data=n.data,e._resolvedData=n.data,t(n.data)}))},t}();e.default=r},632:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),a=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&i(e,t,n);return a(e,t),e},u=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},c=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(974),o=function(){function t(){var t;if(!Object.prototype.hasOwnProperty.call(window,"iframeRef")){var e=(0,r.getPreferredBodyElement)(null===(t=null===document||void 0===document?void 0:document.body)||void 0===t?void 0:t.children);window.iframeRef=e}}return t.prototype.setBackgroundElement=function(t){window.iframeRef=t},t}();e.default=o},160:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},a=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getReferences=e.includeReference=e.includeSchema=e.includeContentType=e.includeOwner=e.environment=e.language=e.addQuery=e.addParam=e._type=e.mergeDeep=e.merge=e.transform=void 0,e.transform=function(t){return function(){switch(arguments.length){case 1:if(Array.isArray(arguments[0])||"string"==typeof arguments[0])return e=(e=this._query[t+"[BASE]"]||[]).concat(arguments[0]),this._query[t+"[BASE]"]=e,this;throw Error("Kindly provide valid parameters");case 2:var e;if("string"==typeof arguments[0]&&(Array.isArray(arguments[1])||"string"==typeof arguments[1]))return e=(e=this._query[t+"["+arguments[0]+"]"]||[]).concat(arguments[1]),this._query[t+"["+arguments[0]+"]"]=e,this;throw Error("Kindly provide valid parameters");default:throw Error("Kindly provide valid parameters")}}},e.merge=function(t,e){var n=t;return t&&e&&Object.keys(e).forEach((function(t){n[t]=e[t]})),n},e.mergeDeep=function(t,e){var n=t,r=this,o=function(t,e){var n=t;Object.keys(e).forEach((function(t){"object"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?o(n[t],e[t]):"array"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?n[t]=n[t].concat(e[t]):n[t]=e[t]}))};return o(n,e),n},e._type=function(t){var e=typeof t;return"object"===e&&Array.isArray(t)&&(e="array"),e},e.addParam=function(t,e){if(t&&"string"==typeof t&&e&&"string"==typeof e)return this._query[t]=e,this;throw Error("Kindly provide valid parameters.")},e.addQuery=function(t,e){if(t&&e&&"string"==typeof t)return this._query[t]=e,this;throw Error("First argument should be a String.")},e.language=function(t){if(t&&"string"==typeof t)return this._query.locale=t,this;throw Error("Argument should be a String.")},e.environment=function(t){if(t&&"string"==typeof t)return this._query.environment=t,this;throw Error("Argument should be a String.")},e.includeOwner=function(){return this._query.include_owner=!0,this},e.includeContentType=function(){return this._query.include_content_type=!0,this},e.includeSchema=function(){return this._query.include_schema=!0,this},e.includeReference=function(t){if(Array.isArray(t))for(var e=0;e{"use strict";function n(t){return Promise.reject(t)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t){this._connection=t}return t.prototype.get=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"get",key:t}).then((function(t){return Promise.resolve(t.data)})).catch(n)},t.prototype.getAll=function(){return this._connection.sendToParent("store",{action:"getAll"}).then((function(t){var e=t.data,n=void 0===e?{}:e;return Promise.resolve(n)})).catch(n)},t.prototype.set=function(t,e){if(!t||!e||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"set",key:t,value:e}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.remove=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"remove",key:t}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.clear=function(){return this._connection.sendToParent("store",{action:"clear"}).then((function(){return Promise.resolve(!0)})).catch(n)},t}();e.default=r},699:(t,e)=>{"use strict";var n,r;Object.defineProperty(e,"__esModule",{value:!0}),e.Region=e.OrganizationLocation=e.StackLocation=void 0,(r=e.StackLocation||(e.StackLocation={})).STACK_CONFIG="cs.cm.stack.config",r.DASHBOARD="cs.cm.stack.dashboard",r.SIDEBAR="cs.cm.stack.sidebar",r.CUSTOM_FIELD="cs.cm.stack.custom_field",r.RTE="cs.cm.stack.rte",(e.OrganizationLocation||(e.OrganizationLocation={})).ORG_CONFIG="cs.org.config",(n=e.Region||(e.Region={})).UNKNOWN="UNKNOWN",n.NA="NA",n.EU="EU",n.AZURE_NA="AZURE_NA",n.AZURE_EU="AZURE_EU"},194:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ERROR_MESSAGES=void 0,e.ERROR_MESSAGES=Object.freeze({configPage:{setValidity:{isValidTypeBoolean:"isValid should be a boolean",messageTypeString:"message should be a string"}},entryField:{entry:{tagsShouldNotBeBlank:"Tags cannot be blank",tagsShouldBeArrayOfStrings:"Tags must be an array of strings"},frame:{dimensionHeightShouldBeNumber:"Dimension height must be a number",dimensionWidthShouldBeNumber:"Dimension width must be a number"}}}),e.default=function(t){return"Contentstack App SDK: "+t}},974:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getPreferredBodyElement=e.formatAppRegion=e.onError=e.onData=void 0;var r=n(699);e.onData=function(t){return"string"==typeof t.data?Promise.reject(t.data):Promise.resolve(t.data)},e.onError=function(t){return Promise.reject(t)},e.formatAppRegion=function(t){switch(t){case"NA":return r.Region.NA;case"EU":return r.Region.EU;case"AZURE_NA":return r.Region.AZURE_NA;case"AZURE_EU":return r.Region.AZURE_EU;default:return r.Region.UNKNOWN}},e.getPreferredBodyElement=function(t){var e,n=1/0,r=["HEADER","NAV","MAIN","SECTION","ARTICLE","ASIDE","FOOTER","DIV"],o=["SCRIPT","NOSCRIPT","STYLE","TEMPLATE"];return Array.from(t).forEach((function(t){var o=r.indexOf(t.nodeName);o>=0&&o{"use strict";t.exports=JSON.parse('{"name":"@contentstack/app-sdk","version":"1.6.0","types":"dist/src/index.d.ts","description":"This SDK helps connect to the development server of the Contentstack and sync the data.","main":"dist/index.js","repository":"https://github.com/contentstack/app-sdk","scripts":{"prepublish":"npm run build","build":"webpack","test":"jest","test:watch":"jest --watchAll","test:coverage":"jest --coverage --coverageDirectory=\\"coverage\\"","dev":"webpack --watch --mode development","lint":"eslint . --ext .ts --max-warnings=0","docs":"typedoc --out doc --entryPointStrategy expand ./src","prettier":"npx prettier src --check","prettier:fix":"npx prettier src --write","lint:fix":"eslint --fix","prepare":"npm run build && husky install","format":"npm run prettier:fix && npm run lint:fix"},"keywords":[],"author":{"name":"Contentstack","url":"https://www.contentstack.com/"},"maintainers":[{"name":"Deepak Kharah","email":"deepak.kharah@contentstack.com"}],"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.3.1","@testing-library/jest-dom":"^5.16.5","@types/chai":"^4.2.22","@types/jest":"^27.0.2","@types/post-robot":"^10.0.3","@types/react":"^17.0.18","@typescript-eslint/eslint-plugin":"^5.10.1","@typescript-eslint/parser":"^5.10.1","babel-loader":"^9.1.0","chai":"^4.3.4","css-loader":"^5.2.2","eslint":"^8.7.0","eslint-plugin-only-warn":"^1.1.0","husky":"^8.0.0","jest":"^27.3.1","lint-staged":"^13.1.0","react":"^17.0.2","slate":"^0.72.3","ts-jest":"^27.0.7","ts-loader":"^8.1.0","ts-node":"^10.3.0","typedoc":"^0.22.17","typescript":"^4.4.4","webpack":"^5.65.0","webpack-cli":"^4.9.1","webpack-dev-server":"^4.7.3"},"dependencies":{"loader-utils":"^3.2.1","post-robot":"^8.0.31","wolfy87-eventemitter":"^5.2.9"},"files":["dist"],"lint-staged":{"src/**/*.{ts,css,md}":["npm run prettier:fix ","npm run lint:fix"]}}')}},e={},function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r].call(i.exports,i,i.exports,n),i.exports}(607);var t,e})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ContentstackAppSDK=e():t.ContentstackAppSDK=e()}(this,(()=>{return t={957:function(t){"undefined"!=typeof self&&self,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/index.js")}({"./src/index.js":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={};function o(t){return"[object RegExp]"===Object.prototype.toString.call(t)}n.d(r,"cleanUpWindow",(function(){return Pt})),n.d(r,"Promise",(function(){return K})),n.d(r,"bridge",(function(){return St})),n.d(r,"init",(function(){return Tt})),n.d(r,"parent",(function(){return Ot})),n.d(r,"send",(function(){return pt})),n.d(r,"request",(function(){return ht})),n.d(r,"sendToParent",(function(){return yt})),n.d(r,"client",(function(){return vt})),n.d(r,"on",(function(){return gt})),n.d(r,"listen",(function(){return mt})),n.d(r,"once",(function(){return wt})),n.d(r,"listener",(function(){return bt})),n.d(r,"CONFIG",(function(){return R})),n.d(r,"CONSTANTS",(function(){return A})),n.d(r,"disable",(function(){return Et}));var i="mock:",a="file:",s="about:",u="Call was rejected by callee.\r\n";function c(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window).location.protocol===s}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t)try{if(t.parent&&t.parent!==t)return t.parent}catch(t){}}function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t&&!l(t))try{return t.opener}catch(t){}}function d(t){try{return t&&t.location&&t.location.href,!0}catch(t){}return!1}function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=t.location;if(!e)throw new Error("Can not read window location");var n=e.protocol;if(!n)throw new Error("Can not read window protocol");if(n===a)return a+"//";if(n===s){var r=l(t);return r&&d(r)?h(r):s+"//"}var o=e.host;if(!o)throw new Error("Can not read window host");return n+"//"+o}function p(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=h(t);return e&&t.mockDomain&&0===t.mockDomain.indexOf(i)?t.mockDomain:e}function y(t){try{if(t===window)return!0}catch(t){}try{var e=Object.getOwnPropertyDescriptor(t,"location");if(e&&!1===e.enumerable)return!1}catch(t){}try{if(c(t)&&d(t))return!0}catch(t){}try{if(h(t)===h(window))return!0}catch(t){}return!1}function v(t,e){if(!t||!e)return!1;var n=l(e);return n?n===t:-1!==function(t){var e=[];try{for(;t.parent!==t;)e.push(t.parent),t=t.parent}catch(t){}return e}(e).indexOf(t)}function _(t){var e=[],n=void 0;try{n=t.frames}catch(e){n=t}var r=void 0;try{r=n.length}catch(t){}if(0===r)return e;if(r){for(var o=0;o1&&void 0!==arguments[1])||arguments[1];try{if(t===window)return!1}catch(t){return!0}try{if(!t)return!0}catch(t){return!0}try{if(t.closed)return!0}catch(t){return!t||t.message!==u}if(e&&function(t){if(!y(t))return!1;try{if(t===window)return!0;if(c(t)&&d(t))return!0;if(p(window)===p(t))return!0}catch(t){}return!1}(t))try{if(t.mockclosed)return!0}catch(t){}try{if(!t.parent||!t.top)return!0}catch(t){}var n=function(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:window;return f(t=t||window)||l(t)||void 0}function E(t,e){if("string"==typeof t){if("string"==typeof e)return"*"===t||e===t;if(o(e))return!1;if(Array.isArray(e))return!1}return o(t)?o(e)?t.toString()===e.toString():!Array.isArray(e)&&Boolean(e.match(t)):!!Array.isArray(t)&&(Array.isArray(e)?JSON.stringify(t)===JSON.stringify(e):!o(e)&&t.some((function(t){return E(t,e)})))}function O(t){try{if(t===window)return!0}catch(t){if(t&&t.message===u)return!0}try{if("[object Window]"===Object.prototype.toString.call(t))return!0}catch(t){if(t&&t.message===u)return!0}try{if(window.Window&&t instanceof window.Window)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.self===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.parent===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&t.top===t)return!0}catch(t){if(t&&t.message===u)return!0}try{if(t&&"__unlikely_value__"===t.__cross_domain_utils_window_check__)return!1}catch(t){return!0}return!1}function P(t,e){for(var n=0;n>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var t=new WeakMap,e={};return Object.freeze(e),t.set(e,"__testvalue__"),"__testvalue__"===t.get(e)}catch(t){return!1}}())try{this.weakmap=new WeakMap}catch(t){}this.keys=[],this.values=[]}return t.prototype._cleanupClosedWindows=function(){for(var t=this.weakmap,e=this.keys,n=0;n1&&void 0!==arguments[1]?arguments[1]:1;if(e>=3)return"stringifyError stack overflow";try{if(!t)return"";if("string"==typeof t)return t;if(t instanceof Error){var n=t&&t.stack,r=t&&t.message;if(n&&r)return-1!==n.indexOf(r)?n:r+"\n"+n;if(n)return n;if(r)return r}return"function"==typeof t.toString?t.toString():Object.prototype.toString.call(t)}catch(t){return"Error while stringifying error: "+j(t,e+1)}}var M=function(t){if(!t)return t;var e=!1;return function(){if(!e)return e=!0,t.apply(this,arguments)}};function x(){}function C(){var t="0123456789abcdef";return"xxxxxxxxxx".replace(/./g,(function(){return t.charAt(Math.floor(Math.random()*t.length))}))}function L(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n>=100)throw new Error("Self-referential object passed, or object contained too many layers");var r=void 0;if("object"!==(void 0===t?"undefined":k(t))||null===t||Array.isArray(t)){if(!Array.isArray(t))throw new TypeError("Invalid type: "+(void 0===t?"undefined":k(t)));r=[]}else r={};return function(t,e){Array.isArray(t)?function(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:{},r=C(),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(f(t))}()?A.WINDOW_TYPES.POPUP:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return Boolean(l(t))}()?A.WINDOW_TYPES.IFRAME:A.WINDOW_TYPES.FULLPAGE,i=p(window);return et({},e,n,{sourceDomain:i,id:e.id||r,windowType:o})}(t,e,{data:function(t,n,r){return L({obj:e.data},(function(e,r){return"function"==typeof e?Z(t,n,e,r.toString()):e instanceof Error?(o=e,{__type__:A.SERIALIZATION_TYPES.ERROR,__message__:j(o),__code__:o.code}):window.Promise&&e instanceof window.Promise?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):K.isPromise(e)?function(t,e,n,r){return{__type__:A.SERIALIZATION_TYPES.ZALGO_PROMISE,__then__:Z(t,e,(function(t,e){return n.then(t,e)}),r+".then")}}(t,n,e,r.toString()):I(e)?(i=e,{__type__:A.SERIALIZATION_TYPES.REGEX,__source__:i.source}):void 0;var o,i})).obj}(t,n),domain:n}),t===window&&!R.ALLOW_SAME_ORIGIN)throw new Error("Attemping to send message to self");if(w(t))throw new Error("Window is closed");var o=[],i=function(t,e,n){var r=void 0,o=void 0;try{if("{}"!==JSON.stringify({})&&(r=Object.prototype.toJSON,delete Object.prototype.toJSON),"{}"!==JSON.stringify({}))throw new Error("Can not correctly serialize JSON objects");if("[]"!==JSON.stringify([])&&(o=Array.prototype.toJSON,delete Array.prototype.toJSON),"[]"!==JSON.stringify([]))throw new Error("Can not correctly serialize JSON objects")}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}var i=JSON.stringify.call(this,t,null,2);try{r&&(Object.prototype.toJSON=r),o&&(Array.prototype.toJSON=o)}catch(t){throw new Error("Can not repair JSON.stringify: "+t.message)}return i}(((r={})[A.WINDOW_PROPS.POSTROBOT]=e,r));return K.map(Object.keys(tt),(function(e){return K.try((function(){if(!R.ALLOWED_POST_MESSAGE_METHODS[e])throw new Error("Strategy disallowed: "+e);return tt[e](t,i,n)})).then((function(){return o.push(e+": success"),!0}),(function(t){return o.push(e+": "+j(t)+"\n"),!1}))})).then((function(t){var n=t.some(Boolean),r=e.type+" "+e.name+" "+(n?"success":"error")+":\n - "+o.join("\n - ")+"\n";if(!n)throw new Error(r)}))}))}H.responseListeners=H.responseListeners||{},H.requestListeners=H.requestListeners||{},H.WINDOW_WILDCARD=H.WINDOW_WILDCARD||new function(){},H.erroredResponseListeners=H.erroredResponseListeners||{};var rt;function ot(t){return H.responseListeners[t]}function it(t){delete H.responseListeners[t]}function at(t){return Boolean(H.erroredResponseListeners[t])}function st(t){var e=t.name,n=t.win,r=t.domain;if(n===A.WILDCARD&&(n=null),r===A.WILDCARD&&(r=null),!e)throw new Error("Name required to get request listener");var o=H.requestListeners[e];if(o)for(var i=0,a=[n,H.WINDOW_WILDCARD],s=null==a?0:a.length;i0&&void 0!==arguments[0]?arguments[0]:window;try{if(t.top)return t.top}catch(t){}if(l(t)===t)return t;try{if(v(window,t)&&window.top)return window.top}catch(t){}try{if(v(t,window)&&window.top)return window.top}catch(t){}for(var e=0,n=function t(e){for(var n=[],r=0,o=_(e),i=null==o?0:o.length;r1&&void 0!==arguments[1]?arguments[1]:5e3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Window",r=H.readyPromises.get(t);return r||(r=new K,H.readyPromises.set(t,r),-1!==e&&setTimeout((function(){return r.reject(new Error(n+" did not load after "+e+"ms"))}),e),r)}(i,t.timeout||R.CHILD_WINDOW_TIMEOUT)})).then((function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)&&!t)return X(i)})).then((function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).origin;if(I(r)){if(!E(r,n))throw new Error("Remote window domain "+n+" does not match regex: "+r.toString());r=n}if("string"!=typeof r&&!Array.isArray(r))throw new TypeError("Expected domain to be a string or array");var o=r;return new K((function(n,r){var l=void 0;if(t.fireAndForget||function(t,e){H.responseListeners[t]=e}(a,l={name:e,window:i,domain:o,respond:function(t,e){t||(s=!0,u.splice(u.indexOf(c,1))),t?r(t):n(e)}}),nt(i,{type:A.POST_MESSAGE_TYPE.REQUEST,hash:a,name:e,data:t.data,fireAndForget:t.fireAndForget},o).catch(r),t.fireAndForget)return n();var f=R.ACK_TIMEOUT,d=t.timeout||R.RES_TIMEOUT,h=100;setTimeout((function n(){if(!s){if(w(i))return l.ack?r(new Error("Window closed for "+e+" before response")):r(new Error("Window closed for "+e+" before ack"));if(f=Math.max(f-h,0),-1!==d&&(d=Math.max(d-h,0)),l.ack){if(-1===d)return;h=Math.min(d,2e3)}else{if(0===f)return r(new Error("No ack for postMessage "+e+" in "+p()+" in "+R.ACK_TIMEOUT+"ms"));if(0===d)return r(new Error("No response for postMessage "+e+" in "+p()+" in "+(t.timeout||R.RES_TIMEOUT)+"ms"))}setTimeout(n,h)}}),h)}))}));return c.catch((function(){!function(t){H.erroredResponseListeners[t]=!0}(a),it(a)})),u.push(c),c}))}function pt(t,e,n,r){return(r=r||{}).window=t,r.name=e,r.data=n,ht(r)}function yt(t,e,n){var r=b();return r?pt(r,t,e,n):new K((function(t,e){return e(new Error("Window does not have a parent"))}))}function vt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!t.window)throw new Error("Expected options.window");var e=t.window;return{send:function(n,r){return pt(e,n,r,t)}}}H.receivedMessages=H.receivedMessages||[],H.receiveMessage=ft,H.requestPromises=H.requestPromises||new T,H.send=pt;var _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function mt(t){if(!t.name)throw new Error("Expected options.name");if(!t.handler)throw new Error("Expected options.handler");var e,n=t.name,r=t.window,o=t.domain,i={handler:t.handler,handleError:t.errorHandler||function(t){throw t},window:r,domain:o||A.WILDCARD,name:n},a=function t(e,n){var r=e.name,o=e.win,i=e.domain;if(!r||"string"!=typeof r)throw new Error("Name required to add request listener");if(Array.isArray(o)){for(var a=[],s=0,u=o,c=null==u?0:u.length;s1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];"function"==typeof e&&(n=e,e={}),e=e||{},n=n||e.handler;var r=e.errorHandler,o=new K((function(o,i){(e=e||{}).name=t,e.once=!0,e.handler=function(t){if(o(t),n)return n(t)},e.errorHandler=function(t){if(i(t),r)return r(t)}})),i=mt(e);return o.cancel=i.cancel,o}function bt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{on:function(e,n){return gt(e,t,n)}}}function Et(){delete window[A.WINDOW_PROPS.POSTROBOT],window.removeEventListener("message",dt)}H.on=gt;var Ot=b();function Pt(t){var e=H.requestPromises.get(t);if(e)for(var n=0,r=null==e?0:e.length;n{t.exports=n(957),t.exports.default=t.exports},979:function(t,e,n){"use strict";var r=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=["file","reference","blocks","group","global_field"],r=function(){function t(t,e,n){this.uid=t.data.uid,this.data_type=t.data.schema.data_type,this.schema=t.data.schema,this._emitter=n;var r,o,i,a,s=(r=this,i=o=t.data.value,a=o,"file"===r.data_type&&(o?(i=o,a=!0===r.schema.multiple?o.map((function(t){return t.uid})):o.uid):!0===r.schema.multiple&&(i=[],a=[])),{resolvedData:i,unResolvedData:a});this._data=s.unResolvedData,this._resolvedData=s.resolvedData,this._connection=e,this._self=t.data.self||!1;var u=this;n.on("updateFields",(function(t){var e=u.uid.split("."),n=t.data;e.forEach((function(t){n&&(n=n[t])})),u._data!==n&&(u._data=n)}))}return t.prototype.setData=function(t){var e=this,r=this,o={data:t,uid:r.uid,self:r._self};return r._self||-1===n.indexOf(r.data_type)&&r.data_type?this._connection.sendToParent("setData",o).then((function(){return e._data=t,Promise.resolve(r)})).catch((function(t){return Promise.reject(t)})):Promise.reject(new Error("Cannot call set data for current field type"))},t.prototype.getData=function(t){var e=(void 0===t?{}:t).resolved;return void 0!==e&&e?this._resolvedData:this._data},t.prototype.setFocus=function(){return this._connection.sendToParent("focus")},t.prototype.onChange=function(t){var e=this;if(!t||"function"!=typeof t)throw Error("Callback must be a function");this._emitter.on("extensionFieldChange",(function(n){e._data=n.data,e._resolvedData=n.data,t(n.data)}))},t}();e.default=r},632:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),a=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&i(e,t,n);return a(e,t),e},u=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},c=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(974),o=function(){function t(){var t;if(!Object.prototype.hasOwnProperty.call(window,"iframeRef")){var e=(0,r.getPreferredBodyElement)(null===(t=null===document||void 0===document?void 0:document.body)||void 0===t?void 0:t.children);window.iframeRef=e}}return t.prototype.setBackgroundElement=function(t){window.iframeRef=t},t}();e.default=o},160:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},a=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getReferences=e.includeReference=e.includeSchema=e.includeContentType=e.includeOwner=e.environment=e.language=e.addQuery=e.addParam=e._type=e.mergeDeep=e.merge=e.transform=void 0,e.transform=function(t){return function(){switch(arguments.length){case 1:if(Array.isArray(arguments[0])||"string"==typeof arguments[0])return e=(e=this._query[t+"[BASE]"]||[]).concat(arguments[0]),this._query[t+"[BASE]"]=e,this;throw Error("Kindly provide valid parameters");case 2:var e;if("string"==typeof arguments[0]&&(Array.isArray(arguments[1])||"string"==typeof arguments[1]))return e=(e=this._query[t+"["+arguments[0]+"]"]||[]).concat(arguments[1]),this._query[t+"["+arguments[0]+"]"]=e,this;throw Error("Kindly provide valid parameters");default:throw Error("Kindly provide valid parameters")}}},e.merge=function(t,e){var n=t;return t&&e&&Object.keys(e).forEach((function(t){n[t]=e[t]})),n},e.mergeDeep=function(t,e){var n=t,r=this,o=function(t,e){var n=t;Object.keys(e).forEach((function(t){"object"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?o(n[t],e[t]):"array"===r._type(e[t])&&r._type(n[t])===r._type(e[t])?n[t]=n[t].concat(e[t]):n[t]=e[t]}))};return o(n,e),n},e._type=function(t){var e=typeof t;return"object"===e&&Array.isArray(t)&&(e="array"),e},e.addParam=function(t,e){if(t&&"string"==typeof t&&e&&"string"==typeof e)return this._query[t]=e,this;throw Error("Kindly provide valid parameters.")},e.addQuery=function(t,e){if(t&&e&&"string"==typeof t)return this._query[t]=e,this;throw Error("First argument should be a String.")},e.language=function(t){if(t&&"string"==typeof t)return this._query.locale=t,this;throw Error("Argument should be a String.")},e.environment=function(t){if(t&&"string"==typeof t)return this._query.environment=t,this;throw Error("Argument should be a String.")},e.includeOwner=function(){return this._query.include_owner=!0,this},e.includeContentType=function(){return this._query.include_content_type=!0,this},e.includeSchema=function(){return this._query.include_schema=!0,this},e.includeReference=function(t){if(Array.isArray(t))for(var e=0;e{"use strict";function n(t){return Promise.reject(t)}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t){this._connection=t}return t.prototype.get=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"get",key:t}).then((function(t){return Promise.resolve(t.data)})).catch(n)},t.prototype.getAll=function(){return this._connection.sendToParent("store",{action:"getAll"}).then((function(t){var e=t.data,n=void 0===e?{}:e;return Promise.resolve(n)})).catch(n)},t.prototype.set=function(t,e){if(!t||!e||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"set",key:t,value:e}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.remove=function(t){if(!t||"string"!=typeof t)throw new Error("Kindly provide valid parameters");return this._connection.sendToParent("store",{action:"remove",key:t}).then((function(){return Promise.resolve(!0)})).catch(n)},t.prototype.clear=function(){return this._connection.sendToParent("store",{action:"clear"}).then((function(){return Promise.resolve(!0)})).catch(n)},t}();e.default=r},699:(t,e)=>{"use strict";var n,r;Object.defineProperty(e,"__esModule",{value:!0}),e.Region=e.OrganizationLocation=e.StackLocation=void 0,(r=e.StackLocation||(e.StackLocation={})).STACK_CONFIG="cs.cm.stack.config",r.DASHBOARD="cs.cm.stack.dashboard",r.SIDEBAR="cs.cm.stack.sidebar",r.CUSTOM_FIELD="cs.cm.stack.custom_field",r.RTE="cs.cm.stack.rte",(e.OrganizationLocation||(e.OrganizationLocation={})).ORG_CONFIG="cs.org.config",(n=e.Region||(e.Region={})).UNKNOWN="UNKNOWN",n.NA="NA",n.EU="EU",n.AZURE_NA="AZURE_NA",n.AZURE_EU="AZURE_EU"},194:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ERROR_MESSAGES=void 0,e.ERROR_MESSAGES=Object.freeze({configPage:{setValidity:{isValidTypeBoolean:"isValid should be a boolean",messageTypeString:"message should be a string"}},entryField:{entry:{tagsShouldNotBeBlank:"Tags cannot be blank",tagsShouldBeArrayOfStrings:"Tags must be an array of strings"},frame:{dimensionHeightShouldBeNumber:"Dimension height must be a number",dimensionWidthShouldBeNumber:"Dimension width must be a number"}}}),e.default=function(t){return"Contentstack App SDK: "+t}},974:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getPreferredBodyElement=e.formatAppRegion=e.onError=e.onData=void 0;var r=n(699);e.onData=function(t){return"string"==typeof t.data?Promise.reject(t.data):Promise.resolve(t.data)},e.onError=function(t){return Promise.reject(t)},e.formatAppRegion=function(t){switch(t){case"NA":return r.Region.NA;case"EU":return r.Region.EU;case"AZURE_NA":return r.Region.AZURE_NA;case"AZURE_EU":return r.Region.AZURE_EU;default:return r.Region.UNKNOWN}},e.getPreferredBodyElement=function(t){var e,n=1/0,r=["HEADER","NAV","MAIN","SECTION","ARTICLE","ASIDE","FOOTER","DIV"],o=["SCRIPT","NOSCRIPT","STYLE","TEMPLATE"];return Array.from(t).forEach((function(t){var o=r.indexOf(t.nodeName);o>=0&&o{"use strict";t.exports=JSON.parse('{"name":"@contentstack/app-sdk","version":"1.6.0","types":"dist/src/index.d.ts","description":"This SDK helps connect to the development server of the Contentstack and sync the data.","main":"dist/index.js","repository":"https://github.com/contentstack/app-sdk","scripts":{"prepublish":"npm run build","build":"webpack","test":"jest","test:watch":"jest --watchAll","test:coverage":"jest --coverage --coverageDirectory=\\"coverage\\"","dev":"webpack --watch --mode development","lint":"eslint . --ext .ts --max-warnings=0","docs":"typedoc --out doc --entryPointStrategy expand ./src","prettier":"npx prettier src --check","prettier:fix":"npx prettier src --write","lint:fix":"eslint --fix","prepare":"npm run build && husky install","format":"npm run prettier:fix && npm run lint:fix"},"keywords":[],"author":{"name":"Contentstack","url":"https://www.contentstack.com/"},"maintainers":[{"name":"Deepak Kharah","email":"deepak.kharah@contentstack.com"}],"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.3.1","@testing-library/jest-dom":"^5.16.5","@types/chai":"^4.2.22","@types/jest":"^27.0.2","@types/post-robot":"^10.0.3","@types/react":"^17.0.18","@typescript-eslint/eslint-plugin":"^5.10.1","@typescript-eslint/parser":"^5.10.1","babel-loader":"^9.1.0","chai":"^4.3.4","css-loader":"^5.2.2","eslint":"^8.7.0","eslint-plugin-only-warn":"^1.1.0","husky":"^8.0.0","jest":"^27.3.1","lint-staged":"^13.1.0","react":"^17.0.2","slate":"^0.72.3","ts-jest":"^27.0.7","ts-loader":"^8.1.0","ts-node":"^10.3.0","typedoc":"^0.22.17","typescript":"^4.4.4","webpack":"^5.65.0","webpack-cli":"^4.9.1","webpack-dev-server":"^4.7.3"},"dependencies":{"loader-utils":"^3.2.1","post-robot":"^8.0.31","wolfy87-eventemitter":"^5.2.9"},"files":["dist"],"lint-staged":{"src/**/*.{ts,css,md}":["npm run prettier:fix ","npm run lint:fix"]}}')}},e={},function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r].call(i.exports,i,i.exports,n),i.exports}(607);var t,e})); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 9cb5edb..3e1c331 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":";CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAA4B,mBAAID,IAEhCD,EAAyB,mBAAIC,GAC9B,CATD,CASGK,MAAM,KACT,0BCRE,oBAAsBC,MAAOA,KAD+BJ,EAAOD,QAE1D,SAASM,GACZ,IAAIC,EAAmB,CAAC,EACxB,SAAS,EAAoBC,GACzB,GAAID,EAAiBC,GAAW,OAAOD,EAAiBC,GAAUR,QAClE,IAAIC,EAASM,EAAiBC,GAAY,CACtCC,EAAGD,EACHE,GAAG,EACHV,QAAS,CAAC,GAId,OAFAM,EAAQE,GAAUG,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAC/DC,EAAOS,GAAI,EACJT,EAAOD,OAClB,CAuBA,OAtBA,EAAoBY,EAAIN,EACxB,EAAoBO,EAAIN,EACxB,EAAoBO,EAAI,SAASd,EAASe,EAAMC,GAC5C,EAAoBC,EAAEjB,EAASe,IAASG,OAAOC,eAAenB,EAASe,EAAM,CACzEK,cAAc,EACdC,YAAY,EACZC,IAAKN,GAEb,EACA,EAAoBO,EAAI,SAAStB,GAC7B,IAAIe,EAASf,GAAUA,EAAOuB,WAAa,WACvC,OAAOvB,EAAOwB,OAClB,EAAI,WACA,OAAOxB,CACX,EAEA,OADA,EAAoBa,EAAEE,EAAQ,IAAKA,GAC5BA,CACX,EACA,EAAoBC,EAAI,SAASS,EAAQC,GACrC,OAAOT,OAAOU,UAAUC,eAAelB,KAAKe,EAAQC,EACxD,EACA,EAAoBG,EAAI,GACjB,EAAoB,EAAoBC,EAAI,iBACvD,CApCO,CAoCL,CACE,iBAAkB,SAAS9B,EAAQ+B,EAAqB,GACpD,aACAd,OAAOC,eAAea,EAAqB,aAAc,CACrDC,OAAO,IAEX,IAAIC,EAA4B,CAAC,EAiDjC,SAASC,EAAQC,GACb,MAAO,oBAAsBlB,OAAOU,UAAUS,SAAS1B,KAAKyB,EAChE,CAlDA,EAAoBtB,EAAEoB,EAA2B,iBAAiB,WAC9D,OAAOI,EACX,IACA,EAAoBxB,EAAEoB,EAA2B,WAAW,WACxD,OAAOK,CACX,IACA,EAAoBzB,EAAEoB,EAA2B,UAAU,WACvD,OAAOM,EACX,IACA,EAAoB1B,EAAEoB,EAA2B,QAAQ,WACrD,OAAOO,EACX,IACA,EAAoB3B,EAAEoB,EAA2B,UAAU,WACvD,OAAOQ,EACX,IACA,EAAoB5B,EAAEoB,EAA2B,QAAQ,WACrD,OAAOS,EACX,IACA,EAAoB7B,EAAEoB,EAA2B,WAAW,WACxD,OAAOU,EACX,IACA,EAAoB9B,EAAEoB,EAA2B,gBAAgB,WAC7D,OAAOW,EACX,IACA,EAAoB/B,EAAEoB,EAA2B,UAAU,WACvD,OAAOY,EACX,IACA,EAAoBhC,EAAEoB,EAA2B,MAAM,WACnD,OAAOa,EACX,IACA,EAAoBjC,EAAEoB,EAA2B,UAAU,WACvD,OAAOc,EACX,IACA,EAAoBlC,EAAEoB,EAA2B,QAAQ,WACrD,OAAOe,EACX,IACA,EAAoBnC,EAAEoB,EAA2B,YAAY,WACzD,OAAOgB,EACX,IACA,EAAoBpC,EAAEoB,EAA2B,UAAU,WACvD,OAAOiB,CACX,IACA,EAAoBrC,EAAEoB,EAA2B,aAAa,WAC1D,OAAOkB,CACX,IACA,EAAoBtC,EAAEoB,EAA2B,WAAW,WACxD,OAAOmB,EACX,IAIA,IAAIC,EACM,QADNA,EAEM,QAFNA,EAGO,SACQC,EAAsB,mCACzC,SAASC,IACL,OAAQC,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAKE,QAAQC,SAASC,WAAaP,CAC3G,CACA,SAASQ,IACL,IAAIC,EAAMN,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAKE,OAC3E,GAAII,EAAK,IACL,GAAIA,EAAIC,QAAUD,EAAIC,SAAWD,EAAK,OAAOA,EAAIC,MACtC,CAAb,MAAOC,GAAM,CACnB,CACA,SAASC,IACL,IAAIH,EAAMN,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAKE,OAC3E,GAAII,IAAQD,EAAUC,GAAM,IACxB,OAAOA,EAAII,MACA,CAAb,MAAOF,GAAM,CACnB,CACA,SAASG,EAAkBL,GACvB,IAEI,OADAA,GAAOA,EAAIH,UAAYG,EAAIH,SAASS,MAC7B,CACI,CAAb,MAAOJ,GAAM,CACf,OAAO,CACX,CACA,SAASK,IACL,IAAIP,EAAMN,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAKE,OAAQC,EAAWG,EAAIH,SAClG,IAAKA,EAAU,MAAM,IAAIW,MAAM,gCAC/B,IAAIV,EAAWD,EAASC,SACxB,IAAKA,EAAU,MAAM,IAAIU,MAAM,gCAC/B,GAAIV,IAAaP,EAAe,OAAOA,EAAgB,KACvD,GAAIO,IAAaP,EAAgB,CAC7B,IAAIU,EAASF,EAAUC,GACvB,OAAOC,GAAUI,EAAkBJ,GAAUM,EAAgBN,GAAUV,EAAiB,IAC5F,CACA,IAAIkB,EAAOZ,EAASY,KACpB,IAAKA,EAAM,MAAM,IAAID,MAAM,4BAC3B,OAAOV,EAAW,KAAOW,CAC7B,CACA,SAASC,IACL,IAAIV,EAAMN,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAKE,OAAQe,EAASJ,EAAgBP,GAC5G,OAAOW,GAAUX,EAAIY,YAAc,IAAMZ,EAAIY,WAAWC,QAAQtB,GAAiBS,EAAIY,WAAaD,CACtG,CACA,SAASG,EAAqBd,GAC1B,IACI,GAAIA,IAAQJ,OAAQ,OAAO,CAChB,CAAb,MAAOM,GAAM,CACf,IACI,IAAIa,EAAO5D,OAAO6D,yBAAyBhB,EAAK,YAChD,GAAIe,IAAQ,IAAOA,EAAKzD,WAAY,OAAO,CAChC,CAAb,MAAO4C,GAAM,CACf,IACI,GAAIT,EAAgBO,IAAQK,EAAkBL,GAAM,OAAO,CAChD,CAAb,MAAOE,GAAM,CACf,IACI,GAAIK,EAAgBP,KAASO,EAAgBX,QAAS,OAAO,CAClD,CAAb,MAAOM,GAAM,CACf,OAAO,CACX,CACA,SAASe,EAAiBhB,EAAQiB,GAC9B,IAAKjB,IAAWiB,EAAO,OAAO,EAC9B,IAAIC,EAAcpB,EAAUmB,GAC5B,OAAOC,EAAcA,IAAgBlB,GAAU,IAAM,SAASD,GAC1D,IAAIoB,EAAS,GACb,IACI,KAAMpB,EAAIC,SAAWD,GACjBoB,EAAOC,KAAKrB,EAAIC,QAChBD,EAAMA,EAAIC,MAEH,CAAb,MAAOC,GAAM,CACf,OAAOkB,CACX,CATqD,CASnDF,GAAOL,QAAQZ,EACrB,CACA,SAASqB,EAAUtB,GACf,IAAIoB,EAAS,GAAIG,OAAS,EAC1B,IACIA,EAASvB,EAAIuB,MAGjB,CAFE,MAAOrB,GACLqB,EAASvB,CACb,CACA,IAAIwB,OAAM,EACV,IACIA,EAAMD,EAAO5B,MACF,CAAb,MAAOO,GAAM,CACf,GAAI,IAAMsB,EAAK,OAAOJ,EACtB,GAAII,EAAK,CACL,IAAK,IAAI9E,EAAI,EAAGA,EAAI8E,EAAK9E,IAAK,CAC1B,IAAI+E,OAAQ,EACZ,IACIA,EAAQF,EAAO7E,EAGnB,CAFE,MAAOwD,GACL,QACJ,CACAkB,EAAOC,KAAKI,EAChB,CACA,OAAOL,CACX,CACA,IAAK,IAAIM,EAAK,EAAGA,EAAK,IAAKA,IAAM,CAC7B,IAAIC,OAAS,EACb,IACIA,EAASJ,EAAOG,EAGpB,CAFE,MAAOxB,GACL,OAAOkB,CACX,CACA,IAAKO,EAAQ,OAAOP,EACpBA,EAAOC,KAAKM,EAChB,CACA,OAAOP,CACX,CACA,IAAIQ,EAAgB,GAAIC,EAAe,GACvC,SAASC,EAAe9B,GACpB,IAAI+B,IAAcrC,UAAUC,OAAS,QAAK,IAAWD,UAAU,KAAOA,UAAU,GAChF,IACI,GAAIM,IAAQJ,OAAQ,OAAO,CAG/B,CAFE,MAAOM,GACL,OAAO,CACX,CACA,IACI,IAAKF,EAAK,OAAO,CAGrB,CAFE,MAAOE,GACL,OAAO,CACX,CACA,IACI,GAAIF,EAAIgC,OAAQ,OAAO,CAG3B,CAFE,MAAO9B,GACL,OAAQA,GAAOA,EAAI+B,UAAYzC,CACnC,CACA,GAAIuC,GAAa,SAAS/B,GACtB,IAAKc,EAAqBd,GAAM,OAAO,EACvC,IACI,GAAIA,IAAQJ,OAAQ,OAAO,EAC3B,GAAIH,EAAgBO,IAAQK,EAAkBL,GAAM,OAAO,EAC3D,GAAIU,EAAgBd,UAAYc,EAAgBV,GAAM,OAAO,CAClD,CAAb,MAAOE,GAAM,CACf,OAAO,CACX,CARiB,CAQfF,GAAM,IACJ,GAAIA,EAAIkC,WAAY,OAAO,CAChB,CAAb,MAAOhC,GAAM,CACf,IACI,IAAKF,EAAIC,SAAWD,EAAImC,IAAK,OAAO,CACzB,CAAb,MAAOjC,GAAM,CACf,IAAIkC,EAAc,SAASC,EAAYhE,GACnC,IAAK,IAAI3B,EAAI,EAAGA,EAAI2F,EAAW1C,OAAQjD,IAAK,IACxC,GAAI2F,EAAW3F,KAAO2B,EAAM,OAAO3B,CACxB,CAAb,MAAOwD,GAAM,CACf,OAAQ,CACZ,CALkB,CAKhB0B,EAAe5B,GACjB,IAAK,IAAMoC,EAAa,CACpB,IAAIX,EAAQI,EAAaO,GACzB,GAAIX,GAAS,SAASA,GAClB,IAAKA,EAAMa,cAAe,OAAO,EACjC,IAAKb,EAAMc,WAAY,OAAO,EAC9B,IAAIC,EAAMf,EAAMgB,cAChB,SAAUD,IAAQA,EAAIE,iBAAmBF,EAAIE,gBAAgBC,SAASlB,GAC1E,CALa,CAKXA,GAAQ,OAAO,CACrB,CACA,OAAO,CACX,CACA,SAASmB,IACL,IAAI5C,EAAMN,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAKE,OAC3E,OAAOO,EAAUH,EAAMA,GAAOJ,SAAWG,EAAUC,SAAQ,CAC/D,CACA,SAAS6C,EAAYC,EAASC,GAC1B,GAAI,iBAAmBD,EAAS,CAC5B,GAAI,iBAAmBC,EAAQ,MAlKzB,MAkKgCD,GAAwBC,IAAWD,EACzE,GAAI1E,EAAQ2E,GAAS,OAAO,EAC5B,GAAIC,MAAMC,QAAQF,GAAS,OAAO,CACtC,CACA,OAAO3E,EAAQ0E,GAAW1E,EAAQ2E,GAAUD,EAAQxE,aAAeyE,EAAOzE,YAAc0E,MAAMC,QAAQF,IAAWG,QAAQH,EAAOI,MAAML,MAAcE,MAAMC,QAAQH,KAAaE,MAAMC,QAAQF,GAAUK,KAAKC,UAAUP,KAAaM,KAAKC,UAAUN,IAAW3E,EAAQ2E,IAAWD,EAAQQ,MAAK,SAASC,GAClS,OAAOV,EAAYU,EAAYR,EACnC,IACJ,CACA,SAASS,EAASC,GACd,IACI,GAAIA,IAAQ7D,OAAQ,OAAO,CAG/B,CAFE,MAAOM,GACL,GAAIA,GAAOA,EAAI+B,UAAYzC,EAAqB,OAAO,CAC3D,CACA,IACI,GAAI,oBAAsBrC,OAAOU,UAAUS,SAAS1B,KAAK6G,GAAM,OAAO,CAG1E,CAFE,MAAOvD,GACL,GAAIA,GAAOA,EAAI+B,UAAYzC,EAAqB,OAAO,CAC3D,CACA,IACI,GAAII,OAAO8D,QAAUD,aAAe7D,OAAO8D,OAAQ,OAAO,CAG9D,CAFE,MAAOxD,GACL,GAAIA,GAAOA,EAAI+B,UAAYzC,EAAqB,OAAO,CAC3D,CACA,IACI,GAAIiE,GAAOA,EAAInH,OAASmH,EAAK,OAAO,CAGxC,CAFE,MAAOvD,GACL,GAAIA,GAAOA,EAAI+B,UAAYzC,EAAqB,OAAO,CAC3D,CACA,IACI,GAAIiE,GAAOA,EAAIxD,SAAWwD,EAAK,OAAO,CAG1C,CAFE,MAAOvD,GACL,GAAIA,GAAOA,EAAI+B,UAAYzC,EAAqB,OAAO,CAC3D,CACA,IACI,GAAIiE,GAAOA,EAAItB,MAAQsB,EAAK,OAAO,CAGvC,CAFE,MAAOvD,GACL,GAAIA,GAAOA,EAAI+B,UAAYzC,EAAqB,OAAO,CAC3D,CACA,IACI,GAAIiE,GAAO,uBAAyBA,EAAIE,oCAAqC,OAAO,CAGxF,CAFE,MAAOzD,GACL,OAAO,CACX,CACA,OAAO,CACX,CACA,SAAS0D,EAAiBvB,EAAYhE,GAClC,IAAK,IAAI3B,EAAI,EAAGA,EAAI2F,EAAW1C,OAAQjD,IAAK,IACxC,GAAI2F,EAAW3F,KAAO2B,EAAM,OAAO3B,CACxB,CAAb,MAAOwD,GAAM,CACf,OAAQ,CACZ,CACA,IAAI2D,EAAuBC,EAAiC,WACxD,SAASC,IAKL,GAJC,SAASC,EAAUC,GAChB,KAAMD,aAAoBD,GAAyB,MAAM,IAAIG,UAAU,oCAC3E,CAFC,CAEC7H,MACFA,KAAKW,KAAO,cAAgB,IAAMmH,KAAKC,WAAa,GAAK,KACrD,WACA,GAAI,oBAAsBC,QAAS,OAAO,EAC1C,QAAI,IAAWlH,OAAOmH,OAAQ,OAAO,EACrC,IACI,IAAIC,EAAc,IAAIF,QAAWG,EAAU,CAAC,EAG5C,OAFArH,OAAOmH,OAAOE,GACdD,EAAYE,IAAID,EAAS,iBAClB,kBAAoBD,EAAYhH,IAAIiH,EAG/C,CAFE,MAAOtE,GACL,OAAO,CACX,CACJ,CAXI,GAWC,IACD7D,KAAKqI,QAAU,IAAIL,OACR,CAAb,MAAOnE,GAAM,CACf7D,KAAKsI,KAAO,GACZtI,KAAKuI,OAAS,EAClB,CAuGA,OAtGAb,EAAuBlG,UAAUgH,sBAAwB,WACrD,IAAK,IAAIH,EAAUrI,KAAKqI,QAASC,EAAOtI,KAAKsI,KAAMjI,EAAI,EAAGA,EAAIiI,EAAKhF,OAAQjD,IAAK,CAC5E,IAAIwB,EAAQyG,EAAKjI,GACjB,GAAI8G,EAAStF,IAAU4D,EAAe5D,GAAQ,CAC1C,GAAIwG,EAAS,IACTA,EAAQI,OAAO5G,EACJ,CAAb,MAAOgC,GAAM,CACfyE,EAAKI,OAAOrI,EAAG,GACfL,KAAKuI,OAAOG,OAAOrI,EAAG,GACtBA,GAAK,CACT,CACJ,CACJ,EACAqH,EAAuBlG,UAAUmH,kBAAoB,SAASC,GAC1D,GAAIzB,EAASyB,GAAM,OAAO,EAC1B,IACIA,GAAOA,EAAI3I,KACX2I,GAAOA,EAAI5I,KAAKW,KAGpB,CAFE,MAAOkD,GACL,OAAO,CACX,CACA,OAAO,CACX,EACA6D,EAAuBlG,UAAU4G,IAAM,SAASQ,EAAK/G,GACjD,IAAK+G,EAAK,MAAM,IAAIzE,MAAM,wBAC1B,IAAIkE,EAAUrI,KAAKqI,QACnB,GAAIA,EAAS,IACTA,EAAQD,IAAIQ,EAAK/G,EAGrB,CAFE,MAAOgC,UACE7D,KAAKqI,OAChB,CACA,GAAIrI,KAAK2I,kBAAkBC,GAAM,IAC7B,IAAIjI,EAAOX,KAAKW,KAAMkI,EAAQD,EAAIjI,GAKlC,YAJAkI,GAASA,EAAM,KAAOD,EAAMC,EAAM,GAAKhH,EAAQf,OAAOC,eAAe6H,EAAKjI,EAAM,CAC5EkB,MAAO,CAAE+G,EAAK/G,GACdiH,UAAU,IAGH,CAAb,MAAOjF,GAAM,CACf7D,KAAKwI,wBACL,IAAIF,EAAOtI,KAAKsI,KAAMC,EAASvI,KAAKuI,OAAQQ,EAAQxB,EAAiBe,EAAMM,IACtE,IAAMG,GACPT,EAAKtD,KAAK4D,GACVL,EAAOvD,KAAKnD,IACT0G,EAAOQ,GAASlH,CAC3B,EACA6F,EAAuBlG,UAAUN,IAAM,SAAS0H,GAC5C,IAAKA,EAAK,MAAM,IAAIzE,MAAM,wBAC1B,IAAIkE,EAAUrI,KAAKqI,QACnB,GAAIA,EAAS,IACT,GAAIA,EAAQW,IAAIJ,GAAM,OAAOP,EAAQnH,IAAI0H,EAG7C,CAFE,MAAO/E,UACE7D,KAAKqI,OAChB,CACA,GAAIrI,KAAK2I,kBAAkBC,GAAM,IAC7B,IAAIC,EAAQD,EAAI5I,KAAKW,MACrB,OAAOkI,GAASA,EAAM,KAAOD,EAAMC,EAAM,QAAK,CACnC,CAAb,MAAOhF,GAAM,CACf7D,KAAKwI,wBACL,IAAIO,EAAQxB,EAAiBvH,KAAKsI,KAAMM,GACxC,IAAK,IAAMG,EAAO,OAAO/I,KAAKuI,OAAOQ,EACzC,EACArB,EAAuBlG,UAAUiH,OAAS,SAASG,GAC/C,IAAKA,EAAK,MAAM,IAAIzE,MAAM,wBAC1B,IAAIkE,EAAUrI,KAAKqI,QACnB,GAAIA,EAAS,IACTA,EAAQI,OAAOG,EAGnB,CAFE,MAAO/E,UACE7D,KAAKqI,OAChB,CACA,GAAIrI,KAAK2I,kBAAkBC,GAAM,IAC7B,IAAIC,EAAQD,EAAI5I,KAAKW,MACrBkI,GAASA,EAAM,KAAOD,IAAQC,EAAM,GAAKA,EAAM,QAAK,EACzC,CAAb,MAAOhF,GAAM,CACf7D,KAAKwI,wBACL,IAAIF,EAAOtI,KAAKsI,KAAMS,EAAQxB,EAAiBe,EAAMM,IAChD,IAAMG,IACPT,EAAKI,OAAOK,EAAO,GACnB/I,KAAKuI,OAAOG,OAAOK,EAAO,GAElC,EACArB,EAAuBlG,UAAUwH,IAAM,SAASJ,GAC5C,IAAKA,EAAK,MAAM,IAAIzE,MAAM,wBAC1B,IAAIkE,EAAUrI,KAAKqI,QACnB,GAAIA,EAAS,IACT,GAAIA,EAAQW,IAAIJ,GAAM,OAAO,CAGjC,CAFE,MAAO/E,UACE7D,KAAKqI,OAChB,CACA,GAAIrI,KAAK2I,kBAAkBC,GAAM,IAC7B,IAAIC,EAAQD,EAAI5I,KAAKW,MACrB,SAAUkI,GAASA,EAAM,KAAOD,EACrB,CAAb,MAAO/E,GAAM,CAEf,OADA7D,KAAKwI,yBACG,IAAMjB,EAAiBvH,KAAKsI,KAAMM,EAC9C,EACAlB,EAAuBlG,UAAUyH,SAAW,SAASL,EAAKhI,GACtD,GAAIZ,KAAKgJ,IAAIJ,GAAM,OAAO5I,KAAKkB,IAAI0H,GACnC,IAAI/G,EAAQjB,IAEZ,OADAZ,KAAKoI,IAAIQ,EAAK/G,GACPA,CACX,EACO6F,CACX,CA9H4D,GA8HvD1E,EAAsB,CACvBkG,kBAAmB,CACfC,QAAS,4BACTC,SAAU,6BACVC,IAAK,yBAETC,iBAAkB,CACdC,QAAS,UACTC,MAAO,SAEXC,mBAAoB,CAChBC,OAAQ,mBACRC,MAAO,kBACPC,YAAa,yBAEjBC,aAAc,CACVC,SAAU,WACVC,MAAO,QACPC,OAAQ,UAEZC,aAAc,CACVC,UAAW,iBAEfC,oBAAqB,CACjBT,OAAQ,mBACRF,MAAO,kBACPY,QAAS,oBACTC,cAAe,0BACfC,MAAO,SAEXC,gBAAiB,CACbC,aAAc,yBACdC,OAAQ,mBACRC,OAAQ,oBAEZC,cAAe,QACfC,cAAe,QACfC,mBAAoB,uBACpBC,gBAAiB,sBACjBC,SAAU,KACXtB,EAAqB,CACpBC,OAAQ,mBACRC,MAAO,kBACPC,YAAa,yBACd7G,GAAUjC,OAAOwH,KAAKmB,GAAoBuB,KAAI,SAASpC,GACtD,OAAOa,EAAmBb,EAC9B,IAAI,CACAqC,0BAA2B,gCAAiC1H,SAAWA,OAAO2H,4BAC9EC,eAAgB,IAChBC,qBAAsB,IACtBC,aAAc,IAAM9H,OAAO+H,UAAUC,UAAUzE,MAAM,SAAW,IAAM,IACtE0E,aAAc,EACdC,8BAA+BjE,EAAwB,CAAC,EAAGA,EAAsBxE,EAAoBuH,gBAAgBC,eAAgB,EACrIhD,EAAsBxE,EAAoBuH,gBAAgBE,SAAU,EAAIjD,EAAsBxE,EAAoBuH,gBAAgBG,SAAU,EAC5IlD,GACAkE,mBAAmB,IAEvB,IAAMnI,OAAOC,SAASS,KAAKO,QAAQxB,EAAoB4H,iBAAmB7H,EAAOkI,yBAA0B,GAC3G,IAAIU,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAASzE,GACvF,cAAcA,CAClB,EAAI,SAASA,GACT,OAAOA,GAAO,mBAAqBwE,QAAUxE,EAAI0E,cAAgBF,QAAUxE,IAAQwE,OAAOpK,UAAY,gBAAkB4F,CAC5H,EACA,SAAS2E,EAAelI,GACpB,IAAImI,EAAQ3I,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAK,EAC7E,GAAI2I,GAAS,EAAG,MAAO,gCACvB,IACI,IAAKnI,EAAK,MAAO,mBAAqB/C,OAAOU,UAAUS,SAAS1B,KAAKsD,GAAO,IAC5E,GAAI,iBAAmBA,EAAK,OAAOA,EACnC,GAAIA,aAAeM,MAAO,CACtB,IAAI8H,EAAQpI,GAAOA,EAAIoI,MAAOrG,EAAU/B,GAAOA,EAAI+B,QACnD,GAAIqG,GAASrG,EAAS,OAAQ,IAAMqG,EAAMzH,QAAQoB,GAAWqG,EAAQrG,EAAU,KAAOqG,EACtF,GAAIA,EAAO,OAAOA,EAClB,GAAIrG,EAAS,OAAOA,CACxB,CACA,MAAO,mBAAqB/B,EAAI5B,SAAW4B,EAAI5B,WAAanB,OAAOU,UAAUS,SAAS1B,KAAKsD,EAG/F,CAFE,MAAOqI,GACL,MAAO,mCAAqCH,EAAeG,EAAQF,EAAQ,EAC/E,CACJ,CACA,IAAIG,EAAO,SAASC,GAChB,IAAKA,EAAQ,OAAOA,EACpB,IAAIC,GAAS,EACb,OAAO,WACH,IAAKA,EAED,OADAA,GAAS,EACFD,EAAOE,MAAMtM,KAAMqD,UAElC,CACJ,EACA,SAASkJ,IAAiB,CAC1B,SAASC,IACL,IAAIC,EAAQ,mBACZ,MAAO,aAAaC,QAAQ,MAAM,WAC9B,OAAOD,EAAME,OAAO7E,KAAK8E,MAAM9E,KAAKC,SAAW0E,EAAMnJ,QACzD,GACJ,CACA,SAASuJ,EAAc7K,EAAM8K,GACzB,IAAIC,EAAQ1J,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAK,EAC7E,GAAI0J,GAAS,IAAK,MAAM,IAAI5I,MAAM,uEAClC,IAAI6I,OAAS,EACb,GAAI,iBAAc,IAAWhL,EAAO,YAAc2J,EAAQ3J,KAAU,OAASA,GAAQ2E,MAAMC,QAAQ5E,GAAO,CACtG,IAAK2E,MAAMC,QAAQ5E,GAAO,MAAM,IAAI6F,UAAU,uBAAoB,IAAW7F,EAAO,YAAc2J,EAAQ3J,KAC1GgL,EAAS,EACb,MAAOA,EAAS,CAAC,EAWjB,OAVC,SAAShL,EAAM8K,GACZnG,MAAMC,QAAQ5E,GAAQ,SAASA,EAAM8K,GACjC,IAAK,IAAIzM,EAAI,EAAGA,EAAI2B,EAAKsB,OAAQjD,IAAKyM,EAAS9K,EAAK3B,GAAIA,EAC5D,CAFsB,CAEpB2B,EAAM8K,GAAY,iBAAc,IAAW9K,EAAO,YAAc2J,EAAQ3J,KAAU,OAASA,GAAQ,SAASA,EAAM8K,GAChH,IAAK,IAAIG,KAAQjL,EAAMA,EAAKP,eAAewL,IAASH,EAAS9K,EAAKiL,GAAOA,EAC7E,CAFqG,CAEnGjL,EAAM8K,EACZ,CANC,CAMC9K,GAAM,SAASkL,EAAWtE,GACxB,IAAI7D,EAAS+H,EAASI,EAAWtE,QACjC,IAAW7D,EAASiI,EAAOpE,GAAO7D,EAAS,iBAAc,IAAWmI,EAAY,YAAcvB,EAAQuB,KAAe,OAASA,EAAYF,EAAOpE,GAAOiE,EAAcK,EAAWJ,EAAUC,EAAQ,GAAKC,EAAOpE,GAAOsE,CAC1N,IACOF,CACX,CACA,SAASG,EAAanL,GAClB,MAAO,oBAAsBlB,OAAOU,UAAUS,SAAS1B,KAAKyB,EAChE,CACA,SAASoL,EAAgBpL,GACrB,IACI,IAAKA,EAAM,OAAO,EAClB,GAAI,oBAAsBqL,SAAWrL,aAAgBqL,QAAS,OAAO,EACrE,GAAI,oBAAsB9J,QAAU,mBAAqBA,OAAO8D,QAAUrF,aAAgBuB,OAAO8D,OAAQ,OAAO,EAChH,GAAI,oBAAsB9D,QAAU,mBAAqBA,OAAOuI,aAAe9J,aAAgBuB,OAAOuI,YAAa,OAAO,EAC1H,IAAIwB,EAAY,CAAC,EAAErL,SACnB,GAAIqL,EAAW,CACX,IAAI3M,EAAO2M,EAAU/M,KAAKyB,GAC1B,GAAI,oBAAsBrB,GAAQ,oBAAsBA,GAAQ,uBAAyBA,EAAM,OAAO,CAC1G,CACA,GAAI,mBAAqBqB,EAAKuL,KAAM,OAAO,CAG/C,CAFE,MAAO1J,GACL,OAAO,CACX,CACA,OAAO,CACX,CACA,IAAI2J,EAAmB,GAAIC,EAAmC,GAAIC,EAAc,EAAGC,OAAe,EAClG,SAASC,IACL,IAAKF,GAAeC,EAAc,CAC9B,IAAIE,EAAUF,EACdA,EAAe,KACfE,EAAQC,SACZ,CACJ,CACA,SAASC,IACLL,GAAe,CACnB,CACA,SAASM,IACLN,GAAe,EACfE,GACJ,CACA,IAAIzL,EAAuB,WACvB,SAAS8L,EAAaC,GAClB,IAAIC,EAAQnO,KAQZ,GAPC,SAAS2H,EAAUC,GAChB,KAAMD,aAAoBsG,GAAe,MAAM,IAAIpG,UAAU,oCACjE,CAFC,CAEC7H,MACFA,KAAKoO,UAAW,EAChBpO,KAAKqO,UAAW,EAChBrO,KAAKsO,cAAe,EACpBtO,KAAKuO,SAAW,GACZL,EAAS,CACT,IAAIM,OAAU,EAAQC,OAAS,EAAQL,GAAW,EAAIC,GAAW,EAAIK,GAAU,EAC/EX,IACA,IACIG,GAAQ,SAASS,GACTD,EAASP,EAAML,QAAQa,IACvBP,GAAW,EACXI,EAAUG,EAElB,IAAG,SAAS9K,GACJ6K,EAASP,EAAMS,OAAO/K,IACtBwK,GAAW,EACXI,EAAS5K,EAEjB,GAKJ,CAJE,MAAOA,GAGL,OAFAmK,SACAhO,KAAK4O,OAAO/K,EAEhB,CACAmK,IACAU,GAAU,EACVN,EAAWpO,KAAK8N,QAAQU,GAAWH,GAAYrO,KAAK4O,OAAOH,EAC/D,CACJ,CAsNA,OArNAR,EAAazM,UAAUsM,QAAU,SAAS/I,GACtC,GAAI/E,KAAKoO,UAAYpO,KAAKqO,SAAU,OAAOrO,KAC3C,GAAIoN,EAAgBrI,GAAS,MAAM,IAAIZ,MAAM,gDAI7C,OAHAnE,KAAKoO,UAAW,EAChBpO,KAAK6B,MAAQkD,EACb/E,KAAK6O,WACE7O,IACX,EACAiO,EAAazM,UAAUoN,OAAS,SAASE,GACrC,IAAIC,EAAS/O,KACb,GAAIA,KAAKoO,UAAYpO,KAAKqO,SAAU,OAAOrO,KAC3C,GAAIoN,EAAgB0B,GAAQ,MAAM,IAAI3K,MAAM,+CAC5C,IAAK2K,EAAO,CACR,IAAIE,EAAOF,GAAS,mBAAqBA,EAAM7M,SAAW6M,EAAM7M,WAAanB,OAAOU,UAAUS,SAAS1B,KAAKuO,GAC5GA,EAAQ,IAAI3K,MAAM,gDAAkD6K,EACxE,CAeA,OAdAhP,KAAKqO,UAAW,EAChBrO,KAAK8O,MAAQA,EACb9O,KAAKsO,cAAgBW,YAAW,WAC5BF,EAAOT,cAAgB,SAASzK,EAAKgK,GACjC,IAAK,IAAML,EAAiBhJ,QAAQX,GAAM,CACtC2J,EAAiBxI,KAAKnB,GACtBoL,YAAW,WACP,MAAMpL,CACV,GAAG,GACH,IAAK,IAAIqL,EAAI,EAAGA,EAAIzB,EAAiCnK,OAAQ4L,IAAKzB,EAAiCyB,GAAGrL,EAAKgK,EAC/G,CACJ,CARuB,CAQrBiB,EAAOC,EACb,GAAG,GACH/O,KAAK6O,WACE7O,IACX,EACAiO,EAAazM,UAAU2N,YAAc,SAASL,GAG1C,OAFA9O,KAAKsO,cAAe,EACpBtO,KAAK4O,OAAOE,GACL9O,IACX,EACAiO,EAAazM,UAAUqN,SAAW,WAC9B,IAAIO,EAAcpP,KAAKoP,YAAahB,EAAWpO,KAAKoO,SAAUC,EAAWrO,KAAKqO,SAAUE,EAAWvO,KAAKuO,SACxG,IAAKa,IAAgBhB,GAAYC,GAAW,CACxCrO,KAAKoP,aAAc,EACnBrB,IACA,IAAK,IAAIsB,EAAQ,SAASC,EAAcC,GACpC,OAAOD,EAAa/B,MAAK,SAASoB,GAC9BY,EAAczB,QAAQa,EAC1B,IAAG,SAAS9K,GACR0L,EAAcX,OAAO/K,EACzB,GACJ,EAAGxD,EAAI,EAAGA,EAAIkO,EAASjL,OAAQjD,IAAK,CAChC,IAAImP,EAAcjB,EAASlO,GAAIoP,EAAaD,EAAYE,UAAWC,EAAWH,EAAYI,QAASC,EAAWL,EAAY3B,QAASiC,OAAW,EAC9I,GAAI1B,EAAU,IACV0B,EAAWL,EAAaA,EAAWzP,KAAK6B,OAAS7B,KAAK6B,KAI1D,CAHE,MAAOgC,GACLgM,EAASjB,OAAO/K,GAChB,QACJ,MAAO,GAAIwK,EAAU,CACjB,IAAKsB,EAAU,CACXE,EAASjB,OAAO5O,KAAK8O,OACrB,QACJ,CACA,IACIgB,EAAWH,EAAS3P,KAAK8O,MAI7B,CAHE,MAAOjL,GACLgM,EAASjB,OAAO/K,GAChB,QACJ,CACJ,CACIiM,aAAoB7B,IAAiB6B,EAAS1B,UAAY0B,EAASzB,WACnEyB,EAAS1B,SAAWyB,EAAS/B,QAAQgC,EAASjO,OAASgO,EAASjB,OAAOkB,EAAShB,OAChFgB,EAASxB,cAAe,GACrBlB,EAAgB0C,GAAYA,aAAoB7B,IAAiB6B,EAAS1B,UAAY0B,EAASzB,UAAYyB,EAAS1B,SAAWyB,EAAS/B,QAAQgC,EAASjO,OAASgO,EAASjB,OAAOkB,EAAShB,OAASO,EAAMS,EAAUD,GAAYA,EAAS/B,QAAQgC,EAC5P,CACAvB,EAASjL,OAAS,EAClBtD,KAAKoP,aAAc,EACnBpB,GACJ,CACJ,EACAC,EAAazM,UAAU+L,KAAO,SAASmC,EAAWE,GAC9C,GAAIF,GAAa,mBAAqBA,IAAcA,EAAUnP,KAAM,MAAM,IAAI4D,MAAM,wDACpF,GAAIyL,GAAW,mBAAqBA,IAAYA,EAAQrP,KAAM,MAAM,IAAI4D,MAAM,sDAC9E,IAAI0J,EAAU,IAAII,EAQlB,OAPAjO,KAAKuO,SAASvJ,KAAK,CACf6I,QAASA,EACT6B,UAAWA,EACXE,QAASA,IAEb5P,KAAKsO,cAAe,EACpBtO,KAAK6O,WACEhB,CACX,EACAI,EAAazM,UAAUuO,MAAQ,SAASH,GACpC,OAAO5P,KAAKuN,UAAK,EAAQqC,EAC7B,EACA3B,EAAazM,UAAUwO,QAAU,SAASC,GACtC,GAAIA,GAAa,mBAAqBA,IAAcA,EAAU1P,KAAM,MAAM,IAAI4D,MAAM,uCACpF,OAAOnE,KAAKuN,MAAK,SAASxI,GACtB,OAAOkJ,EAAaiC,IAAID,GAAW1C,MAAK,WACpC,OAAOxI,CACX,GACJ,IAAG,SAASlB,GACR,OAAOoK,EAAaiC,IAAID,GAAW1C,MAAK,WACpC,MAAM1J,CACV,GACJ,GACJ,EACAoK,EAAazM,UAAU2O,QAAU,SAASC,EAAMvM,GAC5C,IAAIwM,EAASrQ,KACb,GAAIA,KAAKoO,UAAYpO,KAAKqO,SAAU,OAAOrO,KAC3C,IAAImQ,EAAUlB,YAAW,WACrBoB,EAAOjC,UAAYiC,EAAOhC,UAAYgC,EAAOzB,OAAO/K,GAAO,IAAIM,MAAM,2BAA6BiM,EAAO,MAC7G,GAAGA,GACH,OAAOpQ,KAAKuN,MAAK,SAASxI,GAEtB,OADAuL,aAAaH,GACNpL,CACX,GACJ,EACAkJ,EAAazM,UAAU+O,UAAY,WAC/B,GAAI,oBAAsBlD,QAAS,MAAM,IAAIxF,UAAU,0BACvD,OAAOwF,QAAQS,QAAQ9N,KAC3B,EACAiO,EAAaH,QAAU,SAASjM,GAC5B,OAAOA,aAAiBoM,EAAepM,EAAQuL,EAAgBvL,GAAS,IAAIoM,GAAa,SAASH,EAASc,GACvG,OAAO/M,EAAM0L,KAAKO,EAASc,EAC/B,KAAK,IAAIX,GAAeH,QAAQjM,EACpC,EACAoM,EAAaW,OAAS,SAASE,GAC3B,OAAO,IAAIb,GAAeW,OAAOE,EACrC,EACAb,EAAakB,YAAc,SAASL,GAChC,OAAO,IAAIb,GAAekB,YAAYL,EAC1C,EACAb,EAAauC,IAAM,SAASC,GACxB,IAAI5C,EAAU,IAAII,EAAgByC,EAAQD,EAASnN,OAAQqN,EAAU,GACrE,IAAKD,EAED,OADA7C,EAAQC,QAAQ6C,GACT9C,EAEX,IAAK,IAAIwB,EAAQ,SAAShP,EAAGiP,EAAcC,GACvC,OAAOD,EAAa/B,MAAK,SAASoB,GAC9BgC,EAAQtQ,GAAKsO,EACb,IAAM+B,GAAS,IAAM7C,EAAQC,QAAQ6C,EACzC,IAAG,SAAS9M,GACR0L,EAAcX,OAAO/K,EACzB,GACJ,EAAGxD,EAAI,EAAGA,EAAIoQ,EAASnN,OAAQjD,IAAK,CAChC,IAAIuQ,EAAOH,EAASpQ,GACpB,GAAIuQ,aAAgB3C,GAChB,GAAI2C,EAAKxC,SAAU,CACfuC,EAAQtQ,GAAKuQ,EAAK/O,MAClB6O,GAAS,EACT,QACJ,OACG,IAAKtD,EAAgBwD,GAAO,CAC/BD,EAAQtQ,GAAKuQ,EACbF,GAAS,EACT,QACJ,CACArB,EAAMhP,EAAG4N,EAAaH,QAAQ8C,GAAO/C,EACzC,CAEA,OADA,IAAM6C,GAAS7C,EAAQC,QAAQ6C,GACxB9C,CACX,EACAI,EAAa4C,KAAO,SAASJ,GACzB,IAAI1L,EAAS,CAAC,EACd,OAAOkJ,EAAauC,IAAI1P,OAAOwH,KAAKmI,GAAUzF,KAAI,SAASpC,GACvD,OAAOqF,EAAaH,QAAQ2C,EAAS7H,IAAM2E,MAAK,SAAS1L,GACrDkD,EAAO6D,GAAO/G,CAClB,GACJ,KAAI0L,MAAK,WACL,OAAOxI,CACX,GACJ,EACAkJ,EAAajD,IAAM,SAAS8F,EAAO1E,GAC/B,OAAO6B,EAAauC,IAAIM,EAAM9F,IAAIoB,GACtC,EACA6B,EAAa8C,6BAA+B,SAAS7C,GACjD,OAAO,SAASA,GAEZ,OADAT,EAAiCzI,KAAKkJ,GAC/B,CACH8C,OAAQ,WACJvD,EAAiC/E,OAAO+E,EAAiCjJ,QAAQ0J,GAAU,EAC/F,EAER,CAPO,CAOLA,EACN,EACAD,EAAaiC,IAAM,SAAS9D,EAAQ6E,EAASC,GACzC,GAAI9E,GAAU,mBAAqBA,IAAWA,EAAO7L,KAAM,MAAM,IAAI4D,MAAM,mCAC3E,IAAIY,OAAS,EACbgJ,IACA,IACIhJ,EAASqH,EAAOE,MAAM2E,EAASC,GAAQ,GAI3C,CAHE,MAAOrN,GAEL,OADAmK,IACOC,EAAaW,OAAO/K,EAC/B,CAEA,OADAmK,IACOC,EAAaH,QAAQ/I,EAChC,EACAkJ,EAAakD,MAAQ,SAASC,GAC1B,OAAO,IAAInD,GAAa,SAASH,GAC7BmB,WAAWnB,EAASsD,EACxB,GACJ,EACAnD,EAAaoD,UAAY,SAASxP,GAC9B,SAAUA,GAASA,aAAiBoM,IAAiBb,EAAgBvL,EACzE,EACAoM,EAAaqD,MAAQ,WACjB,OACQzD,EAAUF,EAAeA,GAAgB,IAAIM,EACjDL,IACOC,EAHJ,IACCA,CAIZ,EACOI,CACX,CAzP2B,GAyPtBsD,EAAShO,OAAOP,EAAoBiH,aAAaC,WAAa3G,OAAOP,EAAoBiH,aAAaC,YAAc,CAAC,EAC1HqH,EAAOC,aAAe,WAAY,EAClC,IAAIC,EAAoB,mBAAqB7F,QAAU,iBAAmBA,OAAOC,SAAW,SAASzE,GACjG,cAAcA,CAClB,EAAI,SAASA,GACT,OAAOA,GAAO,mBAAqBwE,QAAUxE,EAAI0E,cAAgBF,QAAUxE,IAAQwE,OAAOpK,UAAY,gBAAkB4F,CAC5H,EACAmK,EAAOG,QAAUH,EAAOG,SAAW,IAAIjK,EACvC,IAAIkK,EAAmBxF,GAAK,WACxBoF,EAAOK,GAAG5O,EAAoByG,mBAAmBC,OAAQ,CACrDhD,OAAQ1D,EAAoB+H,WAC7B,SAAS8G,GACR,IAAIC,EAASD,EAAKC,OAAQpL,EAASmL,EAAKnL,OAAQqL,EAAOF,EAAKE,KAAML,EAAUH,EAAOG,QAAQxQ,IAAI4Q,GAC/F,IAAKJ,EAAS,MAAM,IAAIvN,MAAM,iEAC9B,IAAI6N,EAAON,EAAQK,EAAKE,IACxB,IAAKD,EAAM,MAAM,IAAI7N,MAAM,kCAAoC4N,EAAKE,IACpE,IAAKzL,EAAYwL,EAAK1N,OAAQoC,GAAS,MAAM,IAAIvC,MAAM,iBAAmB6N,EAAK1N,OAAS,0BAA4BoC,GACpH,OAAOvE,EAAqB+N,KAAI,WAC5B,OAAO8B,EAAK5F,OAAOE,MAAM,CACrBwF,OAAQA,EACRpL,OAAQA,EACRqL,KAAMA,GACPA,EAAKb,KACZ,IAAG3D,MAAK,SAASxI,GACb,MAAO,CACHA,OAAQA,EACRkN,GAAIF,EAAKE,GACTtR,KAAMoR,EAAKpR,KAEnB,GACJ,GACJ,IACA,SAASuR,EAAalQ,EAAMmQ,GACxB,MAAO,iBAAc,IAAWnQ,EAAO,YAAcyP,EAAkBzP,KAAU,OAASA,GAAQA,EAAKoQ,WAAaD,CACxH,CACA,SAASE,EAAgBC,EAAahO,EAAQ8H,EAAQzL,GAClD,IAAIsR,EAAKzF,IAAYkF,EAAUH,EAAOG,QAAQxQ,IAAIoR,GASlD,OARKZ,IACDA,EAAU,CAAC,EACXH,EAAOG,QAAQtJ,IAAIkK,EAAaZ,IAEpCA,EAAQO,GAAM,CACV3N,OAAQA,EACR8H,OAAQA,GAEL,CACHgG,SAAUpP,EAAoBmH,oBAAoBT,OAClD6I,OAAQN,EACRO,SAAU7R,EAElB,CACA,SAAS8R,EAAkBX,EAAQpL,EAAQU,GACvC,SAASsL,IACL,IAAIxB,EAAOvK,MAAMnF,UAAUmR,MAAMpS,KAAK8C,WACtC,OAAOkO,EAAOqB,KAAKd,EAAQ9O,EAAoByG,mBAAmBC,OAAQ,CACtEuI,GAAI7K,EAAImL,OACR5R,KAAMyG,EAAIoL,SACVtB,KAAMA,GACP,CACC5M,OAAQoC,EACRyJ,SAAU,IACX5C,MAAK,SAASsF,GACb,OAAOA,EAAMd,KAAKhN,MACtB,IAAG,SAASlB,GACR,MAAMA,CACV,GACJ,CAKA,OAJA6O,EAAQF,SAAWpL,EAAIoL,SACvBE,EAAQI,aAAc,EACtBJ,EAAQZ,OAASA,EACjBY,EAAQhM,OAASA,EACVgM,CACX,CACA,SAASK,EAAwBjB,EAAQpL,EAAQkK,GAC7C,OAAO,IAAIzO,GAAqB,SAAS2L,EAASc,GAC9C,OAAO6D,EAAkBX,EAAQpL,EAAQkK,EAAKoC,SAAvCP,CAAiD3E,EAASc,EACrE,GACJ,CAEA,SAASqE,EAAStP,GACd,OAAO4N,EAAOqB,KAAKjP,EAAKX,EAAoByG,mBAAmBE,MAAO,CAAC,EAAG,CACtErF,OAAQtB,EAAoB+H,SAC5BoF,SAAU,IACX5C,MAAK,SAASsF,GACb,MAAO,CACHnM,OAAQmM,EAAMnM,OAEtB,GACJ,CAVA6K,EAAO2B,cAAgB3B,EAAO2B,eAAiB,IAAIzL,EAWnD,IAAI0L,GAA0B,CAAC,EAC/BA,GAAwBnQ,EAAoBuH,gBAAgBC,cAAgB,SAAS7G,EAAKyP,EAAmB9O,IACxGqC,MAAMC,QAAQtC,GAAUA,EAAS,iBAAmBA,EAAS,CAAEA,GAAW,CAAEtB,EAAoB+H,WAAYC,KAAI,SAASqI,GACtH,GAAI,IAAMA,EAAI7O,QAAQxB,EAAoB2H,eAAgB,CACtD,GAAIpH,OAAOC,SAASC,WAAaT,EAAoB4H,cAAe,OAAO5H,EAAoB+H,SAC/F,IAAKtG,EAAqBd,GAAM,MAAM,IAAIQ,MAAM,8CAAgDkP,EAAM,yCACtG,OAAOnP,EAAgBP,EAC3B,CACA,OAAO,IAAM0P,EAAI7O,QAAQxB,EAAoB4H,eAAiB5H,EAAoB+H,SAAWsI,CACjG,IAAGC,SAAQ,SAASD,GAChB,OAAO1P,EAAI4P,YAAYH,EAAmBC,EAC9C,GACJ,EACA,IAAIG,GAAW1S,OAAO2S,QAAU,SAASC,GACrC,IAAK,IAAIrT,EAAI,EAAGA,EAAIgD,UAAUC,OAAQjD,IAAK,CACvC,IAAIyR,EAASzO,UAAUhD,GACvB,IAAK,IAAIuI,KAAOkJ,EAAQhR,OAAOU,UAAUC,eAAelB,KAAKuR,EAAQlJ,KAAS8K,EAAO9K,GAAOkJ,EAAOlJ,GACvG,CACA,OAAO8K,CACX,EACA,SAASC,GAAYhQ,EAAKiC,EAAStB,GAC/B,OAAOnC,EAAqB+N,KAAI,WAC5B,IAAI0D,EAgDJ,GA/CAhO,EAAU,SAASjC,EAAKiC,GACpB,IAAIiO,EAAUxQ,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAK,CAAC,EAAG4O,EAAKzF,IAAY2F,EAAO,WACvG,IAAIxO,EAAMN,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAKE,OAC3E,OAAOsD,QAAQ/C,EAAUH,GAC7B,CAH2G,GAGrGX,EAAoB6G,aAAaE,MAAQ,WAC3C,IAAIpG,EAAMN,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAKE,OAC3E,OAAOsD,QAAQnD,EAAUC,GAC7B,CAH+C,GAGzCX,EAAoB6G,aAAaG,OAAShH,EAAoB6G,aAAaC,SAAUgK,EAAezP,EAAgBd,QAC1H,OAAOiQ,GAAS,CAAC,EAAG5N,EAASiO,EAAS,CAClCC,aAAcA,EACd7B,GAAIrM,EAAQqM,IAAMA,EAClB8B,WAAY5B,GAEpB,CAbU,CAaRxO,EAAKiC,EAAS,CACZmM,KAAM,SAASO,EAAahO,EAAQ8C,GAChC,OAAOyF,EAAc,CACjBzF,IAAKxB,EAAQmM,OACd,SAAS/P,EAAM4G,GACd,MAAO,mBAAqB5G,EAAOqQ,EAAgBC,EAAahO,EAAQtC,EAAM4G,EAAI3G,YAAcD,aAAgBmC,OAASN,EAAM7B,EAC/H,CACIoQ,SAAUpP,EAAoBmH,oBAAoBX,MAClDwK,YAAajI,EAAelI,GAC5BoQ,SAAUpQ,EAAIqQ,OACb3Q,OAAO8J,SAAWrL,aAAgBuB,OAAO8J,QAAU,SAASiF,EAAahO,EAAQuJ,EAASlN,GAC3F,MAAO,CACHyR,SAAUpP,EAAoBmH,oBAAoBC,QAClD4I,SAAUX,EAAgBC,EAAahO,GAAQ,SAASwJ,EAASc,GAC7D,OAAOf,EAAQN,KAAKO,EAASc,EACjC,GAAGjO,EAAO,SAElB,CAPwD,CAOtD2R,EAAahO,EAAQtC,EAAM4G,EAAI3G,YAAcE,EAAqBkP,UAAUrP,GAAQ,SAASsQ,EAAahO,EAAQuJ,EAASlN,GACzH,MAAO,CACHyR,SAAUpP,EAAoBmH,oBAAoBE,cAClD2I,SAAUX,EAAgBC,EAAahO,GAAQ,SAASwJ,EAASc,GAC7D,OAAOf,EAAQN,KAAKO,EAASc,EACjC,GAAGjO,EAAO,SAElB,CAPsF,CAOpF2R,EAAahO,EAAQtC,EAAM4G,EAAI3G,YAAckL,EAAanL,IAASmS,EAAQnS,EAC7E,CACIoQ,SAAUpP,EAAoBmH,oBAAoBG,MAClD8J,WAAYD,EAAMrC,cACjB,EACL,IAAIjO,EAAKsQ,CACb,IAAG/M,GACP,CA9BM,CA8BJzD,EAAKW,GACPA,OAAQA,IAERX,IAAQJ,SAAWR,EAAO2I,kBAAmB,MAAM,IAAIvH,MAAM,qCACjE,GAAIsB,EAAe9B,GAAM,MAAM,IAAIQ,MAAM,oBACzC,IAAIkQ,EAAW,GAAIjB,EAAoB,SAAShM,EAAKkN,EAAUC,GAC3D,IAAIC,OAAe,EAAQC,OAAc,EACzC,IAKI,GAJI,OAAS1N,KAAKC,UAAU,CAAC,KACzBwN,EAAe1T,OAAOU,UAAUkT,cACzB5T,OAAOU,UAAUkT,QAExB,OAAS3N,KAAKC,UAAU,CAAC,GAAI,MAAM,IAAI7C,MAAM,4CAKjD,GAJI,OAAS4C,KAAKC,UAAU,MACxByN,EAAc9N,MAAMnF,UAAUkT,cACvB/N,MAAMnF,UAAUkT,QAEvB,OAAS3N,KAAKC,UAAU,IAAK,MAAM,IAAI7C,MAAM,2CAGrD,CAFE,MAAON,GACL,MAAM,IAAIM,MAAM,kCAAoCN,EAAI+B,QAC5D,CACA,IAAIb,EAASgC,KAAKC,UAAUzG,KAAKP,KAAMoH,EAAK,KAAM,GAClD,IACIoN,IAAiB1T,OAAOU,UAAUkT,OAASF,GAC3CC,IAAgB9N,MAAMnF,UAAUkT,OAASD,EAG7C,CAFE,MAAO5Q,GACL,MAAM,IAAIM,MAAM,kCAAoCN,EAAI+B,QAC5D,CACA,OAAOb,CACX,CAxBuC,GAwBnC6O,EAAiB,CAAC,GAAG5Q,EAAoBiH,aAAaC,WAAatE,EACvEgO,IACA,OAAOzR,EAAqB6I,IAAIlK,OAAOwH,KAAK6K,KAA0B,SAASwB,GAC3E,OAAOxS,EAAqB+N,KAAI,WAC5B,IAAKnN,EAAO0I,6BAA6BkJ,GAAe,MAAM,IAAIxQ,MAAM,wBAA0BwQ,GAClG,OAAOxB,GAAwBwB,GAAchR,EAAKyP,EAAmB9O,EACzE,IAAGiJ,MAAK,WAEJ,OADA8G,EAASrP,KAAK2P,EAAe,cACtB,CACX,IAAG,SAAS9Q,GAER,OADAwQ,EAASrP,KAAK2P,EAAe,KAAO5I,EAAelI,GAAO,OACnD,CACX,GACJ,IAAG0J,MAAK,SAASoD,GACb,IAAIiE,EAAUjE,EAAQ1J,KAAKJ,SAAUgO,EAASjP,EAAQuM,KAAO,IAAMvM,EAAQjF,KAAO,KAAOiU,EAAU,UAAY,SAAW,UAAYP,EAASS,KAAK,UAAY,KAChK,IAAKF,EAAS,MAAM,IAAIzQ,MAAM0Q,EAClC,GACJ,GACJ,CACAtD,EAAOwD,kBAAoBxD,EAAOwD,mBAAqB,CAAC,EACxDxD,EAAOyD,iBAAmBzD,EAAOyD,kBAAoB,CAAC,EACtDzD,EAAO0D,gBAAkB1D,EAAO0D,iBAAmB,IAAI,WAAY,EACnE1D,EAAO2D,yBAA2B3D,EAAO2D,0BAA4B,CAAC,EACtE,IAAIC,GACJ,SAASC,GAAoBvE,GACzB,OAAOU,EAAOwD,kBAAkBlE,EACpC,CACA,SAASwE,GAAuBxE,UACrBU,EAAOwD,kBAAkBlE,EACpC,CACA,SAASyE,GAA0BzE,GAC/B,OAAOhK,QAAQ0K,EAAO2D,yBAAyBrE,GACnD,CACA,SAAS0E,GAAmB1D,GACxB,IAAIlR,EAAOkR,EAAKlR,KAAMgD,EAAMkO,EAAKlO,IAAKW,EAASuN,EAAKvN,OAGpD,GAFAX,IAAQX,EAAoB+H,WAAapH,EAAM,MAC/CW,IAAWtB,EAAoB+H,WAAazG,EAAS,OAChD3D,EAAM,MAAM,IAAIwD,MAAM,yCAC3B,IAAIqR,EAAgBjE,EAAOyD,iBAAiBrU,GAC5C,GAAI6U,EAAe,IAAK,IAAIC,EAAM,EAAGC,EAAQ,CAAE/R,EAAK4N,EAAO0D,iBAAmBU,EAAW,MAAQD,EAAQ,EAAIA,EAAMpS,OAAQmS,EAAME,EAAUF,IAAO,CAC9I,IAAIG,EAAeF,EAAMD,GAAMI,EAAeD,GAAgBJ,EAActU,IAAI0U,GAChF,GAAIC,EAAc,CACd,GAAIvR,GAAU,iBAAmBA,EAAQ,CACrC,GAAIuR,EAAavR,GAAS,OAAOuR,EAAavR,GAC9C,GAAIuR,EAA6B,iBAAG,IAAK,IAAIC,EAAM,EAAGC,EAAyBF,EAA6B,iBAAGG,EAAW,MAAQD,EAAyB,EAAIA,EAAuBzS,OAAQwS,EAAME,EAAUF,IAAO,CACjN,IAAIG,EAAQF,EAAuBD,GAAM3B,EAAQ8B,EAAM9B,MAAO+B,EAAWD,EAAMC,SAC/E,GAAI1P,EAAY2N,EAAO7P,GAAS,OAAO4R,CAC3C,CACJ,CACA,GAAIL,EAAa7S,EAAoB+H,UAAW,OAAO8K,EAAa7S,EAAoB+H,SAC5F,CACJ,CACJ,CACA,IAAIoL,GAAiBrV,OAAO2S,QAAU,SAASC,GAC3C,IAAK,IAAIrT,EAAI,EAAGA,EAAIgD,UAAUC,OAAQjD,IAAK,CACvC,IAAIyR,EAASzO,UAAUhD,GACvB,IAAK,IAAIuI,KAAOkJ,EAAQhR,OAAOU,UAAUC,eAAelB,KAAKuR,EAAQlJ,KAAS8K,EAAO9K,GAAOkJ,EAAOlJ,GACvG,CACA,OAAO8K,CACX,EAAG0C,KAA0BjB,GAAwB,CAAC,GAAGnS,EAAoBkG,kBAAkBG,KAAO,SAASyI,EAAQpL,EAAQd,GAC3H,IAAK0P,GAA0B1P,EAAQiL,MAAO,CAC1C,IAAIgD,EAAUuB,GAAoBxP,EAAQiL,MAC1C,IAAKgD,EAAS,MAAM,IAAI1P,MAAM,sDAAwDyB,EAAQjF,KAAO,SAAW+F,EAAS,OAASnD,OAAOC,SAASC,SAAW,KAAOF,OAAOC,SAASY,KAAOb,OAAOC,SAAS6S,UAC3M,IAAK7P,EAAYqN,EAAQvP,OAAQoC,GAAS,MAAM,IAAIvC,MAAM,cAAgBuC,EAAS,0BAA4BmN,EAAQvP,OAAOrC,YAC9H4R,EAAQyC,KAAM,CAClB,CACJ,EAAGnB,GAAsBnS,EAAoBkG,kBAAkBC,SAAW,SAAS2I,EAAQpL,EAAQd,GAC/F,IAAIiO,EAAU0B,GAAmB,CAC7B5U,KAAMiF,EAAQjF,KACdgD,IAAKmO,EACLxN,OAAQoC,IAEZ,SAAS6P,EAAQxE,GACb,OAAOnM,EAAQ4Q,eAAiB/Q,EAAeqM,GAAU3P,EAAqB2L,UAAY6F,GAAY7B,EAAQqE,GAAe,CACzHzC,OAAQ9N,EAAQ6Q,eAChB5F,KAAMjL,EAAQiL,KACdlQ,KAAMiF,EAAQjF,MACfoR,GAAOrL,EACd,CACA,OAAOvE,EAAqBqO,IAAI,CAAE+F,EAAQ,CACtCpE,KAAMnP,EAAoBkG,kBAAkBG,MAC5ClH,EAAqB+N,KAAI,WACzB,IAAK2D,EAAS,MAAM,IAAI1P,MAAM,sCAAwCyB,EAAQjF,KAAO,SAAW+F,EAAS,OAASnD,OAAOC,SAASC,SAAW,KAAOF,OAAOC,SAASY,KAAOb,OAAOC,SAAS6S,UAC3L,IAAK7P,EAAYqN,EAAQvP,OAAQoC,GAAS,MAAM,IAAIvC,MAAM,kBAAoBuC,EAAS,0BAA4BmN,EAAQvP,OAAOrC,YAClI,IAAI8P,EAAOnM,EAAQmM,KACnB,OAAO8B,EAAQ3F,QAAQ,CACnB4D,OAAQA,EACRpL,OAAQA,EACRqL,KAAMA,GAEd,IAAGxE,MAAK,SAASwE,GACb,OAAOwE,EAAQ,CACXpE,KAAMnP,EAAoBkG,kBAAkBE,SAC5CkN,IAAKtT,EAAoBsG,iBAAiBC,QAC1CwI,KAAMA,GAEd,IAAG,SAASlO,GACR,IAAIiL,EAAQ/C,EAAelI,GAAK6I,QAAQ,WAAY,IAAKwH,EAAOrQ,EAAIqQ,KACpE,OAAOqC,EAAQ,CACXpE,KAAMnP,EAAoBkG,kBAAkBE,SAC5CkN,IAAKtT,EAAoBsG,iBAAiBE,MAC1CsF,MAAOA,EACPoF,KAAMA,GAEd,MAAM3G,KAAKhB,GAAewD,OAAM,SAASlM,GACrC,GAAIgQ,GAAWA,EAAQ6C,YAAa,OAAO7C,EAAQ6C,YAAY7S,GAC/D,MAAMA,CACV,GACJ,EAAGsR,GAAsBnS,EAAoBkG,kBAAkBE,UAAY,SAAS0I,EAAQpL,EAAQd,GAChG,IAAK0P,GAA0B1P,EAAQiL,MAAO,CAC1C,IAAIpK,EAASoN,EAAUuB,GAAoBxP,EAAQiL,MACnD,IAAKgD,EAAS,MAAM,IAAI1P,MAAM,2DAA6DyB,EAAQjF,KAAO,SAAW+F,EAAS,OAASnD,OAAOC,SAASC,SAAW,KAAOF,OAAOC,SAASY,KAAOb,OAAOC,SAAS6S,UAChN,IAAK7P,EAAYqN,EAAQvP,OAAQoC,GAAS,MAAM,IAAIvC,MAAM,mBAAqBuC,EAAS,2BAA6BD,EAAUoN,EAAQvP,OACvIqC,MAAMC,QAAQH,GAAW,IAAMA,EAAQqO,KAAK,OAAS,IAAM/S,EAAQ0E,GAAW,UAAYA,EAAQxE,WAAawE,EAAQxE,aAEvH,GADAoT,GAAuBzP,EAAQiL,MAC3BjL,EAAQ0Q,MAAQtT,EAAoBsG,iBAAiBE,MAAO,CAC5D,IAAI3F,EAAM,IAAIM,MAAMyB,EAAQkJ,OAE5B,OADAlJ,EAAQsO,OAASrQ,EAAIqQ,KAAOtO,EAAQsO,MAC7BL,EAAQ0C,QAAQ1S,EAAK,KAChC,CACA,GAAI+B,EAAQ0Q,MAAQtT,EAAoBsG,iBAAiBC,QAAS,CAC9D,IAAIwI,EAAOnM,EAAQmM,MAAQnM,EAAQ+Q,SACnC,OAAO9C,EAAQ0C,QAAQ,KAAM,CACzBzE,OAAQA,EACRpL,OAAQA,EACRqL,KAAMA,GAEd,CACJ,CACJ,EAAGoD,IAAwByB,GAAkB,mBAAqBhL,QAAU,iBAAmBA,OAAOC,SAAW,SAASzE,GACtH,cAAcA,CAClB,EAAI,SAASA,GACT,OAAOA,GAAO,mBAAqBwE,QAAUxE,EAAI0E,cAAgBF,QAAUxE,IAAQwE,OAAOpK,UAAY,gBAAkB4F,CAC5H,EAEA,SAASyP,GAAeC,GACpB,GAAIvT,SAAWA,OAAOoC,OAAQ,CAC1B,IACI,IAAKmR,EAAMhF,OAAQ,MAGvB,CAFE,MAAOjO,GACL,MACJ,CACA,IAAIiO,EAASgF,EAAMhF,OAAQpL,EAASoQ,EAAMpQ,OAAQd,EAAU,SAASA,GACjE,IAAI5D,EAAM+U,OAAgB,EAC1B,IACqB/U,EAAO4D,EAAxBmR,EAAiChQ,KAAKiQ,MAAMhV,EAGhD,CAFE,MAAO6B,GACL,MACJ,CACA,GAAIkT,GAAiB,iBAAc,IAAWA,EAAgB,YAAcH,GAAgBG,KAAmB,OAASA,IAAkBA,EAAgBA,EAAc/T,EAAoBiH,aAAaC,aAAe,iBAAc,IAAW6M,EAAgB,YAAcH,GAAgBG,KAAmB,OAASA,GAAiBA,EAAc5E,MAAQ,iBAAmB4E,EAAc5E,MAAQiE,GAAsBW,EAAc5E,MAAO,OAAO4E,CACjc,CAR4D,CAQ1DD,EAAM/E,MACR,GAAInM,EAAS,CACT,IAAKA,EAAQkO,cAAgB,iBAAmBlO,EAAQkO,aAAc,MAAM,IAAI3P,MAAM,yCACtF,IAAMyB,EAAQkO,aAAatP,QAAQxB,EAAoB2H,gBAAkB,IAAM/E,EAAQkO,aAAatP,QAAQxB,EAAoB4H,iBAAmBlE,EAASd,EAAQkO,eAC/J,IAAMvC,EAAO0F,iBAAiBzS,QAAQoB,EAAQqM,MAC/CV,EAAO0F,iBAAiBjS,KAAKY,EAAQqM,IAChCxM,EAAeqM,KAAWlM,EAAQ4Q,gBACnC5Q,EAAQmM,OAASnM,EAAQmM,KAAO,SAASD,EAAQpL,EAAQU,GACrD,OAAOyF,EAAc,CACjBzF,IAAKxB,EAAQmM,OACd,SAAS/P,GACR,GAAI,iBAAc,IAAWA,EAAO,YAAcyP,EAAkBzP,KAAU,OAASA,EAAM,OAAOkQ,EAAalQ,EAAMgB,EAAoBmH,oBAAoBT,QAAU+I,EAAkBX,EAAQpL,EAAQ1E,GAAQkQ,EAAalQ,EAAMgB,EAAoBmH,oBAAoBX,OAAS,SAASsI,EAAQpL,EAAQU,GAC5S,IAAIvD,EAAM,IAAIM,MAAMiD,EAAI4M,aAExB,OADA5M,EAAI6M,WAAapQ,EAAIqQ,KAAO9M,EAAI6M,UACzBpQ,CACX,CAJuR,CAIrR,EAAG,EAAG7B,GAAQkQ,EAAalQ,EAAMgB,EAAoBmH,oBAAoBC,SAAW,SAAS0H,EAAQpL,EAAQkK,GAC3G,OAAOrN,OAAO8J,QAAU,IAAI9J,OAAO8J,SAAQ,SAASS,EAASc,GACzD,OAAO6D,EAAkBX,EAAQpL,EAAQkK,EAAKoC,SAAvCP,CAAiD3E,EAASc,EACrE,IAAKmE,EAAwBjB,EAAQpL,EAAQkK,EACjD,CAJsF,CAIpFkB,EAAQpL,EAAQ1E,GAAQkQ,EAAalQ,EAAMgB,EAAoBmH,oBAAoBE,eAAiB0I,EAAwBjB,EAAQpL,EAAQ1E,GAAQkQ,EAAalQ,EAAMgB,EAAoBmH,oBAAoBG,OAAS,SAASwH,EAAQpL,EAAQ1E,GAC/O,OAAO,IAAIkV,OAAOlV,EAAKoS,WAC3B,CAF0N,CAExN,EAAG,EAAGpS,QAAQ,CACpB,IAAGoF,GACP,CAhBgC,CAgB9B0K,EAAQpL,IACV0P,GAAsBxQ,EAAQuM,MAAML,EAAQpL,EAAQd,IAGhE,CACJ,CACJ,CACA,SAASuR,GAAgBL,GACrB,IACIA,EAAMhF,MAGV,CAFE,MAAOjO,GACL,MACJ,CACAgT,GAAe,CACX/E,OAAQgF,EAAMhF,QAAUgF,EAAMM,cAC9B1Q,OAAQoQ,EAAMpQ,QAAUoQ,EAAMO,eAAiBP,EAAMO,cAAc3Q,OACnEqL,KAAM+E,EAAM/E,MAEpB,CAGA,SAASvP,GAAQqR,GACb,OAAO1R,EAAqB+N,KAAI,WAC5B,IAAK2D,EAAQlT,KAAM,MAAM,IAAIwD,MAAM,yBACnC,IAAIxD,EAAOkT,EAAQlT,KAAM2W,OAAe,EAAQhT,OAAS,EACzD,GAAI,iBAAmBuP,EAAQtQ,OAAQ,CACnC,IAAIgU,EAAKC,SAASC,eAAe5D,EAAQtQ,QACzC,IAAKgU,EAAI,MAAM,IAAIpT,MAAM,2BAA6BrD,OAAOU,UAAUS,SAAS1B,KAAKsT,EAAQtQ,QAAU,6BACvG,GAAI,WAAagU,EAAGG,QAAQC,cAAe,MAAM,IAAIxT,MAAM,2BAA6BrD,OAAOU,UAAUS,SAAS1B,KAAKsT,EAAQtQ,QAAU,oBACzI,IAAKgU,EAAGtR,cAAe,MAAM,IAAI9B,MAAM,wFACvCmT,EAAeC,EAAGtR,aACtB,MAAO,GAAI4N,EAAQtQ,kBAAkBqU,kBAAmB,CACpD,GAAI,WAAa/D,EAAQtQ,OAAOmU,QAAQC,cAAe,MAAM,IAAIxT,MAAM,2BAA6BrD,OAAOU,UAAUS,SAAS1B,KAAKsT,EAAQtQ,QAAU,oBACrJ,GAAIsQ,EAAQtQ,SAAWsQ,EAAQtQ,OAAO0C,cAAe,MAAM,IAAI9B,MAAM,wFACrE0P,EAAQtQ,QAAUsQ,EAAQtQ,OAAO0C,gBAAkBqR,EAAezD,EAAQtQ,OAAO0C,cACrF,MAAOqR,EAAezD,EAAQtQ,OAC9B,IAAK+T,EAAc,MAAM,IAAInT,MAAM,gFACnC,IAAIR,EAAM2T,EACVhT,EAASuP,EAAQvP,QAAUtB,EAAoB+H,SAC/C,IAAI8F,EAAOgD,EAAQlT,KAAO,IAAM6L,IAChC,GAAI/G,EAAe9B,GAAM,MAAM,IAAIQ,MAAM,2BACzC,IAAI0T,GAAY,EAAIC,EAAkBvG,EAAOuG,gBAAgB5W,IAAIyC,GAC5DmU,IACDA,EAAkB,GAClBvG,EAAOuG,gBAAgB1P,IAAIzE,EAAKmU,IAEpC,IAAIC,EAAiB5V,EAAqB+N,KAAI,WAC1C,GAAI,SAAStM,EAAQiB,GACjB,IAAImT,EAAezR,EAAY1B,GAC/B,GAAImT,EAAc,OAAOA,IAAiBpU,EAC1C,GAAIiB,IAAUjB,EAAQ,OAAO,EAC7B,GAAI,WACA,IAAID,EAAMN,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAKE,OAC3E,IACI,GAAII,EAAImC,IAAK,OAAOnC,EAAImC,GACb,CAAb,MAAOjC,GAAM,CACf,GAAIH,EAAUC,KAASA,EAAK,OAAOA,EACnC,IACI,GAAIiB,EAAiBrB,OAAQI,IAAQJ,OAAOuC,IAAK,OAAOvC,OAAOuC,GACpD,CAAb,MAAOjC,GAAM,CACf,IACI,GAAIe,EAAiBjB,EAAKJ,SAAWA,OAAOuC,IAAK,OAAOvC,OAAOuC,GACpD,CAAb,MAAOjC,GAAM,CACf,IAAK,IAAIoU,EAAM,EAAGC,EAAsB,SAASC,EAAkBxU,GAC/D,IAAK,IAAIoB,EAAS,GAAIqT,EAAM,EAAGC,EAAcpT,EAAUtB,GAAMgS,EAAW,MAAQ0C,EAAc,EAAIA,EAAY/U,OAAQ8U,EAAMzC,EAAUyC,IAAO,CACzI,IAAIhT,EAAQiT,EAAYD,GACxBrT,EAAOC,KAAKI,GACZ,IAAK,IAAIkT,EAAM,EAAGC,EAAsBJ,EAAkB/S,GAAQ4Q,EAAW,MAAQuC,EAAsB,EAAIA,EAAoBjV,OAAQgV,EAAMtC,EAAUsC,IAAO,CAC9J,IAAIE,EAAaD,EAAoBD,GACrCvT,EAAOC,KAAKwT,EAChB,CACJ,CACA,OAAOzT,CACX,CAVwC,CAUtCpB,GAAM8U,EAAW,MAAQP,EAAsB,EAAIA,EAAoB5U,OAAQ2U,EAAMQ,EAAUR,IAAO,CACpG,IAAI7S,EAAQ8S,EAAoBD,GAChC,IACI,GAAI7S,EAAMU,IAAK,OAAOV,EAAMU,GACjB,CAAb,MAAOjC,GAAM,CACf,GAAIH,EAAU0B,KAAWA,EAAO,OAAOA,CAC3C,CACJ,CA7BI,CA6BFP,KAAWA,EAAO,OAAO,EAC3B,IAAK,IAAI6T,EAAO,EAAGC,EAAc1T,EAAUrB,GAASgV,EAAY,MAAQD,EAAc,EAAIA,EAAYrV,OAAQoV,EAAOE,EAAWF,IAAQ,GAAIC,EAAYD,KAAU7T,EAAO,OAAO,EAChL,OAAO,CACX,CApCI,CAoCFtB,OAAQI,GAAM,OAAO,SAASA,GAC5B,IAAIwM,EAAU9M,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAK,IAAK1C,EAAO0C,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAK,SAAUwK,EAAU0D,EAAO2B,cAAchS,IAAIyC,GACzM,OAAIkK,IACJA,EAAU,IAAI1L,EACdoP,EAAO2B,cAAc9K,IAAIzE,EAAKkK,IAC7B,IAAMsC,GAAWlB,YAAW,WACzB,OAAOpB,EAAQe,OAAO,IAAIzK,MAAMxD,EAAO,uBAAyBwP,EAAU,MAC9E,GAAGA,GACItC,EACX,CATuB,CASrBlK,EAAKkQ,EAAQ1D,SAAWpN,EAAOqI,qBACrC,IAAGmC,MAAK,WACJ,IAAI7G,GAAUrD,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAK,CAAC,GAAGqD,OACnF,GAAIyG,EAAa7I,KAAYoC,EAAQ,OAAOuM,EAAStP,EACzD,IAAG4J,MAAK,WACJ,IAAI7G,GAAUrD,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAK,CAAC,GAAGqD,OACnF,GAAIyG,EAAa7I,GAAS,CACtB,IAAKkC,EAAYlC,EAAQoC,GAAS,MAAM,IAAIvC,MAAM,wBAA0BuC,EAAS,0BAA4BpC,EAAOrC,YACxHqC,EAASoC,CACb,CACA,GAAI,iBAAmBpC,IAAWqC,MAAMC,QAAQtC,GAAS,MAAM,IAAIuD,UAAU,2CAC7E,IAAIgR,EAAevU,EACnB,OAAO,IAAInC,GAAqB,SAAS2L,EAASc,GAC9C,IAAIkK,OAAmB,EAsBvB,GArBAjF,EAAQ2C,eAAiB,SAAS3F,EAAMqF,GACpC3E,EAAOwD,kBAAkBlE,GAAQqF,CACrC,CAFyB,CAEvBrF,EAAMiI,EAAmB,CACvBnY,KAAMA,EACN4C,OAAQI,EACRW,OAAQuU,EACRtC,QAAS,SAAS1S,EAAKkB,GACdlB,IACDgU,GAAY,EACZC,EAAgBpP,OAAOoP,EAAgBtT,QAAQuT,EAAgB,KAEnElU,EAAM+K,EAAO/K,GAAOiK,EAAQ/I,EAChC,IAEJ4O,GAAYhQ,EAAK,CACbwO,KAAMnP,EAAoBkG,kBAAkBC,QAC5C0H,KAAMA,EACNlQ,KAAMA,EACNoR,KAAM8B,EAAQ9B,KACdyE,cAAe3C,EAAQ2C,eACxBqC,GAAc9I,MAAMnB,GACnBiF,EAAQ2C,cAAe,OAAO1I,IAClC,IAAIiL,EAAahW,EAAOsI,YAAa2N,EAAanF,EAAQ1D,SAAWpN,EAAOyI,YAAayN,EAAY,IACrGhK,YAAW,SAASiK,IAChB,IAAKrB,EAAW,CACZ,GAAIpS,EAAe9B,GAAM,OAAOmV,EAAiBxC,IAAM1H,EAAO,IAAIzK,MAAM,qBAAuBxD,EAAO,qBAAuBiO,EAAO,IAAIzK,MAAM,qBAAuBxD,EAAO,gBAG5K,GAFAoY,EAAajR,KAAKqR,IAAIJ,EAAaE,EAAW,IAC7C,IAAMD,IAAeA,EAAalR,KAAKqR,IAAIH,EAAaC,EAAW,IAChEH,EAAiBxC,IAAK,CACtB,IAAK,IAAM0C,EAAY,OACvBC,EAAYnR,KAAKsR,IAAIJ,EAAY,IACrC,KAAO,CACH,GAAI,IAAMD,EAAY,OAAOnK,EAAO,IAAIzK,MAAM,0BAA4BxD,EAAO,OAAS0D,IAAoB,OAAStB,EAAOsI,YAAc,OAC5I,GAAI,IAAM2N,EAAY,OAAOpK,EAAO,IAAIzK,MAAM,+BAAiCxD,EAAO,OAAS0D,IAAoB,QAAUwP,EAAQ1D,SAAWpN,EAAOyI,aAAe,MAC1K,CACAyD,WAAWiK,EAAOD,EACtB,CACJ,GAAGA,EACP,GACJ,IAQA,OAPAlB,EAAehI,OAAM,YAChB,SAASc,GACNU,EAAO2D,yBAAyBrE,IAAQ,CAC5C,CAFC,CAECA,GACFwE,GAAuBxE,EAC3B,IACAiH,EAAgB9S,KAAK+S,GACdA,CACX,GACJ,CACA,SAASxV,GAAMgB,EAAQ5C,EAAMoR,EAAM8B,GAI/B,OAHCA,EAAUA,GAAW,CAAC,GAAGtQ,OAASA,EACnCsQ,EAAQlT,KAAOA,EACfkT,EAAQ9B,KAAOA,EACRvP,GAAQqR,EACnB,CACA,SAASpR,GAAa9B,EAAMoR,EAAM8B,GAC9B,IAAIlQ,EAAM4C,IACV,OAAO5C,EAAMpB,GAAMoB,EAAKhD,EAAMoR,EAAM8B,GAAW,IAAI1R,GAAqB,SAAS2L,EAASc,GACtF,OAAOA,EAAO,IAAIzK,MAAM,iCAC5B,GACJ,CACA,SAASzB,KACL,IAAImR,EAAUxQ,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAK,CAAC,EAChF,IAAKwQ,EAAQtQ,OAAQ,MAAM,IAAIY,MAAM,2BACrC,IAAIR,EAAMkQ,EAAQtQ,OAClB,MAAO,CACHqP,KAAM,SAASjS,EAAMoR,GACjB,OAAOxP,GAAMoB,EAAKhD,EAAMoR,EAAM8B,EAClC,EAER,CAxNAtC,EAAO0F,iBAAmB1F,EAAO0F,kBAAoB,GA0DrD1F,EAAOsF,eAAiBA,GACxBtF,EAAOuG,gBAAkBvG,EAAOuG,iBAAmB,IAAIrQ,EA8JvD8J,EAAOqB,KAAOrQ,GACd,IAAI8W,GAAiB,mBAAqBzN,QAAU,iBAAmBA,OAAOC,SAAW,SAASzE,GAC9F,cAAcA,CAClB,EAAI,SAASA,GACT,OAAOA,GAAO,mBAAqBwE,QAAUxE,EAAI0E,cAAgBF,QAAUxE,IAAQwE,OAAOpK,UAAY,gBAAkB4F,CAC5H,EACA,SAASxE,GAAOiR,GACZ,IAAKA,EAAQlT,KAAM,MAAM,IAAIwD,MAAM,yBACnC,IAAK0P,EAAQ3F,QAAS,MAAM,IAAI/J,MAAM,4BACtC,IA6FQgM,EA7FJxP,EAAOkT,EAAQlT,KAAMgD,EAAMkQ,EAAQtQ,OAAQe,EAASuP,EAAQvP,OAAQgV,EAAkB,CACtFpL,QAAS2F,EAAQ3F,QACjBwI,YAAa7C,EAAQ0F,cAAgB,SAAS1V,GAC1C,MAAMA,CACV,EACAN,OAAQI,EACRW,OAAQA,GAAUtB,EAAoB+H,SACtCpK,KAAMA,GACP6Y,EAAkB,SAASC,EAAmBC,EAAOxD,GACpD,IAAIvV,EAAO+Y,EAAM/Y,KAAMgD,EAAM+V,EAAM/V,IAAKW,EAASoV,EAAMpV,OACvD,IAAK3D,GAAQ,iBAAmBA,EAAM,MAAM,IAAIwD,MAAM,yCACtD,GAAIwC,MAAMC,QAAQjD,GAAM,CACpB,IAAK,IAAIgW,EAAsB,GAAIC,EAAM,EAAGC,EAAQlW,EAAK8U,EAAW,MAAQoB,EAAQ,EAAIA,EAAMvW,OAAQsW,EAAMnB,EAAUmB,IAAO,CACzH,IAAI5X,EAAO6X,EAAMD,GACjBD,EAAoB3U,KAAKyU,EAAmB,CACxC9Y,KAAMA,EACN2D,OAAQA,EACRX,IAAK3B,GACNkU,GACP,CACA,MAAO,CACHlF,OAAQ,WACJ,IAAK,IAAI8I,EAAM,EAAGC,EAAW,MAAQJ,EAAsB,EAAIA,EAAoBrW,OAAQwW,EAAMC,EAAUD,IAAOH,EAAoBG,GAAK9I,QAC/I,EAER,CACA,GAAIrK,MAAMC,QAAQtC,GAAS,CACvB,IAAK,IAAI0V,EAAuB,GAAIC,EAAO,EAAGC,EAAW5V,EAAQ6V,EAAY,MAAQD,EAAW,EAAIA,EAAS5W,OAAQ2W,EAAOE,EAAWF,IAAQ,CAC3I,IAAIG,EAAQF,EAASD,GACrBD,EAAqBhV,KAAKyU,EAAmB,CACzC9Y,KAAMA,EACNgD,IAAKA,EACLW,OAAQ8V,GACTlE,GACP,CACA,MAAO,CACHlF,OAAQ,WACJ,IAAK,IAAIqJ,EAAO,EAAGC,EAAY,MAAQN,EAAuB,EAAIA,EAAqB1W,OAAQ+W,EAAOC,EAAWD,IAAQL,EAAqBK,GAAMrJ,QACxJ,EAER,CACA,IAAIuJ,EAAmBhF,GAAmB,CACtC5U,KAAMA,EACNgD,IAAKA,EACLW,OAAQA,IAIZ,GAFAX,GAAOA,IAAQX,EAAoB+H,WAAapH,EAAM4N,EAAO0D,iBAC7D3Q,EAASA,GAAUtB,EAAoB+H,SACnCwP,EAAkB,MAAM5W,GAAOW,EAAS,IAAIH,MAAM,uCAAyCxD,EAAO,cAAgB2D,EAAOrC,WAAa,SAAW0B,IAAQ4N,EAAO0D,gBAAkB,WAAa,aAAe,WAAatR,EAAM,IAAIQ,MAAM,uCAAyCxD,EAAO,SAAWgD,IAAQ4N,EAAO0D,gBAAkB,WAAa,aAAe,WAAa3Q,EAAS,IAAIH,MAAM,uCAAyCxD,EAAO,cAAgB2D,EAAOrC,YAAc,IAAIkC,MAAM,uCAAyCxD,GAC/gB,IAAIqU,EAAmBzD,EAAOyD,iBAAkBQ,EAAgBR,EAAiBrU,GAC5E6U,IACDA,EAAgB,IAAI/N,EACpBuN,EAAiBrU,GAAQ6U,GAE7B,IAAIK,EAAeL,EAActU,IAAIyC,GAChCkS,IACDA,EAAe,CAAC,EAChBL,EAAcpN,IAAIzE,EAAKkS,IAE3B,IAAI2E,EAAYlW,EAAOrC,WAAYwY,EAAiB5E,EAA6B,iBAAG6E,OAAgB,EAYpG,OAXIvN,EAAa7I,IACRmW,IACDA,EAAiB,GACjB5E,EAA6B,iBAAI4E,GAErCC,EAAgB,CACZvG,MAAO7P,EACP4R,SAAUA,GAEduE,EAAezV,KAAK0V,IACjB7E,EAAa2E,GAAatE,EAC1B,CACHlF,OAAQ,WACA6E,WACOA,EAAa2E,GACpB7W,GAAO,IAAM7C,OAAOwH,KAAKuN,GAAcvS,QAAUkS,EAAc/M,OAAO9E,GACtE+W,GAAiBD,EAAe/R,OAAO+R,EAAejW,QAAQkW,EAAe,IAErF,EAER,CAxEqB,CAwEnB,CACE/Z,KAAMA,EACNgD,IAAKA,EACLW,OAAQA,GACTgV,GACH,GAAIzF,EAAQ1H,KAAM,CACd,IAAIwO,EAAWrB,EAAgBpL,QAC/BoL,EAAgBpL,QAAU/B,GAAK,WAE3B,OADAqN,EAAgBxI,SACT2J,EAASrO,MAAMtM,KAAMqD,UAChC,GACJ,CACA,GAAIiW,EAAgB/V,QAAUsQ,EAAQ+G,aAAc,IAAIC,GAChD1K,OAAU,EACdA,EAAUlB,YAAW,SAAS6L,IAC1B3K,EAAUlB,WAAW6L,EAAa,IAClC,WACQnX,GAAO,iBAAc,IAAWA,EAAM,YAAc0V,GAAe1V,KAAS8B,EAAe9B,KAC3FkX,EAAS7J,SACTsI,EAAgB5C,YAAY,IAAIvS,MAAM,yCAE7C,EAAE5D,MACP,GAAG,IACI,CACHyQ,OAAQ,WACJV,aAAaH,EACjB,IAGR,MAAO,CACHa,OAAQ,WACJwI,EAAgBxI,QACpB,EAER,CACA,SAASrO,GAAIhC,EAAMkT,EAAS3F,GAOxB,MANI,mBAAqB2F,IACrB3F,EAAU2F,EACVA,EAAU,CAAC,IAEdA,EAAUA,GAAW,CAAC,GAAGlT,KAAOA,EACjCkT,EAAQ3F,QAAUA,GAAW2F,EAAQ3F,QAC9BtL,GAAOiR,EAClB,CACA,SAAShR,GAAYlC,GACjB,IAAIkT,EAAUxQ,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAK,CAAC,EAAG6K,EAAU7K,UAAU,GACnG,mBAAqBwQ,IACrB3F,EAAU2F,EACVA,EAAU,CAAC,GAEfA,EAAUA,GAAW,CAAC,EACtB3F,EAAUA,GAAW2F,EAAQ3F,QAC7B,IAAIqL,EAAe1F,EAAQ0F,aAAc1L,EAAU,IAAI1L,GAAqB,SAAS2L,EAASc,IACzFiF,EAAUA,GAAW,CAAC,GAAGlT,KAAOA,EACjCkT,EAAQ1H,MAAO,EACf0H,EAAQ3F,QAAU,SAAS4I,GAEvB,GADAhJ,EAAQgJ,GACJ5I,EAAS,OAAOA,EAAQ4I,EAChC,EACAjD,EAAQ0F,aAAe,SAAS1V,GAE5B,GADA+K,EAAO/K,GACH0V,EAAc,OAAOA,EAAa1V,EAC1C,CACJ,IAAIkX,EAAenY,GAAOiR,GAE1B,OADAhG,EAAQmD,OAAS+J,EAAa/J,OACvBnD,CACX,CACA,SAAS/K,KACL,IAAI+Q,EAAUxQ,UAAUC,OAAS,QAAK,IAAWD,UAAU,GAAKA,UAAU,GAAK,CAAC,EAChF,MAAO,CACHuO,GAAI,SAASjR,EAAMuN,GACf,OAAOvL,GAAIhC,EAAMkT,EAAS3F,EAC9B,EAER,CAEA,SAASjL,YACEM,OAAOP,EAAoBiH,aAAaC,WAC/C3G,OAAOyX,oBAAoB,UAAW7D,GAC1C,CAJA5F,EAAOK,GAAKjP,GAKZ,IAAIL,GAAgBiE,IACpB,SAASrE,GAAcyB,GACnB,IAAImU,EAAkBvG,EAAOuG,gBAAgB5W,IAAIyC,GACjD,GAAImU,EAAiB,IAAK,IAAIrC,EAAM,EAAGE,EAAW,MAAQmC,EAAkB,EAAIA,EAAgBxU,OAAQmS,EAAME,EAAUF,IAAOqC,EAAgBrC,GAAK7G,OAAO,IAAIzK,MAAM,yCACrKoN,EAAO0J,mBAAqB1J,EAAO0J,kBAAkBxS,OAAO9E,GAC5D4N,EAAO2J,eAAiB3J,EAAO2J,cAAczS,OAAO9E,GACpD4N,EAAOuG,gBAAgBrP,OAAO9E,GAC9B4N,EAAOG,QAAQjJ,OAAO9E,GACtB4N,EAAO2B,cAAczK,OAAO9E,EAChC,CACA,IAAIvB,GAAS,KACb,SAASC,KA2BL,IAAI+E,EAAK8G,EA1BJqD,EAAO4J,cACRjN,EAAUiJ,IAAkB/P,EAAM7D,QAAQ6X,iBAAmBhU,EAAIgU,iBAAiB,UAAWlN,GAAW9G,EAAIiU,YAAY,YAAanN,GACpI,WACGA,EAAU,SAASwH,GACf,IAAI5D,EAAS4D,EAAM5D,OAAQpL,EAASgP,EAAMhP,OAAQmH,EAAU0D,EAAO2B,cAAchS,IAAI4Q,IAAW,IAAI3P,EACpG0L,EAAQC,QAAQ,CACZpH,OAAQA,IAEZ6K,EAAO2B,cAAc9K,IAAI0J,EAAQjE,EACrC,EAAG0D,EAAOK,GAAG5O,EAAoByG,mBAAmBE,MAAO,CACvDrF,OAAQtB,EAAoB+H,WAC7B,SAAS8G,GACR,IAAIC,EAASD,EAAKC,OAAQpL,EAASmL,EAAKnL,OACxC,OAAOwH,EAAQ,CACX4D,OAAQA,EACRpL,OAAQA,GAEhB,IACA,IAAIwH,EAAStK,EAAS2C,IACtB3C,GAAUqP,EAASrP,GAAQmM,MAAMxD,EACrC,CAlBC,GAmBDoF,EAAiB,CACbC,GAAIjP,GACJiQ,KAAMrQ,MAIdgP,EAAO4J,aAAc,CACzB,CACA9Y,KACA,EAAoB3B,EAAEkB,EAAqB,iBAAiB,WACxD,OAAOM,EACX,IACA,EAAoBxB,EAAEkB,EAAqB,WAAW,WAClD,OAAOO,CACX,IACA,EAAoBzB,EAAEkB,EAAqB,UAAU,WACjD,OAAOQ,EACX,IACA,EAAoB1B,EAAEkB,EAAqB,QAAQ,WAC/C,OAAOS,EACX,IACA,EAAoB3B,EAAEkB,EAAqB,UAAU,WACjD,OAAOU,EACX,IACA,EAAoB5B,EAAEkB,EAAqB,QAAQ,WAC/C,OAAOW,EACX,IACA,EAAoB7B,EAAEkB,EAAqB,WAAW,WAClD,OAAOY,EACX,IACA,EAAoB9B,EAAEkB,EAAqB,gBAAgB,WACvD,OAAOa,EACX,IACA,EAAoB/B,EAAEkB,EAAqB,UAAU,WACjD,OAAOc,EACX,IACA,EAAoBhC,EAAEkB,EAAqB,MAAM,WAC7C,OAAOe,EACX,IACA,EAAoBjC,EAAEkB,EAAqB,UAAU,WACjD,OAAOgB,EACX,IACA,EAAoBlC,EAAEkB,EAAqB,QAAQ,WAC/C,OAAOiB,EACX,IACA,EAAoBnC,EAAEkB,EAAqB,YAAY,WACnD,OAAOkB,EACX,IACA,EAAoBpC,EAAEkB,EAAqB,UAAU,WACjD,OAAOmB,CACX,IACA,EAAoBrC,EAAEkB,EAAqB,aAAa,WACpD,OAAOoB,CACX,IACA,EAAoBtC,EAAEkB,EAAqB,WAAW,WAClD,OAAOqB,EACX,IACArB,EAAoBP,QAAUS,CAClC,mBCnmDRjC,EAAOD,QAAU,EAAjB,KAGAC,EAAOD,QAAP,QAAyBC,EAAOD,0iDCJhC,gBAIA,aAUI,WACI0b,EACAC,EACAC,GAOAxb,KAAKyb,aAAeH,EAAmBvJ,KAAK0J,aAE5Czb,KAAK0b,SAAWF,EAEhBxb,KAAK2b,YAAcJ,EAEnB,IAAMK,EAAY5b,KAElBA,KAAK0b,SAAS9J,GACV,aACA,SAACkF,GACG8E,EAAUH,aAAe3E,EAAM/E,IACnC,IAGJ/R,KAAK0b,SAAS9J,GACV,eACA,SAACkF,GACG8E,EAAUC,aAAe/E,EAAM/E,IACnC,IAGJ/R,KAAK8b,QAAU9b,KAAK8b,QAAQC,KAAK/b,MACjCA,KAAKgc,QAAUhc,KAAKgc,QAAQD,KAAK/b,MACjCA,KAAKic,UAAYjc,KAAKic,UAAUF,KAAK/b,MACrCA,KAAKkc,YAAclc,KAAKkc,YAAYH,KAAK/b,MACzCA,KAAKmc,OAASnc,KAAKmc,OAAOJ,KAAK/b,MAC/BA,KAAKoc,SAAWpc,KAAKoc,SAASL,KAAK/b,MACnCA,KAAKqc,UAAYrc,KAAKqc,UAAUN,KAAK/b,MACrCA,KAAKsc,YAActc,KAAKsc,YAAYP,KAAK/b,MACzCA,KAAKuc,aAAevc,KAAKuc,aAAaR,KAAK/b,KAC/C,CAyFJ,OAvFI,YAAA8b,QAAA,WACI,OAAO9b,KAAKyb,YAChB,EAEM,YAAAO,QAAN,SAAcQ,sEACV,MAAO,CAAP,EAAOxc,KAAK2b,YAAYlZ,aAAa,UAAW+Z,WAG9C,YAAAP,UAAN,8EACI,MAAO,CAAP,EAAOjc,KAAK2b,YAAYlZ,aAAa,qBAGnC,YAAAyZ,YAAN,SAAkBO,sEACd,GAAqB,iBAAVA,EACP,MAAM,IAAItY,MAAM,0BAEpB,MAAO,CAAP,EAAOnE,KAAK2b,YAAYlZ,aAAa,0BAA2Bga,WAG9D,YAAAF,aAAN,SAAmBG,sEAEf,MAAO,CAAP,GADc,aAAM1c,KAAK0b,UACZiB,aAAa,CAACD,GAAO,mBAQtC,YAAAP,OAAA,SAAOrP,GAEH,IAAIA,GAAgC,mBAAbA,EAKnB,MAAM3I,MAAM,+BANCnE,KAEJ0b,SAAS9J,GAAG,aAAa,SAACkF,GAC/BhK,EAASgK,EAAM/E,KACnB,GAIR,EAOA,YAAAqK,SAAA,SAAStP,GAEL,IAAIA,GAAgC,mBAAbA,EAKnB,MAAM3I,MAAM,+BANCnE,KAEJ0b,SAAS9J,GAAG,eAAe,SAACkF,GACjChK,EAASgK,EAAM/E,KACnB,GAIR,EAOA,YAAAsK,UAAA,SAAUvP,GAEN,IAAIA,GAAgC,mBAAbA,EAKnB,MAAM3I,MAAM,+BANCnE,KAEJ0b,SAAS9J,GAAG,gBAAgB,SAACkF,GAClChK,EAASgK,EAAM/E,KACnB,GAIR,EAOA,YAAAuK,YAAA,SAAYxP,GAER,IAAIA,GAAgC,mBAAbA,EAKnB,MAAM3I,MAAM,+BANCnE,KAEJ0b,SAAS9J,GAAG,kBAAkB,SAACkF,GACpChK,EAASgK,EAAM/E,KACnB,GAIR,EACJ,EA5IA,GA6IA,UAAe6K,guDC1If,MAiCI,SAAY3K,EAAoB4K,GAAhC,WAAgC,KAAAA,eAAAA,EAhCxB,KAAAC,eAAkC,CACtCC,SAAU,CACNC,MAAO,GACPC,QAAS,CACLC,eAAe,EACfC,mBAAmB,GAEvBC,uBAAuB,GAE3BC,KAAM,CACFpL,GAAI,GACJqL,YAAa,KACbC,gBAAiB,CAAC,EAClBC,aAAa,IAGb,KAAAC,aAAuB,EACvB,KAAAC,kBAAwC,CAC5CX,SAAU,CACN9K,GAAIjS,KAAK8c,eAAeO,KAAKpL,GAC7B+K,MAAOhd,KAAK8c,eAAeC,SAASC,MACpCW,cAAc,EACdV,QAAS,EAAF,GACAjd,KAAK8c,eAAeC,SAASE,UAGxCI,KAAM,CACFpL,GAAIjS,KAAK8c,eAAeO,KAAKpL,GAC7B2L,iBAAkB,KAQ1B,KAAAC,WAAa,eAAC,sDAEV,GAAI,EAAKf,eAAeO,KAAKG,YACzB,MAAMrZ,MAAM,wCAEhB,EAAKsZ,aAAc,EAInBK,EAAQxK,SAAQ,SAACyK,GAEb,GAAIA,EAAON,YACP,MAAMtZ,MAAM,wCAGhB4Z,EAAOjB,eAAeC,SAASiB,SAC3B,EAAKlB,eAAeO,KAAKpL,GAC7B,EAAKyL,kBAAkBL,KAAKO,iBAAiB5Y,KAAK+Y,GAClDA,EAAOjB,eAAeO,KAAKG,aAAc,CAC7C,GACJ,EAEA,KAAA5L,GAAK,SACDO,EACArF,GAEA,OAAQqF,GACJ,IAAK,oBACD,EAAK2K,eAAeC,SAASkB,qBAAuBnR,EACpD,MAGJ,IAAK,eACD,EAAKgQ,eAAeC,SAASmB,oBAAsBpR,EACnD,MAGJ,IAAK,OACD,EAAKgQ,eAAeC,SAASoB,gBAAkBrR,EAC/C,MAGJ,IAAK,UACD,EAAKgQ,eAAeO,KAAKE,gBAAyB,QAAIzQ,EACtD,MAQJ,QACI,EAAKgQ,eAAeO,KAAKE,gBAAgBpL,GAAQrF,EAI7D,EAEA,KAAA5L,IAAM,SAAOkd,GAAqB,sGACf,SAAMpe,KAAK6c,eAAeuB,WAqGzC,OArGMC,EAAS,SAEfvd,OAAOwd,QAAQD,GAAQ/K,SAEnB,SAA4B,OAAC1K,EAAG,KAAE/G,EAAK,KACnC,OAAQ+G,GACJ,IAAK,QACD,EAAKkU,eAAeC,SAASC,MAAQnb,EACrC,MAEJ,IAAK,OACD,EAAKib,eAAeC,SAASwB,SAAW1c,EACxC,EAAK6b,kBAAkBX,SAASwB,SAAW1c,EAC3C,MAEJ,IAAK,UAOD,GALA,EAAKib,eAAeC,SAASE,QAAU,CACnCE,mBAAmB,EACnBD,eAAe,GAGE,iBAAVrb,EACP,OAAQA,GACJ,IAAK,UACD,EAAKib,eAAeC,SAASE,QAAQC,eACjC,EACJ,MAEJ,IAAK,kBACD,EAAKJ,eAAeC,SAASE,QAAQE,mBACjC,OAILxW,MAAMC,QAAQ/E,IACrBA,EAAMyR,SAAQ,SAACkL,GACX,OAAQA,GACJ,IAAK,UACD,EAAK1B,eAAeC,SAASE,QAAQC,eACjC,EACJ,MAEJ,IAAK,kBACD,EAAKJ,eAAeC,SAASE,QAAQE,mBACjC,EAIhB,IAEJ,MAGJ,IAAK,cAKD,GAHqB,iBAAVtb,GAAgC,WAAVA,GAC7B8E,MAAMC,QAAQ/E,IAAUA,EAAM4c,SAAS,UAE9B,CACT,IAAIC,EAAa,EAAK5B,eAAyB,SAAc,WACzD4B,IACA,EAAK5B,eAAyB,SAAc,WAAI,CAAC,EACjD4B,EAAa,EAAK5B,eAAyB,SAAc,YAE7D4B,EAAuB,YAAI,EAC3BA,EAAiC,sBAAI,EAEzC,EAAK5B,eAAeO,KAAKC,YAAczb,EACvC,MAGJ,IAAK,SACD,EAAKib,eAAeC,SAAS4B,UAAY9c,EACzC,MAGJ,IAAK,iBACD,EAAKib,eAAeC,SAAS6B,eAAiB/c,EAG1D,IAGEgd,EAAgB7e,KAAK0d,kBAAkBL,KAC7Crd,KAAK0d,kBAAoB,CACrBX,SAAU,EAAF,KACD/c,KAAK0d,kBAAkBX,UAAQ,CAClC9K,GAAIjS,KAAK8c,eAAeO,KAAKpL,GAC7B+K,MAAOhd,KAAK8c,eAAeC,SAASC,MACpCW,cAAc,EACdV,QAAS,EAAF,GACAjd,KAAK8c,eAAeC,SAASE,WAGxCI,KAAM,EAAF,KACGwB,GAAa,CAChB5M,GAAIjS,KAAK8c,eAAeO,KAAKpL,MAI9B,CAAP,EAAOjS,KAAKyd,YAAczd,KAAK0d,kBAAoB1d,KAAK8c,wBApKxD9c,KAAK8c,eAAeO,KAAKpL,GAAKA,CAClC,EAnCS,EAAA6M,UAAAA,EA0MA,EAAAC,qBAAuB,SAChC9M,EACA4K,GAEA,IAAM5K,IAAM4K,EAAiB,MAAM1Y,MAAM,kDAEzC,OAAO,IAAI2a,EAAU7M,EAAI4K,EAC7B,glEC1NA,gBAEA,YACA,SAUA,aAMI,WACI9K,EACAwJ,EACAC,EACAwD,GAJJ,WAcA,KAAA/S,MAAQ,WACJ,OAAO,IAAI,UAAM,EAAKgT,MAAMhT,MAAO,EAAK0P,YAAa,CACjDuD,cAAe,EAAKC,gBAAgBD,eAE5C,EAEA,KAAAE,oBAAsB,SAClBC,GAEA,OAAO,EAAK1D,YACPlZ,aAAa,sBAAuB4c,GACpC9R,KAAK,EAAA+R,QACLvP,MAAM,EAAAH,QACf,EAEA,KAAA2P,oBAAsB,WAClB,OAAO,EAAK5D,YACPlZ,aAAa,uBACb8K,KAAK,EAAA+R,QACLvP,MAAM,EAAAH,QACf,EA5BI5P,KAAKif,MAAQlN,EACb/R,KAAK2b,YAAcJ,EACnBvb,KAAK0b,SAAWF,EAEhBxb,KAAKwf,YAAcxf,KAAKwf,YAAYzD,KAAK/b,MACzCA,KAAKmf,gBAAkBH,CAC3B,CAwDJ,OAzBU,YAAAQ,YAAN,SACIC,EACA5L,sEAEA,GAAuB,kBAAZ4L,EACP,MAAM,IAAI5X,WACN,aACI,EAAA6X,eAAeC,WAAWH,YAAYI,qBAKlD,IAAI/L,aAAO,EAAPA,EAASjO,UAAsC,iBAApBiO,EAAQjO,QACnC,MAAM,IAAIiC,WACN,aACI,EAAA6X,eAAeC,WAAWH,YAAYK,oBAKlD,MAAO,CAAP,EAAO7f,KAAK2b,YACPlZ,aAAa,cAAe,CAAEgd,QAAO,EAAE5L,QAAO,IAC9CtG,KAAK,EAAA+R,QACLvP,MAAM,EAAAH,iBAEnB,EA1EA,GAAa,EAAAkQ,UAAAA,yKCXb,gBAgBA,aAaI,WACIxE,EAKAC,EACAC,EACA3H,GAMA7T,KAAK+f,aAAezE,EAAmBvJ,KAAKgO,aAE5C/f,KAAKif,MAAQ3D,EAAmBvJ,KAAKlJ,MAEjCyS,EAAmBvJ,KAAKiO,cACxBhgB,KAAK6b,aAAeP,EAAmBvJ,KAAKiO,aAOhDhgB,KAAKigB,OAAS3E,EAAmBvJ,KAAKkO,OAEtCjgB,KAAK2b,YAAcJ,EAEnBvb,KAAK0b,SAAWF,EAEhBxb,KAAKkgB,SAAWrM,GAAW,CAAC,EAE5B,IAAMsM,EAAYngB,KAElBA,KAAK0b,SAAS9J,GACV,aACA,SAACkF,GACGqJ,EAAUlB,MAAQnI,EAAM/E,IAC5B,IAGJ/R,KAAK0b,SAAS9J,GACV,eACA,SAACkF,GACGsJ,QAAQC,IAAI,6BAA8BvJ,EAAM/E,MAChDoO,EAAUtE,aAAe/E,EAAM/E,IACnC,GAER,CA4LJ,OArLI,YAAA+J,QAAA,WACI,OAAO9b,KAAKif,KAChB,EAgBA,YAAAqB,SAAA,SAASC,EAAa1M,GACV,OAA6BA,GAAW,CAAC,GAAC,iBAA1C2M,OAAgB,IAAG,GAAK,EACxB,GAA0BxgB,KAAKkgB,SAASO,gBAAkB,CAAC,GAAC,cAA5DC,OAAa,IAAG,YAAK,EAEvBC,EAAOJ,EAAIK,MAAM,KACnB/e,EAAQ2e,GACNxgB,KAAK6b,cACL7b,KAAKif,MACP4B,EAAS7gB,KAAK+f,aAAac,OAI/B,GAFkD,IAA9B/f,OAAOwH,KAAKzG,GAAOyB,OAGnC,MAAM,IAAIa,MACN,mEAIR,IACI,IAAI,GAAW,EACX,GAAc,EAClBwc,EAAKrN,SAAQ,SAAC1K,EAAsBG,GAChC,GAAI,EACI,EACA,GAAc,EAEd,GAAW,MAJnB,CAUA,KADA8X,EAASA,EAAOC,MAAK,SAACC,GAAoB,OAAAA,EAAER,MAAQ3X,CAAV,KAEtC,MAAMzE,MAAM,oBAKhB,GAFAtC,EAAQA,EAAM+G,GAGY,UAArBiY,EAAOG,WACiB,iBAArBH,EAAOG,YACS,IAApBH,EAAOI,UACPN,EAAKrd,SAAWyF,EAAQ,EAGrB,GACmB,UAArB8X,EAAOG,WACiB,iBAArBH,EAAOG,YACS,IAApBH,EAAOI,UACPN,EAAKrd,SAAWyF,EAAQ,GAKrB,GACkB,WAArB8X,EAAOG,WACPL,EAAKrd,SAAWyF,EAAQ,EAC1B,CACE,IAAM,EAAUjI,OAAOwH,KAAKzG,EAAM8e,EAAK5X,EAAQ,KAAK,GACpD8X,EAASA,EAAOK,OAAOJ,MACnB,SAACK,GAA2B,OAAAA,EAAMZ,MAAQ,CAAd,IAE5BI,EAAKrd,SAAWyF,EAAQ,EAExBlH,EAAQA,EAAM8e,EAAK5X,EAAQ,KAG3BlH,EAAQA,EAAM8e,EAAK5X,EAAQ,IAAI,GAC/B8X,EAASA,EAAOA,QAGpB,GAAW,EACX,GAAc,QArBdA,EAASA,EAAOA,OAChBhf,EAAQA,EAAM8e,EAAK5X,EAAQ,IAC3B,GAAW,OATX8X,EAASA,EAAOA,OA8BxB,IACF,MAAOO,GACL,MAAMjd,MAAM,gCAEhB,IAUMkd,EAAc,IAAIX,EAVa,CACjC3O,KAAM,CACFwO,IAAG,EACH1e,MAAK,EACLgf,OAAM,EACNG,UAAWH,EAAOG,YAOtBhhB,KAAK2b,YACL3b,KAAK0b,UAGT,cADO2F,EAAYjF,SACZiF,CACX,EAOA,YAAAlF,OAAA,SAAOrP,GAEH,IAAIA,GAAgC,mBAAbA,EAKnB,MAAM3I,MAAM,+BANCnE,KAEJ0b,SAAS9J,GAAG,aAAa,SAACkF,GAC/BhK,EAASgK,EAAM/E,KACnB,GAIR,EAOA,YAAAqK,SAAA,SAAStP,GAEL,IAAIA,GAAgC,mBAAbA,EAQnB,MAAM3I,MAAM,+BATCnE,KAEJ0b,SAAS9J,GACd,eACA,SAACkF,GACGhK,EAASgK,EAAM/E,KAAM+E,EAAMwK,aAC/B,GAKZ,EAOA,YAAAjF,UAAA,SAAUvP,GAEN,IAAIA,GAAgC,mBAAbA,EAKnB,MAAM3I,MAAM,+BANCnE,KAEJ0b,SAAS9J,GAAG,gBAAgB,SAACkF,GAClChK,EAASgK,EAAM/E,KACnB,GAIR,EAOA,YAAAuK,YAAA,SAAYxP,GAER,IAAIA,GAAgC,mBAAbA,EAKnB,MAAM3I,MAAM,+BANCnE,KAEJ0b,SAAS9J,GAAG,kBAAkB,SAACkF,GACpChK,EAASgK,EAAM/E,KACnB,GAIR,EACJ,EA3PA,GA4PA,UAAewP,6jEC9Qf,gBACA,YAEA,YAEA,SACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,YA0BA,SACA,YAEM/F,EAAU,IAAI,UAIpB,aAiCI,WACIgG,GADJ,eA+RA,KAAAC,MAAQ,SAACC,EAAmBC,GACxB,EAAKC,UAAUnf,aAAa,YAAa,CAAEif,UAAS,EAAEC,SAAQ,GAClE,EAEA,KAAAE,UAAY,WACR,OAAK,EAAKC,gBAGH,EAAKF,UACPnf,aAAa,aACb8K,KAAK,EAAA+R,QACLvP,MAAM,EAAAH,SALAvC,QAAQS,QAAQ,EAAKuQ,OAMpC,EAEA,KAAA0D,mBAAqB,WACjB,OAAO,EAAK5P,IAChB,EAMA,KAAA6P,cAAgB,4GACZ,OAAIhiB,KAAKiiB,QACE,CAAP,EAAO5U,QAAQS,QAAQ9N,KAAKiiB,UAE3BjiB,KAAK8hB,iBAGJI,EAASliB,KAAKiM,MAAMgT,MAAMkD,QAC1BtO,EAAU,CACZ0M,IAAKvgB,KAAK8hB,gBACVM,OAAQ,iBACRC,QAAS,CAAEC,iBAAkBJ,GAC7BK,cAAc,GAEI,GAAMviB,KAAK4hB,UAC5Bnf,aAAa,aAAcoR,GAC3BtG,KAAK,EAAA+R,QACLvP,MAAM,EAAAH,WAZA,CAAP,EAAOvC,QAAQS,QAAQ,cAc3B,OALM0U,EAAgB,SAItBxiB,KAAKiiB,QAAUO,EAAIP,QACZ,CAAP,EAAOjiB,KAAKiiB,iBAGhB,KAAAQ,iBAAmB,WACf,OAAO,EAAKC,MAChB,EAjUI,IAAMpH,EAAqBkG,EAE3BxhB,KAAK4hB,UAAY,UAMjB5hB,KAAK2iB,OAASrH,EAAmBvJ,KAAK6Q,OAMtC5iB,KAAK6iB,YAAcvH,EAAmBvJ,KAAK+Q,cAM3C9iB,KAAK8hB,gBAAkBxG,EAAmBvJ,KAAKgR,iBAK/C/iB,KAAKgjB,YAAc1H,EAAmBvJ,KAAKkR,KAM3CjjB,KAAKmS,KAAOmJ,EAAmBvJ,KAAKI,KAOpCnS,KAAKkjB,MAAQ,IAAI,UAAM,WAMvBljB,KAAKiM,MAAQ,IAAI,UAAMqP,EAAmBvJ,KAAK9F,MAAO,UAAW,CAC7DiT,cAAe5D,EAAmBvJ,KAAKmN,gBAE3Clf,KAAK2hB,SAAW,IAAI,UAAS,WAE7B3hB,KAAKqe,OAAuC,QAA9B,EAAA/C,EAAmBvJ,KAAKsM,cAAM,QAAI,CAAC,EAEjDre,KAAKwD,SAAW,CACZ2f,gBAAiB,KACjBC,YAAa,KACbC,cAAe,KACfvE,UAAW,KACXwE,YAAa,KACbC,gBAAiB,KACjBC,oBAAqB,KACrB5G,mBAAoB,KACpB6G,SAAU,KACVC,mBAAoB,KACpBC,sBAAuB,MAG3BpgB,OAAkB,UAAI,UAEtBvD,KAAK4jB,MAAQ,IAAI,UAEjB5jB,KAAK0iB,QAAS,IAAAmB,iBAAgBvI,EAAmBvJ,KAAK2Q,QAEtD1iB,KAAKiiB,SAA0C,QAAhC,EAAA3G,EAAmBvJ,KAAK+R,gBAAQ,eAAE7B,UAAW,KAE5D,IAAMhW,EAAQ,IAAI,UAAMqP,EAAmBvJ,KAAK9F,MAAO,UAAW,CAC9DiT,cAAe5D,EAAmBvJ,KAAKmN,gBAG3C,OAAQ5D,EAAmBvJ,KAAKI,MAC5B,IAAK,YACDnS,KAAKwD,SAAS2f,gBAAkB,CAC5B/d,MAAO,IAAI,UACP,UACApF,KAAKmS,KACLqJ,EACAF,EAAmBvJ,KAAKgS,iBAE5B9X,MAAO,IAAI,UAAMqP,EAAmBvJ,KAAK9F,MAAO,UAAW,CACvDiT,cAAe5D,EAAmBvJ,KAAKmN,iBAG/C,MAEJ,IAAK,SACDlf,KAAKwD,SAAS6f,cAAgB,CAC1Bxa,MAAO,IAAI,UACPyS,EACA,UACAE,GAEJvP,MAAO,IAAI,UAAMqP,EAAmBvJ,KAAK9F,MAAO,UAAW,CACvDiT,cAAe5D,EAAmBvJ,KAAKmN,iBAG/C,MAGJ,IAAK,oBACDlf,KAAKwD,SAAS+f,gBAAkB,CAC5BS,aAAc,IAAI,EAAAlE,UACdxE,EACA,UACAE,EACA,CACI0D,cACI5D,EAAmBvJ,KAAKmN,gBAGpCjT,MAAO,IAAI,UAAMqP,EAAmBvJ,KAAK9F,MAAO,UAAW,CACvDiT,cAAe5D,EAAmBvJ,KAAKmN,iBAG/C,MAGJ,IAAK,uBACDlf,KAAKwD,SAASoZ,mBAAqB,IAAI,UACnCtB,EACA,UACAE,GAGJ,MAGJ,IAAK,MACD,8CAAO,IAAO,IAAEjO,MAAK,SAAC,OAAEwR,EAAoB,uBACxC,EAAKvb,SAASsb,UAAYC,EAC1B,EAAKvb,SAAS8f,YAAc,CACxBza,MAAO,IAAI,UACPyS,EACA,UACAE,GAGZ,IACA,MAGJ,IAAK,0BACL,IAAK,uBACDF,EAAmBvJ,KAAK9R,MAAO,EAC/BD,KAAKwD,SAASmgB,sBAAwB,CAClC9a,MAAO,IAAI,UACPyS,EACA,UACAE,GAEJvP,MAAO,IAAI,UAAMqP,EAAmBvJ,KAAK9F,MAAO,UAAW,CACvDiT,cAAe5D,EAAmBvJ,KAAKmN,gBAE3C+E,MAAO,IAAI,UACP3I,EACA,UACAE,GAEJpW,MAAO,IAAI,UAA2B,UAAWoW,IAErD,MAGJ,IAAK,qBACDxb,KAAKwD,SAASigB,SAAW,CACrBxX,MAAOA,GAEX,MAIJ,QACIqP,EAAmBvJ,KAAK9R,MAAO,EAC/BD,KAAKwD,SAAS4f,YAAc,CACxBa,MAAO,IAAI,UACP3I,EACA,UACAE,GAEJ0I,YAAa5I,EAAmBvJ,KAAKoS,aACrCtb,MAAO,IAAI,UACPyS,EACA,UACAE,GAEJvP,MAAO,IAAI,UAAMqP,EAAmBvJ,KAAK9F,MAAO,UAAW,CACvDiT,cAAe5D,EAAmBvJ,KAAKmN,gBAE3C9Z,MAAO,IAAI,UAAO,UAAWpF,KAAKmS,KAAiBqJ,IAO/D,IAEI,UAAU5J,GAAG,kBAAkB,SAACkF,GACJ,cAApBA,EAAM/E,KAAKpR,OACX6a,EAAQ4I,UAAU,YAAa,CAAC,CAAErS,KAAM+E,EAAM/E,KAAKA,QACnDyJ,EAAQ4I,UAAU,eAAgB,CAC9B,CAAErS,KAAM+E,EAAM/E,KAAKA,SAIH,gBAApB+E,EAAM/E,KAAKpR,MACX6a,EAAQ4I,UAAU,cAAe,CAC7B,CACIrS,KAAM+E,EAAM/E,KAAKA,KACjBuP,aAAcxK,EAAM/E,KAAKsS,UAAU/C,gBAKvB,iBAApBxK,EAAM/E,KAAKpR,MACX6a,EAAQ4I,UAAU,eAAgB,CAC9B,CAAErS,KAAM+E,EAAM/E,KAAKA,QAIH,mBAApB+E,EAAM/E,KAAKpR,MACX6a,EAAQ4I,UAAU,iBAAkB,CAChC,CAAErS,KAAM+E,EAAM/E,KAAKA,QAIH,cAApB+E,EAAM/E,KAAKpR,OACX6a,EAAQ4I,UAAU,YAAa,CAAC,CAAErS,KAAM+E,EAAM/E,KAAKA,QACnDyJ,EAAQ4I,UAAU,eAAgB,CAC9B,CAAErS,KAAM+E,EAAM/E,KAAKA,SAIH,gBAApB+E,EAAM/E,KAAKpR,MACX6a,EAAQ4I,UAAU,cAAe,CAC7B,CAAErS,KAAM+E,EAAM/E,KAAKA,QAIH,iBAApB+E,EAAM/E,KAAKpR,MACX6a,EAAQ4I,UAAU,eAAgB,CAC9B,CAAErS,KAAM+E,EAAM/E,KAAKA,QAIH,mBAApB+E,EAAM/E,KAAKpR,MACX6a,EAAQ4I,UAAU,iBAAkB,CAChC,CAAErS,KAAM+E,EAAM/E,KAAKA,QAIH,oBAApB+E,EAAM/E,KAAKpR,MACX6a,EAAQ4I,UAAU,kBAAmB,CACjC,CAAEE,MAAOxN,EAAM/E,KAAKuS,SAIJ,yBAApBxN,EAAM/E,KAAKpR,MACX6a,EAAQ4I,UAAU,uBAAwB,CACtC,CAAErS,KAAM+E,EAAM/E,KAAKA,OAG/B,IACF,MAAOlO,GACLuc,QAAQtR,MAAM,kBAAmBjL,GAEzC,CA6DJ,OAXW,EAAA0gB,WAAP,SAAkBtC,GAKd,OAAO,UAAUxf,aAAa,OAAQ,CAAEwf,QAAO,EAAE5E,KAJpC,CACTmH,QAAS,YAIjB,EAEA,YAAAC,SAAA,WACI,OAAOzkB,KAAK4hB,UAAUnf,aAAa,QACvC,EACJ,EA3XA,GA6XA,UAAeiiB,6ECzaf,IAAMC,EAA+B,CACjC,OACA,YACA,SACA,QACA,gBAsBJ,aAcI,WACIC,EACArJ,EACAC,GAMAxb,KAAKugB,IAAMqE,EAAgB7S,KAAKwO,IAKhCvgB,KAAKghB,UAAY4D,EAAgB7S,KAAK8O,OAAOG,UAM7ChhB,KAAK6gB,OAAS+D,EAAgB7S,KAAK8O,OACnC7gB,KAAK0b,SAAWF,EAEhB,IAxDsByI,EAAcpiB,EACpCyf,EACAuD,EAsDMC,GAxDgBb,EAyDlBjkB,KAxDJshB,EADoCzf,EA0DhC+iB,EAAgB7S,KAAKlQ,MAxDzBgjB,EAAiBhjB,EACG,SAApBoiB,EAAMjD,YACFnf,GACAyf,EAAezf,EACfgjB,GAC8B,IAA1BZ,EAAMpD,OAAOI,SACPpf,EAAMmJ,KAAI,SAAC0R,GAAc,OAAAA,EAAK6D,GAAL,IACzB1e,EAAM0e,MACiB,IAA1B0D,EAAMpD,OAAOI,WACpBK,EAAe,GACfuD,EAAiB,KAGlB,CAAEvD,aAAY,EAAEuD,eAAc,IA8CjC7kB,KAAKif,MAAQ6F,EAAcD,eAE3B7kB,KAAK+kB,cAAgBD,EAAcxD,aAEnCthB,KAAK2b,YAAcJ,EAEnBvb,KAAKglB,MAAQJ,EAAgB7S,KAAK9R,OAAQ,EAE1C,IAAMglB,EAAWjlB,KAEjBwb,EAAQ5J,GAAG,gBAAgB,SAACkF,GACxB,IAAM6J,EAAOsE,EAAS1E,IAAIK,MAAM,KAC5B/e,EAAQiV,EAAM/E,KAElB4O,EAAKrN,SAAQ,SAAC1K,GACN/G,IACAA,EAAQA,EAAM+G,GAEtB,IAEIqc,EAAShG,QAAUpd,IACnBojB,EAAShG,MAAQpd,EAEzB,GACJ,CAwEJ,OAhEI,YAAAma,QAAA,SAAQjK,GAAR,WACUmT,EAAkBllB,KAClBmlB,EAAU,CACZpT,KAAI,EACJwO,IAAK2E,EAAgB3E,IACrBtgB,KAAMilB,EAAgBF,OAG1B,OACKE,EAAgBF,QAEZ,IADJL,EAA6BngB,QAAQ0gB,EAAgBlE,YAEjDkE,EAAgBlE,UAOlBhhB,KAAK2b,YACPlZ,aAAa,UAAW0iB,GACxB5X,MAAK,WAEF,OADA,EAAK0R,MAAQlN,EACN1E,QAAQS,QAAQoX,EAC3B,IACCnV,OAAM,SAACqR,GACJ,OAAO/T,QAAQuB,OAAOwS,EAC1B,IAbO/T,QAAQuB,OACX,IAAIzK,MAAM,+CAatB,EAQA,YAAA2X,QAAA,SAAQ,OAAE,QAAF,MAAuB,CAAC,EAAC,GAAvB1N,SACN,YADc,IAAG,GAAK,EACJpO,KAAK+kB,cAAgB/kB,KAAKif,KAChD,EAMA,YAAAmG,SAAA,WACI,OAAOplB,KAAK2b,YAAYlZ,aAAa,QACzC,EAMA,YAAA2Z,SAAA,SAAUtP,GAAV,WAEI,IAAIA,GAAgC,mBAAbA,EAOnB,MAAM3I,MAAM,+BARCnE,KAEJ0b,SAAS9J,GAAG,wBAAwB,SAACkF,GAC1C,EAAKmI,MAAQnI,EAAM/E,KACnB,EAAKgT,cAAgBjO,EAAM/E,KAC3BjF,EAASgK,EAAM/E,KACnB,GAIR,EACJ,EA1IA,GA4IA,UAAesT,whFC1Kf,gBAGA,YACA,YAEA,cACI,WACI/J,EACAC,EACAC,UAEA,YAAMF,EAAoBC,EAAYC,EAAS,CAC3CiF,eAAgB,CACZC,cAAe,cAErB,IACN,CAsDJ,OAjEyC,OAiBrC,YAAA4E,QAAA,SAAQzR,SACI,GAA6BA,GAAW,CAAC,GAAC,iBAElD,YAFwB,IAAG,GAAK,IAGJ,QAAjB,EAAA7T,KAAK6b,oBAAY,eAAE0J,OAEnBvlB,KAAKif,MAAMsG,IAE1B,EAOM,YAAAC,QAAN,SAAcD,6FAaV,QAAaE,IAATF,EACA,MAAM,IAAIphB,OAAM,aAAsB,EAAAub,eAAegG,WAAW7c,MAAM8c,uBAG1E,IAXA,SAAsBJ,GAClB,OACI5e,MAAMC,QAAQ2e,IACdA,EAAKK,OAAM,SAACC,GAAQ,MAAe,iBAARA,CAAP,GAE5B,CAMKC,CAAaP,GACd,MAAM,IAAIphB,OACN,aAAsB,EAAAub,eAAegG,WAAW7c,MAAMkd,6BAI9D,SAAM/lB,KAAK2b,YAAYlZ,aAAa,UAAW,CAAE8iB,KAAI,YAQrD,OARA,SAEKvlB,KAAK6b,eACN7b,KAAK6b,aAAe,CAAC,GAGzB7b,KAAK6b,aAAa0J,KAAOA,EAElB,CAAP,EAAOA,WAEf,EAjEA,CAAyC,WAmEzC,UAAeS,k9CCtEf,IAAMrB,EAA+B,CACjC,OACA,YACA,SACA,QACA,gBAyBJ,aAcI,WACIC,EACArJ,EACAC,GAMAxb,KAAKugB,IAAMqE,EAAgB7S,KAAKwO,IAKhCvgB,KAAKghB,UAAY4D,EAAgB7S,KAAK8O,OAAOG,UAM7ChhB,KAAK6gB,OAAS+D,EAAgB7S,KAAK8O,OACnC7gB,KAAK0b,SAAWF,EAEhB,IA1DJyI,EACApiB,EAEIyf,EACAuD,EAsDMC,GA1DVb,EA2DQjkB,KAxDJshB,EAFJzf,EA2DQ+iB,EAAgB7S,KAAKlQ,MAxDzBgjB,EAAiBhjB,EACG,SAApBoiB,EAAMjD,YACFnf,GACAyf,EAAezf,EACfgjB,GAC8B,IAA1BZ,EAAMpD,OAAOI,SACPpf,EAAMmJ,KAAI,SAAC0R,GAAc,OAAAA,EAAK6D,GAAL,IACzB1e,EAAM0e,MACiB,IAA1B0D,EAAMpD,OAAOI,WACpBK,EAAe,GACfuD,EAAiB,KAGlB,CAAEvD,aAAY,EAAEuD,eAAc,IA8CjC7kB,KAAKif,MAAQ6F,EAAcD,eAE3B7kB,KAAK+kB,cAAgBD,EAAcxD,aAEnCthB,KAAK2b,YAAcJ,EAEnBvb,KAAKglB,MAAQJ,EAAgB7S,KAAK9R,OAAQ,EAE1C,IAAMglB,EAAWjlB,KAEjBwb,EAAQ5J,GAAG,gBAAgB,SAACkF,GACxB,IAAM6J,EAAOsE,EAAS1E,IAAIK,MAAM,KAC5B/e,EAAQiV,EAAM/E,KAElB4O,EAAKrN,SAAQ,SAAC1K,GACN/G,IACAA,EAAQA,EAAM+G,GAEtB,IAEIqc,EAAShG,QAAUpd,IACnBojB,EAAShG,MAAQpd,EAEzB,GACJ,CA8CJ,OAvCU,YAAAma,QAAN,SAAcjK,qFAQV,OANMoT,EAAU,CACZpT,KAAI,EACJwO,KAHE2E,EAAkBllB,MAGCugB,IACrBtgB,KAAMilB,EAAgBF,OAIrBE,EAAgBF,QAEZ,IADJL,EAA6BngB,QAAQ0gB,EAAgBlE,YAEjDkE,EAAgBlE,UAOlB,CAAP,EAAOhhB,KAAK2b,YACPlZ,aAAa,UAAW0iB,GACxB5X,MAAK,WAEF,OADA,EAAK0R,MAAQlN,EACN1E,QAAQS,QAAQoX,EAC3B,IACCnV,OAAM,SAACqR,GACJ,OAAO/T,QAAQuB,OAAOwS,EAC1B,KAbO,CAAP,EAAO/T,QAAQuB,OACX,IAAIzK,MAAM,wDAqBtB,YAAA2X,QAAA,SAAQ,OAAE,QAAF,MAA+C,CAAC,EAAC,GAA/C1N,SACN,YADc,IAAG,GAAK,EACJpO,KAAK+kB,cAAgB/kB,KAAKif,KAChD,EACJ,EAhHA,GAkHA,UAAegH,oiDClJf,gBACA,SAMA,aAaI,WAAY1K,EAAiBC,GAP7B,KAAA0K,sBAAuB,EAQnBlmB,KAAK2b,YAAcJ,GAAc,UACjCvb,KAAKkmB,sBAAuB,EAC5BlmB,KAAK0b,SAAWF,EAEhBxb,KAAKmmB,gBAAkBnmB,KAAKmmB,gBAAgBpK,KAAK/b,MACjDA,KAAKomB,mBAAqBpmB,KAAKomB,mBAAmBrK,KAAK/b,MACvDA,KAAKqmB,oBAAsBrmB,KAAKqmB,oBAAoBtK,KAAK/b,MACzDA,KAAKsmB,WAAatmB,KAAKsmB,WAAWvK,KAAK/b,MAKvCA,KAAKomB,oBACT,CA8GJ,OAtGU,YAAAD,gBAAN,SAAsBI,gHACVC,GAAF,EAAoBD,GAAa,CAAC,GAA1B,OAAE9J,EAAK,aAENgJ,IAAXe,QAAkCf,IAAVhJ,EAAxB,OACAzc,KAAKymB,QAAU3e,KAAK4e,KAChBlP,SAASnR,gBAAgBsgB,wBAAwBH,QAGrDxmB,KAAK4mB,OAAS9e,KAAK4e,KACflP,SAASnR,gBAAgBsgB,wBAAwBlK,OAGrD,GAAMzc,KAAK2b,YAAYlZ,aAAa,SAAU,CAC1C+jB,OAAQxmB,KAAKymB,QACbhK,MAAOzc,KAAK4mB,kBAEhB,OAJA,SAIA,WAKJ,GAFMC,EAAgB,CAAC,OAERpB,IAAXe,GAA0C,iBAAXA,EAC/B,MAAM,IAAIriB,MACN,EAAAub,eAAegG,WAAWtgB,MAAM0hB,+BASxC,GALI9mB,KAAKymB,UAAYD,IACjBxmB,KAAKymB,QAAUD,EACfK,EAAsB,OAAI7mB,KAAKymB,cAGrBhB,IAAVhJ,GAAwC,iBAAVA,EAC9B,MAAM,IAAItY,MACN,EAAAub,eAAegG,WAAWtgB,MAAM2hB,qCAIpC/mB,KAAK4mB,SAAWnK,IAChBzc,KAAK4mB,OAASnK,EACdoK,EAAqB,MAAI7mB,KAAK4mB,QAGQ,IAAtC9lB,OAAOwH,KAAKue,GAAevjB,OAA3B,MACA,GAAMtD,KAAK2b,YAAYlZ,aAAa,SAAUokB,WAA9C,4CAQF,YAAAG,kBAAN,SAAwB1C,6FACpB,SAAMtkB,KAAK2b,YAAYlZ,aAAa,oBAAqB,CACrD6hB,MAAK,mBADT,qBASJ,YAAA8B,mBAAA,sBACI,OAAIpmB,KAAKkmB,uBAGTlmB,KAAKkmB,sBAAuB,EAE5BlmB,KAAKinB,SAAW,IAAIC,kBAChB,kGAAY,SAAMlnB,KAAKmmB,0BAAX,6BAShBnmB,KAAKinB,SAASE,QAAQ5jB,OAAOiU,SAAS4P,KANP,CAC3BC,YAAY,EACZC,WAAW,EACXC,SAAS,KAXFvnB,IAgBf,EAMA,YAAAqmB,oBAAA,iBACI,OAAKrmB,KAAKkmB,sBAGVlmB,KAAKkmB,sBAAuB,EACf,QAAb,EAAAlmB,KAAKinB,gBAAQ,SAAEO,aACRxnB,MAJIA,IAKf,EAMM,YAAAsmB,WAAN,qGACW,SAAMtmB,KAAK2b,YAAYlZ,aAAa,sBAA3C,MAAO,CAAP,EAAO,kBAEf,EAzIA,GA2IA,UAAeglB,yKCnJf,gBACA,YACA,SAIA,UAAU1kB,OAAO2kB,UAAY,QAO7B,8BA+CA,QAhBS,EAAArlB,KAAP,sBACE,OAAIrC,KAAK2nB,WAAqBta,QAAQS,QAAmB9N,KAAK2nB,YACvD,UAAUpD,WAAW,EAAAtC,SAAS1U,MAAK,SAAC+N,GAEzC,OADA,EAAKqM,WAAa,IAAI,UAAUrM,GACzBjO,QAAQS,QAAQ,EAAK6Z,WAC9B,IAAG5X,OAAM,SAACqR,GAAa,OAAA/T,QAAQuB,OAAOwS,EAAf,GACzB,EAOA,sBAAW,gBAAW,KAAtB,WACE,OAAO,EAAAa,OACT,kCACF,EA/CA,GAiDA,UAAe2F,EACf/nB,EAAOD,QAAUgoB,0pBCnCjB,IAQA,aACI,WAAoBjM,GAAA,KAAAA,YAAAA,CAAmB,CA2E3C,OAzEI,YAAAkM,eAAA,SAAeC,GACH,IAAAC,EAAiDD,EAAc,WAAnD,EAAqCA,EAAc,KAAnD3V,OAAI,IAAG,UAAO,EAAK6V,EAAa,EAAKF,EAAnD,uBAEA/V,EAAO,CACTqQ,OAdO,iBAeP6F,QAAS,CACLtG,SAAU,EAAF,CACJoG,WAAU,EACV5V,KAAI,GACD6V,KAKf,OAAOhoB,KAAK2b,YAAYlZ,aAAa,aAAcsP,EACvD,EAEA,YAAAmW,iBAAA,SAAiBJ,GACL,IAAAvH,EAAQuH,EAAc,IAExB/V,EAAO,CACTwO,IAAG,EACH6B,OA/BU,cAgCV6F,QAAS,CACLtG,SAAU,CACNpB,IAAG,KAKf,OAAOvgB,KAAK2b,YAAYlZ,aAAa,aAAcsP,EACvD,EAEA,YAAAoW,oBAAA,SAAoBC,QAAA,IAAAA,IAAAA,EAAA,IAChB,IAAMrW,EAAO,CACTqQ,OA3Ca,iBA4CbgG,OAAM,GAGV,OAAOpoB,KAAK2b,YAAYlZ,aAAa,aAAcsP,EACvD,EAEA,YAAAsW,eAAA,SAAeP,GACH,IAAAvH,EAA0BuH,EAAc,IAAhCE,EAAa,EAAKF,EAA5B,SAEA/V,EAAO,CACTwO,IAAG,EACH6B,OAtDQ,iBAuDR6F,QAAS,CACLtG,SAAU,EAAF,CACJpB,IAAG,GACAyH,KAKf,OAAOhoB,KAAK2b,YAAYlZ,aAAa,aAAcsP,EACvD,EAEA,YAAAuW,eAAA,SAAeR,GACH,IAAAvH,EAAQuH,EAAc,IAExB/V,EAAO,CACTwO,IAAG,EACH6B,OAtEQ,iBAuER6F,QAAS,CACLtG,SAAU,CACNpB,IAAG,KAIf,OAAOvgB,KAAK2b,YAAYlZ,aAAa,aAAcsP,EACvD,EACJ,EA5EA,GA6EA,UAAewW,+ECjHf,aAEA,aACI,mBACI,IAAKznB,OAAOU,UAAUC,eAAelB,KAAKgD,OAAQ,aAAc,CAC5D,IAAMilB,GAAc,IAAAC,yBACF,QAAd,EAAQ,OAARjR,eAAQ,IAARA,cAAQ,EAARA,SAAU4P,YAAI,eAAEsB,UAEpBnlB,OAAkB,UAAIilB,EAE9B,CAKJ,OAHI,YAAAG,qBAAA,SAAqBC,GACjBrlB,OAAkB,UAAIqlB,CAC1B,EACJ,EAbA,GAeA,UAAeC,2tEChBf,gBACA,SACA,YAGItN,EAAkB,CAAC,EAWvB,SAAS+D,EAAOvN,GACd,MAA2B,iBAAfA,EAAS,KAAyB1E,QAAQuB,OAAOmD,EAAKA,MAC3D1E,QAAQS,QAAQiE,EAAKA,KAC9B,CAEA,SAASnC,EAAQd,GACf,OAAOzB,QAAQuB,OAAOE,EACxB,CAEA,kBAGE,WAAYyR,GAAZ,MACE,YAAMA,IAAI,KAGV,OAFA,EAAKuI,cAAgB,EAAAA,cACrB,EAAKC,YAAc,EAAAA,YACZ,CACT,CAuPF,OA/PoB,OAqBX,EAAAC,MAAP,WACE,IAAMC,EAAa,EAAMD,MAAK,WAI9B,OAHAloB,OAAO2S,OAAOwV,EAAY,CACxBC,SAAQ,WAAEH,YAAW,gBAEhBE,CACT,EAEO,EAAAppB,OAAP,SAAcspB,GACZ,YADY,IAAAA,IAAAA,GAAA,GACLA,EAAS,SAAW,OAC7B,EAEA,sBAAW,eAAU,KAArB,WACE,OAAO5N,CACT,kCASO,EAAA6N,aAAP,WACE,OAAOppB,KAAKub,WAAW9Y,aAAa,aAAc,CAAE2f,OAAQ,iBAAkB7U,KAAK+R,GAAQvP,MAAMH,EACnG,EASO,EAAAyZ,yBAAP,SAAgCC,GAC9B,OAAKA,GAAkC,iBAAdA,EAGlBtpB,KAAKub,WAAW9Y,aAAa,aAAc,CAAE2f,OAAQ,2BAA4BmH,WAAYD,IAAa/b,KAAK+R,GAAQvP,MAAMH,GAF3HvC,QAAQuB,OAAO,IAAIzK,MAAM,mCAGpC,EAkHA,YAAAqlB,QAAA,SAAQvB,GACN,OAAKA,GAA+B,iBAAZA,GAA0BA,aAAmBthB,MAC5D0G,QAAQuB,OAAO,IAAIzK,MAAM,oCAE3BnE,KAAKypB,MAAM,eAAgBxB,EACpC,EAsBA,YAAAyB,UAAA,SAAUzB,GACR,OAAKA,GAA+B,iBAAZA,GAA0BA,aAAmBthB,MAC5D0G,QAAQuB,OAAO,IAAIzK,MAAM,oCAE3BnE,KAAKypB,MAAM,iBAAkBxB,EACtC,EAEa,EAAAtL,aAAb,SAA0BgN,EAAQxX,EAAM0B,8EACtC,OAAK8V,GAAWA,EAAOrmB,QAGjBsmB,EAAgB,GACtBjjB,MAAMkjB,KAAKF,GAAQrW,SAAQ,SAAAwW,GAEzB,IAAMpN,EAAO,IAAIqN,KAAK,CAACD,GAAIA,EAAEnpB,KAAM,CAAEwR,KAAM2X,EAAE3X,OAC7CyX,EAAM5kB,KAAK0X,EACb,IACM6D,GAAM,IAAIyJ,MAAOC,qBAChB,CAAP,EAAO,6GAqBD,6BAnBM,EAAsB,UAAUrY,GAClC,eAAe2O,GACf,WAaI,OAZAhd,OAAOK,OAAO2P,YACV,CACIpB,KAAM,UAAUoO,EAChB2J,YAAa/X,EACbyX,MAAK,EACLO,gBAAiBtW,aAAO,EAAPA,EAASsW,gBAC1BC,oBAAqBvW,aAAO,EAAPA,EAASuW,qBAElC,KAGJ,EAAoBpZ,SACb3D,QAAQS,QAAQ,CAAC,EAC5B,IAGJ,GAAM,UAAUrL,aAAa,oBAAqB,CAC9C2f,OAAQ,UAAU7B,EAClBA,IAAG,YAGP,OALA,SAKO,CAAP,EAAO,UAAU9d,aAAa,UAAU8d,EAAO,CAAC,WAElD,kBAAO,CAAP,EAAOlT,QAAQuB,OAAO,2BAEzB,CA9BM,KATE,CAAP,EAAOvB,QAAQuB,OAAO,IAAIzK,MAAM,4CA0C7B,EAAAkmB,YAAP,SAAmBT,EAAO/V,GACxB,OAAOyW,EAAM3N,aAAaiN,EAAO,SAAU/V,EAC7C,EACF,EA/PA,CAAoB,WAiQpB,mBAAgB0W,GAEd,OADAhP,EAAagP,EACN,IAAIC,MAAMF,EAAO,CACtBhe,MAAK,SAACme,EAAQC,EAASC,GAErB,OAAO,IAAIF,EAAM,WAANA,EAAM,WAAIE,GAAa,IACpC,GAEH,yKCjSD,gBACA,SAGA,SAASrL,EAAOvN,GACd,MAA2B,iBAAfA,EAAS,KAAyB1E,QAAQuB,OAAOmD,EAAKA,MAC3D1E,QAAQS,QAAQiE,EAAKA,KAC9B,CAEA,SAASnC,EAAQd,GACf,OAAOzB,QAAQuB,OAAOE,EACxB,CAMA,iBAYE,WAAYyR,GACV,IAAKA,EAAO,MAAM,IAAIpc,MAAM,mBAC5BnE,KAAKugB,IAAMA,EACXvgB,KAAK4qB,OAAS,CAAC,EACf5qB,KAAK6qB,MAAO,IAAAC,WAAU,QACtB9qB,KAAK+qB,QAAS,IAAAD,WAAU,UACxB9qB,KAAKgrB,SAAW,EAAAA,QAClB,CAsCF,OApCS,EAAAhC,MAAP,WAEE,OAAO,IAAI,UAAMhpB,KAAKub,WAAYvb,KAAKH,QAAO,GAAOG,KAAKirB,eAC5D,EAGO,EAAAC,OAAP,SAAcjD,GACZ,IAAMpU,EAAU,CAAEoU,QAAO,EAAEkD,iBAAkBnrB,KAAKirB,eAAgB7I,OAAQ,SAASpiB,KAAKH,UACxF,OAAOG,KAAKub,WAAW9Y,aAAa,aAAcoR,GAAStG,KAAK+R,GAAQvP,MAAMH,EAChF,EAEA,YAAAwb,OAAA,SAAOnD,GACL,OAAKA,GAA+B,iBAAZA,GAA0BA,aAAmBthB,MAC5D0G,QAAQuB,OAAO,IAAIzK,MAAM,oCAE3BnE,KAAKypB,MAAM,SAASzpB,KAAK8L,YAAYjM,SAAYooB,EAC1D,EAEA,YAAAxf,OAAA,WACE,OAAOzI,KAAKypB,MAAM,SAASzpB,KAAK8L,YAAYjM,SAC9C,EAEA,YAAA4pB,MAAA,SAAMrH,EAAgB6F,GACpB,IAAMpU,EAAU,CACdoU,QAAO,EACPkD,iBAAkBnrB,KAAK8L,YAAYmf,eACnC1K,IAAKvgB,KAAKugB,IACV6H,OAAQpoB,KAAK4qB,OACbxI,OAAQA,GAAU,MAAMpiB,KAAK8L,YAAYjM,UAK3C,OAFKooB,UAAkBpU,EAAQoU,QAC1BjoB,KAAK8L,YAAYmf,uBAAyBpX,EAAQsX,iBAChDnrB,KAAK8L,YAAYyP,WAAW9Y,aAAa,aAAcoR,GAC3DtG,KAAK+R,GAAQvP,MAAMH,EACxB,EACF,EAzDA,62BCnBA,gBACA,SAEI2L,EAAa,CAAC,EACd0P,EAAiB,GAGrB,cACE,WAAY1K,GAAZ,MACE,YAAMA,IAAI,KAEV,OADA,EAAKqK,OAAS,CAAC,EACR,CACT,CA0VF,OA/VoB,OAiBX,EAAA5B,MAAP,WACE,IAAMC,EAAa,EAAMD,MAAK,WAI9B,OAHAloB,OAAO2S,OAAOwV,EAAY,CACxBC,SAAQ,WAAEH,YAAW,cAAEsC,aAAY,eAAEC,mBAAkB,qBAAEC,cAAa,gBAAEC,iBAAgB,qBAEnFvC,CACT,EAEA,sBAAW,eAAU,KAArB,WACE,OAAO1N,CACT,kCAEA,sBAAW,mBAAc,KAAzB,WACE,OAAO0P,CACT,kCAEO,EAAAprB,OAAP,SAAcspB,GACZ,YADY,IAAAA,IAAAA,GAAA,GACLA,EAAS,UAAY,OAC9B,EA8LA,YAAAsC,aAAA,WACE,OAAOzrB,KAAKypB,MAAM,oBACpB,EAUA,YAAAiC,WAAA,SAAWzL,GACT,OAAKA,GAA4B,iBAAXA,GAGtBjgB,KAAK4qB,OAAO3K,OAASA,EACdjgB,KAAKypB,MAAM,oBAHTpc,QAAQuB,OAAO,IAAIzK,MAAM,mCAIpC,EAkBA,YAAAqlB,QAAA,SAAQvB,GACN,OAAKA,GAA+B,iBAAZA,GAA0BA,aAAmBthB,MAC5D0G,QAAQuB,OAAO,IAAIzK,MAAM,qCAElCnE,KAAK4qB,OAAS,CAAC,EACR5qB,KAAKypB,MAAM,eAAgBxB,GACpC,EAkBA,YAAAyB,UAAA,SAAUzB,GACR,OAAKA,GAA+B,iBAAZA,GAA0BA,aAAmBthB,MAC5D0G,QAAQuB,OAAO,IAAIzK,MAAM,qCAElCnE,KAAK4qB,OAAS,CAAC,EACR5qB,KAAKypB,MAAM,iBAAkBxB,GACtC,EA4BA,YAAA0D,iBAAA,SAAiB1D,GACf,OAAKA,GAA+B,iBAAZA,GAA0BA,aAAmBthB,MAC5D0G,QAAQuB,OAAO,IAAIzK,MAAM,oCAE3BnE,KAAKypB,MAAM,wBAAyBxB,EAC7C,EAoBA,YAAAmD,OAAA,SAAOnD,EAAiChI,GACtC,OAAKgI,GAA+B,iBAAZA,GAA0BA,aAAmBthB,MAC5D0G,QAAQuB,OAAO,IAAIzK,MAAM,qCAElCnE,KAAK4qB,OAAO3K,OAASA,EACdjgB,KAAKypB,MAAM,cAAexB,GACnC,EACF,EA/VA,CAAoB,WAiWpB,mBAAgBsC,EAAmBqB,GAGjC,OAFArQ,EAAagP,EACbU,EAAiBW,EACV,IAAIpB,MAAMjJ,EAAO,CACtBjV,MAAA,SAAMme,EAAaC,EAASC,GAC1B,IAAMkB,EAAc,IAAIpB,EAAM,WAANA,EAAM,WAAIE,GAAa,KAI/C,OAHA7pB,OAAO2S,OAAOoY,EAAa,CACzB/C,cAAa,gBAAEgD,SAAQ,WAAE5C,SAAQ,WAAEH,YAAW,cAAEsC,aAAY,eAAEC,mBAAkB,qBAAEC,cAAa,gBAAEC,iBAAgB,qBAE5GK,CACT,GAEH,g2BCpXD,gBACA,YAEItQ,EAAa,CAAC,EAGlB,cAIE,WAAYgF,GAAZ,MACE,YAAMA,IAAI,KAWV,OADA,EAAKgB,OAAQ,aAAM,EAAKzV,YAAYyP,WAAY,EAAKgF,KAC9C,CACT,CAQF,OAzB0B,OAsBxB,sBAAW,eAAU,KAArB,WACE,OAAOhF,CACT,kCACF,EAzBA,CAA0B,WA0B1B,mBAAgBgP,GAEd,OADAhP,EAAagP,EACN,IAAIC,MAAMuB,EAAa,CAE5Bzf,MAAA,SAAMme,EAAaC,EAASC,GAC1B,OAAO,IAAIF,EAAM,WAANA,EAAM,WAAIE,GAAa,IACpC,GAEH,knBCxCD,gBAGA,SAASrL,EAAOvN,GACd,MAA2B,iBAAfA,EAAS,KAAyB1E,QAAQuB,OAAOmD,EAAKA,MAC3D1E,QAAQS,QAAQiE,EAAKA,KAC9B,CAEA,SAASnC,EAAQd,GACf,OAAOzB,QAAQuB,OAAOE,EACxB,CAEA,IAAMkd,EACG,SAAC7Z,GACN,OAAO,SAAUvJ,EAAK/G,GACpB,GAAI+G,GAAO/G,GAAwB,iBAAR+G,QAAqC,IAAV/G,EAGpD,OAFA7B,KAAK4qB,OAAOqB,MAAMrjB,GAAO5I,KAAK4qB,OAAOqB,MAAMC,WAAa,CAAC,EACzDlsB,KAAK4qB,OAAOqB,MAAMrjB,GAAKuJ,GAAQtQ,EACxB7B,KAET,MAAMmE,MAAM,mCACd,CACF,EAVI6nB,EAWK,SAACG,GACR,IAAMha,EAAO,EAAS,MAAQ,OAC9B,OAAO,SAAUvJ,EAAK/G,GACpB,GAAI+G,GAAO/G,GAAwB,iBAAR+G,GAAoBjC,MAAMC,QAAQ/E,GAI3D,OAHA7B,KAAK4qB,OAAOqB,MAAMrjB,GAAO5I,KAAK4qB,OAAOqB,MAAMrjB,IAAQ,CAAC,EACpD5I,KAAK4qB,OAAOqB,MAAMrjB,GAAKuJ,GAAQnS,KAAK4qB,OAAOqB,MAAMrjB,GAAKuJ,IAAS,GAC/DnS,KAAK4qB,OAAOqB,MAAMrjB,GAAKuJ,GAAQnS,KAAK4qB,OAAOqB,MAAMrjB,GAAKuJ,GAAMia,OAAOvqB,GAC5D7B,KAET,MAAMmE,MAAM,mCACd,CACF,EAtBI6nB,EAuBE,SAACG,GACL,OAAO,SAAUvjB,GACf,GAAIA,GAAsB,iBAARA,EAGhB,OAFA5I,KAAK4qB,OAAOqB,MAAMrjB,GAAO5I,KAAK4qB,OAAOqB,MAAMrjB,IAAQ,CAAC,EACpD5I,KAAK4qB,OAAOqB,MAAMrjB,GAAKyjB,QAAUF,EAC1BnsB,KAET,MAAMmE,MAAM,mCACd,CACF,EAhCI6nB,EAiCJ,SAAQ7Z,GACN,OAAO,WAEL,IADA,IAAMyY,EAAgB,GACbvqB,EAAI,EAAGgF,EAAKhC,UAAUC,OAAQjD,EAAIgF,EAAIhF,GAAK,EAC9CgD,UAAUhD,aAAc2oB,GAAS3lB,UAAUhD,GAAGuqB,OAAOqB,MACvDrB,EAAO5lB,KAAK3B,UAAUhD,GAAGuqB,OAAOqB,OACC,iBAAjB5oB,UAAUhD,IAC1BuqB,EAAO5lB,KAAK3B,UAAUhD,IAQ1B,OALIL,KAAK4qB,OAAOqB,MAAM9Z,GACpBnS,KAAK4qB,OAAOqB,MAAM9Z,GAAQnS,KAAK4qB,OAAOqB,MAAM9Z,GAAMia,OAAOxB,GAEzD5qB,KAAK4qB,OAAOqB,MAAM9Z,GAAQyY,EAErB5qB,IACT,CACF,EAlDIgsB,EAmDA,SAAC7Z,GACH,OAAO,SAAUvJ,GACf,GAAIA,GAAsB,iBAARA,EAEhB,OADA5I,KAAK4qB,OAAOzY,GAAQvJ,EACb5I,KAET,MAAMmE,MAAM,+BACd,CACF,EA3DI6nB,EA4DM,SAAC7Z,GACT,OAAO,SAAUtQ,GACf,GAAqB,iBAAVA,EAET,OADA7B,KAAK4qB,OAAOzY,GAAQtQ,EACb7B,KAET,MAAMmE,MAAM,+BACd,CACF,EAOF,aA4BE,WAAYoX,EAAY1b,EAAQorB,GAC9BjrB,KAAKH,OAASA,EACdG,KAAK2b,YAAcJ,EACnBvb,KAAK4qB,OAAS,CAAC,EACf5qB,KAAK4qB,OAAOqB,MAAQjsB,KAAK4qB,OAAOqB,OAAS,CAAC,EAC1CjsB,KAAKirB,eAAiBA,EAoBtBjrB,KAAK6qB,KAAOyB,EAAMxB,UAAU,QAoB5B9qB,KAAK+qB,OAASuB,EAAMxB,UAAU,UAU9B9qB,KAAK8rB,SAAWQ,EAAMR,SAUtB9rB,KAAKusB,SAAWP,EAAgB,OAUhChsB,KAAKwsB,kBAAoBR,EAAgB,QAWzChsB,KAAKysB,YAAcT,EAAgB,OAWnChsB,KAAK0sB,qBAAuBV,EAAgB,QAW5ChsB,KAAK2sB,WAAaX,EAAgB,OAWlChsB,KAAK4sB,YAAcZ,GAAkB,GAWrChsB,KAAK6sB,eAAiBb,GAAkB,GAUxChsB,KAAK8sB,OAASd,GAAe,GAU7BhsB,KAAK+sB,UAAYf,GAAe,GAUhChsB,KAAKgtB,UAAYhB,EAAa,OAU9BhsB,KAAKitB,WAAajB,EAAa,QAW/BhsB,KAAKktB,UAAYlB,EAAa,cAW9BhsB,KAAKmtB,SAAWnB,EAAa,aAU7BhsB,KAAKotB,KAAOpB,EAAmB,QAU/BhsB,KAAKqtB,MAAQrB,EAAmB,SAoBhChsB,KAAKstB,GAAKtB,EAAgB,OAmB1BhsB,KAAKutB,IAAMvB,EAAgB,QAU3BhsB,KAAKgrB,SAAWsB,EAAMtB,QACxB,CAwMF,OAtIE,YAAAwC,QAAA,SAAQ5kB,EAAK/G,GACX,GAAI+G,GAAsB,iBAARA,EAGhB,OAFA5I,KAAK4qB,OAAOqB,MAAMrjB,GAAO/G,EAElB7B,KAET,MAAMmE,MAAM,mCACd,EAEA,YAAAspB,MAAA,SAAM7kB,EAAK/G,GACT,GAAI+G,GAAsB,iBAARA,EAEhB,OADA5I,KAAK4qB,OAAOqB,MAAMrjB,GAAO/G,EAClB7B,KAET,MAAMmE,MAAM,mCACd,EAOA,YAAAuM,MAAA,WACE1Q,KAAK4qB,OAAOla,OAAQ,EACpB,IAAMmD,EAAU,CAAEsX,iBAAkBnrB,KAAKirB,eAAgB7C,OAAQpoB,KAAK4qB,OAAQxI,OAAQ,MAAMpiB,KAAKH,QACjG,OAAOG,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK+R,GAAQvP,MAAMH,EACjF,EAOA,YAAAqc,MAAA,SAAMA,GACJ,GAAqB,iBAAVA,EAET,OADAjsB,KAAK4qB,OAAOqB,MAAQK,EAAMoB,UAAU1tB,KAAK4qB,OAAOqB,MAAOA,GAChDjsB,KAET,MAAMmE,MAAM,kCACd,EAQA,YAAAohB,KAAA,SAAKhd,GACH,GAAI5B,MAAMC,QAAQ2B,GAEhB,OADAvI,KAAK4qB,OAAOrF,KAAOhd,EACZvI,KAET,MAAMmE,MAAM,kCACd,EAOA,YAAAwpB,aAAA,WAEE,OADA3tB,KAAK4qB,OAAOgD,eAAgB,EACrB5tB,IACT,EAQA,YAAA6tB,SAAA,WACE,OAAO7tB,KAAK4qB,OAAOqB,KACrB,EAeA,YAAA9X,MAAA,SAAMvL,EAAK/G,EAAOgS,GAChB,GAAIjL,GAAO/G,GAAwB,iBAAR+G,GAAqC,iBAAV/G,EAKpD,OAJA7B,KAAK4qB,OAAOqB,MAAMrjB,GAAO,CACvBklB,OAAQjsB,GAENgS,IAAS7T,KAAK4qB,OAAOqB,MAAMrjB,GAAKmlB,SAAWla,GACxC7T,KAET,MAAMmE,MAAM,mCACd,EAQA,YAAA6pB,OAAA,SAAOnsB,GACL,GAAIA,GAA0B,iBAAVA,EAElB,OADA7B,KAAK4qB,OAAOqD,UAAYpsB,EACjB7B,KAET,MAAMmE,MAAM,mCACd,EAOA,YAAA2c,KAAA,WACE,IAAMjN,EAAU,CAAEsX,iBAAkBnrB,KAAKirB,eAAgB7C,OAAQpoB,KAAK4qB,OAAQxI,OAAQ,MAAMpiB,KAAKH,QACjG,OAAOG,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK+R,GAAQvP,MAAMH,EACjF,EAOA,YAAAse,QAAA,WACEluB,KAAKmuB,aAAc,EACnBnuB,KAAK4qB,OAAOyC,MAAQ,EACpB,IAAMxZ,EAAU,CAAEsX,iBAAkBnrB,KAAKirB,eAAgB7C,OAAQpoB,KAAK4qB,OAAQxI,OAAQ,MAAMpiB,KAAKH,QACjG,OAAOG,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK+R,GAAQvP,MAAMH,EACjF,EACF,EA1eA,GA4eA,UAAeoZ,oiDCnkBf,gBACA,YACA,SASA,aAYE,WAAYjX,EAAuCwJ,EAAiByD,QAAxD,IAAAjN,IAAAA,EAAoB,CAAC,GAHzB,KAAAqc,eAAsC,KAI5CpuB,KAAK2b,YAAcJ,EACnBvb,KAAKif,MAAQlN,EASb/R,KAAK+rB,aAAc,aAAYxQ,GAS/Bvb,KAAKsqB,OAAQ,aAAM/O,GAEGyD,EAAeE,gBAGnClf,KAAKouB,gBACFrc,EAAKsc,UAAY,IAAIvN,MAClB,SAACwN,GAAW,OAAAA,EAAO/N,MAAQvB,EAAeE,aAA9B,KACX,KAGX,CA4NF,OApNE,YAAApD,QAAA,WACE,OAAO9b,KAAKif,KACd,EAQM,YAAAsP,aAAN,SAAmB,oBAAkD,CAAC,EAAC,EAAnD,IAAArM,OAAAA,OAAM,IAAG,KAAE,EAAE,IAAAkG,OAAAA,OAAM,IAAG,GAAC,EAAC,2EAG1C,GAAsB,iBAAXlG,EACT,MAAM,IAAIra,UAAU,2BAStB,OANMgM,EAAU,CACZuO,OAAQ,YACRC,QAAS,CAAEC,iBAAkBJ,GAAUliB,KAAKif,MAAMkD,SAClDI,cAAc,EACd6F,OAAM,GAEH,CAAP,EAAOpoB,KAAK2b,YACTlZ,aAAa,aAAcoR,GAC3BtG,KAAK,EAAA+R,QACL/R,MAAK,SAACwE,GAAS,OAAAA,EAAKyc,QAAU,EAAf,IACfze,MAAM,EAAAH,iBAUL,YAAA6e,oBAAN,2FAEE,OADM5a,EAAU,CAAEuO,OAAQ,uBACnB,CAAP,EAAOpiB,KAAK2b,YACPlZ,aAAa,aAAcoR,GAC3BtG,MAAK,SAAOoJ,GAAQ,uFACJ,UAAM,IAAA2I,QAA4C3I,WAC/D,MAAO,CAAP,EADa,SACD+X,QAAU,cAEzB3e,MAAM,EAAAH,iBASb,YAAAoe,OAAA,SAAOW,EAA2BC,QAAA,IAAAA,IAAAA,EAAwB5uB,KAAKif,MAAM4P,SACnE,IAAMhb,EAAU,CAAEuU,OAAQuG,EAASE,QAASD,EAAQxM,OAAQ,UAC5D,OAAOpiB,KAAK2b,YACTlZ,aAAa,aAAcoR,GAC3BtG,KAAK,EAAA+R,QACLvP,MAAM,EAAAH,QACX,EASA,YAAAkf,eAAA,SAAevO,EAAa6H,GAC1B,QAD0B,IAAAA,IAAAA,EAAA,KACrB7H,EACH,OAAOlT,QAAQuB,OAAO,IAAIzK,MAAM,oBAElC,IAAM0P,EAAU,CAAE0M,IAAG,EAAE6H,OAAM,EAAEhG,OAAQ,kBACvC,OAAOpiB,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK,EAAA+R,QAAQvP,MAAM,EAAAH,QACjF,EAQA,YAAAmf,gBAAA,SAAgB9C,EAAY7D,QAAZ,IAAA6D,IAAAA,EAAA,SAAY,IAAA7D,IAAAA,EAAA,IAC1B,IAAM4G,EAAe5G,EACrB4G,EAAa/C,MAAQA,EACrB,IAAMpY,EAAU,CAAEuU,OAAQ4G,EAAc5M,OAAQ,mBAChD,OAAOpiB,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK,EAAA+R,QAAQvP,MAAM,EAAAH,QACjF,EAQA,YAAAqf,eAAA,SAAetuB,EAAcynB,GAC3B,QAD2B,IAAAA,IAAAA,EAAA,KACtBznB,EACH,OAAO0M,QAAQuB,OAAO,IAAIzK,MAAM,qBAElC,IAAM0P,EAAU,CAAElT,KAAI,EAAEynB,OAAM,EAAEhG,OAAQ,kBACxC,OAAOpiB,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK,EAAA+R,QAAQvP,MAAM,EAAAH,QACjF,EAQA,YAAAsf,gBAAA,SAAgBjD,EAAY7D,QAAZ,IAAA6D,IAAAA,EAAA,SAAY,IAAA7D,IAAAA,EAAA,IAC1B,IAAM4G,EAAuC5G,EAC7C4G,EAAa/C,MAAQA,EACrB,IAAMpY,EAAU,CAAEuU,OAAQ4G,EAAc5M,OAAQ,mBAChD,OAAOpiB,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK,EAAA+R,QAAQvP,MAAM,EAAAH,QACjF,EAQA,YAAAuf,YAAA,SAAYlD,EAAY7D,QAAZ,IAAA6D,IAAAA,EAAA,SAAY,IAAA7D,IAAAA,EAAA,IACtB,IAAM4G,EAAuC5G,EAC7C4G,EAAa/C,MAAQA,EACrB,IAAMpY,EAAU,CAAEuU,OAAQ4G,EAAc5M,OAAQ,eAChD,OAAOpiB,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK,EAAA+R,QAAQvP,MAAM,EAAAH,QACjF,EAQA,YAAAwf,aAAA,SAAanD,EAAY7D,QAAZ,IAAA6D,IAAAA,EAAA,SAAY,IAAA7D,IAAAA,EAAA,IACvB,IAAM4G,EAAuC5G,EAC7C4G,EAAa/C,MAAQA,EACrB,IAAMpY,EAAU,CAAEuU,OAAQ4G,EAAc5M,OAAQ,gBAChD,OAAOpiB,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK,EAAA+R,QAAQvP,MAAM,EAAAH,QACjF,EAQA,YAAAyf,UAAA,SAAUnb,EAAckU,GACtB,QADsB,IAAAA,IAAAA,EAAA,KACjBlU,EACH,OAAO7G,QAAQuB,OAAO,IAAIzK,MAAM,qBAElC,IAAM0P,EAAU,CAAEK,KAAI,EAAEkU,OAAM,EAAEhG,OAAQ,aACxC,OAAOpiB,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK,EAAA+R,QAAQvP,MAAM,EAAAH,QACjF,EAQA,YAAA0f,WAAA,SAAWrD,EAAY7D,QAAZ,IAAA6D,IAAAA,EAAA,SAAY,IAAA7D,IAAAA,EAAA,IACrB,IAAM4G,EAAuC5G,EAC7C4G,EAAa/C,MAAQA,EACrB,IAAMpY,EAAU,CAAEuU,OAAQ4G,EAAc5M,OAAQ,cAChD,OAAOpiB,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK,EAAA+R,QAAQvP,MAAM,EAAAH,QACjF,EAQE,YAAA2f,YAAA,SAAYhP,EAAa6H,GACvB,QADuB,IAAAA,IAAAA,EAAA,KAClB7H,EACH,OAAOlT,QAAQuB,OAAO,IAAIzK,MAAM,6BAElC,IAAM0P,EAAU,CAAE0M,IAAG,EAAE6H,OAAM,EAAEhG,OAAQ,eACvC,OAAOpiB,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK,EAAA+R,QAAQvP,MAAM,EAAAH,QACjF,EAQA,YAAA4f,aAAA,SAAavD,EAAY7D,QAAZ,IAAA6D,IAAAA,EAAA,SAAY,IAAA7D,IAAAA,EAAA,IACvB,IAAM4G,EAAuC5G,EAC7C4G,EAAa/C,MAAQA,EACrB,IAAMpY,EAAU,CAAEuU,OAAQ4G,EAAc5M,OAAQ,gBAChD,OAAOpiB,KAAK2b,YAAYlZ,aAAa,aAAcoR,GAAStG,KAAK,EAAA+R,QAAQvP,MAAM,EAAAH,QACjF,EAMA,YAAA6f,eAAA,WACE,OAAOzvB,KAAKif,MAAMoP,UAAY,EAChC,EAMA,YAAAqB,iBAAA,WACE,OAAO1vB,KAAKouB,cACd,EACJ,EAvQA,GAyQA,UAAeuB,kQCpRf,qBAA0Bxd,GACtB,OAAO,WACH,OAAQ9O,UAAUC,QACd,KAAK,EACD,GACIqD,MAAMC,QAAQvD,UAAU,KACA,iBAAjBA,UAAU,GAKjB,OAFA4oB,GADIA,EAAQjsB,KAAK4qB,OAAUzY,EAAI,WAAa,IAC9Bia,OAAO/oB,UAAU,IAC/BrD,KAAK4qB,OAAUzY,EAAI,UAAY8Z,EACxBjsB,KAEX,MAAMmE,MAAM,mCAEhB,KAAK,EAMG,IAAI8nB,EALR,GAC4B,iBAAjB5oB,UAAU,KAChBsD,MAAMC,QAAQvD,UAAU,KACG,iBAAjBA,UAAU,IAKrB,OAFA4oB,GADIA,EAAQjsB,KAAK4qB,OAAUzY,EAAI,IAAI9O,UAAU,GAAE,MAAQ,IACzC+oB,OAAO/oB,UAAU,IAC/BrD,KAAK4qB,OAAUzY,EAAI,IAAI9O,UAAU,GAAE,KAAO4oB,EACnCjsB,KAEX,MAAMmE,MAAM,mCAEhB,QACI,MAAMA,MAAM,mCAExB,CACJ,EAGA,iBACIuP,EACA5B,GAEA,IAAM8d,EAAYlc,EAMlB,OALIA,GAAU5B,GACVhR,OAAOwH,KAAKwJ,GAAQwB,SAAQ,SAAC1K,GACzBgnB,EAAUhnB,GAAOkJ,EAAOlJ,EAC5B,IAEGgnB,CACX,EAGA,qBACIC,EACAC,GAEA,IAAMC,EAAYF,EACZ5vB,EAAOD,KACPgwB,EAAkB,SAACC,EAAene,GACpC,IAAM4B,EAASuc,EACfnvB,OAAOwH,KAAKwJ,GAAQwB,SAAQ,SAAC1K,GAEO,WAA5B3I,EAAKiwB,MAAMpe,EAAOlJ,KAClB3I,EAAKiwB,MAAMxc,EAAO9K,MAAU3I,EAAKiwB,MAAMpe,EAAOlJ,IAE9ConB,EAAgBtc,EAAO9K,GAAMkJ,EAAOlJ,IAER,UAA5B3I,EAAKiwB,MAAMpe,EAAOlJ,KAClB3I,EAAKiwB,MAAMxc,EAAO9K,MAAU3I,EAAKiwB,MAAMpe,EAAOlJ,IAE9C8K,EAAO9K,GAAO8K,EAAO9K,GAAKwjB,OAAOta,EAAOlJ,IAExC8K,EAAO9K,GAAOkJ,EAAOlJ,EAE7B,GACJ,EAEA,OADAonB,EAAgBD,EAAWD,GACpBC,CACX,EAEA,iBAAsBI,GAClB,IAAIC,SAAkBD,EAKtB,MAJiB,WAAbC,GAAyBzpB,MAAMC,QAAQupB,KAEvCC,EAAW,SAERA,CACX,EAEA,oBAAyBxnB,EAAK/G,GAC1B,GAAI+G,GAAsB,iBAARA,GAAoB/G,GAA0B,iBAAVA,EAElD,OADA7B,KAAK4qB,OAAOhiB,GAAO/G,EACZ7B,KAEX,MAAMmE,MAAM,mCAChB,EAEA,oBAAyByE,EAAK/G,GAC1B,GAAI+G,GAAO/G,GAAwB,iBAAR+G,EAEvB,OADA5I,KAAK4qB,OAAOhiB,GAAO/G,EACZ7B,KAEX,MAAMmE,MAAM,qCAChB,EAEA,oBAAyBksB,GACrB,GAAIA,GAAwC,iBAAjBA,EAEvB,OADArwB,KAAK4qB,OAAO3K,OAASoQ,EACdrwB,KAEX,MAAMmE,MAAM,+BAChB,EAEA,uBAA4BmsB,GACxB,GAAIA,GAA8C,iBAApBA,EAE1B,OADAtwB,KAAK4qB,OAAO7B,YAAcuH,EACnBtwB,KAEX,MAAMmE,MAAM,+BAChB,EAEA,0BAEI,OADAnE,KAAK4qB,OAAO2F,eAAgB,EACrBvwB,IACX,EAEA,gCAEI,OADAA,KAAK4qB,OAAO4F,sBAAuB,EAC5BxwB,IACX,EAEA,2BAEI,OADAA,KAAK4qB,OAAO6F,gBAAiB,EACtBzwB,IACX,EAEA,4BAAiCmwB,GAC7B,GAAIxpB,MAAMC,QAAQupB,GACd,IAAK,IAAI9vB,EAAI,EAAGA,EAAI8vB,EAAI7sB,OAAQjD,GAAK,EACjCL,KAAK4qB,OAAO,aAAe5qB,KAAK4qB,OAAO,cAAgB,GACvD5qB,KAAK4qB,OAAO,aAAe5qB,KAAK4qB,OAAO,aAAawB,OAAO+D,EAAI9vB,QAEhE,IAAmB,iBAAR8vB,EAQd,MAAMhsB,MAAM,4CAPZ,IAAS9D,EAAI,EAAGA,EAAIgD,UAAUC,OAAQjD,GAAK,EACvCL,KAAK4qB,OAAO,aAAe5qB,KAAK4qB,OAAO,cAAgB,GACvD5qB,KAAK4qB,OAAO,aAAe5qB,KAAK4qB,OAAO,aAAawB,OAChD/oB,UAAUhD,IAMtB,OAAOL,IACX,EAEA,2BACI,OAAOA,KAAKypB,MAAM,MAAMzpB,KAAK8L,YAAYjM,SAAQ,aACrD,4BC1JA,SAAS+P,EAAQd,GACf,OAAOzB,QAAQuB,OAAOE,EACxB,kDAIA,iBAOE,WAAYyM,GACVvb,KAAK2b,YAAcJ,CACrB,CA8DF,OAvDE,YAAAra,IAAA,SAAI0H,GACF,IAAKA,GAAsB,iBAARA,EAAoB,MAAM,IAAIzE,MAAM,mCACvD,OAAOnE,KAAK2b,YAAYlZ,aAAa,QAAS,CAAE2f,OAAQ,MAAOxZ,IAAG,IAC/D2E,MAAK,SAACuJ,GAA0B,OAAAzJ,QAAQS,QAAQgJ,EAAM/E,KAAtB,IAA6BhC,MAAMH,EACxE,EAOA,YAAA8gB,OAAA,WACE,OAAO1wB,KAAK2b,YAAYlZ,aAAa,QAAS,CAAE2f,OAAQ,WACrD7U,MAAK,SAAC,OAAE,IAAAwE,KAAAA,OAAI,IAAG,GAAC,EAAC,EAAO,OAAA1E,QAAQS,QAAQiE,EAAhB,IAAuBhC,MAAMH,EAC1D,EAUA,YAAAxH,IAAA,SAAIQ,EAAa/G,GACf,IAAK+G,IAAQ/G,GAAwB,iBAAR+G,EAC3B,MAAM,IAAIzE,MAAM,mCAElB,OAAOnE,KAAK2b,YAAYlZ,aAAa,QAAS,CAAE2f,OAAQ,MAAOxZ,IAAG,EAAE/G,MAAK,IACtE0L,MAAK,WAAM,OAAAF,QAAQS,SAAQ,EAAhB,IAAuBiC,MAAMH,EAC7C,EASA,YAAA+gB,OAAA,SAAO/nB,GACL,IAAKA,GAAsB,iBAARA,EAAoB,MAAM,IAAIzE,MAAM,mCACvD,OAAOnE,KAAK2b,YAAYlZ,aAAa,QAAS,CAAE2f,OAAQ,SAAUxZ,IAAG,IAClE2E,MAAK,WAAM,OAAAF,QAAQS,SAAQ,EAAhB,IAAuBiC,MAAMH,EAC7C,EAQA,YAAAghB,MAAA,WACE,OAAO5wB,KAAK2b,YAAYlZ,aAAa,QAAS,CAAE2f,OAAQ,UACrD7U,MAAK,WAAM,OAAAF,QAAQS,SAAQ,EAAhB,IAAuBiC,MAAMH,EAC7C,EACF,EAvEA,GAyEA,UAAeihB,4BC8Mf,IAAYC,EApEAC,2GAAAA,EAAA,EAAAA,gBAAA,EAAAA,cAAa,KACrB,kCACA,oCACA,gCACA,0CACA,yBAGQ,EAAAC,uBAAA,EAAAA,qBAAoB,KAC5B,4BA2DQF,EAAA,EAAAA,SAAA,EAAAA,OAAM,KACd,kBACA,UACA,UACA,sBACA,yHClSS,EAAApR,eAAiB5e,OAAOmH,OAAO,CACxC0X,WAAY,CACRH,YAAa,CACTI,mBAAoB,8BACpBC,kBAAmB,+BAG1B6F,WAAY,CACT7c,MAAO,CACH8c,qBAAsB,uBACtBI,2BAA4B,oCAEhC3gB,MAAO,CACH0hB,8BAA+B,oCAC/BC,6BAA8B,uCAK1C,mBAA8CnhB,GAC1C,MAAO,yBAAyBA,CACpC,qJCrBA,aAEA,kBAAyDmM,GACrD,MAAyB,iBAAdA,EAAKA,KACL1E,QAAQuB,OAAOmD,EAAKA,MAExB1E,QAAQS,QAAQiE,EAAKA,KAChC,EAEA,mBAAwBjD,GACpB,OAAOzB,QAAQuB,OAAOE,EAC1B,EAEA,2BAAgC4T,GAC5B,OAAQA,GACJ,IAAK,KACD,OAAO,EAAAoO,OAAOG,GAClB,IAAK,KACD,OAAO,EAAAH,OAAOI,GAClB,IAAK,WACD,OAAO,EAAAJ,OAAOK,SAClB,IAAK,WACD,OAAO,EAAAL,OAAOM,SAClB,QACI,OAAO,EAAAN,OAAOO,QAE1B,EAEA,mCAAwCC,GACpC,IACI9I,EADA+I,EAAmBC,IAEjBC,EAAwB,CAC1B,SACA,MACA,OACA,UACA,UACA,QACA,SACA,OAEEC,EAAmB,CAAC,SAAU,WAAY,QAAS,YAezD,OAbA/qB,MAAMkjB,KAAKyH,GAAgBhe,SAAQ,SAACiE,GAChC,IAAMoa,EAAUF,EAAsBjtB,QAAQ+S,EAAGqa,UAC7CD,GAAW,GAAKA,EAAUJ,IAC1BA,EAAmBI,EACnBnJ,EAAcjR,EAEtB,IAEKiR,IACDA,EAAc7hB,MAAMkjB,KAAKyH,GAAgBxQ,MACrC,SAACvJ,GAAO,OAACma,EAAiBjT,SAASlH,EAAGqa,SAA9B,KAGTpJ,GAAe8I,EAAe,EACzC,yKCxDA,IAGIrK,EAHJ,YAEM5I,EAAS,CAAEgJ,YAAY,EAAMC,WAAW,EAAMC,SAAS,GAM7D,aAaE,WAAYhM,EAAiBpJ,EAA6BqJ,EAAuB8I,QAAA,IAAAA,IAAAA,EAAA,cAC/EtkB,KAAK2b,YAAcJ,GAAc,UACjCvb,KAAKkmB,sBAAuB,EAC5BlmB,KAAK6xB,kBAAmB,EACxB7xB,KAAKmS,KAAOA,EACZnS,KAAKskB,MAAQA,EACbtkB,KAAK0b,SAAWF,CAClB,CAgGF,OA1FE,YAAAsW,eAAA,WACE,MAAkB,cAAd9xB,KAAKmS,KAA+B9E,QAAQS,WAChD9N,KAAK6xB,kBAAmB,EACjB7xB,KAAK2b,YAAYlZ,aAAa,SAAU,CAAE2f,OAAQ,mBAC3D,EASA,YAAA2P,kBAAA,SAAkBjlB,GAChB,IAAMklB,EAAYhyB,KAClB,GAAkB,cAAdA,KAAKmS,KACP,OAAO,EAET,IAAIrF,GAAkC,mBAAf,EAMrB,MAAM3I,MAAM,+BAEd,OAPE6tB,EAAUtW,SAAS9J,GAAG,mBAAmB,SAACkF,GACxCkb,EAAU1N,MAAQxN,EAAMwN,MACxBxX,EAASgK,EAAMwN,MACjB,KAIK,CACT,EASA,YAAA2N,aAAA,SAAazL,GACX,GAAkB,cAAdxmB,KAAKmS,MAAuC,eAAfnS,KAAKskB,MAA0B,OAAOjX,QAAQS,UAC/E,IAAK0Y,GAAU0L,MAAM1L,GACnBxmB,KAAKymB,QAAU3e,KAAK4e,KAAKlP,SAASnR,gBAAgBsgB,wBAAwBH,YACrE,IAAIxmB,KAAKymB,UAAYD,EAC1B,OAAOnZ,QAAQS,UAEf9N,KAAKymB,QAAUD,EAEjB,OAAOxmB,KAAK2b,YAAYlZ,aAAa,SAAUzC,KAAKymB,QACtD,EAMA,YAAAL,mBAAA,WACE,OAAIpmB,KAAKkmB,sBAAwC,eAAflmB,KAAKskB,OAAwC,cAAdtkB,KAAKmS,OAGtEnS,KAAKkmB,sBAAuB,GAE5Be,EAAW,IAAIC,iBAAiBlnB,KAAKiyB,aAAalW,KAAK/b,QAC9CmnB,QAAQ5jB,OAAOiU,SAAS4P,KAAM/I,IAL9Bre,IAOX,EAMA,YAAAqmB,oBAAA,WACE,OAAKrmB,KAAKkmB,sBAGVlmB,KAAKkmB,sBAAuB,EAC5Be,EAASO,aACFxnB,MAJEA,IAKX,EAEA,YAAAmyB,iBAAA,WAEE,OAAO,UAAU1vB,aAAa,SAAU,CACtC2f,OAAQ,6BAEZ,EAEA,YAAAgQ,kBAAA,WAEE,OAAO,UAAU3vB,aAAa,SAAU,CACtC2f,OAAQ,8BAEZ,EAEF,EApHA,GAsHA,UAAe/a,uBC/Hf,OAOE,SAAUzH,GACR,aAQA,SAASyyB,IAAgB,CAGzB,IAAIC,EAAQD,EAAa7wB,UACrB+wB,EAAsB3yB,EAAQyyB,aAUlC,SAASG,EAAgBC,EAAWvc,GAEhC,IADA,IAAI7V,EAAIoyB,EAAUnvB,OACXjD,KACH,GAAIoyB,EAAUpyB,GAAG6V,WAAaA,EAC1B,OAAO7V,EAIf,OAAQ,CACZ,CASA,SAASqyB,EAAM/xB,GACX,OAAO,WACH,OAAOX,KAAKW,GAAM2L,MAAMtM,KAAMqD,UAClC,CACJ,CAoEA,SAASsvB,EAAiBzc,GACtB,MAAwB,mBAAbA,GAA2BA,aAAoBgB,WAE/ChB,GAAgC,iBAAbA,IACnByc,EAAgBzc,EAASA,SAIxC,CAjEAoc,EAAMM,aAAe,SAAsBC,GACvC,IACIlc,EACA/N,EAFAkqB,EAAS9yB,KAAK+yB,aAMlB,GAAIF,aAAe3b,OAEf,IAAKtO,KADL+N,EAAW,CAAC,EACAmc,EACJA,EAAOrxB,eAAemH,IAAQiqB,EAAIG,KAAKpqB,KACvC+N,EAAS/N,GAAOkqB,EAAOlqB,SAK/B+N,EAAWmc,EAAOD,KAASC,EAAOD,GAAO,IAG7C,OAAOlc,CACX,EAQA2b,EAAMW,iBAAmB,SAA0BR,GAC/C,IACIpyB,EADA6yB,EAAgB,GAGpB,IAAK7yB,EAAI,EAAGA,EAAIoyB,EAAUnvB,OAAQjD,GAAK,EACnC6yB,EAAcluB,KAAKytB,EAAUpyB,GAAG6V,UAGpC,OAAOgd,CACX,EAQAZ,EAAMa,qBAAuB,SAA8BN,GACvD,IACIlc,EADA8b,EAAYzyB,KAAK4yB,aAAaC,GAQlC,OALIJ,aAAqB9rB,SACrBgQ,EAAW,CAAC,GACHkc,GAAOJ,GAGb9b,GAAY8b,CACvB,EAsBAH,EAAMc,YAAc,SAAqBP,EAAK3c,GAC1C,IAAKyc,EAAgBzc,GACjB,MAAM,IAAIrO,UAAU,+BAGxB,IAEIe,EAFA6pB,EAAYzyB,KAAKmzB,qBAAqBN,GACtCQ,EAAwC,iBAAbnd,EAG/B,IAAKtN,KAAO6pB,EACJA,EAAUhxB,eAAemH,KAAuD,IAA/C4pB,EAAgBC,EAAU7pB,GAAMsN,IACjEuc,EAAU7pB,GAAK5D,KAAKquB,EAAoBnd,EAAW,CAC/CA,SAAUA,EACV/J,MAAM,IAKlB,OAAOnM,IACX,EAKAsyB,EAAM1gB,GAAK8gB,EAAM,eAUjBJ,EAAMgB,gBAAkB,SAAyBT,EAAK3c,GAClD,OAAOlW,KAAKozB,YAAYP,EAAK,CACzB3c,SAAUA,EACV/J,MAAM,GAEd,EAKAmmB,EAAMnmB,KAAOumB,EAAM,mBASnBJ,EAAMiB,YAAc,SAAqBV,GAErC,OADA7yB,KAAK4yB,aAAaC,GACX7yB,IACX,EAQAsyB,EAAMkB,aAAe,SAAsBC,GACvC,IAAK,IAAIpzB,EAAI,EAAGA,EAAIozB,EAAKnwB,OAAQjD,GAAK,EAClCL,KAAKuzB,YAAYE,EAAKpzB,IAE1B,OAAOL,IACX,EAUAsyB,EAAMoB,eAAiB,SAAwBb,EAAK3c,GAChD,IACInN,EACAH,EAFA6pB,EAAYzyB,KAAKmzB,qBAAqBN,GAI1C,IAAKjqB,KAAO6pB,EACJA,EAAUhxB,eAAemH,KAGV,KAFfG,EAAQypB,EAAgBC,EAAU7pB,GAAMsN,KAGpCuc,EAAU7pB,GAAKF,OAAOK,EAAO,GAKzC,OAAO/I,IACX,EAKAsyB,EAAMqB,IAAMjB,EAAM,kBAYlBJ,EAAMsB,aAAe,SAAsBf,EAAKJ,GAE5C,OAAOzyB,KAAK6zB,qBAAoB,EAAOhB,EAAKJ,EAChD,EAYAH,EAAMwB,gBAAkB,SAAyBjB,EAAKJ,GAElD,OAAOzyB,KAAK6zB,qBAAoB,EAAMhB,EAAKJ,EAC/C,EAcAH,EAAMuB,oBAAsB,SAA6BlD,EAAQkC,EAAKJ,GAClE,IAAIpyB,EACAwB,EACAkyB,EAASpD,EAAS3wB,KAAK0zB,eAAiB1zB,KAAKozB,YAC7CnS,EAAW0P,EAAS3wB,KAAK8zB,gBAAkB9zB,KAAK4zB,aAGpD,GAAmB,iBAARf,GAAsBA,aAAe3b,OAmB5C,IADA7W,EAAIoyB,EAAUnvB,OACPjD,KACH0zB,EAAOxzB,KAAKP,KAAM6yB,EAAKJ,EAAUpyB,SAnBrC,IAAKA,KAAKwyB,EACFA,EAAIpxB,eAAepB,KAAOwB,EAAQgxB,EAAIxyB,MAEjB,mBAAVwB,EACPkyB,EAAOxzB,KAAKP,KAAMK,EAAGwB,GAIrBof,EAAS1gB,KAAKP,KAAMK,EAAGwB,IAevC,OAAO7B,IACX,EAWAsyB,EAAM0B,YAAc,SAAqBnB,GACrC,IAEIjqB,EAFAuJ,SAAc0gB,EACdC,EAAS9yB,KAAK+yB,aAIlB,GAAa,WAAT5gB,SAEO2gB,EAAOD,QAEb,GAAIA,aAAe3b,OAEpB,IAAKtO,KAAOkqB,EACJA,EAAOrxB,eAAemH,IAAQiqB,EAAIG,KAAKpqB,WAChCkqB,EAAOlqB,eAMf5I,KAAKi0B,QAGhB,OAAOj0B,IACX,EAOAsyB,EAAM4B,mBAAqBxB,EAAM,eAcjCJ,EAAMlO,UAAY,SAAmByO,EAAK3hB,GACtC,IACIuhB,EACAvc,EACA7V,EACAuI,EAJAurB,EAAen0B,KAAKmzB,qBAAqBN,GAO7C,IAAKjqB,KAAOurB,EACR,GAAIA,EAAa1yB,eAAemH,GAG5B,IAFA6pB,EAAY0B,EAAavrB,GAAK+J,MAAM,GAE/BtS,EAAI,EAAGA,EAAIoyB,EAAUnvB,OAAQjD,KAKR,KAFtB6V,EAAWuc,EAAUpyB,IAER8L,MACTnM,KAAK0zB,eAAeb,EAAK3c,EAASA,UAG3BA,EAASA,SAAS5J,MAAMtM,KAAMkR,GAAQ,MAEhClR,KAAKo0B,uBAClBp0B,KAAK0zB,eAAeb,EAAK3c,EAASA,UAMlD,OAAOlW,IACX,EAKAsyB,EAAM+B,QAAU3B,EAAM,aAUtBJ,EAAMgC,KAAO,SAAczB,GACvB,IAAI3hB,EAAOvK,MAAMnF,UAAUmR,MAAMpS,KAAK8C,UAAW,GACjD,OAAOrD,KAAKokB,UAAUyO,EAAK3hB,EAC/B,EAUAohB,EAAMiC,mBAAqB,SAA4B1yB,GAEnD,OADA7B,KAAKw0B,iBAAmB3yB,EACjB7B,IACX,EAUAsyB,EAAM8B,oBAAsB,WACxB,OAAIp0B,KAAKyB,eAAe,qBACbzB,KAAKw0B,gBAKpB,EAQAlC,EAAMS,WAAa,WACf,OAAO/yB,KAAKi0B,UAAYj0B,KAAKi0B,QAAU,CAAC,EAC5C,EAOA5B,EAAaoC,WAAa,WAEtB,OADA70B,EAAQyyB,aAAeE,EAChBF,CACX,OAMK,KAFD,aACI,OAAOA,CACV,+BAQT,CA9dC,CA8dmB,oBAAX9uB,OAAyBA,OAASvD,MAAQ,CAAC,42DCpehD00B,EAA2B,CAAC,EAGhC,SAASC,EAAoBv0B,GAE5B,IAAIw0B,EAAeF,EAAyBt0B,GAC5C,QAAqBqlB,IAAjBmP,EACH,OAAOA,EAAah1B,QAGrB,IAAIC,EAAS60B,EAAyBt0B,GAAY,CAGjDR,QAAS,CAAC,GAOX,OAHAi1B,EAAoBz0B,GAAUG,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAAS+0B,GAGpE90B,EAAOD,OACf,CCnB0B+0B,CAAoB,WDF1CD","sources":["webpack://ContentstackAppSDK/webpack/universalModuleDefinition","webpack://ContentstackAppSDK/./node_modules/post-robot/dist/post-robot.js","webpack://ContentstackAppSDK/./node_modules/post-robot/index.js","webpack://ContentstackAppSDK/./src/AssetSidebarWidget.ts","webpack://ContentstackAppSDK/./src/RTE/index.tsx","webpack://ContentstackAppSDK/./src/appConfig/index.ts","webpack://ContentstackAppSDK/./src/entry.ts","webpack://ContentstackAppSDK/./src/extension.ts","webpack://ContentstackAppSDK/./src/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/entry.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/frame.ts","webpack://ContentstackAppSDK/./src/index.ts","webpack://ContentstackAppSDK/./src/metadata.ts","webpack://ContentstackAppSDK/./src/modal.ts","webpack://ContentstackAppSDK/./src/stack/api/asset/index.ts","webpack://ContentstackAppSDK/./src/stack/api/base.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/entry.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/index.ts","webpack://ContentstackAppSDK/./src/stack/api/query.ts","webpack://ContentstackAppSDK/./src/stack/index.ts","webpack://ContentstackAppSDK/./src/stack/utils.ts","webpack://ContentstackAppSDK/./src/store.ts","webpack://ContentstackAppSDK/./src/types.ts","webpack://ContentstackAppSDK/./src/utils/errorMessages.ts","webpack://ContentstackAppSDK/./src/utils/utils.ts","webpack://ContentstackAppSDK/./src/window.ts","webpack://ContentstackAppSDK/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://ContentstackAppSDK/webpack/bootstrap","webpack://ContentstackAppSDK/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ContentstackAppSDK\"] = factory();\n\telse\n\t\troot[\"ContentstackAppSDK\"] = factory();\n})(this, () => {\nreturn ","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"postRobot\", [], factory) : \"object\" == typeof exports ? exports.postRobot = factory() : root.postRobot = factory();\n}(\"undefined\" != typeof self ? self : this, function() {\n return function(modules) {\n var installedModules = {};\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n module.l = !0;\n return module.exports;\n }\n __webpack_require__.m = modules;\n __webpack_require__.c = installedModules;\n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n configurable: !1,\n enumerable: !0,\n get: getter\n });\n };\n __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n __webpack_require__.d(getter, \"a\", getter);\n return getter;\n };\n __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n __webpack_require__.p = \"\";\n return __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n }({\n \"./src/index.js\": function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n Object.defineProperty(__webpack_exports__, \"__esModule\", {\n value: !0\n });\n var interface_namespaceObject = {};\n __webpack_require__.d(interface_namespaceObject, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(interface_namespaceObject, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(interface_namespaceObject, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(interface_namespaceObject, \"init\", function() {\n return init;\n });\n __webpack_require__.d(interface_namespaceObject, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(interface_namespaceObject, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(interface_namespaceObject, \"request\", function() {\n return request;\n });\n __webpack_require__.d(interface_namespaceObject, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(interface_namespaceObject, \"client\", function() {\n return client;\n });\n __webpack_require__.d(interface_namespaceObject, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(interface_namespaceObject, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(interface_namespaceObject, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(interface_namespaceObject, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(interface_namespaceObject, \"disable\", function() {\n return disable;\n });\n function isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n var PROTOCOL = {\n MOCK: \"mock:\",\n FILE: \"file:\",\n ABOUT: \"about:\"\n }, WILDCARD = \"*\", IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n function isAboutProtocol() {\n return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window).location.protocol === PROTOCOL.ABOUT;\n }\n function getParent() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win) try {\n if (win.parent && win.parent !== win) return win.parent;\n } catch (err) {}\n }\n function getOpener() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win && !getParent(win)) try {\n return win.opener;\n } catch (err) {}\n }\n function canReadFromWindow(win) {\n try {\n win && win.location && win.location.href;\n return !0;\n } catch (err) {}\n return !1;\n }\n function getActualDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, location = win.location;\n if (!location) throw new Error(\"Can not read window location\");\n var protocol = location.protocol;\n if (!protocol) throw new Error(\"Can not read window protocol\");\n if (protocol === PROTOCOL.FILE) return PROTOCOL.FILE + \"//\";\n if (protocol === PROTOCOL.ABOUT) {\n var parent = getParent(win);\n return parent && canReadFromWindow(parent) ? getActualDomain(parent) : PROTOCOL.ABOUT + \"//\";\n }\n var host = location.host;\n if (!host) throw new Error(\"Can not read window host\");\n return protocol + \"//\" + host;\n }\n function utils_getDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, domain = getActualDomain(win);\n return domain && win.mockDomain && 0 === win.mockDomain.indexOf(PROTOCOL.MOCK) ? win.mockDomain : domain;\n }\n function isActuallySameDomain(win) {\n try {\n if (win === window) return !0;\n } catch (err) {}\n try {\n var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n if (desc && !1 === desc.enumerable) return !1;\n } catch (err) {}\n try {\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n } catch (err) {}\n try {\n if (getActualDomain(win) === getActualDomain(window)) return !0;\n } catch (err) {}\n return !1;\n }\n function isAncestorParent(parent, child) {\n if (!parent || !child) return !1;\n var childParent = getParent(child);\n return childParent ? childParent === parent : -1 !== function(win) {\n var result = [];\n try {\n for (;win.parent !== win; ) {\n result.push(win.parent);\n win = win.parent;\n }\n } catch (err) {}\n return result;\n }(child).indexOf(parent);\n }\n function getFrames(win) {\n var result = [], frames = void 0;\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n var len = void 0;\n try {\n len = frames.length;\n } catch (err) {}\n if (0 === len) return result;\n if (len) {\n for (var i = 0; i < len; i++) {\n var frame = void 0;\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n result.push(frame);\n }\n return result;\n }\n for (var _i = 0; _i < 100; _i++) {\n var _frame = void 0;\n try {\n _frame = frames[_i];\n } catch (err) {\n return result;\n }\n if (!_frame) return result;\n result.push(_frame);\n }\n return result;\n }\n var iframeWindows = [], iframeFrames = [];\n function isWindowClosed(win) {\n var allowMock = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n try {\n if (win === window) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (!win) return !0;\n } catch (err) {\n return !0;\n }\n try {\n if (win.closed) return !0;\n } catch (err) {\n return !err || err.message !== IE_WIN_ACCESS_ERROR;\n }\n if (allowMock && function(win) {\n if (!isActuallySameDomain(win)) return !1;\n try {\n if (win === window) return !0;\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n if (utils_getDomain(window) === utils_getDomain(win)) return !0;\n } catch (err) {}\n return !1;\n }(win)) try {\n if (win.mockclosed) return !0;\n } catch (err) {}\n try {\n if (!win.parent || !win.top) return !0;\n } catch (err) {}\n var iframeIndex = function(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }(iframeWindows, win);\n if (-1 !== iframeIndex) {\n var frame = iframeFrames[iframeIndex];\n if (frame && function(frame) {\n if (!frame.contentWindow) return !0;\n if (!frame.parentNode) return !0;\n var doc = frame.ownerDocument;\n return !(!doc || !doc.documentElement || doc.documentElement.contains(frame));\n }(frame)) return !0;\n }\n return !1;\n }\n function getAncestor() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return getOpener(win = win || window) || getParent(win) || void 0;\n }\n function matchDomain(pattern, origin) {\n if (\"string\" == typeof pattern) {\n if (\"string\" == typeof origin) return pattern === WILDCARD || origin === pattern;\n if (isRegex(origin)) return !1;\n if (Array.isArray(origin)) return !1;\n }\n return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some(function(subpattern) {\n return matchDomain(subpattern, origin);\n }));\n }\n function isWindow(obj) {\n try {\n if (obj === window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (\"[object Window]\" === Object.prototype.toString.call(obj)) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (window.Window && obj instanceof window.Window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.self === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.parent === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.top === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n } catch (err) {\n return !0;\n }\n return !1;\n }\n function util_safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }\n var _ALLOWED_POST_MESSAGE, weakmap_CrossDomainSafeWeakMap = function() {\n function CrossDomainSafeWeakMap() {\n !function(instance, Constructor) {\n if (!(instance instanceof CrossDomainSafeWeakMap)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n if (function() {\n if (\"undefined\" == typeof WeakMap) return !1;\n if (void 0 === Object.freeze) return !1;\n try {\n var testWeakMap = new WeakMap(), testKey = {};\n Object.freeze(testKey);\n testWeakMap.set(testKey, \"__testvalue__\");\n return \"__testvalue__\" === testWeakMap.get(testKey);\n } catch (err) {\n return !1;\n }\n }()) try {\n this.weakmap = new WeakMap();\n } catch (err) {}\n this.keys = [];\n this.values = [];\n }\n CrossDomainSafeWeakMap.prototype._cleanupClosedWindows = function() {\n for (var weakmap = this.weakmap, keys = this.keys, i = 0; i < keys.length; i++) {\n var value = keys[i];\n if (isWindow(value) && isWindowClosed(value)) {\n if (weakmap) try {\n weakmap.delete(value);\n } catch (err) {}\n keys.splice(i, 1);\n this.values.splice(i, 1);\n i -= 1;\n }\n }\n };\n CrossDomainSafeWeakMap.prototype.isSafeToReadWrite = function(key) {\n if (isWindow(key)) return !1;\n try {\n key && key.self;\n key && key[this.name];\n } catch (err) {\n return !1;\n }\n return !0;\n };\n CrossDomainSafeWeakMap.prototype.set = function(key, value) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var name = this.name, entry = key[name];\n entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: !0\n });\n return;\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, values = this.values, index = util_safeIndexOf(keys, key);\n if (-1 === index) {\n keys.push(key);\n values.push(value);\n } else values[index] = value;\n };\n CrossDomainSafeWeakMap.prototype.get = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return weakmap.get(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return entry && entry[0] === key ? entry[1] : void 0;\n } catch (err) {}\n this._cleanupClosedWindows();\n var index = util_safeIndexOf(this.keys, key);\n if (-1 !== index) return this.values[index];\n };\n CrossDomainSafeWeakMap.prototype.delete = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, index = util_safeIndexOf(keys, key);\n if (-1 !== index) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n };\n CrossDomainSafeWeakMap.prototype.has = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return !0;\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return !(!entry || entry[0] !== key);\n } catch (err) {}\n this._cleanupClosedWindows();\n return -1 !== util_safeIndexOf(this.keys, key);\n };\n CrossDomainSafeWeakMap.prototype.getOrSet = function(key, getter) {\n if (this.has(key)) return this.get(key);\n var value = getter();\n this.set(key, value);\n return value;\n };\n return CrossDomainSafeWeakMap;\n }(), constants_CONSTANTS = {\n POST_MESSAGE_TYPE: {\n REQUEST: \"postrobot_message_request\",\n RESPONSE: \"postrobot_message_response\",\n ACK: \"postrobot_message_ack\"\n },\n POST_MESSAGE_ACK: {\n SUCCESS: \"success\",\n ERROR: \"error\"\n },\n POST_MESSAGE_NAMES: {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_ready\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n },\n WINDOW_TYPES: {\n FULLPAGE: \"fullpage\",\n POPUP: \"popup\",\n IFRAME: \"iframe\"\n },\n WINDOW_PROPS: {\n POSTROBOT: \"__postRobot__\"\n },\n SERIALIZATION_TYPES: {\n METHOD: \"postrobot_method\",\n ERROR: \"postrobot_error\",\n PROMISE: \"postrobot_promise\",\n ZALGO_PROMISE: \"postrobot_zalgo_promise\",\n REGEX: \"regex\"\n },\n SEND_STRATEGIES: {\n POST_MESSAGE: \"postrobot_post_message\",\n BRIDGE: \"postrobot_bridge\",\n GLOBAL: \"postrobot_global\"\n },\n MOCK_PROTOCOL: \"mock:\",\n FILE_PROTOCOL: \"file:\",\n BRIDGE_NAME_PREFIX: \"__postrobot_bridge__\",\n POSTROBOT_PROXY: \"__postrobot_proxy__\",\n WILDCARD: \"*\"\n }, POST_MESSAGE_NAMES = {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_hello\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n }, CONFIG = (Object.keys(POST_MESSAGE_NAMES).map(function(key) {\n return POST_MESSAGE_NAMES[key];\n }), {\n ALLOW_POSTMESSAGE_POPUP: !(\"__ALLOW_POSTMESSAGE_POPUP__\" in window) || window.__ALLOW_POSTMESSAGE_POPUP__,\n BRIDGE_TIMEOUT: 5e3,\n CHILD_WINDOW_TIMEOUT: 5e3,\n ACK_TIMEOUT: -1 !== window.navigator.userAgent.match(/MSIE/i) ? 1e4 : 2e3,\n RES_TIMEOUT: -1,\n ALLOWED_POST_MESSAGE_METHODS: (_ALLOWED_POST_MESSAGE = {}, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = !0, \n _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.BRIDGE] = !0, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.GLOBAL] = !0, \n _ALLOWED_POST_MESSAGE),\n ALLOW_SAME_ORIGIN: !1\n });\n 0 === window.location.href.indexOf(constants_CONSTANTS.FILE_PROTOCOL) && (CONFIG.ALLOW_POSTMESSAGE_POPUP = !0);\n var _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function stringifyError(err) {\n var level = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\n if (level >= 3) return \"stringifyError stack overflow\";\n try {\n if (!err) return \"\";\n if (\"string\" == typeof err) return err;\n if (err instanceof Error) {\n var stack = err && err.stack, message = err && err.message;\n if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n if (stack) return stack;\n if (message) return message;\n }\n return \"function\" == typeof err.toString ? err.toString() : Object.prototype.toString.call(err);\n } catch (newErr) {\n return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n }\n }\n var once = function(method) {\n if (!method) return method;\n var called = !1;\n return function() {\n if (!called) {\n called = !0;\n return method.apply(this, arguments);\n }\n };\n };\n function lib_util_noop() {}\n function uniqueID() {\n var chars = \"0123456789abcdef\";\n return \"xxxxxxxxxx\".replace(/./g, function() {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n }\n function replaceObject(item, callback) {\n var depth = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\n if (depth >= 100) throw new Error(\"Self-referential object passed, or object contained too many layers\");\n var newobj = void 0;\n if (\"object\" !== (void 0 === item ? \"undefined\" : _typeof(item)) || null === item || Array.isArray(item)) {\n if (!Array.isArray(item)) throw new TypeError(\"Invalid type: \" + (void 0 === item ? \"undefined\" : _typeof(item)));\n newobj = [];\n } else newobj = {};\n !function(item, callback) {\n Array.isArray(item) ? function(item, callback) {\n for (var i = 0; i < item.length; i++) callback(item[i], i);\n }(item, callback) : \"object\" === (void 0 === item ? \"undefined\" : _typeof(item)) && null !== item && function(item, callback) {\n for (var _key in item) item.hasOwnProperty(_key) && callback(item[_key], _key);\n }(item, callback);\n }(item, function(childItem, key) {\n var result = callback(childItem, key);\n void 0 !== result ? newobj[key] = result : \"object\" === (void 0 === childItem ? \"undefined\" : _typeof(childItem)) && null !== childItem ? newobj[key] = replaceObject(childItem, callback, depth + 1) : newobj[key] = childItem;\n });\n return newobj;\n }\n function util_isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n function utils_isPromise(item) {\n try {\n if (!item) return !1;\n if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n var _toString = {}.toString;\n if (_toString) {\n var name = _toString.call(item);\n if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n }\n if (\"function\" == typeof item.then) return !0;\n } catch (err) {\n return !1;\n }\n return !1;\n }\n var dispatchedErrors = [], possiblyUnhandledPromiseHandlers = [], activeCount = 0, flushPromise = void 0;\n function flushActive() {\n if (!activeCount && flushPromise) {\n var promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n }\n function startActive() {\n activeCount += 1;\n }\n function endActive() {\n activeCount -= 1;\n flushActive();\n }\n var promise_ZalgoPromise = function() {\n function ZalgoPromise(handler) {\n var _this = this;\n !function(instance, Constructor) {\n if (!(instance instanceof ZalgoPromise)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.resolved = !1;\n this.rejected = !1;\n this.errorHandled = !1;\n this.handlers = [];\n if (handler) {\n var _result = void 0, _error = void 0, resolved = !1, rejected = !1, isAsync = !1;\n startActive();\n try {\n handler(function(res) {\n if (isAsync) _this.resolve(res); else {\n resolved = !0;\n _result = res;\n }\n }, function(err) {\n if (isAsync) _this.reject(err); else {\n rejected = !0;\n _error = err;\n }\n });\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n endActive();\n isAsync = !0;\n resolved ? this.resolve(_result) : rejected && this.reject(_error);\n }\n }\n ZalgoPromise.prototype.resolve = function(result) {\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n this.resolved = !0;\n this.value = result;\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.reject = function(error) {\n var _this2 = this;\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n if (!error) {\n var _err = error && \"function\" == typeof error.toString ? error.toString() : Object.prototype.toString.call(error);\n error = new Error(\"Expected reject to be called with Error, got \" + _err);\n }\n this.rejected = !0;\n this.error = error;\n this.errorHandled || setTimeout(function() {\n _this2.errorHandled || function(err, promise) {\n if (-1 === dispatchedErrors.indexOf(err)) {\n dispatchedErrors.push(err);\n setTimeout(function() {\n throw err;\n }, 1);\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n }(error, _this2);\n }, 1);\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.asyncReject = function(error) {\n this.errorHandled = !0;\n this.reject(error);\n return this;\n };\n ZalgoPromise.prototype.dispatch = function() {\n var dispatching = this.dispatching, resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n if (!dispatching && (resolved || rejected)) {\n this.dispatching = !0;\n startActive();\n for (var chain = function(firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n secondPromise.resolve(res);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < handlers.length; i++) {\n var _handlers$i = handlers[i], _onSuccess = _handlers$i.onSuccess, _onError = _handlers$i.onError, _promise = _handlers$i.promise, _result2 = void 0;\n if (resolved) try {\n _result2 = _onSuccess ? _onSuccess(this.value) : this.value;\n } catch (err) {\n _promise.reject(err);\n continue;\n } else if (rejected) {\n if (!_onError) {\n _promise.reject(this.error);\n continue;\n }\n try {\n _result2 = _onError(this.error);\n } catch (err) {\n _promise.reject(err);\n continue;\n }\n }\n if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error);\n _result2.errorHandled = !0;\n } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error) : chain(_result2, _promise) : _promise.resolve(_result2);\n }\n handlers.length = 0;\n this.dispatching = !1;\n endActive();\n }\n };\n ZalgoPromise.prototype.then = function(onSuccess, onError) {\n if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n var promise = new ZalgoPromise();\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n this.errorHandled = !0;\n this.dispatch();\n return promise;\n };\n ZalgoPromise.prototype.catch = function(onError) {\n return this.then(void 0, onError);\n };\n ZalgoPromise.prototype.finally = function(onFinally) {\n if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n return this.then(function(result) {\n return ZalgoPromise.try(onFinally).then(function() {\n return result;\n });\n }, function(err) {\n return ZalgoPromise.try(onFinally).then(function() {\n throw err;\n });\n });\n };\n ZalgoPromise.prototype.timeout = function(time, err) {\n var _this3 = this;\n if (this.resolved || this.rejected) return this;\n var timeout = setTimeout(function() {\n _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n }, time);\n return this.then(function(result) {\n clearTimeout(timeout);\n return result;\n });\n };\n ZalgoPromise.prototype.toPromise = function() {\n if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n return Promise.resolve(this);\n };\n ZalgoPromise.resolve = function(value) {\n return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise(function(resolve, reject) {\n return value.then(resolve, reject);\n }) : new ZalgoPromise().resolve(value);\n };\n ZalgoPromise.reject = function(error) {\n return new ZalgoPromise().reject(error);\n };\n ZalgoPromise.asyncReject = function(error) {\n return new ZalgoPromise().asyncReject(error);\n };\n ZalgoPromise.all = function(promises) {\n var promise = new ZalgoPromise(), count = promises.length, results = [];\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n for (var chain = function(i, firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n results[i] = res;\n 0 == (count -= 1) && promise.resolve(results);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < promises.length; i++) {\n var prom = promises[i];\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!utils_isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n 0 === count && promise.resolve(results);\n return promise;\n };\n ZalgoPromise.hash = function(promises) {\n var result = {};\n return ZalgoPromise.all(Object.keys(promises).map(function(key) {\n return ZalgoPromise.resolve(promises[key]).then(function(value) {\n result[key] = value;\n });\n })).then(function() {\n return result;\n });\n };\n ZalgoPromise.map = function(items, method) {\n return ZalgoPromise.all(items.map(method));\n };\n ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n return function(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n return {\n cancel: function() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n }(handler);\n };\n ZalgoPromise.try = function(method, context, args) {\n if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n var result = void 0;\n startActive();\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n endActive();\n return ZalgoPromise.resolve(result);\n };\n ZalgoPromise.delay = function(_delay) {\n return new ZalgoPromise(function(resolve) {\n setTimeout(resolve, _delay);\n });\n };\n ZalgoPromise.isPromise = function(value) {\n return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n };\n ZalgoPromise.flush = function() {\n return function(Zalgo) {\n var promise = flushPromise = flushPromise || new ZalgoPromise();\n flushActive();\n return promise;\n }();\n };\n return ZalgoPromise;\n }(), global = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n global.registerSelf = function() {};\n var serialize__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.methods = global.methods || new weakmap_CrossDomainSafeWeakMap();\n var listenForMethods = once(function() {\n global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n origin: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin, data = _ref.data, methods = global.methods.get(source);\n if (!methods) throw new Error(\"Could not find any methods this window has privileges to call\");\n var meth = methods[data.id];\n if (!meth) throw new Error(\"Could not find method with id: \" + data.id);\n if (!matchDomain(meth.domain, origin)) throw new Error(\"Method domain \" + meth.domain + \" does not match origin \" + origin);\n return promise_ZalgoPromise.try(function() {\n return meth.method.apply({\n source: source,\n origin: origin,\n data: data\n }, data.args);\n }).then(function(result) {\n return {\n result: result,\n id: data.id,\n name: data.name\n };\n });\n });\n });\n function isSerialized(item, type) {\n return \"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item && item.__type__ === type;\n }\n function serializeMethod(destination, domain, method, name) {\n var id = uniqueID(), methods = global.methods.get(destination);\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n methods[id] = {\n domain: domain,\n method: method\n };\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n }\n function deserializeMethod(source, origin, obj) {\n function wrapper() {\n var args = Array.prototype.slice.call(arguments);\n return global.send(source, constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args: args\n }, {\n domain: origin,\n timeout: -1\n }).then(function(_ref2) {\n return _ref2.data.result;\n }, function(err) {\n throw err;\n });\n }\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = !0;\n wrapper.source = source;\n wrapper.origin = origin;\n return wrapper;\n }\n function deserializeZalgoPromise(source, origin, prom) {\n return new promise_ZalgoPromise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n });\n }\n global.readyPromises = global.readyPromises || new weakmap_CrossDomainSafeWeakMap();\n function sayHello(win) {\n return global.send(win, constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, {\n domain: constants_CONSTANTS.WILDCARD,\n timeout: -1\n }).then(function(_ref2) {\n return {\n origin: _ref2.origin\n };\n });\n }\n var SEND_MESSAGE_STRATEGIES = {};\n SEND_MESSAGE_STRATEGIES[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = function(win, serializedMessage, domain) {\n (Array.isArray(domain) ? domain : \"string\" == typeof domain ? [ domain ] : [ constants_CONSTANTS.WILDCARD ]).map(function(dom) {\n if (0 === dom.indexOf(constants_CONSTANTS.MOCK_PROTOCOL)) {\n if (window.location.protocol === constants_CONSTANTS.FILE_PROTOCOL) return constants_CONSTANTS.WILDCARD;\n if (!isActuallySameDomain(win)) throw new Error(\"Attempting to send messsage to mock domain \" + dom + \", but window is actually cross-domain\");\n return getActualDomain(win);\n }\n return 0 === dom.indexOf(constants_CONSTANTS.FILE_PROTOCOL) ? constants_CONSTANTS.WILDCARD : dom;\n }).forEach(function(dom) {\n return win.postMessage(serializedMessage, dom);\n });\n };\n var _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n };\n function sendMessage(win, message, domain) {\n return promise_ZalgoPromise.try(function() {\n var _jsonStringify;\n message = function(win, message) {\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, id = uniqueID(), type = function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getOpener(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.POPUP : function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getParent(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.IFRAME : constants_CONSTANTS.WINDOW_TYPES.FULLPAGE, sourceDomain = utils_getDomain(window);\n return _extends({}, message, options, {\n sourceDomain: sourceDomain,\n id: message.id || id,\n windowType: type\n });\n }(win, message, {\n data: function(destination, domain, obj) {\n return replaceObject({\n obj: message.data\n }, function(item, key) {\n return \"function\" == typeof item ? serializeMethod(destination, domain, item, key.toString()) : item instanceof Error ? (err = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n __code__: err.code\n }) : window.Promise && item instanceof window.Promise ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : promise_ZalgoPromise.isPromise(item) ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : util_isRegex(item) ? (regex = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n }) : void 0;\n var err, regex;\n }).obj;\n }(win, domain),\n domain: domain\n });\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) throw new Error(\"Attemping to send message to self\");\n if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n var messages = [], serializedMessage = function(obj, replacer, indent) {\n var objectToJSON = void 0, arrayToJSON = void 0;\n try {\n if (\"{}\" !== JSON.stringify({})) {\n objectToJSON = Object.prototype.toJSON;\n delete Object.prototype.toJSON;\n }\n if (\"{}\" !== JSON.stringify({})) throw new Error(\"Can not correctly serialize JSON objects\");\n if (\"[]\" !== JSON.stringify([])) {\n arrayToJSON = Array.prototype.toJSON;\n delete Array.prototype.toJSON;\n }\n if (\"[]\" !== JSON.stringify([])) throw new Error(\"Can not correctly serialize JSON objects\");\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n var result = JSON.stringify.call(this, obj, null, 2);\n try {\n objectToJSON && (Object.prototype.toJSON = objectToJSON);\n arrayToJSON && (Array.prototype.toJSON = arrayToJSON);\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n return result;\n }(((_jsonStringify = {})[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = message, \n _jsonStringify));\n return promise_ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), function(strategyName) {\n return promise_ZalgoPromise.try(function() {\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) throw new Error(\"Strategy disallowed: \" + strategyName);\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n }).then(function() {\n messages.push(strategyName + \": success\");\n return !0;\n }, function(err) {\n messages.push(strategyName + \": \" + stringifyError(err) + \"\\n\");\n return !1;\n });\n }).then(function(results) {\n var success = results.some(Boolean), status = message.type + \" \" + message.name + \" \" + (success ? \"success\" : \"error\") + \":\\n - \" + messages.join(\"\\n - \") + \"\\n\";\n if (!success) throw new Error(status);\n });\n });\n }\n global.responseListeners = global.responseListeners || {};\n global.requestListeners = global.requestListeners || {};\n global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new function() {}();\n global.erroredResponseListeners = global.erroredResponseListeners || {};\n var _RECEIVE_MESSAGE_TYPE, __DOMAIN_REGEX__ = \"__domain_regex__\";\n function getResponseListener(hash) {\n return global.responseListeners[hash];\n }\n function deleteResponseListener(hash) {\n delete global.responseListeners[hash];\n }\n function isResponseListenerErrored(hash) {\n return Boolean(global.erroredResponseListeners[hash]);\n }\n function getRequestListener(_ref) {\n var name = _ref.name, win = _ref.win, domain = _ref.domain;\n win === constants_CONSTANTS.WILDCARD && (win = null);\n domain === constants_CONSTANTS.WILDCARD && (domain = null);\n if (!name) throw new Error(\"Name required to get request listener\");\n var nameListeners = global.requestListeners[name];\n if (nameListeners) for (var _i2 = 0, _ref3 = [ win, global.WINDOW_WILDCARD ], _length2 = null == _ref3 ? 0 : _ref3.length; _i2 < _length2; _i2++) {\n var winQualifier = _ref3[_i2], winListeners = winQualifier && nameListeners.get(winQualifier);\n if (winListeners) {\n if (domain && \"string\" == typeof domain) {\n if (winListeners[domain]) return winListeners[domain];\n if (winListeners[__DOMAIN_REGEX__]) for (var _i4 = 0, _winListeners$__DOMAI2 = winListeners[__DOMAIN_REGEX__], _length4 = null == _winListeners$__DOMAI2 ? 0 : _winListeners$__DOMAI2.length; _i4 < _length4; _i4++) {\n var _ref5 = _winListeners$__DOMAI2[_i4], regex = _ref5.regex, listener = _ref5.listener;\n if (matchDomain(regex, domain)) return listener;\n }\n }\n if (winListeners[constants_CONSTANTS.WILDCARD]) return winListeners[constants_CONSTANTS.WILDCARD];\n }\n }\n }\n var types__extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }, RECEIVE_MESSAGE_TYPES = ((_RECEIVE_MESSAGE_TYPE = {})[constants_CONSTANTS.POST_MESSAGE_TYPE.ACK] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message ack for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n options.ack = !0;\n }\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST] = function(source, origin, message) {\n var options = getRequestListener({\n name: message.name,\n win: source,\n domain: origin\n });\n function respond(data) {\n return message.fireAndForget || isWindowClosed(source) ? promise_ZalgoPromise.resolve() : sendMessage(source, types__extends({\n target: message.originalSource,\n hash: message.hash,\n name: message.name\n }, data), origin);\n }\n return promise_ZalgoPromise.all([ respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.ACK\n }), promise_ZalgoPromise.try(function() {\n if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Request origin \" + origin + \" does not match domain \" + options.domain.toString());\n var data = message.data;\n return options.handler({\n source: source,\n origin: origin,\n data: data\n });\n }).then(function(data) {\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data: data\n });\n }, function(err) {\n var error = stringifyError(err).replace(/^Error: /, \"\"), code = err.code;\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error: error,\n code: code\n });\n }) ]).then(lib_util_noop).catch(function(err) {\n if (options && options.handleError) return options.handleError(err);\n throw err;\n });\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var pattern, options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message response for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() : pattern.toString()));\n deleteResponseListener(message.hash);\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n var err = new Error(message.error);\n message.code && (err.code = message.code);\n return options.respond(err, null);\n }\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n var data = message.data || message.response;\n return options.respond(null, {\n source: source,\n origin: origin,\n data: data\n });\n }\n }\n }, _RECEIVE_MESSAGE_TYPE), receive__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.receivedMessages = global.receivedMessages || [];\n function receiveMessage(event) {\n if (window && !window.closed) {\n try {\n if (!event.source) return;\n } catch (err) {\n return;\n }\n var source = event.source, origin = event.origin, message = function(message) {\n var item, parsedMessage = void 0;\n try {\n parsedMessage = (item = message, JSON.parse(item));\n } catch (err) {\n return;\n }\n if (parsedMessage && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && (parsedMessage = parsedMessage[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT]) && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && parsedMessage.type && \"string\" == typeof parsedMessage.type && RECEIVE_MESSAGE_TYPES[parsedMessage.type]) return parsedMessage;\n }(event.data);\n if (message) {\n if (!message.sourceDomain || \"string\" != typeof message.sourceDomain) throw new Error(\"Expected message to have sourceDomain\");\n 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.MOCK_PROTOCOL) && 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.FILE_PROTOCOL) || (origin = message.sourceDomain);\n if (-1 === global.receivedMessages.indexOf(message.id)) {\n global.receivedMessages.push(message.id);\n if (!isWindowClosed(source) || message.fireAndForget) {\n message.data && (message.data = function(source, origin, obj) {\n return replaceObject({\n obj: message.data\n }, function(item) {\n if (\"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item) return isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.METHOD) ? deserializeMethod(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ERROR) ? function(source, origin, obj) {\n var err = new Error(obj.__message__);\n obj.__code__ && (err.code = obj.__code__);\n return err;\n }(0, 0, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE) ? function(source, origin, prom) {\n return window.Promise ? new window.Promise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n }) : deserializeZalgoPromise(source, origin, prom);\n }(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE) ? deserializeZalgoPromise(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.REGEX) ? function(source, origin, item) {\n return new RegExp(item.__source__);\n }(0, 0, item) : void 0;\n }).obj;\n }(source, origin));\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n }\n }\n }\n }\n }\n function messageListener(event) {\n try {\n event.source;\n } catch (err) {\n return;\n }\n receiveMessage({\n source: event.source || event.sourceElement,\n origin: event.origin || event.originalEvent && event.originalEvent.origin,\n data: event.data\n });\n }\n global.receiveMessage = receiveMessage;\n global.requestPromises = global.requestPromises || new weakmap_CrossDomainSafeWeakMap();\n function request(options) {\n return promise_ZalgoPromise.try(function() {\n if (!options.name) throw new Error(\"Expected options.name\");\n var name = options.name, targetWindow = void 0, domain = void 0;\n if (\"string\" == typeof options.window) {\n var el = document.getElementById(options.window);\n if (!el) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be a valid element id\");\n if (\"iframe\" !== el.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (!el.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n targetWindow = el.contentWindow;\n } else if (options.window instanceof HTMLIFrameElement) {\n if (\"iframe\" !== options.window.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (options.window && !options.window.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n options.window && options.window.contentWindow && (targetWindow = options.window.contentWindow);\n } else targetWindow = options.window;\n if (!targetWindow) throw new Error(\"Expected options.window to be a window object, iframe, or iframe element id.\");\n var win = targetWindow;\n domain = options.domain || constants_CONSTANTS.WILDCARD;\n var hash = options.name + \"_\" + uniqueID();\n if (isWindowClosed(win)) throw new Error(\"Target window is closed\");\n var hasResult = !1, requestPromises = global.requestPromises.get(win);\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n var requestPromise = promise_ZalgoPromise.try(function() {\n if (function(parent, child) {\n var actualParent = getAncestor(child);\n if (actualParent) return actualParent === parent;\n if (child === parent) return !1;\n if (function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n try {\n if (win.top) return win.top;\n } catch (err) {}\n if (getParent(win) === win) return win;\n try {\n if (isAncestorParent(window, win) && window.top) return window.top;\n } catch (err) {}\n try {\n if (isAncestorParent(win, window) && window.top) return window.top;\n } catch (err) {}\n for (var _i7 = 0, _getAllChildFrames4 = function getAllChildFrames(win) {\n for (var result = [], _i3 = 0, _getFrames2 = getFrames(win), _length2 = null == _getFrames2 ? 0 : _getFrames2.length; _i3 < _length2; _i3++) {\n var frame = _getFrames2[_i3];\n result.push(frame);\n for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame), _length4 = null == _getAllChildFrames2 ? 0 : _getAllChildFrames2.length; _i5 < _length4; _i5++) {\n var childFrame = _getAllChildFrames2[_i5];\n result.push(childFrame);\n }\n }\n return result;\n }(win), _length6 = null == _getAllChildFrames4 ? 0 : _getAllChildFrames4.length; _i7 < _length6; _i7++) {\n var frame = _getAllChildFrames4[_i7];\n try {\n if (frame.top) return frame.top;\n } catch (err) {}\n if (getParent(frame) === frame) return frame;\n }\n }(child) === child) return !1;\n for (var _i15 = 0, _getFrames8 = getFrames(parent), _length14 = null == _getFrames8 ? 0 : _getFrames8.length; _i15 < _length14; _i15++) if (_getFrames8[_i15] === child) return !0;\n return !1;\n }(window, win)) return function(win) {\n var timeout = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 5e3, name = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : \"Window\", promise = global.readyPromises.get(win);\n if (promise) return promise;\n promise = new promise_ZalgoPromise();\n global.readyPromises.set(win, promise);\n -1 !== timeout && setTimeout(function() {\n return promise.reject(new Error(name + \" did not load after \" + timeout + \"ms\"));\n }, timeout);\n return promise;\n }(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain) && !origin) return sayHello(win);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain)) {\n if (!matchDomain(domain, origin)) throw new Error(\"Remote window domain \" + origin + \" does not match regex: \" + domain.toString());\n domain = origin;\n }\n if (\"string\" != typeof domain && !Array.isArray(domain)) throw new TypeError(\"Expected domain to be a string or array\");\n var actualDomain = domain;\n return new promise_ZalgoPromise(function(resolve, reject) {\n var responseListener = void 0;\n options.fireAndForget || function(hash, listener) {\n global.responseListeners[hash] = listener;\n }(hash, responseListener = {\n name: name,\n window: win,\n domain: actualDomain,\n respond: function(err, result) {\n if (!err) {\n hasResult = !0;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n err ? reject(err) : resolve(result);\n }\n });\n sendMessage(win, {\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash: hash,\n name: name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n if (options.fireAndForget) return resolve();\n var ackTimeout = CONFIG.ACK_TIMEOUT, resTimeout = options.timeout || CONFIG.RES_TIMEOUT, cycleTime = 100;\n setTimeout(function cycle() {\n if (!hasResult) {\n if (isWindowClosed(win)) return responseListener.ack ? reject(new Error(\"Window closed for \" + name + \" before response\")) : reject(new Error(\"Window closed for \" + name + \" before ack\"));\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n -1 !== resTimeout && (resTimeout = Math.max(resTimeout - cycleTime, 0));\n if (responseListener.ack) {\n if (-1 === resTimeout) return;\n cycleTime = Math.min(resTimeout, 2e3);\n } else {\n if (0 === ackTimeout) return reject(new Error(\"No ack for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + CONFIG.ACK_TIMEOUT + \"ms\"));\n if (0 === resTimeout) return reject(new Error(\"No response for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + (options.timeout || CONFIG.RES_TIMEOUT) + \"ms\"));\n }\n setTimeout(cycle, cycleTime);\n }\n }, cycleTime);\n });\n });\n requestPromise.catch(function() {\n !function(hash) {\n global.erroredResponseListeners[hash] = !0;\n }(hash);\n deleteResponseListener(hash);\n });\n requestPromises.push(requestPromise);\n return requestPromise;\n });\n }\n function _send(window, name, data, options) {\n (options = options || {}).window = window;\n options.name = name;\n options.data = data;\n return request(options);\n }\n function sendToParent(name, data, options) {\n var win = getAncestor();\n return win ? _send(win, name, data, options) : new promise_ZalgoPromise(function(resolve, reject) {\n return reject(new Error(\"Window does not have a parent\"));\n });\n }\n function client() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (!options.window) throw new Error(\"Expected options.window\");\n var win = options.window;\n return {\n send: function(name, data) {\n return _send(win, name, data, options);\n }\n };\n }\n global.send = _send;\n var server__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function listen(options) {\n if (!options.name) throw new Error(\"Expected options.name\");\n if (!options.handler) throw new Error(\"Expected options.handler\");\n var name = options.name, win = options.window, domain = options.domain, listenerOptions = {\n handler: options.handler,\n handleError: options.errorHandler || function(err) {\n throw err;\n },\n window: win,\n domain: domain || constants_CONSTANTS.WILDCARD,\n name: name\n }, requestListener = function addRequestListener(_ref6, listener) {\n var name = _ref6.name, win = _ref6.win, domain = _ref6.domain;\n if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n if (Array.isArray(win)) {\n for (var listenersCollection = [], _i6 = 0, _win2 = win, _length6 = null == _win2 ? 0 : _win2.length; _i6 < _length6; _i6++) {\n var item = _win2[_i6];\n listenersCollection.push(addRequestListener({\n name: name,\n domain: domain,\n win: item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i8 = 0, _length8 = null == listenersCollection ? 0 : listenersCollection.length; _i8 < _length8; _i8++) listenersCollection[_i8].cancel();\n }\n };\n }\n if (Array.isArray(domain)) {\n for (var _listenersCollection = [], _i10 = 0, _domain2 = domain, _length10 = null == _domain2 ? 0 : _domain2.length; _i10 < _length10; _i10++) {\n var _item = _domain2[_i10];\n _listenersCollection.push(addRequestListener({\n name: name,\n win: win,\n domain: _item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i12 = 0, _length12 = null == _listenersCollection ? 0 : _listenersCollection.length; _i12 < _length12; _i12++) _listenersCollection[_i12].cancel();\n }\n };\n }\n var existingListener = getRequestListener({\n name: name,\n win: win,\n domain: domain\n });\n win && win !== constants_CONSTANTS.WILDCARD || (win = global.WINDOW_WILDCARD);\n domain = domain || constants_CONSTANTS.WILDCARD;\n if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n var requestListeners = global.requestListeners, nameListeners = requestListeners[name];\n if (!nameListeners) {\n nameListeners = new weakmap_CrossDomainSafeWeakMap();\n requestListeners[name] = nameListeners;\n }\n var winListeners = nameListeners.get(win);\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n var strDomain = domain.toString(), regexListeners = winListeners[__DOMAIN_REGEX__], regexListener = void 0;\n if (util_isRegex(domain)) {\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n regexListener = {\n regex: domain,\n listener: listener\n };\n regexListeners.push(regexListener);\n } else winListeners[strDomain] = listener;\n return {\n cancel: function() {\n if (winListeners) {\n delete winListeners[strDomain];\n win && 0 === Object.keys(winListeners).length && nameListeners.delete(win);\n regexListener && regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n };\n }({\n name: name,\n win: win,\n domain: domain\n }, listenerOptions);\n if (options.once) {\n var _handler = listenerOptions.handler;\n listenerOptions.handler = once(function() {\n requestListener.cancel();\n return _handler.apply(this, arguments);\n });\n }\n if (listenerOptions.window && options.errorOnClose) var interval = function(method, time) {\n var timeout = void 0;\n timeout = setTimeout(function runInterval() {\n timeout = setTimeout(runInterval, 50);\n (function() {\n if (win && \"object\" === (void 0 === win ? \"undefined\" : server__typeof(win)) && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error(\"Post message target window is closed\"));\n }\n }).call();\n }, 50);\n return {\n cancel: function() {\n clearTimeout(timeout);\n }\n };\n }();\n return {\n cancel: function() {\n requestListener.cancel();\n }\n };\n }\n function _on(name, options, handler) {\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n (options = options || {}).name = name;\n options.handler = handler || options.handler;\n return listen(options);\n }\n function server_once(name) {\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, handler = arguments[2];\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n options = options || {};\n handler = handler || options.handler;\n var errorHandler = options.errorHandler, promise = new promise_ZalgoPromise(function(resolve, reject) {\n (options = options || {}).name = name;\n options.once = !0;\n options.handler = function(event) {\n resolve(event);\n if (handler) return handler(event);\n };\n options.errorHandler = function(err) {\n reject(err);\n if (errorHandler) return errorHandler(err);\n };\n }), onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n return promise;\n }\n function server_listener() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return {\n on: function(name, handler) {\n return _on(name, options, handler);\n }\n };\n }\n global.on = _on;\n function disable() {\n delete window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener(\"message\", messageListener);\n }\n var public_parent = getAncestor();\n function cleanUpWindow(win) {\n var requestPromises = global.requestPromises.get(win);\n if (requestPromises) for (var _i2 = 0, _length2 = null == requestPromises ? 0 : requestPromises.length; _i2 < _length2; _i2++) requestPromises[_i2].reject(new Error(\"No response from window - cleaned up\"));\n global.popupWindowsByWin && global.popupWindowsByWin.delete(win);\n global.remoteWindows && global.remoteWindows.delete(win);\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n }\n var bridge = null;\n function init() {\n if (!global.initialized) {\n handler = messageListener, (obj = window).addEventListener ? obj.addEventListener(\"message\", handler) : obj.attachEvent(\"onmessage\", handler);\n !function() {\n handler = function(_ref3) {\n var source = _ref3.source, origin = _ref3.origin, promise = global.readyPromises.get(source) || new promise_ZalgoPromise();\n promise.resolve({\n origin: origin\n });\n global.readyPromises.set(source, promise);\n }, global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {\n domain: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin;\n return handler({\n source: source,\n origin: origin\n });\n });\n var handler, parent = getAncestor();\n parent && sayHello(parent).catch(lib_util_noop);\n }();\n listenForMethods({\n on: _on,\n send: _send\n });\n }\n var obj, handler;\n global.initialized = !0;\n }\n init();\n __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(__webpack_exports__, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(__webpack_exports__, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(__webpack_exports__, \"init\", function() {\n return init;\n });\n __webpack_require__.d(__webpack_exports__, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(__webpack_exports__, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(__webpack_exports__, \"request\", function() {\n return request;\n });\n __webpack_require__.d(__webpack_exports__, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(__webpack_exports__, \"client\", function() {\n return client;\n });\n __webpack_require__.d(__webpack_exports__, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(__webpack_exports__, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(__webpack_exports__, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(__webpack_exports__, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(__webpack_exports__, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(__webpack_exports__, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(__webpack_exports__, \"disable\", function() {\n return disable;\n });\n __webpack_exports__.default = interface_namespaceObject;\n }\n });\n});\n//# sourceMappingURL=post-robot.js.map","/* @flow */\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = require('./dist/post-robot');\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports.default = module.exports;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IAssetSidebarInitData, setAssetDto } from \"./types\";\nimport Asset from './stack/api/asset'\n\n/** Class representing an asset Extension from Contentstack UI. */\n\nclass AssetSidebarWidget {\n /**\n * @hideconstructor\n */\n\n currentAsset: { [key: string]: any };\n _emitter: EventEmitter;\n _connection: any;\n _changedData?: { [key: string]: any };\n\n constructor(\n initializationData: IAssetSidebarInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * Gets the content type of the current asset.\n * @type {Object}\n */\n\n this.currentAsset = initializationData.data.currentAsset;\n\n this._emitter = emitter;\n\n this._connection = connection;\n\n const thisAsset = this;\n\n this._emitter.on(\n \"assetSave\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset.currentAsset = event.data;\n }\n );\n\n this._emitter.on(\n \"assetChange\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset._changedData = event.data;\n }\n );\n\n this.getData = this.getData.bind(this);\n this.setData = this.setData.bind(this);\n this.syncAsset = this.syncAsset.bind(this);\n this.updateWidth = this.updateWidth.bind(this);\n this.onSave = this.onSave.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onPublish = this.onPublish.bind(this);\n this.onUnPublish = this.onUnPublish.bind(this);\n this.replaceAsset = this.replaceAsset.bind(this);\n }\n\n getData() {\n return this.currentAsset;\n }\n\n async setData(asset: Partial): Promise {\n return this._connection.sendToParent(\"setData\", asset);\n }\n\n async syncAsset(): Promise {\n return this._connection.sendToParent(\"syncAsset\");\n }\n\n async updateWidth(width: number): Promise {\n if (typeof width !== \"number\") {\n throw new Error(\"Width must be a number\");\n }\n return this._connection.sendToParent(\"updateAssetSidebarWidth\", width);\n }\n\n async replaceAsset(file: File): Promise {\n const asset = Asset(this._emitter);\n return asset.handleUpload([file], 'replace');\n }\n\n /**\n * This function executes the callback function every time an asset is saved.\n * @param {function} callback The function to be called when an asset is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetSave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an asset is edited/changed.\n */\n\n onChange(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetChange\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an asset has been published with the respective payload.\n * @param {function} callback The function to be called when an asset is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an asset has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an asset is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default AssetSidebarWidget;\n","import {\n IConfigCallback,\n IContainerMetaData,\n IOnFunction,\n IPluginMetaData,\n IRteParam,\n IConfig\n} from \"./types\";\n\nexport class RTEPlugin {\n private pluginMetaData: IPluginMetaData = {\n registry: {\n title: \"\",\n toolbar: {\n inMainToolbar: true,\n inHoveringToolbar: true,\n },\n isContentstackElement: true,\n },\n meta: {\n id: \"\",\n elementType: null,\n editorCallbacks: {},\n isDependent: false,\n },\n };\n private isContainer: boolean = false;\n private containerMetaData: IContainerMetaData = {\n registry: {\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n id: this.pluginMetaData.meta.id,\n dependentPlugins: [],\n },\n };\n\n constructor(id: string, private configCallback: IConfigCallback) {\n this.pluginMetaData.meta.id = id;\n }\n\n addPlugins = (...plugins: RTEPlugin[]) => {\n // convert to dropdown if not already\n if (this.pluginMetaData.meta.isDependent)\n throw Error(\"cannot have another container inside\");\n\n this.isContainer = true;\n\n // clean pluginMetaData\n\n plugins.forEach((plugin) => {\n // make sure that this plugin is not another dropdown\n if (plugin.isContainer) {\n throw Error(\"cannot have another container inside\");\n }\n\n plugin.pluginMetaData.registry.category =\n this.pluginMetaData.meta.id;\n this.containerMetaData.meta.dependentPlugins.push(plugin);\n plugin.pluginMetaData.meta.isDependent = true;\n });\n };\n\n on = (\n type: Type,\n callback: IOnFunction[Type]\n ) => {\n switch (type) {\n case \"beforeChildRender\": {\n this.pluginMetaData.registry.beforeChildrenRender = callback;\n break;\n }\n\n case \"beforeRender\": {\n this.pluginMetaData.registry.beforeElementRender = callback;\n break;\n }\n\n case \"exec\": {\n this.pluginMetaData.registry.handleMouseDown = callback;\n break;\n }\n\n case \"keydown\": {\n this.pluginMetaData.meta.editorCallbacks[\"keydown\"] = callback;\n break;\n }\n\n case \"paste\":\n case \"deleteBackward\":\n case \"deleteForward\":\n case \"insertBreak\":\n case \"normalize\":\n default: {\n this.pluginMetaData.meta.editorCallbacks[type] = callback;\n break;\n }\n }\n };\n\n get = async (rte: IRteParam | void) => {\n const config = await this.configCallback(rte);\n\n Object.entries(config).forEach(\n //@ts-ignore\n ([key, value]: [Key, any]) => {\n switch (key) {\n case \"title\": {\n this.pluginMetaData.registry.title = value;\n break;\n }\n case \"icon\": {\n this.pluginMetaData.registry.iconName = value;\n this.containerMetaData.registry.iconName = value;\n break;\n }\n case \"display\": {\n // make every other options false\n this.pluginMetaData.registry.toolbar = {\n inHoveringToolbar: false,\n inMainToolbar: false,\n };\n\n if (typeof value === \"string\") {\n switch (value) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach((display) => {\n switch (display) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n });\n }\n break;\n }\n\n case \"elementType\": {\n const isInline = (\n typeof value === 'string' && value === 'inline' ||\n Array.isArray(value) && value.includes('inline')\n )\n if(isInline) {\n let dndOptions = this.pluginMetaData['registry']['dndOptions'];\n if(!dndOptions) {\n this.pluginMetaData['registry']['dndOptions'] = {};\n dndOptions = this.pluginMetaData['registry']['dndOptions']\n }\n dndOptions['DisableDND'] = true;\n dndOptions['DisableSelectionHalo'] = true;\n }\n this.pluginMetaData.meta.elementType = value;\n break;\n }\n\n case \"render\": {\n this.pluginMetaData.registry.Component = value;\n break;\n }\n\n case \"shouldOverride\" : {\n this.pluginMetaData.registry.shouldOverride = value\n }\n }\n }\n );\n\n const containerMeta = this.containerMetaData.meta;\n this.containerMetaData = {\n registry: {\n ...this.containerMetaData.registry,\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n ...containerMeta,\n id: this.pluginMetaData.meta.id,\n },\n };\n\n return this.isContainer ? this.containerMetaData : this.pluginMetaData;\n };\n}\n\nexport const rtePluginInitializer = (\n id: string,\n configCallback: IConfigCallback\n) => {\n if (!(id && configCallback)) throw Error('Please provide value \"id\" and \"configCallback\"');\n\n return new RTEPlugin(id, configCallback);\n};\n","import Stack from \"../stack\";\nimport { IInstallationData, ValidationOptions } from \"../types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport { onData, onError } from \"../utils/utils\";\n\nexport declare interface AppConfigAdditionalData {\n currentBranch: string;\n}\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nexport class AppConfig {\n _data: { [key: string]: any };\n _connection: any;\n _emitter: EventEmitter;\n private _additionalData: AppConfigAdditionalData;\n\n constructor(\n data: { [key: string]: any },\n connection: any,\n emitter: EventEmitter,\n additionalData: AppConfigAdditionalData\n ) {\n this._data = data;\n this._connection = connection;\n this._emitter = emitter;\n\n this.setValidity = this.setValidity.bind(this);\n this._additionalData = additionalData;\n }\n\n stack = () => {\n return new Stack(this._data.stack, this._connection, {\n currentBranch: this._additionalData.currentBranch,\n });\n };\n\n setInstallationData = (\n installationData: IInstallationData\n ): Promise<{ [key: string]: any }> => {\n return this._connection\n .sendToParent(\"setInstallationData\", installationData)\n .then(onData)\n .catch(onError);\n };\n\n getInstallationData = (): Promise => {\n return this._connection\n .sendToParent(\"getInstallationData\")\n .then(onData)\n .catch(onError);\n };\n\n /**\n * Set the validation state of the app. If the validation is false, the Contentstack App Config\n * will not allow to save the configuration. The message will be displayed if provided.\n * @param isValid set the validation state of the app\n * @param options additional options to be sent to the parent\n * @returns returns a promise with the data sent from the parent\n */\n async setValidity(\n isValid: boolean,\n options?: ValidationOptions\n ): Promise> {\n if (typeof isValid !== \"boolean\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.isValidTypeBoolean\n )\n );\n }\n\n if (options?.message && typeof options.message !== \"string\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.messageTypeString\n )\n );\n }\n\n return this._connection\n .sendToParent(\"setValidity\", { isValid, options })\n .then(onData)\n .catch(onError);\n }\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\n\nimport Field from \"./field\";\nimport {\n ICurrentContentType,\n IFieldInitData,\n IFieldModifierLocationInitData,\n IRTELocationInitData,\n ISidebarInitData,\n} from \"./types\";\nimport {\n IEntryOptions,\n IGetFieldOptions,\n IOnEntryChangeCallback,\n} from \"./types/entry.types\";\n\n/** Class representing an entry from Contentstack UI. Not available for Dashboard Widget extension. */\n\nclass Entry {\n /**\n * @hideconstructor\n */\n\n content_type: ICurrentContentType;\n _data: { [key: string]: any };\n locale: string;\n _connection: any;\n _emitter: EventEmitter;\n _changedData?: { [key: string]: any };\n _options: IEntryOptions;\n\n constructor(\n initializationData:\n | IFieldInitData\n | ISidebarInitData\n | IRTELocationInitData\n | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter,\n options?: IEntryOptions\n ) {\n /**\n * Gets the content type of the current entry.\n * @type {Object}\n */\n this.content_type = initializationData.data.content_type;\n\n this._data = initializationData.data.entry;\n\n if (initializationData.data.changedData) {\n this._changedData = initializationData.data.changedData;\n }\n\n /**\n * Gets the locale of the current entry.\n * @type {string}\n */\n this.locale = initializationData.data.locale;\n\n this._connection = connection;\n\n this._emitter = emitter;\n\n this._options = options || {};\n\n const thisEntry = this;\n\n this._emitter.on(\n \"entrySave\",\n (event: { data: { [key: string]: any } }) => {\n thisEntry._data = event.data;\n }\n );\n\n this._emitter.on(\n \"entryChange\",\n (event: { data: { [key: string]: any } }) => {\n console.log(\"rte listened to the change\", event.data);\n thisEntry._changedData = event.data;\n }\n );\n }\n\n /**\n * Gets data of the current entry.\n * @return {Object} Returns entry data.\n */\n\n getData() {\n return this._data;\n }\n\n /**\n * Gets the field object for the saved data, which allows you to interact with the field.\n * This object will have all the same methods and properties of extension.field.\n * Note: For fields initialized using the getFields function, the setData function currently works only for the following fields: as single_line, multi_line, RTE, markdown, select, number, boolean, date, link, and extension of data type text, number, boolean, and date.\n * @example\n * var field = entry.getField('field_uid');\n * var fieldSchema = field.schema;\n * var fieldUid = field.uid;\n * var fieldData = field.getData();\n * @param {string} uid Unique ID of the field\n * @param {boolean} options.useUnsavedSchema If set to true, the field will get the unsaved field\n * @return {Object} Field object\n */\n\n getField(uid: string, options?: IGetFieldOptions): Field {\n const { useUnsavedSchema = false } = options || {};\n const { FieldInstance = Field } = this._options._internalFlags || {};\n\n const path = uid.split(\".\");\n let value = useUnsavedSchema\n ? this._changedData || this._data\n : this._data;\n let schema = this.content_type.schema;\n\n const isDataEmpty = Object.keys(value).length === 0;\n\n if (isDataEmpty) {\n throw new Error(\n \"The data is unsaved. Save the data before requesting the field.\"\n );\n }\n\n try {\n let skipNext = false;\n let skipNextTwo = false;\n path.forEach((key: string | number, index: number) => {\n if (skipNext) {\n if (skipNextTwo) {\n skipNextTwo = false;\n } else {\n skipNext = false;\n }\n return;\n }\n\n schema = schema.find((x: { uid: any }) => x.uid === key);\n if (!schema) {\n throw Error(\"schema not found\");\n }\n\n value = value[key];\n\n if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === false &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n } else if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === true &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n value = value[path[index + 1]];\n skipNext = true;\n } else if (\n schema.data_type === \"blocks\" &&\n path.length !== index + 1\n ) {\n const blockId = Object.keys(value[path[index + 1]])[0];\n schema = schema.blocks.find(\n (block: { uid: string }) => block.uid === blockId\n );\n if (path.length === index + 2) {\n // complete block value with uid\n value = value[path[index + 1]];\n } else {\n // block value without uid\n value = value[path[index + 1]][blockId];\n schema = schema.schema;\n }\n\n skipNext = true;\n skipNextTwo = true;\n }\n });\n } catch (e) {\n throw Error(\"Invalid uid, Field not found\");\n }\n const fieldIntilaizationDataObject = {\n data: {\n uid,\n value,\n schema,\n data_type: schema.data_type,\n },\n };\n\n //@ts-ignore\n const fieldObject = new FieldInstance(\n fieldIntilaizationDataObject,\n this._connection,\n this._emitter\n );\n delete fieldObject.onChange;\n return fieldObject;\n }\n\n /**\n * This function executes the callback function every time an entry is saved.\n * @param {function} callback The function to be called when an entry is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entrySave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an entry is edited/changed.\n */\n\n onChange(callback: IOnEntryChangeCallback) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\n \"entryChange\",\n (event: { data: any; resolvedData: Record }) => {\n callback(event.data, event.resolvedData);\n }\n );\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an entry has been published with the respective payload.\n * @param {function} callback The function to be called when an entry is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an entry has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an entry is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default Entry;\n","import postRobot from \"post-robot\";\nimport EventEmitter from \"wolfy87-eventemitter\";\n\nimport AssetSidebarWidget from \"./AssetSidebarWidget\";\nimport { IRTELocation, IRTEPluginInitializer } from \"./RTE/types\";\nimport { AppConfig } from \"./appConfig\";\nimport Entry from \"./entry\";\nimport Field from \"./field\";\nimport FieldModifierLocationEntry from \"./fieldModifierLocation/entry\";\nimport FieldModifierLocationField from \"./fieldModifierLocation/field\";\nimport FieldModifierLocationFrame from \"./fieldModifierLocation/frame\";\nimport Metadata from \"./metadata\";\nimport Modal from \"./modal\";\nimport Stack from \"./stack\";\nimport Store from \"./store\";\nimport {\n IAppConfigInitData,\n IAppConfigWidget,\n IAssetSidebarInitData,\n ICustomField,\n IDashboardInitData,\n IDashboardWidget,\n IEntryFieldLocation,\n IEntryFieldLocationInitData,\n IFieldInitData,\n IFieldModifierLocation,\n IFieldModifierLocationInitData,\n IFullPageLocation,\n IFullPageLocationInitData,\n ILocation,\n IPageWidget,\n IRTEInitData,\n IRTELocationInitData,\n ISidebarInitData,\n ISidebarWidget,\n IUser,\n Manifest,\n Region,\n} from \"./types\";\nimport { AnyObject } from \"./types/common.types\";\nimport { formatAppRegion, onData, onError } from \"./utils/utils\";\nimport Window from \"./window\";\n\nconst emitter = new EventEmitter();\n\n/** Class representing an extension from Contentstack App Framework SDK. */\n\nclass Extension {\n /**\n * @hideconstructor\n */\n\n appUID: string;\n installationUID: string;\n currentUser: IUser;\n private type: ILocation;\n private config: AnyObject;\n postRobot: any;\n stack: Stack;\n store: Store;\n metadata: Metadata;\n locationUID: string;\n modal: Modal;\n readonly region: Region;\n version: number | null;\n\n location: {\n DashboardWidget: IDashboardWidget | null;\n SidebarWidget: ISidebarWidget | null;\n CustomField: ICustomField | null;\n RTEPlugin: IRTEPluginInitializer | null;\n RTELocation: IRTELocation | null;\n AppConfigWidget: IAppConfigWidget | null;\n FullscreenAppWidget: IPageWidget | null;\n AssetSidebarWidget: AssetSidebarWidget | null;\n EntryFieldLocation: IEntryFieldLocation | null;\n FullPage: IFullPageLocation | null;\n FieldModifierLocation: IFieldModifierLocation | null;\n };\n\n constructor(\n initData:\n | IRTEInitData\n | IDashboardInitData\n | IFieldInitData\n | ISidebarInitData\n | IAppConfigInitData\n | IAssetSidebarInitData\n | IFullPageLocationInitData\n | IEntryFieldLocationInitData\n | IFieldModifierLocationInitData\n ) {\n const initializationData = initData;\n\n this.postRobot = postRobot;\n\n /**\n * This value represents the current App's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.appUID = initializationData.data.app_id;\n\n /**\n * This value represents the current location's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.locationUID = initializationData.data.extension_uid;\n\n /**\n * This object holds details of the app initialization user.\n * @type {Object}\n */\n this.installationUID = initializationData.data.installation_uid;\n /**\n * This object holds details of the current user.\n * @type {Object}\n */\n this.currentUser = initializationData.data.user;\n\n /**\n * location of extension, \"RTE\" | \"FIELD\" | \"DASHBOARD\" | \"WIDGET\" | \"APP_CONFIG_WIDGET\" | \"FULL_SCREEN_WIDGET\".\n * @type {string}\n */\n this.type = initializationData.data.type;\n\n /**\n * Store to persist data for extension.\n * Note: Data is stored in the browser {@link external:localStorage} and will be lost if the {@link external:localStorage} is cleared in the browser.\n * @type {Store}\n */\n this.store = new Store(postRobot);\n\n /**\n * This method returns stack object which allows users to read and manipulate a range of objects in a stack.\n * @type {Stack}\n */\n this.stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n this.metadata = new Metadata(postRobot);\n\n this.config = initializationData.data.config ?? {};\n\n this.location = {\n DashboardWidget: null,\n CustomField: null,\n SidebarWidget: null,\n RTEPlugin: null,\n RTELocation: null,\n AppConfigWidget: null,\n FullscreenAppWidget: null,\n AssetSidebarWidget: null,\n FullPage: null,\n EntryFieldLocation: null,\n FieldModifierLocation: null,\n };\n\n window[\"postRobot\"] = postRobot;\n\n this.modal = new Modal();\n\n this.region = formatAppRegion(initializationData.data.region);\n\n this.version = initializationData.data.manifest?.version || null;\n\n const stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n\n switch (initializationData.data.type) {\n case \"DASHBOARD\": {\n this.location.DashboardWidget = {\n frame: new Window(\n postRobot,\n this.type as \"DASHBOARD\",\n emitter,\n initializationData.data.dashboard_width\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n case \"WIDGET\": {\n this.location.SidebarWidget = {\n entry: new Entry(\n initializationData as ISidebarInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"APP_CONFIG_WIDGET\": {\n this.location.AppConfigWidget = {\n installation: new AppConfig(\n initializationData,\n postRobot,\n emitter,\n {\n currentBranch:\n initializationData.data.currentBranch,\n }\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"ASSET_SIDEBAR_WIDGET\": {\n this.location.AssetSidebarWidget = new AssetSidebarWidget(\n initializationData as IAssetSidebarInitData,\n postRobot,\n emitter\n );\n\n break;\n }\n\n case \"RTE\": {\n import(\"./RTE\").then(({ rtePluginInitializer }) => {\n this.location.RTEPlugin = rtePluginInitializer;\n this.location.RTELocation = {\n entry: new Entry(\n initializationData as IRTELocationInitData,\n postRobot,\n emitter\n ),\n };\n });\n break;\n }\n\n case \"FIELD_MODIFIER_LOCATION\":\n case \"ENTRY_FIELD_LOCATION\": {\n initializationData.data.self = true;\n this.location.FieldModifierLocation = {\n entry: new FieldModifierLocationEntry(\n initializationData as IFieldModifierLocationInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n field: new FieldModifierLocationField(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n frame: new FieldModifierLocationFrame(postRobot, emitter),\n };\n break;\n }\n\n case \"FULL_PAGE_LOCATION\": {\n this.location.FullPage = {\n stack: stack,\n };\n break;\n }\n\n case \"FIELD\":\n default: {\n initializationData.data.self = true;\n this.location.CustomField = {\n field: new Field(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n fieldConfig: initializationData.data.field_config,\n entry: new Entry(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n frame: new Window(postRobot, this.type as \"FIELD\", emitter),\n };\n\n break;\n }\n }\n\n try {\n //@ts-ignore\n postRobot.on(\"extensionEvent\", (event) => {\n if (event.data.name === \"entrySave\") {\n emitter.emitEvent(\"entrySave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryChange\") {\n emitter.emitEvent(\"entryChange\", [\n {\n data: event.data.data,\n resolvedData: event.data.otherData.resolvedData,\n },\n ]);\n }\n\n if (event.data.name === \"entryPublish\") {\n emitter.emitEvent(\"entryPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryUnPublish\") {\n emitter.emitEvent(\"entryUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetSave\") {\n emitter.emitEvent(\"assetSave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetChange\") {\n emitter.emitEvent(\"assetChange\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetPublish\") {\n emitter.emitEvent(\"assetPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetUnPublish\") {\n emitter.emitEvent(\"assetUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"dashboardResize\") {\n emitter.emitEvent(\"dashboardResize\", [\n { state: event.data.state },\n ]);\n }\n\n if (event.data.name === \"extensionFieldChange\") {\n emitter.emitEvent(\"extensionFieldChange\", [\n { data: event.data.data },\n ]);\n }\n });\n } catch (err) {\n console.error(\"extension Event\", err);\n }\n }\n\n pulse = (eventName: string, metadata: { [key: string]: any }) => {\n this.postRobot.sendToParent(\"analytics\", { eventName, metadata });\n };\n\n getConfig = (): Promise<{ [key: string]: any }> => {\n if (!this.installationUID) {\n return Promise.resolve(this.config);\n }\n return this.postRobot\n .sendToParent(\"getConfig\")\n .then(onData)\n .catch(onError);\n };\n\n getCurrentLocation = () => {\n return this.type;\n };\n\n /**\n * Conditionally retrieves and returns the app version if not present already\n * @returns version of the app currently running.\n */\n getAppVersion = async (): Promise => {\n if (this.version) {\n return Promise.resolve(this.version);\n }\n if (!this.installationUID) {\n return Promise.resolve(null);\n }\n const orgUid = this.stack._data.org_uid;\n const options = {\n uid: this.installationUID,\n action: \"getAppManifest\",\n headers: { organization_uid: orgUid },\n skip_api_key: true,\n };\n const app: Manifest = await this.postRobot\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n this.version = app.version;\n return this.version;\n };\n\n getCurrentRegion = () => {\n return this.region;\n };\n\n static initialize(version: string) {\n const meta = {\n sdkType: \"app-sdk\",\n };\n //@ts-ignore\n return postRobot.sendToParent(\"init\", { version, meta });\n }\n\n setReady() {\n return this.postRobot.sendToParent(\"ready\");\n }\n}\n\nexport default Extension;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"./types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(field: Field, value: { [key: string]: any }) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass Field {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n\n setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false } = {}) {\n return resolved ? this._resolvedData : this._data;\n }\n\n /**\n * Sets the focus for a field when an extension is being used. This method shows user presence and highlights the extension field that the user is currently accessing in Contentstack UI.\n * @return {Object} A promise object which is resolved when Contentstack UI returns an acknowledgement of the focused state.\n */\n setFocus() {\n return this._connection.sendToParent(\"focus\");\n }\n\n /**\n * This function is called when another extension programmatically changes data of this field using field.setData() function, only available for extension field, only support extensions of data type text, number, boolean or date.\n * @param {function} callback The function to be called when an entry is published.\n */\n onChange?(callback: (data: any) => any) {\n const fieldObj = this;\n if (callback && typeof callback === \"function\") {\n fieldObj._emitter.on(\"extensionFieldChange\", (event: any) => {\n this._data = event.data;\n this._resolvedData = event.data;\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\n\nexport default Field;\n","import Entry from \"../entry\";\nimport { IFieldModifierLocationInitData } from \"../types\";\nimport { IGetTagsOptions } from \"../types/entry.types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport Field from \"./field\";\n\nclass FieldModifierLocationEntry extends Entry {\n constructor(\n initializationData: IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n super(initializationData, connection, emitter, {\n _internalFlags: {\n FieldInstance: Field as any,\n },\n });\n }\n\n /**\n * Returns the value of the tags associated with the entry.\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n getTags(options?: IGetTagsOptions): Array {\n const { useUnsavedSchema = false } = options || {};\n\n if (useUnsavedSchema) {\n return this._changedData?.tags || this._data.tags;\n } else {\n return this._data.tags;\n }\n }\n\n /**\n * Sets the tags on the entry.\n * @param tags tags to be set on the entry\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n async setTags(tags: Array): Promise> {\n /**\n * Validate if the tags are array of strings\n * @param {Array} tags\n * @returns {boolean} Returns true if the tags are array of strings\n */\n function areTagsValid(tags: Array): tags is Array {\n return (\n Array.isArray(tags) &&\n tags.every((tag) => typeof tag === \"string\")\n );\n }\n\n if (tags === undefined) {\n throw new Error(generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldNotBeBlank));\n }\n\n if (!areTagsValid(tags)) {\n throw new Error(\n generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldBeArrayOfStrings)\n );\n }\n\n await this._connection.sendToParent(\"setTags\", { tags });\n\n if (!this._changedData) {\n this._changedData = {};\n }\n\n this._changedData.tags = tags;\n\n return tags;\n }\n}\n\nexport default FieldModifierLocationEntry;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"../types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(\n field: FieldModifierLocationField,\n value: { [key: string]: any }\n) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass FieldModifierLocationField {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n async setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false }: { resolved?: boolean } = {}): any {\n return resolved ? this._resolvedData : this._data;\n }\n}\n\nexport default FieldModifierLocationField;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\nimport { ERROR_MESSAGES } from \"../utils/errorMessages\";\n\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass FieldModifierLocationFrame {\n /**\n * @hideconstructor\n */\n\n _connection: any;\n _autoResizingEnabled = false;\n _emitter: EventEmitter;\n _height?: number;\n _width?: number;\n\n private observer: MutationObserver | undefined;\n\n constructor(connection: any, emitter: EventEmitter) {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._emitter = emitter;\n\n this.updateDimension = this.updateDimension.bind(this);\n this.enableAutoResizing = this.enableAutoResizing.bind(this);\n this.disableAutoResizing = this.disableAutoResizing.bind(this);\n this.closeModal = this.closeModal.bind(this);\n\n /**\n * The auto resizing should be enabled by default.\n */\n this.enableAutoResizing();\n }\n\n /**\n * This method updates the extension height and width on Contentstack UI.\n * If the value is not passed, it will update the height and width of the\n * extension with the current height and width of the extension.\n * @param {string|number} height Desired height of the iframe window\n */\n async updateDimension(dimension?: { height?: number; width?: number }) {\n const { height, width } = dimension || {};\n\n if (height === undefined && width === undefined) {\n this._height = Math.ceil(\n document.documentElement.getBoundingClientRect().height\n );\n\n this._width = Math.ceil(\n document.documentElement.getBoundingClientRect().width\n );\n\n await this._connection.sendToParent(\"resize\", {\n height: this._height,\n width: this._width,\n });\n return;\n }\n\n const dimensionBody = {};\n\n if (height !== undefined && typeof height !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionHeightShouldBeNumber\n );\n }\n\n if (this._height !== height) {\n this._height = height;\n dimensionBody[\"height\"] = this._height;\n }\n\n if (width !== undefined && typeof width !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionWidthShouldBeNumber\n );\n }\n\n if (this._width !== width) {\n this._width = width;\n dimensionBody[\"width\"] = this._width;\n }\n\n if (Object.keys(dimensionBody).length !== 0) {\n await this._connection.sendToParent(\"resize\", dimensionBody);\n }\n }\n\n /**\n * Prevent user from accidently closing the app by clicking outside the frame\n * if the app is performing some active task.\n */\n async preventFrameClose(state: boolean) {\n await this._connection.sendToParent(\"preventFrameClose\", {\n state,\n });\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n enableAutoResizing(): FieldModifierLocationFrame {\n if (this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = true;\n\n this.observer = new MutationObserver(\n async () => await this.updateDimension()\n );\n\n const mutationObserverConfig = {\n attributes: true,\n childList: true,\n subtree: true,\n };\n\n this.observer.observe(window.document.body, mutationObserverConfig);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n disableAutoResizing(): FieldModifierLocationFrame {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n this.observer?.disconnect();\n return this;\n }\n\n /**\n * It closes the app modal.\n * @returns {Promise}\n */\n async closeModal(): Promise {\n return await this._connection.sendToParent(\"closeModal\");\n }\n}\n\nexport default FieldModifierLocationFrame;\n","import Extension from './extension';\nimport postRobot from 'post-robot';\nimport { version } from '../package.json';\nimport { IDashboardInitData, IFieldInitData, ISidebarInitData } from './types.js';\n\n//@ts-ignore\npostRobot.CONFIG.LOG_LEVEL = 'error';\n\n/** Class to initialize the plugin on Contentstack UI. */\n/**\n * @hideconstructor\n */\n\nclass ContentstackAppSDK {\n /**\n * You need to first include Contentstack UI Extensions SDK and\n * Contentstack UI Stylesheet in you HTML file and then call\n * ContentstackUIExtension.init in the script tag.\n * @example\n * HTML\n * \n * \n * @example Custom Filed\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var value = extension.field.getData()\n * extension.field.setData(\"New Field Data\")\n * })\n * @example Custom Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var entry = extension.entry.getData()\n * })\n * @example Dashboard Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var stack = extension.stack;\n * var stackData = stack.getData();\n * })\n * @return {external:Promise} A promise object which will be resolved with an instance of the {@link Extension} class which is instantiated using the data received from the Contentstack UI.\n */\n\n static _extension: Extension\n\n static init(): Promise {\n if (this._extension) { return Promise.resolve(this._extension); }\n return Extension.initialize(version).then((initializationData: ISidebarInitData | IDashboardInitData | IFieldInitData) => {\n this._extension = new Extension(initializationData);\n return Promise.resolve(this._extension);\n }).catch((e: Error) => Promise.reject(e));\n }\n\n\n /**\n * Version of Contentstack UI extension.\n * @type {string}\n */\n static get SDK_VERSION() {\n return version;\n }\n}\n\nexport default ContentstackAppSDK;\nmodule.exports = ContentstackAppSDK\n","import { AnyObject } from \"./types/common.types\";\n\nexport declare interface IMetadata {\n uid: string;\n type: \"asset\" | \"entry\";\n _content_type_uid?: string;\n locale?: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataCreateDto\n extends Omit, \"uid\"> {\n entity_uid: string;\n}\n\nexport declare interface IMetadataUpdateDto {\n uid: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataRetrieveDto {\n uid: string;\n}\n\nexport declare interface IMetadataDeleteDto {\n uid: string;\n}\n\nconst metadataTypes = {\n creteMetadata: \"createMetadata\",\n retrieveMetadata: \"getMetadata\",\n retrieveAllMetadata: \"getAllMetadata\",\n updateMetadata: \"updateMetadata\",\n deleteMetadata: \"deleteMetadata\",\n} as const;\n\nclass Metadata {\n constructor(private _connection: any) {}\n\n createMetaData(metadataConfig: IMetadataCreateDto) {\n const { entity_uid, type = \"asset\", ...otherMetaData } = metadataConfig;\n\n const data = {\n action: metadataTypes.creteMetadata,\n payload: {\n metadata: {\n entity_uid,\n type,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveMetaData(metadataConfig: IMetadataRetrieveDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.retrieveMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveAllMetaData(params: AnyObject = {}) {\n const data = {\n action: metadataTypes.retrieveAllMetadata,\n params,\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n updateMetaData(metadataConfig: IMetadataUpdateDto) {\n const { uid, ...otherMetaData } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.updateMetadata,\n payload: {\n metadata: {\n uid,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n deleteMetaData(metadataConfig: IMetadataDeleteDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.deleteMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n}\nexport default Metadata;\n","import { getPreferredBodyElement } from \"./utils/utils\";\n\nclass Modal {\n constructor() {\n if (!Object.prototype.hasOwnProperty.call(window, \"iframeRef\")) {\n const rootElement = getPreferredBodyElement(\n document?.body?.children\n );\n window[\"iframeRef\"] = rootElement;\n }\n }\n\n setBackgroundElement(element: HTMLElement) {\n window[\"iframeRef\"] = element;\n }\n}\n\nexport default Modal;\n","\nimport Base from '../base';\nimport { getReferences, language, environment } from '../../utils';\nimport postRobot from 'post-robot';\nimport { IAnyObject } from '../../../RTE/types';\n\nlet connection: any = {};\n\n/**\n * @summary Creates an instance of `Asset`.\n * @description An initializer is responsible for creating an Asset object.\n * @param {String} uid - uid of the asset\n * @example\n * let Asset = extension.stack.Asset('bltsomething123');\n * @returns {Asset}\n * @ignore\n */\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nclass Asset extends Base {\n getReferences: any\n environment: any\n constructor(uid) {\n super(uid);\n this.getReferences = getReferences;\n this.environment = environment;\n return this;\n }\n\n /**\n * @function\n * @name Stack#Asset.Query\n * @description This static method instantiates the query module for assets. To see the list of methods that can be used for querying assets, refer the {@link Query} module.\n * @example\n * let assetQuery = extension.stack.Asset.Query();\n * assetQuery.where(\"title\": \"main.js\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment\n });\n return entryQuery;\n }\n\n static module(plural = false) {\n return plural ? 'Assets' : 'Asset';\n }\n\n static get connection() {\n return connection;\n }\n\n /**\n * @function\n * @name Stack#Asset.getRteAssets\n * @description This static method retrieves comprehensive information on all assets uploaded through the Rich Text Editor field.\n * @return {external:Promise}\n */\n\n static getRteAssets() {\n return this.connection.sendToParent('stackQuery', { action: 'getRteAssets' }).then(onData).catch(onError);\n }\n\n /**\n * @function\n * @name Stack#Asset.getAssetsOfSpecificTypes\n * @description This static method retrieves assets that are either image or video files, based on the request query.\n * @param {String} assetType Type of asset to be received for e.g., ‘image/png’\n * @return {external:Promise}\n */\n static getAssetsOfSpecificTypes(assetType) {\n if (!assetType || typeof assetType !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.connection.sendToParent('stackQuery', { action: 'getAssetsOfSpecificTypes', asset_type: assetType }).then(onData).catch(onError);\n }\n\n\n /**\n * @name Stack#Asset#only\n * @function\n * @description This method is used to show the selected fields of the assets in the result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('title').fetch();\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @name Stack#Asset#except\n * @function\n * @description This method is used to hide the selected fields of the assets in result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('title').fetch();\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('BASE','title').fetch();\n * @example\n * .Except with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @function\n * @name Stack#Asset#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.Asset('bltsomething123').environment('development').fetch()\n * @returns {Stack#Asset}\n */\n\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addParam\n @function\n @example extension.stack.Asset('uid').addParam('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addQuery\n @function\n @example extension.stack.Asset('uid').addQuery('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n\n /**\n This method will fetch the details of the entries and the assets in which the specified asset is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-asset|\n Asset References}\n @name Stack#Asset#getReferences\n @function\n @example extension.stack.Asset('uid').getReferences().then().catch();\n @return {external:Promise}\n */\n\n /**\n This method deletes an existing asset.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-asset|\n Delete Asset}\n @name Stack#Asset#delete\n @function\n @example extension.stack.Asset('uid').delete().then().catch();\n @return {external:Promise}\n */\n\n\n /**\n * @name Stack#Asset#publish\n * @function\n * @description This method allows you to publish the asset either immediately or schedule the publish for a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .publish(\n {\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n publish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('publishAsset', payload);\n }\n\n /**\n * @function\n * @name Stack#Asset#unpublish\n * @description This method will instantly unpublish the asset, and also give you the provision to automatically unpublish the asset at a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .unpublish({\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n unpublish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('unpublishAsset', payload);\n }\n\n static async handleUpload(_files, type, options?: {parentFolderUid?: string, customUploadHandler?: IAnyObject}) {\n if (!_files || !_files.length) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n const files: File[] = [];\n Array.from(_files).forEach(_ => {\n // @ts-ignore\n const file = new File([_], _.name, { type: _.type });\n files.push(file);\n })\n const uid = new Date().getUTCMilliseconds();\n return (async function() {\n try {\n const uploadReadyListener = postRobot.on(\n `uploadReady_${uid}`,\n function () {\n window.parent.postMessage(\n {\n type: `upload_${uid}`,\n upload_type: type,\n files,\n parentFolderUid: options?.parentFolderUid,\n customUploadHandler: options?.customUploadHandler\n },\n \"*\"\n );\n\n uploadReadyListener.cancel();\n return Promise.resolve({});\n }\n );\n //@ts-ignore\n await postRobot.sendToParent(\"stackOptionsQuery\", {\n action: `upload_${uid}`,\n uid,\n });\n //@ts-ignore\n return postRobot.sendToParent(`upload_${uid}`, {});\n } catch(err) {\n return Promise.reject(err);\n }\n })();\n }\n\n static uploadAsset(files, options?: {parentFolderUid?: string}) {\n return Asset.handleUpload(files, 'upload', options);\n }\n}\n\nexport default (uiConnection) => {\n connection = uiConnection;\n return new Proxy(Asset, {\n apply(Target, thisArg, argumentsList) {\n //@ts-ignore\n return new Target(...argumentsList);\n }\n });\n};\n","//@ts-nocheck\n\nimport Query from './query';\nimport { transform, addParam } from '../utils';\n\n\nfunction onData(data: { data: any; }) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error: any) {\n return Promise.reject(error);\n}\n/**\n * This is Base class, it holds all the methods required for Modle instance,\n * eg ContentType('uid').delete() or Asset('uid').update({...})\n * @ignore\n */\nexport default class Base {\n\n\n uid: string\n _query: { [key: string]: any }\n only: any\n except: any\n addParam: any\n\n static connection: any\n static contentTypeUid: string\n\n constructor(uid: string) {\n if (!uid) { throw new Error('uid is required'); }\n this.uid = uid;\n this._query = {};\n this.only = transform('only');\n this.except = transform('except');\n this.addParam = addParam;\n }\n\n static Query() {\n //@ts-ignore\n return new Query(this.connection, this.module(true), this.contentTypeUid);\n }\n\n\n static create(payload: { [key: string]: any }) {\n const options = { payload, content_type_uid: this.contentTypeUid, action: `create${this.module()}` };\n return this.connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n update(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch(`update${this.constructor.module()}`, payload);\n }\n\n delete() {\n return this.fetch(`delete${this.constructor.module()}`);\n }\n\n fetch(action: string, payload?: { [key: string]: any }) {\n const options = {\n payload,\n content_type_uid: this.constructor.contentTypeUid,\n uid: this.uid,\n params: this._query,\n action: action || `get${this.constructor.module()}`\n };\n\n if (!payload) { delete options.payload; }\n if (!this.constructor.contentTypeUid) { delete options.content_type_uid; }\n return this.constructor.connection.sendToParent('stackQuery', options)\n .then(onData).catch(onError);\n }\n}\n","import Base from '../base';\nimport { getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference } from '../../utils';\n\nlet connection = {};\nlet contentTypeUid = '';\n\n\nclass Entry extends Base {\n constructor(uid: string) {\n super(uid);\n this._query = {};\n return this;\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry.Query\n * @description This static method instantiates the query module for entries. To see the list of methods that can be used for querying entries, refer the {@link Query} module.\n * @example\n * let entryQuery = extension.stack.ContentType('content_type_uid').Entry.Query();\n * entryQuery.where(\"field_uid\": \"10\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryQuery;\n }\n\n static get connection() {\n return connection;\n }\n\n static get contentTypeUid() {\n return contentTypeUid;\n }\n\n static module(plural = false) {\n return plural ? 'Entries' : 'Entry';\n }\n /**\n This method creates a new entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#create-a-an-entry|\n Create Entry}\n @name Stack#ContentType#Entry.create\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.create({\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n @param {Object} payload Data to create an entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @name Stack#ContentType#Entry#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('title').fetch();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @name Stack#ContentType#Entry#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('title').fetch();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('BASE','title').fetch();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * This method includes a query parameter in your query.\n * @name Stack#ContentType#Entry#addParam\n * @function\n * @example extension.stack.ContentType('content_type_uid').Entry('uid').addParam('include_count', 'true').fetch().then().catch();\n * @param {string} key - Key of the parameter\n * @param {string} value - Value of the parameter\n * @return {Stack#ContentType#Entry} Returns\n */\n\n\n /**\n This method will fetch all the entries in which the current entry is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-an-entry|\n Entry References}\n @name Stack#ContentType#Entry#getReferences\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').getReferences().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n @example extension.stack.ContentType('content_type_uid').Entry('uid').update({\"entry\" : {...}}).then().catch();\n @param {Object} payload Data to be update exsisting entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method deletes an existing entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-entry|\n Delete Entry}\n @name Stack#ContentType#Entry#delete\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').delete().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method fetches information of a specific entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-an-entry|\n Get A Single Entry}\n @name Stack#ContentType#Entry#fetch\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').fetch().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeReference\n * @description This method is used to include referenced entries from other content types.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference(['category', 'author']).fetch()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference('category', 'author').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#language\n * @description This method is used to set the language code of which you want to retrieve the data.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').language('en-us').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').environment('development').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#addQuery\n * @description This method is used to add a query to an entry object.\n * @param {String} key - Key of the query\n * @param {String} value - Value of the query\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').addQuery('include_schema',true).fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeSchema().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies).\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeContentType().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeOwner().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#getLanguages\n * @description This method returns the details of all the languages that an entry is localized in.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').getLanguages()\n * @return {external:Promise}\n */\n getLanguages() {\n return this.fetch('getEntryLanguages');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unlocalize\n * @description This method is used to unlocalize an entry\n * @param {string} locale Locale in which the entry has to be unlocalized\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unlocalize('fr-fr').then(...).catch(...);\n * @return {external:Promise}\n */\n unlocalize(locale: string) {\n if (!locale || typeof locale !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('unlocalizeEntry');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#publish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').publish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n publish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('publishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unpublish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unpublish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n unpublish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('unpublishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#setWorkflowStage\n * @description This method allows you to either set a particular workflow stage or update the workflow stage details of an entry.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').setWorkflowStage({\n \"workflow\": {\n \"workflow_stage\": {\n \"comment\": \"Test Comment\",\n \"due_date\": \"Thu Dec 01 2018\",\n \"notify\": false,\n \"uid\": \"blt9f52a2cd5e0014fb\",\n \"assigned_to\": [{\n \"uid\": \"blt296a22e28cc0c63c\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@contentstack.com\"\n }],\n \"assigned_by_roles\": [{\n \"uid\": \"blt5b74c24c7ae25d94\",\n \"name\": \"Content Manager\"\n }]\n }\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n setWorkflowStage(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('setWorkflowStageEntry', payload);\n }\n\n /**\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#update-an-entry| Update Entry}\n * @name Stack#ContentType#Entry#update\n * @function\n * @description This call allows you to update entry content.\n * @param {object} payload - Payload for the request\n * @param {string} [locale] - Passing the ‘locale’ parameter will localize the entry in the specified locale\n * to be localized in the specified locale.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').update(\n {\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n //@ts-ignore\n update(payload: { [key: string]: any }, locale: string) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('updateEntry', payload);\n }\n}\n\nexport default (uiConnection: any, contentType: string) => {\n connection = uiConnection;\n contentTypeUid = contentType;\n return new Proxy(Entry, {\n apply(Target: any, thisArg, argumentsList: any[]) {\n const entryTarget = new Target(...argumentsList);\n Object.assign(entryTarget, {\n getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryTarget;\n }\n });\n};\n","import Entry from './entry';\nimport Base from '../base';\n\nlet connection = {};\n\n\nclass ContentType extends Base {\n\n Entry: typeof Entry\n\n constructor(uid: string) {\n super(uid);\n /**\n * @constructor\n * @hideconstructor\n * @name Stack#ContentType#Entry\n * @desc An entry is the actual piece of content created using one of the defined content types\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#entries| Entries}\n */\n\n // @ts-ignore\n this.Entry = Entry(this.constructor.connection, this.uid);\n return this;\n }\n\n // static module(plural = false) {\n // return plural ? 'ContentTypes' : 'ContentType';\n // }\n static get connection() {\n return connection;\n }\n}\nexport default (uiConnection: any) => {\n connection = uiConnection;\n return new Proxy(ContentType, {\n // target = Foo\n apply(Target: any, thisArg, argumentsList: any[]) {\n return new Target(...argumentsList);\n }\n });\n};\n","import * as Utils from '../utils';\n\n\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nconst _extend = {\n compare(type) {\n return function (key, value) {\n if (key && value && typeof key === 'string' && typeof value !== 'undefined') {\n this._query.query[key] = this._query.query.file_size || {};\n this._query.query[key][type] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n contained(bool) {\n const type = (bool) ? '$in' : '$nin';\n return function (key, value) {\n if (key && value && typeof key === 'string' && Array.isArray(value)) {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key][type] = this._query.query[key][type] || [];\n this._query.query[key][type] = this._query.query[key][type].concat(value);\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n exists(bool) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key].$exists = bool;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n logical(type) {\n return function () {\n const _query: any[] = [];\n for (let i = 0, _i = arguments.length; i < _i; i += 1) {\n if (arguments[i] instanceof Query && arguments[i]._query.query) {\n _query.push(arguments[i]._query.query);\n } else if (typeof arguments[i] === 'object') {\n _query.push(arguments[i]);\n }\n }\n if (this._query.query[type]) {\n this._query.query[type] = this._query.query[type].concat(_query);\n } else {\n this._query.query[type] = _query;\n }\n return this;\n };\n },\n sort(type) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query[type] = key;\n return this;\n }\n throw Error('Argument should be a string.');\n };\n },\n pagination(type) {\n return function (value) {\n if (typeof value === 'number') {\n this._query[type] = value;\n return this;\n }\n throw Error('Argument should be a number.');\n };\n }\n};\n\n/**\n * Creates an instance of the query\n * @hideconstructor\n */\nclass Query {\n module: any\n _connection: any\n _query: {[key: string]: any}\n contentTypeUid: string\n only: any\n except: any\n addQuery: any\n lessThan: any\n lessThanOrEqualTo: any\n greaterThan: any\n greaterThanOrEqualTo: any\n notEqualTo: any\n containedIn: any\n notContainedIn: any\n exists: any\n notExists: any\n ascending: ReturnType\n descending: ReturnType\n beforeUid: ReturnType\n afterUid: ReturnType\n skip: ReturnType\n limit: ReturnType\n or: ReturnType\n and: ReturnType\n addParam: ReturnType\n singleEntry: any\n\n constructor(connection, module, contentTypeUid) {\n this.module = module;\n this._connection = connection;\n this._query = {};\n this._query.query = this._query.query || {};\n this.contentTypeUid = contentTypeUid;\n\n /**\n * @name Query#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('title').find();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('BASE','title').find();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().only(['title','description']).find();\n * @returns {Query}\n */\n\n this.only = Utils.transform('only');\n\n /**\n * @name Query#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('title').find();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('BASE','title').find();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().except(['title','description']).find();\n * @returns {Query}\n */\n\n this.except = Utils.transform('except');\n /**\n This method includes a query parameter in your query.\n @name Query#addQuery\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addQuery('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addQuery = Utils.addQuery;\n\n /**\n * @name Query#lessThan\n * @description This method provides only the entries with values less than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThan('created_at','2015-06-22')\n * @returns {Query}\n */\n this.lessThan = _extend.compare('$lt');\n\n /**\n * @name Query#lessThanOrEqualTo\n * @description This method provides only the entries with values less than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThanOrEqualTo('created_at','2015-03-12')\n * @returns {Query}\n */\n this.lessThanOrEqualTo = _extend.compare('$lte');\n /**\n * @function\n * @name Query#greaterThan\n * @description This method provides only the entrieswith values\n * greater than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThan('created_at','2015-03-12')\n * @returns {Query}\n */\n this.greaterThan = _extend.compare('$gt');\n\n /**\n * @function\n * @name Query#greaterThanOrEqualTo\n * @description This method provides only the entries with values greater than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThanOrEqualTo('created_at', '2015-06-22')\n * @returns {Query}\n */\n this.greaterThanOrEqualTo = _extend.compare('$gte');\n\n /**\n * @function\n * @name Query#notEqualTo\n * @description This method provides only the entries with values not equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').notEqualTo('title','Demo')\n * @returns {Query}\n */\n this.notEqualTo = _extend.compare('$ne');\n\n /**\n * @function\n * @name Query#containedIn\n * @description This method provides only the entries with values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {*} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').containedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.containedIn = _extend.contained(true);\n\n /**\n * @function\n * @name Query#notContainedIn\n * @description This method provides only the entries that do not contain values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {Array} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').notContainedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.notContainedIn = _extend.contained(false);\n\n /**\n * @function\n * @name Query#exists\n * @description This method provides only the entries that contains the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').exists('featured')\n * @returns {Query}\n */\n this.exists = _extend.exists(true);\n\n /**\n * @function\n * @name Query#notExists\n * @description This method provides only the entries that do not contain the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').notExists('featured')\n * @returns {Query}\n */\n this.notExists = _extend.exists(false);\n\n /**\n * @function\n * @name Query#ascending\n * @description This parameter sorts the entries in ascending order on the basis of the value of the specified field.\n * @param {String} key - Field UID to be used for sorting.\n * @example extension.stack.ContentType('blog').ascending('created_at')\n * @returns {Query}\n */\n this.ascending = _extend.sort('asc');\n\n /**\n * @function\n * @name Query#descending\n * @description This method sorts the entries in descending order on the basis of the specified field.\n * @param {String} key - Field UID to be used for sorting\n * @example extension.stack.ContentType('blog').descending('created_at')\n * @returns {Query}\n */\n this.descending = _extend.sort('desc');\n\n /**\n * @function\n * @name Query#beforeUid\n * @description This method provides only the entries that are placed before the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').beforeUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.beforeUid = _extend.sort('before_uid');\n\n /**\n * @function\n * @name Query#afterUid\n * @description This method provides only the entries that are placed after the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').afterUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.afterUid = _extend.sort('after_uid');\n\n /**\n * @function\n * @name Query#skip\n * @description This method skips the specified number of entries.\n * @param {Number} skip - Number of entries to be skipped\n * @example extension.stack.ContentType('blog').skip(5)\n * @returns {Query}\n */\n this.skip = _extend.pagination('skip');\n\n /**\n * @function\n * @name Query#limit\n * @description This method limits the response by providing only the specified number of entries.\n * @param {Number} limit - Maximum number of entries to be returned in the result.\n * @example extension.stack.ContentType('blog').limit(10)\n * @returns {Query}\n */\n this.limit = _extend.pagination('limit');\n\n /**\n * @function\n * @name Query#or\n * @description This method performs the OR operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries\n * to be taken into consideration\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo')\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10)\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery()\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery()\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @returns {Query}\n */\n this.or = _extend.logical('$or');\n\n /**\n * @function\n * @name Query#and\n * @description This method performs the AND operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries to be taken into consideration\n * @example\n * AND with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo');\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10);\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @example\n * .and with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery();\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery();\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @returns {Query}\n */\n this.and = _extend.logical('$and');\n /**\n This method includes a query parameter in your query.\n @name Query#addParam\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addParam('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addParam = Utils.addParam;\n }\n\n // -------------------------------------Entry Queries--------------------------------------------------\n /**\n * @function\n * @name Query#includeReference\n * @description This method is used to include referenced entries from other content types. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference(['category', 'author']).find()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference('category', 'author').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeSchema().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#language\n * @description This method is used to set the language code of which you want to retrieve the data. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().language('en-us').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies). Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeContentType().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeOwner().find()\n * @returns {Query}\n */\n // -----------------------------------------Entry Queries End------------------------------------------------------\n\n /**\n * @function\n * @name Query#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().environment('development').find()\n * @returns {Query}\n */\n\n /**\n * @description This method provides only the entries containing field values matching the specified condition.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').where('title','Demo')\n * @returns {Query}\n */\n equalTo(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n where(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides only the number of entries matching the specified filters.\n * @example extension.stack.ContentType('blog').count()\n * @returns {Query}\n */\n count() {\n this._query.count = true;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method is used to set raw queries on the Query instance.\n * @param {object} query - Raw{json} queries to filter the entries in the result set.\n * @returns {Query}\n */\n query(query) {\n if (typeof query === 'object') {\n this._query.query = Utils.mergeDeep(this._query.query, query);\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description The ’tags’ parameter allows you to specify an array of tags to search for objects.\n * @param {Array} values - Tags\n * @example extension.stack.ContentType('blog').tags(['technology', 'business'])\n * @returns {Query}\n */\n tags(values) {\n if (Array.isArray(values)) {\n this._query.tags = values;\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description This method also includes the total number of entries returned in the response.\n * @example extension.stack.ContentType('blog').includeCount()\n * @returns {Query}\n */\n includeCount() {\n this._query.include_count = true;\n return this;\n }\n\n /**\n * @summary returns Returns the raw query which can be used for further calls (.and/.or).\n * @description This method provides raw{json} queries based on the filters applied on the Query object.\n * @example extension.stack.ContentType('blog').where('title','Demo').getQuery()\n * @returns {Query}\n */\n getQuery() {\n return this._query.query;\n }\n\n /**\n * @description This method provides only the entries matching the regular expression for the specified field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @param {String} [options] - Match or compare a value in the entry\n * @example\n * .regex without options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo')\n * @example\n * .regex with options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo', 'i')\n * @returns {Query}\n */\n regex(key, value, options) {\n if (key && value && typeof key === 'string' && typeof value === 'string') {\n this._query.query[key] = {\n $regex: value\n };\n if (options) this._query.query[key].$options = options;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method is used to search data in entries.\n * @param {string} value - Value to search in the entries.\n * @example extension.stack.ContentType('blog').search('Welcome to demo')\n * @returns {Query}\n */\n search(value) {\n if (value && typeof value === 'string') {\n this._query.typeahead = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides all the entries which satisfy the specified query.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').find()\n */\n find() {\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method provides a single entry from the result set.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').findOne()\n */\n findOne() {\n this.singleEntry = true;\n this._query.limit = 1;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n}\n\nexport default Query;\n","import Asset from './api/asset/index';\nimport ContentType from './api/content-type/index';\nimport { onData, onError } from \"../utils/utils\";\nimport { BranchDetail, GetAllStacksOptions, StackAdditionalData, StackDetail, StackSearchQuery } from '../types/stack.types';\nimport { IManagementTokenDetails } from '../types';\n\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nclass Stack {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _data: StackDetail\n ContentType: any // TODO: change it\n Asset: any // TODO: change it\n private _currentBranch: BranchDetail | null = null;\n\n\n constructor(data: StackDetail = {} as StackDetail, connection: any, additionalData: StackAdditionalData) {\n this._connection = connection;\n this._data = data;\n /**\n * @constructor\n * @hideconstructor\n * @desc Content type defines the structure or schema of a page or a section of your web or mobile property\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#content-types| ContentType}\n * @param {string} uid - Uid of contenttype.\n * @example extension.stack.ContentType('content_type_uid')\n * */\n this.ContentType = ContentType(connection);\n /**\n * @constructor\n * @hideconstructor\n * @desc An initializer is responsible for creating an Asset object.\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#assets| Asset}\n * @param {string} uid - UID of the asset.\n * @example extension.stack.Asset('asset_uid')\n * */\n this.Asset = Asset(connection);\n\n const currentBranch = additionalData.currentBranch || \"\"\n\n if (currentBranch) {\n this._currentBranch =\n (data.branches || []).find(\n (branch) => branch.uid === additionalData.currentBranch\n ) || null;\n }\n\n }\n\n\n /**\n * This method returns the data of the current stack.\n * @return Returns stack data.\n */\n\n getData(): StackDetail {\n return this._data;\n }\n\n\n /**\n * This method returns all the stacks in the current organization.\n * @param query asks for organization UID and query params to get all stacks\n * @returns Stacks within current organization\n */\n async getAllStacks({orgUid = \"\", params = {}}: GetAllStacksOptions = {}): Promise {\n \n // validation\n if (typeof orgUid !== 'string') {\n throw new TypeError('orgUid must be a string');\n }\n\n const options = {\n action: \"getStacks\",\n headers: { organization_uid: orgUid || this._data.org_uid },\n skip_api_key: true,\n params\n };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .then((data) => data.stacks || [])\n .catch(onError);\n\n }\n\n /**\n * Get the details of all the management tokens of the stack.\n * Note: This API does not return the token value.\n * @see {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-management-tokens | Get all management tokens}\n * @returns Details of all the management token of the stack\n */\n async getManagementTokens(): Promise {\n const options = { action: \"getManagementTokens\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(async (response) => {\n const data = await onData<{tokens: IManagementTokenDetails[]}>(response);\n return data.tokens || [];\n })\n .catch(onError);\n }\n\n /**\n * Gets the results of the search based on user query\n * @param queries Array of key value pair of query parameters\n * @param apiKey API key of the stack\n * @returns Result of the query\n */\n search(queries: StackSearchQuery, apiKey: string | null = this._data.api_key) {\n const options = { params: queries, api_key: apiKey, action: \"search\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n }\n\n\n /**\n * This API allows you to retrieve data of a content type of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-content-type| Content Type API} requests. This method returns a Promise object.\n * @param {string} uid Uid of the desired content type\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with content type details.\n */\n getContentType(uid: string, params = {}): Promise<{ [key: string]: any }> {\n if (!uid) {\n return Promise.reject(new Error('uid is required'));\n }\n const options = { uid, params, action: 'getContentType' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve data of a content types of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Content Types API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with details of the content type.\n */\n getContentTypes(query = {}, params: { [key: string]: any } = {}): Promise<{ [key: string]: any }> {\n const optionParams = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getContentTypes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve environment details of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-environment| Environment API} requests. This method returns a Promise object.\n * @param {string} name Name of the desired environment\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with environment details.\n */\n getEnvironment(name: string, params = {}) {\n if (!name) {\n return Promise.reject(new Error('name is required'));\n }\n const options = { name, params, action: 'getEnvironment' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of environments of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-environments| Environments API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the environments.\n */\n getEnvironments(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getEnvironments' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of releases of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-releases| Releases API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the releases.\n */\n getReleases(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getReleases' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of publish queue of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-publish-queue| Publish Queue API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the publish queue.\n */\n getPublishes(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getPublishes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a locale of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-language| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getLocale(code: string, params = {}) {\n if (!code) {\n return Promise.reject(new Error('code is required'));\n }\n const options = { code, params, action: 'getLocale' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getLocales(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getLocales' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a workflow of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-workflow| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getWorkflow(uid: string, params = {}) {\n if (!uid) {\n return Promise.reject(new Error('workflow uid is required'));\n }\n const options = { uid, params, action: 'getWorkflow' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n \n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getWorkflows(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getWorkflows' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve all the branches in the current stack\n * @returns All branches of the current stack\n */\n getAllBranches(): BranchDetail[] {\n return this._data.branches || [];\n }\n\n /**\n * Returns the details of the current branch of the stack if available\n * @returns current branch of the current stack if available\n */\n getCurrentBranch(): BranchDetail | null {\n return this._currentBranch;\n }\n}\n\nexport default Stack;\n","export function transform(type) {\n return function () {\n switch (arguments.length) {\n case 1:\n if (\n Array.isArray(arguments[0]) ||\n typeof arguments[0] === \"string\"\n ) {\n let query = this._query[`${type}[BASE]`] || [];\n query = query.concat(arguments[0]);\n this._query[`${type}[BASE]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n case 2:\n if (\n typeof arguments[0] === \"string\" &&\n (Array.isArray(arguments[1]) ||\n typeof arguments[1] === \"string\")\n ) {\n let query = this._query[`${type}[${arguments[0]}]`] || [];\n query = query.concat(arguments[1]);\n this._query[`${type}[${arguments[0]}]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n default:\n throw Error(\"Kindly provide valid parameters\");\n }\n };\n}\n\n// merge two objects\nexport function merge(\n target: { [key: string]: any },\n source: { [key: string]: any }\n) {\n const newTraget = target;\n if (target && source) {\n Object.keys(source).forEach((key) => {\n newTraget[key] = source[key];\n });\n }\n return newTraget;\n}\n\n// merge two objects\nexport function mergeDeep(\n oldTarget: { [key: string]: any },\n oldSource: { [key: string]: any }\n) {\n const newTarget = oldTarget;\n const self = this;\n const _mergeRecursive = (anotherTarget, source) => {\n const target = anotherTarget;\n Object.keys(source).forEach((key) => {\n if (\n self._type(source[key]) === \"object\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n _mergeRecursive(target[key], source[key]);\n } else if (\n self._type(source[key]) === \"array\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n target[key] = target[key].concat(source[key]);\n } else {\n target[key] = source[key];\n }\n });\n };\n _mergeRecursive(newTarget, oldSource);\n return newTarget;\n}\n\nexport function _type(val) {\n let __typeof = typeof val;\n if (__typeof === \"object\" && Array.isArray(val)) {\n //@ts-ignore\n __typeof = \"array\";\n }\n return __typeof;\n}\n\nexport function addParam(key, value) {\n if (key && typeof key === \"string\" && value && typeof value === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"Kindly provide valid parameters.\");\n}\n\nexport function addQuery(key, value) {\n if (key && value && typeof key === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"First argument should be a String.\");\n}\n\nexport function language(languageCode) {\n if (languageCode && typeof languageCode === \"string\") {\n this._query.locale = languageCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function environment(environmentCode) {\n if (environmentCode && typeof environmentCode === \"string\") {\n this._query.environment = environmentCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function includeOwner() {\n this._query.include_owner = true;\n return this;\n}\n\nexport function includeContentType() {\n this._query.include_content_type = true;\n return this;\n}\n\nexport function includeSchema() {\n this._query.include_schema = true;\n return this;\n}\n\nexport function includeReference(val) {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(val[i]);\n }\n } else if (typeof val === \"string\") {\n for (let i = 0; i < arguments.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(\n arguments[i]\n );\n }\n } else {\n throw Error(\"Argument should be a String or an Array.\");\n }\n return this;\n}\n\nexport function getReferences() {\n return this.fetch(`get${this.constructor.module()}References`);\n}\n","function onError(error: Error) {\n return Promise.reject(error);\n}\n/**\n * Class used by an extension to store your data in {@link external:localStorage}.\n */\nclass Store {\n /**\n * @hideconstructor\n */\n\n _connection: any\n\n constructor(connection: any) {\n this._connection = connection;\n }\n /**\n * Gets the value of key\n * @param {string} key Key of the stored data\n * @example extension.store.get('key').then((value) => console.log(value)) // will log value for the given key\n * @return {external:Promise}\n */\n get(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'get', key })\n .then((event: { data: any; }) => Promise.resolve(event.data)).catch(onError);\n }\n\n /**\n * Gets an object with all the stored key-value pairs.\n * @example extension.store.getAll().then((obj) => obj)\n * @return {external:Promise}\n */\n getAll() {\n return this._connection.sendToParent('store', { action: 'getAll' })\n .then(({ data = {} }) => Promise.resolve(data)).catch(onError);\n }\n\n /**\n * Sets the value of a key\n * @param {string} key Key of the stored data.\n * @param {*} value Data to be stored.\n * @example extension.store.set('key', 'value').then((success) => console.log(success)) // will log ‘true’ when value is set\n * @return {external:Promise}\n */\n\n set(key: string, value: string) {\n if (!key || !value || typeof key !== 'string') {\n throw new Error('Kindly provide valid parameters');\n }\n return this._connection.sendToParent('store', { action: 'set', key, value })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Removes the value of a key\n * @param {string} key Key of the data to be removed from the store\n * @example extension.store.remove('key').then((success) => console.log(success)) // will log ‘true’ when value is removed\n * @return {external:Promise}\n */\n\n remove(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'remove', key })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Clears all the stored data of an extension\n * @example extension.store.clear().then((success) => console.log(success)) // will log ‘true’ when values are cleared\n * @return {external:Promise}\n */\n\n clear() {\n return this._connection.sendToParent('store', { action: 'clear' })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n}\n\nexport default Store;\n","import { AnyObject } from \"./types/common.types\";\nimport { StackDetail } from \"./types/stack.types\";\n\nexport declare interface IDashboardWidget {\n [key: string]: any;\n}\n\nexport declare interface ICustomField {\n [key: string]: any;\n}\n\nexport declare interface ISidebarWidget {\n [key: string]: any;\n}\n\nexport declare interface IRTE {\n [key: string]: any;\n}\n\nexport declare interface IFieldModifierLocation {\n [key: string]: any;\n}\n\nexport declare interface IEntryFieldLocation {\n [key: string]: any;\n}\n\nexport declare interface IFullPageLocation {\n [key: string]: any;\n}\n\nexport declare interface User {\n uid: string;\n first_name: string;\n last_name: string;\n}\n\nexport declare interface Manifest {\n created_by: User;\n icon: string;\n name: string;\n target_type: string;\n uid: string;\n updated_by: User;\n version: number;\n visibility: string;\n}\n\nexport declare interface IAppConfigWidget {\n installation: {\n setInstallationData: (\n installationData: IInstallationData\n ) => Promise;\n getInstallationData: () => Promise;\n setValidity: (isValid: boolean, options?: ValidationOptions) => void;\n [key: string]: any;\n };\n stack: AnyObject;\n}\n\nexport declare interface IPageWidget {\n [key: string]: any;\n}\n\n// initialization data\nexport declare interface IUser {\n [key: string]: any;\n}\n\nexport declare interface ICurrentEntry {\n [key: string]: any;\n}\n\nexport declare interface ICurrentContentType {\n [key: string]: any;\n}\n\nexport declare interface IConfig {\n [key: string]: any;\n}\n\nexport declare interface ISchema {\n [key: string]: any;\n}\n\nexport declare interface IFieldConfig {\n [key: string]: any;\n}\n\n// Init data\n\ndeclare interface ICommonInitData {\n app_id: string;\n installation_uid: string;\n extension_uid: string;\n stack: StackDetail;\n user: IUser;\n currentBranch: string;\n region: string;\n manifest?: Manifest;\n}\n\nexport declare interface IDashboardInitData {\n data: ICommonInitData & {\n dashboard_width: \"full_width\" | \"half_width\";\n config?: AnyObject;\n type: \"DASHBOARD\";\n };\n}\n\nexport declare interface ISidebarInitData {\n data: ICommonInitData & {\n app_config: IConfig;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n config?: AnyObject;\n changedData: ICurrentEntry;\n type: \"WIDGET\";\n };\n}\n\nexport declare interface IRTELocationInitData {\n data: ICommonInitData & {\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n changedData: ICurrentEntry;\n }\n}\n\nexport declare interface IFieldInitData {\n data: ICommonInitData & {\n entry: ICurrentEntry;\n content_type: ICurrentContentType;\n locale: string;\n uid: string;\n schema: ISchema;\n app_config: IConfig;\n value: any;\n field_config: IFieldConfig;\n config?: AnyObject;\n changedData: ICurrentEntry;\n self: boolean;\n type: \"FIELD\";\n };\n}\n\nexport declare interface IFullPageLocationInitData {\n data: ICommonInitData & {\n type: \"FULL_PAGE_LOCATION\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IRTEInitData {\n data: ICommonInitData & {\n type: \"RTE\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IAppConfigInitData {\n data: ICommonInitData & {\n type: \"APP_CONFIG_WIDGET\";\n config?: AnyObject;\n };\n}\n\nexport declare interface ICurrentAsset {\n [key: string]: any;\n}\n\nexport declare interface IAssetSidebarInitData {\n data: ICommonInitData & {\n type: \"ASSET_SIDEBAR_WIDGET\";\n currentAsset: ICurrentAsset;\n config: { [key: string]: any };\n };\n}\n\nexport declare interface IFieldModifierLocationInitData {\n data: ICommonInitData & {\n type: \"FIELD_MODIFIER_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface IEntryFieldLocationInitData {\n data: ICommonInitData & {\n type: \"ENTRY_FIELD_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface setAssetDto {\n title: string;\n description: string;\n tags: string[];\n}\n\nexport enum StackLocation {\n STACK_CONFIG = \"cs.cm.stack.config\",\n DASHBOARD = \"cs.cm.stack.dashboard\",\n SIDEBAR = \"cs.cm.stack.sidebar\",\n CUSTOM_FIELD = \"cs.cm.stack.custom_field\",\n RTE = \"cs.cm.stack.rte\",\n}\n\nexport enum OrganizationLocation {\n ORG_CONFIG = \"cs.org.config\",\n}\n\nexport type AppLocation = StackLocation | OrganizationLocation;\n\nexport interface Scope {\n content_types: string[];\n}\n\n/**\n * installation details API response\n */\nexport interface IInstallationData {\n configuration: { [key: string]: any };\n serverConfiguration: { [key: string]: any };\n webhooks?: {\n channels: string[];\n }[];\n uiLocations?: {\n type: AppLocation;\n meta: {\n enabled: boolean;\n scope?: Scope;\n name: string;\n extentionUid: string;\n }[];\n }[];\n}\n// End of Init data\n\nexport declare interface IInitializationData {\n FIELD: IFieldConfig;\n WIDGET: ISidebarInitData;\n DASHBOARD: IDashboardInitData;\n RTE: IRTEInitData;\n APP_CONFIG_WIDGET: IAppConfigInitData;\n ASSET_SIDEBAR_WIDGET: IAssetSidebarInitData;\n}\n\nexport declare type ILocation =\n | \"RTE\"\n | \"FIELD\"\n | \"DASHBOARD\"\n | \"WIDGET\"\n | \"APP_CONFIG_WIDGET\"\n | \"ASSET_SIDEBAR_WIDGET\"\n | \"FULL_PAGE_LOCATION\"\n | \"ENTRY_FIELD_LOCATION\"\n | \"FIELD_MODIFIER_LOCATION\";\n\nexport declare interface ValidationOptions {\n message?: string;\n}\n\nexport declare interface IManagementTokenDetails {\n uid: string;\n name: string;\n}\n\nexport enum Region {\n UNKNOWN = \"UNKNOWN\",\n NA = \"NA\",\n EU = \"EU\",\n AZURE_NA = \"AZURE_NA\",\n AZURE_EU = \"AZURE_EU\",\n}\n","export const ERROR_MESSAGES = Object.freeze({\n configPage: {\n setValidity: {\n isValidTypeBoolean: \"isValid should be a boolean\",\n messageTypeString: \"message should be a string\",\n },\n },\n entryField: {\n entry: {\n tagsShouldNotBeBlank: \"Tags cannot be blank\",\n tagsShouldBeArrayOfStrings: \"Tags must be an array of strings\",\n },\n frame: {\n dimensionHeightShouldBeNumber: \"Dimension height must be a number\",\n dimensionWidthShouldBeNumber: \"Dimension width must be a number\",\n },\n },\n});\n\nexport default function generateErrorMessages(message: string) {\n return `Contentstack App SDK: ${message}`;\n}\n","import { Region } from \"../types\";\n\nexport function onData>(data: { data: Data }) {\n if (typeof data.data === \"string\") {\n return Promise.reject(data.data);\n }\n return Promise.resolve(data.data);\n}\n\nexport function onError(error: Error) {\n return Promise.reject(error);\n}\n\nexport function formatAppRegion(region: string): Region {\n switch (region) {\n case \"NA\":\n return Region.NA;\n case \"EU\":\n return Region.EU;\n case \"AZURE_NA\":\n return Region.AZURE_NA;\n case \"AZURE_EU\":\n return Region.AZURE_EU;\n default:\n return Region.UNKNOWN;\n }\n}\n\nexport function getPreferredBodyElement(nodeCollection: HTMLCollection) {\n let rootElementIndex = Infinity;\n let rootElement: Element | undefined;\n const elementPreferenceList = [\n \"HEADER\",\n \"NAV\",\n \"MAIN\",\n \"SECTION\",\n \"ARTICLE\",\n \"ASIDE\",\n \"FOOTER\",\n \"DIV\",\n ];\n const nonRenderingTags = [\"SCRIPT\", \"NOSCRIPT\", \"STYLE\", \"TEMPLATE\"];\n // ? choose higher preference semantic HTML tags\n Array.from(nodeCollection).forEach((el) => {\n const elIndex = elementPreferenceList.indexOf(el.nodeName);\n if (elIndex >= 0 && elIndex < rootElementIndex) {\n rootElementIndex = elIndex;\n rootElement = el;\n }\n });\n // ? choose the first rendering HTML tag found if no semantic tags found\n if (!rootElement) {\n rootElement = Array.from(nodeCollection).find(\n (el) => !nonRenderingTags.includes(el.nodeName)\n );\n }\n return rootElement || nodeCollection[0];\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\n\nconst config = { attributes: true, childList: true, subtree: true };\nlet observer: MutationObserver;\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass Window {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _autoResizingEnabled: boolean\n _resizingEnabled: boolean\n type: 'DASHBOARD' | 'FIELD'\n _emitter: EventEmitter\n state: 'half_width' | 'full_width'\n _height?: number\n\n constructor(connection: any, type: 'DASHBOARD' | 'FIELD', emitter: EventEmitter, state: 'half_width' | 'full_width' = 'half_width') {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._resizingEnabled = false;\n this.type = type;\n this.state = state;\n this._emitter = emitter;\n }\n\n /**\n * This method activates the resize button that gives you the provision to resize the window size of your Dashboard Widget.\n * @return {external:Promise} A promise object which will resolve when a resize button is visible on the Dashboard Widget.\n */\n enableResizing() {\n if (this.type !== 'DASHBOARD') { return Promise.resolve(); }\n this._resizingEnabled = true;\n return this._connection.sendToParent('window', { action: 'enableResizing' });\n }\n\n\n /**\n * This function executes the callback function whenever a Dashboard Widget extension is maximized or minimized. Only applicable on Dashboard Widget extensions.\n * @param {function} callback Function to be called when a Dashboard Widget extension is maximized or minimized\n * @return {boolean} Will return true\n */\n\n onDashboardResize(callback: (event: any) => void) {\n const windowObj = this;\n if (this.type !== 'DASHBOARD') {\n return false;\n }\n if (callback && typeof (callback) === 'function') {\n windowObj._emitter.on('dashboardResize', (event: { state: 'half_width' | 'full_width'; }) => {\n windowObj.state = event.state;\n callback(event.state);\n });\n } else {\n throw Error('Callback must be a function');\n }\n return true;\n }\n\n\n /**\n * This method updates the extension height on Contentstack UI.\n * If the ‘height’ argument is not passed, it will calculate the scroll height and set the height of extension window accordingly.\n * @param {string|number} height Desired height of the iframe window\n * @return {external:Promise} A promise object which will be resolved when Contentstack UI sends an acknowledgement stating that the height has been updated.\n */\n updateHeight(height?: number) {\n if (this.type === 'DASHBOARD' && this.state === 'half_width') { return Promise.resolve(); }\n if (!height || isNaN(height)) {\n this._height = Math.ceil(document.documentElement.getBoundingClientRect().height);\n } else if (this._height === height) {\n return Promise.resolve();\n } else {\n this._height = height;\n }\n return this._connection.sendToParent('resize', this._height);\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {Window}.\n */\n enableAutoResizing() {\n if (this._autoResizingEnabled || (this.state === 'half_width' && this.type === 'DASHBOARD')) {\n return this;\n }\n this._autoResizingEnabled = true;\n //@ts-ignore\n observer = new MutationObserver(this.updateHeight.bind(this));\n observer.observe(window.document.body, config);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {Window}.\n */\n disableAutoResizing() {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n observer.disconnect();\n return this;\n }\n\n enablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent(\"window\", {\n action: \"dashboardEnableTopPadding\",\n });\n }\n\n disablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent('window', {\n action: 'dashboardDisableTopPadding' \n });\n }\n \n}\n\nexport default Window;\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","// 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].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n"],"names":["root","factory","exports","module","define","amd","this","self","modules","installedModules","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","value","interface_namespaceObject","isRegex","item","toString","cleanUpWindow","promise_ZalgoPromise","bridge","init","public_parent","_send","request","sendToParent","client","_on","listen","server_once","server_listener","CONFIG","constants_CONSTANTS","disable","PROTOCOL","IE_WIN_ACCESS_ERROR","isAboutProtocol","arguments","length","window","location","protocol","getParent","win","parent","err","getOpener","opener","canReadFromWindow","href","getActualDomain","Error","host","utils_getDomain","domain","mockDomain","indexOf","isActuallySameDomain","desc","getOwnPropertyDescriptor","isAncestorParent","child","childParent","result","push","getFrames","frames","len","frame","_i","_frame","iframeWindows","iframeFrames","isWindowClosed","allowMock","closed","message","mockclosed","top","iframeIndex","collection","contentWindow","parentNode","doc","ownerDocument","documentElement","contains","getAncestor","matchDomain","pattern","origin","Array","isArray","Boolean","match","JSON","stringify","some","subpattern","isWindow","obj","Window","__cross_domain_utils_window_check__","util_safeIndexOf","_ALLOWED_POST_MESSAGE","weakmap_CrossDomainSafeWeakMap","CrossDomainSafeWeakMap","instance","Constructor","TypeError","Math","random","WeakMap","freeze","testWeakMap","testKey","set","weakmap","keys","values","_cleanupClosedWindows","delete","splice","isSafeToReadWrite","key","entry","writable","index","has","getOrSet","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","ERROR","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","POPUP","IFRAME","WINDOW_PROPS","POSTROBOT","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","POST_MESSAGE","BRIDGE","GLOBAL","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","WILDCARD","map","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","navigator","userAgent","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_typeof","Symbol","iterator","constructor","stringifyError","level","stack","newErr","once","method","called","apply","lib_util_noop","uniqueID","chars","replace","charAt","floor","replaceObject","callback","depth","newobj","_key","childItem","util_isRegex","utils_isPromise","Promise","_toString","then","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushPromise","flushActive","promise","resolve","startActive","endActive","ZalgoPromise","handler","_this","resolved","rejected","errorHandled","handlers","_result","_error","isAsync","res","reject","dispatch","error","_this2","_err","setTimeout","j","asyncReject","dispatching","chain","firstPromise","secondPromise","_handlers$i","_onSuccess","onSuccess","_onError","onError","_promise","_result2","catch","finally","onFinally","try","timeout","time","_this3","clearTimeout","toPromise","all","promises","count","results","prom","hash","items","onPossiblyUnhandledException","cancel","context","args","delay","_delay","isPromise","flush","global","registerSelf","serialize__typeof","methods","listenForMethods","on","_ref","source","data","meth","id","isSerialized","type","__type__","serializeMethod","destination","__id__","__name__","deserializeMethod","wrapper","slice","send","_ref2","__xdomain__","deserializeZalgoPromise","__then__","sayHello","readyPromises","SEND_MESSAGE_STRATEGIES","serializedMessage","dom","forEach","postMessage","_extends","assign","target","sendMessage","_jsonStringify","options","sourceDomain","windowType","__message__","__code__","code","regex","__source__","messages","replacer","indent","objectToJSON","arrayToJSON","toJSON","strategyName","success","status","join","responseListeners","requestListeners","WINDOW_WILDCARD","erroredResponseListeners","_RECEIVE_MESSAGE_TYPE","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","nameListeners","_i2","_ref3","_length2","winQualifier","winListeners","_i4","_winListeners$__DOMAI2","_length4","_ref5","listener","types__extends","RECEIVE_MESSAGE_TYPES","pathname","ack","respond","fireAndForget","originalSource","handleError","response","receive__typeof","receiveMessage","event","parsedMessage","parse","receivedMessages","RegExp","messageListener","sourceElement","originalEvent","targetWindow","el","document","getElementById","tagName","toLowerCase","HTMLIFrameElement","hasResult","requestPromises","requestPromise","actualParent","_i7","_getAllChildFrames4","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","childFrame","_length6","_i15","_getFrames8","_length14","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","cycle","max","min","server__typeof","listenerOptions","errorHandler","requestListener","addRequestListener","_ref6","listenersCollection","_i6","_win2","_i8","_length8","_listenersCollection","_i10","_domain2","_length10","_item","_i12","_length12","existingListener","strDomain","regexListeners","regexListener","_handler","errorOnClose","interval","runInterval","onceListener","removeEventListener","popupWindowsByWin","remoteWindows","initialized","addEventListener","attachEvent","initializationData","connection","emitter","currentAsset","_emitter","_connection","thisAsset","_changedData","getData","bind","setData","syncAsset","updateWidth","onSave","onChange","onPublish","onUnPublish","replaceAsset","asset","width","file","handleUpload","AssetSidebarWidget","configCallback","pluginMetaData","registry","title","toolbar","inMainToolbar","inHoveringToolbar","isContentstackElement","meta","elementType","editorCallbacks","isDependent","isContainer","containerMetaData","rootCategory","dependentPlugins","addPlugins","plugins","plugin","category","beforeChildrenRender","beforeElementRender","handleMouseDown","rte","config","entries","iconName","display","includes","dndOptions","Component","shouldOverride","containerMeta","RTEPlugin","rtePluginInitializer","additionalData","_data","currentBranch","_additionalData","setInstallationData","installationData","onData","getInstallationData","setValidity","isValid","ERROR_MESSAGES","configPage","isValidTypeBoolean","messageTypeString","AppConfig","content_type","changedData","locale","_options","thisEntry","console","log","getField","uid","useUnsavedSchema","_internalFlags","FieldInstance","path","split","schema","find","x","data_type","multiple","blocks","block","e","fieldObject","resolvedData","Entry","initData","pulse","eventName","metadata","postRobot","getConfig","installationUID","getCurrentLocation","getAppVersion","version","orgUid","org_uid","action","headers","organization_uid","skip_api_key","app","getCurrentRegion","region","appUID","app_id","locationUID","extension_uid","installation_uid","currentUser","user","store","DashboardWidget","CustomField","SidebarWidget","RTELocation","AppConfigWidget","FullscreenAppWidget","FullPage","EntryFieldLocation","FieldModifierLocation","modal","formatAppRegion","manifest","dashboard_width","installation","field","fieldConfig","field_config","emitEvent","otherData","state","initialize","sdkType","setReady","Extension","excludedDataTypesForSetField","fieldDataObject","unResolvedData","separatedData","_resolvedData","_self","fieldObj","currentFieldObj","dataObj","setFocus","Field","getTags","tags","setTags","undefined","entryField","tagsShouldNotBeBlank","every","tag","areTagsValid","tagsShouldBeArrayOfStrings","FieldModifierLocationEntry","FieldModifierLocationField","_autoResizingEnabled","updateDimension","enableAutoResizing","disableAutoResizing","closeModal","dimension","height","_height","ceil","getBoundingClientRect","_width","dimensionBody","dimensionHeightShouldBeNumber","dimensionWidthShouldBeNumber","preventFrameClose","observer","MutationObserver","observe","body","attributes","childList","subtree","disconnect","FieldModifierLocationFrame","LOG_LEVEL","_extension","ContentstackAppSDK","createMetaData","metadataConfig","entity_uid","otherMetaData","payload","retrieveMetaData","retrieveAllMetaData","params","updateMetaData","deleteMetaData","Metadata","rootElement","getPreferredBodyElement","children","setBackgroundElement","element","Modal","getReferences","environment","Query","entryQuery","language","plural","getRteAssets","getAssetsOfSpecificTypes","assetType","asset_type","publish","fetch","unpublish","_files","files","from","_","File","Date","getUTCMilliseconds","upload_type","parentFolderUid","customUploadHandler","uploadAsset","Asset","uiConnection","Proxy","Target","thisArg","argumentsList","_query","only","transform","except","addParam","contentTypeUid","create","content_type_uid","update","includeOwner","includeContentType","includeSchema","includeReference","getLanguages","unlocalize","setWorkflowStage","contentType","entryTarget","addQuery","ContentType","_extend","query","file_size","bool","concat","$exists","Utils","lessThan","lessThanOrEqualTo","greaterThan","greaterThanOrEqualTo","notEqualTo","containedIn","notContainedIn","exists","notExists","ascending","descending","beforeUid","afterUid","skip","limit","or","and","equalTo","where","mergeDeep","includeCount","include_count","getQuery","$regex","$options","search","typeahead","findOne","singleEntry","_currentBranch","branches","branch","getAllStacks","stacks","getManagementTokens","tokens","queries","apiKey","api_key","getContentType","getContentTypes","optionParams","getEnvironment","getEnvironments","getReleases","getPublishes","getLocale","getLocales","getWorkflow","getWorkflows","getAllBranches","getCurrentBranch","Stack","newTraget","oldTarget","oldSource","newTarget","_mergeRecursive","anotherTarget","_type","val","__typeof","languageCode","environmentCode","include_owner","include_content_type","include_schema","getAll","remove","clear","Store","Region","StackLocation","OrganizationLocation","NA","EU","AZURE_NA","AZURE_EU","UNKNOWN","nodeCollection","rootElementIndex","Infinity","elementPreferenceList","nonRenderingTags","elIndex","nodeName","_resizingEnabled","enableResizing","onDashboardResize","windowObj","updateHeight","isNaN","enablePaddingTop","disablePaddingTop","EventEmitter","proto","originalGlobalValue","indexOfListener","listeners","alias","isValidListener","getListeners","evt","events","_getEvents","test","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","__webpack_module_cache__","__webpack_require__","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://ContentstackAppSDK/webpack/universalModuleDefinition","webpack://ContentstackAppSDK/./node_modules/post-robot/dist/post-robot.js","webpack://ContentstackAppSDK/./node_modules/post-robot/index.js","webpack://ContentstackAppSDK/./src/AssetSidebarWidget.ts","webpack://ContentstackAppSDK/./src/RTE/index.tsx","webpack://ContentstackAppSDK/./src/appConfig/index.ts","webpack://ContentstackAppSDK/./src/entry.ts","webpack://ContentstackAppSDK/./src/extension.ts","webpack://ContentstackAppSDK/./src/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/entry.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/field.ts","webpack://ContentstackAppSDK/./src/fieldModifierLocation/frame.ts","webpack://ContentstackAppSDK/./src/index.ts","webpack://ContentstackAppSDK/./src/metadata.ts","webpack://ContentstackAppSDK/./src/modal.ts","webpack://ContentstackAppSDK/./src/stack/api/asset/index.ts","webpack://ContentstackAppSDK/./src/stack/api/base.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/entry.ts","webpack://ContentstackAppSDK/./src/stack/api/content-type/index.ts","webpack://ContentstackAppSDK/./src/stack/api/query.ts","webpack://ContentstackAppSDK/./src/stack/index.ts","webpack://ContentstackAppSDK/./src/stack/utils.ts","webpack://ContentstackAppSDK/./src/store.ts","webpack://ContentstackAppSDK/./src/types.ts","webpack://ContentstackAppSDK/./src/utils/errorMessages.ts","webpack://ContentstackAppSDK/./src/utils/utils.ts","webpack://ContentstackAppSDK/./src/window.ts","webpack://ContentstackAppSDK/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://ContentstackAppSDK/webpack/bootstrap","webpack://ContentstackAppSDK/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ContentstackAppSDK\"] = factory();\n\telse\n\t\troot[\"ContentstackAppSDK\"] = factory();\n})(this, () => {\nreturn ","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"postRobot\", [], factory) : \"object\" == typeof exports ? exports.postRobot = factory() : root.postRobot = factory();\n}(\"undefined\" != typeof self ? self : this, function() {\n return function(modules) {\n var installedModules = {};\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n module.l = !0;\n return module.exports;\n }\n __webpack_require__.m = modules;\n __webpack_require__.c = installedModules;\n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n configurable: !1,\n enumerable: !0,\n get: getter\n });\n };\n __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n __webpack_require__.d(getter, \"a\", getter);\n return getter;\n };\n __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n __webpack_require__.p = \"\";\n return __webpack_require__(__webpack_require__.s = \"./src/index.js\");\n }({\n \"./src/index.js\": function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n Object.defineProperty(__webpack_exports__, \"__esModule\", {\n value: !0\n });\n var interface_namespaceObject = {};\n __webpack_require__.d(interface_namespaceObject, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(interface_namespaceObject, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(interface_namespaceObject, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(interface_namespaceObject, \"init\", function() {\n return init;\n });\n __webpack_require__.d(interface_namespaceObject, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(interface_namespaceObject, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(interface_namespaceObject, \"request\", function() {\n return request;\n });\n __webpack_require__.d(interface_namespaceObject, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(interface_namespaceObject, \"client\", function() {\n return client;\n });\n __webpack_require__.d(interface_namespaceObject, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(interface_namespaceObject, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(interface_namespaceObject, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(interface_namespaceObject, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(interface_namespaceObject, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(interface_namespaceObject, \"disable\", function() {\n return disable;\n });\n function isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n var PROTOCOL = {\n MOCK: \"mock:\",\n FILE: \"file:\",\n ABOUT: \"about:\"\n }, WILDCARD = \"*\", IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n function isAboutProtocol() {\n return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window).location.protocol === PROTOCOL.ABOUT;\n }\n function getParent() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win) try {\n if (win.parent && win.parent !== win) return win.parent;\n } catch (err) {}\n }\n function getOpener() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n if (win && !getParent(win)) try {\n return win.opener;\n } catch (err) {}\n }\n function canReadFromWindow(win) {\n try {\n win && win.location && win.location.href;\n return !0;\n } catch (err) {}\n return !1;\n }\n function getActualDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, location = win.location;\n if (!location) throw new Error(\"Can not read window location\");\n var protocol = location.protocol;\n if (!protocol) throw new Error(\"Can not read window protocol\");\n if (protocol === PROTOCOL.FILE) return PROTOCOL.FILE + \"//\";\n if (protocol === PROTOCOL.ABOUT) {\n var parent = getParent(win);\n return parent && canReadFromWindow(parent) ? getActualDomain(parent) : PROTOCOL.ABOUT + \"//\";\n }\n var host = location.host;\n if (!host) throw new Error(\"Can not read window host\");\n return protocol + \"//\" + host;\n }\n function utils_getDomain() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, domain = getActualDomain(win);\n return domain && win.mockDomain && 0 === win.mockDomain.indexOf(PROTOCOL.MOCK) ? win.mockDomain : domain;\n }\n function isActuallySameDomain(win) {\n try {\n if (win === window) return !0;\n } catch (err) {}\n try {\n var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n if (desc && !1 === desc.enumerable) return !1;\n } catch (err) {}\n try {\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n } catch (err) {}\n try {\n if (getActualDomain(win) === getActualDomain(window)) return !0;\n } catch (err) {}\n return !1;\n }\n function isAncestorParent(parent, child) {\n if (!parent || !child) return !1;\n var childParent = getParent(child);\n return childParent ? childParent === parent : -1 !== function(win) {\n var result = [];\n try {\n for (;win.parent !== win; ) {\n result.push(win.parent);\n win = win.parent;\n }\n } catch (err) {}\n return result;\n }(child).indexOf(parent);\n }\n function getFrames(win) {\n var result = [], frames = void 0;\n try {\n frames = win.frames;\n } catch (err) {\n frames = win;\n }\n var len = void 0;\n try {\n len = frames.length;\n } catch (err) {}\n if (0 === len) return result;\n if (len) {\n for (var i = 0; i < len; i++) {\n var frame = void 0;\n try {\n frame = frames[i];\n } catch (err) {\n continue;\n }\n result.push(frame);\n }\n return result;\n }\n for (var _i = 0; _i < 100; _i++) {\n var _frame = void 0;\n try {\n _frame = frames[_i];\n } catch (err) {\n return result;\n }\n if (!_frame) return result;\n result.push(_frame);\n }\n return result;\n }\n var iframeWindows = [], iframeFrames = [];\n function isWindowClosed(win) {\n var allowMock = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n try {\n if (win === window) return !1;\n } catch (err) {\n return !0;\n }\n try {\n if (!win) return !0;\n } catch (err) {\n return !0;\n }\n try {\n if (win.closed) return !0;\n } catch (err) {\n return !err || err.message !== IE_WIN_ACCESS_ERROR;\n }\n if (allowMock && function(win) {\n if (!isActuallySameDomain(win)) return !1;\n try {\n if (win === window) return !0;\n if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;\n if (utils_getDomain(window) === utils_getDomain(win)) return !0;\n } catch (err) {}\n return !1;\n }(win)) try {\n if (win.mockclosed) return !0;\n } catch (err) {}\n try {\n if (!win.parent || !win.top) return !0;\n } catch (err) {}\n var iframeIndex = function(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }(iframeWindows, win);\n if (-1 !== iframeIndex) {\n var frame = iframeFrames[iframeIndex];\n if (frame && function(frame) {\n if (!frame.contentWindow) return !0;\n if (!frame.parentNode) return !0;\n var doc = frame.ownerDocument;\n return !(!doc || !doc.documentElement || doc.documentElement.contains(frame));\n }(frame)) return !0;\n }\n return !1;\n }\n function getAncestor() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return getOpener(win = win || window) || getParent(win) || void 0;\n }\n function matchDomain(pattern, origin) {\n if (\"string\" == typeof pattern) {\n if (\"string\" == typeof origin) return pattern === WILDCARD || origin === pattern;\n if (isRegex(origin)) return !1;\n if (Array.isArray(origin)) return !1;\n }\n return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some(function(subpattern) {\n return matchDomain(subpattern, origin);\n }));\n }\n function isWindow(obj) {\n try {\n if (obj === window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (\"[object Window]\" === Object.prototype.toString.call(obj)) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (window.Window && obj instanceof window.Window) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.self === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.parent === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && obj.top === obj) return !0;\n } catch (err) {\n if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n }\n try {\n if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n } catch (err) {\n return !0;\n }\n return !1;\n }\n function util_safeIndexOf(collection, item) {\n for (var i = 0; i < collection.length; i++) try {\n if (collection[i] === item) return i;\n } catch (err) {}\n return -1;\n }\n var _ALLOWED_POST_MESSAGE, weakmap_CrossDomainSafeWeakMap = function() {\n function CrossDomainSafeWeakMap() {\n !function(instance, Constructor) {\n if (!(instance instanceof CrossDomainSafeWeakMap)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n if (function() {\n if (\"undefined\" == typeof WeakMap) return !1;\n if (void 0 === Object.freeze) return !1;\n try {\n var testWeakMap = new WeakMap(), testKey = {};\n Object.freeze(testKey);\n testWeakMap.set(testKey, \"__testvalue__\");\n return \"__testvalue__\" === testWeakMap.get(testKey);\n } catch (err) {\n return !1;\n }\n }()) try {\n this.weakmap = new WeakMap();\n } catch (err) {}\n this.keys = [];\n this.values = [];\n }\n CrossDomainSafeWeakMap.prototype._cleanupClosedWindows = function() {\n for (var weakmap = this.weakmap, keys = this.keys, i = 0; i < keys.length; i++) {\n var value = keys[i];\n if (isWindow(value) && isWindowClosed(value)) {\n if (weakmap) try {\n weakmap.delete(value);\n } catch (err) {}\n keys.splice(i, 1);\n this.values.splice(i, 1);\n i -= 1;\n }\n }\n };\n CrossDomainSafeWeakMap.prototype.isSafeToReadWrite = function(key) {\n if (isWindow(key)) return !1;\n try {\n key && key.self;\n key && key[this.name];\n } catch (err) {\n return !1;\n }\n return !0;\n };\n CrossDomainSafeWeakMap.prototype.set = function(key, value) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.set(key, value);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var name = this.name, entry = key[name];\n entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n value: [ key, value ],\n writable: !0\n });\n return;\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, values = this.values, index = util_safeIndexOf(keys, key);\n if (-1 === index) {\n keys.push(key);\n values.push(value);\n } else values[index] = value;\n };\n CrossDomainSafeWeakMap.prototype.get = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return weakmap.get(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return entry && entry[0] === key ? entry[1] : void 0;\n } catch (err) {}\n this._cleanupClosedWindows();\n var index = util_safeIndexOf(this.keys, key);\n if (-1 !== index) return this.values[index];\n };\n CrossDomainSafeWeakMap.prototype.delete = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n weakmap.delete(key);\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n } catch (err) {}\n this._cleanupClosedWindows();\n var keys = this.keys, index = util_safeIndexOf(keys, key);\n if (-1 !== index) {\n keys.splice(index, 1);\n this.values.splice(index, 1);\n }\n };\n CrossDomainSafeWeakMap.prototype.has = function(key) {\n if (!key) throw new Error(\"WeakMap expected key\");\n var weakmap = this.weakmap;\n if (weakmap) try {\n if (weakmap.has(key)) return !0;\n } catch (err) {\n delete this.weakmap;\n }\n if (this.isSafeToReadWrite(key)) try {\n var entry = key[this.name];\n return !(!entry || entry[0] !== key);\n } catch (err) {}\n this._cleanupClosedWindows();\n return -1 !== util_safeIndexOf(this.keys, key);\n };\n CrossDomainSafeWeakMap.prototype.getOrSet = function(key, getter) {\n if (this.has(key)) return this.get(key);\n var value = getter();\n this.set(key, value);\n return value;\n };\n return CrossDomainSafeWeakMap;\n }(), constants_CONSTANTS = {\n POST_MESSAGE_TYPE: {\n REQUEST: \"postrobot_message_request\",\n RESPONSE: \"postrobot_message_response\",\n ACK: \"postrobot_message_ack\"\n },\n POST_MESSAGE_ACK: {\n SUCCESS: \"success\",\n ERROR: \"error\"\n },\n POST_MESSAGE_NAMES: {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_ready\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n },\n WINDOW_TYPES: {\n FULLPAGE: \"fullpage\",\n POPUP: \"popup\",\n IFRAME: \"iframe\"\n },\n WINDOW_PROPS: {\n POSTROBOT: \"__postRobot__\"\n },\n SERIALIZATION_TYPES: {\n METHOD: \"postrobot_method\",\n ERROR: \"postrobot_error\",\n PROMISE: \"postrobot_promise\",\n ZALGO_PROMISE: \"postrobot_zalgo_promise\",\n REGEX: \"regex\"\n },\n SEND_STRATEGIES: {\n POST_MESSAGE: \"postrobot_post_message\",\n BRIDGE: \"postrobot_bridge\",\n GLOBAL: \"postrobot_global\"\n },\n MOCK_PROTOCOL: \"mock:\",\n FILE_PROTOCOL: \"file:\",\n BRIDGE_NAME_PREFIX: \"__postrobot_bridge__\",\n POSTROBOT_PROXY: \"__postrobot_proxy__\",\n WILDCARD: \"*\"\n }, POST_MESSAGE_NAMES = {\n METHOD: \"postrobot_method\",\n HELLO: \"postrobot_hello\",\n OPEN_TUNNEL: \"postrobot_open_tunnel\"\n }, CONFIG = (Object.keys(POST_MESSAGE_NAMES).map(function(key) {\n return POST_MESSAGE_NAMES[key];\n }), {\n ALLOW_POSTMESSAGE_POPUP: !(\"__ALLOW_POSTMESSAGE_POPUP__\" in window) || window.__ALLOW_POSTMESSAGE_POPUP__,\n BRIDGE_TIMEOUT: 5e3,\n CHILD_WINDOW_TIMEOUT: 5e3,\n ACK_TIMEOUT: -1 !== window.navigator.userAgent.match(/MSIE/i) ? 1e4 : 2e3,\n RES_TIMEOUT: -1,\n ALLOWED_POST_MESSAGE_METHODS: (_ALLOWED_POST_MESSAGE = {}, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = !0, \n _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.BRIDGE] = !0, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.GLOBAL] = !0, \n _ALLOWED_POST_MESSAGE),\n ALLOW_SAME_ORIGIN: !1\n });\n 0 === window.location.href.indexOf(constants_CONSTANTS.FILE_PROTOCOL) && (CONFIG.ALLOW_POSTMESSAGE_POPUP = !0);\n var _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function stringifyError(err) {\n var level = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\n if (level >= 3) return \"stringifyError stack overflow\";\n try {\n if (!err) return \"\";\n if (\"string\" == typeof err) return err;\n if (err instanceof Error) {\n var stack = err && err.stack, message = err && err.message;\n if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n if (stack) return stack;\n if (message) return message;\n }\n return \"function\" == typeof err.toString ? err.toString() : Object.prototype.toString.call(err);\n } catch (newErr) {\n return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n }\n }\n var once = function(method) {\n if (!method) return method;\n var called = !1;\n return function() {\n if (!called) {\n called = !0;\n return method.apply(this, arguments);\n }\n };\n };\n function lib_util_noop() {}\n function uniqueID() {\n var chars = \"0123456789abcdef\";\n return \"xxxxxxxxxx\".replace(/./g, function() {\n return chars.charAt(Math.floor(Math.random() * chars.length));\n });\n }\n function replaceObject(item, callback) {\n var depth = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\n if (depth >= 100) throw new Error(\"Self-referential object passed, or object contained too many layers\");\n var newobj = void 0;\n if (\"object\" !== (void 0 === item ? \"undefined\" : _typeof(item)) || null === item || Array.isArray(item)) {\n if (!Array.isArray(item)) throw new TypeError(\"Invalid type: \" + (void 0 === item ? \"undefined\" : _typeof(item)));\n newobj = [];\n } else newobj = {};\n !function(item, callback) {\n Array.isArray(item) ? function(item, callback) {\n for (var i = 0; i < item.length; i++) callback(item[i], i);\n }(item, callback) : \"object\" === (void 0 === item ? \"undefined\" : _typeof(item)) && null !== item && function(item, callback) {\n for (var _key in item) item.hasOwnProperty(_key) && callback(item[_key], _key);\n }(item, callback);\n }(item, function(childItem, key) {\n var result = callback(childItem, key);\n void 0 !== result ? newobj[key] = result : \"object\" === (void 0 === childItem ? \"undefined\" : _typeof(childItem)) && null !== childItem ? newobj[key] = replaceObject(childItem, callback, depth + 1) : newobj[key] = childItem;\n });\n return newobj;\n }\n function util_isRegex(item) {\n return \"[object RegExp]\" === Object.prototype.toString.call(item);\n }\n function utils_isPromise(item) {\n try {\n if (!item) return !1;\n if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n var _toString = {}.toString;\n if (_toString) {\n var name = _toString.call(item);\n if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n }\n if (\"function\" == typeof item.then) return !0;\n } catch (err) {\n return !1;\n }\n return !1;\n }\n var dispatchedErrors = [], possiblyUnhandledPromiseHandlers = [], activeCount = 0, flushPromise = void 0;\n function flushActive() {\n if (!activeCount && flushPromise) {\n var promise = flushPromise;\n flushPromise = null;\n promise.resolve();\n }\n }\n function startActive() {\n activeCount += 1;\n }\n function endActive() {\n activeCount -= 1;\n flushActive();\n }\n var promise_ZalgoPromise = function() {\n function ZalgoPromise(handler) {\n var _this = this;\n !function(instance, Constructor) {\n if (!(instance instanceof ZalgoPromise)) throw new TypeError(\"Cannot call a class as a function\");\n }(this);\n this.resolved = !1;\n this.rejected = !1;\n this.errorHandled = !1;\n this.handlers = [];\n if (handler) {\n var _result = void 0, _error = void 0, resolved = !1, rejected = !1, isAsync = !1;\n startActive();\n try {\n handler(function(res) {\n if (isAsync) _this.resolve(res); else {\n resolved = !0;\n _result = res;\n }\n }, function(err) {\n if (isAsync) _this.reject(err); else {\n rejected = !0;\n _error = err;\n }\n });\n } catch (err) {\n endActive();\n this.reject(err);\n return;\n }\n endActive();\n isAsync = !0;\n resolved ? this.resolve(_result) : rejected && this.reject(_error);\n }\n }\n ZalgoPromise.prototype.resolve = function(result) {\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n this.resolved = !0;\n this.value = result;\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.reject = function(error) {\n var _this2 = this;\n if (this.resolved || this.rejected) return this;\n if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n if (!error) {\n var _err = error && \"function\" == typeof error.toString ? error.toString() : Object.prototype.toString.call(error);\n error = new Error(\"Expected reject to be called with Error, got \" + _err);\n }\n this.rejected = !0;\n this.error = error;\n this.errorHandled || setTimeout(function() {\n _this2.errorHandled || function(err, promise) {\n if (-1 === dispatchedErrors.indexOf(err)) {\n dispatchedErrors.push(err);\n setTimeout(function() {\n throw err;\n }, 1);\n for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n }\n }(error, _this2);\n }, 1);\n this.dispatch();\n return this;\n };\n ZalgoPromise.prototype.asyncReject = function(error) {\n this.errorHandled = !0;\n this.reject(error);\n return this;\n };\n ZalgoPromise.prototype.dispatch = function() {\n var dispatching = this.dispatching, resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n if (!dispatching && (resolved || rejected)) {\n this.dispatching = !0;\n startActive();\n for (var chain = function(firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n secondPromise.resolve(res);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < handlers.length; i++) {\n var _handlers$i = handlers[i], _onSuccess = _handlers$i.onSuccess, _onError = _handlers$i.onError, _promise = _handlers$i.promise, _result2 = void 0;\n if (resolved) try {\n _result2 = _onSuccess ? _onSuccess(this.value) : this.value;\n } catch (err) {\n _promise.reject(err);\n continue;\n } else if (rejected) {\n if (!_onError) {\n _promise.reject(this.error);\n continue;\n }\n try {\n _result2 = _onError(this.error);\n } catch (err) {\n _promise.reject(err);\n continue;\n }\n }\n if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error);\n _result2.errorHandled = !0;\n } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? _promise.resolve(_result2.value) : _promise.reject(_result2.error) : chain(_result2, _promise) : _promise.resolve(_result2);\n }\n handlers.length = 0;\n this.dispatching = !1;\n endActive();\n }\n };\n ZalgoPromise.prototype.then = function(onSuccess, onError) {\n if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n var promise = new ZalgoPromise();\n this.handlers.push({\n promise: promise,\n onSuccess: onSuccess,\n onError: onError\n });\n this.errorHandled = !0;\n this.dispatch();\n return promise;\n };\n ZalgoPromise.prototype.catch = function(onError) {\n return this.then(void 0, onError);\n };\n ZalgoPromise.prototype.finally = function(onFinally) {\n if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n return this.then(function(result) {\n return ZalgoPromise.try(onFinally).then(function() {\n return result;\n });\n }, function(err) {\n return ZalgoPromise.try(onFinally).then(function() {\n throw err;\n });\n });\n };\n ZalgoPromise.prototype.timeout = function(time, err) {\n var _this3 = this;\n if (this.resolved || this.rejected) return this;\n var timeout = setTimeout(function() {\n _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n }, time);\n return this.then(function(result) {\n clearTimeout(timeout);\n return result;\n });\n };\n ZalgoPromise.prototype.toPromise = function() {\n if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n return Promise.resolve(this);\n };\n ZalgoPromise.resolve = function(value) {\n return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise(function(resolve, reject) {\n return value.then(resolve, reject);\n }) : new ZalgoPromise().resolve(value);\n };\n ZalgoPromise.reject = function(error) {\n return new ZalgoPromise().reject(error);\n };\n ZalgoPromise.asyncReject = function(error) {\n return new ZalgoPromise().asyncReject(error);\n };\n ZalgoPromise.all = function(promises) {\n var promise = new ZalgoPromise(), count = promises.length, results = [];\n if (!count) {\n promise.resolve(results);\n return promise;\n }\n for (var chain = function(i, firstPromise, secondPromise) {\n return firstPromise.then(function(res) {\n results[i] = res;\n 0 == (count -= 1) && promise.resolve(results);\n }, function(err) {\n secondPromise.reject(err);\n });\n }, i = 0; i < promises.length; i++) {\n var prom = promises[i];\n if (prom instanceof ZalgoPromise) {\n if (prom.resolved) {\n results[i] = prom.value;\n count -= 1;\n continue;\n }\n } else if (!utils_isPromise(prom)) {\n results[i] = prom;\n count -= 1;\n continue;\n }\n chain(i, ZalgoPromise.resolve(prom), promise);\n }\n 0 === count && promise.resolve(results);\n return promise;\n };\n ZalgoPromise.hash = function(promises) {\n var result = {};\n return ZalgoPromise.all(Object.keys(promises).map(function(key) {\n return ZalgoPromise.resolve(promises[key]).then(function(value) {\n result[key] = value;\n });\n })).then(function() {\n return result;\n });\n };\n ZalgoPromise.map = function(items, method) {\n return ZalgoPromise.all(items.map(method));\n };\n ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n return function(handler) {\n possiblyUnhandledPromiseHandlers.push(handler);\n return {\n cancel: function() {\n possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n }\n };\n }(handler);\n };\n ZalgoPromise.try = function(method, context, args) {\n if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n var result = void 0;\n startActive();\n try {\n result = method.apply(context, args || []);\n } catch (err) {\n endActive();\n return ZalgoPromise.reject(err);\n }\n endActive();\n return ZalgoPromise.resolve(result);\n };\n ZalgoPromise.delay = function(_delay) {\n return new ZalgoPromise(function(resolve) {\n setTimeout(resolve, _delay);\n });\n };\n ZalgoPromise.isPromise = function(value) {\n return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n };\n ZalgoPromise.flush = function() {\n return function(Zalgo) {\n var promise = flushPromise = flushPromise || new ZalgoPromise();\n flushActive();\n return promise;\n }();\n };\n return ZalgoPromise;\n }(), global = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] || {};\n global.registerSelf = function() {};\n var serialize__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.methods = global.methods || new weakmap_CrossDomainSafeWeakMap();\n var listenForMethods = once(function() {\n global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n origin: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin, data = _ref.data, methods = global.methods.get(source);\n if (!methods) throw new Error(\"Could not find any methods this window has privileges to call\");\n var meth = methods[data.id];\n if (!meth) throw new Error(\"Could not find method with id: \" + data.id);\n if (!matchDomain(meth.domain, origin)) throw new Error(\"Method domain \" + meth.domain + \" does not match origin \" + origin);\n return promise_ZalgoPromise.try(function() {\n return meth.method.apply({\n source: source,\n origin: origin,\n data: data\n }, data.args);\n }).then(function(result) {\n return {\n result: result,\n id: data.id,\n name: data.name\n };\n });\n });\n });\n function isSerialized(item, type) {\n return \"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item && item.__type__ === type;\n }\n function serializeMethod(destination, domain, method, name) {\n var id = uniqueID(), methods = global.methods.get(destination);\n if (!methods) {\n methods = {};\n global.methods.set(destination, methods);\n }\n methods[id] = {\n domain: domain,\n method: method\n };\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.METHOD,\n __id__: id,\n __name__: name\n };\n }\n function deserializeMethod(source, origin, obj) {\n function wrapper() {\n var args = Array.prototype.slice.call(arguments);\n return global.send(source, constants_CONSTANTS.POST_MESSAGE_NAMES.METHOD, {\n id: obj.__id__,\n name: obj.__name__,\n args: args\n }, {\n domain: origin,\n timeout: -1\n }).then(function(_ref2) {\n return _ref2.data.result;\n }, function(err) {\n throw err;\n });\n }\n wrapper.__name__ = obj.__name__;\n wrapper.__xdomain__ = !0;\n wrapper.source = source;\n wrapper.origin = origin;\n return wrapper;\n }\n function deserializeZalgoPromise(source, origin, prom) {\n return new promise_ZalgoPromise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n });\n }\n global.readyPromises = global.readyPromises || new weakmap_CrossDomainSafeWeakMap();\n function sayHello(win) {\n return global.send(win, constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {}, {\n domain: constants_CONSTANTS.WILDCARD,\n timeout: -1\n }).then(function(_ref2) {\n return {\n origin: _ref2.origin\n };\n });\n }\n var SEND_MESSAGE_STRATEGIES = {};\n SEND_MESSAGE_STRATEGIES[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = function(win, serializedMessage, domain) {\n (Array.isArray(domain) ? domain : \"string\" == typeof domain ? [ domain ] : [ constants_CONSTANTS.WILDCARD ]).map(function(dom) {\n if (0 === dom.indexOf(constants_CONSTANTS.MOCK_PROTOCOL)) {\n if (window.location.protocol === constants_CONSTANTS.FILE_PROTOCOL) return constants_CONSTANTS.WILDCARD;\n if (!isActuallySameDomain(win)) throw new Error(\"Attempting to send messsage to mock domain \" + dom + \", but window is actually cross-domain\");\n return getActualDomain(win);\n }\n return 0 === dom.indexOf(constants_CONSTANTS.FILE_PROTOCOL) ? constants_CONSTANTS.WILDCARD : dom;\n }).forEach(function(dom) {\n return win.postMessage(serializedMessage, dom);\n });\n };\n var _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n };\n function sendMessage(win, message, domain) {\n return promise_ZalgoPromise.try(function() {\n var _jsonStringify;\n message = function(win, message) {\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, id = uniqueID(), type = function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getOpener(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.POPUP : function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n return Boolean(getParent(win));\n }() ? constants_CONSTANTS.WINDOW_TYPES.IFRAME : constants_CONSTANTS.WINDOW_TYPES.FULLPAGE, sourceDomain = utils_getDomain(window);\n return _extends({}, message, options, {\n sourceDomain: sourceDomain,\n id: message.id || id,\n windowType: type\n });\n }(win, message, {\n data: function(destination, domain, obj) {\n return replaceObject({\n obj: message.data\n }, function(item, key) {\n return \"function\" == typeof item ? serializeMethod(destination, domain, item, key.toString()) : item instanceof Error ? (err = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ERROR,\n __message__: stringifyError(err),\n __code__: err.code\n }) : window.Promise && item instanceof window.Promise ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : promise_ZalgoPromise.isPromise(item) ? function(destination, domain, promise, name) {\n return {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE,\n __then__: serializeMethod(destination, domain, function(resolve, reject) {\n return promise.then(resolve, reject);\n }, name + \".then\")\n };\n }(destination, domain, item, key.toString()) : util_isRegex(item) ? (regex = item, \n {\n __type__: constants_CONSTANTS.SERIALIZATION_TYPES.REGEX,\n __source__: regex.source\n }) : void 0;\n var err, regex;\n }).obj;\n }(win, domain),\n domain: domain\n });\n if (win === window && !CONFIG.ALLOW_SAME_ORIGIN) throw new Error(\"Attemping to send message to self\");\n if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n var messages = [], serializedMessage = function(obj, replacer, indent) {\n var objectToJSON = void 0, arrayToJSON = void 0;\n try {\n if (\"{}\" !== JSON.stringify({})) {\n objectToJSON = Object.prototype.toJSON;\n delete Object.prototype.toJSON;\n }\n if (\"{}\" !== JSON.stringify({})) throw new Error(\"Can not correctly serialize JSON objects\");\n if (\"[]\" !== JSON.stringify([])) {\n arrayToJSON = Array.prototype.toJSON;\n delete Array.prototype.toJSON;\n }\n if (\"[]\" !== JSON.stringify([])) throw new Error(\"Can not correctly serialize JSON objects\");\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n var result = JSON.stringify.call(this, obj, null, 2);\n try {\n objectToJSON && (Object.prototype.toJSON = objectToJSON);\n arrayToJSON && (Array.prototype.toJSON = arrayToJSON);\n } catch (err) {\n throw new Error(\"Can not repair JSON.stringify: \" + err.message);\n }\n return result;\n }(((_jsonStringify = {})[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT] = message, \n _jsonStringify));\n return promise_ZalgoPromise.map(Object.keys(SEND_MESSAGE_STRATEGIES), function(strategyName) {\n return promise_ZalgoPromise.try(function() {\n if (!CONFIG.ALLOWED_POST_MESSAGE_METHODS[strategyName]) throw new Error(\"Strategy disallowed: \" + strategyName);\n return SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n }).then(function() {\n messages.push(strategyName + \": success\");\n return !0;\n }, function(err) {\n messages.push(strategyName + \": \" + stringifyError(err) + \"\\n\");\n return !1;\n });\n }).then(function(results) {\n var success = results.some(Boolean), status = message.type + \" \" + message.name + \" \" + (success ? \"success\" : \"error\") + \":\\n - \" + messages.join(\"\\n - \") + \"\\n\";\n if (!success) throw new Error(status);\n });\n });\n }\n global.responseListeners = global.responseListeners || {};\n global.requestListeners = global.requestListeners || {};\n global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new function() {}();\n global.erroredResponseListeners = global.erroredResponseListeners || {};\n var _RECEIVE_MESSAGE_TYPE, __DOMAIN_REGEX__ = \"__domain_regex__\";\n function getResponseListener(hash) {\n return global.responseListeners[hash];\n }\n function deleteResponseListener(hash) {\n delete global.responseListeners[hash];\n }\n function isResponseListenerErrored(hash) {\n return Boolean(global.erroredResponseListeners[hash]);\n }\n function getRequestListener(_ref) {\n var name = _ref.name, win = _ref.win, domain = _ref.domain;\n win === constants_CONSTANTS.WILDCARD && (win = null);\n domain === constants_CONSTANTS.WILDCARD && (domain = null);\n if (!name) throw new Error(\"Name required to get request listener\");\n var nameListeners = global.requestListeners[name];\n if (nameListeners) for (var _i2 = 0, _ref3 = [ win, global.WINDOW_WILDCARD ], _length2 = null == _ref3 ? 0 : _ref3.length; _i2 < _length2; _i2++) {\n var winQualifier = _ref3[_i2], winListeners = winQualifier && nameListeners.get(winQualifier);\n if (winListeners) {\n if (domain && \"string\" == typeof domain) {\n if (winListeners[domain]) return winListeners[domain];\n if (winListeners[__DOMAIN_REGEX__]) for (var _i4 = 0, _winListeners$__DOMAI2 = winListeners[__DOMAIN_REGEX__], _length4 = null == _winListeners$__DOMAI2 ? 0 : _winListeners$__DOMAI2.length; _i4 < _length4; _i4++) {\n var _ref5 = _winListeners$__DOMAI2[_i4], regex = _ref5.regex, listener = _ref5.listener;\n if (matchDomain(regex, domain)) return listener;\n }\n }\n if (winListeners[constants_CONSTANTS.WILDCARD]) return winListeners[constants_CONSTANTS.WILDCARD];\n }\n }\n }\n var types__extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }, RECEIVE_MESSAGE_TYPES = ((_RECEIVE_MESSAGE_TYPE = {})[constants_CONSTANTS.POST_MESSAGE_TYPE.ACK] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message ack for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n options.ack = !0;\n }\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST] = function(source, origin, message) {\n var options = getRequestListener({\n name: message.name,\n win: source,\n domain: origin\n });\n function respond(data) {\n return message.fireAndForget || isWindowClosed(source) ? promise_ZalgoPromise.resolve() : sendMessage(source, types__extends({\n target: message.originalSource,\n hash: message.hash,\n name: message.name\n }, data), origin);\n }\n return promise_ZalgoPromise.all([ respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.ACK\n }), promise_ZalgoPromise.try(function() {\n if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Request origin \" + origin + \" does not match domain \" + options.domain.toString());\n var data = message.data;\n return options.handler({\n source: source,\n origin: origin,\n data: data\n });\n }).then(function(data) {\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS,\n data: data\n });\n }, function(err) {\n var error = stringifyError(err).replace(/^Error: /, \"\"), code = err.code;\n return respond({\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE,\n ack: constants_CONSTANTS.POST_MESSAGE_ACK.ERROR,\n error: error,\n code: code\n });\n }) ]).then(lib_util_noop).catch(function(err) {\n if (options && options.handleError) return options.handleError(err);\n throw err;\n });\n }, _RECEIVE_MESSAGE_TYPE[constants_CONSTANTS.POST_MESSAGE_TYPE.RESPONSE] = function(source, origin, message) {\n if (!isResponseListenerErrored(message.hash)) {\n var pattern, options = getResponseListener(message.hash);\n if (!options) throw new Error(\"No handler found for post message response for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() : pattern.toString()));\n deleteResponseListener(message.hash);\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.ERROR) {\n var err = new Error(message.error);\n message.code && (err.code = message.code);\n return options.respond(err, null);\n }\n if (message.ack === constants_CONSTANTS.POST_MESSAGE_ACK.SUCCESS) {\n var data = message.data || message.response;\n return options.respond(null, {\n source: source,\n origin: origin,\n data: data\n });\n }\n }\n }, _RECEIVE_MESSAGE_TYPE), receive__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n global.receivedMessages = global.receivedMessages || [];\n function receiveMessage(event) {\n if (window && !window.closed) {\n try {\n if (!event.source) return;\n } catch (err) {\n return;\n }\n var source = event.source, origin = event.origin, message = function(message) {\n var item, parsedMessage = void 0;\n try {\n parsedMessage = (item = message, JSON.parse(item));\n } catch (err) {\n return;\n }\n if (parsedMessage && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && (parsedMessage = parsedMessage[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT]) && \"object\" === (void 0 === parsedMessage ? \"undefined\" : receive__typeof(parsedMessage)) && null !== parsedMessage && parsedMessage.type && \"string\" == typeof parsedMessage.type && RECEIVE_MESSAGE_TYPES[parsedMessage.type]) return parsedMessage;\n }(event.data);\n if (message) {\n if (!message.sourceDomain || \"string\" != typeof message.sourceDomain) throw new Error(\"Expected message to have sourceDomain\");\n 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.MOCK_PROTOCOL) && 0 !== message.sourceDomain.indexOf(constants_CONSTANTS.FILE_PROTOCOL) || (origin = message.sourceDomain);\n if (-1 === global.receivedMessages.indexOf(message.id)) {\n global.receivedMessages.push(message.id);\n if (!isWindowClosed(source) || message.fireAndForget) {\n message.data && (message.data = function(source, origin, obj) {\n return replaceObject({\n obj: message.data\n }, function(item) {\n if (\"object\" === (void 0 === item ? \"undefined\" : serialize__typeof(item)) && null !== item) return isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.METHOD) ? deserializeMethod(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ERROR) ? function(source, origin, obj) {\n var err = new Error(obj.__message__);\n obj.__code__ && (err.code = obj.__code__);\n return err;\n }(0, 0, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.PROMISE) ? function(source, origin, prom) {\n return window.Promise ? new window.Promise(function(resolve, reject) {\n return deserializeMethod(source, origin, prom.__then__)(resolve, reject);\n }) : deserializeZalgoPromise(source, origin, prom);\n }(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.ZALGO_PROMISE) ? deserializeZalgoPromise(source, origin, item) : isSerialized(item, constants_CONSTANTS.SERIALIZATION_TYPES.REGEX) ? function(source, origin, item) {\n return new RegExp(item.__source__);\n }(0, 0, item) : void 0;\n }).obj;\n }(source, origin));\n RECEIVE_MESSAGE_TYPES[message.type](source, origin, message);\n }\n }\n }\n }\n }\n function messageListener(event) {\n try {\n event.source;\n } catch (err) {\n return;\n }\n receiveMessage({\n source: event.source || event.sourceElement,\n origin: event.origin || event.originalEvent && event.originalEvent.origin,\n data: event.data\n });\n }\n global.receiveMessage = receiveMessage;\n global.requestPromises = global.requestPromises || new weakmap_CrossDomainSafeWeakMap();\n function request(options) {\n return promise_ZalgoPromise.try(function() {\n if (!options.name) throw new Error(\"Expected options.name\");\n var name = options.name, targetWindow = void 0, domain = void 0;\n if (\"string\" == typeof options.window) {\n var el = document.getElementById(options.window);\n if (!el) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be a valid element id\");\n if (\"iframe\" !== el.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (!el.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n targetWindow = el.contentWindow;\n } else if (options.window instanceof HTMLIFrameElement) {\n if (\"iframe\" !== options.window.tagName.toLowerCase()) throw new Error(\"Expected options.window \" + Object.prototype.toString.call(options.window) + \" to be an iframe\");\n if (options.window && !options.window.contentWindow) throw new Error(\"Iframe must have contentWindow. Make sure it has a src attribute and is in the DOM.\");\n options.window && options.window.contentWindow && (targetWindow = options.window.contentWindow);\n } else targetWindow = options.window;\n if (!targetWindow) throw new Error(\"Expected options.window to be a window object, iframe, or iframe element id.\");\n var win = targetWindow;\n domain = options.domain || constants_CONSTANTS.WILDCARD;\n var hash = options.name + \"_\" + uniqueID();\n if (isWindowClosed(win)) throw new Error(\"Target window is closed\");\n var hasResult = !1, requestPromises = global.requestPromises.get(win);\n if (!requestPromises) {\n requestPromises = [];\n global.requestPromises.set(win, requestPromises);\n }\n var requestPromise = promise_ZalgoPromise.try(function() {\n if (function(parent, child) {\n var actualParent = getAncestor(child);\n if (actualParent) return actualParent === parent;\n if (child === parent) return !1;\n if (function() {\n var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window;\n try {\n if (win.top) return win.top;\n } catch (err) {}\n if (getParent(win) === win) return win;\n try {\n if (isAncestorParent(window, win) && window.top) return window.top;\n } catch (err) {}\n try {\n if (isAncestorParent(win, window) && window.top) return window.top;\n } catch (err) {}\n for (var _i7 = 0, _getAllChildFrames4 = function getAllChildFrames(win) {\n for (var result = [], _i3 = 0, _getFrames2 = getFrames(win), _length2 = null == _getFrames2 ? 0 : _getFrames2.length; _i3 < _length2; _i3++) {\n var frame = _getFrames2[_i3];\n result.push(frame);\n for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame), _length4 = null == _getAllChildFrames2 ? 0 : _getAllChildFrames2.length; _i5 < _length4; _i5++) {\n var childFrame = _getAllChildFrames2[_i5];\n result.push(childFrame);\n }\n }\n return result;\n }(win), _length6 = null == _getAllChildFrames4 ? 0 : _getAllChildFrames4.length; _i7 < _length6; _i7++) {\n var frame = _getAllChildFrames4[_i7];\n try {\n if (frame.top) return frame.top;\n } catch (err) {}\n if (getParent(frame) === frame) return frame;\n }\n }(child) === child) return !1;\n for (var _i15 = 0, _getFrames8 = getFrames(parent), _length14 = null == _getFrames8 ? 0 : _getFrames8.length; _i15 < _length14; _i15++) if (_getFrames8[_i15] === child) return !0;\n return !1;\n }(window, win)) return function(win) {\n var timeout = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 5e3, name = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : \"Window\", promise = global.readyPromises.get(win);\n if (promise) return promise;\n promise = new promise_ZalgoPromise();\n global.readyPromises.set(win, promise);\n -1 !== timeout && setTimeout(function() {\n return promise.reject(new Error(name + \" did not load after \" + timeout + \"ms\"));\n }, timeout);\n return promise;\n }(win, options.timeout || CONFIG.CHILD_WINDOW_TIMEOUT);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain) && !origin) return sayHello(win);\n }).then(function() {\n var origin = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).origin;\n if (util_isRegex(domain)) {\n if (!matchDomain(domain, origin)) throw new Error(\"Remote window domain \" + origin + \" does not match regex: \" + domain.toString());\n domain = origin;\n }\n if (\"string\" != typeof domain && !Array.isArray(domain)) throw new TypeError(\"Expected domain to be a string or array\");\n var actualDomain = domain;\n return new promise_ZalgoPromise(function(resolve, reject) {\n var responseListener = void 0;\n options.fireAndForget || function(hash, listener) {\n global.responseListeners[hash] = listener;\n }(hash, responseListener = {\n name: name,\n window: win,\n domain: actualDomain,\n respond: function(err, result) {\n if (!err) {\n hasResult = !0;\n requestPromises.splice(requestPromises.indexOf(requestPromise, 1));\n }\n err ? reject(err) : resolve(result);\n }\n });\n sendMessage(win, {\n type: constants_CONSTANTS.POST_MESSAGE_TYPE.REQUEST,\n hash: hash,\n name: name,\n data: options.data,\n fireAndForget: options.fireAndForget\n }, actualDomain).catch(reject);\n if (options.fireAndForget) return resolve();\n var ackTimeout = CONFIG.ACK_TIMEOUT, resTimeout = options.timeout || CONFIG.RES_TIMEOUT, cycleTime = 100;\n setTimeout(function cycle() {\n if (!hasResult) {\n if (isWindowClosed(win)) return responseListener.ack ? reject(new Error(\"Window closed for \" + name + \" before response\")) : reject(new Error(\"Window closed for \" + name + \" before ack\"));\n ackTimeout = Math.max(ackTimeout - cycleTime, 0);\n -1 !== resTimeout && (resTimeout = Math.max(resTimeout - cycleTime, 0));\n if (responseListener.ack) {\n if (-1 === resTimeout) return;\n cycleTime = Math.min(resTimeout, 2e3);\n } else {\n if (0 === ackTimeout) return reject(new Error(\"No ack for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + CONFIG.ACK_TIMEOUT + \"ms\"));\n if (0 === resTimeout) return reject(new Error(\"No response for postMessage \" + name + \" in \" + utils_getDomain() + \" in \" + (options.timeout || CONFIG.RES_TIMEOUT) + \"ms\"));\n }\n setTimeout(cycle, cycleTime);\n }\n }, cycleTime);\n });\n });\n requestPromise.catch(function() {\n !function(hash) {\n global.erroredResponseListeners[hash] = !0;\n }(hash);\n deleteResponseListener(hash);\n });\n requestPromises.push(requestPromise);\n return requestPromise;\n });\n }\n function _send(window, name, data, options) {\n (options = options || {}).window = window;\n options.name = name;\n options.data = data;\n return request(options);\n }\n function sendToParent(name, data, options) {\n var win = getAncestor();\n return win ? _send(win, name, data, options) : new promise_ZalgoPromise(function(resolve, reject) {\n return reject(new Error(\"Window does not have a parent\"));\n });\n }\n function client() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (!options.window) throw new Error(\"Expected options.window\");\n var win = options.window;\n return {\n send: function(name, data) {\n return _send(win, name, data, options);\n }\n };\n }\n global.send = _send;\n var server__typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n function listen(options) {\n if (!options.name) throw new Error(\"Expected options.name\");\n if (!options.handler) throw new Error(\"Expected options.handler\");\n var name = options.name, win = options.window, domain = options.domain, listenerOptions = {\n handler: options.handler,\n handleError: options.errorHandler || function(err) {\n throw err;\n },\n window: win,\n domain: domain || constants_CONSTANTS.WILDCARD,\n name: name\n }, requestListener = function addRequestListener(_ref6, listener) {\n var name = _ref6.name, win = _ref6.win, domain = _ref6.domain;\n if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n if (Array.isArray(win)) {\n for (var listenersCollection = [], _i6 = 0, _win2 = win, _length6 = null == _win2 ? 0 : _win2.length; _i6 < _length6; _i6++) {\n var item = _win2[_i6];\n listenersCollection.push(addRequestListener({\n name: name,\n domain: domain,\n win: item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i8 = 0, _length8 = null == listenersCollection ? 0 : listenersCollection.length; _i8 < _length8; _i8++) listenersCollection[_i8].cancel();\n }\n };\n }\n if (Array.isArray(domain)) {\n for (var _listenersCollection = [], _i10 = 0, _domain2 = domain, _length10 = null == _domain2 ? 0 : _domain2.length; _i10 < _length10; _i10++) {\n var _item = _domain2[_i10];\n _listenersCollection.push(addRequestListener({\n name: name,\n win: win,\n domain: _item\n }, listener));\n }\n return {\n cancel: function() {\n for (var _i12 = 0, _length12 = null == _listenersCollection ? 0 : _listenersCollection.length; _i12 < _length12; _i12++) _listenersCollection[_i12].cancel();\n }\n };\n }\n var existingListener = getRequestListener({\n name: name,\n win: win,\n domain: domain\n });\n win && win !== constants_CONSTANTS.WILDCARD || (win = global.WINDOW_WILDCARD);\n domain = domain || constants_CONSTANTS.WILDCARD;\n if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === global.WINDOW_WILDCARD ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n var requestListeners = global.requestListeners, nameListeners = requestListeners[name];\n if (!nameListeners) {\n nameListeners = new weakmap_CrossDomainSafeWeakMap();\n requestListeners[name] = nameListeners;\n }\n var winListeners = nameListeners.get(win);\n if (!winListeners) {\n winListeners = {};\n nameListeners.set(win, winListeners);\n }\n var strDomain = domain.toString(), regexListeners = winListeners[__DOMAIN_REGEX__], regexListener = void 0;\n if (util_isRegex(domain)) {\n if (!regexListeners) {\n regexListeners = [];\n winListeners[__DOMAIN_REGEX__] = regexListeners;\n }\n regexListener = {\n regex: domain,\n listener: listener\n };\n regexListeners.push(regexListener);\n } else winListeners[strDomain] = listener;\n return {\n cancel: function() {\n if (winListeners) {\n delete winListeners[strDomain];\n win && 0 === Object.keys(winListeners).length && nameListeners.delete(win);\n regexListener && regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n }\n }\n };\n }({\n name: name,\n win: win,\n domain: domain\n }, listenerOptions);\n if (options.once) {\n var _handler = listenerOptions.handler;\n listenerOptions.handler = once(function() {\n requestListener.cancel();\n return _handler.apply(this, arguments);\n });\n }\n if (listenerOptions.window && options.errorOnClose) var interval = function(method, time) {\n var timeout = void 0;\n timeout = setTimeout(function runInterval() {\n timeout = setTimeout(runInterval, 50);\n (function() {\n if (win && \"object\" === (void 0 === win ? \"undefined\" : server__typeof(win)) && isWindowClosed(win)) {\n interval.cancel();\n listenerOptions.handleError(new Error(\"Post message target window is closed\"));\n }\n }).call();\n }, 50);\n return {\n cancel: function() {\n clearTimeout(timeout);\n }\n };\n }();\n return {\n cancel: function() {\n requestListener.cancel();\n }\n };\n }\n function _on(name, options, handler) {\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n (options = options || {}).name = name;\n options.handler = handler || options.handler;\n return listen(options);\n }\n function server_once(name) {\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, handler = arguments[2];\n if (\"function\" == typeof options) {\n handler = options;\n options = {};\n }\n options = options || {};\n handler = handler || options.handler;\n var errorHandler = options.errorHandler, promise = new promise_ZalgoPromise(function(resolve, reject) {\n (options = options || {}).name = name;\n options.once = !0;\n options.handler = function(event) {\n resolve(event);\n if (handler) return handler(event);\n };\n options.errorHandler = function(err) {\n reject(err);\n if (errorHandler) return errorHandler(err);\n };\n }), onceListener = listen(options);\n promise.cancel = onceListener.cancel;\n return promise;\n }\n function server_listener() {\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return {\n on: function(name, handler) {\n return _on(name, options, handler);\n }\n };\n }\n global.on = _on;\n function disable() {\n delete window[constants_CONSTANTS.WINDOW_PROPS.POSTROBOT];\n window.removeEventListener(\"message\", messageListener);\n }\n var public_parent = getAncestor();\n function cleanUpWindow(win) {\n var requestPromises = global.requestPromises.get(win);\n if (requestPromises) for (var _i2 = 0, _length2 = null == requestPromises ? 0 : requestPromises.length; _i2 < _length2; _i2++) requestPromises[_i2].reject(new Error(\"No response from window - cleaned up\"));\n global.popupWindowsByWin && global.popupWindowsByWin.delete(win);\n global.remoteWindows && global.remoteWindows.delete(win);\n global.requestPromises.delete(win);\n global.methods.delete(win);\n global.readyPromises.delete(win);\n }\n var bridge = null;\n function init() {\n if (!global.initialized) {\n handler = messageListener, (obj = window).addEventListener ? obj.addEventListener(\"message\", handler) : obj.attachEvent(\"onmessage\", handler);\n !function() {\n handler = function(_ref3) {\n var source = _ref3.source, origin = _ref3.origin, promise = global.readyPromises.get(source) || new promise_ZalgoPromise();\n promise.resolve({\n origin: origin\n });\n global.readyPromises.set(source, promise);\n }, global.on(constants_CONSTANTS.POST_MESSAGE_NAMES.HELLO, {\n domain: constants_CONSTANTS.WILDCARD\n }, function(_ref) {\n var source = _ref.source, origin = _ref.origin;\n return handler({\n source: source,\n origin: origin\n });\n });\n var handler, parent = getAncestor();\n parent && sayHello(parent).catch(lib_util_noop);\n }();\n listenForMethods({\n on: _on,\n send: _send\n });\n }\n var obj, handler;\n global.initialized = !0;\n }\n init();\n __webpack_require__.d(__webpack_exports__, \"cleanUpWindow\", function() {\n return cleanUpWindow;\n });\n __webpack_require__.d(__webpack_exports__, \"Promise\", function() {\n return promise_ZalgoPromise;\n });\n __webpack_require__.d(__webpack_exports__, \"bridge\", function() {\n return bridge;\n });\n __webpack_require__.d(__webpack_exports__, \"init\", function() {\n return init;\n });\n __webpack_require__.d(__webpack_exports__, \"parent\", function() {\n return public_parent;\n });\n __webpack_require__.d(__webpack_exports__, \"send\", function() {\n return _send;\n });\n __webpack_require__.d(__webpack_exports__, \"request\", function() {\n return request;\n });\n __webpack_require__.d(__webpack_exports__, \"sendToParent\", function() {\n return sendToParent;\n });\n __webpack_require__.d(__webpack_exports__, \"client\", function() {\n return client;\n });\n __webpack_require__.d(__webpack_exports__, \"on\", function() {\n return _on;\n });\n __webpack_require__.d(__webpack_exports__, \"listen\", function() {\n return listen;\n });\n __webpack_require__.d(__webpack_exports__, \"once\", function() {\n return server_once;\n });\n __webpack_require__.d(__webpack_exports__, \"listener\", function() {\n return server_listener;\n });\n __webpack_require__.d(__webpack_exports__, \"CONFIG\", function() {\n return CONFIG;\n });\n __webpack_require__.d(__webpack_exports__, \"CONSTANTS\", function() {\n return constants_CONSTANTS;\n });\n __webpack_require__.d(__webpack_exports__, \"disable\", function() {\n return disable;\n });\n __webpack_exports__.default = interface_namespaceObject;\n }\n });\n});\n//# sourceMappingURL=post-robot.js.map","/* @flow */\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = require('./dist/post-robot');\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports.default = module.exports;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IAssetSidebarInitData, setAssetDto } from \"./types\";\nimport Asset from './stack/api/asset'\n\n/** Class representing an asset Extension from Contentstack UI. */\n\nclass AssetSidebarWidget {\n /**\n * @hideconstructor\n */\n\n currentAsset: { [key: string]: any };\n _emitter: EventEmitter;\n _connection: any;\n _changedData?: { [key: string]: any };\n\n constructor(\n initializationData: IAssetSidebarInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * Gets the content type of the current asset.\n * @type {Object}\n */\n\n this.currentAsset = initializationData.data.currentAsset;\n\n this._emitter = emitter;\n\n this._connection = connection;\n\n const thisAsset = this;\n\n this._emitter.on(\n \"assetSave\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset.currentAsset = event.data;\n }\n );\n\n this._emitter.on(\n \"assetChange\",\n (event: { data: { [key: string]: any } }) => {\n thisAsset._changedData = event.data;\n }\n );\n\n this.getData = this.getData.bind(this);\n this.setData = this.setData.bind(this);\n this.syncAsset = this.syncAsset.bind(this);\n this.updateWidth = this.updateWidth.bind(this);\n this.onSave = this.onSave.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onPublish = this.onPublish.bind(this);\n this.onUnPublish = this.onUnPublish.bind(this);\n this.replaceAsset = this.replaceAsset.bind(this);\n }\n\n getData() {\n return this.currentAsset;\n }\n\n async setData(asset: Partial): Promise {\n return this._connection.sendToParent(\"setData\", asset);\n }\n\n async syncAsset(): Promise {\n return this._connection.sendToParent(\"syncAsset\");\n }\n\n async updateWidth(width: number): Promise {\n if (typeof width !== \"number\") {\n throw new Error(\"Width must be a number\");\n }\n return this._connection.sendToParent(\"updateAssetSidebarWidth\", width);\n }\n\n async replaceAsset(file: File): Promise {\n const asset = Asset(this._emitter);\n return asset.handleUpload([file], 'replace');\n }\n\n /**\n * This function executes the callback function every time an asset is saved.\n * @param {function} callback The function to be called when an asset is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetSave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an asset is edited/changed.\n */\n\n onChange(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetChange\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an asset has been published with the respective payload.\n * @param {function} callback The function to be called when an asset is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an asset has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an asset is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const assetObj = this;\n if (callback && typeof callback === \"function\") {\n assetObj._emitter.on(\"assetUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default AssetSidebarWidget;\n","import {\n IConfigCallback,\n IContainerMetaData,\n IOnFunction,\n IPluginMetaData,\n IRteParam,\n IConfig\n} from \"./types\";\n\nexport class RTEPlugin {\n private pluginMetaData: IPluginMetaData = {\n registry: {\n title: \"\",\n toolbar: {\n inMainToolbar: true,\n inHoveringToolbar: true,\n },\n isContentstackElement: true,\n },\n meta: {\n id: \"\",\n elementType: null,\n editorCallbacks: {},\n isDependent: false,\n },\n };\n private isContainer: boolean = false;\n private containerMetaData: IContainerMetaData = {\n registry: {\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n id: this.pluginMetaData.meta.id,\n dependentPlugins: [],\n },\n };\n\n constructor(id: string, private configCallback: IConfigCallback) {\n this.pluginMetaData.meta.id = id;\n }\n\n addPlugins = (...plugins: RTEPlugin[]) => {\n // convert to dropdown if not already\n if (this.pluginMetaData.meta.isDependent)\n throw Error(\"cannot have another container inside\");\n\n this.isContainer = true;\n\n // clean pluginMetaData\n\n plugins.forEach((plugin) => {\n // make sure that this plugin is not another dropdown\n if (plugin.isContainer) {\n throw Error(\"cannot have another container inside\");\n }\n\n plugin.pluginMetaData.registry.category =\n this.pluginMetaData.meta.id;\n this.containerMetaData.meta.dependentPlugins.push(plugin);\n plugin.pluginMetaData.meta.isDependent = true;\n });\n };\n\n on = (\n type: Type,\n callback: IOnFunction[Type]\n ) => {\n switch (type) {\n case \"beforeChildRender\": {\n this.pluginMetaData.registry.beforeChildrenRender = callback;\n break;\n }\n\n case \"beforeRender\": {\n this.pluginMetaData.registry.beforeElementRender = callback;\n break;\n }\n\n case \"exec\": {\n this.pluginMetaData.registry.handleMouseDown = callback;\n break;\n }\n\n case \"keydown\": {\n this.pluginMetaData.meta.editorCallbacks[\"keydown\"] = callback;\n break;\n }\n\n case \"paste\":\n case \"deleteBackward\":\n case \"deleteForward\":\n case \"insertBreak\":\n case \"normalize\":\n default: {\n this.pluginMetaData.meta.editorCallbacks[type] = callback;\n break;\n }\n }\n };\n\n get = async (rte: IRteParam | void) => {\n const config = await this.configCallback(rte);\n\n Object.entries(config).forEach(\n //@ts-ignore\n ([key, value]: [Key, any]) => {\n switch (key) {\n case \"title\": {\n this.pluginMetaData.registry.title = value;\n break;\n }\n case \"icon\": {\n this.pluginMetaData.registry.iconName = value;\n this.containerMetaData.registry.iconName = value;\n break;\n }\n case \"display\": {\n // make every other options false\n this.pluginMetaData.registry.toolbar = {\n inHoveringToolbar: false,\n inMainToolbar: false,\n };\n\n if (typeof value === \"string\") {\n switch (value) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach((display) => {\n switch (display) {\n case \"toolbar\": {\n this.pluginMetaData.registry.toolbar.inMainToolbar =\n true;\n break;\n }\n case \"hoveringToolbar\": {\n this.pluginMetaData.registry.toolbar.inHoveringToolbar =\n true;\n break;\n }\n }\n });\n }\n break;\n }\n\n case \"hoveringToolbarOptions\": {\n this.pluginMetaData.registry.hoveringToolbarOptions = {\n autoWidth: value?.autoWidth\n }\n break;\n }\n\n case \"elementType\": {\n const isInline = (\n typeof value === 'string' && value === 'inline' ||\n Array.isArray(value) && value.includes('inline')\n )\n if(isInline) {\n let dndOptions = this.pluginMetaData['registry']['dndOptions'];\n if(!dndOptions) {\n this.pluginMetaData['registry']['dndOptions'] = {};\n dndOptions = this.pluginMetaData['registry']['dndOptions']\n }\n dndOptions['DisableDND'] = true;\n dndOptions['DisableSelectionHalo'] = true;\n }\n this.pluginMetaData.meta.elementType = value;\n break;\n }\n\n case \"render\": {\n this.pluginMetaData.registry.Component = value;\n break;\n }\n\n case \"shouldOverride\" : {\n this.pluginMetaData.registry.shouldOverride = value\n }\n }\n }\n );\n\n const containerMeta = this.containerMetaData.meta;\n this.containerMetaData = {\n registry: {\n ...this.containerMetaData.registry,\n id: this.pluginMetaData.meta.id,\n title: this.pluginMetaData.registry.title,\n rootCategory: false,\n toolbar: {\n ...this.pluginMetaData.registry.toolbar,\n },\n },\n meta: {\n ...containerMeta,\n id: this.pluginMetaData.meta.id,\n },\n };\n\n return this.isContainer ? this.containerMetaData : this.pluginMetaData;\n };\n}\n\nexport const rtePluginInitializer = (\n id: string,\n configCallback: IConfigCallback\n) => {\n if (!(id && configCallback)) throw Error('Please provide value \"id\" and \"configCallback\"');\n\n return new RTEPlugin(id, configCallback);\n};\n","import Stack from \"../stack\";\nimport { IInstallationData, ValidationOptions } from \"../types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport { onData, onError } from \"../utils/utils\";\n\nexport declare interface AppConfigAdditionalData {\n currentBranch: string;\n}\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nexport class AppConfig {\n _data: { [key: string]: any };\n _connection: any;\n _emitter: EventEmitter;\n private _additionalData: AppConfigAdditionalData;\n\n constructor(\n data: { [key: string]: any },\n connection: any,\n emitter: EventEmitter,\n additionalData: AppConfigAdditionalData\n ) {\n this._data = data;\n this._connection = connection;\n this._emitter = emitter;\n\n this.setValidity = this.setValidity.bind(this);\n this._additionalData = additionalData;\n }\n\n stack = () => {\n return new Stack(this._data.stack, this._connection, {\n currentBranch: this._additionalData.currentBranch,\n });\n };\n\n setInstallationData = (\n installationData: IInstallationData\n ): Promise<{ [key: string]: any }> => {\n return this._connection\n .sendToParent(\"setInstallationData\", installationData)\n .then(onData)\n .catch(onError);\n };\n\n getInstallationData = (): Promise => {\n return this._connection\n .sendToParent(\"getInstallationData\")\n .then(onData)\n .catch(onError);\n };\n\n /**\n * Set the validation state of the app. If the validation is false, the Contentstack App Config\n * will not allow to save the configuration. The message will be displayed if provided.\n * @param isValid set the validation state of the app\n * @param options additional options to be sent to the parent\n * @returns returns a promise with the data sent from the parent\n */\n async setValidity(\n isValid: boolean,\n options?: ValidationOptions\n ): Promise> {\n if (typeof isValid !== \"boolean\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.isValidTypeBoolean\n )\n );\n }\n\n if (options?.message && typeof options.message !== \"string\") {\n throw new TypeError(\n generateErrorMessages(\n ERROR_MESSAGES.configPage.setValidity.messageTypeString\n )\n );\n }\n\n return this._connection\n .sendToParent(\"setValidity\", { isValid, options })\n .then(onData)\n .catch(onError);\n }\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\n\nimport Field from \"./field\";\nimport {\n ICurrentContentType,\n IFieldInitData,\n IFieldModifierLocationInitData,\n IRTELocationInitData,\n ISidebarInitData,\n} from \"./types\";\nimport {\n IEntryOptions,\n IGetFieldOptions,\n IOnEntryChangeCallback,\n} from \"./types/entry.types\";\n\n/** Class representing an entry from Contentstack UI. Not available for Dashboard Widget extension. */\n\nclass Entry {\n /**\n * @hideconstructor\n */\n\n content_type: ICurrentContentType;\n _data: { [key: string]: any };\n locale: string;\n _connection: any;\n _emitter: EventEmitter;\n _changedData?: { [key: string]: any };\n _options: IEntryOptions;\n\n constructor(\n initializationData:\n | IFieldInitData\n | ISidebarInitData\n | IRTELocationInitData\n | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter,\n options?: IEntryOptions\n ) {\n /**\n * Gets the content type of the current entry.\n * @type {Object}\n */\n this.content_type = initializationData.data.content_type;\n\n this._data = initializationData.data.entry;\n\n if (initializationData.data.changedData) {\n this._changedData = initializationData.data.changedData;\n }\n\n /**\n * Gets the locale of the current entry.\n * @type {string}\n */\n this.locale = initializationData.data.locale;\n\n this._connection = connection;\n\n this._emitter = emitter;\n\n this._options = options || {};\n\n const thisEntry = this;\n\n this._emitter.on(\n \"entrySave\",\n (event: { data: { [key: string]: any } }) => {\n thisEntry._data = event.data;\n }\n );\n\n this._emitter.on(\n \"entryChange\",\n (event: { data: { [key: string]: any } }) => {\n console.log(\"rte listened to the change\", event.data);\n thisEntry._changedData = event.data;\n }\n );\n }\n\n /**\n * Gets data of the current entry.\n * @return {Object} Returns entry data.\n */\n\n getData() {\n return this._data;\n }\n\n /**\n * Gets the field object for the saved data, which allows you to interact with the field.\n * This object will have all the same methods and properties of extension.field.\n * Note: For fields initialized using the getFields function, the setData function currently works only for the following fields: as single_line, multi_line, RTE, markdown, select, number, boolean, date, link, and extension of data type text, number, boolean, and date.\n * @example\n * var field = entry.getField('field_uid');\n * var fieldSchema = field.schema;\n * var fieldUid = field.uid;\n * var fieldData = field.getData();\n * @param {string} uid Unique ID of the field\n * @param {boolean} options.useUnsavedSchema If set to true, the field will get the unsaved field\n * @return {Object} Field object\n */\n\n getField(uid: string, options?: IGetFieldOptions): Field {\n const { useUnsavedSchema = false } = options || {};\n const { FieldInstance = Field } = this._options._internalFlags || {};\n\n const path = uid.split(\".\");\n let value = useUnsavedSchema\n ? this._changedData || this._data\n : this._data;\n let schema = this.content_type.schema;\n\n const isDataEmpty = Object.keys(value).length === 0;\n\n if (isDataEmpty) {\n throw new Error(\n \"The data is unsaved. Save the data before requesting the field.\"\n );\n }\n\n try {\n let skipNext = false;\n let skipNextTwo = false;\n path.forEach((key: string | number, index: number) => {\n if (skipNext) {\n if (skipNextTwo) {\n skipNextTwo = false;\n } else {\n skipNext = false;\n }\n return;\n }\n\n schema = schema.find((x: { uid: any }) => x.uid === key);\n if (!schema) {\n throw Error(\"schema not found\");\n }\n\n value = value[key];\n\n if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === false &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n } else if (\n (schema.data_type === \"group\" ||\n schema.data_type === \"global_field\") &&\n schema.multiple === true &&\n path.length !== index + 1\n ) {\n schema = schema.schema;\n value = value[path[index + 1]];\n skipNext = true;\n } else if (\n schema.data_type === \"blocks\" &&\n path.length !== index + 1\n ) {\n const blockId = Object.keys(value[path[index + 1]])[0];\n schema = schema.blocks.find(\n (block: { uid: string }) => block.uid === blockId\n );\n if (path.length === index + 2) {\n // complete block value with uid\n value = value[path[index + 1]];\n } else {\n // block value without uid\n value = value[path[index + 1]][blockId];\n schema = schema.schema;\n }\n\n skipNext = true;\n skipNextTwo = true;\n }\n });\n } catch (e) {\n throw Error(\"Invalid uid, Field not found\");\n }\n const fieldIntilaizationDataObject = {\n data: {\n uid,\n value,\n schema,\n data_type: schema.data_type,\n },\n };\n\n //@ts-ignore\n const fieldObject = new FieldInstance(\n fieldIntilaizationDataObject,\n this._connection,\n this._emitter\n );\n delete fieldObject.onChange;\n return fieldObject;\n }\n\n /**\n * This function executes the callback function every time an entry is saved.\n * @param {function} callback The function to be called when an entry is saved.\n */\n\n onSave(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entrySave\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The field.onChange() function is called when another extension programmatically changes the data of the current extension field using the field.setData() function. This function is only available for extension fields that support the following data types: text, number, boolean, or date.\n * @param {function} callback The function to be called when an entry is edited/changed.\n */\n\n onChange(callback: IOnEntryChangeCallback) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\n \"entryChange\",\n (event: { data: any; resolvedData: Record }) => {\n callback(event.data, event.resolvedData);\n }\n );\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onPublish() function executes the callback function every time an entry has been published with the respective payload.\n * @param {function} callback The function to be called when an entry is published.\n */\n\n onPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n\n /**\n * The onUnPublish() function executes the callback function every time an entry has been unpublished with the respective payload.\n * @param {function} callback The function to be called when an entry is un published.\n */\n\n onUnPublish(callback: (arg0: any) => void) {\n const entryObj = this;\n if (callback && typeof callback === \"function\") {\n entryObj._emitter.on(\"entryUnPublish\", (event: { data: any }) => {\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\nexport default Entry;\n","import postRobot from \"post-robot\";\nimport EventEmitter from \"wolfy87-eventemitter\";\n\nimport AssetSidebarWidget from \"./AssetSidebarWidget\";\nimport { IRTELocation, IRTEPluginInitializer } from \"./RTE/types\";\nimport { AppConfig } from \"./appConfig\";\nimport Entry from \"./entry\";\nimport Field from \"./field\";\nimport FieldModifierLocationEntry from \"./fieldModifierLocation/entry\";\nimport FieldModifierLocationField from \"./fieldModifierLocation/field\";\nimport FieldModifierLocationFrame from \"./fieldModifierLocation/frame\";\nimport Metadata from \"./metadata\";\nimport Modal from \"./modal\";\nimport Stack from \"./stack\";\nimport Store from \"./store\";\nimport {\n IAppConfigInitData,\n IAppConfigWidget,\n IAssetSidebarInitData,\n ICustomField,\n IDashboardInitData,\n IDashboardWidget,\n IEntryFieldLocation,\n IEntryFieldLocationInitData,\n IFieldInitData,\n IFieldModifierLocation,\n IFieldModifierLocationInitData,\n IFullPageLocation,\n IFullPageLocationInitData,\n ILocation,\n IPageWidget,\n IRTEInitData,\n IRTELocationInitData,\n ISidebarInitData,\n ISidebarWidget,\n IUser,\n Manifest,\n Region,\n} from \"./types\";\nimport { AnyObject } from \"./types/common.types\";\nimport { formatAppRegion, onData, onError } from \"./utils/utils\";\nimport Window from \"./window\";\n\nconst emitter = new EventEmitter();\n\n/** Class representing an extension from Contentstack App Framework SDK. */\n\nclass Extension {\n /**\n * @hideconstructor\n */\n\n appUID: string;\n installationUID: string;\n currentUser: IUser;\n private type: ILocation;\n private config: AnyObject;\n postRobot: any;\n stack: Stack;\n store: Store;\n metadata: Metadata;\n locationUID: string;\n modal: Modal;\n readonly region: Region;\n version: number | null;\n\n location: {\n DashboardWidget: IDashboardWidget | null;\n SidebarWidget: ISidebarWidget | null;\n CustomField: ICustomField | null;\n RTEPlugin: IRTEPluginInitializer | null;\n RTELocation: IRTELocation | null;\n AppConfigWidget: IAppConfigWidget | null;\n FullscreenAppWidget: IPageWidget | null;\n AssetSidebarWidget: AssetSidebarWidget | null;\n EntryFieldLocation: IEntryFieldLocation | null;\n FullPage: IFullPageLocation | null;\n FieldModifierLocation: IFieldModifierLocation | null;\n };\n\n constructor(\n initData:\n | IRTEInitData\n | IDashboardInitData\n | IFieldInitData\n | ISidebarInitData\n | IAppConfigInitData\n | IAssetSidebarInitData\n | IFullPageLocationInitData\n | IEntryFieldLocationInitData\n | IFieldModifierLocationInitData\n ) {\n const initializationData = initData;\n\n this.postRobot = postRobot;\n\n /**\n * This value represents the current App's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.appUID = initializationData.data.app_id;\n\n /**\n * This value represents the current location's unique ID. One App may contain multiple locations\n * @type {string}\n */\n this.locationUID = initializationData.data.extension_uid;\n\n /**\n * This object holds details of the app initialization user.\n * @type {Object}\n */\n this.installationUID = initializationData.data.installation_uid;\n /**\n * This object holds details of the current user.\n * @type {Object}\n */\n this.currentUser = initializationData.data.user;\n\n /**\n * location of extension, \"RTE\" | \"FIELD\" | \"DASHBOARD\" | \"WIDGET\" | \"APP_CONFIG_WIDGET\" | \"FULL_SCREEN_WIDGET\".\n * @type {string}\n */\n this.type = initializationData.data.type;\n\n /**\n * Store to persist data for extension.\n * Note: Data is stored in the browser {@link external:localStorage} and will be lost if the {@link external:localStorage} is cleared in the browser.\n * @type {Store}\n */\n this.store = new Store(postRobot);\n\n /**\n * This method returns stack object which allows users to read and manipulate a range of objects in a stack.\n * @type {Stack}\n */\n this.stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n this.metadata = new Metadata(postRobot);\n\n this.config = initializationData.data.config ?? {};\n\n this.location = {\n DashboardWidget: null,\n CustomField: null,\n SidebarWidget: null,\n RTEPlugin: null,\n RTELocation: null,\n AppConfigWidget: null,\n FullscreenAppWidget: null,\n AssetSidebarWidget: null,\n FullPage: null,\n EntryFieldLocation: null,\n FieldModifierLocation: null,\n };\n\n window[\"postRobot\"] = postRobot;\n\n this.modal = new Modal();\n\n this.region = formatAppRegion(initializationData.data.region);\n\n this.version = initializationData.data.manifest?.version || null;\n\n const stack = new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n });\n\n switch (initializationData.data.type) {\n case \"DASHBOARD\": {\n this.location.DashboardWidget = {\n frame: new Window(\n postRobot,\n this.type as \"DASHBOARD\",\n emitter,\n initializationData.data.dashboard_width\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n case \"WIDGET\": {\n this.location.SidebarWidget = {\n entry: new Entry(\n initializationData as ISidebarInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"APP_CONFIG_WIDGET\": {\n this.location.AppConfigWidget = {\n installation: new AppConfig(\n initializationData,\n postRobot,\n emitter,\n {\n currentBranch:\n initializationData.data.currentBranch,\n }\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n };\n break;\n }\n\n case \"ASSET_SIDEBAR_WIDGET\": {\n this.location.AssetSidebarWidget = new AssetSidebarWidget(\n initializationData as IAssetSidebarInitData,\n postRobot,\n emitter\n );\n\n break;\n }\n\n case \"RTE\": {\n import(\"./RTE\").then(({ rtePluginInitializer }) => {\n this.location.RTEPlugin = rtePluginInitializer;\n this.location.RTELocation = {\n entry: new Entry(\n initializationData as IRTELocationInitData,\n postRobot,\n emitter\n ),\n };\n });\n break;\n }\n\n case \"FIELD_MODIFIER_LOCATION\":\n case \"ENTRY_FIELD_LOCATION\": {\n initializationData.data.self = true;\n this.location.FieldModifierLocation = {\n entry: new FieldModifierLocationEntry(\n initializationData as IFieldModifierLocationInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n field: new FieldModifierLocationField(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n frame: new FieldModifierLocationFrame(postRobot, emitter),\n };\n break;\n }\n\n case \"FULL_PAGE_LOCATION\": {\n this.location.FullPage = {\n stack: stack,\n };\n break;\n }\n\n case \"FIELD\":\n default: {\n initializationData.data.self = true;\n this.location.CustomField = {\n field: new Field(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n fieldConfig: initializationData.data.field_config,\n entry: new Entry(\n initializationData as IFieldInitData,\n postRobot,\n emitter\n ),\n stack: new Stack(initializationData.data.stack, postRobot, {\n currentBranch: initializationData.data.currentBranch,\n }),\n frame: new Window(postRobot, this.type as \"FIELD\", emitter),\n };\n\n break;\n }\n }\n\n try {\n //@ts-ignore\n postRobot.on(\"extensionEvent\", (event) => {\n if (event.data.name === \"entrySave\") {\n emitter.emitEvent(\"entrySave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryChange\") {\n emitter.emitEvent(\"entryChange\", [\n {\n data: event.data.data,\n resolvedData: event.data.otherData.resolvedData,\n },\n ]);\n }\n\n if (event.data.name === \"entryPublish\") {\n emitter.emitEvent(\"entryPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"entryUnPublish\") {\n emitter.emitEvent(\"entryUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetSave\") {\n emitter.emitEvent(\"assetSave\", [{ data: event.data.data }]);\n emitter.emitEvent(\"updateFields\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetChange\") {\n emitter.emitEvent(\"assetChange\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetPublish\") {\n emitter.emitEvent(\"assetPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"assetUnPublish\") {\n emitter.emitEvent(\"assetUnPublish\", [\n { data: event.data.data },\n ]);\n }\n\n if (event.data.name === \"dashboardResize\") {\n emitter.emitEvent(\"dashboardResize\", [\n { state: event.data.state },\n ]);\n }\n\n if (event.data.name === \"extensionFieldChange\") {\n emitter.emitEvent(\"extensionFieldChange\", [\n { data: event.data.data },\n ]);\n }\n });\n } catch (err) {\n console.error(\"extension Event\", err);\n }\n }\n\n pulse = (eventName: string, metadata: { [key: string]: any }) => {\n this.postRobot.sendToParent(\"analytics\", { eventName, metadata });\n };\n\n getConfig = (): Promise<{ [key: string]: any }> => {\n if (!this.installationUID) {\n return Promise.resolve(this.config);\n }\n return this.postRobot\n .sendToParent(\"getConfig\")\n .then(onData)\n .catch(onError);\n };\n\n getCurrentLocation = () => {\n return this.type;\n };\n\n /**\n * Conditionally retrieves and returns the app version if not present already\n * @returns version of the app currently running.\n */\n getAppVersion = async (): Promise => {\n if (this.version) {\n return Promise.resolve(this.version);\n }\n if (!this.installationUID) {\n return Promise.resolve(null);\n }\n const orgUid = this.stack._data.org_uid;\n const options = {\n uid: this.installationUID,\n action: \"getAppManifest\",\n headers: { organization_uid: orgUid },\n skip_api_key: true,\n };\n const app: Manifest = await this.postRobot\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n this.version = app.version;\n return this.version;\n };\n\n getCurrentRegion = () => {\n return this.region;\n };\n\n static initialize(version: string) {\n const meta = {\n sdkType: \"app-sdk\",\n };\n //@ts-ignore\n return postRobot.sendToParent(\"init\", { version, meta });\n }\n\n setReady() {\n return this.postRobot.sendToParent(\"ready\");\n }\n}\n\nexport default Extension;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"./types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(field: Field, value: { [key: string]: any }) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass Field {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n\n setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false } = {}) {\n return resolved ? this._resolvedData : this._data;\n }\n\n /**\n * Sets the focus for a field when an extension is being used. This method shows user presence and highlights the extension field that the user is currently accessing in Contentstack UI.\n * @return {Object} A promise object which is resolved when Contentstack UI returns an acknowledgement of the focused state.\n */\n setFocus() {\n return this._connection.sendToParent(\"focus\");\n }\n\n /**\n * This function is called when another extension programmatically changes data of this field using field.setData() function, only available for extension field, only support extensions of data type text, number, boolean or date.\n * @param {function} callback The function to be called when an entry is published.\n */\n onChange?(callback: (data: any) => any) {\n const fieldObj = this;\n if (callback && typeof callback === \"function\") {\n fieldObj._emitter.on(\"extensionFieldChange\", (event: any) => {\n this._data = event.data;\n this._resolvedData = event.data;\n callback(event.data);\n });\n } else {\n throw Error(\"Callback must be a function\");\n }\n }\n}\n\nexport default Field;\n","import Entry from \"../entry\";\nimport { IFieldModifierLocationInitData } from \"../types\";\nimport { IGetTagsOptions } from \"../types/entry.types\";\nimport generateErrorMessages, { ERROR_MESSAGES } from \"../utils/errorMessages\";\nimport Field from \"./field\";\n\nclass FieldModifierLocationEntry extends Entry {\n constructor(\n initializationData: IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n super(initializationData, connection, emitter, {\n _internalFlags: {\n FieldInstance: Field as any,\n },\n });\n }\n\n /**\n * Returns the value of the tags associated with the entry.\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n getTags(options?: IGetTagsOptions): Array {\n const { useUnsavedSchema = false } = options || {};\n\n if (useUnsavedSchema) {\n return this._changedData?.tags || this._data.tags;\n } else {\n return this._data.tags;\n }\n }\n\n /**\n * Sets the tags on the entry.\n * @param tags tags to be set on the entry\n * @returns {string[]} Returns an array of tags associated with the entry.\n */\n async setTags(tags: Array): Promise> {\n /**\n * Validate if the tags are array of strings\n * @param {Array} tags\n * @returns {boolean} Returns true if the tags are array of strings\n */\n function areTagsValid(tags: Array): tags is Array {\n return (\n Array.isArray(tags) &&\n tags.every((tag) => typeof tag === \"string\")\n );\n }\n\n if (tags === undefined) {\n throw new Error(generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldNotBeBlank));\n }\n\n if (!areTagsValid(tags)) {\n throw new Error(\n generateErrorMessages(ERROR_MESSAGES.entryField.entry.tagsShouldBeArrayOfStrings)\n );\n }\n\n await this._connection.sendToParent(\"setTags\", { tags });\n\n if (!this._changedData) {\n this._changedData = {};\n }\n\n this._changedData.tags = tags;\n\n return tags;\n }\n}\n\nexport default FieldModifierLocationEntry;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport { IFieldInitData, IFieldModifierLocationInitData } from \"../types\";\n\nconst excludedDataTypesForSetField = [\n \"file\",\n \"reference\",\n \"blocks\",\n \"group\",\n \"global_field\",\n];\n\nfunction separateResolvedData(\n field: FieldModifierLocationField,\n value: { [key: string]: any }\n) {\n let resolvedData = value;\n let unResolvedData = value;\n if (field.data_type === \"file\") {\n if (value) {\n resolvedData = value;\n unResolvedData =\n field.schema.multiple === true\n ? value.map((file: any) => file.uid)\n : value.uid;\n } else if (field.schema.multiple === true) {\n resolvedData = [];\n unResolvedData = [];\n }\n }\n return { resolvedData, unResolvedData };\n}\n\n/** Class representing a field from Contentstack UI. Only available for Custom Field extension */\nclass FieldModifierLocationField {\n /**\n * @hideconstructor\n */\n\n uid: string;\n data_type: string;\n schema: { [key: string]: any };\n _emitter: EventEmitter;\n _data: { [key: string]: any };\n _resolvedData: { [key: string]: any };\n _self: any;\n _connection: any;\n\n constructor(\n fieldDataObject: IFieldInitData | IFieldModifierLocationInitData,\n connection: any,\n emitter: EventEmitter\n ) {\n /**\n * The UID of the current field is defined in the content type of the entry.\n * @type {string}\n */\n this.uid = fieldDataObject.data.uid;\n /**\n * The data type of the current field is set using this method.\n * @type {string}\n */\n this.data_type = fieldDataObject.data.schema.data_type;\n /**\n * The schema of the current field (schema of fields such as ‘Single Line Textbox’, ‘Number’,\n * and so on) is set using this method.\n * @type {Object}\n */\n this.schema = fieldDataObject.data.schema;\n this._emitter = emitter;\n\n const separatedData = separateResolvedData(\n this,\n fieldDataObject.data.value\n );\n\n this._data = separatedData.unResolvedData;\n\n this._resolvedData = separatedData.resolvedData;\n\n this._connection = connection;\n\n this._self = fieldDataObject.data.self || false;\n\n const fieldObj = this;\n\n emitter.on(\"updateFields\", (event: any) => {\n const path = fieldObj.uid.split(\".\");\n let value = event.data;\n\n path.forEach((key) => {\n if (value) {\n value = value[key];\n }\n });\n\n if (fieldObj._data !== value) {\n fieldObj._data = value;\n }\n });\n }\n\n /**\n * Sets the data for the current field.\n * @param {Object|string|number} data Data to be set on the field\n * @return {external:Promise} A promise object which is resolved when data is set for a field. Note: The data set by this function will only be saved when user saves the entry.\n */\n async setData(data: any): Promise {\n const currentFieldObj = this;\n const dataObj = {\n data,\n uid: currentFieldObj.uid,\n self: currentFieldObj._self,\n };\n\n if (\n !currentFieldObj._self &&\n (excludedDataTypesForSetField.indexOf(currentFieldObj.data_type) !==\n -1 ||\n !currentFieldObj.data_type)\n ) {\n return Promise.reject(\n new Error(\"Cannot call set data for current field type\")\n );\n }\n\n return this._connection\n .sendToParent(\"setData\", dataObj)\n .then(() => {\n this._data = data;\n return Promise.resolve(currentFieldObj);\n })\n .catch((e: Error) => {\n return Promise.reject(e);\n });\n }\n\n /**\n * Gets the data of the current field\n * @param {Object} options Options object for get Data method.\n * @param {boolean} options.resolved If the resolved parameter is set to true for the File field, then the method will return a resolved asset object along with all the field metadata, e.g. 'field.getData({resolved:true})'.\n * @return {Object|string|number} Returns the field data.\n */\n getData({ resolved = false }: { resolved?: boolean } = {}): any {\n return resolved ? this._resolvedData : this._data;\n }\n}\n\nexport default FieldModifierLocationField;\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\nimport { ERROR_MESSAGES } from \"../utils/errorMessages\";\n\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass FieldModifierLocationFrame {\n /**\n * @hideconstructor\n */\n\n _connection: any;\n _autoResizingEnabled = false;\n _emitter: EventEmitter;\n _height?: number;\n _width?: number;\n\n private observer: MutationObserver | undefined;\n\n constructor(connection: any, emitter: EventEmitter) {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._emitter = emitter;\n\n this.updateDimension = this.updateDimension.bind(this);\n this.enableAutoResizing = this.enableAutoResizing.bind(this);\n this.disableAutoResizing = this.disableAutoResizing.bind(this);\n this.closeModal = this.closeModal.bind(this);\n\n /**\n * The auto resizing should be enabled by default.\n */\n this.enableAutoResizing();\n }\n\n /**\n * This method updates the extension height and width on Contentstack UI.\n * If the value is not passed, it will update the height and width of the\n * extension with the current height and width of the extension.\n * @param {string|number} height Desired height of the iframe window\n */\n async updateDimension(dimension?: { height?: number; width?: number }) {\n const { height, width } = dimension || {};\n\n if (height === undefined && width === undefined) {\n this._height = Math.ceil(\n document.documentElement.getBoundingClientRect().height\n );\n\n this._width = Math.ceil(\n document.documentElement.getBoundingClientRect().width\n );\n\n await this._connection.sendToParent(\"resize\", {\n height: this._height,\n width: this._width,\n });\n return;\n }\n\n const dimensionBody = {};\n\n if (height !== undefined && typeof height !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionHeightShouldBeNumber\n );\n }\n\n if (this._height !== height) {\n this._height = height;\n dimensionBody[\"height\"] = this._height;\n }\n\n if (width !== undefined && typeof width !== \"number\") {\n throw new Error(\n ERROR_MESSAGES.entryField.frame.dimensionWidthShouldBeNumber\n );\n }\n\n if (this._width !== width) {\n this._width = width;\n dimensionBody[\"width\"] = this._width;\n }\n\n if (Object.keys(dimensionBody).length !== 0) {\n await this._connection.sendToParent(\"resize\", dimensionBody);\n }\n }\n\n /**\n * Prevent user from accidently closing the app by clicking outside the frame\n * if the app is performing some active task.\n */\n async preventFrameClose(state: boolean) {\n await this._connection.sendToParent(\"preventFrameClose\", {\n state,\n });\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n enableAutoResizing(): FieldModifierLocationFrame {\n if (this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = true;\n\n this.observer = new MutationObserver(\n async () => await this.updateDimension()\n );\n\n const mutationObserverConfig = {\n attributes: true,\n childList: true,\n subtree: true,\n };\n\n this.observer.observe(window.document.body, mutationObserverConfig);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {FieldModifierLocationFrame}.\n */\n disableAutoResizing(): FieldModifierLocationFrame {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n this.observer?.disconnect();\n return this;\n }\n\n /**\n * It closes the app modal.\n * @returns {Promise}\n */\n async closeModal(): Promise {\n return await this._connection.sendToParent(\"closeModal\");\n }\n}\n\nexport default FieldModifierLocationFrame;\n","import Extension from './extension';\nimport postRobot from 'post-robot';\nimport { version } from '../package.json';\nimport { IDashboardInitData, IFieldInitData, ISidebarInitData } from './types.js';\n\n//@ts-ignore\npostRobot.CONFIG.LOG_LEVEL = 'error';\n\n/** Class to initialize the plugin on Contentstack UI. */\n/**\n * @hideconstructor\n */\n\nclass ContentstackAppSDK {\n /**\n * You need to first include Contentstack UI Extensions SDK and\n * Contentstack UI Stylesheet in you HTML file and then call\n * ContentstackUIExtension.init in the script tag.\n * @example\n * HTML\n * \n * \n * @example Custom Filed\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var value = extension.field.getData()\n * extension.field.setData(\"New Field Data\")\n * })\n * @example Custom Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var entry = extension.entry.getData()\n * })\n * @example Dashboard Widget\n * // javascript\n * ContentstackUIExtension.init().then(function (extension) {\n * var stack = extension.stack;\n * var stackData = stack.getData();\n * })\n * @return {external:Promise} A promise object which will be resolved with an instance of the {@link Extension} class which is instantiated using the data received from the Contentstack UI.\n */\n\n static _extension: Extension\n\n static init(): Promise {\n if (this._extension) { return Promise.resolve(this._extension); }\n return Extension.initialize(version).then((initializationData: ISidebarInitData | IDashboardInitData | IFieldInitData) => {\n this._extension = new Extension(initializationData);\n return Promise.resolve(this._extension);\n }).catch((e: Error) => Promise.reject(e));\n }\n\n\n /**\n * Version of Contentstack UI extension.\n * @type {string}\n */\n static get SDK_VERSION() {\n return version;\n }\n}\n\nexport default ContentstackAppSDK;\nmodule.exports = ContentstackAppSDK\n","import { AnyObject } from \"./types/common.types\";\n\nexport declare interface IMetadata {\n uid: string;\n type: \"asset\" | \"entry\";\n _content_type_uid?: string;\n locale?: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataCreateDto\n extends Omit, \"uid\"> {\n entity_uid: string;\n}\n\nexport declare interface IMetadataUpdateDto {\n uid: string;\n [key: string]: any;\n}\n\nexport declare interface IMetadataRetrieveDto {\n uid: string;\n}\n\nexport declare interface IMetadataDeleteDto {\n uid: string;\n}\n\nconst metadataTypes = {\n creteMetadata: \"createMetadata\",\n retrieveMetadata: \"getMetadata\",\n retrieveAllMetadata: \"getAllMetadata\",\n updateMetadata: \"updateMetadata\",\n deleteMetadata: \"deleteMetadata\",\n} as const;\n\nclass Metadata {\n constructor(private _connection: any) {}\n\n createMetaData(metadataConfig: IMetadataCreateDto) {\n const { entity_uid, type = \"asset\", ...otherMetaData } = metadataConfig;\n\n const data = {\n action: metadataTypes.creteMetadata,\n payload: {\n metadata: {\n entity_uid,\n type,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveMetaData(metadataConfig: IMetadataRetrieveDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.retrieveMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n retrieveAllMetaData(params: AnyObject = {}) {\n const data = {\n action: metadataTypes.retrieveAllMetadata,\n params,\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n updateMetaData(metadataConfig: IMetadataUpdateDto) {\n const { uid, ...otherMetaData } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.updateMetadata,\n payload: {\n metadata: {\n uid,\n ...otherMetaData,\n },\n },\n };\n\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n\n deleteMetaData(metadataConfig: IMetadataDeleteDto) {\n const { uid } = metadataConfig;\n\n const data = {\n uid,\n action: metadataTypes.deleteMetadata,\n payload: {\n metadata: {\n uid,\n },\n },\n };\n return this._connection.sendToParent(\"stackQuery\", data);\n }\n}\nexport default Metadata;\n","import { getPreferredBodyElement } from \"./utils/utils\";\n\nclass Modal {\n constructor() {\n if (!Object.prototype.hasOwnProperty.call(window, \"iframeRef\")) {\n const rootElement = getPreferredBodyElement(\n document?.body?.children\n );\n window[\"iframeRef\"] = rootElement;\n }\n }\n\n setBackgroundElement(element: HTMLElement) {\n window[\"iframeRef\"] = element;\n }\n}\n\nexport default Modal;\n","\nimport Base from '../base';\nimport { getReferences, language, environment } from '../../utils';\nimport postRobot from 'post-robot';\nimport { IAnyObject } from '../../../RTE/types';\n\nlet connection: any = {};\n\n/**\n * @summary Creates an instance of `Asset`.\n * @description An initializer is responsible for creating an Asset object.\n * @param {String} uid - uid of the asset\n * @example\n * let Asset = extension.stack.Asset('bltsomething123');\n * @returns {Asset}\n * @ignore\n */\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nclass Asset extends Base {\n getReferences: any\n environment: any\n constructor(uid) {\n super(uid);\n this.getReferences = getReferences;\n this.environment = environment;\n return this;\n }\n\n /**\n * @function\n * @name Stack#Asset.Query\n * @description This static method instantiates the query module for assets. To see the list of methods that can be used for querying assets, refer the {@link Query} module.\n * @example\n * let assetQuery = extension.stack.Asset.Query();\n * assetQuery.where(\"title\": \"main.js\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment\n });\n return entryQuery;\n }\n\n static module(plural = false) {\n return plural ? 'Assets' : 'Asset';\n }\n\n static get connection() {\n return connection;\n }\n\n /**\n * @function\n * @name Stack#Asset.getRteAssets\n * @description This static method retrieves comprehensive information on all assets uploaded through the Rich Text Editor field.\n * @return {external:Promise}\n */\n\n static getRteAssets() {\n return this.connection.sendToParent('stackQuery', { action: 'getRteAssets' }).then(onData).catch(onError);\n }\n\n /**\n * @function\n * @name Stack#Asset.getAssetsOfSpecificTypes\n * @description This static method retrieves assets that are either image or video files, based on the request query.\n * @param {String} assetType Type of asset to be received for e.g., ‘image/png’\n * @return {external:Promise}\n */\n static getAssetsOfSpecificTypes(assetType) {\n if (!assetType || typeof assetType !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.connection.sendToParent('stackQuery', { action: 'getAssetsOfSpecificTypes', asset_type: assetType }).then(onData).catch(onError);\n }\n\n\n /**\n * @name Stack#Asset#only\n * @function\n * @description This method is used to show the selected fields of the assets in the result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('title').fetch();\n * @example\n * Only with the field UID \n * extension.stack.Asset('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @name Stack#Asset#except\n * @function\n * @description This method is used to hide the selected fields of the assets in result set.\n * @param {String} [key=BASE] - Single field of an asset\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('title').fetch();\n * @example\n * .Except with the field UID \n * extension.stack.Asset('bltsomething123').except('BASE','title').fetch();\n * @example\n * .Except with the field UIDs(array) \n * extension.stack.Asset('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#Asset}\n */\n\n /**\n * @function\n * @name Stack#Asset#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.Asset('bltsomething123').environment('development').fetch()\n * @returns {Stack#Asset}\n */\n\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addParam\n @function\n @example extension.stack.Asset('uid').addParam('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n /**\n This method includes a query parameter in your query.\n @name Stack#Asset#addQuery\n @function\n @example extension.stack.Asset('uid').addQuery('key', 'value').fetch().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Stack#Asset}\n */\n\n\n /**\n This method will fetch the details of the entries and the assets in which the specified asset is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-asset|\n Asset References}\n @name Stack#Asset#getReferences\n @function\n @example extension.stack.Asset('uid').getReferences().then().catch();\n @return {external:Promise}\n */\n\n /**\n This method deletes an existing asset.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-asset|\n Delete Asset}\n @name Stack#Asset#delete\n @function\n @example extension.stack.Asset('uid').delete().then().catch();\n @return {external:Promise}\n */\n\n\n /**\n * @name Stack#Asset#publish\n * @function\n * @description This method allows you to publish the asset either immediately or schedule the publish for a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .publish(\n {\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n publish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('publishAsset', payload);\n }\n\n /**\n * @function\n * @name Stack#Asset#unpublish\n * @description This method will instantly unpublish the asset, and also give you the provision to automatically unpublish the asset at a later date/time.\n * @param {object} payload - Payload for the request.\n * @example extension.stack.Asset('bltsomething123')\n .unpublish({\n \"asset\": {\n \"locales\": [\n \"en-us\"\n ],\n \"environments\": [\n \"development\"\n ]\n },\n \"version\": 1,\n \"scheduled_at\": \"2019-02-08T18:30:00.000Z\"\n });\n * @return {external:Promise}\n */\n unpublish(payload) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('unpublishAsset', payload);\n }\n\n static async handleUpload(_files, type, options?: {parentFolderUid?: string, customUploadHandler?: IAnyObject}) {\n if (!_files || !_files.length) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n const files: File[] = [];\n Array.from(_files).forEach(_ => {\n // @ts-ignore\n const file = new File([_], _.name, { type: _.type });\n files.push(file);\n })\n const uid = new Date().getUTCMilliseconds();\n return (async function() {\n try {\n const uploadReadyListener = postRobot.on(\n `uploadReady_${uid}`,\n function () {\n window.parent.postMessage(\n {\n type: `upload_${uid}`,\n upload_type: type,\n files,\n parentFolderUid: options?.parentFolderUid,\n customUploadHandler: options?.customUploadHandler\n },\n \"*\"\n );\n\n uploadReadyListener.cancel();\n return Promise.resolve({});\n }\n );\n //@ts-ignore\n await postRobot.sendToParent(\"stackOptionsQuery\", {\n action: `upload_${uid}`,\n uid,\n });\n //@ts-ignore\n return postRobot.sendToParent(`upload_${uid}`, {});\n } catch(err) {\n return Promise.reject(err);\n }\n })();\n }\n\n static uploadAsset(files, options?: {parentFolderUid?: string}) {\n return Asset.handleUpload(files, 'upload', options);\n }\n}\n\nexport default (uiConnection) => {\n connection = uiConnection;\n return new Proxy(Asset, {\n apply(Target, thisArg, argumentsList) {\n //@ts-ignore\n return new Target(...argumentsList);\n }\n });\n};\n","//@ts-nocheck\n\nimport Query from './query';\nimport { transform, addParam } from '../utils';\n\n\nfunction onData(data: { data: any; }) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error: any) {\n return Promise.reject(error);\n}\n/**\n * This is Base class, it holds all the methods required for Modle instance,\n * eg ContentType('uid').delete() or Asset('uid').update({...})\n * @ignore\n */\nexport default class Base {\n\n\n uid: string\n _query: { [key: string]: any }\n only: any\n except: any\n addParam: any\n\n static connection: any\n static contentTypeUid: string\n\n constructor(uid: string) {\n if (!uid) { throw new Error('uid is required'); }\n this.uid = uid;\n this._query = {};\n this.only = transform('only');\n this.except = transform('except');\n this.addParam = addParam;\n }\n\n static Query() {\n //@ts-ignore\n return new Query(this.connection, this.module(true), this.contentTypeUid);\n }\n\n\n static create(payload: { [key: string]: any }) {\n const options = { payload, content_type_uid: this.contentTypeUid, action: `create${this.module()}` };\n return this.connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n update(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch(`update${this.constructor.module()}`, payload);\n }\n\n delete() {\n return this.fetch(`delete${this.constructor.module()}`);\n }\n\n fetch(action: string, payload?: { [key: string]: any }) {\n const options = {\n payload,\n content_type_uid: this.constructor.contentTypeUid,\n uid: this.uid,\n params: this._query,\n action: action || `get${this.constructor.module()}`\n };\n\n if (!payload) { delete options.payload; }\n if (!this.constructor.contentTypeUid) { delete options.content_type_uid; }\n return this.constructor.connection.sendToParent('stackQuery', options)\n .then(onData).catch(onError);\n }\n}\n","import Base from '../base';\nimport { getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference } from '../../utils';\n\nlet connection = {};\nlet contentTypeUid = '';\n\n\nclass Entry extends Base {\n constructor(uid: string) {\n super(uid);\n this._query = {};\n return this;\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry.Query\n * @description This static method instantiates the query module for entries. To see the list of methods that can be used for querying entries, refer the {@link Query} module.\n * @example\n * let entryQuery = extension.stack.ContentType('content_type_uid').Entry.Query();\n * entryQuery.where(\"field_uid\": \"10\").limit(10).skip(10).find().then(...).catch(...);\n * @return {Query}\n */\n\n static Query() {\n const entryQuery = super.Query();\n Object.assign(entryQuery, {\n language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryQuery;\n }\n\n static get connection() {\n return connection;\n }\n\n static get contentTypeUid() {\n return contentTypeUid;\n }\n\n static module(plural = false) {\n return plural ? 'Entries' : 'Entry';\n }\n /**\n This method creates a new entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#create-a-an-entry|\n Create Entry}\n @name Stack#ContentType#Entry.create\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.create({\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n @param {Object} payload Data to create an entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @name Stack#ContentType#Entry#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('title').fetch();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only('BASE','title').fetch();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').only(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @name Stack#ContentType#Entry#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('title').fetch();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except('BASE','title').fetch();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry('bltsomething123').except(['title','description']).fetch();\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * This method includes a query parameter in your query.\n * @name Stack#ContentType#Entry#addParam\n * @function\n * @example extension.stack.ContentType('content_type_uid').Entry('uid').addParam('include_count', 'true').fetch().then().catch();\n * @param {string} key - Key of the parameter\n * @param {string} value - Value of the parameter\n * @return {Stack#ContentType#Entry} Returns\n */\n\n\n /**\n This method will fetch all the entries in which the current entry is referenced.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-all-references-of-an-entry|\n Entry References}\n @name Stack#ContentType#Entry#getReferences\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').getReferences().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n @example extension.stack.ContentType('content_type_uid').Entry('uid').update({\"entry\" : {...}}).then().catch();\n @param {Object} payload Data to be update exsisting entry\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method deletes an existing entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#delete-an-entry|\n Delete Entry}\n @name Stack#ContentType#Entry#delete\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').delete().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n\n /**\n This method fetches information of a specific entry.\n @see {@link\n https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-an-entry|\n Get A Single Entry}\n @name Stack#ContentType#Entry#fetch\n @function\n @example extension.stack.ContentType('content_type_uid').Entry('uid').fetch().then().catch();\n @return {external:Promise}\n Required data if resolved successfully\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeReference\n * @description This method is used to include referenced entries from other content types.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference(['category', 'author']).fetch()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry('bltsomething123').includeReference('category', 'author').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#language\n * @description This method is used to set the language code of which you want to retrieve the data.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').language('en-us').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n /**\n * @function\n * @name Stack#ContentType#Entry#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').environment('development').fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#addQuery\n * @description This method is used to add a query to an entry object.\n * @param {String} key - Key of the query\n * @param {String} value - Value of the query\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').addQuery('include_schema',true).fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeSchema().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies).\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeContentType().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').includeOwner().fetch()\n * @returns {Stack#ContentType#Entry}\n */\n\n\n /**\n * @function\n * @name Stack#ContentType#Entry#getLanguages\n * @description This method returns the details of all the languages that an entry is localized in.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').getLanguages()\n * @return {external:Promise}\n */\n getLanguages() {\n return this.fetch('getEntryLanguages');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unlocalize\n * @description This method is used to unlocalize an entry\n * @param {string} locale Locale in which the entry has to be unlocalized\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unlocalize('fr-fr').then(...).catch(...);\n * @return {external:Promise}\n */\n unlocalize(locale: string) {\n if (!locale || typeof locale !== 'string') {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('unlocalizeEntry');\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#publish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').publish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n publish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('publishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#unpublish\n * @description This method lets you publish an entry either immediately or schedule it to be published automatically at a later date/time.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').unpublish({\n \"entry\": {\n \"environments\": [\"development\"],\n \"locales\": [\"en-us\"]\n },\n \"locale\": \"en-us\",\n \"version\": 1,\n \"scheduled_at\": \"2019-02-14T18:30:00.000Z\"\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n unpublish(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query = {};\n return this.fetch('unpublishEntry', payload);\n }\n\n /**\n * @function\n * @name Stack#ContentType#Entry#setWorkflowStage\n * @description This method allows you to either set a particular workflow stage or update the workflow stage details of an entry.\n * @param {object} payload - Payload for the request\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').setWorkflowStage({\n \"workflow\": {\n \"workflow_stage\": {\n \"comment\": \"Test Comment\",\n \"due_date\": \"Thu Dec 01 2018\",\n \"notify\": false,\n \"uid\": \"blt9f52a2cd5e0014fb\",\n \"assigned_to\": [{\n \"uid\": \"blt296a22e28cc0c63c\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@contentstack.com\"\n }],\n \"assigned_by_roles\": [{\n \"uid\": \"blt5b74c24c7ae25d94\",\n \"name\": \"Content Manager\"\n }]\n }\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n setWorkflowStage(payload: { [key: string]: any }) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n return this.fetch('setWorkflowStageEntry', payload);\n }\n\n /**\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#update-an-entry| Update Entry}\n * @name Stack#ContentType#Entry#update\n * @function\n * @description This call allows you to update entry content.\n * @param {object} payload - Payload for the request\n * @param {string} [locale] - Passing the ‘locale’ parameter will localize the entry in the specified locale\n * to be localized in the specified locale.\n * @example extension.stack.ContentType('contenttype_uid').Entry('bltsomething123').update(\n {\n \"entry\": {\n \"title\": \"example\",\n \"url\": \"/example\"\n }\n }).then(...).catch(...);\n * @return {external:Promise}\n */\n //@ts-ignore\n update(payload: { [key: string]: any }, locale: string) {\n if (!payload || (typeof payload !== 'object') || (payload instanceof Array)) {\n return Promise.reject(new Error('Kindly provide valid parameters'));\n }\n this._query.locale = locale;\n return this.fetch('updateEntry', payload);\n }\n}\n\nexport default (uiConnection: any, contentType: string) => {\n connection = uiConnection;\n contentTypeUid = contentType;\n return new Proxy(Entry, {\n apply(Target: any, thisArg, argumentsList: any[]) {\n const entryTarget = new Target(...argumentsList);\n Object.assign(entryTarget, {\n getReferences, addQuery, language, environment, includeOwner, includeContentType, includeSchema, includeReference\n });\n return entryTarget;\n }\n });\n};\n","import Entry from './entry';\nimport Base from '../base';\n\nlet connection = {};\n\n\nclass ContentType extends Base {\n\n Entry: typeof Entry\n\n constructor(uid: string) {\n super(uid);\n /**\n * @constructor\n * @hideconstructor\n * @name Stack#ContentType#Entry\n * @desc An entry is the actual piece of content created using one of the defined content types\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#entries| Entries}\n */\n\n // @ts-ignore\n this.Entry = Entry(this.constructor.connection, this.uid);\n return this;\n }\n\n // static module(plural = false) {\n // return plural ? 'ContentTypes' : 'ContentType';\n // }\n static get connection() {\n return connection;\n }\n}\nexport default (uiConnection: any) => {\n connection = uiConnection;\n return new Proxy(ContentType, {\n // target = Foo\n apply(Target: any, thisArg, argumentsList: any[]) {\n return new Target(...argumentsList);\n }\n });\n};\n","import * as Utils from '../utils';\n\n\nfunction onData(data) {\n if (typeof (data.data) === 'string') { return Promise.reject(data.data); }\n return Promise.resolve(data.data);\n}\n\nfunction onError(error) {\n return Promise.reject(error);\n}\n\nconst _extend = {\n compare(type) {\n return function (key, value) {\n if (key && value && typeof key === 'string' && typeof value !== 'undefined') {\n this._query.query[key] = this._query.query.file_size || {};\n this._query.query[key][type] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n contained(bool) {\n const type = (bool) ? '$in' : '$nin';\n return function (key, value) {\n if (key && value && typeof key === 'string' && Array.isArray(value)) {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key][type] = this._query.query[key][type] || [];\n this._query.query[key][type] = this._query.query[key][type].concat(value);\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n exists(bool) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query.query[key] = this._query.query[key] || {};\n this._query.query[key].$exists = bool;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n };\n },\n logical(type) {\n return function () {\n const _query: any[] = [];\n for (let i = 0, _i = arguments.length; i < _i; i += 1) {\n if (arguments[i] instanceof Query && arguments[i]._query.query) {\n _query.push(arguments[i]._query.query);\n } else if (typeof arguments[i] === 'object') {\n _query.push(arguments[i]);\n }\n }\n if (this._query.query[type]) {\n this._query.query[type] = this._query.query[type].concat(_query);\n } else {\n this._query.query[type] = _query;\n }\n return this;\n };\n },\n sort(type) {\n return function (key) {\n if (key && typeof key === 'string') {\n this._query[type] = key;\n return this;\n }\n throw Error('Argument should be a string.');\n };\n },\n pagination(type) {\n return function (value) {\n if (typeof value === 'number') {\n this._query[type] = value;\n return this;\n }\n throw Error('Argument should be a number.');\n };\n }\n};\n\n/**\n * Creates an instance of the query\n * @hideconstructor\n */\nclass Query {\n module: any\n _connection: any\n _query: {[key: string]: any}\n contentTypeUid: string\n only: any\n except: any\n addQuery: any\n lessThan: any\n lessThanOrEqualTo: any\n greaterThan: any\n greaterThanOrEqualTo: any\n notEqualTo: any\n containedIn: any\n notContainedIn: any\n exists: any\n notExists: any\n ascending: ReturnType\n descending: ReturnType\n beforeUid: ReturnType\n afterUid: ReturnType\n skip: ReturnType\n limit: ReturnType\n or: ReturnType\n and: ReturnType\n addParam: ReturnType\n singleEntry: any\n\n constructor(connection, module, contentTypeUid) {\n this.module = module;\n this._connection = connection;\n this._query = {};\n this._query.query = this._query.query || {};\n this.contentTypeUid = contentTypeUid;\n\n /**\n * @name Query#only\n * @function\n * @description This method is used to show the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be shown in the result set\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('title').find();\n * @example\n * Only with field UID \n * extension.stack.ContentType('content_type_uid').Entry.Query().only('BASE','title').find();\n * @example\n * Only with field UIDs(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().only(['title','description']).find();\n * @returns {Query}\n */\n\n this.only = Utils.transform('only');\n\n /**\n * @name Query#except\n * @function\n * @description This method is used to hide the selected fields of an entry in the result set.\n * @param {String} [key=BASE] - Single field of an entry\n * @param {Array} values - Array of fields to be hidden in the result set\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('title').find();\n * @example\n * Except with field uid \n * extension.stack.ContentType('content_type_uid').Entry.Query().except('BASE','title').find();\n * @example\n * Except with field uids(array) \n * extension.stack.ContentType('content_type_uid').Entry.Query().except(['title','description']).find();\n * @returns {Query}\n */\n\n this.except = Utils.transform('except');\n /**\n This method includes a query parameter in your query.\n @name Query#addQuery\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addQuery('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addQuery = Utils.addQuery;\n\n /**\n * @name Query#lessThan\n * @description This method provides only the entries with values less than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThan('created_at','2015-06-22')\n * @returns {Query}\n */\n this.lessThan = _extend.compare('$lt');\n\n /**\n * @name Query#lessThanOrEqualTo\n * @description This method provides only the entries with values less than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').lessThanOrEqualTo('created_at','2015-03-12')\n * @returns {Query}\n */\n this.lessThanOrEqualTo = _extend.compare('$lte');\n /**\n * @function\n * @name Query#greaterThan\n * @description This method provides only the entrieswith values\n * greater than the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThan('created_at','2015-03-12')\n * @returns {Query}\n */\n this.greaterThan = _extend.compare('$gt');\n\n /**\n * @function\n * @name Query#greaterThanOrEqualTo\n * @description This method provides only the entries with values greater than or equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').greaterThanOrEqualTo('created_at', '2015-06-22')\n * @returns {Query}\n */\n this.greaterThanOrEqualTo = _extend.compare('$gte');\n\n /**\n * @function\n * @name Query#notEqualTo\n * @description This method provides only the entries with values not equal to the specified value for a field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').notEqualTo('title','Demo')\n * @returns {Query}\n */\n this.notEqualTo = _extend.compare('$ne');\n\n /**\n * @function\n * @name Query#containedIn\n * @description This method provides only the entries with values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {*} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').containedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.containedIn = _extend.contained(true);\n\n /**\n * @function\n * @name Query#notContainedIn\n * @description This method provides only the entries that do not contain values matching the specified values for a field.\n * @param {String} key - UID of the field\n * @param {Array} value - An array of values that are to be used to match or compare\n * @example extension.stack.ContentType('blog').notContainedIn('title', ['Demo', 'Welcome'])\n * @returns {Query}\n */\n this.notContainedIn = _extend.contained(false);\n\n /**\n * @function\n * @name Query#exists\n * @description This method provides only the entries that contains the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').exists('featured')\n * @returns {Query}\n */\n this.exists = _extend.exists(true);\n\n /**\n * @function\n * @name Query#notExists\n * @description This method provides only the entries that do not contain the field matching the specified field UID.\n * @param {String} key - UID of the field\n * @example extension.stack.ContentType('blog').notExists('featured')\n * @returns {Query}\n */\n this.notExists = _extend.exists(false);\n\n /**\n * @function\n * @name Query#ascending\n * @description This parameter sorts the entries in ascending order on the basis of the value of the specified field.\n * @param {String} key - Field UID to be used for sorting.\n * @example extension.stack.ContentType('blog').ascending('created_at')\n * @returns {Query}\n */\n this.ascending = _extend.sort('asc');\n\n /**\n * @function\n * @name Query#descending\n * @description This method sorts the entries in descending order on the basis of the specified field.\n * @param {String} key - Field UID to be used for sorting\n * @example extension.stack.ContentType('blog').descending('created_at')\n * @returns {Query}\n */\n this.descending = _extend.sort('desc');\n\n /**\n * @function\n * @name Query#beforeUid\n * @description This method provides only the entries that are placed before the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').beforeUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.beforeUid = _extend.sort('before_uid');\n\n /**\n * @function\n * @name Query#afterUid\n * @description This method provides only the entries that are placed after the specified entry ID.\n * @param {String} uid - UID of the entry\n * @example extension.stack.ContentType('blog').afterUid('blt1234567890abcdef')\n * @returns {Query}\n * @ignore\n */\n this.afterUid = _extend.sort('after_uid');\n\n /**\n * @function\n * @name Query#skip\n * @description This method skips the specified number of entries.\n * @param {Number} skip - Number of entries to be skipped\n * @example extension.stack.ContentType('blog').skip(5)\n * @returns {Query}\n */\n this.skip = _extend.pagination('skip');\n\n /**\n * @function\n * @name Query#limit\n * @description This method limits the response by providing only the specified number of entries.\n * @param {Number} limit - Maximum number of entries to be returned in the result.\n * @example extension.stack.ContentType('blog').limit(10)\n * @returns {Query}\n */\n this.limit = _extend.pagination('limit');\n\n /**\n * @function\n * @name Query#or\n * @description This method performs the OR operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries\n * to be taken into consideration\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo')\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10)\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @example\n * OR with query instances\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery()\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery()\n * let blogQuery = extension.stack.ContentType('blog').or(Query1, Query2)\n * @returns {Query}\n */\n this.or = _extend.logical('$or');\n\n /**\n * @function\n * @name Query#and\n * @description This method performs the AND operation on the specified query objects and provides only the matching entries.\n * @param {object} Array of query objects/raw queries to be taken into consideration\n * @example\n * AND with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo');\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10);\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @example\n * .and with raw queries\n * let Query1 = extension.stack.ContentType('blog').Entry.Query().where('title', 'Demo').getQuery();\n * let Query2 = extension.stack.ContentType('blog').Entry.Query().lessThan('comments', 10).getQuery();\n * let blogQuery = extension.stack.ContentType('blog').and(Query1, Query2)\n * @returns {Query}\n */\n this.and = _extend.logical('$and');\n /**\n This method includes a query parameter in your query.\n @name Query#addParam\n @function\n @example extension.stack.ContentType('content_type_uid').Entry.Query().addParam('key', 'value').find().then().catch();\n @param {string} key - Key of the parammeter\n @param {string} value - Value of the parammeter\n @return {Query}\n */\n this.addParam = Utils.addParam;\n }\n\n // -------------------------------------Entry Queries--------------------------------------------------\n /**\n * @function\n * @name Query#includeReference\n * @description This method is used to include referenced entries from other content types. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example\n * .includeReference with reference_field_uids as array \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference(['category', 'author']).find()\n * @example\n * .includeReference with reference_field_uids \n * stack.ContentType('contenttype_uid').Entry.Query().includeReference('category', 'author').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeSchema\n * @description This method is used to include the schema of the current contenttype in result set along with the entry/entries. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeSchema().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#language\n * @description This method is used to set the language code of which you want to retrieve the data. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @param {String} languageCode - Language code, for e.g. 'en-us', 'ja-jp', and so on\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().language('en-us').find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeContentType\n * @description This method is used to include the current content type in the result set along with the entry(ies). Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeContentType().find()\n * @returns {Query}\n */\n\n /**\n * @function\n * @name Query#includeOwner\n * @description This method is used to include the owner of the entry(ies) in the result set. Note: This method is only valid for querying {@link Stack#ContentType#Entry}.\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().includeOwner().find()\n * @returns {Query}\n */\n // -----------------------------------------Entry Queries End------------------------------------------------------\n\n /**\n * @function\n * @name Query#environment\n * @description This method is used to set the environment name of which you want to retrieve the data.\n * @param {String} environment_uid - UID/Name of environment\n * @example extension.stack.ContentType('contenttype_uid').Entry.Query().environment('development').find()\n * @returns {Query}\n */\n\n /**\n * @description This method provides only the entries containing field values matching the specified condition.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @example extension.stack.ContentType('blog').where('title','Demo')\n * @returns {Query}\n */\n equalTo(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n where(key, value) {\n if (key && typeof key === 'string') {\n this._query.query[key] = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides only the number of entries matching the specified filters.\n * @example extension.stack.ContentType('blog').count()\n * @returns {Query}\n */\n count() {\n this._query.count = true;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method is used to set raw queries on the Query instance.\n * @param {object} query - Raw{json} queries to filter the entries in the result set.\n * @returns {Query}\n */\n query(query) {\n if (typeof query === 'object') {\n this._query.query = Utils.mergeDeep(this._query.query, query);\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description The ’tags’ parameter allows you to specify an array of tags to search for objects.\n * @param {Array} values - Tags\n * @example extension.stack.ContentType('blog').tags(['technology', 'business'])\n * @returns {Query}\n */\n tags(values) {\n if (Array.isArray(values)) {\n this._query.tags = values;\n return this;\n }\n throw Error('Kindly provide valid parameters');\n }\n\n /**\n * @description This method also includes the total number of entries returned in the response.\n * @example extension.stack.ContentType('blog').includeCount()\n * @returns {Query}\n */\n includeCount() {\n this._query.include_count = true;\n return this;\n }\n\n /**\n * @summary returns Returns the raw query which can be used for further calls (.and/.or).\n * @description This method provides raw{json} queries based on the filters applied on the Query object.\n * @example extension.stack.ContentType('blog').where('title','Demo').getQuery()\n * @returns {Query}\n */\n getQuery() {\n return this._query.query;\n }\n\n /**\n * @description This method provides only the entries matching the regular expression for the specified field.\n * @param {String} key - UID of the field\n * @param {*} value - The value used to match or compare\n * @param {String} [options] - Match or compare a value in the entry\n * @example\n * .regex without options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo')\n * @example\n * .regex with options\n * let blogQuery = extension.stack.ContentType('blog').regex('title','^Demo', 'i')\n * @returns {Query}\n */\n regex(key, value, options) {\n if (key && value && typeof key === 'string' && typeof value === 'string') {\n this._query.query[key] = {\n $regex: value\n };\n if (options) this._query.query[key].$options = options;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method is used to search data in entries.\n * @param {string} value - Value to search in the entries.\n * @example extension.stack.ContentType('blog').search('Welcome to demo')\n * @returns {Query}\n */\n search(value) {\n if (value && typeof value === 'string') {\n this._query.typeahead = value;\n return this;\n }\n throw Error('Kindly provide valid parameters.');\n }\n\n /**\n * @description This method provides all the entries which satisfy the specified query.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').find()\n */\n find() {\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * @description This method provides a single entry from the result set.\n * @example\n * let blogQuery = extension.stack.ContentType('blog').findOne()\n */\n findOne() {\n this.singleEntry = true;\n this._query.limit = 1;\n const options = { content_type_uid: this.contentTypeUid, params: this._query, action: `get${this.module}` };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n}\n\nexport default Query;\n","import Asset from './api/asset/index';\nimport ContentType from './api/content-type/index';\nimport { onData, onError } from \"../utils/utils\";\nimport { BranchDetail, GetAllStacksOptions, StackAdditionalData, StackDetail, StackSearchQuery } from '../types/stack.types';\nimport { IManagementTokenDetails } from '../types';\n\n\n/**\n * Class representing the current stack in Contentstack UI.\n */\n\nclass Stack {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _data: StackDetail\n ContentType: any // TODO: change it\n Asset: any // TODO: change it\n private _currentBranch: BranchDetail | null = null;\n\n\n constructor(data: StackDetail = {} as StackDetail, connection: any, additionalData: StackAdditionalData) {\n this._connection = connection;\n this._data = data;\n /**\n * @constructor\n * @hideconstructor\n * @desc Content type defines the structure or schema of a page or a section of your web or mobile property\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#content-types| ContentType}\n * @param {string} uid - Uid of contenttype.\n * @example extension.stack.ContentType('content_type_uid')\n * */\n this.ContentType = ContentType(connection);\n /**\n * @constructor\n * @hideconstructor\n * @desc An initializer is responsible for creating an Asset object.\n * @see {@link https://www.contentstack.com/docs/apis/content-management-api/#assets| Asset}\n * @param {string} uid - UID of the asset.\n * @example extension.stack.Asset('asset_uid')\n * */\n this.Asset = Asset(connection);\n\n const currentBranch = additionalData.currentBranch || \"\"\n\n if (currentBranch) {\n this._currentBranch =\n (data.branches || []).find(\n (branch) => branch.uid === additionalData.currentBranch\n ) || null;\n }\n\n }\n\n\n /**\n * This method returns the data of the current stack.\n * @return Returns stack data.\n */\n\n getData(): StackDetail {\n return this._data;\n }\n\n\n /**\n * This method returns all the stacks in the current organization.\n * @param query asks for organization UID and query params to get all stacks\n * @returns Stacks within current organization\n */\n async getAllStacks({orgUid = \"\", params = {}}: GetAllStacksOptions = {}): Promise {\n \n // validation\n if (typeof orgUid !== 'string') {\n throw new TypeError('orgUid must be a string');\n }\n\n const options = {\n action: \"getStacks\",\n headers: { organization_uid: orgUid || this._data.org_uid },\n skip_api_key: true,\n params\n };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .then((data) => data.stacks || [])\n .catch(onError);\n\n }\n\n /**\n * Get the details of all the management tokens of the stack.\n * Note: This API does not return the token value.\n * @see {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-management-tokens | Get all management tokens}\n * @returns Details of all the management token of the stack\n */\n async getManagementTokens(): Promise {\n const options = { action: \"getManagementTokens\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(async (response) => {\n const data = await onData<{tokens: IManagementTokenDetails[]}>(response);\n return data.tokens || [];\n })\n .catch(onError);\n }\n\n /**\n * Gets the results of the search based on user query\n * @param queries Array of key value pair of query parameters\n * @param apiKey API key of the stack\n * @returns Result of the query\n */\n search(queries: StackSearchQuery, apiKey: string | null = this._data.api_key) {\n const options = { params: queries, api_key: apiKey, action: \"search\" };\n return this._connection\n .sendToParent(\"stackQuery\", options)\n .then(onData)\n .catch(onError);\n }\n\n\n /**\n * This API allows you to retrieve data of a content type of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-content-type| Content Type API} requests. This method returns a Promise object.\n * @param {string} uid Uid of the desired content type\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with content type details.\n */\n getContentType(uid: string, params = {}): Promise<{ [key: string]: any }> {\n if (!uid) {\n return Promise.reject(new Error('uid is required'));\n }\n const options = { uid, params, action: 'getContentType' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve data of a content types of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Content Types API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with details of the content type.\n */\n getContentTypes(query = {}, params: { [key: string]: any } = {}): Promise<{ [key: string]: any }> {\n const optionParams = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getContentTypes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve environment details of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-single-environment| Environment API} requests. This method returns a Promise object.\n * @param {string} name Name of the desired environment\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with environment details.\n */\n getEnvironment(name: string, params = {}) {\n if (!name) {\n return Promise.reject(new Error('name is required'));\n }\n const options = { name, params, action: 'getEnvironment' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of environments of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-environments| Environments API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the environments.\n */\n getEnvironments(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getEnvironments' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of releases of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-all-releases| Releases API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the releases.\n */\n getReleases(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getReleases' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve details of publish queue of a stack using the {@link https://www.contentstack.com/docs/developers/apis/content-management-api/#get-publish-queue| Publish Queue API} requests. This method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the publish queue.\n */\n getPublishes(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getPublishes' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a locale of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-language| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getLocale(code: string, params = {}) {\n if (!code) {\n return Promise.reject(new Error('code is required'));\n }\n const options = { code, params, action: 'getLocale' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getLocales(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getLocales' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrive a workflow of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-a-workflow| Language API} requests. Method returns a Promise object.\n * @param {string} code Code of the desired locale\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A promise object which will be resolved with locale details.\n */\n getWorkflow(uid: string, params = {}) {\n if (!uid) {\n return Promise.reject(new Error('workflow uid is required'));\n }\n const options = { uid, params, action: 'getWorkflow' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n \n /**\n * This API allows you to retrive the locales of a stack using the {@link https://www.contentstack.com/docs/apis/content-management-api/#get-all-content-types| Languages API} requests. Method returns a Promise object.\n * @param {Object} query Query for the GET call\n * @param {Object} params Optional parameters for the GET call\n * @return {Object} A Promise object which will be resolved with details of the locales.\n */\n getWorkflows(query = {}, params = {}) {\n const optionParams: { [key: string]: any } = params;\n optionParams.query = query;\n const options = { params: optionParams, action: 'getWorkflows' };\n return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError);\n }\n\n /**\n * This API allows you to retrieve all the branches in the current stack\n * @returns All branches of the current stack\n */\n getAllBranches(): BranchDetail[] {\n return this._data.branches || [];\n }\n\n /**\n * Returns the details of the current branch of the stack if available\n * @returns current branch of the current stack if available\n */\n getCurrentBranch(): BranchDetail | null {\n return this._currentBranch;\n }\n}\n\nexport default Stack;\n","export function transform(type) {\n return function () {\n switch (arguments.length) {\n case 1:\n if (\n Array.isArray(arguments[0]) ||\n typeof arguments[0] === \"string\"\n ) {\n let query = this._query[`${type}[BASE]`] || [];\n query = query.concat(arguments[0]);\n this._query[`${type}[BASE]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n case 2:\n if (\n typeof arguments[0] === \"string\" &&\n (Array.isArray(arguments[1]) ||\n typeof arguments[1] === \"string\")\n ) {\n let query = this._query[`${type}[${arguments[0]}]`] || [];\n query = query.concat(arguments[1]);\n this._query[`${type}[${arguments[0]}]`] = query;\n return this;\n }\n throw Error(\"Kindly provide valid parameters\");\n\n default:\n throw Error(\"Kindly provide valid parameters\");\n }\n };\n}\n\n// merge two objects\nexport function merge(\n target: { [key: string]: any },\n source: { [key: string]: any }\n) {\n const newTraget = target;\n if (target && source) {\n Object.keys(source).forEach((key) => {\n newTraget[key] = source[key];\n });\n }\n return newTraget;\n}\n\n// merge two objects\nexport function mergeDeep(\n oldTarget: { [key: string]: any },\n oldSource: { [key: string]: any }\n) {\n const newTarget = oldTarget;\n const self = this;\n const _mergeRecursive = (anotherTarget, source) => {\n const target = anotherTarget;\n Object.keys(source).forEach((key) => {\n if (\n self._type(source[key]) === \"object\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n _mergeRecursive(target[key], source[key]);\n } else if (\n self._type(source[key]) === \"array\" &&\n self._type(target[key]) === self._type(source[key])\n ) {\n target[key] = target[key].concat(source[key]);\n } else {\n target[key] = source[key];\n }\n });\n };\n _mergeRecursive(newTarget, oldSource);\n return newTarget;\n}\n\nexport function _type(val) {\n let __typeof = typeof val;\n if (__typeof === \"object\" && Array.isArray(val)) {\n //@ts-ignore\n __typeof = \"array\";\n }\n return __typeof;\n}\n\nexport function addParam(key, value) {\n if (key && typeof key === \"string\" && value && typeof value === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"Kindly provide valid parameters.\");\n}\n\nexport function addQuery(key, value) {\n if (key && value && typeof key === \"string\") {\n this._query[key] = value;\n return this;\n }\n throw Error(\"First argument should be a String.\");\n}\n\nexport function language(languageCode) {\n if (languageCode && typeof languageCode === \"string\") {\n this._query.locale = languageCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function environment(environmentCode) {\n if (environmentCode && typeof environmentCode === \"string\") {\n this._query.environment = environmentCode;\n return this;\n }\n throw Error(\"Argument should be a String.\");\n}\n\nexport function includeOwner() {\n this._query.include_owner = true;\n return this;\n}\n\nexport function includeContentType() {\n this._query.include_content_type = true;\n return this;\n}\n\nexport function includeSchema() {\n this._query.include_schema = true;\n return this;\n}\n\nexport function includeReference(val) {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(val[i]);\n }\n } else if (typeof val === \"string\") {\n for (let i = 0; i < arguments.length; i += 1) {\n this._query[\"include[]\"] = this._query[\"include[]\"] || [];\n this._query[\"include[]\"] = this._query[\"include[]\"].concat(\n arguments[i]\n );\n }\n } else {\n throw Error(\"Argument should be a String or an Array.\");\n }\n return this;\n}\n\nexport function getReferences() {\n return this.fetch(`get${this.constructor.module()}References`);\n}\n","function onError(error: Error) {\n return Promise.reject(error);\n}\n/**\n * Class used by an extension to store your data in {@link external:localStorage}.\n */\nclass Store {\n /**\n * @hideconstructor\n */\n\n _connection: any\n\n constructor(connection: any) {\n this._connection = connection;\n }\n /**\n * Gets the value of key\n * @param {string} key Key of the stored data\n * @example extension.store.get('key').then((value) => console.log(value)) // will log value for the given key\n * @return {external:Promise}\n */\n get(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'get', key })\n .then((event: { data: any; }) => Promise.resolve(event.data)).catch(onError);\n }\n\n /**\n * Gets an object with all the stored key-value pairs.\n * @example extension.store.getAll().then((obj) => obj)\n * @return {external:Promise}\n */\n getAll() {\n return this._connection.sendToParent('store', { action: 'getAll' })\n .then(({ data = {} }) => Promise.resolve(data)).catch(onError);\n }\n\n /**\n * Sets the value of a key\n * @param {string} key Key of the stored data.\n * @param {*} value Data to be stored.\n * @example extension.store.set('key', 'value').then((success) => console.log(success)) // will log ‘true’ when value is set\n * @return {external:Promise}\n */\n\n set(key: string, value: string) {\n if (!key || !value || typeof key !== 'string') {\n throw new Error('Kindly provide valid parameters');\n }\n return this._connection.sendToParent('store', { action: 'set', key, value })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Removes the value of a key\n * @param {string} key Key of the data to be removed from the store\n * @example extension.store.remove('key').then((success) => console.log(success)) // will log ‘true’ when value is removed\n * @return {external:Promise}\n */\n\n remove(key: string) {\n if (!key || typeof key !== 'string') { throw new Error('Kindly provide valid parameters'); }\n return this._connection.sendToParent('store', { action: 'remove', key })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n\n /**\n * Clears all the stored data of an extension\n * @example extension.store.clear().then((success) => console.log(success)) // will log ‘true’ when values are cleared\n * @return {external:Promise}\n */\n\n clear() {\n return this._connection.sendToParent('store', { action: 'clear' })\n .then(() => Promise.resolve(true)).catch(onError);\n }\n}\n\nexport default Store;\n","import { AnyObject } from \"./types/common.types\";\nimport { StackDetail } from \"./types/stack.types\";\n\nexport declare interface IDashboardWidget {\n [key: string]: any;\n}\n\nexport declare interface ICustomField {\n [key: string]: any;\n}\n\nexport declare interface ISidebarWidget {\n [key: string]: any;\n}\n\nexport declare interface IRTE {\n [key: string]: any;\n}\n\nexport declare interface IFieldModifierLocation {\n [key: string]: any;\n}\n\nexport declare interface IEntryFieldLocation {\n [key: string]: any;\n}\n\nexport declare interface IFullPageLocation {\n [key: string]: any;\n}\n\nexport declare interface User {\n uid: string;\n first_name: string;\n last_name: string;\n}\n\nexport declare interface Manifest {\n created_by: User;\n icon: string;\n name: string;\n target_type: string;\n uid: string;\n updated_by: User;\n version: number;\n visibility: string;\n}\n\nexport declare interface IAppConfigWidget {\n installation: {\n setInstallationData: (\n installationData: IInstallationData\n ) => Promise;\n getInstallationData: () => Promise;\n setValidity: (isValid: boolean, options?: ValidationOptions) => void;\n [key: string]: any;\n };\n stack: AnyObject;\n}\n\nexport declare interface IPageWidget {\n [key: string]: any;\n}\n\n// initialization data\nexport declare interface IUser {\n [key: string]: any;\n}\n\nexport declare interface ICurrentEntry {\n [key: string]: any;\n}\n\nexport declare interface ICurrentContentType {\n [key: string]: any;\n}\n\nexport declare interface IConfig {\n [key: string]: any;\n}\n\nexport declare interface ISchema {\n [key: string]: any;\n}\n\nexport declare interface IFieldConfig {\n [key: string]: any;\n}\n\n// Init data\n\ndeclare interface ICommonInitData {\n app_id: string;\n installation_uid: string;\n extension_uid: string;\n stack: StackDetail;\n user: IUser;\n currentBranch: string;\n region: string;\n manifest?: Manifest;\n}\n\nexport declare interface IDashboardInitData {\n data: ICommonInitData & {\n dashboard_width: \"full_width\" | \"half_width\";\n config?: AnyObject;\n type: \"DASHBOARD\";\n };\n}\n\nexport declare interface ISidebarInitData {\n data: ICommonInitData & {\n app_config: IConfig;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n config?: AnyObject;\n changedData: ICurrentEntry;\n type: \"WIDGET\";\n };\n}\n\nexport declare interface IRTELocationInitData {\n data: ICommonInitData & {\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n changedData: ICurrentEntry;\n }\n}\n\nexport declare interface IFieldInitData {\n data: ICommonInitData & {\n entry: ICurrentEntry;\n content_type: ICurrentContentType;\n locale: string;\n uid: string;\n schema: ISchema;\n app_config: IConfig;\n value: any;\n field_config: IFieldConfig;\n config?: AnyObject;\n changedData: ICurrentEntry;\n self: boolean;\n type: \"FIELD\";\n };\n}\n\nexport declare interface IFullPageLocationInitData {\n data: ICommonInitData & {\n type: \"FULL_PAGE_LOCATION\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IRTEInitData {\n data: ICommonInitData & {\n type: \"RTE\";\n config?: AnyObject;\n };\n}\n\nexport declare interface IAppConfigInitData {\n data: ICommonInitData & {\n type: \"APP_CONFIG_WIDGET\";\n config?: AnyObject;\n };\n}\n\nexport declare interface ICurrentAsset {\n [key: string]: any;\n}\n\nexport declare interface IAssetSidebarInitData {\n data: ICommonInitData & {\n type: \"ASSET_SIDEBAR_WIDGET\";\n currentAsset: ICurrentAsset;\n config: { [key: string]: any };\n };\n}\n\nexport declare interface IFieldModifierLocationInitData {\n data: ICommonInitData & {\n type: \"FIELD_MODIFIER_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface IEntryFieldLocationInitData {\n data: ICommonInitData & {\n type: \"ENTRY_FIELD_LOCATION\";\n config?: Record;\n content_type: ICurrentContentType;\n entry: ICurrentEntry;\n locale: string;\n uid: string;\n schema: ISchema;\n value: any;\n self: boolean;\n changedData: ICurrentEntry;\n };\n}\n\nexport declare interface setAssetDto {\n title: string;\n description: string;\n tags: string[];\n}\n\nexport enum StackLocation {\n STACK_CONFIG = \"cs.cm.stack.config\",\n DASHBOARD = \"cs.cm.stack.dashboard\",\n SIDEBAR = \"cs.cm.stack.sidebar\",\n CUSTOM_FIELD = \"cs.cm.stack.custom_field\",\n RTE = \"cs.cm.stack.rte\",\n}\n\nexport enum OrganizationLocation {\n ORG_CONFIG = \"cs.org.config\",\n}\n\nexport type AppLocation = StackLocation | OrganizationLocation;\n\nexport interface Scope {\n content_types: string[];\n}\n\n/**\n * installation details API response\n */\nexport interface IInstallationData {\n configuration: { [key: string]: any };\n serverConfiguration: { [key: string]: any };\n webhooks?: {\n channels: string[];\n }[];\n uiLocations?: {\n type: AppLocation;\n meta: {\n enabled: boolean;\n scope?: Scope;\n name: string;\n extentionUid: string;\n }[];\n }[];\n}\n// End of Init data\n\nexport declare interface IInitializationData {\n FIELD: IFieldConfig;\n WIDGET: ISidebarInitData;\n DASHBOARD: IDashboardInitData;\n RTE: IRTEInitData;\n APP_CONFIG_WIDGET: IAppConfigInitData;\n ASSET_SIDEBAR_WIDGET: IAssetSidebarInitData;\n}\n\nexport declare type ILocation =\n | \"RTE\"\n | \"FIELD\"\n | \"DASHBOARD\"\n | \"WIDGET\"\n | \"APP_CONFIG_WIDGET\"\n | \"ASSET_SIDEBAR_WIDGET\"\n | \"FULL_PAGE_LOCATION\"\n | \"ENTRY_FIELD_LOCATION\"\n | \"FIELD_MODIFIER_LOCATION\";\n\nexport declare interface ValidationOptions {\n message?: string;\n}\n\nexport declare interface IManagementTokenDetails {\n uid: string;\n name: string;\n}\n\nexport enum Region {\n UNKNOWN = \"UNKNOWN\",\n NA = \"NA\",\n EU = \"EU\",\n AZURE_NA = \"AZURE_NA\",\n AZURE_EU = \"AZURE_EU\",\n}\n","export const ERROR_MESSAGES = Object.freeze({\n configPage: {\n setValidity: {\n isValidTypeBoolean: \"isValid should be a boolean\",\n messageTypeString: \"message should be a string\",\n },\n },\n entryField: {\n entry: {\n tagsShouldNotBeBlank: \"Tags cannot be blank\",\n tagsShouldBeArrayOfStrings: \"Tags must be an array of strings\",\n },\n frame: {\n dimensionHeightShouldBeNumber: \"Dimension height must be a number\",\n dimensionWidthShouldBeNumber: \"Dimension width must be a number\",\n },\n },\n});\n\nexport default function generateErrorMessages(message: string) {\n return `Contentstack App SDK: ${message}`;\n}\n","import { Region } from \"../types\";\n\nexport function onData>(data: { data: Data }) {\n if (typeof data.data === \"string\") {\n return Promise.reject(data.data);\n }\n return Promise.resolve(data.data);\n}\n\nexport function onError(error: Error) {\n return Promise.reject(error);\n}\n\nexport function formatAppRegion(region: string): Region {\n switch (region) {\n case \"NA\":\n return Region.NA;\n case \"EU\":\n return Region.EU;\n case \"AZURE_NA\":\n return Region.AZURE_NA;\n case \"AZURE_EU\":\n return Region.AZURE_EU;\n default:\n return Region.UNKNOWN;\n }\n}\n\nexport function getPreferredBodyElement(nodeCollection: HTMLCollection) {\n let rootElementIndex = Infinity;\n let rootElement: Element | undefined;\n const elementPreferenceList = [\n \"HEADER\",\n \"NAV\",\n \"MAIN\",\n \"SECTION\",\n \"ARTICLE\",\n \"ASIDE\",\n \"FOOTER\",\n \"DIV\",\n ];\n const nonRenderingTags = [\"SCRIPT\", \"NOSCRIPT\", \"STYLE\", \"TEMPLATE\"];\n // ? choose higher preference semantic HTML tags\n Array.from(nodeCollection).forEach((el) => {\n const elIndex = elementPreferenceList.indexOf(el.nodeName);\n if (elIndex >= 0 && elIndex < rootElementIndex) {\n rootElementIndex = elIndex;\n rootElement = el;\n }\n });\n // ? choose the first rendering HTML tag found if no semantic tags found\n if (!rootElement) {\n rootElement = Array.from(nodeCollection).find(\n (el) => !nonRenderingTags.includes(el.nodeName)\n );\n }\n return rootElement || nodeCollection[0];\n}\n","import EventEmitter from \"wolfy87-eventemitter\";\nimport postRobot from \"post-robot\";\n\nconst config = { attributes: true, childList: true, subtree: true };\nlet observer: MutationObserver;\n/**\n * Class representing an iframe window from Contentstack UI. Not available for Custom Widgets.\n */\n\nclass Window {\n /**\n * @hideconstructor\n */\n\n _connection: any\n _autoResizingEnabled: boolean\n _resizingEnabled: boolean\n type: 'DASHBOARD' | 'FIELD'\n _emitter: EventEmitter\n state: 'half_width' | 'full_width'\n _height?: number\n\n constructor(connection: any, type: 'DASHBOARD' | 'FIELD', emitter: EventEmitter, state: 'half_width' | 'full_width' = 'half_width') {\n this._connection = connection || postRobot;\n this._autoResizingEnabled = false;\n this._resizingEnabled = false;\n this.type = type;\n this.state = state;\n this._emitter = emitter;\n }\n\n /**\n * This method activates the resize button that gives you the provision to resize the window size of your Dashboard Widget.\n * @return {external:Promise} A promise object which will resolve when a resize button is visible on the Dashboard Widget.\n */\n enableResizing() {\n if (this.type !== 'DASHBOARD') { return Promise.resolve(); }\n this._resizingEnabled = true;\n return this._connection.sendToParent('window', { action: 'enableResizing' });\n }\n\n\n /**\n * This function executes the callback function whenever a Dashboard Widget extension is maximized or minimized. Only applicable on Dashboard Widget extensions.\n * @param {function} callback Function to be called when a Dashboard Widget extension is maximized or minimized\n * @return {boolean} Will return true\n */\n\n onDashboardResize(callback: (event: any) => void) {\n const windowObj = this;\n if (this.type !== 'DASHBOARD') {\n return false;\n }\n if (callback && typeof (callback) === 'function') {\n windowObj._emitter.on('dashboardResize', (event: { state: 'half_width' | 'full_width'; }) => {\n windowObj.state = event.state;\n callback(event.state);\n });\n } else {\n throw Error('Callback must be a function');\n }\n return true;\n }\n\n\n /**\n * This method updates the extension height on Contentstack UI.\n * If the ‘height’ argument is not passed, it will calculate the scroll height and set the height of extension window accordingly.\n * @param {string|number} height Desired height of the iframe window\n * @return {external:Promise} A promise object which will be resolved when Contentstack UI sends an acknowledgement stating that the height has been updated.\n */\n updateHeight(height?: number) {\n if (this.type === 'DASHBOARD' && this.state === 'half_width') { return Promise.resolve(); }\n if (!height || isNaN(height)) {\n this._height = Math.ceil(document.documentElement.getBoundingClientRect().height);\n } else if (this._height === height) {\n return Promise.resolve();\n } else {\n this._height = height;\n }\n return this._connection.sendToParent('resize', this._height);\n }\n\n /**\n * This method enables auto resizing of the extension height.\n * @return {Window}.\n */\n enableAutoResizing() {\n if (this._autoResizingEnabled || (this.state === 'half_width' && this.type === 'DASHBOARD')) {\n return this;\n }\n this._autoResizingEnabled = true;\n //@ts-ignore\n observer = new MutationObserver(this.updateHeight.bind(this));\n observer.observe(window.document.body, config);\n return this;\n }\n\n /**\n * This method disables auto resizing of the extension height.\n * @return {Window}.\n */\n disableAutoResizing() {\n if (!this._autoResizingEnabled) {\n return this;\n }\n this._autoResizingEnabled = false;\n observer.disconnect();\n return this;\n }\n\n enablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent(\"window\", {\n action: \"dashboardEnableTopPadding\",\n });\n }\n\n disablePaddingTop(): Promise {\n // @ts-ignore\n return postRobot.sendToParent('window', {\n action: 'dashboardDisableTopPadding' \n });\n }\n \n}\n\nexport default Window;\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","// 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].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n"],"names":["root","factory","exports","module","define","amd","this","self","modules","installedModules","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","value","interface_namespaceObject","isRegex","item","toString","cleanUpWindow","promise_ZalgoPromise","bridge","init","public_parent","_send","request","sendToParent","client","_on","listen","server_once","server_listener","CONFIG","constants_CONSTANTS","disable","PROTOCOL","IE_WIN_ACCESS_ERROR","isAboutProtocol","arguments","length","window","location","protocol","getParent","win","parent","err","getOpener","opener","canReadFromWindow","href","getActualDomain","Error","host","utils_getDomain","domain","mockDomain","indexOf","isActuallySameDomain","desc","getOwnPropertyDescriptor","isAncestorParent","child","childParent","result","push","getFrames","frames","len","frame","_i","_frame","iframeWindows","iframeFrames","isWindowClosed","allowMock","closed","message","mockclosed","top","iframeIndex","collection","contentWindow","parentNode","doc","ownerDocument","documentElement","contains","getAncestor","matchDomain","pattern","origin","Array","isArray","Boolean","match","JSON","stringify","some","subpattern","isWindow","obj","Window","__cross_domain_utils_window_check__","util_safeIndexOf","_ALLOWED_POST_MESSAGE","weakmap_CrossDomainSafeWeakMap","CrossDomainSafeWeakMap","instance","Constructor","TypeError","Math","random","WeakMap","freeze","testWeakMap","testKey","set","weakmap","keys","values","_cleanupClosedWindows","delete","splice","isSafeToReadWrite","key","entry","writable","index","has","getOrSet","POST_MESSAGE_TYPE","REQUEST","RESPONSE","ACK","POST_MESSAGE_ACK","SUCCESS","ERROR","POST_MESSAGE_NAMES","METHOD","HELLO","OPEN_TUNNEL","WINDOW_TYPES","FULLPAGE","POPUP","IFRAME","WINDOW_PROPS","POSTROBOT","SERIALIZATION_TYPES","PROMISE","ZALGO_PROMISE","REGEX","SEND_STRATEGIES","POST_MESSAGE","BRIDGE","GLOBAL","MOCK_PROTOCOL","FILE_PROTOCOL","BRIDGE_NAME_PREFIX","POSTROBOT_PROXY","WILDCARD","map","ALLOW_POSTMESSAGE_POPUP","__ALLOW_POSTMESSAGE_POPUP__","BRIDGE_TIMEOUT","CHILD_WINDOW_TIMEOUT","ACK_TIMEOUT","navigator","userAgent","RES_TIMEOUT","ALLOWED_POST_MESSAGE_METHODS","ALLOW_SAME_ORIGIN","_typeof","Symbol","iterator","constructor","stringifyError","level","stack","newErr","once","method","called","apply","lib_util_noop","uniqueID","chars","replace","charAt","floor","replaceObject","callback","depth","newobj","_key","childItem","util_isRegex","utils_isPromise","Promise","_toString","then","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushPromise","flushActive","promise","resolve","startActive","endActive","ZalgoPromise","handler","_this","resolved","rejected","errorHandled","handlers","_result","_error","isAsync","res","reject","dispatch","error","_this2","_err","setTimeout","j","asyncReject","dispatching","chain","firstPromise","secondPromise","_handlers$i","_onSuccess","onSuccess","_onError","onError","_promise","_result2","catch","finally","onFinally","try","timeout","time","_this3","clearTimeout","toPromise","all","promises","count","results","prom","hash","items","onPossiblyUnhandledException","cancel","context","args","delay","_delay","isPromise","flush","global","registerSelf","serialize__typeof","methods","listenForMethods","on","_ref","source","data","meth","id","isSerialized","type","__type__","serializeMethod","destination","__id__","__name__","deserializeMethod","wrapper","slice","send","_ref2","__xdomain__","deserializeZalgoPromise","__then__","sayHello","readyPromises","SEND_MESSAGE_STRATEGIES","serializedMessage","dom","forEach","postMessage","_extends","assign","target","sendMessage","_jsonStringify","options","sourceDomain","windowType","__message__","__code__","code","regex","__source__","messages","replacer","indent","objectToJSON","arrayToJSON","toJSON","strategyName","success","status","join","responseListeners","requestListeners","WINDOW_WILDCARD","erroredResponseListeners","_RECEIVE_MESSAGE_TYPE","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","nameListeners","_i2","_ref3","_length2","winQualifier","winListeners","_i4","_winListeners$__DOMAI2","_length4","_ref5","listener","types__extends","RECEIVE_MESSAGE_TYPES","pathname","ack","respond","fireAndForget","originalSource","handleError","response","receive__typeof","receiveMessage","event","parsedMessage","parse","receivedMessages","RegExp","messageListener","sourceElement","originalEvent","targetWindow","el","document","getElementById","tagName","toLowerCase","HTMLIFrameElement","hasResult","requestPromises","requestPromise","actualParent","_i7","_getAllChildFrames4","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","childFrame","_length6","_i15","_getFrames8","_length14","actualDomain","responseListener","ackTimeout","resTimeout","cycleTime","cycle","max","min","server__typeof","listenerOptions","errorHandler","requestListener","addRequestListener","_ref6","listenersCollection","_i6","_win2","_i8","_length8","_listenersCollection","_i10","_domain2","_length10","_item","_i12","_length12","existingListener","strDomain","regexListeners","regexListener","_handler","errorOnClose","interval","runInterval","onceListener","removeEventListener","popupWindowsByWin","remoteWindows","initialized","addEventListener","attachEvent","initializationData","connection","emitter","currentAsset","_emitter","_connection","thisAsset","_changedData","getData","bind","setData","syncAsset","updateWidth","onSave","onChange","onPublish","onUnPublish","replaceAsset","asset","width","file","handleUpload","AssetSidebarWidget","configCallback","pluginMetaData","registry","title","toolbar","inMainToolbar","inHoveringToolbar","isContentstackElement","meta","elementType","editorCallbacks","isDependent","isContainer","containerMetaData","rootCategory","dependentPlugins","addPlugins","plugins","plugin","category","beforeChildrenRender","beforeElementRender","handleMouseDown","rte","config","entries","iconName","display","hoveringToolbarOptions","autoWidth","includes","dndOptions","Component","shouldOverride","containerMeta","RTEPlugin","rtePluginInitializer","additionalData","_data","currentBranch","_additionalData","setInstallationData","installationData","onData","getInstallationData","setValidity","isValid","ERROR_MESSAGES","configPage","isValidTypeBoolean","messageTypeString","AppConfig","content_type","changedData","locale","_options","thisEntry","console","log","getField","uid","useUnsavedSchema","_internalFlags","FieldInstance","path","split","schema","find","x","data_type","multiple","blocks","block","e","fieldObject","resolvedData","Entry","initData","pulse","eventName","metadata","postRobot","getConfig","installationUID","getCurrentLocation","getAppVersion","version","orgUid","org_uid","action","headers","organization_uid","skip_api_key","app","getCurrentRegion","region","appUID","app_id","locationUID","extension_uid","installation_uid","currentUser","user","store","DashboardWidget","CustomField","SidebarWidget","RTELocation","AppConfigWidget","FullscreenAppWidget","FullPage","EntryFieldLocation","FieldModifierLocation","modal","formatAppRegion","manifest","dashboard_width","installation","field","fieldConfig","field_config","emitEvent","otherData","state","initialize","sdkType","setReady","Extension","excludedDataTypesForSetField","fieldDataObject","unResolvedData","separatedData","_resolvedData","_self","fieldObj","currentFieldObj","dataObj","setFocus","Field","getTags","tags","setTags","undefined","entryField","tagsShouldNotBeBlank","every","tag","areTagsValid","tagsShouldBeArrayOfStrings","FieldModifierLocationEntry","FieldModifierLocationField","_autoResizingEnabled","updateDimension","enableAutoResizing","disableAutoResizing","closeModal","dimension","height","_height","ceil","getBoundingClientRect","_width","dimensionBody","dimensionHeightShouldBeNumber","dimensionWidthShouldBeNumber","preventFrameClose","observer","MutationObserver","observe","body","attributes","childList","subtree","disconnect","FieldModifierLocationFrame","LOG_LEVEL","_extension","ContentstackAppSDK","createMetaData","metadataConfig","entity_uid","otherMetaData","payload","retrieveMetaData","retrieveAllMetaData","params","updateMetaData","deleteMetaData","Metadata","rootElement","getPreferredBodyElement","children","setBackgroundElement","element","Modal","getReferences","environment","Query","entryQuery","language","plural","getRteAssets","getAssetsOfSpecificTypes","assetType","asset_type","publish","fetch","unpublish","_files","files","from","_","File","Date","getUTCMilliseconds","upload_type","parentFolderUid","customUploadHandler","uploadAsset","Asset","uiConnection","Proxy","Target","thisArg","argumentsList","_query","only","transform","except","addParam","contentTypeUid","create","content_type_uid","update","includeOwner","includeContentType","includeSchema","includeReference","getLanguages","unlocalize","setWorkflowStage","contentType","entryTarget","addQuery","ContentType","_extend","query","file_size","bool","concat","$exists","Utils","lessThan","lessThanOrEqualTo","greaterThan","greaterThanOrEqualTo","notEqualTo","containedIn","notContainedIn","exists","notExists","ascending","descending","beforeUid","afterUid","skip","limit","or","and","equalTo","where","mergeDeep","includeCount","include_count","getQuery","$regex","$options","search","typeahead","findOne","singleEntry","_currentBranch","branches","branch","getAllStacks","stacks","getManagementTokens","tokens","queries","apiKey","api_key","getContentType","getContentTypes","optionParams","getEnvironment","getEnvironments","getReleases","getPublishes","getLocale","getLocales","getWorkflow","getWorkflows","getAllBranches","getCurrentBranch","Stack","newTraget","oldTarget","oldSource","newTarget","_mergeRecursive","anotherTarget","_type","val","__typeof","languageCode","environmentCode","include_owner","include_content_type","include_schema","getAll","remove","clear","Store","Region","StackLocation","OrganizationLocation","NA","EU","AZURE_NA","AZURE_EU","UNKNOWN","nodeCollection","rootElementIndex","Infinity","elementPreferenceList","nonRenderingTags","elIndex","nodeName","_resizingEnabled","enableResizing","onDashboardResize","windowObj","updateHeight","isNaN","enablePaddingTop","disablePaddingTop","EventEmitter","proto","originalGlobalValue","indexOfListener","listeners","alias","isValidListener","getListeners","evt","events","_getEvents","test","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","__webpack_module_cache__","__webpack_require__","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/src/RTE/index.d.ts.map b/dist/src/RTE/index.d.ts.map index ce2911b..1ad4018 100644 --- a/dist/src/RTE/index.d.ts.map +++ b/dist/src/RTE/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/RTE/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,SAAS,EAEZ,MAAM,SAAS,CAAC;AAEjB,qBAAa,SAAS;IAiCM,OAAO,CAAC,cAAc;IAhC9C,OAAO,CAAC,cAAc,CAepB;IACF,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,iBAAiB,CAavB;gBAEU,EAAE,EAAE,MAAM,EAAU,cAAc,EAAE,eAAe;IAI/D,UAAU,eAAgB,SAAS,EAAE,UAoBnC;IAEF,EAAE,oFAmCA;IAEF,GAAG,QAAe,SAAS,GAAG,IAAI,mDAuGhC;CACL;AAED,eAAO,MAAM,oBAAoB,OACzB,MAAM,kBACM,eAAe,cAKlC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/RTE/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,SAAS,EAEZ,MAAM,SAAS,CAAC;AAEjB,qBAAa,SAAS;IAiCM,OAAO,CAAC,cAAc;IAhC9C,OAAO,CAAC,cAAc,CAepB;IACF,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,iBAAiB,CAavB;gBAEU,EAAE,EAAE,MAAM,EAAU,cAAc,EAAE,eAAe;IAI/D,UAAU,eAAgB,SAAS,EAAE,UAoBnC;IAEF,EAAE,oFAmCA;IAEF,GAAG,QAAe,SAAS,GAAG,IAAI,mDA8GhC;CACL;AAED,eAAO,MAAM,oBAAoB,OACzB,MAAM,kBACM,eAAe,cAKlC,CAAC"} \ No newline at end of file diff --git a/dist/src/RTE/types.d.ts b/dist/src/RTE/types.d.ts index a1c1be1..5032a4b 100644 --- a/dist/src/RTE/types.d.ts +++ b/dist/src/RTE/types.d.ts @@ -142,11 +142,15 @@ export declare interface IRteElementType { children: Array; } declare type IDynamicFunction = ((element: IRteElementType) => Exclude | Exclude[]); +declare type IHoveringToolbarOptions = { + autoWidth?: boolean; +}; export declare interface IConfig { title: string; icon: React.ReactElement | null; display: IDisplayOnOptions | IDisplayOnOptions[]; elementType: IElementTypeOptions | IElementTypeOptions[] | IDynamicFunction; + hoveringToolbarOptions?: IHoveringToolbarOptions; render?: (...params: any) => ReactElement; shouldOverride?: (element: IRteElementType) => boolean; } @@ -166,6 +170,9 @@ export declare interface IRegistry { inMainToolbar: boolean; inHoveringToolbar: boolean; }; + hoveringToolbarOptions?: { + autoWidth: true; + }; isContentstackElement: boolean; beforeChildrenRender?: (...params: any) => any; beforeElementRender?: (...params: any) => any; diff --git a/dist/src/RTE/types.d.ts.map b/dist/src/RTE/types.d.ts.map index 38b1a33..18eebcf 100644 --- a/dist/src/RTE/types.d.ts.map +++ b/dist/src/RTE/types.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/RTE/types.tsx"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/RTE/types.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/RTE/index.tsx b/src/RTE/index.tsx index d8221e4..0df25c5 100644 --- a/src/RTE/index.tsx +++ b/src/RTE/index.tsx @@ -158,6 +158,13 @@ export class RTEPlugin { break; } + case "hoveringToolbarOptions": { + this.pluginMetaData.registry.hoveringToolbarOptions = { + autoWidth: value?.autoWidth + } + break; + } + case "elementType": { const isInline = ( typeof value === 'string' && value === 'inline' || diff --git a/src/RTE/types.tsx b/src/RTE/types.tsx index 1fc70ea..6ebc71c 100644 --- a/src/RTE/types.tsx +++ b/src/RTE/types.tsx @@ -207,11 +207,15 @@ export declare interface IRteElementType { } type IDynamicFunction = ((element: IRteElementType) => Exclude | Exclude[]) +type IHoveringToolbarOptions = { + autoWidth?: boolean; +} export declare interface IConfig { title: string; icon: React.ReactElement | null; display: IDisplayOnOptions | IDisplayOnOptions[]; elementType: IElementTypeOptions | IElementTypeOptions[] | IDynamicFunction; + hoveringToolbarOptions?: IHoveringToolbarOptions; render?: (...params: any) => ReactElement; shouldOverride?: (element: IRteElementType) => boolean } @@ -233,6 +237,9 @@ export declare interface IRegistry { inMainToolbar: boolean; inHoveringToolbar: boolean; }; + hoveringToolbarOptions?: { + autoWidth: true; + } isContentstackElement: boolean; beforeChildrenRender?: (...params: any) => any; beforeElementRender?: (...params: any) => any; From 0b39a954eec462847ac1f9a2dad1f1774e607fb8 Mon Sep 17 00:00:00 2001 From: Abhishek Ezhava Date: Thu, 2 May 2024 17:41:11 +0530 Subject: [PATCH 5/8] feat: entry type & getvariantbyid support --- src/stack/index.ts | 12 ++++++++++++ src/types/entry.types.ts | 4 +++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/stack/index.ts b/src/stack/index.ts index b482835..0f4c2ff 100755 --- a/src/stack/index.ts +++ b/src/stack/index.ts @@ -3,6 +3,7 @@ import ContentType from './api/content-type/index'; import { onData, onError } from "../utils/utils"; import { BranchDetail, GetAllStacksOptions, StackAdditionalData, StackDetail, StackSearchQuery } from '../types/stack.types'; import { IManagementTokenDetails } from '../types'; +import { GenericObjectType } from "../types/common.types"; /** @@ -272,6 +273,17 @@ class Stack { getCurrentBranch(): BranchDetail | null { return this._currentBranch; } + + /** + * Returns variant groups details. + * @returns variant groups details. + */ + getVariantById(query={}, params = {}) { + const optionParams: GenericObjectType = params; + optionParams.query = query; + const options = { params: optionParams, action: 'getVariantById' }; + return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError); + } } export default Stack; diff --git a/src/types/entry.types.ts b/src/types/entry.types.ts index 90083a2..0919335 100644 --- a/src/types/entry.types.ts +++ b/src/types/entry.types.ts @@ -1,5 +1,5 @@ import Field from "../field"; -import { AnyProperty } from "./common.types"; +import { AnyProperty, GenericObjectType } from "./common.types"; export declare interface IGetFieldOptions { /** @@ -47,4 +47,6 @@ export interface Entry extends AnyProperty { publish_details: Array; locale: string; url?: string; + variant_uid?: string; + _variant?: GenericObjectType } From d1abd07cca02e4d1521484f4caae4b1f7d780fba Mon Sep 17 00:00:00 2001 From: Abhishek Ezhava Date: Fri, 3 May 2024 12:24:56 +0530 Subject: [PATCH 6/8] fix: variant id in params --- src/stack/index.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/stack/index.ts b/src/stack/index.ts index 0f4c2ff..aeae48d 100755 --- a/src/stack/index.ts +++ b/src/stack/index.ts @@ -278,10 +278,11 @@ class Stack { * Returns variant groups details. * @returns variant groups details. */ - getVariantById(query={}, params = {}) { - const optionParams: GenericObjectType = params; - optionParams.query = query; - const options = { params: optionParams, action: 'getVariantById' }; + getVariantById(variant_uid:string) { + if (!variant_uid) { + return Promise.reject(new Error('variant uid is required')); + } + const options = { params: {uid : variant_uid}, action: 'getVariantById' }; return this._connection.sendToParent('stackQuery', options).then(onData).catch(onError); } } From 374af814985c080184c2149506aa828d7eafd753 Mon Sep 17 00:00:00 2001 From: Nilesh-y Date: Mon, 13 May 2024 15:47:15 +0530 Subject: [PATCH 7/8] chore: add review changes --- src/entry.ts | 4 ++-- src/types.ts | 9 +++------ src/uiLocation.ts | 4 ++-- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/entry.ts b/src/entry.ts index 0588f1a..a8281a2 100755 --- a/src/entry.ts +++ b/src/entry.ts @@ -5,7 +5,7 @@ import Field from "./field"; import { IFieldInitData, IFieldModifierLocationInitData, - IRTELocationInitData, + IRTEInitData, ISidebarInitData, } from "./types"; import { Entry as EntryType } from "../src/types/entry.types"; @@ -36,7 +36,7 @@ class Entry { initializationData: | IFieldInitData | ISidebarInitData - | IRTELocationInitData + | IRTEInitData | IFieldModifierLocationInitData, connection: typeof postRobot, emitter: EventEmitter, diff --git a/src/types.ts b/src/types.ts index e43bab3..ccc68e7 100644 --- a/src/types.ts +++ b/src/types.ts @@ -111,12 +111,6 @@ export declare interface ISidebarInitData extends ICommonInitData { type: LocationType.WIDGET; } -export declare interface IRTELocationInitData extends ICommonInitData { - content_type: ContentType; - entry: Entry; - locale: string; -} - export declare interface IFieldInitData extends ICommonInitData { config?: GenericObjectType; content_type: ContentType; @@ -138,6 +132,9 @@ export declare interface IFullPageLocationInitData extends ICommonInitData { export declare interface IRTEInitData extends ICommonInitData { config?: GenericObjectType; type: LocationType.RTE; + entry: Entry; + content_type: ContentType; + locale: string; } export declare interface IAppConfigInitData extends ICommonInitData { diff --git a/src/uiLocation.ts b/src/uiLocation.ts index e813f54..6c5df3b 100755 --- a/src/uiLocation.ts +++ b/src/uiLocation.ts @@ -19,7 +19,7 @@ import { IDashboardWidget, IFieldModifierLocation, IFullPageLocation, - IRTELocationInitData, + IRTEInitData, ISidebarWidget, InitializationData, LocationType, @@ -221,7 +221,7 @@ class UiLocation { this.location.RTEPlugin = rtePluginInitializer; this.location.RTELocation = { entry: new Entry( - initializationData as IRTELocationInitData, + initializationData as IRTEInitData, postRobot, emitter ), From dadc8e0d2d8dda6163e368e8ad05acb0dcc6b76d Mon Sep 17 00:00:00 2001 From: Nilesh-y Date: Mon, 13 May 2024 16:38:50 +0530 Subject: [PATCH 8/8] chore: use existing types --- src/RTE/types.tsx | 4 ---- src/uiLocation.ts | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/RTE/types.tsx b/src/RTE/types.tsx index 6e41334..ed3d7c6 100644 --- a/src/RTE/types.tsx +++ b/src/RTE/types.tsx @@ -141,10 +141,6 @@ export declare interface IRteParam { setVariable: (name: string, value: T) => void; } -export declare interface IRTELocation { - [key: string]: any; -} - export declare type IRteParamWithPreventDefault = { rte: IRteParam; preventDefault: () => void; diff --git a/src/uiLocation.ts b/src/uiLocation.ts index 6c5df3b..049c187 100755 --- a/src/uiLocation.ts +++ b/src/uiLocation.ts @@ -2,7 +2,7 @@ import postRobot from "post-robot"; import EventEmitter from "wolfy87-eventemitter"; import AssetSidebarWidget from "./AssetSidebarWidget"; -import { IRTELocation, IRTEPluginInitializer } from "./RTE/types"; +import { IRTEPluginInitializer } from "./RTE/types"; import { AppConfig } from "./appConfig"; import Entry from "./entry"; import Field from "./field"; @@ -109,7 +109,7 @@ class UiLocation { SidebarWidget: ISidebarWidget | null; CustomField: ICustomField | null; RTEPlugin: IRTEPluginInitializer | null; - RTELocation: IRTELocation | null; + RTELocation: GenericObjectType | null; AppConfigWidget: IAppConfigWidget | null; AssetSidebarWidget: AssetSidebarWidget | null; FullPage: IFullPageLocation | null;