pages_core 3.9.1 → 3.9.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4697dffbc0695914a49972a5520077f560c5ace75e762de3c7876e115290aad8
4
- data.tar.gz: 1f6c4668362a2e481e0585fbb78792d2a880ab9dcbb40addfa524792ba54c1a8
3
+ metadata.gz: 9fd8be786c8147c1bb9e0ef1c1ab4b2281d5715efb45a611d4047286e666985f
4
+ data.tar.gz: 798133ec210b2539ca6dceded73dccc50ede78e83b430fdedcf805ee4ffd7a26
5
5
  SHA512:
6
- metadata.gz: 3438938ee79bc58370c06c8fc25fecef0f2177358d8c370b2942b1472d2a89ec806cc3411d2ef7cb61aa3c7eca5be70cb0a95afd6b097ae8f9b4ec25c4dec24f
7
- data.tar.gz: 90b9796ecac0ab3ee579ffc494ee6c0d94cda21df08c28f9fbb09b80214d6b45b76d8914b0592d761df0dd92758654809c802ab9b9129e45493cd733306b6569
6
+ metadata.gz: 9ec7ffb86a0d8678c554783973ef7b11dc046d541b58dcbe19b48ea0cb7764d2213b4c28671f8b43b09a5348b15461111c4c3082606feaeca926238d177c3812
7
+ data.tar.gz: c493116aa60b81c4a92c47531c3fd29cb1d7eda333cd68ca3d68a30394c4414356a750ff3b85d80d071d31212c9692fdb756313016637aa76970f8b95c4206ab
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.9.1
1
+ 3.9.2
@@ -13,7 +13,7 @@ Add a <Suspense fallback=...> component higher in the tree to provide a loading
13
13
 
14
14
  %o
15
15
 
