@contentful/app-sdk 4.58.3 → 4.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("contentful-management")):"function"==typeof define&&define.amd?define(["exports","contentful-management"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).contentfulExtension={},e.contentfulManagement)}(this,function(e,t){"use strict";var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},n(e,t)};function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},o.apply(this,arguments)};function i(e,t,n,r){return new(n||(n=Promise))(function(o,i){function a(e){try{u(r.next(e))}catch(e){i(e)}}function s(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,s)}u((r=r.apply(e,t||[])).next())})}function a(e,t){var n,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=s(0),a.throw=s(1),a.return=s(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(s){return function(u){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,r=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){i.label=s[1];break}if(6===s[0]&&i.label<o[1]){i.label=o[1],o=s;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(s);break}o[2]&&i.ops.pop(),i.trys.pop();continue}s=t.call(e,i)}catch(e){s=[6,e],r=0}finally{n=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,u])}}}"function"==typeof SuppressedError&&SuppressedError;var s=function(){function e(){this._id=0,this._listeners={}}return e.prototype.dispatch=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var r in this._listeners)(e=this._listeners)[r].apply(e,t)},e.prototype.attach=function(e){var t=this;if("function"!=typeof e)throw new Error("listener function expected");var n=this._id++;return this._listeners[n]=e,function(){return delete t._listeners[n]}},e}(),u=function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.call(this)||this;if(!t.length)throw new Error("Initial value to be memoized expected");return r._memoizedArgs=t,r}return r(t,e),t.prototype.dispatch=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._memoizedArgs=t,e.prototype.dispatch.apply(this,t)},t.prototype.attach=function(t){var n=e.prototype.attach.call(this,t);return t.apply(void 0,this._memoizedArgs),n},t.prototype.getMemoizedArgs=function(){return this._memoizedArgs},t}(s);var l,c=function(){function e(e,t){var n=this;this._messageHandlers={},this._responseHandlers={},this._send=function(e,t){return function(n,r){var o=d.getMessageId();try{t.postMessage({source:e,id:o,method:n,params:r},"*")}catch(e){throw e instanceof DOMException&&"DataCloneError"===e.name&&"openDialog"===n&&console.error("Error: openCurrent[App] parameters could not be parsed. You likely tried to pass functions or DOM elements as a parameter. Tip: Use the App SDK directly within the dialog location.\n\nLearn more about the dialog location: https://ctfl.io/app-sdk-dialog"),e}return o}}(e,t.parent),t.addEventListener("message",function(e){n._handleMessage(e.data)})}return e.prototype.call=function(e){for(var t=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var o=this._send(e,n);return new Promise(function(e,n){t._responseHandlers[o]={resolve:e,reject:n}})},e.prototype.send=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];this._send(e,t)},e.prototype.addHandler=function(e,t){return e in this._messageHandlers||(this._messageHandlers[e]=new s),this._messageHandlers[e].attach(t)},e.prototype._handleMessage=function(e){if(e.method){var t=e.method,n=e.params,r=this._messageHandlers[t];r&&r.dispatch.apply(r,n)}else{var o=e.id,i=this._responseHandlers[o];if(!i)return;"result"in e?i.resolve(e.result):"error"in e&&i.reject(e.error),delete this._responseHandlers[o]}},e}(),d=(l=0,{getMessageId:function(){return l++}});var p=function(){function e(e,t){var n=this;this.id=t.id,this.name=t.name,this.locale=t.locale,this.required=t.required,this.validations=t.validations,this._value=t.value,this._valueSignal=new u(this._value),this._isDisabledSignal=new u(t.isDisabled),this._schemaErrorsChangedSignal=new u(t.schemaErrors),this._channel=e,e.addHandler("valueChanged",function(e,t,r){e!==n.id||t&&t!==n.locale||(n._value=r,n._valueSignal.dispatch(r))}),e.addHandler("isDisabledChangedForFieldLocale",function(e,t,r){e===n.id&&t===n.locale&&n._isDisabledSignal.dispatch(r)}),e.addHandler("schemaErrorsChangedForFieldLocale",function(e,t,r){e===n.id&&t===n.locale&&n._schemaErrorsChangedSignal.dispatch(r)})}return e.prototype.getValue=function(){return this._value},e.prototype.setValue=function(e){return i(this,void 0,void 0,function(){return a(this,function(t){switch(t.label){case 0:return this._value=e,[4,this._channel.call("setValue",this.id,this.locale,e)];case 1:return[2,t.sent()]}})})},e.prototype.removeValue=function(){return i(this,void 0,void 0,function(){return a(this,function(e){switch(e.label){case 0:return this._value=void 0,[4,this._channel.call("removeValue",this.id,this.locale)];case 1:return e.sent(),[2]}})})},e.prototype.setInvalid=function(e){return this._channel.call("setInvalid",e,this.locale)},e.prototype.onValueChanged=function(e){return this._valueSignal.attach(e)},e.prototype.getIsDisabled=function(){return this._isDisabledSignal.getMemoizedArgs()[0]},e.prototype.onIsDisabledChanged=function(e){return this._isDisabledSignal.attach(e)},e.prototype.getSchemaErrors=function(){return this._schemaErrorsChangedSignal.getMemoizedArgs()[0]},e.prototype.onSchemaErrorsChanged=function(e){return this._schemaErrorsChangedSignal.attach(e)},e}(),f=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type=n.type,r}return r(t,e),t}(p),h=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type=n.type,r.items=n.items,r}return r(t,e),t}(p),g=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type=n.type,r.linkType=n.linkType,r}return r(t,e),t}(p);function y(e,t){switch(t.type){case"Link":return new g(e,t);case"Array":return new h(e,t);default:return new f(e,t)}}var v=function(){function e(e,t,n){var r=this;this.id=t.id,this.name=t.name,this.locales=t.locales,this.required=t.required,this.validations=t.validations,this._defaultLocale=n,this._fieldLocales=t.locales.reduce(function(n,i){var a,s=y(e,r.toFieldInfo(t,i));return o(o({},n),((a={})[i]=s,a))},{}),this.assertHasLocale(n)}return e.prototype.getValue=function(e){return this._getFieldLocale(e).getValue()},e.prototype.setValue=function(e,t){return i(this,void 0,void 0,function(){return a(this,function(n){switch(n.label){case 0:return[4,this._getFieldLocale(t).setValue(e)];case 1:return[2,n.sent()]}})})},e.prototype.removeValue=function(e){return i(this,void 0,void 0,function(){return a(this,function(t){switch(t.label){case 0:return[4,this.setValue(void 0,e)];case 1:return t.sent(),[2]}})})},e.prototype.onValueChanged=function(e,t){var n=t||e;return t||(e=""),this._getFieldLocale(e).onValueChanged(n)},e.prototype.onIsDisabledChanged=function(e,t){var n=t||e;return t||(e=""),this._getFieldLocale(e).onIsDisabledChanged(n)},e.prototype._getFieldLocale=function(e){return e=e||this._defaultLocale,this.assertHasLocale(e),this._fieldLocales[e]},e.prototype.getForLocale=function(e){if(!e)throw new Error("getForLocale must be passed a locale");return this._getFieldLocale(e)},e.prototype.assertHasLocale=function(e){if(!this._fieldLocales[e])throw new Error('Unknown locale "'.concat(e,'" for field "').concat(this.id,'"'))},e.prototype.toFieldInfo=function(e,t){var n={id:e.id,name:e.name,required:e.required,validations:e.validations,locale:t,value:e.values[t],isDisabled:e.isDisabled[t],schemaErrors:e.schemaErrors[t]};switch(e.type){case"Array":return o(o({},n),{type:e.type,items:e.items});case"Link":return o(o({},n),{type:e.type,linkType:e.linkType});default:return o(o({},n),{type:e.type})}},e}(),m=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.type=n.type,o}return r(t,e),t}(v),E=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.type=n.type,o.items=n.items,o}return r(t,e),t}(v),A=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.type=n.type,o.linkType=n.linkType,o}return r(t,e),t}(v);function C(e,t){var n,r=e.document,o=e.MutationObserver,i=e.ResizeObserver,a=!1,s=!1,u=new Set,l=new o(function(e){!function(e){e.forEach(function(e){switch(e.type){case"attributes":if(e.target.nodeType===Node.ELEMENT_NODE){var t=e.target;p(e.type,t)?u.add(t):u.delete(t)}break;case"childList":e.addedNodes.forEach(function(t){if(t.nodeType===Node.ELEMENT_NODE){var n=t;p(e.type,n)&&u.add(n)}}),e.removedNodes.forEach(function(e){var t=e;u.delete(t)})}})}(e),a&&d.updateHeight()}),c=new i(function(){d.updateHeight()});l.observe(r.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0});var d={startAutoResizer:function(e){var t=void 0===e?{}:e,n=t.absoluteElements;if(s=Boolean(n===void 0?false:n),d.updateHeight(),a)return;a=!0,c.observe(r.body)},stopAutoResizer:function(){if(!a)return;a=!1,c.disconnect()},updateHeight:function(e){void 0===e&&(e=null);if(null===e){var o=Math.ceil(r.documentElement.getBoundingClientRect().height);if(s&&u.size){var i=o;u.forEach(function(e){i=Math.max(e.getBoundingClientRect().bottom,i)}),e=i}else e=o}e!==n&&(t.send("setHeight",e),n=e)}};return d;function p(e,t){var n=getComputedStyle(t);return"absolute"===n.position&&("attributes"!==e||"none"!==n.display)}}var b=["getTask","getTasks","createTask","updateTask","deleteTask"];function w(e,t,n,r){var i=t.sys,a=_(i),s=new u(i),l=t.metadata,c=new u(l);e.addHandler("sysChanged",function(e){a=_(i=e),s.dispatch(i)}),e.addHandler("metadataChanged",function(e){l=e,c.dispatch(l)});var d={};return b.forEach(function(t){d[t]=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return e.call("callEntryMethod",t,n)}}),o(o(o({getSys:function(){return i},publish:function(t){if(a)throw new Error('SDK method "publish" is not supported in release context');return e.call("callEntryMethod","publish",[t])},unpublish:function(){if(a)throw new Error('SDK method "unpublish" is not supported in release context');return e.call("callEntryMethod","unpublish")},save:function(){return e.call("callEntryMethod","save")},onSysChanged:function(e){return s.attach(e)},fields:n.reduce(function(e,t){return e[t.id]=r(t),e},{})},l?{metadata:l}:{}),{getMetadata:function(){return l},onMetadataChanged:function(e){return c.attach(e)}}),d)}function _(e){var t,n;return!!(null===(n=null===(t=null==e?void 0:e.release)||void 0===t?void 0:t.sys)||void 0===n?void 0:n.id)}function T(e,t){if(!t)throw new Error("Asset data is required");var n=t.sys,r=new u(n),o=t.metadata,i=new u(o);return e.addHandler("sysChanged",function(e){n=e,r.dispatch(n)}),e.addHandler("metadataChanged",function(e){o=e,i.dispatch(o)}),{getSys:function(){return n},publish:function(t){return e.call("callAssetMethod","publish",[t])},unpublish:function(){return e.call("callAssetMethod","unpublish")},save:function(){return e.call("callAssetMethod","save")},onSysChanged:function(e){return r.attach(e)},getMetadata:function(){return o},onMetadataChanged:function(e){return i.attach(e)}}}var I=["getContentType","getEntry","getEntrySnapshots","getAsset","getEditorInterface","getPublishedEntries","getPublishedAssets","getContentTypes","getEntries","getEditorInterfaces","getAssets","createContentType","createEntry","createAsset","updateContentType","updateEntry","updateAsset","deleteContentType","deleteEntry","deleteAsset","publishEntry","publishAsset","unpublishEntry","unpublishAsset","archiveEntry","archiveAsset","unarchiveEntry","unarchiveAsset","createUpload","processAsset","waitUntilAssetProcessed","getUsers","getAllScheduledActions","getEntityScheduledActions","signRequest","createTag","readTags","updateTag","deleteTag","getTeams"];function L(e,t){var n={};return I.forEach(function(t){n[t]=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return console.warn("You called ".concat(String(t)," on the Space API. Since version 4.0.0 the Space API and its methods are deprecated, and they will be removed from version 5.0.0 on. We recommend that you use the CMA client instead. See https://www.contentful.com/developers/docs/extensibility/app-framework/sdk/#using-the-contentful-management-library for more details.")),e.call("callSpaceMethod",t,n)}}),n.getCachedContentTypes=function(){return function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}([],t,!0)},n}var x=function(e){return"object"!=typeof(t=e)||null===t||Array.isArray(t)?{}:e;var t};function O(e,t){return{openAlert:n.bind(null,"alert"),openConfirm:n.bind(null,"confirm"),openPrompt:n.bind(null,"prompt"),openExtension:r,openCurrentApp:i,openCurrent:function(e){return t.app?i(e):r(o(o({},e),{id:t.extension}))},selectSingleEntry:a.bind(null,"Entry",!1),selectSingleAsset:a.bind(null,"Asset",!1),selectMultipleEntries:a.bind(null,"Entry",!0),selectMultipleAssets:a.bind(null,"Asset",!0),selectSingleExperience:a.bind(null,"Experience",!1),selectMultipleExperiences:a.bind(null,"Experience",!0),selectSinglePattern:a.bind(null,"Pattern",!1),selectMultiplePatterns:a.bind(null,"Pattern",!0),selectSingleComponentDefinition:a.bind(null,"ComponentDefinition",!1),selectMultipleComponentDefinitions:a.bind(null,"ComponentDefinition",!0)};function n(t,n){return e.call("openDialog",t,x(n))}function r(n){var r=x(n);if((r=o(o({},r),{id:r.id||t.extension})).id)return e.call("openDialog","extension",r);throw new Error("Extension ID not provided.")}function i(n){if(n=x(n),t.app){var r=o(o({},n),{id:t.app});return e.call("openDialog","app",r)}throw new Error("Not in the app context.")}function a(t,n,r){return(r=x(r)).entityType=t,r.multiple=n,e.call("openDialog","entitySelector",r)}}function S(e,t,n){var r=new u(n.localeSettings),o=new u(n.showHiddenFields);return e.addHandler("localeSettingsChanged",function(e){r.dispatch(e)}),e.addHandler("showHiddenFieldsChanged",function(e){o.dispatch(e)}),{editorInterface:t,getLocaleSettings:function(){return r.getMemoizedArgs()[0]},onLocaleSettingsChanged:function(e){return r.attach(e)},onShowDisabledFieldsChanged:function(e){return o.attach(e)},getShowHiddenFields:function(){return o.getMemoizedArgs()[0]},onShowHiddenFieldsChanged:function(e){return o.attach(e)}}}function D(e,t,n){var r,i=new s;e.addHandler("navigateSlideIn",function(e){i.dispatch(e)});var a=n?null===(r=n.sys)||void 0===r?void 0:r.id:void 0;return{openEntry:function(t,n){return e.call("navigateToContentEntity",o(o({},n),{entityType:"Entry",id:t,releaseId:a}))},openNewEntry:function(t,n){return e.call("navigateToContentEntity",o(o({},n),{entityType:"Entry",id:null,contentTypeId:t}))},openBulkEditor:function(t,n){return e.call("navigateToBulkEditor",o({entryId:t},n))},openAsset:function(t,n){return e.call("navigateToContentEntity",o(o({},n),{entityType:"Asset",id:t,releaseId:a}))},openNewAsset:function(t){return e.call("navigateToContentEntity",o(o({},t),{entityType:"Asset",id:null}))},openPageExtension:function(n){return e.call("navigateToPage",o({type:"extension",id:t.extension},n))},openCurrentAppPage:function(n){return e.call("navigateToPage",o({type:"app",id:t.app},n))},openAppConfig:function(){return e.call("navigateToAppConfig")},openEntriesList:function(){return e.call("navigateToSpaceEnvRoute",{route:"entries",releaseId:a})},openAssetsList:function(){return e.call("navigateToSpaceEnvRoute",{route:"assets",releaseId:a})},onSlideInNavigation:function(e){return i.attach(e)}}}var N="preInstall",P="postInstall",M=function(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)},H=function(e){return"function"==typeof e},R=function(e){return console.error(e),Promise.resolve(!1)},k=function(e,t,n){if(!H(e))return Promise.resolve(t);var r;try{r=void 0===n?e():e(n)}catch(e){return R(e)}var o,i=r;return M(o=i)&&H(o.then)||(i=Promise.resolve(i)),i.then(function(e){return e instanceof Error?Promise.reject(e):!1!==e&&(M(e)?e:t)},R).catch(R)};function F(e){var t,n=((t={})[N]=null,t[P]=null,t),r=function(e,t){if(!H(t))throw new Error("Handler must be a function.");n[e]=t};return e.addHandler("appHook",function(t){var r=t.stage,o=t.installationRequestId,i=t.err;return r===N?k(n[r],{}).then(function(t){return e.send("appHookResult",{stage:r,installationRequestId:o,result:t})}):r===P?k(n[r],void 0,i||null).then(function(){return e.send("appHookResult",{stage:r,installationRequestId:o})}):Promise.resolve()}),{setReady:function(){return e.call("callAppMethod","setReady")},isInstalled:function(){return e.call("callAppMethod","isInstalled")},getParameters:function(){return e.call("callAppMethod","getParameters")},getCurrentState:function(){return e.call("callAppMethod","getCurrentState")},onConfigure:function(e){r(N,e)},onConfigurationCompleted:function(e){r(P,e)}}}function z(e,t){if(!t)throw new Error("Context data is required");var n=new u(t),r=new s,o=new u("normal");return e.addHandler("contextChanged",function(e){n.dispatch(e)}),e.addHandler("toolbarAction",function(e){r.dispatch(e)}),e.addHandler("agentLayoutVariantChanged",function(e){o.dispatch(e)}),{onContextChange:function(e){return n.attach(e)},onToolbarAction:function(e){return r.attach(e)},onAgentLayoutVariantChange:function(e){return o.attach(e)},setAgentLayoutVariant:function(t){if("expanded"!==t&&"normal"!==t)throw new Error('Invalid layout variant "'.concat(t,'". Expected "expanded" or "normal".'));e.send("setAgentLayoutVariant",t)}}}function V(e,t){var n,r;if(void 0===t)throw new Error("Context data is required");var i=null!==(n=t.context)&&void 0!==n?n:{type:"experience",entityId:""},a=new u(i);e.addHandler("exo.contextChanged",function(e){a.dispatch(e)});var s=null!==(r=t.uiMode)&&void 0!==r?r:"form",l=new u(s);e.addHandler("exo.uiModeChanged",function(e){l.dispatch(e.mode)});var c=function(e,t){var n=new u(null!=t?t:{sys:{id:"",type:"Experience",version:0,template:{sys:{type:"ResourceLink",linkType:"Contentful:Template",urn:""}}}});e.addHandler("exo.experienceChanged",function(e){n.dispatch(e)});var r=function(e){var t=new u({nodeId:null});return e.addHandler("exo.selectionChanged",function(e){t.dispatch(e)}),{get:function(){return t.getMemoizedArgs()[0]},onChange:function(e){return t.attach(e)},set:function(t){e.send("exo.setSelection",{nodeId:t})},highlight:function(t,n){e.send("exo.highlightNode",o({nodeId:t},n))}}}(e),i=function(e){var t={id:"",parameters:{}},n=new u(t);return e.addHandler("exo.dataAssemblyChanged",function(e){n.dispatch(e)}),{get:function(){return n.getMemoizedArgs()[0]},getParameters:function(){return e.call("exo.getDataAssemblyParameters")},getParameter:function(t){return e.call("exo.getDataAssemblyParameter",t)},setParameter:function(t,n){return e.call("exo.setDataAssemblyParameter",t,n)},setParameters:function(t){return e.call("exo.setDataAssemblyParameters",t)},onChange:function(e){return n.attach(e)}}}(e),a=new Map;return{get:function(){return n.getMemoizedArgs()[0]},onChange:function(e){return n.attach(e)},save:function(){return e.call("exo.saveExperience")},publish:function(){return e.call("exo.publishExperience")},getNode:function(t){var n=a.get(t);return void 0===n&&(n=function(e,t,n){void 0===n&&(n="Component");var r=new u({id:t,nodeType:n});return e.addHandler("exo.nodeChanged.".concat(t),function(e){r.dispatch(e)}),{id:t,nodeType:n,get:function(){return r.getMemoizedArgs()[0]},onChange:function(e){return r.attach(e)},getContentProperty:function(n){return e.call("exo.getNodeContentProperty",t,n)},setContentProperty:function(n,r){return e.call("exo.setNodeContentProperty",t,n,r)},onContentPropertyChanged:function(n,r){return e.addHandler("exo.nodeContentPropertyChanged.".concat(t,".").concat(n),r)},getDesignProperty:function(n){return e.call("exo.getNodeDesignProperty",t,n)},setDesignProperty:function(n,r){return e.call("exo.setNodeDesignProperty",t,n,r)},onDesignPropertyChanged:function(n,r){return e.addHandler("exo.nodeDesignPropertyChanged.".concat(t,".").concat(n),r)},getProperties:function(){return e.call("exo.getNodeProperties",t)},getSlotDescriptor:function(){return e.call("exo.getNodeSlotDescriptor",t)}}}(e,t),a.set(t,n)),n},getRootNodes:function(){return[]},selection:r,dataAssembly:i}}(e,t.experience);return{get context(){return a.getMemoizedArgs()[0]},onContextChanged:function(e){return a.attach(e)},getUiMode:function(){return l.getMemoizedArgs()[0]},onUiModeChanged:function(e){return l.attach(e)},experience:c}}var q,j={LOCATION_ENTRY_FIELD:"entry-field",LOCATION_ENTRY_FIELD_SIDEBAR:"entry-field-sidebar",LOCATION_ENTRY_SIDEBAR:"entry-sidebar",LOCATION_ASSET_SIDEBAR:"asset-sidebar",LOCATION_DIALOG:"dialog",LOCATION_ENTRY_EDITOR:"entry-editor",LOCATION_PAGE:"page",LOCATION_APP_CONFIG:"app-config",LOCATION_HOME:"home",LOCATION_AGENT:"agent",LOCATION_EXPERIENCE_TOOLBAR:"experience-toolbar"},B=function(e){return function(t){return e.call("CMAAdapterCall",t)}};function Y(e){return{makeRequest:B(e)}}function G(e,n){var r;return t.createClient({apiAdapter:Y(n)},{type:"plain",defaults:{environmentId:null!==(r=e.environmentAlias)&&void 0!==r?r:e.environment,spaceId:e.space,organizationId:e.organization,releaseId:e.release}})}var U=[W,Q,function(e,t){var n=t.field;if(!n)throw new Error('FieldAPI called for location without "field" property defined.');return{field:y(e,n)}},J,X],K=((q={})[j.LOCATION_ENTRY_FIELD]=U,q[j.LOCATION_ENTRY_FIELD_SIDEBAR]=U,q[j.LOCATION_ENTRY_SIDEBAR]=[W,Q,J,X],q[j.LOCATION_ASSET_SIDEBAR]=[W,function(e,t){var n=t.asset;return{asset:T(e,n)}},X],q[j.LOCATION_ENTRY_EDITOR]=[W,Q,J],q[j.LOCATION_DIALOG]=[W,function(e){return{close:function(t){return e.send("closeDialog",t)}}},X],q[j.LOCATION_PAGE]=[W],q[j.LOCATION_HOME]=[W],q[j.LOCATION_APP_CONFIG]=[W,function(e){return{app:F(e)}}],q[j.LOCATION_AGENT]=[W,function(e,t){var n=t.agent;return{agent:z(e,n)}},X],q[j.LOCATION_EXPERIENCE_TOOLBAR]=[W,function(e,t){return{exo:V(e,t.exo)}}],q);function W(e,t){var n=t.user,r=t.parameters,o=t.locales,i=t.ids,a=t.initialContentTypes,s=t.hostnames,u=t.release,l=t.uiLanguageLocale,c=t.location||j.LOCATION_ENTRY_FIELD;return{cma:G(i,e),cmaAdapter:Y(e),location:{is:function(e){return c===e}},user:n,parameters:r,locales:{available:o.available,default:o.default,names:o.names,fallbacks:o.fallbacks,optional:o.optional,direction:o.direction},space:L(e,a),dialogs:O(e,i),navigator:D(e,i,u),notifier:{success:function(t){return e.send("notify",{type:"success",message:t})},error:function(t){return e.send("notify",{type:"error",message:t})},warning:function(t){return e.send("notify",{type:"warning",message:t})}},ids:i,hostnames:s,release:u,uiLanguageLocale:l,access:{can:function(t,n,r){return e.call("checkAccess",t,n,r)},canEditAppConfig:function(){return e.call("checkAppConfigAccess")}}}}function X(e,t,n){return{window:C(n,e)}}function J(e,t){return{editor:S(e,t.editorInterface,t.editor)}}function Q(e,t){var n=t.locales,r=t.contentType,o=t.entry,i=t.fieldInfo;return{contentType:r,entry:w(e,o,i,function(t){return function(e,t,n){switch(t.type){case"Array":return new E(e,t,n);case"Link":return new A(e,t,n);default:return new m(e,t,n)}}(e,t,n.default)})}}var Z=function(e,t){if(void 0===e.window||void 0===e.document)return function(){};var n,r,o=((n={promise:null,resolve:null,isFulfilled:!1}).promise=new Promise(function(e){n.resolve=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];n.isFulfilled=!0,e.apply(void 0,t)}}),n);return o.promise.then(function(t){var n=t[0],r=e.document;r.addEventListener("focus",function(){return n.send("setActive",!0)},!0),r.addEventListener("blur",function(){return n.send("setActive",!1)},!0)}),function(e,t){!function(e,t){function n(r){var o=r.data;"connect"===o.method&&(e.removeEventListener("message",n),t.apply(void 0,o.params))}e.addEventListener("message",n)}(e,function(n,r){var o=new c(n.id,e);t(o,n,r)})}(e,function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return o.resolve(e)}),function(n,i){var a=void 0===i?{supressIframeWarning:!1}:i,s=a.makeCustomApi;a.supressIframeWarning||function(e){e.self===e.top&&console.error("Cannot use App SDK outside of Contenful:\n\nIn order for the App SDK to function correctly, your app needs to be run in an iframe in the Contentful Web App, Compose or Launch.\n\nLearn more about local development with the App SDK here:\nhttps://www.contentful.com/developers/docs/extensibility/ui-extensions/faq/#how-can-i-develop-with-the-ui-extension-sdk-locally")}(e),r||(r=o.promise.then(function(n){var r,o=n[0],i=n[1],a=n[2],u=t(o,i,e);return"function"==typeof s&&(r=s(o,i)),a.forEach(function(e){o._handleMessage(e)}),[u,r]}),o.isFulfilled||function(e){var t=d.getMessageId();e.parent.postMessage({id:t,method:"init",params:[]},"*")}(e)),r.then(function(e){var t=e[0],r=e[1];return n(t,r)})}}(globalThis,function(e,t,n){return(K[t.location]||U).reduce(function(r,i){return o(o({},r),i(e,t,n))},{})});e.init=Z,e.locations=j,Object.defineProperty(e,"__esModule",{value:!0})}),globalThis.contentfulApp=globalThis.contentfulExtension;
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("contentful-management")):"function"==typeof define&&define.amd?define(["exports","contentful-management"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).contentfulExtension={},e.contentfulManagement)}(this,function(e,t){"use strict";var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},n(e,t)};function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},o.apply(this,arguments)};function i(e,t,n,r){return new(n||(n=Promise))(function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,s)}l((r=r.apply(e,t||[])).next())})}function a(e,t){var n,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=s(0),a.throw=s(1),a.return=s(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(s){return function(l){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,r=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){i.label=s[1];break}if(6===s[0]&&i.label<o[1]){i.label=o[1],o=s;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(s);break}o[2]&&i.ops.pop(),i.trys.pop();continue}s=t.call(e,i)}catch(e){s=[6,e],r=0}finally{n=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,l])}}}function s(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}"function"==typeof SuppressedError&&SuppressedError;var l=function(){function e(){this._id=0,this._listeners={}}return e.prototype.dispatch=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var r in this._listeners)(e=this._listeners)[r].apply(e,t)},e.prototype.attach=function(e){var t=this;if("function"!=typeof e)throw new Error("listener function expected");var n=this._id++;return this._listeners[n]=e,function(){return delete t._listeners[n]}},e}(),u=function(e){function t(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=e.call(this)||this;if(!t.length)throw new Error("Initial value to be memoized expected");return r._memoizedArgs=t,r}return r(t,e),t.prototype.dispatch=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._memoizedArgs=t,e.prototype.dispatch.apply(this,t)},t.prototype.attach=function(t){var n=e.prototype.attach.call(this,t);return t.apply(void 0,this._memoizedArgs),n},t.prototype.getMemoizedArgs=function(){return this._memoizedArgs},t}(l);var c,d=function(){function e(e,t){var n=this;this._messageHandlers={},this._responseHandlers={},this._send=function(e,t){return function(n,r){var o=f.getMessageId();try{t.postMessage({source:e,id:o,method:n,params:r},"*")}catch(e){throw e instanceof DOMException&&"DataCloneError"===e.name&&"openDialog"===n&&console.error("Error: openCurrent[App] parameters could not be parsed. You likely tried to pass functions or DOM elements as a parameter. Tip: Use the App SDK directly within the dialog location.\n\nLearn more about the dialog location: https://ctfl.io/app-sdk-dialog"),e}return o}}(e,t.parent),t.addEventListener("message",function(e){n._handleMessage(e.data)})}return e.prototype.call=function(e){for(var t=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];var o=this._send(e,n);return new Promise(function(e,n){t._responseHandlers[o]={resolve:e,reject:n}})},e.prototype.send=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];this._send(e,t)},e.prototype.addHandler=function(e,t){return e in this._messageHandlers||(this._messageHandlers[e]=new l),this._messageHandlers[e].attach(t)},e.prototype._handleMessage=function(e){if(e.method){var t=e.method,n=e.params,r=this._messageHandlers[t];r&&r.dispatch.apply(r,n)}else{var o=e.id,i=this._responseHandlers[o];if(!i)return;"result"in e?i.resolve(e.result):"error"in e&&i.reject(e.error),delete this._responseHandlers[o]}},e}(),f=(c=0,{getMessageId:function(){return c++}});var p=function(){function e(e,t){var n=this;this.id=t.id,this.name=t.name,this.locale=t.locale,this.required=t.required,this.validations=t.validations,this._value=t.value,this._valueSignal=new u(this._value),this._isDisabledSignal=new u(t.isDisabled),this._schemaErrorsChangedSignal=new u(t.schemaErrors),this._channel=e,e.addHandler("valueChanged",function(e,t,r){e!==n.id||t&&t!==n.locale||(n._value=r,n._valueSignal.dispatch(r))}),e.addHandler("isDisabledChangedForFieldLocale",function(e,t,r){e===n.id&&t===n.locale&&n._isDisabledSignal.dispatch(r)}),e.addHandler("schemaErrorsChangedForFieldLocale",function(e,t,r){e===n.id&&t===n.locale&&n._schemaErrorsChangedSignal.dispatch(r)})}return e.prototype.getValue=function(){return this._value},e.prototype.setValue=function(e){return i(this,void 0,void 0,function(){return a(this,function(t){switch(t.label){case 0:return this._value=e,[4,this._channel.call("setValue",this.id,this.locale,e)];case 1:return[2,t.sent()]}})})},e.prototype.removeValue=function(){return i(this,void 0,void 0,function(){return a(this,function(e){switch(e.label){case 0:return this._value=void 0,[4,this._channel.call("removeValue",this.id,this.locale)];case 1:return e.sent(),[2]}})})},e.prototype.setInvalid=function(e){return this._channel.call("setInvalid",e,this.locale)},e.prototype.onValueChanged=function(e){return this._valueSignal.attach(e)},e.prototype.getIsDisabled=function(){return this._isDisabledSignal.getMemoizedArgs()[0]},e.prototype.onIsDisabledChanged=function(e){return this._isDisabledSignal.attach(e)},e.prototype.getSchemaErrors=function(){return this._schemaErrorsChangedSignal.getMemoizedArgs()[0]},e.prototype.onSchemaErrorsChanged=function(e){return this._schemaErrorsChangedSignal.attach(e)},e}(),h=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type=n.type,r}return r(t,e),t}(p),g=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type=n.type,r.items=n.items,r}return r(t,e),t}(p),y=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type=n.type,r.linkType=n.linkType,r}return r(t,e),t}(p);function v(e,t){switch(t.type){case"Link":return new y(e,t);case"Array":return new g(e,t);default:return new h(e,t)}}var m=function(){function e(e,t,n){var r=this;this.id=t.id,this.name=t.name,this.locales=t.locales,this.required=t.required,this.validations=t.validations,this._defaultLocale=n,this._fieldLocales=t.locales.reduce(function(n,i){var a,s=v(e,r.toFieldInfo(t,i));return o(o({},n),((a={})[i]=s,a))},{}),this.assertHasLocale(n)}return e.prototype.getValue=function(e){return this._getFieldLocale(e).getValue()},e.prototype.setValue=function(e,t){return i(this,void 0,void 0,function(){return a(this,function(n){switch(n.label){case 0:return[4,this._getFieldLocale(t).setValue(e)];case 1:return[2,n.sent()]}})})},e.prototype.removeValue=function(e){return i(this,void 0,void 0,function(){return a(this,function(t){switch(t.label){case 0:return[4,this.setValue(void 0,e)];case 1:return t.sent(),[2]}})})},e.prototype.onValueChanged=function(e,t){var n=t||e;return t||(e=""),this._getFieldLocale(e).onValueChanged(n)},e.prototype.onIsDisabledChanged=function(e,t){var n=t||e;return t||(e=""),this._getFieldLocale(e).onIsDisabledChanged(n)},e.prototype._getFieldLocale=function(e){return e=e||this._defaultLocale,this.assertHasLocale(e),this._fieldLocales[e]},e.prototype.getForLocale=function(e){if(!e)throw new Error("getForLocale must be passed a locale");return this._getFieldLocale(e)},e.prototype.assertHasLocale=function(e){if(!this._fieldLocales[e])throw new Error('Unknown locale "'.concat(e,'" for field "').concat(this.id,'"'))},e.prototype.toFieldInfo=function(e,t){var n={id:e.id,name:e.name,required:e.required,validations:e.validations,locale:t,value:e.values[t],isDisabled:e.isDisabled[t],schemaErrors:e.schemaErrors[t]};switch(e.type){case"Array":return o(o({},n),{type:e.type,items:e.items});case"Link":return o(o({},n),{type:e.type,linkType:e.linkType});default:return o(o({},n),{type:e.type})}},e}(),A=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.type=n.type,o}return r(t,e),t}(m),E=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.type=n.type,o.items=n.items,o}return r(t,e),t}(m),b=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.type=n.type,o.linkType=n.linkType,o}return r(t,e),t}(m);function C(e,t){var n,r=e.document,o=e.MutationObserver,i=e.ResizeObserver,a=!1,s=!1,l=new Set,u=new o(function(e){!function(e){e.forEach(function(e){switch(e.type){case"attributes":if(e.target.nodeType===Node.ELEMENT_NODE){var t=e.target;f(e.type,t)?l.add(t):l.delete(t)}break;case"childList":e.addedNodes.forEach(function(t){if(t.nodeType===Node.ELEMENT_NODE){var n=t;f(e.type,n)&&l.add(n)}}),e.removedNodes.forEach(function(e){var t=e;l.delete(t)})}})}(e),a&&d.updateHeight()}),c=new i(function(){d.updateHeight()});u.observe(r.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0});var d={startAutoResizer:function(e){var t=void 0===e?{}:e,n=t.absoluteElements;if(s=Boolean(n===void 0?false:n),d.updateHeight(),a)return;a=!0,c.observe(r.body)},stopAutoResizer:function(){if(!a)return;a=!1,c.disconnect()},updateHeight:function(e){void 0===e&&(e=null);if(null===e){var o=Math.ceil(r.documentElement.getBoundingClientRect().height);if(s&&l.size){var i=o;l.forEach(function(e){i=Math.max(e.getBoundingClientRect().bottom,i)}),e=i}else e=o}e!==n&&(t.send("setHeight",e),n=e)}};return d;function f(e,t){var n=getComputedStyle(t);return"absolute"===n.position&&("attributes"!==e||"none"!==n.display)}}var w=["getTask","getTasks","createTask","updateTask","deleteTask"];function _(e,t,n,r){var i=t.sys,a=T(i),s=new u(i),l=t.metadata,c=new u(l);e.addHandler("sysChanged",function(e){a=T(i=e),s.dispatch(i)}),e.addHandler("metadataChanged",function(e){l=e,c.dispatch(l)});var d={};return w.forEach(function(t){d[t]=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return e.call("callEntryMethod",t,n)}}),o(o(o({getSys:function(){return i},publish:function(t){if(a)throw new Error('SDK method "publish" is not supported in release context');return e.call("callEntryMethod","publish",[t])},unpublish:function(){if(a)throw new Error('SDK method "unpublish" is not supported in release context');return e.call("callEntryMethod","unpublish")},save:function(){return e.call("callEntryMethod","save")},onSysChanged:function(e){return s.attach(e)},fields:n.reduce(function(e,t){return e[t.id]=r(t),e},{})},l?{metadata:l}:{}),{getMetadata:function(){return l},onMetadataChanged:function(e){return c.attach(e)}}),d)}function T(e){var t,n;return!!(null===(n=null===(t=null==e?void 0:e.release)||void 0===t?void 0:t.sys)||void 0===n?void 0:n.id)}function I(e,t){if(!t)throw new Error("Asset data is required");var n=t.sys,r=new u(n),o=t.metadata,i=new u(o);return e.addHandler("sysChanged",function(e){n=e,r.dispatch(n)}),e.addHandler("metadataChanged",function(e){o=e,i.dispatch(o)}),{getSys:function(){return n},publish:function(t){return e.call("callAssetMethod","publish",[t])},unpublish:function(){return e.call("callAssetMethod","unpublish")},save:function(){return e.call("callAssetMethod","save")},onSysChanged:function(e){return r.attach(e)},getMetadata:function(){return o},onMetadataChanged:function(e){return i.attach(e)}}}var x=["getContentType","getEntry","getEntrySnapshots","getAsset","getEditorInterface","getPublishedEntries","getPublishedAssets","getContentTypes","getEntries","getEditorInterfaces","getAssets","createContentType","createEntry","createAsset","updateContentType","updateEntry","updateAsset","deleteContentType","deleteEntry","deleteAsset","publishEntry","publishAsset","unpublishEntry","unpublishAsset","archiveEntry","archiveAsset","unarchiveEntry","unarchiveAsset","createUpload","processAsset","waitUntilAssetProcessed","getUsers","getAllScheduledActions","getEntityScheduledActions","signRequest","createTag","readTags","updateTag","deleteTag","getTeams"];function L(e,t){var n={};return x.forEach(function(t){n[t]=function(){for(var n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return console.warn("You called ".concat(String(t)," on the Space API. Since version 4.0.0 the Space API and its methods are deprecated, and they will be removed from version 5.0.0 on. We recommend that you use the CMA client instead. See https://www.contentful.com/developers/docs/extensibility/app-framework/sdk/#using-the-contentful-management-library for more details.")),e.call("callSpaceMethod",t,n)}}),n.getCachedContentTypes=function(){return s([],t,!0)},n}var O=function(e){return"object"!=typeof(t=e)||null===t||Array.isArray(t)?{}:e;var t};function S(e,t){return{openAlert:n.bind(null,"alert"),openConfirm:n.bind(null,"confirm"),openPrompt:n.bind(null,"prompt"),openExtension:r,openCurrentApp:i,openCurrent:function(e){return t.app?i(e):r(o(o({},e),{id:t.extension}))},selectSingleEntry:a.bind(null,"Entry",!1),selectSingleAsset:a.bind(null,"Asset",!1),selectMultipleEntries:a.bind(null,"Entry",!0),selectMultipleAssets:a.bind(null,"Asset",!0),selectSingleExperience:a.bind(null,"Experience",!1),selectMultipleExperiences:a.bind(null,"Experience",!0),selectSinglePattern:a.bind(null,"Pattern",!1),selectMultiplePatterns:a.bind(null,"Pattern",!0),selectSingleComponentDefinition:a.bind(null,"ComponentDefinition",!1),selectMultipleComponentDefinitions:a.bind(null,"ComponentDefinition",!0)};function n(t,n){return e.call("openDialog",t,O(n))}function r(n){var r=O(n);if((r=o(o({},r),{id:r.id||t.extension})).id)return e.call("openDialog","extension",r);throw new Error("Extension ID not provided.")}function i(n){if(n=O(n),t.app){var r=o(o({},n),{id:t.app});return e.call("openDialog","app",r)}throw new Error("Not in the app context.")}function a(t,n,r){return(r=O(r)).entityType=t,r.multiple=n,e.call("openDialog","entitySelector",r)}}function D(e,t,n){var r=new u(n.localeSettings),o=new u(n.showHiddenFields);return e.addHandler("localeSettingsChanged",function(e){r.dispatch(e)}),e.addHandler("showHiddenFieldsChanged",function(e){o.dispatch(e)}),{editorInterface:t,getLocaleSettings:function(){return r.getMemoizedArgs()[0]},onLocaleSettingsChanged:function(e){return r.attach(e)},onShowDisabledFieldsChanged:function(e){return o.attach(e)},getShowHiddenFields:function(){return o.getMemoizedArgs()[0]},onShowHiddenFieldsChanged:function(e){return o.attach(e)}}}function N(e,t,n){var r,i=new l;e.addHandler("navigateSlideIn",function(e){i.dispatch(e)});var a=n?null===(r=n.sys)||void 0===r?void 0:r.id:void 0;return{openEntry:function(t,n){return e.call("navigateToContentEntity",o(o({},n),{entityType:"Entry",id:t,releaseId:a}))},openNewEntry:function(t,n){return e.call("navigateToContentEntity",o(o({},n),{entityType:"Entry",id:null,contentTypeId:t}))},openBulkEditor:function(t,n){return e.call("navigateToBulkEditor",o({entryId:t},n))},openAsset:function(t,n){return e.call("navigateToContentEntity",o(o({},n),{entityType:"Asset",id:t,releaseId:a}))},openNewAsset:function(t){return e.call("navigateToContentEntity",o(o({},t),{entityType:"Asset",id:null}))},openPageExtension:function(n){return e.call("navigateToPage",o({type:"extension",id:t.extension},n))},openCurrentAppPage:function(n){return e.call("navigateToPage",o({type:"app",id:t.app},n))},openAppConfig:function(){return e.call("navigateToAppConfig")},openEntriesList:function(){return e.call("navigateToSpaceEnvRoute",{route:"entries",releaseId:a})},openAssetsList:function(){return e.call("navigateToSpaceEnvRoute",{route:"assets",releaseId:a})},onSlideInNavigation:function(e){return i.attach(e)}}}var M="preInstall",P="postInstall",H=function(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)},R=function(e){return"function"==typeof e},k=function(e){return console.error(e),Promise.resolve(!1)},F=function(e,t,n){if(!R(e))return Promise.resolve(t);var r;try{r=void 0===n?e():e(n)}catch(e){return k(e)}var o,i=r;return H(o=i)&&R(o.then)||(i=Promise.resolve(i)),i.then(function(e){return e instanceof Error?Promise.reject(e):!1!==e&&(H(e)?e:t)},k).catch(k)};function V(e){var t,n=((t={})[M]=null,t[P]=null,t),r=function(e,t){if(!R(t))throw new Error("Handler must be a function.");n[e]=t};return e.addHandler("appHook",function(t){var r=t.stage,o=t.installationRequestId,i=t.err;return r===M?F(n[r],{}).then(function(t){return e.send("appHookResult",{stage:r,installationRequestId:o,result:t})}):r===P?F(n[r],void 0,i||null).then(function(){return e.send("appHookResult",{stage:r,installationRequestId:o})}):Promise.resolve()}),{setReady:function(){return e.call("callAppMethod","setReady")},isInstalled:function(){return e.call("callAppMethod","isInstalled")},getParameters:function(){return e.call("callAppMethod","getParameters")},getCurrentState:function(){return e.call("callAppMethod","getCurrentState")},onConfigure:function(e){r(M,e)},onConfigurationCompleted:function(e){r(P,e)}}}function z(e,t){if(!t)throw new Error("Context data is required");var n=new u(t),r=new l,o=new u("normal");return e.addHandler("contextChanged",function(e){n.dispatch(e)}),e.addHandler("toolbarAction",function(e){r.dispatch(e)}),e.addHandler("agentLayoutVariantChanged",function(e){o.dispatch(e)}),{onContextChange:function(e){return n.attach(e)},onToolbarAction:function(e){return r.attach(e)},onAgentLayoutVariantChange:function(e){return o.attach(e)},setAgentLayoutVariant:function(t){if("expanded"!==t&&"normal"!==t)throw new Error('Invalid layout variant "'.concat(t,'". Expected "expanded" or "normal".'));e.send("setAgentLayoutVariant",t)}}}function q(e,t){var n,r;if(void 0===t)throw new Error("Context data is required");var i=null!==(n=t.context)&&void 0!==n?n:{type:"experience",entityId:""},a=new u(i);e.addHandler("exo.contextChanged",function(e){a.dispatch(e)});var s=null!==(r=t.uiMode)&&void 0!==r?r:"form",l=new u(s);e.addHandler("exo.uiModeChanged",function(e){l.dispatch(e.mode)});var c=function(e,t){var n=new u(null!=t?t:{sys:{id:"",type:"Experience",version:0,template:{sys:{type:"ResourceLink",linkType:"Contentful:Template",urn:""}}}});e.addHandler("exo.experienceChanged",function(e){n.dispatch(e)});var r=function(e){var t=new u({nodeId:null});return e.addHandler("exo.selectionChanged",function(e){t.dispatch(e)}),{get:function(){return t.getMemoizedArgs()[0]},onChange:function(e){return t.attach(e)},set:function(t){e.send("exo.setSelection",{nodeId:t})},highlight:function(t,n){e.send("exo.highlightNode",o({nodeId:t},n))}}}(e),i=function(e){var t={id:"",parameters:{}},n=new u(t);return e.addHandler("exo.dataAssemblyChanged",function(e){n.dispatch(e)}),o(o({get:function(){return n.getMemoizedArgs()[0]},getAvailable:function(){return e.call("exo.getAvailableDataAssemblies")}},j(e,B)),{onChange:function(e){return n.attach(e)}})}(e),a=new Map;return{get:function(){return n.getMemoizedArgs()[0]},onChange:function(e){return n.attach(e)},save:function(){return e.call("exo.saveExperience")},publish:function(){return e.call("exo.publishExperience")},getNode:function(t){var n=a.get(t);return void 0===n&&(n=function(e,t,n){void 0===n&&(n="Component");var r=new u({id:t,nodeType:n});return e.addHandler("exo.nodeChanged.".concat(t),function(e){r.dispatch(e)}),{id:t,nodeType:n,get:function(){return r.getMemoizedArgs()[0]},onChange:function(e){return r.attach(e)},dataAssembly:j(e,Y,t),getDesignProperty:function(n){return e.call("exo.getNodeDesignProperty",t,n)},setDesignProperty:function(n,r){return e.call("exo.setNodeDesignProperty",t,n,r)},onDesignPropertyChanged:function(n,r){return e.addHandler("exo.nodeDesignPropertyChanged.".concat(t,".").concat(n),r)},getProperties:function(){return e.call("exo.getNodeProperties",t)},getSlotDescriptor:function(){return e.call("exo.getNodeSlotDescriptor",t)}}}(e,t),a.set(t,n)),n},getRootNodes:function(){return[]},selection:r,dataAssembly:i}}(e,t.experience);return{get context(){return a.getMemoizedArgs()[0]},onContextChanged:function(e){return a.attach(e)},getUiMode:function(){return l.getMemoizedArgs()[0]},onUiModeChanged:function(e){return l.attach(e)},experience:c}}function j(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];return{getParameterDefinitions:function(){return e.call.apply(e,s([t.definitions],n,!1))},getParameterDefinition:function(r){return e.call.apply(e,s(s([t.definition],n,!1),[r],!1))},setParameterValue:function(r,o){return e.call.apply(e,s(s([t.setValue],n,!1),[r,o],!1))},setParameterValues:function(r){return e.call.apply(e,s(s([t.setValues],n,!1),[r],!1))}}}var B={definitions:"exo.getDataAssemblyParameterDefinitions",definition:"exo.getDataAssemblyParameterDefinition",setValue:"exo.setDataAssemblyParameterValue",setValues:"exo.setDataAssemblyParameterValues"},Y={definitions:"exo.getNodeParameterDefinitions",definition:"exo.getNodeParameterDefinition",setValue:"exo.setNodeParameterValue",setValues:"exo.setNodeParameterValues"};var G,U={LOCATION_ENTRY_FIELD:"entry-field",LOCATION_ENTRY_FIELD_SIDEBAR:"entry-field-sidebar",LOCATION_ENTRY_SIDEBAR:"entry-sidebar",LOCATION_ASSET_SIDEBAR:"asset-sidebar",LOCATION_DIALOG:"dialog",LOCATION_ENTRY_EDITOR:"entry-editor",LOCATION_PAGE:"page",LOCATION_APP_CONFIG:"app-config",LOCATION_HOME:"home",LOCATION_AGENT:"agent",LOCATION_EXPERIENCE_TOOLBAR:"experience-toolbar"},K=function(e){return function(t){return e.call("CMAAdapterCall",t)}};function W(e){return{makeRequest:K(e)}}function X(e,n){var r;return t.createClient({apiAdapter:W(n)},{type:"plain",defaults:{environmentId:null!==(r=e.environmentAlias)&&void 0!==r?r:e.environment,spaceId:e.space,organizationId:e.organization,releaseId:e.release}})}var J=[Z,te,function(e,t){var n=t.field;if(!n)throw new Error('FieldAPI called for location without "field" property defined.');return{field:v(e,n)}},ee,$],Q=((G={})[U.LOCATION_ENTRY_FIELD]=J,G[U.LOCATION_ENTRY_FIELD_SIDEBAR]=J,G[U.LOCATION_ENTRY_SIDEBAR]=[Z,te,ee,$],G[U.LOCATION_ASSET_SIDEBAR]=[Z,function(e,t){var n=t.asset;return{asset:I(e,n)}},$],G[U.LOCATION_ENTRY_EDITOR]=[Z,te,ee],G[U.LOCATION_DIALOG]=[Z,function(e){return{close:function(t){return e.send("closeDialog",t)}}},$],G[U.LOCATION_PAGE]=[Z],G[U.LOCATION_HOME]=[Z],G[U.LOCATION_APP_CONFIG]=[Z,function(e){return{app:V(e)}}],G[U.LOCATION_AGENT]=[Z,function(e,t){var n=t.agent;return{agent:z(e,n)}},$],G[U.LOCATION_EXPERIENCE_TOOLBAR]=[Z,function(e,t){return{experiences:q(e,t.experiences)}}],G);function Z(e,t){var n=t.user,r=t.parameters,o=t.locales,i=t.ids,a=t.initialContentTypes,s=t.hostnames,l=t.release,u=t.uiLanguageLocale,c=t.location||U.LOCATION_ENTRY_FIELD;return{cma:X(i,e),cmaAdapter:W(e),location:{is:function(e){return c===e}},user:n,parameters:r,locales:{available:o.available,default:o.default,names:o.names,fallbacks:o.fallbacks,optional:o.optional,direction:o.direction},space:L(e,a),dialogs:S(e,i),navigator:N(e,i,l),notifier:{success:function(t){return e.send("notify",{type:"success",message:t})},error:function(t){return e.send("notify",{type:"error",message:t})},warning:function(t){return e.send("notify",{type:"warning",message:t})}},ids:i,hostnames:s,release:l,uiLanguageLocale:u,access:{can:function(t,n,r){return e.call("checkAccess",t,n,r)},canEditAppConfig:function(){return e.call("checkAppConfigAccess")}}}}function $(e,t,n){return{window:C(n,e)}}function ee(e,t){return{editor:D(e,t.editorInterface,t.editor)}}function te(e,t){var n=t.locales,r=t.contentType,o=t.entry,i=t.fieldInfo;return{contentType:r,entry:_(e,o,i,function(t){return function(e,t,n){switch(t.type){case"Array":return new E(e,t,n);case"Link":return new b(e,t,n);default:return new A(e,t,n)}}(e,t,n.default)})}}var ne=function(e,t){if(void 0===e.window||void 0===e.document)return function(){};var n,r,o=((n={promise:null,resolve:null,isFulfilled:!1}).promise=new Promise(function(e){n.resolve=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];n.isFulfilled=!0,e.apply(void 0,t)}}),n);return o.promise.then(function(t){var n=t[0],r=e.document;r.addEventListener("focus",function(){return n.send("setActive",!0)},!0),r.addEventListener("blur",function(){return n.send("setActive",!1)},!0)}),function(e,t){!function(e,t){function n(r){var o=r.data;"connect"===o.method&&(e.removeEventListener("message",n),t.apply(void 0,o.params))}e.addEventListener("message",n)}(e,function(n,r){var o=new d(n.id,e);t(o,n,r)})}(e,function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return o.resolve(e)}),function(n,i){var a=void 0===i?{supressIframeWarning:!1}:i,s=a.makeCustomApi;a.supressIframeWarning||function(e){e.self===e.top&&console.error("Cannot use App SDK outside of Contenful:\n\nIn order for the App SDK to function correctly, your app needs to be run in an iframe in the Contentful Web App, Compose or Launch.\n\nLearn more about local development with the App SDK here:\nhttps://www.contentful.com/developers/docs/extensibility/ui-extensions/faq/#how-can-i-develop-with-the-ui-extension-sdk-locally")}(e),r||(r=o.promise.then(function(n){var r,o=n[0],i=n[1],a=n[2],l=t(o,i,e);return"function"==typeof s&&(r=s(o,i)),a.forEach(function(e){o._handleMessage(e)}),[l,r]}),o.isFulfilled||function(e){var t=f.getMessageId();e.parent.postMessage({id:t,method:"init",params:[]},"*")}(e)),r.then(function(e){var t=e[0],r=e[1];return n(t,r)})}}(globalThis,function(e,t,n){return(Q[t.location]||J).reduce(function(r,i){return o(o({},r),i(e,t,n))},{})});e.init=ne,e.locations=U,Object.defineProperty(e,"__esModule",{value:!0})}),globalThis.contentfulApp=globalThis.contentfulExtension;
@@ -0,0 +1,13 @@
1
+ import { Channel } from './channel';
2
+ import { ExperienceSDK, ExperienceContext, UiMode, ExperienceSnapshot } from './types';
3
+ /**
4
+ * Creates the Experience SDK namespace for the experience-toolbar location.
5
+ *
6
+ * Throws when called without handshake `experiences` data, mirroring `createAgent`. This keeps the
7
+ * public `ExperienceEditorToolbarAppSDK['experiences']` type sound (non-optional, always present).
8
+ */
9
+ export default function createExperience(channel: Channel, experienceInit?: {
10
+ context?: ExperienceContext;
11
+ uiMode?: UiMode;
12
+ experience?: ExperienceSnapshot;
13
+ }): ExperienceSDK;
@@ -11,7 +11,7 @@ import { EntryFieldInfo, FieldInfo } from './field.types';
11
11
  import { Adapter, KeyValueMap } from 'contentful-management';
