datocms-plugin-tile-picker 0.1.1 → 0.1.2
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.
|
@@ -619,4 +619,4 @@ If it declares any Font Awesome CSS pseudo-elements, they will not be rendered a
|
|
|
619
619
|
* Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com
|
|
620
620
|
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
|
621
621
|
* Copyright 2026 Fonticons, Inc.
|
|
622
|
-
*/var b0={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M136.7 5.9L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-8.7-26.1C306.9-7.2 294.7-16 280.9-16L167.1-16c-13.8 0-26 8.8-30.4 21.9zM416 144L32 144 53.1 467.1C54.7 492.4 75.7 512 101 512L347 512c25.3 0 46.3-19.6 47.9-44.9L416 144z"]},fI={prefix:"fas",iconName:"chevron-right",icon:[320,512,[9002],"f054","M311.1 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L243.2 256 73.9 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"]},dI={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M201.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 338.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"]},Qf={prefix:"fas",iconName:"plus",icon:[448,512,[10133,61543,"add"],"2b","M256 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-160z"]},Xf=Array.isArray,pI=typeof global=="object"&&global&&global.Object===Object&&global,mI=typeof self=="object"&&self&&self.Object===Object&&self,Jf=pI||mI||Function("return this")(),fi=Jf.Symbol,w0=Object.prototype,vI=w0.hasOwnProperty,hI=w0.toString,Fi=fi?fi.toStringTag:void 0;function gI(e){var t=vI.call(e,Fi),n=e[Fi];try{e[Fi]=void 0;var r=!0}catch{}var i=hI.call(e);return r&&(t?e[Fi]=n:delete e[Fi]),i}var yI=Object.prototype,SI=yI.toString;function bI(e){return SI.call(e)}var wI="[object Null]",EI="[object Undefined]",Am=fi?fi.toStringTag:void 0;function E0(e){return e==null?e===void 0?EI:wI:Am&&Am in Object(e)?gI(e):bI(e)}function xI(e){return e!=null&&typeof e=="object"}var OI="[object Symbol]";function Zf(e){return typeof e=="symbol"||xI(e)&&E0(e)==OI}var CI=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_I=/^\w*$/;function PI(e,t){if(Xf(e))return!1;var n=typeof e;return n=="number"||n=="symbol"||n=="boolean"||e==null||Zf(e)?!0:_I.test(e)||!CI.test(e)||t!=null&&e in Object(t)}function x0(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var kI="[object AsyncFunction]",II="[object Function]",FI="[object GeneratorFunction]",TI="[object Proxy]";function AI(e){if(!x0(e))return!1;var t=E0(e);return t==II||t==FI||t==kI||t==TI}var Hs=Jf["__core-js_shared__"],Rm=function(){var e=/[^.]+$/.exec(Hs&&Hs.keys&&Hs.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function RI(e){return!!Rm&&Rm in e}var NI=Function.prototype,LI=NI.toString;function MI(e){if(e!=null){try{return LI.call(e)}catch{}try{return e+""}catch{}}return""}var $I=/[\\^$.*+?()[\]{}|]/g,jI=/^\[object .+?Constructor\]$/,VI=Function.prototype,DI=Object.prototype,zI=VI.toString,UI=DI.hasOwnProperty,HI=RegExp("^"+zI.call(UI).replace($I,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function BI(e){if(!x0(e)||RI(e))return!1;var t=AI(e)?HI:jI;return t.test(MI(e))}function WI(e,t){return e==null?void 0:e[t]}function O0(e,t){var n=WI(e,t);return BI(n)?n:void 0}var ya=O0(Object,"create");function qI(){this.__data__=ya?ya(null):{},this.size=0}function YI(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var GI="__lodash_hash_undefined__",KI=Object.prototype,QI=KI.hasOwnProperty;function XI(e){var t=this.__data__;if(ya){var n=t[e];return n===GI?void 0:n}return QI.call(t,e)?t[e]:void 0}var JI=Object.prototype,ZI=JI.hasOwnProperty;function eF(e){var t=this.__data__;return ya?t[e]!==void 0:ZI.call(t,e)}var tF="__lodash_hash_undefined__";function nF(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=ya&&t===void 0?tF:t,this}function Er(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Er.prototype.clear=qI;Er.prototype.delete=YI;Er.prototype.get=XI;Er.prototype.has=eF;Er.prototype.set=nF;function rF(){this.__data__=[],this.size=0}function iF(e,t){return e===t||e!==e&&t!==t}function Yl(e,t){for(var n=e.length;n--;)if(iF(e[n][0],t))return n;return-1}var aF=Array.prototype,oF=aF.splice;function lF(e){var t=this.__data__,n=Yl(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():oF.call(t,n,1),--this.size,!0}function sF(e){var t=this.__data__,n=Yl(t,e);return n<0?void 0:t[n][1]}function uF(e){return Yl(this.__data__,e)>-1}function cF(e,t){var n=this.__data__,r=Yl(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function gi(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}gi.prototype.clear=rF;gi.prototype.delete=lF;gi.prototype.get=sF;gi.prototype.has=uF;gi.prototype.set=cF;var fF=O0(Jf,"Map");function dF(){this.size=0,this.__data__={hash:new Er,map:new(fF||gi),string:new Er}}function pF(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function Gl(e,t){var n=e.__data__;return pF(t)?n[typeof t=="string"?"string":"hash"]:n.map}function mF(e){var t=Gl(this,e).delete(e);return this.size-=t?1:0,t}function vF(e){return Gl(this,e).get(e)}function hF(e){return Gl(this,e).has(e)}function gF(e,t){var n=Gl(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}function Cr(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Cr.prototype.clear=dF;Cr.prototype.delete=mF;Cr.prototype.get=vF;Cr.prototype.has=hF;Cr.prototype.set=gF;var yF="Expected a function";function ed(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(yF);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(ed.Cache||Cr),n}ed.Cache=Cr;var SF=500;function bF(e){var t=ed(e,function(r){return n.size===SF&&n.clear(),r}),n=t.cache;return t}var wF=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,EF=/\\(\\)?/g,xF=bF(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(wF,function(n,r,i,a){t.push(i?a.replace(EF,"$1"):r||n)}),t});function OF(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}var Nm=fi?fi.prototype:void 0,Lm=Nm?Nm.toString:void 0;function C0(e){if(typeof e=="string")return e;if(Xf(e))return OF(e,C0)+"";if(Zf(e))return Lm?Lm.call(e):"";var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}function CF(e){return e==null?"":C0(e)}function _F(e,t){return Xf(e)?e:PI(e,t)?[e]:xF(CF(e))}function PF(e){if(typeof e=="string"||Zf(e))return e;var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}function kF(e,t){t=_F(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[PF(t[n++])];return n&&n==r?e:void 0}function td(e,t,n){var r=e==null?void 0:kF(e,t);return r===void 0?n:r}function _0({header:e,isOpen:t,onToggle:n,children:r,hasError:i}){return I.jsxs("div",{className:`${pe.card}${i?` ${pe["card--error"]}`:""}`,children:[I.jsxs("div",{role:"button",tabIndex:0,className:pe["card-header"],onClick:n,onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),n())},children:[I.jsx(wr,{icon:t?dI:fI,className:pe["card-chevron"],fixedWidth:!0}),e]}),I.jsx("div",{className:pe["card-body"],style:t?void 0:{display:"none"},children:r})]})}const Mm=[{value:"color",label:"Color"},{value:"image",label:"Image"}],Bs=e=>typeof e=="string"&&e.trim()?void 0:"Required";function IF({type:e,source:t}){return e==="color"&&t?I.jsx("span",{className:pe["option-swatch"],style:{backgroundColor:t}}):e==="image"&&t?I.jsx("img",{className:pe["option-swatch-img"],src:t,alt:"",loading:"lazy"}):I.jsx("span",{className:`${pe["option-swatch"]} ${pe["option-swatch--empty"]}`})}function FF({fieldName:e,index:t,onRemove:n}){const{input:{value:r}}=Ur(`${e}.name`,{subscription:{value:!0}}),{input:{value:i}}=Ur(`${e}.type`,{subscription:{value:!0}}),{input:{value:a}}=Ur(`${e}.color`,{subscription:{value:!0}}),{input:{value:o}}=Ur(`${e}.url`,{subscription:{value:!0}}),s=i==="image"?o:a;return I.jsxs("div",{className:pe["option-title"],children:[I.jsx(IF,{type:i,source:s}),I.jsx("span",{className:pe["option-title-name"],children:r||`Option ${t+1}`}),I.jsx(li,{type:"button",buttonType:"negative",buttonSize:"xxs",leftIcon:I.jsx(wr,{icon:b0}),onClick:l=>{l.stopPropagation(),n()}})]})}function P0({fieldName:e,index:t,isOpen:n,onToggle:r,onRemove:i}){const{errors:a}=Vl({subscription:{errors:!0}}),o=!!td(a,e);return I.jsx(_0,{isOpen:n,onToggle:r,hasError:o&&!n,header:I.jsx(FF,{fieldName:e,index:t,onRemove:i}),children:I.jsx(Ca,{children:I.jsxs("div",{className:pe["option-grid"],children:[I.jsx("div",{children:I.jsx(zt,{name:`${e}.name`,validate:Bs,children:({input:s,meta:l})=>I.jsx(Xr,{id:`${e}.name`,name:`${e}.name`,label:"Name",value:s.value,onChange:s.onChange,error:l.error})})}),I.jsx("div",{children:I.jsx(zt,{name:`${e}.value`,validate:Bs,children:({input:s,meta:l})=>I.jsx(Xr,{id:`${e}.value`,name:`${e}.value`,label:"Value",value:s.value,onChange:s.onChange,error:l.error,textInputProps:{monospaced:!0}})})}),I.jsx("div",{children:I.jsx(zt,{name:`${e}.type`,children:({input:s})=>I.jsx(Sf,{id:`${e}.type`,name:`${e}.type`,label:"Type",value:Mm.find(l=>l.value===s.value)??null,onChange:l=>s.onChange(l.value),selectInputProps:{options:Mm}})})}),I.jsx("div",{children:I.jsx(zt,{name:`${e}.type`,subscription:{value:!0},children:({input:{value:s}})=>{const l=s==="image",u=l?`${e}.url`:`${e}.color`;return I.jsx(zt,{name:u,validate:Bs,children:({input:f,meta:c})=>I.jsx(Xr,{id:u,name:u,label:l?"Image URL":"Color",placeholder:l?"https://example.com/icon.svg":"#bada55",value:f.value,onChange:f.onChange,error:c.error})})}})})]})})})}function TF(){const[e,t]=O.useState(()=>new Set),n=O.useCallback(i=>{t(a=>{const o=new Set(a);return o.has(i)?o.delete(i):o.add(i),o})},[]),r=O.useCallback((i,a)=>{i(a),t(o=>{const s=new Set;for(const l of o)l<a?s.add(l):l>a&&s.add(l-1);return s})},[]);return I.jsx($f,{name:"options",children:({fields:i})=>I.jsxs(I.Fragment,{children:[i.length===0?I.jsx("div",{className:pe["empty-state"],children:"No custom options configured"}):i.map((a,o)=>I.jsx(P0,{fieldName:a,index:o,isOpen:e.has(o),onToggle:()=>n(o),onRemove:()=>r(i.remove,o)},a)),I.jsx(li,{type:"button",buttonSize:"xxs",leftIcon:I.jsx(wr,{icon:Qf}),onClick:()=>{const a=i.length??0;i.push({name:"",type:"color",color:"",value:""}),t(o=>new Set([...o,a]))},children:"Add custom option"})]})})}const $m=[{value:"grid",label:"Grid"},{value:"carousel",label:"Carousel"}];function AF(){return I.jsx(yf,{title:"Presentation",children:I.jsx(zt,{name:"presentation.type",subscription:{value:!0},children:({input:{value:e}})=>I.jsxs(Ca,{children:[I.jsx(zt,{name:"presentation.type",children:({input:t})=>I.jsx(Sf,{id:"presentation.type",name:"presentation.type",label:"Layout",hint:"Defaults to grid",value:$m.find(n=>n.value===t.value)??null,onChange:n=>t.onChange((n==null?void 0:n.value)??void 0),selectInputProps:{options:$m,isClearable:!0}})}),(!e||e==="grid")&&I.jsx(zt,{name:"presentation.columns",children:({input:t})=>I.jsx(Xr,{id:"presentation.columns",name:"presentation.columns",label:"Columns",placeholder:"6",value:t.value,onChange:t.onChange,textInputProps:{type:"number"}})}),e==="carousel"&&I.jsx(zt,{name:"presentation.width",children:({input:t})=>I.jsx(Xr,{id:"presentation.width",name:"presentation.width",label:"Card width",placeholder:"250px",value:t.value,onChange:t.onChange})})]})})})}function RF(e){return e.type==="image"?{name:e.name??"",type:"image",url:e.url??"",value:e.value??""}:{name:e.name??"",type:"color",color:e.color??"",value:e.value??""}}function NF(e){var n,r;const t={};if((n=e.presets)!=null&&n.length&&(t.presets=e.presets),(r=e.options)!=null&&r.length&&(t.options=e.options.map(i=>RF(i))),e.presentation){const i={};e.presentation.type&&(i.type=e.presentation.type),e.presentation.columns!=null&&(i.columns=Number(e.presentation.columns)),e.presentation.width&&(i.width=e.presentation.width),Object.keys(i).length>0&&(t.presentation=i)}return{paramsVersion:"2",config:t}}function LF({ctx:e}){const[t]=O.useState(()=>rl(e.parameters).config),n=O.useRef(!1),[r]=O.useState(()=>{const a=zl(e.plugin.attributes.parameters);return Object.keys(a.presets).map(o=>({value:o,label:o}))}),i=O.useCallback(({values:a})=>{if(!n.current){n.current=!0;return}e.setParameters(NF(a))},[e]);return I.jsx(gf,{ctx:e,children:I.jsx(sy,{initialValues:t,mutators:{...cy},onSubmit:()=>{},children:({handleSubmit:a})=>I.jsxs(rg,{onSubmit:a,children:[I.jsx(yf,{title:"Options",children:I.jsxs(Ca,{children:[r.length>0&&I.jsx(zt,{name:"presets",children:({input:o})=>I.jsx(Sf,{id:"presets",name:"presets",label:"From presets",hint:"Merge options from one or more global presets",value:r.filter(s=>(o.value??[]).includes(s.value)),onChange:s=>o.onChange(s.map(l=>l.value)),selectInputProps:{isMulti:!0,options:r,isClearable:!0}})}),I.jsx(TF,{})]})}),I.jsx(AF,{}),I.jsx(WO,{subscription:{values:!0},onChange:i})]})})})}const MF='It appears that the current value of this field ("::value") does not match any of the available options.',$F="Please select another option below.",jF="There are no options available for this field.",VF="Settings updated successfully!",DF="Save settings",Ws='Option at position ::index is missing the "::field" field',jm='Option at position ::index has a non-string "::field" field',zF='Option at position ::index has an invalid type "::type"',UF="Option at position ::index is not an object",HF="::field data is not an object",Vm='"::field" is not an array',BF='"::field" is not an array of strings',WF="Presentation is not an object",qF="The presentation contains invalid parameters",Ue=(e,t={})=>{const n=Object.keys(t);return n.length===0?e:n.reduce((r,i)=>{const a=t[i];return r.replace(`::${i}`,a)},e)},YF=({color:e})=>I.jsx("div",{className:pe["color-preview"],style:{backgroundColor:e}}),GF=({url:e,name:t})=>I.jsx("div",{className:pe["image-preview-container"],children:I.jsx("img",{src:e,alt:t,className:pe["image-preview"],loading:"lazy"})}),KF=({option:e})=>e.type==="color"?I.jsx(YF,{color:e.color}):I.jsx(GF,{url:e.url,name:e.name}),Dm={columns:6,width:"250px"},QF=({ctx:e})=>{const t=O.useRef(null),[n,r]=O.useMemo(()=>{const{presets:u}=zl(e.plugin.attributes.parameters),{config:f}=rl(e.parameters);return[[...(f.presets??[]).flatMap(p=>u[p]??[]),...f.options??[]],f.presentation??{}]},[e.parameters,e.plugin.attributes.parameters]),i=O.useMemo(()=>td(e.formValues,e.fieldPath),[e.formValues,e.fieldPath]),a=O.useMemo(()=>[...n,{value:null}].map(u=>u.value).includes(i),[n,i]),o=O.useCallback(u=>{e.setFieldValue(e.fieldPath,u.target.value)},[]),s=O.useMemo(()=>({display:r.type==="carousel"?"flex":"grid",gridTemplateColumns:`repeat(${r.columns??Dm.columns}, 1fr)`}),[r]),l=O.useMemo(()=>r.type==="carousel"?{width:r.width??Dm.width}:{},[r]);return O.useEffect(()=>{r.type==="carousel"&&t.current&&t.current.scrollIntoView({block:"nearest",inline:"center"})},[t]),I.jsxs(gf,{ctx:e,children:[!a&&I.jsxs("div",{className:pe.notice,children:[I.jsx("div",{children:Ue(MF,{value:i})}),I.jsx("div",{children:I.jsx("b",{children:Ue($F)})})]}),n.length===0&&I.jsx("div",{className:pe.notice,children:Ue(jF)}),I.jsx("div",{className:r.type==="carousel"?pe["carousel-scroll-container"]:"",children:I.jsx("fieldset",{style:s,id:e.field.id,className:pe.fieldset,children:n.map(u=>I.jsxs("label",{className:pe.label,htmlFor:`${u.name}_${e.field.id}`,children:[I.jsx("input",{id:`${u.name}_${e.field.id}`,className:pe.radio,type:"radio",value:u.value,name:"options",defaultChecked:i==u.value,onChange:o}),I.jsxs("div",{ref:i==u.value?t:null,style:l,className:pe.mark,children:[I.jsx(KF,{option:u}),I.jsx("span",{className:pe.name,children:u.name})]})]},u.name))})})]})},XF=e=>typeof e=="string"&&e.trim()?void 0:"Required";function JF({presetName:e,presetIndex:t,displayName:n,isOpen:r,onToggle:i,onRemove:a}){const[o,s]=O.useState(()=>new Set),{errors:l}=Vl({subscription:{errors:!0}}),u=!!td(l,e),f=O.useCallback(p=>{s(v=>{const g=new Set(v);return g.has(p)?g.delete(p):g.add(p),g})},[]),c=O.useCallback((p,v)=>{p(v),s(g=>{const y=new Set;for(const b of g)b<v?y.add(b):b>v&&y.add(b-1);return y})},[]);return I.jsx(_0,{isOpen:r,onToggle:i,hasError:u&&!r,header:I.jsxs("div",{className:pe["preset-header"],children:[I.jsx("span",{className:pe["preset-title"],children:n||`Preset ${t+1}`}),I.jsx(li,{type:"button",buttonType:"negative",buttonSize:"xxs",leftIcon:I.jsx(wr,{icon:b0}),onClick:p=>{p.stopPropagation(),a()}})]}),children:I.jsxs(Ca,{children:[I.jsx(zt,{name:`${e}.name`,validate:XF,children:({input:p,meta:v})=>I.jsx(Xr,{id:`${e}.name`,name:`${e}.name`,label:"Name",placeholder:"e.g. Brand Colors",value:p.value,onChange:p.onChange,error:v.error})}),I.jsxs("div",{children:[I.jsx(ig,{htmlFor:"",children:"Options"}),I.jsx($f,{name:`${e}.options`,children:({fields:p})=>I.jsxs(I.Fragment,{children:[p.length===0?I.jsx("div",{className:pe["empty-state"],children:"No options configured"}):I.jsx("div",{className:pe["nested-options"],children:p.map((v,g)=>I.jsx(P0,{fieldName:v,index:g,isOpen:o.has(g),onToggle:()=>f(g),onRemove:()=>c(p.remove,g)},v))}),I.jsx(li,{type:"button",buttonSize:"xxs",leftIcon:I.jsx(wr,{icon:Qf}),onClick:()=>{const v=p.length??0;p.push({name:"",type:"color",color:"",value:""}),s(g=>new Set([...g,v]))},children:"Add option"})]})})]})]})})}function ZF(e){return{presets:Object.entries(e).map(([t,n])=>({name:t,options:n}))}}function e3(e){return e.type==="image"?{name:e.name??"",type:"image",url:e.url??"",value:e.value??""}:{name:e.name??"",type:"color",color:e.color??"",value:e.value??""}}function t3(e){return Object.fromEntries((e.presets??[]).filter(t=>t==null?void 0:t.name).map(t=>[t.name,(t.options??[]).map(n=>e3(n))]))}function n3(){const{submitting:e,dirty:t,hasValidationErrors:n}=Vl({subscription:{submitting:!0,dirty:!0,hasValidationErrors:!0}});return I.jsx(li,{type:"submit",fullWidth:!0,buttonSize:"l",buttonType:"primary",disabled:e||!t||n,className:pe["space-top"],children:Ue(DF)})}function r3({ctx:e}){const[t]=O.useState(()=>ZF(zl(e.plugin.attributes.parameters).presets)),[n,r]=O.useState(()=>new Set),i=O.useCallback(o=>{r(s=>{const l=new Set(s);return l.has(o)?l.delete(o):l.add(o),l})},[]),a=O.useCallback((o,s)=>{o.remove(s),r(l=>{const u=new Set;for(const f of l)f<s?u.add(f):f>s&&u.add(f-1);return u})},[]);return I.jsx(gf,{ctx:e,children:I.jsx(sy,{initialValues:t,mutators:{...cy},onSubmit:async o=>{await e.updatePluginParameters({paramsVersion:"2",presets:t3(o)}),e.notice(Ue(VF))},children:({handleSubmit:o})=>I.jsxs(rg,{onSubmit:o,className:pe["presets-config-form"],children:[I.jsx("p",{children:"Presets are named collections of options you can reuse across multiple fields. Once defined here, any field using this plugin can reference one or more presets — their options will be merged together and made available for selection."}),I.jsx(yf,{title:"Presets",children:I.jsx($f,{name:"presets",children:({fields:s})=>I.jsxs(Ca,{children:[s.map((l,u)=>{var f;return I.jsx(JF,{presetName:l,presetIndex:u,displayName:((f=s.value[u])==null?void 0:f.name)??"",isOpen:n.has(u),onToggle:()=>i(u),onRemove:()=>a(s,u)},l)}),I.jsx(li,{type:"button",buttonSize:"s",leftIcon:I.jsx(wr,{icon:Qf}),onClick:()=>{const l=s.length??0;s.push({name:"",options:[]}),r(u=>new Set([...u,l]))},children:"Add preset"})]})})}),I.jsx(n3,{})]})})})}function no(e){return Array.isArray(e)}function bc(e){if(typeof e!="object"||!e)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function xo(e){return typeof e=="string"}const i3=["color","image"],a3=["type","columns","width"],gt=e=>({type:"error",message:e}),o3=(e,t)=>{if(!bc(e))return gt(Ue(UF,{index:`${t}`}));const n=e;for(const i of["name","type","value"]){if(n[i]===void 0)return gt(Ue(Ws,{index:`${t}`,field:i}));if(!xo(n[i]))return gt(Ue(jm,{index:`${t}`,field:i}));if(i!=="type"&&!n[i].trim())return gt(Ue(Ws,{index:`${t}`,field:i}))}if(xo(n.type)&&!i3.includes(n.type))return gt(Ue(zF,{index:`${t}`,type:n.type}));const r=n.type==="image"?"url":"color";return!n[r]||!n[r].trim()?gt(Ue(Ws,{index:`${t}`,field:r})):xo(n[r])?{type:"success"}:gt(Ue(jm,{index:`${t}`,field:r}))},l3=e=>{if(!bc(e))return gt(Ue(HF,{field:"Config"}));const t=e;if(t.presets!==void 0&&!no(t.presets))return gt(Ue(Vm,{field:"Presets"}));if(no(t.presets)&&!t.presets.every(xo))return gt(Ue(BF,{field:"Presets"}));if(t.options!==void 0&&!no(t.options))return gt(Ue(Vm,{field:"Options"}));if(no(t.options))for(let n=0;n<t.options.length;n++){const r=o3(t.options[n],n);if(r.type==="error")return r}return t.presentation!==void 0&&!bc(t.presentation)?gt(Ue(WF)):t.presentation!==void 0&&!Object.keys(t.presentation).every(n=>a3.includes(n))?gt(Ue(qF)):{type:"success"}};V1({async onBoot(e){if(!e.currentRole.meta.final_permissions.can_edit_schema)return;fy(e.plugin.attributes.parameters)||await e.updatePluginParameters(zl(e.plugin.attributes.parameters));const t=await e.loadFieldsUsingPlugin();(await Promise.all(t.map(async r=>{if(dy(r.attributes.appearance.parameters))return!1;const i=[{operation:"updateEditor",newFieldExtensionId:"visualSelect",newParameters:rl(r.attributes.appearance.parameters)}];return await e.updateFieldAppearance(r.id,i),!0}))).some(Boolean)&&e.notice("Tile Picker settings upgraded!")},renderConfigScreen(e){Es(I.jsx(r3,{ctx:e}))},manualFieldExtensions(e){return[{id:"visualSelect",name:"Tile Picker",type:"editor",fieldTypes:["text","string"],configurable:!0}]},validateManualFieldExtensionParameters(e,t){const n={},r=rl(t),i=l3(r.config);return i.type==="error"&&(n.config=i.message),n},renderFieldExtension(e,t){Es(I.jsx(QF,{ctx:t}))},renderManualFieldExtensionConfigScreen(e,t){Es(I.jsx(LF,{ctx:t}))}});
|
|
622
|
+
*/var b0={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M136.7 5.9L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-8.7-26.1C306.9-7.2 294.7-16 280.9-16L167.1-16c-13.8 0-26 8.8-30.4 21.9zM416 144L32 144 53.1 467.1C54.7 492.4 75.7 512 101 512L347 512c25.3 0 46.3-19.6 47.9-44.9L416 144z"]},fI={prefix:"fas",iconName:"chevron-right",icon:[320,512,[9002],"f054","M311.1 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L243.2 256 73.9 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"]},dI={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M201.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 338.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"]},Qf={prefix:"fas",iconName:"plus",icon:[448,512,[10133,61543,"add"],"2b","M256 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-160z"]},Xf=Array.isArray,pI=typeof global=="object"&&global&&global.Object===Object&&global,mI=typeof self=="object"&&self&&self.Object===Object&&self,Jf=pI||mI||Function("return this")(),fi=Jf.Symbol,w0=Object.prototype,vI=w0.hasOwnProperty,hI=w0.toString,Fi=fi?fi.toStringTag:void 0;function gI(e){var t=vI.call(e,Fi),n=e[Fi];try{e[Fi]=void 0;var r=!0}catch{}var i=hI.call(e);return r&&(t?e[Fi]=n:delete e[Fi]),i}var yI=Object.prototype,SI=yI.toString;function bI(e){return SI.call(e)}var wI="[object Null]",EI="[object Undefined]",Am=fi?fi.toStringTag:void 0;function E0(e){return e==null?e===void 0?EI:wI:Am&&Am in Object(e)?gI(e):bI(e)}function xI(e){return e!=null&&typeof e=="object"}var OI="[object Symbol]";function Zf(e){return typeof e=="symbol"||xI(e)&&E0(e)==OI}var CI=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_I=/^\w*$/;function PI(e,t){if(Xf(e))return!1;var n=typeof e;return n=="number"||n=="symbol"||n=="boolean"||e==null||Zf(e)?!0:_I.test(e)||!CI.test(e)||t!=null&&e in Object(t)}function x0(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var kI="[object AsyncFunction]",II="[object Function]",FI="[object GeneratorFunction]",TI="[object Proxy]";function AI(e){if(!x0(e))return!1;var t=E0(e);return t==II||t==FI||t==kI||t==TI}var Hs=Jf["__core-js_shared__"],Rm=function(){var e=/[^.]+$/.exec(Hs&&Hs.keys&&Hs.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function RI(e){return!!Rm&&Rm in e}var NI=Function.prototype,LI=NI.toString;function MI(e){if(e!=null){try{return LI.call(e)}catch{}try{return e+""}catch{}}return""}var $I=/[\\^$.*+?()[\]{}|]/g,jI=/^\[object .+?Constructor\]$/,VI=Function.prototype,DI=Object.prototype,zI=VI.toString,UI=DI.hasOwnProperty,HI=RegExp("^"+zI.call(UI).replace($I,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function BI(e){if(!x0(e)||RI(e))return!1;var t=AI(e)?HI:jI;return t.test(MI(e))}function WI(e,t){return e==null?void 0:e[t]}function O0(e,t){var n=WI(e,t);return BI(n)?n:void 0}var ya=O0(Object,"create");function qI(){this.__data__=ya?ya(null):{},this.size=0}function YI(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var GI="__lodash_hash_undefined__",KI=Object.prototype,QI=KI.hasOwnProperty;function XI(e){var t=this.__data__;if(ya){var n=t[e];return n===GI?void 0:n}return QI.call(t,e)?t[e]:void 0}var JI=Object.prototype,ZI=JI.hasOwnProperty;function eF(e){var t=this.__data__;return ya?t[e]!==void 0:ZI.call(t,e)}var tF="__lodash_hash_undefined__";function nF(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=ya&&t===void 0?tF:t,this}function Er(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Er.prototype.clear=qI;Er.prototype.delete=YI;Er.prototype.get=XI;Er.prototype.has=eF;Er.prototype.set=nF;function rF(){this.__data__=[],this.size=0}function iF(e,t){return e===t||e!==e&&t!==t}function Yl(e,t){for(var n=e.length;n--;)if(iF(e[n][0],t))return n;return-1}var aF=Array.prototype,oF=aF.splice;function lF(e){var t=this.__data__,n=Yl(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():oF.call(t,n,1),--this.size,!0}function sF(e){var t=this.__data__,n=Yl(t,e);return n<0?void 0:t[n][1]}function uF(e){return Yl(this.__data__,e)>-1}function cF(e,t){var n=this.__data__,r=Yl(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function gi(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}gi.prototype.clear=rF;gi.prototype.delete=lF;gi.prototype.get=sF;gi.prototype.has=uF;gi.prototype.set=cF;var fF=O0(Jf,"Map");function dF(){this.size=0,this.__data__={hash:new Er,map:new(fF||gi),string:new Er}}function pF(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function Gl(e,t){var n=e.__data__;return pF(t)?n[typeof t=="string"?"string":"hash"]:n.map}function mF(e){var t=Gl(this,e).delete(e);return this.size-=t?1:0,t}function vF(e){return Gl(this,e).get(e)}function hF(e){return Gl(this,e).has(e)}function gF(e,t){var n=Gl(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}function Cr(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Cr.prototype.clear=dF;Cr.prototype.delete=mF;Cr.prototype.get=vF;Cr.prototype.has=hF;Cr.prototype.set=gF;var yF="Expected a function";function ed(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(yF);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(ed.Cache||Cr),n}ed.Cache=Cr;var SF=500;function bF(e){var t=ed(e,function(r){return n.size===SF&&n.clear(),r}),n=t.cache;return t}var wF=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,EF=/\\(\\)?/g,xF=bF(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(wF,function(n,r,i,a){t.push(i?a.replace(EF,"$1"):r||n)}),t});function OF(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}var Nm=fi?fi.prototype:void 0,Lm=Nm?Nm.toString:void 0;function C0(e){if(typeof e=="string")return e;if(Xf(e))return OF(e,C0)+"";if(Zf(e))return Lm?Lm.call(e):"";var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}function CF(e){return e==null?"":C0(e)}function _F(e,t){return Xf(e)?e:PI(e,t)?[e]:xF(CF(e))}function PF(e){if(typeof e=="string"||Zf(e))return e;var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}function kF(e,t){t=_F(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[PF(t[n++])];return n&&n==r?e:void 0}function td(e,t,n){var r=e==null?void 0:kF(e,t);return r===void 0?n:r}function _0({header:e,isOpen:t,onToggle:n,children:r,hasError:i}){return I.jsxs("div",{className:`${pe.card}${i?` ${pe["card--error"]}`:""}`,children:[I.jsxs("div",{role:"button",tabIndex:0,className:pe["card-header"],onClick:n,onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),n())},children:[I.jsx(wr,{icon:t?dI:fI,className:pe["card-chevron"],fixedWidth:!0}),e]}),I.jsx("div",{className:pe["card-body"],style:t?void 0:{display:"none"},children:r})]})}const Mm=[{value:"color",label:"Color"},{value:"image",label:"Image"}],Bs=e=>typeof e=="string"&&e.trim()?void 0:"Required";function IF({type:e,source:t}){return e==="color"&&t?I.jsx("span",{className:pe["option-swatch"],style:{backgroundColor:t}}):e==="image"&&t?I.jsx("img",{className:pe["option-swatch-img"],src:t,alt:"",loading:"lazy"}):I.jsx("span",{className:`${pe["option-swatch"]} ${pe["option-swatch--empty"]}`})}function FF({fieldName:e,index:t,onRemove:n}){const{input:{value:r}}=Ur(`${e}.name`,{subscription:{value:!0}}),{input:{value:i}}=Ur(`${e}.type`,{subscription:{value:!0}}),{input:{value:a}}=Ur(`${e}.color`,{subscription:{value:!0}}),{input:{value:o}}=Ur(`${e}.url`,{subscription:{value:!0}}),s=i==="image"?o:a;return I.jsxs("div",{className:pe["option-title"],children:[I.jsx(IF,{type:i,source:s}),I.jsx("span",{className:pe["option-title-name"],children:r||`Option ${t+1}`}),I.jsx(li,{type:"button",buttonType:"negative",buttonSize:"xxs",leftIcon:I.jsx(wr,{icon:b0}),onClick:l=>{l.stopPropagation(),n()}})]})}function P0({fieldName:e,index:t,isOpen:n,onToggle:r,onRemove:i}){const{errors:a}=Vl({subscription:{errors:!0}}),o=!!td(a,e);return I.jsx(_0,{isOpen:n,onToggle:r,hasError:o&&!n,header:I.jsx(FF,{fieldName:e,index:t,onRemove:i}),children:I.jsx(Ca,{children:I.jsxs("div",{className:pe["option-grid"],children:[I.jsx("div",{children:I.jsx(zt,{name:`${e}.name`,validate:Bs,children:({input:s,meta:l})=>I.jsx(Xr,{id:`${e}.name`,name:`${e}.name`,label:"Name",value:s.value,onChange:s.onChange,error:l.error})})}),I.jsx("div",{children:I.jsx(zt,{name:`${e}.value`,validate:Bs,children:({input:s,meta:l})=>I.jsx(Xr,{id:`${e}.value`,name:`${e}.value`,label:"Value",value:s.value,onChange:s.onChange,error:l.error,textInputProps:{monospaced:!0}})})}),I.jsx("div",{children:I.jsx(zt,{name:`${e}.type`,children:({input:s})=>I.jsx(Sf,{id:`${e}.type`,name:`${e}.type`,label:"Type",value:Mm.find(l=>l.value===s.value)??null,onChange:l=>s.onChange(l.value),selectInputProps:{options:Mm}})})}),I.jsx("div",{children:I.jsx(zt,{name:`${e}.type`,subscription:{value:!0},children:({input:{value:s}})=>{const l=s==="image",u=l?`${e}.url`:`${e}.color`;return I.jsx(zt,{name:u,validate:Bs,children:({input:f,meta:c})=>I.jsx(Xr,{id:u,name:u,label:l?"Image URL":"Color",placeholder:l?"https://example.com/icon.svg":"#bada55",value:f.value,onChange:f.onChange,error:c.error})})}})})]})})})}function TF(){const[e,t]=O.useState(()=>new Set),n=O.useCallback(i=>{t(a=>{const o=new Set(a);return o.has(i)?o.delete(i):o.add(i),o})},[]),r=O.useCallback((i,a)=>{i(a),t(o=>{const s=new Set;for(const l of o)l<a?s.add(l):l>a&&s.add(l-1);return s})},[]);return I.jsx($f,{name:"options",children:({fields:i})=>I.jsxs(I.Fragment,{children:[i.length===0?I.jsx("div",{className:pe["empty-state"],children:"No custom options configured"}):I.jsx("div",{className:pe["nested-options"],children:i.map((a,o)=>I.jsx(P0,{fieldName:a,index:o,isOpen:e.has(o),onToggle:()=>n(o),onRemove:()=>r(i.remove,o)},a))}),I.jsx(li,{type:"button",buttonSize:"xxs",leftIcon:I.jsx(wr,{icon:Qf}),onClick:()=>{const a=i.length??0;i.push({name:"",type:"color",color:"",value:""}),t(o=>new Set([...o,a]))},children:"Add custom option"})]})})}const $m=[{value:"grid",label:"Grid"},{value:"carousel",label:"Carousel"}];function AF(){return I.jsx(yf,{title:"Presentation",children:I.jsx(zt,{name:"presentation.type",subscription:{value:!0},children:({input:{value:e}})=>I.jsxs(Ca,{children:[I.jsx(zt,{name:"presentation.type",children:({input:t})=>I.jsx(Sf,{id:"presentation.type",name:"presentation.type",label:"Layout",hint:"Defaults to grid",value:$m.find(n=>n.value===t.value)??null,onChange:n=>t.onChange((n==null?void 0:n.value)??void 0),selectInputProps:{options:$m,isClearable:!0}})}),(!e||e==="grid")&&I.jsx(zt,{name:"presentation.columns",children:({input:t})=>I.jsx(Xr,{id:"presentation.columns",name:"presentation.columns",label:"Columns",placeholder:"6",value:t.value,onChange:t.onChange,textInputProps:{type:"number"}})}),e==="carousel"&&I.jsx(zt,{name:"presentation.width",children:({input:t})=>I.jsx(Xr,{id:"presentation.width",name:"presentation.width",label:"Card width",placeholder:"250px",value:t.value,onChange:t.onChange})})]})})})}function RF(e){return e.type==="image"?{name:e.name??"",type:"image",url:e.url??"",value:e.value??""}:{name:e.name??"",type:"color",color:e.color??"",value:e.value??""}}function NF(e){var n,r;const t={};if((n=e.presets)!=null&&n.length&&(t.presets=e.presets),(r=e.options)!=null&&r.length&&(t.options=e.options.map(i=>RF(i))),e.presentation){const i={};e.presentation.type&&(i.type=e.presentation.type),e.presentation.columns!=null&&(i.columns=Number(e.presentation.columns)),e.presentation.width&&(i.width=e.presentation.width),Object.keys(i).length>0&&(t.presentation=i)}return{paramsVersion:"2",config:t}}function LF({ctx:e}){const[t]=O.useState(()=>rl(e.parameters).config),n=O.useRef(!1),[r]=O.useState(()=>{const a=zl(e.plugin.attributes.parameters);return Object.keys(a.presets).map(o=>({value:o,label:o}))}),i=O.useCallback(({values:a})=>{if(!n.current){n.current=!0;return}e.setParameters(NF(a))},[e]);return I.jsx(gf,{ctx:e,children:I.jsx(sy,{initialValues:t,mutators:{...cy},onSubmit:()=>{},children:({handleSubmit:a})=>I.jsxs(rg,{onSubmit:a,children:[I.jsx(yf,{title:"Options",children:I.jsxs(Ca,{children:[r.length>0&&I.jsx(zt,{name:"presets",children:({input:o})=>I.jsx(Sf,{id:"presets",name:"presets",label:"From presets",hint:"Merge options from one or more global presets",value:r.filter(s=>(o.value??[]).includes(s.value)),onChange:s=>o.onChange(s.map(l=>l.value)),selectInputProps:{isMulti:!0,options:r,isClearable:!0}})}),I.jsx(TF,{})]})}),I.jsx(AF,{}),I.jsx(WO,{subscription:{values:!0},onChange:i})]})})})}const MF='It appears that the current value of this field ("::value") does not match any of the available options.',$F="Please select another option below.",jF="There are no options available for this field.",VF="Settings updated successfully!",DF="Save settings",Ws='Option at position ::index is missing the "::field" field',jm='Option at position ::index has a non-string "::field" field',zF='Option at position ::index has an invalid type "::type"',UF="Option at position ::index is not an object",HF="::field data is not an object",Vm='"::field" is not an array',BF='"::field" is not an array of strings',WF="Presentation is not an object",qF="The presentation contains invalid parameters",Ue=(e,t={})=>{const n=Object.keys(t);return n.length===0?e:n.reduce((r,i)=>{const a=t[i];return r.replace(`::${i}`,a)},e)},YF=({color:e})=>I.jsx("div",{className:pe["color-preview"],style:{backgroundColor:e}}),GF=({url:e,name:t})=>I.jsx("div",{className:pe["image-preview-container"],children:I.jsx("img",{src:e,alt:t,className:pe["image-preview"],loading:"lazy"})}),KF=({option:e})=>e.type==="color"?I.jsx(YF,{color:e.color}):I.jsx(GF,{url:e.url,name:e.name}),Dm={columns:6,width:"250px"},QF=({ctx:e})=>{const t=O.useRef(null),[n,r]=O.useMemo(()=>{const{presets:u}=zl(e.plugin.attributes.parameters),{config:f}=rl(e.parameters);return[[...(f.presets??[]).flatMap(p=>u[p]??[]),...f.options??[]],f.presentation??{}]},[e.parameters,e.plugin.attributes.parameters]),i=O.useMemo(()=>td(e.formValues,e.fieldPath),[e.formValues,e.fieldPath]),a=O.useMemo(()=>[...n,{value:null}].map(u=>u.value).includes(i),[n,i]),o=O.useCallback(u=>{e.setFieldValue(e.fieldPath,u.target.value)},[]),s=O.useMemo(()=>({display:r.type==="carousel"?"flex":"grid",gridTemplateColumns:`repeat(${r.columns??Dm.columns}, 1fr)`}),[r]),l=O.useMemo(()=>r.type==="carousel"?{width:r.width??Dm.width}:{},[r]);return O.useEffect(()=>{r.type==="carousel"&&t.current&&t.current.scrollIntoView({block:"nearest",inline:"center"})},[t]),I.jsxs(gf,{ctx:e,children:[!a&&I.jsxs("div",{className:pe.notice,children:[I.jsx("div",{children:Ue(MF,{value:i})}),I.jsx("div",{children:I.jsx("b",{children:Ue($F)})})]}),n.length===0&&I.jsx("div",{className:pe.notice,children:Ue(jF)}),I.jsx("div",{className:r.type==="carousel"?pe["carousel-scroll-container"]:"",children:I.jsx("fieldset",{style:s,id:e.field.id,className:pe.fieldset,children:n.map(u=>I.jsxs("label",{className:pe.label,htmlFor:`${u.name}_${e.field.id}`,children:[I.jsx("input",{id:`${u.name}_${e.field.id}`,className:pe.radio,type:"radio",value:u.value,name:"options",defaultChecked:i==u.value,onChange:o}),I.jsxs("div",{ref:i==u.value?t:null,style:l,className:pe.mark,children:[I.jsx(KF,{option:u}),I.jsx("span",{className:pe.name,children:u.name})]})]},u.name))})})]})},XF=e=>typeof e=="string"&&e.trim()?void 0:"Required";function JF({presetName:e,presetIndex:t,displayName:n,isOpen:r,onToggle:i,onRemove:a}){const[o,s]=O.useState(()=>new Set),{errors:l}=Vl({subscription:{errors:!0}}),u=!!td(l,e),f=O.useCallback(p=>{s(v=>{const g=new Set(v);return g.has(p)?g.delete(p):g.add(p),g})},[]),c=O.useCallback((p,v)=>{p(v),s(g=>{const y=new Set;for(const b of g)b<v?y.add(b):b>v&&y.add(b-1);return y})},[]);return I.jsx(_0,{isOpen:r,onToggle:i,hasError:u&&!r,header:I.jsxs("div",{className:pe["preset-header"],children:[I.jsx("span",{className:pe["preset-title"],children:n||`Preset ${t+1}`}),I.jsx(li,{type:"button",buttonType:"negative",buttonSize:"xxs",leftIcon:I.jsx(wr,{icon:b0}),onClick:p=>{p.stopPropagation(),a()}})]}),children:I.jsxs(Ca,{children:[I.jsx(zt,{name:`${e}.name`,validate:XF,children:({input:p,meta:v})=>I.jsx(Xr,{id:`${e}.name`,name:`${e}.name`,label:"Name",placeholder:"e.g. Brand Colors",value:p.value,onChange:p.onChange,error:v.error})}),I.jsxs("div",{children:[I.jsx(ig,{htmlFor:"",children:"Options"}),I.jsx($f,{name:`${e}.options`,children:({fields:p})=>I.jsxs(I.Fragment,{children:[p.length===0?I.jsx("div",{className:pe["empty-state"],children:"No options configured"}):I.jsx("div",{className:pe["nested-options"],children:p.map((v,g)=>I.jsx(P0,{fieldName:v,index:g,isOpen:o.has(g),onToggle:()=>f(g),onRemove:()=>c(p.remove,g)},v))}),I.jsx(li,{type:"button",buttonSize:"xxs",leftIcon:I.jsx(wr,{icon:Qf}),onClick:()=>{const v=p.length??0;p.push({name:"",type:"color",color:"",value:""}),s(g=>new Set([...g,v]))},children:"Add option"})]})})]})]})})}function ZF(e){return{presets:Object.entries(e).map(([t,n])=>({name:t,options:n}))}}function e3(e){return e.type==="image"?{name:e.name??"",type:"image",url:e.url??"",value:e.value??""}:{name:e.name??"",type:"color",color:e.color??"",value:e.value??""}}function t3(e){return Object.fromEntries((e.presets??[]).filter(t=>t==null?void 0:t.name).map(t=>[t.name,(t.options??[]).map(n=>e3(n))]))}function n3(){const{submitting:e,dirty:t,hasValidationErrors:n}=Vl({subscription:{submitting:!0,dirty:!0,hasValidationErrors:!0}});return I.jsx(li,{type:"submit",fullWidth:!0,buttonSize:"l",buttonType:"primary",disabled:e||!t||n,className:pe["space-top"],children:Ue(DF)})}function r3({ctx:e}){const[t]=O.useState(()=>ZF(zl(e.plugin.attributes.parameters).presets)),[n,r]=O.useState(()=>new Set),i=O.useCallback(o=>{r(s=>{const l=new Set(s);return l.has(o)?l.delete(o):l.add(o),l})},[]),a=O.useCallback((o,s)=>{o.remove(s),r(l=>{const u=new Set;for(const f of l)f<s?u.add(f):f>s&&u.add(f-1);return u})},[]);return I.jsx(gf,{ctx:e,children:I.jsx(sy,{initialValues:t,mutators:{...cy},onSubmit:async o=>{await e.updatePluginParameters({paramsVersion:"2",presets:t3(o)}),e.notice(Ue(VF))},children:({handleSubmit:o})=>I.jsxs(rg,{onSubmit:o,className:pe["presets-config-form"],children:[I.jsx("p",{children:"Presets are named collections of options you can reuse across multiple fields. Once defined here, any field using this plugin can reference one or more presets — their options will be merged together and made available for selection."}),I.jsx(yf,{title:"Presets",children:I.jsx($f,{name:"presets",children:({fields:s})=>I.jsxs(Ca,{children:[s.map((l,u)=>{var f;return I.jsx(JF,{presetName:l,presetIndex:u,displayName:((f=s.value[u])==null?void 0:f.name)??"",isOpen:n.has(u),onToggle:()=>i(u),onRemove:()=>a(s,u)},l)}),I.jsx(li,{type:"button",buttonSize:"s",leftIcon:I.jsx(wr,{icon:Qf}),onClick:()=>{const l=s.length??0;s.push({name:"",options:[]}),r(u=>new Set([...u,l]))},children:"Add preset"})]})})}),I.jsx(n3,{})]})})})}function no(e){return Array.isArray(e)}function bc(e){if(typeof e!="object"||!e)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function xo(e){return typeof e=="string"}const i3=["color","image"],a3=["type","columns","width"],gt=e=>({type:"error",message:e}),o3=(e,t)=>{if(!bc(e))return gt(Ue(UF,{index:`${t}`}));const n=e;for(const i of["name","type","value"]){if(n[i]===void 0)return gt(Ue(Ws,{index:`${t}`,field:i}));if(!xo(n[i]))return gt(Ue(jm,{index:`${t}`,field:i}));if(i!=="type"&&!n[i].trim())return gt(Ue(Ws,{index:`${t}`,field:i}))}if(xo(n.type)&&!i3.includes(n.type))return gt(Ue(zF,{index:`${t}`,type:n.type}));const r=n.type==="image"?"url":"color";return!n[r]||!n[r].trim()?gt(Ue(Ws,{index:`${t}`,field:r})):xo(n[r])?{type:"success"}:gt(Ue(jm,{index:`${t}`,field:r}))},l3=e=>{if(!bc(e))return gt(Ue(HF,{field:"Config"}));const t=e;if(t.presets!==void 0&&!no(t.presets))return gt(Ue(Vm,{field:"Presets"}));if(no(t.presets)&&!t.presets.every(xo))return gt(Ue(BF,{field:"Presets"}));if(t.options!==void 0&&!no(t.options))return gt(Ue(Vm,{field:"Options"}));if(no(t.options))for(let n=0;n<t.options.length;n++){const r=o3(t.options[n],n);if(r.type==="error")return r}return t.presentation!==void 0&&!bc(t.presentation)?gt(Ue(WF)):t.presentation!==void 0&&!Object.keys(t.presentation).every(n=>a3.includes(n))?gt(Ue(qF)):{type:"success"}};V1({async onBoot(e){if(!e.currentRole.meta.final_permissions.can_edit_schema)return;fy(e.plugin.attributes.parameters)||await e.updatePluginParameters(zl(e.plugin.attributes.parameters));const t=await e.loadFieldsUsingPlugin();(await Promise.all(t.map(async r=>{if(dy(r.attributes.appearance.parameters))return!1;const i=[{operation:"updateEditor",newFieldExtensionId:"visualSelect",newParameters:rl(r.attributes.appearance.parameters)}];return await e.updateFieldAppearance(r.id,i),!0}))).some(Boolean)&&e.notice("Tile Picker settings upgraded!")},renderConfigScreen(e){Es(I.jsx(r3,{ctx:e}))},manualFieldExtensions(e){return[{id:"visualSelect",name:"Tile Picker",type:"editor",fieldTypes:["text","string"],configurable:!0}]},validateManualFieldExtensionParameters(e,t){const n={},r=rl(t),i=l3(r.config);return i.type==="error"&&(n.config=i.message),n},renderFieldExtension(e,t){Es(I.jsx(QF,{ctx:t}))},renderManualFieldExtensionConfigScreen(e,t){Es(I.jsx(LF,{ctx:t}))}});
|
package/dist/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta charset="UTF-8" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>DatoCMS Plugin</title>
|
|
8
|
-
<script type="module" crossorigin src="./assets/index-
|
|
8
|
+
<script type="module" crossorigin src="./assets/index-CbeGhCiZ.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="./assets/index-BQo7iE5E.css">
|
|
10
10
|
</head>
|
|
11
11
|
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Replace plain dropdowns with a visual tile grid — pick from color swatches, image thumbnails, or any mix of both.",
|
|
4
4
|
"homepage": "https://github.com/datocms/plugins/tree/master/tile-picker#readme",
|
|
5
5
|
"private": false,
|
|
6
|
-
"version": "0.1.
|
|
6
|
+
"version": "0.1.2",
|
|
7
7
|
"author": "Stefano Verna <s.verna@datocms.com>",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"keywords": [
|