16
- %o`,r,t,n)},e}();function cv(){return new Promise(function(e){document.readyState=="loading"?document.addEventListener("DOMContentLoaded",e):e()})}function rf(e){var t=Br(e,"classes");return t.reduce(function(r,n){return Object.assign(r,fv(n))},{})}function fv(e){var t,r=e+"Class";return t={},t[r]={get:function(){var n=this.classes;if(n.has(e))return n.get(e);var o=n.getAttributeName(e);throw new Error('Missing attribute "'+o+'"')}},t["has"+Vr(r)]={get:function(){return this.classes.has(e)}},t}function nf(e){var t=Br(e,"targets");return t.reduce(function(r,n){return Object.assign(r,dv(n))},{})}function dv(e){var t;return t={},t[e+"Target"]={get:function(){var r=this.targets.find(e);if(r)return r;throw new Error('Missing target element "'+this.identifier+"."+e+'"')}},t[e+"Targets"]={get:function(){return this.targets.findAll(e)}},t["has"+Vr(e)+"Target"]={get:function(){return this.targets.has(e)}},t}function of(e){var t=Vc(e,"values"),r={valueDescriptorMap:{get:function(){var n=this;return t.reduce(function(o,i){var a,l=af(i),s=n.data.getAttributeNameForKey(l.key);return Object.assign(o,(a={},a[s]=l,a))},{})}}};return t.reduce(function(n,o){return Object.assign(n,pv(o))},r)}function pv(e){var t,r=af(e),n=r.type,o=r.key,i=r.name,a=vv[n],l=lf[n]||lf.default;return t={},t[i]={get:function(){var s=this.data.get(o);return s!==null?a(s):r.defaultValue},set:function(s){s===void 0?this.data.delete(o):this.data.set(o,l(s))}},t["has"+Vr(i)]={get:function(){return this.data.has(o)}},t}function af(e){var t=e[0],r=e[1],n=hv(r);return mv(t,n)}function hv(e){switch(e){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}throw new Error('Unknown value type constant "'+e+'"')}function mv(e,t){var r=bi(e)+"-value";return{type:t,key:r,name:Yc(r),get defaultValue(){return gv[t]}}}var gv={get array(){return[]},boolean:!1,number:0,get object(){return{}},string:""},vv={array:function(e){var t=JSON.parse(e);if(!Array.isArray(t))throw new TypeError("Expected array");return t},boolean:function(e){return!(e=="0"||e=="false")},number:function(e){return parseFloat(e)},object:function(e){var t=JSON.parse(e);if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError("Expected object");return t},string:function(e){return e}},lf={default:yv,array:sf,object:sf};function sf(e){return JSON.stringify(e)}function yv(e){return""+e}var kt=function(){function e(t){this.context=t}return Object.defineProperty(e.prototype,"application",{get:function(){return this.context.application},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"scope",{get:function(){return this.context.scope},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"element",{get:function(){return this.scope.element},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"identifier",{get:function(){return this.scope.identifier},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"targets",{get:function(){return this.scope.targets},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"classes",{get:function(){return this.scope.classes},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"data",{get:function(){return this.scope.data},enumerable:!1,configurable:!0}),e.prototype.initialize=function(){},e.prototype.connect=function(){},e.prototype.disconnect=function(){},e.blessings=[rf,nf,of],e.targets=[],e.values={},e}();var na={};Rg(na,{Attachments:()=>Gr,DateRangeSelect:()=>gr,EditableImage:()=>zt,FileUploadButton:()=>ut,ImageCropper:()=>on,ImageGrid:()=>un,ImageUploader:()=>zi,Modal:()=>Bi,PageDates:()=>ao,PageFiles:()=>lo,PageImages:()=>so,PageTree:()=>uo,RichTextArea:()=>br,TagEditor:()=>ta,Toast:()=>po});var Ve=P(H()),Qr=P(J());var Ee=P(H()),et=P(J());function Qn(){return document.queryCommandSupported&&document.queryCommandSupported("copy")}function mt(e){let t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}var oe=P(H()),Zn=P(J());function Je(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}var Mf=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Fl=function(){return Math.random().toString(36).substring(7).split("").join(".")},Lf={INIT:"@@redux/INIT"+Fl(),REPLACE:"@@redux/REPLACE"+Fl(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Fl()}};function Pv(e){if(typeof e!="object"||e===null)return!1;for(var t=e;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Gn(e,t,r){var n;if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(Je(0));if(typeof t=="function"&&typeof r=="undefined"&&(r=t,t=void 0),typeof r!="undefined"){if(typeof r!="function")throw new Error(Je(1));return r(Gn)(e,t)}if(typeof e!="function")throw new Error(Je(2));var o=e,i=t,a=[],l=a,s=!1;function u(){l===a&&(l=a.slice())}function p(){if(s)throw new Error(Je(3));return i}function m(x){if(typeof x!="function")throw new Error(Je(4));if(s)throw new Error(Je(5));var d=!0;return u(),l.push(x),function(){if(!!d){if(s)throw new Error(Je(6));d=!1,u();var c=l.indexOf(x);l.splice(c,1),a=null}}}function h(x){if(!Pv(x))throw new Error(Je(7));if(typeof x.type=="undefined")throw new Error(Je(8));if(s)throw new Error(Je(9));try{s=!0,i=o(i,x)}finally{s=!1}for(var d=a=l,f=0;f<d.length;f++){var c=d[f];c()}return x}function w(x){if(typeof x!="function")throw new Error(Je(10));o=x,h({type:Lf.REPLACE})}function g(){var x,d=m;return x={subscribe:function(c){if(typeof c!="object"||c===null)throw new Error(Je(11));function v(){c.next&&c.next(p())}v();var y=d(v);return{unsubscribe:y}}},x[Mf]=function(){return this},x}return h({type:Lf.INIT}),n={dispatch:h,subscribe:m,getState:p,replaceReducer:w},n[Mf]=g,n}var Le=Gn((e={},t)=>{switch(t.type){case"OPEN":return re(F({},e),{component:t.payload});case"CLOSE":return re(F({},e),{component:null});default:return e}});var Fe=Gn((e=[],t)=>{switch(t.type){case"ERROR":return[...e,{message:t.message,type:"error"}];case"NOTICE":return[...e,{message:t.message,type:"notice"}];case"NEXT":return e.slice(1);default:return e}});function Ff(){return document.querySelector("[name=csrf-token]").content}function Rf(){return{method:"POST",headers:{"Content-Type":"application/json; charset=utf-8","X-CSRF-Token":Ff()}}}async function Uf(e,t){let r=re(F({},Rf()),{method:"POST"});return t&&(r.body=JSON.stringify(t)),(await fetch(e,r)).json()}async function Hr(e,t){let r=re(F({},Rf()),{method:"PUT"});return t&&(r.body=JSON.stringify(t)),(await fetch(e,r)).json()}async function qr(e,t){return(await fetch(e,{method:"POST",body:t,headers:{"X-CSRF-Token":Ff()}})).json()}function ki(e){let{attachment:t}=e,[r,n]=(0,oe.useState)(e.locale),[o,i]=(0,oe.useState)({name:t.name||{},description:t.description||{}}),a=u=>p=>{i(re(F({},o),{[u]:re(F({},o[u]),{[r]:p.target.value})}))},l=u=>{u.preventDefault(),mt(`[attachment:${t.id}]`),Fe.dispatch({type:"NOTICE",message:"Embed code copied to clipboard"})},s=u=>{u.preventDefault(),u.stopPropagation();let p=F({},o);Hr(`/admin/attachments/${t.id}`,{attachment:p}),e.onUpdate&&e.onUpdate(p),Le.dispatch({type:"CLOSE"})};return oe.default.createElement("div",{className:"attachment-editor"},oe.default.createElement("form",null,e.locales&&Object.keys(e.locales).length>1&&oe.default.createElement("div",{className:"field"},oe.default.createElement("label",null,"Locale"),oe.default.createElement("select",{name:"locale",onChange:u=>n(u.target.value)},Object.keys(e.locales).map(u=>oe.default.createElement("option",{key:`locale-${u}`,value:u},e.locales[u])))),oe.default.createElement("div",{className:"field"},oe.default.createElement("label",null,"Name"),oe.default.createElement("input",{type:"text",className:"name",value:o.name[r]||"",onChange:a("name")})),oe.default.createElement("div",{className:"field"},oe.default.createElement("label",null,"Description"),oe.default.createElement("textarea",{className:"description",value:o.description[r]||"",onChange:a("description")})),oe.default.createElement("div",{className:"field embed-code"},oe.default.createElement("label",null,"Embed code"),oe.default.createElement("input",{type:"text",value:`[attachment:${t.id}]`,disabled:!0}),Qn()&&oe.default.createElement("button",{onClick:l},"Copy")),oe.default.createElement("div",{className:"field"},oe.default.createElement("label",null,"File"),oe.default.createElement("a",{href:t.url,rel:"noreferrer",target:"_blank"},t.filename)),oe.default.createElement("div",{className:"buttons"},oe.default.createElement("button",{onClick:s},"Save"),oe.default.createElement("button",{onClick:()=>Le.dispatch({type:"CLOSE"})},"Cancel"))))}ki.propTypes={attachment:Zn.default.object,locale:Zn.default.string,locales:Zn.default.object,onUpdate:Zn.default.func};var Ft=P(H()),wd=P(yd());function cy(e){return e.ref.current?e.ref.current.getBoundingClientRect():null}function fy(e,t){if(e&&e.ref&&e.ref.current){let r=e.ref.current.style.display;e.ref.current.style.display="none";let n=t();return e.ref.current.style.display=r,n}else return t()}function dy(e,t){switch(t.type){case"append":return[...e,...t.payload];case"prepend":return[...t.payload,...e];case"insertFiles":var r=e.indexOf("Files");return r===-1||!t.payload?e:[...e.slice(0,r),...t.payload,...e.slice(r+1)];case"update":return e.map(n=>n.handle===t.payload.handle?t.payload:n);case"updatePositions":return fy(t.payload,()=>e.map(n=>re(F({},n),{rect:cy(n)})));case"remove":return e.filter(n=>n.handle!==t.payload.handle);case"replace":return t.payload;case"reorder":return t.payload;default:return e}}function Kr(e){return{record:e,rect:null,ref:Ft.default.createRef(),handle:(0,wd.default)("draggable")}}function mr(e){let t=(0,Ft.useRef)(),[r,n]=(0,Ft.useReducer)(dy,[],()=>e.map(o=>Kr(o)));return(0,Ft.useEffect)(()=>{n({type:"updatePositions"})},[]),{ref:t,draggables:r,dispatch:n}}var Oi=P(H());function py(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;let t=e.dataTransfer.types;for(var r=0;r<t.length;r++)if(t[r]==="Files"||t[r]==="application/x-moz-file")return!0;return!1}function hy(e){var t=[];if(e.items)for(let r=0;r<e.items.length;r++)e.items[r].kind=="file"&&t.push(e.items[r].getAsFile());else for(let r=0;r<e.files.length;r++)t.push(e.files[r]);return t}function xd(e){var t,r;return e.type=="touchmove"?(t=e.touches[0].clientX,r=e.touches[0].clientY):(t=e.clientX,r=e.clientY),{x:t,y:r}}function Yr(e,t){let[r,n]=(0,Oi.useState)({dragging:!1,x:null,y:null}),o=u=>{e.forEach(p=>{p.dispatch({type:"updatePositions",payload:u})})},i=(u,p)=>{o(p),n(F({dragging:p},xd(u)))},a=u=>{r.dragging?(u.stopPropagation(),u.preventDefault(),n(F(F({},r),xd(u)))):py(u)&&i(u,"Files")},l=u=>{if(r.dragging){let m=r;var p=[];u.preventDefault(),u.stopPropagation(),r.dragging=="Files"&&(p=hy(u.dataTransfer)),n({dragging:!1,x:null,y:null}),t(m,p),o()}},s=u=>{r.dragging==="Files"&&(u.preventDefault(),u.stopPropagation(),n({dragging:!1,x:null,y:null}))};return(0,Oi.useEffect)(()=>(window.addEventListener("mousemove",a),window.addEventListener("touchmove",a),window.addEventListener("mouseup",l),window.addEventListener("touchend",l),window.addEventListener("mouseout",s),function(){window.removeEventListener("mousemove",a),window.removeEventListener("touchmove",a),window.removeEventListener("mouseup",l),window.removeEventListener("touchend",l),window.removeEventListener("mouseout",s)})),[r,i,{onDragOver:a,onDrop:l}]}var _i=P(H());function Xr(e,t){let r=(0,_i.useRef)(),n=o=>{o.preventDefault(),o.stopPropagation(),t(o,e)};return(0,_i.useEffect)(()=>{e.ref.current=r.current},[]),{ref:r,onDragStart:n,draggable:!0}}function bd(e,t){let{x:r,y:n}=e;var o;if(t.rect)o=t.rect;else if(t.current)o=t.current.getBoundingClientRect();else return!1;return r>=o.left&&r<=o.right&&n>=o.top&&n<=o.bottom}function eo(e,t){let{draggables:r,ref:n}=e,{dragging:o}=t;if(!o)return r;let i=r.filter(a=>a.handle!==o.handle);if(bd(t,n)){let a=i.filter(l=>bd(t,l))[0];if(a){let l=i.indexOf(a);i=[...i.slice(0,l),o,...i.slice(l)]}else i=[...i,o]}return i}function to(e,t){let r=eo(e,t);return t.dragging&&r.indexOf(t.dragging)===-1&&(t.y<e.ref.current.getBoundingClientRect().top?r=[t.dragging,...r]:r.push(t.dragging)),r}function Ni(e){let{attributeName:t,draggable:r}=e,{record:n}=r,{attachment:o,uploading:i}=n,a=Xr(r,e.startDrag),l=g=>{g.preventDefault(),mt(`[attachment:${o.id}]`),Fe.dispatch({type:"NOTICE",message:"Embed code copied to clipboard"})},s=g=>{g.preventDefault(),e.deleteRecord&&e.deleteRecord()},u=()=>o.description&&o.description[e.locale]?o.description[e.locale]:null,p=()=>o.name&&o.name[e.locale]?o.name[e.locale]:null,m=g=>{g.preventDefault(),Le.dispatch({type:"OPEN",payload:Ee.default.createElement(ki,{attachment:o,locale:e.locale,locales:e.locales,onUpdate:e.onUpdate})})},h=["attachment"];e.placeholder&&h.push("placeholder"),n.uploading&&h.push("uploading");let w=i?"cloud-upload":"paperclip";return Ee.default.createElement("div",F({className:h.join(" ")},a),Ee.default.createElement("input",{name:`${t}[id]`,type:"hidden",value:n.id||""}),Ee.default.createElement("input",{name:`${t}[attachment_id]`,type:"hidden",value:o&&o.id||""}),Ee.default.createElement("input",{name:`${t}[position]`,type:"hidden",value:e.position}),!i&&Ee.default.createElement("div",{className:"actions"},Ee.default.createElement("button",{onClick:m},"Edit"),e.showEmbed&&Ee.default.createElement("button",{onClick:l},"Embed"),e.deleteRecord&&Ee.default.createElement("button",{onClick:s},"Remove")),o&&Ee.default.createElement("div",{className:"attachment-info"},Ee.default.createElement("h3",null,Ee.default.createElement("i",{className:`fa fa-${w} icon`}),p()||Ee.default.createElement("em",null,"Untitled"),Ee.default.createElement("br",null)),!i&&Ee.default.createElement("a",{href:o.url,rel:"noreferrer",target:"_blank"},o.filename),!i&&u()&&Ee.default.createElement("p",null,u())))}Ni.propTypes={locale:et.default.string,locales:et.default.object,draggable:et.default.object,deleteRecord:et.default.func,startDrag:et.default.func,showEmbed:et.default.bool,onUpdate:et.default.func,attributeName:et.default.string,placeholder:et.default.bool,position:et.default.number,ref:et.default.object};var Ed=P(H());function Rl(){return Ed.default.createElement("div",{className:"attachment drop-placeholder",key:"file-placeholder"},"Upload files here")}var Rt=P(H()),ro=P(J());function ut(e){let t=(0,Rt.useRef)(),r=o=>{let i=o.target.files,a=[];for(var l=0;l<i.length;l++)a.push(i[l]);a.length>0&&e.callback(a)},n=o=>{o.preventDefault(),t.current.click()};return Rt.default.createElement("div",{className:"upload-button"},Rt.default.createElement("span",null,"Drag and drop ",e.type||"file",e.multiple&&"s"," here, or",e.multiline&&Rt.default.createElement("br",null),Rt.default.createElement("button",{onClick:n},"choose a file")),Rt.default.createElement("input",{type:"file",onChange:r,ref:t,style:{display:"none"},multiple:e.multiple||!1}))}ut.propTypes={callback:ro.default.func,type:ro.default.string,multiple:ro.default.bool,multiline:ro.default.bool};function my(e){return e.replace(/\.[\w\d]+$/,"").replace(/_/g," ")}function Gr(e){let t=mr(e.records),r=e.locales?Object.keys(e.locales):[e.locale],[n,o]=(0,Ve.useState)([]),i=c=>{let v={};r.forEach(O=>v[O]=c.name);let y=Kr({attachment:{filename:c.name,name:v},uploading:!0}),I=new FormData;return I.append("attachment[file]",c),r.forEach(O=>{I.append(`attachment[name][${O}]`,my(c.name))}),qr("/admin/attachments.json",I).then(O=>{t.dispatch({type:"update",payload:re(F({},y),{record:{attachment:O,uploading:!1}})})}),y},a=c=>{t.dispatch({type:"append",payload:c.map(v=>i(v))})},l=(c,v)=>{t.dispatch({type:"reorder",payload:to(t,c)}),t.dispatch({type:"insertFiles",payload:v.map(y=>i(y))})},[s,u,p]=Yr([t],l),m=c=>[...t.draggables.map(v=>v.record),...n].indexOf(c)+1,h=c=>`${e.attribute}[${m(c)}]`,w=c=>v=>{let{record:y}=c,I=re(F({},c),{record:re(F({},y),{attachment:F(F({},y.attachment),v)})});t.dispatch({type:"update",payload:I})},g=c=>()=>{t.dispatch({type:"remove",payload:c}),c.record.id&&o([...n,c.record])},x=c=>{let{dragging:v}=s;return c==="Files"?Ve.default.createElement(Rl,{key:"placeholder"}):Ve.default.createElement(Ni,{key:c.handle,draggable:c,locale:e.locale,locales:e.locales,showEmbed:e.showEmbed,startDrag:u,position:m(c.record),onUpdate:w(c),deleteRecord:g(c),attributeName:h(c.record),placeholder:v&&v==c})},d=to(t,s),f=["attachments"];return s.dragging&&f.push("dragover"),Ve.default.createElement("div",F({className:f.join(" "),ref:t.ref},p),Ve.default.createElement("div",{className:"files"},d.map(c=>x(c))),Ve.default.createElement("div",{className:"deleted"},n.map(c=>Ve.default.createElement("span",{className:"deleted-attachment",key:c.id},Ve.default.createElement("input",{name:`${h(c)}[id]`,type:"hidden",value:c.id}),Ve.default.createElement("input",{name:`${h(c)}[attachment_id]`,type:"hidden",value:c.attachment&&c.attachment.id||""}),Ve.default.createElement("input",{name:`${h(c)}[_destroy]`,type:"hidden",value:!0})))),Ve.default.createElement("div",{className:"drop-target"},Ve.default.createElement(ut,{multiple:!0,multiline:!0,callback:a})))}Gr.propTypes={attribute:Qr.default.string,locale:Qr.default.string,locales:Qr.default.object,records:Qr.default.array,showEmbed:Qr.default.bool};var Se=P(H()),Zr=P(J()),gr=class extends Se.default.Component{constructor(t){super(t);this.state={startsAt:this.parseDate(t.startsAt)||this.defaultDate(),endsAt:this.parseDate(t.endsAt)||this.defaultDate(60),startTime:"",endTime:""},this.state.startTime=this.timeToString(this.state.startsAt),this.state.endTime=this.timeToString(this.state.endsAt),this.changeStartsAt=this.changeStartsAt.bind(this),this.changeEndsAt=this.changeEndsAt.bind(this)}changeStartsAt(t={}){let r=this.modifyDate(this.state.startsAt,t);this.setDates(r,new Date(this.state.endsAt.getTime()+(r-this.state.startsAt)))}changeEndsAt(t={}){let r=this.modifyDate(this.state.endsAt,t);this.setDates(this.state.startsAt,r)}defaultDate(t=0){let r=1e3*60*60;return new Date(Math.round(new Date().getTime()/r)*r+r+1e3*60*t)}modifyDate(t,r={}){var n=new Date(t);return Object.prototype.hasOwnProperty.call(r,"year")&&n.setFullYear(r.year),Object.prototype.hasOwnProperty.call(r,"month")&&n.setMonth(r.month),Object.prototype.hasOwnProperty.call(r,"date")&&n.setDate(r.date),Object.prototype.hasOwnProperty.call(r,"time")&&r.time.match(/^[\d]{1,2}(:[\d]{1,2})?$/)&&(n.setHours(r.time.split(":")[0]),n.setMinutes(r.time.split(":")[1]||0)),n}parseDate(t){if(!!t)return new Date(t)}setDates(t,r){r<t&&(r=t),this.setState({startsAt:t,endsAt:r,startTime:this.timeToString(t),endTime:this.timeToString(r)})}startsAtToString(){return this.props.disabled?"":this.state.startsAt.toJSON()}endsAtToString(){return this.props.disabled?"":this.state.endsAt.toJSON()}renderDateSelect(t,r,n){return Se.default.createElement("div",{className:"date-select"},Se.default.createElement("select",{value:r.getMonth(),onChange:o=>n({month:o.target.value}),disabled:this.props.disabled},this.monthOptions().map((o,i)=>Se.default.createElement("option",{key:t+"-month-"+i,value:i},o))),Se.default.createElement("select",{value:r.getDate(),onChange:o=>n({date:o.target.value}),disabled:this.props.disabled},this.dayOptions().map(o=>Se.default.createElement("option",{key:t+"-date-"+o,value:o},o))),Se.default.createElement("select",{value:r.getFullYear(),onChange:o=>n({year:o.target.value}),disabled:this.props.disabled},this.yearOptions().map(o=>Se.default.createElement("option",{key:t+"-year-"+o,value:o},o))))}render(){return Se.default.createElement("div",{className:"date-range-select"},Se.default.createElement("input",{type:"hidden",name:this.props.objectName+"[starts_at]",value:this.startsAtToString()}),Se.default.createElement("input",{type:"hidden",name:this.props.objectName+"[ends_at]",value:this.endsAtToString()}),Se.default.createElement("div",{className:"date"},this.renderDateSelect("starts-at",this.state.startsAt,this.changeStartsAt),!this.props.disableTime&&Se.default.createElement("input",{type:"text",size:"5",value:this.state.startTime,disabled:this.props.disabled,onChange:t=>this.setState({startTime:t.target.value}),onBlur:t=>this.changeStartsAt({time:t.target.value})})),Se.default.createElement("span",{className:"to"},"to"),Se.default.createElement("div",{className:"date"},this.renderDateSelect("ends-at",this.state.endsAt,this.changeEndsAt),!this.props.disableTime&&Se.default.createElement("input",{type:"text",size:"5",value:this.state.endTime,disabled:this.props.disabled,onChange:t=>this.setState({endTime:t.target.value}),onBlur:t=>this.changeEndsAt({time:t.target.value})})))}timeToString(t){return t.toTimeString().slice(0,5)}yearOptions(){let t=2e3;return Array.apply(null,Array(new Date().getFullYear()-t+11)).map((r,n)=>n+t)}monthOptions(){return["January","February","March","April","May","June","July","August","September","October","November","December"]}dayOptions(){return Array.apply(null,Array(31)).map((t,r)=>r+1)}};gr.propTypes={startsAt:Zr.default.string,endsAt:Zr.default.string,disabled:Zr.default.bool,disableTime:Zr.default.bool,objectName:Zr.default.string};var Ot=P(H()),Ut=P(J());var yr=P(H()),an=P(J());var Ye=P(H()),Ii=P(J());var rn=P(H()),vr=P(J()),_d=P(kd());var Jr=P(H());function gy(e,t){let r=Di(e),n=e.image,o=n.real_width/n.real_height;return t?(r.aspect=t,r.width=100,r.height=100/t*o,r.height>100&&(r.height=100,r.width=100*t/o),r.x=(100-r.width)/2,r.y=(100-r.height)/2):delete r.aspect,Td(e,r)}function Td(e,t){let{image:r}=e;return(t.width<5||t.height<5)&&(t={x:0,y:0,width:100,height:100}),t.aspect===null&&delete t.aspect,{aspect:t.aspect,crop_start_x:r.real_width*(t.x/100),crop_start_y:r.real_height*(t.y/100),crop_width:r.real_width*(t.width/100),crop_height:r.real_height*(t.height/100)}}function Od(e,t){let{crop_start_x:r,crop_start_y:n,crop_width:o,crop_height:i,crop_gravity_x:a,crop_gravity_y:l}=e;switch(t.type){case"completeCrop":return a<r||a>r+o||l<n||l>n+i?re(F({},e),{cropping:!1,crop_gravity_x:null,crop_gravity_y:null}):re(F({},e),{cropping:!1});case"setCrop":return F(F({},e),Td(e,t.payload));case"setAspect":return F(F({},e),gy(e,t.payload));case"setFocal":return re(F({},e),{crop_gravity_x:o*(t.payload.x/100)+r,crop_gravity_y:i*(t.payload.y/100)+n});case"startCrop":return re(F({},e),{cropping:!0});case"toggleFocal":return a===null?Od(e,{type:"setFocal",payload:{x:50,y:50}}):re(F({},e),{crop_gravity_x:null,crop_gravity_y:null});default:return e}}function vy(e,t){let r=document.createElement("canvas");r.width=e.naturalWidth*(t.width/100),r.height=e.naturalHeight*(t.height/100);let n=r.getContext("2d");return n.drawImage(e,e.naturalWidth*(t.x/100),e.naturalHeight*(t.y/100),e.naturalWidth*(t.width/100),e.naturalHeight*(t.height/100),0,0,e.naturalWidth*(t.width/100),e.naturalHeight*(t.height/100)),[r,n]}function yy(e,t){let r=t.getImageData(0,0,e.width,e.height).data;for(var n=0;n<r.length/4;n++)if(r[n*4+3]!==255)return e.toDataURL("image/png");return e.toDataURL("image/jpeg")}function Pi(e){let t=i=>a=>a===null?a:i(a),r=t(Math.round),n=t(Math.ceil),o={crop_start_x:r(e.crop_start_x),crop_start_y:r(e.crop_start_y),crop_width:n(e.crop_width),crop_height:n(e.crop_height),crop_gravity_x:r(e.crop_gravity_x),crop_gravity_y:r(e.crop_gravity_y)};return o.crop_start_x+o.crop_width>e.image.real_width&&(o.crop_width=e.image.real_width-o.crop_start_x),o.crop_start_y+o.crop_height>e.image.real_height&&(o.crop_height=e.image.real_height-o.crop_start_y),o}function Di(e){let{image:t,aspect:r,crop_start_x:n,crop_start_y:o,crop_width:i,crop_height:a}=e,l=t.real_width/t.real_height,s=n/t.real_width*100,u=o/t.real_height*100;var p=i/t.real_width*100,m=a/t.real_height*100;return r&&p?m=p/r*l:r&&m&&(p=m*r/l),r===null?{x:s,y:u,width:p,height:m}:{x:s,y:u,width:p,height:m,aspect:r}}function oo(e){let[t,r]=(0,Jr.useReducer)(Od,{aspect:null,cropping:!1,crop_start_x:e.crop_start_x||0,crop_start_y:e.crop_start_y||0,crop_width:e.crop_width||e.real_width,crop_height:e.crop_height||e.real_height,crop_gravity_x:e.crop_gravity_x,crop_gravity_y:e.crop_gravity_y,image:e}),[n,o]=(0,Jr.useState)(null);async function i(){let a=new Image;a.src=t.image.uncropped_url,await a.decode();let[l,s]=vy(a,Di(t));o(yy(l,s))}return(0,Jr.useEffect)(()=>{t.cropping||i()},[t.cropping]),[t,r,n]}var en=P(H()),tn=P(J()),io=class extends en.default.Component{constructor(t){super(t);this.state={dragging:!1,x:t.x,y:t.y},this.dragStart=this.dragStart.bind(this),this.dragEnd=this.dragEnd.bind(this),this.drag=this.drag.bind(this),this.container=en.default.createRef(),this.point=en.default.createRef()}clamp(t,r,n){return t<r?r:t>n?n:t}dragStart(t){t.preventDefault(),t.stopPropagation(),t.target==this.point.current&&this.setState({dragging:!0})}dragEnd(){this.state.dragging&&(this.setState({dragging:!1}),this.props.onChange({x:this.state.x,y:this.state.y}))}drag(t){if(this.state.dragging){let o=this.container.current.getBoundingClientRect();var r,n;t.preventDefault(),t.type=="touchmove"?(r=t.touches[0].clientX-(o.x||o.left),n=t.touches[0].clientY-(o.y||o.top)):(r=t.clientX-(o.x||o.left),n=t.clientY-(o.y||o.top)),r=this.clamp(r,0,this.props.width),n=this.clamp(n,0,this.props.height),this.setState({x:r/this.props.width*100,y:n/this.props.height*100})}}render(){let t=this.props.width*(this.state.x/100),r=this.props.height*(this.state.y/100),n={transform:`translate3d(${t}px, ${r}px, 0)`};return en.default.createElement("div",{className:"focal-editor",ref:this.container,onTouchStart:this.dragStart,onTouchEnd:this.dragEnd,onTouchMove:this.drag,onMouseDown:this.dragStart,onMouseUp:this.dragEnd,onMouseMove:this.drag},en.default.createElement("div",{className:"focal-point",style:n,ref:this.point}))}};io.propTypes={x:tn.default.number,y:tn.default.number,onChange:tn.default.func,width:tn.default.number,height:tn.default.number};function Ai(e){let t=()=>{let{image:s,cropping:u,crop_width:p,crop_height:m}=e.cropState;return u?{width:s.real_width,height:s.real_height}:{width:p,height:m}},r=e.containerSize.width,n=e.containerSize.height,o=t().width/t().height;var i=r,a=r/o;a>n&&(a=n,i=n*o);let l={width:`${i}px`,height:`${a}px`};return e.cropState.cropping?rn.default.createElement("div",{className:"image-wrapper",style:l},rn.default.createElement(_d.default,{src:e.cropState.image.uncropped_url,crop:Di(e.cropState),minWidth:10,minHeight:10,onChange:e.setCrop})):rn.default.createElement("div",{className:"image-wrapper",style:l},e.focalPoint&&rn.default.createElement(io,{width:i,height:a,x:e.focalPoint.x,y:e.focalPoint.y,onChange:e.setFocal}),rn.default.createElement("img",{src:e.croppedImage}))}Ai.propTypes={containerSize:vr.default.object,croppedImage:vr.default.string,cropState:vr.default.object,focalPoint:vr.default.object,setCrop:vr.default.func,setFocal:vr.default.func};var We=P(H()),nn=P(J());function ji(e){let{cropping:t}=e.cropState,r=[["Free",null],["1:1",1],["3:2",3/2],["2:3",2/3],["4:3",4/3],["3:4",3/4],["5:4",5/4],["4:5",4/5],["16:9",16/9]],n=l=>s=>{s.preventDefault(),e.setAspect(l)},o=Math.ceil(e.cropState.crop_width),i=Math.ceil(e.cropState.crop_height),a=e.image.content_type.split("/")[1].toUpperCase();return We.default.createElement("div",{className:"toolbars"},We.default.createElement("div",{className:"toolbar"},We.default.createElement("div",{className:"info"},We.default.createElement("span",{className:"format"},o,"x",i," ",a)),We.default.createElement("button",{title:"Crop image",onClick:e.toggleCrop,className:t?"active":""},We.default.createElement("i",{className:"fa fa-crop"})),We.default.createElement("button",{disabled:t,title:"Toggle focal point",onClick:e.toggleFocal},We.default.createElement("i",{className:"fa fa-bullseye"})),We.default.createElement("a",{href:e.image.original_url,className:"button",title:"Download original image",disabled:t,download:e.image.filename,onClick:l=>t&&l.preventDefault()},We.default.createElement("i",{className:"fa fa-download"}))),t&&We.default.createElement("div",{className:"aspect-ratios toolbar"},We.default.createElement("div",{className:"label"},"Lock aspect ratio:"),r.map(l=>We.default.createElement("button",{key:"ratio-"+l[1],className:l[1]==e.cropState.aspect?"active":"",onClick:n(l[1])},l[0]))))}ji.propTypes={cropState:nn.default.object,image:nn.default.object,setAspect:nn.default.func,toggleCrop:nn.default.func,toggleFocal:nn.default.func};function wy(e){return e.crop_gravity_x===null||e.crop_gravity_y===null?null:{x:(e.crop_gravity_x-e.crop_start_x)/e.crop_width*100,y:(e.crop_gravity_y-e.crop_start_y)/e.crop_height*100}}function on(e){let t=(0,Ye.useRef)(),[r,n]=(0,Ye.useState)(null),o=()=>{let u=t.current;u&&n({width:u.offsetWidth-2,height:u.offsetHeight-2})};(0,Ye.useEffect)(()=>(window.addEventListener("resize",o),function(){window.removeEventListener("resize",o)})),(0,Ye.useEffect)(o,[]);let i=u=>{e.dispatch({type:"setAspect",payload:u})},a=u=>{e.dispatch({type:"setCrop",payload:u})},l=u=>{e.dispatch({type:"setFocal",payload:u})},s=()=>{e.cropState.cropping?e.dispatch({type:"completeCrop"}):e.dispatch({type:"startCrop"})};return Ye.default.createElement("div",{className:"visual"},Ye.default.createElement(ji,{cropState:e.cropState,image:e.cropState.image,setAspect:i,toggleCrop:s,toggleFocal:()=>e.dispatch({type:"toggleFocal"})}),Ye.default.createElement("div",{className:"image-container",ref:t},!e.croppedImage&&Ye.default.createElement("div",{className:"loading"},"Loading image\u2026"),e.croppedImage&&r&&Ye.default.createElement(Ai,{cropState:e.cropState,containerSize:r,croppedImage:e.croppedImage,focalPoint:wy(e.cropState),setCrop:a,setFocal:l})))}on.propTypes={croppedImage:Ii.default.string,cropState:Ii.default.object,dispatch:Ii.default.func};var ye=P(H()),gt=P(J());function Mi(e){let{alternative:t,caption:r,image:n,locale:o,locales:i}=e,a=s=>{s.preventDefault(),mt(`[image:${n.id}]`),Fe.dispatch({type:"NOTICE",message:"Embed code copied to clipboard"})},l=s=>{e.setLocale(s.target.value)};return ye.default.createElement("form",null,ye.default.createElement("div",{className:"field embed-code"},ye.default.createElement("label",null,"Embed code"),ye.default.createElement("input",{type:"text",value:`[image:${n.id}]`,disabled:!0}),Qn()&&ye.default.createElement("button",{onClick:a},"Copy")),i&&Object.keys(i).length>1&&ye.default.createElement("div",{className:"field"},ye.default.createElement("label",null,"Locale"),ye.default.createElement("select",{name:"locale",value:o,onChange:l},Object.keys(i).map(s=>ye.default.createElement("option",{key:`locale-${s}`,value:s},i[s])))),ye.default.createElement("div",{className:"field "+(t[o]?"":"field-with-warning")},ye.default.createElement("label",null,"Alternative text"),ye.default.createElement("span",{className:"description"},"For visually impaired users and search engines."),ye.default.createElement("textarea",{className:"alternative",value:t[o]||"",onChange:s=>e.updateLocalization("alternative",s.target.value)})),e.showCaption&&ye.default.createElement("div",{className:"field"},ye.default.createElement("label",null,"Caption"),ye.default.createElement("textarea",{onChange:s=>e.updateLocalization("caption",s.target.value),value:r[o]||"",className:"caption"})),ye.default.createElement("div",{className:"buttons"},ye.default.createElement("button",{onClick:e.save},"Save"),ye.default.createElement("button",{onClick:()=>Le.dispatch({type:"CLOSE"})},"Cancel")))}Mi.propTypes={alternative:gt.default.object,caption:gt.default.object,image:gt.default.object,locale:gt.default.string,locales:gt.default.array,setLocale:gt.default.func,save:gt.default.func,showCaption:gt.default.bool,updateLocalization:gt.default.func};function Li(e){let[t,r,n]=oo(e.image),[o,i]=(0,yr.useState)(e.locale),[a,l]=(0,yr.useState)({caption:e.image.caption||{},alternative:e.image.alternative||{}}),s=(p,m)=>{l(re(F({},a),{[p]:re(F({},a[p]),{[o]:m})}))},u=p=>{p.preventDefault(),p.stopPropagation();let m=F(F({},a),Pi(t));Hr(`/admin/images/${e.image.id}`,{image:m}),e.onUpdate&&e.onUpdate(m,n),Le.dispatch({type:"CLOSE"})};return yr.default.createElement("div",{className:"image-editor"},yr.default.createElement(on,{croppedImage:n,cropState:t,dispatch:r}),!t.cropping&&yr.default.createElement(Mi,{alternative:a.alternative,caption:a.caption,image:e.image,locale:o,locales:e.locales,setLocale:i,save:u,showCaption:e.caption,updateLocalization:s}))}Li.propTypes={image:an.default.object,locale:an.default.string,locales:an.default.object,caption:an.default.bool,onUpdate:an.default.func};function zt(e){let[t,r]=(0,Ot.useState)(e.image),[n,o]=(0,Ot.useState)(e.src),i=()=>{let u=t.crop_width||t.real_width,p=t.crop_height||t.real_height;return Math.round(p/u*e.width)},a=(u,p)=>{let m=F(F({},t),u);o(p),r(m),e.onUpdate&&e.onUpdate(m,p)},l=u=>{u.preventDefault(),Le.dispatch({type:"OPEN",payload:Ot.default.createElement(Li,{image:t,caption:e.caption,locale:e.locale,locales:e.locales,onUpdate:a})})},s=!t.alternative[e.locale];return Ot.default.createElement("div",{className:"editable-image"},s&&Ot.default.createElement("span",{className:"alt-warning",title:"Alternative text is missing"},Ot.default.createElement("i",{className:"fa fa-exclamation-triangle icon"})),Ot.default.createElement("img",{src:n,width:e.width,height:i(),onClick:l}))}zt.propTypes={image:Ut.default.object,src:Ut.default.string,caption:Ut.default.bool,locale:Ut.default.string,locales:Ut.default.object,width:Ut.default.number,onUpdate:Ut.default.func};var ie=P(H()),Bt=P(J());var zl=P(H()),ln=P(J());function Fi(e){let{draggable:t,dragState:r,container:n}=e;if(t==="Files")return"";{let o=n.current.getBoundingClientRect(),i=r.x-(o.x||o.left),a=r.y-(o.y||o.top),l={transform:`translate3d(${i}px, ${a}px, 0)`};return zl.default.createElement("div",{className:"drag-image",style:l},t.record.image&&zl.default.createElement("img",{src:t.record.src||t.record.image.thumbnail_url}))}}Fi.propTypes={draggable:ln.default.oneOfType([ln.default.object,ln.default.string]),dragState:ln.default.object,container:ln.default.object};var Bl=P(H());function Vl(){return Bl.default.createElement("div",{className:"grid-image",key:"file-placeholder"},Bl.default.createElement("div",{className:"file-placeholder"}))}var Ce=P(H()),Xe=P(J());var sn=P(H()),Nd=P(J());function Ri(e){return e.src?sn.default.createElement("div",{className:"temp-image"},sn.default.createElement("img",{src:e.src}),sn.default.createElement("span",null,"Uploading...")):sn.default.createElement("div",{className:"file-placeholder"},sn.default.createElement("span",null,"Uploading..."))}Ri.propTypes={src:Nd.default.string};function Ui(e){let{attributeName:t,draggable:r}=e,n=r.record,o=n.image,[i,a]=(0,Ce.useState)(n.src||null),l=Xr(r,e.startDrag);(0,Ce.useEffect)(()=>{if(n.file){let m=new FileReader;m.onload=()=>a(m.result),m.readAsDataURL(n.file)}},[]);let s=m=>{m.preventDefault(),mt(`[image:${o.id}]`),Fe.dispatch({type:"NOTICE",message:"Embed code copied to clipboard"})},u=m=>{m.preventDefault(),e.deleteImage&&e.deleteImage()},p=["grid-image"];return e.placeholder&&p.push("placeholder"),n.file&&p.push("uploading"),Ce.default.createElement("div",F({className:p.join(" ")},l),Ce.default.createElement("input",{name:`${t}[id]`,type:"hidden",value:n.id||""}),Ce.default.createElement("input",{name:`${t}[image_id]`,type:"hidden",value:o&&o.id||""}),Ce.default.createElement("input",{name:`${t}[position]`,type:"hidden",value:e.position}),e.enablePrimary&&Ce.default.createElement("input",{name:`${t}[primary]`,type:"hidden",value:e.primary}),!o&&Ce.default.createElement(Ri,{src:i}),o&&Ce.default.createElement(Ce.default.Fragment,null,Ce.default.createElement(zt,{image:o,src:i||o.thumbnail_url,width:250,caption:!0,locale:e.locale,locales:e.locales,onUpdate:e.onUpdate}),Ce.default.createElement("div",{className:"actions"},e.showEmbed&&Ce.default.createElement("button",{onClick:s},"Embed"),e.deleteImage&&Ce.default.createElement("button",{onClick:u},"Remove"))))}Ui.propTypes={draggable:Xe.default.object,deleteImage:Xe.default.func,startDrag:Xe.default.func,locale:Xe.default.string,locales:Xe.default.object,onUpdate:Xe.default.func,attributeName:Xe.default.string,placeholder:Xe.default.bool,enablePrimary:Xe.default.bool,showEmbed:Xe.default.bool,primary:Xe.default.bool,position:Xe.default.number};function Wl(e){let t=["image/gif","image/jpeg","image/pjpeg","image/png","image/tiff"];return e.filter(r=>t.indexOf(r.type)!==-1)}function Pd(e,t,r){let[n,...o]=eo(e,r),i=[...o,...eo(t,r)];return r.dragging&&[n,...i].indexOf(r.dragging)===-1&&(r.y<t.ref.current.getBoundingClientRect().top?i=[r.dragging,...i]:i.push(r.dragging)),[n,i]}function xy(e){let t=e.enablePrimary?e.records.filter(r=>r.primary).slice(0,1):[];return[t,e.records.filter(r=>t.indexOf(r)===-1)]}function un(e){let[t,r]=xy(e),n=mr(t),o=mr(r),[i,a]=(0,ie.useState)([]),l=(0,ie.useRef)(),s=T=>{n.dispatch(T),o.dispatch(T)},u=(T,D)=>{let[Q,k]=Pd(n,o,T);if(n.dispatch({type:"reorder",payload:Q?[Q]:[]}),o.dispatch({type:"reorder",payload:k}),D){let C=Wl(D).map(M=>x(M));s({type:"insertFiles",payload:C})}},[p,m,h]=Yr([n,o],u),w=T=>[...n.draggables.map(D=>D.record),...o.draggables.map(D=>D.record),...i].indexOf(T)+1,g=T=>`${e.attribute}[${w(T)}]`,x=T=>{let D=Kr({image:null,file:T}),Q=new FormData;return Q.append("image[file]",T),qr("/admin/images.json",Q).then(k=>{k.status==="error"?(Fe.dispatch({type:"ERROR",message:"Error uploading image: "+k.error}),s({type:"remove",payload:D})):s({type:"update",payload:re(F({},D),{record:{image:k}})})}),D},d=T=>D=>{let{record:Q}=T,k=re(F({},T),{record:re(F({},Q),{image:F(F({},Q.image),D)})});s({type:"update",payload:k})},f=T=>()=>{s({type:"remove",payload:T}),T.record.id&&a([...i,T.record])},c=(T,D)=>{let{dragging:Q}=p;return T==="Files"?ie.default.createElement(Vl,{key:"placeholder"}):ie.default.createElement(Ui,{key:T.handle,draggable:T,locale:e.locale,locales:e.locales,showEmbed:e.showEmbed,startDrag:m,position:w(T.record),primary:D,onUpdate:d(T),enablePrimary:e.enablePrimary,deleteImage:f(T),attributeName:g(T.record),placeholder:Q&&Q==T})},v=T=>{let[D,...Q]=Wl(T).map(k=>x(k));D&&(o.dispatch({type:"prepend",payload:[...n.draggables,...Q]}),n.dispatch({type:"replace",payload:[D]}))},y=T=>{o.dispatch({type:"append",payload:Wl(T).map(D=>x(D))})},I=["image-grid"];e.enablePrimary&&I.push("with-primary-image");let[O,R]=Pd(n,o,p);return ie.default.createElement("div",F({className:I.join(" "),ref:l},h),p.dragging&&ie.default.createElement(Fi,{draggable:p.dragging,dragState:p,container:l}),e.enablePrimary&&ie.default.createElement("div",{className:"primary-image",ref:n.ref},ie.default.createElement("h3",null,"Main image"),O&&ie.default.createElement(ie.default.Fragment,null,c(O,!0),e.primaryAttribute&&ie.default.createElement("input",{type:"hidden",name:e.primaryAttribute,value:O.record&&O.record.image&&O.record.image.id||""})),!O&&ie.default.createElement("div",{className:"drop-target"},ie.default.createElement(ut,{multiple:!0,type:"image",multiline:!0,callback:v}))),ie.default.createElement("div",{className:"grid",ref:o.ref},ie.default.createElement("h3",null,e.enablePrimary?"More images":"Images"),ie.default.createElement("div",{className:"drop-target"},ie.default.createElement(ut,{multiple:!0,type:"image",callback:y})),ie.default.createElement("div",{className:"images"},R.map(T=>c(T,!1)))),ie.default.createElement("div",{className:"deleted"},i.map(T=>ie.default.createElement("span",{className:"deleted-image",key:T.id},ie.default.createElement("input",{name:`${g(T)}[id]`,type:"hidden",value:T.id}),ie.default.createElement("input",{name:`${g(T)}[attachment_id]`,type:"hidden",value:T.image&&T.image.id||""}),ie.default.createElement("input",{name:`${g(T)}[_destroy]`,type:"hidden",value:!0})))))}un.propTypes={attribute:Bt.default.string,locale:Bt.default.string,locales:Bt.default.array,records:Bt.default.array,enablePrimary:Bt.default.bool,primaryAttribute:Bt.default.string,showEmbed:Bt.default.bool};var Re=P(H()),_t=P(J());function by(e){var t=[];if(e.items)for(let r=0;r<e.items.length;r++)e.items[r].kind=="file"&&t.push(e.items[r].getAsFile());else for(let r=0;r<e.files.length;r++)t.push(e.files[r]);return t}function zi(e){let[t,r]=(0,Re.useState)(!1),[n,o]=(0,Re.useState)(!1),[i,a]=(0,Re.useState)(e.image),[l,s]=(0,Re.useState)(e.src),u=f=>{f.preventDefault(),o(!0)},p=()=>{o(!1)},m=f=>{if(f.dataTransfer.items)for(var c=0;c<f.dataTransfer.items.length;c++)f.dataTransfer.items.remove(c);else f.dataTransfer.clearData();o(!1)},h=f=>{let c=by(f.dataTransfer);f.preventDefault(),c.length>0&&x(c[0])},w=f=>{f.preventDefault(),a(null),s(null)},g=f=>{f.length>0&&x(f[0])},x=f=>{if(["image/gif","image/jpeg","image/pjpeg","image/png","image/tiff"].indexOf(f.type)==-1){alert("Invalid file type, only images in JPEG, PNG or GIF formats are supported");return}let v=e.locale,y=e.locales?Object.keys(e.locales):[v],I=new FormData;a(null),s(null),o(!1),r(!0),I.append("image[file]",f),y.forEach(O=>{I.append(`image[alternative][${O}]`,e.alternative||"")}),qr("/admin/images.json",I).then(O=>{r(!1),O.status==="error"?Fe.dispatch({type:"ERROR",message:"Error uploading image: "+O.error}):(s(O.thumbnail_url),a(O))})},d=["image-uploader"];return t?d.push("uploading"):n&&d.push("dragover"),Re.default.createElement("div",{className:d.join(" "),onDragOver:u,onDragLeave:p,onDragEnd:m,onDrop:h},Re.default.createElement("input",{type:"hidden",name:e.attr,value:i?i.id:""}),i&&Re.default.createElement("div",{className:"image"},Re.default.createElement(zt,{image:i,src:l,width:e.width,caption:e.caption,locale:e.locale,locales:e.locales})),Re.default.createElement("div",{className:"ui-wrapper"},t&&Re.default.createElement("div",{className:"ui"},"Uploading image..."),!t&&Re.default.createElement("div",{className:"ui"},Re.default.createElement(ut,{type:"image",multiline:!0,callback:g}),i&&Re.default.createElement("a",{className:"delete remove-image",href:"#",onClick:w},"Remove image"))))}zi.propTypes={locale:_t.default.string,locales:_t.default.object,image:_t.default.object,src:_t.default.string,width:_t.default.number,caption:_t.default.bool,attr:_t.default.string,alternative:_t.default.string};var cn=P(H());var Bi=class extends cn.default.Component{constructor(t){super(t);this.state={component:null},this.store=Le,this.closeModal=this.closeModal.bind(this),this.handleChange=this.handleChange.bind(this),this.handleKeypress=this.handleKeypress.bind(this)}componentDidMount(){this.unsubscribe=this.store.subscribe(this.handleChange),window.addEventListener("keypress",this.handleKeypress)}componentWillUnmount(){this.unsubscribe(),window.removeEventListener("keypress",this.handleKeypress)}closeModal(t){t.stopPropagation(),t.preventDefault(),Le.dispatch({type:"CLOSE"})}handleChange(){this.setState(F({},this.store.getState()))}handleKeypress(t){this.state.component&&(t.key=="Escape"||t.keyCode===27)&&this.closeModal(t)}render(){let t=this.state.component;if(t)document.body.classList.add("modal");else return document.body.classList.remove("modal"),cn.default.createElement("div",{className:"modal-wrapper"});return cn.default.createElement("div",{className:"modal-wrapper open"},cn.default.createElement("div",{className:"background",onClick:this.closeModal}),cn.default.createElement("div",{className:"modal"},t))}};var ct=P(H()),Vi=P(J());var ao=class extends ct.default.Component{constructor(t){super(t);this.state={has_dates:!!t.starts_at,all_day:!!t.all_day},this.toggleAllDay=this.toggleAllDay.bind(this),this.toggleHasDates=this.toggleHasDates.bind(this)}toggleHasDates(){this.setState({has_dates:!this.state.has_dates})}toggleAllDay(){this.setState({all_day:!this.state.all_day})}timeToString(t){return t.toTimeString().slice(0,5)}render(){return ct.default.createElement("div",{className:"page-dates field"},ct.default.createElement("input",{type:"hidden",name:"page[all_day]",value:this.state.has_dates&&this.state.all_day?"1":"0"}),ct.default.createElement("label",null,"Dates"),ct.default.createElement("div",{className:"toggles"},ct.default.createElement("label",{className:"has-dates-toggle"},ct.default.createElement("input",{type:"checkbox",checked:this.state.has_dates,onChange:this.toggleHasDates}),"Enabled"),ct.default.createElement("label",{className:!this.state.has_dates&&"disabled"},ct.default.createElement("input",{type:"checkbox",disabled:!this.state.has_dates,checked:this.state.all_day,onChange:this.toggleAllDay}),"All day event")),ct.default.createElement(gr,{objectName:"page",startsAt:this.props.starts_at,endsAt:this.props.ends_at,disabled:!this.state.has_dates,disableTime:this.state.all_day}))}};ao.propTypes={starts_at:Vi.default.string,ends_at:Vi.default.string,all_day:Vi.default.bool};var Wi=P(H()),$i=P(J());var lo=class extends Wi.default.Component{render(){return Wi.default.createElement("div",{className:"page-files"},Wi.default.createElement(Gr,{attribute:"page[page_files_attributes]",showEmbed:!0,locale:this.props.locale,locales:this.props.locales,records:this.props.records}))}};lo.propTypes={locale:$i.default.string,locales:$i.default.object,records:$i.default.array};var Hi=P(H()),qi=P(J());var so=class extends Hi.default.Component{render(){return Hi.default.createElement("div",{className:"page-images"},Hi.default.createElement(un,{attribute:"page[page_images_attributes]",primaryAttribute:"page[image_id]",enablePrimary:!0,showEmbed:!0,locale:this.props.locale,locales:this.props.locales,records:this.props.records}))}};so.propTypes={locale:qi.default.string,locales:qi.default.object,records:qi.default.array};var $l=P(H()),Yi=P(J());var wr=P(H()),Wt=P(J());var ne=P(H()),Nt=P(J()),Vt=class extends ne.default.Component{constructor(t){super(t);this.state={newName:t.index.node.name},this.innerRef=ne.default.createRef()}permitted(t){return this.node().permissions&&this.node().permissions.indexOf(t)!=-1}actions(){let t=this.node().status!=2?"Publish":"Hide",r=this.node().status!=2?"check":"ban";return this.node().editing?null:this.props.index.id===1?ne.default.createElement("span",{className:"actions"},ne.default.createElement("button",{type:"button",className:"add",onClick:()=>this.props.addChild(this.props.index)},ne.default.createElement("i",{className:"fa fa-plus icon"}),"Add child")):ne.default.createElement("span",{className:"actions"},this.permitted("edit")&&this.button(t,{className:"toggle-status",icon:r,onClick:()=>this.toggleStatus()}),this.permitted("edit")&&this.button("Rename",{className:"edit",icon:"pencil",onClick:()=>this.edit()}),this.permitted("edit")&&this.button("Delete",{className:"delete",icon:"trash",onClick:()=>this.deletePage()}),this.permitted("create")&&this.button("Add child",{className:"add",icon:"plus",onClick:()=>this.props.addChild(this.props.index)}))}addButton(){let t=this,r=this.node(),n=function(){t.props.addChild&&t.props.addChild(t.props.index)};if(!r.collapsed&&this.permitted("create")&&(r.root||this.visibleChildren().length>0))return this.button("Add page here",{className:"add add-inline",icon:"plus",onClick:n})}button(t,r){let n="fa fa-"+r.icon+" icon";return ne.default.createElement("button",{type:"button",className:r.className,onClick:r.onClick},ne.default.createElement("i",{className:n}),t)}childNodes(){let t=this.props.index,r=this.props.tree,n=this.props.dragging;if(t.children&&t.children.length&&!t.node.collapsed){var o={};return t.node.collapsed&&(o.display="none"),o.paddingLeft=this.props.paddingLeft+"px",ne.default.createElement("div",{className:"children",style:o},t.children.map(i=>{var a=r.getIndex(i);return ne.default.createElement(Vt,{tree:r,index:a,key:a.id,dragging:n,paddingLeft:this.props.paddingLeft,addChild:this.props.addChild,onCollapse:this.props.onCollapse,onDragStart:this.props.onDragStart,updatePage:this.props.updatePage})}))}return null}collapseArrow(){let t=this.props.index,r=this;if(!t.parent)return null;let n=function(i){i.stopPropagation();let a=r.props.index.id;r.props.onCollapse&&r.props.onCollapse(a)};if(this.visibleChildren().length>0){let i=t.node.collapsed;var o=null;return i?o="collapse fa fa-caret-right":o="collapse fa fa-caret-down",ne.default.createElement("i",{className:o,onMouseDown:function(a){a.stopPropagation()},onClick:n})}return null}collapsedLabel(){if(this.node().collapsed&&this.node().children&&this.node().children.length>0){let t=this.node().children.length==1?"item":"items";return ne.default.createElement("span",{className:"collapsed-label"},"(",this.node().children.length," ",t,")")}else return null}deletePage(){confirm("Are you sure you want to delete this page?")&&this.updatePage({status:4})}edit(){this.updatePage({editing:!0})}editUrl(t){return`/admin/${t.locale}/pages/${t.param}/edit`}node(){return this.props.index.node}pageName(){return this.node().name?this.node().name:ne.default.createElement("i",{className:"untitled"},"Untitled")}render(){let t=this,r=this.props,n=r.index,o=r.dragging,i=this.node().editing;var a="node",l=i?this.renderEditNode():this.renderNode();n.id===o&&(a="node placeholder");let s=function(u){t.permitted("edit")&&!i&&r.onDragStart&&r.onDragStart(r.index.id,t.innerRef.current,u)};return this.node().status!=4?ne.default.createElement("div",{className:a},ne.default.createElement("div",{className:"inner",ref:this.innerRef,onMouseDown:s},this.collapseArrow(),l),this.childNodes(),this.addButton()):null}renderEditNode(){let t=this,r=function(i){t.setState({newName:i.target.value})},n=function(i){i.preventDefault(),t.updatePage({name:t.state.newName,editing:!1})},o=function(){t.setState({newName:t.node().name}),t.updatePage({editing:!1})};return ne.default.createElement("div",{className:"page edit"},ne.default.createElement("i",{className:"fa fa-file-o icon"}),ne.default.createElement("form",{onSubmit:n},ne.default.createElement("input",{type:"text",value:this.state.newName,autoFocus:!0,onChange:r}),ne.default.createElement("button",{className:"save",type:"submit"},ne.default.createElement("i",{className:"fa fa-cloud icon"}),"Save"),this.button("Cancel",{className:"cancel",icon:"ban",onClick:o})))}renderNode(){let r=this.props.index.node;var n="",o=ne.default.createElement("span",{className:"name"},this.pageName()),i="page",a="fa fa-file-o icon";return typeof r.status!="undefined"&&(i=`page status-${this.node().status}`),r.id&&r.locale&&this.permitted("edit")&&(o=ne.default.createElement("a",{href:this.editUrl(r),className:"name"},this.pageName())),r.id&&r.starts_at&&(n=ne.default.createElement("span",{className:"date"},r.starts_at)),r.news_page?a="fa fa-newspaper-o icon":r.pinned&&(a="fa fa-flag-o icon"),ne.default.createElement("div",{className:i},ne.default.createElement("i",{className:a}),o,n,this.statusLabel(),this.collapsedLabel(),this.actions())}statusLabel(){let t=["Draft","Reviewed","Published","Hidden","Deleted"];return typeof this.node().status!="undefined"&&this.node().status!=2?ne.default.createElement("span",{className:"status-label"},"(",t[this.node().status],")"):""}toggleStatus(){this.node().status!=2?this.updatePage({status:2}):this.updatePage({status:3})}updatePage(t){if(this.props.updatePage)return this.props.updatePage(this.props.index,t)}visibleChildren(){return this.node().children?this.node().children.filter(t=>t.status!=4):[]}};Vt.propTypes={addChild:Nt.default.func,dragging:Nt.default.number,index:Nt.default.object,onCollapse:Nt.default.func,onDragStart:Nt.default.func,paddingLeft:Nt.default.number,tree:Nt.default.object,updatePage:Nt.default.func};var fn=class extends wr.default.Component{constructor(t){super(t);this.state={dragging:this.initDragging()}}initDragging(){return{id:null,x:null,y:null,w:null,h:null,scrollTop:null,scrollLeft:null}}getDraggingDom(){var t=this.props.tree,r=this.state.dragging;if(r&&r.id){var n=t.getIndex(r.id),o={top:r.y,left:r.x,width:r.w};return wr.default.createElement("div",{className:"draggable",style:o},wr.default.createElement(Vt,{tree:t,index:n,paddingLeft:this.props.paddingLeft}))}return null}render(){var t=this.props.tree,r=this.state.dragging;if(t){var n=t.getIndex(1);return wr.default.createElement("div",{className:"page-tree"},this.getDraggingDom(),wr.default.createElement(Vt,{tree:t,index:n,key:n.id,paddingLeft:this.props.paddingLeft,addChild:o=>this.addChild(o),onDragStart:(o,i,a)=>this.dragStart(o,i,a),onCollapse:o=>this.toggleCollapse(o),updatePage:(o,i)=>this.updatePage(o,i),dragging:r&&r.id}))}else return wr.default.createElement("div",{className:"page-tree"},this.getDraggingDom())}addChild(t){let r={name:"",status:0,editing:!0,children:[],published_at:new Date,pinned:!1,locale:t.node.locale,parent_page_id:t.node.id};this.props.addChild(t.id,r)}prevAddButtonCount(t,r){let n=0,o=[],i=t.getIndex(r.parent);for(;i;)o.push(i),i=t.getIndex(i.parent);for(i=r,i=t.getNodeByTop(r.top-1);i;)o.indexOf(i)==-1&&!i.node.collapsed&&i.node.children.filter(a=>a.status!=4).length>0&&(n+=1),i=t.getNodeByTop(i.top-1);return n}scrollOffset(){let t=this.state.dragging;return{top:document.body.scrollTop-t.scrollTop,left:document.body.scrollLeft-t.scrollLeft}}drag(t){if(this._start){var r=Math.abs(t.clientX-this._offsetX)+Math.abs(t.clientY-this._offsetY);if(r>=15)this.setState({dragging:this.dragging}),this._start=!1;else return null}var n=this.props.tree,o=this.state.dragging,i=this.props.paddingLeft,a=null,l=n.getIndex(o.id),s=l.node.collapsed,u=this._startX,p=this._startY,m=this._offsetX,h=this._offsetY,w={x:u+t.clientX-m+this.scrollOffset().left,y:p+t.clientY-h+this.scrollOffset().top};o.x=w.x,o.y=w.y;var g=o.x-i/2-(l.left-2)*i,x=o.y-o.h/2-(l.top-2+this.prevAddButtonCount(n,l))*o.h;if(g<0)l.parent&&!l.next&&(a=n.move(l.id,l.parent,"after"));else if(g>i&&l.prev){var d=n.getIndex(l.prev);!d.node.leaf&&!d.node.collapsed&&(a=n.move(l.id,l.prev,"append"))}if(a&&(l=a,a.node.collapsed=s,o.id=a.id),x<0-o.h*.5){var f=n.getNodeByTop(l.top-1);a=n.move(l.id,f.id,"before")}else if(x>o.h*1.5){let c=l.next?n.getIndex(l.next):n.getNodeByTop(l.top+l.height);c&&c.parent!==l.id&&(c.children&&c.children.length&&!c.node.collapsed?a=n.move(l.id,c.id,"prepend"):a=n.move(l.id,c.id,"after"))}a&&(a.node.collapsed=s,o.id=a.id),this.setState({dragging:o})}dragStart(t,r,n){if(n.button===0){this.dragging={id:t,w:r.offsetWidth,h:r.offsetHeight,x:r.offsetLeft,y:r.offsetTop,scrollTop:document.body.scrollTop,scrollLeft:document.body.scrollLeft},this._startX=r.offsetLeft,this._startY=r.offsetTop,this._offsetX=n.clientX,this._offsetY=n.clientY,this._start=!0;var o=this;this._dragListener=i=>o.drag(i),this._dragEndListener=()=>o.dragEnd(),window.addEventListener("mousemove",this._dragListener),window.addEventListener("mouseup",this._dragEndListener)}}dragEnd(){this._start||(this.props.updateTree(this.props.tree),this.props.movedPage(this.state.dragging.id)),this.setState({dragging:this.initDragging()}),window.removeEventListener("mousemove",this._dragListener),window.removeEventListener("mouseup",this._dragEndListener)}toggleCollapse(t){this.props.toggleCollapsed(t)}updatePage(t,r){this.props.updatePage(t.id,r)}};fn.defaultProps={paddingLeft:15};fn.propTypes={tree:Wt.default.object,addChild:Wt.default.func,movedPage:Wt.default.func,toggleCollapsed:Wt.default.func,paddingLeft:Wt.default.number,updatePage:Wt.default.func,updateTree:Wt.default.func};var Ki=class{constructor(t){this.cnt=1,this.obj=t||{children:[]},this.indexes={},this.build(this.obj)}build(t){var r=this.indexes,n=this.cnt,o=this,i={id:n,node:t};r[this.cnt+""]=i,this.cnt++,t.children&&t.children.length&&a(t.children,i);function a(l,s){var u=[];l.forEach(function(p){var m={};m.id=o.cnt,m.node=p,s&&(m.parent=s.id),r[o.cnt+""]=m,u.push(o.cnt),o.cnt++,p.children&&p.children.length&&a(p.children,m)}),s.children=u,u.forEach(function(p,m){var h=r[p+""];m>0&&(h.prev=u[m-1]),m<u.length-1&&(h.next=u[m+1])})}return i}getIndex(t){var r=this.indexes[t+""];if(r)return r}removeIndex(t){var r=this;n(t);function n(o){delete r.indexes[o.id+""],o.children&&o.children.length&&o.children.forEach(function(i){n(r.getIndex(i))})}}get(t){var r=this.getIndex(t);return r&&r.node?r.node:null}remove(t){var r=this.getIndex(t),n=this.get(t),o=this.getIndex(r.parent),i=this.get(r.parent);return i.children.splice(i.children.indexOf(n),1),o.children.splice(o.children.indexOf(t),1),this.removeIndex(r),this.updateChildren(o.children),n}updateChildren(t){t.forEach(function(r,n){var o=this.getIndex(r);o.prev=o.next=null,n>0&&(o.prev=t[n-1]),n<t.length-1&&(o.next=t[n+1])}.bind(this))}insert(t,r,n){var o=this.getIndex(r),i=this.get(r),a=this.build(t);return a.parent=r,i.children=i.children||[],o.children=o.children||[],i.children.splice(n,0,t),o.children.splice(n,0,a.id),this.updateChildren(o.children),o.parent&&this.updateChildren(this.getIndex(o.parent).children),a}insertBefore(t,r){var n=this.getIndex(r),o=n.parent,i=this.getIndex(o).children.indexOf(r);return this.insert(t,o,i)}insertAfter(t,r){var n=this.getIndex(r),o=n.parent,i=this.getIndex(o).children.indexOf(r);return this.insert(t,o,i+1)}prepend(t,r){return this.insert(t,r,0)}append(t,r){var n=this.getIndex(r);return n.children=n.children||[],this.insert(t,r,n.children.length)}updateNodesPosition(){var t=1,r=1,n=this.getIndex(1),o=this;n.top=t++,n.left=r++,n.children&&n.children.length&&i(n.children,n,r,n.node.collapsed);function i(a,l,s,u){var p=1;return a.forEach(function(m){var h=o.getIndex(m);u?(h.top=null,h.left=null):(h.top=t++,h.left=s),h.children&&h.children.length?p+=i(h.children,h,s+1,u||h.node.collapsed):(h.height=1,p+=1)}),l.node.collapsed?l.height=1:l.height=p,l.height}}move(t,r,n){if(!(t===r||r===1)){var o=this.remove(t),i=null;return n==="before"?i=this.insertBefore(o,r):n==="after"?i=this.insertAfter(o,r):n==="prepend"?i=this.prepend(o,r):n==="append"&&(i=this.append(o,r)),this.updateNodesPosition(),i}}getParent(t){var r=this.indexes;if(Object.prototype.hasOwnProperty.call(r,t))return this.getIndex(r[t].parent)}getNodeByTop(t){var r=this.indexes;for(var n in r)if(Object.prototype.hasOwnProperty.call(r,n)&&r[n].top===t)return r[n]}};var uo=class extends $l.default.Component{constructor(t){super(t);this.state={tree:this.buildTree(t.pages)},this.addChild=this.addChild.bind(this),this.movedPage=this.movedPage.bind(this),this.toggleCollapsed=this.toggleCollapsed.bind(this),this.updatePage=this.updatePage.bind(this),this.updateTree=this.updateTree.bind(this)}addChild(t,r){let n=this.state.tree;var o=n.append(r,t);this.reorderChildren(t),this.setCollapsed(t,!1),this.createPage(o,r),this.setState({tree:n})}movedPage(t){let r=this.state.tree,n=r.getIndex(t);this.reorderChildren(n.parent);let o=r.getIndex(n.parent),i=o.children.indexOf(t)+1;this.movePage(n,o,i),this.setState({tree:r})}toggleCollapsed(t){let r=this.state.tree;var n=r.getIndex(t).node;this.setCollapsed(t,!n.collapsed),this.setState({tree:r})}updatePage(t,r){let o=this.state.tree.getIndex(t),i=`/admin/${o.node.locale}/pages/${o.node.id}.json`;this.updateNode(o,r),this.performUpdate(o,i,{page:r})}updateTree(t){this.setState({tree:t})}applyCollapsed(t){let r=(i,a)=>{var l=0;let s=i.getIndex(a.parent);for(;s;)l+=1,s=i.getIndex(s.parent);return l},n=this.collapsedState(),o=function(i){var a=t.getIndex(i),l=a.node;Object.prototype.hasOwnProperty.call(n,l.id)?l.collapsed=n[l.id]:(l.news_page||r(t,a)>1)&&(l.collapsed=!0),a.children&&a.children.length&&a.children.forEach(s=>o(s))};o(1)}collapsedState(){return window&&window.localStorage&&typeof window.localStorage.collapsedPages!="undefined"?JSON.parse(window.localStorage.collapsedPages):{}}createPage(t,r){Uf(`/admin/${t.node.locale}/pages.json`,{page:r}).then(n=>this.updateNode(t,n))}buildTree(t){let r=t.reduce((o,i)=>{let a=i.parent_page_id;return o[a]=[...o[a]||[],i],o},{});t.forEach(o=>o.children=r[o.id]||[]);let n=new Ki({name:"All Pages",locale:this.props.locale,permissions:this.props.permissions,root:!0,children:r[null]});return this.applyCollapsed(n),n.updateNodesPosition(),n}movePage(t,r,n){let o={parent_id:r.node.id,position:n},i=`/admin/${t.node.locale}/pages/${t.node.id}/move.json`;this.performUpdate(t,i,o)}performUpdate(t,r,n){Hr(r,n).then(o=>this.updateNode(t,o))}render(){return $l.default.createElement(fn,{tree:this.state.tree,addChild:this.addChild,movedPage:this.movedPage,toggleCollapsed:this.toggleCollapsed,updatePage:this.updatePage,updateTree:this.updateTree})}reorderChildren(t){let r=this.state.tree;var n=this.state.tree.getIndex(t),o=n.node;!o.news_page||(n.children=n.children.sort(function(i,a){var l=r.getIndex(i).node,s=r.getIndex(a).node;return l.pinned==s.pinned?new Date(s.published_at)-new Date(l.published_at):l.pinned?-1:1}),r.updateNodesPosition())}setCollapsed(t,r){var n=this.state.tree.getIndex(t).node;n.collapsed=r,this.storeCollapsed(t,n.collapsed),this.state.tree.updateNodesPosition()}storeCollapsed(t,r){let n=this.state.tree.getIndex(t).node;var o=this.collapsedState();o[n.id]=r,window.localStorage.collapsedPages=JSON.stringify(o)}updateNode(t,r){for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t.node[n]=r[n]);this.setState({tree:this.state.tree})}};uo.propTypes={pages:Yi.default.array,locale:Yi.default.string,permissions:Yi.default.array};var xr=P(H()),dn=P(J());var Xi=P(H()),Qi=P(J()),co=class extends Xi.default.Component{render(){return Xi.default.createElement("a",{title:this.props.name,className:"button "+this.props.className,onClick:this.props.onClick},Xi.default.createElement("i",{className:"fa fa-"+this.props.className}))}};co.propTypes={className:Qi.default.string,name:Qi.default.string,onClick:Qi.default.func};var br=class extends xr.default.Component{constructor(t){super(t);this.state={value:t.value||"",rows:t.rows||5},this.inputRef=xr.default.createRef(),this.handleChange=this.handleChange.bind(this),this.handleKeyPress=this.handleKeyPress.bind(this),this.getSelection=this.getSelection.bind(this),this.link=this.link.bind(this),this.replaceSelection=this.replaceSelection.bind(this)}actions(){let t=[{name:"bold",className:"bold",hotkey:"b",fn:n=>["<b>",n,"</b>"]},{name:"italic",className:"italic",hotkey:"i",fn:n=>["<i>",n,"</i>"]}],r=[{name:"Heading 2",className:"header h2",fn:n=>["h2. ",n,""]},{name:"Heading 3",className:"header h3",fn:n=>["h3. ",n,""]},{name:"Heading 4",className:"header h4",fn:n=>["h4. ",n,""]},{name:"Blockquote",className:"quote-left",fn:n=>["bq. ",n,""]},{name:"List",className:"list-ul",fn:n=>["",this.strToList(n,"*"),""]},{name:"Ordered list",className:"list-ol",fn:n=>["",this.strToList(n,"#"),""]},{name:"Link",className:"link",fn:this.link},{name:"Email link",className:"envelope",fn:this.emailLink}];return this.props.simple?t:[...t,...r]}applyAction(t){let[r,n,o]=t(this.getSelection());this.replaceSelection(r,n,o)}emailLink(t){var r=prompt("Enter email address","");let n=t.length>0?t:r;return['"',n,`":mailto:${r}`]}getSelection(){let{selectionStart:t,selectionEnd:r,value:n}=this.inputRef.current;return n.substr(t,r-t)}handleChange(t){this.setState({value:t.target.value})}handleKeyPress(t){let r;t.which>=65&&t.which<=90?r=String.fromCharCode(t.keyCode).toLowerCase():t.keyCode===13&&(r="enter");let n={};this.actions().forEach(o=>{o.hotkey&&(n[o.hotkey]=o.fn)}),(t.metaKey||t.ctrlKey)&&Object.prototype.hasOwnProperty.call(n,r)&&(t.preventDefault(),this.applyAction(n[r]))}link(t){let r=t.length>0?t:"Link text";var n=prompt("Enter link URL","");return n?['"',r,`":${this.relativeUrl(n)}`]:["",r,""]}relativeUrl(t){let r=null;if(!t.match(/^https:\/\//)||!document||!document.location)return t;try{r=new URL(t)}catch(n){console.log("Error parsing URL: ",n)}return r&&r.hostname==document.location.hostname&&(document.location.port||"80")==(r.port||"80")?r.pathname:t}render(){let{value:t,rows:r}=this.state,{id:n,name:o}=this.props,i=a=>l=>{l.preventDefault(),this.applyAction(a)};return xr.default.createElement("div",{className:"rich-text-area"},xr.default.createElement("div",{className:"rich-text toolbar"},this.actions().map(a=>xr.default.createElement(co,{key:a.name,name:a.name,className:a.className,onClick:i(a.fn)}))),xr.default.createElement("textarea",{className:"rich",ref:this.inputRef,id:n,name:o,value:t,rows:r,onChange:this.handleChange,onKeyDown:this.handleKeyPress}))}replaceSelection(t,r,n){let o=this.inputRef.current,{selectionStart:i,selectionEnd:a,value:l}=o;o.value=l.substr(0,i)+t+r+n+l.substr(a,l.length),o.focus({preventScroll:!0}),o.setSelectionRange(i+t.length,i+t.length+r.length),this.setState({value:o.value})}strToList(t,r){return t.split(`
16
+ %o`,r,t,n)},e}();function cv(){return new Promise(function(e){document.readyState=="loading"?document.addEventListener("DOMContentLoaded",e):e()})}function rf(e){var t=Br(e,"classes");return t.reduce(function(r,n){return Object.assign(r,fv(n))},{})}function fv(e){var t,r=e+"Class";return t={},t[r]={get:function(){var n=this.classes;if(n.has(e))return n.get(e);var o=n.getAttributeName(e);throw new Error('Missing attribute "'+o+'"')}},t["has"+Vr(r)]={get:function(){return this.classes.has(e)}},t}function nf(e){var t=Br(e,"targets");return t.reduce(function(r,n){return Object.assign(r,dv(n))},{})}function dv(e){var t;return t={},t[e+"Target"]={get:function(){var r=this.targets.find(e);if(r)return r;throw new Error('Missing target element "'+this.identifier+"."+e+'"')}},t[e+"Targets"]={get:function(){return this.targets.findAll(e)}},t["has"+Vr(e)+"Target"]={get:function(){return this.targets.has(e)}},t}function of(e){var t=Vc(e,"values"),r={valueDescriptorMap:{get:function(){var n=this;return t.reduce(function(o,i){var a,l=af(i),s=n.data.getAttributeNameForKey(l.key);return Object.assign(o,(a={},a[s]=l,a))},{})}}};return t.reduce(function(n,o){return Object.assign(n,pv(o))},r)}function pv(e){var t,r=af(e),n=r.type,o=r.key,i=r.name,a=vv[n],l=lf[n]||lf.default;return t={},t[i]={get:function(){var s=this.data.get(o);return s!==null?a(s):r.defaultValue},set:function(s){s===void 0?this.data.delete(o):this.data.set(o,l(s))}},t["has"+Vr(i)]={get:function(){return this.data.has(o)}},t}function af(e){var t=e[0],r=e[1],n=hv(r);return mv(t,n)}function hv(e){switch(e){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}throw new Error('Unknown value type constant "'+e+'"')}function mv(e,t){var r=bi(e)+"-value";return{type:t,key:r,name:Yc(r),get defaultValue(){return gv[t]}}}var gv={get array(){return[]},boolean:!1,number:0,get object(){return{}},string:""},vv={array:function(e){var t=JSON.parse(e);if(!Array.isArray(t))throw new TypeError("Expected array");return t},boolean:function(e){return!(e=="0"||e=="false")},number:function(e){return parseFloat(e)},object:function(e){var t=JSON.parse(e);if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError("Expected object");return t},string:function(e){return e}},lf={default:yv,array:sf,object:sf};function sf(e){return JSON.stringify(e)}function yv(e){return""+e}var kt=function(){function e(t){this.context=t}return Object.defineProperty(e.prototype,"application",{get:function(){return this.context.application},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"scope",{get:function(){return this.context.scope},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"element",{get:function(){return this.scope.element},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"identifier",{get:function(){return this.scope.identifier},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"targets",{get:function(){return this.scope.targets},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"classes",{get:function(){return this.scope.classes},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"data",{get:function(){return this.scope.data},enumerable:!1,configurable:!0}),e.prototype.initialize=function(){},e.prototype.connect=function(){},e.prototype.disconnect=function(){},e.blessings=[rf,nf,of],e.targets=[],e.values={},e}();var na={};Rg(na,{Attachments:()=>Gr,DateRangeSelect:()=>gr,EditableImage:()=>zt,FileUploadButton:()=>ut,ImageCropper:()=>on,ImageGrid:()=>un,ImageUploader:()=>zi,Modal:()=>Bi,PageDates:()=>ao,PageFiles:()=>lo,PageImages:()=>so,PageTree:()=>uo,RichTextArea:()=>br,TagEditor:()=>ta,Toast:()=>po});var Ve=P(H()),Qr=P(J());var Ee=P(H()),et=P(J());function Qn(){return document.queryCommandSupported&&document.queryCommandSupported("copy")}function mt(e){let t=document.createElement("textarea");t.value=e,document.body.appendChild(t),t.select(),document.execCommand("copy"),document.body.removeChild(t)}var oe=P(H()),Zn=P(J());function Je(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}var Mf=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),Fl=function(){return Math.random().toString(36).substring(7).split("").join(".")},Lf={INIT:"@@redux/INIT"+Fl(),REPLACE:"@@redux/REPLACE"+Fl(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+Fl()}};function Pv(e){if(typeof e!="object"||e===null)return!1;for(var t=e;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Gn(e,t,r){var n;if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(Je(0));if(typeof t=="function"&&typeof r=="undefined"&&(r=t,t=void 0),typeof r!="undefined"){if(typeof r!="function")throw new Error(Je(1));return r(Gn)(e,t)}if(typeof e!="function")throw new Error(Je(2));var o=e,i=t,a=[],l=a,s=!1;function u(){l===a&&(l=a.slice())}function p(){if(s)throw new Error(Je(3));return i}function m(x){if(typeof x!="function")throw new Error(Je(4));if(s)throw new Error(Je(5));var d=!0;return u(),l.push(x),function(){if(!!d){if(s)throw new Error(Je(6));d=!1,u();var c=l.indexOf(x);l.splice(c,1),a=null}}}function h(x){if(!Pv(x))throw new Error(Je(7));if(typeof x.type=="undefined")throw new Error(Je(8));if(s)throw new Error(Je(9));try{s=!0,i=o(i,x)}finally{s=!1}for(var d=a=l,f=0;f<d.length;f++){var c=d[f];c()}return x}function w(x){if(typeof x!="function")throw new Error(Je(10));o=x,h({type:Lf.REPLACE})}function g(){var x,d=m;return x={subscribe:function(c){if(typeof c!="object"||c===null)throw new Error(Je(11));function v(){c.next&&c.next(p())}v();var y=d(v);return{unsubscribe:y}}},x[Mf]=function(){return this},x}return h({type:Lf.INIT}),n={dispatch:h,subscribe:m,getState:p,replaceReducer:w},n[Mf]=g,n}var Le=Gn((e={},t)=>{switch(t.type){case"OPEN":return re(F({},e),{component:t.payload});case"CLOSE":return re(F({},e),{component:null});default:return e}});var Fe=Gn((e=[],t)=>{switch(t.type){case"ERROR":return[...e,{message:t.message,type:"error"}];case"NOTICE":return[...e,{message:t.message,type:"notice"}];case"NEXT":return e.slice(1);default:return e}});function Ff(){return document.querySelector("[name=csrf-token]").content}function Rf(){return{method:"POST",headers:{"Content-Type":"application/json; charset=utf-8","X-CSRF-Token":Ff()}}}async function Uf(e,t){let r=re(F({},Rf()),{method:"POST"});return t&&(r.body=JSON.stringify(t)),(await fetch(e,r)).json()}async function Hr(e,t){let r=re(F({},Rf()),{method:"PUT"});return t&&(r.body=JSON.stringify(t)),(await fetch(e,r)).json()}async function qr(e,t){return(await fetch(e,{method:"POST",body:t,headers:{"X-CSRF-Token":Ff()}})).json()}function ki(e){let{attachment:t}=e,[r,n]=(0,oe.useState)(e.locale),[o,i]=(0,oe.useState)({name:t.name||{},description:t.description||{}}),a=u=>p=>{i(re(F({},o),{[u]:re(F({},o[u]),{[r]:p.target.value})}))},l=u=>{u.preventDefault(),mt(`[attachment:${t.id}]`),Fe.dispatch({type:"NOTICE",message:"Embed code copied to clipboard"})},s=u=>{u.preventDefault(),u.stopPropagation();let p=F({},o);Hr(`/admin/attachments/${t.id}`,{attachment:p}),e.onUpdate&&e.onUpdate(p),Le.dispatch({type:"CLOSE"})};return oe.default.createElement("div",{className:"attachment-editor"},oe.default.createElement("form",null,e.locales&&Object.keys(e.locales).length>1&&oe.default.createElement("div",{className:"field"},oe.default.createElement("label",null,"Locale"),oe.default.createElement("select",{name:"locale",onChange:u=>n(u.target.value)},Object.keys(e.locales).map(u=>oe.default.createElement("option",{key:`locale-${u}`,value:u},e.locales[u])))),oe.default.createElement("div",{className:"field"},oe.default.createElement("label",null,"Name"),oe.default.createElement("input",{type:"text",className:"name",value:o.name[r]||"",onChange:a("name")})),oe.default.createElement("div",{className:"field"},oe.default.createElement("label",null,"Description"),oe.default.createElement("textarea",{className:"description",value:o.description[r]||"",onChange:a("description")})),oe.default.createElement("div",{className:"field embed-code"},oe.default.createElement("label",null,"Embed code"),oe.default.createElement("input",{type:"text",value:`[attachment:${t.id}]`,disabled:!0}),Qn()&&oe.default.createElement("button",{onClick:l},"Copy")),oe.default.createElement("div",{className:"field"},oe.default.createElement("label",null,"File"),oe.default.createElement("a",{href:t.url,rel:"noreferrer",target:"_blank"},t.filename)),oe.default.createElement("div",{className:"buttons"},oe.default.createElement("button",{onClick:s},"Save"),oe.default.createElement("button",{onClick:()=>Le.dispatch({type:"CLOSE"})},"Cancel"))))}ki.propTypes={attachment:Zn.default.object,locale:Zn.default.string,locales:Zn.default.object,onUpdate:Zn.default.func};var Ft=P(H()),wd=P(yd());function cy(e){return e.ref.current?e.ref.current.getBoundingClientRect():null}function fy(e,t){if(e&&e.ref&&e.ref.current){let r=e.ref.current.style.display;e.ref.current.style.display="none";let n=t();return e.ref.current.style.display=r,n}else return t()}function dy(e,t){switch(t.type){case"append":return[...e,...t.payload];case"prepend":return[...t.payload,...e];case"insertFiles":var r=e.indexOf("Files");return r===-1||!t.payload?e:[...e.slice(0,r),...t.payload,...e.slice(r+1)];case"update":return e.map(n=>n.handle===t.payload.handle?t.payload:n);case"updatePositions":return fy(t.payload,()=>e.map(n=>re(F({},n),{rect:cy(n)})));case"remove":return e.filter(n=>n.handle!==t.payload.handle);case"replace":return t.payload;case"reorder":return t.payload;default:return e}}function Kr(e){return{record:e,rect:null,ref:Ft.default.createRef(),handle:(0,wd.default)("draggable")}}function mr(e){let t=(0,Ft.useRef)(),[r,n]=(0,Ft.useReducer)(dy,[],()=>e.map(o=>Kr(o)));return(0,Ft.useEffect)(()=>{n({type:"updatePositions"})},[]),{ref:t,draggables:r,dispatch:n}}var Oi=P(H());function py(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;let t=e.dataTransfer.types;for(var r=0;r<t.length;r++)if(t[r]==="Files"||t[r]==="application/x-moz-file")return!0;return!1}function hy(e){var t=[];if(e.items)for(let r=0;r<e.items.length;r++)e.items[r].kind=="file"&&t.push(e.items[r].getAsFile());else for(let r=0;r<e.files.length;r++)t.push(e.files[r]);return t}function xd(e){var t,r;return e.type=="touchmove"?(t=e.touches[0].clientX,r=e.touches[0].clientY):(t=e.clientX,r=e.clientY),{x:t,y:r}}function Yr(e,t){let[r,n]=(0,Oi.useState)({dragging:!1,x:null,y:null}),o=u=>{e.forEach(p=>{p.dispatch({type:"updatePositions",payload:u})})},i=(u,p)=>{o(p),n(F({dragging:p},xd(u)))},a=u=>{r.dragging?(u.stopPropagation(),u.preventDefault(),n(F(F({},r),xd(u)))):py(u)&&i(u,"Files")},l=u=>{if(r.dragging){let m=r;var p=[];u.preventDefault(),u.stopPropagation(),r.dragging=="Files"&&(p=hy(u.dataTransfer)),n({dragging:!1,x:null,y:null}),t(m,p),o()}},s=u=>{r.dragging==="Files"&&(u.preventDefault(),u.stopPropagation(),n({dragging:!1,x:null,y:null}))};return(0,Oi.useEffect)(()=>(window.addEventListener("mousemove",a),window.addEventListener("touchmove",a),window.addEventListener("mouseup",l),window.addEventListener("touchend",l),window.addEventListener("mouseout",s),function(){window.removeEventListener("mousemove",a),window.removeEventListener("touchmove",a),window.removeEventListener("mouseup",l),window.removeEventListener("touchend",l),window.removeEventListener("mouseout",s)})),[r,i,{onDragOver:a,onDrop:l}]}var _i=P(H());function Xr(e,t){let r=(0,_i.useRef)(),n=o=>{o.preventDefault(),o.stopPropagation(),t(o,e)};return(0,_i.useEffect)(()=>{e.ref.current=r.current},[]),{ref:r,onDragStart:n,draggable:!0}}function bd(e,t){let{x:r,y:n}=e;var o;if(t.rect)o=t.rect;else if(t.current)o=t.current.getBoundingClientRect();else return!1;return r>=o.left&&r<=o.right&&n>=o.top&&n<=o.bottom}function eo(e,t){let{draggables:r,ref:n}=e,{dragging:o}=t;if(!o)return r;let i=r.filter(a=>a.handle!==o.handle);if(bd(t,n)){let a=i.filter(l=>bd(t,l))[0];if(a){let l=i.indexOf(a);i=[...i.slice(0,l),o,...i.slice(l)]}else i=[...i,o]}return i}function to(e,t){let r=eo(e,t);return t.dragging&&r.indexOf(t.dragging)===-1&&(t.y<e.ref.current.getBoundingClientRect().top?r=[t.dragging,...r]:r.push(t.dragging)),r}function Ni(e){let{attributeName:t,draggable:r}=e,{record:n}=r,{attachment:o,uploading:i}=n,a=Xr(r,e.startDrag),l=g=>{g.preventDefault(),mt(`[attachment:${o.id}]`),Fe.dispatch({type:"NOTICE",message:"Embed code copied to clipboard"})},s=g=>{g.preventDefault(),e.deleteRecord&&e.deleteRecord()},u=()=>o.description&&o.description[e.locale]?o.description[e.locale]:null,p=()=>o.name&&o.name[e.locale]?o.name[e.locale]:null,m=g=>{g.preventDefault(),Le.dispatch({type:"OPEN",payload:Ee.default.createElement(ki,{attachment:o,locale:e.locale,locales:e.locales,onUpdate:e.onUpdate})})},h=["attachment"];e.placeholder&&h.push("placeholder"),n.uploading&&h.push("uploading");let w=i?"cloud-upload":"paperclip";return Ee.default.createElement("div",F({className:h.join(" ")},a),Ee.default.createElement("input",{name:`${t}[id]`,type:"hidden",value:n.id||""}),Ee.default.createElement("input",{name:`${t}[attachment_id]`,type:"hidden",value:o&&o.id||""}),Ee.default.createElement("input",{name:`${t}[position]`,type:"hidden",value:e.position}),!i&&Ee.default.createElement("div",{className:"actions"},Ee.default.createElement("button",{onClick:m},"Edit"),e.showEmbed&&Ee.default.createElement("button",{onClick:l},"Embed"),e.deleteRecord&&Ee.default.createElement("button",{onClick:s},"Remove")),o&&Ee.default.createElement("div",{className:"attachment-info"},Ee.default.createElement("h3",null,Ee.default.createElement("i",{className:`fa fa-${w} icon`}),p()||Ee.default.createElement("em",null,"Untitled"),Ee.default.createElement("br",null)),!i&&Ee.default.createElement("a",{href:o.url,rel:"noreferrer",target:"_blank"},o.filename),!i&&u()&&Ee.default.createElement("p",null,u())))}Ni.propTypes={locale:et.default.string,locales:et.default.object,draggable:et.default.object,deleteRecord:et.default.func,startDrag:et.default.func,showEmbed:et.default.bool,onUpdate:et.default.func,attributeName:et.default.string,placeholder:et.default.bool,position:et.default.number,ref:et.default.object};var Ed=P(H());function Rl(){return Ed.default.createElement("div",{className:"attachment drop-placeholder",key:"file-placeholder"},"Upload files here")}var Rt=P(H()),ro=P(J());function ut(e){let t=(0,Rt.useRef)(),r=o=>{let i=o.target.files,a=[];for(var l=0;l<i.length;l++)a.push(i[l]);a.length>0&&e.callback(a)},n=o=>{o.preventDefault(),t.current.click()};return Rt.default.createElement("div",{className:"upload-button"},Rt.default.createElement("span",null,"Drag and drop ",e.type||"file",e.multiple&&"s"," here, or",e.multiline&&Rt.default.createElement("br",null),Rt.default.createElement("button",{onClick:n},"choose a file")),Rt.default.createElement("input",{type:"file",onChange:r,ref:t,style:{display:"none"},multiple:e.multiple||!1}))}ut.propTypes={callback:ro.default.func,type:ro.default.string,multiple:ro.default.bool,multiline:ro.default.bool};function my(e){return e.replace(/\.[\w\d]+$/,"").replace(/_/g," ")}function Gr(e){let t=mr(e.records),r=e.locales?Object.keys(e.locales):[e.locale],[n,o]=(0,Ve.useState)([]),i=c=>{let v={};r.forEach(O=>v[O]=c.name);let y=Kr({attachment:{filename:c.name,name:v},uploading:!0}),I=new FormData;return I.append("attachment[file]",c),r.forEach(O=>{I.append(`attachment[name][${O}]`,my(c.name))}),qr("/admin/attachments.json",I).then(O=>{t.dispatch({type:"update",payload:re(F({},y),{record:{attachment:O,uploading:!1}})})}),y},a=c=>{t.dispatch({type:"append",payload:c.map(v=>i(v))})},l=(c,v)=>{t.dispatch({type:"reorder",payload:to(t,c)}),t.dispatch({type:"insertFiles",payload:v.map(y=>i(y))})},[s,u,p]=Yr([t],l),m=c=>[...t.draggables.map(v=>v.record),...n].indexOf(c)+1,h=c=>`${e.attribute}[${m(c)}]`,w=c=>v=>{let{record:y}=c,I=re(F({},c),{record:re(F({},y),{attachment:F(F({},y.attachment),v)})});t.dispatch({type:"update",payload:I})},g=c=>()=>{t.dispatch({type:"remove",payload:c}),c.record.id&&o([...n,c.record])},x=c=>{let{dragging:v}=s;return c==="Files"?Ve.default.createElement(Rl,{key:"placeholder"}):Ve.default.createElement(Ni,{key:c.handle,draggable:c,locale:e.locale,locales:e.locales,showEmbed:e.showEmbed,startDrag:u,position:m(c.record),onUpdate:w(c),deleteRecord:g(c),attributeName:h(c.record),placeholder:v&&v==c})},d=to(t,s),f=["attachments"];return s.dragging&&f.push("dragover"),Ve.default.createElement("div",F({className:f.join(" "),ref:t.ref},p),Ve.default.createElement("div",{className:"files"},d.map(c=>x(c))),Ve.default.createElement("div",{className:"deleted"},n.map(c=>Ve.default.createElement("span",{className:"deleted-attachment",key:c.id},Ve.default.createElement("input",{name:`${h(c)}[id]`,type:"hidden",value:c.id}),Ve.default.createElement("input",{name:`${h(c)}[attachment_id]`,type:"hidden",value:c.attachment&&c.attachment.id||""}),Ve.default.createElement("input",{name:`${h(c)}[_destroy]`,type:"hidden",value:!0})))),Ve.default.createElement("div",{className:"drop-target"},Ve.default.createElement(ut,{multiple:!0,multiline:!0,callback:a})))}Gr.propTypes={attribute:Qr.default.string,locale:Qr.default.string,locales:Qr.default.object,records:Qr.default.array,showEmbed:Qr.default.bool};var Se=P(H()),Zr=P(J()),gr=class extends Se.default.Component{constructor(t){super(t);this.state={startsAt:this.parseDate(t.startsAt)||this.defaultDate(),endsAt:this.parseDate(t.endsAt)||this.defaultDate(60),startTime:"",endTime:""},this.state.startTime=this.timeToString(this.state.startsAt),this.state.endTime=this.timeToString(this.state.endsAt),this.changeStartsAt=this.changeStartsAt.bind(this),this.changeEndsAt=this.changeEndsAt.bind(this)}changeStartsAt(t={}){let r=this.modifyDate(this.state.startsAt,t);this.setDates(r,new Date(this.state.endsAt.getTime()+(r-this.state.startsAt)))}changeEndsAt(t={}){let r=this.modifyDate(this.state.endsAt,t);this.setDates(this.state.startsAt,r)}defaultDate(t=0){let r=1e3*60*60;return new Date(Math.round(new Date().getTime()/r)*r+r+1e3*60*t)}modifyDate(t,r={}){var n=new Date(t);return Object.prototype.hasOwnProperty.call(r,"year")&&n.setFullYear(r.year),Object.prototype.hasOwnProperty.call(r,"month")&&n.setMonth(r.month),Object.prototype.hasOwnProperty.call(r,"date")&&n.setDate(r.date),Object.prototype.hasOwnProperty.call(r,"time")&&r.time.match(/^[\d]{1,2}(:[\d]{1,2})?$/)&&(n.setHours(r.time.split(":")[0]),n.setMinutes(r.time.split(":")[1]||0)),n}parseDate(t){if(!!t)return new Date(t)}setDates(t,r){r<t&&(r=t),this.setState({startsAt:t,endsAt:r,startTime:this.timeToString(t),endTime:this.timeToString(r)})}startsAtToString(){return this.props.disabled?"":this.state.startsAt.toJSON()}endsAtToString(){return this.props.disabled?"":this.state.endsAt.toJSON()}renderDateSelect(t,r,n){return Se.default.createElement("div",{className:"date-select"},Se.default.createElement("select",{value:r.getMonth(),onChange:o=>n({month:o.target.value}),disabled:this.props.disabled},this.monthOptions().map((o,i)=>Se.default.createElement("option",{key:t+"-month-"+i,value:i},o))),Se.default.createElement("select",{value:r.getDate(),onChange:o=>n({date:o.target.value}),disabled:this.props.disabled},this.dayOptions().map(o=>Se.default.createElement("option",{key:t+"-date-"+o,value:o},o))),Se.default.createElement("select",{value:r.getFullYear(),onChange:o=>n({year:o.target.value}),disabled:this.props.disabled},this.yearOptions().map(o=>Se.default.createElement("option",{key:t+"-year-"+o,value:o},o))))}render(){return Se.default.createElement("div",{className:"date-range-select"},Se.default.createElement("input",{type:"hidden",name:this.props.objectName+"[starts_at]",value:this.startsAtToString()}),Se.default.createElement("input",{type:"hidden",name:this.props.objectName+"[ends_at]",value:this.endsAtToString()}),Se.default.createElement("div",{className:"date"},this.renderDateSelect("starts-at",this.state.startsAt,this.changeStartsAt),!this.props.disableTime&&Se.default.createElement("input",{type:"text",size:"5",value:this.state.startTime,disabled:this.props.disabled,onChange:t=>this.setState({startTime:t.target.value}),onBlur:t=>this.changeStartsAt({time:t.target.value})})),Se.default.createElement("span",{className:"to"},"to"),Se.default.createElement("div",{className:"date"},this.renderDateSelect("ends-at",this.state.endsAt,this.changeEndsAt),!this.props.disableTime&&Se.default.createElement("input",{type:"text",size:"5",value:this.state.endTime,disabled:this.props.disabled,onChange:t=>this.setState({endTime:t.target.value}),onBlur:t=>this.changeEndsAt({time:t.target.value})})))}timeToString(t){return t.toTimeString().slice(0,5)}yearOptions(){let t=2e3;return Array.apply(null,Array(new Date().getFullYear()-t+11)).map((r,n)=>n+t)}monthOptions(){return["January","February","March","April","May","June","July","August","September","October","November","December"]}dayOptions(){return Array.apply(null,Array(31)).map((t,r)=>r+1)}};gr.propTypes={startsAt:Zr.default.string,endsAt:Zr.default.string,disabled:Zr.default.bool,disableTime:Zr.default.bool,objectName:Zr.default.string};var Ot=P(H()),Ut=P(J());var yr=P(H()),an=P(J());var Ye=P(H()),Ii=P(J());var rn=P(H()),vr=P(J()),_d=P(kd());var Jr=P(H());function gy(e,t){let r=Di(e),n=e.image,o=n.real_width/n.real_height;return t?(r.aspect=t,r.width=100,r.height=100/t*o,r.height>100&&(r.height=100,r.width=100*t/o),r.x=(100-r.width)/2,r.y=(100-r.height)/2):delete r.aspect,Td(e,r)}function Td(e,t){let{image:r}=e;return(t.width<5||t.height<5)&&(t={x:0,y:0,width:100,height:100}),t.aspect===null&&delete t.aspect,{aspect:t.aspect,crop_start_x:r.real_width*(t.x/100),crop_start_y:r.real_height*(t.y/100),crop_width:r.real_width*(t.width/100),crop_height:r.real_height*(t.height/100)}}function Od(e,t){let{crop_start_x:r,crop_start_y:n,crop_width:o,crop_height:i,crop_gravity_x:a,crop_gravity_y:l}=e;switch(t.type){case"completeCrop":return a<r||a>r+o||l<n||l>n+i?re(F({},e),{cropping:!1,crop_gravity_x:null,crop_gravity_y:null}):re(F({},e),{cropping:!1});case"setCrop":return F(F({},e),Td(e,t.payload));case"setAspect":return F(F({},e),gy(e,t.payload));case"setFocal":return re(F({},e),{crop_gravity_x:o*(t.payload.x/100)+r,crop_gravity_y:i*(t.payload.y/100)+n});case"startCrop":return re(F({},e),{cropping:!0});case"toggleFocal":return a===null?Od(e,{type:"setFocal",payload:{x:50,y:50}}):re(F({},e),{crop_gravity_x:null,crop_gravity_y:null});default:return e}}function vy(e,t){let r=document.createElement("canvas");r.width=e.naturalWidth*(t.width/100),r.height=e.naturalHeight*(t.height/100);let n=r.getContext("2d");return n.drawImage(e,e.naturalWidth*(t.x/100),e.naturalHeight*(t.y/100),e.naturalWidth*(t.width/100),e.naturalHeight*(t.height/100),0,0,e.naturalWidth*(t.width/100),e.naturalHeight*(t.height/100)),[r,n]}function yy(e,t){let r=t.getImageData(0,0,e.width,e.height).data;for(var n=0;n<r.length/4;n++)if(r[n*4+3]!==255)return e.toDataURL("image/png");return e.toDataURL("image/jpeg")}function Pi(e){let t=i=>a=>a===null?a:i(a),r=t(Math.round),n=t(Math.ceil),o={crop_start_x:r(e.crop_start_x),crop_start_y:r(e.crop_start_y),crop_width:n(e.crop_width),crop_height:n(e.crop_height),crop_gravity_x:r(e.crop_gravity_x),crop_gravity_y:r(e.crop_gravity_y)};return o.crop_start_x+o.crop_width>e.image.real_width&&(o.crop_width=e.image.real_width-o.crop_start_x),o.crop_start_y+o.crop_height>e.image.real_height&&(o.crop_height=e.image.real_height-o.crop_start_y),o}function Di(e){let{image:t,aspect:r,crop_start_x:n,crop_start_y:o,crop_width:i,crop_height:a}=e,l=t.real_width/t.real_height,s=n/t.real_width*100,u=o/t.real_height*100;var p=i/t.real_width*100,m=a/t.real_height*100;return r&&p?m=p/r*l:r&&m&&(p=m*r/l),r===null?{x:s,y:u,width:p,height:m}:{x:s,y:u,width:p,height:m,aspect:r}}function oo(e){let[t,r]=(0,Jr.useReducer)(Od,{aspect:null,cropping:!1,crop_start_x:e.crop_start_x||0,crop_start_y:e.crop_start_y||0,crop_width:e.crop_width||e.real_width,crop_height:e.crop_height||e.real_height,crop_gravity_x:e.crop_gravity_x,crop_gravity_y:e.crop_gravity_y,image:e}),[n,o]=(0,Jr.useState)(null);async function i(){let a=new Image;a.src=t.image.uncropped_url,await a.decode();let[l,s]=vy(a,Di(t));o(yy(l,s))}return(0,Jr.useEffect)(()=>{t.cropping||i()},[t.cropping]),[t,r,n]}var en=P(H()),tn=P(J()),io=class extends en.default.Component{constructor(t){super(t);this.state={dragging:!1,x:t.x,y:t.y},this.dragStart=this.dragStart.bind(this),this.dragEnd=this.dragEnd.bind(this),this.drag=this.drag.bind(this),this.container=en.default.createRef(),this.point=en.default.createRef()}clamp(t,r,n){return t<r?r:t>n?n:t}dragStart(t){t.preventDefault(),t.stopPropagation(),t.target==this.point.current&&this.setState({dragging:!0})}dragEnd(){this.state.dragging&&(this.setState({dragging:!1}),this.props.onChange({x:this.state.x,y:this.state.y}))}drag(t){if(this.state.dragging){let o=this.container.current.getBoundingClientRect();var r,n;t.preventDefault(),t.type=="touchmove"?(r=t.touches[0].clientX-(o.x||o.left),n=t.touches[0].clientY-(o.y||o.top)):(r=t.clientX-(o.x||o.left),n=t.clientY-(o.y||o.top)),r=this.clamp(r,0,this.props.width),n=this.clamp(n,0,this.props.height),this.setState({x:r/this.props.width*100,y:n/this.props.height*100})}}render(){let t=this.props.width*(this.state.x/100),r=this.props.height*(this.state.y/100),n={transform:`translate3d(${t}px, ${r}px, 0)`};return en.default.createElement("div",{className:"focal-editor",ref:this.container,onTouchStart:this.dragStart,onTouchEnd:this.dragEnd,onTouchMove:this.drag,onMouseDown:this.dragStart,onMouseUp:this.dragEnd,onMouseMove:this.drag},en.default.createElement("div",{className:"focal-point",style:n,ref:this.point}))}};io.propTypes={x:tn.default.number,y:tn.default.number,onChange:tn.default.func,width:tn.default.number,height:tn.default.number};function Ai(e){let t=()=>{let{image:s,cropping:u,crop_width:p,crop_height:m}=e.cropState;return u?{width:s.real_width,height:s.real_height}:{width:p,height:m}},r=e.containerSize.width,n=e.containerSize.height,o=t().width/t().height;var i=r,a=r/o;a>n&&(a=n,i=n*o);let l={width:`${i}px`,height:`${a}px`};return e.cropState.cropping?rn.default.createElement("div",{className:"image-wrapper",style:l},rn.default.createElement(_d.default,{src:e.cropState.image.uncropped_url,crop:Di(e.cropState),minWidth:10,minHeight:10,onChange:e.setCrop})):rn.default.createElement("div",{className:"image-wrapper",style:l},e.focalPoint&&rn.default.createElement(io,{width:i,height:a,x:e.focalPoint.x,y:e.focalPoint.y,onChange:e.setFocal}),rn.default.createElement("img",{src:e.croppedImage}))}Ai.propTypes={containerSize:vr.default.object,croppedImage:vr.default.string,cropState:vr.default.object,focalPoint:vr.default.object,setCrop:vr.default.func,setFocal:vr.default.func};var We=P(H()),nn=P(J());function ji(e){let{cropping:t}=e.cropState,r=[["Free",null],["1:1",1],["3:2",3/2],["2:3",2/3],["4:3",4/3],["3:4",3/4],["5:4",5/4],["4:5",4/5],["16:9",16/9]],n=l=>s=>{s.preventDefault(),e.setAspect(l)},o=Math.ceil(e.cropState.crop_width),i=Math.ceil(e.cropState.crop_height),a=e.image.content_type.split("/")[1].toUpperCase();return We.default.createElement("div",{className:"toolbars"},We.default.createElement("div",{className:"toolbar"},We.default.createElement("div",{className:"info"},We.default.createElement("span",{className:"format"},o,"x",i," ",a)),We.default.createElement("button",{title:"Crop image",onClick:e.toggleCrop,className:t?"active":""},We.default.createElement("i",{className:"fa fa-crop"})),We.default.createElement("button",{disabled:t,title:"Toggle focal point",onClick:e.toggleFocal},We.default.createElement("i",{className:"fa fa-bullseye"})),We.default.createElement("a",{href:e.image.original_url,className:"button",title:"Download original image",disabled:t,download:e.image.filename,onClick:l=>t&&l.preventDefault()},We.default.createElement("i",{className:"fa fa-download"}))),t&&We.default.createElement("div",{className:"aspect-ratios toolbar"},We.default.createElement("div",{className:"label"},"Lock aspect ratio:"),r.map(l=>We.default.createElement("button",{key:"ratio-"+l[1],className:l[1]==e.cropState.aspect?"active":"",onClick:n(l[1])},l[0]))))}ji.propTypes={cropState:nn.default.object,image:nn.default.object,setAspect:nn.default.func,toggleCrop:nn.default.func,toggleFocal:nn.default.func};function wy(e){return e.crop_gravity_x===null||e.crop_gravity_y===null?null:{x:(e.crop_gravity_x-e.crop_start_x)/e.crop_width*100,y:(e.crop_gravity_y-e.crop_start_y)/e.crop_height*100}}function on(e){let t=(0,Ye.useRef)(),[r,n]=(0,Ye.useState)(null),o=()=>{let u=t.current;u&&n({width:u.offsetWidth-2,height:u.offsetHeight-2})};(0,Ye.useEffect)(()=>(window.addEventListener("resize",o),function(){window.removeEventListener("resize",o)})),(0,Ye.useEffect)(o,[]);let i=u=>{e.dispatch({type:"setAspect",payload:u})},a=u=>{e.dispatch({type:"setCrop",payload:u})},l=u=>{e.dispatch({type:"setFocal",payload:u})},s=()=>{e.cropState.cropping?e.dispatch({type:"completeCrop"}):e.dispatch({type:"startCrop"})};return Ye.default.createElement("div",{className:"visual"},Ye.default.createElement(ji,{cropState:e.cropState,image:e.cropState.image,setAspect:i,toggleCrop:s,toggleFocal:()=>e.dispatch({type:"toggleFocal"})}),Ye.default.createElement("div",{className:"image-container",ref:t},!e.croppedImage&&Ye.default.createElement("div",{className:"loading"},"Loading image\u2026"),e.croppedImage&&r&&Ye.default.createElement(Ai,{cropState:e.cropState,containerSize:r,croppedImage:e.croppedImage,focalPoint:wy(e.cropState),setCrop:a,setFocal:l})))}on.propTypes={croppedImage:Ii.default.string,cropState:Ii.default.object,dispatch:Ii.default.func};var ye=P(H()),gt=P(J());function Mi(e){let{alternative:t,caption:r,image:n,locale:o,locales:i}=e,a=s=>{s.preventDefault(),mt(`[image:${n.id}]`),Fe.dispatch({type:"NOTICE",message:"Embed code copied to clipboard"})},l=s=>{e.setLocale(s.target.value)};return ye.default.createElement("form",null,ye.default.createElement("div",{className:"field embed-code"},ye.default.createElement("label",null,"Embed code"),ye.default.createElement("input",{type:"text",value:`[image:${n.id}]`,disabled:!0}),Qn()&&ye.default.createElement("button",{onClick:a},"Copy")),i&&Object.keys(i).length>1&&ye.default.createElement("div",{className:"field"},ye.default.createElement("label",null,"Locale"),ye.default.createElement("select",{name:"locale",value:o,onChange:l},Object.keys(i).map(s=>ye.default.createElement("option",{key:`locale-${s}`,value:s},i[s])))),ye.default.createElement("div",{className:"field "+(t[o]?"":"field-with-warning")},ye.default.createElement("label",null,"Alternative text"),ye.default.createElement("span",{className:"description"},"For visually impaired users and search engines."),ye.default.createElement("textarea",{className:"alternative",value:t[o]||"",onChange:s=>e.updateLocalization("alternative",s.target.value)})),e.showCaption&&ye.default.createElement("div",{className:"field"},ye.default.createElement("label",null,"Caption"),ye.default.createElement("textarea",{onChange:s=>e.updateLocalization("caption",s.target.value),value:r[o]||"",className:"caption"})),ye.default.createElement("div",{className:"buttons"},ye.default.createElement("button",{onClick:e.save},"Save"),ye.default.createElement("button",{onClick:()=>Le.dispatch({type:"CLOSE"})},"Cancel")))}Mi.propTypes={alternative:gt.default.object,caption:gt.default.object,image:gt.default.object,locale:gt.default.string,locales:gt.default.object,setLocale:gt.default.func,save:gt.default.func,showCaption:gt.default.bool,updateLocalization:gt.default.func};function Li(e){let[t,r,n]=oo(e.image),[o,i]=(0,yr.useState)(e.locale),[a,l]=(0,yr.useState)({caption:e.image.caption||{},alternative:e.image.alternative||{}}),s=(p,m)=>{l(re(F({},a),{[p]:re(F({},a[p]),{[o]:m})}))},u=p=>{p.preventDefault(),p.stopPropagation();let m=F(F({},a),Pi(t));Hr(`/admin/images/${e.image.id}`,{image:m}),e.onUpdate&&e.onUpdate(m,n),Le.dispatch({type:"CLOSE"})};return yr.default.createElement("div",{className:"image-editor"},yr.default.createElement(on,{croppedImage:n,cropState:t,dispatch:r}),!t.cropping&&yr.default.createElement(Mi,{alternative:a.alternative,caption:a.caption,image:e.image,locale:o,locales:e.locales,setLocale:i,save:u,showCaption:e.caption,updateLocalization:s}))}Li.propTypes={image:an.default.object,locale:an.default.string,locales:an.default.object,caption:an.default.bool,onUpdate:an.default.func};function zt(e){let[t,r]=(0,Ot.useState)(e.image),[n,o]=(0,Ot.useState)(e.src),i=()=>{let u=t.crop_width||t.real_width,p=t.crop_height||t.real_height;return Math.round(p/u*e.width)},a=(u,p)=>{let m=F(F({},t),u);o(p),r(m),e.onUpdate&&e.onUpdate(m,p)},l=u=>{u.preventDefault(),Le.dispatch({type:"OPEN",payload:Ot.default.createElement(Li,{image:t,caption:e.caption,locale:e.locale,locales:e.locales,onUpdate:a})})},s=!t.alternative[e.locale];return Ot.default.createElement("div",{className:"editable-image"},s&&Ot.default.createElement("span",{className:"alt-warning",title:"Alternative text is missing"},Ot.default.createElement("i",{className:"fa fa-exclamation-triangle icon"})),Ot.default.createElement("img",{src:n,width:e.width,height:i(),onClick:l}))}zt.propTypes={image:Ut.default.object,src:Ut.default.string,caption:Ut.default.bool,locale:Ut.default.string,locales:Ut.default.object,width:Ut.default.number,onUpdate:Ut.default.func};var ie=P(H()),Bt=P(J());var zl=P(H()),ln=P(J());function Fi(e){let{draggable:t,dragState:r,container:n}=e;if(t==="Files")return"";{let o=n.current.getBoundingClientRect(),i=r.x-(o.x||o.left),a=r.y-(o.y||o.top),l={transform:`translate3d(${i}px, ${a}px, 0)`};return zl.default.createElement("div",{className:"drag-image",style:l},t.record.image&&zl.default.createElement("img",{src:t.record.src||t.record.image.thumbnail_url}))}}Fi.propTypes={draggable:ln.default.oneOfType([ln.default.object,ln.default.string]),dragState:ln.default.object,container:ln.default.object};var Bl=P(H());function Vl(){return Bl.default.createElement("div",{className:"grid-image",key:"file-placeholder"},Bl.default.createElement("div",{className:"file-placeholder"}))}var Ce=P(H()),Xe=P(J());var sn=P(H()),Nd=P(J());function Ri(e){return e.src?sn.default.createElement("div",{className:"temp-image"},sn.default.createElement("img",{src:e.src}),sn.default.createElement("span",null,"Uploading...")):sn.default.createElement("div",{className:"file-placeholder"},sn.default.createElement("span",null,"Uploading..."))}Ri.propTypes={src:Nd.default.string};function Ui(e){let{attributeName:t,draggable:r}=e,n=r.record,o=n.image,[i,a]=(0,Ce.useState)(n.src||null),l=Xr(r,e.startDrag);(0,Ce.useEffect)(()=>{if(n.file){let m=new FileReader;m.onload=()=>a(m.result),m.readAsDataURL(n.file)}},[]);let s=m=>{m.preventDefault(),mt(`[image:${o.id}]`),Fe.dispatch({type:"NOTICE",message:"Embed code copied to clipboard"})},u=m=>{m.preventDefault(),e.deleteImage&&e.deleteImage()},p=["grid-image"];return e.placeholder&&p.push("placeholder"),n.file&&p.push("uploading"),Ce.default.createElement("div",F({className:p.join(" ")},l),Ce.default.createElement("input",{name:`${t}[id]`,type:"hidden",value:n.id||""}),Ce.default.createElement("input",{name:`${t}[image_id]`,type:"hidden",value:o&&o.id||""}),Ce.default.createElement("input",{name:`${t}[position]`,type:"hidden",value:e.position}),e.enablePrimary&&Ce.default.createElement("input",{name:`${t}[primary]`,type:"hidden",value:e.primary}),!o&&Ce.default.createElement(Ri,{src:i}),o&&Ce.default.createElement(Ce.default.Fragment,null,Ce.default.createElement(zt,{image:o,src:i||o.thumbnail_url,width:250,caption:!0,locale:e.locale,locales:e.locales,onUpdate:e.onUpdate}),Ce.default.createElement("div",{className:"actions"},e.showEmbed&&Ce.default.createElement("button",{onClick:s},"Embed"),e.deleteImage&&Ce.default.createElement("button",{onClick:u},"Remove"))))}Ui.propTypes={draggable:Xe.default.object,deleteImage:Xe.default.func,startDrag:Xe.default.func,locale:Xe.default.string,locales:Xe.default.object,onUpdate:Xe.default.func,attributeName:Xe.default.string,placeholder:Xe.default.bool,enablePrimary:Xe.default.bool,showEmbed:Xe.default.bool,primary:Xe.default.bool,position:Xe.default.number};function Wl(e){let t=["image/gif","image/jpeg","image/pjpeg","image/png","image/tiff"];return e.filter(r=>t.indexOf(r.type)!==-1)}function Pd(e,t,r){let[n,...o]=eo(e,r),i=[...o,...eo(t,r)];return r.dragging&&[n,...i].indexOf(r.dragging)===-1&&(r.y<t.ref.current.getBoundingClientRect().top?i=[r.dragging,...i]:i.push(r.dragging)),[n,i]}function xy(e){let t=e.enablePrimary?e.records.filter(r=>r.primary).slice(0,1):[];return[t,e.records.filter(r=>t.indexOf(r)===-1)]}function un(e){let[t,r]=xy(e),n=mr(t),o=mr(r),[i,a]=(0,ie.useState)([]),l=(0,ie.useRef)(),s=T=>{n.dispatch(T),o.dispatch(T)},u=(T,D)=>{let[Q,k]=Pd(n,o,T);if(n.dispatch({type:"reorder",payload:Q?[Q]:[]}),o.dispatch({type:"reorder",payload:k}),D){let C=Wl(D).map(M=>x(M));s({type:"insertFiles",payload:C})}},[p,m,h]=Yr([n,o],u),w=T=>[...n.draggables.map(D=>D.record),...o.draggables.map(D=>D.record),...i].indexOf(T)+1,g=T=>`${e.attribute}[${w(T)}]`,x=T=>{let D=Kr({image:null,file:T}),Q=new FormData;return Q.append("image[file]",T),qr("/admin/images.json",Q).then(k=>{k.status==="error"?(Fe.dispatch({type:"ERROR",message:"Error uploading image: "+k.error}),s({type:"remove",payload:D})):s({type:"update",payload:re(F({},D),{record:{image:k}})})}),D},d=T=>D=>{let{record:Q}=T,k=re(F({},T),{record:re(F({},Q),{image:F(F({},Q.image),D)})});s({type:"update",payload:k})},f=T=>()=>{s({type:"remove",payload:T}),T.record.id&&a([...i,T.record])},c=(T,D)=>{let{dragging:Q}=p;return T==="Files"?ie.default.createElement(Vl,{key:"placeholder"}):ie.default.createElement(Ui,{key:T.handle,draggable:T,locale:e.locale,locales:e.locales,showEmbed:e.showEmbed,startDrag:m,position:w(T.record),primary:D,onUpdate:d(T),enablePrimary:e.enablePrimary,deleteImage:f(T),attributeName:g(T.record),placeholder:Q&&Q==T})},v=T=>{let[D,...Q]=Wl(T).map(k=>x(k));D&&(o.dispatch({type:"prepend",payload:[...n.draggables,...Q]}),n.dispatch({type:"replace",payload:[D]}))},y=T=>{o.dispatch({type:"append",payload:Wl(T).map(D=>x(D))})},I=["image-grid"];e.enablePrimary&&I.push("with-primary-image");let[O,R]=Pd(n,o,p);return ie.default.createElement("div",F({className:I.join(" "),ref:l},h),p.dragging&&ie.default.createElement(Fi,{draggable:p.dragging,dragState:p,container:l}),e.enablePrimary&&ie.default.createElement("div",{className:"primary-image",ref:n.ref},ie.default.createElement("h3",null,"Main image"),O&&ie.default.createElement(ie.default.Fragment,null,c(O,!0),e.primaryAttribute&&ie.default.createElement("input",{type:"hidden",name:e.primaryAttribute,value:O.record&&O.record.image&&O.record.image.id||""})),!O&&ie.default.createElement("div",{className:"drop-target"},ie.default.createElement(ut,{multiple:!0,type:"image",multiline:!0,callback:v}))),ie.default.createElement("div",{className:"grid",ref:o.ref},ie.default.createElement("h3",null,e.enablePrimary?"More images":"Images"),ie.default.createElement("div",{className:"drop-target"},ie.default.createElement(ut,{multiple:!0,type:"image",callback:y})),ie.default.createElement("div",{className:"images"},R.map(T=>c(T,!1)))),ie.default.createElement("div",{className:"deleted"},i.map(T=>ie.default.createElement("span",{className:"deleted-image",key:T.id},ie.default.createElement("input",{name:`${g(T)}[id]`,type:"hidden",value:T.id}),ie.default.createElement("input",{name:`${g(T)}[attachment_id]`,type:"hidden",value:T.image&&T.image.id||""}),ie.default.createElement("input",{name:`${g(T)}[_destroy]`,type:"hidden",value:!0})))))}un.propTypes={attribute:Bt.default.string,locale:Bt.default.string,locales:Bt.default.object,records:Bt.default.array,enablePrimary:Bt.default.bool,primaryAttribute:Bt.default.string,showEmbed:Bt.default.bool};var Re=P(H()),_t=P(J());function by(e){var t=[];if(e.items)for(let r=0;r<e.items.length;r++)e.items[r].kind=="file"&&t.push(e.items[r].getAsFile());else for(let r=0;r<e.files.length;r++)t.push(e.files[r]);return t}function zi(e){let[t,r]=(0,Re.useState)(!1),[n,o]=(0,Re.useState)(!1),[i,a]=(0,Re.useState)(e.image),[l,s]=(0,Re.useState)(e.src),u=f=>{f.preventDefault(),o(!0)},p=()=>{o(!1)},m=f=>{if(f.dataTransfer.items)for(var c=0;c<f.dataTransfer.items.length;c++)f.dataTransfer.items.remove(c);else f.dataTransfer.clearData();o(!1)},h=f=>{let c=by(f.dataTransfer);f.preventDefault(),c.length>0&&x(c[0])},w=f=>{f.preventDefault(),a(null),s(null)},g=f=>{f.length>0&&x(f[0])},x=f=>{if(["image/gif","image/jpeg","image/pjpeg","image/png","image/tiff"].indexOf(f.type)==-1){alert("Invalid file type, only images in JPEG, PNG or GIF formats are supported");return}let v=e.locale,y=e.locales?Object.keys(e.locales):[v],I=new FormData;a(null),s(null),o(!1),r(!0),I.append("image[file]",f),y.forEach(O=>{I.append(`image[alternative][${O}]`,e.alternative||"")}),qr("/admin/images.json",I).then(O=>{r(!1),O.status==="error"?Fe.dispatch({type:"ERROR",message:"Error uploading image: "+O.error}):(s(O.thumbnail_url),a(O))})},d=["image-uploader"];return t?d.push("uploading"):n&&d.push("dragover"),Re.default.createElement("div",{className:d.join(" "),onDragOver:u,onDragLeave:p,onDragEnd:m,onDrop:h},Re.default.createElement("input",{type:"hidden",name:e.attr,value:i?i.id:""}),i&&Re.default.createElement("div",{className:"image"},Re.default.createElement(zt,{image:i,src:l,width:e.width,caption:e.caption,locale:e.locale,locales:e.locales})),Re.default.createElement("div",{className:"ui-wrapper"},t&&Re.default.createElement("div",{className:"ui"},"Uploading image..."),!t&&Re.default.createElement("div",{className:"ui"},Re.default.createElement(ut,{type:"image",multiline:!0,callback:g}),i&&Re.default.createElement("a",{className:"delete remove-image",href:"#",onClick:w},"Remove image"))))}zi.propTypes={locale:_t.default.string,locales:_t.default.object,image:_t.default.object,src:_t.default.string,width:_t.default.number,caption:_t.default.bool,attr:_t.default.string,alternative:_t.default.string};var cn=P(H());var Bi=class extends cn.default.Component{constructor(t){super(t);this.state={component:null},this.store=Le,this.closeModal=this.closeModal.bind(this),this.handleChange=this.handleChange.bind(this),this.handleKeypress=this.handleKeypress.bind(this)}componentDidMount(){this.unsubscribe=this.store.subscribe(this.handleChange),window.addEventListener("keypress",this.handleKeypress)}componentWillUnmount(){this.unsubscribe(),window.removeEventListener("keypress",this.handleKeypress)}closeModal(t){t.stopPropagation(),t.preventDefault(),Le.dispatch({type:"CLOSE"})}handleChange(){this.setState(F({},this.store.getState()))}handleKeypress(t){this.state.component&&(t.key=="Escape"||t.keyCode===27)&&this.closeModal(t)}render(){let t=this.state.component;if(t)document.body.classList.add("modal");else return document.body.classList.remove("modal"),cn.default.createElement("div",{className:"modal-wrapper"});return cn.default.createElement("div",{className:"modal-wrapper open"},cn.default.createElement("div",{className:"background",onClick:this.closeModal}),cn.default.createElement("div",{className:"modal"},t))}};var ct=P(H()),Vi=P(J());var ao=class extends ct.default.Component{constructor(t){super(t);this.state={has_dates:!!t.starts_at,all_day:!!t.all_day},this.toggleAllDay=this.toggleAllDay.bind(this),this.toggleHasDates=this.toggleHasDates.bind(this)}toggleHasDates(){this.setState({has_dates:!this.state.has_dates})}toggleAllDay(){this.setState({all_day:!this.state.all_day})}timeToString(t){return t.toTimeString().slice(0,5)}render(){return ct.default.createElement("div",{className:"page-dates field"},ct.default.createElement("input",{type:"hidden",name:"page[all_day]",value:this.state.has_dates&&this.state.all_day?"1":"0"}),ct.default.createElement("label",null,"Dates"),ct.default.createElement("div",{className:"toggles"},ct.default.createElement("label",{className:"has-dates-toggle"},ct.default.createElement("input",{type:"checkbox",checked:this.state.has_dates,onChange:this.toggleHasDates}),"Enabled"),ct.default.createElement("label",{className:!this.state.has_dates&&"disabled"},ct.default.createElement("input",{type:"checkbox",disabled:!this.state.has_dates,checked:this.state.all_day,onChange:this.toggleAllDay}),"All day event")),ct.default.createElement(gr,{objectName:"page",startsAt:this.props.starts_at,endsAt:this.props.ends_at,disabled:!this.state.has_dates,disableTime:this.state.all_day}))}};ao.propTypes={starts_at:Vi.default.string,ends_at:Vi.default.string,all_day:Vi.default.bool};var Wi=P(H()),$i=P(J());var lo=class extends Wi.default.Component{render(){return Wi.default.createElement("div",{className:"page-files"},Wi.default.createElement(Gr,{attribute:"page[page_files_attributes]",showEmbed:!0,locale:this.props.locale,locales:this.props.locales,records:this.props.records}))}};lo.propTypes={locale:$i.default.string,locales:$i.default.object,records:$i.default.array};var Hi=P(H()),qi=P(J());var so=class extends Hi.default.Component{render(){return Hi.default.createElement("div",{className:"page-images"},Hi.default.createElement(un,{attribute:"page[page_images_attributes]",primaryAttribute:"page[image_id]",enablePrimary:!0,showEmbed:!0,locale:this.props.locale,locales:this.props.locales,records:this.props.records}))}};so.propTypes={locale:qi.default.string,locales:qi.default.object,records:qi.default.array};var $l=P(H()),Yi=P(J());var wr=P(H()),Wt=P(J());var ne=P(H()),Nt=P(J()),Vt=class extends ne.default.Component{constructor(t){super(t);this.state={newName:t.index.node.name},this.innerRef=ne.default.createRef()}permitted(t){return this.node().permissions&&this.node().permissions.indexOf(t)!=-1}actions(){let t=this.node().status!=2?"Publish":"Hide",r=this.node().status!=2?"check":"ban";return this.node().editing?null:this.props.index.id===1?ne.default.createElement("span",{className:"actions"},ne.default.createElement("button",{type:"button",className:"add",onClick:()=>this.props.addChild(this.props.index)},ne.default.createElement("i",{className:"fa fa-plus icon"}),"Add child")):ne.default.createElement("span",{className:"actions"},this.permitted("edit")&&this.button(t,{className:"toggle-status",icon:r,onClick:()=>this.toggleStatus()}),this.permitted("edit")&&this.button("Rename",{className:"edit",icon:"pencil",onClick:()=>this.edit()}),this.permitted("edit")&&this.button("Delete",{className:"delete",icon:"trash",onClick:()=>this.deletePage()}),this.permitted("create")&&this.button("Add child",{className:"add",icon:"plus",onClick:()=>this.props.addChild(this.props.index)}))}addButton(){let t=this,r=this.node(),n=function(){t.props.addChild&&t.props.addChild(t.props.index)};if(!r.collapsed&&this.permitted("create")&&(r.root||this.visibleChildren().length>0))return this.button("Add page here",{className:"add add-inline",icon:"plus",onClick:n})}button(t,r){let n="fa fa-"+r.icon+" icon";return ne.default.createElement("button",{type:"button",className:r.className,onClick:r.onClick},ne.default.createElement("i",{className:n}),t)}childNodes(){let t=this.props.index,r=this.props.tree,n=this.props.dragging;if(t.children&&t.children.length&&!t.node.collapsed){var o={};return t.node.collapsed&&(o.display="none"),o.paddingLeft=this.props.paddingLeft+"px",ne.default.createElement("div",{className:"children",style:o},t.children.map(i=>{var a=r.getIndex(i);return ne.default.createElement(Vt,{tree:r,index:a,key:a.id,dragging:n,paddingLeft:this.props.paddingLeft,addChild:this.props.addChild,onCollapse:this.props.onCollapse,onDragStart:this.props.onDragStart,updatePage:this.props.updatePage})}))}return null}collapseArrow(){let t=this.props.index,r=this;if(!t.parent)return null;let n=function(i){i.stopPropagation();let a=r.props.index.id;r.props.onCollapse&&r.props.onCollapse(a)};if(this.visibleChildren().length>0){let i=t.node.collapsed;var o=null;return i?o="collapse fa fa-caret-right":o="collapse fa fa-caret-down",ne.default.createElement("i",{className:o,onMouseDown:function(a){a.stopPropagation()},onClick:n})}return null}collapsedLabel(){if(this.node().collapsed&&this.node().children&&this.node().children.length>0){let t=this.node().children.length==1?"item":"items";return ne.default.createElement("span",{className:"collapsed-label"},"(",this.node().children.length," ",t,")")}else return null}deletePage(){confirm("Are you sure you want to delete this page?")&&this.updatePage({status:4})}edit(){this.updatePage({editing:!0})}editUrl(t){return`/admin/${t.locale}/pages/${t.param}/edit`}node(){return this.props.index.node}pageName(){return this.node().name?this.node().name:ne.default.createElement("i",{className:"untitled"},"Untitled")}render(){let t=this,r=this.props,n=r.index,o=r.dragging,i=this.node().editing;var a="node",l=i?this.renderEditNode():this.renderNode();n.id===o&&(a="node placeholder");let s=function(u){t.permitted("edit")&&!i&&r.onDragStart&&r.onDragStart(r.index.id,t.innerRef.current,u)};return this.node().status!=4?ne.default.createElement("div",{className:a},ne.default.createElement("div",{className:"inner",ref:this.innerRef,onMouseDown:s},this.collapseArrow(),l),this.childNodes(),this.addButton()):null}renderEditNode(){let t=this,r=function(i){t.setState({newName:i.target.value})},n=function(i){i.preventDefault(),t.updatePage({name:t.state.newName,editing:!1})},o=function(){t.setState({newName:t.node().name}),t.updatePage({editing:!1})};return ne.default.createElement("div",{className:"page edit"},ne.default.createElement("i",{className:"fa fa-file-o icon"}),ne.default.createElement("form",{onSubmit:n},ne.default.createElement("input",{type:"text",value:this.state.newName,autoFocus:!0,onChange:r}),ne.default.createElement("button",{className:"save",type:"submit"},ne.default.createElement("i",{className:"fa fa-cloud icon"}),"Save"),this.button("Cancel",{className:"cancel",icon:"ban",onClick:o})))}renderNode(){let r=this.props.index.node;var n="",o=ne.default.createElement("span",{className:"name"},this.pageName()),i="page",a="fa fa-file-o icon";return typeof r.status!="undefined"&&(i=`page status-${this.node().status}`),r.id&&r.locale&&this.permitted("edit")&&(o=ne.default.createElement("a",{href:this.editUrl(r),className:"name"},this.pageName())),r.id&&r.starts_at&&(n=ne.default.createElement("span",{className:"date"},r.starts_at)),r.news_page?a="fa fa-newspaper-o icon":r.pinned&&(a="fa fa-flag-o icon"),ne.default.createElement("div",{className:i},ne.default.createElement("i",{className:a}),o,n,this.statusLabel(),this.collapsedLabel(),this.actions())}statusLabel(){let t=["Draft","Reviewed","Published","Hidden","Deleted"];return typeof this.node().status!="undefined"&&this.node().status!=2?ne.default.createElement("span",{className:"status-label"},"(",t[this.node().status],")"):""}toggleStatus(){this.node().status!=2?this.updatePage({status:2}):this.updatePage({status:3})}updatePage(t){if(this.props.updatePage)return this.props.updatePage(this.props.index,t)}visibleChildren(){return this.node().children?this.node().children.filter(t=>t.status!=4):[]}};Vt.propTypes={addChild:Nt.default.func,dragging:Nt.default.number,index:Nt.default.object,onCollapse:Nt.default.func,onDragStart:Nt.default.func,paddingLeft:Nt.default.number,tree:Nt.default.object,updatePage:Nt.default.func};var fn=class extends wr.default.Component{constructor(t){super(t);this.state={dragging:this.initDragging()}}initDragging(){return{id:null,x:null,y:null,w:null,h:null,scrollTop:null,scrollLeft:null}}getDraggingDom(){var t=this.props.tree,r=this.state.dragging;if(r&&r.id){var n=t.getIndex(r.id),o={top:r.y,left:r.x,width:r.w};return wr.default.createElement("div",{className:"draggable",style:o},wr.default.createElement(Vt,{tree:t,index:n,paddingLeft:this.props.paddingLeft}))}return null}render(){var t=this.props.tree,r=this.state.dragging;if(t){var n=t.getIndex(1);return wr.default.createElement("div",{className:"page-tree"},this.getDraggingDom(),wr.default.createElement(Vt,{tree:t,index:n,key:n.id,paddingLeft:this.props.paddingLeft,addChild:o=>this.addChild(o),onDragStart:(o,i,a)=>this.dragStart(o,i,a),onCollapse:o=>this.toggleCollapse(o),updatePage:(o,i)=>this.updatePage(o,i),dragging:r&&r.id}))}else return wr.default.createElement("div",{className:"page-tree"},this.getDraggingDom())}addChild(t){let r={name:"",status:0,editing:!0,children:[],published_at:new Date,pinned:!1,locale:t.node.locale,parent_page_id:t.node.id};this.props.addChild(t.id,r)}prevAddButtonCount(t,r){let n=0,o=[],i=t.getIndex(r.parent);for(;i;)o.push(i),i=t.getIndex(i.parent);for(i=r,i=t.getNodeByTop(r.top-1);i;)o.indexOf(i)==-1&&!i.node.collapsed&&i.node.children.filter(a=>a.status!=4).length>0&&(n+=1),i=t.getNodeByTop(i.top-1);return n}scrollOffset(){let t=this.state.dragging;return{top:document.body.scrollTop-t.scrollTop,left:document.body.scrollLeft-t.scrollLeft}}drag(t){if(this._start){var r=Math.abs(t.clientX-this._offsetX)+Math.abs(t.clientY-this._offsetY);if(r>=15)this.setState({dragging:this.dragging}),this._start=!1;else return null}var n=this.props.tree,o=this.state.dragging,i=this.props.paddingLeft,a=null,l=n.getIndex(o.id),s=l.node.collapsed,u=this._startX,p=this._startY,m=this._offsetX,h=this._offsetY,w={x:u+t.clientX-m+this.scrollOffset().left,y:p+t.clientY-h+this.scrollOffset().top};o.x=w.x,o.y=w.y;var g=o.x-i/2-(l.left-2)*i,x=o.y-o.h/2-(l.top-2+this.prevAddButtonCount(n,l))*o.h;if(g<0)l.parent&&!l.next&&(a=n.move(l.id,l.parent,"after"));else if(g>i&&l.prev){var d=n.getIndex(l.prev);!d.node.leaf&&!d.node.collapsed&&(a=n.move(l.id,l.prev,"append"))}if(a&&(l=a,a.node.collapsed=s,o.id=a.id),x<0-o.h*.5){var f=n.getNodeByTop(l.top-1);a=n.move(l.id,f.id,"before")}else if(x>o.h*1.5){let c=l.next?n.getIndex(l.next):n.getNodeByTop(l.top+l.height);c&&c.parent!==l.id&&(c.children&&c.children.length&&!c.node.collapsed?a=n.move(l.id,c.id,"prepend"):a=n.move(l.id,c.id,"after"))}a&&(a.node.collapsed=s,o.id=a.id),this.setState({dragging:o})}dragStart(t,r,n){if(n.button===0){this.dragging={id:t,w:r.offsetWidth,h:r.offsetHeight,x:r.offsetLeft,y:r.offsetTop,scrollTop:document.body.scrollTop,scrollLeft:document.body.scrollLeft},this._startX=r.offsetLeft,this._startY=r.offsetTop,this._offsetX=n.clientX,this._offsetY=n.clientY,this._start=!0;var o=this;this._dragListener=i=>o.drag(i),this._dragEndListener=()=>o.dragEnd(),window.addEventListener("mousemove",this._dragListener),window.addEventListener("mouseup",this._dragEndListener)}}dragEnd(){this._start||(this.props.updateTree(this.props.tree),this.props.movedPage(this.state.dragging.id)),this.setState({dragging:this.initDragging()}),window.removeEventListener("mousemove",this._dragListener),window.removeEventListener("mouseup",this._dragEndListener)}toggleCollapse(t){this.props.toggleCollapsed(t)}updatePage(t,r){this.props.updatePage(t.id,r)}};fn.defaultProps={paddingLeft:15};fn.propTypes={tree:Wt.default.object,addChild:Wt.default.func,movedPage:Wt.default.func,toggleCollapsed:Wt.default.func,paddingLeft:Wt.default.number,updatePage:Wt.default.func,updateTree:Wt.default.func};var Ki=class{constructor(t){this.cnt=1,this.obj=t||{children:[]},this.indexes={},this.build(this.obj)}build(t){var r=this.indexes,n=this.cnt,o=this,i={id:n,node:t};r[this.cnt+""]=i,this.cnt++,t.children&&t.children.length&&a(t.children,i);function a(l,s){var u=[];l.forEach(function(p){var m={};m.id=o.cnt,m.node=p,s&&(m.parent=s.id),r[o.cnt+""]=m,u.push(o.cnt),o.cnt++,p.children&&p.children.length&&a(p.children,m)}),s.children=u,u.forEach(function(p,m){var h=r[p+""];m>0&&(h.prev=u[m-1]),m<u.length-1&&(h.next=u[m+1])})}return i}getIndex(t){var r=this.indexes[t+""];if(r)return r}removeIndex(t){var r=this;n(t);function n(o){delete r.indexes[o.id+""],o.children&&o.children.length&&o.children.forEach(function(i){n(r.getIndex(i))})}}get(t){var r=this.getIndex(t);return r&&r.node?r.node:null}remove(t){var r=this.getIndex(t),n=this.get(t),o=this.getIndex(r.parent),i=this.get(r.parent);return i.children.splice(i.children.indexOf(n),1),o.children.splice(o.children.indexOf(t),1),this.removeIndex(r),this.updateChildren(o.children),n}updateChildren(t){t.forEach(function(r,n){var o=this.getIndex(r);o.prev=o.next=null,n>0&&(o.prev=t[n-1]),n<t.length-1&&(o.next=t[n+1])}.bind(this))}insert(t,r,n){var o=this.getIndex(r),i=this.get(r),a=this.build(t);return a.parent=r,i.children=i.children||[],o.children=o.children||[],i.children.splice(n,0,t),o.children.splice(n,0,a.id),this.updateChildren(o.children),o.parent&&this.updateChildren(this.getIndex(o.parent).children),a}insertBefore(t,r){var n=this.getIndex(r),o=n.parent,i=this.getIndex(o).children.indexOf(r);return this.insert(t,o,i)}insertAfter(t,r){var n=this.getIndex(r),o=n.parent,i=this.getIndex(o).children.indexOf(r);return this.insert(t,o,i+1)}prepend(t,r){return this.insert(t,r,0)}append(t,r){var n=this.getIndex(r);return n.children=n.children||[],this.insert(t,r,n.children.length)}updateNodesPosition(){var t=1,r=1,n=this.getIndex(1),o=this;n.top=t++,n.left=r++,n.children&&n.children.length&&i(n.children,n,r,n.node.collapsed);function i(a,l,s,u){var p=1;return a.forEach(function(m){var h=o.getIndex(m);u?(h.top=null,h.left=null):(h.top=t++,h.left=s),h.children&&h.children.length?p+=i(h.children,h,s+1,u||h.node.collapsed):(h.height=1,p+=1)}),l.node.collapsed?l.height=1:l.height=p,l.height}}move(t,r,n){if(!(t===r||r===1)){var o=this.remove(t),i=null;return n==="before"?i=this.insertBefore(o,r):n==="after"?i=this.insertAfter(o,r):n==="prepend"?i=this.prepend(o,r):n==="append"&&(i=this.append(o,r)),this.updateNodesPosition(),i}}getParent(t){var r=this.indexes;if(Object.prototype.hasOwnProperty.call(r,t))return this.getIndex(r[t].parent)}getNodeByTop(t){var r=this.indexes;for(var n in r)if(Object.prototype.hasOwnProperty.call(r,n)&&r[n].top===t)return r[n]}};var uo=class extends $l.default.Component{constructor(t){super(t);this.state={tree:this.buildTree(t.pages)},this.addChild=this.addChild.bind(this),this.movedPage=this.movedPage.bind(this),this.toggleCollapsed=this.toggleCollapsed.bind(this),this.updatePage=this.updatePage.bind(this),this.updateTree=this.updateTree.bind(this)}addChild(t,r){let n=this.state.tree;var o=n.append(r,t);this.reorderChildren(t),this.setCollapsed(t,!1),this.createPage(o,r),this.setState({tree:n})}movedPage(t){let r=this.state.tree,n=r.getIndex(t);this.reorderChildren(n.parent);let o=r.getIndex(n.parent),i=o.children.indexOf(t)+1;this.movePage(n,o,i),this.setState({tree:r})}toggleCollapsed(t){let r=this.state.tree;var n=r.getIndex(t).node;this.setCollapsed(t,!n.collapsed),this.setState({tree:r})}updatePage(t,r){let o=this.state.tree.getIndex(t),i=`/admin/${o.node.locale}/pages/${o.node.id}.json`;this.updateNode(o,r),this.performUpdate(o,i,{page:r})}updateTree(t){this.setState({tree:t})}applyCollapsed(t){let r=(i,a)=>{var l=0;let s=i.getIndex(a.parent);for(;s;)l+=1,s=i.getIndex(s.parent);return l},n=this.collapsedState(),o=function(i){var a=t.getIndex(i),l=a.node;Object.prototype.hasOwnProperty.call(n,l.id)?l.collapsed=n[l.id]:(l.news_page||r(t,a)>1)&&(l.collapsed=!0),a.children&&a.children.length&&a.children.forEach(s=>o(s))};o(1)}collapsedState(){return window&&window.localStorage&&typeof window.localStorage.collapsedPages!="undefined"?JSON.parse(window.localStorage.collapsedPages):{}}createPage(t,r){Uf(`/admin/${t.node.locale}/pages.json`,{page:r}).then(n=>this.updateNode(t,n))}buildTree(t){let r=t.reduce((o,i)=>{let a=i.parent_page_id;return o[a]=[...o[a]||[],i],o},{});t.forEach(o=>o.children=r[o.id]||[]);let n=new Ki({name:"All Pages",locale:this.props.locale,permissions:this.props.permissions,root:!0,children:r[null]});return this.applyCollapsed(n),n.updateNodesPosition(),n}movePage(t,r,n){let o={parent_id:r.node.id,position:n},i=`/admin/${t.node.locale}/pages/${t.node.id}/move.json`;this.performUpdate(t,i,o)}performUpdate(t,r,n){Hr(r,n).then(o=>this.updateNode(t,o))}render(){return $l.default.createElement(fn,{tree:this.state.tree,addChild:this.addChild,movedPage:this.movedPage,toggleCollapsed:this.toggleCollapsed,updatePage:this.updatePage,updateTree:this.updateTree})}reorderChildren(t){let r=this.state.tree;var n=this.state.tree.getIndex(t),o=n.node;!o.news_page||(n.children=n.children.sort(function(i,a){var l=r.getIndex(i).node,s=r.getIndex(a).node;return l.pinned==s.pinned?new Date(s.published_at)-new Date(l.published_at):l.pinned?-1:1}),r.updateNodesPosition())}setCollapsed(t,r){var n=this.state.tree.getIndex(t).node;n.collapsed=r,this.storeCollapsed(t,n.collapsed),this.state.tree.updateNodesPosition()}storeCollapsed(t,r){let n=this.state.tree.getIndex(t).node;var o=this.collapsedState();o[n.id]=r,window.localStorage.collapsedPages=JSON.stringify(o)}updateNode(t,r){for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t.node[n]=r[n]);this.setState({tree:this.state.tree})}};uo.propTypes={pages:Yi.default.array,locale:Yi.default.string,permissions:Yi.default.array};var xr=P(H()),dn=P(J());var Xi=P(H()),Qi=P(J()),co=class extends Xi.default.Component{render(){return Xi.default.createElement("a",{title:this.props.name,className:"button "+this.props.className,onClick:this.props.onClick},Xi.default.createElement("i",{className:"fa fa-"+this.props.className}))}};co.propTypes={className:Qi.default.string,name:Qi.default.string,onClick:Qi.default.func};var br=class extends xr.default.Component{constructor(t){super(t);this.state={value:t.value||"",rows:t.rows||5},this.inputRef=xr.default.createRef(),this.handleChange=this.handleChange.bind(this),this.handleKeyPress=this.handleKeyPress.bind(this),this.getSelection=this.getSelection.bind(this),this.link=this.link.bind(this),this.replaceSelection=this.replaceSelection.bind(this)}actions(){let t=[{name:"bold",className:"bold",hotkey:"b",fn:n=>["<b>",n,"</b>"]},{name:"italic",className:"italic",hotkey:"i",fn:n=>["<i>",n,"</i>"]}],r=[{name:"Heading 2",className:"header h2",fn:n=>["h2. ",n,""]},{name:"Heading 3",className:"header h3",fn:n=>["h3. ",n,""]},{name:"Heading 4",className:"header h4",fn:n=>["h4. ",n,""]},{name:"Blockquote",className:"quote-left",fn:n=>["bq. ",n,""]},{name:"List",className:"list-ul",fn:n=>["",this.strToList(n,"*"),""]},{name:"Ordered list",className:"list-ol",fn:n=>["",this.strToList(n,"#"),""]},{name:"Link",className:"link",fn:this.link},{name:"Email link",className:"envelope",fn:this.emailLink}];return this.props.simple?t:[...t,...r]}applyAction(t){let[r,n,o]=t(this.getSelection());this.replaceSelection(r,n,o)}emailLink(t){var r=prompt("Enter email address","");let n=t.length>0?t:r;return['"',n,`":mailto:${r}`]}getSelection(){let{selectionStart:t,selectionEnd:r,value:n}=this.inputRef.current;return n.substr(t,r-t)}handleChange(t){this.setState({value:t.target.value})}handleKeyPress(t){let r;t.which>=65&&t.which<=90?r=String.fromCharCode(t.keyCode).toLowerCase():t.keyCode===13&&(r="enter");let n={};this.actions().forEach(o=>{o.hotkey&&(n[o.hotkey]=o.fn)}),(t.metaKey||t.ctrlKey)&&Object.prototype.hasOwnProperty.call(n,r)&&(t.preventDefault(),this.applyAction(n[r]))}link(t){let r=t.length>0?t:"Link text";var n=prompt("Enter link URL","");return n?['"',r,`":${this.relativeUrl(n)}`]:["",r,""]}relativeUrl(t){let r=null;if(!t.match(/^https:\/\//)||!document||!document.location)return t;try{r=new URL(t)}catch(n){console.log("Error parsing URL: ",n)}return r&&r.hostname==document.location.hostname&&(document.location.port||"80")==(r.port||"80")?r.pathname:t}render(){let{value:t,rows:r}=this.state,{id:n,name:o}=this.props,i=a=>l=>{l.preventDefault(),this.applyAction(a)};return xr.default.createElement("div",{className:"rich-text-area"},xr.default.createElement("div",{className:"rich-text toolbar"},this.actions().map(a=>xr.default.createElement(co,{key:a.name,name:a.name,className:a.className,onClick:i(a.fn)}))),xr.default.createElement("textarea",{className:"rich",ref:this.inputRef,id:n,name:o,value:t,rows:r,onChange:this.handleChange,onKeyDown:this.handleKeyPress}))}replaceSelection(t,r,n){let o=this.inputRef.current,{selectionStart:i,selectionEnd:a,value:l}=o;o.value=l.substr(0,i)+t+r+n+l.substr(a,l.length),o.focus({preventScroll:!0}),o.setSelectionRange(i+t.length,i+t.length+r.length),this.setState({value:o.value})}strToList(t,r){return t.split(`
17
17
  `).map(n=>r+" "+n).join(`