12
12
  import { CMAClient } from './cmaClient.types';
13
13
  import { AgentAPI, AgentContext } from './agent.types';
14
- import { ExoSDK, ExoContext, UiMode, ExperienceSnapshot } from './exo.types';
14
+ import { ExperienceSDK, ExperienceContext, UiMode, ExperienceSnapshot } from './experience.types';
15
15
  export interface UserAPI {
16
16
  sys: {
17
17
  id: string;
@@ -264,8 +264,8 @@ export type AgentAppSDK<InstallationParameters extends KeyValueMap = KeyValueMap
264
264
  };
265
265
  export type ExperienceEditorToolbarAppSDK<InstallationParameters extends KeyValueMap = KeyValueMap> = Omit<BaseAppSDK<InstallationParameters, never, never>, 'ids'> & {
266
266
  ids: Omit<IdsAPI, EntryScopedIds>;
267
- /** ExO (Experience Orchestration) SDK for experience-toolbar location */
268
- exo: ExoSDK;
267
+ /** Experience SDK for experience-toolbar location */
268
+ experiences: ExperienceSDK;
269
269
  };
270
270
  export type KnownAppSDK<InstallationParameters extends KeyValueMap = KeyValueMap, InstanceParameters extends KeyValueMap = KeyValueMap, InvocationParameters extends SerializedJSONValue = SerializedJSONValue> = FieldAppSDK<InstallationParameters, InstanceParameters> | SidebarAppSDK<InstallationParameters, InstanceParameters> | DialogAppSDK<InstallationParameters, InvocationParameters> | EditorAppSDK<InstallationParameters, InstanceParameters> | PageAppSDK<InstallationParameters> | ConfigAppSDK<InstallationParameters> | HomeAppSDK<InstallationParameters> | AgentAppSDK<InstallationParameters> | ExperienceEditorToolbarAppSDK<InstallationParameters>;
271
271
  /** @deprecated consider using {@link BaseAppSDK} */
@@ -327,9 +327,9 @@ export interface ConnectMessage {
327
327
  release?: Release;
328
328
  uiLanguageLocale: string;
329
329
  agent?: AgentContext;
330
- /** ExO data; when present, SDK constructs sdk.exo */
331
- exo?: {
332
- context?: ExoContext;
330
+ /** Experiences data; when present, SDK constructs sdk.experiences */
331
+ experiences?: {
332
+ context?: ExperienceContext;
333
333
  uiMode?: UiMode;
334
334
  experience?: ExperienceSnapshot;
335
335
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * ExO (Experience Orchestration) SDK types.
2
+ * Experience SDK types.
3
3
  */
4
4
  export type Unsubscribe = () => void;
5
5
  export type UiMode = 'form' | 'visual';
@@ -24,7 +24,7 @@ export type DesignValue = DesignTokenValue | ManualDesignValue;
24
24
  * Describes a single component property: its key, area, current value, and binding.
25
25
  * `area` distinguishes content properties (bound to entry fields / authored content)
26
26
  * from design properties (presentation values, e.g. design tokens) — the same split
27
- * the ExO domain model and editor model natively, letting an app render them separately.
27
+ * the Experience domain model and editor model natively, letting an app render them separately.
28
28
  * `binding`, when present, is an `EntryBinding` carrying the `entryId`/`fieldId` a
29
29
  * consumer needs to resolve the backing entry; omitted when the property is unbound.
30
30
  */
@@ -68,25 +68,48 @@ export interface DataAssemblySnapshot {
68
68
  name?: string;
69
69
  parameters: Record<string, DataAssemblyParameterDefinition>;
70
70
  }
71
- export interface DataAssemblyAPI {
72
- /** Returns the current Data Assembly snapshot for the active experience/fragment. */
73
- get(): DataAssemblySnapshot;
71
+ /**
72
+ * A Data Assembly available within the current experience/fragment, with its parameter
73
+ * definitions. Returned by {@link DataAssemblyAPI.getAvailable}. Definition-only — no GraphQL
74
+ * resolvers, `return` mapping, or nested DAs.
75
+ */
76
+ export interface DataAssemblySummary {
77
+ id: string;
78
+ name: string;
79
+ description?: string;
80
+ parameters: Record<string, DataAssemblyParameterDefinition>;
81
+ }
82
+ /**
83
+ * Reads parameter definitions and writes parameter values for a Data Assembly. A parameter's
84
+ * *definition* (its allowed resources, name, description) and its *value* (the entry bound to it)
85
+ * are distinct concepts, reflected in the method names: `get*Definition*` reads, `set*Value*` writes.
86
+ */
87
+ export interface DataAssemblyParameterAPI {
74
88
  /** Resolves all Data Assembly parameter definitions, keyed by parameter id. */
75
- getParameters(): Promise<Record<string, DataAssemblyParameterDefinition>>;
89
+ getParameterDefinitions(): Promise<Record<string, DataAssemblyParameterDefinition>>;
76
90
  /** Resolves a single parameter definition, or `null` if no parameter has that id. */
77
- getParameter(parameterId: string): Promise<DataAssemblyParameterDefinition | null>;
91
+ getParameterDefinition(parameterId: string): Promise<DataAssemblyParameterDefinition | null>;
78
92
  /** Sets the value of a single Data Assembly parameter. */
79
- setParameter(parameterId: string, value: DataAssemblyParameterValue): Promise<void>;
93
+ setParameterValue(parameterId: string, value: DataAssemblyParameterValue): Promise<void>;
80
94
  /** Sets multiple Data Assembly parameter values in a single update. */
81
- setParameters(updates: Partial<Record<string, DataAssemblyParameterValue>>): Promise<void>;
95
+ setParameterValues(updates: Partial<Record<string, DataAssemblyParameterValue>>): Promise<void>;
96
+ }
97
+ export interface DataAssemblyAPI extends DataAssemblyParameterAPI {
98
+ /** Returns the current Data Assembly snapshot for the active experience/fragment. */
99
+ get(): DataAssemblySnapshot;
100
+ /**
101
+ * Resolves the Data Assemblies available in the current experience/fragment, each with its
102
+ * parameter definitions. Discovery counterpart to {@link get}, which returns only the active DA.
103
+ */
104
+ getAvailable(): Promise<DataAssemblySummary[]>;
82
105
  /** Subscribes to Data Assembly snapshot changes. Returns an unsubscribe function. */
83
106
  onChange(cb: (snapshot: DataAssemblySnapshot) => void): Unsubscribe;
84
107
  }
85
108
  /** The type of a node within an experience/fragment tree. */
86
- export type ExoNodeType = 'Component' | 'Fragment' | 'InlineFragment' | 'Slot';
87
- export interface ExoNodeSnapshot {
109
+ export type ExperienceNodeType = 'Component' | 'Fragment' | 'InlineFragment' | 'Slot';
110
+ export interface ExperienceNodeSnapshot {
88
111
  id: string;
89
- nodeType: ExoNodeType;
112
+ nodeType: ExperienceNodeType;
90
113
  }
91
114
  export interface SlotDescriptor {
92
115
  id: string;
@@ -100,21 +123,22 @@ export interface SlotDescriptor {
100
123
  * API for reading and mutating a single node (component, slot, fragment, etc.) within an
101
124
  * experience or fragment tree. Obtained via {@link ExperienceAPI.getNode}.
102
125
  */
103
- export interface ExoNodeAPI {
126
+ export interface ExperienceNodeAPI {
104
127
  /** The node's unique id within the experience/fragment tree. */
105
128
  id: string;
106
129
  /** The node's type (component, slot, fragment, etc.). */
107
- nodeType: ExoNodeType;
130
+ nodeType: ExperienceNodeType;
108
131
  /** Returns the current snapshot of this node. */
109
- get(): ExoNodeSnapshot;
132
+ get(): ExperienceNodeSnapshot;
110
133
  /** Subscribes to changes to this node. Returns an unsubscribe function. */
111
- onChange(cb: (node: ExoNodeSnapshot) => void): Unsubscribe;
112
- /** Resolves the value of a content property by key. */
113
- getContentProperty<T = unknown>(key: string): Promise<T>;
114
- /** Sets the value of a content property by key. */
115
- setContentProperty<T = unknown>(key: string, value: T): Promise<void>;
116
- /** Subscribes to changes of a single content property. Returns an unsubscribe function. */
117
- onContentPropertyChanged<T = unknown>(key: string, cb: (value: T) => void): Unsubscribe;
134
+ onChange(cb: (node: ExperienceNodeSnapshot) => void): Unsubscribe;
135
+ /**
136
+ * Reads parameter definitions and writes parameter values for this node's Data Assembly.
137
+ * A node's content is populated through Data Assembly parameters, not free-form content
138
+ * properties so content is read/written here. Only meaningful for inline-fragment nodes;
139
+ * other node types have no Data Assembly and these calls resolve empty / are no-ops.
140
+ */
141
+ dataAssembly: DataAssemblyParameterAPI;
118
142
  /** Resolves the value of a design property by key. */
119
143
  getDesignProperty<T extends DesignValue = DesignValue>(key: string): Promise<T>;
120
144
  /** Sets the value of a design property by key. */
@@ -126,14 +150,14 @@ export interface ExoNodeAPI {
126
150
  /** Resolves the slot descriptor for this node, or `null` if the node is not a slot. */
127
151
  getSlotDescriptor(): Promise<SlotDescriptor | null>;
128
152
  }
129
- export interface ExoSelectionAPI {
153
+ export interface ExperienceSelectionAPI {
130
154
  get(): {
131
155
  nodeId: string | null;
132
- nodeType?: ExoNodeType;
156
+ nodeType?: ExperienceNodeType;
133
157
  };
134
158
  onChange(cb: (sel: {
135
159
  nodeId: string | null;
136
- nodeType?: ExoNodeType;
160
+ nodeType?: ExperienceNodeType;
137
161
  }) => void): Unsubscribe;
138
162
  set(nodeId: string | null): void;
139
163
  highlight(nodeId: string, opts?: {
@@ -167,18 +191,18 @@ export interface ExperienceAPI {
167
191
  onChange(cb: (v: ExperienceSnapshot) => void): Unsubscribe;
168
192
  save(): Promise<void>;
169
193
  publish(): Promise<void>;
170
- getNode(nodeId: string): ExoNodeAPI | null;
171
- getRootNodes(): ExoNodeAPI[];
172
- selection: ExoSelectionAPI;
194
+ getNode(nodeId: string): ExperienceNodeAPI | null;
195
+ getRootNodes(): ExperienceNodeAPI[];
196
+ selection: ExperienceSelectionAPI;
173
197
  dataAssembly: DataAssemblyAPI;
174
198
  }
175
- export interface ExoContext {
199
+ export interface ExperienceContext {
176
200
  type: 'experience' | 'fragment';
177
201
  entityId: string;
178
202
  }
179
- export interface ExoSDK {
180
- context: ExoContext;
181
- onContextChanged(cb: (context: ExoContext) => void): Unsubscribe;
203
+ export interface ExperienceSDK {
204
+ context: ExperienceContext;
205
+ onContextChanged(cb: (context: ExperienceContext) => void): Unsubscribe;
182
206
  getUiMode(): UiMode;
183
207
  onUiModeChanged(cb: (mode: UiMode) => void): Unsubscribe;
184
208
  experience: ExperienceAPI;
@@ -12,4 +12,4 @@ export type { SearchQuery, CollectionResponse, CursorBasedCollectionResponse, En
12
12
  export type { DateRangeValidationError, InValidationError, LinkContentTypeValidationError, LinkMimetypeGroupValidationError, NotResolvableValidationError, ProhibitRegexpValidationError, RangeValidationError, RegexpValidationError, RequiredValidationError, SizeValidationError, TypeValidationError, UniqueValidationError, UnknownValidationError, ValidationError, AllowedResourceValidationError, AllowedResourcesValidationError, } from './validation-error';
13
13
  export type { WindowAPI } from './window.types';
14
14
  export type { CMAClient } from './cmaClient.types';
15
- export type { Unsubscribe, UiMode, ExoContext, ExoSDK, ResourceLink, EntryBinding, DesignTokenValue, ManualDesignValue, DesignValue, ComponentPropertyDescriptor, SameSpaceContentSource, AllowedResource, DataAssemblyParameterDefinition, DataAssemblyParameterValue, DataAssemblySnapshot, DataAssemblyAPI, ExoNodeType, ExoNodeSnapshot, SlotDescriptor, ExperienceSnapshot, ExoNodeAPI, ExoSelectionAPI, ExperienceAPI, } from './exo.types';
15
+ export type { Unsubscribe, UiMode, ExperienceContext, ExperienceSDK, ResourceLink, EntryBinding, DesignTokenValue, ManualDesignValue, DesignValue, ComponentPropertyDescriptor, SameSpaceContentSource, AllowedResource, DataAssemblyParameterDefinition, DataAssemblyParameterValue, DataAssemblySnapshot, DataAssemblySummary, DataAssemblyParameterAPI, DataAssemblyAPI, ExperienceNodeType, ExperienceNodeSnapshot, SlotDescriptor, ExperienceSnapshot, ExperienceNodeAPI, ExperienceSelectionAPI, ExperienceAPI, } from './experience.types';
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@contentful/app-sdk","description":"A JavaScript library to develop custom apps for Contentful","version":"4.58.3","author":"Contentful GmbH","license":"MIT","sideEffects":true,"repository":{"url":"https://github.com/contentful/ui-extensions-sdk.git","type":"git"},"homepage":"https://www.contentful.com/developers/docs/extensibility/app-framework/sdk/","main":"dist/cf-extension-api.js","unpkg":"dist/cf-extension-api.bundled.js","jsdelivr":"dist/cf-extension-api.bundled.js","types":"dist/index.d.ts","files":["dist/cf-extension-api.js","dist/cf-extension-api.js.map","dist/cf-extension-api.bundled.js","dist/cf-extension.css","dist/**/*.d.ts"],"scripts":{"test":"ts-mocha -p tsconfig.test.json 'test/unit/*.[jt]s' --reporter mocha-multi-reporters --reporter-options configFile=mocha.unit-reporters.json","lint":"eslint '{lib,test}/**/*.{t,j}s'","lint:fix":"npm run lint -- --fix","build":"npm run check-types && rollup -c --compact","build:debug":"npm run build -- --sourcemap","prepublishOnly":"npm run build","size":"echo \"Gzipped, estimate: $(gzip -9 -c dist/cf-extension-api.js | wc -c) bytes\"","semantic-release":"semantic-release","publish-all":"node ./scripts/publish.js","verify":"node ./scripts/verify.js","check-types":"tsc --noEmit -m commonjs","prepare":"husky","lint-staged":"lint-staged"},"dependencies":{"contentful-management":"^12.3.1"},"devDependencies":{"@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-node-resolve":"^16.0.0","@semantic-release/changelog":"6.0.3","@semantic-release/exec":"7.1.0","@semantic-release/git":"10.0.1","@testing-library/dom":"10.4.1","@types/chai-as-promised":"7.1.8","@types/cross-spawn":"6.0.6","@types/fs-extra":"11.0.4","@types/jsdom":"28.0.3","@types/mocha":"10.0.10","@types/nanoid":"3.0.0","@types/sinon":"^21.0.0","@types/sinon-chai":"^3.2.5","@typescript-eslint/eslint-plugin":"7.18.0","@typescript-eslint/parser":"7.18.0","babel-eslint":"10.1.0","chai":"4.5.0","chai-as-promised":"7.1.2","cross-spawn":"7.0.6","eslint":"8.57.1","eslint-config-prettier":"10.1.8","eslint-config-standard":"17.1.0","eslint-plugin-import":"2.32.0","eslint-plugin-node":"11.1.0","eslint-plugin-prettier":"5.5.6","eslint-plugin-promise":"6.6.0","eslint-plugin-react":"7.37.5","eslint-plugin-standard":"5.0.0","fs-extra":"11.3.5","husky":"9.1.7","jsdom":"29.1.1","lint-staged":"17.0.7","mocha":"11.7.6","mocha-junit-reporter":"2.2.1","mocha-multi-reporters":"1.5.1","mochawesome":"7.1.4","mochawesome-merge":"5.1.1","mochawesome-report-generator":"6.3.2","prettier":"3.8.3","rollup":"2.80.0","rollup-plugin-terser":"7.0.2","rollup-plugin-typescript2":"0.37.0","semantic-release":"^25.0.2","sinon":"22.0.0","sinon-chai":"3.7.0","ts-mocha":"11.1.0","tslib":"2.8.1","typescript":"5.9.3"},"lint-staged":{"*.ts":["prettier --write","eslint --fix"],"*.md":["prettier --write"]},"release":{"branches":["main",{"name":"canary","channel":"canary","prerelease":"alpha"}],"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog",["@semantic-release/npm",{"npmPublish":false}],["@semantic-release/exec",{"verifyConditionsCmd":"node ./scripts/verify.js","publishCmd":"npm run publish-all"}],["@semantic-release/git",{"message":"chore: ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}","assets":["CHANGELOG.md","package.json","package-lock.json"]}],"@semantic-release/github"]}}
1
+ {"name":"@contentful/app-sdk","description":"A JavaScript library to develop custom apps for Contentful","version":"4.60.0","author":"Contentful GmbH","license":"MIT","sideEffects":true,"repository":{"url":"https://github.com/contentful/ui-extensions-sdk.git","type":"git"},"homepage":"https://www.contentful.com/developers/docs/extensibility/app-framework/sdk/","main":"dist/cf-extension-api.js","unpkg":"dist/cf-extension-api.bundled.js","jsdelivr":"dist/cf-extension-api.bundled.js","types":"dist/index.d.ts","files":["dist/cf-extension-api.js","dist/cf-extension-api.js.map","dist/cf-extension-api.bundled.js","dist/cf-extension.css","dist/**/*.d.ts"],"scripts":{"test":"ts-mocha -p tsconfig.test.json 'test/unit/*.[jt]s' --reporter mocha-multi-reporters --reporter-options configFile=mocha.unit-reporters.json","lint":"eslint '{lib,test}/**/*.{t,j}s'","lint:fix":"npm run lint -- --fix","build":"npm run check-types && rollup -c --compact","build:debug":"npm run build -- --sourcemap","prepublishOnly":"npm run build","size":"echo \"Gzipped, estimate: $(gzip -9 -c dist/cf-extension-api.js | wc -c) bytes\"","semantic-release":"semantic-release","publish-all":"node ./scripts/publish.js","verify":"node ./scripts/verify.js","check-types":"tsc --noEmit -m commonjs","prepare":"husky","lint-staged":"lint-staged"},"dependencies":{"contentful-management":"^12.3.1"},"devDependencies":{"@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-node-resolve":"^16.0.0","@semantic-release/changelog":"6.0.3","@semantic-release/exec":"7.1.0","@semantic-release/git":"10.0.1","@testing-library/dom":"10.4.1","@types/chai-as-promised":"7.1.8","@types/cross-spawn":"6.0.6","@types/fs-extra":"11.0.4","@types/jsdom":"28.0.3","@types/mocha":"10.0.10","@types/nanoid":"3.0.0","@types/sinon":"^21.0.0","@types/sinon-chai":"^3.2.5","@typescript-eslint/eslint-plugin":"7.18.0","@typescript-eslint/parser":"7.18.0","babel-eslint":"10.1.0","chai":"4.5.0","chai-as-promised":"7.1.2","cross-spawn":"7.0.6","eslint":"8.57.1","eslint-config-prettier":"10.1.8","eslint-config-standard":"17.1.0","eslint-plugin-import":"2.32.0","eslint-plugin-node":"11.1.0","eslint-plugin-prettier":"5.5.6","eslint-plugin-promise":"6.6.0","eslint-plugin-react":"7.37.5","eslint-plugin-standard":"5.0.0","fs-extra":"11.3.5","husky":"9.1.7","jsdom":"29.1.1","lint-staged":"17.0.7","mocha":"11.7.6","mocha-junit-reporter":"2.2.1","mocha-multi-reporters":"1.5.1","mochawesome":"7.1.4","mochawesome-merge":"5.1.1","mochawesome-report-generator":"6.3.2","prettier":"3.8.4","rollup":"2.80.0","rollup-plugin-terser":"7.0.2","rollup-plugin-typescript2":"0.37.0","semantic-release":"^25.0.2","sinon":"22.0.0","sinon-chai":"3.7.0","ts-mocha":"11.1.0","tslib":"2.8.1","typescript":"5.9.3"},"lint-staged":{"*.ts":["prettier --write","eslint --fix"],"*.md":["prettier --write"]},"release":{"branches":["main",{"name":"canary","channel":"canary","prerelease":"alpha"}],"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog",["@semantic-release/npm",{"npmPublish":false}],["@semantic-release/exec",{"verifyConditionsCmd":"node ./scripts/verify.js","publishCmd":"npm run publish-all"}],["@semantic-release/git",{"message":"chore: ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}","assets":["CHANGELOG.md","package.json","package-lock.json"]}],"@semantic-release/github"]}}
package/dist/exo.d.ts DELETED
@@ -1,13 +0,0 @@
1
- import { Channel } from './channel';
2
- import { ExoSDK, ExoContext, UiMode, ExperienceSnapshot } from './types';
3
- /**
4
- * Creates the ExO (Experience Orchestration) SDK namespace for the experience-toolbar location.
5
- *
6
- * Throws when called without handshake `exo` data, mirroring `createAgent`. This keeps the
7
- * public `ExperienceEditorToolbarAppSDK['exo']` type sound (non-optional, always present).
8
- */
9
- export default function createExo(channel: Channel, exoInit?: {
10
- context?: ExoContext;
11
- uiMode?: UiMode;
12
- experience?: ExperienceSnapshot;
13
- }): ExoSDK;