').appendTo(this.$sourceSettingsOuterContainer),this.$footer=cr()('').appendTo(i),this.$footerBtnContainer=cr()('
').appendTo(this.$footer),this.$cancelBtn=cr()("
",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$footerBtnContainer),this.$saveBtn=Craft.ui.createSubmitButton({class:"disabled",label:Craft.t("app","Save"),spinner:!0}).appendTo(this.$footerBtnContainer),this.$loadingSpinner=cr()('
').appendTo(this.$sourceSettingsContainer),this.setContainer(i),this.show(),Craft.sendActionRequest("POST","element-index-settings/get-customize-sources-modal-data",{data:{elementType:this.elementIndex.elementType}}).then(async t=>{this.$saveBtn.removeClass("disabled"),await this.buildModal(t.data),bo.setFocusWithin(this.$sourcesSidebarContent)}).finally(()=>{this.$loadingSpinner.remove()}),this.addListener(this.$cancelBtn,"click","hide"),this.addListener(this.$saveBtn,"click","save"),this.addListener(this.$container,"submit","save")},buildModal:async function(t){this.multiPage=t.multiPage,this.baseSortOptions=t.baseSortOptions,this.defaultSortOptions=t.defaultSortOptions,this.availableTableAttributes=t.availableTableAttributes,this.customFieldAttributes=t.customFieldAttributes,this.elementTypeName=t.elementTypeName,this.conditionBuilderHtml=t.conditionBuilderHtml,this.conditionBuilderJs=t.conditionBuilderJs,this.sites=t.sites,this.userGroups=t.userGroups,this.viewModes=t.viewModes,t.headHtml&&await Craft.appendHeadHtml(t.headHtml),t.bodyHtml&&await Craft.appendBodyHtml(t.bodyHtml),this.multiPage&&(await this.createPagesSidebar(t),cr()("
",{type:"button",class:"cs-back-btn",title:Craft.t("app","Back to pages"),"aria-label":Craft.t("app","Back to pages")}).append(cr()('
').html(await Craft.ui.icon("chevron-left"))).prependTo(this.$sourcesHeader).on("activate",()=>{this.setSelectedScreen(this.$pagesSidebar)})),Craft.hasMousePointerEvents()?this.sourceDrag=new Craft.CustomizeSourcesModal.SourceDrag(this,{handle:".move"}):this.$sourcesSidebar.find(".cs-item .move").hide(),this.sources=[];for(let e=0;e
",{class:"btn add icon dashed menubtn",type:"button",title:Craft.t("app","Source actions"),"aria-label":Craft.t("app","Source actions"),"aria-controls":"cs-source-actions","data-disclosure-trigger":"true"}).appendTo(this.$sourcesSidebarContent),this.$sourceMenu=cr()("
",{id:"cs-source-actions",class:"menu menu--disclosure"}).appendTo(this.$sourcesSidebarContent),this.sourceMenu=new bo.DisclosureMenu(this.$newSourceBtn);const e=t=>{const e=this.addSource(t,!0);bo.scrollContainerToElement(this.$sourcesSidebarContent,e.$item),e.select(),this.sourceMenu.hide()};this.sourceMenu.addItem({label:Craft.t("app","New heading"),onActivate:()=>{e({type:"heading"}),this.focusLabelInput()}}),t.conditionBuilderHtml&&this.sourceMenu.addItem({label:Craft.t("app","New custom source"),onActivate:()=>{const t=this.baseSortOptions.slice(0);t.push(...this.defaultSortOptions),e({type:"custom",key:`custom:${Craft.uuid()}`,sortOptions:t,defaultSort:[t[0].attr,t[1].defaultDir],tableAttributes:[],availableTableAttributes:[]}),this.focusLabelInput()}})},createPagesSidebar:async function(t){this.$sourcesSidebar.removeClass("cs-selected-screen");const e=`cs-header-${Math.floor(1e6*Math.random())}`;this.$pagesSidebar=cr()("
",{class:"cs-sidebar cs-selected-screen",role:"navigation","aria-labelledby":e}).insertBefore(this.$sourcesSidebar),cr()('').appendTo(this.$pagesSidebar).append(cr()("
",{id:e,class:"h3"}).text(Craft.t("app","Pages"))),this.$pagesSidebarContent=cr()('').appendTo(this.$pagesSidebar),this.$pagesSidebarItems=cr()('').appendTo(this.$pagesSidebarContent),Craft.hasMousePointerEvents()?this.pageDrag=new bo.DragSort({handle:".move",axis:"y"}):this.$pagesSidebar.find(".cs-item .move").hide(),this.pages=[];const i=Craft.uniqueArray(t.sources.map(t=>t.page));for(const e of i){const i=t.pageSettings?t.pageSettings[e]?.icon:null;await this.addPage(e,i)}!this.selectedPage&&this.pages.length&&this.pages[0].select(),this.$newPageBtn=cr()("
",{class:"btn add icon dashed",type:"button",text:Craft.t("app","New page")}).appendTo(this.$pagesSidebarContent),this.$newPageBtn.on("activate",()=>{new Craft.CustomizeSourcesModal.PageSettingsModal(this,{triggerElement:this.$newPageBtn,validateName:t=>""===Craft.CustomizeSourcesModal.Page.nameId(t??"")?Craft.t("yii","{attribute} cannot be blank.",{attribute:Craft.t("app","Page Name")}):!!this.isPageNameUnique(t)||Craft.t("app","Another page already has that name."),onSave:async(t,e)=>{await this.addPage(t,e,!0)}})})},isPageNameUnique:function(t,e){const i=Craft.CustomizeSourcesModal.Page.nameId(t);return!this.pages.find(t=>t!==e&&Craft.CustomizeSourcesModal.Page.nameId(t.name)===i)},addPage:async function(t,e=null,i=!1){const s=cr()('
').appendTo(this.$pagesSidebarItems),n=cr()('
').attr({tabindex:"0",role:"button"}).append(cr()('
').html(e?await Craft.ui.icon(e):"")).append(cr()("
",{id:`cs-item-label-${Math.floor(1e6*Math.random())}`,class:"label",text:t})).appendTo(s);Craft.hasMousePointerEvents()&&cr()(`
`).appendTo(s),cr()("
",{type:"hidden",name:`pageSettings[${t}][icon]`,value:e||"","data-icon-input":"true"}).appendTo(s);const a=new Craft.CustomizeSourcesModal.Page(this,s,n,t,e,i);return this.pageDrag?.addItems(s),this.elementIndex.settings.page&&Craft.CustomizeSourcesModal.Page.nameId(this.elementIndex.settings.page)===Craft.CustomizeSourcesModal.Page.nameId(t)&&a.select(),this.pages.push(a),this.updatePageActionButtons(),i&&Craft.cp.announce(Craft.t("app","Success")),a},focusLabelInput:function(){this.selectedSource.$labelInput.focus()},getSourceName:function(){return this.selectedSource?this.selectedSource.sourceData.label:this.sources[0].sourceData.label},getSourceContainer:function(t,e=!0){return void 0===this.sourceContainers[t]&&e&&(this.sourceContainers[t]=cr()('
').appendTo(bo.$bod),a=cr()('
').appendTo(n),r=Craft.ui.createTextField({label:Craft.t("app","Page Name"),value:this.name,required:!0}).appendTo(a),o=Craft.ui.createIconPickerField({label:Craft.t("app","Icon"),value:this.icon}).appendTo(a),l=cr()('').appendTo(n),h=Craft.ui.createButton({label:Craft.t("app","Cancel")}).appendTo(l);Craft.ui.createSubmitButton({label:Craft.t("app","Save")}).appendTo(l);const d=r.find(".text");d.on("input",()=>{this.name=d.val()}),o.find(".icon-picker").data("iconpicker").on("change",t=>{this.icon=t.iconName}),h.on("activate",()=>{this.hide()}),n.on("submit",t=>{if(t.preventDefault(),this.settings.validateName){const t=this.settings.validateName(this.name);if(!0!==t)return Craft.ui.addErrorsToField(r,[t]),this.updateSizeAndPosition(),void d.focus();this.settings.onSave&&this.settings.onSave(this.name,this.icon),this.hide()}}),this.base(n,s)},onFadeOut:function(){this.base(),this.destroy()}}),Craft.CustomizeSourcesModal.SourceDrag=bo.DragSort.extend({modal:null,activePage:null,init:function(t,e={}){this.modal=t,e.filter=()=>this.$targetItem.hasClass("cs-item--heading")?this.$targetItem.add(this.$targetItem.nextUntil(".cs-item--heading")):this.$targetItem,this.modal.multiPage||(e.axis="y"),this.base(e)},onDragStart:function(){this.activePage=null,this.base()},onDrag:function(){if(this.modal.multiPage){this.onDrag._activePage=null;for(const t of this.modal.pages)if(t!==this.modal.selectedPage&&bo.hitTest(this.mouseX,this.mouseY,t.$item)){this.onDrag._activePage=t;break}(this.activePage&&this.onDrag._activePage!==this.activePage||!this.activePage&&null!==this.onDrag._activePage)&&(this.activePage&&this.activePage.$item.removeClass("active"),this.onDrag._activePage?(this.activePage=this.onDrag._activePage,this.activePage.$item.addClass("active")):this.activePage=null)}this.base()},onDragStop:function(){this.activePage&&(this.$draggee.each((t,e)=>{cr()(e).data("source").moveToPage(this.activePage)}),this.$draggee.show().css("visibility",""),this.activePage.$item.removeClass("active"),this.fadeOutHelpers()),this.base()},returnHelpersToDraggees:function(){this.activePage||this.base()}}),Craft.CustomizeSourcesModal.Page=bo.Base.extend({modal:null,actionMenu:null,$item:null,$itemButton:null,$actionBtn:null,$actionMenu:null,_name:null,_icon:null,isNew:null,moveUpBtn:null,moveDownBtn:null,removeBtn:null,init:function(t,e,i,s,n,a){this.modal=t,this.$item=e,this.$itemButton=i,this._name=s,this._icon=n,this.isNew=a,this.$item.data("page",this),this.createActionMenu(),this.addListener(this.$itemButton,"activate",this.select)},createActionMenu:function(){this.$actionBtn=cr()("
",{class:"btn action-btn",type:"button",title:Craft.t("app","Actions"),"aria-label":Craft.t("app","Actions"),"aria-describedby":this.$item.find(".label").attr("id"),"aria-controls":"cs-source-actions","data-disclosure-trigger":"true"}).insertAfter(this.$item.find(".cs-item__btn")),this.$actionMenu=cr()("
",{id:"cs-source-actions",class:"menu menu--disclosure"}).appendTo(this.$item),this.actionMenu=new bo.DisclosureMenu(this.$actionBtn),this.moveUpBtn=this.actionMenu.addItem({icon:"arrow-up",label:Craft.t("app","Move up"),onActivate:()=>{const t=this.getPrevPage();t&&this.$item.insertBefore(t.$item)}}),this.moveDownBtn=this.actionMenu.addItem({icon:"arrow-down",label:Craft.t("app","Move down"),onActivate:()=>{const t=this.getNextPage();t&&this.$item.insertAfter(t.$item)}}),this.actionMenu.addItem({icon:"gear",label:Craft.t("app","Page settings"),onActivate:()=>{new Craft.CustomizeSourcesModal.PageSettingsModal(this,this.name,this.icon,{triggerElement:this.$actionBtn,validateName:t=>""===Craft.CustomizeSourcesModal.Page.nameId(t??"")?Craft.t("yii","{attribute} cannot be blank.",{attribute:Craft.t("app","Page Name")}):!!this.modal.isPageNameUnique(t,this)||Craft.t("app","Another page already has that name."),onSave:(t,e)=>{this.name=t,this.icon=e}})}}),this.removeBtn=this.actionMenu.addItem({icon:"trash",label:Craft.t("app","Remove page"),destructive:!0,onActivate:()=>{confirm(Craft.t("app","Are you sure you want to remove the page “{name}”?",{name:this.name}))&&this.destroy()}}),this.actionMenu.on("show",()=>{this.updateActionButton()})},updateActionButton:function(){this.actionMenu.toggleItem(this.moveUpBtn,!!this.getPrevPage()),this.actionMenu.toggleItem(this.moveDownBtn,!!this.getNextPage()),this.actionMenu.toggleItem(this.removeBtn,this.modal.pages.length>1),this.actionMenu.hasVisibleItems()?this.$actionBtn.removeClass("hidden"):this.$actionBtn.addClass("hidden")},getPrevPage:function(){return this.$item.prev(".cs-item").data("page")},getNextPage:function(){return this.$item.next(".cs-item").data("page")},getSourceContainer:function(t=!0){return this.modal.getSourceContainer(this.name,t)},isSelected:function(){return this.modal.selectedPage===this},select:function(){this.modal.setSelectedScreen(this.modal.$sourcesSidebar),this.isSelected()||(this.modal.selectedPage&&this.modal.selectedPage.deselect(),this.$item.addClass("sel"),this.$itemButton.attr({"aria-current":"true"}),this.modal.sourceContainers[this.name]&&this.modal.sourceContainers[this.name].removeClass("hidden"),this.modal.selectedPage=this,this.modal.$sourceSettingsContainer.scrollTop(0))},deselect:function(){this.$item.removeClass("sel"),this.$itemButton.attr({"aria-current":"false"}),this.modal.sourceContainers[this.name]&&this.modal.sourceContainers[this.name].addClass("hidden"),this.modal.selectedSource&&this.modal.selectedSource.deselect(),this.modal.selectedPage=null},set name(t){if(t===this.name)return;this.$item.find(".label").text(t),this.$item.find("[data-icon-input]").attr("name",`pageSettings[${t}][icon]`);const e=this.getSourceContainer(!1);e&&(this.modal.sourceContainers[t]=e,delete this.modal.sourceContainers[this.name],e.find(".cs-item").each((e,i)=>{cr()(i).data("source").$pageInput.val(t)})),this._name=t},get name(){return this._name},set icon(t){if(t===this.icon)return;this.$item.find("[data-icon-input]").val(t||"");const e=this.$item.find(".cp-icon");t?Craft.ui.icon(t).then(t=>{e.html(t)}):e.html(""),this._icon=t},get icon(){return this._icon},destroy:function(){this.modal.pageDrag?.removeItems(this.$item),this.modal.pages=this.modal.pages.filter(t=>t!==this);let t=this.$item.prev(".cs-item");t.length||(t=this.$item.next(".cs-item"));const e=t.data("page");this.isSelected()&&(this.deselect(),e?.select()),e?.$actionBtn.focus();const i=this.getSourceContainer(!1);if(i){if(e){const t=e.getSourceContainer(),s=i.children();for(let i=0;i
t.replace(/[^\p{L}\p{N}\p{M}]/gu,"").toLowerCase()}),Craft.CustomizeSourcesModal.BaseSource=bo.Base.extend({modal:null,actionMenu:null,$item:null,$itemButton:null,$itemInput:null,$pageInput:null,$actionBtn:null,$actionMenu:null,$settingsContainer:null,sourceData:null,isNew:null,moveUpBtn:null,moveDownBtn:null,init:function(t,e,i,s,n,a){this.modal=t,this.$item=e,this.$itemButton=i,this.$itemInput=s,this.sourceData=n,this.isNew=a,this.$item.data("source",this),this.createActionMenu(),this.modal.multiPage&&(this.$pageInput=cr()("",{type:"hidden",name:`sourcePages[${this.sourceData.key}]`,value:n.page}).appendTo(this.$item)),this.addListener(this.$itemButton,"activate",this.select)},createActionMenu:function(){this.$actionBtn=cr()("",{class:"btn action-btn",type:"button",title:Craft.t("app","Actions"),"aria-label":Craft.t("app","Actions"),"aria-describedby":this.$item.find(".label").attr("id"),"aria-controls":"cs-source-actions","data-disclosure-trigger":"true"}).insertAfter(this.$item.find(".cs-item__btn")),this.$actionMenu=cr()("",{id:"cs-source-actions",class:"menu menu--disclosure"}).appendTo(this.$item),this.actionMenu=new bo.DisclosureMenu(this.$actionBtn),this.moveUpBtn=this.actionMenu.addItem({icon:"arrow-up",label:Craft.t("app","Move up"),onActivate:()=>{const t=this.getPrevSource();t&&this.$item.insertBefore(t.$item)}}),this.moveDownBtn=this.actionMenu.addItem({icon:"arrow-down",label:Craft.t("app","Move down"),onActivate:()=>{const t=this.getNextSource();t&&this.$item.insertAfter(t.$item)}}),(this.isHeading()||this.isCustomSource())&&this.actionMenu.addItem({icon:"trash",label:Craft.t("app",this.isHeading()?"Remove heading":"Delete custom source"),destructive:!0,onActivate:()=>{this.destroy()}}),this.actionMenu.on("show",()=>{this.updateActionButton()})},getPrevSource:function(){return this.$item.prev(".cs-item").data("source")},getNextSource:function(){return this.$item.next(".cs-item").data("source")},updateActionButton:function(){if(this.actionMenu.toggleItem(this.moveUpBtn,!!this.getPrevSource()),this.actionMenu.toggleItem(this.moveDownBtn,!!this.getNextSource()),this.modal.multiPage){const t=this.$pageInput.val();let e=this.$actionMenu.find("[data-cs-multi-page-list]");e.length||(this.actionMenu.addHr(),e=cr()(this.actionMenu.addList()).attr("data-cs-multi-page-list","true")),e.html(""),this.modal.pages.forEach(i=>{if(i.name!==t){const t=this.actionMenu.addItem({icon:i.icon?async()=>await Craft.ui.icon(i.icon):null,label:Craft.t("app","Move to {page}",{page:i.name})},e[0]);cr()(t).on("activate",()=>{this.actionMenu.hide(),this.moveToPage(i)})}}),this.$actionMenu.find("[cs-multi-page-action]").remove()}this.actionMenu.hasVisibleItems()?this.$actionBtn.removeClass("hidden"):this.$actionBtn.addClass("hidden")},isHeading:function(){return!1},isCustomSource:function(){return!1},isSelected:function(){return this.modal.selectedSource===this},select:function(){this.modal.setSelectedScreen(this.modal.$sourceSettingsOuterContainer),this.isSelected()||(this.modal.selectedSource&&this.modal.selectedSource.deselect(),this.$item.addClass("sel"),this.$itemButton.attr({"aria-current":"true"}),this.modal.selectedSource=this,this.$settingsContainer?this.$settingsContainer.removeClass("hidden"):(this.$settingsContainer=cr()("").appendTo(this.modal.$sourceSettingsContainer),this.createSettings(this.$settingsContainer)),this.modal.$sourceSettingsContainer.scrollTop(0))},createSettings:async function(){},getIndexSourceItem:function(){},deselect:function(){this.$item.removeClass("sel"),this.$itemButton.attr({"aria-current":"false"}),this.modal.selectedSource=null,this.$settingsContainer.addClass("hidden")},updateItemLabel:function(t){t?this.$itemButton.find(".label").text(t):this.$itemButton.find(".label").html(" ")},updateItemHandle:function(t){t?this.$itemButton.find(".handle").text(t):this.$itemButton.find(".handle").empty()},moveToPage:function(t){this.$item.appendTo(this.modal.getSourceContainer(t.name)),this.$pageInput.val(t.name),this.isSelected()&&this.deselect(),this.modal.updateSourceActionButtons()},destroy:function(){if(this.modal.sourceDrag?.removeItems(this.$item),this.modal.sources=this.modal.sources.filter(t=>t!==this),this.isSelected()){this.deselect();let t=this.$item.prev(".cs-item");t.length||(t=this.$item.next(".cs-item")),t.length&&t.data("source").select(),bo.setFocusWithin(this.modal.$sourceSettingsContainer)}this.$item.data("source",null),this.$item.remove(),this.actionMenu.destroy(),this.$actionMenu.remove(),this.$settingsContainer&&this.$settingsContainer.remove(),this.modal.updateSourceActionButtons(),this.base()}}),Craft.CustomizeSourcesModal.Source=Craft.CustomizeSourcesModal.BaseSource.extend({$viewModeInput:null,viewModeListbox:null,$sortAttributeSelect:null,$sortDirectionPicker:null,$sortDirectionInput:null,sortDirectionListbox:null,createSettings:async function(t){Craft.ui.createLightswitchField({label:Craft.t("app","Enabled"),name:`sources[${this.sourceData.key}][enabled]`,on:!this.sourceData.disabled}).appendTo(t),this.createViewModeField(t),this.createSortField(t),this.createTableAttributesField(t)},createViewModeField:function(t){const e=cr()("",{class:"btngroup btngroup--exclusive","aria-label":Craft.t("app","View mode options")}),i=this.modal.viewModes.filter(t=>!t.structuresOnly||this.sourceData.structureId);let s=this.sourceData.defaultViewMode;s&&i.some(t=>t.mode===s)||(s=i[0]?.mode);for(const t of i){const i=cr()("",{type:"button",class:"btn",title:t.title,"aria-label":t.title,"data-mode":t.mode}).appendTo(e);cr()("",{class:"cp-icon small"}).append(t.iconSvg).appendTo(i),t.mode===s?i.addClass("active").attr("aria-pressed","true"):i.attr("aria-pressed","false")}e.children("button:last").addClass("btngroup-btn-last"),this.$viewModeInput=cr()("",{type:"hidden",name:`sources[${this.sourceData.key}][defaultViewMode]`,value:this.sourceData.defaultViewMode}).appendTo(e),this.viewModeListbox=new Craft.Listbox(e,{onChange:t=>{this.$viewModeInput.val(t.data("mode"))}}),Craft.ui.createField(e,{label:Craft.t("app","Default View Mode"),fieldset:!0}).appendTo(t).addClass("view-mode-field")},createSortField:function(t){const e=cr()(''),i=this.sourceData.sortOptions.sort((t,e)=>t.label===e.label?0:t.label("structure"===e.attr?t.structure.push(e):e.attr.startsWith("field:")?t.field.push(e):t.attribute.push(e),t),{structure:[],attribute:[],field:[]});s.field.length&&s.field.unshift({optgroup:Craft.t("app","Fields")});const n=Craft.ui.createSelect({name:`sources[${this.sourceData.key}][defaultSort][0]`,options:[...s.structure,...s.attribute,...s.field].map(t=>t.optgroup?t:{label:t.label,value:t.attr}),value:this.sourceData.defaultSort[0]}).addClass("fullwidth").appendTo(cr()("").appendTo(e));this.$sortAttributeSelect=n.children("select").attr("aria-label",Craft.t("app","Sort attribute")),this.$sortDirectionPicker=cr()("",{class:"btngroup btngroup--exclusive","aria-label":Craft.t("app","Sort direction")}).append(cr()("",{type:"button",class:"btn",title:Craft.t("app","Sort ascending"),"aria-label":Craft.t("app","Sort ascending"),"aria-pressed":"false","data-icon":"asc","data-dir":"asc"})).append(cr()("",{type:"button",class:"btn",title:Craft.t("app","Sort descending"),"aria-label":Craft.t("app","Sort descending"),"aria-pressed":"false","data-icon":"desc","data-dir":"desc"})).appendTo(e),this.$sortDirectionInput=cr()("",{type:"hidden",name:`sources[${this.sourceData.key}][defaultSort][1]`}).appendTo(e),this.sortDirectionListbox=new Craft.Listbox(this.$sortDirectionPicker,{onChange:t=>{this.$sortDirectionInput.val(t.data("dir"))}}),this.$sortAttributeSelect.on("change",()=>{this.handleSortAttributeChange()}),this.handleSortAttributeChange(!0),Craft.ui.createField(e,{label:Craft.t("app","Default Sort"),fieldset:!0}).appendTo(t).addClass("sort-field")},handleSortAttributeChange:function(t){const e=this.$sortAttributeSelect.val();if("structure"===e)this.sortDirectionListbox.select(0),this.sortDirectionListbox.disable(),this.$sortDirectionPicker.addClass("disabled");else{this.sortDirectionListbox.enable(),this.$sortDirectionPicker.removeClass("disabled");const i=t?this.sourceData.defaultSort[1]:this.sourceData.sortOptions.find(t=>t.attr===e).defaultDir;this.sortDirectionListbox.select("asc"===i?0:1)}},createTableAttributesField:function(t){const e=this.availableTableAttributes().sort((t,e)=>t[1]===e[1]?0:t[1]",{type:"hidden",name:i,value:""}).appendTo(t),Craft.ui.createSortableCheckboxSelectField({label:Craft.t("app","Default Table Columns"),instructions:Craft.t("app","Choose which table columns should be visible for this source by default."),name:i,options:e.map(([t,e])=>({label:e,value:t})),values:this.sourceData.tableAttributes.map(([t])=>t)}).appendTo(t)},availableTableAttributes:function(){const t=this.modal.availableTableAttributes.slice(0);return t.push(...this.sourceData.availableTableAttributes),t},getIndexSourceItem:function(){const t=this.modal.elementIndex.getSourceByKey(this.sourceData.key);if(t)return t.closest("li")}}),Craft.CustomizeSourcesModal.CustomSource=Craft.CustomizeSourcesModal.Source.extend({$labelInput:null,isCustomSource:function(){return!0},createSettings:async function(t){const e=Craft.ui.createTextField({label:Craft.t("app","Label"),name:`sources[${this.sourceData.key}][label]`,value:this.sourceData.label}).appendTo(t);this.$labelInput=e.find(".text");const i=`condition${Math.floor(1e6*Math.random())}`,s=t=>t.replace(/__ID__/g,i).replace(/__SOURCE_KEY__(?=-)/g,Craft.formatInputId(this.sourceData.key)).replace(/__SOURCE_KEY__/g,this.sourceData.key),n=this.sourceData.conditionBuilderHtml||s(this.modal.conditionBuilderHtml),a=this.sourceData.conditionBuilderJs||s(this.modal.conditionBuilderJs);Craft.ui.createField(cr()("").append(n),{id:"criteria",label:Craft.t("app","{type} Criteria",{type:this.modal.elementTypeName})}).appendTo(t),a&&await Craft.appendBodyHtml(a),this.createSortField(t),this.createTableAttributesField(t),this.createViewModeField(t),Craft.sites.length>1&&Craft.ui.createCheckboxSelectField({label:Craft.t("app","Sites"),instructions:Craft.t("app","Choose which sites this source should be visible for."),name:`sources[${this.sourceData.key}][sites]`,options:Craft.sites.map(t=>({label:t.name,value:t.uid})),values:this.sourceData.sites||"*",showAllOption:!0}).appendTo(t),this.modal.userGroups.length&&Craft.ui.createCheckboxSelectField({label:Craft.t("app","User Groups"),instructions:Craft.t("app","Choose which user groups should have access to this source."),name:`sources[${this.sourceData.key}][userGroups]`,options:this.modal.userGroups,values:this.sourceData.userGroups||"*",showAllOption:!0}).appendTo(t),this.addListener(this.$labelInput,"input","handleLabelInputChange")},availableTableAttributes:function(){const t=this.base();if(this.isNew){let e=[],i=[];this.modal.customFieldAttributes.forEach(t=>{-1==e.indexOf(t[0])&&(e.push(t[0]),i.push(t))}),t.push(...i)}return t},handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val())},getIndexSourceItem:function(){let t,e=this.base();if(e?t=e.find(".label"):(t=cr()("",{class:"label"}),e=cr()("").append(cr()("",{"data-key":this.sourceData.key}).append(t))),this.$labelInput){let e=this.$labelInput.val().trim();""===e&&(e=Craft.t("app","(blank)")),t.text(e)}return e}}),Craft.CustomizeSourcesModal.Heading=Craft.CustomizeSourcesModal.BaseSource.extend({$labelInput:null,isHeading:function(){return!0},createSettings:async function(t){const e=Craft.ui.createTextField({label:Craft.t("app","Heading"),name:`sources[${this.sourceData.key}][heading]`,instructions:Craft.t("app","This can be left blank if you just want an unlabeled separator."),value:this.sourceData.heading||""}).appendTo(t);this.$labelInput=e.find(".text"),this.addListener(this.$labelInput,"input","handleLabelInputChange")},handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val())},updateItemLabel:function(t){this.$itemButton.find(".label").html((t?Craft.escapeHtml(t):`${Craft.t("app","(blank)")}`)+" ")},getIndexSourceItem:function(){const t=(this.$labelInput?this.$labelInput.val():null)||this.sourceData.heading||"";return cr()('').append(cr()("").text(t)).append("")}}),__webpack_require__(1180),__webpack_require__(5434),__webpack_require__(241),__webpack_require__(6591),__webpack_require__(8349),__webpack_require__(5226),__webpack_require__(5154),__webpack_require__(3962),__webpack_require__(1868),__webpack_require__(6887),__webpack_require__(5262),__webpack_require__(9671),__webpack_require__(5511),__webpack_require__(5535),__webpack_require__(4322),__webpack_require__(1842),__webpack_require__(4912),__webpack_require__(9463),__webpack_require__(7447),__webpack_require__(82),Craft.FieldToggle=Garnish.Base.extend({$toggle:null,targetPrefix:null,targetSelector:null,reverseTargetSelector:null,_$target:null,_$reverseTarget:null,type:null,init:function(t){switch(this.$toggle=$(t),this.$toggle.data("fieldtoggle")&&(console.warn("Double-instantiating a field toggle on an element"),this.$toggle.data("fieldtoggle").destroy()),this.$toggle.data("fieldtoggle",this),this.type=this.getType(),"select"===this.type||"fieldset"===this.type||Garnish.hasAttr(this.$toggle,"data-target-prefix")?this.targetPrefix=this.$toggle.attr("data-target-prefix")||"":(this.targetSelector=this.normalizeTargetSelector(this.$toggle.data("target")),this.reverseTargetSelector=this.normalizeTargetSelector(this.$toggle.data("reverse-target"))),this.findTargets(),this.type){case"button":this._isButtonToggle()&&(this._$target.attr("id")||this._$target.attr("id",`toggle-target-${Math.floor(1e6*Math.random())}`),this.$toggle.attr("aria-controls",this._$target.attr("id")),this._updateButtonExpanded()),this.addListener(this.$toggle,"activate","onToggleChange");break;case"fieldset":this.addListener(this.$toggle.find("input"),"change","onToggleChange");break;default:this.addListener(this.$toggle,"change",()=>{this.onToggleChange(),"radio"===this.$toggle.attr("type")&&$(`input[type="radio"][name="${this.$toggle.attr("name")}"]`).not(this.$toggle).each((t,e)=>{$(e).data("fieldtoggle")?.onToggleChange()})}),this.onToggleChange()}},normalizeTargetSelector:function(t){return t&&!t.match(/^[#\.]/)&&(t="#"+t),t},getType:function(){let t=this._toggleNodeName();if("INPUT"===t&&["checkbox","radio"].includes(this.$toggle.attr("type"))||"checkbox"===this.$toggle.attr("role")||"switch"===this.$toggle.attr("role"))return"checkbox";switch(t){case"SELECT":return Garnish.hasAttr(this.$toggle,"data-boolean-menu")?"booleanMenu":"select";case"BUTTON":case"A":return"button";default:return"fieldset"}},findTargets:function(){null!==this.targetPrefix?this._$target=$(this.normalizeTargetSelector(this.targetPrefix+(this.getToggleVal()||""))):(this.targetSelector&&(this._$target=$(this.targetSelector)),this.reverseTargetSelector&&(this._$reverseTarget=$(this.reverseTargetSelector)))},getToggleVal:function(){if("checkbox"===this.type&&null===this.targetPrefix)return void 0!==this.$toggle.prop("checked")?this.$toggle.prop("checked"):"true"===this.$toggle.attr("aria-checked");if("booleanMenu"===this.type){const t=this.$toggle.data("boolean");if(void 0!==t)return t;const e=this.$toggle.val();return e&&"0"!==e}return"fieldset"===this.type?this.normalizeToggleVal(this.$toggle.find("input:checked:first").val()):this.normalizeToggleVal(this.$toggle.val())},normalizeToggleVal:function(t){return t?t.replace(/[^\w]+/g,"-"):null},onToggleChange:async function(t=!1){const e=this.$toggle.data("selectize");e&&""===this.$toggle.val()&&(await Craft.sleep(1),e.isOpen)||("select"===this.type||"fieldset"===this.type?(this.hideTarget(this._$target),this.findTargets(),this.showTarget(this._$target)):(this.findTargets(),"button"===this.type?this.onToggleChange._show=this._buttonIsCollapsed():"checkbox"===this.type&&null!==this.targetPrefix?this.onToggleChange._show=this.$toggle.prop("checked"):this.onToggleChange._show=!!this.getToggleVal(),this.onToggleChange._show?(this.showTarget(this._$target),this.hideTarget(this._$reverseTarget)):(this.hideTarget(this._$target),this.showTarget(this._$reverseTarget)),delete this.onToggleChange._show),this.trigger("toggleChange"))},showTarget:function(t){if(t&&t.length){if(this.showTarget._currentHeight=t.height(),t.removeClass("hidden"),"select"!==this.type&&"fieldset"!==this.type){"button"===this.type&&(this.$toggle.removeClass("collapsed"),this.$toggle.addClass("expanded"),this._isButtonToggle()&&this._updateButtonExpanded());for(let e=0;e{"SPAN"!==t.prop("nodeName")&&(t.height("auto"),this.showTarget._targetHeight=t.height(),t.css({height:this.showTarget._currentHeight,overflow:"hidden"}),t.velocity("stop"),t.velocity({height:this.showTarget._targetHeight},"fast",function(){t.css({height:"",overflow:""})}))})(t.eq(e));delete this.showTarget._targetHeight}delete this.showTarget._currentHeight,Garnish.$win.trigger("resize")}},hideTarget:function(t){if(t&&t.length)if("select"===this.type||"fieldset"===this.type)t.addClass("hidden");else{"button"===this.type&&(this.$toggle.removeClass("expanded"),this.$toggle.addClass("collapsed"),this._isButtonToggle()&&this._updateButtonExpanded());for(let e=0;e{t.hasClass("hidden")||("SPAN"===t.prop("nodeName")?t.addClass("hidden"):(t.css("overflow","hidden"),t.velocity("stop"),t.velocity({height:0},"fast",function(){t.addClass("hidden")})))})(t.eq(e))}},_toggleNodeName:function(){return this.$toggle.prop("nodeName")},_isButtonToggle:function(){return"BUTTON"===this._toggleNodeName()},_buttonIsCollapsed:function(){return this.$toggle.hasClass("collapsed")||!this.$toggle.hasClass("expanded")},_updateButtonExpanded(){this.$toggle.attr("aria-expanded",this._buttonIsCollapsed()?"false":"true")},destroy:function(){this.$toggle.removeData("fieldtoggle"),this.base()}}),__webpack_require__(7835),__webpack_require__(3735),__webpack_require__(474),__webpack_require__(5849),__webpack_require__(9280),__webpack_require__(1192),__webpack_require__(1315),__webpack_require__(6366),__webpack_require__(3727),__webpack_require__(7751),__webpack_require__(3651),__webpack_require__(2707),__webpack_require__(8738),__webpack_require__(4817),__webpack_require__(5891),__webpack_require__(444),__webpack_require__(811),__webpack_require__(9008),__webpack_require__(1723),__webpack_require__(3369),__webpack_require__(8668),__webpack_require__(3370),__webpack_require__(1543),__webpack_require__(1014),__webpack_require__(7006),__webpack_require__(6688),__webpack_require__(6466),__webpack_require__(2547),__webpack_require__(2651),__webpack_require__(1208),__webpack_require__(6877),__webpack_require__(4073),__webpack_require__(746),__webpack_require__(132),__webpack_require__(7156);const $o=Math.min,Co=Math.max,vo=Math.round,yo=Math.floor,wo=t=>({x:t,y:t}),_o={left:"right",right:"left",bottom:"top",top:"bottom"};function So(t,e,i){return Co(t,$o(e,i))}function Io(t,e){return"function"==typeof t?t(e):t}function To(t){return t.split("-")[0]}function xo(t){return t.split("-")[1]}function Eo(t){return"x"===t?"y":"x"}function Mo(t){return"y"===t?"height":"width"}function ko(t){const e=t[0];return"t"===e||"b"===e?"y":"x"}function Ao(t){return Eo(ko(t))}function Po(t){return t.includes("start")?t.replace("start","end"):t.replace("end","start")}const Do=["left","right"],Bo=["right","left"],Lo=["top","bottom"],Fo=["bottom","top"];function Ho(t){const e=To(t);return _o[e]+t.slice(e.length)}function Oo(t){return"number"!=typeof t?function(t){return{top:0,right:0,bottom:0,left:0,...t}}(t):{top:t,right:t,bottom:t,left:t}}function Ro(t){const{x:e,y:i,width:s,height:n}=t;return{width:s,height:n,top:i,left:e,right:e+s,bottom:i+n,x:e,y:i}}function No(t,e,i){let{reference:s,floating:n}=t;const a=ko(e),r=Ao(e),o=Mo(r),l=To(e),h="y"===a,d=s.x+s.width/2-n.width/2,c=s.y+s.height/2-n.height/2,u=s[o]/2-n[o]/2;let p;switch(l){case"top":p={x:d,y:s.y-n.height};break;case"bottom":p={x:d,y:s.y+s.height};break;case"right":p={x:s.x+s.width,y:c};break;case"left":p={x:s.x-n.width,y:c};break;default:p={x:s.x,y:s.y}}switch(xo(e)){case"start":p[r]-=u*(i&&h?-1:1);break;case"end":p[r]+=u*(i&&h?-1:1)}return p}async function zo(t,e){var i;void 0===e&&(e={});const{x:s,y:n,platform:a,rects:r,elements:o,strategy:l}=t,{boundary:h="clippingAncestors",rootBoundary:d="viewport",elementContext:c="floating",altBoundary:u=!1,padding:p=0}=Io(e,t),f=Oo(p),g=o[u?"floating"===c?"reference":"floating":c],m=Ro(await a.getClippingRect({element:null==(i=await(null==a.isElement?void 0:a.isElement(g)))||i?g:g.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(o.floating)),boundary:h,rootBoundary:d,strategy:l})),b="floating"===c?{x:s,y:n,width:r.floating.width,height:r.floating.height}:r.reference,$=await(null==a.getOffsetParent?void 0:a.getOffsetParent(o.floating)),C=await(null==a.isElement?void 0:a.isElement($))&&await(null==a.getScale?void 0:a.getScale($))||{x:1,y:1},v=Ro(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:b,offsetParent:$,strategy:l}):b);return{top:(m.top-v.top+f.top)/C.y,bottom:(v.bottom-m.bottom+f.bottom)/C.y,left:(m.left-v.left+f.left)/C.x,right:(v.right-m.right+f.right)/C.x}}const Go=new Set(["left","top"]);function Uo(){return"undefined"!=typeof window}function Wo(t){return Yo(t)?(t.nodeName||"").toLowerCase():"#document"}function Vo(t){var e;return(null==t||null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function qo(t){var e;return null==(e=(Yo(t)?t.ownerDocument:t.document)||window.document)?void 0:e.documentElement}function Yo(t){return!!Uo()&&(t instanceof Node||t instanceof Vo(t).Node)}function jo(t){return!!Uo()&&(t instanceof Element||t instanceof Vo(t).Element)}function Ko(t){return!!Uo()&&(t instanceof HTMLElement||t instanceof Vo(t).HTMLElement)}function Xo(t){return!(!Uo()||"undefined"==typeof ShadowRoot)&&(t instanceof ShadowRoot||t instanceof Vo(t).ShadowRoot)}function Jo(t){const{overflow:e,overflowX:i,overflowY:s,display:n}=ol(t);return/auto|scroll|overlay|hidden|clip/.test(e+s+i)&&"inline"!==n&&"contents"!==n}function Qo(t){return/^(table|td|th)$/.test(Wo(t))}function Zo(t){try{if(t.matches(":popover-open"))return!0}catch(t){}try{return t.matches(":modal")}catch(t){return!1}}const tl=/transform|translate|scale|rotate|perspective|filter/,el=/paint|layout|strict|content/,il=t=>!!t&&"none"!==t;let sl;function nl(t){const e=jo(t)?ol(t):t;return il(e.transform)||il(e.translate)||il(e.scale)||il(e.rotate)||il(e.perspective)||!al()&&(il(e.backdropFilter)||il(e.filter))||tl.test(e.willChange||"")||el.test(e.contain||"")}function al(){return null==sl&&(sl="undefined"!=typeof CSS&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),sl}function rl(t){return/^(html|body|#document)$/.test(Wo(t))}function ol(t){return Vo(t).getComputedStyle(t)}function ll(t){return jo(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function hl(t){if("html"===Wo(t))return t;const e=t.assignedSlot||t.parentNode||Xo(t)&&t.host||qo(t);return Xo(e)?e.host:e}function dl(t){const e=hl(t);return rl(e)?t.ownerDocument?t.ownerDocument.body:t.body:Ko(e)&&Jo(e)?e:dl(e)}function cl(t,e,i){var s;void 0===e&&(e=[]),void 0===i&&(i=!0);const n=dl(t),a=n===(null==(s=t.ownerDocument)?void 0:s.body),r=Vo(n);if(a){const t=ul(r);return e.concat(r,r.visualViewport||[],Jo(n)?n:[],t&&i?cl(t):[])}return e.concat(n,cl(n,[],i))}function ul(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function pl(t){const e=ol(t);let i=parseFloat(e.width)||0,s=parseFloat(e.height)||0;const n=Ko(t),a=n?t.offsetWidth:i,r=n?t.offsetHeight:s,o=vo(i)!==a||vo(s)!==r;return o&&(i=a,s=r),{width:i,height:s,$:o}}function fl(t){return jo(t)?t:t.contextElement}function gl(t){const e=fl(t);if(!Ko(e))return wo(1);const i=e.getBoundingClientRect(),{width:s,height:n,$:a}=pl(e);let r=(a?vo(i.width):i.width)/s,o=(a?vo(i.height):i.height)/n;return r&&Number.isFinite(r)||(r=1),o&&Number.isFinite(o)||(o=1),{x:r,y:o}}const ml=wo(0);function bl(t){const e=Vo(t);return al()&&e.visualViewport?{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}:ml}function $l(t,e,i,s){void 0===e&&(e=!1),void 0===i&&(i=!1);const n=t.getBoundingClientRect(),a=fl(t);let r=wo(1);e&&(s?jo(s)&&(r=gl(s)):r=gl(t));const o=function(t,e,i){return void 0===e&&(e=!1),!(!i||e&&i!==Vo(t))&&e}(a,i,s)?bl(a):wo(0);let l=(n.left+o.x)/r.x,h=(n.top+o.y)/r.y,d=n.width/r.x,c=n.height/r.y;if(a){const t=Vo(a),e=s&&jo(s)?Vo(s):s;let i=t,n=ul(i);for(;n&&s&&e!==i;){const t=gl(n),e=n.getBoundingClientRect(),s=ol(n),a=e.left+(n.clientLeft+parseFloat(s.paddingLeft))*t.x,r=e.top+(n.clientTop+parseFloat(s.paddingTop))*t.y;l*=t.x,h*=t.y,d*=t.x,c*=t.y,l+=a,h+=r,i=Vo(n),n=ul(i)}}return Ro({width:d,height:c,x:l,y:h})}function Cl(t,e){const i=ll(t).scrollLeft;return e?e.left+i:$l(qo(t)).left+i}function vl(t,e){const i=t.getBoundingClientRect();return{x:i.left+e.scrollLeft-Cl(t,i),y:i.top+e.scrollTop}}function yl(t,e,i){let s;if("viewport"===e)s=function(t,e){const i=Vo(t),s=qo(t),n=i.visualViewport;let a=s.clientWidth,r=s.clientHeight,o=0,l=0;if(n){a=n.width,r=n.height;const t=al();(!t||t&&"fixed"===e)&&(o=n.offsetLeft,l=n.offsetTop)}const h=Cl(s);if(h<=0){const t=s.ownerDocument,e=t.body,i=getComputedStyle(e),n="CSS1Compat"===t.compatMode&&parseFloat(i.marginLeft)+parseFloat(i.marginRight)||0,r=Math.abs(s.clientWidth-e.clientWidth-n);r<=25&&(a-=r)}else h<=25&&(a+=h);return{width:a,height:r,x:o,y:l}}(t,i);else if("document"===e)s=function(t){const e=qo(t),i=ll(t),s=t.ownerDocument.body,n=Co(e.scrollWidth,e.clientWidth,s.scrollWidth,s.clientWidth),a=Co(e.scrollHeight,e.clientHeight,s.scrollHeight,s.clientHeight);let r=-i.scrollLeft+Cl(t);const o=-i.scrollTop;return"rtl"===ol(s).direction&&(r+=Co(e.clientWidth,s.clientWidth)-n),{width:n,height:a,x:r,y:o}}(qo(t));else if(jo(e))s=function(t,e){const i=$l(t,!0,"fixed"===e),s=i.top+t.clientTop,n=i.left+t.clientLeft,a=Ko(t)?gl(t):wo(1);return{width:t.clientWidth*a.x,height:t.clientHeight*a.y,x:n*a.x,y:s*a.y}}(e,i);else{const i=bl(t);s={x:e.x-i.x,y:e.y-i.y,width:e.width,height:e.height}}return Ro(s)}function wl(t,e){const i=hl(t);return!(i===e||!jo(i)||rl(i))&&("fixed"===ol(i).position||wl(i,e))}function _l(t,e,i){const s=Ko(e),n=qo(e),a="fixed"===i,r=$l(t,!0,a,e);let o={scrollLeft:0,scrollTop:0};const l=wo(0);function h(){l.x=Cl(n)}if(s||!s&&!a)if(("body"!==Wo(e)||Jo(n))&&(o=ll(e)),s){const t=$l(e,!0,a,e);l.x=t.x+e.clientLeft,l.y=t.y+e.clientTop}else n&&h();a&&!s&&n&&h();const d=!n||s||a?wo(0):vl(n,o);return{x:r.left+o.scrollLeft-l.x-d.x,y:r.top+o.scrollTop-l.y-d.y,width:r.width,height:r.height}}function Sl(t){return"static"===ol(t).position}function Il(t,e){if(!Ko(t)||"fixed"===ol(t).position)return null;if(e)return e(t);let i=t.offsetParent;return qo(t)===i&&(i=i.ownerDocument.body),i}function Tl(t,e){const i=Vo(t);if(Zo(t))return i;if(!Ko(t)){let e=hl(t);for(;e&&!rl(e);){if(jo(e)&&!Sl(e))return e;e=hl(e)}return i}let s=Il(t,e);for(;s&&Qo(s)&&Sl(s);)s=Il(s,e);return s&&rl(s)&&Sl(s)&&!nl(s)?i:s||function(t){let e=hl(t);for(;Ko(e)&&!rl(e);){if(nl(e))return e;if(Zo(e))return null;e=hl(e)}return null}(t)||i}const xl={convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{elements:e,rect:i,offsetParent:s,strategy:n}=t;const a="fixed"===n,r=qo(s),o=!!e&&Zo(e.floating);if(s===r||o&&a)return i;let l={scrollLeft:0,scrollTop:0},h=wo(1);const d=wo(0),c=Ko(s);if((c||!c&&!a)&&(("body"!==Wo(s)||Jo(r))&&(l=ll(s)),c)){const t=$l(s);h=gl(s),d.x=t.x+s.clientLeft,d.y=t.y+s.clientTop}const u=!r||c||a?wo(0):vl(r,l);return{width:i.width*h.x,height:i.height*h.y,x:i.x*h.x-l.scrollLeft*h.x+d.x+u.x,y:i.y*h.y-l.scrollTop*h.y+d.y+u.y}},getDocumentElement:qo,getClippingRect:function(t){let{element:e,boundary:i,rootBoundary:s,strategy:n}=t;const a=[..."clippingAncestors"===i?Zo(e)?[]:function(t,e){const i=e.get(t);if(i)return i;let s=cl(t,[],!1).filter(t=>jo(t)&&"body"!==Wo(t)),n=null;const a="fixed"===ol(t).position;let r=a?hl(t):t;for(;jo(r)&&!rl(r);){const e=ol(r),i=nl(r);i||"fixed"!==e.position||(n=null),(a?!i&&!n:!i&&"static"===e.position&&n&&("absolute"===n.position||"fixed"===n.position)||Jo(r)&&!i&&wl(t,r))?s=s.filter(t=>t!==r):n=e,r=hl(r)}return e.set(t,s),s}(e,this._c):[].concat(i),s],r=yl(e,a[0],n);let o=r.top,l=r.right,h=r.bottom,d=r.left;for(let t=1;t{n&&t.addEventListener("scroll",i,{passive:!0}),a&&t.addEventListener("resize",i)});const c=h&&o?function(t,e){let i,s=null;const n=qo(t);function a(){var t;clearTimeout(i),null==(t=s)||t.disconnect(),s=null}return function r(o,l){void 0===o&&(o=!1),void 0===l&&(l=1),a();const h=t.getBoundingClientRect(),{left:d,top:c,width:u,height:p}=h;if(o||e(),!u||!p)return;const f={rootMargin:-yo(c)+"px "+-yo(n.clientWidth-(d+u))+"px "+-yo(n.clientHeight-(c+p))+"px "+-yo(d)+"px",threshold:Co(0,$o(1,l))||1};let g=!0;function m(e){const s=e[0].intersectionRatio;if(s!==l){if(!g)return r();s?r(!1,s):i=setTimeout(()=>{r(!1,1e-7)},1e3)}1!==s||El(h,t.getBoundingClientRect())||r(),g=!1}try{s=new IntersectionObserver(m,{...f,root:n.ownerDocument})}catch(t){s=new IntersectionObserver(m,f)}s.observe(t)}(!0),a}(h,i):null;let u,p=-1,f=null;r&&(f=new ResizeObserver(t=>{let[s]=t;s&&s.target===h&&f&&e&&(f.unobserve(e),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var t;null==(t=f)||t.observe(e)})),i()}),h&&!l&&f.observe(h),e&&f.observe(e));let g=l?$l(t):null;return l&&function e(){const s=$l(t);g&&!El(g,s)&&i(),g=s,u=requestAnimationFrame(e)}(),i(),()=>{var t;d.forEach(t=>{n&&t.removeEventListener("scroll",i),a&&t.removeEventListener("resize",i)}),null==c||c(),null==(t=f)||t.disconnect(),f=null,l&&cancelAnimationFrame(u)}}const kl=function(t){return void 0===t&&(t=0),{name:"offset",options:t,async fn(e){var i,s;const{x:n,y:a,placement:r,middlewareData:o}=e,l=await async function(t,e){const{placement:i,platform:s,elements:n}=t,a=await(null==s.isRTL?void 0:s.isRTL(n.floating)),r=To(i),o=xo(i),l="y"===ko(i),h=Go.has(r)?-1:1,d=a&&l?-1:1,c=Io(e,t);let{mainAxis:u,crossAxis:p,alignmentAxis:f}="number"==typeof c?{mainAxis:c,crossAxis:0,alignmentAxis:null}:{mainAxis:c.mainAxis||0,crossAxis:c.crossAxis||0,alignmentAxis:c.alignmentAxis};return o&&"number"==typeof f&&(p="end"===o?-1*f:f),l?{x:p*d,y:u*h}:{x:u*h,y:p*d}}(e,t);return r===(null==(i=o.offset)?void 0:i.placement)&&null!=(s=o.arrow)&&s.alignmentOffset?{}:{x:n+l.x,y:a+l.y,data:{...l,placement:r}}}}},Al=function(t){return void 0===t&&(t={}),{name:"flip",options:t,async fn(e){var i,s;const{placement:n,middlewareData:a,rects:r,initialPlacement:o,platform:l,elements:h}=e,{mainAxis:d=!0,crossAxis:c=!0,fallbackPlacements:u,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:g=!0,...m}=Io(t,e);if(null!=(i=a.arrow)&&i.alignmentOffset)return{};const b=To(n),$=ko(o),C=To(o)===o,v=await(null==l.isRTL?void 0:l.isRTL(h.floating)),y=u||(C||!g?[Ho(o)]:function(t){const e=Ho(t);return[Po(t),e,Po(e)]}(o)),w="none"!==f;!u&&w&&y.push(...function(t,e,i,s){const n=xo(t);let a=function(t,e,i){switch(t){case"top":case"bottom":return i?e?Bo:Do:e?Do:Bo;case"left":case"right":return e?Lo:Fo;default:return[]}}(To(t),"start"===i,s);return n&&(a=a.map(t=>t+"-"+n),e&&(a=a.concat(a.map(Po)))),a}(o,g,f,v));const _=[o,...y],S=await l.detectOverflow(e,m),I=[];let T=(null==(s=a.flip)?void 0:s.overflows)||[];if(d&&I.push(S[b]),c){const t=function(t,e,i){void 0===i&&(i=!1);const s=xo(t),n=Ao(t),a=Mo(n);let r="x"===n?s===(i?"end":"start")?"right":"left":"start"===s?"bottom":"top";return e.reference[a]>e.floating[a]&&(r=Ho(r)),[r,Ho(r)]}(n,r,v);I.push(S[t[0]],S[t[1]])}if(T=[...T,{placement:n,overflows:I}],!I.every(t=>t<=0)){var x,E;const t=((null==(x=a.flip)?void 0:x.index)||0)+1,e=_[t];if(e&&("alignment"!==c||$===ko(e)||T.every(t=>ko(t.placement)!==$||t.overflows[0]>0)))return{data:{index:t,overflows:T},reset:{placement:e}};let i=null==(E=T.filter(t=>t.overflows[0]<=0).sort((t,e)=>t.overflows[1]-e.overflows[1])[0])?void 0:E.placement;if(!i)switch(p){case"bestFit":{var M;const t=null==(M=T.filter(t=>{if(w){const e=ko(t.placement);return e===$||"y"===e}return!0}).map(t=>[t.placement,t.overflows.filter(t=>t>0).reduce((t,e)=>t+e,0)]).sort((t,e)=>t[1]-e[1])[0])?void 0:M[0];t&&(i=t);break}case"initialPlacement":i=o}if(n!==i)return{reset:{placement:i}}}return{}}}},Pl=t=>({name:"arrow",options:t,async fn(e){const{x:i,y:s,placement:n,rects:a,platform:r,elements:o,middlewareData:l}=e,{element:h,padding:d=0}=Io(t,e)||{};if(null==h)return{};const c=Oo(d),u={x:i,y:s},p=Ao(n),f=Mo(p),g=await r.getDimensions(h),m="y"===p,b=m?"top":"left",$=m?"bottom":"right",C=m?"clientHeight":"clientWidth",v=a.reference[f]+a.reference[p]-u[p]-a.floating[f],y=u[p]-a.reference[p],w=await(null==r.getOffsetParent?void 0:r.getOffsetParent(h));let _=w?w[C]:0;_&&await(null==r.isElement?void 0:r.isElement(w))||(_=o.floating[C]||a.floating[f]);const S=v/2-y/2,I=_/2-g[f]/2-1,T=$o(c[b],I),x=$o(c[$],I),E=T,M=_-g[f]-x,k=_/2-g[f]/2+S,A=So(E,k,M),P=!l.arrow&&null!=xo(n)&&k!==A&&a.reference[f]/2-(k{this.triggerElement.addEventListener(t,t=>e(t),{signal:this.abortController.signal})}),this.update(),this.hide()}disconnectedCallback(){this.hide(),this.abortController.abort()}attributeChangedCallback(t,e,i){"text"===t&&this.inner&&(this.inner.innerText=i,this.arrow&&(this.renderArrow(),this.update())),"placement"===t&&(this.placement=i)}renderTooltip(){this.tooltip=document.createElement("span"),this.tooltip.classList.add("craft-tooltip"),this.tooltip.style["max-width"]=this.maxWidth,this.tooltip.addEventListener("mouseenter",()=>this.show(),{signal:this.abortController.signal}),this.tooltip.addEventListener("mouseleave",this.hide,{signal:this.abortController.signal}),window.document.body.appendChild(this.tooltip)}renderInner(){this.inner=document.createElement("span"),this.inner.classList.add("inner"),this.inner.innerText=this.text,this.tooltip.appendChild(this.inner)}renderArrow(){this.arrowElement=document.createElement("span"),this.arrowElement.classList.add("arrow"),this.inner.appendChild(this.arrowElement)}handleKeyUp=t=>{t?.key&&"Escape"===t.key&&this.hide()};handleMouseEnter=()=>{this.isHovering=!0,this.delayTimeout&&clearTimeout(this.delayTimeout),this.delayTimeout=setTimeout(()=>{this.isHovering&&this.show()},this.delay)};handleMouseLeave=()=>{this.isHovering=!1,this.delayTimeout&&clearTimeout(this.delayTimeout),this.hide()};handleFocusIn=()=>{const t=Date.now();this.lastShow=t,this.delayTimeout&&clearTimeout(this.delayTimeout),this.showing||(this.delayTimeout=setTimeout(()=>{t===this.lastShow&&this.show()},this.eventDelay)),this.show()};handleFocusOut=()=>{this.delayTimeout&&clearTimeout(this.delayTimeout),this.hide()};handleClick=()=>{this.delayTimeout&&clearTimeout(this.delayTimeout);const t=Date.now(),e=t-this.lastShow;this.lastShow=t,e{this.showing?this.hide():this.show()};show=()=>{this.triggerElement&&this.tooltip&&(Ml(this.triggerElement,this.tooltip,this.update),Object.assign(this.tooltip.style,{opacity:1,pointerEvents:"auto",zIndex:101}),this.showing=!0)};hide=()=>{Object.assign(this.tooltip.style,{opacity:0,pointerEvents:"none"}),this.showing=!1};getStaticSide(){return{top:"bottom",right:"left",bottom:"top",left:"right"}[this.placement.split("-")[0]]}cleanup(){return Ml(this.triggerElement,this.tooltip,this.update)}update=()=>{var t;this.triggerElement&&this.tooltip&&((t,e,i)=>{const s=new Map,n={platform:xl,...i},a={...n.platform,_c:s};return(async(t,e,i)=>{const{placement:s="bottom",strategy:n="absolute",middleware:a=[],platform:r}=i,o=r.detectOverflow?r:{...r,detectOverflow:zo},l=await(null==r.isRTL?void 0:r.isRTL(e));let h=await r.getElementRects({reference:t,floating:e,strategy:n}),{x:d,y:c}=No(h,s,l),u=s,p=0;const f={};for(let i=0;i{let{x:e,y:i}=t;return{x:e,y:i}}},...h}=Io(t,e),d={x:i,y:s},c=await a.detectOverflow(e,h),u=ko(To(n)),p=Eo(u);let f=d[p],g=d[u];if(r){const t="y"===p?"bottom":"right";f=So(f+c["y"===p?"top":"left"],f,f-c[t])}if(o){const t="y"===u?"bottom":"right";g=So(g+c["y"===u?"top":"left"],g,g-c[t])}const m=l.fn({...e,[p]:f,[u]:g});return{...m,data:{x:m.x-i,y:m.y-s,enabled:{[p]:r,[u]:o}}}}}),kl(0),...this.arrow?[Pl({element:this.arrowElement})]:[]]}).then(({x:t,y:e,middlewareData:i,placement:s})=>{if(this.setAttribute("placement",s),Object.assign(this.tooltip.style,{left:`${t}px`,top:`${e}px`,padding:"0px",[`padding${Craft.uppercaseFirst(this.getStaticSide())}`]:`${this.offset}px`}),!this.arrowElement)return;const{x:n,y:a}=i.arrow;this.arrowElement.dataset.placement=s,Object.assign(this.arrowElement.style,{left:null!=n?`${n}px`:"",top:null!=a?`${a}px`:"",right:"",bottom:"",[this.getStaticSide()]:"-4px"})})}}customElements.define("craft-legacy-tooltip",Dl),__webpack_require__(5871),__webpack_require__(2367)}()})();
+(function(){var __webpack_modules__={82:function(t,e,i){var s=i(225),n=i(1305),a=i(8543);function r(t){return this instanceof r?(this.nodes=s(t),this):new r(t)}r.prototype.toString=function(){return Array.isArray(this.nodes)?a(this.nodes):""},r.prototype.walk=function(t,e){return n(this.nodes,t,e),this},r.unit=i(4746),r.walk=n,r.stringify=a,t.exports=r},132:function(){class t extends HTMLElement{get items(){return this.querySelectorAll(".sidebar-action")}connectedCallback(){this.trigger=this.querySelector("#sidebar-trigger"),this.trigger&&(this.trigger.addEventListener("open",this.expand.bind(this)),this.trigger.addEventListener("close",this.collapse.bind(this)))}disconnectedCallback(){this.trigger&&(this.trigger.removeEventListener("open",this.expand.bind(this)),this.trigger.removeEventListener("close",this.collapse.bind(this))),this.expand()}itemHasTooltip(t){return t.querySelector("craft-tooltip")}createTooltips(){this.items&&this.items.forEach(t=>{if(this.itemHasTooltip(t))return;const e=document.createElement("craft-tooltip");e.setAttribute("placement","right"),e.setAttribute("trigger",".sidebar-action"),e.setAttribute("text",t.querySelector(".label")?.textContent),t.append(e)})}destroyTooltips(){this.items&&this.items.forEach(t=>{const e=t.querySelector("craft-tooltip");e?.remove()})}expand(){document.body.setAttribute("data-sidebar","expanded"),Craft.setCookie("sidebar","expanded"),this.destroyTooltips()}collapse(){document.body.setAttribute("data-sidebar","collapsed"),Craft.setCookie("sidebar","collapsed"),this.createTooltips()}}customElements.define("craft-global-sidebar",t)},225:function(t){var e="(".charCodeAt(0),i=")".charCodeAt(0),s="'".charCodeAt(0),n='"'.charCodeAt(0),a="\\".charCodeAt(0),r="/".charCodeAt(0),o=",".charCodeAt(0),l=":".charCodeAt(0),h="*".charCodeAt(0),d="u".charCodeAt(0),c="U".charCodeAt(0),u="+".charCodeAt(0),p=/^[a-f0-9?-]+$/i;t.exports=function(t){for(var f,g,m,b,$,C,v,y,w,_=[],S=t,I=0,T=S.charCodeAt(I),x=S.length,E=[{nodes:_}],M=0,k="",A="",P="";I'),this.$showPasswordToggle.addClass("password-toggle"),this.$showPasswordToggle.insertAfter(this.$passwordInput),this.initInputFocusEvents(this.$passwordInput),this.addListener(this.$showPasswordToggle,"click","onClick"),this.hidePassword(),this.addListener(this.$passwordWrapper.closest("form"),"submit","hidePassword")},setCurrentInput:function(t){this.$currentInput&&(t.insertAfter(this.$currentInput),this.$currentInput.detach(),t.focus(),t.val(this.$currentInput.val())),this.$currentInput=t,this.addListener(this.$currentInput,"keypress,keyup,change,blur","onInputChange")},updateToggleLabel:function(t){this.$showPasswordToggle.text(t)},initInputFocusEvents:function(t){this.addListener(t,"focus",function(){this.$passwordWrapper.addClass("focus")}),this.addListener(t,"blur",function(){this.$passwordWrapper.removeClass("focus")})},showPassword:function(){this.showingPassword||(this.$textInput||(this.$textInput=this.$passwordInput.clone(!0),this.$textInput.attr({type:"text",autocapitalize:"off"}),this.initInputFocusEvents(this.$textInput)),this.setCurrentInput(this.$textInput),this.updateToggleLabel(Craft.t("app","Hide")),this.showingPassword=!0)},hidePassword:function(){!1!==this.showingPassword&&(this.setCurrentInput(this.$passwordInput),this.updateToggleLabel(Craft.t("app","Show")),this.showingPassword=!1)},togglePassword:function(){this.showingPassword?this.hidePassword():this.showPassword(),this.settings.onToggleInput(this.$currentInput)},onInputChange:function(){this.$currentInput.val()?this.$showPasswordToggle.removeClass("invisible"):this.$showPasswordToggle.addClass("invisible")},onClick:function(t){if(this.$currentInput[0].setSelectionRange){var e=this.$currentInput[0].selectionStart,i=this.$currentInput[0].selectionEnd;this.togglePassword(),this.$currentInput[0].setSelectionRange(e,i)}else this.togglePassword()},destroy:function(){this.$passwordInput.removeData("passwordInput"),this.base()}},{defaults:{onToggleInput:$.noop}})},474:function(){!function(t){Craft.GroupedEntryTypeManager=Garnish.Base.extend({$container:null,$groupsContainer:null,$addGroupBtn:null,groups:null,groupSort:null,entryTypeSort:null,init:function(e,i={}){this.$container=e,this.setSettings(i,Craft.GroupedEntryTypeManager.defaults),this.$container.data("entryTypeManager",this),this.$groupsContainer=e.find(".entry-type-groups"),this.$addGroupBtn=Craft.ui.createButton({class:"dashed",label:Craft.t("app","Add Group"),icon:"plus"}).appendTo(this.$container),Craft.hasMousePointerEvents()?(this.groupSort=new Garnish.DragSort({container:this.$groupsContainer,handle:"> .entry-type-group--titlebar > .entry-type-group--actions > .move",ignoreHandleSelector:null,magnetStrength:4,helperLagBase:1.5}),this.entryTypeSort=new Garnish.DragSort({container:this.$groupsContainer,ignoreHandleSelector:null,handle:"> .chip > .chip-content > .chip-actions > .move",collapseDraggees:!0,magnetStrength:4,helperLagBase:1.5,canInsertAfter:t=>!t.hasClass("entry-type-group--caboose"),onSortChange:()=>{this.refresh()}})):t(".entry-type-manager .move").hide(),this.groups=[],this.$groupsContainer.children(".entry-type-group").each((e,i)=>{this.groups.push(new Craft.GroupedEntryTypeManager.Group(this,t(i)))}),this.addListener(this.$addGroupBtn,"activate",()=>{this.addGroup()})},addGroup:async function(){const e=prompt(Craft.t("app","Group Name"));if(null===e||""===e)return;const i=t("",{class:"entry-type-group","data-name":e}).appendTo(this.$groupsContainer),s=t("",{class:"entry-type-group--titlebar"}).appendTo(i);t("",{text:e}).appendTo(s);const n=Craft.namespaceId("TEMP_ID",this.settings.namespace),a=Craft.namespaceId(`entry-type-select-${Math.floor(1e6*Math.random())}`,this.settings.namespace),r=this.settings.entryTypeSelectHtml.replaceAll(n,a),o=this.settings.entryTypeSelectJs.replaceAll(n,a);t(r).appendTo(i),await Craft.appendBodyHtml(o);const l=new Craft.GroupedEntryTypeManager.Group(this,i);this.groups.push(l),this.groups.filter(t=>t!==l).forEach(e=>{e.componentSelect.$components.each((e,i)=>{l.componentSelect.hideOption(t(i).data("id"),!1)})})},updateDefaultColumns:function(){const t=this.settings.$defaultColumnsContainer.find("input:checked").toArray().map(t=>t.value);Craft.sendActionRequest("POST","matrix/default-table-column-options",{data:{entryTypeIds:this.groups.map(t=>t.componentSelect.getSelectedComponentIds()).flat()}}).then(({data:e})=>{this.settings.$defaultColumnsContainer.empty().append(Craft.ui.createSortableCheckboxSelect({name:Craft.namespaceInputName("defaultTableColumns",this.settings.namespace),options:e.options,values:t}))})},refresh:function(){this.groups.forEach(t=>{t.refresh()})}},{defaults:{$defaultColumnsContainer:null,namespace:null,entryTypeSelectHtml:null,entryTypeSelectJs:null}}),Craft.GroupedEntryTypeManager.Group=Garnish.Base.extend({manager:null,$container:null,$titlebar:null,$headingContainer:null,$dragHandle:null,componentSelect:null,init:function(e,i){this.manager=e,this.$container=i,this.$container.data("entryTypeGroup",this),this.$titlebar=i.find(".entry-type-group--titlebar"),this.$headingContainer=this.$titlebar.children("span");const s=t("",{class:"entry-type-group--actions"}).appendTo(this.$titlebar),n=`menu-${Math.floor(1e6*Math.random())}`,a=Craft.ui.createButton({class:"menubtn action-btn",controls:n,ariaLabel:Craft.t("app","Actions")}).attr("data-disclosure-trigger","true").appendTo(s);t("",{id:n,class:"menu menu--disclosure"}).appendTo(s);const r=a.disclosureMenu().data("disclosureMenu");r.addItem({icon:async()=>await Craft.ui.icon("pencil"),label:Craft.t("app","Rename"),onActivate:()=>{this.showNamePrompt()}}),r.addGroup();const o=r.addItem({icon:async()=>await Craft.ui.icon("ltr"===Craft.orientation?"arrow-left":"arrow-right"),label:Craft.t("app","Move backward"),onActivate:()=>{this.moveBackward()},attributes:{"data-move-backward":!0}}),l=r.addItem({icon:async()=>await Craft.ui.icon("ltr"===Craft.orientation?"arrow-right":"arrow-left"),label:Craft.t("app","Move forward"),onActivate:()=>{this.moveForward()},attributes:{"data-move-forward":!0}});r.addGroup(),r.addItem({icon:"remove",label:Craft.t("app","Remove"),destructive:!0,onActivate:()=>{this.remove()}}),r.on("show",()=>{const t=this.$container.prev("li.entry-type-group"),e=this.$container.next("li.entry-type-group");r.toggleItem(o,t.length),r.toggleItem(l,e.length)}),this.componentSelect=this.$container.find(".componentselect").data("componentSelect"),this.manager.entryTypeSort?.addItems(this.componentSelect.$components.parent("li"));const h=t("",{class:"entry-type-group--caboose"}).appendTo(this.componentSelect.$list);this.manager.entryTypeSort?.addItems(h),this.componentSelect.on("change",()=>{this.manager.updateDefaultColumns()}),Craft.hasMousePointerEvents()&&(this.$dragHandle=t("",{type:"button",class:"icon move",title:Craft.t("app","Reorder"),"aria-label":Craft.t("app","Reorder")}).appendTo(s)),this.manager.groupSort?.addItems(this.$container)},get name(){return this.$container.data("name")},showNamePrompt:function(){const e=prompt(Craft.t("app","Group Name"),this.name);null!==e&&""!==e&&(this.$container.data("name",e),this.$headingContainer.text(e),this.componentSelect.$components.each((i,s)=>{const n=t(s).find("input"),a=JSON.parse(n.val());a.group=e,n.val(JSON.stringify(a))}))},moveBackward:function(){const t=this.$container.prev(".entry-type-group");t.length&&this.$container.insertBefore(t)},moveForward:function(){const t=this.$container.next(".entry-type-group");t.length&&this.$container.insertAfter(t)},refresh:function(){this.componentSelect.destroy(),setTimeout(()=>{this.componentSelect=new Craft.GroupedEntryTypeSelectInput(Object.assign(this.componentSelect.settings,{addItemsToActionMenus:!1})),this.componentSelect.settings.addItemsToActionMenus=!0,this.componentSelect.$components.each((e,i)=>{const s=t(i).find("input");s.val(JSON.stringify(Object.assign(JSON.parse(s.val()),{group:this.name})))})},1)},remove:function(){this.componentSelect.removeComponents(this.componentSelect.$components),this.manager.groups=this.manager.groups.filter(t=>t!==this),this.$container.remove(),this.destroy()},destroy:function(){this.componentSelect.destroy(),delete this.componentSelect,this.base()}})}(jQuery)},741:function(t,e,i){var s=i(2067);s.__esModule&&(s=s.default),"string"==typeof s&&(s=[[t.id,s,""]]),s.locals&&(t.exports=s.locals),(0,i(5233).A)("431c4f5a",s,!0,{})},746:function(){Craft.UserIndex=Craft.BaseElementIndex.extend({init:function(t,e,i){this.on("selectSource",this.updateUrl.bind(this)),this.base(t,e,i)},getDefaultSourceKey:function(){if("index"===this.settings.context&&"undefined"!=typeof defaultSourceSlug)for(let t=0;t",{class:"modal elementselectormodal","aria-labelledby":i}).appendTo(Garnish.$bod),n=$("",{class:this.settings.showTitle?"header":"visually-hidden"}).appendTo(s);$("",{id:i,text:this.settings.modalTitle}).appendTo(n);const a=$("",{class:"body"}).append($("",{class:"spinner big"})).appendTo(s);this.$footer=$("",{class:"footer"}).appendTo(s),this.settings.fullscreen&&(s.addClass("fullscreen"),this.settings.minGutter=0),this.base(s,this.settings),this.$secondaryButtons=$('').appendTo(this.$footer),this.$primaryButtons=$('').appendTo(this.$footer),this.$cancelBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$primaryButtons),this.$selectBtn=Craft.ui.createSubmitButton({class:"disabled",label:this.settings.selectBtnLabel,spinner:!0}).attr("aria-disabled","true").appendTo(this.$primaryButtons),this.$body=a,this.addListener(this.$cancelBtn,"activate","cancel"),this.addListener(this.$selectBtn,"activate","selectElements")},updateModalBottomPadding:function(){const t=this.$footer.outerHeight();t!==parseInt(this.$container.css("padding-bottom"))&&this.$container.css("padding-bottom",t)},updateSidebarView:function(){this.supportSidebarToggleView&&(this.sidebarShouldBeHidden()?this.$sidebarToggleBtn||this.buildSidebarToggleView():this.$sidebarToggleBtn&&this.resetView())},sidebarShouldBeHidden:function(){return this.$container.outerWidth()<550},resetView:function(){this.$mainHeader&&this.$mainHeader.remove(),this.$sidebarHeader&&this.$sidebarHeader.remove(),this.$sidebarToggleBtn=null,this.$body.addClass("has-sidebar"),this.$content.addClass("has-sidebar"),this.$sidebar.removeClass("hidden")},buildSidebarToggleView:function(){!this.$sidebarToggleBtn&&this.sidebarShouldBeHidden()&&(this.$sidebarHeader=$('').prependTo(this.$sidebar),this.$sidebarCloseBtn=Craft.ui.createButton({class:"nav-close close-btn"}).attr("aria-label",Craft.t("app","Close")).removeClass("btn").appendTo(this.$sidebarHeader),this.$mainHeader=$('').prependTo(this.$main),this.$mainHeading=$(`${this.getActiveSourceName()}
`).appendTo(this.$mainHeader),this.$sidebarToggleBtn=Craft.ui.createButton({toggle:!0,controls:"modal-sidebar",class:"nav-toggle"}).removeClass("btn").attr("aria-label",Craft.t("app","Show sidebar")).appendTo(this.$mainHeader),this.$sidebar.attr("id","modal-sidebar"),this.closeSidebar(),this.addListener(this.$sidebarToggleBtn,"click",()=>{this.toggleSidebar()}),this.addListener(this.$sidebarCloseBtn,"click",()=>{this.toggleSidebar()}))},sidebarIsOpen:function(){return"true"===this.$sidebarToggleBtn.attr("aria-expanded")},toggleSidebar:function(){this.sidebarIsOpen()?this.closeSidebar():this.openSidebar()},openSidebar:function(){this.$body.addClass("has-sidebar"),this.$content.addClass("has-sidebar"),this.$sidebar.removeClass("hidden"),this.$sidebarToggleBtn.attr("aria-expanded","true"),this.$sidebar.find(":focusable").first().focus(),Garnish.uiLayerManager.addLayer(this.$sidebar),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,()=>{this.closeSidebar()})},closeSidebar:function(){if(!this.$sidebarToggleBtn)return;this.sidebarIsOpen()&&Garnish.uiLayerManager.removeLayer(),this.$sidebar.addClass("hidden"),this.$sidebarToggleBtn.attr("aria-expanded","false");const t=Garnish.getFocusedElement();$.contains(this.$sidebar.get(0),t.get(0))&&this.$sidebarToggleBtn.focus(),this.$body.removeClass("has-sidebar"),this.$content.removeClass("has-sidebar")},getActiveSourceName:function(){return this.$sidebar.find(".sel").text()},onFadeIn:function(){this.elementIndex?(this.updateModalBottomPadding(),Garnish.isMobileBrowser(!0)||this.elementIndex.$search.focus()):this._createElementIndex(),this.base()},onSelectionChange:function(){this.updateSelectBtnState()},onSelectSource:function(){this.updateHeading(),this.updateModalBottomPadding()},updateHeading:function(){this.$mainHeading&&this.$mainHeading.text(this.getActiveSourceName())},updateSelectBtnState:function(){this.$selectBtn&&(this.shouldEnableSelectBtn()?this.enableSelectBtn():this.disableSelectBtn())},shouldEnableSelectBtn:function(){return this.hasSelection()},hasSelection:function(){return this.elementIndex&&this.elementIndex.getSelectedElements().length},enableSelectBtn:function(){this.$selectBtn.removeClass("disabled").attr("aria-disabled","false")},disableSelectBtn:function(){this.$selectBtn.addClass("disabled").attr("aria-disabled","true")},enableCancelBtn:function(){this.$cancelBtn.removeClass("disabled")},disableCancelBtn:function(){this.$cancelBtn.addClass("disabled")},showFooterSpinner:function(){this.$selectBtn.addClass("loading")},hideFooterSpinner:function(){this.$selectBtn.removeClass("loading")},cancel:function(){this.$cancelBtn.hasClass("disabled")||this.hide()},selectElements:function(){if(this.hasSelection()){this.elementIndex.view&&this.elementIndex.view.elementSelect&&this.elementIndex.view.elementSelect.clearMouseUpTimeout();var t=this.elementIndex.getSelectedElements(),e=this.getElementInfo(t);this.onSelect(e),this.settings.disableElementsOnSelect&&this.elementIndex.disableElements(this.elementIndex.getSelectedElements()),this.settings.hideOnSelect&&this.hide()}},getElementInfo:function(t){for(var e=[],i=0;i{this.$body.html(t.data.html),this.$body.has(".sidebar:not(.hidden)").length&&(this.$body.addClass("has-sidebar"),this.supportSidebarToggleView=!0),this.elementIndex=Craft.createElementIndex(this.elementType,this.$body.children(".element-index"),this.getIndexSettings()),this.$main=this.elementIndex.$main,this.$sidebar=this.elementIndex.$sidebar,this.$content=this.$body.find(".content"),this.updateSidebarView(),this.updateModalBottomPadding(),this.addListener(this.elementIndex.$elements,"doubletap",function(t,e){e.firstTap.target===e.secondTap.target&&this.selectElements()}),this.on("updateSizeAndPosition",()=>{this.elementIndex.handleResize()}),this.updateSelectBtnState()})},getIndexSettings:function(){return Object.assign({context:"modal",modal:this,storageKey:this.settings.storageKey,condition:this.settings.condition,referenceElementId:this.settings.referenceElementId,referenceElementOwnerId:this.settings.referenceElementOwnerId,referenceElementSiteId:this.settings.referenceElementSiteId,criteria:Object.assign({},this.settings.criteria),disabledElementIds:this.settings.disabledElementIds,selectable:!0,multiSelect:this.settings.multiSelect,waitForDoubleClicks:!0,buttonContainer:this.$secondaryButtons,onSelectionChange:()=>{this.elementIndex&&this.onSelectionChange()},onSourcePathChange:()=>{this.elementIndex&&this.onSelectionChange()},onSelectSource:this.onSelectSource.bind(this),hideSidebar:this.settings.hideSidebar,defaultSiteId:this.settings.defaultSiteId,defaultSource:this.settings.defaultSource,defaultSourcePath:this.settings.defaultSourcePath,preferStoredSource:this.settings.preferStoredSource,showSourcePath:this.settings.showSourcePath},this.settings.indexSettings)}},{defaults:{fullscreen:!1,resizable:!0,storageKey:null,sources:null,condition:null,referenceElementId:null,referenceElementOwnerId:null,referenceElementSiteId:null,criteria:null,multiSelect:!1,showSiteMenu:null,siteIds:null,disabledElementIds:[],disableElementsOnSelect:!1,hideOnSelect:!0,modalTitle:Craft.t("app","Select element"),showTitle:!1,selectBtnLabel:Craft.t("app","Select"),onCancel:$.noop,onSelect:$.noop,hideSidebar:!1,defaultSiteId:null,defaultSource:null,defaultSourcePath:null,preferStoredSource:!1,showSourcePath:!0,bodyAction:"element-selector-modals/body",indexSettings:{}}})},811:function(){Craft.Preview=Garnish.Base.extend({elementEditor:null,tabManager:null,hasTabs:!1,$shade:null,editorId:null,$editorContainer:null,$editorHeader:null,$editorToolbar:null,$tabContainer:null,$content:null,$spinner:null,$editorFooter:null,$saveBtn:null,$dragHandle:null,$previewWrapper:null,$previewContainer:null,$previewSkipLink:null,$bumperLink:null,$notifier:null,$iframeContainer:null,$previewHeader:null,$targetBtn:null,$targetMenu:null,$deviceTypeContainer:null,$orientationBtn:null,$refreshBtn:null,$deviceMask:null,$devicePreviewContainer:null,$iframe:null,iframeLoaded:!1,isActive:!1,isVisible:!1,activeTarget:0,animationDuration:"slow",currentDeviceType:"desktop",deviceOrientation:null,deviceWidth:"",deviceHeight:"",deviceMaskDimensions:{phone:{width:375,height:753},tablet:{width:768,height:1110}},draftId:null,url:null,iframeHeight:null,scrollTop:null,scrollLeft:null,dragger:null,dragStartEditorWidth:null,_editorWidth:null,_editorWidthInPx:null,init:function(t){this.setSettings(t,Craft.Preview.defaults),this.editorWidth=Craft.getLocalStorage("LivePreview.editorWidth",Craft.Preview.defaultEditorWidth),Craft.Preview.instances.push(this),this.settings.standaloneMode&&this.open(!1)},get editorWidth(){return this._editorWidth},get editorWidthInPx(){return this._editorWidthInPx},set editorWidth(t){let e;t>=1?(e=t,t/=Garnish.$win.width()):e=Math.round(t*Garnish.$win.width()),e",{class:"modal-shade dark"}).appendTo(Garnish.$bod),this.$previewWrapper=$("",{role:"dialog","aria-modal":"true","aria-labelledby":"lp-preview-heading"}).appendTo(Garnish.$bod),this.$modalLabel=$("",{id:"lp-preview-heading",class:"visually-hidden",html:Craft.t("app","Preview")}).appendTo(this.$previewWrapper),this.$editorContainer=$("",{id:this.editorId,class:"lp-editor-container"}).appendTo(this.$previewWrapper),this.$previewContainer=$("",{class:"lp-preview-container",id:"lp-preview-container"}).appendTo(this.$previewWrapper),this.$notifier=$("",{class:"visually-hidden",role:"status"}).appendTo(this.$previewContainer),this.$editorHeader=$("",{class:"lp-editor-header"}).appendTo(this.$editorContainer),!this.settings.standaloneMode){const t=$("",{type:"button",class:"btn lp-close-btn","data-icon":"xmark",title:Craft.t("app","Close Preview"),"aria-label":Craft.t("app","Close Preview")}).appendTo(this.$editorHeader);this.addListener(t,"click","close")}this.$editorToolbar=$("",{class:"lp-toolbar"}).appendTo(this.$editorHeader),this.$tabContainer=$("",{class:"pane-tabs"}).appendTo(this.$editorToolbar),this.$content=$("",{class:"lp-content loading"}).appendTo(this.$editorContainer).append($("",{class:"spinner"})),this.$editorFooter=$("",{class:"flex flex-nowrap"}).appendTo(this.$editorContainer),this.$dragHandle=$("",{class:"lp-draghandle"}).appendTo(Garnish.$bod),$("",{class:"flex-grow"}).appendTo(this.$editorHeader),this.$spinner=$("",{class:"spinner hidden",title:Craft.t("app","Saving")}).appendTo(this.$editorHeader),this.$statusMessage=$("",{class:"visually-hidden","aria-live":"polite"}).appendTo(this.$editorHeader),this.$previewSkipLink=$("",{class:"skip-link btn hidden",href:"#lp-preview-container",html:t}).appendTo(this.$editorHeader),this.$previewHeader=$("",{class:"lp-preview-header"}).appendTo(this.$previewContainer),this._buildDeviceTypeFieldset(),$('').appendTo(this.$previewHeader);const e=$('').appendTo(this.$previewHeader);this.$orientationBtn=$("",{type:"button",class:"btn disabled","data-icon":"rotate","aria-disabled":"true",text:Craft.t("app","Rotate"),"aria-label":Craft.t("app","Rotate")}).appendTo(e),this.addListener(this.$orientationBtn,"click","switchOrientation"),this.$refreshBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Refresh"),"data-icon":"refresh"}).appendTo(e),this.addListener(this.$refreshBtn,"click",()=>{this.updateIframe(!1,!0)}),this.deviceOrientation=Craft.getLocalStorage("LivePreview.orientation"),this.$iframeContainer=$("",{class:"lp-iframe-container"}).appendTo(this.$previewContainer),this.$devicePreviewContainer=$("",{class:"lp-device-preview-container"}).appendTo(this.$iframeContainer),this.$deviceMask=$("",{class:"lp-device-mask"}).appendTo(this.$iframeContainer),this.$bumperLink=$("",{class:"skip-link btn lp-preview-container__bumper-link",html:t,href:"#lp-preview-container"}),this.$bumperLink.appendTo(this.$previewContainer),this.dragger=new Garnish.BaseDrag(this.$dragHandle,{axis:Garnish.X_AXIS,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)})},_loadElementEditor:async function(){let t;await this.settings.onBeforeLoad(),this.cancelToken=axios.CancelToken.source();try{t=await Craft.sendActionRequest("GET","elements/edit",{params:{elementType:this.settings.elementType,elementId:this.settings.elementId,draftId:this.settings.draftId,revisionId:this.settings.revisionId,siteId:this.settings.siteId},cancelToken:this.cancelToken.token,headers:{"X-Craft-Container-Id":this.editorId,"X-Craft-Namespace":this.namespace}})}catch(t){if(!this.ignoreFailedRequest)throw Craft.cp.displayError(),t;return void(this.ignoreFailedRequest=!1)}finally{this.$content.removeClass("loading"),this.cancelToken=null}const{data:e}=t;if(this.namespace=e.namespace,this.settings.standaloneMode){if(e.actionMenu){const t=Craft.namespaceId("action-menu-label",this.namespace),i=Craft.namespaceId("action-menu",this.namespace);$("",{id:t,class:"visually-hidden",text:Craft.t("app","Actions")}).appendTo(this.$editorHeader);const s=$("",{class:"btn action-btn header-btn",type:"button",title:Craft.t("app","Actions"),"aria-controls":i,"aria-describedby":t,"data-disclosure-trigger":"true"}).appendTo(this.$editorHeader);$(e.actionMenu).appendTo(this.$editorHeader),s.disclosureMenu()}e.editUrl&&$("",{target:"_blank",class:"btn header-btn",title:Craft.t("app","Open in a new tab"),"aria-label":Craft.t("app","Open in a new tab"),"data-icon":"external",href:e.editUrl}).appendTo(this.$editorHeader)}if(this.$content.html(e.content),this.$saveBtn=Craft.ui.createSubmitButton({label:e.submitButtonLabel||Craft.t("app","Save"),spinner:!0}).appendTo(this.$editorFooter),this.updateTabs(e.tabs),e.formAttributes&&Craft.setElementAttributes(this.$editorContainer,e.formAttributes),this.$editorContainer.data("delta-names",t.data.deltaNames),this.$editorContainer.data("initial-delta-values",t.data.initialDeltaValues),this.$editorContainer.data("initialSerializedValue",this.$editorContainer.serialize()),await Craft.appendHeadHtml(e.headHtml),await Craft.appendBodyHtml(e.bodyHtml),Craft.initUiElements(this.$editorContainer),this.elementEditor=new Craft.ElementEditor(this.$editorContainer,Object.assign({namespace:this.namespace,$contentContainer:this.$content,$actionBtn:this.$saveBtn,$spinnerContainer:this.$editorHeader,updateTabs:t=>this.updateTabs(t),getTabManager:()=>this.tabManager,handleSubmitResponse:t=>{this.settings.redirectUrl?document.location.href=this.settings.redirectUrl:window.location.reload()},handleSubmitError:async t=>{this.$saveBtn.addClass("loading"),await(async()=>{})(),await this.elementEditor.refreshContent({[this.elementEditor.namespaceInputName("prevalidate")]:1}),this.$saveBtn.removeClass("loading")},autosaveDrafts:!0,saveParams:{setEnabled:0}},this.$editorContainer.data("elementEditorSettings"))),this.elementEditor.on("afterSaveDraft",({response:t})=>{this.trigger("afterSaveDraft",{response:t})}),this.elementEditor.on("update",()=>{this.updateIframe()}),this.elementEditor.on("beforeSubmit",()=>{this.$saveBtn.addClass("loading")}),this.elementEditor.on("afterSubmit",()=>{this.$saveBtn.removeClass("loading")}),Craft.cp.elementThumbLoader.load(this.$content),Craft.setFocusWithin(this.$content),this.elementEditor.settings.previewTargets.length>1){const t=$('').insertAfter(this.$deviceTypeContainer);this.$targetBtn=$("",{type:"button",class:"btn menubtn",text:this.elementEditor.settings.previewTargets[0].label}).insertAfter(t),this.$targetMenu=$("",{class:"menu lp-target-menu"}).insertAfter(this.$targetBtn);const e=$("",{class:"padded"}).appendTo(this.$targetMenu);let i,s;for(let t=0;t").appendTo(e),s=$("",{data:{target:t},text:this.elementEditor.settings.previewTargets[t].label,class:0===t?"sel":null}).appendTo(i);new Garnish.MenuBtn(this.$targetBtn,{onOptionSelect:t=>{this.switchTarget($(t).data("target"))}})}this.updateIframe(),Craft.ElementThumbLoader.retryAll(),this.$previewSkipLink.removeClass("hidden")},_getDeviceTypeTranslation:function(t){let e;switch(t){case"phone":e=Craft.t("app","Mobile");break;case"tablet":e=Craft.t("app","Tablet");break;default:e=Craft.t("app","Desktop")}return e},_getDeviceOrientationTranslation:function(t){return"portrait"===t?Craft.t("app","Portrait"):Craft.t("app","Landscape")},_buildDeviceTypeFieldset:function(){this.$deviceTypeContainer=$("",{class:"btngroup lp-device-type","aria-label":Craft.t("app","Device type")}).appendTo(this.$previewHeader),$("",{type:"button",class:"btn lp-device-type-btn--desktop active",title:Craft.t("app","Desktop"),"aria-label":Craft.t("app","Desktop"),"aria-pressed":"true",data:{width:"",height:"",deviceType:"desktop"}}).appendTo(this.$deviceTypeContainer),$("",{type:"button",class:"btn lp-device-type-btn--tablet",title:Craft.t("app","Tablet"),"aria-label":Craft.t("app","Tablet"),"aria-pressed":"false",data:{width:768,height:1024,deviceType:"tablet"}}).appendTo(this.$deviceTypeContainer),$("",{type:"button",class:"btn lp-device-type-btn--phone",title:Craft.t("app","Mobile"),"aria-label":Craft.t("app","Mobile"),"aria-pressed":"false",data:{width:375,height:667,deviceType:"phone"}}).appendTo(this.$deviceTypeContainer),this.deviceBtnGroup=new Craft.Listbox(this.$deviceTypeContainer,{onChange:t=>{this.switchDeviceType(t)}})},_activeTarget:function(){return this.elementEditor.settings.previewTargets[this.activeTarget]},_autoRefresh:function(){const t=this._activeTarget();return void 0===typeof t.refresh||!!t.refresh},switchTarget:function(t){this.activeTarget=t,this.$targetBtn.text(this.elementEditor.settings.previewTargets[t].label),this.$targetMenu.find("a.sel").removeClass("sel"),this.$targetMenu.find("a").eq(t).addClass("sel"),this.updateIframe(!0),this.trigger("switchTarget",{previewTarget:this.elementEditor.settings.previewTargets[t]})},handleWindowResize:function(){this.editorWidth=this.editorWidth,this.updateWidths()},slideIn:function(t=!0){this.isActive&&!this.isVisible&&($("html").addClass("noscroll"),this.$shade.velocity("fadeIn"),this.$editorContainer.show().velocity("stop").animateLeft(0,Garnish.getUserPreferredAnimationDuration(this.animationDuration),()=>{this.trigger("slideIn"),Garnish.$win.trigger("resize")}),this.$previewContainer.show().velocity("stop").animateRight(0,Garnish.getUserPreferredAnimationDuration(this.animationDuration)),this.isVisible=!0,Garnish.uiLayerManager.addLayer(this.$previewWrapper),Garnish.hideModalBackgroundLayers(),Craft.setFocusWithin(this.$previewWrapper),Craft.trapFocusWithin(this.$previewWrapper),Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0},async t=>{await this.elementEditor.checkForm(),this.elementEditor.handleSubmit(t)}),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,()=>{this.close()}),t||(this.$editorContainer.velocity("finish"),this.$previewContainer.velocity("finish")))},close:async function(){this.isActive&&this.isVisible&&(await this.elementEditor.checkForm(),this.trigger("beforeClose"),$("html").removeClass("noscroll"),this.removeListener(Garnish.$win,"resize"),Garnish.uiLayerManager.removeLayer(),Garnish.resetModalBackgroundLayerVisibility(),Garnish.prefersReducedMotion()?this.$shade.velocity("fadeOut"):this.$shade.delay(200).velocity("fadeOut"),this.$editorContainer.velocity("stop").animateLeft(-this.editorWidthInPx,Garnish.getUserPreferredAnimationDuration(this.animationDuration),()=>{this.$editorContainer.hide(),this.trigger("slideOut")}),this.$previewContainer.velocity("stop").animateRight(-this.getIframeWidth(),Garnish.getUserPreferredAnimationDuration(this.animationDuration),()=>{this.$iframeContainer.removeClass("lp-iframe-container--rotating"),this.$previewContainer.hide()}),Craft.ElementThumbLoader.retryAll(),this.isActive=!1,this.isVisible=!1,this.trigger("close"))},updateTabs:function(t){if(this.tabManager&&(this.tabManager.destroy(),this.tabManager=null,this.$tabContainer.html("")),this.hasTabs=!!t,this.hasTabs){const e=$(t);this.$tabContainer.replaceWith(e),this.$tabContainer=e,this.tabManager=new Craft.Tabs(this.$tabContainer),this.tabManager.on("deselectTab",t=>{$(t.$tab.attr("href")).addClass("hidden")}),this.tabManager.on("selectTab",t=>{$(t.$tab.attr("href")).removeClass("hidden"),Garnish.$win.trigger("resize"),this.$content.trigger("scroll")})}},getIframeWidth:function(){return Garnish.$win.width()-this.editorWidthInPx},updateWidths:function(){this.$editorContainer.css("width",this.editorWidthInPx+"px"),this.$dragHandle.css(Craft.left,this.editorWidthInPx-2+"px"),this.$previewContainer.width(this.getIframeWidth()),this._devicePreviewIsActive()&&this.updateDevicePreview()},_useIframeResizer:function(){return!1!==Craft.previewIframeResizerOptions},updateIframe:function(t,e){if(!this.isActive)return!1;t=!0===t,this.draftId===(this.draftId=this.elementEditor.settings.draftId)&&this.$iframe||(e=!0);const i=this._activeTarget();void 0===e&&(e=t||this._autoRefresh()),this.trigger("beforeUpdateIframe",{previewTarget:i,resetScroll:t,refresh:e}),e?this.elementEditor.getTokenizedPreviewUrl(i.url,"x-craft-live-preview").then(e=>{let i;t?(this.scrollTop=null,this.scrollLeft=null):this.iframeLoaded&&this.$iframe&&(this._useIframeResizer()?(this.iframeHeight=this.$iframe.height(),this.scrollTop=this.$iframeContainer.scrollTop(),this.scrollLeft=this.$iframeContainer.scrollLeft()):(i=Craft.isSameHost(e),i&&this.$iframe[0].contentWindow&&(this.scrollTop=$(this.$iframe[0].contentWindow.document).scrollTop(),this.scrollLeft=$(this.$iframe[0].contentWindow.document).scrollLeft()))),this.iframeLoaded=!1;const s=$("",{class:"lp-preview",frameborder:0,src:e,title:Craft.t("app","Preview")});this.$iframe?this.$iframe.replaceWith(s):s.appendTo(this.$devicePreviewContainer),this._useIframeResizer()?(t||null===this.iframeHeight||(s.height(this.iframeHeight),this.$iframeContainer.scrollTop(this.scrollTop),this.$iframeContainer.scrollLeft(this.scrollLeft)),iFrameResize($.extend({checkOrigin:!1,scrolling:!0,onInit:t=>{this.iframeLoaded=!0,this.iframeHeight=null,this.scrollTop=null,this.scrollLeft=null,t.scrolling="no"}},Craft.previewIframeResizerOptions||{}),s[0])):s.on("load",()=>{this.iframeLoaded=!0,!t&&i&&s[0].contentWindow.scrollTo(this.scrollLeft||0,this.scrollTop||0)}),this.url=e,this.$iframe=s,this._devicePreviewIsActive()&&this.updateDevicePreview(),this.trigger("afterUpdateIframe",{previewTarget:this.elementEditor.settings.previewTargets[this.activeTarget],$iframe:this.$iframe}),this.slideIn()}):this.slideIn()},_devicePreviewIsActive:function(){return"desktop"!==this.currentDeviceType},_updateNotifier:function(){this.$notifier.html="";const t="desktop"===this.currentDeviceType?"Previewing {type} device":"Previewing {type} device in {orientation}";let e={type:this._getDeviceTypeTranslation(this.currentDeviceType)};"desktop"!==this.currentDeviceType&&(e={...e,orientation:this._getDeviceOrientationTranslation(this.deviceOrientation)});const i=Craft.t("app",t,e);setTimeout(()=>{this.$notifier.text(i)},200)},switchDeviceType:function(t){this.$iframeContainer.removeClass("lp-iframe-container--rotating");const e=t.data("deviceType");if(e===this.currentDeviceType)return!1;this.currentDeviceType=e,this.deviceWidth=t.data("width"),this.deviceHeight=t.data("height"),"desktop"===this.currentDeviceType?(this.$orientationBtn.addClass("disabled").attr("aria-disabled","true"),this.$iframeContainer.removeClass("lp-iframe-container--has-device-preview")):(this.$orientationBtn.removeClass("disabled").removeAttr("aria-disabled"),this.$iframeContainer.addClass("lp-iframe-container--has-device-preview")),"tablet"===this.currentDeviceType?this.$iframeContainer.addClass("lp-iframe-container--tablet"):this.$iframeContainer.removeClass("lp-iframe-container--tablet"),this._updateNotifier(),"desktop"!==this.currentDeviceType&&this.updateDevicePreview()},switchOrientation:function(){if(!this._devicePreviewIsActive())return!1;this.deviceOrientation&&"portrait"!==this.deviceOrientation?this.deviceOrientation="portrait":this.deviceOrientation="landscape",Craft.setLocalStorage("LivePreview.orientation",this.deviceOrientation),this.$iframeContainer.addClass("lp-iframe-container--rotating"),this.updateDevicePreview(),this._updateNotifier(),setTimeout(()=>{this.$iframeContainer.removeClass("lp-iframe-container--rotating")},300)},updateDevicePreview:function(){let t=1,e=1,i=1,s=this.$previewContainer.height()-50-48,n=this.$previewContainer.width()-48,a=this.deviceMaskDimensions[this.currentDeviceType].height,r=this.deviceMaskDimensions[this.currentDeviceType].width;"landscape"===this.deviceOrientation?(nt!==this),this.elementEditor.destroy(),delete this.elementEditor,this.base()}},{defaultEditorWidth:.33,minEditorWidthInPx:320,instances:[],defaults:{elementType:null,elementId:null,draftId:null,revisionId:null,siteId:null,standaloneMode:!1,redirectUrl:null,onBeforeLoad:async()=>{}},refresh:function(){for(const t of Craft.Preview.instances)t.updateIframe();for(const t of Craft.LivePreview.instances)t.forceUpdateIframe()},getActive:function(){for(const t of Craft.Preview.instances)if(t.isActive)return t}})},993:function(){Craft.AssetsFieldSettings=Garnish.Base.extend({$useSingleFolderInput:null,$sourceInputs:null,$defaultUploadLocationSelect:null,$showSearchInputField:null,$defaultUploadLocationOptions:null,init:function(t,e,i,s){this.$useSingleFolderInput=$(`#${t}`),this.$sourceInputs=$(`#${e} input`),this.$defaultUploadLocationSelect=$(`#${i}`),this.$showSearchInputField=$(`#${s}`),this.$defaultUploadLocationOptions=this.$defaultUploadLocationSelect.children("option"),this.updateDefaultUploadLocationSelect(),Garnish.requestAnimationFrame(()=>{this.addListener(this.$useSingleFolderInput,"change",()=>{this.updateDefaultUploadLocationSelect(),"true"===this.$useSingleFolderInput.attr("aria-checked")?this.$showSearchInputField.removeClass("hidden"):setTimeout(()=>{this.$sourceInputs.first().trigger("change")},1)}),this.addListener(this.$sourceInputs,"change",()=>{this.updateDefaultUploadLocationSelect()})})},updateDefaultUploadLocationSelect:function(){if("true"===this.$useSingleFolderInput.attr("aria-checked"))return;const t=this.$defaultUploadLocationSelect.val();let e;for(let t=0;t{this.initItem(e)})},initDrag:function(t=[]){0===t.length&&(t=this.$container.children(".checkbox-select-item:not(.all)")),Craft.hasMousePointerEvents()&&t.length&&(this.dragSort=new Garnish.DragSort(t,{axis:Garnish.Y_AXIS,handle:".draggable-handle"}),this.dragSort.on("sortChange",()=>{this.trigger("sortChange")}))},initItem:function(t){return new Craft.SortableCheckboxSelect.Item(this,t)}}),Craft.SortableCheckboxSelect.Item=Garnish.Base.extend({select:null,$item:null,$moveHandle:null,$checkbox:null,$checkboxLabel:null,$actionMenuBtn:null,$actionMenu:null,actionDisclosure:null,moveUpBtn:null,moveDownBtn:null,init:function(t,e){this.select=t,this.$item=$(e),this.$moveHandle=this.$item.children(".move"),Craft.hasMousePointerEvents()||this.$moveHandle.hide(),this.$checkbox=this.$item.children("input[type=checkbox]"),this.$checkboxLabel=this.$item.children("label"),this.addListener(this.$checkbox,"change",()=>{this.handleCheckboxChange()}),this.handleCheckboxChange()},handleCheckboxChange:function(){this.$checkbox.prop("checked")?this.onCheck():this.onUncheck()},onCheck:function(){this.$actionMenuBtn=this.$item.find("[data-disclosure-trigger]"),this.$actionMenuBtn&&this.onUncheck(),this.$moveHandle?.removeClass("disabled");const t="menu-"+Math.floor(1e9*Math.random());let e=this.$checkboxLabel.attr("id");e||(e=`label-${Math.floor(1e9*Math.random())}`,this.$checkboxLabel.attr("id",e)),this.$actionMenuBtn=$("",{class:"btn action-btn","aria-controls":t,"aria-label":Craft.t("app","Actions"),"aria-describedby":e,"data-disclosure-trigger":"","data-icon":"ellipsis"}).appendTo(this.$item),this.$actionMenu=$("",{id:t,class:"menu menu--disclosure"}).appendTo(this.$item),this.actionDisclosure=new Garnish.DisclosureMenu(this.$actionMenuBtn),this.moveUpBtn=this.actionDisclosure.addItem({icon:async()=>await Craft.ui.icon("arrow-up"),label:Craft.t("app","Move up"),onActivate:()=>{this.moveUp()}}),this.moveDownBtn=this.actionDisclosure.addItem({icon:async()=>await Craft.ui.icon("arrow-down"),label:Craft.t("app","Move down"),onActivate:()=>{this.moveDown()}}),this.actionDisclosure.on("show",()=>{this.getPrevCheckedItem()?this.actionDisclosure.showItem(this.moveUpBtn):this.actionDisclosure.hideItem(this.moveUpBtn),this.getNextCheckedItem()?this.actionDisclosure.showItem(this.moveDownBtn):this.actionDisclosure.hideItem(this.moveDownBtn)});const i=this.getAllCheckedSiblings();0==i.length?this.$actionMenuBtn.hide():1==i.length&&$(i[0]).find(".btn.action-btn").show(),this.$item.trigger("checked")},onUncheck:function(){const t=this.getAllCheckedSiblings();1==t.length&&$(t[0]).find(".btn.action-btn").hide(),this.$moveHandle?.addClass("disabled"),this.$actionMenuBtn?.remove(),this.$actionMenu?.remove(),this.actionDisclosure?.destroy(),this.$actionMenuBtn=this.actionDisclosure=null,this.$item.trigger("unchecked")},getPrevCheckedItem:function(){const t=this.$item.prevAll(".checkbox-select-item:not(.all):has(input[type=checkbox]:checked):first");return t.length?t:null},getNextCheckedItem:function(){const t=this.$item.nextAll(".checkbox-select-item:not(.all):has(input[type=checkbox]:checked):first");return t.length?t:null},getAllCheckedSiblings:function(){return this.$item.siblings(".checkbox-select-item:not(.all):has(input[type=checkbox]:checked)")},moveUp:function(){const t=this.getPrevCheckedItem();t&&(this.$item.insertBefore(t),this.$item.trigger("movedUp"),this.select.trigger("sortChange"))},moveDown:function(){const t=this.getNextCheckedItem();t&&(this.$item.insertAfter(t),this.$item.trigger("movedDown"),this.select.trigger("sortChange"))}})},1032:function(){Craft.BaseUploader=Garnish.Base.extend({allowedKinds:null,$element:null,$fileInput:null,settings:null,fsType:null,formData:{},events:{},_rejectedFiles:{},_extensionList:null,_inProgressCounter:0,init:function(t,e){this._rejectedFiles={size:[],type:[],limit:[]},this.$element=t,this.settings=$.extend({},Craft.BaseUploader.defaults,e),this.formData=this.settings.formData,this.$fileInput=this.settings.fileInput||t,this.events=this.settings.events,this.settings.url||(this.settings.url=this.settings.replace?Craft.getActionUrl(this.settings.replaceAction):Craft.getActionUrl(this.settings.createAction)),this.settings.allowedKinds&&this.settings.allowedKinds.length&&("string"==typeof this.settings.allowedKinds&&(this.settings.allowedKinds=[this.settings.allowedKinds]),this.allowedKinds=this.settings.allowedKinds,delete this.settings.allowedKinds)},setParams:function(t){void 0!==Craft.csrfTokenName&&void 0!==Craft.csrfTokenValue&&(t[Craft.csrfTokenName]=Craft.csrfTokenValue),this.formData=t},getInProgress:function(){return this._inProgressCounter},isLastUpload:function(){return this.getInProgress()<2},processErrorMessages:function(){var t;this._rejectedFiles.type.length&&(t=1===this._rejectedFiles.type.length?"The file {files} could not be uploaded. The allowed file kinds are: {kinds}.":"The files {files} could not be uploaded. The allowed file kinds are: {kinds}.",t=Craft.t("app",t,{files:this._rejectedFiles.type.join(", "),kinds:this.allowedKinds.join(", ")}),this._rejectedFiles.type=[],Craft.cp.displayError(t)),this._rejectedFiles.size.length&&(t=1===this._rejectedFiles.size.length?"The file {files} could not be uploaded, because it exceeds the maximum upload size of {size}.":"The files {files} could not be uploaded, because they exceeded the maximum upload size of {size}.",t=Craft.t("app",t,{files:this._rejectedFiles.size.join(", "),size:this.humanFileSize(this.settings.maxFileSize)}),this._rejectedFiles.size=[],Craft.cp.displayError(t)),this._rejectedFiles.limit.length&&(t=1===this._rejectedFiles.limit.length?"The file {files} could not be uploaded, because the field limit has been reached.":"The files {files} could not be uploaded, because the field limit has been reached.",t=Craft.t("app",t,{files:this._rejectedFiles.limit.join(", ")}),this._rejectedFiles.limit=[],Craft.cp.displayError(t))},humanFileSize:function(t){var e=1024;if(t=e);return t.toFixed(1)+" "+["kB","MB","GB","TB","PB","EB","ZB","YB"][i]},_createExtensionList:function(){this._extensionList=[];for(var t=0;t",{class:"cpmodal-body"}),this.$content=$("",{class:"cpmodal-content"}).appendTo(this.$body),this.$footer=$("",{class:"cpmodal-footer hidden"}),$("",{class:"flex-grow"}).appendTo(this.$footer);const i=$("",{class:"flex flex-nowrap"}).appendTo(this.$footer);this.$loadSpinner=$("",{class:"spinner",title:Craft.t("app","Loading"),"aria-label":Craft.t("app","Loading")}).prependTo(i),this.$cancelBtn=$("",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(i),this.settings.showSubmitButton&&(this.$saveBtn=Craft.ui.createSubmitButton({label:Craft.t("app","Save"),spinner:!0}).appendTo(i)),this.$container=$(`<${this.settings.containerElement}/>`,this.settings.containerAttributes);let s=this.$body.add(this.$footer);this.$container.append(s),this.base(this.$container,{autoShow:!1}),this.$container.data("cpModal",this),Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0},t=>{this.handleSubmit(t)}),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,()=>{this.closeMeMaybe()}),this.addListener(this.$cancelBtn,"click",()=>{this.closeMeMaybe()}),this.addListener(this.$shade,"click",()=>{this.closeMeMaybe()}),this.addListener(this.$container,"click",t=>{const e=$(event.target);!this.showingSidebar||e.closest(this.$sidebarBtn).length||e.closest(this.$sidebar).length||this.hideSidebar()}),this.addListener(this.$container,"submit","handleSubmit"),this.resizeObserver=new ResizeObserver(t=>{this.visible&&this.updateSizeAndPosition()}),this.load()},load:function(t,e){return new Promise((t,i)=>{this.trigger("beforeLoad"),this.showLoadSpinner(),this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel()),this.cancelToken=axios.CancelToken.source(),Craft.sendActionRequest("GET",this.action,$.extend({params:Object.assign({},this.getParams(),this.settings.params),cancelToken:this.cancelToken.token,headers:{"X-Craft-Container-Id":this.$container.attr("id")}},this.settings.requestOptions)).then(s=>{this.update(s.data).then(()=>{!1!==e&&(this.$container.data("delta-names",s.data.deltaNames),this.$container.data("initial-delta-values",s.data.initialDeltaValues),this.$container.data("initialSerializedValue",this.$container.serialize())),t()}).catch(t=>{i(t)})}).catch(t=>{this.ignoreFailedRequest||(Craft.cp.displayError(),i(t)),this.ignoreFailedRequest=!1}).finally(()=>{this.hideLoadSpinner(),this.show(),this.cancelToken=null})})},getParams:function(){return{}},showLoadSpinner:function(){this.$loadSpinner.removeClass("hidden"),this.showingLoadSpinner=!0},hideLoadSpinner:function(){this.$loadSpinner.addClass("hidden"),this.showingLoadSpinner=!1},update:function(t){return new Promise(e=>{this.namespace=t.namespace,t.bodyClass&&this.$body.addClass(t.bodyClass),this.$content.html(t.content),t.submitButtonLabel&&this.$saveBtn.text(t.submitButtonLabel),t.formAttributes&&Craft.setElementAttributes(this.$container,t.formAttributes),this.$footer.removeClass("hidden"),Garnish.requestAnimationFrame(()=>{Craft.appendHeadHtml(t.headHtml),Craft.appendBodyHtml(t.bodyHtml),Craft.initUiElements(this.$content),Craft.cp.elementThumbLoader.load($(this.$content)),Garnish.isMobileBrowser()||Craft.setFocusWithin(this.$content),e(),this.trigger("load")})})},showSubmitSpinner:function(){this.$saveBtn.addClass("loading")},hideSubmitSpinner:function(){this.$saveBtn.removeClass("loading")},handleSubmit:function(t){t.preventDefault(),this.submit()},submit:function(){this.showSubmitSpinner();const t=Craft.findDeltaData(this.$container.data("initialSerializedValue"),this.$container.serialize(),null,this.$container.data("initial-delta-values"));Craft.sendActionRequest("POST",null,{data:t,headers:{"X-Craft-Namespace":this.namespace}}).then(t=>{this.handleSubmitResponse(t)}).catch(t=>{this.handleSubmitError(t)}).finally(()=>{this.hideSubmitSpinner()})},handleSubmitResponse:function(t){this.clearErrors();const e=t.data||{};e.message&&Craft.cp.displaySuccess(e.message,e.notificationSettings),e.modelClass&&e.modelId&&Craft.refreshComponentInstances(e.modelClass,e.modelId),this.succeeded=!0;const i={response:t,data:e.modelName&&e[e.modelName]||{}};this.trigger("submit",i),this.settings.onSubmit&&this.settings.onSubmit(i),this.settings.closeOnSubmit&&this.close()},handleSubmitError:function(t){if(!t.isAxiosError||!t.response||400===!t.response.status)throw Craft.cp.displayError(),t;const e=t.response.data||{};Craft.cp.displayError(e.message),e.errors&&this.showErrors(e.errors)},showErrors:function(t){this.clearErrors(),Object.entries(t).forEach(([t,e])=>{const i=this.$container.find(`[data-attribute="${t}"]`);i&&(Craft.ui.addErrorsToField(i,e),this.fieldsWithErrors.push(i))}),this.updateSizeAndPosition()},clearErrors:function(){this.fieldsWithErrors.forEach(t=>{Craft.ui.clearErrorsFromField(t)})},isDirty:function(){const t=this.$container.data("initialSerializedValue");return void 0!==t&&t!==(this.$container.data("serializer")||(()=>this.$container.serialize()))()},closeMeMaybe:function(){this.visible&&(this.isDirty()&&!confirm(Craft.t("app","Are you sure you want to close this screen? Any changes will be lost."))||this.close())},close:function(){this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel()),this.hide(),this.trigger("close"),this.destroy()},onShow:function(){this.base(),this.resizeObserver.observe(this.$body[0])},onHide:function(){this.base(),this.resizeObserver.disconnect(),this.succeeded||(this.trigger("cancel"),this.settings.onCancel&&this.settings.onCancel())}},{defaults:{params:{},containerElement:"form",containerAttributes:{id:`cp-modal-${Math.floor(1e8*Math.random())}`,action:"",method:"post",novalidate:"",class:"cpmodal modal fitted"},requestOptions:{},closeOnSubmit:!0,showSubmitButton:!0,onSubmit:$.noop,onCancel:$.noop}})},1180:function(){Craft.DataTableSorter=Garnish.DragSort.extend({$table:null,init:function(t,e){this.$table=$(t);var i=this.$table.children("tbody").children(":not(.filler)");(e=$.extend({},Craft.DataTableSorter.defaults,e)).container=this.$table.children("tbody"),e.helper=this.getHelper.bind(this),e.caboose="
",e.axis=Garnish.Y_AXIS,e.magnetStrength=4,e.helperLagBase=1.5,this.base(i,e)},getHelper:function(t){var e=$('').appendTo(Garnish.$bod),i=$("").appendTo(e),s=$("").appendTo(i);t.appendTo(s),i.width(this.$table.width()),i.prop("className",this.$table.prop("className"));for(var n=this.$table.find("tr:first").children(),a=t.children(),r=0;r{this.showModal()}),this.addListener(this.$removeBtn,"activate",()=>{this.removeIcon()})},showModal(){this.modal?this.modal.show():this.createModal()},createModal(){const t=$(''),e=$('').appendTo(t),i=$('').appendTo(e);$('').appendTo(i),this.$searchInput=Craft.ui.createTextInput({name:"search",class:"clearable",placeholder:Craft.t("app","Search")}).attr("aria-label",Craft.t("app","Search")).appendTo(i);const s=$("",{class:"clear-btn hidden",title:Craft.t("app","Clear search"),"aria-label":Craft.t("app","Clear search")}).appendTo(i);this.$iconListContainer=$('').appendTo(e),this.$iconList=$('').appendTo(this.$iconListContainer),this.updateLangAttribute(this.$iconList),$('').appendTo(this.$iconListContainer),Craft.cp.announce(Craft.t("app","Loading"));const n=new Craft.FormObserver(i,()=>{this.updateIcons()});this.addListener(this.$searchInput,"input,change",()=>{this.$searchInput.val()?s.removeClass("hidden"):s.addClass("hidden")}),this.addListener(s,"activate",()=>{this.$searchInput.val("").trigger("change"),n.checkForm()}),this.addListener(this.$iconList,"click",async t=>{let e;if("BUTTON"===t.target.nodeName)e=$(t.target);else if(e=$(t.target).closest("button"),!e.length)return;await this.selectIcon(e),this.$chooseBtn.focus()}),this.modal=new Garnish.Modal(t,{triggerElement:this.$chooseBtn}),this.updateIcons()},async updateIcons(){const t=await this.loadIcons();this.$iconList.html(t);const e=`${Craft.t("app","Loading complete")} - ${Craft.t("app","{num, number} {num, plural, =1{result} other{results}}",{num:this.listLength})}`;Craft.cp.announce(e)},async loadIcons(){this.cancelToken&&this.cancelToken.cancel();const t=this.$searchInput.val();if(""===t&&null!==this.defaultListHtml)return this.defaultListHtml;this.$iconListContainer.addClass("loading"),Craft.cp.announce(Craft.t("app","Loading")),this.cancelToken=axios.CancelToken.source();try{const e=(await Craft.sendActionRequest("POST","app/icon-picker-options",{data:{search:t,freeOnly:this.settings.freeOnly},cancelToken:this.cancelToken.token})).data.listHtml;return""===t&&(this.defaultListHtml=e),e}finally{this.$iconListContainer.removeClass("loading"),this.cancelToken=null}},updateLangAttribute(t){document.documentElement.lang.startsWith("en")||t.attr("lang","en")},async selectIcon(t){let e,i;this.modal?.hide(),"string"==typeof t?(e=t,i=(await Craft.ui.icon(t)).outerHTML):(e=t.attr("title"),i=$(t).html()),this.$preview.html(i).attr("title",e).attr("aria-label",e).attr("role","img"),this.updateLangAttribute(this.$preview),this.$input.val(e),this.$chooseBtn.children(".label").text(Craft.t("app","Change")),this.$removeBtn.removeClass("hidden"),this.$container.hasClass("small")&&this.$chooseBtn.addClass("hidden"),this.trigger("change",{iconName:e,iconHtml:i})},removeIcon(){this.$preview.html("").removeAttr("title").removeAttr("aria-label"),this.$input.val(""),this.$chooseBtn.children(".label").text(Craft.t("app","Choose")),this.$removeBtn.addClass("hidden"),this.$container.hasClass("small")?(this.$chooseBtn.removeClass("hidden"),this.$chooseBtn.focus()):this.$chooseBtn.focus(),this.trigger("change",{iconName:null,iconHtml:null})}},{defaults:{freeOnly:!1}})},1208:function(){Craft.Tooltip=Garnish.Base.extend({_$trigger:null,_message:null,hud:null,$p:null,hoverTimeout:null,triggerHit:!1,shownViaHover:!1,init:function(t,e){this.$trigger=$(t),this.message=e,"BUTTON"!==this.$trigger[0].tagName&&"button"!==this.$trigger.attr("role")&&console.error("Toggletip buttons need to be ').appendTo(this.$container));var t={url:Craft.getActionUrl(this.settings.uploadAction),formData:this.settings.postParameters,fileInput:this.$container.find(this.settings.fileInputSelector),paramName:this.settings.uploadParamName};void 0!==Craft.csrfTokenName&&void 0!==Craft.csrfTokenValue&&(t.formData[Craft.csrfTokenName]=Craft.csrfTokenValue),t.events={},t.events.fileuploadstart=this._onUploadStart.bind(this),t.events.fileuploadprogressall=this._onUploadProgress.bind(this),t.events.fileuploaddone=this._onUploadComplete.bind(this),t.events.fileuploadfail=this._onUploadFailure.bind(this),this.uploader=Craft.createUploader(null,this.$container,t),this.initButtons()},initButtons:function(){this.$container.find(this.settings.uploadButtonSelector).on("click",t=>{this.$container.find(this.settings.fileInputSelector).trigger("click")}),this.$container.find(this.settings.deleteButtonSelector).on("click",t=>{confirm(Craft.t("app","Are you sure you want to delete this image?"))&&($(t.currentTarget).parent().append('