18
18
  `)}};br.propTypes={id:dn.default.string,name:dn.default.string,value:dn.default.string,rows:dn.default.number,simple:dn.default.bool};var $t=P(H()),ea=P(J());var pn=P(H()),Dd=P(J());function Gi(e){let[t,r]=(0,pn.useState)(""),n=a=>{a.preventDefault(),e.addTag(t),r("")};return pn.default.createElement("div",{className:"add-tag-form"},pn.default.createElement("input",{name:"add-tag",type:"text",className:"add-tag",value:t,onKeyDown:a=>{a.which===13&&n(a)},onChange:a=>{r(a.target.value)},placeholder:"Add tag..."}),pn.default.createElement("button",{onClick:n,disabled:!t},"Add"))}Gi.propTypes={addTag:Dd.default.func};var fo=P(H()),Zi=P(J());function Ji(e){let t=()=>{e.toggleEnabled(e.tag)},r=["tag"];return e.enabled&&r.push("enabled"),fo.default.createElement("span",{className:r.join(" ")},fo.default.createElement("label",{className:"check-box"},fo.default.createElement("input",{type:"checkbox",name:"tag-"+e.tag,value:"1",checked:e.enabled,onChange:t}),fo.default.createElement("span",{className:"name"},e.tag)))}Ji.propTypes={enabled:Zi.default.bool,tag:Zi.default.string,toggleEnabled:Zi.default.func};function Hl(e,t,r){return r.indexOf(e)===t}function ta(e){let[t,r]=(0,$t.useState)(e.tags),[n,o]=(0,$t.useState)(e.enabled),i=[...t,...n].filter(Hl),a=p=>i.filter(m=>m.toLowerCase()==p.toLowerCase())[0]||p,l=p=>n.map(m=>m.toLowerCase()).indexOf(p.toLowerCase())!==-1,s=p=>{let m=a(p);l(m)?o(n.filter(h=>h!==m)):o([...n,m])},u=p=>{let m=a(p);r([...t,m].filter(Hl)),o([...n,m].filter(Hl))};return $t.default.createElement("div",{className:"tag-editor clearfix"},$t.default.createElement("input",{type:"hidden",name:e.name,value:JSON.stringify(n)}),i.map(p=>$t.default.createElement(Ji,{key:p,tag:p,enabled:l(p),toggleEnabled:s})),$t.default.createElement(Gi,{addTag:u}))}ta.propTypes={name:ea.default.string,enabled:ea.default.array,tags:ea.default.array};var ra=P(H()),ql=P(J());var po=class extends ra.default.Component{constructor(t){super(t);this.state={toast:void 0,fadeout:!1},this.store=Fe,this.timer=void 0,this.handleChange=this.handleChange.bind(this)}componentDidMount(){this.unsubscribe=this.store.subscribe(this.handleChange),this.props.error&&this.store.dispatch({type:"ERROR",message:this.props.error}),this.props.notice&&this.store.dispatch({type:"NOTICE",message:this.props.notice})}componentWillUnmount(){this.unsubscribe(),this.timer&&clearTimeout(this.timer)}handleChange(){this.setState({toast:this.store.getState()[0],fadeout:!1}),this.timer||(this.timer=setTimeout(()=>{this.setState({fadeout:!0}),this.timer=setTimeout(()=>{this.timer=void 0,this.setState({fadeout:!1}),this.store.dispatch({type:"NEXT"})},500)},4e3))}render(){let t=this.state.toast,r=["toast"];return t&&(r.push(t.type),this.state.fadeout&&r.push("fadeout")),ra.default.createElement("div",{className:"toast-wrapper"},t&&ra.default.createElement("div",{className:r.join(" ")},t.message))}};po.propTypes={notice:ql.default.string,error:ql.default.string};var oa=class extends kt{static get targets(){return["form"]}preview(){let t=this.formTarget,r=t.action,n=t.target;t.target="_blank",t.action=t.dataset.previewUrl,t.submit(),t.action=r,t.target=n}};var ia=class extends kt{static get targets(){return["tab","link"]}connect(){let t=this.tabNames();if(t.length>0){let r=null,n=/#(.*)$/;if(document.location.toString().match(n)){let o=document.location.toString().match(n)[1];t.indexOf(o)!==-1&&(r=o)}this.showTab(r||t[0])}window.addEventListener("popstate",this.stateHandler.bind(this))}disconnect(){window.removeEventListener("popstate",this.stateHandler.bind(this))}stateHandler(t){t.state&&t.state.tabId&&this.showTab(t.state.tabId)}changeTab(t){t.preventDefault();let r=t.target.dataset.tab;this.showTab(r),history.pushState({tabId:r},"",`${window.location.pathname}#${r}`)}showTab(t){this.linkTargets.forEach(r=>{r.dataset.tab==t?r.classList.add("current"):r.classList.remove("current")}),this.tabTargets.forEach(r=>{r.dataset.tab==t?r.classList.remove("hidden"):r.classList.add("hidden")})}tabNames(){return this.linkTargets.map(t=>t.dataset.tab)}};var aa=class extends kt{static get targets(){return["tab"]}connect(){this.tabTargets.length>0&&this.showTab(this.tabTargets[0].dataset.tab)}changeTab(t){t.preventDefault(),this.showTab(t.target.dataset.tab)}showTab(t){this.tabTargets.forEach(r=>{r.dataset.tab==t?r.classList.remove("hidden"):r.classList.add("hidden")})}};var la=class extends kt{static get targets(){return["advancedOptions","autoPublishNotice","published","publishedDate"]}connect(){this.checkAutoPublish(),this.checkPublishedDate()}checkAutoPublish(){this.publishedDate()>new Date?this.show(this.autoPublishNoticeTarget):this.hide(this.autoPublishNoticeTarget)}checkPublishedDate(){this.publishedTarget.value==2?this.show(this.publishedDateTarget):this.hide(this.publishedDateTarget)}publishedDate(){let t=r=>this.publishedDateTarget.getElementsByClassName(r)[0].value;return new Date(t("year"),t("month")-1,t("day"),t("hour"),t("minute"))}show(t){t.classList.add("show")}hide(t){t.classList.remove("show")}toggle(t){t.classList.contains("show")?this.hide(t):this.show(t)}toggleAdvancedOptions(t){t.preventDefault(),this.toggle(this.advancedOptionsTarget)}};var Dm=P(H()),Am=P(nc());var oc=[],_m=()=>{if(["interactive","complete"].indexOf(document.readyState)>-1)for(;oc.length>0;)oc.shift()()},Nm=class{constructor(){document.onreadystatechange=_m}ready(t){oc.push(t),_m()}},Pm=new Nm;var jm=class{apply(){document.querySelectorAll("textarea.rich").forEach(r=>{this.enhance(r)})}enhance(t){let r=document.createElement("div");t.parentNode.appendChild(r),Am.default.render(Dm.default.createElement(br,{value:t.value,name:t.name,rows:t.rows,id:t.id}),r),t.parentNode.removeChild(t)}start(){Pm.ready(()=>{this.apply()})}},Im=new jm;Ng();function Hw(e,t){window[e]=t}function xc(){Pg.default.start();for(var e in na)Hw(e,na[e]);Im.start();let t=Pl.start();t.register("edit-page",oa),t.register("main",ia),t.register("login",aa),t.register("page-options",la)}xc();})();
