Files
2026-04-28 15:13:50 +02:00

2 lines
34 KiB
JavaScript

import{aq as f,f as c,i as w,j as n,O as j,ad as G,Q as b,R as S,ae as D,U as R,M as _,T as ge,a0 as p,P as $,w as ke,b as Ge,v as T,r as W,u as L}from"./vendor-vue-ui.de3ab35f.js";import{S as J,d as X,J as ne,b as ve,u as Ze,bj as Xe,aJ as E,a9 as $e,e as et,aM as se,aL as Q,i as tt}from"./app-core.ae890a3f.js";import{u as rt}from"./JsonValues.a0694556.js";import{_ as l,a as F,d as st}from"./vendor-other.7b559694.js";import{u as fe}from"./Url.bb132bc9.js";import{C as Te,_ as me}from"./Button.a549093d.js";import{B as pe}from"./Select.32af2da8.js";import{B as ce}from"./Input.8918dec2.js";import{C as lt}from"./ProBadge.fd60f711.js";import{S as at}from"./External.94d285ce.js";import{_ as ae}from"./_plugin-vue_export-helper.eefbdd86.js";import{y as ut}from"./vendor-lodash.8e35bd59.js";import{S as Ce,a as Le}from"./Pencil.405b16d2.js";import{S as Ve}from"./Exclamation.fb17e636.js";import{B as ot}from"./Checkbox.79be52ca.js";import{C as le}from"./Index.52399193.js";import{S as it}from"./Gear.9677fa66.js";import{_ as De,S as Ee}from"./Trash.d35f8063.js";import{T as ie}from"./Slide.e6618126.js";import{B as nt}from"./DatePicker.0e992fd3.js";import{C as xe}from"./Tooltip.ae7a1028.js";import{S as we}from"./Plus.d276bd63.js";const K="all-in-one-seo-pack",Pe=()=>({redirectHasUnPublishedPost:e=>e.post_id&&e.postStatus!=="publish",validateRedirect:e=>{const u=[];if(!e.url.url)return u;if(e.url.regex)try{new RegExp(e.url.url)}catch{return u.push(l("The regex syntax is invalid.",K)),u}if(!e.url.regex&&!J(e.url.url))return u.push(l("Your URL is invalid.",K)),u;e.url.url.substr(0,4)==="http"&&u.push(l("Please enter a valid relative source URL.",K));const a=/%[a-zA-Z_]+%/,o=/%[0-9A-Fa-f]{2}/;if(e.url.url.match(a)&&!e.url.url.match(o)&&u.push(l("Permalinks are not currently supported.",K)),(e.url.url==="/(.*)"||e.url.url==="^/(.*)")&&u.push(l("This redirect is supported using the Relocate Site feature under Full Site Redirect tab.",K)),e.url.url&&e.url.url.length&&e.targetUrl&&e.targetUrl.length){let U=e.url.ignoreSlash?X.unTrailingSlashIt(e.url.url):e.url.url,g=e.url.ignoreSlash?X.unTrailingSlashIt(e.targetUrl):e.targetUrl;U=e.url.ignoreCase?U.toLowerCase():U,g=e.url.ignoreCase?g.toLowerCase():g,e.url.regex||(U=U.replace(/#.*?$/,"")),g=g.replace(/#.*?$/,""),(U===g||e.url.regex&&g.match(U))&&u.push(l("Your source is the same as a target and this will create a loop.",K))}const y=ne();if(0<y?.protectedPaths.length){const U=y.protectedPaths.map(g=>g.replace(/\/$/,""));e.url.url.match(new RegExp("^("+U.join("|")+")"))&&u.push(l("Your source is a protected path and cannot be redirected.",K))}return u}}),he="all-in-one-seo-pack",ct={emits:["set-url"],components:{CoreProBadge:lt,SvgExternal:at},props:{results:{type:Array,required:!0},url:String},data(){return{strings:{DRAFT:l("DRAFT",he),PENDING:l("PENDING",he),FUTURE:l("FUTURE",he)}}},methods:{getOptionTitle(t){t=J(t);const s=J(this.url),e=new RegExp(`(${ut(s)})`,"gi");return t.replace(e,'<span class="search-term">$1</span>')},getStatusLabel(t){switch(t.toLowerCase()){case"draft":return this.strings.DRAFT;case"future":return this.strings.FUTURE;case"pending":return this.strings.PENDING}}}},dt={class:"aioseo-add-redirection-url-results"},ht=["onClick"],gt={class:"option"},mt={class:"option-title"},pt=["innerHTML"],vt={class:"option-details"},ft=["href"];function _t(t,s,e,u,a,o){const y=f("core-pro-badge"),U=f("svg-external");return c(),w("div",dt,[n("ul",null,[(c(!0),w(j,null,G(e.results,(g,O)=>(c(),w("li",{key:O,onClick:P=>t.$emit("set-url",g.link)},[n("span",null,[n("div",gt,[n("div",mt,[n("div",{innerHTML:o.getOptionTitle(g.label)},null,8,pt),g.status!=="publish"?(c(),b(y,{key:0},{default:S(()=>[D(R(o.getStatusLabel(g.status)),1)]),_:2},1024)):_("",!0)]),n("div",vt,[n("span",null,R(g.link),1)])]),n("a",{class:"option-permalink",href:g.link,target:"_blank",onClick:ge(()=>{},["stop"])},[p(U)],8,ft)])],8,ht))),128))])])}const Ae=ae(ct,[["render",_t]]),yt={setup(){const{decodeUrl:t}=fe();return{postEditorStore:Ze(),redirectsStore:ne(),rootStore:ve(),decodeUrl:t}},components:{BaseInput:ce,CoreAddRedirectionUrlResults:Ae,CoreLoader:Te,SvgCircleCheck:Le,SvgCircleClose:Ce,SvgCircleExclamation:Ve},props:{url:String,errors:Array,warnings:Array,disableSearch:Boolean},data(){return{showResults:!1,isLoading:!1,value:null,results:[],searchTimer:null}},watch:{value(){this.value&&(this.value=this.value.replace(/(https?:\/)(\/)+|(\/)+/g,"$1$2$3"),this.value.startsWith("/")&&(this.value=this.value.replace(/\s+/g,"")))},url:{immediate:!0,handler(){this.value=this.url}}},methods:{onBlur(){setTimeout(()=>{this.$emit("update:modelValue",this.value)},150)},searchChange(){if(!this.disableSearch){if(!this.value){this.isLoading=!1,this.showResults=!1,this.results=[];return}if(this.value.startsWith("/")||this.value.startsWith("http:")||this.value.startsWith("https:")){this.isLoading=!1,this.showResults=!1,this.results=[];return}this.isLoading=!0,this.searchTimer&&clearTimeout(this.searchTimer),this.searchTimer=setTimeout(()=>{if(!this.value){this.isLoading=!1,this.showResults=!1,this.results=[];return}this.showResults=!0,this.ajaxSearch(this.value).finally(()=>this.isLoading=!1)},500)}},async ajaxSearch(t){const s=await this.redirectsStore.getPosts({query:t,postId:this.postEditorStore.currentPost.id});this.results=s.body.objects},setUrl(t){this.showResults=!1,this.value=t.replace(this.rootStore.aioseo.urls.home,"",t),this.$emit("update:modelValue",this.value)},inputEventDecodeUrl(t){this.value="",this.value=this.decodeUrl(t)},documentClick(t){if(!this.showResults)return;const s=t&&t.target?t.target:null,e=this.$refs["redirect-target-url"];e&&e!==s&&!e.contains(s)&&(this.showResults=!1)}},mounted(){document.addEventListener("click",this.documentClick);const t=document.querySelector("#aioseo-modal-portal .modal-wrapper");t&&t.addEventListener("click",this.documentClick);const s=document.querySelector("#main-settings-cont");s&&s.addEventListener("click",this.documentClick)},beforeUnmount(){document.removeEventListener("click",this.documentClick);const t=document.querySelector("#aioseo-modal-portal .modal-wrapper");t&&t.removeEventListener("click",this.documentClick);const s=document.querySelector("#main-settings-cont");s&&s.removeEventListener("click",this.documentClick)}},Rt={class:"aioseo-add-redirection-target-url",ref:"redirect-target-url"},bt={class:"append-icon"};function St(t,s,e,u,a,o){const y=f("svg-circle-close"),U=f("svg-circle-check"),g=f("svg-circle-exclamation"),O=f("core-loader"),P=f("base-input"),B=f("core-add-redirection-url-results");return c(),w("div",Rt,[p(P,{modelValue:a.value,"onUpdate:modelValue":[s[0]||(s[0]=x=>a.value=x),s[2]||(s[2]=x=>t.$emit("update:modelValue",u.decodeUrl(a.value)))],onKeyup:o.searchChange,onFocus:s[1]||(s[1]=x=>a.showResults=!0),onInput:s[3]||(s[3]=x=>o.inputEventDecodeUrl(x.target.value)),size:"medium",placeholder:"/target-page/",class:$({"aioseo-error":e.errors.length,"aioseo-active":!e.errors.length&&!e.warnings.length&&e.url,"aioseo-warning":e.warnings.length})},{"append-icon":S(()=>[n("div",bt,[a.isLoading?_("",!0):(c(),w(j,{key:0},[e.errors.length?(c(),b(y,{key:0})):_("",!0),!e.errors.length&&!e.warnings.length&&e.url?(c(),b(U,{key:1})):_("",!0),e.warnings.length?(c(),b(g,{key:2})):_("",!0)],64)),a.isLoading?(c(),b(O,{key:1,dark:""})):_("",!0)])]),_:1},8,["modelValue","onKeyup","class"]),a.showResults&&a.results.length?(c(),b(B,{key:0,results:a.results,url:a.value,onSetUrl:o.setUrl},null,8,["results","url","onSetUrl"])):_("",!0)],512)}const Ut=ae(yt,[["render",St]]),I="all-in-one-seo-pack",kt={emits:["updated-url","remove-url","updated-option"],setup(){const{validateRedirect:t}=Pe(),{decodeUrl:s}=fe();return{redirectsStore:ne(),rootStore:ve(),validateRedirect:t,decodeUrl:s}},components:{BaseCheckbox:ot,BaseInput:ce,CoreAddRedirectionUrlResults:Ae,CoreAlert:le,CoreLoader:Te,SvgCircleCheck:Le,SvgCircleClose:Ce,SvgCircleExclamation:Ve,SvgGear:it,SvgTrash:De,TransitionSlide:ie},props:{url:{type:Object,default(){return{id:null,url:null,regex:!1,ignoreSlash:!0,ignoreCase:!0,errors:[],warnings:[]}}},allowDelete:Boolean,targetUrl:String,log404:Boolean,disableSource:Boolean,disableSearch:Boolean},data(){return{showResults:!1,isLoading:!1,showOptions:!1,searchTimer:null,strings:{ignoreSlash:l("Ignore Slash",I),ignoreCase:l("Ignore Case",I),regex:l("Regex",I)},results:[]}},watch:{targetUrl(){this.updateSourceUrl(this.url.url)}},computed:{maybeRegex(){return this.url.url.match(/[*\\()[\]^$]/)!==null||this.url.url.indexOf(".?")!==-1},iffyUrl(){if(!this.url.url||this.disableSource)return[];const t=[];return this.url.url.substr(0,4)!=="http"&&this.url.url.substr(0,1)!=="/"&&0<this.url.url.length&&!this.url.regex&&t.push(F(l("We recommend starting the source URL with a %1$s",I),"<code>/</code>")),this.url.url.indexOf("#")!==-1&&t.push(l("Anchor values are not sent to the server and cannot be redirected.",I)),!this.log404&&this.maybeRegex&&!this.url.regex&&t.push(F(l("Possible regex character detected. Remember to enable the %1$s option under the advanced settings (gear icon) if this is a regular expression.",I),"<code>Regex</code>")),this.url.regex&&(this.url.url.indexOf("^")===-1&&this.url.url.indexOf("$")===-1&&t.push(F(l("To prevent a greedy regular expression you can use %1$s to anchor it to the start of the URL. For example: %2$s",I),"<code>^/</code>","<code>^/"+J(this.url.url.replace(/^\//,""))+"</code>")),0<this.url.url.indexOf("^")&&t.push(F(l("The caret %1$s should be at the start. For example: %2$s",I),"<code>^/</code>","<code>^/"+J(this.url.url.replace("^","").replace(/^\//,""))+"</code>")),this.url.url.indexOf("^")===0&&this.url.url.indexOf("^/")===-1&&t.push(F(l("We recommend starting the source URL with a %1$s",I),"<code>^/</code>")),this.url.url.length-1!==this.url.url.indexOf("$")&&this.url.url.indexOf("$")!==-1&&t.push(F(l("The dollar symbol %1$s should be at the end. For example: %2$s",I),"<code>$</code>","<code>"+J(this.url.url.replace(/\$/g,""))+"$</code>"))),this.url.url.match(/(\.html|\.htm|\.php|\.pdf|\.jpg)$/)!==null&&t.push(l("Some servers may be configured to serve file resources directly, preventing a redirect occurring.",I)),t},urlOptionsActive(){return this.url.regex||this.showOptions}},methods:{updateSourceUrl(t){!this.disableSource&&t&&(t&&(t=t.replace(/(https?:\/)(\/)+|(\/)+/g,"$1$2$3")),!this.url.regex&&t.startsWith("/")&&(t=t.replace(/\s+/g,"")),t=Xe(t,this.rootStore.aioseo.urls.home)),this.url.url=t,this.url.errors=this.validateRedirect(this),this.url.warnings=this.iffyUrl,this.$emit("updated-url",this.url)},updateOption(t,s){this.url[t]=s,this.updateSourceUrl(this.url.url),this.$emit("updated-option",this.url)},searchChange(){if(!this.disableSearch){if(!this.url.url||this.url.regex){this.isLoading=!1,this.showResults=!1,this.results=[];return}if(this.url.url.startsWith("/")||this.url.url.startsWith("^")||this.url.url.startsWith("http:")||this.url.url.startsWith("https:")){this.isLoading=!1,this.showResults=!1,this.results=[];return}this.isLoading=!0,this.searchTimer&&clearTimeout(this.searchTimer),this.searchTimer=setTimeout(()=>{if(!this.url.url){this.isLoading=!1,this.showResults=!1,this.results=[];return}this.showResults=!0,this.ajaxSearch(this.url.url).finally(()=>this.isLoading=!1)},500)}},async ajaxSearch(t){const s=await this.redirectsStore.getPosts({query:t});this.results=s.body.objects},setUrl(t){this.showResults=!1,this.updateOption("url",t.replace(this.rootStore.aioseo.urls.home,"",t))},documentClick(t){if(!this.showResults)return;const s=t&&t.target?t.target:null,e=this.$refs["redirect-source-url"];e&&e!==s&&!e.contains(s)&&(this.showResults=!1)}},mounted(){this.url.showOptions&&(this.showOptions=!0,this.updateSourceUrl(this.url.url)),document.addEventListener("click",this.documentClick)},beforeUnmount(){document.removeEventListener("click",this.documentClick)}},wt={class:"aioseo-redirect-source-url",ref:"redirect-source-url"},Tt={class:"append-icon"};function Ct(t,s,e,u,a,o){const y=f("svg-circle-close"),U=f("svg-circle-check"),g=f("svg-circle-exclamation"),O=f("svg-gear"),P=f("svg-trash"),B=f("core-loader"),x=f("base-input"),Y=f("core-add-redirection-url-results"),N=f("base-checkbox"),z=f("transition-slide"),i=f("core-alert");return c(),w("div",wt,[p(x,{modelValue:u.decodeUrl(e.url.url),"onUpdate:modelValue":s[2]||(s[2]=d=>o.updateSourceUrl(u.decodeUrl(d))),onKeyup:o.searchChange,onFocus:s[3]||(s[3]=d=>a.showResults=!0),disabled:e.log404||e.disableSource,size:"medium",placeholder:"/source-page/",class:$({"aioseo-error":e.url.errors.length,"aioseo-active":!e.url.errors.length&&!e.url.warnings.length&&e.url.url,"aioseo-warning":e.url.warnings.length})},{"append-icon":S(()=>[n("div",Tt,[a.isLoading?_("",!0):(c(),w(j,{key:0},[e.url.errors.length?(c(),b(y,{key:0})):_("",!0),!e.url.errors.length&&!e.url.warnings.length&&e.url.url?(c(),b(U,{key:1})):_("",!0),e.url.warnings.length?(c(),b(g,{key:2})):_("",!0),p(O,{class:$({active:o.urlOptionsActive}),onClick:s[0]||(s[0]=d=>a.showOptions=!a.showOptions)},null,8,["class"]),e.allowDelete?(c(),b(P,{key:3,onClick:s[1]||(s[1]=d=>t.$emit("remove-url"))})):_("",!0)],64)),a.isLoading?(c(),b(B,{key:1,dark:""})):_("",!0)])]),_:1},8,["modelValue","onKeyup","disabled","class"]),!e.url.regex&&a.showResults&&a.results.length?(c(),b(Y,{key:0,results:a.results,url:e.url.url,onSetUrl:o.setUrl},null,8,["results","url","onSetUrl"])):_("",!0),p(z,{active:a.showOptions,class:"source-url-options"},{default:S(()=>[p(N,{size:"medium",modelValue:e.url.ignoreSlash,"onUpdate:modelValue":s[4]||(s[4]=d=>o.updateOption("ignoreSlash",d))},{default:S(()=>[D(R(a.strings.ignoreSlash),1)]),_:1},8,["modelValue"]),p(N,{size:"medium",modelValue:e.url.ignoreCase,"onUpdate:modelValue":s[5]||(s[5]=d=>o.updateOption("ignoreCase",d))},{default:S(()=>[D(R(a.strings.ignoreCase),1)]),_:1},8,["modelValue"]),!e.log404&&!e.disableSource?(c(),b(N,{key:0,size:"medium",modelValue:e.url.regex,"onUpdate:modelValue":s[6]||(s[6]=d=>o.updateOption("regex",d))},{default:S(()=>[D(R(a.strings.regex),1)]),_:1},8,["modelValue"])):_("",!0)]),_:1},8,["active"]),p(z,{active:!!e.url.errors.length},{default:S(()=>[(c(!0),w(j,null,G(e.url.errors,(d,C)=>(c(),b(i,{key:C,class:"source-url-error",type:"red",size:"small",innerHTML:d},null,8,["innerHTML"]))),128))]),_:1},8,["active"]),p(z,{active:!!e.url.warnings.length},{default:S(()=>[(c(!0),w(j,null,G(e.url.warnings,(d,C)=>(c(),b(i,{key:C,class:"source-url-warning",type:"yellow",size:"small",innerHTML:d},null,8,["innerHTML"]))),128))]),_:1},8,["active"])],512)}const Lt=ae(kt,[["render",Ct]]),k="all-in-one-seo-pack",Vt={type:null,key:null,value:null,regex:null},Dt={emits:["redirects-custom-rule-error"],setup(){return{dateStringToLocalJs:$e,rootStore:ve()}},components:{BaseButton:me,BaseDatePicker:nt,BaseInput:ce,BaseSelect:pe,CoreAlert:le,CoreTooltip:xe,SvgCircleQuestionMark:Ee,SvgTrash:De},props:{editCustomRules:Array},data(){return{strings:{customRules:l("Custom Rules",k),customRulesTooltip:l("Custom rules allow you to create redirects based on specific criteria. You can use these rules to redirect users based on their IP address, browser, or other criteria.",k),selectMatchRule:l("Select Rule",k),delete:l("Delete",k),add:l("Add Another Rule",k),regex:l("Regex",k),selectAValue:l("Select a Value or Add a New One",k),key:l("Key",k),value:l("Value",k),startDate:l("Start Date",k),endDate:l("End Date",k)},customRules:[],rulesErrors:[],types:[{label:E.schedule,value:"schedule",taggable:!1,regex:!1,dateRange:!0},{label:E.login,value:"login",placeholder:l("Select Status",k),singleRule:!0,options:[{label:E.loggedin,value:"loggedin"},{label:E.loggedout,value:"loggedout"}]},{label:E.role,value:"role",multiple:!0,placeholder:l("Select Roles",k),options:Object.entries(this.rootStore.aioseo.user.userRoles).map(t=>({label:t[1],value:t[0]}))},{label:E.referrer,value:"referrer",regex:!0,singleRule:!0},{label:E.agent,value:"agent",regex:!0,taggable:!0,multiple:!0,options:[{label:E.mobile,value:"mobile",docLink:X.getDocLink(l("Learn more",k),"redirectCustomRulesUserAgent",!0)},{label:E.feeds,value:"feeds",docLink:X.getDocLink(l("Learn more",k),"redirectCustomRulesUserAgent",!0)},{label:E.libraries,value:"libraries",docLink:X.getDocLink(l("Learn more",k),"redirectCustomRulesUserAgent",!0)}]},{label:E.cookie,value:"cookie",keyValuePair:!0,regex:!0},{label:E.ip,value:"ip",placeholder:l("Enter an IP Address",k),taggable:!0,regex:!0,singleRule:!0},{label:E.server,value:"server",placeholder:l("Enter the Server Name",k),regex:!0,singleRule:!0},{label:E.header,value:"header",keyValuePair:!0,regex:!0},{label:E.wp_filter,value:"wp_filter",placeholder:l("Enter a WordPress Filter Name",k),taggable:!0},{label:E.locale,value:"locale",taggable:!0,regex:!0,placeholder:l("Enter a Locale Code, e.g.: en_GB, es_ES",k),singleRule:!0}]}},watch:{customRules:{deep:!0,handler(){this.validationError()}}},computed:{hasCustomRules(){return 0<this.customRules.length},filteredTypes(){return this.types.map(t=>({...t,$isDisabled:t.singleRule&&this.customRules.find(s=>t.value===s.type)}))}},methods:{isDisabledStartDate(t){const s=new Date;return s.setHours(0,0,0,0),t<s},isDisabledEndDate(t,s){const e=this.getRuleValue("scheduleStart",s);return e?(t.setHours(23,59,59,0),this.dateStringToLocalJs(e)>t):this.isDisabledStartDate(t)},removeRule(t){this.customRules.splice(t,1),this.hasCustomRules||this.addRule(null)},addRule(t,s=!1){t||(t=JSON.parse(JSON.stringify(Vt))),(!s||s&&this.customRules.filter(e=>e===t).length===0)&&this.customRules.push(t)},updateRule(t,s,e){const u=this.customRules[e];s=typeof s.value<"u"?s.value:s,s=typeof s=="object"&&s.length?s.map(a=>a.value):s,u[t]=s,t==="type"&&(u.value=""),this.customRules[e]=u},getRuleValue(t,s,e=!1){if(!this.customRules[s])return;let a=this.customRules[s][t],o=null;if(e)return a;switch(t){case"type":a=this.types.find(y=>a===y.value);break;case"value":o=this.getType(s,"options"),o&&(typeof a=="object"?a=a.map(y=>o.find(U=>y===U.value)||y).filter(y=>!!y):a=o.find(y=>a===y.value)||a),this.getType(s,"taggable")&&(a=typeof a=="object"?a.map(y=>typeof y.label>"u"?{label:y,value:y}:y):[]);break}return a},getType(t,s){const e=this.getRuleValue("type",t);return s?e&&typeof e[s]<"u"?e[s]:!1:e},validationError(){let t=!1,s=null,e=null;this.customRules.forEach((u,a)=>{this.rulesErrors[a]=null,u.type==="schedule"&&(s=this.getRuleValue("scheduleStart",a),e=this.getRuleValue("scheduleEnd",a),s&&e&&(s>e&&(this.rulesErrors[a]=l("The Start Date must be lower than the End Date.",k),t=!0),s===e&&(this.rulesErrors[a]=l("Start Date and End Date must be different.",k),t=!0)))}),this.$emit("redirects-custom-rule-error",t)},updateDate(t,s,e){const u=t!==null?st(t).utc().format():"";this.updateRule(s,u,e)}},mounted(){this.editCustomRules&&(this.customRules=this.editCustomRules),this.hasCustomRules||this.addRule(null)}},Et={class:"custom-rules"},xt={class:"redirects-options-table",cellspacing:"0",cellpadding:"0","aria-label":"Custom Rules"},Pt={colspan:"2"},At={class:"custom-rules__label"},Ot={class:"rule-settings"},Nt={class:"rule-row"},Bt={class:"rule-option"},It={key:3,class:"date-range"},zt={key:0,class:"rule-error"},Mt={class:"actions"},qt={colspan:"2"};function Ft(t,s,e,u,a,o){const y=f("svg-circle-question-mark"),U=f("core-tooltip"),g=f("base-select"),O=f("base-input"),P=f("base-date-picker"),B=f("base-toggle"),x=f("core-alert"),Y=f("svg-trash"),N=f("base-button");return c(),w("div",Et,[n("table",xt,[n("thead",null,[n("tr",null,[n("td",Pt,[n("div",At,[n("span",null,R(a.strings.customRules),1),p(U,{offset:"200px,0"},{tooltip:S(()=>[D(R(a.strings.customRulesTooltip),1)]),default:S(()=>[p(y)]),_:1})])])])]),n("tbody",null,[(c(!0),w(j,null,G(a.customRules,(z,i)=>(c(),w("tr",{class:$(["rule",{even:i%2===0}]),key:i},[n("td",Ot,[n("div",Nt,[n("div",Bt,[p(g,{options:o.filteredTypes,size:"medium",placeholder:a.strings.selectMatchRule,modelValue:o.getRuleValue("type",i),"onUpdate:modelValue":d=>o.updateRule("type",d,i)},null,8,["options","placeholder","modelValue","onUpdate:modelValue"]),o.getType(i,"options")||o.getType(i,"taggable")?(c(),b(g,{key:`rule-${i}-${o.getRuleValue("type",i)?.value||"no-type"}`,options:o.getType(i,"options")||[],size:"medium",modelValue:o.getRuleValue("value",i),"onUpdate:modelValue":d=>o.updateRule("value",d,i),multiple:o.getType(i,"multiple")||o.getType(i,"taggable"),taggable:o.getType(i,"taggable"),placeholder:o.getType(i,"placeholder")||a.strings.selectAValue},null,8,["options","modelValue","onUpdate:modelValue","multiple","taggable","placeholder"])):_("",!0),o.getType(i,"keyValuePair")?(c(),b(O,{key:1,modelValue:o.getRuleValue("key",i),"onUpdate:modelValue":d=>o.updateRule("key",d,i),size:"medium",placeholder:o.getType(i,"placeholderKey")||a.strings.key},null,8,["modelValue","onUpdate:modelValue","placeholder"])):_("",!0),!o.getType(i,"options")&&!o.getType(i,"taggable")&&!o.getType(i,"dateRange")?(c(),b(O,{key:2,modelValue:o.getRuleValue("value",i),"onUpdate:modelValue":d=>o.updateRule("value",d,i),size:"medium",placeholder:o.getType(i,"placeholder")||a.strings.value,disabled:!o.getType(i)},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"])):_("",!0),o.getType(i,"dateRange")?(c(),w("div",It,[p(P,{type:"datetime",size:"large",placeholder:a.strings.startDate,dateFormat:u.rootStore.aioseo.data.dateFormat+" - "+u.rootStore.aioseo.data.timeFormat,defaultValue:u.dateStringToLocalJs(o.getRuleValue("scheduleStart",i)),onChange:d=>o.updateDate(d,"scheduleStart",i),isDisabledDate:o.isDisabledStartDate},null,8,["placeholder","dateFormat","defaultValue","onChange","isDisabledDate"]),p(P,{type:"datetime",size:"large",placeholder:a.strings.endDate,dateFormat:u.rootStore.aioseo.data.dateFormat+" - "+u.rootStore.aioseo.data.timeFormat,defaultValue:u.dateStringToLocalJs(o.getRuleValue("scheduleEnd",i)),onChange:d=>o.updateDate(d,"scheduleEnd",i),isDisabledDate:d=>o.isDisabledEndDate(d,i)},null,8,["placeholder","dateFormat","defaultValue","onChange","isDisabledDate"])])):_("",!0),o.getType(i,"regex")?(c(),b(B,{key:4,modelValue:o.getRuleValue("regex",i),"onUpdate:modelValue":d=>o.updateRule("regex",d,i)},{default:S(()=>[D(R(a.strings.regex),1)]),_:1},8,["modelValue","onUpdate:modelValue"])):_("",!0)]),a.rulesErrors[i]?(c(),w("div",zt,[p(x,{type:"red",size:"small"},{default:S(()=>[D(R(a.rulesErrors[i]),1)]),_:2},1024)])):_("",!0)])]),n("td",Mt,[p(U,{class:"action",type:"action"},{tooltip:S(()=>[D(R(a.strings.delete),1)]),default:S(()=>[p(Y,{onClick:d=>o.removeRule(i)},null,8,["onClick"])]),_:2},1024)])],2))),128))]),n("tfoot",null,[n("tr",null,[n("td",qt,[p(N,{size:"small-table",type:"gray",onClick:s[0]||(s[0]=z=>o.addRule(null))},{default:S(()=>[D(R(a.strings.add),1)]),_:1})])])])])])}const Ht=ae(Dt,[["render",Ft],["__scopeId","data-v-d93a2a5e"]]),Wt={},jt={width:"36",height:"16",viewBox:"0 0 36 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:"aioseo-right-arrow"};function Jt(t,s){return c(),w("svg",jt,[...s[0]||(s[0]=[n("path",{d:"M36 8L28.4211 0.5V6.125H0V9.875H28.4211V15.5L36 8Z",fill:"currentColor"},null,-1)])])}const Yt=ae(Wt,[["render",Jt]]),Qt={class:"urls"},Kt={class:"source"},Gt={class:"aioseo-settings-row no-border no-margin small-padding"},Zt={class:"settings-name source-url"},Xt={class:"name small-margin"},$t={class:"aioseo-description source-description"},er=["innerHTML"],tr={key:0},rr={key:0,class:"url-arrow"},sr={key:1,class:"target"},lr={class:"aioseo-settings-row no-border no-margin small-padding"},ar={class:"settings-name"},ur={class:"name small-margin"},or={class:"url"},ir={class:"aioseo-description"},nr={class:"redirect-options"},cr={class:"redirect-options__comment"},dr={class:"redirect-options__label"},hr={class:"redirect-options__type"},gr={class:"redirect-options__label"},mr={class:"redirect-options__query"},pr={class:"redirect-options__label"},vr={class:"custom-rules-toggle"},fr={class:"aioseo-add-redirection__actions"},Mr={__name:"Index",props:{edit:Boolean,log404:Boolean,disableSource:Boolean,url:Object,urls:Array,target:String,type:Number,query:String,slash:Boolean,case:Boolean,rules:{type:Array,default(){return[]}},postId:Number,postStatus:String,redirectComment:String},emits:["cancel","added-redirect"],setup(t,{emit:s}){const e="all-in-one-seo-pack",u=t,a=s,{getJsonValue:o}=rt(),{redirectHasUnPublishedPost:y}=Pe(),{decodeUrl:U}=fe(),g=ne(),O=W(!1),P=W(!1),B=W([]),x=W([]),Y=W(!1),N=W(!1),z=W(!1),i=W(!1),d=W({sourceUrls:[],targetUrl:null,redirectType:null,queryParam:null,customRules:[],comment:""}),C={redirectType:l("Redirect Type",e),targetUrl:l("Target URL",e),targetUrlDescription:l("Enter a URL or search for a page.",e),addUrl:l("add extra source URLs.",e),youCanAlso:l("You can also",e),sourceUrlDescription:F(l("Enter a relative URL or search for a page. The gear icon enables advanced options such as regex (%1$s).",e),X.getDocLink(l("what's this?",e),"redirectManagerRegex")),queryParams:l("Query Parameters",e),queryParamsTooltip:l("Query parameters are the parameters that are passed to the target URL. You can ignore all parameters, ignore exact parameters, or include all parameters.",e),saveChanges:l("Save Changes",e),cancel:l("Cancel",e),genericErrorMessage:l("An error occurred while adding your redirects. Please try again later.",e),sourceUrlSetOncePublished:l("source url set once post is published",e),comment:l("Comment",e),commentPlaceholder:l("I added this redirect to...",e),advancedSettings:l("Advanced Settings",e),addCustomRules:l("Add Custom Rules",e),hideCustomRules:l("Hide Custom Rules",e)},m=L({get(){return i.value?d.value.sourceUrls:g.addNewRedirect.sourceUrls},set(r){i.value?d.value.sourceUrls=r:g.addNewRedirect.sourceUrls=r}}),V=L({get(){return i.value?d.value.targetUrl:g.addNewRedirect.targetUrl},set(r){i.value?d.value.targetUrl=r:g.addNewRedirect.targetUrl=r}}),M=L({get(){return i.value?d.value.redirectType:g.addNewRedirect.redirectType},set(r){i.value?d.value.redirectType=r:g.addNewRedirect.redirectType=r}}),H=L({get(){return i.value?d.value.queryParam:g.addNewRedirect.queryParam},set(r){i.value?d.value.queryParam=r:g.addNewRedirect.queryParam=r}}),ee=L({get(){return i.value?d.value.customRules:g.addNewRedirect.customRules},set(r){i.value?d.value.customRules=r:g.addNewRedirect.customRules=r}}),Z=L({get(){return i.value?d.value.comment:g.addNewRedirect.comment},set(r){i.value?d.value.comment=r:g.addNewRedirect.comment=r}}),Oe=L(()=>!!m.value.filter(r=>!r.url).length||!!m.value.filter(r=>0<r.errors.length).length||re()&&!V.value||Y.value),de=L(()=>{const r=V.value?.match(/^\/([a-zA-Z0-9_\-%]*\..*)\//);return r?r[0]:null}),Ne=L(()=>1<m.value.length?l("Source URLs",e):l("Source URL",e)),Be=L(()=>1<m.value.length?l("Add Redirects",e):l("Add Redirect",e)),Ie=L(()=>{if(!V.value)return[];const r=[],h=J(V.value);if(!h)return r.push(l("Your target URL is not valid.",e)),r;V.value&&!Re(V.value,"https://")&&!Re(V.value,"http://")&&V.value.substr(0,1)!=="/"&&r.push(F(l("Your target URL should be an absolute URL like %1$s or start with a slash %2$s.",e),"<code>https://domain.com/"+h+"</code>","<code>/"+h+"</code>"));const v=V.value.match(/[|\\$]/g);return v!==null&&(m.value.map(A=>A.regex).every(A=>A)||r.push(F(l("Your target URL contains the invalid character(s) %1$s",e),"<code>"+v+"</code>"))),r}),ze=L(()=>{if(!J(V.value))return[];const r=[];return de.value&&r.push(F(l("Your URL appears to contain a domain inside the path: %1$s. Did you mean to use %2$s instead?",e),"<code>"+de.value+"</code>","<code>https:/"+de.value+"</code>")),r}),_e=L(()=>{let r=o(g.options.redirectDefaults?.redirectType);const h=se.find(v=>parseInt(v.value)===parseInt(r?.value));return r||(r=se[0]),h||r}),ye=L(()=>{let r=o(g.options.redirectDefaults?.queryParam);const h=Q.find(v=>v.value===r?.value);return r||(r=Q[0]),h||r}),Me=L(()=>g.options.redirectDefaults?.ignoreSlash),qe=L(()=>g.options.redirectDefaults?.ignoreCase),te=L(()=>({id:null,url:null,regex:!1,ignoreSlash:u.slash||Me.value||!1,ignoreCase:u.case||qe.value||!1,errors:[],warnings:[]})),Fe=L(()=>[JSON.parse(JSON.stringify(te.value))]),He=L(()=>0<m.value.filter(r=>r.regex).length?Q.map(r=>(r.$isDisabled=!1,r.value==="exact"&&(r.$isDisabled=!0,H.value?.value==="exact"&&(H.value=Q.find(h=>!h.$isDisabled))),r)):Q.map(r=>(r.$isDisabled=!1,r))),We=L(()=>y({post_id:u.postId,postStatus:u.postStatus}));ke(()=>u.redirectComment,r=>{i.value&&r&&(d.value.comment=r)}),ke(m,()=>{et(()=>Ke(),500)},{deep:!0});function Re(r,h){return h.indexOf(r)===0||r.substr(0,h.length)===h}function je(){m.value.push(JSON.parse(JSON.stringify(te.value)))}function Je(r){m.value.splice(r,1)}function Ye(){if(O.value=!1,P.value=!0,tt()){const r=u.urls?.[0]?.url??window.wp.data.select("core/editor").getCurrentPostAttribute("slug");r&&m.value.map(h=>(h.url=r.startsWith("/")?r:`/${r}`,h))}m.value.map(r=>(r.url.substr(0,4)!=="http"&&r.url.substr(0,1)!=="/"&&0<r.url.length&&!r.regex&&(r.url="/"+r.url),r)),g.create({sourceUrls:m.value,targetUrl:V.value,queryParam:H.value.value,customRules:ee.value,redirectType:M.value.value,redirectTypeHasTarget:re(),group:u.log404?"404":"manual",postId:u.postId,comment:Z.value}).then(()=>{a("added-redirect"),window.aioseoBus.$emit("added-redirect"),Ue()}).catch(r=>{be(r)})}function Qe(){O.value=!1,P.value=!0,m.value[0].url.substr(0,4)!=="http"&&m.value[0].url.substr(0,1)!=="/"&&0<m.value[0].url.length&&!m.value[0].regex&&(m.value[0].url="/"+m.value[0].url),g.update({id:m.value[0].id,payload:{sourceUrls:m.value,targetUrl:V.value,queryParam:H.value.value,customRules:ee.value,redirectType:M.value.value,redirectTypeHasTarget:re(),postId:u.postId,comment:Z.value}}).then(()=>{a("added-redirect"),Ue()}).catch(r=>{console.error(r),be(r)})}function be(r){if(r.response.status!==409||!r.response.body.failed||!r.response.body.failed.length){O.value=!0,P.value=!1;return}const h=[],v=r.response.body.failed,q=l("A redirect already exists for this source URL. To make changes, edit the original instead.",e);v.forEach(A=>{const ue=m.value.findIndex(oe=>oe.url===A.url||A);ue!==-1&&(m.value[ue].errors.find(oe=>oe===A.error||oe===q)||m.value[ue].errors.push(A.error||q),h.push(ue))});for(let A=m.value.length-1;0<=A;A--)h.includes(A)||m.value.splice(A,1);P.value=!1}function Se(r){V.value=r,B.value=Ie.value,x.value=ze.value}function Ue(){if(P.value=!1,u.edit)return;const r=se.find(v=>v.value===u.type)||_e.value,h=Q.find(v=>v.value===u.query)||ye.value;m.value=[JSON.parse(JSON.stringify(te.value))],V.value=null,B.value=[],x.value=[],M.value=r||{label:"301 "+l("Moved Permanently",e),value:301},H.value=h||{label:l("Ignore all parameters",e),value:"ignore"},ee.value=[],Y.value=!1,N.value=!1,Z.value=""}function Ke(){const r=[];m.value.forEach((h,v)=>{if(!(!h.url||h.errors.length)){if(r.includes(h.url.replace(/\/$/,""))){m.value[v].errors.push(l("This is a duplicate of a URL you are already adding. You can only add unique source URLs.",e));return}r.push(h.url.replace(/\/$/,""))}}),Se(V.value)}function re(){return M.value&&(typeof M.value.noTarget>"u"||!M.value.noTarget)}return Ge(()=>{0<=m.value?.length&&(m.value=Fe.value),u.url&&(i.value=!0,m.value=[{...te.value,...u.url}]),u.urls&&u.urls.length&&(i.value=!0,m.value=u.urls.map(r=>({...te.value,...r}))),z.value=u.disableSource,We.value&&(m.value=m.value.map(r=>(r.url="("+C.sourceUrlSetOncePublished+")",r)),z.value=!0),u.target&&(V.value=u.target),u.rules&&u.rules.length!==0&&(ee.value=u.rules,N.value=!0),u.redirectComment&&(Z.value=u.redirectComment),M.value=se.find(r=>r.value===u.type)||M.value||_e.value,H.value=Q.find(r=>r.value===u.query)||H.value||ye.value}),(r,h)=>(c(),w("div",{class:$(["aioseo-add-redirection",{"edit-url":t.edit,"log-404":t.log404}])},[O.value?(c(),b(T(le),{key:0,class:"generic-error",type:"red"},{default:S(()=>[D(R(C.genericErrorMessage),1)]),_:1})):_("",!0),n("div",Qt,[n("div",Kt,[n("div",Gt,[n("div",Zt,[n("div",Xt,R(Ne.value),1)]),(c(!0),w(j,null,G(m.value,(v,q)=>(c(),b(T(Lt),{key:q,url:v,"allow-delete":1<m.value.length,onRemoveUrl:A=>Je(q),"target-url":V.value,log404:t.log404,disableSource:z.value},null,8,["url","allow-delete","onRemoveUrl","target-url","log404","disableSource"]))),128)),n("div",$t,[n("span",{innerHTML:C.sourceUrlDescription},null,8,er),h[7]||(h[7]=D(" "+R(" "),-1)),!t.edit&&!t.log404&&!z.value?(c(),w("span",tr,[D(R(C.youCanAlso)+" ",1),n("a",{href:"#",class:"add-source-url",onClick:ge(je,["prevent"])},[p(T(we)),D(" "+R(C.addUrl),1)])])):_("",!0)])])]),re()?(c(),w("div",rr,[p(T(Yt))])):_("",!0),re()?(c(),w("div",sr,[n("div",lr,[n("div",ar,[n("div",ur,R(C.targetUrl),1)]),n("div",or,[p(T(Ut),{url:T(U)(V.value),errors:B.value,warnings:x.value,"onUpdate:modelValue":Se},null,8,["url","errors","warnings"]),n("div",ir,R(C.targetUrlDescription),1),p(T(ie),{active:!!B.value.length},{default:S(()=>[n("div",null,[(c(!0),w(j,null,G(B.value,(v,q)=>(c(),b(T(le),{key:q,class:"target-url-error",type:"red",size:"small",innerHTML:v},null,8,["innerHTML"]))),128))])]),_:1},8,["active"]),p(T(ie),{active:!!x.value.length},{default:S(()=>[n("div",null,[(c(!0),w(j,null,G(x.value,(v,q)=>(c(),b(T(le),{key:q,class:"target-url-warning",type:"yellow",size:"small",innerHTML:v},null,8,["innerHTML"]))),128))])]),_:1},8,["active"])])])])):_("",!0),_("",!0)]),n("div",nr,[n("div",cr,[n("span",dr,R(C.comment),1),p(T(ce),{modelValue:Z.value,"onUpdate:modelValue":h[0]||(h[0]=v=>Z.value=v),maxlength:"80",placeholder:C.commentPlaceholder,size:"medium"},null,8,["modelValue","placeholder"])]),n("div",hr,[n("span",gr,R(C.redirectType),1),p(T(pe),{options:T(se),modelValue:M.value,"onUpdate:modelValue":h[1]||(h[1]=v=>M.value=v),size:"medium"},null,8,["options","modelValue"])]),n("div",mr,[n("div",pr,[n("span",null,R(C.queryParams),1),p(T(xe),{placement:"left",flip:""},{tooltip:S(()=>[D(R(C.queryParamsTooltip),1)]),default:S(()=>[p(T(Ee))]),_:1})]),p(T(pe),{options:He.value,modelValue:H.value,"onUpdate:modelValue":h[2]||(h[2]=v=>H.value=v),size:"medium"},null,8,["options","modelValue"])])]),n("div",vr,[n("a",{href:"#",class:$(["custom-rules-toggle__link",{active:N.value}]),onClick:h[3]||(h[3]=ge(v=>N.value=!N.value,["prevent"]))},[p(T(we)),D(" "+R(N.value?C.hideCustomRules:C.addCustomRules),1)],2)]),p(T(ie),{active:N.value},{default:S(()=>[p(T(Ht),{"edit-custom-rules":ee.value,onRedirectsCustomRuleError:h[4]||(h[4]=v=>Y.value=v)},null,8,["edit-custom-rules"])]),_:1},8,["active"]),n("div",fr,[p(T(me),{size:"medium",type:"blue",onClick:h[5]||(h[5]=v=>t.edit?Qe():Ye()),loading:P.value,disabled:Oe.value},{default:S(()=>[D(R(t.edit?C.saveChanges:Be.value),1)]),_:1},8,["loading","disabled"]),t.edit?(c(),b(T(me),{key:0,size:"medium",type:"gray",onClick:h[6]||(h[6]=v=>a("cancel",!0)),class:"cancel-edit-row"},{default:S(()=>[D(R(C.cancel),1)]),_:1})):_("",!0)])],2))}};export{Ut as C,Yt as S,Mr as _,Lt as a,Pe as u};