datocms-plugin-disabled-field
Version:
A simple, no-configuration plugin that allows you to disable a field that you don't want anyone to edit. You can apply this plugin to every type of field.
2 lines (1 loc) • 12 kB
JavaScript
(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))o(a);new MutationObserver(a=>{for(const e of a)if(e.type==="childList")for(const l of e.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&o(l)}).observe(document,{childList:!0,subtree:!0});function t(a){const e={};return a.integrity&&(e.integrity=a.integrity),a.referrerPolicy&&(e.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?e.credentials="include":a.crossOrigin==="anonymous"?e.credentials="omit":e.credentials="same-origin",e}function o(a){if(a.ep)return;a.ep=!0;const e=t(a);fetch(a.href,e)}})();function V(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var H={exports:{}},v={};Object.defineProperty(v,"__esModule",{value:!0});v.DATA_CLONE_ERROR=v.MESSAGE=v.REJECTED=v.FULFILLED=v.REPLY=v.CALL=v.HANDSHAKE_REPLY=v.HANDSHAKE=void 0;const k="handshake";v.HANDSHAKE=k;const q="handshake-reply";v.HANDSHAKE_REPLY=q;const X="call";v.CALL=X;const Q="reply";v.REPLY=Q;const W="fulfilled";v.FULFILLED=W;const Z="rejected";v.REJECTED=Z;const ee="message";v.MESSAGE=ee;const re="DataCloneError";v.DATA_CLONE_ERROR=re;var b={};Object.defineProperty(b,"__esModule",{value:!0});b.ERR_NO_IFRAME_SRC=b.ERR_NOT_IN_IFRAME=b.ERR_CONNECTION_TIMEOUT=b.ERR_CONNECTION_DESTROYED=void 0;const te="ConnectionDestroyed";b.ERR_CONNECTION_DESTROYED=te;const ne="ConnectionTimeout";b.ERR_CONNECTION_TIMEOUT=ne;const ie="NotInIframe";b.ERR_NOT_IN_IFRAME=ie;const ae="NoIframeSrc";b.ERR_NO_IFRAME_SRC=ae;var z={exports:{}};(function(r,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var t=()=>{const o=[];let a=!1;return{destroy(){a=!0,o.forEach(e=>{e()})},onDestroy(e){a?e():o.push(e)}}};i.default=t,r.exports=i.default})(z,z.exports);var oe=z.exports,U={exports:{}},L={};Object.defineProperty(L,"__esModule",{value:!0});L.deserializeError=L.serializeError=void 0;const se=r=>{let i=r.name,t=r.message,o=r.stack;return{name:i,message:t,stack:o}};L.serializeError=se;const de=r=>{const i=new Error;return Object.keys(r).forEach(t=>i[t]=r[t]),i};L.deserializeError=de;(function(r,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var t=v,o=L,a=(e,l,c)=>{const f=e.localName,n=e.local,s=e.remote,g=e.originForSending,y=e.originForReceiving;let R=!1;c(`${f}: Connecting call receiver`);const N=h=>{if(h.source!==s||h.data.penpal!==t.CALL)return;if(h.origin!==y){c(`${f} received message from origin ${h.origin} which did not match expected origin ${y}`);return}const O=h.data,d=O.methodName,S=O.args,u=O.id;c(`${f}: Received ${d}() call`);const p=_=>C=>{if(c(`${f}: Sending ${d}() reply`),R){c(`${f}: Unable to send ${d}() reply due to destroyed connection`);return}const A={penpal:t.REPLY,id:u,resolution:_,returnValue:C};_===t.REJECTED&&C instanceof Error&&(A.returnValue=(0,o.serializeError)(C),A.returnValueIsError=!0);try{s.postMessage(A,g)}catch(I){throw I.name===t.DATA_CLONE_ERROR&&s.postMessage({penpal:t.REPLY,id:u,resolution:t.REJECTED,returnValue:(0,o.serializeError)(I),returnValueIsError:!0},g),I}};new Promise(_=>_(l[d].apply(l,S))).then(p(t.FULFILLED),p(t.REJECTED))};return n.addEventListener(t.MESSAGE,N),()=>{R=!0,n.removeEventListener(t.MESSAGE,N)}};i.default=a,r.exports=i.default})(U,U.exports);var le=U.exports,G={exports:{}},Y={exports:{}};(function(r,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;let t=0;var o=()=>++t;i.default=o,r.exports=i.default})(Y,Y.exports);var ue=Y.exports;(function(r,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var t=v,o=b,a=l(ue),e=L;function l(f){return f&&f.__esModule?f:{default:f}}var c=(f,n,s,g,y)=>{const R=n.localName,N=n.local,h=n.remote,O=n.originForSending,d=n.originForReceiving;let S=!1;y(`${R}: Connecting call sender`);const u=p=>function(){for(var _=arguments.length,C=new Array(_),A=0;A<_;A++)C[A]=arguments[A];y(`${R}: Sending ${p}() call`);let I;try{h.closed&&(I=!0)}catch{I=!0}if(I&&g(),S){const P=new Error(`Unable to send ${p}() call due to destroyed connection`);throw P.code=o.ERR_CONNECTION_DESTROYED,P}return new Promise((P,x)=>{const D=(0,a.default)(),M=m=>{if(m.source!==h||m.data.penpal!==t.REPLY||m.data.id!==D)return;if(m.origin!==d){y(`${R} received message from origin ${m.origin} which did not match expected origin ${d}`);return}y(`${R}: Received ${p}() reply`),N.removeEventListener(t.MESSAGE,M);let T=m.data.returnValue;m.data.returnValueIsError&&(T=(0,e.deserializeError)(T)),(m.data.resolution===t.FULFILLED?P:x)(T)};N.addEventListener(t.MESSAGE,M),h.postMessage({penpal:t.CALL,id:D,methodName:p,args:C},O)})};return s.reduce((p,_)=>(p[_]=u(_),p),f),()=>{S=!0}};i.default=c,r.exports=i.default})(G,G.exports);var ce=G.exports,j={exports:{}};(function(r,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var t=o=>function(){if(o){for(var a=arguments.length,e=new Array(a),l=0;l<a;l++)e[l]=arguments[l];console.log("[Penpal]",...e)}};i.default=t,r.exports=i.default})(j,j.exports);var fe=j.exports;(function(r,i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var t=v,o=b,a=f(oe),e=f(le),l=f(ce),c=f(fe);function f(s){return s&&s.__esModule?s:{default:s}}var n=function(){let g=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},y=g.parentOrigin,R=y===void 0?"*":y,N=g.methods,h=N===void 0?{}:N,O=g.timeout,d=g.debug;const S=(0,c.default)(d);if(window===window.top){const P=new Error("connectToParent() must be called within an iframe");throw P.code=o.ERR_NOT_IN_IFRAME,P}const u=(0,a.default)(),p=u.destroy,_=u.onDestroy,C=window,A=C.parent;return{promise:new Promise((P,x)=>{let D;O!==void 0&&(D=setTimeout(()=>{const m=new Error(`Connection to parent timed out after ${O}ms`);m.code=o.ERR_CONNECTION_TIMEOUT,x(m),p()},O));const M=m=>{try{clearTimeout()}catch{return}if(m.source!==A||m.data.penpal!==t.HANDSHAKE_REPLY)return;if(R!=="*"&&R!==m.origin){S(`Child received handshake reply from origin ${m.origin} which did not match expected origin ${R}`);return}S("Child: Received handshake reply"),C.removeEventListener(t.MESSAGE,M);const T={localName:"Child",local:C,remote:A,originForSending:m.origin==="null"?"*":m.origin,originForReceiving:m.origin},K={},B=(0,e.default)(T,h,S);_(B);const J=(0,l.default)(K,T,m.data.methodNames,p,S);_(J),clearTimeout(D),P(K)};C.addEventListener(t.MESSAGE,M),_(()=>{C.removeEventListener(t.MESSAGE,M);const m=new Error("Connection destroyed");m.code=o.ERR_CONNECTION_DESTROYED,x(m)}),S("Child: Sending handshake"),A.postMessage({penpal:t.HANDSHAKE,methodNames:Object.keys(h)},R)}),destroy:p}};i.default=n,r.exports=i.default})(H,H.exports);var Ee=H.exports;const me=V(Ee);function F(r){return function(i,t){return t.mode===r}}var ve=F("init"),pe=F("onBoot"),_e=F("renderPage"),ge=F("renderConfigScreen"),Re=F("renderModal"),he=F("renderItemFormSidebarPanel"),Se=F("renderFieldExtension"),ye=F("renderManualFieldExtensionConfigScreen"),Oe=F("renderAssetSource"),E=function(){return E=Object.assign||function(r){for(var i,t=1,o=arguments.length;t<o;t++){i=arguments[t];for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])}return r},E.apply(this,arguments)},Ce=function(r,i,t,o){function a(e){return e instanceof t?e:new t(function(l){l(e)})}return new(t||(t=Promise))(function(e,l){function c(s){try{n(o.next(s))}catch(g){l(g)}}function f(s){try{n(o.throw(s))}catch(g){l(g)}}function n(s){s.done?e(s.value):a(s.value).then(c,f)}n((o=o.apply(r,i||[])).next())})},Ae=function(r,i){var t={label:0,sent:function(){if(e[0]&1)throw e[1];return e[1]},trys:[],ops:[]},o,a,e,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(n){return function(s){return f([n,s])}}function f(n){if(o)throw new TypeError("Generator is already executing.");for(;t;)try{if(o=1,a&&(e=n[0]&2?a.return:n[0]?a.throw||((e=a.return)&&e.call(a),0):a.next)&&!(e=e.call(a,n[1])).done)return e;switch(a=0,e&&(n=[n[0]&2,e.value]),n[0]){case 0:case 1:e=n;break;case 4:return t.label++,{value:n[1],done:!1};case 5:t.label++,a=n[1],n=[0];continue;case 7:n=t.ops.pop(),t.trys.pop();continue;default:if(e=t.trys,!(e=e.length>0&&e[e.length-1])&&(n[0]===6||n[0]===2)){t=0;continue}if(n[0]===3&&(!e||n[1]>e[0]&&n[1]<e[3])){t.label=n[1];break}if(n[0]===6&&t.label<e[1]){t.label=e[1],e=n;break}if(e&&t.label<e[2]){t.label=e[2],t.ops.push(n);break}e[2]&&t.ops.pop(),t.trys.pop();continue}n=i.call(r,t)}catch(s){n=[6,s],a=0}finally{o=e=0}if(n[0]&5)throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}};function Ne(r){return function(i,t){if(!r)return{};for(var o={},a=0,e=i;a<e.length;a++){var l=e[a],c=t.itemTypes[l.relationships.item_type.data.id];o[l.id]=r(l,E(E({},t),{itemType:c}))}return o}}var w=function(r){var i=null,t=function(f){var n=f===void 0?Math.ceil(document.documentElement.getBoundingClientRect().height):f;n!==i&&(r.setHeight(n),i=n)},o=!1,a=null,e=function(){return t()},l=function(){t(),!o&&(o=!0,a=new MutationObserver(e),a.observe(window.document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}),window.addEventListener("resize",e))},c=function(){o&&(o=!1,a&&a.disconnect(),window.removeEventListener("resize",e))};return{updateHeight:t,startAutoResizer:l,stopAutoResizer:c}};function be(r){return r===void 0&&(r={}),Ce(this,void 0,void 0,function(){var i,t,o,a,e,l,c,f,n,s,d,d,g,d,y,d,R,d,N,d,h,d,O,d;return Ae(this,function(S){switch(S.label){case 0:return i=r.assetSources,t=r.mainNavigationTabs,o=r.settingsAreaSidebarItemGroups,a=r.contentAreaSidebarItems,e=r.manualFieldExtensions,l=r.itemFormSidebarPanels,c=null,f=me({methods:{sdkVersion:function(){return"0.2.0"},implementedHooks:function(){return Object.fromEntries(Object.entries(r).map(function(u){var p=u[0],_=u[1];return typeof _=="function"?[p,!0]:[p,_]}))},assetSources:i,mainNavigationTabs:t,settingsAreaSidebarItemGroups:o,contentAreaSidebarItems:a,manualFieldExtensions:e,itemFormSidebarPanels:l,overrideFieldExtensions:Ne(r.overrideFieldExtensions),onChange:function(u){c&&c(u)},validateManualFieldExtensionParameters:r.validateManualFieldExtensionParameters}}),[4,f.promise];case 1:return n=S.sent(),[4,n.getSettings()];case 2:return s=S.sent(),ve(n,s),pe(n,s)&&(d=function(u){r.onBoot&&r.onBoot(E(E({},n),u))},d(s)),_e(n,s)&&(d=function(u){r.renderPage&&r.renderPage(u.pageId,E(E({},n),u))},c=d,d(s)),ge(n,s)&&(g=w(n),d=function(u){r.renderConfigScreen&&r.renderConfigScreen(E(E(E({},n),u),g))},c=d,d(s)),Re(n,s)&&(y=w(n),d=function(u){r.renderModal&&r.renderModal(u.modalId,E(E(E({},n),u),y))},c=d,d(s)),Oe(n,s)&&(R=w(n),d=function(u){r.renderAssetSource&&r.renderAssetSource(u.assetSourceId,E(E(E({},n),u),R))},c=d,d(s)),he(n,s)&&(N=w(n),d=function(u){r.renderItemFormSidebarPanel&&r.renderItemFormSidebarPanel(u.sidebarPaneId,E(E(E({},n),u),N))},c=d,d(s)),Se(n,s)&&(h=w(n),d=function(u){r.renderFieldExtension&&r.renderFieldExtension(u.fieldExtensionId,E(E(E({},n),u),h))},c=d,d(s)),ye(n,s)&&(O=w(n),d=function(u){r.renderManualFieldExtensionConfigScreen&&r.renderManualFieldExtensionConfigScreen(u.fieldExtensionId,E(E(E({},n),u),O))},c=d,d(s)),[2]}})})}const $="disableField";be({async onBoot(r){if(r.plugin.attributes.parameters.migratedFromLegacyPlugin||!r.currentRole.meta.final_permissions.can_edit_schema)return;const i=await r.loadFieldsUsingPlugin(),t=(await Promise.all(i.map(async o=>{const{appearance:a}=o.attributes,e=[];if(a.addons.forEach((l,c)=>{l.field_extension!==$&&e.push({operation:"updateAddon",index:c,newFieldExtensionId:$})}),e.length===0)return!1;await r.updateFieldAppearance(o.id,e)}))).some(o=>o);r.updatePluginParameters({...r.plugin.attributes.parameters,migratedFromLegacyPlugin:!0}),t&&r.notice("Plugin settings upgraded successfully!")},manualFieldExtensions(){return[{id:$,name:"Disabled Field",type:"addon",fieldTypes:"all",initialHeight:0}]},renderFieldExtension(r,i){r===$&&i.disableField(i.fieldPath,!0)}});