19
19
  /*
@@ -109,7 +109,7 @@ module PagesCore
109
109
  def redirect_page(page)
110
110
  return false unless page.redirects?
111
111
 
112
- redirect_to(page.redirect_path(locale: locale))
112
+ redirect_to(page.redirect_path(locale: locale), allow_other_host: true)
113
113
  end
114
114
 
115
115
  def require_page
@@ -90,7 +90,7 @@ Form.propTypes = {
90
90
  caption: PropTypes.object,
91
91
  image: PropTypes.object,
92
92
  locale: PropTypes.string,
93
- locales: PropTypes.array,
93
+ locales: PropTypes.object,
94
94
  setLocale: PropTypes.func,
95
95
  save: PropTypes.func,
96
96
  showCaption: PropTypes.bool,
@@ -249,7 +249,7 @@ export default function ImageGrid(props) {
249
249
  ImageGrid.propTypes = {
250
250
  attribute: PropTypes.string,
251
251
  locale: PropTypes.string,
252
- locales: PropTypes.array,
252
+ locales: PropTypes.object,
253
253
  records: PropTypes.array,
254
254
  enablePrimary: PropTypes.bool,
255
255
  primaryAttribute: PropTypes.string,
@@ -67,7 +67,7 @@ class Attachment < ApplicationRecord
67
67
  # Includes a timestamp fingerprint in the URL param, so
68
68
  # that rendered images can be cached indefinitely.
69
69
  def to_param
70
- [id, updated_at.utc.to_s(cache_timestamp_format)].join("-")
70
+ [id, updated_at.utc.to_formatted_s(cache_timestamp_format)].join("-")
71
71
  end
72
72
 
73
73
  private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pages_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.1
4
+ version: 3.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inge Jørgensen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-14 00:00:00.000000000 Z
11
+ date: 2022-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara