@kong-ui-public/entities-routes 3.24.3 → 3.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as T, useModel as k, ref as P, computed as i, resolveComponent as b, openBlock as r, createElementBlock as p, Fragment as B, createBlock as c, unref as f, createCommentVNode as u, createVNode as w, withCtx as _, normalizeClass as N, renderSlot as R, mergeModels as v } from "vue";
2
2
  import { PROTOCOL_TO_SCHEMA as S, HTTP_BASED_PROTOCOLS as y, ExpressionsEditor as H, RouterPlaygroundModal as A } from "@kong-ui-public/expressions";
3
- import { c as F } from "./index-BFuvVfEW.js";
3
+ import { c as F } from "./index-Ddke8FnD.js";
4
4
  import "@kong-ui-public/expressions/dist/style.css";
5
5
  const q = /* @__PURE__ */ T({
6
6
  __name: "RouteFormExpressionsEditor",
@@ -1,4 +1,4 @@
1
- import { D as R, E as o, H as E, I as T, a as _, b as e, M as t, P as I, d as L, _ as O, R as i, e as S, f as r, g as A, h as U, i as D, s as u, j as F } from "./index-BFuvVfEW.js";
1
+ import { D as R, E as o, H as E, I as T, a as _, b as e, M as t, P as I, d as L, _ as O, R as i, e as S, f as r, g as A, h as U, i as D, s as u, j as F } from "./index-Ddke8FnD.js";
2
2
  export {
3
3
  R as DEFAULT_PROTOCOL,
4
4
  o as ExpressionsEditorState,
@@ -1 +1 @@
1
- (function(N,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@kong-ui-public/entities-shared"),require("lodash.isequal"),require("vue-router"),require("@kong/icons"),require("@kong/kongponents"),require("@kong-ui-public/expressions"),require("@kong-ui-public/i18n"),require("@kong-ui-public/expressions/dist/style.css")):typeof define=="function"&&define.amd?define(["exports","vue","@kong-ui-public/entities-shared","lodash.isequal","vue-router","@kong/icons","@kong/kongponents","@kong-ui-public/expressions","@kong-ui-public/i18n","@kong-ui-public/expressions/dist/style.css"],e):(N=typeof globalThis<"u"?globalThis:N||self,e(N["kong-ui-public-entities-routes"]={},N.Vue,N["kong-ui-public-entities-shared"],N.isEqual,N.VueRouter,N.KongIcons,N.Kongponents,N["kong-ui-public-expressions"],N["kong-ui-public-i18n"]))})(this,(function(N,e,b,_e,Ee,K,we,se,Ce){"use strict";const U="/v2/control-planes/{controlPlaneId}/core-entities/{workspace}",L="/{workspace}",ee={list:{konnect:{all:`${U}/routes`,forGatewayService:`${U}/services/{serviceId}/routes`},kongManager:{all:`${L}/routes`,forGatewayService:`${L}/services/{serviceId}/routes`}},form:{konnect:{services:`${U}/services`,create:{all:`${U}/routes`,forGatewayService:`${U}/services/{serviceId}/routes`},fetch:{all:`${U}/routes/{id}`,forGatewayService:`${U}/services/{serviceId}/routes/{id}`},edit:{all:`${U}/routes/{id}`,forGatewayService:`${U}/services/{serviceId}/routes/{id}`}},kongManager:{services:`${L}/services`,create:{all:`${L}/routes`,forGatewayService:`${L}/services/{serviceId}/routes`},fetch:{all:`${L}/routes/{id}`,forGatewayService:`${L}/services/{serviceId}/routes/{id}`},edit:{all:`${L}/routes/{id}`,forGatewayService:`${L}/services/{serviceId}/routes/{id}`}}},item:{konnect:{getService:`${U}/services/{serviceId}`,all:`${U}/routes/{id}`,forGatewayService:`${U}/services/{serviceId}/routes/{id}`},kongManager:{getService:`${L}/services/{serviceId}`,all:`${L}/routes/{id}`,forGatewayService:`${L}/services/{serviceId}/routes/{id}`}}},Re={actions:{create:"New route",debugger:"Start debugging",copy_id:"Copy ID",copy_json:"Copy JSON",copy_curl:"Copy as cURL",edit:"Edit",delete:"Delete",clear:"Clear",view:"View details",loading:"Loading..."},search:{placeholder:{konnect:"Filter by name",exact:"Filter by exact name or ID",kongManager:"Filter by exact name or ID"},no_results:"No results found"},routes:{title:"Routes",list:{toolbar_actions:{new_route:"New route"},table_headers:{name:"Name",protocols:"Protocols",hosts:"Hosts",methods:"Methods",paths:"Paths",expression:"Expression",id:"ID",tags:"Tags",created_at:"Created at",updated_at:"Last modified"},empty_state:{title:"Configure a new route",description:"Routes proxy requests to an associated service."},empty_state_v2:{title:"Configure your first route",group:"Routes created in gateways within this group will automatically appear here.",description:"Routes direct incoming API requests to the appropriate gateway service based on paths, methods, and headers, ensuring efficient traffic flow.",learn_more:"Learn more"}}},delete:{title:"Delete a route",description:"Deleting this route will also remove any associated plugins. This action cannot be reversed."},errors:{general:"Routes could not be retrieved",delete:"The route could not be deleted at this time.",copy:"Failed to copy to clipboard",services:{fetch:"Could not fetch available services"}},copy:{success:"Copied {val} to clipboard",success_brief:"Successfully copied to clipboard"},form:{config_flavor:{label:"Define by"},config_types:{basic:{description:"Quickly set up a route with HTTPS protocol with the essentials: path, method, and host.",label:"Basic"},advanced:{description:"Define complex route logic with other protocols or additional paths or attributes such as headers.",label:"Advanced"}},protocols:{grpc:"GRPC",grpcs:"GRPCS","grpc,grpcs":"GRPC, GRPCS",http:"HTTP",https:"HTTPS","http,https":"HTTP, HTTPS",tls:"TLS",tcp:"TCP",udp:"UDP","tls,udp":"TLS, UDP","tcp,udp":"TCP, UDP","tcp,tls":"TCP, TLS","tcp,tls,udp":"TCP, TLS, UDP",ws:"WS",wss:"WSS","ws,wss":"WS, WSS",tls_passthrough:"TLS_PASSTHROUGH"},sections:{general:{title:"General information",description:"General information will help you identify and manage this route"},config:{title:"Route configuration",description:"Route configuration determines how this route will handle incoming requests"},routingRules:{title:"Routing rules"},routingExpression:{title:"Routing expression"}},fields:{service_id:{label:"Gateway service",placeholder:"Select a gateway service"},name:{label:"Name",placeholder:"Enter a unique name",tooltip:"The name of the route. Route names must be unique, and they are case sensitive. For example, there can be two different routes named 'test' and 'Test'."},service:{label:"Gateway service",tooltip:"The service this route is associated to. This is where the route proxies traffic to."},tags:{label:"Tags",tooltip:"An optional set of strings associated with the route for grouping and filtering.",placeholder:"Enter a list of tags separated by commas",help:"e.g. tag1, tag2, tag3"},protocols:{label:"Protocols",tooltip:"The protocols this route supports."},path_handling:{label:"Path handling",tooltip:"Controls how Kong modifies the request path before proxying to the upstream service. Use v1 for standardized, predictable path behavior. Use v0 for legacy compatibility."},https_redirect_status_code:{label:"HTTPS redirect status code",tooltip:"Specifies the HTTP status code for redirecting requests from HTTP to HTTPS. Use <code>301</code> or <code>308</code> for permanent redirects, <code>302</code> or <code>307</code> for temporary redirects."},regex_priority:{label:"Regex priority",tooltip:"Regex priority is determined by length first (longer patterns win), and when lengths are the same, more specific regexes are preferred. When two routes match the path and have the same <code>regex_priority</code>, the older one (lowest <code>created_at</code>) is used."},strip_path:{label:"Strip path",tooltip:"When enabled, Kong removes the portion of the request path that matches the route's path before forwarding the request to the upstream. If the request exactly matches the route, the result is <code>/</code>. Disable if that's not desired."},preserve_host:{label:"Preserve host",tooltip:"Keeps the original <code>Host</code> header when proxying requests. Enable this if the upstream service requires the client's <code>Host</code> value. Disable if the service expects its own hostname."},paths:{add:"Add a path",label:"Paths",label_singular:"Path",placeholder:"e.g. /api/v1",singular:"path",tooltip:"Match specific URL paths, such as <code>/api/v1</code>. Prefix with <code>~</code> to enable regex-based matching."},snis:{add:"Add an SNI",label:"SNIs",placeholder:"e.g. api.example.com",singular:"SNI",tooltip:"SNIs (Server Name Indications) that match the route when using stream routing."},hosts:{add:"Add a host",label:"Hosts",label_singular:"Host",placeholder:"e.g. example.com",singular:"host",tooltip:"Match specific domain names, such as <code>api.example.com</code>."},methods:{label:"Methods",placeholder:"Select methods",search_placeholder:"Search for a method or enter a custom method",singular:"method",tooltip:"Match specific HTTP methods, such as GET or POST. If no method is selected, all methods are included.",custom:{label:"Custom",placeholder:"Enter a custom method",tooltip:"Custom methods can be used with default selections. Uppercase characters are required."}},headers:{add:"Add a header",label:"Headers",singular:"header",tooltip:"Match specific headers, such as <code>x-api-version</code> or <code>x-region</code>. Doesn't accept the <code>Host</code> header. Provide only one entry and prefix with <code>~*</code> to enable regex-based matching.",name:{placeholder:"e.g. x-api-version"},values:{placeholder:"e.g. v1,v2"}},sources:{add:"Add a source",label:"Sources",singular:"source",tooltip:"A list of IP sources of incoming connections that match this route when using stream routing.",ip:{placeholder:"Enter a source IP"},port:{placeholder:"Enter a source port"}},destinations:{add:"Add a destination",label:"Destinations",singular:"destination",tooltip:"A list of IP destinations of incoming connections that match this route when using stream routing.",ip:{placeholder:"Enter a destination IP"},port:{placeholder:"Enter a destination port"}},response_buffering:{label:"Response buffering",tooltip:"Reads and buffers the full response from the upstream service before sending it to the client. Enable buffering if the client expects the complete response at once. Disable for faster streaming of large or chunked responses."},request_buffering:{label:"Request buffering",tooltip:"Reads and buffers the full request body before proxying. Enable buffering if the upstream service requires the complete request before processing. Disable for faster streaming of large or chunked requests."},expression:{label:"Expression",tooltip:"The route expression."},priority:{label:"Priority",tooltip:"A number used to choose which route resolves a given request when several routes match it using expression simultaneously."}},flavors:{traditional:"Traditional form",expressions:"Expressions editor"},show_more:"Show more",hint:{rules_message:"Choose at least one {routingRules} option.",single_rule:"{routingRules}",multiple_rules:"{routingRules} or {lastRoutingRule}",advanced:"To add more than one, use the advanced options."},warning:{cannotChangeFlavor:{create:"The format of the route cannot be changed once created.",edit:"This route was configured in the {format} format, and cannot be changed after creation. You can switch to the {format} tab to edit, or create a new route in a different format instead."}},expressions_editor:{loading:"Loading the expressions editor…",error:"Error occurred while loading the expressions editor. Please view the console for more details."},expression_playground:{test_link:"Test with router playground",supported_protocols_hint:"Currently only supports the following protocols: {protocols}"}}};function Be(){const t=Ce.createI18n("en-us",Re);return{i18n:t,i18nT:Ce.i18nTComponent(t)}}const D={useI18n:Be},Ae={class:"kong-ui-entities-route-entity-config-card"},Oe={key:2},De=e.defineComponent({__name:"RouteConfigCard",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t?.app)||t.app==="konnect"&&!t.controlPlaneId||t.app==="kongManager"&&typeof t.workspace!="string"||!t.entityId)},configCardDoc:{type:String,default:"",required:!1},hideTitle:{type:Boolean,default:!1},serviceId:{type:String,required:!1,default:null}},emits:["loading","fetch:error","fetch:success","navigation-click"],setup(t,{emit:E}){const d=E,r=t,{axiosInstance:n}=b.useAxios(r.config?.axiosRequestConfig),{i18n:{t:m}}=D.useI18n(),s=e.ref(""),T=e.ref(""),f=e.ref(!1),h=e.computed(()=>ee.item[r.config?.app]?.[r.serviceId?"forGatewayService":"all"].replace(/{serviceId}/gi,r.serviceId??"")),c=e.computed(()=>ee.item[r.config.app]?.getService),g=async V=>{if(s.value=r.serviceId||V?.service?.id,d("fetch:success",V),!s.value)return;let l=`${r.config.apiBaseUrl}${c.value}`;r.config.app==="konnect"&&(l=l.replace(/{controlPlaneId}/gi,r.config?.controlPlaneId||"")),l=l.replace(/\/{workspace}/gi,r.config?.workspace?`/${r.config.workspace}`:"").replace(/{serviceId}/gi,s.value||"");try{f.value=!0;const{data:p}=await n.get(l);T.value=p?.name||p?.id}catch(p){d("fetch:error",p)}finally{f.value=!1}},k=e.ref({id:{},name:{tooltip:m("form.fields.name.tooltip")},created_at:{},updated_at:{},service:{label:m("form.fields.service.label"),section:b.ConfigurationSchemaSection.Basic,tooltip:m("form.fields.service.tooltip"),order:5},tags:{tooltip:m("form.fields.tags.tooltip"),order:6},protocols:{section:b.ConfigurationSchemaSection.Basic,tooltip:m("form.fields.protocols.tooltip"),type:b.ConfigurationSchemaType.BadgeTag,order:7},paths:{section:b.ConfigurationSchemaSection.Basic,tooltip:m("form.fields.paths.tooltip"),type:b.ConfigurationSchemaType.CopyBadge,order:8},hosts:{section:b.ConfigurationSchemaSection.Basic,tooltip:m("form.fields.hosts.tooltip"),type:b.ConfigurationSchemaType.CopyBadge,order:9},snis:{label:m("form.fields.snis.label"),tooltip:m("form.fields.snis.tooltip"),order:10},headers:{section:b.ConfigurationSchemaSection.Basic,tooltip:m("form.fields.headers.tooltip"),order:11},methods:{section:b.ConfigurationSchemaSection.Basic,tooltip:m("form.fields.methods.tooltip"),type:b.ConfigurationSchemaType.BadgeMethod,order:12},sources:{section:b.ConfigurationSchemaSection.Basic,tooltip:m("form.fields.sources.tooltip"),type:b.ConfigurationSchemaType.JsonArray,order:13},destinations:{section:b.ConfigurationSchemaSection.Basic,tooltip:m("form.fields.destinations.tooltip"),type:b.ConfigurationSchemaType.JsonArray,order:14},https_redirect_status_code:{tooltip:m("form.fields.https_redirect_status_code.tooltip"),order:1},regex_priority:{tooltip:m("form.fields.regex_priority.tooltip"),order:2},strip_path:{tooltip:m("form.fields.strip_path.tooltip"),order:3},preserve_host:{tooltip:m("form.fields.preserve_host.tooltip"),order:4},request_buffering:{tooltip:m("form.fields.request_buffering.tooltip"),order:5},response_buffering:{tooltip:m("form.fields.response_buffering.tooltip"),order:6},path_handling:{tooltip:m("form.fields.path_handling.tooltip"),order:7}});return(V,l)=>{const p=e.resolveComponent("KSkeleton");return e.openBlock(),e.createElementBlock("div",Ae,[e.createVNode(e.unref(b.EntityBaseConfigCard),{config:t.config,"config-card-doc":t.configCardDoc,"config-schema":k.value,"entity-type":e.unref(b.SupportedEntityType).Route,"fetch-url":h.value,"hide-title":t.hideTitle,"onFetch:error":l[0]||(l[0]=y=>V.$emit("fetch:error",y)),"onFetch:success":g,onLoading:l[1]||(l[1]=y=>V.$emit("loading",y))},{service:e.withCtx(({row:y})=>[f.value?(e.openBlock(),e.createBlock(p,{key:0,"data-testid":"service-name-loader",type:"spinner"})):y.value&&y.value.id===s.value&&T.value?(e.openBlock(),e.createBlock(e.unref(b.InternalLinkItem),{key:1,item:{key:y.value.id,value:T.value,type:e.unref(b.ConfigurationSchemaType).LinkInternal},onNavigationClick:()=>V.$emit("navigation-click",y.value.id,"services")},null,8,["item","onNavigationClick"])):(e.openBlock(),e.createElementBlock("div",Oe,e.toDisplayString("-")))]),_:1},8,["config","config-card-doc","config-schema","entity-type","fetch-url","hide-title"])])}}});var R=(t=>(t.TRADITIONAL="traditional",t.EXPRESSIONS="expressions",t))(R||{}),o=(t=>(t.PATHS="paths",t.SNIS="snis",t.HOSTS="hosts",t.METHODS="methods",t.HEADERS="headers",t.SOURCES="sources",t.DESTINATIONS="destinations",t))(o||{}),Q=(t=>(t.LOADING="loading",t.ERROR="error",t.READY="ready",t))(Q||{}),Y=(t=>(t.GET="GET",t.PUT="PUT",t.POST="POST",t.PATCH="PATCH",t.DELETE="DELETE",t.OPTIONS="OPTIONS",t.HEAD="HEAD",t.CONNECT="CONNECT",t.TRACE="TRACE",t))(Y||{});const me=t=>t.routeFlavors.traditional===!0,he=t=>t.routeFlavors.expressions===!0,O={[o.PATHS]:[""],[o.SNIS]:[""],[o.HOSTS]:[""],[o.METHODS]:[],[o.HEADERS]:[{header:"",values:""}],[o.SOURCES]:[{ip:"",port:null}],[o.DESTINATIONS]:[{ip:"",port:null}]},pe={http:[o.PATHS,o.METHODS,o.HOSTS,o.HEADERS],https:[o.PATHS,o.METHODS,o.HOSTS,o.HEADERS,o.SNIS],"http,https":[o.PATHS,o.METHODS,o.HOSTS,o.HEADERS,o.SNIS],"https,http":[o.PATHS,o.METHODS,o.HOSTS,o.HEADERS,o.SNIS],grpc:[o.PATHS,o.HOSTS,o.HEADERS],grpcs:[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS],"grpc,grpcs":[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS],"grpcs,grpc":[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS],udp:[o.SOURCES,o.DESTINATIONS],tls:[o.SOURCES,o.DESTINATIONS,o.SNIS],tcp:[o.SOURCES,o.DESTINATIONS],"tls,udp":[o.SOURCES,o.DESTINATIONS,o.SNIS],"udp,tls":[o.SOURCES,o.DESTINATIONS,o.SNIS],"tcp,udp":[o.SOURCES,o.DESTINATIONS],"udp,tcp":[o.SOURCES,o.DESTINATIONS],"tcp,tls":[o.SOURCES,o.DESTINATIONS,o.SNIS],"tls,tcp":[o.SOURCES,o.DESTINATIONS,o.SNIS],"tcp,tls,udp":[o.SOURCES,o.DESTINATIONS,o.SNIS],"tls,udp,tcp":[o.SOURCES,o.DESTINATIONS,o.SNIS],"udp,tcp,tls":[o.SOURCES,o.DESTINATIONS,o.SNIS],tls_passthrough:[o.SNIS],ws:[o.PATHS,o.HOSTS,o.HEADERS],wss:[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS],"ws,wss":[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS],"wss,ws":[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS]},ge=[{label:"426",value:426},{label:"301",value:301},{label:"302",value:302},{label:"307",value:307},{label:"308",value:308}],ke=[{label:"v0",value:"v0"},{label:"v1",value:"v1"}],ne={https_redirect_status_code:426,strip_path:!0,preserve_host:!1,request_buffering:!0,response_buffering:!0},Ve={...ne,paths:[""],regex_priority:0,path_handling:"v0",expression:"",priority:0},ae="https",Me=e.defineComponent({__name:"RuleControlsAdd",props:{routingRulesEntity:{}},emits:["add"],setup(t,{emit:E}){const d=t,r=E,n=e.inject("configType","basic"),{i18n:{t:m}}=D.useI18n(),s=e.computed(()=>m(`form.fields.${d.routingRulesEntity}.add`));return(T,f)=>{const h=e.resolveComponent("KButton");return e.unref(n)!=="basic"?(e.openBlock(),e.createBlock(h,{key:0,appearance:"tertiary",class:"routing-rule-add-item-button","data-testid":`add-${t.routingRulesEntity}`,onClick:f[0]||(f[0]=c=>r("add"))},{default:e.withCtx(()=>[e.createVNode(e.unref(K.AddIcon)),e.createElementVNode("span",null,e.toDisplayString(s.value),1)]),_:1},8,["data-testid"])):e.createCommentVNode("",!0)}}}),P=(t,E)=>{const d=t.__vccOpts||t;for(const[r,n]of E)d[r]=n;return d},te=P(Me,[["__scopeId","data-v-f1f4cfc9"]]),He="#afb7c5",$e="#0044f4",Pe="16px",oe=e.defineComponent({__name:"RuleControlsRemove",props:{disabled:{type:Boolean},routingRulesEntity:{}},emits:["remove"],setup(t,{emit:E}){const d=E,r=e.inject("configType","basic");return(n,m)=>{const s=e.resolveComponent("KButton");return e.unref(r)!=="basic"?(e.openBlock(),e.createBlock(s,{key:0,appearance:"tertiary","data-testid":`remove-${t.routingRulesEntity}`,disabled:t.disabled,icon:"",onClick:m[0]||(m[0]=T=>d("remove"))},{default:e.withCtx(()=>[e.createVNode(e.unref(K.CloseIcon),{color:t.disabled?`var(--kui-color-text-disabled, ${e.unref(He)})`:`var(--kui-color-text-primary, ${e.unref($e)})`},null,8,["color"])]),_:1},8,["data-testid","disabled"])):e.createCommentVNode("",!0)}}}),Ue={class:"routing-rule-container"},Le=["innerHTML"],Fe=P(e.defineComponent({__name:"DestinationRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=D.useI18n(),r=e.useModel(t,"modelValue"),n=E;return(m,s)=>{const T=e.resolveComponent("KLabel"),f=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",Ue,[e.createVNode(T,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.destinations.tooltip")},null,8,Le)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(d)("form.fields.destinations.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"routing-rule-input"},[e.createVNode(f,{modelValue:r.value[c].ip,"onUpdate:modelValue":g=>r.value[c].ip=g,modelModifiers:{trim:!0},"data-testid":`route-form-destinations-ip-input-${c+1}`,placeholder:e.unref(d)("form.fields.destinations.ip.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(f,{modelValue:r.value[c].port,"onUpdate:modelValue":g=>r.value[c].port=g,modelModifiers:{number:!0},"data-testid":`route-form-destinations-port-input-${c+1}`,max:"65535",min:"0",placeholder:e.unref(d)("form.fields.destinations.port.placeholder"),type:"number"},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(oe,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).DESTINATIONS,onRemove:g=>n("remove",c)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(te,{"routing-rules-entity":e.unref(o).DESTINATIONS,onAdd:s[0]||(s[0]=h=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-3eb40a37"]]),Ke={class:"routing-rule-container"},qe=["innerHTML"],Ge=P(e.defineComponent({__name:"HeaderRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=D.useI18n(),r=e.useModel(t,"modelValue"),n=E;return(m,s)=>{const T=e.resolveComponent("KLabel"),f=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",Ke,[e.createVNode(T,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.headers.tooltip")},null,8,qe)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(d)("form.fields.headers.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"routing-rule-input"},[e.createVNode(f,{modelValue:r.value[c].header,"onUpdate:modelValue":g=>r.value[c].header=g,modelModifiers:{trim:!0},"data-testid":`route-form-headers-name-input-${c+1}`,placeholder:e.unref(d)("form.fields.headers.name.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(f,{modelValue:r.value[c].values,"onUpdate:modelValue":g=>r.value[c].values=g,modelModifiers:{trim:!0},"data-testid":`route-form-headers-values-input-${c+1}`,placeholder:e.unref(d)("form.fields.headers.values.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(oe,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).HEADERS,onRemove:g=>n("remove",c)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(te,{"routing-rules-entity":e.unref(o).HEADERS,onAdd:s[0]||(s[0]=h=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-d3bede0b"]]),je={class:"routing-rule-container"},We=["innerHTML"],Xe=P(e.defineComponent({__name:"HostRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=D.useI18n(),r=e.useModel(t,"modelValue"),n=E,m=e.inject("configType","basic");return(s,T)=>{const f=e.resolveComponent("KLabel"),h=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",je,[e.createVNode(f,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.hosts.tooltip")},null,8,We)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(m)==="basic"?e.unref(d)("form.fields.hosts.label_singular"):e.unref(d)("form.fields.hosts.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m)==="basic"?r.value.slice(0,1):r.value,(c,g)=>(e.openBlock(),e.createElementBlock("div",{key:g,class:"routing-rule-input"},[e.createVNode(h,{modelValue:r.value[g],"onUpdate:modelValue":k=>r.value[g]=k,modelModifiers:{trim:!0},"data-testid":`route-form-hosts-input-${g+1}`,placeholder:e.unref(d)("form.fields.hosts.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(oe,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).HOSTS,onRemove:k=>n("remove",g)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(te,{"routing-rules-entity":e.unref(o).HOSTS,onAdd:T[0]||(T[0]=c=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-dccd9082"]]),ze={class:"routing-rule-container","data-testid":"route-form-methods"},Je=["innerHTML"],Qe={class:"routing-rule-input"},Ye=P(e.defineComponent({__name:"MethodRules",props:{methods:{required:!0},methodsModifiers:{},customMethods:{required:!0},customMethodsModifiers:{}},emits:["update:methods","update:customMethods"],setup(t){const{i18n:{t:E}}=D.useI18n(),d=e.useModel(t,"methods"),r=e.useModel(t,"customMethods"),n=e.computed(()=>d.value.filter(h=>Object.keys(Y).includes(h)).concat(r.value.map(h=>h.value))),m=e.computed(()=>Object.keys(Y).map(h=>({label:h,value:h})).concat(r.value.map(h=>({label:h.label,value:h.value,custom:!0})))),s=h=>!m.value.map(c=>c.value.toLowerCase()).includes(h.toLowerCase()),T=(h,c)=>{c?r.value.push(h):r.value=r.value.filter(g=>g.value!==h.value)},f=h=>{d.value=h};return(h,c)=>{const g=e.resolveComponent("KLabel"),k=e.resolveComponent("KMultiselect");return e.openBlock(),e.createElementBlock("div",ze,[e.createVNode(g,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(E)("form.fields.methods.tooltip")},null,8,Je)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(E)("form.fields.methods.label")),1)]),_:1}),e.createElementVNode("div",Qe,[e.createVNode(k,{"enable-item-creation":"","item-creation-validator":s,items:m.value,"model-value":n.value,placeholder:e.unref(E)("form.fields.methods.placeholder"),"search-placeholder":e.unref(E)("form.fields.methods.search_placeholder"),onItemAdded:c[0]||(c[0]=V=>T(V,!0)),onItemRemoved:c[1]||(c[1]=V=>T(V,!1)),"onUpdate:modelValue":f},null,8,["items","model-value","placeholder","search-placeholder"])])])}}}),[["__scopeId","data-v-6c94d6d2"]]),Ze={class:"routing-rule-container"},ve=["innerHTML"],et=P(e.defineComponent({__name:"PathRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=D.useI18n(),r=e.useModel(t,"modelValue"),n=E,m=e.inject("configType","basic");return(s,T)=>{const f=e.resolveComponent("KLabel"),h=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",Ze,[e.createVNode(f,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.paths.tooltip")},null,8,ve)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(m)==="basic"?e.unref(d)("form.fields.paths.label_singular"):e.unref(d)("form.fields.paths.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m)==="basic"?r.value.slice(0,1):r.value,(c,g)=>(e.openBlock(),e.createElementBlock("div",{key:g,class:"routing-rule-input"},[e.createVNode(h,{modelValue:r.value[g],"onUpdate:modelValue":k=>r.value[g]=k,modelModifiers:{trim:!0},"data-testid":`route-form-paths-input-${g+1}`,placeholder:e.unref(d)("form.fields.paths.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(oe,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).PATHS,onRemove:k=>n("remove",g)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(te,{"routing-rules-entity":e.unref(o).PATHS,onAdd:T[0]||(T[0]=c=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-eb440a9e"]]),tt={class:"routing-rule-container"},ot=["innerHTML"],rt=P(e.defineComponent({__name:"SniRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=D.useI18n(),r=e.useModel(t,"modelValue"),n=E;return(m,s)=>{const T=e.resolveComponent("KLabel"),f=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",tt,[e.createVNode(T,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.snis.tooltip")},null,8,ot)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(d)("form.fields.snis.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"routing-rule-input"},[e.createVNode(f,{modelValue:r.value[c],"onUpdate:modelValue":g=>r.value[c]=g,modelModifiers:{trim:!0},"data-testid":`route-form-snis-input-${c+1}`,placeholder:e.unref(d)("form.fields.snis.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(oe,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).SNIS,onRemove:g=>n("remove",c)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(te,{"routing-rules-entity":e.unref(o).SNIS,onAdd:s[0]||(s[0]=h=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-e6782e08"]]),lt={class:"routing-rule-container"},st=["innerHTML"],nt=P(e.defineComponent({__name:"SourceRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=D.useI18n(),r=e.useModel(t,"modelValue"),n=E;return(m,s)=>{const T=e.resolveComponent("KLabel"),f=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",lt,[e.createVNode(T,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.sources.tooltip")},null,8,st)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(d)("form.fields.sources.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(h,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"routing-rule-input"},[e.createVNode(f,{modelValue:r.value[c].ip,"onUpdate:modelValue":g=>r.value[c].ip=g,modelModifiers:{trim:!0},"data-testid":`route-form-sources-ip-input-${c+1}`,placeholder:e.unref(d)("form.fields.sources.ip.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(f,{modelValue:r.value[c].port,"onUpdate:modelValue":g=>r.value[c].port=g,modelModifiers:{number:!0},"data-testid":`route-form-sources-port-input-${c+1}`,max:"65535",min:"0",placeholder:e.unref(d)("form.fields.sources.port.placeholder"),type:"number"},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(oe,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).SOURCES,onRemove:g=>n("remove",c)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(te,{"routing-rules-entity":e.unref(o).SOURCES,onAdd:s[0]||(s[0]=h=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-448078c1"]]),at={class:"traditional-rules-hint"},it={key:0},dt=["innerHTML"],ct={key:0,class:"route-form-fields-container route-form-advanced-fields-container"},pt=["innerHTML"],ut=["innerHTML"],ft=["innerHTML"],mt=["innerHTML"],ht=["innerHTML"],gt=["innerHTML"],Ne=P(e.defineComponent({__name:"TraditionalRules",props:e.mergeModels({protocols:{},hideAdvanced:{type:Boolean},readonly:{type:Boolean},configType:{}},{fields:{required:!0},fieldsModifiers:{},customMethods:{required:!0},customMethodsModifiers:{}}),emits:["update:fields","update:customMethods"],setup(t){const{i18nT:E,i18n:d,i18n:{t:r}}=D.useI18n(),n=d.source.form.protocols,m=t,s=e.useModel(t,"fields"),T=e.useModel(t,"customMethods"),f=l=>{switch(l){case o.PATHS:Array.isArray(s.value.paths)?s.value.paths.push([...O[o.PATHS]][0]):s.value.paths=[...O[o.PATHS]];break;case o.SNIS:Array.isArray(s.value.snis)?s.value.snis.push([...O[o.SNIS]][0]):s.value.snis=[...O[o.SNIS]];break;case o.HOSTS:Array.isArray(s.value.hosts)?s.value.hosts.push([...O[o.HOSTS]][0]):s.value.hosts=[...O[o.HOSTS]];break;case o.METHODS:s.value.methods||(s.value.methods={...O[o.METHODS]});break;case o.HEADERS:Array.isArray(s.value.headers)?s.value.headers.push({...O[o.HEADERS][0]}):s.value.headers=[{...O[o.HEADERS][0]}];break;case o.SOURCES:Array.isArray(s.value.sources)?s.value.sources.push({...O[o.SOURCES][0]}):s.value.sources=[{...O[o.SOURCES][0]}];break;case o.DESTINATIONS:Array.isArray(s.value.destinations)?s.value.destinations.push({...O[o.DESTINATIONS][0]}):s.value.destinations=[{...O[o.DESTINATIONS][0]}];break}},h=async(l,p)=>{if(typeof p<"u"){const y=s.value[l];if(Array.isArray(y)&&(y.splice(p,1),y.length>0))return}await e.nextTick(()=>{delete s.value[l]})},c=l=>l.some(p=>m.protocols.includes(p)),g=e.computed(()=>new Set(pe[m.protocols])),k=e.computed(()=>{if(c(["tls_passthrough"]))return[V(o.SNIS)];const l=(m.configType==="basic"?[o.PATHS,o.METHODS,o.HOSTS]:pe[m.protocols]).map(p=>V(p));return[[...l].splice(0,l.length-1).join(", "),l[l.length-1]]}),V=l=>d.source.form.fields[l]?.singular||"";return(l,p)=>{const y=e.resolveComponent("KCheckbox"),M=e.resolveComponent("KSelect"),W=e.resolveComponent("KInput"),Z=e.resolveComponent("KCard");return e.openBlock(),e.createBlock(Z,null,{default:e.withCtx(()=>[e.createElementVNode("span",at,[e.createVNode(e.unref(E),{keypath:"form.hint.rules_message"},{protocol:e.withCtx(()=>[e.createElementVNode("b",null,e.toDisplayString(e.unref(n)[t.protocols]),1)]),routingRules:e.withCtx(()=>[e.createVNode(e.unref(E),{keypath:k.value[1]?"form.hint.multiple_rules":"form.hint.single_rule"},{routingRules:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(k.value[0]),1)]),lastRoutingRule:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(k.value[1]),1)]),_:1},8,["keypath"])]),_:1}),t.configType==="basic"?(e.openBlock(),e.createElementBlock("span",it,e.toDisplayString(e.unref(r)("form.hint.advanced")),1)):e.createCommentVNode("",!0)]),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[s.value.paths&&g.value.has(e.unref(o).PATHS)?(e.openBlock(),e.createBlock(et,{key:"paths-container",modelValue:s.value.paths,"onUpdate:modelValue":p[0]||(p[0]=a=>s.value.paths=a),onAdd:p[1]||(p[1]=a=>f(e.unref(o).PATHS)),onRemove:p[2]||(p[2]=a=>h(e.unref(o).PATHS,a))},null,8,["modelValue"])):e.createCommentVNode("",!0),c(["http","https","ws","wss"])?(e.openBlock(),e.createBlock(y,{key:1,modelValue:s.value.strip_path,"onUpdate:modelValue":p[3]||(p[3]=a=>s.value.strip_path=a),class:"route-form-strip-path","data-testid":"route-form-strip-path",disabled:!s.value.paths?.some(Boolean),label:e.unref(r)("form.fields.strip_path.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.strip_path.tooltip")},null,8,dt)]),_:1},8,["modelValue","disabled","label"])):e.createCommentVNode("",!0),s.value.methods&&g.value.has(e.unref(o).METHODS)?(e.openBlock(),e.createBlock(Ye,{key:"methods-container","custom-methods":T.value,"onUpdate:customMethods":p[4]||(p[4]=a=>T.value=a),methods:s.value.methods,"onUpdate:methods":p[5]||(p[5]=a=>s.value.methods=a)},null,8,["custom-methods","methods"])):e.createCommentVNode("",!0),s.value.hosts&&g.value.has(e.unref(o).HOSTS)?(e.openBlock(),e.createBlock(Xe,{key:"hosts-container",modelValue:s.value.hosts,"onUpdate:modelValue":p[6]||(p[6]=a=>s.value.hosts=a),onAdd:p[7]||(p[7]=a=>f(e.unref(o).HOSTS)),onRemove:p[8]||(p[8]=a=>h(e.unref(o).HOSTS,a))},null,8,["modelValue"])):e.createCommentVNode("",!0),s.value.headers&&t.configType==="advanced"&&g.value.has(e.unref(o).HEADERS)?(e.openBlock(),e.createBlock(Ge,{key:"headers-container",modelValue:s.value.headers,"onUpdate:modelValue":p[9]||(p[9]=a=>s.value.headers=a),onAdd:p[10]||(p[10]=a=>f(e.unref(o).HEADERS)),onRemove:p[11]||(p[11]=a=>h(e.unref(o).HEADERS,a))},null,8,["modelValue"])):e.createCommentVNode("",!0),s.value.sources&&g.value.has(e.unref(o).SOURCES)?(e.openBlock(),e.createBlock(nt,{key:"sources-container",modelValue:s.value.sources,"onUpdate:modelValue":p[12]||(p[12]=a=>s.value.sources=a),onAdd:p[13]||(p[13]=a=>f(e.unref(o).SOURCES)),onRemove:p[14]||(p[14]=a=>h(e.unref(o).SOURCES,a))},null,8,["modelValue"])):e.createCommentVNode("",!0),s.value.destinations&&g.value.has(e.unref(o).DESTINATIONS)?(e.openBlock(),e.createBlock(Fe,{key:"destinations-container",modelValue:s.value.destinations,"onUpdate:modelValue":p[15]||(p[15]=a=>s.value.destinations=a),onAdd:p[16]||(p[16]=a=>f(e.unref(o).DESTINATIONS)),onRemove:p[17]||(p[17]=a=>h(e.unref(o).DESTINATIONS,a))},null,8,["modelValue"])):e.createCommentVNode("",!0),s.value.snis&&t.configType==="advanced"&&g.value.has(e.unref(o).SNIS)?(e.openBlock(),e.createBlock(rt,{key:"snis-container",modelValue:s.value.snis,"onUpdate:modelValue":p[18]||(p[18]=a=>s.value.snis=a),onAdd:p[19]||(p[19]=a=>f(e.unref(o).SNIS)),onRemove:p[20]||(p[20]=a=>h(e.unref(o).SNIS,a))},null,8,["modelValue"])):e.createCommentVNode("",!0)]),_:1}),t.hideAdvanced?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",ct,[s.value.paths?.some(Boolean)?(e.openBlock(),e.createBlock(M,{key:0,modelValue:s.value.path_handling,"onUpdate:modelValue":p[21]||(p[21]=a=>s.value.path_handling=a),"data-testid":"route-form-path-handling",items:e.unref(ke),label:e.unref(r)("form.fields.path_handling.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}},readonly:t.readonly,width:"100%"},{"label-tooltip":e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.path_handling.tooltip")},null,8,pt)]),_:1},8,["modelValue","items","label","readonly"])):e.createCommentVNode("",!0),e.createVNode(M,{modelValue:s.value.https_redirect_status_code,"onUpdate:modelValue":p[22]||(p[22]=a=>s.value.https_redirect_status_code=a),"data-testid":"route-form-http-redirect-status-code",items:e.unref(ge),label:e.unref(r)("form.fields.https_redirect_status_code.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}},readonly:t.readonly,width:"100%"},{"label-tooltip":e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.https_redirect_status_code.tooltip")},null,8,ut)]),_:1},8,["modelValue","items","label","readonly"]),e.createVNode(W,{modelValue:s.value.regex_priority,"onUpdate:modelValue":p[23]||(p[23]=a=>s.value.regex_priority=a),autocomplete:"off","data-testid":"route-form-regex-priority",label:e.unref(r)("form.fields.regex_priority.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}},readonly:t.readonly,type:"number"},{"label-tooltip":e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.regex_priority.tooltip")},null,8,ft)]),_:1},8,["modelValue","label","readonly"]),e.createVNode(y,{modelValue:s.value.preserve_host,"onUpdate:modelValue":p[24]||(p[24]=a=>s.value.preserve_host=a),"data-testid":"route-form-preserve-host",label:e.unref(r)("form.fields.preserve_host.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.preserve_host.tooltip")},null,8,mt)]),_:1},8,["modelValue","label"]),e.createVNode(y,{modelValue:s.value.request_buffering,"onUpdate:modelValue":p[25]||(p[25]=a=>s.value.request_buffering=a),"data-testid":"route-form-request-buffering",label:e.unref(r)("form.fields.request_buffering.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.request_buffering.tooltip")},null,8,ht)]),_:1},8,["modelValue","label"]),e.createVNode(y,{modelValue:s.value.response_buffering,"onUpdate:modelValue":p[26]||(p[26]=a=>s.value.response_buffering=a),"data-testid":"route-form-response-buffering",label:e.unref(r)("form.fields.response_buffering.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.response_buffering.tooltip")},null,8,gt)]),_:1},8,["modelValue","label"])]))]),_:1})}}}),[["__scopeId","data-v-0ade8d72"]]),yt=e.defineComponent({__name:"RouteFormExpressionsEditorLoader",props:e.mergeModels({protocol:{},showExpressionsModalEntry:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["notify"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=D.useI18n(),r={render:()=>e.h("div",d("form.expressions_editor.loading"))},n={render:()=>e.h("div",d("form.expressions_editor.error"))},m=e.defineAsyncComponent({loader:async()=>Promise.resolve().then(()=>Pt),loadingComponent:r,errorComponent:n}),s=t,T=E,f=e.ref(Q.LOADING),h=e.useModel(t,"modelValue"),c=g=>{h.value=g};return e.onMounted(async()=>{try{await(await import("@kong-ui-public/expressions")).asyncInit,f.value=Q.READY}catch(g){f.value=Q.ERROR,console.error(g)}}),(g,k)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[f.value===e.unref(Q).ERROR?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n),{key:0,"data-testid":"route-form-expressions-editor-loader-error"})):f.value===e.unref(Q).LOADING?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r),{key:1,"data-testid":"route-form-expressions-editor-loader-loading"})):(e.openBlock(),e.createBlock(e.unref(m),{key:2,modelValue:h.value,"onUpdate:modelValue":k[0]||(k[0]=V=>h.value=V),protocol:s.protocol,"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:k[1]||(k[1]=V=>T("notify",V))},{default:e.withCtx(()=>[e.createVNode(e.unref(K.RocketIcon),{size:`var(--kui-icon-size-30, ${e.unref(Pe)})`},null,8,["size"]),e.createElementVNode("span",null,e.toDisplayString(e.unref(d)("form.expression_playground.test_link")),1)]),_:1},8,["modelValue","protocol","show-expressions-modal-entry"])),e.renderSlot(g.$slots,"after-editor",{expression:{value:h.value,update:c},state:f.value})],64))}}),St={class:"route-form-routing-rules-title-container"},bt={class:"routing-rules-title"},Tt={class:"route-form-fields-container route-form-advanced-fields-container"},_t=P(e.defineComponent({__name:"ExpressionsRules",props:e.mergeModels({protocols:{},hideAdvanced:{type:Boolean},readonly:{type:Boolean},showExpressionsModalEntry:{type:Boolean}},{fields:{required:!0},fieldsModifiers:{}}),emits:e.mergeModels(["notify"],["update:fields"]),setup(t,{emit:E}){const{i18n:{t:d}}=D.useI18n(),r=t,n=e.useModel(t,"fields"),m=E,s=e.ref(!0),T=e.computed(()=>r.protocols.split(",")||[]),f=h=>h.some(c=>r.protocols.includes(c));return(h,c)=>{const g=e.resolveComponent("KCard"),k=e.resolveComponent("KSelect"),V=e.resolveComponent("KInput"),l=e.resolveComponent("KCheckbox"),p=e.resolveComponent("KCollapse");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(g,null,{title:e.withCtx(()=>[e.createElementVNode("div",St,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.value,y=>(e.openBlock(),e.createElementBlock("span",{key:y,class:"protocol-title"},e.toDisplayString(y.toUpperCase()),1))),128)),e.createElementVNode("span",bt,e.toDisplayString(e.unref(d)("form.sections.routingExpression.title")),1)])]),default:e.withCtx(()=>[e.createVNode(yt,{modelValue:n.value.expression,"onUpdate:modelValue":c[0]||(c[0]=y=>n.value.expression=y),protocol:T.value[0],"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:c[1]||(c[1]=y=>m("notify",y))},{"after-editor":e.withCtx(y=>[e.renderSlot(h.$slots,"after-expressions-editor",{expression:y.expression,state:y.state},void 0,!0)]),_:3},8,["modelValue","protocol","show-expressions-modal-entry"])]),_:3}),e.createVNode(p,{modelValue:s.value,"onUpdate:modelValue":c[8]||(c[8]=y=>s.value=y),class:"route-form-advanced-fields-collapse","trigger-alignment":"leading","trigger-label":e.unref(d)("form.show_more")},{default:e.withCtx(()=>[e.createVNode(g,null,{default:e.withCtx(()=>[e.createElementVNode("div",Tt,[e.createVNode(k,{modelValue:n.value.https_redirect_status_code,"onUpdate:modelValue":c[2]||(c[2]=y=>n.value.https_redirect_status_code=y),"data-testid":"route-form-http-redirect-status-code",items:e.unref(ge),label:e.unref(d)("form.fields.https_redirect_status_code.label"),readonly:t.readonly,width:"100%"},null,8,["modelValue","items","label","readonly"]),e.createVNode(V,{modelValue:n.value.priority,"onUpdate:modelValue":c[3]||(c[3]=y=>n.value.priority=y),autocomplete:"off","data-testid":"route-form-priority",label:e.unref(d)("form.fields.priority.label"),"label-attributes":{info:e.unref(d)("form.fields.priority.tooltip"),tooltipAttributes:{maxWidth:"400"}},readonly:t.readonly,type:"number"},null,8,["modelValue","label","label-attributes","readonly"]),f(["http","https","ws","wss","tls","tcp","udp","tls_passthrough"])?(e.openBlock(),e.createBlock(l,{key:0,modelValue:n.value.strip_path,"onUpdate:modelValue":c[4]||(c[4]=y=>n.value.strip_path=y),"data-testid":"route-form-strip-path",label:e.unref(d)("form.fields.strip_path.label")},null,8,["modelValue","label"])):e.createCommentVNode("",!0),e.createVNode(l,{modelValue:n.value.preserve_host,"onUpdate:modelValue":c[5]||(c[5]=y=>n.value.preserve_host=y),"data-testid":"route-form-preserve-host",label:e.unref(d)("form.fields.preserve_host.label")},null,8,["modelValue","label"]),e.createVNode(l,{modelValue:n.value.request_buffering,"onUpdate:modelValue":c[6]||(c[6]=y=>n.value.request_buffering=y),"data-testid":"route-form-request-buffering",label:e.unref(d)("form.fields.request_buffering.label")},null,8,["modelValue","label"]),e.createVNode(l,{modelValue:n.value.response_buffering,"onUpdate:modelValue":c[7]||(c[7]=y=>n.value.response_buffering=y),"data-testid":"route-form-response-buffering",label:e.unref(d)("form.fields.response_buffering.label")},null,8,["modelValue","label"])])]),_:1})]),_:1},8,["modelValue","trigger-label"])],64)}}}),[["__scopeId","data-v-e7571a47"]]),Et={class:"config-type-container"},Ct={key:0,class:"config-flavor"},Ie=P(e.defineComponent({__name:"RouteFormRulesComposer",props:e.mergeModels({protocols:{},routeFlavors:{},readonly:{type:Boolean},recordFlavor:{},showExpressionsModalEntry:{type:Boolean},tooltips:{},isWsSupported:{type:Boolean},hideProtocols:{type:Boolean}},{configType:{required:!0},configTypeModifiers:{},configFlavor:{required:!0},configFlavorModifiers:{},fields:{default:()=>e.reactive({...ne,paths:[""],regex_priority:0,path_handling:"v0",expression:"",priority:0})},fieldsModifiers:{},customMethods:{default:()=>e.reactive([])},customMethodsModifiers:{}}),emits:e.mergeModels(["notify","update:payload","update:protocols"],["update:configType","update:configFlavor","update:fields","update:customMethods"]),setup(t,{emit:E}){const d=t,r=e.useModel(t,"configType"),n=e.useModel(t,"configFlavor"),m=e.useModel(t,"fields"),s=e.useModel(t,"customMethods"),T=E,{i18n:{t:f}}=D.useI18n(),h=[{value:R.TRADITIONAL,label:f("form.flavors.traditional")},{value:R.EXPRESSIONS,label:f("form.flavors.expressions")}],c=e.computed(()=>[{label:f("form.protocols.grpc"),value:"grpc"},{label:f("form.protocols.grpcs"),value:"grpcs"},{label:f("form.protocols.grpc,grpcs"),value:"grpc,grpcs"},{label:f("form.protocols.http"),value:"http"},{label:f("form.protocols.https"),value:"https"},{label:f("form.protocols.http,https"),value:"http,https"},{label:f("form.protocols.tcp"),value:"tcp"},{label:f("form.protocols.tls"),value:"tls"},{label:f("form.protocols.tls,udp"),value:"tls,udp"},{label:f("form.protocols.tcp,udp"),value:"tcp,udp"},{label:f("form.protocols.tcp,tls"),value:"tcp,tls"},{label:f("form.protocols.tcp,tls,udp"),value:"tcp,tls,udp"},{label:f("form.protocols.tls_passthrough"),value:"tls_passthrough"},{label:f("form.protocols.udp"),value:"udp"},...d.isWsSupported?[{label:f("form.protocols.ws"),value:"ws"},{label:f("form.protocols.wss"),value:"wss"},{label:f("form.protocols.ws,wss"),value:"ws,wss"}]:[]]),g=e.computed(()=>d.recordFlavor?d.recordFlavor:n.value),k=(a,_)=>{if(!new Set(pe[d.protocols]).has(a))return[];if([o.PATHS,o.HOSTS,o.METHODS,o.SNIS].includes(a))return[..._].filter(B=>!!B);if(a===o.SOURCES||a===o.DESTINATIONS)return[..._].filter(B=>!!B.ip||!!B.port).map(B=>({ip:B.ip||void 0,port:!B.port&&B.port!==0?void 0:B.port}));if(a===o.HEADERS)return[..._].filter(B=>!!B.header)},V=a=>a.some(_=>d.protocols.includes(_)),l=()=>{if(g.value!==R.TRADITIONAL)return null;const a=m.value,_=k(o.HEADERS,a.headers||[])||O[o.HEADERS];return _.length===0?null:_.reduce((A,B)=>(A[B.header]=B.values.split(","),A),{})},p=e.computed(()=>(m.value.methods||[]).filter(A=>Object.keys(Y).includes(A)).concat(s.value.map(A=>A.label.toUpperCase()))),y=a=>a?.length?a:null,M=e.computed(()=>({https_redirect_status_code:m.value.https_redirect_status_code,strip_path:V(["http","https","ws","wss"])?m.value.strip_path:!1,preserve_host:m.value.preserve_host,request_buffering:m.value.request_buffering,response_buffering:m.value.response_buffering})),W=e.computed(()=>{switch(g.value){case R.TRADITIONAL:{const a=m.value,_=y(k(o.PATHS,a.paths||[])),A=y(k(o.HOSTS,a.hosts||[])),B={...M.value,methods:y(k(o.METHODS,p.value)),hosts:r.value==="basic"&&A?A.slice(0,1):A,paths:r.value==="basic"&&_?_.slice(0,1):_,headers:r.value==="basic"?null:l(),regex_priority:Number(a.regex_priority),path_handling:a.path_handling,sources:y(k(o.SOURCES,a.sources||[])),destinations:y(k(o.DESTINATIONS,a.destinations||[])),snis:r.value==="basic"?null:y(k(o.SNIS,a.snis||[]))};return{type:g.value,payload:B}}case R.EXPRESSIONS:{const a=m.value;return{type:g.value,payload:{...M.value,expression:a.expression,priority:Number(a.priority)}}}default:return}}),Z=a=>{a&&T("update:protocols",a)};return e.watch([()=>d.recordFlavor,()=>d.routeFlavors],([a,_])=>{if(a){n.value=a;return}n.value=!_.traditional&&_.expressions?R.EXPRESSIONS:R.TRADITIONAL},{immediate:!0,deep:!0}),e.watch(r,a=>{a==="basic"&&(n.value=R.TRADITIONAL,T("update:protocols",ae))}),e.watch(W,a=>{T("update:payload",a)},{deep:!0,immediate:!0}),(a,_)=>{const A=e.resolveComponent("KRadio"),B=e.resolveComponent("KLabel"),ie=e.resolveComponent("KTooltip"),X=e.resolveComponent("KSegmentedControl"),F=e.resolveComponent("KAlert"),re=e.resolveComponent("KSelect");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Et,[e.createVNode(A,{modelValue:r.value,"onUpdate:modelValue":_[0]||(_[0]=x=>r.value=x),card:"","card-orientation":"horizontal","data-testid":"route-form-config-type-basic",description:e.unref(f)("form.config_types.basic.description"),disabled:!t.routeFlavors.traditional||t.recordFlavor===e.unref(R).EXPRESSIONS,label:e.unref(f)("form.config_types.basic.label"),"selected-value":"basic"},null,8,["modelValue","description","disabled","label"]),e.createVNode(A,{modelValue:r.value,"onUpdate:modelValue":_[1]||(_[1]=x=>r.value=x),card:"","card-orientation":"horizontal","data-testid":"route-form-config-type-advanced",description:e.unref(f)("form.config_types.advanced.description"),label:e.unref(f)("form.config_types.advanced.label"),"selected-value":"advanced"},null,8,["modelValue","description","label"])]),r.value==="basic"?(e.openBlock(),e.createBlock(Ne,{key:0,"custom-methods":s.value,"onUpdate:customMethods":_[2]||(_[2]=x=>s.value=x),fields:m.value,"onUpdate:fields":_[3]||(_[3]=x=>m.value=x),"config-type":"basic","hide-advanced":"",protocols:t.protocols,readonly:t.readonly},null,8,["custom-methods","fields","protocols","readonly"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t.routeFlavors.traditional&&t.routeFlavors.expressions?(e.openBlock(),e.createElementBlock("div",Ct,[e.createVNode(B,{class:"config-flavor-label"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(f)("form.config_flavor.label")),1)]),_:1}),e.createVNode(X,{modelValue:n.value,"onUpdate:modelValue":_[4]||(_[4]=x=>n.value=x),class:"config-flavor-control","data-testid":"route-form-config-flavor",options:h},{"option-label":e.withCtx(({option:x})=>[e.createElementVNode("span",null,e.toDisplayString(x.label),1),t.tooltips?.[x.value]?(e.openBlock(),e.createBlock(ie,{key:0,class:"route-form-config-tabs-tooltip",text:t.tooltips?.[x.value],"tooltip-id":`route-form-config-tabs-tooltip-${x.value}`},{default:e.withCtx(()=>[e.createVNode(e.unref(K.InfoIcon))]),_:1},8,["text","tooltip-id"])):e.createCommentVNode("",!0)]),_:1},8,["modelValue"])])):e.createCommentVNode("",!0),t.routeFlavors.traditional&&t.routeFlavors.expressions&&(!t.recordFlavor||t.recordFlavor!==n.value)?(e.openBlock(),e.createBlock(F,{key:1,appearance:t.recordFlavor?"warning":"info",class:"route-form-config-type-immutable-alert","data-testid":"route-config-type-immutable-alert"},{default:e.withCtx(()=>[t.recordFlavor?t.recordFlavor!==n.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(f)("form.warning.cannotChangeFlavor.edit",{format:e.unref(f)(`form.flavors.${t.recordFlavor}`)})),1)],64)):e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(f)("form.warning.cannotChangeFlavor.create")),1)],64))]),_:1},8,["appearance"])):e.createCommentVNode("",!0),!t.recordFlavor||!(t.routeFlavors.traditional&&t.routeFlavors.expressions&&t.recordFlavor!==n.value)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.hideProtocols?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(re,{key:0,"data-testid":"route-form-protocols",items:c.value,label:e.unref(f)("form.fields.protocols.label"),"label-attributes":{info:e.unref(f)("form.fields.protocols.tooltip"),tooltipAttributes:{maxWidth:"400"}},"model-value":t.protocols,readonly:t.readonly,required:"",width:"100%","onUpdate:modelValue":Z},null,8,["items","label","label-attributes","model-value","readonly"])),n.value===e.unref(R).TRADITIONAL?(e.openBlock(),e.createBlock(Ne,{key:1,"custom-methods":s.value,"onUpdate:customMethods":_[5]||(_[5]=x=>s.value=x),fields:m.value,"onUpdate:fields":_[6]||(_[6]=x=>m.value=x),"config-type":"advanced",protocols:t.protocols,readonly:t.readonly},null,8,["custom-methods","fields","protocols","readonly"])):(e.openBlock(),e.createBlock(_t,{key:2,fields:m.value,"onUpdate:fields":_[7]||(_[7]=x=>m.value=x),protocols:t.protocols,readonly:t.readonly,"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:_[8]||(_[8]=x=>T("notify",x))},null,8,["fields","protocols","readonly","show-expressions-modal-entry"]))],64)):e.createCommentVNode("",!0)],64))],64)}}}),[["__scopeId","data-v-5c24422c"]]),xe=t=>!(typeof t.expression=="string"&&t.expression.length>0||(t.protocols||[]).sort().join(",")!==ae||t[o.PATHS]?.length>1||t[o.HOSTS]?.length>1||t[o.HEADERS]&&typeof t[o.HEADERS]=="object"||t[o.SNIS]?.length>0||t[o.SOURCES]?.length>0||t[o.DESTINATIONS]?.length>0||["path_handling","regex_priority","https_redirect_status_code","preserve_host","request_buffering","response_buffering"].some(d=>t[d]!==Ve[d])),kt={class:"kong-ui-entities-route-form"},Vt={key:1},Nt={"data-testid":"no-search-results"},It={class:"route-form-service-dropdown-item"},xt={class:"select-item-label"},wt={class:"select-item-description"},Rt=P(e.defineComponent({__name:"RouteForm",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t?.app)||t?.app==="konnect"&&!t?.controlPlaneId||t?.app==="kongManager"&&typeof t?.workspace!="string"||!t?.cancelRoute)},routeId:{type:String,required:!1,default:null},serviceId:{type:String,required:!1,default:null},hideSectionsInfo:{type:Boolean,required:!1,default:!1},hideNameField:{type:Boolean,required:!1,default:!1},hideServiceField:{type:Boolean,required:!1,default:!1},routeFlavors:{type:Object,required:!1,default:()=>({traditional:!0})},configTabTooltips:{type:Object,required:!1,default:()=>{}},showExpressionsModalEntry:{type:Boolean,required:!1,default:!1}},emits:["update","error","loading","model-updated","notify"],setup(t,{expose:E,emit:d}){const r=t,n=d,m=e.ref("basic"),s=e.ref(!r.routeFlavors.traditional&&r.routeFlavors.expressions?R.EXPRESSIONS:R.TRADITIONAL),T=e.ref(void 0),f=e.computed(()=>{if(T.value)return T.value;if(s.value)return s.value;if(r.routeFlavors.traditional)return R.TRADITIONAL;if(r.routeFlavors.expressions)return R.EXPRESSIONS}),{i18n:{t:h}}=D.useI18n(),c=Ee.useRouter(),{axiosInstance:g}=b.useAxios(r.config?.axiosRequestConfig),{getMessageFromError:k}=b.useErrors(),V=i=>i.name?`${i.name} - ${i.value}`:i.value,l=e.reactive({routeFlavors:r.routeFlavors,fields:{name:"",protocols:ae,tags:"",service_id:"",...ne,paths:[""],snis:[""],hosts:[""],methods:[],headers:[{...O[o.HEADERS][0]}],sources:[{...O[o.SOURCES][0]}],destinations:[{...O[o.DESTINATIONS][0]}],regex_priority:0,path_handling:"v0",expression:"",priority:0},isReadonly:!1,errorMessage:""});e.watch(()=>r.routeFlavors,i=>{l.routeFlavors=i,i.traditional||(m.value="advanced")},{immediate:!0,deep:!0});const p=e.ref(),y=e.ref([]),M=e.ref([]),W=e.reactive({name:"",protocols:ae,tags:"",service_id:"",...ne,path_handling:"v0",regex_priority:0,expression:"",priority:0}),Z=r.config.app==="konnect"||b.useGatewayFeatureSupported({gatewayInfo:r.config.gatewayInfo,supportedRange:{enterprise:["3.0"]}}),a=e.computed(()=>r.routeId?b.EntityBaseFormType.Edit:b.EntityBaseFormType.Create);a.value===b.EntityBaseFormType.Create&&(l.fields.name=`new-route-${new Date().toISOString().replace(/\D/g,"").slice(0,17)}`);const _=e.computed(()=>ee.form[r.config?.app]?.fetch?.[r.serviceId?"forGatewayService":"all"].replace(/{serviceId}/gi,r.serviceId||"")),A=()=>{c.push(r.config?.cancelRoute)},B=i=>{n("loading",i)},ie=i=>{n("error",i)},X=i=>Object.entries(i).map(u=>({header:u[0],values:u[1]?.join()})),F=i=>i.some(u=>l.fields.protocols.includes(u)),re=i=>{if(r.routeId){const S=typeof i.expression=="string"&&i.expression.length>0?R.EXPRESSIONS:R.TRADITIONAL;T.value=S,xe(i)||(m.value="advanced")}i?.service?.id&&(l.fields.service_id=i.service.id),l.fields.name=i?.name||"";const u=i?.tags||[];l.fields.tags=u?.join(", ")||"",l.fields.preserve_host=typeof i?.preserve_host>"u"?!1:i?.preserve_host,l.fields.https_redirect_status_code=i?.https_redirect_status_code||426,i?.protocols?.length&&(i.protocols.length>1?l.fields.protocols=i.protocols.join():l.fields.protocols=i.protocols[0]),l.fields.request_buffering=typeof i?.request_buffering>"u"?!0:i?.request_buffering,l.fields.response_buffering=typeof i?.response_buffering>"u"?!0:i?.response_buffering,l.fields.strip_path=typeof i?.strip_path>"u"?!0:i?.strip_path,me(l)&&(l.fields.regex_priority=i?.regex_priority||0,l.fields.path_handling=i?.path_handling||"v0",i?.paths&&(l.fields.paths=i.paths),i?.snis&&(l.fields.snis=i.snis),i?.hosts&&(l.fields.hosts=i.hosts),i?.methods&&(l.fields.methods=i.methods.filter(S=>Object.keys(Y).includes(S)),y.value=i.methods.filter(S=>!Object.keys(Y).includes(S)).map(S=>({label:S,value:S})),M.value=[...y.value]),i?.headers&&(l.fields.headers=X(i.headers)),i?.sources&&(l.fields.sources=i.sources),i?.destinations&&(l.fields.destinations=i.destinations)),he(l)&&(l.fields.expression=i?.expression||"",l.fields.priority=i?.priority||0),Object.assign(W,JSON.parse(JSON.stringify(l.fields)))},x=e.computed(()=>{switch(f.value){case R.TRADITIONAL:{if(me(l)){const i=l.fields.hosts?!!l.fields.hosts.filter(Boolean).length:null,u=l.fields.paths?!!l.fields.paths.filter(Boolean).length:null,S=l.fields.headers?l.fields.headers.some(({header:$})=>!!$):null,H=l.fields.snis?!!l.fields.snis.filter(Boolean).length:null,I=l.fields.destinations?l.fields.destinations.some(({ip:$,port:J})=>!!$||!!J):null,G=l.fields.sources?l.fields.sources.some(({ip:$,port:J})=>!!$||!!J):null,j=l.fields.methods?!!l.fields.methods.filter(Boolean).length:null;return!!l.fields.protocols&&(F(["http"])&&!!(i||j||u||S)||F(["https"])&&!!(i||j||u||S||H)||F(["grpc"])&&!!(i||u||S)||F(["grpcs","wss"])&&!!(i||u||S||H)||F(["udp","tls"])&&!!(I||G||H)||F(["tcp"])&&!!(I||G)||F(["tls_passthrough"])&&!!H||F(["ws"])&&!!(i||u||S))}break}case R.EXPRESSIONS:{if(he(l))return l.fields.expression.length>0;break}}return!0}),ue=e.computed(()=>!_e(l.fields,W)||!_e(y.value,M.value)),de=e.computed(()=>{let i=`${r.config.apiBaseUrl}${ee.form[r.config.app][a.value][r.serviceId?"forGatewayService":"all"]}`;return r.config.app==="konnect"&&(i=i.replace(/{controlPlaneId}/gi,r.config?.controlPlaneId||"")),i.replace(/\/{workspace}/gi,r.config?.workspace?`/${r.config.workspace}`:"").replace(/{serviceId}/gi,r.serviceId||"").replace(/{id}/gi,r.routeId??"")});e.watch(()=>l.fields,()=>{n("model-updated",v.value)},{deep:!0});const v=e.computed(()=>({...!r.hideNameField&&{name:l.fields.name||null},protocols:l.fields.protocols.split(","),tags:l.fields.tags.split(",")?.map(i=>String(i||"").trim())?.filter(i=>i!==""),service:l.fields.service_id?{id:l.fields.service_id}:null,...p.value?.payload})),q=i=>{switch(f.value){case R.TRADITIONAL:{if(!("regex_priority"in i&&"path_handling"in i))return!1;break}case R.EXPRESSIONS:{if(!("priority"in i))return!1;break}}return"service"in i&&"tags"in i&&"protocols"in i},z=async i=>{const u=i&&q(i)?i:v.value;try{l.isReadonly=!0;let S;a.value==="create"?S=await g.post(de.value,u):a.value==="edit"&&(S=r.config?.app==="konnect"?await g.put(de.value,u):await g.patch(de.value,u)),re(S?.data),n("update",S?.data)}catch(S){l.errorMessage=k(S),n("error",S)}finally{l.isReadonly=!1}},{debouncedQueryChange:le,loading:fe,error:ye,loadItems:Se,results:be}=b.useDebouncedFilter(r.config,ee.form[r.config.app].services,void 0,{fetchedItemsKey:"data",searchKeys:["id","name"]}),Te=e.computed(()=>ye.value?h("errors.services.fetch"):""),ce=e.computed(()=>be.value?.map(i=>({label:i.id,name:i.name,value:i.id})));return e.onBeforeMount(async()=>{r.hideServiceField||await Se(),r.serviceId&&(l.fields.service_id=r.serviceId)}),e.onMounted(()=>{n("model-updated",v.value)}),E({saveFormData:z,payload:v}),e.provide("configType",m),(i,u)=>{const S=e.resolveComponent("KInput"),H=e.resolveComponent("KSelect");return e.openBlock(),e.createElementBlock("div",kt,[e.createVNode(e.unref(b.EntityBaseForm),{"can-submit":x.value&&ue.value,config:t.config,"edit-id":t.routeId,"entity-type":e.unref(b.SupportedEntityType).Route,"error-message":l.errorMessage||Te.value,"fetch-url":_.value,"form-fields":v.value,"is-readonly":l.isReadonly,onCancel:A,"onFetch:error":ie,"onFetch:success":re,onLoading:B,onSubmit:z},{"form-actions":e.withCtx(()=>[e.renderSlot(i.$slots,"form-actions",{canSubmit:x.value&&ue.value,cancel:A,submit:z},void 0,!0)]),default:e.withCtx(()=>[e.createVNode(e.unref(b.EntityFormSection),{description:e.unref(h)("form.sections.general.description"),"hide-info-header":t.hideSectionsInfo,title:e.unref(h)("form.sections.general.title")},{default:e.withCtx(()=>[t.hideNameField?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(S,{key:0,modelValue:l.fields.name,"onUpdate:modelValue":u[0]||(u[0]=I=>l.fields.name=I),modelModifiers:{trim:!0},autocomplete:"off","data-testid":"route-form-name",label:e.unref(h)("form.fields.name.label"),placeholder:e.unref(h)("form.fields.name.placeholder"),readonly:l.isReadonly,type:"text"},null,8,["modelValue","label","placeholder","readonly"])),t.hideServiceField?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Vt,[e.createVNode(H,{modelValue:l.fields.service_id,"onUpdate:modelValue":u[1]||(u[1]=I=>l.fields.service_id=I),clearable:"","data-testid":"route-form-service-id",disabled:!!t.serviceId,"enable-filtering":"","filter-function":()=>!0,items:ce.value,label:e.unref(h)("form.fields.service_id.label"),loading:e.unref(fe),placeholder:e.unref(h)("form.fields.service_id.placeholder"),readonly:l.isReadonly,"reuse-item-template":"",width:"100%",onQueryChange:e.unref(le)},{loading:e.withCtx(()=>[e.createElementVNode("div",null,e.toDisplayString(e.unref(h)("actions.loading")),1)]),empty:e.withCtx(()=>[e.createElementVNode("div",Nt,e.toDisplayString(e.unref(h)("search.no_results")),1)]),"selected-item-template":e.withCtx(({item:I})=>[e.createTextVNode(e.toDisplayString(V(I)),1)]),"item-template":e.withCtx(({item:I})=>[e.createElementVNode("div",It,[e.createElementVNode("span",xt,e.toDisplayString(I.name),1),e.createElementVNode("span",wt,e.toDisplayString(I.value),1)])]),_:1},8,["modelValue","disabled","items","label","loading","placeholder","readonly","onQueryChange"])])),e.createVNode(S,{modelValue:l.fields.tags,"onUpdate:modelValue":u[2]||(u[2]=I=>l.fields.tags=I),modelModifiers:{trim:!0},autocomplete:"off","data-testid":"route-form-tags",help:e.unref(h)("form.fields.tags.help"),label:e.unref(h)("form.fields.tags.label"),placeholder:e.unref(h)("form.fields.tags.placeholder"),readonly:l.isReadonly,type:"text"},null,8,["modelValue","help","label","placeholder","readonly"])]),_:1},8,["description","hide-info-header","title"]),e.createVNode(e.unref(b.EntityFormSection),{description:e.unref(h)("form.sections.config.description"),"hide-info-header":t.hideSectionsInfo,title:e.unref(h)("form.sections.config.title")},{default:e.withCtx(()=>[e.createVNode(Ie,{"config-flavor":s.value,"onUpdate:configFlavor":u[3]||(u[3]=I=>s.value=I),"config-type":m.value,"onUpdate:configType":u[4]||(u[4]=I=>m.value=I),"custom-methods":y.value,"onUpdate:customMethods":u[5]||(u[5]=I=>y.value=I),fields:l.fields,"onUpdate:fields":u[6]||(u[6]=I=>l.fields=I),"is-ws-supported":e.unref(Z),protocols:l.fields.protocols,readonly:l.isReadonly,"record-flavor":T.value,"route-flavors":t.routeFlavors,"show-expressions-modal-entry":t.showExpressionsModalEntry,tooltips:t.configTabTooltips,onNotify:u[7]||(u[7]=I=>n("notify",I)),"onUpdate:payload":u[8]||(u[8]=I=>p.value=I),"onUpdate:protocols":u[9]||(u[9]=I=>l.fields.protocols=I)},null,8,["config-flavor","config-type","custom-methods","fields","is-ws-supported","protocols","readonly","record-flavor","route-flavors","show-expressions-modal-entry","tooltips"])]),_:1},8,["description","hide-info-header","title"])]),_:3},8,["can-submit","config","edit-id","entity-type","error-message","fetch-url","form-fields","is-readonly"])])}}}),[["__scopeId","data-v-2720091c"]]),Bt={class:"kong-ui-entities-routes-list"},At={class:"button-row"},Ot={key:1},Dt={key:1},Mt={key:1},Ht={class:"route-list-cell-expression"},$t=P(e.defineComponent({__name:"RouteList",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t?.app)||!t.createRoute||!t.getViewRoute||!t.getEditRoute||t.app==="kongManager"&&!t.isExactMatch&&!t.filterSchema)},cacheIdentifier:{type:String,default:""},canCreate:{type:Function,required:!1,default:async()=>!0},canDelete:{type:Function,required:!1,default:async()=>!0},canEdit:{type:Function,required:!1,default:async()=>!0},canRetrieve:{type:Function,required:!1,default:async()=>!0},canDebug:{type:Function,required:!1,default:async()=>!1},title:{type:String,default:""},titleTag:{type:String,default:"h2"},useActionOutside:{type:Boolean,default:!1},hideTraditionalColumns:{type:Boolean,default:!1},hasExpressionColumn:{type:Boolean,default:!1},copyCurlEnabled:{type:Boolean,default:!1}},emits:["error","click:learn-more","copy:success","copy:error","delete:success","click:copy-as-curl"],setup(t,{emit:E}){const d=E,r=t,{i18n:{t:n,formatUnixTimeStamp:m}}=D.useI18n(),s=Ee.useRouter(),{axiosInstance:T}=b.useAxios(r.config?.axiosRequestConfig),{handleStateChange:f,hasRecords:h}=b.useTableState(()=>M.value),c=e.computed(()=>h.value&&r.config.app==="konnect"),g=e.computed(()=>!!r.config.serviceId),k=e.computed(()=>r.config.app!=="kongManager"||!!r.config.disableSorting),V={name:{label:n("routes.list.table_headers.name"),searchable:!0,sortable:!0,hidable:!1},protocols:{label:n("routes.list.table_headers.protocols"),searchable:!0},...!r.hideTraditionalColumns&&{hosts:{label:n("routes.list.table_headers.hosts"),searchable:!0},methods:{label:n("routes.list.table_headers.methods"),searchable:!0},paths:{label:n("routes.list.table_headers.paths"),searchable:!0}},...r.hasExpressionColumn&&{expression:{label:n("routes.list.table_headers.expression"),tooltip:!0}},tags:{label:n("routes.list.table_headers.tags"),sortable:!1},updated_at:{label:n("routes.list.table_headers.updated_at"),sortable:!0},created_at:{label:n("routes.list.table_headers.created_at"),sortable:!0}},l={columnVisibility:{created_at:!1}},p=V,y=e.computed(()=>{let u=`${r.config.apiBaseUrl}${ee.list[r.config.app][r.config.serviceId?"forGatewayService":"all"]}`;return r.config.app==="konnect"&&(u=u.replace(/{controlPlaneId}/gi,r.config?.controlPlaneId||"")),u.replace(/\/{workspace}/gi,r.config?.workspace?`/${r.config.workspace}`:"").replace(/{serviceId}/gi,r.config?.serviceId||"")}),M=e.ref(""),W=e.computed(()=>{const u=r.config.app==="konnect"||r.config.isExactMatch;if(u)return{isExactMatch:u,placeholder:n(`search.placeholder.${r.config.isExactMatch?"exact":r.config.app}`)};const{name:S,protocols:H,hosts:I,methods:G,paths:j,expression:$}=V,J={name:S,protocols:H,hosts:I,methods:G,paths:j,...r.hasExpressionColumn&&{expression:$}};return{isExactMatch:u,fields:J,schema:r.config.filterSchema}}),{fetcher:Z,fetcherState:a,fetcherCacheKey:_}=b.useFetcher(e.computed(()=>({...r.config,cacheIdentifier:r.cacheIdentifier})),y),A=u=>u.headerKey==="expression"?{style:{maxWidth:"250px",overflowX:"hidden",textOverflow:"ellipsis"}}:{},B=()=>{M.value=""},ie=()=>{_.value++},X=e.ref(null),F=async(u,S)=>{if(!await S(u.id)){d("copy:error",{entity:u,field:"id",message:n("errors.copy")});return}d("copy:success",{entity:u,field:"id",message:n("copy.success",{val:u.id})})},re=async(u,S)=>{const H=JSON.stringify(u);if(!await S(H)){d("copy:error",{entity:u,message:n("errors.copy")});return}d("copy:success",{entity:u,message:n("copy.success_brief")})},x=async u=>{await r.canRetrieve?.(u)&&s.push(r.config.getViewRoute(u.id))},ue=u=>({label:n("actions.view"),to:r.config.getViewRoute(u)}),de=u=>({label:n("actions.edit"),to:r.config.getEditRoute(u)}),v=u=>{if(r.config.getDebugRoute)return{label:n("actions.debugger"),to:r.config.getDebugRoute(u)}},q=e.ref(void 0),z=e.ref(!1),le=e.ref(!1),fe=e.ref(""),ye=b.useDeleteUrlBuilder(r.config,y.value),Se=u=>{q.value=u,z.value=!0},be=()=>{z.value=!1},Te=async()=>{if(q.value?.id){le.value=!0;try{await T.delete(ye(q.value.id)),le.value=!1,z.value=!1,_.value++,d("delete:success",q.value)}catch(u){fe.value=u.response?.data?.message||u.message||n("errors.delete"),d("error",u)}finally{le.value=!1}}};e.watch(a,u=>{if(u.status===b.FetcherStatus.Error){X.value={title:n("errors.general")},u.error?.response?.data?.message&&(X.value.message=u.error.response.data.message),d("error",u.error);return}X.value=null});const ce=e.ref({ctaPath:r.config.createRoute,ctaText:void 0,message:`${n("routes.list.empty_state.description")}${r.config.additionMessageForEmptyState?` ${r.config.additionMessageForEmptyState}`:""}`,title:n("routes.title")}),i=e.ref(!1);return e.onBeforeMount(async()=>{i.value=await r.canCreate(),i.value&&(ce.value.title=n("routes.list.empty_state.title"),ce.value.ctaText=n("actions.create"))}),(u,S)=>{const H=e.resolveComponent("KButton"),I=e.resolveComponent("KEmptyState"),G=e.resolveComponent("KBadge"),j=e.resolveComponent("KTruncate"),$=e.resolveComponent("KDropdownItem"),J=e.resolveComponent("KClipboardProvider");return e.openBlock(),e.createElementBlock("div",Bt,[e.createVNode(e.unref(b.EntityBaseTable),{"cache-identifier":t.cacheIdentifier,"cell-attributes":A,"default-table-preferences":l,"disable-sorting":k.value,"empty-state-options":ce.value,"enable-entity-actions":"","error-message":X.value,fetcher:e.unref(Z),"fetcher-cache-key":e.unref(_),"pagination-type":"offset","preferences-storage-key":"kong-ui-entities-routes-list",query:M.value,"table-headers":e.unref(p),title:t.title,"title-tag":t.titleTag,onClearSearchInput:B,"onClick:row":S[7]||(S[7]=C=>x(C)),onSort:ie,onState:e.unref(f)},e.createSlots({"toolbar-filter":e.withCtx(()=>[e.createVNode(e.unref(b.EntityFilter),{modelValue:M.value,"onUpdate:modelValue":S[0]||(S[0]=C=>M.value=C),config:W.value},null,8,["modelValue","config"])]),"toolbar-button":e.withCtx(()=>[(e.openBlock(),e.createBlock(e.Teleport,{disabled:!t.useActionOutside,to:"#kong-ui-app-page-header-action-button"},[e.createElementVNode("div",At,[!g.value&&c.value?(e.openBlock(),e.createBlock(H,{key:0,appearance:"secondary",class:"open-learning-hub","data-testid":"routes-learn-more-button",icon:"",onClick:S[1]||(S[1]=C=>u.$emit("click:learn-more"))},{default:e.withCtx(()=>[e.createVNode(e.unref(K.BookIcon),{decorative:""})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(b.PermissionsWrapper),{"auth-function":()=>t.canCreate()},{default:e.withCtx(()=>[e.createVNode(H,{appearance:"primary","data-testid":"toolbar-add-route",size:t.useActionOutside?"medium":"large",to:t.config.createRoute},{default:e.withCtx(()=>[e.createVNode(e.unref(K.AddIcon)),e.createTextVNode(" "+e.toDisplayString(e.unref(n)("routes.list.toolbar_actions.new_route")),1)]),_:1},8,["size","to"])]),_:1},8,["auth-function"])])],8,["disabled"]))]),name:e.withCtx(({rowValue:C})=>[e.createElementVNode("b",null,e.toDisplayString(C??"-"),1)]),protocols:e.withCtx(({rowValue:C})=>[e.createVNode(j,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C,w=>(e.openBlock(),e.createBlock(G,{key:w,appearance:"neutral",onClick:S[3]||(S[3]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(w),1)]),_:2},1024))),128))]),_:2},1024)]),hosts:e.withCtx(({rowValue:C})=>[C?.length>0?(e.openBlock(),e.createBlock(j,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C,w=>(e.openBlock(),e.createBlock(G,{key:w,appearance:"neutral",tooltip:w,"truncation-tooltip":"",onClick:S[4]||(S[4]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(w),1)]),_:2},1032,["tooltip"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",Ot,"-"))]),methods:e.withCtx(({rowValue:C})=>[C?.length>0?(e.openBlock(),e.createBlock(j,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C,w=>(e.openBlock(),e.createBlock(G,{key:w,appearance:Object.values(e.unref(we.BadgeMethodAppearances)).includes(w.toLowerCase())?w.toLowerCase():"custom",onClick:S[5]||(S[5]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(w),1)]),_:2},1032,["appearance"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",Dt,"-"))]),paths:e.withCtx(({rowValue:C})=>[C?.length>0?(e.openBlock(),e.createBlock(j,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C,w=>(e.openBlock(),e.createBlock(G,{key:w,appearance:"neutral",tooltip:w,"truncation-tooltip":"",onClick:S[6]||(S[6]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(w),1)]),_:2},1032,["tooltip"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",Mt,"-"))]),tags:e.withCtx(({rowValue:C})=>[e.createVNode(e.unref(b.TableTags),{tags:C},null,8,["tags"])]),expression:e.withCtx(({rowValue:C})=>[e.createElementVNode("span",Ht,e.toDisplayString(C||"-"),1)]),created_at:e.withCtx(({rowValue:C})=>[e.createTextVNode(e.toDisplayString(e.unref(m)(C)),1)]),updated_at:e.withCtx(({row:C,rowValue:w})=>[e.createTextVNode(e.toDisplayString(e.unref(m)(w??C.created_at)),1)]),actions:e.withCtx(({row:C})=>[e.createVNode(J,null,{default:e.withCtx(({copyToClipboard:w})=>[e.createVNode($,{"data-testid":"action-entity-copy-id",onClick:Ut=>F(C,w)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n)("actions.copy_id")),1)]),_:1},8,["onClick"])]),_:2},1024),e.createVNode(J,null,{default:e.withCtx(({copyToClipboard:w})=>[e.createVNode($,{"data-testid":"action-entity-copy-json",onClick:Ut=>re(C,w)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n)("actions.copy_json")),1)]),_:1},8,["onClick"])]),_:2},1024),t.copyCurlEnabled?(e.openBlock(),e.createBlock($,{key:0,"data-testid":"action-entity-copy-curl",onClick:w=>d("click:copy-as-curl",C)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n)("actions.copy_curl")),1)]),_:1},8,["onClick"])):e.createCommentVNode("",!0),e.createVNode(e.unref(b.PermissionsWrapper),{"auth-function":()=>t.canRetrieve(C)},{default:e.withCtx(()=>[e.createVNode($,{"data-testid":"action-entity-view","has-divider":"",item:ue(C.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(b.PermissionsWrapper),{"auth-function":()=>t.canDebug(C)},{default:e.withCtx(()=>[t.config.getDebugRoute?(e.openBlock(),e.createBlock($,{key:0,"data-testid":"action-entity-debug",item:v(C.id)},null,8,["item"])):e.createCommentVNode("",!0)]),_:2},1032,["auth-function"]),e.createVNode(e.unref(b.PermissionsWrapper),{"auth-function":()=>t.canEdit(C)},{default:e.withCtx(()=>[e.createVNode($,{"data-testid":"action-entity-edit",item:de(C.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(b.PermissionsWrapper),{"auth-function":()=>t.canDelete(C)},{default:e.withCtx(()=>[e.createVNode($,{danger:"","data-testid":"action-entity-delete","has-divider":"",onClick:w=>Se(C)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n)("actions.delete")),1)]),_:1},8,["onClick"])]),_:2},1032,["auth-function"])]),_:2},[!M.value&&t.config.app==="konnect"?{name:"empty-state",fn:e.withCtx(()=>[e.createVNode(I,{"data-testid":t.config.serviceId?"nested-routes-entity-empty-state":"routes-entity-empty-state","icon-background":"",message:e.unref(n)("routes.list.empty_state_v2.description"),title:e.unref(n)("routes.list.empty_state_v2.title")},e.createSlots({icon:e.withCtx(()=>[e.createVNode(e.unref(K.ForwardIcon),{decorative:""})]),action:e.withCtx(()=>[i.value?(e.openBlock(),e.createBlock(H,{key:0,"data-testid":"entity-create-button",to:t.config.createRoute},{default:e.withCtx(()=>[e.createVNode(e.unref(K.AddIcon),{decorative:""}),e.createTextVNode(" "+e.toDisplayString(e.unref(n)("routes.list.toolbar_actions.new_route")),1)]),_:1},8,["to"])):e.createCommentVNode("",!0),e.createVNode(H,{appearance:"secondary","data-testid":"entity-learn-more-button",onClick:S[2]||(S[2]=C=>u.$emit("click:learn-more"))},{default:e.withCtx(()=>[e.createVNode(e.unref(K.BookIcon),{decorative:""}),e.createTextVNode(" "+e.toDisplayString(e.unref(n)("routes.list.empty_state_v2.learn_more")),1)]),_:1})]),_:2},[t.config?.isControlPlaneGroup?{name:"default",fn:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n)("routes.list.empty_state_v2.group")),1)]),key:"0"}:void 0]),1032,["data-testid","message","title"])]),key:"0"}:void 0]),1032,["cache-identifier","disable-sorting","empty-state-options","error-message","fetcher","fetcher-cache-key","query","table-headers","title","title-tag","onState"]),e.createVNode(e.unref(b.EntityDeleteModal),{"action-pending":le.value,description:e.unref(n)("delete.description"),"entity-name":q.value&&(q.value.name||q.value.id),"entity-type":e.unref(b.EntityTypes).Route,error:fe.value,title:e.unref(n)("delete.title"),visible:z.value,onCancel:be,onProceed:Te},null,8,["action-pending","description","entity-name","entity-type","error","title","visible"])])}}}),[["__scopeId","data-v-22006578"]]),Pt=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"RouteFormExpressionsEditor",props:e.mergeModels({protocol:{},showExpressionsModalEntry:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["notify"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=D.useI18n(),r=t,n=e.useModel(t,"modelValue"),m=E,s=e.ref(!1),T=e.computed(()=>se.PROTOCOL_TO_SCHEMA[r.protocol]),f=e.computed(()=>se.HTTP_BASED_PROTOCOLS.includes(r.protocol??"")),h=e.computed(()=>{if(!(!r.showExpressionsModalEntry||f.value))return d("form.expression_playground.supported_protocols_hint",{protocols:se.HTTP_BASED_PROTOCOLS.join(", ")})}),c=V=>{n.value=V,s.value=!1},g=V=>{m("notify",V)},k=()=>{f.value&&(s.value=!0)};return(V,l)=>{const p=e.resolveComponent("KTooltip");return e.openBlock(),e.createElementBlock(e.Fragment,null,[T.value!==void 0?(e.openBlock(),e.createBlock(e.unref(se.ExpressionsEditor),{key:0,modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=y=>n.value=y),schema:T.value},null,8,["modelValue","schema"])):e.createCommentVNode("",!0),e.createVNode(p,{placement:"bottom-start",text:h.value},{default:e.withCtx(()=>[t.showExpressionsModalEntry?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass({disabled:!f.value,"route-form-open-in-playground":!0}),"data-testid":"open-router-playground",onClick:k},[e.renderSlot(V.$slots,"default")],2)):e.createCommentVNode("",!0)]),_:3},8,["text"]),t.showExpressionsModalEntry&&f.value?(e.openBlock(),e.createBlock(e.unref(se.RouterPlaygroundModal),{key:1,"initial-expression":n.value,"is-visible":s.value,onCancel:l[1]||(l[1]=y=>s.value=!1),onCommit:c,onNotify:g},null,8,["initial-expression","is-visible"])):e.createCommentVNode("",!0)],64)}}})},Symbol.toStringTag,{value:"Module"}));N.DEFAULT_PROTOCOL=ae,N.ExpressionsEditorState=Q,N.HTTP_REDIRECT_STATUS_CODES=ge,N.INITIAL_ROUTE_RULES_FIELDS=Ve,N.INITIAL_SHARED_ROUTE_RULES_FIELDS=ne,N.INITIAL_TRADITIONAL_ROUTE_RULES_VALUES=O,N.Methods=Y,N.PATH_HANDLING_OPTIONS=ke,N.PROTOCOLS_TO_ROUTE_RULES=pe,N.RouteConfigCard=De,N.RouteFlavor=R,N.RouteForm=Rt,N.RouteFormRulesComposer=Ie,N.RouteList=$t,N.RoutingRulesEntities=o,N.isDefinedByBasic=xe,N.stateHasExpressionsFlavor=he,N.stateHasTraditionalFlavor=me,Object.defineProperty(N,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(I,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@kong-ui-public/entities-shared"),require("lodash.isequal"),require("vue-router"),require("@kong/icons"),require("@kong/kongponents"),require("@kong-ui-public/expressions"),require("@kong-ui-public/i18n"),require("@kong-ui-public/expressions/dist/style.css")):typeof define=="function"&&define.amd?define(["exports","vue","@kong-ui-public/entities-shared","lodash.isequal","vue-router","@kong/icons","@kong/kongponents","@kong-ui-public/expressions","@kong-ui-public/i18n","@kong-ui-public/expressions/dist/style.css"],e):(I=typeof globalThis<"u"?globalThis:I||self,e(I["kong-ui-public-entities-routes"]={},I.Vue,I["kong-ui-public-entities-shared"],I.isEqual,I.VueRouter,I.KongIcons,I.Kongponents,I["kong-ui-public-expressions"],I["kong-ui-public-i18n"]))})(this,(function(I,e,b,Ce,ke,j,Be,se,Ve){"use strict";const H="/v2/control-planes/{controlPlaneId}/core-entities/{workspace}",U="/{workspace}",Q={list:{konnect:{all:`${H}/routes`,forGatewayService:`${H}/services/{serviceId}/routes`,search:`${H}/routes/search`},kongManager:{all:`${U}/routes`,forGatewayService:`${U}/services/{serviceId}/routes`}},form:{konnect:{services:`${H}/services`,create:{all:`${H}/routes`,forGatewayService:`${H}/services/{serviceId}/routes`},fetch:{all:`${H}/routes/{id}`,forGatewayService:`${H}/services/{serviceId}/routes/{id}`},edit:{all:`${H}/routes/{id}`,forGatewayService:`${H}/services/{serviceId}/routes/{id}`}},kongManager:{services:`${U}/services`,create:{all:`${U}/routes`,forGatewayService:`${U}/services/{serviceId}/routes`},fetch:{all:`${U}/routes/{id}`,forGatewayService:`${U}/services/{serviceId}/routes/{id}`},edit:{all:`${U}/routes/{id}`,forGatewayService:`${U}/services/{serviceId}/routes/{id}`}}},item:{konnect:{getService:`${H}/services/{serviceId}`,all:`${H}/routes/{id}`,forGatewayService:`${H}/services/{serviceId}/routes/{id}`},kongManager:{getService:`${U}/services/{serviceId}`,all:`${U}/routes/{id}`,forGatewayService:`${U}/services/{serviceId}/routes/{id}`}}},Ae={actions:{create:"New route",debugger:"Start debugging",copy_id:"Copy ID",copy_json:"Copy JSON",copy_curl:"Copy as cURL",edit:"Edit",delete:"Delete",clear:"Clear",view:"View details",loading:"Loading..."},search:{placeholder:{konnect:"Filter by name",exact:"Filter by exact name or ID",kongManager:"Filter by exact name or ID"},no_results:"No results found"},routes:{title:"Routes",list:{toolbar_actions:{new_route:"New route"},table_headers:{name:"Name",protocols:"Protocols",hosts:"Hosts",methods:"Methods",paths:"Paths",expression:"Expression",id:"ID",tags:"Tags",created_at:"Created at",updated_at:"Last modified"},empty_state:{title:"Configure a new route",description:"Routes proxy requests to an associated service."},empty_state_v2:{title:"Configure your first route",group:"Routes created in gateways within this group will automatically appear here.",description:"Routes direct incoming API requests to the appropriate gateway service based on paths, methods, and headers, ensuring efficient traffic flow.",learn_more:"Learn more"}}},delete:{title:"Delete a route",description:"Deleting this route will also remove any associated plugins. This action cannot be reversed."},errors:{general:"Routes could not be retrieved",delete:"The route could not be deleted at this time.",copy:"Failed to copy to clipboard",services:{fetch:"Could not fetch available services"}},copy:{success:"Copied {val} to clipboard",success_brief:"Successfully copied to clipboard"},form:{config_flavor:{label:"Define by"},config_types:{basic:{description:"Quickly set up a route with HTTPS protocol with the essentials: path, method, and host.",label:"Basic"},advanced:{description:"Define complex route logic with other protocols or additional paths or attributes such as headers.",label:"Advanced"}},protocols:{grpc:"GRPC",grpcs:"GRPCS","grpc,grpcs":"GRPC, GRPCS",http:"HTTP",https:"HTTPS","http,https":"HTTP, HTTPS",tls:"TLS",tcp:"TCP",udp:"UDP","tls,udp":"TLS, UDP","tcp,udp":"TCP, UDP","tcp,tls":"TCP, TLS","tcp,tls,udp":"TCP, TLS, UDP",ws:"WS",wss:"WSS","ws,wss":"WS, WSS",tls_passthrough:"TLS_PASSTHROUGH"},sections:{general:{title:"General information",description:"General information will help you identify and manage this route"},config:{title:"Route configuration",description:"Route configuration determines how this route will handle incoming requests"},routingRules:{title:"Routing rules"},routingExpression:{title:"Routing expression"}},fields:{service_id:{label:"Gateway service",placeholder:"Select a gateway service"},name:{label:"Name",placeholder:"Enter a unique name",tooltip:"The name of the route. Route names must be unique, and they are case sensitive. For example, there can be two different routes named 'test' and 'Test'."},service:{label:"Gateway service",tooltip:"The service this route is associated to. This is where the route proxies traffic to."},tags:{label:"Tags",tooltip:"An optional set of strings associated with the route for grouping and filtering.",placeholder:"Enter a list of tags separated by commas",help:"e.g. tag1, tag2, tag3"},protocols:{label:"Protocols",tooltip:"The protocols this route supports."},path_handling:{label:"Path handling",tooltip:"Controls how Kong modifies the request path before proxying to the upstream service. Use v1 for standardized, predictable path behavior. Use v0 for legacy compatibility."},https_redirect_status_code:{label:"HTTPS redirect status code",tooltip:"Specifies the HTTP status code for redirecting requests from HTTP to HTTPS. Use <code>301</code> or <code>308</code> for permanent redirects, <code>302</code> or <code>307</code> for temporary redirects."},regex_priority:{label:"Regex priority",tooltip:"Regex priority is determined by length first (longer patterns win), and when lengths are the same, more specific regexes are preferred. When two routes match the path and have the same <code>regex_priority</code>, the older one (lowest <code>created_at</code>) is used."},strip_path:{label:"Strip path",tooltip:"When enabled, Kong removes the portion of the request path that matches the route's path before forwarding the request to the upstream. If the request exactly matches the route, the result is <code>/</code>. Disable if that's not desired."},preserve_host:{label:"Preserve host",tooltip:"Keeps the original <code>Host</code> header when proxying requests. Enable this if the upstream service requires the client's <code>Host</code> value. Disable if the service expects its own hostname."},paths:{add:"Add a path",label:"Paths",label_singular:"Path",placeholder:"e.g. /api/v1",singular:"path",tooltip:"Match specific URL paths, such as <code>/api/v1</code>. Prefix with <code>~</code> to enable regex-based matching."},snis:{add:"Add an SNI",label:"SNIs",placeholder:"e.g. api.example.com",singular:"SNI",tooltip:"SNIs (Server Name Indications) that match the route when using stream routing."},hosts:{add:"Add a host",label:"Hosts",label_singular:"Host",placeholder:"e.g. example.com",singular:"host",tooltip:"Match specific domain names, such as <code>api.example.com</code>."},methods:{label:"Methods",placeholder:"Select methods",search_placeholder:"Search for a method or enter a custom method",singular:"method",tooltip:"Match specific HTTP methods, such as GET or POST. If no method is selected, all methods are included.",custom:{label:"Custom",placeholder:"Enter a custom method",tooltip:"Custom methods can be used with default selections. Uppercase characters are required."}},headers:{add:"Add a header",label:"Headers",singular:"header",tooltip:"Match specific headers, such as <code>x-api-version</code> or <code>x-region</code>. Doesn't accept the <code>Host</code> header. Provide only one entry and prefix with <code>~*</code> to enable regex-based matching.",name:{placeholder:"e.g. x-api-version"},values:{placeholder:"e.g. v1,v2"}},sources:{add:"Add a source",label:"Sources",singular:"source",tooltip:"A list of IP sources of incoming connections that match this route when using stream routing.",ip:{placeholder:"Enter a source IP"},port:{placeholder:"Enter a source port"}},destinations:{add:"Add a destination",label:"Destinations",singular:"destination",tooltip:"A list of IP destinations of incoming connections that match this route when using stream routing.",ip:{placeholder:"Enter a destination IP"},port:{placeholder:"Enter a destination port"}},response_buffering:{label:"Response buffering",tooltip:"Reads and buffers the full response from the upstream service before sending it to the client. Enable buffering if the client expects the complete response at once. Disable for faster streaming of large or chunked responses."},request_buffering:{label:"Request buffering",tooltip:"Reads and buffers the full request body before proxying. Enable buffering if the upstream service requires the complete request before processing. Disable for faster streaming of large or chunked requests."},expression:{label:"Expression",tooltip:"The route expression."},priority:{label:"Priority",tooltip:"A number used to choose which route resolves a given request when several routes match it using expression simultaneously."}},flavors:{traditional:"Traditional form",expressions:"Expressions editor"},show_more:"Show more",hint:{rules_message:"Choose at least one {routingRules} option.",single_rule:"{routingRules}",multiple_rules:"{routingRules} or {lastRoutingRule}",advanced:"To add more than one, use the advanced options."},warning:{cannotChangeFlavor:{create:"The format of the route cannot be changed once created.",edit:"This route was configured in the {format} format, and cannot be changed after creation. You can switch to the {format} tab to edit, or create a new route in a different format instead."}},expressions_editor:{loading:"Loading the expressions editor…",error:"Error occurred while loading the expressions editor. Please view the console for more details."},expression_playground:{test_link:"Test with router playground",supported_protocols_hint:"Currently only supports the following protocols: {protocols}"}}};function Oe(){const t=Ve.createI18n("en-us",Ae);return{i18n:t,i18nT:Ve.i18nTComponent(t)}}const M={useI18n:Oe},De={class:"kong-ui-entities-route-entity-config-card"},Me={key:2},He=e.defineComponent({__name:"RouteConfigCard",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t?.app)||t.app==="konnect"&&!t.controlPlaneId||t.app==="kongManager"&&typeof t.workspace!="string"||!t.entityId)},configCardDoc:{type:String,default:"",required:!1},hideTitle:{type:Boolean,default:!1},serviceId:{type:String,required:!1,default:null}},emits:["loading","fetch:error","fetch:success","navigation-click"],setup(t,{emit:E}){const d=E,r=t,{axiosInstance:n}=b.useAxios(r.config?.axiosRequestConfig),{i18n:{t:f}}=M.useI18n(),s=e.ref(""),T=e.ref(""),u=e.ref(!1),m=e.computed(()=>Q.item[r.config?.app]?.[r.serviceId?"forGatewayService":"all"].replace(/{serviceId}/gi,r.serviceId??"")),c=e.computed(()=>Q.item[r.config.app]?.getService),h=async N=>{if(s.value=r.serviceId||N?.service?.id,d("fetch:success",N),!s.value)return;let l=`${r.config.apiBaseUrl}${c.value}`;r.config.app==="konnect"&&(l=l.replace(/{controlPlaneId}/gi,r.config?.controlPlaneId||"")),l=l.replace(/\/{workspace}/gi,r.config?.workspace?`/${r.config.workspace}`:"").replace(/{serviceId}/gi,s.value||"");try{u.value=!0;const{data:p}=await n.get(l);T.value=p?.name||p?.id}catch(p){d("fetch:error",p)}finally{u.value=!1}},V=e.ref({id:{},name:{tooltip:f("form.fields.name.tooltip")},created_at:{},updated_at:{},service:{label:f("form.fields.service.label"),section:b.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.service.tooltip"),order:5},tags:{tooltip:f("form.fields.tags.tooltip"),order:6},protocols:{section:b.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.protocols.tooltip"),type:b.ConfigurationSchemaType.BadgeTag,order:7},paths:{section:b.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.paths.tooltip"),type:b.ConfigurationSchemaType.CopyBadge,order:8},hosts:{section:b.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.hosts.tooltip"),type:b.ConfigurationSchemaType.CopyBadge,order:9},snis:{label:f("form.fields.snis.label"),tooltip:f("form.fields.snis.tooltip"),order:10},headers:{section:b.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.headers.tooltip"),order:11},methods:{section:b.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.methods.tooltip"),type:b.ConfigurationSchemaType.BadgeMethod,order:12},sources:{section:b.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.sources.tooltip"),type:b.ConfigurationSchemaType.JsonArray,order:13},destinations:{section:b.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.destinations.tooltip"),type:b.ConfigurationSchemaType.JsonArray,order:14},https_redirect_status_code:{tooltip:f("form.fields.https_redirect_status_code.tooltip"),order:1},regex_priority:{tooltip:f("form.fields.regex_priority.tooltip"),order:2},strip_path:{tooltip:f("form.fields.strip_path.tooltip"),order:3},preserve_host:{tooltip:f("form.fields.preserve_host.tooltip"),order:4},request_buffering:{tooltip:f("form.fields.request_buffering.tooltip"),order:5},response_buffering:{tooltip:f("form.fields.response_buffering.tooltip"),order:6},path_handling:{tooltip:f("form.fields.path_handling.tooltip"),order:7}});return(N,l)=>{const p=e.resolveComponent("KSkeleton");return e.openBlock(),e.createElementBlock("div",De,[e.createVNode(e.unref(b.EntityBaseConfigCard),{config:t.config,"config-card-doc":t.configCardDoc,"config-schema":V.value,"entity-type":e.unref(b.SupportedEntityType).Route,"fetch-url":m.value,"hide-title":t.hideTitle,"onFetch:error":l[0]||(l[0]=g=>N.$emit("fetch:error",g)),"onFetch:success":h,onLoading:l[1]||(l[1]=g=>N.$emit("loading",g))},{service:e.withCtx(({row:g})=>[u.value?(e.openBlock(),e.createBlock(p,{key:0,"data-testid":"service-name-loader",type:"spinner"})):g.value&&g.value.id===s.value&&T.value?(e.openBlock(),e.createBlock(e.unref(b.InternalLinkItem),{key:1,item:{key:g.value.id,value:T.value,type:e.unref(b.ConfigurationSchemaType).LinkInternal},onNavigationClick:()=>N.$emit("navigation-click",g.value.id,"services")},null,8,["item","onNavigationClick"])):(e.openBlock(),e.createElementBlock("div",Me,e.toDisplayString("-")))]),_:1},8,["config","config-card-doc","config-schema","entity-type","fetch-url","hide-title"])])}}});var A=(t=>(t.TRADITIONAL="traditional",t.EXPRESSIONS="expressions",t))(A||{}),o=(t=>(t.PATHS="paths",t.SNIS="snis",t.HOSTS="hosts",t.METHODS="methods",t.HEADERS="headers",t.SOURCES="sources",t.DESTINATIONS="destinations",t))(o||{}),Y=(t=>(t.LOADING="loading",t.ERROR="error",t.READY="ready",t))(Y||{}),Z=(t=>(t.GET="GET",t.PUT="PUT",t.POST="POST",t.PATCH="PATCH",t.DELETE="DELETE",t.OPTIONS="OPTIONS",t.HEAD="HEAD",t.CONNECT="CONNECT",t.TRACE="TRACE",t))(Z||{});const ge=t=>t.routeFlavors.traditional===!0,ye=t=>t.routeFlavors.expressions===!0,D={[o.PATHS]:[""],[o.SNIS]:[""],[o.HOSTS]:[""],[o.METHODS]:[],[o.HEADERS]:[{header:"",values:""}],[o.SOURCES]:[{ip:"",port:null}],[o.DESTINATIONS]:[{ip:"",port:null}]},ue={http:[o.PATHS,o.METHODS,o.HOSTS,o.HEADERS],https:[o.PATHS,o.METHODS,o.HOSTS,o.HEADERS,o.SNIS],"http,https":[o.PATHS,o.METHODS,o.HOSTS,o.HEADERS,o.SNIS],"https,http":[o.PATHS,o.METHODS,o.HOSTS,o.HEADERS,o.SNIS],grpc:[o.PATHS,o.HOSTS,o.HEADERS],grpcs:[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS],"grpc,grpcs":[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS],"grpcs,grpc":[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS],udp:[o.SOURCES,o.DESTINATIONS],tls:[o.SOURCES,o.DESTINATIONS,o.SNIS],tcp:[o.SOURCES,o.DESTINATIONS],"tls,udp":[o.SOURCES,o.DESTINATIONS,o.SNIS],"udp,tls":[o.SOURCES,o.DESTINATIONS,o.SNIS],"tcp,udp":[o.SOURCES,o.DESTINATIONS],"udp,tcp":[o.SOURCES,o.DESTINATIONS],"tcp,tls":[o.SOURCES,o.DESTINATIONS,o.SNIS],"tls,tcp":[o.SOURCES,o.DESTINATIONS,o.SNIS],"tcp,tls,udp":[o.SOURCES,o.DESTINATIONS,o.SNIS],"tls,udp,tcp":[o.SOURCES,o.DESTINATIONS,o.SNIS],"udp,tcp,tls":[o.SOURCES,o.DESTINATIONS,o.SNIS],tls_passthrough:[o.SNIS],ws:[o.PATHS,o.HOSTS,o.HEADERS],wss:[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS],"ws,wss":[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS],"wss,ws":[o.PATHS,o.HOSTS,o.HEADERS,o.SNIS]},Se=[{label:"426",value:426},{label:"301",value:301},{label:"302",value:302},{label:"307",value:307},{label:"308",value:308}],Ne=[{label:"v0",value:"v0"},{label:"v1",value:"v1"}],ne={https_redirect_status_code:426,strip_path:!0,preserve_host:!1,request_buffering:!0,response_buffering:!0},Ie={...ne,paths:[""],regex_priority:0,path_handling:"v0",expression:"",priority:0},ae="https",$e=e.defineComponent({__name:"RuleControlsAdd",props:{routingRulesEntity:{}},emits:["add"],setup(t,{emit:E}){const d=t,r=E,n=e.inject("configType","basic"),{i18n:{t:f}}=M.useI18n(),s=e.computed(()=>f(`form.fields.${d.routingRulesEntity}.add`));return(T,u)=>{const m=e.resolveComponent("KButton");return e.unref(n)!=="basic"?(e.openBlock(),e.createBlock(m,{key:0,appearance:"tertiary",class:"routing-rule-add-item-button","data-testid":`add-${t.routingRulesEntity}`,onClick:u[0]||(u[0]=c=>r("add"))},{default:e.withCtx(()=>[e.createVNode(e.unref(j.AddIcon)),e.createElementVNode("span",null,e.toDisplayString(s.value),1)]),_:1},8,["data-testid"])):e.createCommentVNode("",!0)}}}),$=(t,E)=>{const d=t.__vccOpts||t;for(const[r,n]of E)d[r]=n;return d},ee=$($e,[["__scopeId","data-v-f1f4cfc9"]]),Pe="#afb7c5",Ue="#0044f4",Le="16px",te=e.defineComponent({__name:"RuleControlsRemove",props:{disabled:{type:Boolean},routingRulesEntity:{}},emits:["remove"],setup(t,{emit:E}){const d=E,r=e.inject("configType","basic");return(n,f)=>{const s=e.resolveComponent("KButton");return e.unref(r)!=="basic"?(e.openBlock(),e.createBlock(s,{key:0,appearance:"tertiary","data-testid":`remove-${t.routingRulesEntity}`,disabled:t.disabled,icon:"",onClick:f[0]||(f[0]=T=>d("remove"))},{default:e.withCtx(()=>[e.createVNode(e.unref(j.CloseIcon),{color:t.disabled?`var(--kui-color-text-disabled, ${e.unref(Pe)})`:`var(--kui-color-text-primary, ${e.unref(Ue)})`},null,8,["color"])]),_:1},8,["data-testid","disabled"])):e.createCommentVNode("",!0)}}}),Fe={class:"routing-rule-container"},Ke=["innerHTML"],qe=$(e.defineComponent({__name:"DestinationRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=M.useI18n(),r=e.useModel(t,"modelValue"),n=E;return(f,s)=>{const T=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",Fe,[e.createVNode(T,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.destinations.tooltip")},null,8,Ke)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(d)("form.fields.destinations.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(m,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"routing-rule-input"},[e.createVNode(u,{modelValue:r.value[c].ip,"onUpdate:modelValue":h=>r.value[c].ip=h,modelModifiers:{trim:!0},"data-testid":`route-form-destinations-ip-input-${c+1}`,placeholder:e.unref(d)("form.fields.destinations.ip.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(u,{modelValue:r.value[c].port,"onUpdate:modelValue":h=>r.value[c].port=h,modelModifiers:{number:!0},"data-testid":`route-form-destinations-port-input-${c+1}`,max:"65535",min:"0",placeholder:e.unref(d)("form.fields.destinations.port.placeholder"),type:"number"},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(te,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).DESTINATIONS,onRemove:h=>n("remove",c)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(ee,{"routing-rules-entity":e.unref(o).DESTINATIONS,onAdd:s[0]||(s[0]=m=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-3eb40a37"]]),Ge={class:"routing-rule-container"},je=["innerHTML"],We=$(e.defineComponent({__name:"HeaderRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=M.useI18n(),r=e.useModel(t,"modelValue"),n=E;return(f,s)=>{const T=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",Ge,[e.createVNode(T,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.headers.tooltip")},null,8,je)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(d)("form.fields.headers.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(m,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"routing-rule-input"},[e.createVNode(u,{modelValue:r.value[c].header,"onUpdate:modelValue":h=>r.value[c].header=h,modelModifiers:{trim:!0},"data-testid":`route-form-headers-name-input-${c+1}`,placeholder:e.unref(d)("form.fields.headers.name.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(u,{modelValue:r.value[c].values,"onUpdate:modelValue":h=>r.value[c].values=h,modelModifiers:{trim:!0},"data-testid":`route-form-headers-values-input-${c+1}`,placeholder:e.unref(d)("form.fields.headers.values.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(te,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).HEADERS,onRemove:h=>n("remove",c)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(ee,{"routing-rules-entity":e.unref(o).HEADERS,onAdd:s[0]||(s[0]=m=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-d3bede0b"]]),Xe={class:"routing-rule-container"},ze=["innerHTML"],Je=$(e.defineComponent({__name:"HostRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=M.useI18n(),r=e.useModel(t,"modelValue"),n=E,f=e.inject("configType","basic");return(s,T)=>{const u=e.resolveComponent("KLabel"),m=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",Xe,[e.createVNode(u,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.hosts.tooltip")},null,8,ze)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(f)==="basic"?e.unref(d)("form.fields.hosts.label_singular"):e.unref(d)("form.fields.hosts.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(f)==="basic"?r.value.slice(0,1):r.value,(c,h)=>(e.openBlock(),e.createElementBlock("div",{key:h,class:"routing-rule-input"},[e.createVNode(m,{modelValue:r.value[h],"onUpdate:modelValue":V=>r.value[h]=V,modelModifiers:{trim:!0},"data-testid":`route-form-hosts-input-${h+1}`,placeholder:e.unref(d)("form.fields.hosts.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(te,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).HOSTS,onRemove:V=>n("remove",h)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(ee,{"routing-rules-entity":e.unref(o).HOSTS,onAdd:T[0]||(T[0]=c=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-dccd9082"]]),Qe={class:"routing-rule-container","data-testid":"route-form-methods"},Ye=["innerHTML"],Ze={class:"routing-rule-input"},ve=$(e.defineComponent({__name:"MethodRules",props:{methods:{required:!0},methodsModifiers:{},customMethods:{required:!0},customMethodsModifiers:{}},emits:["update:methods","update:customMethods"],setup(t){const{i18n:{t:E}}=M.useI18n(),d=e.useModel(t,"methods"),r=e.useModel(t,"customMethods"),n=e.computed(()=>d.value.filter(m=>Object.keys(Z).includes(m)).concat(r.value.map(m=>m.value))),f=e.computed(()=>Object.keys(Z).map(m=>({label:m,value:m})).concat(r.value.map(m=>({label:m.label,value:m.value,custom:!0})))),s=m=>!f.value.map(c=>c.value.toLowerCase()).includes(m.toLowerCase()),T=(m,c)=>{c?r.value.push(m):r.value=r.value.filter(h=>h.value!==m.value)},u=m=>{d.value=m};return(m,c)=>{const h=e.resolveComponent("KLabel"),V=e.resolveComponent("KMultiselect");return e.openBlock(),e.createElementBlock("div",Qe,[e.createVNode(h,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(E)("form.fields.methods.tooltip")},null,8,Ye)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(E)("form.fields.methods.label")),1)]),_:1}),e.createElementVNode("div",Ze,[e.createVNode(V,{"enable-item-creation":"","item-creation-validator":s,items:f.value,"model-value":n.value,placeholder:e.unref(E)("form.fields.methods.placeholder"),"search-placeholder":e.unref(E)("form.fields.methods.search_placeholder"),onItemAdded:c[0]||(c[0]=N=>T(N,!0)),onItemRemoved:c[1]||(c[1]=N=>T(N,!1)),"onUpdate:modelValue":u},null,8,["items","model-value","placeholder","search-placeholder"])])])}}}),[["__scopeId","data-v-6c94d6d2"]]),et={class:"routing-rule-container"},tt=["innerHTML"],ot=$(e.defineComponent({__name:"PathRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=M.useI18n(),r=e.useModel(t,"modelValue"),n=E,f=e.inject("configType","basic");return(s,T)=>{const u=e.resolveComponent("KLabel"),m=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",et,[e.createVNode(u,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.paths.tooltip")},null,8,tt)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(f)==="basic"?e.unref(d)("form.fields.paths.label_singular"):e.unref(d)("form.fields.paths.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(f)==="basic"?r.value.slice(0,1):r.value,(c,h)=>(e.openBlock(),e.createElementBlock("div",{key:h,class:"routing-rule-input"},[e.createVNode(m,{modelValue:r.value[h],"onUpdate:modelValue":V=>r.value[h]=V,modelModifiers:{trim:!0},"data-testid":`route-form-paths-input-${h+1}`,placeholder:e.unref(d)("form.fields.paths.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(te,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).PATHS,onRemove:V=>n("remove",h)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(ee,{"routing-rules-entity":e.unref(o).PATHS,onAdd:T[0]||(T[0]=c=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-eb440a9e"]]),rt={class:"routing-rule-container"},lt=["innerHTML"],st=$(e.defineComponent({__name:"SniRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=M.useI18n(),r=e.useModel(t,"modelValue"),n=E;return(f,s)=>{const T=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",rt,[e.createVNode(T,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.snis.tooltip")},null,8,lt)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(d)("form.fields.snis.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(m,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"routing-rule-input"},[e.createVNode(u,{modelValue:r.value[c],"onUpdate:modelValue":h=>r.value[c]=h,modelModifiers:{trim:!0},"data-testid":`route-form-snis-input-${c+1}`,placeholder:e.unref(d)("form.fields.snis.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(te,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).SNIS,onRemove:h=>n("remove",c)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(ee,{"routing-rules-entity":e.unref(o).SNIS,onAdd:s[0]||(s[0]=m=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-e6782e08"]]),nt={class:"routing-rule-container"},at=["innerHTML"],it=$(e.defineComponent({__name:"SourceRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=M.useI18n(),r=e.useModel(t,"modelValue"),n=E;return(f,s)=>{const T=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",nt,[e.createVNode(T,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(d)("form.fields.sources.tooltip")},null,8,at)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(d)("form.fields.sources.label")),1)]),_:1}),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(m,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"routing-rule-input"},[e.createVNode(u,{modelValue:r.value[c].ip,"onUpdate:modelValue":h=>r.value[c].ip=h,modelModifiers:{trim:!0},"data-testid":`route-form-sources-ip-input-${c+1}`,placeholder:e.unref(d)("form.fields.sources.ip.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(u,{modelValue:r.value[c].port,"onUpdate:modelValue":h=>r.value[c].port=h,modelModifiers:{number:!0},"data-testid":`route-form-sources-port-input-${c+1}`,max:"65535",min:"0",placeholder:e.unref(d)("form.fields.sources.port.placeholder"),type:"number"},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(te,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).SOURCES,onRemove:h=>n("remove",c)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(ee,{"routing-rules-entity":e.unref(o).SOURCES,onAdd:s[0]||(s[0]=m=>n("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-448078c1"]]),dt={class:"traditional-rules-hint"},ct={key:0},pt=["innerHTML"],ut={key:0,class:"route-form-fields-container route-form-advanced-fields-container"},ft=["innerHTML"],mt=["innerHTML"],ht=["innerHTML"],gt=["innerHTML"],yt=["innerHTML"],St=["innerHTML"],xe=$(e.defineComponent({__name:"TraditionalRules",props:e.mergeModels({protocols:{},hideAdvanced:{type:Boolean},readonly:{type:Boolean},configType:{}},{fields:{required:!0},fieldsModifiers:{},customMethods:{required:!0},customMethodsModifiers:{}}),emits:["update:fields","update:customMethods"],setup(t){const{i18nT:E,i18n:d,i18n:{t:r}}=M.useI18n(),n=d.source.form.protocols,f=t,s=e.useModel(t,"fields"),T=e.useModel(t,"customMethods"),u=l=>{switch(l){case o.PATHS:Array.isArray(s.value.paths)?s.value.paths.push([...D[o.PATHS]][0]):s.value.paths=[...D[o.PATHS]];break;case o.SNIS:Array.isArray(s.value.snis)?s.value.snis.push([...D[o.SNIS]][0]):s.value.snis=[...D[o.SNIS]];break;case o.HOSTS:Array.isArray(s.value.hosts)?s.value.hosts.push([...D[o.HOSTS]][0]):s.value.hosts=[...D[o.HOSTS]];break;case o.METHODS:s.value.methods||(s.value.methods={...D[o.METHODS]});break;case o.HEADERS:Array.isArray(s.value.headers)?s.value.headers.push({...D[o.HEADERS][0]}):s.value.headers=[{...D[o.HEADERS][0]}];break;case o.SOURCES:Array.isArray(s.value.sources)?s.value.sources.push({...D[o.SOURCES][0]}):s.value.sources=[{...D[o.SOURCES][0]}];break;case o.DESTINATIONS:Array.isArray(s.value.destinations)?s.value.destinations.push({...D[o.DESTINATIONS][0]}):s.value.destinations=[{...D[o.DESTINATIONS][0]}];break}},m=async(l,p)=>{if(typeof p<"u"){const g=s.value[l];if(Array.isArray(g)&&(g.splice(p,1),g.length>0))return}await e.nextTick(()=>{delete s.value[l]})},c=l=>l.some(p=>f.protocols.includes(p)),h=e.computed(()=>new Set(ue[f.protocols])),V=e.computed(()=>{if(c(["tls_passthrough"]))return[N(o.SNIS)];const l=(f.configType==="basic"?[o.PATHS,o.METHODS,o.HOSTS]:ue[f.protocols]).map(p=>N(p));return[[...l].splice(0,l.length-1).join(", "),l[l.length-1]]}),N=l=>d.source.form.fields[l]?.singular||"";return(l,p)=>{const g=e.resolveComponent("KCheckbox"),K=e.resolveComponent("KSelect"),J=e.resolveComponent("KInput"),P=e.resolveComponent("KCard");return e.openBlock(),e.createBlock(P,null,{default:e.withCtx(()=>[e.createElementVNode("span",dt,[e.createVNode(e.unref(E),{keypath:"form.hint.rules_message"},{protocol:e.withCtx(()=>[e.createElementVNode("b",null,e.toDisplayString(e.unref(n)[t.protocols]),1)]),routingRules:e.withCtx(()=>[e.createVNode(e.unref(E),{keypath:V.value[1]?"form.hint.multiple_rules":"form.hint.single_rule"},{routingRules:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(V.value[0]),1)]),lastRoutingRule:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(V.value[1]),1)]),_:1},8,["keypath"])]),_:1}),t.configType==="basic"?(e.openBlock(),e.createElementBlock("span",ct,e.toDisplayString(e.unref(r)("form.hint.advanced")),1)):e.createCommentVNode("",!0)]),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>[s.value.paths&&h.value.has(e.unref(o).PATHS)?(e.openBlock(),e.createBlock(ot,{key:"paths-container",modelValue:s.value.paths,"onUpdate:modelValue":p[0]||(p[0]=a=>s.value.paths=a),onAdd:p[1]||(p[1]=a=>u(e.unref(o).PATHS)),onRemove:p[2]||(p[2]=a=>m(e.unref(o).PATHS,a))},null,8,["modelValue"])):e.createCommentVNode("",!0),c(["http","https","ws","wss"])?(e.openBlock(),e.createBlock(g,{key:1,modelValue:s.value.strip_path,"onUpdate:modelValue":p[3]||(p[3]=a=>s.value.strip_path=a),class:"route-form-strip-path","data-testid":"route-form-strip-path",disabled:!s.value.paths?.some(Boolean),label:e.unref(r)("form.fields.strip_path.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.strip_path.tooltip")},null,8,pt)]),_:1},8,["modelValue","disabled","label"])):e.createCommentVNode("",!0),s.value.methods&&h.value.has(e.unref(o).METHODS)?(e.openBlock(),e.createBlock(ve,{key:"methods-container","custom-methods":T.value,"onUpdate:customMethods":p[4]||(p[4]=a=>T.value=a),methods:s.value.methods,"onUpdate:methods":p[5]||(p[5]=a=>s.value.methods=a)},null,8,["custom-methods","methods"])):e.createCommentVNode("",!0),s.value.hosts&&h.value.has(e.unref(o).HOSTS)?(e.openBlock(),e.createBlock(Je,{key:"hosts-container",modelValue:s.value.hosts,"onUpdate:modelValue":p[6]||(p[6]=a=>s.value.hosts=a),onAdd:p[7]||(p[7]=a=>u(e.unref(o).HOSTS)),onRemove:p[8]||(p[8]=a=>m(e.unref(o).HOSTS,a))},null,8,["modelValue"])):e.createCommentVNode("",!0),s.value.headers&&t.configType==="advanced"&&h.value.has(e.unref(o).HEADERS)?(e.openBlock(),e.createBlock(We,{key:"headers-container",modelValue:s.value.headers,"onUpdate:modelValue":p[9]||(p[9]=a=>s.value.headers=a),onAdd:p[10]||(p[10]=a=>u(e.unref(o).HEADERS)),onRemove:p[11]||(p[11]=a=>m(e.unref(o).HEADERS,a))},null,8,["modelValue"])):e.createCommentVNode("",!0),s.value.sources&&h.value.has(e.unref(o).SOURCES)?(e.openBlock(),e.createBlock(it,{key:"sources-container",modelValue:s.value.sources,"onUpdate:modelValue":p[12]||(p[12]=a=>s.value.sources=a),onAdd:p[13]||(p[13]=a=>u(e.unref(o).SOURCES)),onRemove:p[14]||(p[14]=a=>m(e.unref(o).SOURCES,a))},null,8,["modelValue"])):e.createCommentVNode("",!0),s.value.destinations&&h.value.has(e.unref(o).DESTINATIONS)?(e.openBlock(),e.createBlock(qe,{key:"destinations-container",modelValue:s.value.destinations,"onUpdate:modelValue":p[15]||(p[15]=a=>s.value.destinations=a),onAdd:p[16]||(p[16]=a=>u(e.unref(o).DESTINATIONS)),onRemove:p[17]||(p[17]=a=>m(e.unref(o).DESTINATIONS,a))},null,8,["modelValue"])):e.createCommentVNode("",!0),s.value.snis&&t.configType==="advanced"&&h.value.has(e.unref(o).SNIS)?(e.openBlock(),e.createBlock(st,{key:"snis-container",modelValue:s.value.snis,"onUpdate:modelValue":p[18]||(p[18]=a=>s.value.snis=a),onAdd:p[19]||(p[19]=a=>u(e.unref(o).SNIS)),onRemove:p[20]||(p[20]=a=>m(e.unref(o).SNIS,a))},null,8,["modelValue"])):e.createCommentVNode("",!0)]),_:1}),t.hideAdvanced?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",ut,[s.value.paths?.some(Boolean)?(e.openBlock(),e.createBlock(K,{key:0,modelValue:s.value.path_handling,"onUpdate:modelValue":p[21]||(p[21]=a=>s.value.path_handling=a),"data-testid":"route-form-path-handling",items:e.unref(Ne),label:e.unref(r)("form.fields.path_handling.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}},readonly:t.readonly,width:"100%"},{"label-tooltip":e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.path_handling.tooltip")},null,8,ft)]),_:1},8,["modelValue","items","label","readonly"])):e.createCommentVNode("",!0),e.createVNode(K,{modelValue:s.value.https_redirect_status_code,"onUpdate:modelValue":p[22]||(p[22]=a=>s.value.https_redirect_status_code=a),"data-testid":"route-form-http-redirect-status-code",items:e.unref(Se),label:e.unref(r)("form.fields.https_redirect_status_code.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}},readonly:t.readonly,width:"100%"},{"label-tooltip":e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.https_redirect_status_code.tooltip")},null,8,mt)]),_:1},8,["modelValue","items","label","readonly"]),e.createVNode(J,{modelValue:s.value.regex_priority,"onUpdate:modelValue":p[23]||(p[23]=a=>s.value.regex_priority=a),autocomplete:"off","data-testid":"route-form-regex-priority",label:e.unref(r)("form.fields.regex_priority.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}},readonly:t.readonly,type:"number"},{"label-tooltip":e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.regex_priority.tooltip")},null,8,ht)]),_:1},8,["modelValue","label","readonly"]),e.createVNode(g,{modelValue:s.value.preserve_host,"onUpdate:modelValue":p[24]||(p[24]=a=>s.value.preserve_host=a),"data-testid":"route-form-preserve-host",label:e.unref(r)("form.fields.preserve_host.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.preserve_host.tooltip")},null,8,gt)]),_:1},8,["modelValue","label"]),e.createVNode(g,{modelValue:s.value.request_buffering,"onUpdate:modelValue":p[25]||(p[25]=a=>s.value.request_buffering=a),"data-testid":"route-form-request-buffering",label:e.unref(r)("form.fields.request_buffering.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.request_buffering.tooltip")},null,8,yt)]),_:1},8,["modelValue","label"]),e.createVNode(g,{modelValue:s.value.response_buffering,"onUpdate:modelValue":p[26]||(p[26]=a=>s.value.response_buffering=a),"data-testid":"route-form-response-buffering",label:e.unref(r)("form.fields.response_buffering.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(r)("form.fields.response_buffering.tooltip")},null,8,St)]),_:1},8,["modelValue","label"])]))]),_:1})}}}),[["__scopeId","data-v-0ade8d72"]]),bt=e.defineComponent({__name:"RouteFormExpressionsEditorLoader",props:e.mergeModels({protocol:{},showExpressionsModalEntry:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["notify"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=M.useI18n(),r={render:()=>e.h("div",d("form.expressions_editor.loading"))},n={render:()=>e.h("div",d("form.expressions_editor.error"))},f=e.defineAsyncComponent({loader:async()=>Promise.resolve().then(()=>Lt),loadingComponent:r,errorComponent:n}),s=t,T=E,u=e.ref(Y.LOADING),m=e.useModel(t,"modelValue"),c=h=>{m.value=h};return e.onMounted(async()=>{try{await(await import("@kong-ui-public/expressions")).asyncInit,u.value=Y.READY}catch(h){u.value=Y.ERROR,console.error(h)}}),(h,V)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[u.value===e.unref(Y).ERROR?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n),{key:0,"data-testid":"route-form-expressions-editor-loader-error"})):u.value===e.unref(Y).LOADING?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r),{key:1,"data-testid":"route-form-expressions-editor-loader-loading"})):(e.openBlock(),e.createBlock(e.unref(f),{key:2,modelValue:m.value,"onUpdate:modelValue":V[0]||(V[0]=N=>m.value=N),protocol:s.protocol,"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:V[1]||(V[1]=N=>T("notify",N))},{default:e.withCtx(()=>[e.createVNode(e.unref(j.RocketIcon),{size:`var(--kui-icon-size-30, ${e.unref(Le)})`},null,8,["size"]),e.createElementVNode("span",null,e.toDisplayString(e.unref(d)("form.expression_playground.test_link")),1)]),_:1},8,["modelValue","protocol","show-expressions-modal-entry"])),e.renderSlot(h.$slots,"after-editor",{expression:{value:m.value,update:c},state:u.value})],64))}}),Tt={class:"route-form-routing-rules-title-container"},_t={class:"routing-rules-title"},Et={class:"route-form-fields-container route-form-advanced-fields-container"},Ct=$(e.defineComponent({__name:"ExpressionsRules",props:e.mergeModels({protocols:{},hideAdvanced:{type:Boolean},readonly:{type:Boolean},showExpressionsModalEntry:{type:Boolean}},{fields:{required:!0},fieldsModifiers:{}}),emits:e.mergeModels(["notify"],["update:fields"]),setup(t,{emit:E}){const{i18n:{t:d}}=M.useI18n(),r=t,n=e.useModel(t,"fields"),f=E,s=e.ref(!0),T=e.computed(()=>r.protocols.split(",")||[]),u=m=>m.some(c=>r.protocols.includes(c));return(m,c)=>{const h=e.resolveComponent("KCard"),V=e.resolveComponent("KSelect"),N=e.resolveComponent("KInput"),l=e.resolveComponent("KCheckbox"),p=e.resolveComponent("KCollapse");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(h,null,{title:e.withCtx(()=>[e.createElementVNode("div",Tt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.value,g=>(e.openBlock(),e.createElementBlock("span",{key:g,class:"protocol-title"},e.toDisplayString(g.toUpperCase()),1))),128)),e.createElementVNode("span",_t,e.toDisplayString(e.unref(d)("form.sections.routingExpression.title")),1)])]),default:e.withCtx(()=>[e.createVNode(bt,{modelValue:n.value.expression,"onUpdate:modelValue":c[0]||(c[0]=g=>n.value.expression=g),protocol:T.value[0],"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:c[1]||(c[1]=g=>f("notify",g))},{"after-editor":e.withCtx(g=>[e.renderSlot(m.$slots,"after-expressions-editor",{expression:g.expression,state:g.state},void 0,!0)]),_:3},8,["modelValue","protocol","show-expressions-modal-entry"])]),_:3}),e.createVNode(p,{modelValue:s.value,"onUpdate:modelValue":c[8]||(c[8]=g=>s.value=g),class:"route-form-advanced-fields-collapse","trigger-alignment":"leading","trigger-label":e.unref(d)("form.show_more")},{default:e.withCtx(()=>[e.createVNode(h,null,{default:e.withCtx(()=>[e.createElementVNode("div",Et,[e.createVNode(V,{modelValue:n.value.https_redirect_status_code,"onUpdate:modelValue":c[2]||(c[2]=g=>n.value.https_redirect_status_code=g),"data-testid":"route-form-http-redirect-status-code",items:e.unref(Se),label:e.unref(d)("form.fields.https_redirect_status_code.label"),readonly:t.readonly,width:"100%"},null,8,["modelValue","items","label","readonly"]),e.createVNode(N,{modelValue:n.value.priority,"onUpdate:modelValue":c[3]||(c[3]=g=>n.value.priority=g),autocomplete:"off","data-testid":"route-form-priority",label:e.unref(d)("form.fields.priority.label"),"label-attributes":{info:e.unref(d)("form.fields.priority.tooltip"),tooltipAttributes:{maxWidth:"400"}},readonly:t.readonly,type:"number"},null,8,["modelValue","label","label-attributes","readonly"]),u(["http","https","ws","wss","tls","tcp","udp","tls_passthrough"])?(e.openBlock(),e.createBlock(l,{key:0,modelValue:n.value.strip_path,"onUpdate:modelValue":c[4]||(c[4]=g=>n.value.strip_path=g),"data-testid":"route-form-strip-path",label:e.unref(d)("form.fields.strip_path.label")},null,8,["modelValue","label"])):e.createCommentVNode("",!0),e.createVNode(l,{modelValue:n.value.preserve_host,"onUpdate:modelValue":c[5]||(c[5]=g=>n.value.preserve_host=g),"data-testid":"route-form-preserve-host",label:e.unref(d)("form.fields.preserve_host.label")},null,8,["modelValue","label"]),e.createVNode(l,{modelValue:n.value.request_buffering,"onUpdate:modelValue":c[6]||(c[6]=g=>n.value.request_buffering=g),"data-testid":"route-form-request-buffering",label:e.unref(d)("form.fields.request_buffering.label")},null,8,["modelValue","label"]),e.createVNode(l,{modelValue:n.value.response_buffering,"onUpdate:modelValue":c[7]||(c[7]=g=>n.value.response_buffering=g),"data-testid":"route-form-response-buffering",label:e.unref(d)("form.fields.response_buffering.label")},null,8,["modelValue","label"])])]),_:1})]),_:1},8,["modelValue","trigger-label"])],64)}}}),[["__scopeId","data-v-e7571a47"]]),kt={class:"config-type-container"},Vt={key:0,class:"config-flavor"},we=$(e.defineComponent({__name:"RouteFormRulesComposer",props:e.mergeModels({protocols:{},routeFlavors:{},readonly:{type:Boolean},recordFlavor:{},showExpressionsModalEntry:{type:Boolean},tooltips:{},isWsSupported:{type:Boolean},hideProtocols:{type:Boolean}},{configType:{required:!0},configTypeModifiers:{},configFlavor:{required:!0},configFlavorModifiers:{},fields:{default:()=>e.reactive({...ne,paths:[""],regex_priority:0,path_handling:"v0",expression:"",priority:0})},fieldsModifiers:{},customMethods:{default:()=>e.reactive([])},customMethodsModifiers:{}}),emits:e.mergeModels(["notify","update:payload","update:protocols"],["update:configType","update:configFlavor","update:fields","update:customMethods"]),setup(t,{emit:E}){const d=t,r=e.useModel(t,"configType"),n=e.useModel(t,"configFlavor"),f=e.useModel(t,"fields"),s=e.useModel(t,"customMethods"),T=E,{i18n:{t:u}}=M.useI18n(),m=[{value:A.TRADITIONAL,label:u("form.flavors.traditional")},{value:A.EXPRESSIONS,label:u("form.flavors.expressions")}],c=e.computed(()=>[{label:u("form.protocols.grpc"),value:"grpc"},{label:u("form.protocols.grpcs"),value:"grpcs"},{label:u("form.protocols.grpc,grpcs"),value:"grpc,grpcs"},{label:u("form.protocols.http"),value:"http"},{label:u("form.protocols.https"),value:"https"},{label:u("form.protocols.http,https"),value:"http,https"},{label:u("form.protocols.tcp"),value:"tcp"},{label:u("form.protocols.tls"),value:"tls"},{label:u("form.protocols.tls,udp"),value:"tls,udp"},{label:u("form.protocols.tcp,udp"),value:"tcp,udp"},{label:u("form.protocols.tcp,tls"),value:"tcp,tls"},{label:u("form.protocols.tcp,tls,udp"),value:"tcp,tls,udp"},{label:u("form.protocols.tls_passthrough"),value:"tls_passthrough"},{label:u("form.protocols.udp"),value:"udp"},...d.isWsSupported?[{label:u("form.protocols.ws"),value:"ws"},{label:u("form.protocols.wss"),value:"wss"},{label:u("form.protocols.ws,wss"),value:"ws,wss"}]:[]]),h=e.computed(()=>d.recordFlavor?d.recordFlavor:n.value),V=(a,C)=>{if(!new Set(ue[d.protocols]).has(a))return[];if([o.PATHS,o.HOSTS,o.METHODS,o.SNIS].includes(a))return[...C].filter(R=>!!R);if(a===o.SOURCES||a===o.DESTINATIONS)return[...C].filter(R=>!!R.ip||!!R.port).map(R=>({ip:R.ip||void 0,port:!R.port&&R.port!==0?void 0:R.port}));if(a===o.HEADERS)return[...C].filter(R=>!!R.header)},N=a=>a.some(C=>d.protocols.includes(C)),l=()=>{if(h.value!==A.TRADITIONAL)return null;const a=f.value,C=V(o.HEADERS,a.headers||[])||D[o.HEADERS];return C.length===0?null:C.reduce((O,R)=>(O[R.header]=R.values.split(","),O),{})},p=e.computed(()=>(f.value.methods||[]).filter(O=>Object.keys(Z).includes(O)).concat(s.value.map(O=>O.label.toUpperCase()))),g=a=>a?.length?a:null,K=e.computed(()=>({https_redirect_status_code:f.value.https_redirect_status_code,strip_path:N(["http","https","ws","wss"])?f.value.strip_path:!1,preserve_host:f.value.preserve_host,request_buffering:f.value.request_buffering,response_buffering:f.value.response_buffering})),J=e.computed(()=>{switch(h.value){case A.TRADITIONAL:{const a=f.value,C=g(V(o.PATHS,a.paths||[])),O=g(V(o.HOSTS,a.hosts||[])),R={...K.value,methods:g(V(o.METHODS,p.value)),hosts:r.value==="basic"&&O?O.slice(0,1):O,paths:r.value==="basic"&&C?C.slice(0,1):C,headers:r.value==="basic"?null:l(),regex_priority:Number(a.regex_priority),path_handling:a.path_handling,sources:g(V(o.SOURCES,a.sources||[])),destinations:g(V(o.DESTINATIONS,a.destinations||[])),snis:r.value==="basic"?null:g(V(o.SNIS,a.snis||[]))};return{type:h.value,payload:R}}case A.EXPRESSIONS:{const a=f.value;return{type:h.value,payload:{...K.value,expression:a.expression,priority:Number(a.priority)}}}default:return}}),P=a=>{a&&T("update:protocols",a)};return e.watch([()=>d.recordFlavor,()=>d.routeFlavors],([a,C])=>{if(a){n.value=a;return}n.value=!C.traditional&&C.expressions?A.EXPRESSIONS:A.TRADITIONAL},{immediate:!0,deep:!0}),e.watch(r,a=>{a==="basic"&&(n.value=A.TRADITIONAL,T("update:protocols",ae))}),e.watch(J,a=>{T("update:payload",a)},{deep:!0,immediate:!0}),(a,C)=>{const O=e.resolveComponent("KRadio"),R=e.resolveComponent("KLabel"),ie=e.resolveComponent("KTooltip"),de=e.resolveComponent("KSegmentedControl"),L=e.resolveComponent("KAlert"),W=e.resolveComponent("KSelect");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",kt,[e.createVNode(O,{modelValue:r.value,"onUpdate:modelValue":C[0]||(C[0]=w=>r.value=w),card:"","card-orientation":"horizontal","data-testid":"route-form-config-type-basic",description:e.unref(u)("form.config_types.basic.description"),disabled:!t.routeFlavors.traditional||t.recordFlavor===e.unref(A).EXPRESSIONS,label:e.unref(u)("form.config_types.basic.label"),"selected-value":"basic"},null,8,["modelValue","description","disabled","label"]),e.createVNode(O,{modelValue:r.value,"onUpdate:modelValue":C[1]||(C[1]=w=>r.value=w),card:"","card-orientation":"horizontal","data-testid":"route-form-config-type-advanced",description:e.unref(u)("form.config_types.advanced.description"),label:e.unref(u)("form.config_types.advanced.label"),"selected-value":"advanced"},null,8,["modelValue","description","label"])]),r.value==="basic"?(e.openBlock(),e.createBlock(xe,{key:0,"custom-methods":s.value,"onUpdate:customMethods":C[2]||(C[2]=w=>s.value=w),fields:f.value,"onUpdate:fields":C[3]||(C[3]=w=>f.value=w),"config-type":"basic","hide-advanced":"",protocols:t.protocols,readonly:t.readonly},null,8,["custom-methods","fields","protocols","readonly"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t.routeFlavors.traditional&&t.routeFlavors.expressions?(e.openBlock(),e.createElementBlock("div",Vt,[e.createVNode(R,{class:"config-flavor-label"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(u)("form.config_flavor.label")),1)]),_:1}),e.createVNode(de,{modelValue:n.value,"onUpdate:modelValue":C[4]||(C[4]=w=>n.value=w),class:"config-flavor-control","data-testid":"route-form-config-flavor",options:m},{"option-label":e.withCtx(({option:w})=>[e.createElementVNode("span",null,e.toDisplayString(w.label),1),t.tooltips?.[w.value]?(e.openBlock(),e.createBlock(ie,{key:0,class:"route-form-config-tabs-tooltip",text:t.tooltips?.[w.value],"tooltip-id":`route-form-config-tabs-tooltip-${w.value}`},{default:e.withCtx(()=>[e.createVNode(e.unref(j.InfoIcon))]),_:1},8,["text","tooltip-id"])):e.createCommentVNode("",!0)]),_:1},8,["modelValue"])])):e.createCommentVNode("",!0),t.routeFlavors.traditional&&t.routeFlavors.expressions&&(!t.recordFlavor||t.recordFlavor!==n.value)?(e.openBlock(),e.createBlock(L,{key:1,appearance:t.recordFlavor?"warning":"info",class:"route-form-config-type-immutable-alert","data-testid":"route-config-type-immutable-alert"},{default:e.withCtx(()=>[t.recordFlavor?t.recordFlavor!==n.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(u)("form.warning.cannotChangeFlavor.edit",{format:e.unref(u)(`form.flavors.${t.recordFlavor}`)})),1)],64)):e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(u)("form.warning.cannotChangeFlavor.create")),1)],64))]),_:1},8,["appearance"])):e.createCommentVNode("",!0),!t.recordFlavor||!(t.routeFlavors.traditional&&t.routeFlavors.expressions&&t.recordFlavor!==n.value)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.hideProtocols?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(W,{key:0,"data-testid":"route-form-protocols",items:c.value,label:e.unref(u)("form.fields.protocols.label"),"label-attributes":{info:e.unref(u)("form.fields.protocols.tooltip"),tooltipAttributes:{maxWidth:"400"}},"model-value":t.protocols,readonly:t.readonly,required:"",width:"100%","onUpdate:modelValue":P},null,8,["items","label","label-attributes","model-value","readonly"])),n.value===e.unref(A).TRADITIONAL?(e.openBlock(),e.createBlock(xe,{key:1,"custom-methods":s.value,"onUpdate:customMethods":C[5]||(C[5]=w=>s.value=w),fields:f.value,"onUpdate:fields":C[6]||(C[6]=w=>f.value=w),"config-type":"advanced",protocols:t.protocols,readonly:t.readonly},null,8,["custom-methods","fields","protocols","readonly"])):(e.openBlock(),e.createBlock(Ct,{key:2,fields:f.value,"onUpdate:fields":C[7]||(C[7]=w=>f.value=w),protocols:t.protocols,readonly:t.readonly,"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:C[8]||(C[8]=w=>T("notify",w))},null,8,["fields","protocols","readonly","show-expressions-modal-entry"]))],64)):e.createCommentVNode("",!0)],64))],64)}}}),[["__scopeId","data-v-5c24422c"]]),Re=t=>!(typeof t.expression=="string"&&t.expression.length>0||(t.protocols||[]).sort().join(",")!==ae||t[o.PATHS]?.length>1||t[o.HOSTS]?.length>1||t[o.HEADERS]&&typeof t[o.HEADERS]=="object"||t[o.SNIS]?.length>0||t[o.SOURCES]?.length>0||t[o.DESTINATIONS]?.length>0||["path_handling","regex_priority","https_redirect_status_code","preserve_host","request_buffering","response_buffering"].some(d=>t[d]!==Ie[d])),Nt={class:"kong-ui-entities-route-form"},It={key:1},xt={"data-testid":"no-search-results"},wt={class:"route-form-service-dropdown-item"},Rt={class:"select-item-label"},Bt={class:"select-item-description"},At=$(e.defineComponent({__name:"RouteForm",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t?.app)||t?.app==="konnect"&&!t?.controlPlaneId||t?.app==="kongManager"&&typeof t?.workspace!="string"||!t?.cancelRoute)},routeId:{type:String,required:!1,default:null},serviceId:{type:String,required:!1,default:null},hideSectionsInfo:{type:Boolean,required:!1,default:!1},hideNameField:{type:Boolean,required:!1,default:!1},hideServiceField:{type:Boolean,required:!1,default:!1},routeFlavors:{type:Object,required:!1,default:()=>({traditional:!0})},configTabTooltips:{type:Object,required:!1,default:()=>{}},showExpressionsModalEntry:{type:Boolean,required:!1,default:!1}},emits:["update","error","loading","model-updated","notify"],setup(t,{expose:E,emit:d}){const r=t,n=d,f=e.ref("basic"),s=e.ref(!r.routeFlavors.traditional&&r.routeFlavors.expressions?A.EXPRESSIONS:A.TRADITIONAL),T=e.ref(void 0),u=e.computed(()=>{if(T.value)return T.value;if(s.value)return s.value;if(r.routeFlavors.traditional)return A.TRADITIONAL;if(r.routeFlavors.expressions)return A.EXPRESSIONS}),{i18n:{t:m}}=M.useI18n(),c=ke.useRouter(),{axiosInstance:h}=b.useAxios(r.config?.axiosRequestConfig),{getMessageFromError:V}=b.useErrors(),N=i=>i.name?`${i.name} - ${i.value}`:i.value,l=e.reactive({routeFlavors:r.routeFlavors,fields:{name:"",protocols:ae,tags:"",service_id:"",...ne,paths:[""],snis:[""],hosts:[""],methods:[],headers:[{...D[o.HEADERS][0]}],sources:[{...D[o.SOURCES][0]}],destinations:[{...D[o.DESTINATIONS][0]}],regex_priority:0,path_handling:"v0",expression:"",priority:0},isReadonly:!1,errorMessage:""});e.watch(()=>r.routeFlavors,i=>{l.routeFlavors=i,i.traditional||(f.value="advanced")},{immediate:!0,deep:!0});const p=e.ref(),g=e.ref([]),K=e.ref([]),J=e.reactive({name:"",protocols:ae,tags:"",service_id:"",...ne,path_handling:"v0",regex_priority:0,expression:"",priority:0}),P=r.config.app==="konnect"||b.useGatewayFeatureSupported({gatewayInfo:r.config.gatewayInfo,supportedRange:{enterprise:["3.0"]}}),a=e.computed(()=>r.routeId?b.EntityBaseFormType.Edit:b.EntityBaseFormType.Create);a.value===b.EntityBaseFormType.Create&&(l.fields.name=`new-route-${new Date().toISOString().replace(/\D/g,"").slice(0,17)}`);const C=e.computed(()=>Q.form[r.config?.app]?.fetch?.[r.serviceId?"forGatewayService":"all"].replace(/{serviceId}/gi,r.serviceId||"")),O=()=>{c.push(r.config?.cancelRoute)},R=i=>{n("loading",i)},ie=i=>{n("error",i)},de=i=>Object.entries(i).map(_=>({header:_[0],values:_[1]?.join()})),L=i=>i.some(_=>l.fields.protocols.includes(_)),W=i=>{if(r.routeId){const x=typeof i.expression=="string"&&i.expression.length>0?A.EXPRESSIONS:A.TRADITIONAL;T.value=x,Re(i)||(f.value="advanced")}i?.service?.id&&(l.fields.service_id=i.service.id),l.fields.name=i?.name||"";const _=i?.tags||[];l.fields.tags=_?.join(", ")||"",l.fields.preserve_host=typeof i?.preserve_host>"u"?!1:i?.preserve_host,l.fields.https_redirect_status_code=i?.https_redirect_status_code||426,i?.protocols?.length&&(i.protocols.length>1?l.fields.protocols=i.protocols.join():l.fields.protocols=i.protocols[0]),l.fields.request_buffering=typeof i?.request_buffering>"u"?!0:i?.request_buffering,l.fields.response_buffering=typeof i?.response_buffering>"u"?!0:i?.response_buffering,l.fields.strip_path=typeof i?.strip_path>"u"?!0:i?.strip_path,ge(l)&&(l.fields.regex_priority=i?.regex_priority||0,l.fields.path_handling=i?.path_handling||"v0",i?.paths&&(l.fields.paths=i.paths),i?.snis&&(l.fields.snis=i.snis),i?.hosts&&(l.fields.hosts=i.hosts),i?.methods&&(l.fields.methods=i.methods.filter(x=>Object.keys(Z).includes(x)),g.value=i.methods.filter(x=>!Object.keys(Z).includes(x)).map(x=>({label:x,value:x})),K.value=[...g.value]),i?.headers&&(l.fields.headers=de(i.headers)),i?.sources&&(l.fields.sources=i.sources),i?.destinations&&(l.fields.destinations=i.destinations)),ye(l)&&(l.fields.expression=i?.expression||"",l.fields.priority=i?.priority||0),Object.assign(J,JSON.parse(JSON.stringify(l.fields)))},w=e.computed(()=>{switch(u.value){case A.TRADITIONAL:{if(ge(l)){const i=l.fields.hosts?!!l.fields.hosts.filter(Boolean).length:null,_=l.fields.paths?!!l.fields.paths.filter(Boolean).length:null,x=l.fields.headers?l.fields.headers.some(({header:F})=>!!F):null,S=l.fields.snis?!!l.fields.snis.filter(Boolean).length:null,y=l.fields.destinations?l.fields.destinations.some(({ip:F,port:G})=>!!F||!!G):null,q=l.fields.sources?l.fields.sources.some(({ip:F,port:G})=>!!F||!!G):null,le=l.fields.methods?!!l.fields.methods.filter(Boolean).length:null;return!!l.fields.protocols&&(L(["http"])&&!!(i||le||_||x)||L(["https"])&&!!(i||le||_||x||S)||L(["grpc"])&&!!(i||_||x)||L(["grpcs","wss"])&&!!(i||_||x||S)||L(["udp","tls"])&&!!(y||q||S)||L(["tcp"])&&!!(y||q)||L(["tls_passthrough"])&&!!S||L(["ws"])&&!!(i||_||x))}break}case A.EXPRESSIONS:{if(ye(l))return l.fields.expression.length>0;break}}return!0}),fe=e.computed(()=>!Ce(l.fields,J)||!Ce(g.value,K.value)),ce=e.computed(()=>{let i=`${r.config.apiBaseUrl}${Q.form[r.config.app][a.value][r.serviceId?"forGatewayService":"all"]}`;return r.config.app==="konnect"&&(i=i.replace(/{controlPlaneId}/gi,r.config?.controlPlaneId||"")),i.replace(/\/{workspace}/gi,r.config?.workspace?`/${r.config.workspace}`:"").replace(/{serviceId}/gi,r.serviceId||"").replace(/{id}/gi,r.routeId??"")});e.watch(()=>l.fields,()=>{n("model-updated",v.value)},{deep:!0});const v=e.computed(()=>({...!r.hideNameField&&{name:l.fields.name||null},protocols:l.fields.protocols.split(","),tags:l.fields.tags.split(",")?.map(i=>String(i||"").trim())?.filter(i=>i!==""),service:l.fields.service_id?{id:l.fields.service_id}:null,...p.value?.payload})),be=i=>{switch(u.value){case A.TRADITIONAL:{if(!("regex_priority"in i&&"path_handling"in i))return!1;break}case A.EXPRESSIONS:{if(!("priority"in i))return!1;break}}return"service"in i&&"tags"in i&&"protocols"in i},pe=async i=>{const _=i&&be(i)?i:v.value;try{l.isReadonly=!0;let x;a.value==="create"?x=await h.post(ce.value,_):a.value==="edit"&&(x=r.config?.app==="konnect"?await h.put(ce.value,_):await h.patch(ce.value,_)),W(x?.data),n("update",x?.data)}catch(x){l.errorMessage=V(x),n("error",x)}finally{l.isReadonly=!1}},{debouncedQueryChange:X,loading:oe,error:re,loadItems:me,results:Te}=b.useDebouncedFilter(r.config,Q.form[r.config.app].services,void 0,{fetchedItemsKey:"data",searchKeys:["id","name"]}),_e=e.computed(()=>re.value?m("errors.services.fetch"):""),Ee=e.computed(()=>Te.value?.map(i=>({label:i.id,name:i.name,value:i.id})));return e.onBeforeMount(async()=>{r.hideServiceField||await me(),r.serviceId&&(l.fields.service_id=r.serviceId)}),e.onMounted(()=>{n("model-updated",v.value)}),E({saveFormData:pe,payload:v}),e.provide("configType",f),(i,_)=>{const x=e.resolveComponent("KInput"),S=e.resolveComponent("KSelect");return e.openBlock(),e.createElementBlock("div",Nt,[e.createVNode(e.unref(b.EntityBaseForm),{"can-submit":w.value&&fe.value,config:t.config,"edit-id":t.routeId,"entity-type":e.unref(b.SupportedEntityType).Route,"error-message":l.errorMessage||_e.value,"fetch-url":C.value,"form-fields":v.value,"is-readonly":l.isReadonly,onCancel:O,"onFetch:error":ie,"onFetch:success":W,onLoading:R,onSubmit:pe},{"form-actions":e.withCtx(()=>[e.renderSlot(i.$slots,"form-actions",{canSubmit:w.value&&fe.value,cancel:O,submit:pe},void 0,!0)]),default:e.withCtx(()=>[e.createVNode(e.unref(b.EntityFormSection),{description:e.unref(m)("form.sections.general.description"),"hide-info-header":t.hideSectionsInfo,title:e.unref(m)("form.sections.general.title")},{default:e.withCtx(()=>[t.hideNameField?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(x,{key:0,modelValue:l.fields.name,"onUpdate:modelValue":_[0]||(_[0]=y=>l.fields.name=y),modelModifiers:{trim:!0},autocomplete:"off","data-testid":"route-form-name",label:e.unref(m)("form.fields.name.label"),placeholder:e.unref(m)("form.fields.name.placeholder"),readonly:l.isReadonly,type:"text"},null,8,["modelValue","label","placeholder","readonly"])),t.hideServiceField?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",It,[e.createVNode(S,{modelValue:l.fields.service_id,"onUpdate:modelValue":_[1]||(_[1]=y=>l.fields.service_id=y),clearable:"","data-testid":"route-form-service-id",disabled:!!t.serviceId,"enable-filtering":"","filter-function":()=>!0,items:Ee.value,label:e.unref(m)("form.fields.service_id.label"),loading:e.unref(oe),placeholder:e.unref(m)("form.fields.service_id.placeholder"),readonly:l.isReadonly,"reuse-item-template":"",width:"100%",onQueryChange:e.unref(X)},{loading:e.withCtx(()=>[e.createElementVNode("div",null,e.toDisplayString(e.unref(m)("actions.loading")),1)]),empty:e.withCtx(()=>[e.createElementVNode("div",xt,e.toDisplayString(e.unref(m)("search.no_results")),1)]),"selected-item-template":e.withCtx(({item:y})=>[e.createTextVNode(e.toDisplayString(N(y)),1)]),"item-template":e.withCtx(({item:y})=>[e.createElementVNode("div",wt,[e.createElementVNode("span",Rt,e.toDisplayString(y.name),1),e.createElementVNode("span",Bt,e.toDisplayString(y.value),1)])]),_:1},8,["modelValue","disabled","items","label","loading","placeholder","readonly","onQueryChange"])])),e.createVNode(x,{modelValue:l.fields.tags,"onUpdate:modelValue":_[2]||(_[2]=y=>l.fields.tags=y),modelModifiers:{trim:!0},autocomplete:"off","data-testid":"route-form-tags",help:e.unref(m)("form.fields.tags.help"),label:e.unref(m)("form.fields.tags.label"),placeholder:e.unref(m)("form.fields.tags.placeholder"),readonly:l.isReadonly,type:"text"},null,8,["modelValue","help","label","placeholder","readonly"])]),_:1},8,["description","hide-info-header","title"]),e.createVNode(e.unref(b.EntityFormSection),{description:e.unref(m)("form.sections.config.description"),"hide-info-header":t.hideSectionsInfo,title:e.unref(m)("form.sections.config.title")},{default:e.withCtx(()=>[e.createVNode(we,{"config-flavor":s.value,"onUpdate:configFlavor":_[3]||(_[3]=y=>s.value=y),"config-type":f.value,"onUpdate:configType":_[4]||(_[4]=y=>f.value=y),"custom-methods":g.value,"onUpdate:customMethods":_[5]||(_[5]=y=>g.value=y),fields:l.fields,"onUpdate:fields":_[6]||(_[6]=y=>l.fields=y),"is-ws-supported":e.unref(P),protocols:l.fields.protocols,readonly:l.isReadonly,"record-flavor":T.value,"route-flavors":t.routeFlavors,"show-expressions-modal-entry":t.showExpressionsModalEntry,tooltips:t.configTabTooltips,onNotify:_[7]||(_[7]=y=>n("notify",y)),"onUpdate:payload":_[8]||(_[8]=y=>p.value=y),"onUpdate:protocols":_[9]||(_[9]=y=>l.fields.protocols=y)},null,8,["config-flavor","config-type","custom-methods","fields","is-ws-supported","protocols","readonly","record-flavor","route-flavors","show-expressions-modal-entry","tooltips"])]),_:1},8,["description","hide-info-header","title"])]),_:3},8,["can-submit","config","edit-id","entity-type","error-message","fetch-url","form-fields","is-readonly"])])}}}),[["__scopeId","data-v-2720091c"]]),Ot={class:"kong-ui-entities-routes-list"},Dt={class:"button-row"},Mt={key:1},Ht={key:1},$t={key:1},Pt={class:"route-list-cell-expression"},Ut=$(e.defineComponent({__name:"RouteList",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t?.app)||!t.createRoute||!t.getViewRoute||!t.getEditRoute||t.app==="kongManager"&&!t.isExactMatch&&!t.filterSchema)},cacheIdentifier:{type:String,default:""},canCreate:{type:Function,required:!1,default:async()=>!0},canDelete:{type:Function,required:!1,default:async()=>!0},canEdit:{type:Function,required:!1,default:async()=>!0},canRetrieve:{type:Function,required:!1,default:async()=>!0},canDebug:{type:Function,required:!1,default:async()=>!1},title:{type:String,default:""},titleTag:{type:String,default:"h2"},useActionOutside:{type:Boolean,default:!1},hideTraditionalColumns:{type:Boolean,default:!1},hasExpressionColumn:{type:Boolean,default:!1},copyCurlEnabled:{type:Boolean,default:!1}},emits:["error","click:learn-more","copy:success","copy:error","delete:success","click:copy-as-curl"],setup(t,{emit:E}){const d=E,r=t,{i18n:{t:n,formatUnixTimeStamp:f}}=M.useI18n(),s=ke.useRouter(),{axiosInstance:T}=b.useAxios(r.config?.axiosRequestConfig),{handleStateChange:u,hasRecords:m}=b.useTableState(()=>P.value),c=e.computed(()=>m.value&&r.config.app==="konnect"),h=e.computed(()=>!!r.config.serviceId),V=e.computed(()=>r.config.app!=="kongManager"||!!r.config.disableSorting),N={name:{label:n("routes.list.table_headers.name"),searchable:!0,sortable:!0,hidable:!1},protocols:{label:n("routes.list.table_headers.protocols"),searchable:!0},...!r.hideTraditionalColumns&&{hosts:{label:n("routes.list.table_headers.hosts"),searchable:!0},methods:{label:n("routes.list.table_headers.methods"),searchable:!0},paths:{label:n("routes.list.table_headers.paths"),searchable:!0}},...r.hasExpressionColumn&&{expression:{label:n("routes.list.table_headers.expression"),tooltip:!0}},tags:{label:n("routes.list.table_headers.tags"),sortable:!1},updated_at:{label:n("routes.list.table_headers.updated_at"),sortable:!0},created_at:{label:n("routes.list.table_headers.created_at"),sortable:!0}},l={columnVisibility:{created_at:!1}},p=N,g=S=>{let y=`${r.config.apiBaseUrl}${S}`;return r.config.app==="konnect"&&(y=y.replace(/{controlPlaneId}/gi,r.config?.controlPlaneId||"")),y.replace(/\/{workspace}/gi,r.config?.workspace?`/${r.config.workspace}`:"").replace(/{serviceId}/gi,r.config?.serviceId||"")},K=e.computed(()=>g(Q.list[r.config.app][r.config.serviceId?"forGatewayService":"all"])),J=e.computed(()=>r.config.app==="konnect"&&r.config.workspace&&P.value?g(Q.list.konnect.search):K.value),P=e.ref(""),a=e.computed(()=>{const S=r.config.app==="konnect"||r.config.isExactMatch;if(S)return{isExactMatch:S,placeholder:n(`search.placeholder.${r.config.isExactMatch?"exact":r.config.app}`)};const{name:y,protocols:q,hosts:le,methods:F,paths:G,expression:z}=N,he={name:y,protocols:q,hosts:le,methods:F,paths:G,...r.hasExpressionColumn&&{expression:z}};return{isExactMatch:S,fields:he,schema:r.config.filterSchema}}),{fetcher:C,fetcherState:O,fetcherCacheKey:R}=b.useFetcher(e.computed(()=>({...r.config,cacheIdentifier:r.cacheIdentifier})),J),ie=S=>S.headerKey==="expression"?{style:{maxWidth:"250px",overflowX:"hidden",textOverflow:"ellipsis"}}:{},de=()=>{P.value=""},L=()=>{R.value++},W=e.ref(null),w=async(S,y)=>{if(!await y(S.id)){d("copy:error",{entity:S,field:"id",message:n("errors.copy")});return}d("copy:success",{entity:S,field:"id",message:n("copy.success",{val:S.id})})},fe=async(S,y)=>{const q=JSON.stringify(S);if(!await y(q)){d("copy:error",{entity:S,message:n("errors.copy")});return}d("copy:success",{entity:S,message:n("copy.success_brief")})},ce=async S=>{await r.canRetrieve?.(S)&&s.push(r.config.getViewRoute(S.id))},v=S=>({label:n("actions.view"),to:r.config.getViewRoute(S)}),be=S=>({label:n("actions.edit"),to:r.config.getEditRoute(S)}),pe=S=>{if(r.config.getDebugRoute)return{label:n("actions.debugger"),to:r.config.getDebugRoute(S)}},X=e.ref(void 0),oe=e.ref(!1),re=e.ref(!1),me=e.ref(""),Te=b.useDeleteUrlBuilder(r.config,K.value),_e=S=>{X.value=S,oe.value=!0},Ee=()=>{oe.value=!1},i=async()=>{if(X.value?.id){re.value=!0;try{await T.delete(Te(X.value.id)),re.value=!1,oe.value=!1,R.value++,d("delete:success",X.value)}catch(S){me.value=S.response?.data?.message||S.message||n("errors.delete"),d("error",S)}finally{re.value=!1}}};e.watch(O,S=>{if(S.status===b.FetcherStatus.Error){W.value={title:n("errors.general")},S.error?.response?.data?.message&&(W.value.message=S.error.response.data.message),d("error",S.error);return}W.value=null});const _=e.ref({ctaPath:r.config.createRoute,ctaText:void 0,message:`${n("routes.list.empty_state.description")}${r.config.additionMessageForEmptyState?` ${r.config.additionMessageForEmptyState}`:""}`,title:n("routes.title")}),x=e.ref(!1);return e.onBeforeMount(async()=>{x.value=await r.canCreate(),x.value&&(_.value.title=n("routes.list.empty_state.title"),_.value.ctaText=n("actions.create"))}),(S,y)=>{const q=e.resolveComponent("KButton"),le=e.resolveComponent("KEmptyState"),F=e.resolveComponent("KBadge"),G=e.resolveComponent("KTruncate"),z=e.resolveComponent("KDropdownItem"),he=e.resolveComponent("KClipboardProvider");return e.openBlock(),e.createElementBlock("div",Ot,[e.createVNode(e.unref(b.EntityBaseTable),{"cache-identifier":t.cacheIdentifier,"cell-attributes":ie,"default-table-preferences":l,"disable-sorting":V.value,"empty-state-options":_.value,"enable-entity-actions":"","error-message":W.value,fetcher:e.unref(C),"fetcher-cache-key":e.unref(R),"pagination-type":"offset","preferences-storage-key":"kong-ui-entities-routes-list",query:P.value,"table-headers":e.unref(p),title:t.title,"title-tag":t.titleTag,onClearSearchInput:de,"onClick:row":y[7]||(y[7]=k=>ce(k)),onSort:L,onState:e.unref(u)},e.createSlots({"toolbar-filter":e.withCtx(()=>[e.createVNode(e.unref(b.EntityFilter),{modelValue:P.value,"onUpdate:modelValue":y[0]||(y[0]=k=>P.value=k),config:a.value},null,8,["modelValue","config"])]),"toolbar-button":e.withCtx(()=>[(e.openBlock(),e.createBlock(e.Teleport,{disabled:!t.useActionOutside,to:"#kong-ui-app-page-header-action-button"},[e.createElementVNode("div",Dt,[!h.value&&c.value?(e.openBlock(),e.createBlock(q,{key:0,appearance:"secondary",class:"open-learning-hub","data-testid":"routes-learn-more-button",icon:"",onClick:y[1]||(y[1]=k=>S.$emit("click:learn-more"))},{default:e.withCtx(()=>[e.createVNode(e.unref(j.BookIcon),{decorative:""})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(b.PermissionsWrapper),{"auth-function":()=>t.canCreate()},{default:e.withCtx(()=>[e.createVNode(q,{appearance:"primary","data-testid":"toolbar-add-route",size:t.useActionOutside?"medium":"large",to:t.config.createRoute},{default:e.withCtx(()=>[e.createVNode(e.unref(j.AddIcon)),e.createTextVNode(" "+e.toDisplayString(e.unref(n)("routes.list.toolbar_actions.new_route")),1)]),_:1},8,["size","to"])]),_:1},8,["auth-function"])])],8,["disabled"]))]),name:e.withCtx(({rowValue:k})=>[e.createElementVNode("b",null,e.toDisplayString(k??"-"),1)]),protocols:e.withCtx(({rowValue:k})=>[e.createVNode(G,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,B=>(e.openBlock(),e.createBlock(F,{key:B,appearance:"neutral",onClick:y[3]||(y[3]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(B),1)]),_:2},1024))),128))]),_:2},1024)]),hosts:e.withCtx(({rowValue:k})=>[k?.length>0?(e.openBlock(),e.createBlock(G,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,B=>(e.openBlock(),e.createBlock(F,{key:B,appearance:"neutral",tooltip:B,"truncation-tooltip":"",onClick:y[4]||(y[4]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(B),1)]),_:2},1032,["tooltip"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",Mt,"-"))]),methods:e.withCtx(({rowValue:k})=>[k?.length>0?(e.openBlock(),e.createBlock(G,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,B=>(e.openBlock(),e.createBlock(F,{key:B,appearance:Object.values(e.unref(Be.BadgeMethodAppearances)).includes(B.toLowerCase())?B.toLowerCase():"custom",onClick:y[5]||(y[5]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(B),1)]),_:2},1032,["appearance"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",Ht,"-"))]),paths:e.withCtx(({rowValue:k})=>[k?.length>0?(e.openBlock(),e.createBlock(G,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,B=>(e.openBlock(),e.createBlock(F,{key:B,appearance:"neutral",tooltip:B,"truncation-tooltip":"",onClick:y[6]||(y[6]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(B),1)]),_:2},1032,["tooltip"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",$t,"-"))]),tags:e.withCtx(({rowValue:k})=>[e.createVNode(e.unref(b.TableTags),{tags:k},null,8,["tags"])]),expression:e.withCtx(({rowValue:k})=>[e.createElementVNode("span",Pt,e.toDisplayString(k||"-"),1)]),created_at:e.withCtx(({rowValue:k})=>[e.createTextVNode(e.toDisplayString(e.unref(f)(k)),1)]),updated_at:e.withCtx(({row:k,rowValue:B})=>[e.createTextVNode(e.toDisplayString(e.unref(f)(B??k.created_at)),1)]),actions:e.withCtx(({row:k})=>[e.createVNode(he,null,{default:e.withCtx(({copyToClipboard:B})=>[e.createVNode(z,{"data-testid":"action-entity-copy-id",onClick:Ft=>w(k,B)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n)("actions.copy_id")),1)]),_:1},8,["onClick"])]),_:2},1024),e.createVNode(he,null,{default:e.withCtx(({copyToClipboard:B})=>[e.createVNode(z,{"data-testid":"action-entity-copy-json",onClick:Ft=>fe(k,B)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n)("actions.copy_json")),1)]),_:1},8,["onClick"])]),_:2},1024),t.copyCurlEnabled?(e.openBlock(),e.createBlock(z,{key:0,"data-testid":"action-entity-copy-curl",onClick:B=>d("click:copy-as-curl",k)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n)("actions.copy_curl")),1)]),_:1},8,["onClick"])):e.createCommentVNode("",!0),e.createVNode(e.unref(b.PermissionsWrapper),{"auth-function":()=>t.canRetrieve(k)},{default:e.withCtx(()=>[e.createVNode(z,{"data-testid":"action-entity-view","has-divider":"",item:v(k.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(b.PermissionsWrapper),{"auth-function":()=>t.canDebug(k)},{default:e.withCtx(()=>[t.config.getDebugRoute?(e.openBlock(),e.createBlock(z,{key:0,"data-testid":"action-entity-debug",item:pe(k.id)},null,8,["item"])):e.createCommentVNode("",!0)]),_:2},1032,["auth-function"]),e.createVNode(e.unref(b.PermissionsWrapper),{"auth-function":()=>t.canEdit(k)},{default:e.withCtx(()=>[e.createVNode(z,{"data-testid":"action-entity-edit",item:be(k.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(b.PermissionsWrapper),{"auth-function":()=>t.canDelete(k)},{default:e.withCtx(()=>[e.createVNode(z,{danger:"","data-testid":"action-entity-delete","has-divider":"",onClick:B=>_e(k)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n)("actions.delete")),1)]),_:1},8,["onClick"])]),_:2},1032,["auth-function"])]),_:2},[!P.value&&t.config.app==="konnect"?{name:"empty-state",fn:e.withCtx(()=>[e.createVNode(le,{"data-testid":t.config.serviceId?"nested-routes-entity-empty-state":"routes-entity-empty-state","icon-background":"",message:e.unref(n)("routes.list.empty_state_v2.description"),title:e.unref(n)("routes.list.empty_state_v2.title")},e.createSlots({icon:e.withCtx(()=>[e.createVNode(e.unref(j.ForwardIcon),{decorative:""})]),action:e.withCtx(()=>[x.value?(e.openBlock(),e.createBlock(q,{key:0,"data-testid":"entity-create-button",to:t.config.createRoute},{default:e.withCtx(()=>[e.createVNode(e.unref(j.AddIcon),{decorative:""}),e.createTextVNode(" "+e.toDisplayString(e.unref(n)("routes.list.toolbar_actions.new_route")),1)]),_:1},8,["to"])):e.createCommentVNode("",!0),e.createVNode(q,{appearance:"secondary","data-testid":"entity-learn-more-button",onClick:y[2]||(y[2]=k=>S.$emit("click:learn-more"))},{default:e.withCtx(()=>[e.createVNode(e.unref(j.BookIcon),{decorative:""}),e.createTextVNode(" "+e.toDisplayString(e.unref(n)("routes.list.empty_state_v2.learn_more")),1)]),_:1})]),_:2},[t.config?.isControlPlaneGroup?{name:"default",fn:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n)("routes.list.empty_state_v2.group")),1)]),key:"0"}:void 0]),1032,["data-testid","message","title"])]),key:"0"}:void 0]),1032,["cache-identifier","disable-sorting","empty-state-options","error-message","fetcher","fetcher-cache-key","query","table-headers","title","title-tag","onState"]),e.createVNode(e.unref(b.EntityDeleteModal),{"action-pending":re.value,description:e.unref(n)("delete.description"),"entity-name":X.value&&(X.value.name||X.value.id),"entity-type":e.unref(b.EntityTypes).Route,error:me.value,title:e.unref(n)("delete.title"),visible:oe.value,onCancel:Ee,onProceed:i},null,8,["action-pending","description","entity-name","entity-type","error","title","visible"])])}}}),[["__scopeId","data-v-25020eed"]]),Lt=Object.freeze(Object.defineProperty({__proto__:null,default:e.defineComponent({__name:"RouteFormExpressionsEditor",props:e.mergeModels({protocol:{},showExpressionsModalEntry:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["notify"],["update:modelValue"]),setup(t,{emit:E}){const{i18n:{t:d}}=M.useI18n(),r=t,n=e.useModel(t,"modelValue"),f=E,s=e.ref(!1),T=e.computed(()=>se.PROTOCOL_TO_SCHEMA[r.protocol]),u=e.computed(()=>se.HTTP_BASED_PROTOCOLS.includes(r.protocol??"")),m=e.computed(()=>{if(!(!r.showExpressionsModalEntry||u.value))return d("form.expression_playground.supported_protocols_hint",{protocols:se.HTTP_BASED_PROTOCOLS.join(", ")})}),c=N=>{n.value=N,s.value=!1},h=N=>{f("notify",N)},V=()=>{u.value&&(s.value=!0)};return(N,l)=>{const p=e.resolveComponent("KTooltip");return e.openBlock(),e.createElementBlock(e.Fragment,null,[T.value!==void 0?(e.openBlock(),e.createBlock(e.unref(se.ExpressionsEditor),{key:0,modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=g=>n.value=g),schema:T.value},null,8,["modelValue","schema"])):e.createCommentVNode("",!0),e.createVNode(p,{placement:"bottom-start",text:m.value},{default:e.withCtx(()=>[t.showExpressionsModalEntry?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass({disabled:!u.value,"route-form-open-in-playground":!0}),"data-testid":"open-router-playground",onClick:V},[e.renderSlot(N.$slots,"default")],2)):e.createCommentVNode("",!0)]),_:3},8,["text"]),t.showExpressionsModalEntry&&u.value?(e.openBlock(),e.createBlock(e.unref(se.RouterPlaygroundModal),{key:1,"initial-expression":n.value,"is-visible":s.value,onCancel:l[1]||(l[1]=g=>s.value=!1),onCommit:c,onNotify:h},null,8,["initial-expression","is-visible"])):e.createCommentVNode("",!0)],64)}}})},Symbol.toStringTag,{value:"Module"}));I.DEFAULT_PROTOCOL=ae,I.ExpressionsEditorState=Y,I.HTTP_REDIRECT_STATUS_CODES=Se,I.INITIAL_ROUTE_RULES_FIELDS=Ie,I.INITIAL_SHARED_ROUTE_RULES_FIELDS=ne,I.INITIAL_TRADITIONAL_ROUTE_RULES_VALUES=D,I.Methods=Z,I.PATH_HANDLING_OPTIONS=Ne,I.PROTOCOLS_TO_ROUTE_RULES=ue,I.RouteConfigCard=He,I.RouteFlavor=A,I.RouteForm=At,I.RouteFormRulesComposer=we,I.RouteList=Ut,I.RoutingRulesEntities=o,I.isDefinedByBasic=Re,I.stateHasExpressionsFlavor=ye,I.stateHasTraditionalFlavor=ge,Object.defineProperty(I,Symbol.toStringTag,{value:"Module"})}));