diff --git a/content/themes/casper/package.json b/content/themes/casper/package.json index d21b47e865..4e9149f4bb 100644 --- a/content/themes/casper/package.json +++ b/content/themes/casper/package.json @@ -2,7 +2,7 @@ "name": "casper", "description": "A clean, minimal default theme for the Ghost publishing platform", "demo": "https://demo.ghost.io", - "version": "3.0.10", + "version": "3.0.11", "engines": { "ghost": ">=3.0.0", "ghost-api": "v3" diff --git a/content/themes/casper/renovate.json b/content/themes/casper/renovate.json index 2b1e3647e4..de57c47ba0 100644 --- a/content/themes/casper/renovate.json +++ b/content/themes/casper/renovate.json @@ -1,8 +1,5 @@ { "extends": [ "@tryghost:theme" - ], - "node": { - "supportPolicy": ["lts_latest"] - } + ] } diff --git a/core/built/assets/ghost.min-c66c738df4f9e55cf56765c969aef2d3.js b/core/built/assets/ghost.min-c66c738df4f9e55cf56765c969aef2d3.js deleted file mode 100644 index bb4e1463d0..0000000000 --- a/core/built/assets/ghost.min-c66c738df4f9e55cf56765c969aef2d3.js +++ /dev/null @@ -1,2227 +0,0 @@ -"use strict" -define("ghost-admin/adapters/-json-api",["exports","@ember-data/adapter/json-api"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/adapters/application",["exports","ghost-admin/adapters/embedded-relation-adapter"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({shouldBackgroundReloadRecord:()=>!1}) -e.default=n})),define("ghost-admin/adapters/base",["exports","ember-ajax/mixins/ajax-support","ember-simple-auth/mixins/data-adapter-mixin","@ember-data/adapter/rest","ghost-admin/utils/ghost-paths"],(function(e,t,n,s,a){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var l=s.default.extend(n.default,t.default,{host:window.location.origin,namespace:(0,a.default)().apiRoot.slice(1),session:Ember.inject.service(),shouldBackgroundReloadRecord:()=>!1,query(e,t,n){let s -return n.id&&(s=n.id,delete n.id),this.ajax(this.buildURL(t.modelName,s),"GET",{data:n})},buildURL(){let e=this._super(...arguments) -return"/"!==e.slice(-1)&&(e+="/"),e}}) -e.default=l})),define("ghost-admin/adapters/email",["exports","ghost-admin/adapters/application"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({retry(e){let t="".concat(this.buildURL("email",e.get("id")),"retry/") -return this.ajax(t,"PUT",{data:{}}).then(t=>(this.store.pushPayload(t),e))}}) -e.default=n})),define("ghost-admin/adapters/embedded-relation-adapter",["exports","ghost-admin/adapters/base"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({find(e,t,n,s){return this.ajax(this.buildIncludeURL(e,t.modelName,n,s,"find"),"GET")},findRecord(e,t,n,s){return this.ajax(this.buildIncludeURL(e,t.modelName,n,s,"findRecord"),"GET")},findAll(e,t,n){let s,a -return n&&(s={since:n}),a=this.buildIncludeURL(e,t.modelName,null,null,"findAll"),this.ajax(a,"GET",{data:s})},query(e,t,n){return this._super(e,t,this.buildQuery(e,t.modelName,n))},queryRecord(e,t,n){return this._super(e,t,this.buildQuery(e,t.modelName,n))},createRecord(e,t,n){return this.saveRecord(e,t,n,{method:"POST"},"createRecord")},updateRecord(e,t,n){let s={method:"PUT",id:Ember.get(n,"id")} -return this.saveRecord(e,t,n,s,"updateRecord")},saveRecord(e,t,n,s,a){let l=s||{},r=this.buildIncludeURL(e,t.modelName,l.id,n,a),i=this.preparePayload(e,t,n) -return this.ajax(r,l.method,i)},preparePayload(e,t,n){let s={} -return e.serializerFor(t.modelName).serializeIntoHash(s,t,n),{data:s}},buildIncludeURL(e,t,n,s,a,l){let r=this.getEmbeddedRelations(e,t),i=this.buildURL(t,n,s,a,l),o=new URL(i) -return r.length&&o.searchParams.append("include",r.map(Ember.String.underscore).join(",")),o.toString()},buildQuery(e,t,n){let s={},a=this.getEmbeddedRelations(e,t),l=n||{} -return a.length&&("string"==typeof n||"number"==typeof n?(l={},l.id=n,l.include=a.map(Ember.String.underscore).join(",")):("object"==typeof n||Ember.isNone(n))&&(l=l||{},a=a.concat(l.include?l.include.split(","):[]),a.forEach(e=>{s[e]=!0}),l.include=Object.keys(s).join(","))),l},getEmbeddedRelations(e,t){let n=e.modelFor(t),s=[],a=[] -return n.eachRelationship((e,t)=>{"hasMany"===t.kind&&Object.prototype.hasOwnProperty.call(t.options,"embedded")&&"always"===t.options.embedded&&(s.push(e),a.push([e,t.type]))}),a.forEach(([t,n])=>{this.getEmbeddedRelations(e,n).forEach(e=>{s.push("".concat(t,".").concat(e))})}),s}}) -e.default=n})),define("ghost-admin/adapters/label",["exports","ghost-admin/adapters/application","ghost-admin/mixins/slug-url"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend(n.default) -e.default=s})),define("ghost-admin/adapters/page",["exports","ghost-admin/adapters/application"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({buildIncludeURL(e,t,n,s,a,l){return this.buildURL(t,n,s,a,l)},buildQuery:(e,t,n)=>n}) -e.default=n})),define("ghost-admin/adapters/post",["exports","ghost-admin/adapters/application"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({buildIncludeURL(e,t,n,s,a,l){let r=this.buildURL(t,n,s,a,l),i=new URL(r) -return s&&s.adapterOptions&&s.adapterOptions.sendEmailWhenPublished&&i.searchParams.append("send_email_when_published","true"),i.toString()},buildQuery:(e,t,n)=>n}) -e.default=n})),define("ghost-admin/adapters/setting",["exports","ghost-admin/adapters/application"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({updateRecord(e,t,n){let s={},a=e.serializerFor(t.modelName) -return delete n.id,a.serializeIntoHash(s,t,n),this.ajax(this.buildURL(t.modelName),"PUT",{data:s})}}) -e.default=n})),define("ghost-admin/adapters/tag",["exports","ghost-admin/adapters/application","ghost-admin/mixins/slug-url"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend(n.default) -e.default=s})),define("ghost-admin/adapters/theme",["exports","ghost-admin/adapters/application"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({activate(e){let t="".concat(this.buildURL("theme",e.get("id")),"activate/") -return this.ajax(t,"PUT",{data:{}}).then(t=>(this.store.pushPayload(t),e))}}) -e.default=n})),define("ghost-admin/adapters/user",["exports","ghost-admin/adapters/application","ghost-admin/mixins/slug-url"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend(n.default,{queryRecord(e,t,n){if(!n||"me"!==n.id)return this._super(...arguments) -let s=this.buildURL(t.modelName,"me",null,"findRecord") -return this.ajax(s,"GET",{data:{include:"roles"}})}}) -e.default=s})),define("ghost-admin/app",["exports","ghost-admin/utils/link-component","ghost-admin/utils/route","ember-resolver","ghost-admin/config/environment","ember-load-initializers"],(function(e,t,n,s,a,l){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const r=Ember.Application.extend({Resolver:s.default,modulePrefix:a.default.modulePrefix,podModulePrefix:a.default.podModulePrefix,customEvents:{touchstart:null,touchmove:null,touchend:null,touchcancel:null}}) -Ember.Debug.registerWarnHandler((e,t,n)=>{["ds.errors.add","ds.errors.remove","ds.errors.clear"].includes(t.id)||n(e,t)}),(0,l.default)(r,a.default.modulePrefix) -var i=r -e.default=i})),define("ghost-admin/authenticators/cookie",["exports","ember-simple-auth/authenticators/base"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({ajax:Ember.inject.service(),config:Ember.inject.service(),feature:Ember.inject.service(),ghostPaths:Ember.inject.service(),settings:Ember.inject.service(),tour:Ember.inject.service(),whatsNew:Ember.inject.service(),sessionEndpoint:Ember.computed("ghostPaths.apiRoot",(function(){return"".concat(this.ghostPaths.apiRoot,"/session")})),restore:function(){return Ember.RSVP.resolve()},authenticate(e,t){const n={data:{username:e,password:t},contentType:"application/json;charset=utf-8",dataType:"text"} -return this.ajax.post(this.sessionEndpoint,n).then(e=>{let t=[this.config.fetchAuthenticated(),this.feature.fetch(),this.settings.fetch(),this.tour.fetchViewed()] -return this.whatsNew.fetchLatest.perform(),Ember.RSVP.all(t).then(()=>e)})},invalidate(){return this.ajax.skipSessionDeletion?(this.ajax.skipSessionDeletion=!1,Ember.RSVP.resolve()):this.ajax.del(this.sessionEndpoint)}}) -e.default=n})),define("ghost-admin/component-managers/glimmer",["exports","@glimmer/component/-private/ember-component-manager"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/-dynamic-element-alt",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend() -e.default=t})),define("ghost-admin/components/-dynamic-element",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend() -e.default=t})),define("ghost-admin/components/-lf-get-outlet-state",["exports","liquid-fire/components/-lf-get-outlet-state"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/aspect-ratio-box",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({ratio:"1/1",base:"height",isResizing:!0,_ratio:1,init(){this._super(...arguments),this._onResizeHandler=()=>{Ember.run.debounce(this,this._resize,200)}},didReceiveAttrs(){this._ratio=this.ratio.split("/").reduce((e,t)=>e/t)},didInsertElement(){this._resize(),window.addEventListener("resize",this._onResizeHandler)},willDestroyElement(){this._super(...arguments),window.removeEventListener("resize",this._onResizeHandler)},_resize(){this.set("isResizing",!0),Ember.run.schedule("afterRender",this,(function(){"height"===this.base?this.element.style.width="".concat(this.element.clientHeight*this._ratio,"px"):this.element.style.height="".concat(this.element.clientWidth*this._ratio,"px"),this.set("isResizing",!1)}))}}) -e.default=t})),define("ghost-admin/components/basic-dropdown-content",["exports","ember-basic-dropdown/components/basic-dropdown-content"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/basic-dropdown-trigger",["exports","ember-basic-dropdown/components/basic-dropdown-trigger"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/basic-dropdown",["exports","ember-basic-dropdown/components/basic-dropdown"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/draggable-object-target",["exports","ember-drag-drop/components/draggable-object-target"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default -e.default=n})),define("ghost-admin/components/draggable-object",["exports","ember-drag-drop/components/draggable-object"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default -e.default=n})),define("ghost-admin/components/ember-chart",["exports","ember-cli-chart/components/ember-chart"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default -e.default=n})),define("ghost-admin/components/ember-load-remover",["exports","ember-load/components/ember-load-remover"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/gh-activating-list-item",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({active:!1,classNameBindings:["active"],linkClasses:null,tagName:"li",actions:{setActive(e){Ember.run.schedule("afterRender",this,(function(){this.set("active",e)}))}},click(){this.element.querySelector("a").blur()}}) -e.default=t})),define("ghost-admin/components/gh-alert",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({notifications:Ember.inject.service(),classNameBindings:["typeClass"],classNames:["gh-alert"],tagName:"article",typeClass:Ember.computed("message.type",(function(){let e,t=this.get("message.type"),n="" -return e={success:"green",error:"red",warn:"blue",info:"blue"},void 0!==e[t]&&(n+="gh-alert-".concat(e[t])),n})),actions:{closeNotification(){this.notifications.closeNotification(this.message)}}}) -e.default=t})),define("ghost-admin/components/gh-alerts",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({notifications:Ember.inject.service(),classNames:"gh-alerts",tagName:"aside",messages:Ember.computed.alias("notifications.alerts")}) -e.default=t})),define("ghost-admin/components/gh-app",["exports","jquery"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({classNames:["gh-app"],showSettingsMenu:!1,didReceiveAttrs(){this._super(...arguments) -let e=this.showSettingsMenu;(0,t.default)("body").toggleClass("settings-menu-expanded",e)}}) -e.default=n})) -define("ghost-admin/components/gh-basic-dropdown",["exports","ember-basic-dropdown/components/basic-dropdown","ember-basic-dropdown/templates/components/basic-dropdown","@ember-decorators/component"],(function(e,t,n,s){var a,l,r,i -Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var o,u,d,c,m,p,h=(0,s.layout)(n.default)((i=class extends t.default{constructor(...e){var t,n,s,a -super(...e),t=this,n="dropdown",a=this,(s=r)&&Object.defineProperty(t,n,{enumerable:s.enumerable,configurable:s.configurable,writable:s.writable,value:s.initializer?s.initializer.call(a):void 0})}onInit(){this.dropdown.on("close",this,this.close)}willDestroy(){this.dropdown.off("close",this,this.close),super.willDestroyElement(...arguments)}},o=(l=i).prototype,u="dropdown",d=[Ember.inject.service],c={configurable:!0,enumerable:!0,writable:!0,initializer:null},p={},Object.keys(c).forEach((function(e){p[e]=c[e]})),p.enumerable=!!p.enumerable,p.configurable=!!p.configurable,("value"in p||p.initializer)&&(p.writable=!0),p=d.slice().reverse().reduce((function(e,t){return t(o,u,e)||e}),p),m&&void 0!==p.initializer&&(p.value=p.initializer?p.initializer.call(m):void 0,p.initializer=void 0),void 0===p.initializer&&(Object.defineProperty(o,u,p),p=null),r=p,a=l))||a -e.default=h})),define("ghost-admin/components/gh-billing-iframe",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({config:Ember.inject.service(),ghostPaths:Ember.inject.service(),ajax:Ember.inject.service(),billingEndpoint:Ember.computed.reads("config.billingUrl"),didRender(){let e=this.element.querySelector("#billing-frame") -window.addEventListener("message",t=>{if(t&&t.data&&"token"===t.data.request){const t=this.get("ghostPaths.url").api("identities") -this.ajax.request(t).then(t=>{const n=t&&t.identities&&t.identities[0]&&t.identities[0].token -e.contentWindow.postMessage({request:"token",response:n},"*")})}})}}) -e.default=t})),define("ghost-admin/components/gh-blog-url",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({config:Ember.inject.service(),tagName:""}) -e.default=t})),define("ghost-admin/components/gh-canvas-header",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({tagName:"",actions:{initScrollWatch(e){this._onScroll=Ember.run.bind(this,this.onScroll,e),this._scrollContainer=e.closest(".gh-main"),this._scrollContainer&&this._scrollContainer.addEventListener("scroll",this._onScroll,{passive:!0})},clearScrollWatch(){this._scrollContainer&&this._scrollContainer.removeEventListener("scroll",this._onScroll)}},onScroll(e){this._isSticky&&this._scrollContainer.scrollTop<10?(e.classList.remove("gh-canvas-header--sticky"),this._isSticky=!1):!this._isSticky&&this._scrollContainer.scrollTop>10&&(e.classList.add("gh-canvas-header--sticky"),this._isSticky=!0)}}) -e.default=t})),define("ghost-admin/components/gh-cm-editor",["exports","ghost-admin/utils/bound-one-way","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=Ember.Component.extend({lazyLoader:Ember.inject.service(),classNameBindings:["isFocused:focus"],textareaClass:"",isFocused:!1,autofocus:!1,indentUnit:4,lineNumbers:!0,lineWrapping:!1,mode:"htmlmixed",theme:"xq-light",_editor:null,"focus-in":()=>{},update:()=>{},_value:(0,t.default)("value"),didReceiveAttrs(){null===this._value&&this.set("_value",""),this.mode!==this._lastMode&&this._editor&&this._editor.setOption("mode",this.mode),this._lastMode=this.mode},didInsertElement(){this._super(...arguments),this.initCodeMirror.perform()},willDestroyElement(){if(this._super(...arguments),this._editor){let e=this._editor.getWrapperElement() -e.parentNode.removeChild(e),this._editor=null}},actions:{updateFromTextarea(e){this.update(e)}},initCodeMirror:(0,n.task)((function*(){let e=this.lazyLoader -yield e.loadScript("codemirror","assets/codemirror/codemirror-4b26a810df328bddb2d1f6eea91de09c.js"),Ember.run.scheduleOnce("afterRender",this,this._initCodeMirror)})),_initCodeMirror(){let e=this.getProperties("lineNumbers","lineWrapping","indentUnit","mode","theme","autofocus") -Ember.assign(e,{value:this._value}) -let t=this.element.querySelector("textarea") -t&&t===document.activeElement&&(e.autofocus=!0),this._editor=new CodeMirror.fromTextArea(t,e),e.autofocus&&this._editor.setCursor(this._editor.lineCount(),0),this._setupCodeMirrorEventHandler("focus",this,this._focus),this._setupCodeMirrorEventHandler("blur",this,this._blur),this._setupCodeMirrorEventHandler("change",this,this._update)},_setupCodeMirrorEventHandler(e,t,n){let s=Ember.run.bind(t,n) -this._editor.on(e,s),this.one("willDestroyElement",this,(function(){this._editor.off(e,s)}))},_update(e,t){Ember.run.once(this,this.update,e.getValue(),e,t)},_focus(e,t){this.set("isFocused",!0),Ember.run.once(this,this["focus-in"],e.getValue(),e,t)},_blur(){this.set("isFocused",!1)}}) -e.default=s})),define("ghost-admin/components/gh-content-cover",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({ui:Ember.inject.service(),classNames:["content-cover"],click(){this.ui.closeMenus()}}) -e.default=t})),define("ghost-admin/components/gh-contentfilter",["exports","@glimmer/component"],(function(e,t){var n,s,a,l,r -function i(e,t,n,s){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(s):void 0})}function o(e,t,n,s,a){var l={} -return Object.keys(s).forEach((function(e){l[e]=s[e]})),l.enumerable=!!l.enumerable,l.configurable=!!l.configurable,("value"in l||l.initializer)&&(l.writable=!0),l=n.slice().reverse().reduce((function(n,s){return s(e,t,n)||n}),l),a&&void 0!==l.initializer&&(l.value=l.initializer?l.initializer.call(a):void 0,l.initializer=void 0),void 0===l.initializer&&(Object.defineProperty(e,t,l),l=null),l}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -let u=(r=class extends t.default{constructor(...e){super(...e),i(this,"customViews",s,this),i(this,"router",a,this),i(this,"session",l,this)}calculateActionsDropdownPosition(e,t){let{top:n,left:s,width:a,height:l}=e.getBoundingClientRect(),{width:r}=t.firstElementChild.getBoundingClientRect() -return{style:{left:s+a-r,top:n+l+5}}}},s=o((n=r).prototype,"customViews",[Ember.inject.service],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),a=o(n.prototype,"router",[Ember.inject.service],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),l=o(n.prototype,"session",[Ember.inject.service],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),n) -e.default=u})),define("ghost-admin/components/gh-custom-view-title",["exports","@glimmer/component"],(function(e,t){var n,s,a,l -function r(e,t,n,s){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(s):void 0})}function i(e,t,n,s,a){var l={} -return Object.keys(s).forEach((function(e){l[e]=s[e]})),l.enumerable=!!l.enumerable,l.configurable=!!l.configurable,("value"in l||l.initializer)&&(l.writable=!0),l=n.slice().reverse().reduce((function(n,s){return s(e,t,n)||n}),l),a&&void 0!==l.initializer&&(l.value=l.initializer?l.initializer.call(a):void 0,l.initializer=void 0),void 0===l.initializer&&(Object.defineProperty(e,t,l),l=null),l}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -let o=(l=class extends t.default{constructor(...e){super(...e),r(this,"customViews",s,this),r(this,"router",a,this)}},s=i((n=l).prototype,"customViews",[Ember.inject.service],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),a=i(n.prototype,"router",[Ember.inject.service],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),n) -e.default=o})),define("ghost-admin/components/gh-date-time-picker",["exports","moment"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({settings:Ember.inject.service(),tagName:"",date:"",dateFormat:"YYYY-MM-DD",time:"",errors:null,dateErrorProperty:null,timeErrorProperty:null,isActive:!0,_time:"",_previousTime:"",_minDate:null,_maxDate:null,_scratchDate:null,_scratchDateError:null,setTypedDateError(){},blogTimezone:Ember.computed.reads("settings.activeTimezone"),hasError:Ember.computed.or("dateError","timeError"),dateValue:Ember.computed("_date","_scratchDate",(function(){return null!==this._scratchDate?this._scratchDate:(0,t.default)(this._date).format("YYYY-MM-DD")})),timezone:Ember.computed("blogTimezone",(function(){let e=this.blogTimezone -return t.default.utc().tz(e).format("z")})),dateError:Ember.computed("errors.[]","dateErrorProperty","_scratchDateError",(function(){if(this._scratchDateError)return this._scratchDateError -let e=this.errors,t=this.dateErrorProperty -return e&&!Ember.isEmpty(e.errorsFor(t))?e.errorsFor(t).get("firstObject").message:""})),timeError:Ember.computed("errors.[]","timeErrorProperty",(function(){let e=this.errors,t=this.timeErrorProperty -return e&&!Ember.isEmpty(e.errorsFor(t))?e.errorsFor(t).get("firstObject").message:""})),didReceiveAttrs(){let e=this.date,n=this.time,s=this.minDate,a=this.maxDate,l=this.blogTimezone -Ember.isBlank(e)?this.set("_date",(0,t.default)().tz(l)):this.set("_date",(0,t.default)(e)),!this.isActive&&this._lastIsActive&&this._resetScratchDate(),this._lastIsActive=this.isActive,(e&&e.valueOf())!==(this._lastDate&&this._lastDate.valueOf())&&this._resetScratchDate(),this._lastDate=this.date,Ember.isBlank(n)?this.set("_time",(0,t.default)(this._date).format("HH:mm")):this.set("_time",this.time),this.set("_previousTime",this._time),"now"===s?this.set("_minDate",(0,t.default)((0,t.default)().format("YYYY-MM-DD"))):Ember.isBlank(s)?this.set("_minDate",null):this.set("_minDate",(0,t.default)((0,t.default)(s).format("YYYY-MM-DD"))),"now"===a?this.set("_maxDate",(0,t.default)((0,t.default)().format("YYYY-MM-DD"))):Ember.isBlank(a)?this.set("_maxDate",null):this.set("_maxDate",(0,t.default)((0,t.default)(a).format("YYYY-MM-DD")))},willDestroyElement(){this.setTypedDateError(null)},actions:{setDate(e){e!==this._date&&(this.setDate(e),Ember.isBlank(this.time)&&this.setTime(this._time))},setTime(e){e.match(/^\d:\d\d$/)&&(e="0".concat(e)),e!==this._previousTime&&(this.setTime(e),this.set("_previousTime",e),Ember.isBlank(this.date)&&this.setDate(this._date))}},registerTimeInput:Ember._action((function(e){this._timeInputElem=e})),onDateInput:Ember._action((function(e,t){e.actions.close(t,!0),this.set("_scratchDate",t.target.value)})),onDateBlur:Ember._action((function(e){e.target.value!==(0,t.default)(this._date).format("YYYY-MM-DD")&&e.target.value?this._setDate(e.target.value):this._resetScratchDate()})),onDateKeydown:Ember._action((function(e,t){if("Escape"===t.key&&this._resetScratchDate(),"Enter"===t.key&&(this._setDate(t.target.value),t.preventDefault(),t.stopImmediatePropagation(),e.actions.close()),"Tab"===t.key&&e.isOpen&&(e.actions.close(),!t.shiftKey&&this._timeInputElem&&(t.preventDefault(),this._timeInputElem.focus(),this._timeInputElem.select())),"s"===t.key&&(t.ctrlKey||t.metaKey)){this._setDate(t.target.value)||(t.stopImmediatePropagation(),t.preventDefault())}})),_resetScratchDate(){this.set("_scratchDate",null),this._setScratchDateError(null)},_setDate(e){if(!e.match(/^\d\d\d\d-\d\d-\d\d$/))return this._setScratchDateError("Invalid date format, must be YYYY-MM-DD"),!1 -let n=(0,t.default)(e,"YYYY-MM-DD") -return n.isValid()?(this.send("setDate",n.toDate()),this._resetScratchDate(),!0):(this._setScratchDateError("Invalid date"),!1)},_setScratchDateError(e){this.set("_scratchDateError",e),this.setTypedDateError(e)}}) -e.default=n})),define("ghost-admin/components/gh-dropdown-button",["exports","ghost-admin/mixins/dropdown-mixin"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend(t.default,{dropdown:Ember.inject.service(),tagName:"button",attributeBindings:["href","role"],role:"button",dropdownName:null,click(e){if(this._super(e),this.dropdown.toggleDropdown(this.dropdownName,this),"a"===this.tagName)return!1}}) -e.default=n})),define("ghost-admin/components/gh-dropdown",["exports","ghost-admin/mixins/dropdown-mixin"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend(t.default,{dropdown:Ember.inject.service(),classNames:"dropdown",classNameBindings:["fadeIn:fade-in-scale:fade-out","isOpen:open:closed"],name:null,closeOnClick:!1,closing:!1,isOpen:!1,fadeIn:Ember.computed("isOpen","closing",(function(){return this.isOpen&&!this.closing})),didInsertElement(){this._super(...arguments) -let e=this.dropdown -e.on("close",this,this.close),e.on("toggle",this,this.toggle),this._animationEndHandler=Ember.run.bind(this,(function(e){"fade-out"===e.animationName&&this.closing&&(this.set("isOpen",!1),this.set("closing",!1))})),this.element.addEventListener("animationend",this._animationEndHandler)},willDestroyElement(){this._super(...arguments) -let e=this.dropdown -e.off("close",this,this.close),e.off("toggle",this,this.toggle),this.element.removeEventListener("animationend",this._animationEndHandler)},open(){this.set("isOpen",!0),this.set("closing",!1),this.set("button.isOpen",!0)},close(){this.set("closing",!0),this.button&&this.set("button.isOpen",!1)},toggle(e){let t=this.closing,n=this.isOpen,s=this.name,a=e.target,l=this.button -s!==a||n&&!t?n&&this.close():(l||(l=e.button,this.set("button",l)),this.open())},click(e){if(this._super(e),this.closeOnClick)return this.close()}}) -e.default=n})),define("ghost-admin/components/gh-editor-post-status",["exports","ghost-admin/config/environment","moment","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=Ember.Component.extend({clock:Ember.inject.service(),post:null,isSaving:!1,"data-test-editor-post-status":!0,_isSaving:!1,countdown:Ember.computed("post.{publishedAtUTC,isScheduled}","clock.second",(function(){let e=this.get("post.isScheduled"),t=this.get("post.publishedAtUTC")||n.default.utc(),s=t.diff(n.default.utc(),"minutes",!0),a=s>0&&s<15 -return this.get("clock.second"),!(!e||!a)&&(0,n.default)(t).fromNow()})),didReceiveAttrs(){this.isSaving&&this.showSavingMessage.perform()},showSavingMessage:(0,s.task)((function*(){this.set("_isSaving",!0),yield(0,s.timeout)("test"===t.default.environment?0:3e3),this.isDestroyed||this.isDestroying||this.set("_isSaving",!1)})).drop()}) -e.default=a})),define("ghost-admin/components/gh-editor",["exports","ghost-admin/components/gh-image-uploader"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({ui:Ember.inject.service(),classNameBindings:["isDraggedOver:-drag-over","isFullScreen:gh-editor-fullscreen","isPreview:gh-editor-preview"],droppedFiles:null,headerClass:"",headerHeight:0,imageExtensions:t.IMAGE_EXTENSIONS,imageMimeTypes:t.IMAGE_MIME_TYPES,isDraggedOver:!1,isFullScreen:!1,isSplitScreen:!1,uploadedImageUrls:null,_dragCounter:0,_onResizeHandler:null,_viewActionsWidth:190,init(){this._super(...arguments),this._onResizeHandler=e=>{Ember.run.debounce(this,this._setHeaderClass,e,100)}},didInsertElement(){this._super(...arguments),window.addEventListener("resize",this._onResizeHandler),this._setHeaderClass()},willDestroyElement(){this._super(...arguments),window.removeEventListener("resize",this._onResizeHandler)},actions:{toggleFullScreen(e){this.set("isFullScreen",e),this.ui.set("isFullScreen",e),Ember.run.scheduleOnce("afterRender",this,this._setHeaderClass)},togglePreview(e){this.set("isPreview",e)},toggleSplitScreen(e){this.set("isSplitScreen",e),Ember.run.scheduleOnce("afterRender",this,this._setHeaderClass)},uploadImages(e,t){let n=Array.from(e) -this.set("droppedFiles",n),t()},uploadComplete(e){this.set("uploadedImageUrls",e.mapBy("url")),this.set("droppedFiles",null)},uploadCancelled(){this.set("droppedFiles",null)}},_setHeaderClass(){let e=this.element.querySelector(".gh-editor-title, .kg-title-input"),t="" -if(this._editorTitleElement=e,this.isSplitScreen)this.set("headerClass","gh-editor-header-small") -else{if(e){let n=e.getBoundingClientRect(),s=window.innerWidth-this._viewActionsWidth -n.right>=s&&(t="gh-editor-header-small")}t!==this.headerClass&&Ember.run.scheduleOnce("afterRender",this,this._setHeaderHeight),this.set("headerClass",t)}},_setHeaderHeight(){if(this.headerClass&&this._editorTitleElement){let e=this._editorTitleElement.offsetHeight -return this.set("headerHeight",e)}this.set("headerHeight",0)},dragOver(e){if(e.dataTransfer){if(navigator.userAgent.indexOf("Chrome")>-1){let t=e.dataTransfer.effectAllowed -e.dataTransfer.dropEffect="move"===t||"linkMove"===t?"move":"copy"}e.preventDefault(),e.stopPropagation()}},dragEnter(e){e.dataTransfer&&(e.preventDefault(),e.stopPropagation(),this._dragCounter+=1,this.set("isDraggedOver",!0))},dragLeave(e){e.preventDefault(),e.stopPropagation(),this._dragCounter-=1,0===this._dragCounter&&this.set("isDraggedOver",!1)},drop(e){e.preventDefault(),e.stopPropagation(),this._dragCounter=0,this.set("isDraggedOver",!1),e.dataTransfer.files&&this.set("droppedFiles",e.dataTransfer.files)}}) -e.default=n})),define("ghost-admin/components/gh-error-message",["exports","@glimmer/component"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -class n extends t.default{get message(){let e,{property:t,errors:n}=this.args,s=[] -return!Ember.isEmpty(n)&&n.get(t)?(n.get(t).forEach(e=>{s.push(e)}),e=Math.floor(Math.random()*s.length),s[e].message):""}}e.default=n})),define("ghost-admin/components/gh-feature-flag",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({feature:Ember.inject.service(),tagName:"label",classNames:"checkbox",attributeBindings:["for","disabled"],disabled:Ember.computed("_disabled",(function(){return!!this._disabled})),value:Ember.computed("_flagValue",{get(){return this._flagValue},set(e,t){return this.set("feature.".concat(this.flag),t)}}),for:Ember.computed("flag",(function(){return"labs-".concat(this.flag)})),name:Ember.computed("flag",(function(){return"labs[".concat(this.flag,"]")})),init(){this._super(...arguments),Ember.defineProperty(this,"_flagValue",Ember.computed.readOnly("feature.".concat(this.flag)),(function(){return this.get("feature.".concat(this.flag))}))}}) -e.default=t})),define("ghost-admin/components/gh-file-input",["exports","emberx-file-input/components/x-file-input"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({change(e){let t=this.action,n=this.files(e) -n.length&&t&&t(n,this.resetInput.bind(this))},files:e=>(e.originalEvent||e).testingFiles||e.target.files}) -e.default=n})),define("ghost-admin/components/gh-file-upload",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({_file:null,acceptEncoding:null,uploadButtonText:"Text",uploadButtonDisabled:!0,shouldResetForm:!0,onUpload(){},onAdd(){},actions:{upload(){!this.uploadButtonDisabled&&this._file&&this.onUpload(this._file),this.set("uploadButtonDisabled",!0),this.shouldResetForm&&this.element.closest("form").reset()}},change(e){this.set("uploadButtonDisabled",!1),this.onAdd(),this._file=e.target.files[0]}}) -e.default=t})),define("ghost-admin/components/gh-file-uploader",["exports","ghost-admin/services/ajax"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const n={accept:["text/csv"],extensions:["csv"]} -var s=Ember.Component.extend({ajax:Ember.inject.service(),eventBus:Ember.inject.service(),notifications:Ember.inject.service(),tagName:"section",classNames:["gh-image-uploader"],classNameBindings:["dragClass"],labelText:"Select or drag-and-drop a file",url:null,paramName:"file",accept:null,extensions:null,validate:null,file:null,response:null,dragClass:null,failureMessage:null,uploadPercentage:0,fileSelected:()=>{},uploadStarted:()=>{},uploadFinished:()=>{},uploadSuccess:()=>{},uploadFailed:()=>{},formData:Ember.computed("file",(function(){let e=this.paramName,t=this.file,n=new FormData -return n.append(e,t),n})),progressStyle:Ember.computed("uploadPercentage",(function(){let e=this.uploadPercentage,t="" -return t=e>0?"".concat(e,"%"):"0",Ember.String.htmlSafe("width: ".concat(t))})),init(){this._super(...arguments) -let e=this.listenTo -this.accept=this.accept||n.accept,this.extensions=this.extensions||n.extensions,this._uploadEventHandler=function(e){e&&this.set("file",e),this.send("upload")},e&&this.eventBus.subscribe("".concat(e,":upload"),this,this._uploadEventHandler)},didReceiveAttrs(){this._super(...arguments) -let e=this.accept,t=this.extensions -this._accept=Ember.isBlank(e)||Ember.isArray(e)?e:e.split(","),this._extensions=Ember.isBlank(t)||Ember.isArray(t)?t:t.split(",")},willDestroyElement(){let e=this.listenTo -this._super(...arguments),e&&this.eventBus.unsubscribe("".concat(e,":upload"),this,this._uploadEventHandler)},actions:{fileSelected(e,t){let[n]=Array.from(e),s=this._validate(n) -this.set("file",n),this.fileSelected(n),!0===s?Ember.run.schedule("actions",this,(function(){this.generateRequest(),t&&t()})):(this._uploadFailed(s),t&&t())},upload(){this.file&&this.generateRequest()},reset(){this.set("file",null),this.set("uploadPercentage",0),this.set("failureMessage",null)}},dragOver(e){if(e.dataTransfer){if(navigator.userAgent.indexOf("Chrome")>-1){let t=e.dataTransfer.effectAllowed -e.dataTransfer.dropEffect="move"===t||"linkMove"===t?"move":"copy"}e.stopPropagation(),e.preventDefault(),this.set("dragClass","-drag-over")}},dragLeave(e){e.preventDefault(),this.set("dragClass",null)},drop(e){e.preventDefault(),this.set("dragClass",null),e.dataTransfer.files&&this.send("fileSelected",e.dataTransfer.files)},generateRequest(){let e=this.ajax,t=this.formData,n=this.url -this.uploadStarted(),e.post(n,{data:t,processData:!1,contentType:!1,dataType:"text",xhr:()=>{let e=new window.XMLHttpRequest -return e.upload.addEventListener("progress",e=>{this._uploadProgress(e)},!1),e}}).then(e=>{this._uploadSuccess(JSON.parse(e))}).catch(e=>{this._uploadFailed(e)}).finally(()=>{this.uploadFinished()})},_uploadProgress(e){e.lengthComputable&&Ember.run(()=>{let t=Math.round(e.loaded/e.total*100) -this.set("uploadPercentage",t)})},_uploadSuccess(e){this.uploadSuccess(e),this.send("reset")},_uploadFailed(e){let n;(0,t.isVersionMismatchError)(e)&&this.notifications.showAPIError(e),n=(0,t.isUnsupportedMediaTypeError)(e)?"The file type you uploaded is not supported.":(0,t.isRequestEntityTooLargeError)(e)?"The file you uploaded was larger than the maximum file size your server allows.":e.payload&&e.payload.errors&&!Ember.isBlank(e.payload.errors[0].message)?Ember.String.htmlSafe(e.payload.errors[0].message):"Something went wrong :(",this.set("failureMessage",n),this.uploadFailed(e)},_validate(e){return this.validate?this.validate(e):this._defaultValidator(e)},_defaultValidator(e){let[,n]=/(?:\.([^.]+))?$/.exec(e.name),s=this._extensions -return!(!n||-1===s.indexOf(n.toLowerCase()))||new t.UnsupportedMediaTypeError}}) -e.default=s})),define("ghost-admin/components/gh-form-group",["exports","ghost-admin/components/gh-validation-status-container"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({classNames:"form-group"}) -e.default=n})),define("ghost-admin/components/gh-fullscreen-modal",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({dropdown:Ember.inject.service(),model:null,modifier:null,modalPath:Ember.computed("modal",(function(){return"modal-".concat(this.modal||"unknown")})),modalClasses:Ember.computed("modifiers",(function(){let e=(this.modifier||"").split(" "),t=Ember.A(["fullscreen-modal"]) -return e.forEach(e=>{if(!Ember.isBlank(e)){let n="".concat("fullscreen-modal","-").concat(e) -t.push(n)}}),t.join(" ")})),didInsertElement(){Ember.run.schedule("afterRender",this,(function(){this.dropdown.closeDropdowns()}))},actions:{close(){return this.close()},confirm(){return this.confirm()},clickOverlay(){this.send("close")}},close:()=>Ember.RSVP.resolve(),confirm:()=>Ember.RSVP.resolve()}) -e.default=t})),define("ghost-admin/components/gh-image-uploader-with-preview",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({allowUnsplash:!1,actions:{update(){let e=this.update -e&&e(...arguments)},uploadStarted(){let e=this.uploadStarted -e&&e(...arguments)},uploadFinished(){let e=this.uploadFinished -e&&e(...arguments)},remove(){let e=this.remove -e&&e()}}}) -e.default=t})),define("ghost-admin/components/gh-image-uploader",["exports","ghost-admin/utils/ghost-paths","ghost-admin/services/ajax"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.IMAGE_PARAMS=e.IMAGE_EXTENSIONS=e.IMAGE_MIME_TYPES=void 0 -const s="image/gif,image/jpg,image/jpeg,image/png,image/svg+xml" -e.IMAGE_MIME_TYPES=s -const a=["gif","jpg","jpeg","png","svg"] -e.IMAGE_EXTENSIONS=a -const l={purpose:"image"} -e.IMAGE_PARAMS=l -var r=Ember.Component.extend({ajax:Ember.inject.service(),config:Ember.inject.service(),notifications:Ember.inject.service(),settings:Ember.inject.service(),tagName:"section",classNames:["gh-image-uploader"],classNameBindings:["dragClass"],image:null,text:"",altText:"",saveButton:!0,accept:"",extensions:null,uploadUrl:null,paramName:"file",paramsHash:null,resourceName:"images",validate:null,allowUnsplash:!1,dragClass:null,failureMessage:null,file:null,url:null,uploadPercentage:0,_defaultAccept:s,_defaultExtensions:a,_defaultUploadUrl:"/images/upload/",_defaultParamsHash:l,_showUnsplash:!1,fileSelected:()=>{},update:()=>{},uploadStarted:()=>{},uploadFinished:()=>{},uploadSuccess:()=>{},uploadFailed:()=>{},formData:Ember.computed("file",(function(){let e=this.file,t=new FormData -return t.append(this.paramName,e),Object.keys(this.paramsHash||{}).forEach(e=>{t.append(e,this.paramsHash[e])}),t})),description:Ember.computed("text","altText",(function(){let e=this.altText -return this.text||(e?'Upload image of "'.concat(e,'"'):"Upload an image")})),progressStyle:Ember.computed("uploadPercentage",(function(){let e=this.uploadPercentage,t="" -return t=e>0?"".concat(e,"%"):"0",Ember.String.htmlSafe("width: ".concat(t))})),init(){this._super(...arguments),this.accept||this.set("accept",this._defaultAccept),this.extensions||this.set("extensions",this._defaultExtensions),this.uploadUrl||this.set("uploadUrl",this._defaultUploadUrl),this.paramsHash||this.set("paramsHash",this._defaultParamsHash)},didReceiveAttrs(){let e=this.image -this.set("url",e)},actions:{fileSelected(e,t){let n=e[0],s=this._validate(n) -this.set("file",n),this.fileSelected(n),!0===s?Ember.run.schedule("actions",this,(function(){this.generateRequest(),t&&t()})):(this._uploadFailed(s),t&&t())},addUnsplashPhoto({src:e}){this.set("url",e),this.send("saveUrl")},reset(){this.set("file",null),this.set("uploadPercentage",0)},saveUrl(){let e=this.url -this.update(e)}},dragOver(e){if(e.dataTransfer){if(navigator.userAgent.indexOf("Chrome")>-1){let t=e.dataTransfer.effectAllowed -e.dataTransfer.dropEffect="move"===t||"linkMove"===t?"move":"copy"}e.stopPropagation(),e.preventDefault(),this.set("dragClass","-drag-over")}},dragLeave(e){e.preventDefault(),this.set("dragClass",null)},drop(e){e.preventDefault(),this.set("dragClass",null),e.dataTransfer.files&&this.send("fileSelected",e.dataTransfer.files)},_uploadProgress(e){e.lengthComputable&&Ember.run(()=>{let t=Math.round(e.loaded/e.total*100) -this.set("uploadPercentage",t)})},_uploadSuccess(e){let t,n -try{t=JSON.parse(e)}catch(s){if(!(s instanceof SyntaxError))throw s}if(t){let e=Ember.get(t,this.resourceName) -e&&Ember.isArray(e)&&e[0]&&(n=Ember.get(e[0],"url"))}this.set("url",n),this.send("saveUrl"),this.send("reset"),this.uploadSuccess(n)},_uploadFailed(e){let t -if((0,n.isVersionMismatchError)(e)&&this.notifications.showAPIError(e),(0,n.isUnsupportedMediaTypeError)(e)){let e=this.extensions.join(", .").toUpperCase() -e=".".concat(e),t="The image type you uploaded is not supported. Please use ".concat(e)}else t=(0,n.isRequestEntityTooLargeError)(e)?"The image you uploaded was larger than the maximum file size your server allows.":e.payload.errors&&!Ember.isBlank(e.payload.errors[0].message)?e.payload.errors[0].message:"Something went wrong :(" -this.set("failureMessage",t),this.uploadFailed(e)},generateRequest(){let e=this.ajax,n=this.formData,s=this.uploadUrl,a="".concat((0,t.default)().apiRoot).concat(s) -this.uploadStarted(),e.post(a,{data:n,processData:!1,contentType:!1,dataType:"text",xhr:()=>{let e=new window.XMLHttpRequest -return e.upload.addEventListener("progress",e=>{this._uploadProgress(e)},!1),e}}).then(e=>{this._uploadSuccess(e)}).catch(e=>{this._uploadFailed(e)}).finally(()=>{this.uploadFinished()})},_validate(e){return this.validate?this.validate(e):this._defaultValidator(e)},_defaultValidator(e){let t=this.extensions,[,s]=/(?:\.([^.]+))?$/.exec(e.name) -return Ember.isArray(t)||(t=t.split(",")),!(!s||-1===t.indexOf(s.toLowerCase()))||new n.UnsupportedMediaTypeError}}) -e.default=r})),define("ghost-admin/components/gh-infinity-loader",["exports","ember-infinity/components/infinity-loader","ghost-admin/templates/components/infinity-loader"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({layout:n.default}) -e.default=s})),define("ghost-admin/components/gh-koenig-editor",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({classNames:["gh-koenig-editor","relative","w-100","vh-100","overflow-x-hidden","overflow-y-auto","z-0"],title:"",titlePlaceholder:"",body:null,bodyPlaceholder:"",bodyAutofocus:!1,_title:null,_editor:null,_mousedownY:0,onTitleChange(){},onTitleBlur(){},onBodyChange(){},onEditorCreated(){},onWordCountChange(){},actions:{focusTitle(){this._title.focus()},trackMousedown(e){this._mousedownY=e.clientY},focusEditor(e){if(e.target.classList.contains("gh-koenig-editor-pane")){let t=this._editor.element,{bottom:n}=t.getBoundingClientRect() -if(this._mousedownY>n&&e.clientY>n){let{post:t}=this._editor,n=t.toRange(),{tailSection:s}=n -e.preventDefault(),this._editor.focus(),s.isCardSection&&this._editor.run(e=>{let t=e.builder.createMarkupSection("p") -e.insertSectionAtEnd(t),s=t}),this._editor.selectRange(s.tailPosition()),this.element.scrollTop=this.element.scrollHeight}}},onTitleCreated(e){this._title=e},onTitleChange(e){this.onTitleChange(e)},onTitleFocusOut(){this.onTitleBlur()},onTitleKeydown(e){let t=e.target.value,n=e.target.selectionStart -"Enter"!==e.key&&"Tab"!==e.key&&("ArrowDown"!==e.key&&"ArrowRight"!==e.key||t&&n!==t.length)||(e.preventDefault(),"Enter"===e.key&&this._addParaAtTop(),this._editor.focus())},onEditorCreated(e){this._setupEditor(e),this.onEditorCreated(e)},onBodyChange(e){this.onBodyChange(e)}},_setupEditor(e){let t=this -this._koenig=e,this._editor=e.editor,this._editor.registerKeyCommand({str:"SHIFT+TAB",run:()=>(t.send("focusTitle"),!0)})},_addParaAtTop(){if(!this._editor)return -let e=this._editor,t=e.post.toRange().head.section -!t.isListItem&&t.isBlank&&""===t.text||e.run(e=>{let{builder:n}=e,s=n.createMarkupSection("p"),a=t.isListItem?t.parent.parent.sections:t.parent.sections -e.insertSectionBefore(a,s,t)})}}) -e.default=t})),define("ghost-admin/components/gh-link-to-custom-views-index",["exports","@glimmer/component"],(function(e,t){var n,s,a,l -function r(e,t,n,s){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(s):void 0})}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t,n,s,a){var l={} -return Object.keys(s).forEach((function(e){l[e]=s[e]})),l.enumerable=!!l.enumerable,l.configurable=!!l.configurable,("value"in l||l.initializer)&&(l.writable=!0),l=n.slice().reverse().reduce((function(n,s){return s(e,t,n)||n}),l),a&&void 0!==l.initializer&&(l.value=l.initializer?l.initializer.call(a):void 0,l.initializer=void 0),void 0===l.initializer&&(Object.defineProperty(e,t,l),l=null),l}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -let u=(l=class extends t.default{constructor(...e){super(...e),r(this,"customViews",s,this),r(this,"router",a,this),i(this,"_forceReset",!1),i(this,"_lastIsActive",!1)}watchRouterEvents(){this.router.on("routeWillChange",this.handleRouteWillChange)}unwatchRouterEvents(){this.router.off("routeWillChange",this.handleRouteWillChange)}handleRouteWillChange({from:e,to:t}){let n=t&&t.name.replace(/_loading$/,"") -e&&e.name===this.args.route&&n!==this.args.route&&this.customViews.activeView&&this.customViews.activeView.route===this.args.route&&(this._forceReset=!0),n===this.args.route&&(this._forceReset=!1)}get isActive(){if(this.router.currentRouteName.match(/_loading$/))return this._lastIsActive -let e=this.router.currentRouteName.replace(/_loading$/,"") -return this._lastIsActive=e===this.args.route&&!this.customViews.activeView,this._lastIsActive}get resetQuery(){if(this._forceReset||this.router.currentRouteName===this.args.route)return this.args.query}},s=o((n=l).prototype,"customViews",[Ember.inject.service],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),a=o(n.prototype,"router",[Ember.inject.service],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),o(n.prototype,"watchRouterEvents",[Ember._action],Object.getOwnPropertyDescriptor(n.prototype,"watchRouterEvents"),n.prototype),o(n.prototype,"unwatchRouterEvents",[Ember._action],Object.getOwnPropertyDescriptor(n.prototype,"unwatchRouterEvents"),n.prototype),o(n.prototype,"handleRouteWillChange",[Ember._action],Object.getOwnPropertyDescriptor(n.prototype,"handleRouteWillChange"),n.prototype),n) -e.default=u})),define("ghost-admin/components/gh-loading-spinner",["exports","ember-concurrency"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({tagName:"",showSpinner:!1,slowLoadTimeout:200,didInsertElement(){this.startSpinnerTimeout.perform()},startSpinnerTimeout:(0,t.task)((function*(){yield(0,t.timeout)(this.slowLoadTimeout),this.set("showSpinner",!0)}))}) -e.default=n})),define("ghost-admin/components/gh-markdown-editor",["exports","ghost-admin/mixins/shortcuts","ghost-admin/utils/ctrl-or-cmd","ghost-admin/utils/format-markdown"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=Ember.Component.extend(t.default,{config:Ember.inject.service(),notifications:Ember.inject.service(),settings:Ember.inject.service(),classNames:["gh-markdown-editor"],classNameBindings:["_isFullScreen:gh-markdown-editor-full-screen","_isSplitScreen:gh-markdown-editor-side-by-side"],autofocus:!1,imageMimeTypes:null,isFullScreen:!1,markdown:null,options:null,placeholder:"",showMarkdownHelp:!1,uploadedImageUrls:null,enableSideBySide:!0,enablePreview:!0,enableHemingway:!0,shortcuts:null,_editor:null,_editorFocused:!1,_isFullScreen:!1,_isSplitScreen:!1,_isHemingwayMode:!1,_isUploading:!1,_showUnsplash:!1,_uploadedImageUrls:null,onChange(){},onFullScreenToggle(){},onImageFilesSelected(){},onPreviewToggle(){},onSplitScreenToggle(){},simpleMDEOptions:Ember.computed("options",(function(){let e=this.options||{},t={previewRender:e=>(0,s.default)(e),toolbar:["bold","italic","heading","|","quote","unordered-list","ordered-list","|","link",{name:"image",action:()=>{this._openImageFileDialog()},className:"fa fa-picture-o",title:"Upload Image(s)"},"|",{name:"preview",action:()=>{this._togglePreview()},className:"fa fa-eye no-disable",title:"Render Preview (Ctrl-Alt-R)",useCtrlOnMac:!0},{name:"side-by-side",action:()=>{this.send("toggleSplitScreen")},className:"fa fa-columns no-disable no-mobile",title:"Side-by-side Preview (Ctrl-Alt-P)",useCtrlOnMac:!0},"|",{name:"spellcheck",action:()=>{this._toggleSpellcheck()},className:"fa fa-check",title:"Spellcheck (Ctrl-Alt-S)",useCtrlOnMac:!0},{name:"hemingway",action:()=>{this._toggleHemingway()},className:"fa fa-h-square",title:"Hemingway Mode (Ctrl-Alt-H)",useCtrlOnMac:!0},{name:"guide",action:()=>{this.send("toggleMarkdownHelp")},className:"fa fa-question-circle",title:"Markdown Guide"}],shortcuts:{toggleFullScreen:null,togglePreview:null,toggleSideBySide:null,drawImage:null},status:["words"]},n=t.toolbar -if(!this.enableSideBySide){let e=n.findBy("name","side-by-side"),t=n.indexOf(e) -n.splice(t,1)}if(!this.enablePreview){let e=n.findBy("name","preview"),t=n.indexOf(e) -n.splice(t,1)}if(!this.enableHemingway){let e=n.findBy("name","hemingway"),t=n.indexOf(e) -n.splice(t,1)}if(this.get("settings.unsplash.isActive")){let e=n.findBy("name","image"),t=n.indexOf(e)+1 -n.splice(t,0,{name:"unsplash",action:()=>{this.send("toggleUnsplash")},className:"fa fa-camera",title:"Add Image from Unsplash"})}let a=null -return n.forEach((e,t)=>{"|"===e&&e===a&&(n[t]=null),a=e}),t.toolbar=n.filter(Boolean),Ember.assign(t,e)})),init(){this._super(...arguments) -let e={} -e["".concat(n.default,"+shift+i")]={action:"openImageFileDialog"},e["ctrl+alt+s"]={action:"toggleSpellcheck"},this.enablePreview&&(e["ctrl+alt+r"]={action:"togglePreview"}),this.enableSideBySide&&(e["ctrl+alt+p"]={action:"toggleSplitScreen"}),this.enableHemingway&&(e["ctrl+alt+h"]={action:"toggleHemingway"}),this.shortcuts=e},didReceiveAttrs(){this._super(...arguments) -let e=this.uploadedImageUrls -Ember.isEmpty(e)||e===this._uploadedImageUrls||(this._uploadedImageUrls=e,Ember.run.scheduleOnce("afterRender",this,this._insertImages,e)),this.autofocus&&this._editor&&this.markdown!==this._editor.value()&&this.send("focusEditor"),Ember.isEmpty(this.isFullScreen)||this.set("_isFullScreen",this.isFullScreen),Ember.isEmpty(this.isSplitScreen)||this.set("_isSplitScreen",this.isSplitScreen),this._updateButtonState()},didInsertElement(){this._super(...arguments),this.registerShortcuts(),!!navigator.platform&&/iPad|iPhone|iPod/.test(navigator.platform)&&this._preventBodyScroll()},willDestroyElement(){this._isSplitScreen&&this._disconnectSplitPreview(),this.removeShortcuts(),this._super(...arguments),this._preventBodyScrollId&&window.cancelAnimationFrame(this._preventBodyScrollId)},actions:{updateMarkdown(e){this.onChange(e)},setEditor(e){this._editor=e,this._editor.codemirror.setOption("dragDrop",!1),this._editor.codemirror.setOption("mode","gfm"),this._editor.codemirror.setOption("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff\xa0]/g),this._updateButtonState()},focusEditor(e="bottom"){return this._editor.codemirror.focus(),"bottom"===e?this._editor.codemirror.execCommand("goDocEnd"):"top"===e&&this._editor.codemirror.execCommand("goDocStart"),!1},updateFocusState(e){e?this._editorFocused=!0:Ember.run.later(this,(function(){this._editorFocused=!1}),100)},openImageFileDialog(){let e=this._editor.codemirror.hasFocus() -this._openImageFileDialog({captureSelection:e})},toggleUnsplash(){if(this._showUnsplash)return this.toggleProperty("_showUnsplash") -this._editorFocused&&(this._imageInsertSelection={anchor:this._editor.codemirror.getCursor("anchor"),head:this._editor.codemirror.getCursor("head")}),this.toggleProperty("_showUnsplash")},insertUnsplashPhoto({src:e,alt:t,caption:n}){let s={alt:t,url:e,credit:"".concat(n,"")} -this._insertImages([s])},togglePreview(){this._togglePreview()},toggleFullScreen(){let e=!this._isFullScreen -this.set("_isFullScreen",e),this._updateButtonState(),this.onFullScreenToggle(e),!e&&this._isSplitScreen&&this.send("toggleSplitScreen")},toggleSplitScreen(){let e=!this._isSplitScreen,t=this._editor.toolbarElements.preview -if(this.set("_isSplitScreen",e),this._updateButtonState(),e){if(this._editor.isPreviewActive()){this._editor.toolbar.find(e=>"preview"===e.name).action(this._editor)}t&&t.classList.add("disabled"),Ember.run.scheduleOnce("afterRender",this,this._connectSplitPreview)}else t&&t.classList.remove("disabled"),Ember.run.scheduleOnce("afterRender",this,this._disconnectSplitPreview) -this.onSplitScreenToggle(e),this.send("toggleFullScreen")},toggleSpellcheck(){this._toggleSpellcheck()},toggleHemingway(){this._toggleHemingway()},toggleMarkdownHelp(){this.toggleProperty("showMarkdownHelp")}},_preventBodyScroll(){this._preventBodyScrollId=window.requestAnimationFrame(()=>{let e=document.querySelector("body") -if(document.activeElement.closest(".CodeMirror")&&0!==e.scrollTop){document.querySelector(".gh-markdown-editor").scrollTop+=e.scrollTop,e.scrollTop=0}this._preventBodyScroll()})},_insertImages(e){let t=this._editor.codemirror,n=e.map(e=>{if("string"===Ember.typeOf(e)){let t=e.split("/").pop(),n=t -return t.lastIndexOf(".")>0&&(n=t.slice(0,t.lastIndexOf("."))),"![".concat(n,"](").concat(e,")")}{let t="![".concat(e.alt,"](").concat(e.url,")") -return e.credit&&(t+="\n".concat(e.credit)),t}}).join("\n\n") -this._imageInsertSelection&&(this.send("focusEditor",null),t.setSelection(this._imageInsertSelection.anchor,this._imageInsertSelection.head),this._imageInsertSelection=null),t.hasFocus()||(this.send("focusEditor"),n="\n\n".concat(n,"\n\n")),t.replaceSelection(n,"end")},_updateButtonState(){if(this._editor){let e=this._editor.toolbarElements["side-by-side"],t=this._editor.toolbarElements.spellcheck,n=this._editor.toolbarElements.hemingway -e&&(this._isSplitScreen?e.classList.add("active"):e.classList.remove("active")),t&&("spell-checker"===this._editor.codemirror.getOption("mode")?t.classList.add("active"):t.classList.remove("active")),n&&(this._isHemingwayMode?n.classList.add("active"):n.classList.remove("active"))}},_connectSplitPreview(){let e=this._editor.codemirror,t=this._editor,n=this.element.querySelector(".gh-markdown-editor-pane"),s=this.element.querySelector(".gh-markdown-editor-preview"),a=this.element.querySelector(".gh-markdown-editor-preview-content") -this._editorPane=n,this._previewPane=s,this._previewContent=a -let l=function(){a.innerHTML=t.options.previewRender(t.value(),a)} -e.sideBySideRenderingFunction=l,l(),e.on("update",e.sideBySideRenderingFunction),e.refresh(),this._onEditorPaneScroll=this._scrollHandler.bind(this),n.addEventListener("scroll",this._onEditorPaneScroll,!1),this._scrollSync()},_scrollHandler(){this._scrollSyncTicking||requestAnimationFrame(this._scrollSync.bind(this)),this._scrollSyncTicking=!0},_scrollSync(){let e=this._editorPane,t=this._previewPane,n=e.scrollHeight-e.clientHeight,s=parseFloat(e.scrollTop)/n,a=(t.scrollHeight-t.clientHeight)*s -t.scrollTop=a,this._scrollSyncTicking=!1},_disconnectSplitPreview(){let e=this._editor.codemirror -e.off("update",e.sideBySideRenderingFunction),e.refresh(),this._editorPane.removeEventListener("scroll",this._onEditorPaneScroll,!1),delete this._previewPane,delete this._previewPaneContent,delete this._onEditorPaneScroll},_openImageFileDialog({captureSelection:e=!0}={}){e&&(this._imageInsertSelection={anchor:this._editor.codemirror.getCursor("anchor"),head:this._editor.codemirror.getCursor("head")}),this.element.querySelector('input[type="file"]').click()},_togglePreview(){this.onPreviewToggle(!this._editor.isPreviewActive()),this._editor.togglePreview()},_toggleSpellcheck(){let e=this._editor.codemirror -"spell-checker"===e.getOption("mode")?e.setOption("mode","gfm"):e.setOption("mode","spell-checker"),this._updateButtonState()},_toggleHemingway(){let e=this._editor.codemirror,t=e.getOption("extraKeys"),n="" -this._isHemingwayMode=!this._isHemingwayMode,this._isHemingwayMode?(n='Hemingway Mode On: Write now; edit later. Backspace disabled.',t.Backspace=function(){}):(n='Hemingway Mode Off: Normal editing restored.',delete t.Backspace),e.setOption("extraKeys",t),this._updateButtonState(),e.focus(),this.notifications.showNotification(Ember.String.htmlSafe(n),{key:"editor.hemingwaymode"})}}) -e.default=a})),define("ghost-admin/components/gh-member-avatar",["exports","@glimmer/component"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -class n extends t.default{get memberName(){let{member:e}=this.args -return e.name||e.email||"NM"}get backgroundStyle(){let e=function(e,t,n){for(var s=0,a=0;a1?[e[0][0],e[e.length-1][0]]:[e[0][0]]).join("").toUpperCase()}}e.default=n})),define("ghost-admin/components/gh-member-label-input",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({store:Ember.inject.service(),member:null,labelName:"",_availableLabels:null,selectedLabels:Ember.computed.reads("member.labels"),availableLabels:Ember.computed.sort("_availableLabels.[]",(function(e,t){return e.name.localeCompare(t.name,void 0,{ignorePunctuation:!0})})),availableLabelNames:Ember.computed("availableLabels.@each.name",(function(){return this.availableLabels.map(e=>e.name.toLowerCase())})),init(){this._super(...arguments),this.store.query("label",{limit:"all"}),this.set("_availableLabels",this.store.peekAll("label"))},actions:{matchLabels:(e,t)=>e.toLowerCase()===t.trim().toLowerCase(),hideCreateOptionOnMatchingLabel(e){return!this.availableLabelNames.includes(e.toLowerCase())},updateLabels(e){return this.get("member.labels").forEach((function(t){!e.includes(t)&&t.get("isNew")&&t.destroyRecord()})),this.set("member.labels",e)},createLabel(e){let t,n=this.get("member.labels"),s=n.map(e=>e.get("name").toLowerCase()) -if(e=e.trim(),!s.includes(e.toLowerCase()))return t=this._findLabelByName(e),t||(t=this.store.createRecord("label",{name:e})),n.pushObject(t)}},_findLabelByName(e){return this.availableLabels.find((function(t){return t.name.toLowerCase()===e.toLowerCase()}))}}) -e.default=t})),define("ghost-admin/components/gh-member-settings-form",["exports","moment"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({settings:Ember.inject.service(),feature:Ember.inject.service(),config:Ember.inject.service(),mediaQueries:Ember.inject.service(),setProperty:()=>{},hasMultipleSubscriptions:Ember.computed.gt("member.stripe",1),canShowStripeInfo:Ember.computed("member.isNew","settings.membersSubscriptionSettings",(function(){let e=this.settings.parseSubscriptionSettings(this.get("settings.membersSubscriptionSettings")),t=e&&!!e.paymentProcessors[0].config.secret_token&&!!e.paymentProcessors[0].config.public_token -return!(this.member.isNew||!t)})),subscriptions:Ember.computed("member.stripe",(function(){let e=this.member.get("stripe") -return e&&e.length>0?e.map(e=>({id:e.id,customer:e.customer,name:e.name||"",email:e.email||"",status:e.status,startDate:e.start_date?(0,t.default)(e.start_date).format("MMM DD YYYY"):"-",plan:e.plan,amount:parseInt(e.plan.amount)?e.plan.amount/100:0,cancelAtPeriodEnd:e.cancel_at_period_end,validUntil:e.current_period_end?(0,t.default)(e.current_period_end).format("MMM DD YYYY"):"-"})).reverse():null})),actions:{setProperty(e,t){this.setProperty(e,t)}}}) -e.default=n})) -define("ghost-admin/components/gh-members-chart",["exports","moment"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({feature:Ember.inject.service(),members:null,range:"30",selectedRange:Ember.computed("range",(function(){return this.get("availableRange").findBy("days",this.get("range"))})),availableRange:Ember.computed((function(){return[{name:"30 days",days:"30"},{name:"90 days",days:"90"},{name:"365 days",days:"365"},{name:"All time",days:"all-time"}]})),subData:Ember.computed("members.@each","range","feature.nightShift",(function(){let e,n,s,a=this.feature.nightShift,{members:l,range:r}=this -if("last-year"===r)n=(0,t.default)().startOf("year").subtract(1,"year"),s=(0,t.default)().endOf("year").subtract(1,"year").subtract(1,"day"),e=s.diff(n,"days") -else if("all-time"===r){let a=l.length?l.lastObject.get("createdAtUTC"):(0,t.default)().subtract(365,"days") -n=(0,t.default)(a),s=(0,t.default)(),e=s.diff(n,"days"),e<5&&(n=(0,t.default)().subtract(6,"days"),e=s.diff(n,"days")) -let r=this.getTicksForRange(e) -e=Math.ceil(e/r)*r,n=(0,t.default)().subtract(e,"days")}else e=parseInt(r),n=(0,t.default)().subtract(e,"days"),s=(0,t.default)() -let i=l.length||0,o=l.filter(e=>(0,t.default)(e.createdAtUTC).isSameOrAfter(n,"day")).length,u=l.filter(e=>(0,t.default)(e.createdAtUTC).isSame((0,t.default)(),"day")).length -return{startDateLabel:(0,t.default)(n).format("MMM DD, YYYY"),chartData:this.getChartData(l,(0,t.default)(n),(0,t.default)(s),a),totalSubs:i,totalSubsToday:u,totalSubsInRange:o}})),init(){this._super(...arguments),this.setChartJSDefaults()},actions:{changeDateRange(e){this.set("range",Ember.get(e,"days"))}},setChartJSDefaults(){let e=this.feature.nightShift -Chart.defaults.LineWithLine=Chart.defaults.line,Chart.controllers.LineWithLine=Chart.controllers.line.extend({draw:function(t){if(Chart.controllers.line.prototype.draw.call(this,t),this.chart.tooltip._active&&this.chart.tooltip._active.length){var n=this.chart.tooltip._active[0],s=this.chart.ctx,a=n.tooltipPosition().x,l=this.chart.scales["y-axis-0"].top,r=this.chart.scales["y-axis-0"].bottom -s.save(),s.beginPath(),s.moveTo(a,l),s.lineTo(a,r),s.lineWidth=1,s.strokeStyle=e?"rgba(62, 176, 239, 0.65)":"rgba(62, 176, 239, 0.8)",s.stroke(),s.restore()}}})},getTicksForRange:e=>e<=30?6:e<=90?18:24,getChartData(e,n,s,a){this.setChartJSDefaults() -let l=[],r=[],i=s.diff(n,"days") -for(var o=(0,t.default)(n);o.isSameOrBefore(s,"day");o.add(1,"days")){r.push(o.format("MMM DD, YYYY")) -let n=e.filter(e=>(0,t.default)(e.createdAtUTC).isSameOrBefore(o,"day")).length -l.push(n)}let u=this.getTicksForRange(i) -return{data:{labels:r,datasets:[{label:"Total members",cubicInterpolationMode:"monotone",data:l,fill:!1,backgroundColor:"rgba(62,176,239,.9)",pointRadius:0,pointHitRadius:10,borderColor:"rgba(62,176,239,.9)",borderJoinStyle:"round"}]},options:{responsive:!0,maintainAspectRatio:!1,layout:{padding:{top:5,right:10,bottom:5,left:10}},title:{display:!1},tooltips:{intersect:!1,mode:"index",displayColors:!1,backgroundColor:"#343f44",xPadding:7,yPadding:7,cornerRadius:5,caretSize:7,caretPadding:5,bodyFontSize:13,titleFontStyle:"normal",titleFontColor:"rgba(255, 255, 255, 0.7)",titleMarginBottom:4},hover:{mode:"index",intersect:!1,animationDuration:120},legend:{display:!1},scales:{xAxes:[{labelString:"Date",gridLines:{drawTicks:!1,color:a?"#333F44":"#E5EFF5",zeroLineColor:a?"#333F44":"#E5EFF5"},ticks:{display:!1,maxRotation:0,minRotation:0,padding:6,autoSkip:!1,maxTicksLimit:10,callback:function(e,t,n){let s=(n.length-1)/u,a=[] -for(let l=0;le.baseUrl===this.settings.get("bulkEmailSettings.baseUrl")):t})),blogDomain:Ember.computed("config.blogDomain",(function(){const e=(this.config.blogDomain||"").replace("https://","").replace("http://","").split("/") -return e&&e[0]||""})),subscriptionSettings:Ember.computed("settings.membersSubscriptionSettings",(function(){let e=this.settings.parseSubscriptionSettings(this.get("settings.membersSubscriptionSettings")),t=e.paymentProcessors.find(e=>"stripe"===e.adapter),n=t.config.plans.find(e=>"month"===e.interval),s=t.config.plans.find(e=>"year"===e.interval&&"Complimentary"!==e.name) -return n.amount=parseInt(n.amount)?n.amount/100:0,s.amount=parseInt(s.amount)?s.amount/100:0,t.config.plans={monthly:n,yearly:s},e.stripeConfig=t.config,e.allowSelfSignup=!!e.allowSelfSignup,e.fromAddress=e.fromAddress||"",e})),bulkEmailSettings:Ember.computed("settings.bulkEmailSettings",(function(){let e=this.get("settings.bulkEmailSettings")||{} -const{apiKey:n="",baseUrl:s=t.baseUrl,domain:a=""}=e -return{apiKey:n,baseUrl:s,domain:a}})),hasBulkEmailConfig:Ember.computed("settings.bulkEmailSettings",(function(){return!!this.get("settings.bulkEmailSettings").isConfig})),init(){this._super(...arguments),this.set("mailgunRegions",[t,n]),this.set("currencies",s)},actions:{setDefaultContentVisibility(e){this.setDefaultContentVisibility(e)},setBulkEmailSettings(e,n){let s=this.get("settings.bulkEmailSettings")||{} -s[e]=n.target.value,s.baseUrl||Ember.set(s,"baseUrl",t.baseUrl),this.setBulkEmailSettings(s)},setBulkEmailRegion(e){let t=this.get("settings.bulkEmailSettings")||{} -Ember.set(t,"baseUrl",e.baseUrl),this.setBulkEmailSettings(t)},setSubscriptionSettings(e,t){let n=this.settings.parseSubscriptionSettings(this.get("settings.membersSubscriptionSettings")),s=n.paymentProcessors.find(e=>"stripe"===e.adapter),a=s.config -if(a.product={name:this.settings.get("title")},"secret_token"!==e&&"public_token"!==e||(a[e]=t.target.value),"month"!==e&&"year"!==e||(a.plans=a.plans.map(n=>(e===n.interval&&"Complimentary"!==n.name&&(n.amount=parseInt(t.target.value)?100*t.target.value:0),n))),"allowSelfSignup"===e&&(n.allowSelfSignup=!n.allowSelfSignup),"fromAddress"===e&&(n.fromAddress=t.target.value),"currency"===e){if(s.config.plans.forEach(e=>{"Complimentary"!==e.name&&(e.currency=t.value)}),!s.config.plans.filter(e=>e.currency===t.value&&"Complimentary"===e.name).length){let e={name:"Complimentary",currency:t.value,interval:"year",amount:"0"} -s.config.plans.push(e)}s.config.currency=t.value}this.setMembersSubscriptionSettings(n)}}}) -e.default=a})),define("ghost-admin/components/gh-members-list-item",["exports","@glimmer/component","moment"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -class s extends t.default{get memberSince(){return(0,n.default)(this.args.member.createdAtUTC).from((0,n.default)())}}e.default=s})),define("ghost-admin/components/gh-members-no-members",["exports","ember-concurrency"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({session:Ember.inject.service(),store:Ember.inject.service(),notifications:Ember.inject.service(),actions:{addYourself(){return this.add.perform()}},add:(0,t.task)((function*(){const e=this.store.createRecord("member",{email:this.get("session.user.email"),name:this.get("session.user.name")}) -try{return this.notifications.showNotification("Member added".htmlSafe(),{description:"You've successfully added yourself as a member."}),yield e.save()}catch(t){t&&this.notifications.showAPIError(t,{key:"member.save"})}})).drop()}) -e.default=n})),define("ghost-admin/components/gh-mobile-nav-bar",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({ui:Ember.inject.service(),tagName:"nav",classNames:["gh-mobile-nav-bar"]}) -e.default=t})),define("ghost-admin/components/gh-nav-menu",["exports","ghost-admin/mixins/shortcuts","ember-basic-dropdown/utils/calculate-position","ghost-admin/utils/ctrl-or-cmd"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=Ember.Component.extend(t.default,{config:Ember.inject.service(),customViews:Ember.inject.service(),feature:Ember.inject.service(),ghostPaths:Ember.inject.service(),navigation:Ember.inject.service(),router:Ember.inject.service(),session:Ember.inject.service(),ui:Ember.inject.service(),whatsNew:Ember.inject.service(),tagName:"nav",classNames:["gh-nav"],iconStyle:"",showSearchModal:!1,shortcuts:null,isIntegrationRoute:Ember.computed.match("router.currentRouteName",/^settings\.integration/),isSettingsRoute:Ember.computed.match("router.currentRouteName",/^settings/),isOnSite:Ember.computed.equal("router.currentRouteName","site"),showMenuExtension:Ember.computed.and("config.clientExtensions.menu","session.user.isOwner"),showDropdownExtension:Ember.computed.and("config.clientExtensions.dropdown","session.user.isOwner"),showScriptExtension:Ember.computed.and("config.clientExtensions.script","session.user.isOwner"),showBilling:Ember.computed.reads("config.billingUrl"),init(){this._super(...arguments) -let e={} -e["".concat(s.default,"+k")]={action:"toggleSearchModal"},this.shortcuts=e},didReceiveAttrs(){this._setIconStyle()},didInsertElement(){this._super(...arguments),this.registerShortcuts()},willDestroyElement(){this.removeShortcuts(),this._super(...arguments)},actions:{transitionToOrRefreshSite(){let{currentRouteName:e}=this.router -"site"===e?Ember.getOwner(this).lookup("route:".concat(e)).refresh():this.router.transitionTo("site")},toggleSearchModal(){this.toggleProperty("showSearchModal")}},userDropdownPosition(e,t){let{horizontalPosition:s,verticalPosition:a,style:l}=(0,n.default)(...arguments),{width:r}=t.firstElementChild.getBoundingClientRect() -return l.right+=r-20,l["z-index"]=1100,{horizontalPosition:s,verticalPosition:a,style:l}},_setIconStyle(){let e=this.icon -if(e===this._icon)return -if(this._icon=e,e&&e.match(/^https?:\/\//i))return void this.set("iconStyle",Ember.String.htmlSafe("background-image: url(".concat(e,")"))) -let t,n=new RegExp("^".concat(this.get("ghostPaths.subdir"))),s=e||"favicon.ico" -s=s.replace(n,""),t=this.get("ghostPaths.url").join(this.get("config.blogUrl"),s).replace(/\/$/,""),t+="?t=".concat((new Date).valueOf()),this.set("iconStyle",Ember.String.htmlSafe("background-image: url(".concat(t,")")))}}) -e.default=a})),define("ghost-admin/components/gh-navitem-url-input",["exports","validator"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const{URI:n}=window -var s=Ember.TextField.extend({classNames:"gh-input",update(){},clearErrors(){},isBaseUrl:Ember.computed("baseUrl","value",(function(){return this.baseUrl===this.value})),didReceiveAttrs(){this._super(...arguments),this.set("value",this._makeAbsoluteUrl(this.url))},focusIn(e){this.set("hasFocus",!0),this.isBaseUrl&&Ember.run.next((function(e){let{length:t}=e.value -e.setSelectionRange(t,t)}),e.target)},keyDown(e){!this.isBaseUrl||8!==e.keyCode&&46!==e.keyCode||(this.set("value",""),e.preventDefault()),83===e.keyCode&&e.metaKey&&this.notifyUrlChanged()},keyPress(e){return this.clearErrors(),13===e.keyCode&&this.notifyUrlChanged(),!0},focusOut(){this.set("hasFocus",!1),this.notifyUrlChanged()},notifyUrlChanged(){let e=this.value.trim(),s=n.parse(e),a=this.baseUrl,l=n.parse(a) -function r(e){let t=e.getDomain() -return e.getPort()&&(t="".concat(t,":").concat(e.getPort())),t}let i=r(s),o=r(l) -if(this.set("value",e),t.default.isEmail(e))return e=this.update("mailto:".concat(e)),void this.set("value",e) -let u=e.match(/^#/),d=s.getPath()&&0===s.getPath().indexOf(l.getPath()) -"".concat(s.getPath(),"/")===l.getPath()&&(d=!0),!u&&(i===o||!i&&d)&&d&&(e=e.replace(/^[a-zA-Z0-9-]+:/,""),e=e.replace(/^\/\//,""),e=e.replace(o,""),e=e.replace(l.getPath(),""),"/"!==s.getPath().slice(-1)&&(e=e.replace(l.getPath().slice(0,-1),"")),""===e&&this.isNew||(e.match(/^\//)||(e="/".concat(e)),e.match(/\/$/)||e.match(/[.#?]/)||(e="".concat(e,"/")))),(e.match(/^(\/\/|#|[a-zA-Z0-9-]+:)/)||t.default.isURL(e)||t.default.isURL("".concat(o).concat(e)))&&(e=this.update(e),this.set("value",this._makeAbsoluteUrl(e)))},_makeAbsoluteUrl(e){return function(e){return!e.match(/\s/)&&!t.default.isURL(e)&&!e.match(/^(\/\/|#|[a-zA-Z0-9-]+:)/)}(e)&&(e=function(e,t){return"/"!==t[0]&&"/"!==e.slice(-1)?t="/".concat(t):"/"===t[0]&&"/"===e.slice(-1)&&(t=t.slice(1)),e+t}(this.baseUrl,e)),e}}) -e.default=s})),define("ghost-admin/components/gh-navitem",["exports","ghost-admin/mixins/validation-state"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend(t.default,{classNames:"gh-blognav-item",classNameBindings:["errorClass","navItem.isNew::gh-blognav-item--sortable"],new:!1,addItem(){},deleteItem(){},updateUrl(){},updateLabel(){},errors:Ember.computed.readOnly("navItem.errors"),errorClass:Ember.computed("hasError",(function(){return this.hasError?"gh-blognav-item--error":""})),actions:{addItem(e){this.addItem(e)},deleteItem(e){this.deleteItem(e)},updateUrl(e){return this.updateUrl(e,this.navItem)},updateLabel(e){return this.updateLabel(e,this.navItem)},clearLabelErrors(){this.get("navItem.errors").remove("label")},clearUrlErrors(){this.get("navItem.errors").remove("url")}},keyPress(e){13===e.keyCode&&this.get("navItem.isNew")&&(e.preventDefault(),Ember.run.scheduleOnce("actions",this,this.send,"addItem",this.navItem))}}) -e.default=n})),define("ghost-admin/components/gh-notification",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({notifications:Ember.inject.service(),tagName:"article",classNames:["gh-notification","gh-notification-passive"],classNameBindings:["typeClass"],message:null,typeClass:Ember.computed("message.type",(function(){let e,t=this.get("message.type"),n="" -return e={error:"red",warn:"yellow"},void 0!==e[t]&&(n+="gh-notification-".concat(e[t])),n})),didInsertElement(){this._super(...arguments),this._animationEndHandler=Ember.run.bind(this,(function(){"fade-out"===event.animationName&&this.notifications.closeNotification(this.message)})),this.element.addEventListener("animationend",this._animationEndHandler)},willDestroyElement(){this._super(...arguments),this.element.removeEventListener("animationend",this._animationEndHandler)},actions:{closeNotification(){this.notifications.closeNotification(this.message)}}}) -e.default=t})),define("ghost-admin/components/gh-notifications",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({notifications:Ember.inject.service(),tagName:"aside",classNames:"gh-notifications",messages:Ember.computed.alias("notifications.notifications")}) -e.default=t})),define("ghost-admin/components/gh-post-settings-menu",["exports","ghost-admin/mixins/settings-menu-component","ghost-admin/utils/bound-one-way","ghost-admin/utils/format-markdown","moment","ember-concurrency"],(function(e,t,n,s,a,l){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var r=Ember.Component.extend(t.default,{feature:Ember.inject.service(),store:Ember.inject.service(),config:Ember.inject.service(),ajax:Ember.inject.service(),ghostPaths:Ember.inject.service(),notifications:Ember.inject.service(),slugGenerator:Ember.inject.service(),session:Ember.inject.service(),settings:Ember.inject.service(),ui:Ember.inject.service(),post:null,_showSettingsMenu:!1,_showThrobbers:!1,canonicalUrlScratch:Ember.computed.alias("post.canonicalUrlScratch"),customExcerptScratch:Ember.computed.alias("post.customExcerptScratch"),codeinjectionFootScratch:Ember.computed.alias("post.codeinjectionFootScratch"),codeinjectionHeadScratch:Ember.computed.alias("post.codeinjectionHeadScratch"),metaDescriptionScratch:Ember.computed.alias("post.metaDescriptionScratch"),metaTitleScratch:Ember.computed.alias("post.metaTitleScratch"),ogDescriptionScratch:Ember.computed.alias("post.ogDescriptionScratch"),ogTitleScratch:Ember.computed.alias("post.ogTitleScratch"),twitterDescriptionScratch:Ember.computed.alias("post.twitterDescriptionScratch"),twitterTitleScratch:Ember.computed.alias("post.twitterTitleScratch"),slugValue:(0,n.default)("post.slug"),facebookDescription:Ember.computed.or("ogDescriptionScratch","customExcerptScratch","seoDescription"),facebookImage:Ember.computed.or("post.ogImage","post.featureImage"),facebookTitle:Ember.computed.or("ogTitleScratch","seoTitle"),twitterDescription:Ember.computed.or("twitterDescriptionScratch","customExcerptScratch","seoDescription"),twitterImage:Ember.computed.or("post.twitterImage","post.featureImage"),twitterTitle:Ember.computed.or("twitterTitleScratch","seoTitle"),showVisibilityInput:Ember.computed.or("session.user.isOwner","session.user.isAdmin","session.user.isEditor"),seoTitle:Ember.computed("metaTitleScratch","post.titleScratch",(function(){return this.metaTitleScratch||this.post.titleScratch||"(Untitled)"})),seoDescription:Ember.computed("post.scratch","metaDescriptionScratch",(function(){let e,t=this.metaDescriptionScratch||"",n=this.get("post.scratch"),[a]=n&&n.cards||[],l=a&&a[1]&&a[1].markdown -if(t)e=t -else{let t=document.createElement("div") -t.innerHTML=(0,s.default)(l,!1),e=t.textContent,e=e.replace(/\n+/g," ").trim()}return e})),seoURL:Ember.computed("post.{slug,canonicalUrl}","config.blogUrl",(function(){let e=this.get("config.blogUrl"),t=this.post.slug||"",n=this.post.canonicalUrl||"" -if(n)return n.match(/^\//)?"".concat(e).concat(n):n -{let n="".concat(e,"/").concat(t) -return t&&(n+="/"),n}})),didReceiveAttrs(){if(this._super(...arguments),this.showSettingsMenu&&!this._showSettingsMenu&&this.showThrobbers.perform(),!this.showSettingsMenu&&this._showSettingsMenu){let e=this.post,t=e.get("errors");(t.has("publishedAtBlogDate")||t.has("publishedAtBlogTime"))&&(e.set("publishedAtBlogTZ",e.get("publishedAtUTC")),e.validate({attribute:"publishedAtBlog"})),this.set("_showThrobbers",!1)}this._showSettingsMenu=this.showSettingsMenu},actions:{showSubview(e){this._super(...arguments),this.set("subview",e),Ember.run.later(this,(function(){this.set("_showThrobbers",!1)}),50)},closeSubview(){this._super(...arguments),this.set("subview",null),this.showThrobbers.perform()},discardEnter:()=>!1,toggleFeatured(){this.toggleProperty("post.featured"),this.get("post.isNew")||this.savePost.perform().catch(e=>{this.showError(e),this.post.rollbackAttributes()})},updateSlug(e){return this.updateSlug.perform(e).catch(e=>{this.showError(e),this.post.rollbackAttributes()})},setPublishedAtBlogDate(e){let t=this.post,n=(0,a.default)(e).format("YYYY-MM-DD") -if(t.get("errors").remove("publishedAtBlogDate"),!t.get("isNew")&&e!==t.get("publishedAtBlogDate"))return t.set("publishedAtBlogDate",n),this.savePost.perform() -t.validate({property:"publishedAtBlog"})},setPublishedAtBlogTime(e){let t=this.post -if(t.get("errors").remove("publishedAtBlogDate"),!t.get("isNew")&&e!==t.get("publishedAtBlogTime"))return t.set("publishedAtBlogTime",e),this.savePost.perform() -t.validate({property:"publishedAtBlog"})},setCustomExcerpt(e){let t=this.post -if(e!==t.get("customExcerpt"))return t.set("customExcerpt",e),t.validate({property:"customExcerpt"}).then(()=>this.savePost.perform())},setHeaderInjection(e){let t=this.post -if(e!==t.get("codeinjectionHead"))return t.set("codeinjectionHead",e),t.validate({property:"codeinjectionHead"}).then(()=>this.savePost.perform())},setFooterInjection(e){let t=this.post -if(e!==t.get("codeinjectionFoot"))return t.set("codeinjectionFoot",e),t.validate({property:"codeinjectionFoot"}).then(()=>this.savePost.perform())},setMetaTitle(e){let t=this.post -if(t.get("metaTitle")!==e)return t.set("metaTitle",e),t.validate({property:"metaTitle"}).then(()=>{if(!t.get("isNew"))return this.savePost.perform()})},setMetaDescription(e){let t=this.post -if(t.get("metaDescription")!==e)return t.set("metaDescription",e),t.validate({property:"metaDescription"}).then(()=>{if(!t.get("isNew"))return this.savePost.perform()})},setCanonicalUrl(e){let t=this.post -if(t.canonicalUrl!==e)return t.set("canonicalUrl",e),t.validate({property:"canonicalUrl"}).then(()=>{if(!t.get("isNew"))return this.savePost.perform()})},setOgTitle(e){let t=this.post -if(t.get("ogTitle")!==e)return t.set("ogTitle",e),t.validate({property:"ogTitle"}).then(()=>{if(!t.get("isNew"))return this.savePost.perform()})},setOgDescription(e){let t=this.post -if(t.get("ogDescription")!==e)return t.set("ogDescription",e),t.validate({property:"ogDescription"}).then(()=>{if(!t.get("isNew"))return this.savePost.perform()})},setTwitterTitle(e){let t=this.post -if(t.get("twitterTitle")!==e)return t.set("twitterTitle",e),t.validate({property:"twitterTitle"}).then(()=>{if(!t.get("isNew"))return this.savePost.perform()})},setTwitterDescription(e){let t=this.post -if(t.get("twitterDescription")!==e)return t.set("twitterDescription",e),t.validate({property:"twitterDescription"}).then(()=>{if(!t.get("isNew"))return this.savePost.perform()})},setCoverImage(e){this.set("post.featureImage",e),this.get("post.isNew")||this.savePost.perform().catch(e=>{this.showError(e),this.post.rollbackAttributes()})},clearCoverImage(){this.set("post.featureImage",""),this.get("post.isNew")||this.savePost.perform().catch(e=>{this.showError(e),this.post.rollbackAttributes()})},setOgImage(e){this.set("post.ogImage",e),this.get("post.isNew")||this.savePost.perform().catch(e=>{this.showError(e),this.post.rollbackAttributes()})},clearOgImage(){this.set("post.ogImage",""),this.get("post.isNew")||this.savePost.perform().catch(e=>{this.showError(e),this.post.rollbackAttributes()})},setTwitterImage(e){this.set("post.twitterImage",e),this.get("post.isNew")||this.savePost.perform().catch(e=>{this.showError(e),this.post.rollbackAttributes()})},clearTwitterImage(){this.set("post.twitterImage",""),this.get("post.isNew")||this.savePost.perform().catch(e=>{this.showError(e),this.post.rollbackAttributes()})},changeAuthors(e){let t=this.post -e.mapBy("id").join()!==t.get("authors").mapBy("id").join()&&(t.set("authors",e),t.validate({property:"authors"}),t.get("isNew")||this.savePost.perform().catch(e=>{this.showError(e),t.rollbackAttributes()}))},deletePost(){this.deletePost&&this.deletePost()}},showThrobbers:(0,l.task)((function*(){yield(0,l.timeout)(400),this.set("_showThrobbers",!0)})).restartable(),showError(e){e&&this.notifications.showAPIError(e)}}) -e.default=r})),define("ghost-admin/components/gh-post-settings-menu/email",["exports","ghost-admin/errors/email-failed-error","validator","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=Ember.Component.extend({ajax:Ember.inject.service(),ghostPaths:Ember.inject.service(),notifications:Ember.inject.service(),session:Ember.inject.service(),settings:Ember.inject.service(),post:null,sendTestEmailError:"",savePostTask:null,close(){},toggleEmailPreviewModal(){},emailSubject:Ember.computed.or("emailSubjectScratch","post.title"),emailSubjectScratch:Ember.computed.alias("post.emailSubjectScratch"),testEmailAddress:Ember.computed.oneWay("session.user.email"),mailgunError:Ember.computed("settings.memberSubscriptionSettings",(function(){return!this.settings.get("bulkEmailSettings.isEnabled")})),actions:{setEmailSubject(e){let t=this.post -if(t.get("emailSubject")!==e)return t.set("emailSubject",e),t.validate({property:"emailSubject"}).then(()=>{if(!t.get("isNew"))return this.savePostTask.perform()})},discardEnter:()=>!1},toggleEmailPreview:Ember._action((function(){this.toggleEmailPreviewModal()})),sendTestEmail:(0,s.task)((function*(){try{const e=this.post.id,t=this.testEmailAddress.trim() -if(!n.default.isEmail(t))return this.set("sendTestEmailError","Please enter a valid email"),!1 -if(!this.settings.get("bulkEmailSettings.isEnabled"))return this.set("sendTestEmailError","Please check your Mailgun configuration"),!1 -this.set("sendTestEmailError","") -const s=this.ghostPaths.url.api("/email_preview/posts",e),a={data:{emails:[t]},dataType:"json"} -return yield this.ajax.post(s,a)}catch(e){e&&this.set("sendTestEmailError","Error sending mail, please check your Mailgun configuration")}})).drop(),retryEmail:(0,s.task)((function*(){let{email:e}=this.post -if(e&&"failed"===e.status){yield e.retry() -let n=0 -for(;n<15e3&&(yield(0,s.timeout)(1e3),yield e.reload(),"submitted"!==e.status);)if("failed"===e.status)throw new t.default(e.error)}return!0}))}) -e.default=a})),define("ghost-admin/components/gh-posts-list-item",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({ghostPaths:Ember.inject.service(),session:Ember.inject.service(),tagName:"li",classNames:["gh-list-row","gh-posts-list-item"],post:null,isFeatured:Ember.computed.alias("post.featured"),isPage:Ember.computed.alias("post.page"),isDraft:Ember.computed.equal("post.status","draft"),isPublished:Ember.computed.equal("post.status","published"),isScheduled:Ember.computed.equal("post.status","scheduled"),authorNames:Ember.computed("post.authors.[]",(function(){return this.get("post.authors").map(e=>e.get("name")||e.get("email")).join(", ")})),primaryTag:Ember.computed("post.authors.[]",(function(){let e=this.get("post.tags.firstObject") -return!!e&&e.get("name")})),subText:Ember.computed("post.{excerpt,customExcerpt,metaDescription}",(function(){let e=this.get("post.excerpt")||"",t=this.get("post.customExcerpt"),n=this.get("post.metaDescription") -return Ember.isBlank(t)?Ember.isBlank(n)||(e=n):e=t,this.isScheduled?"".concat(e.slice(0,35),"..."):"".concat(e.slice(0,80),"...")}))}) -e.default=t})),define("ghost-admin/components/gh-profile-image",["exports","jquery","blueimp-md5","ember-ajax/request","validator","ember-concurrency"],(function(e,t,n,s,a,l){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var r=Ember.Component.extend({config:Ember.inject.service(),ghostPaths:Ember.inject.service(),email:"",size:180,debounce:300,imageFile:null,hasUploadedImage:!1,_defaultImageUrl:"",setImage(){},placeholderStyle:Ember.String.htmlSafe("background-image: url()"),avatarStyle:Ember.String.htmlSafe("display: none"),init(){this._super(...arguments) -this._defaultImageUrl=this.get("ghostPaths.assetRoot").replace(/\/$/,"")+"/img/user-image-0d67f7ca80917835524605cf4d106aef.png",this._setPlaceholderImage(this._defaultImageUrl)},didReceiveAttrs(){this._super(...arguments),this.get("config.useGravatar")&&this.setGravatar.perform()},actions:{imageSelected(e,t){let n=e[0] -if(n){let e=new FileReader -this.set("imageFile",n),this.setImage(n),e.addEventListener("load",()=>{let t=e.result -this.set("previewDataURL",t)},!1),e.readAsDataURL(n)}t()},openFileDialog(e){(0,t.default)(e.target).closest("figure").find('input[type="file"]').click()}},dragOver(e){if(e.dataTransfer){if(navigator.userAgent.indexOf("Chrome")>-1){let t=e.dataTransfer.effectAllowed -e.dataTransfer.dropEffect="move"===t||"linkMove"===t?"move":"copy"}e.stopPropagation(),e.preventDefault()}},dragLeave(e){e.preventDefault()},drop(e){e.preventDefault(),e.dataTransfer.files&&this.send("imageSelected",e.dataTransfer.files)},setGravatar:(0,l.task)((function*(){yield(0,l.timeout)(this.debounce) -let e=this.email -if(a.default.isEmail(e||"")){let a=this.size,r="//www.gravatar.com/avatar/".concat((0,n.default)(e),"?s=").concat(a,"&d=404") -try{yield(0,s.default)(r,{type:"HEAD"}),this._setAvatarImage(r),yield(0,l.timeout)(1e3),this._setPlaceholderImage("")}catch(t){this._setPlaceholderImage(this._defaultImageUrl),this._setAvatarImage("")}}})).restartable(),_setPlaceholderImage(e){this.set("placeholderStyle",Ember.String.htmlSafe("background-image: url(".concat(e,");")))},_setAvatarImage(e){let t=e?"block":"none" -this.set("avatarStyle",Ember.String.htmlSafe("background-image: url(".concat(e,"); display: ").concat(t)))},queueFile(e,t){let n=t.files[0].name -if(/\.(gif|jpe?g|png|svg?z)$/i.test(n)){let e=this.setImage -e&&e(t)}}}) -e.default=r})),define("ghost-admin/components/gh-progress-bar",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({tagName:"",percentage:0,isError:!1,progressStyle:"",didReceiveAttrs(){this._super(...arguments) -let e=this.percentage,t=e>0?"".concat(e,"%"):"0" -this.set("progressStyle",Ember.String.htmlSafe("width: ".concat(t)))}}) -e.default=t})),define("ghost-admin/components/gh-psm-authors-input",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({store:Ember.inject.service(),selectedAuthors:null,tagName:"",triggerId:"",availableAuthors:null,updateAuthors(){},availableAuthorNames:Ember.computed("availableAuthors.@each.name",(function(){return this.availableAuthors.map(e=>e.get("name").toLowerCase())})),init(){this._super(...arguments),this.store.query("user",{limit:"all"}),this.set("availableAuthors",this.store.peekAll("user"))},actions:{updateAuthors(e){this.updateAuthors(e)}}}) -e.default=t})),define("ghost-admin/components/gh-psm-tags-input",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({store:Ember.inject.service(),post:null,tagName:"",_availableTags:null,availableTags:Ember.computed.sort("_availableTags.[]",(function(e,t){return e.name.localeCompare(t.name,void 0,{ignorePunctuation:!0})})),availableTagNames:Ember.computed("availableTags.@each.name",(function(){return this.availableTags.map(e=>e.name.toLowerCase())})),init(){this._super(...arguments),this.store.query("tag",{limit:"all"}),this.set("_availableTags",this.store.peekAll("tag"))},actions:{matchTags:(e,t)=>e.toLowerCase()===t.trim().toLowerCase(),hideCreateOptionOnMatchingTag(e){return!this.availableTagNames.includes(e.toLowerCase())},updateTags(e){return this.get("post.tags").forEach((function(t){!e.includes(t)&&t.get("isNew")&&t.destroyRecord()})),this.set("post.tags",e)},createTag(e){let t,n=this.get("post.tags"),s=n.map(e=>e.get("name").toLowerCase()) -if(e=e.trim(),!s.includes(e.toLowerCase()))return t=this._findTagByName(e),t||(t=this.store.createRecord("tag",{name:e}),t.updateVisibility()),n.pushObject(t)}},_findTagByName(e){return this.availableTags.find((function(t){return t.name.toLowerCase()===e.toLowerCase()}))}}) -e.default=t})),define("ghost-admin/components/gh-psm-template-select",["exports","ember-concurrency"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({store:Ember.inject.service(),tagName:"",post:null,activeTheme:null,onTemplateSelect(){},customTemplates:Ember.computed("activeTheme.customTemplates.[]",(function(){let e=this.get("activeTheme.customTemplates")||[] -return Ember.isEmpty(e)?e:[{filename:"",name:"Default"},...e.sortBy("name")]})),matchedSlugTemplate:Ember.computed("post.{page,slug}","activeTheme.slugTemplates.[]",(function(){let e=this.get("post.slug"),t=this.post.constructor.modelName,[n]=this.get("activeTheme.slugTemplates").filter((function(n){return n.for.includes(t)&&n.slug===e})) -return n})),selectedTemplate:Ember.computed("post.customTemplate","customTemplates.[]",(function(){let e=this.customTemplates,t=this.get("post.customTemplate") -return e.findBy("filename",t)})),didInsertElement(){this._super(...arguments),this.loadActiveTheme.perform()},actions:{selectTemplate(e){this.onTemplateSelect(e.filename)}},loadActiveTheme:(0,t.task)((function*(){let e=this.store,t=yield e.peekAll("theme") -Ember.isEmpty(t)&&(t=yield e.findAll("theme")) -let n=t.filterBy("active",!0).get("firstObject") -this.set("activeTheme",n)}))}) -e.default=n})),define("ghost-admin/components/gh-psm-visibility-input",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const t=[{label:"Public",name:"public"},{label:"Members only",name:"members"},{label:"Paid-members only",name:"paid"}] -var n=Ember.Component.extend({settings:Ember.inject.service(),post:null,selectedVisibility:Ember.computed("post.visibility",(function(){return this.get("post.visibility")||this.settings.get("defaultContentVisibility")})),init(){this._super(...arguments),this.availableVisibilities=t},actions:{updateVisibility(e){this.post.set("visibility",e)}}}) -e.default=n})),define("ghost-admin/components/gh-publishmenu-draft",["exports","moment"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({feature:Ember.inject.service(),settings:Ember.inject.service(),session:Ember.inject.service(),post:null,saveType:null,_minDate:null,_publishedAtBlogTZ:null,"data-test-publishmenu-draft":!0,showSendEmail:Ember.computed.or("session.user.isOwner","session.user.isAdmin","session.user.isEditor"),disableEmailOption:Ember.computed("memberCount",(function(){return this.get("session.user.isOwnerOrAdmin")&&0===this.memberCount})),canSendEmail:Ember.computed("feature.labs.members","post.{displayName,email}",(function(){let e=this.feature.get("labs.members"),t=this.get("settings.bulkEmailSettings.isEnabled"),n="post"===this.post.displayName,s=!!this.post.email -return e&&t&&n&&!s})),didInsertElement(){this.post.set("publishedAtBlogTZ",this.get("post.publishedAtUTC")),this.send("setSaveType","publish")},actions:{setSaveType(e){if(this.saveType!==e){let n=!Ember.isEmpty(this.get("post.errors").errorsFor("publishedAtBlogDate")),s=!Ember.isEmpty(this.get("post.errors").errorsFor("publishedAtBlogTime")),a=this._getMinDate() -this.set("_minDate",a),this.setSaveType(e),"publish"===e?(this._publishedAtBlogTZ=n||s?this.get("post.publishedAtUTC"):this.get("post.publishedAtBlogTZ"),this.post.set("publishedAtBlogTZ",this.get("post.publishedAtUTC"))):!this._publishedAtBlogTZ||(0,t.default)(this._publishedAtBlogTZ).isBefore(a)?this.post.set("publishedAtBlogTZ",a):this.post.set("publishedAtBlogTZ",this._publishedAtBlogTZ),this.post.validate()}},setDate(e){let n=this.post,s=(0,t.default)(e).format("YYYY-MM-DD") -return n.set("publishedAtBlogDate",s),n.validate()},setTime(e){let t=this.post -return t.set("publishedAtBlogTime",e),t.validate()}},_getMinDate:()=>t.default.utc().add(5,"minutes")}) -e.default=n})),define("ghost-admin/components/gh-publishmenu-published",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({feature:Ember.inject.service(),"data-test-publishmenu-published":!0,didInsertElement(){this.setSaveType("publish")}}) -e.default=t})),define("ghost-admin/components/gh-publishmenu-scheduled",["exports","moment"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({clock:Ember.inject.service(),session:Ember.inject.service(),post:null,saveType:null,isClosing:null,_minDate:null,"data-test-publishmenu-scheduled":!0,disableEmailOption:Ember.computed.equal("memberCount",0),showSendEmail:Ember.computed.or("session.user.isOwner","session.user.isAdmin","session.user.isEditor"),timeToPublished:Ember.computed("post.publishedAtUTC","clock.second",(function(){let e=this.get("post.publishedAtUTC") -return e?(this.get("clock.second"),e.toNow(!0)):null})),didInsertElement(){this.set("_minDate",new Date),this.setSaveType("schedule")},actions:{setSaveType(e){this.saveType!==e&&(this.set("_minDate",new Date),this.setSaveType(e),"draft"===e?this.post.set("publishedAtBlogTZ",new Date):this.post.set("publishedAtBlogTZ",this.get("post.publishedAtUTC")),this.post.validate())},setDate(e){let n=this.post,s=(0,t.default)(e).format("YYYY-MM-DD") -return n.set("publishedAtBlogDate",s),n.validate()},setTime(e){let t=this.post -if(!this.isClosing)return t.set("publishedAtBlogTime",e),t.validate()}}}) -e.default=n})),define("ghost-admin/components/gh-publishmenu",["exports","ghost-admin/errors/email-failed-error","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=Ember.Component.extend({clock:Ember.inject.service(),backgroundTask:null,classNames:"gh-publishmenu",displayState:"draft",post:null,postStatus:"draft",runningText:null,saveTask:null,sendEmailWhenPublished:!1,typedDateError:null,_publishedAtBlogTZ:null,_previousStatus:null,isClosing:null,onClose(){},forcePublishedMenu:Ember.computed.reads("post.pastScheduledTime"),postState:Ember.computed("post.{isPublished,isScheduled}","forcePublishedMenu",(function(){return this.forcePublishedMenu||this.get("post.isPublished")?"published":this.get("post.isScheduled")?"scheduled":"draft"})),triggerText:Ember.computed("postState",(function(){let e=this.postState -return"published"===e?"Update":"scheduled"===e?"Scheduled":"Publish"})),_runningText:Ember.computed("postState","saveType",(function(){let e,t=this.saveType,n=this.postState -return"draft"===n&&(e="publish"===t?"Publishing":"Scheduling"),"published"===n&&(e="publish"===t?"Updating":"Unpublishing"),"scheduled"===n&&(e="schedule"===t?"Rescheduling":"Unscheduling"),e||"Publishing"})),buttonText:Ember.computed("postState","saveType",(function(){let e,t=this.saveType,n=this.postState -return"draft"===n&&(e="publish"===t?"Publish":"Schedule"),"published"===n&&(e="publish"===t?"Update":"Unpublish"),"scheduled"===n&&(e="schedule"===t?"Reschedule":"Unschedule"),e||"Publish"})),successText:Ember.computed("_previousStatus","postState",(function(){let e,t=this.postState,n=this._previousStatus -return"draft"===n&&(e="published"===t?"Published":"Scheduled"),"published"===n&&(e="draft"===t?"Unpublished":"Updated"),"scheduled"===n&&(e="draft"===t?"Unscheduled":"Rescheduled"),e})),didReceiveAttrs(){this._super(...arguments) -let e=this.postStatus -e!==this._postStatus&&(this.get("saveTask.isRunning")?this.get("saveTask.last").then(()=>{this.set("displayState",e)}):this.set("displayState",e)),this._postStatus=this.postStatus},actions:{setSaveType(e){let t=this.post -this.set("saveType",e),"draft"===e?t.set("statusScratch","draft"):"schedule"===e?t.set("statusScratch","scheduled"):"publish"===e&&t.set("statusScratch","published")},open(){this._cachePublishedAtBlogTZ(),this.set("isClosing",!1),this.get("post.errors").clear(),this.onOpen&&this.onOpen()},close(e,t){if(t){let e=!!t.target.closest(".ember-power-datepicker-content"),n=!!t.target.closest(".fullscreen-modal-container") -if(e||n)return!1}return this._skipDropdownCloseCleanup||this._cleanup(),this._skipDropdownCloseCleanup=!1,this.onClose(),this.set("isClosing",!0),!0}},confirmEmailSend:Ember._action((function(){return this._confirmEmailSend.perform()})),_confirmEmailSend:(0,n.task)((function*(){this.sendEmailConfirmed=!0 -let e=yield this.save.perform() -if(!e||e.errors.length)throw null -if(e.email&&"submitted"!==e.email.status)for(;yield(0,n.timeout)(1e3),e=yield e.reload(),"submitted"!==e.email.status;)if("failed"===e.email.status)throw new t.default(e.email.error) -return e})),retryEmailSend:Ember._action((function(){return this._retryEmailSend.perform()})),_retryEmailSend:(0,n.task)((function*(){if(!this.post.email)return -let e=yield this.post.email.retry() -if(e&&"submitted"!==e.status)for(;yield(0,n.timeout)(1e3),e=yield e.reload(),"submitted"!==e.status;)if("failed"===e.status)throw new t.default(e.error) -return e})),openEmailConfirmationModal:Ember._action((function(e){e&&(this._skipDropdownCloseCleanup=!0,e.actions.close()),this.set("showEmailConfirmationModal",!0)})),closeEmailConfirmationModal:Ember._action((function(){this.set("showEmailConfirmationModal",!1),this._cleanup()})),save:(0,n.task)((function*({dropdown:e}={}){let{post:t,sendEmailWhenPublished:n,sendEmailConfirmed:s,saveType:a,typedDateError:l}=this -if(l)return!1 -if("draft"!==t.status||t.email||!n||s){this.sendEmailConfirmed=!1,this.set("runningText",this._runningText),this.set("_previousStatus",this.get("post.status")),this.setSaveType(a) -try{return yield t.validate({property:"publishedAtBlog"}),t=yield this.saveTask.perform({sendEmailWhenPublished:n}),this.set("sendEmailWhenPublished",!1),this._cachePublishedAtBlogTZ(),t}catch(r){if(r)throw r}}else this.openEmailConfirmationModal(e)})),_cachePublishedAtBlogTZ(){this._publishedAtBlogTZ=this.get("post.publishedAtBlogTZ")},_cleanup(){this.set("showConfirmEmailModal",!1),this.set("sendEmailWhenPublished",!1),this.post.set("publishedAtBlogTZ",this._publishedAtBlogTZ),this.post.set("statusScratch",null),this.post.validate()}}) -e.default=s})),define("ghost-admin/components/gh-scroll-trigger",["exports","ember-in-viewport"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend(t.default,{enter(){},exit(){},registerElement(){},didInsertElement(){let e=this.triggerOffset||{} -"number"==typeof e&&(e={top:e,bottom:e,left:e,right:e}),this.set("viewportSpy",!0),this.set("viewportTolerance",{top:e.top,bottom:e.bottom,left:e.left,right:e.right}),this._super(...arguments),this.registerElement(this.element)},didEnterViewport(){return this.enter()},didExitViewport(){return this.exit()}}) -e.default=n})),define("ghost-admin/components/gh-search-input-trigger",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({actions:{captureMouseDown(e){e.stopPropagation()},search(e){Ember.isBlank(e)===this.select.isOpen&&(Ember.isBlank(e)?this.close():this.open(),Ember.isBlank(e)&&this._focusInput()),this.select.actions.search(e)},focusInput(){this._focusInput()},handleKeydown(e){("Escape"===e.key&&e.target.value||"Enter"===e.key)&&(this._previousKeyScope=key.getScope(),key.setScope("ignore"))},handleKeyup(){"ignore"===key.getScope()&&key.setScope(this._previousKeyScope)}},open(){this.select.actions.open()},close(){this.select.actions.close()},_focusInput(){let e=this.element&&this.element.querySelector("input") -e&&e.focus()}}) -e.default=t})),define("ghost-admin/components/gh-search-input",["exports","ember-concurrency"],(function(e,t){function n(e){return Ember.computed("content","currentSearch",(function(){return this.currentSearch&&this.content?this.content.filter(t=>{let n=this.currentSearch.toString().toLowerCase() -return t.category===e&&t.title.toString().toLowerCase().indexOf(n)>=0}):[]}))}Object.defineProperty(e,"__esModule",{value:!0}),e.computedGroup=n,e.default=void 0 -var s=Ember.Component.extend({ajax:Ember.inject.service(),notifications:Ember.inject.service(),router:Ember.inject.service(),store:Ember.inject.service(),content:null,contentExpiresAt:!1,contentExpiry:3e4,currentSearch:"",selection:null,onSelected(){},posts:n("Posts"),pages:n("Pages"),users:n("Users"),tags:n("Tags"),groupedContent:Ember.computed("posts","pages","users","tags",(function(){let e=[] -return Ember.isEmpty(this.posts)||e.pushObject({groupName:"Posts",options:this.posts}),Ember.isEmpty(this.pages)||e.pushObject({groupName:"Pages",options:this.pages}),Ember.isEmpty(this.users)||e.pushObject({groupName:"Users",options:this.users}),Ember.isEmpty(this.tags)||e.pushObject({groupName:"Tags",options:this.tags}),e})),init(){this._super(...arguments),this.content=[]},didRender(){this._super(...arguments) -let e=this.element.querySelector("input") -e&&e.focus()},actions:{openSelected(e){if(e){if(this.onSelected(e),"Posts"===e.category){let t=e.id.replace("post.","") -this.router.transitionTo("editor.edit","post",t)}if("Pages"===e.category){let t=e.id.replace("page.","") -this.router.transitionTo("editor.edit","page",t)}if("Users"===e.category){let t=e.id.replace("user.","") -this.router.transitionTo("staff.user",t)}if("Tags"===e.category){let t=e.id.replace("tag.","") -this.router.transitionTo("tag",t)}}},search(e){return this.performSearch.perform(e)}},performSearch:(0,t.task)((function*(e){return Ember.isBlank(e)?[]:(this.refreshContent.perform(),yield(0,t.timeout)(200),this.refreshContent.isRunning&&(yield(0,t.waitForProperty)(this,"refreshContent.isIdle")),this.set("currentSearch",e),this.groupedContent)})).restartable(),refreshContent:(0,t.task)((function*(){let e=[],t=new Date -if(this.contentExpiresAt>t)return!0 -this.set("content",[]),e.pushObject(this._loadPosts()),e.pushObject(this._loadPages()),e.pushObject(this._loadUsers()),e.pushObject(this._loadTags()) -try{yield Ember.RSVP.all(e)}catch(s){console.error(s)}let n=this.contentExpiry -this.set("contentExpiresAt",new Date(t.getTime()+n))})).drop(),_loadPosts(){let e=this.store,t="".concat(e.adapterFor("post").urlForQuery({},"post"),"/"),n=this.content -return this.ajax.request(t,{data:{fields:"id,title,page",limit:"all"}}).then(e=>{n.pushObjects(e.posts.map(e=>({id:"post.".concat(e.id),title:e.title,category:"Posts"})))}).catch(e=>{this.notifications.showAPIError(e,{key:"search.loadPosts.error"})})},_loadPages(){let e=this.store,t="".concat(e.adapterFor("page").urlForQuery({},"page"),"/"),n=this.content -return this.ajax.request(t,{data:{fields:"id,title,page",limit:"all"}}).then(e=>{n.pushObjects(e.pages.map(e=>({id:"page.".concat(e.id),title:e.title,category:"Pages"})))}).catch(e=>{this.notifications.showAPIError(e,{key:"search.loadPosts.error"})})},_loadUsers(){let e=this.store,t="".concat(e.adapterFor("user").urlForQuery({},"user"),"/"),n=this.content -return this.ajax.request(t,{data:{fields:"name,slug",limit:"all"}}).then(e=>{n.pushObjects(e.users.map(e=>({id:"user.".concat(e.slug),title:e.name,category:"Users"})))}).catch(e=>{this.notifications.showAPIError(e,{key:"search.loadUsers.error"})})},_loadTags(){let e=this.store,t="".concat(e.adapterFor("tag").urlForQuery({},"tag"),"/"),n=this.content -return this.ajax.request(t,{data:{fields:"name,slug",limit:"all"}}).then(e=>{n.pushObjects(e.tags.map(e=>({id:"tag.".concat(e.slug),title:e.name,category:"Tags"})))}).catch(e=>{this.notifications.showAPIError(e,{key:"search.loadTags.error"})})}}) -e.default=s})),define("ghost-admin/components/gh-simplemde",["exports","ghost-admin/config/environment","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=Ember.TextArea.extend({lazyLoader:Ember.inject.service(),autofocus:!1,options:null,value:null,placeholder:"",_editor:null,onChange(){},onEditorInit(){},onEditorDestroy(){},defaultOptions:Ember.computed((function(){return{autofocus:this.autofocus,indentWithTabs:!1,placeholder:this.placeholder,tabSize:4}})),init(){this._super(...arguments),Ember.isEmpty(this.options)&&this.set("options",{})},didReceiveAttrs(){if(this._super(...arguments),!Ember.isEmpty(this._editor)&&this.value!==this._editor.value()){let e=this._editor.codemirror.getDoc().getCursor() -this._editor.value(this.value),this._editor.codemirror.getDoc().setCursor(e)}},didInsertElement(){this._super(...arguments),this.initSimpleMDE.perform()},willDestroyElement(){this._editor.toTextArea(),delete this._editor,this._super(...arguments)},initSimpleMDE:(0,n.task)((function*(){yield this.lazyLoader.loadScript("simplemde","assets/simplemde/simplemde-4baaa06936329faf88dbb9a98ef4ee38.js") -let e=Ember.assign({element:document.getElementById(this.elementId)},this.defaultOptions,this.options) -"test"===t.default.environment&&(e.spellChecker=!1),this._editor=new SimpleMDE(e),this._editor.value(this.value||""),this._editor.codemirror.on("change",(e,t)=>{"setValue"!==t.origin&&this.onChange(this._editor.value())}),this._editor.codemirror.on("focus",()=>{this.onFocus()}),this._editor.codemirror.on("blur",()=>{this.onBlur()}),this.autofocus&&this._editor.codemirror.execCommand("goDocEnd"),this.onEditorInit(this._editor)}))}) -e.default=s})),define("ghost-admin/components/gh-site-iframe",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({config:Ember.inject.service(),tagName:"",didReceiveAttrs(){if(this.guid!==this._lastGuid){let e=document.querySelector("#site-frame") -e&&(e.src="".concat(this.config.get("blogUrl"),"/"))}this._lastGuid=this.guid}}) -e.default=t})),define("ghost-admin/components/gh-skip-link",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({tagName:"a",anchor:"",classNames:["sr-only","sr-only-focusable"],attributeBindings:["href"],href:Ember.String.htmlSafe("javascript:;"),click(){let e=document.querySelector(this.anchor) -if(e){document.body.scrollTop=e.getBoundingClientRect().top -let t=function(){e.removeAttribute("tabindex")} -e.setAttribute("tabindex",-1),e.focus(),e.addEventListener("blur",t),e.addEventListener("focusout",t)}}}) -e.default=t})) -define("ghost-admin/components/gh-tag-settings-form",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const{Handlebars:t}=Ember -var n=Ember.Component.extend({feature:Ember.inject.service(),config:Ember.inject.service(),tag:null,scratchTag:null,setProperty:()=>{},title:Ember.computed("tag.isNew",(function(){return this.get("tag.isNew")?"New tag":"Tag settings"})),seoTitle:Ember.computed("scratchTag.{title,metaTitle}",(function(){let e=this.scratchTag.metaTitle||"" -return e=e.length>0?e:this.scratchTag.title,e&&e.length>70&&(e=e.substring(0,70).trim(),e=t.Utils.escapeExpression(e),e=Ember.String.htmlSafe("".concat(e,"…"))),e})),seoURL:Ember.computed("scratchTag.slug",(function(){let e=this.get("config.blogUrl"),n=this.scratchTag.slug||"",s="".concat(e,"/tag/").concat(n) -return n&&(s+="/"),s.length>70&&(s=s.substring(0,70).trim(),s=t.Utils.escapeExpression(s),s=Ember.String.htmlSafe("".concat(s,"…"))),s})),seoDescription:Ember.computed("scratchTag.{description,metaDescription}",(function(){let e=this.scratchTag.metaDescription||"" -return e=e.length>0?e:this.scratchTag.description,e&&e.length>156&&(e=e.substring(0,156).trim(),e=t.Utils.escapeExpression(e),e=Ember.String.htmlSafe("".concat(e,"…"))),e})),actions:{setProperty(e,t){this.setProperty(e,t)},setCoverImage(e){this.setProperty("featureImage",e)},clearCoverImage(){this.setProperty("featureImage","")}}}) -e.default=n})),define("ghost-admin/components/gh-tags-list-item",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({ghostPaths:Ember.inject.service(),notifications:Ember.inject.service(),router:Ember.inject.service(),tagName:"li",classNames:["gh-list-row","gh-tags-list-item"],active:!1,id:Ember.computed.alias("tag.id"),slug:Ember.computed.alias("tag.slug"),name:Ember.computed.alias("tag.name"),isInternal:Ember.computed.alias("tag.isInternal"),description:Ember.computed.alias("tag.description"),postsCount:Ember.computed.alias("tag.count.posts"),postsLabel:Ember.computed("tag.count.posts",(function(){let e=this.postsCount||0 -return"".concat(e,1===e?" post":" posts")})),_deleteTag(){return this.tag.destroyRecord().then(()=>{},e=>{this._deleteTagFailure(e)})},_deleteTagFailure(e){this.notifications.showAPIError(e,{key:"tag.delete"})}}) -e.default=t})),define("ghost-admin/components/gh-task-button",["exports","ember-concurrency"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({tagName:"button",classNameBindings:["isRunning:appear-disabled","isIdleClass","isRunningClass","isSuccessClass","isFailureClass"],attributeBindings:["disabled","form","type","tabindex"],task:null,taskArgs:void 0,disabled:!1,defaultClick:!1,buttonText:"Save",idleClass:"",runningClass:"",showSuccess:!0,successText:"Saved",successClass:"gh-btn-green",failureText:"Retry",failureClass:"gh-btn-red",action:()=>{},runningText:Ember.computed.reads("buttonText"),hasRun:Ember.computed("task.performCount",(function(){return this.get("task.performCount")>this._initialPerformCount})),isIdleClass:Ember.computed("isIdle",(function(){return this.isIdle?this.idleClass:""})),isRunning:Ember.computed("task.last.isRunning","hasRun","showSuccess",(function(){let e=this.get("task.last.isRunning") -return this.hasRun&&this.get("task.last.value")&&!this.showSuccess&&(e=!0),e})),isRunningClass:Ember.computed("isRunning",(function(){return this.isRunning?this.runningClass||this.idleClass:""})),isSuccess:Ember.computed("hasRun","isRunning","task.last.value",(function(){if(!this.hasRun||this.isRunning||!this.showSuccess)return!1 -let e=this.get("task.last.value") -return!Ember.isBlank(e)&&!1!==e})),isSuccessClass:Ember.computed("isSuccess",(function(){return this.isSuccess?this.successClass:""})),isFailure:Ember.computed("hasRun","isRunning","isSuccess","task.last.error",(function(){return!(!this.hasRun||this.isRunning||this.isSuccess)&&void 0!==this.get("task.last.error")})),isFailureClass:Ember.computed("isFailure",(function(){return this.isFailure?this.failureClass:""})),isIdle:Ember.computed("isRunning","isSuccess","isFailure",(function(){return!this.isRunning&&!this.isSuccess&&!this.isFailure})),init(){this._super(...arguments),this._initialPerformCount=this.get("task.performCount")},click(){if(this.defaultClick)return void(this.isRunning||this._restartAnimation.perform()) -if(this.disabled)return!1 -let e=this.task,t=this.get("task.name"),n=this.get("task.last.task.name") -return this.isRunning&&t===n?void 0:(this.action(),e.perform(this.taskArgs),this._restartAnimation.perform(),!1)},mouseDown(e){this.disableMouseDown&&e.preventDefault()},_restartAnimation:(0,t.task)((function*(){let e=this.element.querySelector(".retry-animated") -e&&(e.classList.remove("retry-animated"),yield(0,t.timeout)(10),e.classList.add("retry-animated"))}))}) -e.default=n})),define("ghost-admin/components/gh-text-input",["exports","ghost-admin/mixins/text-input"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.TextField.extend(t.default,{classNames:"gh-input"}) -e.default=n})),define("ghost-admin/components/gh-textarea",["exports","ghost-admin/mixins/text-input"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.TextArea.extend(t.default,{resizeDetector:Ember.inject.service(),classNames:"gh-input",autoExpand:!1,didReceiveAttrs(){this._super(...arguments),this.autoExpand&&Ember.run.scheduleOnce("afterRender",this,this._autoExpand)},willInsertElement(){this._super(...arguments),this.autoExpand&&(this.element.style.resize="none")},didInsertElement(){this._super(...arguments),this.autoExpand&&Ember.run.scheduleOnce("afterRender",this,this._setupAutoExpand),this.didCreateTextarea&&this.didCreateTextarea(this.element)},willDestroyElement(){this._teardownAutoExpand(),this._super(...arguments)},_autoExpand(){let e=this.element -e&&(e.style.height=0,e.style.height="".concat(e.scrollHeight,"px"))},_setupAutoExpand(){this._resizeCallback=Ember.run.bind(this,this._onResize),this.resizeDetector.setup(this.autoExpand,this._resizeCallback),this._autoExpand()},_onResize(){this._autoExpand()},_teardownAutoExpand(){this.resizeDetector.teardown(this.autoExpand,this._resizeCallback)}}) -e.default=n})),define("ghost-admin/components/gh-theme-error-li",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({tagName:"",error:null,showDetails:!1,actions:{toggleDetails(){this.toggleProperty("showDetails")}}}) -e.default=t})),define("ghost-admin/components/gh-theme-table",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({themes:null,sortedThemes:Ember.computed("themes.@each.active",(function(){let e=this.themes.map(e=>{let t={},n=Ember.get(e,"package") -return t.model=e,t.name=Ember.get(e,"name"),t.label=n?"".concat(n.name):t.name,t.version=n?"".concat(n.version):"1.0",t.package=n,t.active=Ember.get(e,"active"),t.isDeletable=!t.active,t}),t=[] -e.forEach(n=>{e.filterBy("label",n.label).length>1&&t.pushObject(n)}),t.forEach(e=>{"casper"!==e.name&&(e.label="".concat(e.label," (").concat(e.name,")"))}) -let n=e.findBy("name","casper") -return n&&(n.label="".concat(n.label," (default)"),n.isDefault=!0,n.isDeletable=!1),e.sort((e,t)=>{let n=e.label.toLowerCase(),s=t.label.toLowerCase() -return ns?1:0})})).readOnly()}) -e.default=t})),define("ghost-admin/components/gh-timezone-select",["exports","moment"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({clock:Ember.inject.service(),classNames:["form-group","for-select"],activeTimezone:null,availableTimezones:null,update:()=>{},availableTimezoneNames:Ember.computed.mapBy("availableTimezones","name"),hasTimezoneOverride:Ember.computed("activeTimezone","availableTimezoneNames",(function(){let e=this.activeTimezone -return!this.availableTimezoneNames.includes(e)})),selectedTimezone:Ember.computed("activeTimezone","availableTimezones","hasTimezoneOverride",(function(){let e=this.hasTimezoneOverride,t=this.activeTimezone,n=this.availableTimezones -return e?{name:"",label:""}:n.filterBy("name",t).get("firstObject")})),selectableTimezones:Ember.computed("availableTimezones","hasTimezoneOverride",(function(){let e=this.hasTimezoneOverride,t=this.availableTimezones -return e?[{name:"",label:""},...t]:t})),localTime:Ember.computed("hasTimezoneOverride","activeTimezone","selectedTimezone","clock.second",(function(){let e=this.hasTimezoneOverride?this.activeTimezone:this.get("selectedTimezone.name") -return this.get("clock.second"),e?(0,t.default)().tz(e).format("HH:mm:ss"):(0,t.default)().utc().format("HH:mm:ss")})),actions:{setTimezone(e){this.update(e)}}}) -e.default=n})),define("ghost-admin/components/gh-token-input",["exports","ghost-admin/utils/computed-fallback-if-undefined","ember-power-select/utils/group-utils","@ember-decorators/component","ember-concurrency"],(function(e,t,n,s,a){var l,r,i,o,u,d,c,m,p,h,g,f,b,v,y,w,_,E,k,x,C,H,M -function j(e,t,n,s){n&&Object.defineProperty(e,t,{enumerable:n.enumerable,configurable:n.configurable,writable:n.writable,value:n.initializer?n.initializer.call(s):void 0})}function P(e,t,n,s,a){var l={} -return Object.keys(s).forEach((function(e){l[e]=s[e]})),l.enumerable=!!l.enumerable,l.configurable=!!l.configurable,("value"in l||l.initializer)&&(l.writable=!0),l=n.slice().reverse().reduce((function(n,s){return s(e,t,n)||n}),l),a&&void 0!==l.initializer&&(l.value=l.initializer?l.initializer.call(a):void 0,l.initializer=void 0),void 0===l.initializer&&(Object.defineProperty(e,t,l),l=null),l}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const{Handlebars:S}=Ember -var T=(l=(0,s.tagName)(""),r=(0,t.default)(!0),i=(0,t.default)(!1),o=(0,t.default)("name"),u=(0,t.default)(n.defaultMatcher),d=(0,t.default)("name"),c=(0,t.default)("gh-token-input/trigger"),m=(0,t.default)("power-select-vertical-collection-options"),p=Ember.computed("options.[]","selected.[]"),h=(0,a.task)((function*(){let e=yield this.options,t=yield this.selected -return e.filter(e=>!t.includes(e))})),g=(0,a.task)((function*(e,t){let n=(yield this.optionsWithoutSelected).toArray() -if(0===e.length)return n -let s=this.search -if(s){let n=yield s(e,t) -return n.toArray&&(n=n.toArray()),this._addCreateOption(e,n),n}return n=this._filter(Ember.A(n),e),this._addCreateOption(e,n),n})),l((M=class extends Ember.Component{constructor(...e){super(...e),j(this,"allowCreation",v,this),j(this,"closeOnSelect",y,this),j(this,"labelField",w,this),j(this,"matcher",_,this),j(this,"searchField",E,this),j(this,"triggerComponent",k,this),j(this,"optionsComponent",x,this),j(this,"optionsWithoutSelectedTask",C,this),j(this,"searchAndSuggestTask",H,this)}get optionsWithoutSelected(){return this.optionsWithoutSelectedTask.perform()}handleKeydown(e,t){if(8===t.keyCode&&Ember.isBlank(t.target.value)){return e.selected[e.selected.length-1]&&(this.onChange(e.selected.slice(0,-1),e),e.actions.search(""),e.actions.open(t)),!1}return!!(9!==t.keyCode||Ember.isBlank(t.target.value)||!e.highlighted||e.selected&&-1!==e.selected.indexOf(e.highlighted))||(e.actions.choose(e.highlighted,t),t.preventDefault(),!1)}handleFocus(){key.setScope("gh-token-input"),this.onFocus&&this.onFocus(...arguments)}handleBlur(){key.setScope("default"),this.onBlur&&this.onBlur(...arguments)}searchAndSuggest(e,t){return this.searchAndSuggestTask.perform(e,t)}selectOrCreate(e,t,n){if(n&&"Space"===n.code)return void t.actions.search("".concat(t.searchText," ")) -if(!Ember.isArray(e))return -let s=e.find(e=>e.__isSuggestion__) -s?this.onCreate(s.__value__,t):this.onChange(e,t),t.actions.search("")}defaultHighlighted(e){let{results:t}=e,s=(0,n.advanceSelectableOption)(t,void 0,1) -return t.length>1&&s.__isSuggestion__&&(s=(0,n.advanceSelectableOption)(t,s,1)),s}_addCreateOption(e,t){this._shouldShowCreateOption(e,t)&&t.unshift(this._buildSuggestionForTerm(e))}_shouldShowCreateOption(e,t){return!!this.allowCreation&&(this.showCreateWhen?this.showCreateWhen(e,t):this._hideCreateOptionOnSameTerm(e,t))}_buildSuggestionForTerm(e){return{__isSuggestion__:!0,__value__:e,text:this._buildSuggestionLabel(e)}}_hideCreateOptionOnSameTerm(e,t){let n=this.searchField -return!t.findBy(n,e)}_filter(e,t){let s -return s=this.searchField?(e,t)=>this.matcher(Ember.get(e,this.searchField),t):(e,t)=>this.matcher(e,t),(0,n.filterOptions)(e||[],t,s)}_buildSuggestionLabel(e){return this.buildSuggestion?this.buildSuggestion(e):Ember.String.htmlSafe('Add "'.concat(S.Utils.escapeExpression(e),'"...'))}},v=P((b=M).prototype,"allowCreation",[r],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),y=P(b.prototype,"closeOnSelect",[i],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),w=P(b.prototype,"labelField",[o],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),_=P(b.prototype,"matcher",[u],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),E=P(b.prototype,"searchField",[d],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),k=P(b.prototype,"triggerComponent",[c],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),x=P(b.prototype,"optionsComponent",[m],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),P(b.prototype,"optionsWithoutSelected",[p],Object.getOwnPropertyDescriptor(b.prototype,"optionsWithoutSelected"),b.prototype),P(b.prototype,"handleKeydown",[Ember._action],Object.getOwnPropertyDescriptor(b.prototype,"handleKeydown"),b.prototype),P(b.prototype,"handleFocus",[Ember._action],Object.getOwnPropertyDescriptor(b.prototype,"handleFocus"),b.prototype),P(b.prototype,"handleBlur",[Ember._action],Object.getOwnPropertyDescriptor(b.prototype,"handleBlur"),b.prototype),P(b.prototype,"searchAndSuggest",[Ember._action],Object.getOwnPropertyDescriptor(b.prototype,"searchAndSuggest"),b.prototype),P(b.prototype,"selectOrCreate",[Ember._action],Object.getOwnPropertyDescriptor(b.prototype,"selectOrCreate"),b.prototype),C=P(b.prototype,"optionsWithoutSelectedTask",[h],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),H=P(b.prototype,"searchAndSuggestTask",[g],{configurable:!0,enumerable:!0,writable:!0,initializer:null}),f=b))||f) -e.default=T})),define("ghost-admin/components/gh-token-input/label-token",["exports","ember-drag-drop/components/draggable-object"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({attributeBindings:["title"],classNames:["label-token"],title:"Label"}) -e.default=n})),define("ghost-admin/components/gh-token-input/select-multiple",["exports","jquery","ember-power-select/components/power-select-multiple","ghost-admin/templates/components/gh-token-input/select-multiple","@ember-decorators/component"],(function(e,t,n,s,a){var l,r -function i(e,t,n,s,a){var l={} -return Object.keys(s).forEach((function(e){l[e]=s[e]})),l.enumerable=!!l.enumerable,l.configurable=!!l.configurable,("value"in l||l.initializer)&&(l.writable=!0),l=n.slice().reverse().reduce((function(n,s){return s(e,t,n)||n}),l),a&&void 0!==l.initializer&&(l.value=l.initializer?l.initializer.call(a):void 0,l.initializer=void 0),void 0===l.initializer&&(Object.defineProperty(e,t,l),l=null),l}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const o="click.ghToken mouseup.ghToken touchend.ghToken" -let u=(0,a.tagName)("div")(l=(0,a.layout)(s.default)((i((r=class extends n.default{constructor(...e){super(...e),function(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(this,"_canFocus",!0)}willDestroyElement(){super.willDestroyElement(...arguments),this._allowFocusListener&&(0,t.default)(window).off(o,this._allowFocusListener)}optionMouseDown(e){1!==e.which||e.ctrlKey||this._denyFocus(e)}optionTouchStart(e){this._denyFocus(e)}handleFocus(){this._canFocus&&super.handleFocus(...arguments)}_denyFocus(){this._canFocus&&(this._canFocus=!1,this._allowFocusListener=Ember.run.bind(this,this._allowFocus),(0,t.default)(window).on(o,this._allowFocusListener))}_allowFocus(){this._canFocus=!0,(0,t.default)(window).off(o,this._allowFocusListener),this._allowFocusListener=null}}).prototype,"optionMouseDown",[Ember._action],Object.getOwnPropertyDescriptor(r.prototype,"optionMouseDown"),r.prototype),i(r.prototype,"optionTouchStart",[Ember._action],Object.getOwnPropertyDescriptor(r.prototype,"optionTouchStart"),r.prototype),i(r.prototype,"handleFocus",[Ember._action],Object.getOwnPropertyDescriptor(r.prototype,"handleFocus"),r.prototype),l=r))||l)||l -e.default=u})),define("ghost-admin/components/gh-token-input/suggested-option",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({tagName:""}) -e.default=t})),define("ghost-admin/components/gh-token-input/tag-token",["exports","ember-drag-drop/components/draggable-object"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({attributeBindings:["title"],classNames:["tag-token"],classNameBindings:["internal:tag-token--internal"],internal:Ember.computed.readOnly("content.isInternal"),primary:Ember.computed("idx","internal",(function(){return!this.internal&&0===this.idx})),title:Ember.computed("internal",(function(){return this.internal?"Internal tag":""}))}) -e.default=n})),define("ghost-admin/components/gh-token-input/trigger",["exports","ember-power-select/components/power-select-multiple/trigger"],(function(e,t){var n -function s(e,t,n,s,a){var l={} -return Object.keys(s).forEach((function(e){l[e]=s[e]})),l.enumerable=!!l.enumerable,l.configurable=!!l.configurable,("value"in l||l.initializer)&&(l.writable=!0),l=n.slice().reverse().reduce((function(n,s){return s(e,t,n)||n}),l),a&&void 0!==l.initializer&&(l.value=l.initializer?l.initializer.call(a):void 0,l.initializer=void 0),void 0===l.initializer&&(Object.defineProperty(e,t,l),l=null),l}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -let a=(s((n=class extends t.default{handleOptionMouseDown(e){if(!e.target.closest("[data-selected-index]")){let t=this.get("extra.optionMouseDown") -if(t)return t(e)}return this.chooseOption(e)}handleOptionTouchStart(e){let t=this.get("extra.optionTouchStart") -if(t)return t(e)}reorderItems(){let e=this.select.selected.slice() -this.select.actions.select(e)}handleKeydown(e){if(this.onKeydown&&!1===this.onKeydown(e))return e.stopPropagation(),!1 -if(8===e.keyCode&&(e.stopPropagation(),Ember.isBlank(e.target.value))){let t=this.select.selected[this.select.selected.length-1] -if(t){if(this.select.actions.select(this.get("buildSelection")(t,this.select),e),"string"==typeof t)this.select.actions.search(t) -else{let e=this.get("searchField") -this.select.actions.search(Ember.get(t,e))}this.select.actions.open(e)}}}}).prototype,"handleOptionMouseDown",[Ember._action],Object.getOwnPropertyDescriptor(n.prototype,"handleOptionMouseDown"),n.prototype),s(n.prototype,"handleOptionTouchStart",[Ember._action],Object.getOwnPropertyDescriptor(n.prototype,"handleOptionTouchStart"),n.prototype),s(n.prototype,"reorderItems",[Ember._action],Object.getOwnPropertyDescriptor(n.prototype,"reorderItems"),n.prototype),s(n.prototype,"handleKeydown",[Ember._action],Object.getOwnPropertyDescriptor(n.prototype,"handleKeydown"),n.prototype),n) -e.default=a})),define("ghost-admin/components/gh-tour-item",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -let t=0,n={"top-left":{attachment:"top left",targetAttachment:"bottom center",offset:"0 28px"},top:{attachment:"top center",targetAttachment:"bottom center"},"top-right":{attachment:"top right",targetAttachment:"bottom center",offset:"0 -28px"},"right-top":{attachment:"top right",targetAttachment:"middle left",offset:"28px 0"},right:{attachment:"middle right",targetAttachment:"middle left"},"right-bottom":{attachment:"bottom right",targetAttachment:"middle left",offset:"-28px 0"},"bottom-right":{attachment:"bottom right",targetAttachment:"top center",offset:"0 -28px"},bottom:{attachment:"bottom center",targetAttachment:"top center"},"bottom-left":{attachment:"bottom left",targetAttachment:"top center",offset:"0 28px"},"left-bottom":{attachment:"bottom left",targetAttachment:"middle right",offset:"-28px 0"},left:{attachment:"middle left",targetAttachment:"middle right"},"left-top":{attachment:"top left",targetAttachment:"middle right",offset:"28px 0"}} -var s=Ember.Component.extend({mediaQueries:Ember.inject.service(),tour:Ember.inject.service(),tagName:"",throbberId:null,target:null,throbberAttachment:"middle center",popoverTriangleClass:"top",isOpen:!1,_elementId:null,_throbber:null,_throbberElementId:null,_throbberElementSelector:null,_popoverAttachment:null,_popoverTargetAttachment:null,_popoverOffset:null,isMobile:Ember.computed.reads("mediaQueries.isMobile"),isVisible:Ember.computed("isMobile","_throbber",(function(){let e=this.isMobile,t=!Ember.isBlank(this._throbber) -return!e&&t})),init(){this._super(...arguments),this._elementId=t+=1,this._throbberElementId="throbber-".concat(this._elementId),this._throbberElementSelector="#throbber-".concat(this._elementId),this._handleOptOut=Ember.run.bind(this,this._remove),this._handleViewed=Ember.run.bind(this,this._removeIfViewed),this.tour.on("optOut",this._handleOptOut),this.tour.on("viewed",this._handleViewed)},didReceiveAttrs(){let e=this.throbberId,t=this.tour.activeThrobber(e),s=this.popoverTriangleClass,a=n[s] -this._throbber=t,this._popoverAttachment=a.attachment,this._popoverTargetAttachment=a.targetAttachment,this._popoverOffset=a.offset},willDestroyElement(){this.tour.off("optOut",this._handleOptOut),this.tour.off("viewed",this._handleViewed),this._super(...arguments)},actions:{open(){this.set("isOpen",!0)},close(){this._close()},markAsViewed(){let e=this.throbberId -this.tour.markThrobberAsViewed(e),this.set("_throbber",null),this._close()},optOut(){this.tour.optOut(),this.set("_throbber",null),this._close()}},_removeIfViewed(e){e===this.throbberId&&this._remove()},_remove(){this.set("_throbber",null)},_close(){this.set("isOpen",!1)}}) -e.default=s})),define("ghost-admin/components/gh-trim-focus-input",["exports","ghost-admin/components/gh-text-input"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({shouldFocus:!0,focusOut(e){this._trimInput(e.target.value,e),this._super(...arguments)},_trimInput(e,t){e&&"function"==typeof e.trim&&(e=e.trim()),this.element.value=e,this._elementValueDidChange(t) -let n=this.input -n&&n(t)}}) -e.default=n})),define("ghost-admin/components/gh-unsplash-photo",["exports","jquery"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({height:0,photo:null,tagName:"",width:1200,zoomed:!1,select(){},zoom(){},style:Ember.computed("zoomed",(function(){return Ember.String.htmlSafe(this.zoomed?"width: auto; margin: 0;":"")})),containerStyle:Ember.computed("photo.color","zoomed",(function(){let e=[],t=this.get("photo.ratio"),n=this.zoomed -return e.push("background-color: ".concat(this.get("photo.color"))),n?e.push("cursor: zoom-out"):e.push("padding-bottom: ".concat(100*t,"%")),Ember.String.htmlSafe(e.join("; "))})),imageUrl:Ember.computed("photo.urls.regular",(function(){let e=this.get("photo.urls.regular") -return e=e.replace("&w=1080","&w=1200"),e})),didReceiveAttrs(){this._super(...arguments),this.set("height",this.width*this.photo.ratio),this.zoomed&&!this._zoomed&&this._setZoomedSize(),this._zoomed=this.zoomed,this.zoomed&&!this._resizeHandler?this._setupResizeHandler():!this.zoomed&&this._resizeHandler&&this._teardownResizeHandler()},didInsertElement(){this._super(...arguments),this._hasRendered=!0,this.zoomed&&this._setZoomedSize()},willDestroyElement(){this._super(...arguments),this._teardownResizeHandler()},actions:{select(e){e.preventDefault(),e.stopPropagation(),this.select(this.photo)},zoom(e){let n=(0,t.default)(e.target) -!n.is("a")&&n.closest("a").hasClass("gh-unsplash-photo")&&(e.preventDefault(),this.zoom(this.photo)),e.stopPropagation()}},_setZoomedSize(){if(!this._hasRendered)return!1 -let e=document.querySelector('[data-unsplash-zoomed-photo="'.concat(this.photo.id,'"]')) -e.style.width="100%",e.style.height="100%" -let t=e.getBoundingClientRect(),n=this.photo.ratio,s={width:t.height/n,height:t.height},a={width:t.width,height:t.width*n},l=null -l=n<=1?a.height>t.height?s:a:s.width>t.width?a:s,e.style.width="".concat(l.width,"px"),e.style.height="".concat(l.height,"px")},_setupResizeHandler(){this._resizeHandler||(this._resizeHandler=Ember.run.bind(this,this._handleResize),window.addEventListener("resize",this._resizeHandler))},_teardownResizeHandler(){window.removeEventListener("resize",this._resizeHandler),this._resizeHandler=null},_handleResize(){this._throttleResize=Ember.run.throttle(this,this._setZoomedSize,100)}}) -e.default=n})),define("ghost-admin/components/gh-unsplash",["exports","ghost-admin/mixins/shortcuts"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend(t.default,{resizeDetector:Ember.inject.service(),unsplash:Ember.inject.service(),ui:Ember.inject.service(),shortcuts:null,tagName:"",zoomedPhoto:null,searchTerm:null,close(){},select(){},sideNavHidden:Ember.computed.or("ui.{isFullScreen,showMobileMenu}"),init(){this._super(...arguments),this.shortcuts={escape:{action:"handleEscape",scope:"all"}}},didReceiveAttrs(){this._super(...arguments),this.searchTerm!==this._searchTerm&&this.unsplash.updateSearch(this.searchTerm),this._searchTerm=this.searchTerm},didInsertElement(){this._super(...arguments),this._resizeCallback=Ember.run.bind(this,this._handleResize),this.resizeDetector.setup("[data-unsplash]",this._resizeCallback),this.registerShortcuts()},willDestroyElement(){this.resizeDetector.teardown("[data-unsplash]",this._resizeCallback),this.removeShortcuts(),this.send("resetKeyScope"),this._super(...arguments)},actions:{loadNextPage(){this.unsplash.loadNextPage()},search(e){this.unsplash.updateSearch(e),this.send("closeZoom")},zoomPhoto(e){this.set("zoomedPhoto",e)},closeZoom(){this.set("zoomedPhoto",null)},select(e){this.unsplash.triggerDownload(e) -let t={src:e.urls.regular.replace(/&w=1080/,"&w=2000"),alt:e.description||"",caption:'Photo by ').concat(e.user.name,' / Unsplash')} -this.select(t),this.close()},close(){this.close()},retry(){this.unsplash.retryLastRequest()},setKeyScope(){key.setScope("unsplash")},resetKeyScope(){key.setScope("default")},handleEscape(){if(this.zoomedPhoto)return this.send("closeZoom") -this.close()}},_handleResize(e){let t=e.clientWidth,n=3 -t<=540?n=1:t<=940&&(n=2),this.unsplash.changeColumnCount(n)}}) -e.default=n})),define("ghost-admin/components/gh-uploader",["exports","ghost-admin/utils/ghost-paths","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const s=Ember.Object.extend({file:null,total:0,loaded:0,init(){this._super(...arguments),this.total=this.file&&this.file.size||0},update({loaded:e,total:t}){this.total=t,this.loaded=e}}) -var a=Ember.Component.extend({ajax:Ember.inject.service(),tagName:"",accept:"",extensions:"",files:null,paramName:"file",paramsHash:null,resourceName:"images",uploadUrl:null,errors:null,totalSize:0,uploadedSize:0,uploadPercentage:0,uploadUrls:null,_defaultUploadUrl:"/images/upload/",_files:null,_uploadTrackers:null,onCancel(){},onComplete(){},onFailed(){},onStart(){},onUploadStart(){},onUploadFailure(){},onUploadSuccess(){},init(){this._super(...arguments),this.set("errors",[]),this.set("uploadUrls",[]),this._uploadTrackers=[],this.paramsHash||this.set("paramsHash",{purpose:"image"})},didReceiveAttrs(){this._super(...arguments),this.uploadUrl||this.set("uploadUrl",this._defaultUploadUrl) -let e=this.files -this._setFiles(e)},actions:{setFiles(e,t){this._setFiles(e),t&&t()},cancel(){this._reset(),this.onCancel()}},_setFiles(e){this.set("files",e),e&&e!==this._files&&(this.get("_uploadFiles.isRunning")&&console.error("Adding new files whilst an upload is in progress is not supported."),this._files=e,this._validate()&&this._uploadFiles.perform(e))},_validate(){let e=this.files,t=this.validate||this._defaultValidator.bind(this),n=[],s=[] -for(let a=0;a{let t=new window.XMLHttpRequest -return t.upload.addEventListener("progress",t=>{Ember.run(()=>{e.update(t),this._updateProgress()})},!1),t}}) -e.update({loaded:n.size,total:n.size}),this._updateProgress() -try{t=JSON.parse(u)}catch(i){if(!(i instanceof SyntaxError))throw i}if(t){let e=Ember.get(t,this.resourceName) -e&&Ember.isArray(e)&&e[0]&&(o=Ember.get(e[0],"url"))}let d={url:o,fileName:n.name} -return this.uploadUrls[s]=d,this.onUploadSuccess(d),!0}catch(o){let e=o.payload.errors&&o.payload.errors[0].message||"",t=o.payload.errors&&o.payload.errors[0].context||"" -e||(e=o.message) -let s={message:e,context:t,fileName:n.name} -this.errors.pushObject(s),this.onUploadFailure(s)}})).maxConcurrency(2).enqueue(),_getFormData(e){let t=new FormData -return t.append(this.paramName,e,e.name),Object.keys(this.paramsHash||{}).forEach(e=>{t.append(e,this.paramsHash[e])}),t},_updateProgress(){if(this.isDestroyed||this.isDestroying)return -let e=this._uploadTrackers,t=e.reduce((e,t)=>e+t.get("total"),0),n=e.reduce((e,t)=>e+t.get("loaded"),0) -if(this.set("totalSize",t),this.set("uploadedSize",n),0===t||0===n)return -let s=Math.round(n/t*100) -this.set("uploadPercentage",s)},_reset(){this.set("errors",[]),this.set("totalSize",0),this.set("uploadedSize",0),this.set("uploadPercentage",0),this.set("uploadUrls",[]),this._uploadTrackers=[]}}) -e.default=a})),define("ghost-admin/components/gh-url-preview",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({config:Ember.inject.service(),classNames:"ghost-url-preview",prefix:null,slug:null,url:Ember.computed("slug",(function(){let e=this.get("config.blogUrl"),t=e.substr(e.indexOf("://")+3),n=this.prefix?"".concat(this.prefix,"/"):"",s=this.slug?"".concat(this.slug,"/"):"" -return"".concat(t,"/").concat(n).concat(s)}))}) -e.default=t})),define("ghost-admin/components/gh-user-active",["exports","moment"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend({tagName:"",user:null,lastLoginUTC:Ember.computed("user.lastLoginUTC",(function(){let e=this.get("user.lastLoginUTC") -return e?(0,t.default)(e).fromNow():"(Never)"}))}) -e.default=n})),define("ghost-admin/components/gh-user-invited",["exports","moment","ember-ajax/errors"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=Ember.Component.extend({notifications:Ember.inject.service(),store:Ember.inject.service(),tagName:"",invite:null,isSending:!1,createdAt:Ember.computed("invite.createdAtUTC",(function(){let e=this.get("invite.createdAtUTC") -return e?(0,t.default)(e).fromNow():""})),expiresAt:Ember.computed("invite.expires",(function(){let e=this.get("invite.expires") -return e?(0,t.default)(e).fromNow():""})),isExpired:Ember.computed("invite.expires",(function(){return this.get("invite.expires")<(new Date).valueOf()})),actions:{resend(){let e=this.invite,t=this.notifications -this.set("isSending",!0),e.resend().then(n=>{let s="Invitation resent! (".concat(e.get("email"),")") -e.unloadRecord(),this.store.pushPayload("invite",n),"invited-pending"===n.invites[0].status?t.showAlert("Invitation email was not sent. Please try resending.",{type:"error",key:"invite.resend.not-sent"}):t.showNotification(s,{icon:"send-email",key:"invite.resend.success"})}).catch(e=>{t.showAPIError(e,{key:"invite.resend"})}).finally(()=>{this.set("isSending",!1)})},revoke(){let e=this.invite,t=e.get("email"),s=this.notifications -e.reload().then(()=>{e.destroyRecord().then(()=>{s.showNotification("Invitation revoked",{key:"invite.revoke.success",description:"".concat(t)})}).catch(e=>{s.showAPIError(e,{key:"invite.revoke"})})}).catch(e=>{if(!(0,n.isNotFoundError)(e))throw e -{let e=this.reload -e&&e(),s.showAlert("This invite has been revoked or a user has already accepted the invitation.",{type:"error",delayed:!0,key:"invite.revoke.already-accepted"})}})}}}) -e.default=s})),define("ghost-admin/components/gh-user-list-item",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({tagName:""}) -e.default=t})),define("ghost-admin/components/gh-validation-status-container",["exports","ghost-admin/mixins/validation-state"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Component.extend(t.default,{classNameBindings:["errorClass"],errorClass:Ember.computed("property","hasError","hasValidated.[]",(function(){let e=this.hasValidated,t=this.property -return e&&e.includes(t)?this.hasError?"error":"success":""}))}) -e.default=n})),define("ghost-admin/components/gh-view-title",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({ui:Ember.inject.service(),tagName:"h2",classNames:["view-title"]}) -e.default=t})),define("ghost-admin/components/gh-whats-new",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({whatsNew:Ember.inject.service()}) -e.default=t})),define("ghost-admin/components/illiquid-model",["exports","liquid-fire/components/illiquid-model"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/infinity-loader",["exports","ember-infinity/components/infinity-loader","ghost-admin/templates/components/gh-infinity-loader"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({layout:n.default}) -e.default=s})),define("ghost-admin/components/kg-action-bar",["exports","koenig-editor/components/kg-action-bar"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-alt-input",["exports","koenig-editor/components/koenig-alt-input"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})) -define("ghost-admin/components/koenig-basic-html-input",["exports","koenig-editor/components/koenig-basic-html-input"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-caption-input",["exports","koenig-editor/components/koenig-caption-input"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-card-bookmark",["exports","koenig-editor/components/koenig-card-bookmark"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-card-code",["exports","koenig-editor/components/koenig-card-code"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-card-embed",["exports","koenig-editor/components/koenig-card-embed"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-card-gallery",["exports","koenig-editor/components/koenig-card-gallery"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-card-hr",["exports","koenig-editor/components/koenig-card-hr"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-card-html",["exports","koenig-editor/components/koenig-card-html"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-card-image",["exports","koenig-editor/components/koenig-card-image"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-card-markdown",["exports","koenig-editor/components/koenig-card-markdown"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-card",["exports","koenig-editor/components/koenig-card"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-editor",["exports","koenig-editor/components/koenig-editor"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-link-input",["exports","koenig-editor/components/koenig-link-input"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-link-toolbar",["exports","koenig-editor/components/koenig-link-toolbar"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-menu-content",["exports","koenig-editor/components/koenig-menu-content"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-plus-menu",["exports","koenig-editor/components/koenig-plus-menu"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-slash-menu",["exports","koenig-editor/components/koenig-slash-menu"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/koenig-toolbar",["exports","koenig-editor/components/koenig-toolbar"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-append",["exports","liquid-wormhole/components/liquid-append"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-bind",["exports","liquid-fire/components/liquid-bind"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-child",["exports","liquid-fire/components/liquid-child"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-container",["exports","liquid-fire/components/liquid-container"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-destination",["exports","liquid-wormhole/components/liquid-destination"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-if",["exports","liquid-fire/components/liquid-if"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-measured",["exports","liquid-fire/components/liquid-measured"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"measure",{enumerable:!0,get:function(){return t.measure}})})),define("ghost-admin/components/liquid-outlet",["exports","liquid-fire/components/liquid-outlet"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-spacer",["exports","liquid-fire/components/liquid-spacer"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-sync",["exports","liquid-fire/components/liquid-sync"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-tether",["exports","liquid-tether/components/liquid-tether"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-unless",["exports","liquid-fire/components/liquid-unless"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})) -define("ghost-admin/components/liquid-versions",["exports","liquid-fire/components/liquid-versions"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/liquid-wormhole",["exports","liquid-wormhole/components/liquid-wormhole"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/modal-base",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Component.extend({tagName:"section",classNames:"modal-content",_previousKeymasterScope:null,closeModal:()=>{},didInsertElement(){this._super(...arguments),this._setupShortcuts()},willDestroyElement(){this._super(...arguments),this._removeShortcuts()},actions:{confirm(){throw new Error('You must override the "confirm" action in your modal component')},closeModal(){this.closeModal()}},_setupShortcuts(){Ember.run((function(){document.activeElement.blur()})),this._previousKeymasterScope=key.getScope(),key("enter","modal",()=>{this.send("confirm")}),key("escape","modal",()=>{this.send("closeModal")}),key.setScope("modal")},_removeShortcuts(){key.unbind("enter","modal"),key.unbind("escape","modal"),key.setScope(this._previousKeymasterScope)}}) -e.default=t})),define("ghost-admin/components/modal-confirm-email-send",["exports","ghost-admin/components/modal-base","ember-inflector","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=t.default.extend({session:Ember.inject.service(),errorMessage:null,confirm:()=>{},deliveredToMessage:Ember.computed("model.{paidOnly,memberCount}",(function(){const e=this.get("session.user.isEditor") -return this.get("model.paidOnly")?"all paid members":e?"all members":(0,n.pluralize)(this.get("model.memberCount"),"member")})),confirmAndCheckError:(0,s.task)((function*(){try{return yield this.confirm(),this.closeModal(),!0}catch(e){if(e&&"EmailFailedError"===e.name)return void this.set("errorMessage",e.message) -if(this.closeModal(),e)throw e}})),retryEmailTask:(0,s.task)((function*(){try{return yield this.model.retryEmailSend(),this.closeModal(),!0}catch(e){if(e&&"EmailFailedError"===e.name)return void this.set("errorMessage",e.message) -if(e)throw e}}))}) -e.default=a})),define("ghost-admin/components/modal-custom-view-form",["exports","ghost-admin/components/modal-base","ghost-admin/helpers/reset-query-params","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=t.default.extend({customViews:Ember.inject.service(),router:Ember.inject.service(),delayedModelColor:"",confirm(){},init(){this._super(...arguments),this.set("model",this.customViews.editView()),this._setDelayedModelColor.perform()},actions:{changeColor(e){let t=e.target.value -this.set("model.color",t),this.set("delayedModelColor",t)},confirm(){return this.saveTask.perform()}},saveTask:(0,s.task)((function*(){let e=yield this.customViews.saveViewTask.perform(this.model) -return this.send("closeModal"),e})),deleteTask:(0,s.task)((function*(){let e=yield this.customViews.deleteViewTask.perform(this.model),t=this.router.currentRouteName -return this.send("closeModal"),this.router.transitionTo(t,{queryParams:(0,n.resetQueryParams)(t)}),e})),_setDelayedModelColor:(0,s.task)((function*(){yield(0,s.timeout)(200),this.set("delayedModelColor",this.model.color)}))}) -e.default=a})),define("ghost-admin/components/modal-delete-all",["exports","ghost-admin/components/modal-base","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({ghostPaths:Ember.inject.service(),notifications:Ember.inject.service(),store:Ember.inject.service(),ajax:Ember.inject.service(),actions:{confirm(){this.deleteAll.perform()}},_deleteAll(){let e=this.get("ghostPaths.url").api("db") -return this.ajax.del(e)},_unloadData(){this.store.unloadAll("post"),this.store.unloadAll("tag")},_showSuccess(){this.notifications.showAlert("All content deleted from database.",{type:"success",key:"all-content.delete.success"})},_showFailure(e){this.notifications.showAPIError(e,{key:"all-content.delete"})},deleteAll:(0,n.task)((function*(){try{yield this._deleteAll(),this._unloadData(),this._showSuccess()}catch(e){this._showFailure(e)}finally{this.send("closeModal")}})).drop()}) -e.default=s})),define("ghost-admin/components/modal-delete-integration",["exports","ghost-admin/components/modal-base","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({router:Ember.inject.service(),notifications:Ember.inject.service(),integration:Ember.computed.alias("model"),actions:{confirm(){this.deleteIntegration.perform()}},deleteIntegration:(0,n.task)((function*(){try{yield this.confirm(),this.router.transitionTo("settings.integrations")}catch(e){this.notifications.showAPIError(e,{key:"integration.delete.failed"})}finally{this.send("closeModal")}})).drop()}) -e.default=s})),define("ghost-admin/components/modal-delete-member",["exports","ghost-admin/components/modal-base","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({confirm:()=>{},member:Ember.computed.alias("model"),actions:{confirm(){this.deleteMember.perform()}},deleteMember:(0,n.task)((function*(){try{yield this.confirm()}finally{this.send("closeModal")}})).drop()}) -e.default=s})),define("ghost-admin/components/modal-delete-post",["exports","ghost-admin/components/modal-base","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({notifications:Ember.inject.service(),post:Ember.computed.alias("model.post"),onSuccess:Ember.computed.alias("model.onSuccess"),actions:{confirm(){this.deletePost.perform()}},_deletePost(){let e=this.post -return e.updateTags(),e.destroyRecord()},_success(){this.notifications.closeAlerts("post.delete"),this.onSuccess&&this.onSuccess()},_failure(e){this.notifications.showAPIError(e,{key:"post.delete.failed"})},deletePost:(0,n.task)((function*(){try{yield this._deletePost(),this._success()}catch(e){this._failure(e)}finally{this.send("closeModal")}})).drop()}) -e.default=s})),define("ghost-admin/components/modal-delete-tag",["exports","ghost-admin/components/modal-base","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({confirm:()=>{},tag:Ember.computed.alias("model"),postInflection:Ember.computed("tag.count.posts",(function(){return this.get("tag.count.posts")>1?"posts":"post"})),actions:{confirm(){this.deleteTag.perform()}},deleteTag:(0,n.task)((function*(){try{yield this.confirm()}finally{this.send("closeModal")}})).drop()}) -e.default=s})),define("ghost-admin/components/modal-delete-theme",["exports","ghost-admin/components/modal-base","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({confirm:()=>{},theme:Ember.computed.alias("model.theme"),download:Ember.computed.alias("model.download"),actions:{confirm(){this.deleteTheme.perform()}},deleteTheme:(0,n.task)((function*(){try{yield this.confirm()}finally{this.send("closeModal")}})).drop()}) -e.default=s})),define("ghost-admin/components/modal-delete-user",["exports","ghost-admin/components/modal-base","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({confirm:()=>{},user:Ember.computed.alias("model"),actions:{confirm(){this.deleteUser.perform()}},deleteUser:(0,n.task)((function*(){try{yield this.confirm()}finally{this.send("closeModal")}})).drop()}) -e.default=s})),define("ghost-admin/components/modal-delete-webhook",["exports","ghost-admin/components/modal-base","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({notifications:Ember.inject.service(),webhook:Ember.computed.alias("model"),actions:{confirm(){this.deleteWebhook.perform()}},deleteWebhook:(0,n.task)((function*(){try{yield this.confirm()}catch(e){this.notifications.showAPIError(e,{key:"webhook.delete.failed"})}finally{this.send("closeModal")}})).drop()}) -e.default=s})),define("ghost-admin/components/modal-impersonate-member",["exports","ghost-admin/components/modal-base","ghost-admin/utils/copy-text-to-clipboard","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=t.default.extend({config:Ember.inject.service(),store:Ember.inject.service(),classNames:"modal-impersonate-member",signinUrl:null,member:Ember.computed.alias("model"),didInsertElement(){this._super(...arguments),this._signinUrlUpdateTask.perform()},copySigninUrl:(0,s.task)((function*(){return(0,n.default)(this.get("signinUrl")),yield(0,s.timeout)(1e3),!0})),_signinUrlUpdateTask:(0,s.task)((function*(){const e=yield this.member.fetchSigninUrl.perform() -this.set("signinUrl",e.url)})).drop()}) -e.default=a})),define("ghost-admin/components/modal-import-members",["exports","ghost-admin/components/modal-base","ghost-admin/utils/ghost-paths"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({labelText:"Select or drag-and-drop a CSV File",response:null,closeDisabled:!1,confirm:()=>{},uploadUrl:Ember.computed((function(){return"".concat((0,n.default)().apiRoot,"/members/csv/")})),actions:{uploadStarted(){this.set("closeDisabled",!0)},uploadFinished(){this.set("closeDisabled",!1)},uploadSuccess(e){this.set("response",e.meta.stats),this.confirm()},confirm(){},closeModal(){this.closeDisabled||this._super(...arguments)}}}) -e.default=s})),define("ghost-admin/components/modal-invite-new-user",["exports","ghost-admin/components/modal-base","ghost-admin/mixins/validation-engine","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const{Promise:a}=Ember.RSVP -var l=t.default.extend(n.default,{notifications:Ember.inject.service(),store:Ember.inject.service(),classNames:"modal-content invite-new-user",role:null,roles:null,authorRole:null,validationType:"inviteUser",init(){this._super(...arguments)},didInsertElement(){this._super(...arguments),this.fetchRoles.perform()},willDestroyElement(){this._super(...arguments),this.errors.clear(),this.set("hasValidated",Ember.A())},actions:{setRole(e){this.set("role",e),this.errors.remove("role")},confirm(){this.sendInvitation.perform()}},validate(){let e=this.email -return new a((t,n)=>this._super().then(()=>Ember.RSVP.hash({users:this.store.findAll("user",{reload:!0}),invites:this.store.findAll("invite",{reload:!0})}).then(s=>{let a=s.users.findBy("email",e),l=s.invites.findBy("email",e) -a||l?(this.errors.clear("email"),a?this.errors.add("email","A user with that email address already exists."):this.errors.add("email","A user with that email address was already invited."),this.hasValidated.addObject("email"),n()):t()}),()=>{this.hasValidated.addObject("email"),n()}))},fetchRoles:(0,s.task)((function*(){let e=yield this.store.query("role",{permissions:"assign"}),t=e.findBy("name","Author") -this.set("roles",e),this.set("authorRole",t),this.role||this.set("role",t)})),sendInvitation:(0,s.task)((function*(){let e,t=this.email,n=this.role,s=this.notifications -try{yield this.validate(),e=this.store.createRecord("invite",{email:t,role:n}),yield e.save(),"pending"===e.get("status")?s.showAlert("Invitation email was not sent",{type:"error",key:"invite.send.failed",description:"Please try resending."}):s.showNotification("Invitation sent",{icon:"send-email",key:"invite.send.success",description:"".concat(t)}),this.send("closeModal")}catch(a){a&&(e.deleteRecord(),s.showAPIError(a,{key:"invite.send"}),this.send("closeModal"))}})).drop()}) -e.default=l})),define("ghost-admin/components/modal-leave-editor",["exports","ghost-admin/components/modal-base"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({actions:{confirm(){this.confirm(),this.send("closeModal")}},confirm:()=>Ember.RSVP.resolve()}) -e.default=n})),define("ghost-admin/components/modal-leave-settings",["exports","ghost-admin/components/modal-base"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({actions:{confirm(){this.confirm().finally(()=>{this.isDestroyed||this.isDestroying||this.send("closeModal")})}},confirm:()=>Ember.RSVP.resolve()}) -e.default=n})),define("ghost-admin/components/modal-markdown-help",["exports","ghost-admin/components/modal-base"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({}) -e.default=n})),define("ghost-admin/components/modal-members-label-form",["exports","ghost-admin/components/modal-base","ghost-admin/helpers/reset-query-params","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=t.default.extend({router:Ember.inject.service(),notifications:Ember.inject.service(),model:null,showDeleteLabelModal:!1,confirm(){},label:Ember.computed.and("model","model.label"),init(){this._super(...arguments)},willDestroyElement(){this._super(...arguments),this.label.errors.clear(),this.label.rollbackAttributes()},actions:{toggleDeleteLabelModal(){this.label.rollbackAttributes(),this.set("showDeleteLabelModal",!0)},validate(e){return this.label.validate({property:e})}},saveTask:(0,s.task)((function*(){let e=this.model&&this.model.label,t=this.model&&this.model.labels||[] -if(!e)return!1 -try{if(yield e.validate(),t.find(t=>t.name.trim().toLowerCase()===e.name.trim().toLowerCase()&&t.slug!==e.slug))return e.errors.add("name","A label with the same name already exists"),e.hasValidated.pushObject("name"),!1 -let n=yield e.save() -return this.notifications.showNotification("Label saved".htmlSafe()),this.send("closeModal"),n}catch(n){n&&this.notifications.showAPIError(n,{key:"label.save"})}})),deleteLabel:(0,s.task)((function*(){let e=this.model&&this.model.label -if(!e)return!1 -try{yield e.destroyRecord() -let t=this.router.currentRouteName -this.notifications.showNotification("Label deleted".htmlSafe()),this.send("closeModal"),this.router.transitionTo(t,{queryParams:(0,n.resetQueryParams)(t)})}catch(t){if(t)return this.notifications.showAPIError(t,{key:"label.delete"})}}))}) -e.default=a})),define("ghost-admin/components/modal-new-integration",["exports","ghost-admin/components/modal-base","ember-ajax/errors","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=t.default.extend({router:Ember.inject.service(),confirm(){},integration:Ember.computed.alias("model"),actions:{updateName(e){this.integration.set("name",e),this.integration.set("hasValidated",Ember.A()),this.integration.errors.clear()},confirm(){return this.createIntegration.perform()}},createIntegration:(0,s.task)((function*(){try{let e=yield this.confirm() -this.router.transitionTo("settings.integration",e)}catch(e){if(e&&(0,n.isInvalidError)(e)){let[t]=e.payload.errors,{message:n}=t -if(n&&n.match(/name/i))return this.get("integration.errors").add("name",n),void this.get("integration.hasValidated").pushObject("name")}if(e)throw e}})).drop()}) -e.default=a})),define("ghost-admin/components/modal-post-email-preview",["exports","ghost-admin/components/modal-base"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({ghostPaths:Ember.inject.service(),ajax:Ember.inject.service(),type:"desktop",html:"",subject:"",post:Ember.computed.alias("model"),actions:{changeType(e){this.set("type",e)}},renderEmailPreview:Ember._action((async function(){await this._fetchEmailData() -let e=this.element.querySelector("iframe") -e&&(e.contentWindow.document.open(),e.contentWindow.document.write(this.html),e.contentWindow.document.close())})),async _fetchEmailData(){let{html:e,subject:t}=this -if(e&&t)return{html:e,subject:t} -if(this.post.email)e=this.post.email.html,t=this.post.email.subject -else{let n=this.get("ghostPaths.url").api("/email_preview/posts",this.post.id),s=await this.ajax.request(n),[a]=s.email_previews -e=a.html,t=a.subject}let n=(new DOMParser).parseFromString(e,"text/html"),s=n.querySelector("style"),a=s.innerHTML -s.innerHTML="".concat(a,"\n\n").concat("\nhtml::-webkit-scrollbar {\n display: none;\n width: 0;\n background: transparent\n}\nhtml {\n scrollbar-width: none;\n}\n"),e=n.documentElement.innerHTML,this.setProperties({html:e,subject:t})}}) -e.default=n})),define("ghost-admin/components/modal-re-authenticate",["exports","jquery","ghost-admin/components/modal-base","ghost-admin/mixins/validation-engine","ghost-admin/services/ajax","ember-concurrency"],(function(e,t,n,s,a,l){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var r=n.default.extend(s.default,{config:Ember.inject.service(),notifications:Ember.inject.service(),session:Ember.inject.service(),validationType:"signin",authenticationError:null,identification:Ember.computed.reads("session.user.email"),actions:{confirm(){this.reauthenticate.perform()}},_authenticate(){let e=this.session,t=this.identification,n=this.password -return e.set("skipAuthSuccessHandler",!0),this.toggleProperty("submitting"),e.authenticate("authenticator:cookie",t,n).finally(()=>{this.toggleProperty("submitting"),e.set("skipAuthSuccessHandler",void 0)})},_passwordConfirm(){return(0,t.default)("#login").find("input").trigger("change"),this.set("authenticationError",null),this.validate({property:"signin"}).then(()=>this._authenticate().then(()=>(this.notifications.closeAlerts(),this.send("closeModal"),!0)).catch(e=>{e&&e.payload&&e.payload.errors&&(e.payload.errors.forEach(t=>{if((0,a.isVersionMismatchError)(t))return this.notifications.showAPIError(e) -t.message=Ember.String.htmlSafe(t.context||t.message)}),this.errors.add("password","Incorrect password"),this.hasValidated.pushObject("password"),this.set("authenticationError",e.payload.errors[0].message))}),()=>(this.hasValidated.pushObject("password"),!1))},reauthenticate:(0,l.task)((function*(){return yield this._passwordConfirm()})).drop()}) -e.default=r})),define("ghost-admin/components/modal-search",["exports","ghost-admin/components/modal-base"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({actions:{confirm(){this.closeModal()}},click(){let e=this.element.querySelector("input") -e&&e.focus()}}) -e.default=n})),define("ghost-admin/components/modal-suspend-user",["exports","ghost-admin/components/modal-base","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({confirm:()=>{},user:Ember.computed.alias("model"),actions:{confirm(){return this.suspendUser.perform()}},suspendUser:(0,n.task)((function*(){try{yield this.confirm()}finally{this.send("closeModal")}})).drop()}) -e.default=s})),define("ghost-admin/components/modal-theme-warnings",["exports","ghost-admin/components/modal-base"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({"data-test-theme-warnings-modal":!0,title:Ember.computed.reads("model.title"),message:Ember.computed.reads("model.message"),warnings:Ember.computed.reads("model.warnings"),errors:Ember.computed.reads("model.errors"),fatalErrors:Ember.computed.reads("model.fatalErrors"),canActivate:Ember.computed.reads("model.canActivate")}) -e.default=n})),define("ghost-admin/components/modal-transfer-owner",["exports","ghost-admin/components/modal-base","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({user:null,confirm:()=>{},actions:{confirm(){this.transferOwnership.perform()}},transferOwnership:(0,n.task)((function*(){try{yield this.confirm()}finally{this.send("closeModal")}})).drop()}) -e.default=s})),define("ghost-admin/components/modal-unsuspend-user",["exports","ghost-admin/components/modal-base","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({confirm:()=>{},user:Ember.computed.alias("model"),actions:{confirm(){return this.unsuspendUser.perform()}},unsuspendUser:(0,n.task)((function*(){try{yield this.confirm()}finally{this.send("closeModal")}})).drop()}) -e.default=s})),define("ghost-admin/components/modal-upgrade-host-limit",["exports","ghost-admin/components/modal-base"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({upgradeMessage:Ember.computed("details",(function(){const{limit:e,total:t}=this.model.details -return{limit:e,total:t}})),actions:{upgrade:function(){const e=this.model.upgradeLink -return window.open(e),this.closeModal(),!0}}}) -e.default=n})),define("ghost-admin/components/modal-upload-image",["exports","ghost-admin/components/modal-base","ghost-admin/utils/caja-sanitizers","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=t.default.extend({config:Ember.inject.service(),notifications:Ember.inject.service(),model:null,url:"",newUrl:"",_isUploading:!1,image:Ember.computed("model.{model,imageProperty}",{get(){let e=this.get("model.imageProperty") -return this.get("model.model.".concat(e))},set(e,t){let n=this.get("model.model"),s=this.get("model.imageProperty") -return n.set(s,t)}}),didReceiveAttrs(){let e=this.image -this.set("url",e),this.set("newUrl",e)},actions:{fileUploaded(e){this.set("url",e),this.set("newUrl",e)},removeImage(){this.set("url",""),this.set("newUrl","")},confirm(){this.uploadImage.perform()},isUploading(){this.toggleProperty("_isUploading")}},keyDown(){this._setErrorState(!1)},_setErrorState(e){e?this.element.querySelector(".url").classList.add("error"):this.element.querySelector(".url").classList.remove("error")},_validateUrl(e){return!(!Ember.isEmpty(e)&&!n.default.url(e))||(this._setErrorState(!0),{message:"Image URI is not valid"})},uploadImage:(0,s.task)((function*(){let e=this.get("model.model"),t=this.newUrl,n=this._validateUrl(t),s=this.notifications -if(!0===n){this.set("image",t) -try{yield e.save()}catch(a){s.showAPIError(a,{key:"image.upload"})}finally{this.send("closeModal")}}})).drop()}) -e.default=a})) -define("ghost-admin/components/modal-upload-theme",["exports","ghost-admin/components/modal-base","ghost-admin/utils/ghost-paths","ghost-admin/services/ajax"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const a={accept:["application/zip","application/x-zip-compressed"],extensions:["zip"]} -var l=t.default.extend({eventBus:Ember.inject.service(),store:Ember.inject.service(),accept:null,extensions:null,themes:null,closeDisabled:!1,file:null,theme:!1,displayOverwriteWarning:!1,hideUploader:Ember.computed.or("theme","displayOverwriteWarning"),currentThemeNames:Ember.computed.mapBy("model.themes","name"),uploadUrl:Ember.computed((function(){return"".concat((0,n.default)().apiRoot,"/themes/upload/")})),themeName:Ember.computed("theme.{name,package.name}",(function(){let e=this.get("theme.package"),t=this.get("theme.name") -return e?"".concat(e.name," - ").concat(e.version):t})),fileThemeName:Ember.computed("file",(function(){return this.file.name.replace(/\.zip$/,"")})),canActivateTheme:Ember.computed("theme",(function(){let e=this.theme -return e&&!e.get("active")})),init(){this._super(...arguments),this.accept=this.accept||a.accept,this.extensions=this.extensions||a.extensions},actions:{validateTheme(e){let t=e.name.replace(/\.zip$/,"").replace(/[^\w@.]/gi,"-").toLowerCase(),n=this.currentThemeNames -this.set("file",e) -let[,a]=/(?:\.([^.]+))?$/.exec(e.name),l=this.extensions -return a&&-1!==l.indexOf(a.toLowerCase())?e.name.match(/^casper\.zip$/i)?{payload:{errors:[{message:"Sorry, the default Casper theme cannot be overwritten.
Please rename your zip file and try again."}]}}:!(!this._allowOverwrite&&n.includes(t))||(this.set("displayOverwriteWarning",!0),!1):new s.UnsupportedMediaTypeError},confirmOverwrite(){this._allowOverwrite=!0,this.set("displayOverwriteWarning",!1),Ember.run.schedule("afterRender",this,(function(){this.eventBus.publish("themeUploader:upload",this.file)}))},uploadStarted(){this.set("closeDisabled",!0)},uploadFinished(){this.set("closeDisabled",!1)},uploadSuccess(e){this.store.pushPayload(e) -let t=this.store.peekRecord("theme",e.themes[0].name) -this.set("theme",t),Ember.get(t,"warnings.length")>0&&this.set("validationWarnings",Ember.get(t,"warnings")),Ember.get(t,"errors.length")>0&&this.set("validationErrors",Ember.get(t,"errors")),this.set("hasWarningsOrErrors",this.get("validationErrors.length")||this.get("validationWarnings.length")),this.get("model.uploadSuccess")(t)},uploadFailed(e){if((0,s.isThemeValidationError)(e)){let t=e.payload.errors[0].details.errors,n=[],s=[] -if(t&&t.length>0)for(let e=0;e{let{message:n,property:s=""}=e -s=Ember.String.camelize(s),s&&t.includes(s)?(this.webhook.errors.add(s,n),this.webhook.hasValidated.pushObject(s)):this.set("error","Error: ".concat(n))})}if(e)throw e}}))}) -e.default=l})),define("ghost-admin/components/modal-whats-new",["exports","ghost-admin/components/modal-base"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({whatsNew:Ember.inject.service(),confirm(){}}) -e.default=n})),define("ghost-admin/components/object-bin",["exports","ember-drag-drop/components/object-bin"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default -e.default=n})),define("ghost-admin/components/one-way-select",["exports","ember-one-way-select/components/one-way-select"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/one-way-select/option",["exports","ember-one-way-select/components/one-way-select/option"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-calendar-multiple",["exports","ember-power-calendar/components/power-calendar-multiple"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-calendar-multiple/days",["exports","ember-power-calendar/components/power-calendar-multiple/days"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-calendar-range",["exports","ember-power-calendar/components/power-calendar-range"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-calendar-range/days",["exports","ember-power-calendar/components/power-calendar-range/days"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-calendar",["exports","ember-power-calendar/components/power-calendar"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-calendar/days",["exports","ember-power-calendar/components/power-calendar/days"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-calendar/nav",["exports","ember-power-calendar/components/power-calendar/nav"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-datepicker",["exports","ember-power-datepicker/components/power-datepicker"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-select-multiple",["exports","ember-power-select/components/power-select-multiple"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-select-multiple/trigger",["exports","ember-power-select/components/power-select-multiple/trigger"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-select-vertical-collection-options",["exports","ember-power-select/components/power-select/options","ghost-admin/templates/components/power-select-vertical-collection-options"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=t.default.extend({layout:n.default}) -e.default=s})),define("ghost-admin/components/power-select",["exports","ember-power-select/components/power-select"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-select/before-options",["exports","ember-power-select/components/power-select/before-options"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-select/no-matches-message",["exports","ember-power-select/components/power-select/no-matches-message"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-select/options",["exports","ember-power-select/components/power-select/options"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-select/placeholder",["exports","ember-power-select/components/power-select/placeholder"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-select/power-select-group",["exports","ember-power-select/components/power-select/power-select-group"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-select/search-message",["exports","ember-power-select/components/power-select/search-message"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/power-select/trigger",["exports","ghost-admin/templates/components/power-select/trigger","ember-power-select/components/power-select/trigger"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=n.default.extend({layout:t.default}) -e.default=s})),define("ghost-admin/components/sortable-objects",["exports","ember-drag-drop/components/sortable-objects"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default -e.default=n})),define("ghost-admin/components/sticky-element",["exports","ember-sticky-element/components/sticky-element"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/sticky-element/trigger",["exports","ember-sticky-element/components/sticky-element/trigger"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/vertical-collection",["exports","@html-next/vertical-collection/components/vertical-collection/component"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})),define("ghost-admin/components/x-file-input",["exports","emberx-file-input/components/x-file-input"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})})) -define("ghost-admin/controllers/about",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Controller.extend({config:Ember.inject.service(),upgradeStatus:Ember.inject.service(),copyrightYear:Ember.computed((function(){return(new Date).getFullYear()}))}) -e.default=t})),define("ghost-admin/controllers/application",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Controller.extend({customViews:Ember.inject.service(),dropdown:Ember.inject.service(),router:Ember.inject.service(),session:Ember.inject.service(),settings:Ember.inject.service(),ui:Ember.inject.service(),showNavMenu:Ember.computed("router.currentRouteName","session.{isAuthenticated,user.isFulfilled}","ui.isFullScreen",(function(){let{router:e,session:t,ui:n}=this -return!n.isFullScreen&&(!(!t.isAuthenticated||!t.user.isFulfilled)&&(("error404"!==e.currentRouteName||t.isAuthenticated)&&!e.currentRouteName.match(/(signin|signup|setup|reset)/)))}))}) -e.default=t})),define("ghost-admin/controllers/billing",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Controller.extend({guid:Ember.computed.alias("model")}) -e.default=t})),define("ghost-admin/controllers/editor",["exports","ghost-admin/models/post","ghost-admin/utils/bound-one-way","ghost-admin/config/environment","ghost-admin/utils/isNumber","ghost-admin/services/ajax","ember-ajax/errors","ember-concurrency"],(function(e,t,n,s,a,l,r,i){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -let o=["post.scratch","post.titleScratch","post.hasDirtyAttributes","post.tags.[]","post.isError"] -t.default.eachAttribute((function(e){o.push("post.".concat(e))})) -const u={errors:{post:{published:{published:"Update failed",draft:"Saving failed",scheduled:"Scheduling failed"},draft:{published:"Publish failed",draft:"Saving failed",scheduled:"Scheduling failed"},scheduled:{scheduled:"Update failed",draft:"Unscheduling failed",published:"Publish failed"}}},success:{post:{published:{published:"Updated",draft:"Saved",scheduled:"Scheduled"},draft:{published:"Published",draft:"Saved",scheduled:"Scheduled"},scheduled:{scheduled:"Updated",draft:"Unscheduled",published:"Published"}}}} -var d=Ember.Controller.extend({application:Ember.inject.controller(),feature:Ember.inject.service(),notifications:Ember.inject.service(),router:Ember.inject.service(),slugGenerator:Ember.inject.service(),session:Ember.inject.service(),ui:Ember.inject.service(),infoMessage:null,leaveEditorTransition:null,shouldFocusEditor:!1,showDeletePostModal:!1,showLeaveEditorModal:!1,showReAuthenticateModal:!1,showEmailPreviewModal:!1,showUpgradeModal:!1,hostLimitError:null,wordcount:null,_previousTagNames:null,post:Ember.computed.alias("model"),willPublish:(0,n.default)("post.isPublished"),willSchedule:(0,n.default)("post.isScheduled"),saveTasks:(0,i.taskGroup)().enqueue(),_tagNames:Ember.computed.mapBy("post.tags","name"),hasDirtyAttributes:Ember.computed(...o,{get(){return this._hasDirtyAttributes()},set:(e,t)=>t}),_autosaveRunning:Ember.computed("_autosave.isRunning","_timedSave.isRunning",(function(){let e=this.get("_autosave.isRunning"),t=this.get("_timedSave.isRunning") -return e||t})),_canAutosave:Ember.computed("post.isDraft",(function(){return"test"!==s.default.environment&&this.get("post.isDraft")})),actions:{updateScratch(e){this.set("post.scratch",e),this._autosave.perform(),this._timedSave.perform()},updateTitleScratch(e){this.set("post.titleScratch",e)},setSaveType(e){"publish"===e?(this.set("willPublish",!0),this.set("willSchedule",!1)):"draft"===e?(this.set("willPublish",!1),this.set("willSchedule",!1)):"schedule"===e&&(this.set("willSchedule",!0),this.set("willPublish",!1))},save(e){return this.save.perform(e)},cancelAutosave(){this._autosave.cancelAll(),this._timedSave.cancelAll()},toggleLeaveEditorModal(e){let t=this.leaveEditorTransition -if(!e&&this.showLeaveEditorModal)return this.set("leaveEditorTransition",null),void this.set("showLeaveEditorModal",!1) -if(!t||e.targetName===t.targetName){if(this.set("leaveEditorTransition",e),this.get("saveTasks.isRunning"))return this.get("saveTasks.last").then(()=>{e.retry()}) -if(this._autosaveRunning)return this.send("cancelAutosave"),this.autosave.cancelAll(),this.autosave.perform().then(()=>{e.retry()}) -this.post&&Object.assign(this._leaveModalReason,{status:this.post.status}),console.log("showing leave editor modal",this._leaveModalReason),this.set("showLeaveEditorModal",!0)}},leaveEditor(){let e=this.leaveEditorTransition -if(e)return this.reset(),e.retry() -this.notifications.showAlert("Sorry, there was an error in the application. Please let the Ghost team know what happened.",{type:"error"})},toggleDeletePostModal(){this.get("post.isNew")||this.toggleProperty("showDeletePostModal")},toggleEmailPreviewModal(){this.toggleProperty("showEmailPreviewModal")},toggleReAuthenticateModal(){this.toggleProperty("showReAuthenticateModal")},openUpgradeModal(){this.set("showUpgradeModal",!0)},closeUpgradeModal(){this.set("showUpgradeModal",!1)},setKoenigEditor(e){this._koenig=e,this.post.isDraft&&this._koenig.cleanup()},updateWordCount(e){this.set("wordCount",e)}},autosave:(0,i.task)((function*(){if(!this.get("save.isRunning"))return yield this.save.perform({silent:!0,backgroundSave:!0})})).drop(),save:(0,i.task)((function*(e={}){let t,n=this.get("post.status"),s=this.get("post.isNew") -if(this.send("cancelAutosave"),!e.backgroundSave||this.hasDirtyAttributes){if(e.backgroundSave)t="draft" -else{t=this.get("post.pastScheduledTime")?this.willSchedule||this.willPublish?"published":"draft":this.willPublish&&!this.get("post.isScheduled")?"published":this.willSchedule&&!this.get("post.isPublished")?"scheduled":"draft" -let n="published"===t&&!this.post.isPublished,s="scheduled"===t&&!this.post.isScheduled -e.sendEmailWhenPublished&&(n||s)&&(e.adapterOptions=Object.assign({},e.adapterOptions,{sendEmailWhenPublished:!0}))}e.backgroundSave||this._koenig&&(this._koenig.cleanup(),this.set("hasDirtyAttributes",!0)),this.set("post.mobiledoc",JSON.parse(JSON.stringify(this.post.scratch||null))),this.set("post.status",t),this.get("post.titleScratch").trim()||this.set("post.titleScratch","(Untitled)"),this.set("post.title",this.get("post.titleScratch")),this.set("post.customExcerpt",this.get("post.customExcerptScratch")),this.set("post.footerInjection",this.get("post.footerExcerptScratch")),this.set("post.headerInjection",this.get("post.headerExcerptScratch")),this.set("post.metaTitle",this.get("post.metaTitleScratch")),this.set("post.metaDescription",this.get("post.metaDescriptionScratch")),this.set("post.ogTitle",this.get("post.ogTitleScratch")),this.set("post.ogDescription",this.get("post.ogDescriptionScratch")),this.set("post.twitterTitle",this.get("post.twitterTitleScratch")),this.set("post.twitterDescription",this.get("post.twitterDescriptionScratch")),this.set("post.emailSubject",this.get("post.emailSubjectScratch")),this.get("post.slug")||(this.saveTitle.cancelAll(),yield this.generateSlug.perform()) -try{let t=yield this._savePost.perform(e) -return t.set("statusScratch",null),e.silent||this._showSaveNotification(n,t.get("status"),!!s),s&&t.get("id")?(this.leaveEditorTransition||this.replaceRoute("editor.edit",t),!0):t}catch(a){if((0,l.isHostLimitError)(a))return this.post.rollbackAttributes(),this.set("hostLimitError",a.payload.errors[0]),void this.set("showUpgradeModal",!0) -if(a&&!(0,r.isInvalidError)(a))return void this.send("error",a) -if(this.set("post.status",n),!e.silent){let e=a||this.get("post.errors.messages") -throw void this._showErrorAlert(n,this.get("post.status"),e)}return this.post}}})).group("saveTasks"),updateSlug:(0,i.task)((function*(e){let t,n,s=this.get("post.slug") -if(t=e||s,t=t&&t.trim(),!t||s===t)return void this.set("slugValue",s) -if(n=yield this.slugGenerator.generateSlug("post",t),n===s)return -let l=n.split("-"),r=Number(l.pop()) -if((0,a.default)(r)&&r>0&&s===l.join("-")&&n!==t)this.set("slugValue",s) -else if(this.set("post.slug",n),!this.get("post.isNew"))return yield this._savePost.perform()})).group("saveTasks"),savePost:(0,i.task)((function*(){try{return yield this._savePost.perform()}catch(e){if(e){let t=this.get("post.status") -this._showErrorAlert(t,t,e)}throw e}})).group("saveTasks"),_savePost:(0,i.task)((function*(e){let{post:t}=this -yield t.save(e),t.updateTags(),this._previousTagNames=this._tagNames,t.scratch||t.set("scratch",JSON.parse(JSON.stringify(t.get("mobiledoc")))) -let n=t.get("titleScratch")===t.get("title"),s=JSON.stringify(t.get("scratch"))===JSON.stringify(t.get("mobiledoc")) -return n&&s&&this.set("hasDirtyAttributes",!1),t})),saveTitle:(0,i.task)((function*(){let e=this.post,t=e.get("title"),n=e.get("titleScratch").trim() -t&&n&&n===t||(this.set("hasDirtyAttributes",!0),(e.get("isNew")&&!t||"(Untitled)"===t)&&(yield this.generateSlug.perform()),this.get("post.isDraft")&&(yield this.autosave.perform()),this.ui.updateDocumentTitle())})),generateSlug:(0,i.task)((function*(){let e=this.get("post.titleScratch") -if("(Untitled)"!==e||!this.get("post.slug"))try{let t=yield this.slugGenerator.generateSlug("post",e) -Ember.isBlank(t)||this.set("post.slug",t)}catch(t){(0,l.isVersionMismatchError)(t)&&this.notifications.showAPIError(t)}})).enqueue(),backgroundLoader:(0,i.task)((function*(){try{if(this.feature.members){let e=yield this.store.query("member",{limit:1,filter:"subscribed:true"}) -this.set("memberCount",Ember.get(e,"meta.pagination.total"))}}catch(e){this.set("memberCount",0)}})).restartable(),setPost(e){e!==this.post?(this.reset(),this.set("post",e),this.backgroundLoader.perform(),this.set("shouldFocusEditor",e.get("isNew")),e.set("titleScratch",e.get("title")),e.set("scratch",e.get("mobiledoc")),this._previousTagNames=this._tagNames,window.onbeforeunload=()=>{if(this.hasDirtyAttributes)return"==============================\n\nHey there! It looks like you're in the middle of writing something and you haven't saved all of your content.\n\nSave before you go!\n\n=============================="}):this.set("shouldFocusEditor",e.get("isNew"))},willTransition(e){let t=this.post -if(!t)return -this._koenig&&t.isDraft&&this._koenig.cleanup() -let n=this.hasDirtyAttributes,s=t.getProperties("isDeleted","isSaving","hasDirtyAttributes","isNew"),a="editor.new"===this.get("router.currentRouteName")&&"editor.edit"===e.targetName&&e.intent.contexts&&e.intent.contexts[0]&&e.intent.contexts[0].id===t.get("id"),l=s.isDeleted&&(s.isSaving||!s.hasDirtyAttributes) -if(!a&&!l&&n)return e.abort(),void this.send("toggleLeaveEditorModal",e) -a||"editor.edit"===e.targetName||this.reset()},reset(){let e=this.post -this.send("cancelAutosave"),e&&(e.updateTags(),e.get("isNew")?e.deleteRecord():e.rollbackAttributes()),this._previousTagNames=[],this.set("post",null),this.set("hasDirtyAttributes",!1),this.set("shouldFocusEditor",!1),this.set("leaveEditorTransition",null),this.set("showLeaveEditorModal",!1),this.set("infoMessage",null),this.set("wordCount",null),window.onbeforeunload=null},_autosave:(0,i.task)((function*(){if(this._canAutosave){if(this.get("post.isNew"))return this.autosave.perform() -yield(0,i.timeout)(3e3),this.autosave.perform()}})).restartable(),_timedSave:(0,i.task)((function*(){if(this._canAutosave)for(;"test"!==s.default.environment;)yield(0,i.timeout)(6e4),this.autosave.perform()})).drop(),_hasDirtyAttributes(){let e=this.post -if(!e)return!1 -if(e.get("isError"))return this._leaveModalReason={reason:"isError",context:e.errors.messages},!0 -let t=(this._tagNames||[]).join(", "),n=(this._previousTagNames||[]).join(", ") -if(t!==n)return this._leaveModalReason={reason:"tags are different",context:{currentTags:t,previousTags:n}},!0 -if(this.titleScratch!==this.title)return this._leaveModalReason={reason:"title is different",context:{current:this.title,scratch:this.titleScratch}},!0 -let s=e.get("mobiledoc"),a=e.get("scratch") -if(a||s){let e=JSON.stringify(s),t=JSON.stringify(a) -if(t!==e)return this._leaveModalReason={reason:"mobiledoc is different",context:{current:e,scratch:t}},!0}if(e.get("isNew")){let t=Object.keys(e.changedAttributes()) -return t.length&&(this._leaveModalReason={reason:"post.changedAttributes.length > 0",context:e.changedAttributes()}),!!t.length}let{hasDirtyAttributes:l}=e -return l&&(this._leaveModalReason={reason:"post.hasDirtyAttributes === true",context:e.changedAttributes()}),l},_showSaveNotification(e,t,n){let s,a,l,r=u.success.post[e][t],i=this.notifications -"published"===t||"scheduled"===t?(a=this.get("post.page")?"Page":"Post",l=this.get("post.url"),s='View ').concat(a,"")):(a="Preview",l=this.get("post.previewUrl"),s='View ').concat(a,"")),i.showNotification(r,{type:"success",actions:s.htmlSafe(),delayed:n})},_showErrorAlert(e,t,n,s){let a,l=u.errors.post[e][t],r=this.notifications -if(n&&(i=n,"[object String]"===toString.call(i)))a=n -else if(n&&Ember.isArray(n))a=n[0] -else{if(n&&n.payload&&n.payload.errors&&n.payload.errors[0].message)return this.notifications.showAPIError(n,{key:"post.save"}) -a="Unknown Error"}var i -l+=": ".concat(a),l=Ember.String.htmlSafe(l),r.showAlert(l,{type:"error",delayed:s,key:"post.save"})}}) -e.default=d})),define("ghost-admin/controllers/editor/edit-loading",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Controller.extend({ui:Ember.inject.service()}) -e.default=t})),define("ghost-admin/controllers/error",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Controller.extend({stack:!1,error:Ember.computed.readOnly("model"),code:Ember.computed("error.status",(function(){return this.get("error.status")>200?this.get("error.status"):500})),message:Ember.computed("error.statusText",(function(){return 404===this.code?"Page not found":"error"!==this.get("error.statusText")?this.get("error.statusText"):"Internal Server Error"}))}) -e.default=t})),define("ghost-admin/controllers/member",["exports","ghost-admin/utils/bound-one-way","moment","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const a=["name","email","note"] -var l=Ember.Controller.extend({members:Ember.inject.controller(),session:Ember.inject.service(),dropdown:Ember.inject.service(),notifications:Ember.inject.service(),router:Ember.inject.service(),store:Ember.inject.service(),showImpersonateMemberModal:!1,member:Ember.computed.alias("model"),scratchMember:Ember.computed("member",(function(){let e=Ember.Object.create({member:this.member}) -return a.forEach(n=>Ember.defineProperty(e,n,(0,t.default)("member.".concat(n)))),e})),subscribedAt:Ember.computed("member.createdAtUTC",(function(){let e=(0,n.default)(this.member.createdAtUTC).from((0,n.default)()),t=(0,n.default)(this.member.createdAtUTC).format("MMM DD, YYYY") -return"".concat(t," (").concat(e,")")})),actions:{setProperty(e,t){this._saveMemberProperty(e,t)},toggleDeleteMemberModal(){this.toggleProperty("showDeleteMemberModal")},toggleImpersonateMemberModal(){this.toggleProperty("showImpersonateMemberModal")},save(){return this.save.perform()},deleteMember(){return this.member.destroyRecord().then(()=>this.transitionToRoute("members"),e=>this.notifications.showAPIError(e,{key:"member.delete"}))},toggleUnsavedChangesModal(e){let t=this.leaveScreenTransition -if(!e&&this.showUnsavedChangesModal)return this.set("leaveScreenTransition",null),void this.set("showUnsavedChangesModal",!1) -if(!t||e.targetName===t.targetName){if(this.set("leaveScreenTransition",e),this.save.isRunning)return this.save.last.then(()=>{e.retry()}) -this.set("showUnsavedChangesModal",!0)}},leaveScreen(){return this.member.rollbackAttributes(),this.leaveScreenTransition.retry()}},save:(0,s.task)((function*(){let{member:e,scratchMember:t}=this,n=t.getProperties(a) -e.setProperties(n) -try{return yield e.save(),e.updateLabels(),this.replaceRoute("member",e),e}catch(s){s&&this.notifications.showAPIError(s,{key:"member.save"})}})).drop(),fetchMember:(0,s.task)((function*(e){this.set("isLoading",!0) -let t=yield this.store.findRecord("member",e,{reload:!0}) -this.set("member",t),this.set("isLoading",!1)})),_saveMemberProperty(e,t){let n=this.member.get(e) -t&&(t=t.trim()),(!1===t||t||n)&&this.member.set(e,t)}}) -e.default=l})),define("ghost-admin/controllers/members",["exports","ghost-admin/utils/ghost-paths","moment","ember-inflector","ember-concurrency"],(function(e,t,n,s,a){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var l=Ember.Controller.extend({store:Ember.inject.service(),queryParams:["label"],label:null,members:null,searchText:"",modalLabel:null,showLabelModal:!1,_hasLoadedLabels:!1,_availableLabels:null,init(){this._super(...arguments),this.set("members",this.store.peekAll("member")),this._availableLabels=this.store.peekAll("label")},listHeader:Ember.computed("selectedLabel","searchText",(function(){let{searchText:e,selectedLabel:t,filteredMembers:n}=this -if(e)return"Search result" -if(this.fetchMembers.lastSuccessful){let e=(0,s.pluralize)(n.length,"member") -return t&&t.slug?n.length>1?"".concat(e," match current filter"):"".concat(e," matches current filter"):e}return"Loading..."})),showingAll:Ember.computed("label","searchText",(function(){let{searchText:e,label:t}=this -return!e&&!t})),availableLabels:Ember.computed("_availableLabels.@each.{isNew}",(function(){let e=this._availableLabels.filter(e=>!e.get("isNew")).filter(e=>null!==e.get("id")).sort((e,t)=>e.name.localeCompare(t.name,void 0,{ignorePunctuation:!0})).toArray() -return e.unshiftObject({name:"All labels",slug:null}),e})),selectedLabel:Ember.computed("label","availableLabels",(function(){let e=this.get("label") -return this.get("availableLabels").findBy("slug",e)})),labelModalData:Ember.computed("modalLabel","availableLabels",(function(){return{label:this.get("modalLabel"),labels:this.get("availableLabels")}})),filteredMembers:Ember.computed("members.@each.{name,email}","searchText","label",(function(){let{members:e,searchText:t,label:n}=this -return t=t.toLowerCase(),e.filter(e=>{if(!t)return!0 -let{name:n,email:s}=e -return n&&n.toLowerCase().indexOf(t)>=0||s&&s.toLowerCase().indexOf(t)>=0}).filter(e=>!n||!!e.labels.find(e=>e.slug===n)).sort((e,t)=>t.get("createdAtUTC").valueOf()-e.get("createdAtUTC").valueOf())})),actions:{exportData(){let e=(0,t.default)().url.api("members/csv"),n="".concat(e,"?limit=all"),s=document.getElementById("iframeDownload") -s||(s=document.createElement("iframe"),s.id="iframeDownload",s.style.display="none",document.body.append(s)),s.setAttribute("src",n)},changeLabel(e,t){t&&(t.preventDefault(),t.stopPropagation()),this.set("label",Ember.get(e,"slug"))},addLabel(e){e&&(e.preventDefault(),e.stopPropagation()) -const t=this.store.createRecord("label") -this.set("modalLabel",t),this.toggleProperty("showLabelModal")},editLabel(e,t){t&&(t.preventDefault(),t.stopPropagation()) -let n=this.get("availableLabels").findBy("slug",e) -this.set("modalLabel",n),this.toggleProperty("showLabelModal")},toggleLabelModal(){this.toggleProperty("showLabelModal")}},fetchMembers:(0,a.task)((function*(){let e=new Date -this._hasFetchedAll?yield this.store.query("member",{limit:"all",filter:"updated_at:>='".concat(n.default.utc(this._lastFetchDate).format("YYYY-MM-DD HH:mm:ss"),"'"),order:"created_at desc"}):(yield this.store.query("member",{limit:"all",order:"created_at desc"}),this._hasFetchedAll=!0),this._lastFetchDate=e}))}) -e.default=l})),define("ghost-admin/controllers/members/import",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Controller.extend({members:Ember.inject.controller(),router:Ember.inject.service(),actions:{fetchNewMembers(){this.members.fetchMembers.perform()},close(){this.router.transitionTo("members")}}}) -e.default=t})),define("ghost-admin/controllers/pages-loading",["exports","ghost-admin/controllers/posts-loading"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=t.default.extend({postsController:Ember.inject.controller("pages"),ui:Ember.inject.service()}) -e.default=n})),define("ghost-admin/controllers/pages",["exports","ghost-admin/controllers/posts"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const n=[{name:"All pages",value:null},{name:"Draft pages",value:"draft"},{name:"Published pages",value:"published"},{name:"Scheduled pages",value:"scheduled"},{name:"Featured pages",value:"featured"}] -var s=t.default.extend({init(){this._super(...arguments),this.availableTypes=n},actions:{openEditor(e){this.transitionToRoute("editor.edit","page",e.get("id"))}}}) -e.default=s})),define("ghost-admin/controllers/posts-loading",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Controller.extend({postsController:Ember.inject.controller("posts"),session:Ember.inject.service(),ui:Ember.inject.service(),availableTypes:Ember.computed.readOnly("postsController.availableTypes"),selectedType:Ember.computed.readOnly("postsController.selectedType"),availableTags:Ember.computed.readOnly("postsController.availableTags"),selectedTag:Ember.computed.readOnly("postsController.selectedTag"),availableAuthors:Ember.computed.readOnly("postsController.availableAuthors"),selectedAuthor:Ember.computed.readOnly("postsController.selectedAuthor"),availableOrders:Ember.computed.readOnly("postsController.availableOrders"),selectedOrder:Ember.computed.readOnly("postsController.selectedOrder")}) -e.default=t})),define("ghost-admin/controllers/posts",["exports","ghost-admin/helpers/reset-query-params"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const n=[{name:"All posts",value:null},{name:"Draft posts",value:"draft"},{name:"Published posts",value:"published"},{name:"Scheduled posts",value:"scheduled"},{name:"Featured posts",value:"featured"}],s=[{name:"Newest",value:null},{name:"Oldest",value:"published_at asc"},{name:"Recently updated",value:"updated_at desc"}] -var a=Ember.Controller.extend({store:Ember.inject.service(),queryParams:["type","author","tag","order"],_hasLoadedTags:!1,_hasLoadedAuthors:!1,availableTypes:null,availableOrders:null,init(){this._super(...arguments),this.availableTypes=n,this.availableOrders=s,this.setProperties(t.DEFAULT_QUERY_PARAMS.posts)},postsInfinityModel:Ember.computed.alias("model"),showingAll:Ember.computed("type","author","tag",(function(){let{type:e,author:t,tag:n}=this.getProperties(["type","author","tag"]) -return!e&&!t&&!n})),selectedType:Ember.computed("type",(function(){return this.get("availableTypes").findBy("value",this.get("type"))||{value:"!unknown"}})),selectedOrder:Ember.computed("order",(function(){return this.get("availableOrders").findBy("value",this.get("order"))||{value:"!unknown"}})),_availableTags:Ember.computed((function(){return this.get("store").peekAll("tag")})),availableTags:Ember.computed("_availableTags.[]",(function(){let e=this.get("_availableTags").filter(e=>null!==e.get("id")).sort((e,t)=>e.name.localeCompare(t.name,void 0,{ignorePunctuation:!0})).toArray() -return e.unshiftObject({name:"All tags",slug:null}),e})),selectedTag:Ember.computed("tag","_availableTags.[]",(function(){let e=this.get("tag") -return this.get("availableTags").findBy("slug",e)||{slug:"!unknown"}})),_availableAuthors:Ember.computed((function(){return this.get("store").peekAll("user")})),availableAuthors:Ember.computed("_availableAuthors.[]",(function(){let e=this.get("_availableAuthors").toArray() -return e.unshiftObject({name:"All authors",slug:null}),e})),selectedAuthor:Ember.computed("author","availableAuthors.[]",(function(){let e=this.get("author") -return this.get("availableAuthors").findBy("slug",e)||{slug:"!unknown"}})),actions:{changeType(e){this.set("type",Ember.get(e,"value"))},changeAuthor(e){this.set("author",Ember.get(e,"slug"))},changeTag(e){this.set("tag",Ember.get(e,"slug"))},changeOrder(e){this.set("order",Ember.get(e,"value"))},openEditor(e){this.transitionToRoute("editor.edit","post",e.get("id"))}}}) -e.default=a})),define("ghost-admin/controllers/reset",["exports","ghost-admin/mixins/validation-engine","ember-concurrency"],(function(e,t,n){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var s=Ember.Controller.extend(t.default,{ghostPaths:Ember.inject.service(),notifications:Ember.inject.service(),session:Ember.inject.service(),ajax:Ember.inject.service(),config:Ember.inject.service(),newPassword:"",ne2Password:"",token:"",flowErrors:"",validationType:"reset",email:Ember.computed("token",(function(){return atob(this.token).split("|")[1]})),actions:{submit(){return this.resetPassword.perform()}},clearData(){this.setProperties({newPassword:"",ne2Password:"",token:""})},resetPassword:(0,n.task)((function*(){let e=this.getProperties("newPassword","ne2Password","token"),t=this.get("ghostPaths.url").api("authentication","passwordreset") -this.set("flowErrors",""),this.hasValidated.addObjects(["newPassword","ne2Password"]) -try{yield this.validate() -try{let n=yield this.ajax.put(t,{data:{passwordreset:[e]}}) -return this.notifications.showAlert(n.passwordreset[0].message,{type:"warn",delayed:!0,key:"password.reset"}),this.session.authenticate("authenticator:cookie",this.email,e.newPassword),!0}catch(n){this.notifications.showAPIError(n,{key:"password.reset"})}}catch(n){if(this.get("errors.newPassword")&&this.set("flowErrors",this.get("errors.newPassword")[0].message),this.get("errors.ne2Password")&&this.set("flowErrors",this.get("errors.ne2Password")[0].message),n&&0===this.get("errors.length"))throw n}})).drop()}) -e.default=s})),define("ghost-admin/controllers/settings/code-injection",["exports","ember-concurrency"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Controller.extend({notifications:Ember.inject.service(),settings:Ember.inject.service(),actions:{save(){this.save.perform()},toggleLeaveSettingsModal(e){let t=this.leaveSettingsTransition -if(!e&&this.showLeaveSettingsModal)return this.set("leaveSettingsTransition",null),void this.set("showLeaveSettingsModal",!1) -if(!t||e.targetName===t.targetName){if(this.set("leaveSettingsTransition",e),this.get("save.isRunning"))return this.get("save.last").then(()=>{e.retry()}) -this.set("showLeaveSettingsModal",!0)}},leaveSettings(){let e=this.leaveSettingsTransition,t=this.settings -if(e)return t.rollbackAttributes(),e.retry() -this.notifications.showAlert("Sorry, there was an error in the application. Please let the Ghost team know what happened.",{type:"error"})}},save:(0,t.task)((function*(){let e=this.notifications -try{return yield this.settings.save()}catch(t){throw e.showAPIError(t,{key:"code-injection.save"}),t}}))}) -e.default=n})),define("ghost-admin/controllers/settings/design",["exports","jquery","ghost-admin/models/navigation-item","ghost-admin/services/ajax","ember-concurrency"],(function(e,t,n,s,a){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var l=Ember.Controller.extend({config:Ember.inject.service(),ghostPaths:Ember.inject.service(),notifications:Ember.inject.service(),session:Ember.inject.service(),settings:Ember.inject.service(),dirtyAttributes:!1,newNavItem:null,newSecondaryNavItem:null,themes:null,themeToDelete:null,init(){this._super(...arguments),this.set("newNavItem",n.default.create({isNew:!0})),this.set("newSecondaryNavItem",n.default.create({isNew:!0,isSecondary:!0}))},showDeleteThemeModal:Ember.computed.notEmpty("themeToDelete"),blogUrl:Ember.computed("config.blogUrl",(function(){let e=this.get("config.blogUrl") -return"/"!==e.slice(-1)?"".concat(e,"/"):e})),actions:{save(){this.save.perform()},addNavItem(e){return""===e.get("url")&&e.set("url","/"),e.validate().then(()=>{this.addNewNavItem(e)})},deleteNavItem(e){if(!e)return;(e.isSecondary?this.get("settings.secondaryNavigation"):this.get("settings.navigation")).removeObject(e),this.set("dirtyAttributes",!0)},updateLabel(e,t){t&&(t.set("label",e),this.set("dirtyAttributes",!0))},updateUrl(e,t){if(t)return t.set("url",e),this.set("dirtyAttributes",!0),e},toggleLeaveSettingsModal(e){let t=this.leaveSettingsTransition -if(!e&&this.showLeaveSettingsModal)return this.set("leaveSettingsTransition",null),void this.set("showLeaveSettingsModal",!1) -if(!t||e.targetName===t.targetName){if(this.set("leaveSettingsTransition",e),this.get("save.isRunning"))return this.get("save.last").then(()=>{e.retry()}) -this.set("showLeaveSettingsModal",!0)}},leaveSettings(){let e=this.leaveSettingsTransition,t=this.settings -if(e)return t.rollbackAttributes(),this.set("dirtyAttributes",!1),e.retry() -this.notifications.showAlert("Sorry, there was an error in the application. Please let the Ghost team know what happened.",{type:"error"})},activateTheme(e){return e.activate().then(e=>{Ember.isEmpty(e.get("warnings"))||(this.set("themeWarnings",e.get("warnings")),this.set("showThemeWarningsModal",!0)),Ember.isEmpty(e.get("errors"))||(this.set("themeErrors",e.get("errors")),this.set("showThemeWarningsModal",!0))}).catch(e=>{if((0,s.isThemeValidationError)(e)){let t=e.payload.errors[0].details.errors,n=[],s=[] -if(t.length>0)for(let e=0;e",{id:"iframeDownload"}).hide().appendTo("body")),s.attr("src",n)},deleteTheme(e){return e?this.set("themeToDelete",e):this._deleteTheme()},hideDeleteThemeModal(){this.set("themeToDelete",null)},hideThemeWarningsModal(){this.set("themeWarnings",null),this.set("themeErrors",null),this.set("themeFatalErrors",null),this.set("showThemeWarningsModal",!1),this.set("showThemeErrorsModal",!1)},reset(){this.set("newNavItem",n.default.create({isNew:!0})),this.set("newSecondaryNavItem",n.default.create({isNew:!0,isSecondary:!0}))}},save:(0,a.task)((function*(){let e=this.get("settings.navigation"),t=this.get("settings.secondaryNavigation"),n=this.notifications,s=[] -this.newNavItem.get("isBlank")||s.pushObject(this.send("addNavItem",this.newNavItem)),this.newSecondaryNavItem.get("isBlank")||s.pushObject(this.send("addNavItem",this.newSecondaryNavItem)),e.map(e=>{s.pushObject(e.validate())}),t.map(e=>{s.pushObject(e.validate())}) -try{return yield Ember.RSVP.all(s),this.set("dirtyAttributes",!1),yield this.settings.save()}catch(a){if(a)throw n.showAPIError(a),a}})),addNewNavItem(e){let s=e.isSecondary?this.get("settings.secondaryNavigation"):this.get("settings.navigation") -e.set("isNew",!1),s.pushObject(e),this.set("dirtyAttributes",!0),e.isSecondary?(this.set("newSecondaryNavItem",n.default.create({isNew:!0,isSecondary:!0})),(0,t.default)(".gh-blognav-container:last .gh-blognav-line:last input:first").focus()):(this.set("newNavItem",n.default.create({isNew:!0})),(0,t.default)(".gh-blognav-container:first .gh-blognav-line:last input:first").focus())},_deleteTheme(){let e=this.store.peekRecord("theme",this.themeToDelete.name) -if(e)return e.destroyRecord().then(()=>{e.unloadRecord()}).catch(e=>{this.notifications.showAPIError(e)})}}) -e.default=l})),define("ghost-admin/controllers/settings/general",["exports","jquery","ghost-admin/utils/password-generator","validator","ghost-admin/components/gh-image-uploader","ember-concurrency"],(function(e,t,n,s,a,l){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const r=["ico","png"] -var i=Ember.Controller.extend({config:Ember.inject.service(),ghostPaths:Ember.inject.service(),notifications:Ember.inject.service(),session:Ember.inject.service(),settings:Ember.inject.service(),ui:Ember.inject.service(),availableTimezones:null,iconExtensions:null,iconMimeTypes:"image/png,image/x-icon",imageExtensions:a.IMAGE_EXTENSIONS,imageMimeTypes:a.IMAGE_MIME_TYPES,_scratchFacebook:null,_scratchTwitter:null,init(){this._super(...arguments),this.iconExtensions=r},privateRSSUrl:Ember.computed("config.blogUrl","settings.publicHash",(function(){let e=this.get("config.blogUrl"),t=this.get("settings.publicHash") -return"".concat(e,"/").concat(t,"/rss")})),backgroundStyle:Ember.computed("settings.brand.primaryColor",(function(){let e=this.get("settings.brand.primaryColor")||"#ffffff" -return Ember.String.htmlSafe("background-color: ".concat(e))})),brandColor:Ember.computed("settings.brand.primaryColor",(function(){let e=this.get("settings.brand.primaryColor") -return e&&"#"===e[0]?e.slice(1):e})),actions:{save(){this.save.perform()},setTimezone(e){this.set("settings.activeTimezone",e.name)},removeImage(e){this.settings.set(e,"")},triggerFileDialog(e){(0,t.default)(e.target).closest(".gh-setting-action").find('input[type="file"]').click()},imageUploaded(e,t){if(t[0])return this.settings.set(e,t[0].url)},toggleIsPrivate(e){let t=this.settings -t.set("isPrivate",e),t.get("errors").remove("password") -let s=t.changedAttributes() -e&&s.isPrivate?t.set("password",(0,n.default)(6)+Math.floor(1e3*Math.random())):s.password&&t.set("password",s.password[0])},toggleLeaveSettingsModal(e){let t=this.leaveSettingsTransition -if(!e&&this.showLeaveSettingsModal)return this.set("leaveSettingsTransition",null),void this.set("showLeaveSettingsModal",!1) -if(!t||e.targetName===t.targetName){if(this.set("leaveSettingsTransition",e),this.get("save.isRunning"))return this.get("save.last").then(()=>{e.retry()}) -this.set("showLeaveSettingsModal",!0)}},leaveSettings(){let e=this.leaveSettingsTransition,t=this.settings -if(e)return t.rollbackAttributes(),e.retry() -this.notifications.showAlert("Sorry, there was an error in the application. Please let the Ghost team know what happened.",{type:"error"})},validateFacebookUrl(){let e=this._scratchFacebook,t=this.get("settings.facebook"),n="" -if(this.get("settings.errors").remove("facebook"),this.get("settings.hasValidated").removeObject("facebook"),""!==e){e||(e=t) -try{if(e=e.replace(/(https?:\/\/)?(www\.)?facebook\.com/i,""),e.match(/^(http|\/\/)/i))throw"invalid url" -if(e=e.replace(/^\//,""),e="https://www.facebook.com/".concat(e),!s.default.isURL(e))throw"invalid url" -this.set("settings.facebook",""),Ember.run.schedule("afterRender",this,(function(){this.set("settings.facebook",e)}))}catch(a){if("invalid url"===a)return n="The URL must be in a format like https://www.facebook.com/yourPage",void this.get("settings.errors").add("facebook",n) -throw a}finally{this.get("settings.hasValidated").pushObject("facebook")}}else this.set("settings.facebook","")},validateTwitterUrl(){let e=this._scratchTwitter,t=this.get("settings.twitter"),n="" -if(this.get("settings.errors").remove("twitter"),this.get("settings.hasValidated").removeObject("twitter"),""!==e){if(e||(e=t),!e.match(/(?:twitter\.com\/)(\S+)/)&&!e.match(/([a-z\d.]+)/i))return n="The URL must be in a format like https://twitter.com/yourUsername",this.get("settings.errors").add("twitter",n),void this.get("settings.hasValidated").pushObject("twitter") -{let t=[] -if(e.match(/(?:twitter\.com\/)(\S+)/)?[,t]=e.match(/(?:twitter\.com\/)(\S+)/):[t]=e.match(/([^/]+)\/?$/im),t.match(/^(http|www)|(\/)/)||!t.match(/^[a-z\d._]{1,15}$/im))return n=t.match(/^[a-z\d._]{1,15}$/im)?"The URL must be in a format like https://twitter.com/yourUsername":"Your Username is not a valid Twitter Username",this.get("settings.errors").add("twitter",n),void this.get("settings.hasValidated").pushObject("twitter") -e="https://twitter.com/".concat(t),this.get("settings.hasValidated").pushObject("twitter"),this.set("settings.twitter",""),Ember.run.schedule("afterRender",this,(function(){this.set("settings.twitter",e)}))}}else this.set("settings.twitter","")},validateBrandColor(){let e=this.get("brandColor"),t=this.get("settings.brand.primaryColor"),n="" -if(this.get("settings.errors").remove("brandColor"),this.get("settings.hasValidated").removeObject("brandColor"),""!==e){if(e||(e=t),"#"!==e[0]&&(e="#".concat(e)),!e.match(/#[0-9A-Fa-f]{6}$/))return n="The color should be in valid hex format",this.get("settings.errors").add("brandColor",n),void this.get("settings.hasValidated").pushObject("brandColor") -this.set("settings.brand.primaryColor",""),Ember.run.schedule("afterRender",this,(function(){this.set("settings.brand.primaryColor",e)}))}else this.set("settings.brand.primaryColor","")}},_deleteTheme(){let e=this.store.peekRecord("theme",this.themeToDelete.name) -if(e)return e.destroyRecord().catch(e=>{this.notifications.showAPIError(e)})},save:(0,l.task)((function*(){let e=this.notifications,t=this.config -try{let e=yield this.settings.save() -return t.set("blogTitle",e.get("title")),this.ui.updateDocumentTitle(),e}catch(n){throw n&&e.showAPIError(n,{key:"settings.save"}),n}}))}) -e.default=i})),define("ghost-admin/controllers/settings/integration",["exports","ghost-admin/utils/copy-text-to-clipboard","ghost-admin/components/gh-image-uploader","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=Ember.Controller.extend({config:Ember.inject.service(),ghostPaths:Ember.inject.service(),imageExtensions:n.IMAGE_EXTENSIONS,imageMimeTypes:n.IMAGE_MIME_TYPES,integration:Ember.computed.alias("model"),apiUrl:Ember.computed((function(){let e=window.location.origin,t=this.ghostPaths.subdir -return this.ghostPaths.url.join(e,t).replace(/\/$/,"")})),allWebhooks:Ember.computed((function(){return this.store.peekAll("webhook")})),filteredWebhooks:Ember.computed("integration.id","allWebhooks.@each.{isNew,isDeleted}",(function(){return this.allWebhooks.filter(e=>e.belongsTo("integration").id()===this.integration.id&&!e.isNew&&!e.isDeleted)})),iconImageStyle:Ember.computed("integration.iconImage",(function(){let e=this.integration.iconImage -if(e){let t=["background-image: url(".concat(e,")"),"background-size: 50%","background-position: 50%","background-repeat: no-repeat"] -return Ember.String.htmlSafe(t.join("; "))}return Ember.String.htmlSafe("")})),actions:{triggerIconFileDialog(){document.querySelector('input[type="file"][name="iconImage"]').click()},setIconImage([e]){this.integration.set("iconImage",e.url)},save(){return this.save.perform()},toggleUnsavedChangesModal(e){let t=this.leaveScreenTransition -if(!e&&this.showUnsavedChangesModal)return this.set("leaveScreenTransition",null),void this.set("showUnsavedChangesModal",!1) -if(!t||e.targetName===t.targetName){if(this.set("leaveScreenTransition",e),this.save.isRunning)return this.save.last.then(()=>{e.retry()}) -this.set("showUnsavedChangesModal",!0)}},leaveScreen(){let e=this.leaveScreenTransition -if(e)return this.integration.rollbackAttributes(),e.retry() -this.notifications.showAlert("Sorry, there was an error in the application. Please let the Ghost team know what happened.",{type:"error"})},deleteIntegration(){this.integration.destroyRecord()},confirmIntegrationDeletion(){this.set("showDeleteIntegrationModal",!0)},cancelIntegrationDeletion(){this.set("showDeleteIntegrationModal",!1)},confirmWebhookDeletion(e){this.set("webhookToDelete",e)},cancelWebhookDeletion(){this.set("webhookToDelete",null)},deleteWebhook(){return this.webhookToDelete.destroyRecord()}},save:(0,s.task)((function*(){return yield this.integration.save()})),copyContentKey:(0,s.task)((function*(){(0,t.default)(this.integration.contentKey.secret),yield(0,s.timeout)(3e3)})),copyAdminKey:(0,s.task)((function*(){(0,t.default)(this.integration.adminKey.secret),yield(0,s.timeout)(3e3)})),copyApiUrl:(0,s.task)((function*(){(0,t.default)(this.apiUrl),yield(0,s.timeout)(3e3)}))}) -e.default=a})),define("ghost-admin/controllers/settings/integration/webhooks/edit",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Controller.extend({webhook:Ember.computed.alias("model"),actions:{save(){return this.webhook.save()},cancel(){return this.webhook.get("integration").then(e=>{this.transitionToRoute("settings.integration",e)})}},reset(){this.webhook.rollbackAttributes(),this.webhook.errors.clear()}}) -e.default=t})),define("ghost-admin/controllers/settings/integration/webhooks/new",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Controller.extend({webhook:Ember.computed.alias("model"),actions:{save(){return this.webhook.save()},cancel(){return this.webhook.get("integration").then(e=>{this.transitionToRoute("settings.integration",e)})}}}) -e.default=t})),define("ghost-admin/controllers/settings/integrations",["exports","ember-concurrency"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Controller.extend({settings:Ember.inject.service(),store:Ember.inject.service(),_allIntegrations:null,init(){this._super(...arguments),this._allIntegrations=this.store.peekAll("integration")},integrations:Ember.computed("_allIntegrations.@each.{isNew,type}",(function(){return this._allIntegrations.reject(e=>e.isNew||"custom"!==e.type)})),fetchIntegrations:(0,t.task)((function*(){return yield this.store.findAll("integration")})),integrationModelHook(e,t,n,s){let a=this.store.peekAll("integration").findBy(e,t) -return a||this.fetchIntegrations.perform().then(a=>{let l=a.findBy(e,t) -if(!l){let e=s.intent.url.replace(/^\//,"") -return n.replaceWith("error404",{path:e,status:404})}return l})}}) -e.default=n})),define("ghost-admin/controllers/settings/integrations/amp",["exports","ember-concurrency"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Controller.extend({notifications:Ember.inject.service(),settings:Ember.inject.service(),leaveSettingsTransition:null,ampSettings:Ember.computed.alias("settings.amp"),actions:{update(e){this.set("ampSettings",e)},save(){this.save.perform()},toggleLeaveSettingsModal(e){let t=this.leaveSettingsTransition -if(!e&&this.showLeaveSettingsModal)return this.set("leaveSettingsTransition",null),void this.set("showLeaveSettingsModal",!1) -if(!t||e.targetName===t.targetName){if(this.set("leaveSettingsTransition",e),this.get("save.isRunning"))return this.get("save.last").then(()=>{e.retry()}) -this.set("showLeaveSettingsModal",!0)}},leaveSettings(){let e=this.leaveSettingsTransition,t=this.settings -if(e)return t.rollbackAttributes(),e.retry() -this.notifications.showAlert("Sorry, there was an error in the application. Please let the Ghost team know what happened.",{type:"error"})}},save:(0,t.task)((function*(){let e=this.ampSettings,t=this.settings -t.set("amp",e) -try{return yield t.save()}catch(n){throw this.notifications.showAPIError(n),n}})).drop()}) -e.default=n})),define("ghost-admin/controllers/settings/integrations/new",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var t=Ember.Controller.extend({integration:Ember.computed.alias("model"),actions:{save(){return this.integration.save()},cancel(){this.transitionToRoute("settings.integrations")}}}) -e.default=t})),define("ghost-admin/controllers/settings/integrations/slack",["exports","ghost-admin/utils/bound-one-way","ember-ajax/errors","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=Ember.Controller.extend({ghostPaths:Ember.inject.service(),ajax:Ember.inject.service(),notifications:Ember.inject.service(),settings:Ember.inject.service(),leaveSettingsTransition:null,slackArray:null,init(){this._super(...arguments),this.slackArray=[]},slackSettings:(0,t.default)("settings.slack.firstObject"),testNotificationDisabled:Ember.computed.empty("slackSettings.url"),actions:{save(){this.save.perform()},updateURL(e){e="string"==typeof e?e.trim():e,this.set("slackSettings.url",e),this.get("slackSettings.errors").clear()},updateUsername(e){e="string"==typeof e?e.trimLeft():e,this.set("slackSettings.username",e),this.get("slackSettings.errors").clear()},triggerDirtyState(){let e=this.slackSettings,t=this.slackArray,n=this.settings -t.clear().pushObject(e),n.set("slack",t)},toggleLeaveSettingsModal(e){let t=this.leaveSettingsTransition -if(!e&&this.showLeaveSettingsModal)return this.set("leaveSettingsTransition",null),void this.set("showLeaveSettingsModal",!1) -if(!t||e.targetName===t.targetName){if(this.set("leaveSettingsTransition",e),this.get("save.isRunning"))return this.get("save.last").then(()=>{e.retry()}) -this.set("showLeaveSettingsModal",!0)}},leaveSettings(){let e=this.leaveSettingsTransition,t=this.settings,n=this.slackArray -if(e)return t.rollbackAttributes(),n.clear(),e.retry() -this.notifications.showAlert("Sorry, there was an error in the application. Please let the Ghost team know what happened.",{type:"error"})}},save:(0,s.task)((function*(){let e=this.slackSettings,t=this.settings,n=this.slackArray -try{return yield e.validate(),n.clear().pushObject(e),yield t.set("slack",n),yield t.save()}catch(s){if(s)throw this.notifications.showAPIError(s),s}})).drop(),sendTestNotification:(0,s.task)((function*(){let e=this.notifications,t=this.get("ghostPaths.url").api("slack","test") -try{return yield this.save.perform(),yield this.ajax.post(t),e.showNotification("Test notification sent",{type:"info",key:"slack-test.send.success",description:"Check your Slack channel for the test message"}),!0}catch(s){if(e.showAPIError(s,{key:"slack-test:send"}),!(0,n.isInvalidError)(s))throw s}})).drop()}) -e.default=a})),define("ghost-admin/controllers/settings/integrations/unsplash",["exports","ember-concurrency"],(function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var n=Ember.Controller.extend({notifications:Ember.inject.service(),settings:Ember.inject.service(),dirtyAttributes:null,rollbackValue:null,leaveSettingsTransition:null,unsplashSettings:Ember.computed.alias("settings.unsplash"),actions:{save(){this.save.perform()},update(e){this.dirtyAttributes||this.set("rollbackValue",this.get("unsplashSettings.isActive")),this.set("unsplashSettings.isActive",e),this.set("dirtyAttributes",!0)},toggleLeaveSettingsModal(e){let t=this.leaveSettingsTransition -if(!e&&this.showLeaveSettingsModal)return this.set("leaveSettingsTransition",null),void this.set("showLeaveSettingsModal",!1) -if(!t||e.targetName===t.targetName){if(this.set("leaveSettingsTransition",e),this.get("save.isRunning"))return this.get("save.last").then(()=>{e.retry()}) -this.set("showLeaveSettingsModal",!0)}},leaveSettings(){let e=this.leaveSettingsTransition -if(e)return this.set("unsplashSettings.isActive",this.rollbackValue),this.set("dirtyAttributes",!1),this.set("rollbackValue",null),e.retry() -this.notifications.showAlert("Sorry, there was an error in the application. Please let the Ghost team know what happened.",{type:"error"})}},save:(0,t.task)((function*(){let e=this.unsplashSettings,t=this.settings -try{return t.set("unsplash",e),this.set("dirtyAttributes",!1),this.set("rollbackValue",null),yield t.save()}catch(n){if(n)throw this.notifications.showAPIError(n),n}})).drop()}) -e.default=n})),define("ghost-admin/controllers/settings/integrations/zapier",["exports","ghost-admin/config/environment","ghost-admin/utils/copy-text-to-clipboard","ember-concurrency"],(function(e,t,n,s){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -var a=Ember.Controller.extend({ghostPaths:Ember.inject.service(),isTesting:void 0,init(){this._super(...arguments),void 0===this.isTesting&&(this.isTesting="test"===t.default.environment)},integration:Ember.computed.alias("model"),apiUrl:Ember.computed((function(){let e=window.location.origin,t=this.ghostPaths.subdir -return this.ghostPaths.url.join(e,t).replace(/\/$/,"")})),copyAdminKey:(0,s.task)((function*(){(0,n.default)(this.integration.adminKey.secret),yield(0,s.timeout)(3e3)})),copyApiUrl:(0,s.task)((function*(){(0,n.default)(this.apiUrl),yield(0,s.timeout)(3e3)}))}) -e.default=a})),define("ghost-admin/controllers/settings/labs",["exports","jquery","ghost-admin/config/environment","ghost-admin/services/ajax","ember-concurrency"],(function(e,t,n,s,a){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0 -const{Promise:l}=Ember.RSVP,r=["application/json","application/zip","application/x-zip-compressed"],i=["json"],o=["application/json"],u=["yaml"],d=["text/vnd.yaml","application/vnd.yaml","text/x-yaml","application/x-yaml"] -var c=Ember.Controller.extend({ajax:Ember.inject.service(),config:Ember.inject.service(),feature:Ember.inject.service(),ghostPaths:Ember.inject.service(),notifications:Ember.inject.service(),session:Ember.inject.service(),settings:Ember.inject.service(),importErrors:null,importSuccessful:!1,showDeleteAllModal:!1,submitting:!1,uploadButtonText:"Import",importMimeType:null,jsonExtension:null,jsonMimeType:null,yamlExtension:null,yamlMimeType:null,init(){this._super(...arguments),this.importMimeType=r,this.jsonExtension=i,this.jsonMimeType=o,this.yamlExtension=u,this.yamlMimeType=d},actions:{onUpload(e){let t=new FormData,n=this.notifications,a=this.get("session.user.id"),l=this.get("ghostPaths.url").api("db") -return this.set("uploadButtonText","Importing"),this.set("importErrors",null),this.set("importSuccessful",!1),this._validate(e).then(()=>(t.append("importfile",e),this.ajax.post(l,{data:t,dataType:"json",cache:!1,contentType:!1,processData:!1}))).then(e=>{let t=this.store -this.set("importSuccessful",!0),e.problems&&this.set("importErrors",e.problems),t.unloadAll(),Ember.run.schedule("destroy",this,()=>(this.set("session.user",t.findRecord("user",a)),n.showNotification("Import successful",{key:"import.upload.success"}),this.settings.reload().then(e=>{this.feature.fetch(),this.config.set("blogTitle",e.get("title"))})))}).catch(e=>{throw(0,s.isUnsupportedMediaTypeError)(e)||(0,s.isRequestEntityTooLargeError)(e)?this.set("importErrors",[e]):e&&e.payload.errors&&Ember.isArray(e.payload.errors)?this.set("importErrors",e.payload.errors):this.set("importErrors",[{message:"Import failed due to an unknown error. Check the Web Inspector console and network tabs for errors."}]),e}).finally(()=>{this.set("uploadButtonText","Import")})},downloadFile(e){let n=this.get("ghostPaths.url").api(e),s=(0,t.default)("#iframeDownload") -0===s.length&&(s=(0,t.default)("