@contentful/app-sdk 4.56.1 → 4.58.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.
- package/README.md +8 -0
- package/dist/cf-extension-api.bundled.js +1 -1
- package/dist/cf-extension-api.js +1 -1
- package/dist/exo.d.ts +13 -0
- package/dist/types/api.types.d.ts +14 -1
- package/dist/types/cmaClient.types.d.ts +5 -0
- package/dist/types/exo.types.d.ts +202 -0
- package/dist/types/index.d.ts +2 -1
- package/package.json +1 -1
package/dist/cf-extension-api.js
CHANGED
|
@@ -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{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"==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}(),l=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 u,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=(u=0,{getMessageId:function(){return u++}});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 l(this._value),this._isDisabledSignal=new l(t.isDisabled),this._schemaErrorsChangedSignal=new l(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 b(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;p(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;p(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 p(e,t){var n=getComputedStyle(t);return"absolute"===n.position&&("attributes"!==e||"none"!==n.display)}}var _=["getTask","getTasks","createTask","updateTask","deleteTask"];function w(e,t,n,r){var i=t.sys,a=C(i),s=new l(i),u=t.metadata,c=new l(u);e.addHandler("sysChanged",function(e){a=C(i=e),s.dispatch(i)}),e.addHandler("metadataChanged",function(e){u=e,c.dispatch(u)});var d={};return _.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},{})},u?{metadata:u}:{}),{getMetadata:function(){return u},onMetadataChanged:function(e){return c.attach(e)}}),d)}function C(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 l(n),o=t.metadata,i=new l(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 S=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,S(n))}function r(n){var r=S(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=S(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=S(r)).entityType=t,r.multiple=n,e.call("openDialog","entitySelector",r)}}function D(e,t,n){var r=new l(n.localeSettings),o=new l(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 M(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",H="postInstall",x=function(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)},k=function(e){return"function"==typeof e},P=function(e){return console.error(e),Promise.resolve(!1)},R=function(e,t,n){if(!k(e))return Promise.resolve(t);var r;try{r=void 0===n?e():e(n)}catch(e){return P(e)}var o,i=r;return x(o=i)&&k(o.then)||(i=Promise.resolve(i)),i.then(function(e){return e instanceof Error?Promise.reject(e):!1!==e&&(x(e)?e:t)},P).catch(P)};function F(e){var t,n=((t={})[N]=null,t[H]=null,t),r=function(e,t){if(!k(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?R(n[r],{}).then(function(t){return e.send("appHookResult",{stage:r,installationRequestId:o,result:t})}):r===H?R(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(H,e)}}}function V(e,t){if(!t)throw new Error("Context data is required");var n=new l(t),r=new s,o=new l("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)}}}var z,q={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"},j=function(e){return function(t){return e.call("CMAAdapterCall",t)}};function B(e){return{makeRequest:j(e)}}function Y(e,n){var r;return t.createClient({apiAdapter:B(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 G=[U,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,W],K=((z={})[q.LOCATION_ENTRY_FIELD]=G,z[q.LOCATION_ENTRY_FIELD_SIDEBAR]=G,z[q.LOCATION_ENTRY_SIDEBAR]=[U,Q,J,W],z[q.LOCATION_ASSET_SIDEBAR]=[U,function(e,t){var n=t.asset;return{asset:T(e,n)}},W],z[q.LOCATION_ENTRY_EDITOR]=[U,Q,J],z[q.LOCATION_DIALOG]=[U,function(e){return{close:function(t){return e.send("closeDialog",t)}}},W],z[q.LOCATION_PAGE]=[U],z[q.LOCATION_HOME]=[U],z[q.LOCATION_APP_CONFIG]=[U,function(e){return{app:F(e)}}],z[q.LOCATION_AGENT]=[U,function(e,t){var n=t.agent;return{agent:V(e,n)}},W],z);function U(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||q.LOCATION_ENTRY_FIELD;return{cma:Y(i,e),cmaAdapter:B(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:M(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 W(e,t,n){return{window:b(n,e)}}function J(e,t){return{editor:D(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 X=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],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=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]||G).reduce(function(r,i){return o(o({},r),i(e,t,n))},{})});e.init=X,e.locations=q,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{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 x(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 L=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,L(n))}function r(n){var r=L(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=L(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=L(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 B(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 z(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)},getEntryBindings:function(){return e.call("exo.getDataAssemblyEntryBindings")},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)},updateProperty:function(n,r){return e.call("exo.updateNodeProperty",t,n,r)},getBinding:function(n){return e.call("exo.getNodeBinding",t,n)},setBinding:function(n,r){return e.call("exo.setNodeBinding",t,n,r)},getBindingMetadata:function(n){return e.call("exo.getNodeBindingMetadata",t,n)},resolveEntryBinding:function(n){return e.call("exo.resolveNodeEntryBinding",t,n)},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 V,q={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"},j=function(e){return function(t){return e.call("CMAAdapterCall",t)}};function Y(e){return{makeRequest:j(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=((V={})[q.LOCATION_ENTRY_FIELD]=U,V[q.LOCATION_ENTRY_FIELD_SIDEBAR]=U,V[q.LOCATION_ENTRY_SIDEBAR]=[W,Q,J,X],V[q.LOCATION_ASSET_SIDEBAR]=[W,function(e,t){var n=t.asset;return{asset:T(e,n)}},X],V[q.LOCATION_ENTRY_EDITOR]=[W,Q,J],V[q.LOCATION_DIALOG]=[W,function(e){return{close:function(t){return e.send("closeDialog",t)}}},X],V[q.LOCATION_PAGE]=[W],V[q.LOCATION_HOME]=[W],V[q.LOCATION_APP_CONFIG]=[W,function(e){return{app:F(e)}}],V[q.LOCATION_AGENT]=[W,function(e,t){var n=t.agent;return{agent:B(e,n)}},X],V[q.LOCATION_EXPERIENCE_TOOLBAR]=[W,function(e,t){return{exo:z(e,t.exo)}}],V);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||q.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:x(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=q,Object.defineProperty(e,"__esModule",{value:!0})}),globalThis.contentfulApp=globalThis.contentfulExtension;
|
package/dist/exo.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
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;
|
|
@@ -11,6 +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
15
|
export interface UserAPI {
|
|
15
16
|
sys: {
|
|
16
17
|
id: string;
|
|
@@ -261,7 +262,12 @@ export type AgentAppSDK<InstallationParameters extends KeyValueMap = KeyValueMap
|
|
|
261
262
|
/** Methods to update the size of the iframe the app is contained within. */
|
|
262
263
|
window: WindowAPI;
|
|
263
264
|
};
|
|
264
|
-
export type
|
|
265
|
+
export type ExperienceEditorToolbarAppSDK<InstallationParameters extends KeyValueMap = KeyValueMap> = Omit<BaseAppSDK<InstallationParameters, never, never>, 'ids'> & {
|
|
266
|
+
ids: Omit<IdsAPI, EntryScopedIds>;
|
|
267
|
+
/** ExO (Experience Orchestration) SDK for experience-toolbar location */
|
|
268
|
+
exo: ExoSDK;
|
|
269
|
+
};
|
|
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>;
|
|
265
271
|
/** @deprecated consider using {@link BaseAppSDK} */
|
|
266
272
|
export type BaseExtensionSDK = BaseAppSDK;
|
|
267
273
|
/** @deprecated consider using {@link EditorAppSDK} */
|
|
@@ -291,6 +297,7 @@ export interface Locations {
|
|
|
291
297
|
LOCATION_HOME: 'home';
|
|
292
298
|
LOCATION_APP_CONFIG: 'app-config';
|
|
293
299
|
LOCATION_AGENT: 'agent';
|
|
300
|
+
LOCATION_EXPERIENCE_TOOLBAR: 'experience-toolbar';
|
|
294
301
|
}
|
|
295
302
|
export interface ConnectMessage {
|
|
296
303
|
id: string;
|
|
@@ -320,5 +327,11 @@ export interface ConnectMessage {
|
|
|
320
327
|
release?: Release;
|
|
321
328
|
uiLanguageLocale: string;
|
|
322
329
|
agent?: AgentContext;
|
|
330
|
+
/** ExO data; when present, SDK constructs sdk.exo */
|
|
331
|
+
exo?: {
|
|
332
|
+
context?: ExoContext;
|
|
333
|
+
uiMode?: UiMode;
|
|
334
|
+
experience?: ExperienceSnapshot;
|
|
335
|
+
};
|
|
323
336
|
}
|
|
324
337
|
export {};
|
|
@@ -11,6 +11,7 @@ export type CMAClient = {
|
|
|
11
11
|
appSignedRequest: Pick<PlainClientAPI['appSignedRequest'], 'create'>;
|
|
12
12
|
bulkAction: PlainClientAPI['bulkAction'];
|
|
13
13
|
comment: PlainClientAPI['comment'];
|
|
14
|
+
contentSemanticsIndex: Pick<PlainClientAPI['contentSemanticsIndex'], 'getManyForEnvironment'>;
|
|
14
15
|
contentType: PlainClientAPI['contentType'];
|
|
15
16
|
editorInterface: PlainClientAPI['editorInterface'];
|
|
16
17
|
environment: Pick<PlainClientAPI['environment'], 'get'>;
|
|
@@ -21,6 +22,10 @@ export type CMAClient = {
|
|
|
21
22
|
releaseAction: PlainClientAPI['releaseAction'];
|
|
22
23
|
role: Pick<PlainClientAPI['role'], 'get' | 'getMany'>;
|
|
23
24
|
scheduledActions: PlainClientAPI['scheduledActions'];
|
|
25
|
+
semanticDuplicates: PlainClientAPI['semanticDuplicates'];
|
|
26
|
+
semanticRecommendations: PlainClientAPI['semanticRecommendations'];
|
|
27
|
+
semanticReferenceSuggestions: PlainClientAPI['semanticReferenceSuggestions'];
|
|
28
|
+
semanticSearch: PlainClientAPI['semanticSearch'];
|
|
24
29
|
snapshot: PlainClientAPI['snapshot'];
|
|
25
30
|
space: Pick<PlainClientAPI['space'], 'get'>;
|
|
26
31
|
upload: PlainClientAPI['upload'];
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExO (Experience Orchestration) SDK types.
|
|
3
|
+
*/
|
|
4
|
+
export type Unsubscribe = () => void;
|
|
5
|
+
export type UiMode = 'form' | 'visual';
|
|
6
|
+
export type BindingSourceType = 'entry' | 'manual' | 'experience';
|
|
7
|
+
export type EntryBinding = {
|
|
8
|
+
type: 'entry';
|
|
9
|
+
entryId: string;
|
|
10
|
+
fieldId: string;
|
|
11
|
+
locale?: string;
|
|
12
|
+
};
|
|
13
|
+
export type ManualBinding = {
|
|
14
|
+
type: 'manual';
|
|
15
|
+
};
|
|
16
|
+
export type ExperienceBinding = {
|
|
17
|
+
type: 'experience';
|
|
18
|
+
source?: string;
|
|
19
|
+
};
|
|
20
|
+
export type Binding = EntryBinding | ManualBinding | ExperienceBinding;
|
|
21
|
+
export interface ComponentPropertyBinding {
|
|
22
|
+
sourceType: BindingSourceType;
|
|
23
|
+
entryId?: string;
|
|
24
|
+
fieldId?: string;
|
|
25
|
+
}
|
|
26
|
+
/** A reference to a design token. */
|
|
27
|
+
export type DesignTokenValue = {
|
|
28
|
+
type: 'DesignToken';
|
|
29
|
+
value: string;
|
|
30
|
+
};
|
|
31
|
+
/** An inlined design value. */
|
|
32
|
+
export type ManualDesignValue = {
|
|
33
|
+
type: 'ManualDesignValue';
|
|
34
|
+
value: string | number | boolean;
|
|
35
|
+
};
|
|
36
|
+
export type DesignValue = DesignTokenValue | ManualDesignValue;
|
|
37
|
+
export interface ComponentPropertyDescriptor<C = unknown, D extends DesignValue = DesignValue> {
|
|
38
|
+
key: string;
|
|
39
|
+
area: 'content' | 'design';
|
|
40
|
+
value: C | D;
|
|
41
|
+
binding?: ComponentPropertyBinding;
|
|
42
|
+
}
|
|
43
|
+
/** Same-space content source CRN used by Data Assembly ResourceLink parameters. */
|
|
44
|
+
export type SameSpaceContentSource = 'crn:contentful:::content:spaces/$self/environments/$self';
|
|
45
|
+
/**
|
|
46
|
+
* A reference to a Contentful resource, addressed by `urn`. `linkType` is a `Contentful:`-prefixed
|
|
47
|
+
* resource type (e.g. `'Contentful:Template'`).
|
|
48
|
+
*/
|
|
49
|
+
export interface ResourceLink<T extends string = string> {
|
|
50
|
+
sys: {
|
|
51
|
+
type: 'ResourceLink';
|
|
52
|
+
linkType: T;
|
|
53
|
+
urn: string;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** One allowed resource for a Data Assembly ResourceLink parameter. */
|
|
57
|
+
export interface AllowedResource {
|
|
58
|
+
type: 'Contentful:Entry';
|
|
59
|
+
source: SameSpaceContentSource;
|
|
60
|
+
allowedTypes: string[];
|
|
61
|
+
}
|
|
62
|
+
/** Definition of a single Data Assembly parameter. */
|
|
63
|
+
export interface DataAssemblyParameterDefinition {
|
|
64
|
+
name?: string;
|
|
65
|
+
description?: string;
|
|
66
|
+
type: 'ResourceLink';
|
|
67
|
+
linkType: 'Contentful:Entry';
|
|
68
|
+
allowedResources: AllowedResource[];
|
|
69
|
+
}
|
|
70
|
+
/** The value bound to a Data Assembly parameter: a ResourceLink to the referenced entity. */
|
|
71
|
+
export type DataAssemblyParameterValue = ResourceLink<'Contentful:Entry'>;
|
|
72
|
+
export interface DataAssemblyParameter {
|
|
73
|
+
id: string;
|
|
74
|
+
definition: DataAssemblyParameterDefinition;
|
|
75
|
+
value?: DataAssemblyParameterValue | null;
|
|
76
|
+
}
|
|
77
|
+
export interface DataAssemblySnapshot {
|
|
78
|
+
id: string;
|
|
79
|
+
name?: string;
|
|
80
|
+
parameters: Record<string, DataAssemblyParameter>;
|
|
81
|
+
}
|
|
82
|
+
export interface EntryBindingRef {
|
|
83
|
+
parameterId: string;
|
|
84
|
+
entryId: string;
|
|
85
|
+
}
|
|
86
|
+
export interface DataAssemblyAPI {
|
|
87
|
+
/** Returns the current Data Assembly snapshot for the active experience/fragment. */
|
|
88
|
+
get(): DataAssemblySnapshot;
|
|
89
|
+
/** Resolves all Data Assembly parameter definitions, keyed by parameter id. */
|
|
90
|
+
getParameters(): Promise<Record<string, DataAssemblyParameter>>;
|
|
91
|
+
/** Resolves a single parameter definition, or `null` if no parameter has that id. */
|
|
92
|
+
getParameter(parameterId: string): Promise<DataAssemblyParameter | null>;
|
|
93
|
+
/** Resolves the entry bindings currently mapped to Data Assembly parameters. */
|
|
94
|
+
getEntryBindings(): Promise<EntryBindingRef[]>;
|
|
95
|
+
/** Sets the value of a single Data Assembly parameter. */
|
|
96
|
+
setParameter(parameterId: string, value: DataAssemblyParameterValue): Promise<void>;
|
|
97
|
+
/** Sets multiple Data Assembly parameter values in a single update. */
|
|
98
|
+
setParameters(updates: Partial<Record<string, DataAssemblyParameterValue>>): Promise<void>;
|
|
99
|
+
/** Subscribes to Data Assembly snapshot changes. Returns an unsubscribe function. */
|
|
100
|
+
onChange(cb: (snapshot: DataAssemblySnapshot) => void): Unsubscribe;
|
|
101
|
+
}
|
|
102
|
+
/** The type of a node within an experience/fragment tree. */
|
|
103
|
+
export type ExoNodeType = 'Component' | 'Fragment' | 'InlineFragment' | 'Slot';
|
|
104
|
+
export interface ExoNodeSnapshot {
|
|
105
|
+
id: string;
|
|
106
|
+
nodeType: ExoNodeType;
|
|
107
|
+
}
|
|
108
|
+
export interface SlotDescriptor {
|
|
109
|
+
id: string;
|
|
110
|
+
allowedComponentTypeIds: string[];
|
|
111
|
+
currentItems: Array<{
|
|
112
|
+
nodeId: string;
|
|
113
|
+
nodeType: 'Fragment' | 'InlineFragment';
|
|
114
|
+
}>;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* API for reading and mutating a single node (component, slot, fragment, etc.) within an
|
|
118
|
+
* experience or fragment tree. Obtained via {@link ExperienceAPI.getNode}.
|
|
119
|
+
*/
|
|
120
|
+
export interface ExoNodeAPI {
|
|
121
|
+
/** The node's unique id within the experience/fragment tree. */
|
|
122
|
+
id: string;
|
|
123
|
+
/** The node's type (component, slot, fragment, etc.). */
|
|
124
|
+
nodeType: ExoNodeType;
|
|
125
|
+
/** Returns the current snapshot of this node. */
|
|
126
|
+
get(): ExoNodeSnapshot;
|
|
127
|
+
/** Subscribes to changes to this node. Returns an unsubscribe function. */
|
|
128
|
+
onChange(cb: (node: ExoNodeSnapshot) => void): Unsubscribe;
|
|
129
|
+
/** Resolves the value of a content property by key. */
|
|
130
|
+
getContentProperty<T = unknown>(key: string): Promise<T>;
|
|
131
|
+
/** Sets the value of a content property by key. */
|
|
132
|
+
setContentProperty<T = unknown>(key: string, value: T): Promise<void>;
|
|
133
|
+
/** Subscribes to changes of a single content property. Returns an unsubscribe function. */
|
|
134
|
+
onContentPropertyChanged<T = unknown>(key: string, cb: (value: T) => void): Unsubscribe;
|
|
135
|
+
/** Resolves the value of a design property by key. */
|
|
136
|
+
getDesignProperty<T extends DesignValue = DesignValue>(key: string): Promise<T>;
|
|
137
|
+
/** Sets the value of a design property by key. */
|
|
138
|
+
setDesignProperty<T extends DesignValue = DesignValue>(key: string, value: T): Promise<void>;
|
|
139
|
+
/** Subscribes to changes of a single design property. Returns an unsubscribe function. */
|
|
140
|
+
onDesignPropertyChanged<T extends DesignValue = DesignValue>(key: string, cb: (value: T) => void): Unsubscribe;
|
|
141
|
+
/** Resolves the descriptors for all of the node's component properties. */
|
|
142
|
+
getProperties(): Promise<ComponentPropertyDescriptor[]>;
|
|
143
|
+
/** Updates a single property by key (content or design, resolved by the host). */
|
|
144
|
+
updateProperty<T = unknown>(key: string, value: T): Promise<void>;
|
|
145
|
+
/** Resolves the binding for a property key, or `null` if the property is not bound. */
|
|
146
|
+
getBinding(key: string): Promise<Binding | null>;
|
|
147
|
+
/** Sets the binding for a property key. */
|
|
148
|
+
setBinding(key: string, binding: Binding): Promise<void>;
|
|
149
|
+
/** Resolves binding metadata for a property key, or `null` if the property is not bound. */
|
|
150
|
+
getBindingMetadata(key: string): Promise<ComponentPropertyBinding | null>;
|
|
151
|
+
/** Resolves the entry a property is bound to, or `null` if it is not an entry binding. */
|
|
152
|
+
resolveEntryBinding(key: string): Promise<{
|
|
153
|
+
entryId: string;
|
|
154
|
+
fieldId?: string;
|
|
155
|
+
} | null>;
|
|
156
|
+
/** Resolves the slot descriptor for this node, or `null` if the node is not a slot. */
|
|
157
|
+
getSlotDescriptor(): Promise<SlotDescriptor | null>;
|
|
158
|
+
}
|
|
159
|
+
export interface ExoSelectionAPI {
|
|
160
|
+
get(): {
|
|
161
|
+
nodeId: string | null;
|
|
162
|
+
nodeType?: ExoNodeType;
|
|
163
|
+
};
|
|
164
|
+
onChange(cb: (sel: {
|
|
165
|
+
nodeId: string | null;
|
|
166
|
+
nodeType?: ExoNodeType;
|
|
167
|
+
}) => void): Unsubscribe;
|
|
168
|
+
set(nodeId: string | null): void;
|
|
169
|
+
highlight(nodeId: string, opts?: {
|
|
170
|
+
flash?: boolean;
|
|
171
|
+
scrollIntoView?: boolean;
|
|
172
|
+
}): void;
|
|
173
|
+
}
|
|
174
|
+
export interface ExperienceSnapshot {
|
|
175
|
+
sys: {
|
|
176
|
+
id: string;
|
|
177
|
+
type: 'Experience';
|
|
178
|
+
version: number;
|
|
179
|
+
template: ResourceLink<'Contentful:Template'>;
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
export interface ExperienceAPI {
|
|
183
|
+
get(): ExperienceSnapshot;
|
|
184
|
+
onChange(cb: (v: ExperienceSnapshot) => void): Unsubscribe;
|
|
185
|
+
save(): Promise<void>;
|
|
186
|
+
publish(): Promise<void>;
|
|
187
|
+
getNode(nodeId: string): ExoNodeAPI | null;
|
|
188
|
+
getRootNodes(): ExoNodeAPI[];
|
|
189
|
+
selection: ExoSelectionAPI;
|
|
190
|
+
dataAssembly: DataAssemblyAPI;
|
|
191
|
+
}
|
|
192
|
+
export interface ExoContext {
|
|
193
|
+
type: 'experience' | 'fragment';
|
|
194
|
+
entityId: string;
|
|
195
|
+
}
|
|
196
|
+
export interface ExoSDK {
|
|
197
|
+
context: ExoContext;
|
|
198
|
+
onContextChanged(cb: (context: ExoContext) => void): Unsubscribe;
|
|
199
|
+
getUiMode(): UiMode;
|
|
200
|
+
onUiModeChanged(cb: (mode: UiMode) => void): Unsubscribe;
|
|
201
|
+
experience: ExperienceAPI;
|
|
202
|
+
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { AppExtensionSDK, BaseExtensionSDK, DialogExtensionSDK, EditorExtensionSDK, FieldExtensionSDK, HomeExtensionSDK, KnownSDK, PageExtensionSDK, SidebarExtensionSDK, ConfigAppSDK, BaseAppSDK, DialogAppSDK, EditorAppSDK, FieldAppSDK, HomeAppSDK, KnownAppSDK, PageAppSDK, SidebarAppSDK, AccessAPI, ArchiveableAction, ConnectMessage, ContentTypeAPI, CrudAction, EditorLocaleSettings, IdsAPI, LocalesAPI, LocationAPI, Locations, NotifierAPI, ParametersAPI, PublishableAction, SharedEditorSDK, UserAPI, JSONPatchItem, HostnamesAPI, AgentAppSDK, } from './api.types';
|
|
1
|
+
export type { AppExtensionSDK, BaseExtensionSDK, DialogExtensionSDK, EditorExtensionSDK, FieldExtensionSDK, HomeExtensionSDK, KnownSDK, PageExtensionSDK, SidebarExtensionSDK, ConfigAppSDK, BaseAppSDK, DialogAppSDK, EditorAppSDK, FieldAppSDK, HomeAppSDK, KnownAppSDK, PageAppSDK, SidebarAppSDK, AccessAPI, ArchiveableAction, ConnectMessage, ContentTypeAPI, CrudAction, EditorLocaleSettings, IdsAPI, LocalesAPI, LocationAPI, Locations, NotifierAPI, ParametersAPI, PublishableAction, SharedEditorSDK, UserAPI, JSONPatchItem, HostnamesAPI, AgentAppSDK, ExperienceEditorToolbarAppSDK, } from './api.types';
|
|
2
2
|
export type { AgentAPI, AgentContext, LayoutVariant, ToolbarAction, ToolbarActionName, } from './agent.types';
|
|
3
3
|
export type { AppConfigAPI, AppState, OnConfigureHandler, OnConfigureHandlerReturn, } from './app.types';
|
|
4
4
|
export type { DialogsAPI, EntityDialogOptions, OpenAlertOptions, OpenConfirmOptions, OpenCustomWidgetOptions, } from './dialogs.types';
|
|
@@ -12,3 +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, BindingSourceType, EntryBinding, ManualBinding, ExperienceBinding, Binding, ComponentPropertyBinding, DesignTokenValue, ManualDesignValue, DesignValue, ComponentPropertyDescriptor, SameSpaceContentSource, AllowedResource, DataAssemblyParameterDefinition, DataAssemblyParameterValue, DataAssemblyParameter, DataAssemblySnapshot, EntryBindingRef, DataAssemblyAPI, ExoNodeType, ExoNodeSnapshot, SlotDescriptor, ExperienceSnapshot, ExoNodeAPI, ExoSelectionAPI, ExperienceAPI, } from './exo.types';
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@contentful/app-sdk","description":"A JavaScript library to develop custom apps for Contentful","version":"4.
|
|
1
|
+
{"name":"@contentful/app-sdk","description":"A JavaScript library to develop custom apps for Contentful","version":"4.58.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.5","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.4","mocha":"11.7.5","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"]}}
|