@kong-ui-public/entities-routes 3.21.38 → 3.22.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.
- package/dist/{RouteFormExpressionsEditor-D7YVzkAA.js → RouteFormExpressionsEditor-g_pek2To.js} +1 -1
- package/dist/entities-routes.es.js +1 -1
- package/dist/entities-routes.umd.js +1 -1
- package/dist/{index-D2YEWovP.js → index-D0v96L9G.js} +527 -527
- package/dist/style.css +1 -1
- package/dist/types/components/RouteConfigCard.vue.d.ts +5 -5
- package/dist/types/components/RouteConfigCard.vue.d.ts.map +1 -1
- package/dist/types/components/RouteForm.vue.d.ts +10 -10
- package/dist/types/components/RouteForm.vue.d.ts.map +1 -1
- package/dist/types/components/RouteList.vue.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/{RouteFormExpressionsEditor-D7YVzkAA.js → RouteFormExpressionsEditor-g_pek2To.js}
RENAMED
|
@@ -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-
|
|
3
|
+
import { c as F } from "./index-D0v96L9G.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-
|
|
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-D0v96L9G.js";
|
|
2
2
|
export {
|
|
3
3
|
R as DEFAULT_PROTOCOL,
|
|
4
4
|
o as ExpressionsEditorState,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(x,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):(x=typeof globalThis<"u"?globalThis:x||self,e(x["kong-ui-public-entities-routes"]={},x.Vue,x["kong-ui-public-entities-shared"],x.isEqual,x.VueRouter,x.KongIcons,x.Kongponents,x["kong-ui-public-expressions"],x["kong-ui-public-i18n"]))})(this,function(x,e,N,Ee,Ce,j,we,ie,ke){"use strict";const L="/v2/control-planes/{controlPlaneId}/core-entities",F="/{workspace}",oe={list:{konnect:{all:`${L}/routes`,forGatewayService:`${L}/services/{serviceId}/routes`},kongManager:{all:`${F}/routes`,forGatewayService:`${F}/services/{serviceId}/routes`}},form:{konnect:{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}`}},kongManager:{services:`${F}/services`,create:{all:`${F}/routes`,forGatewayService:`${F}/services/{serviceId}/routes`},fetch:{all:`${F}/routes/{id}`,forGatewayService:`${F}/services/{serviceId}/routes/{id}`},edit:{all:`${F}/routes/{id}`,forGatewayService:`${F}/services/{serviceId}/routes/{id}`}}},item:{konnect:{getService:`${L}/services/{serviceId}`,all:`${L}/routes/{id}`,forGatewayService:`${L}/services/{serviceId}/routes/{id}`},kongManager:{getService:`${F}/services/{serviceId}`,all:`${F}/routes/{id}`,forGatewayService:`${F}/services/{serviceId}/routes/{id}`}}},Be={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 Ae(){const t=ke.createI18n("en-us",Be);return{i18n:t,i18nT:ke.i18nTComponent(t)}}const H={useI18n:Ae},Oe={class:"kong-ui-entities-route-entity-config-card"},De={key:2},Me=e.defineComponent({__name:"RouteConfigCard",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t==null?void 0: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:""}},emits:["loading","fetch:error","fetch:success","navigation-click"],setup(t,{emit:V}){var R;const c=V,o=t,{axiosInstance:a}=N.useAxios((R=o.config)==null?void 0:R.axiosRequestConfig),{i18n:{t:f}}=H.useI18n(),n=e.ref(""),_=e.ref(""),u=e.ref(!1),m=e.computed(()=>{var s,d;return(d=oe.item[(s=o.config)==null?void 0:s.app])==null?void 0:d[o.serviceId?"forGatewayService":"all"].replace(/{serviceId}/gi,o.serviceId)}),p=e.computed(()=>{var s;return(s=oe.item[o.config.app])==null?void 0:s.getService}),h=async s=>{var g,w,G;if(n.value=o.serviceId||((g=s==null?void 0:s.service)==null?void 0:g.id),c("fetch:success",s),!n.value)return;let d=`${o.config.apiBaseUrl}${p.value}`;o.config.app==="konnect"?d=d.replace(/{controlPlaneId}/gi,((w=o.config)==null?void 0:w.controlPlaneId)||"").replace(/{serviceId}/gi,n.value||""):o.config.app==="kongManager"&&(d=d.replace(/\/{workspace}/gi,(G=o.config)!=null&&G.workspace?`/${o.config.workspace}`:"").replace(/{serviceId}/gi,n.value||""));try{u.value=!0;const{data:$}=await a.get(d);_.value=($==null?void 0:$.name)||($==null?void 0:$.id)}catch($){c("fetch:error",$)}finally{u.value=!1}},I=e.ref({id:{},name:{tooltip:f("form.fields.name.tooltip")},created_at:{},updated_at:{},service:{label:f("form.fields.service.label"),section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.service.tooltip"),order:5},tags:{tooltip:f("form.fields.tags.tooltip"),order:6},protocols:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.protocols.tooltip"),type:N.ConfigurationSchemaType.BadgeTag,order:7},paths:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.paths.tooltip"),type:N.ConfigurationSchemaType.CopyBadge,order:8},hosts:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.hosts.tooltip"),type:N.ConfigurationSchemaType.CopyBadge,order:9},snis:{label:f("form.fields.snis.label"),tooltip:f("form.fields.snis.tooltip"),order:10},headers:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.headers.tooltip"),order:11},methods:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.methods.tooltip"),type:N.ConfigurationSchemaType.BadgeMethod,order:12},sources:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.sources.tooltip"),type:N.ConfigurationSchemaType.JsonArray,order:13},destinations:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.destinations.tooltip"),type:N.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(s,d)=>{const g=e.resolveComponent("KSkeleton");return e.openBlock(),e.createElementBlock("div",Oe,[e.createVNode(e.unref(N.EntityBaseConfigCard),{config:t.config,"config-card-doc":t.configCardDoc,"config-schema":I.value,"entity-type":e.unref(N.SupportedEntityType).Route,"fetch-url":m.value,"hide-title":t.hideTitle,"onFetch:error":d[0]||(d[0]=w=>s.$emit("fetch:error",w)),"onFetch:success":h,onLoading:d[1]||(d[1]=w=>s.$emit("loading",w))},{service:e.withCtx(({row:w})=>[u.value?(e.openBlock(),e.createBlock(g,{key:0,"data-testid":"service-name-loader",type:"spinner"})):w.value&&w.value.id===n.value&&_.value?(e.openBlock(),e.createBlock(e.unref(N.InternalLinkItem),{key:1,item:{key:w.value.id,value:_.value,type:e.unref(N.ConfigurationSchemaType).LinkInternal},onNavigationClick:()=>s.$emit("navigation-click",w.value.id,"services")},null,8,["item","onNavigationClick"])):(e.openBlock(),e.createElementBlock("div",De,e.toDisplayString("-")))]),_:1},8,["config","config-card-doc","config-schema","entity-type","fetch-url","hide-title"])])}}});var O=(t=>(t.TRADITIONAL="traditional",t.EXPRESSIONS="expressions",t))(O||{}),r=(t=>(t.PATHS="paths",t.SNIS="snis",t.HOSTS="hosts",t.METHODS="methods",t.HEADERS="headers",t.SOURCES="sources",t.DESTINATIONS="destinations",t))(r||{}),Z=(t=>(t.LOADING="loading",t.ERROR="error",t.READY="ready",t))(Z||{}),v=(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))(v||{});const he=t=>t.routeFlavors.traditional===!0,ge=t=>t.routeFlavors.expressions===!0,M={[r.PATHS]:[""],[r.SNIS]:[""],[r.HOSTS]:[""],[r.METHODS]:[],[r.HEADERS]:[{header:"",values:""}],[r.SOURCES]:[{ip:"",port:null}],[r.DESTINATIONS]:[{ip:"",port:null}]},fe={http:[r.PATHS,r.METHODS,r.HOSTS,r.HEADERS],https:[r.PATHS,r.METHODS,r.HOSTS,r.HEADERS,r.SNIS],"http,https":[r.PATHS,r.METHODS,r.HOSTS,r.HEADERS,r.SNIS],"https,http":[r.PATHS,r.METHODS,r.HOSTS,r.HEADERS,r.SNIS],grpc:[r.PATHS,r.HOSTS,r.HEADERS],grpcs:[r.PATHS,r.HOSTS,r.HEADERS,r.SNIS],"grpc,grpcs":[r.PATHS,r.HOSTS,r.HEADERS,r.SNIS],"grpcs,grpc":[r.PATHS,r.HOSTS,r.HEADERS,r.SNIS],udp:[r.SOURCES,r.DESTINATIONS],tls:[r.SOURCES,r.DESTINATIONS,r.SNIS],tcp:[r.SOURCES,r.DESTINATIONS],"tls,udp":[r.SOURCES,r.DESTINATIONS,r.SNIS],"udp,tls":[r.SOURCES,r.DESTINATIONS,r.SNIS],"tcp,udp":[r.SOURCES,r.DESTINATIONS],"udp,tcp":[r.SOURCES,r.DESTINATIONS],"tcp,tls":[r.SOURCES,r.DESTINATIONS,r.SNIS],"tls,tcp":[r.SOURCES,r.DESTINATIONS,r.SNIS],"tcp,tls,udp":[r.SOURCES,r.DESTINATIONS,r.SNIS],"tls,udp,tcp":[r.SOURCES,r.DESTINATIONS,r.SNIS],"udp,tcp,tls":[r.SOURCES,r.DESTINATIONS,r.SNIS],tls_passthrough:[r.SNIS],ws:[r.PATHS,r.HOSTS,r.HEADERS],wss:[r.PATHS,r.HOSTS,r.HEADERS,r.SNIS],"ws,wss":[r.PATHS,r.HOSTS,r.HEADERS,r.SNIS],"wss,ws":[r.PATHS,r.HOSTS,r.HEADERS,r.SNIS]},ye=[{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"}],de={https_redirect_status_code:426,strip_path:!0,preserve_host:!1,request_buffering:!0,response_buffering:!0},Ve={...de,paths:[""],regex_priority:0,path_handling:"v0",expression:"",priority:0},ce="https",He=e.defineComponent({__name:"RuleControlsAdd",props:{routingRulesEntity:{}},emits:["add"],setup(t,{emit:V}){const c=t,o=V,a=e.inject("configType","basic"),{i18n:{t:f}}=H.useI18n(),n=e.computed(()=>f(`form.fields.${c.routingRulesEntity}.add`));return(_,u)=>{const m=e.resolveComponent("KButton");return e.unref(a)!=="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]=p=>o("add"))},{default:e.withCtx(()=>[e.createVNode(e.unref(j.AddIcon)),e.createElementVNode("span",null,e.toDisplayString(n.value),1)]),_:1},8,["data-testid"])):e.createCommentVNode("",!0)}}}),U=(t,V)=>{const c=t.__vccOpts||t;for(const[o,a]of V)c[o]=a;return c},re=U(He,[["__scopeId","data-v-f1f4cfc9"]]),$e="#afb7c5",Pe="#0044f4",Ue="16px",le=e.defineComponent({__name:"RuleControlsRemove",props:{disabled:{type:Boolean},routingRulesEntity:{}},emits:["remove"],setup(t,{emit:V}){const c=V,o=e.inject("configType","basic");return(a,f)=>{const n=e.resolveComponent("KButton");return e.unref(o)!=="basic"?(e.openBlock(),e.createBlock(n,{key:0,appearance:"tertiary","data-testid":`remove-${t.routingRulesEntity}`,disabled:t.disabled,icon:"",onClick:f[0]||(f[0]=_=>c("remove"))},{default:e.withCtx(()=>[e.createVNode(e.unref(j.CloseIcon),{color:t.disabled?e.unref($e):e.unref(Pe)},null,8,["color"])]),_:1},8,["data-testid","disabled"])):e.createCommentVNode("",!0)}}}),Le={class:"routing-rule-container"},Fe=["innerHTML"],Ke=U(e.defineComponent({__name:"DestinationRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),o=e.useModel(t,"modelValue"),a=V;return(f,n)=>{const _=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",Le,[e.createVNode(_,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.destinations.tooltip")},null,8,Fe)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(c)("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(o.value,(m,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"routing-rule-input"},[e.createVNode(u,{modelValue:o.value[p].ip,"onUpdate:modelValue":h=>o.value[p].ip=h,modelModifiers:{trim:!0},"data-testid":`route-form-destinations-ip-input-${p+1}`,placeholder:e.unref(c)("form.fields.destinations.ip.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(u,{modelValue:o.value[p].port,"onUpdate:modelValue":h=>o.value[p].port=h,modelModifiers:{number:!0},"data-testid":`route-form-destinations-port-input-${p+1}`,max:"65535",min:"0",placeholder:e.unref(c)("form.fields.destinations.port.placeholder"),type:"number"},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:o.value.length===1,"routing-rules-entity":e.unref(r).DESTINATIONS,onRemove:h=>a("remove",p)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(r).DESTINATIONS,onAdd:n[0]||(n[0]=m=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-3eb40a37"]]),qe={class:"routing-rule-container"},Ge=["innerHTML"],je=U(e.defineComponent({__name:"HeaderRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),o=e.useModel(t,"modelValue"),a=V;return(f,n)=>{const _=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",qe,[e.createVNode(_,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.headers.tooltip")},null,8,Ge)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(c)("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(o.value,(m,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"routing-rule-input"},[e.createVNode(u,{modelValue:o.value[p].header,"onUpdate:modelValue":h=>o.value[p].header=h,modelModifiers:{trim:!0},"data-testid":`route-form-headers-name-input-${p+1}`,placeholder:e.unref(c)("form.fields.headers.name.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(u,{modelValue:o.value[p].values,"onUpdate:modelValue":h=>o.value[p].values=h,modelModifiers:{trim:!0},"data-testid":`route-form-headers-values-input-${p+1}`,placeholder:e.unref(c)("form.fields.headers.values.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:o.value.length===1,"routing-rules-entity":e.unref(r).HEADERS,onRemove:h=>a("remove",p)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(r).HEADERS,onAdd:n[0]||(n[0]=m=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-d3bede0b"]]),We={class:"routing-rule-container"},Xe=["innerHTML"],ze=U(e.defineComponent({__name:"HostRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),o=e.useModel(t,"modelValue"),a=V,f=e.inject("configType","basic");return(n,_)=>{const u=e.resolveComponent("KLabel"),m=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",We,[e.createVNode(u,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.hosts.tooltip")},null,8,Xe)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(f)==="basic"?e.unref(c)("form.fields.hosts.label_singular"):e.unref(c)("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"?o.value.slice(0,1):o.value,(p,h)=>(e.openBlock(),e.createElementBlock("div",{key:h,class:"routing-rule-input"},[e.createVNode(m,{modelValue:o.value[h],"onUpdate:modelValue":I=>o.value[h]=I,modelModifiers:{trim:!0},"data-testid":`route-form-hosts-input-${h+1}`,placeholder:e.unref(c)("form.fields.hosts.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:o.value.length===1,"routing-rules-entity":e.unref(r).HOSTS,onRemove:I=>a("remove",h)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(r).HOSTS,onAdd:_[0]||(_[0]=p=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-dccd9082"]]),Je={class:"routing-rule-container","data-testid":"route-form-methods"},Qe=["innerHTML"],Ye={class:"routing-rule-input"},Ze=U(e.defineComponent({__name:"MethodRules",props:{methods:{required:!0},methodsModifiers:{},customMethods:{required:!0},customMethodsModifiers:{}},emits:["update:methods","update:customMethods"],setup(t){const{i18n:{t:V}}=H.useI18n(),c=e.useModel(t,"methods"),o=e.useModel(t,"customMethods"),a=e.computed(()=>c.value.filter(m=>Object.keys(v).includes(m)).concat(o.value.map(m=>m.value))),f=e.computed(()=>Object.keys(v).map(m=>({label:m,value:m})).concat(o.value.map(m=>({label:m.label,value:m.value,custom:!0})))),n=m=>!f.value.map(p=>p.value.toLowerCase()).includes(m.toLowerCase()),_=(m,p)=>{p?o.value.push(m):o.value=o.value.filter(h=>h.value!==m.value)},u=m=>{c.value=m};return(m,p)=>{const h=e.resolveComponent("KLabel"),I=e.resolveComponent("KMultiselect");return e.openBlock(),e.createElementBlock("div",Je,[e.createVNode(h,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(V)("form.fields.methods.tooltip")},null,8,Qe)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(V)("form.fields.methods.label")),1)]),_:1}),e.createElementVNode("div",Ye,[e.createVNode(I,{"enable-item-creation":"","item-creation-validator":n,items:f.value,"model-value":a.value,placeholder:e.unref(V)("form.fields.methods.placeholder"),"search-placeholder":e.unref(V)("form.fields.methods.search_placeholder"),onItemAdded:p[0]||(p[0]=R=>_(R,!0)),onItemRemoved:p[1]||(p[1]=R=>_(R,!1)),"onUpdate:modelValue":u},null,8,["items","model-value","placeholder","search-placeholder"])])])}}}),[["__scopeId","data-v-6c94d6d2"]]),ve={class:"routing-rule-container"},et=["innerHTML"],tt=U(e.defineComponent({__name:"PathRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),o=e.useModel(t,"modelValue"),a=V,f=e.inject("configType","basic");return(n,_)=>{const u=e.resolveComponent("KLabel"),m=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",ve,[e.createVNode(u,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.paths.tooltip")},null,8,et)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(f)==="basic"?e.unref(c)("form.fields.paths.label_singular"):e.unref(c)("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"?o.value.slice(0,1):o.value,(p,h)=>(e.openBlock(),e.createElementBlock("div",{key:h,class:"routing-rule-input"},[e.createVNode(m,{modelValue:o.value[h],"onUpdate:modelValue":I=>o.value[h]=I,modelModifiers:{trim:!0},"data-testid":`route-form-paths-input-${h+1}`,placeholder:e.unref(c)("form.fields.paths.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:o.value.length===1,"routing-rules-entity":e.unref(r).PATHS,onRemove:I=>a("remove",h)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(r).PATHS,onAdd:_[0]||(_[0]=p=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-eb440a9e"]]),ot={class:"routing-rule-container"},rt=["innerHTML"],lt=U(e.defineComponent({__name:"SniRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),o=e.useModel(t,"modelValue"),a=V;return(f,n)=>{const _=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",ot,[e.createVNode(_,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.snis.tooltip")},null,8,rt)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(c)("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(o.value,(m,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"routing-rule-input"},[e.createVNode(u,{modelValue:o.value[p],"onUpdate:modelValue":h=>o.value[p]=h,modelModifiers:{trim:!0},"data-testid":`route-form-snis-input-${p+1}`,placeholder:e.unref(c)("form.fields.snis.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:o.value.length===1,"routing-rules-entity":e.unref(r).SNIS,onRemove:h=>a("remove",p)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(r).SNIS,onAdd:n[0]||(n[0]=m=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-e6782e08"]]),st={class:"routing-rule-container"},nt=["innerHTML"],at=U(e.defineComponent({__name:"SourceRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),o=e.useModel(t,"modelValue"),a=V;return(f,n)=>{const _=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",st,[e.createVNode(_,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.sources.tooltip")},null,8,nt)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(c)("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(o.value,(m,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"routing-rule-input"},[e.createVNode(u,{modelValue:o.value[p].ip,"onUpdate:modelValue":h=>o.value[p].ip=h,modelModifiers:{trim:!0},"data-testid":`route-form-sources-ip-input-${p+1}`,placeholder:e.unref(c)("form.fields.sources.ip.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(u,{modelValue:o.value[p].port,"onUpdate:modelValue":h=>o.value[p].port=h,modelModifiers:{number:!0},"data-testid":`route-form-sources-port-input-${p+1}`,max:"65535",min:"0",placeholder:e.unref(c)("form.fields.sources.port.placeholder"),type:"number"},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:o.value.length===1,"routing-rules-entity":e.unref(r).SOURCES,onRemove:h=>a("remove",p)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(r).SOURCES,onAdd:n[0]||(n[0]=m=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-448078c1"]]),it={class:"traditional-rules-hint"},dt={key:0},ct=["innerHTML"],pt={key:0,class:"route-form-fields-container route-form-advanced-fields-container"},ut=["innerHTML"],ft=["innerHTML"],mt=["innerHTML"],ht=["innerHTML"],gt=["innerHTML"],yt=["innerHTML"],Ie=U(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:V,i18n:c,i18n:{t:o}}=H.useI18n(),a=c.source.form.protocols,f=t,n=e.useModel(t,"fields"),_=e.useModel(t,"customMethods"),u=s=>{switch(s){case r.PATHS:Array.isArray(n.value.paths)?n.value.paths.push([...M[r.PATHS]][0]):n.value.paths=[...M[r.PATHS]];break;case r.SNIS:Array.isArray(n.value.snis)?n.value.snis.push([...M[r.SNIS]][0]):n.value.snis=[...M[r.SNIS]];break;case r.HOSTS:Array.isArray(n.value.hosts)?n.value.hosts.push([...M[r.HOSTS]][0]):n.value.hosts=[...M[r.HOSTS]];break;case r.METHODS:n.value.methods||(n.value.methods={...M[r.METHODS]});break;case r.HEADERS:Array.isArray(n.value.headers)?n.value.headers.push({...M[r.HEADERS][0]}):n.value.headers=[{...M[r.HEADERS][0]}];break;case r.SOURCES:Array.isArray(n.value.sources)?n.value.sources.push({...M[r.SOURCES][0]}):n.value.sources=[{...M[r.SOURCES][0]}];break;case r.DESTINATIONS:Array.isArray(n.value.destinations)?n.value.destinations.push({...M[r.DESTINATIONS][0]}):n.value.destinations=[{...M[r.DESTINATIONS][0]}];break}},m=async(s,d)=>{if(typeof d<"u"){const g=n.value[s];if(Array.isArray(g)&&(g.splice(d,1),g.length>0))return}await e.nextTick(()=>{delete n.value[s]})},p=s=>s.some(d=>f.protocols.includes(d)),h=e.computed(()=>new Set(fe[f.protocols])),I=e.computed(()=>{if(p(["tls_passthrough"]))return[R(r.SNIS)];const s=(f.configType==="basic"?[r.PATHS,r.METHODS,r.HOSTS]:fe[f.protocols]).map(d=>R(d));return[[...s].splice(0,s.length-1).join(", "),s[s.length-1]]}),R=s=>{var g;return((g=c.source.form.fields[s])==null?void 0:g.singular)||""};return(s,d)=>{const g=e.resolveComponent("KCheckbox"),w=e.resolveComponent("KSelect"),G=e.resolveComponent("KInput"),$=e.resolveComponent("KCard");return e.openBlock(),e.createBlock($,null,{default:e.withCtx(()=>{var E;return[e.createElementVNode("span",it,[e.createVNode(e.unref(V),{keypath:"form.hint.rules_message"},{protocol:e.withCtx(()=>[e.createElementVNode("b",null,e.toDisplayString(e.unref(a)[t.protocols]),1)]),routingRules:e.withCtx(()=>[e.createVNode(e.unref(V),{keypath:I.value[1]?"form.hint.multiple_rules":"form.hint.single_rule"},{routingRules:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(I.value[0]),1)]),lastRoutingRule:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(I.value[1]),1)]),_:1},8,["keypath"])]),_:1}),t.configType==="basic"?(e.openBlock(),e.createElementBlock("span",dt,e.toDisplayString(e.unref(o)("form.hint.advanced")),1)):e.createCommentVNode("",!0)]),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>{var S;return[n.value.paths&&h.value.has(e.unref(r).PATHS)?(e.openBlock(),e.createBlock(tt,{key:"paths-container",modelValue:n.value.paths,"onUpdate:modelValue":d[0]||(d[0]=b=>n.value.paths=b),onAdd:d[1]||(d[1]=b=>u(e.unref(r).PATHS)),onRemove:d[2]||(d[2]=b=>m(e.unref(r).PATHS,b))},null,8,["modelValue"])):e.createCommentVNode("",!0),p(["http","https","ws","wss"])?(e.openBlock(),e.createBlock(g,{key:1,modelValue:n.value.strip_path,"onUpdate:modelValue":d[3]||(d[3]=b=>n.value.strip_path=b),class:"route-form-strip-path","data-testid":"route-form-strip-path",disabled:!((S=n.value.paths)!=null&&S.some(Boolean)),label:e.unref(o)("form.fields.strip_path.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(o)("form.fields.strip_path.tooltip")},null,8,ct)]),_:1},8,["modelValue","disabled","label"])):e.createCommentVNode("",!0),n.value.methods&&h.value.has(e.unref(r).METHODS)?(e.openBlock(),e.createBlock(Ze,{key:"methods-container","custom-methods":_.value,"onUpdate:customMethods":d[4]||(d[4]=b=>_.value=b),methods:n.value.methods,"onUpdate:methods":d[5]||(d[5]=b=>n.value.methods=b)},null,8,["custom-methods","methods"])):e.createCommentVNode("",!0),n.value.hosts&&h.value.has(e.unref(r).HOSTS)?(e.openBlock(),e.createBlock(ze,{key:"hosts-container",modelValue:n.value.hosts,"onUpdate:modelValue":d[6]||(d[6]=b=>n.value.hosts=b),onAdd:d[7]||(d[7]=b=>u(e.unref(r).HOSTS)),onRemove:d[8]||(d[8]=b=>m(e.unref(r).HOSTS,b))},null,8,["modelValue"])):e.createCommentVNode("",!0),n.value.headers&&t.configType==="advanced"&&h.value.has(e.unref(r).HEADERS)?(e.openBlock(),e.createBlock(je,{key:"headers-container",modelValue:n.value.headers,"onUpdate:modelValue":d[9]||(d[9]=b=>n.value.headers=b),onAdd:d[10]||(d[10]=b=>u(e.unref(r).HEADERS)),onRemove:d[11]||(d[11]=b=>m(e.unref(r).HEADERS,b))},null,8,["modelValue"])):e.createCommentVNode("",!0),n.value.sources&&h.value.has(e.unref(r).SOURCES)?(e.openBlock(),e.createBlock(at,{key:"sources-container",modelValue:n.value.sources,"onUpdate:modelValue":d[12]||(d[12]=b=>n.value.sources=b),onAdd:d[13]||(d[13]=b=>u(e.unref(r).SOURCES)),onRemove:d[14]||(d[14]=b=>m(e.unref(r).SOURCES,b))},null,8,["modelValue"])):e.createCommentVNode("",!0),n.value.destinations&&h.value.has(e.unref(r).DESTINATIONS)?(e.openBlock(),e.createBlock(Ke,{key:"destinations-container",modelValue:n.value.destinations,"onUpdate:modelValue":d[15]||(d[15]=b=>n.value.destinations=b),onAdd:d[16]||(d[16]=b=>u(e.unref(r).DESTINATIONS)),onRemove:d[17]||(d[17]=b=>m(e.unref(r).DESTINATIONS,b))},null,8,["modelValue"])):e.createCommentVNode("",!0),n.value.snis&&t.configType==="advanced"&&h.value.has(e.unref(r).SNIS)?(e.openBlock(),e.createBlock(lt,{key:"snis-container",modelValue:n.value.snis,"onUpdate:modelValue":d[18]||(d[18]=b=>n.value.snis=b),onAdd:d[19]||(d[19]=b=>u(e.unref(r).SNIS)),onRemove:d[20]||(d[20]=b=>m(e.unref(r).SNIS,b))},null,8,["modelValue"])):e.createCommentVNode("",!0)]}),_:1}),t.hideAdvanced?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",pt,[(E=n.value.paths)!=null&&E.some(Boolean)?(e.openBlock(),e.createBlock(w,{key:0,modelValue:n.value.path_handling,"onUpdate:modelValue":d[21]||(d[21]=S=>n.value.path_handling=S),"data-testid":"route-form-path-handling",items:e.unref(Ne),label:e.unref(o)("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(o)("form.fields.path_handling.tooltip")},null,8,ut)]),_:1},8,["modelValue","items","label","readonly"])):e.createCommentVNode("",!0),e.createVNode(w,{modelValue:n.value.https_redirect_status_code,"onUpdate:modelValue":d[22]||(d[22]=S=>n.value.https_redirect_status_code=S),"data-testid":"route-form-http-redirect-status-code",items:e.unref(ye),label:e.unref(o)("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(o)("form.fields.https_redirect_status_code.tooltip")},null,8,ft)]),_:1},8,["modelValue","items","label","readonly"]),e.createVNode(G,{modelValue:n.value.regex_priority,"onUpdate:modelValue":d[23]||(d[23]=S=>n.value.regex_priority=S),autocomplete:"off","data-testid":"route-form-regex-priority",label:e.unref(o)("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(o)("form.fields.regex_priority.tooltip")},null,8,mt)]),_:1},8,["modelValue","label","readonly"]),e.createVNode(g,{modelValue:n.value.preserve_host,"onUpdate:modelValue":d[24]||(d[24]=S=>n.value.preserve_host=S),"data-testid":"route-form-preserve-host",label:e.unref(o)("form.fields.preserve_host.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(o)("form.fields.preserve_host.tooltip")},null,8,ht)]),_:1},8,["modelValue","label"]),e.createVNode(g,{modelValue:n.value.request_buffering,"onUpdate:modelValue":d[25]||(d[25]=S=>n.value.request_buffering=S),"data-testid":"route-form-request-buffering",label:e.unref(o)("form.fields.request_buffering.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(o)("form.fields.request_buffering.tooltip")},null,8,gt)]),_:1},8,["modelValue","label"]),e.createVNode(g,{modelValue:n.value.response_buffering,"onUpdate:modelValue":d[26]||(d[26]=S=>n.value.response_buffering=S),"data-testid":"route-form-response-buffering",label:e.unref(o)("form.fields.response_buffering.label"),"label-attributes":{tooltipAttributes:{maxWidth:"320"}}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(o)("form.fields.response_buffering.tooltip")},null,8,yt)]),_:1},8,["modelValue","label"])]))]}),_:1})}}}),[["__scopeId","data-v-0ade8d72"]]),St=e.defineComponent({__name:"RouteFormExpressionsEditorLoader",props:e.mergeModels({protocol:{},showExpressionsModalEntry:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["notify"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),o={render:()=>e.h("div",c("form.expressions_editor.loading"))},a={render:()=>e.h("div",c("form.expressions_editor.error"))},f=e.defineAsyncComponent({loader:async()=>Promise.resolve().then(()=>Ut),loadingComponent:o,errorComponent:a}),n=t,_=V,u=e.ref(Z.LOADING),m=e.useModel(t,"modelValue"),p=h=>{m.value=h};return e.onMounted(async()=>{try{await(await import("@kong-ui-public/expressions")).asyncInit,u.value=Z.READY}catch(h){u.value=Z.ERROR,console.error(h)}}),(h,I)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[u.value===e.unref(Z).ERROR?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a),{key:0,"data-testid":"route-form-expressions-editor-loader-error"})):u.value===e.unref(Z).LOADING?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o),{key:1,"data-testid":"route-form-expressions-editor-loader-loading"})):(e.openBlock(),e.createBlock(e.unref(f),{key:2,modelValue:m.value,"onUpdate:modelValue":I[0]||(I[0]=R=>m.value=R),protocol:n.protocol,"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:I[1]||(I[1]=R=>_("notify",R))},{default:e.withCtx(()=>[e.createVNode(e.unref(j.RocketIcon),{size:e.unref(Ue)},null,8,["size"]),e.createElementVNode("span",null,e.toDisplayString(e.unref(c)("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:p},state:u.value})],64))}}),bt={class:"route-form-routing-rules-title-container"},Tt={class:"routing-rules-title"},_t={class:"route-form-fields-container route-form-advanced-fields-container"},Et=U(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:V}){const{i18n:{t:c}}=H.useI18n(),o=t,a=e.useModel(t,"fields"),f=V,n=e.ref(!0),_=e.computed(()=>o.protocols.split(",")||[]),u=m=>m.some(p=>o.protocols.includes(p));return(m,p)=>{const h=e.resolveComponent("KCard"),I=e.resolveComponent("KSelect"),R=e.resolveComponent("KInput"),s=e.resolveComponent("KCheckbox"),d=e.resolveComponent("KCollapse");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(h,null,{title:e.withCtx(()=>[e.createElementVNode("div",bt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,g=>(e.openBlock(),e.createElementBlock("span",{key:g,class:"protocol-title"},e.toDisplayString(g.toUpperCase()),1))),128)),e.createElementVNode("span",Tt,e.toDisplayString(e.unref(c)("form.sections.routingExpression.title")),1)])]),default:e.withCtx(()=>[e.createVNode(St,{modelValue:a.value.expression,"onUpdate:modelValue":p[0]||(p[0]=g=>a.value.expression=g),protocol:_.value[0],"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:p[1]||(p[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(d,{modelValue:n.value,"onUpdate:modelValue":p[8]||(p[8]=g=>n.value=g),class:"route-form-advanced-fields-collapse","trigger-alignment":"leading","trigger-label":e.unref(c)("form.show_more")},{default:e.withCtx(()=>[e.createVNode(h,null,{default:e.withCtx(()=>[e.createElementVNode("div",_t,[e.createVNode(I,{modelValue:a.value.https_redirect_status_code,"onUpdate:modelValue":p[2]||(p[2]=g=>a.value.https_redirect_status_code=g),"data-testid":"route-form-http-redirect-status-code",items:e.unref(ye),label:e.unref(c)("form.fields.https_redirect_status_code.label"),readonly:t.readonly,width:"100%"},null,8,["modelValue","items","label","readonly"]),e.createVNode(R,{modelValue:a.value.priority,"onUpdate:modelValue":p[3]||(p[3]=g=>a.value.priority=g),autocomplete:"off","data-testid":"route-form-priority",label:e.unref(c)("form.fields.priority.label"),"label-attributes":{info:e.unref(c)("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(s,{key:0,modelValue:a.value.strip_path,"onUpdate:modelValue":p[4]||(p[4]=g=>a.value.strip_path=g),"data-testid":"route-form-strip-path",label:e.unref(c)("form.fields.strip_path.label")},null,8,["modelValue","label"])):e.createCommentVNode("",!0),e.createVNode(s,{modelValue:a.value.preserve_host,"onUpdate:modelValue":p[5]||(p[5]=g=>a.value.preserve_host=g),"data-testid":"route-form-preserve-host",label:e.unref(c)("form.fields.preserve_host.label")},null,8,["modelValue","label"]),e.createVNode(s,{modelValue:a.value.request_buffering,"onUpdate:modelValue":p[6]||(p[6]=g=>a.value.request_buffering=g),"data-testid":"route-form-request-buffering",label:e.unref(c)("form.fields.request_buffering.label")},null,8,["modelValue","label"]),e.createVNode(s,{modelValue:a.value.response_buffering,"onUpdate:modelValue":p[7]||(p[7]=g=>a.value.response_buffering=g),"data-testid":"route-form-response-buffering",label:e.unref(c)("form.fields.response_buffering.label")},null,8,["modelValue","label"])])]),_:1})]),_:1},8,["modelValue","trigger-label"])],64)}}}),[["__scopeId","data-v-e7571a47"]]),Ct={class:"config-type-container"},kt={key:0,class:"config-flavor"},xe=U(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({...de,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:V}){const c=t,o=e.useModel(t,"configType"),a=e.useModel(t,"configFlavor"),f=e.useModel(t,"fields"),n=e.useModel(t,"customMethods"),_=V,{i18n:{t:u}}=H.useI18n(),m=[{value:O.TRADITIONAL,label:u("form.flavors.traditional")},{value:O.EXPRESSIONS,label:u("form.flavors.expressions")}],p=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"},...c.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(()=>c.recordFlavor?c.recordFlavor:a.value),I=(E,S)=>{if(!new Set(fe[c.protocols]).has(E))return[];if([r.PATHS,r.HOSTS,r.METHODS,r.SNIS].includes(E))return[...S].filter(D=>!!D);if(E===r.SOURCES||E===r.DESTINATIONS)return[...S].filter(D=>!!D.ip||!!D.port).map(D=>({ip:D.ip||void 0,port:!D.port&&D.port!==0?void 0:D.port}));if(E===r.HEADERS)return[...S].filter(D=>!!D.header)},R=E=>E.some(S=>c.protocols.includes(S)),s=()=>{if(h.value!==O.TRADITIONAL)return null;const E=f.value,S=I(r.HEADERS,E.headers||[])||M[r.HEADERS];return S.length===0?null:S.reduce((b,D)=>(b[D.header]=D.values.split(","),b),{})},d=e.computed(()=>(f.value.methods||[]).filter(b=>Object.keys(v).includes(b)).concat(n.value.map(b=>b.label.toUpperCase()))),g=E=>E!=null&&E.length?E:null,w=e.computed(()=>({https_redirect_status_code:f.value.https_redirect_status_code,strip_path:R(["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})),G=e.computed(()=>{switch(h.value){case O.TRADITIONAL:{const E=f.value,S=g(I(r.PATHS,E.paths||[])),b=g(I(r.HOSTS,E.hosts||[])),D={...w.value,methods:g(I(r.METHODS,d.value)),hosts:o.value==="basic"&&b?b.slice(0,1):b,paths:o.value==="basic"&&S?S.slice(0,1):S,headers:o.value==="basic"?null:s(),regex_priority:Number(E.regex_priority),path_handling:E.path_handling,sources:g(I(r.SOURCES,E.sources||[])),destinations:g(I(r.DESTINATIONS,E.destinations||[])),snis:o.value==="basic"?null:g(I(r.SNIS,E.snis||[]))};return{type:h.value,payload:D}}case O.EXPRESSIONS:{const E=f.value;return{type:h.value,payload:{...w.value,expression:E.expression,priority:Number(E.priority)}}}default:return}}),$=E=>{E&&_("update:protocols",E)};return e.watch([()=>c.recordFlavor,()=>c.routeFlavors],([E,S])=>{if(E){a.value=E;return}a.value=!S.traditional&&S.expressions?O.EXPRESSIONS:O.TRADITIONAL},{immediate:!0,deep:!0}),e.watch(o,E=>{E==="basic"&&(a.value=O.TRADITIONAL,_("update:protocols",ce))}),e.watch(G,E=>{_("update:payload",E)},{deep:!0,immediate:!0}),(E,S)=>{const b=e.resolveComponent("KRadio"),D=e.resolveComponent("KLabel"),pe=e.resolveComponent("KTooltip"),z=e.resolveComponent("KSegmentedControl"),K=e.resolveComponent("KAlert"),se=e.resolveComponent("KSelect");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Ct,[e.createVNode(b,{modelValue:o.value,"onUpdate:modelValue":S[0]||(S[0]=B=>o.value=B),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(O).EXPRESSIONS,label:e.unref(u)("form.config_types.basic.label"),"selected-value":"basic"},null,8,["modelValue","description","disabled","label"]),e.createVNode(b,{modelValue:o.value,"onUpdate:modelValue":S[1]||(S[1]=B=>o.value=B),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"])]),o.value==="basic"?(e.openBlock(),e.createBlock(Ie,{key:0,"custom-methods":n.value,"onUpdate:customMethods":S[2]||(S[2]=B=>n.value=B),fields:f.value,"onUpdate:fields":S[3]||(S[3]=B=>f.value=B),"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",kt,[e.createVNode(D,{class:"config-flavor-label"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(u)("form.config_flavor.label")),1)]),_:1}),e.createVNode(z,{modelValue:a.value,"onUpdate:modelValue":S[4]||(S[4]=B=>a.value=B),class:"config-flavor-control","data-testid":"route-form-config-flavor",options:m},{"option-label":e.withCtx(({option:B})=>{var ee,J;return[e.createElementVNode("span",null,e.toDisplayString(B.label),1),(ee=t.tooltips)!=null&&ee[B.value]?(e.openBlock(),e.createBlock(pe,{key:0,class:"route-form-config-tabs-tooltip",text:(J=t.tooltips)==null?void 0:J[B.value],"tooltip-id":`route-form-config-tabs-tooltip-${B.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!==a.value)?(e.openBlock(),e.createBlock(K,{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!==a.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!==a.value)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.hideProtocols?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(se,{key:0,"data-testid":"route-form-protocols",items:p.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":$},null,8,["items","label","label-attributes","model-value","readonly"])),a.value===e.unref(O).TRADITIONAL?(e.openBlock(),e.createBlock(Ie,{key:1,"custom-methods":n.value,"onUpdate:customMethods":S[5]||(S[5]=B=>n.value=B),fields:f.value,"onUpdate:fields":S[6]||(S[6]=B=>f.value=B),"config-type":"advanced",protocols:t.protocols,readonly:t.readonly},null,8,["custom-methods","fields","protocols","readonly"])):(e.openBlock(),e.createBlock(Et,{key:2,fields:f.value,"onUpdate:fields":S[7]||(S[7]=B=>f.value=B),protocols:t.protocols,readonly:t.readonly,"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:S[8]||(S[8]=B=>_("notify",B))},null,8,["fields","protocols","readonly","show-expressions-modal-entry"]))],64)):e.createCommentVNode("",!0)],64))],64)}}}),[["__scopeId","data-v-5c24422c"]]),Re=t=>{var c,o,a,f,n;return!(typeof t.expression=="string"&&t.expression.length>0||(t.protocols||[]).sort().join(",")!==ce||((c=t[r.PATHS])==null?void 0:c.length)>1||((o=t[r.HOSTS])==null?void 0:o.length)>1||t[r.HEADERS]&&typeof t[r.HEADERS]=="object"||((a=t[r.SNIS])==null?void 0:a.length)>0||((f=t[r.SOURCES])==null?void 0:f.length)>0||((n=t[r.DESTINATIONS])==null?void 0:n.length)>0||["path_handling","regex_priority","https_redirect_status_code","preserve_host","request_buffering","response_buffering"].some(_=>t[_]!==Ve[_]))},Nt={class:"kong-ui-entities-route-form"},Vt={key:1},It={"data-testid":"no-search-results"},xt={class:"route-form-service-dropdown-item"},Rt={class:"select-item-label"},wt={class:"select-item-description"},Bt=U(e.defineComponent({__name:"RouteForm",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t==null?void 0:t.app)||(t==null?void 0:t.app)==="konnect"&&!(t!=null&&t.controlPlaneId)||(t==null?void 0:t.app)==="kongManager"&&typeof(t==null?void 0:t.workspace)!="string"||!(t!=null&&t.cancelRoute))},routeId:{type:String,required:!1,default:""},serviceId:{type:String,required:!1,default:""},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:V,emit:c}){var ae;const o=t,a=c,f=e.ref("basic"),n=e.ref(!o.routeFlavors.traditional&&o.routeFlavors.expressions?O.EXPRESSIONS:O.TRADITIONAL),_=e.ref(void 0),u=e.computed(()=>{if(_.value)return _.value;if(n.value)return n.value;if(o.routeFlavors.traditional)return O.TRADITIONAL;if(o.routeFlavors.expressions)return O.EXPRESSIONS}),{i18n:{t:m}}=H.useI18n(),p=Ce.useRouter(),{axiosInstance:h}=N.useAxios((ae=o.config)==null?void 0:ae.axiosRequestConfig),{getMessageFromError:I}=N.useErrors(),R=l=>l.name?`${l.name} - ${l.value}`:l.value,s=e.reactive({routeFlavors:o.routeFlavors,fields:{name:"",protocols:ce,tags:"",service_id:"",...de,paths:[""],snis:[""],hosts:[""],methods:[],headers:[{...M[r.HEADERS][0]}],sources:[{...M[r.SOURCES][0]}],destinations:[{...M[r.DESTINATIONS][0]}],regex_priority:0,path_handling:"v0",expression:"",priority:0},isReadonly:!1,errorMessage:""});e.watch(()=>o.routeFlavors,l=>{s.routeFlavors=l,l.traditional||(f.value="advanced")},{immediate:!0,deep:!0});const d=e.ref(),g=e.ref([]),w=e.ref([]),G=e.reactive({name:"",protocols:ce,tags:"",service_id:"",...de,path_handling:"v0",regex_priority:0,expression:"",priority:0}),$=o.config.app==="konnect"||N.useGatewayFeatureSupported({gatewayInfo:o.config.gatewayInfo,supportedRange:{enterprise:["3.0"]}}),E=e.computed(()=>o.routeId?N.EntityBaseFormType.Edit:N.EntityBaseFormType.Create);E.value===N.EntityBaseFormType.Create&&(s.fields.name=`new-route-${new Date().toISOString().replace(/\D/g,"").slice(0,17)}`);const S=e.computed(()=>{var l,i,y;return(y=(i=oe.form[(l=o.config)==null?void 0:l.app])==null?void 0:i.fetch)==null?void 0:y[o.serviceId?"forGatewayService":"all"].replace(/{serviceId}/gi,o.serviceId||"")}),b=()=>{var l;p.push((l=o.config)==null?void 0:l.cancelRoute)},D=l=>{a("loading",l)},pe=l=>{a("error",l)},z=l=>Object.entries(l).map(i=>{var y;return{header:i[0],values:(y=i[1])==null?void 0:y.join()}}),K=l=>l.some(i=>s.fields.protocols.includes(i)),se=l=>{var y,C;if(o.routeId){const T=typeof l.expression=="string"&&l.expression.length>0?O.EXPRESSIONS:O.TRADITIONAL;_.value=T,Re(l)||(f.value="advanced")}(y=l==null?void 0:l.service)!=null&&y.id&&(s.fields.service_id=l.service.id),s.fields.name=(l==null?void 0:l.name)||"";const i=(l==null?void 0:l.tags)||[];s.fields.tags=(i==null?void 0:i.join(", "))||"",s.fields.preserve_host=typeof(l==null?void 0:l.preserve_host)>"u"?!1:l==null?void 0:l.preserve_host,s.fields.https_redirect_status_code=(l==null?void 0:l.https_redirect_status_code)||426,(C=l==null?void 0:l.protocols)!=null&&C.length&&(l.protocols.length>1?s.fields.protocols=l.protocols.join():s.fields.protocols=l.protocols[0]),s.fields.request_buffering=typeof(l==null?void 0:l.request_buffering)>"u"?!0:l==null?void 0:l.request_buffering,s.fields.response_buffering=typeof(l==null?void 0:l.response_buffering)>"u"?!0:l==null?void 0:l.response_buffering,s.fields.strip_path=typeof(l==null?void 0:l.strip_path)>"u"?!0:l==null?void 0:l.strip_path,he(s)&&(s.fields.regex_priority=(l==null?void 0:l.regex_priority)||0,s.fields.path_handling=(l==null?void 0:l.path_handling)||"v0",l!=null&&l.paths&&(s.fields.paths=l.paths),l!=null&&l.snis&&(s.fields.snis=l.snis),l!=null&&l.hosts&&(s.fields.hosts=l.hosts),l!=null&&l.methods&&(s.fields.methods=l.methods.filter(T=>Object.keys(v).includes(T)),g.value=l.methods.filter(T=>!Object.keys(v).includes(T)).map(T=>({label:T,value:T})),w.value=[...g.value]),l!=null&&l.headers&&(s.fields.headers=z(l.headers)),l!=null&&l.sources&&(s.fields.sources=l.sources),l!=null&&l.destinations&&(s.fields.destinations=l.destinations)),ge(s)&&(s.fields.expression=(l==null?void 0:l.expression)||"",s.fields.priority=(l==null?void 0:l.priority)||0),Object.assign(G,JSON.parse(JSON.stringify(s.fields)))},B=e.computed(()=>{switch(u.value){case O.TRADITIONAL:{if(he(s)){const l=s.fields.hosts?!!s.fields.hosts.filter(Boolean).length:null,i=s.fields.paths?!!s.fields.paths.filter(Boolean).length:null,y=s.fields.headers?s.fields.headers.some(({header:P})=>!!P):null,C=s.fields.snis?!!s.fields.snis.filter(Boolean).length:null,T=s.fields.destinations?s.fields.destinations.some(({ip:P,port:Y})=>!!P||!!Y):null,q=s.fields.sources?s.fields.sources.some(({ip:P,port:Y})=>!!P||!!Y):null,X=s.fields.methods?!!s.fields.methods.filter(Boolean).length:null;return!!s.fields.protocols&&(K(["http"])&&!!(l||X||i||y)||K(["https"])&&!!(l||X||i||y||C)||K(["grpc"])&&!!(l||i||y)||K(["grpcs","wss"])&&!!(l||i||y||C)||K(["udp","tls"])&&!!(T||q||C)||K(["tcp"])&&!!(T||q)||K(["tls_passthrough"])&&!!C||K(["ws"])&&!!(l||i||y))}break}case O.EXPRESSIONS:{if(ge(s))return s.fields.expression.length>0;break}}return!0}),ee=e.computed(()=>!Ee(s.fields,G)||!Ee(g.value,w.value)),J=e.computed(()=>{var i,y;let l=`${o.config.apiBaseUrl}${oe.form[o.config.app][E.value][o.serviceId?"forGatewayService":"all"]}`;return o.config.app==="konnect"?l=l.replace(/{controlPlaneId}/gi,((i=o.config)==null?void 0:i.controlPlaneId)||"").replace(/{serviceId}/gi,o.serviceId||""):o.config.app==="kongManager"&&(l=l.replace(/\/{workspace}/gi,(y=o.config)!=null&&y.workspace?`/${o.config.workspace}`:"").replace(/{serviceId}/gi,o.serviceId||"")),l=l.replace(/{id}/gi,o.routeId),l});e.watch(()=>s.fields,()=>{a("model-updated",te.value)},{deep:!0});const te=e.computed(()=>{var l,i,y;return{...!o.hideNameField&&{name:s.fields.name||null},protocols:s.fields.protocols.split(","),tags:(i=(l=s.fields.tags.split(","))==null?void 0:l.map(C=>String(C||"").trim()))==null?void 0:i.filter(C=>C!==""),service:s.fields.service_id?{id:s.fields.service_id}:null,...(y=d.value)==null?void 0:y.payload}}),W=l=>{switch(u.value){case O.TRADITIONAL:{if(!("regex_priority"in l&&"path_handling"in l))return!1;break}case O.EXPRESSIONS:{if(!("priority"in l))return!1;break}}return"service"in l&&"tags"in l&&"protocols"in l},Q=async l=>{var y;const i=l&&W(l)?l:te.value;try{s.isReadonly=!0;let C;E.value==="create"?C=await h.post(J.value,i):E.value==="edit"&&(C=((y=o.config)==null?void 0:y.app)==="konnect"?await h.put(J.value,i):await h.patch(J.value,i)),se(C==null?void 0:C.data),a("update",C==null?void 0:C.data)}catch(C){s.errorMessage=I(C),a("error",C)}finally{s.isReadonly=!1}},{debouncedQueryChange:ne,loading:me,error:Se,loadItems:be,results:Te}=N.useDebouncedFilter(o.config,oe.form[o.config.app].services,void 0,{fetchedItemsKey:"data",searchKeys:["id","name"]}),_e=e.computed(()=>Se.value?m("errors.services.fetch"):""),ue=e.computed(()=>{var l;return(l=Te.value)==null?void 0:l.map(i=>({label:i.id,name:i.name,value:i.id}))});return e.onBeforeMount(async()=>{o.hideServiceField||await be(),o.serviceId&&(s.fields.service_id=o.serviceId)}),e.onMounted(()=>{a("model-updated",te.value)}),V({saveFormData:Q,payload:te}),e.provide("configType",f),(l,i)=>{const y=e.resolveComponent("KInput"),C=e.resolveComponent("KSelect");return e.openBlock(),e.createElementBlock("div",Nt,[e.createVNode(e.unref(N.EntityBaseForm),{"can-submit":B.value&&ee.value,config:t.config,"edit-id":t.routeId,"entity-type":e.unref(N.SupportedEntityType).Route,"error-message":s.errorMessage||_e.value,"fetch-url":S.value,"form-fields":te.value,"is-readonly":s.isReadonly,onCancel:b,"onFetch:error":pe,"onFetch:success":se,onLoading:D,onSubmit:Q},{"form-actions":e.withCtx(()=>[e.renderSlot(l.$slots,"form-actions",{canSubmit:B.value&&ee.value,cancel:b,submit:Q},void 0,!0)]),default:e.withCtx(()=>[e.createVNode(e.unref(N.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(y,{key:0,modelValue:s.fields.name,"onUpdate:modelValue":i[0]||(i[0]=T=>s.fields.name=T),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:s.isReadonly,type:"text"},null,8,["modelValue","label","placeholder","readonly"])),t.hideServiceField?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Vt,[e.createVNode(C,{modelValue:s.fields.service_id,"onUpdate:modelValue":i[1]||(i[1]=T=>s.fields.service_id=T),clearable:"","data-testid":"route-form-service-id",disabled:!!t.serviceId,"enable-filtering":"","filter-function":()=>!0,items:ue.value,label:e.unref(m)("form.fields.service_id.label"),loading:e.unref(me),placeholder:e.unref(m)("form.fields.service_id.placeholder"),readonly:s.isReadonly,"reuse-item-template":"",width:"100%",onQueryChange:e.unref(ne)},{loading:e.withCtx(()=>[e.createElementVNode("div",null,e.toDisplayString(e.unref(m)("actions.loading")),1)]),empty:e.withCtx(()=>[e.createElementVNode("div",It,e.toDisplayString(e.unref(m)("search.no_results")),1)]),"selected-item-template":e.withCtx(({item:T})=>[e.createTextVNode(e.toDisplayString(R(T)),1)]),"item-template":e.withCtx(({item:T})=>[e.createElementVNode("div",xt,[e.createElementVNode("span",Rt,e.toDisplayString(T.name),1),e.createElementVNode("span",wt,e.toDisplayString(T.value),1)])]),_:1},8,["modelValue","disabled","items","label","loading","placeholder","readonly","onQueryChange"])])),e.createVNode(y,{modelValue:s.fields.tags,"onUpdate:modelValue":i[2]||(i[2]=T=>s.fields.tags=T),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:s.isReadonly,type:"text"},null,8,["modelValue","help","label","placeholder","readonly"])]),_:1},8,["description","hide-info-header","title"]),e.createVNode(e.unref(N.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(xe,{"config-flavor":n.value,"onUpdate:configFlavor":i[3]||(i[3]=T=>n.value=T),"config-type":f.value,"onUpdate:configType":i[4]||(i[4]=T=>f.value=T),"custom-methods":g.value,"onUpdate:customMethods":i[5]||(i[5]=T=>g.value=T),fields:s.fields,"onUpdate:fields":i[6]||(i[6]=T=>s.fields=T),"is-ws-supported":e.unref($),protocols:s.fields.protocols,readonly:s.isReadonly,"record-flavor":_.value,"route-flavors":t.routeFlavors,"show-expressions-modal-entry":t.showExpressionsModalEntry,tooltips:t.configTabTooltips,onNotify:i[7]||(i[7]=T=>a("notify",T)),"onUpdate:payload":i[8]||(i[8]=T=>d.value=T),"onUpdate:protocols":i[9]||(i[9]=T=>s.fields.protocols=T)},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-861d3826"]]),At={class:"kong-ui-entities-routes-list"},Ot={class:"button-row"},Dt={key:1},Mt={key:1},Ht={key:1},$t={class:"route-list-cell-expression"},Pt=U(e.defineComponent({__name:"RouteList",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t==null?void 0: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:V}){var l;const c=V,o=t,{i18n:{t:a,formatUnixTimeStamp:f}}=H.useI18n(),n=Ce.useRouter(),{axiosInstance:_}=N.useAxios((l=o.config)==null?void 0:l.axiosRequestConfig),{handleStateChange:u,hasRecords:m}=N.useTableState(()=>w.value),p=e.computed(()=>m.value&&o.config.app==="konnect"),h=e.computed(()=>!!o.config.serviceId),I=e.computed(()=>o.config.app!=="kongManager"||!!o.config.disableSorting),R={name:{label:a("routes.list.table_headers.name"),searchable:!0,sortable:!0,hidable:!1},protocols:{label:a("routes.list.table_headers.protocols"),searchable:!0},...!o.hideTraditionalColumns&&{hosts:{label:a("routes.list.table_headers.hosts"),searchable:!0},methods:{label:a("routes.list.table_headers.methods"),searchable:!0},paths:{label:a("routes.list.table_headers.paths"),searchable:!0}},...o.hasExpressionColumn&&{expression:{label:a("routes.list.table_headers.expression"),tooltip:!0}},tags:{label:a("routes.list.table_headers.tags"),sortable:!1},updated_at:{label:a("routes.list.table_headers.updated_at"),sortable:!0},created_at:{label:a("routes.list.table_headers.created_at"),sortable:!0}},s={columnVisibility:{created_at:!1}},d=R,g=e.computed(()=>{var y,C,T,q;let i=`${o.config.apiBaseUrl}${oe.list[o.config.app][o.config.serviceId?"forGatewayService":"all"]}`;return o.config.app==="konnect"?i=i.replace(/{controlPlaneId}/gi,((y=o.config)==null?void 0:y.controlPlaneId)||"").replace(/{serviceId}/gi,((C=o.config)==null?void 0:C.serviceId)||""):o.config.app==="kongManager"&&(i=i.replace(/\/{workspace}/gi,(T=o.config)!=null&&T.workspace?`/${o.config.workspace}`:"").replace(/{serviceId}/gi,((q=o.config)==null?void 0:q.serviceId)||"")),i}),w=e.ref(""),G=e.computed(()=>{const i=o.config.app==="konnect"||o.config.isExactMatch;if(i)return{isExactMatch:i,placeholder:a(`search.placeholder.${o.config.isExactMatch?"exact":o.config.app}`)};const{name:y,protocols:C,hosts:T,methods:q,paths:X,expression:P}=R,Y={name:y,protocols:C,hosts:T,methods:q,paths:X,...o.hasExpressionColumn&&{expression:P}};return{isExactMatch:i,fields:Y,schema:o.config.filterSchema}}),{fetcher:$,fetcherState:E,fetcherCacheKey:S}=N.useFetcher(e.computed(()=>({...o.config,cacheIdentifier:o.cacheIdentifier})),g),b=i=>i.headerKey==="expression"?{style:{maxWidth:"250px",overflowX:"hidden",textOverflow:"ellipsis"}}:{},D=()=>{w.value=""},pe=()=>{S.value++},z=e.ref(null),K=async(i,y)=>{if(!await y(i.id)){c("copy:error",{entity:i,field:"id",message:a("errors.copy")});return}c("copy:success",{entity:i,field:"id",message:a("copy.success",{val:i.id})})},se=async(i,y)=>{const C=JSON.stringify(i);if(!await y(C)){c("copy:error",{entity:i,message:a("errors.copy")});return}c("copy:success",{entity:i,message:a("copy.success_brief")})},B=async i=>{var C;await((C=o.canRetrieve)==null?void 0:C.call(o,i))&&n.push(o.config.getViewRoute(i.id))},ee=i=>({label:a("actions.view"),to:o.config.getViewRoute(i)}),J=i=>({label:a("actions.edit"),to:o.config.getEditRoute(i)}),te=i=>{if(o.config.getDebugRoute)return{label:a("actions.debugger"),to:o.config.getDebugRoute(i)}},W=e.ref(void 0),Q=e.ref(!1),ne=e.ref(!1),me=e.ref(""),Se=N.useDeleteUrlBuilder(o.config,g.value),be=i=>{W.value=i,Q.value=!0},Te=()=>{Q.value=!1},_e=async()=>{var i,y,C;if((i=W.value)!=null&&i.id){ne.value=!0;try{await _.delete(Se(W.value.id)),ne.value=!1,Q.value=!1,S.value++,c("delete:success",W.value)}catch(T){me.value=((C=(y=T.response)==null?void 0:y.data)==null?void 0:C.message)||T.message||a("errors.delete"),c("error",T)}finally{ne.value=!1}}};e.watch(E,i=>{var y,C,T;if(i.status===N.FetcherStatus.Error){z.value={title:a("errors.general")},(T=(C=(y=i.error)==null?void 0:y.response)==null?void 0:C.data)!=null&&T.message&&(z.value.message=i.error.response.data.message),c("error",i.error);return}z.value=null});const ue=e.ref({ctaPath:o.config.createRoute,ctaText:void 0,message:`${a("routes.list.empty_state.description")}${o.config.additionMessageForEmptyState?` ${o.config.additionMessageForEmptyState}`:""}`,title:a("routes.title")}),ae=e.ref(!1);return e.onBeforeMount(async()=>{ae.value=await o.canCreate(),ae.value&&(ue.value.title=a("routes.list.empty_state.title"),ue.value.ctaText=a("actions.create"))}),(i,y)=>{const C=e.resolveComponent("KButton"),T=e.resolveComponent("KEmptyState"),q=e.resolveComponent("KBadge"),X=e.resolveComponent("KTruncate"),P=e.resolveComponent("KDropdownItem"),Y=e.resolveComponent("KClipboardProvider");return e.openBlock(),e.createElementBlock("div",At,[e.createVNode(e.unref(N.EntityBaseTable),{"cache-identifier":t.cacheIdentifier,"cell-attributes":b,"default-table-preferences":s,"disable-sorting":I.value,"empty-state-options":ue.value,"enable-entity-actions":"","error-message":z.value,fetcher:e.unref($),"fetcher-cache-key":e.unref(S),"pagination-type":"offset","preferences-storage-key":"kong-ui-entities-routes-list",query:w.value,"table-headers":e.unref(d),title:t.title,"title-tag":t.titleTag,onClearSearchInput:D,"onClick:row":y[7]||(y[7]=k=>B(k)),onSort:pe,onState:e.unref(u)},e.createSlots({"toolbar-filter":e.withCtx(()=>[e.createVNode(e.unref(N.EntityFilter),{modelValue:w.value,"onUpdate:modelValue":y[0]||(y[0]=k=>w.value=k),config:G.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",Ot,[!h.value&&p.value?(e.openBlock(),e.createBlock(C,{key:0,appearance:"secondary",class:"open-learning-hub","data-testid":"routes-learn-more-button",icon:"",onClick:y[1]||(y[1]=k=>i.$emit("click:learn-more"))},{default:e.withCtx(()=>[e.createVNode(e.unref(j.BookIcon),{decorative:""})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(N.PermissionsWrapper),{"auth-function":()=>t.canCreate()},{default:e.withCtx(()=>[e.createVNode(C,{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(a)("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(X,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,A=>(e.openBlock(),e.createBlock(q,{key:A,appearance:"neutral",onClick:y[3]||(y[3]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(A),1)]),_:2},1024))),128))]),_:2},1024)]),hosts:e.withCtx(({rowValue:k})=>[(k==null?void 0:k.length)>0?(e.openBlock(),e.createBlock(X,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,A=>(e.openBlock(),e.createBlock(q,{key:A,appearance:"neutral",tooltip:A,"truncation-tooltip":"",onClick:y[4]||(y[4]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(A),1)]),_:2},1032,["tooltip"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",Dt,"-"))]),methods:e.withCtx(({rowValue:k})=>[(k==null?void 0:k.length)>0?(e.openBlock(),e.createBlock(X,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,A=>(e.openBlock(),e.createBlock(q,{key:A,appearance:Object.values(e.unref(we.BadgeMethodAppearances)).includes(A.toLowerCase())?A.toLowerCase():"custom",onClick:y[5]||(y[5]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(A),1)]),_:2},1032,["appearance"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",Mt,"-"))]),paths:e.withCtx(({rowValue:k})=>[(k==null?void 0:k.length)>0?(e.openBlock(),e.createBlock(X,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,A=>(e.openBlock(),e.createBlock(q,{key:A,appearance:"neutral",tooltip:A,"truncation-tooltip":"",onClick:y[6]||(y[6]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(A),1)]),_:2},1032,["tooltip"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",Ht,"-"))]),tags:e.withCtx(({rowValue:k})=>[e.createVNode(e.unref(N.TableTags),{tags:k},null,8,["tags"])]),expression:e.withCtx(({rowValue:k})=>[e.createElementVNode("span",$t,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:A})=>[e.createTextVNode(e.toDisplayString(e.unref(f)(A??k.created_at)),1)]),actions:e.withCtx(({row:k})=>[e.createVNode(Y,null,{default:e.withCtx(({copyToClipboard:A})=>[e.createVNode(P,{"data-testid":"action-entity-copy-id",onClick:Lt=>K(k,A)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("actions.copy_id")),1)]),_:1},8,["onClick"])]),_:2},1024),e.createVNode(Y,null,{default:e.withCtx(({copyToClipboard:A})=>[e.createVNode(P,{"data-testid":"action-entity-copy-json",onClick:Lt=>se(k,A)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("actions.copy_json")),1)]),_:1},8,["onClick"])]),_:2},1024),t.copyCurlEnabled?(e.openBlock(),e.createBlock(P,{key:0,"data-testid":"action-entity-copy-curl",onClick:A=>c("click:copy-as-curl",k)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("actions.copy_curl")),1)]),_:1},8,["onClick"])):e.createCommentVNode("",!0),e.createVNode(e.unref(N.PermissionsWrapper),{"auth-function":()=>t.canRetrieve(k)},{default:e.withCtx(()=>[e.createVNode(P,{"data-testid":"action-entity-view","has-divider":"",item:ee(k.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(N.PermissionsWrapper),{"auth-function":()=>t.canDebug(k)},{default:e.withCtx(()=>[t.config.getDebugRoute?(e.openBlock(),e.createBlock(P,{key:0,"data-testid":"action-entity-debug",item:te(k.id)},null,8,["item"])):e.createCommentVNode("",!0)]),_:2},1032,["auth-function"]),e.createVNode(e.unref(N.PermissionsWrapper),{"auth-function":()=>t.canEdit(k)},{default:e.withCtx(()=>[e.createVNode(P,{"data-testid":"action-entity-edit",item:J(k.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(N.PermissionsWrapper),{"auth-function":()=>t.canDelete(k)},{default:e.withCtx(()=>[e.createVNode(P,{danger:"","data-testid":"action-entity-delete","has-divider":"",onClick:A=>be(k)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("actions.delete")),1)]),_:1},8,["onClick"])]),_:2},1032,["auth-function"])]),_:2},[!w.value&&t.config.app==="konnect"?{name:"empty-state",fn:e.withCtx(()=>{var k;return[e.createVNode(T,{"data-testid":t.config.serviceId?"nested-routes-entity-empty-state":"routes-entity-empty-state","icon-background":"",message:e.unref(a)("routes.list.empty_state_v2.description"),title:e.unref(a)("routes.list.empty_state_v2.title")},e.createSlots({icon:e.withCtx(()=>[e.createVNode(e.unref(j.ForwardIcon),{decorative:""})]),action:e.withCtx(()=>[ae.value?(e.openBlock(),e.createBlock(C,{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(a)("routes.list.toolbar_actions.new_route")),1)]),_:1},8,["to"])):e.createCommentVNode("",!0),e.createVNode(C,{appearance:"secondary","data-testid":"entity-learn-more-button",onClick:y[2]||(y[2]=A=>i.$emit("click:learn-more"))},{default:e.withCtx(()=>[e.createVNode(e.unref(j.BookIcon),{decorative:""}),e.createTextVNode(" "+e.toDisplayString(e.unref(a)("routes.list.empty_state_v2.learn_more")),1)]),_:1})]),_:2},[(k=t.config)!=null&&k.isControlPlaneGroup?{name:"default",fn:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("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(N.EntityDeleteModal),{"action-pending":ne.value,description:e.unref(a)("delete.description"),"entity-name":W.value&&(W.value.name||W.value.id),"entity-type":e.unref(N.EntityTypes).Route,error:me.value,title:e.unref(a)("delete.title"),visible:Q.value,onCancel:Te,onProceed:_e},null,8,["action-pending","description","entity-name","entity-type","error","title","visible"])])}}}),[["__scopeId","data-v-9facc1f4"]]),Ut=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:V}){const{i18n:{t:c}}=H.useI18n(),o=t,a=e.useModel(t,"modelValue"),f=V,n=e.ref(!1),_=e.computed(()=>ie.PROTOCOL_TO_SCHEMA[o.protocol]),u=e.computed(()=>ie.HTTP_BASED_PROTOCOLS.includes(o.protocol??"")),m=e.computed(()=>{if(!(!o.showExpressionsModalEntry||u.value))return c("form.expression_playground.supported_protocols_hint",{protocols:ie.HTTP_BASED_PROTOCOLS.join(", ")})}),p=R=>{a.value=R,n.value=!1},h=R=>{f("notify",R)},I=()=>{u.value&&(n.value=!0)};return(R,s)=>{const d=e.resolveComponent("KTooltip");return e.openBlock(),e.createElementBlock(e.Fragment,null,[_.value!==void 0?(e.openBlock(),e.createBlock(e.unref(ie.ExpressionsEditor),{key:0,modelValue:a.value,"onUpdate:modelValue":s[0]||(s[0]=g=>a.value=g),schema:_.value},null,8,["modelValue","schema"])):e.createCommentVNode("",!0),e.createVNode(d,{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:I},[e.renderSlot(R.$slots,"default")],2)):e.createCommentVNode("",!0)]),_:3},8,["text"]),t.showExpressionsModalEntry&&u.value?(e.openBlock(),e.createBlock(e.unref(ie.RouterPlaygroundModal),{key:1,"initial-expression":a.value,"is-visible":n.value,onCancel:s[1]||(s[1]=g=>n.value=!1),onCommit:p,onNotify:h},null,8,["initial-expression","is-visible"])):e.createCommentVNode("",!0)],64)}}})},Symbol.toStringTag,{value:"Module"}));x.DEFAULT_PROTOCOL=ce,x.ExpressionsEditorState=Z,x.HTTP_REDIRECT_STATUS_CODES=ye,x.INITIAL_ROUTE_RULES_FIELDS=Ve,x.INITIAL_SHARED_ROUTE_RULES_FIELDS=de,x.INITIAL_TRADITIONAL_ROUTE_RULES_VALUES=M,x.Methods=v,x.PATH_HANDLING_OPTIONS=Ne,x.PROTOCOLS_TO_ROUTE_RULES=fe,x.RouteConfigCard=Me,x.RouteFlavor=O,x.RouteForm=Bt,x.RouteFormRulesComposer=xe,x.RouteList=Pt,x.RoutingRulesEntities=r,x.isDefinedByBasic=Re,x.stateHasExpressionsFlavor=ge,x.stateHasTraditionalFlavor=he,Object.defineProperty(x,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(x,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):(x=typeof globalThis<"u"?globalThis:x||self,e(x["kong-ui-public-entities-routes"]={},x.Vue,x["kong-ui-public-entities-shared"],x.isEqual,x.VueRouter,x.KongIcons,x.Kongponents,x["kong-ui-public-expressions"],x["kong-ui-public-i18n"]))})(this,function(x,e,N,Ee,Ce,G,we,ie,ke){"use strict";const L="/v2/control-planes/{controlPlaneId}/core-entities/{workspace}",F="/{workspace}",oe={list:{konnect:{all:`${L}/routes`,forGatewayService:`${L}/services/{serviceId}/routes`},kongManager:{all:`${F}/routes`,forGatewayService:`${F}/services/{serviceId}/routes`}},form:{konnect:{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}`}},kongManager:{services:`${F}/services`,create:{all:`${F}/routes`,forGatewayService:`${F}/services/{serviceId}/routes`},fetch:{all:`${F}/routes/{id}`,forGatewayService:`${F}/services/{serviceId}/routes/{id}`},edit:{all:`${F}/routes/{id}`,forGatewayService:`${F}/services/{serviceId}/routes/{id}`}}},item:{konnect:{getService:`${L}/services/{serviceId}`,all:`${L}/routes/{id}`,forGatewayService:`${L}/services/{serviceId}/routes/{id}`},kongManager:{getService:`${F}/services/{serviceId}`,all:`${F}/routes/{id}`,forGatewayService:`${F}/services/{serviceId}/routes/{id}`}}},Be={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 Ae(){const t=ke.createI18n("en-us",Be);return{i18n:t,i18nT:ke.i18nTComponent(t)}}const H={useI18n:Ae},Oe={class:"kong-ui-entities-route-entity-config-card"},De={key:2},Me=e.defineComponent({__name:"RouteConfigCard",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t==null?void 0: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:V}){var R;const c=V,r=t,{axiosInstance:a}=N.useAxios((R=r.config)==null?void 0:R.axiosRequestConfig),{i18n:{t:f}}=H.useI18n(),n=e.ref(""),_=e.ref(""),u=e.ref(!1),m=e.computed(()=>{var s,d;return(d=oe.item[(s=r.config)==null?void 0:s.app])==null?void 0:d[r.serviceId?"forGatewayService":"all"].replace(/{serviceId}/gi,r.serviceId??"")}),p=e.computed(()=>{var s;return(s=oe.item[r.config.app])==null?void 0:s.getService}),h=async s=>{var g,w,q;if(n.value=r.serviceId||((g=s==null?void 0:s.service)==null?void 0:g.id),c("fetch:success",s),!n.value)return;let d=`${r.config.apiBaseUrl}${p.value}`;r.config.app==="konnect"&&(d=d.replace(/{controlPlaneId}/gi,((w=r.config)==null?void 0:w.controlPlaneId)||"")),d=d.replace(/\/{workspace}/gi,(q=r.config)!=null&&q.workspace?`/${r.config.workspace}`:"").replace(/{serviceId}/gi,n.value||"");try{u.value=!0;const{data:$}=await a.get(d);_.value=($==null?void 0:$.name)||($==null?void 0:$.id)}catch($){c("fetch:error",$)}finally{u.value=!1}},I=e.ref({id:{},name:{tooltip:f("form.fields.name.tooltip")},created_at:{},updated_at:{},service:{label:f("form.fields.service.label"),section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.service.tooltip"),order:5},tags:{tooltip:f("form.fields.tags.tooltip"),order:6},protocols:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.protocols.tooltip"),type:N.ConfigurationSchemaType.BadgeTag,order:7},paths:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.paths.tooltip"),type:N.ConfigurationSchemaType.CopyBadge,order:8},hosts:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.hosts.tooltip"),type:N.ConfigurationSchemaType.CopyBadge,order:9},snis:{label:f("form.fields.snis.label"),tooltip:f("form.fields.snis.tooltip"),order:10},headers:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.headers.tooltip"),order:11},methods:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.methods.tooltip"),type:N.ConfigurationSchemaType.BadgeMethod,order:12},sources:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.sources.tooltip"),type:N.ConfigurationSchemaType.JsonArray,order:13},destinations:{section:N.ConfigurationSchemaSection.Basic,tooltip:f("form.fields.destinations.tooltip"),type:N.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(s,d)=>{const g=e.resolveComponent("KSkeleton");return e.openBlock(),e.createElementBlock("div",Oe,[e.createVNode(e.unref(N.EntityBaseConfigCard),{config:t.config,"config-card-doc":t.configCardDoc,"config-schema":I.value,"entity-type":e.unref(N.SupportedEntityType).Route,"fetch-url":m.value,"hide-title":t.hideTitle,"onFetch:error":d[0]||(d[0]=w=>s.$emit("fetch:error",w)),"onFetch:success":h,onLoading:d[1]||(d[1]=w=>s.$emit("loading",w))},{service:e.withCtx(({row:w})=>[u.value?(e.openBlock(),e.createBlock(g,{key:0,"data-testid":"service-name-loader",type:"spinner"})):w.value&&w.value.id===n.value&&_.value?(e.openBlock(),e.createBlock(e.unref(N.InternalLinkItem),{key:1,item:{key:w.value.id,value:_.value,type:e.unref(N.ConfigurationSchemaType).LinkInternal},onNavigationClick:()=>s.$emit("navigation-click",w.value.id,"services")},null,8,["item","onNavigationClick"])):(e.openBlock(),e.createElementBlock("div",De,e.toDisplayString("-")))]),_:1},8,["config","config-card-doc","config-schema","entity-type","fetch-url","hide-title"])])}}});var O=(t=>(t.TRADITIONAL="traditional",t.EXPRESSIONS="expressions",t))(O||{}),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||{}),Z=(t=>(t.LOADING="loading",t.ERROR="error",t.READY="ready",t))(Z||{}),v=(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))(v||{});const he=t=>t.routeFlavors.traditional===!0,ge=t=>t.routeFlavors.expressions===!0,M={[o.PATHS]:[""],[o.SNIS]:[""],[o.HOSTS]:[""],[o.METHODS]:[],[o.HEADERS]:[{header:"",values:""}],[o.SOURCES]:[{ip:"",port:null}],[o.DESTINATIONS]:[{ip:"",port:null}]},fe={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]},ye=[{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"}],de={https_redirect_status_code:426,strip_path:!0,preserve_host:!1,request_buffering:!0,response_buffering:!0},Ve={...de,paths:[""],regex_priority:0,path_handling:"v0",expression:"",priority:0},ce="https",He=e.defineComponent({__name:"RuleControlsAdd",props:{routingRulesEntity:{}},emits:["add"],setup(t,{emit:V}){const c=t,r=V,a=e.inject("configType","basic"),{i18n:{t:f}}=H.useI18n(),n=e.computed(()=>f(`form.fields.${c.routingRulesEntity}.add`));return(_,u)=>{const m=e.resolveComponent("KButton");return e.unref(a)!=="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]=p=>r("add"))},{default:e.withCtx(()=>[e.createVNode(e.unref(G.AddIcon)),e.createElementVNode("span",null,e.toDisplayString(n.value),1)]),_:1},8,["data-testid"])):e.createCommentVNode("",!0)}}}),U=(t,V)=>{const c=t.__vccOpts||t;for(const[r,a]of V)c[r]=a;return c},re=U(He,[["__scopeId","data-v-f1f4cfc9"]]),$e="#afb7c5",Pe="#0044f4",Ue="16px",le=e.defineComponent({__name:"RuleControlsRemove",props:{disabled:{type:Boolean},routingRulesEntity:{}},emits:["remove"],setup(t,{emit:V}){const c=V,r=e.inject("configType","basic");return(a,f)=>{const n=e.resolveComponent("KButton");return e.unref(r)!=="basic"?(e.openBlock(),e.createBlock(n,{key:0,appearance:"tertiary","data-testid":`remove-${t.routingRulesEntity}`,disabled:t.disabled,icon:"",onClick:f[0]||(f[0]=_=>c("remove"))},{default:e.withCtx(()=>[e.createVNode(e.unref(G.CloseIcon),{color:t.disabled?e.unref($e):e.unref(Pe)},null,8,["color"])]),_:1},8,["data-testid","disabled"])):e.createCommentVNode("",!0)}}}),Le={class:"routing-rule-container"},Fe=["innerHTML"],Ke=U(e.defineComponent({__name:"DestinationRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),r=e.useModel(t,"modelValue"),a=V;return(f,n)=>{const _=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",Le,[e.createVNode(_,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.destinations.tooltip")},null,8,Fe)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(c)("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,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"routing-rule-input"},[e.createVNode(u,{modelValue:r.value[p].ip,"onUpdate:modelValue":h=>r.value[p].ip=h,modelModifiers:{trim:!0},"data-testid":`route-form-destinations-ip-input-${p+1}`,placeholder:e.unref(c)("form.fields.destinations.ip.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(u,{modelValue:r.value[p].port,"onUpdate:modelValue":h=>r.value[p].port=h,modelModifiers:{number:!0},"data-testid":`route-form-destinations-port-input-${p+1}`,max:"65535",min:"0",placeholder:e.unref(c)("form.fields.destinations.port.placeholder"),type:"number"},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).DESTINATIONS,onRemove:h=>a("remove",p)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(o).DESTINATIONS,onAdd:n[0]||(n[0]=m=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-3eb40a37"]]),qe={class:"routing-rule-container"},Ge=["innerHTML"],je=U(e.defineComponent({__name:"HeaderRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),r=e.useModel(t,"modelValue"),a=V;return(f,n)=>{const _=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",qe,[e.createVNode(_,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.headers.tooltip")},null,8,Ge)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(c)("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,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"routing-rule-input"},[e.createVNode(u,{modelValue:r.value[p].header,"onUpdate:modelValue":h=>r.value[p].header=h,modelModifiers:{trim:!0},"data-testid":`route-form-headers-name-input-${p+1}`,placeholder:e.unref(c)("form.fields.headers.name.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(u,{modelValue:r.value[p].values,"onUpdate:modelValue":h=>r.value[p].values=h,modelModifiers:{trim:!0},"data-testid":`route-form-headers-values-input-${p+1}`,placeholder:e.unref(c)("form.fields.headers.values.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).HEADERS,onRemove:h=>a("remove",p)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(o).HEADERS,onAdd:n[0]||(n[0]=m=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-d3bede0b"]]),We={class:"routing-rule-container"},Xe=["innerHTML"],ze=U(e.defineComponent({__name:"HostRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),r=e.useModel(t,"modelValue"),a=V,f=e.inject("configType","basic");return(n,_)=>{const u=e.resolveComponent("KLabel"),m=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",We,[e.createVNode(u,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.hosts.tooltip")},null,8,Xe)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(f)==="basic"?e.unref(c)("form.fields.hosts.label_singular"):e.unref(c)("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,(p,h)=>(e.openBlock(),e.createElementBlock("div",{key:h,class:"routing-rule-input"},[e.createVNode(m,{modelValue:r.value[h],"onUpdate:modelValue":I=>r.value[h]=I,modelModifiers:{trim:!0},"data-testid":`route-form-hosts-input-${h+1}`,placeholder:e.unref(c)("form.fields.hosts.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).HOSTS,onRemove:I=>a("remove",h)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(o).HOSTS,onAdd:_[0]||(_[0]=p=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-dccd9082"]]),Je={class:"routing-rule-container","data-testid":"route-form-methods"},Qe=["innerHTML"],Ye={class:"routing-rule-input"},Ze=U(e.defineComponent({__name:"MethodRules",props:{methods:{required:!0},methodsModifiers:{},customMethods:{required:!0},customMethodsModifiers:{}},emits:["update:methods","update:customMethods"],setup(t){const{i18n:{t:V}}=H.useI18n(),c=e.useModel(t,"methods"),r=e.useModel(t,"customMethods"),a=e.computed(()=>c.value.filter(m=>Object.keys(v).includes(m)).concat(r.value.map(m=>m.value))),f=e.computed(()=>Object.keys(v).map(m=>({label:m,value:m})).concat(r.value.map(m=>({label:m.label,value:m.value,custom:!0})))),n=m=>!f.value.map(p=>p.value.toLowerCase()).includes(m.toLowerCase()),_=(m,p)=>{p?r.value.push(m):r.value=r.value.filter(h=>h.value!==m.value)},u=m=>{c.value=m};return(m,p)=>{const h=e.resolveComponent("KLabel"),I=e.resolveComponent("KMultiselect");return e.openBlock(),e.createElementBlock("div",Je,[e.createVNode(h,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(V)("form.fields.methods.tooltip")},null,8,Qe)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(V)("form.fields.methods.label")),1)]),_:1}),e.createElementVNode("div",Ye,[e.createVNode(I,{"enable-item-creation":"","item-creation-validator":n,items:f.value,"model-value":a.value,placeholder:e.unref(V)("form.fields.methods.placeholder"),"search-placeholder":e.unref(V)("form.fields.methods.search_placeholder"),onItemAdded:p[0]||(p[0]=R=>_(R,!0)),onItemRemoved:p[1]||(p[1]=R=>_(R,!1)),"onUpdate:modelValue":u},null,8,["items","model-value","placeholder","search-placeholder"])])])}}}),[["__scopeId","data-v-6c94d6d2"]]),ve={class:"routing-rule-container"},et=["innerHTML"],tt=U(e.defineComponent({__name:"PathRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),r=e.useModel(t,"modelValue"),a=V,f=e.inject("configType","basic");return(n,_)=>{const u=e.resolveComponent("KLabel"),m=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",ve,[e.createVNode(u,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.paths.tooltip")},null,8,et)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(f)==="basic"?e.unref(c)("form.fields.paths.label_singular"):e.unref(c)("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,(p,h)=>(e.openBlock(),e.createElementBlock("div",{key:h,class:"routing-rule-input"},[e.createVNode(m,{modelValue:r.value[h],"onUpdate:modelValue":I=>r.value[h]=I,modelModifiers:{trim:!0},"data-testid":`route-form-paths-input-${h+1}`,placeholder:e.unref(c)("form.fields.paths.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).PATHS,onRemove:I=>a("remove",h)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(o).PATHS,onAdd:_[0]||(_[0]=p=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-eb440a9e"]]),ot={class:"routing-rule-container"},rt=["innerHTML"],lt=U(e.defineComponent({__name:"SniRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),r=e.useModel(t,"modelValue"),a=V;return(f,n)=>{const _=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",ot,[e.createVNode(_,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.snis.tooltip")},null,8,rt)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(c)("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,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"routing-rule-input"},[e.createVNode(u,{modelValue:r.value[p],"onUpdate:modelValue":h=>r.value[p]=h,modelModifiers:{trim:!0},"data-testid":`route-form-snis-input-${p+1}`,placeholder:e.unref(c)("form.fields.snis.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).SNIS,onRemove:h=>a("remove",p)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(o).SNIS,onAdd:n[0]||(n[0]=m=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-e6782e08"]]),st={class:"routing-rule-container"},nt=["innerHTML"],at=U(e.defineComponent({__name:"SourceRules",props:{modelValue:{required:!0},modelModifiers:{}},emits:e.mergeModels(["add","remove"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),r=e.useModel(t,"modelValue"),a=V;return(f,n)=>{const _=e.resolveComponent("KLabel"),u=e.resolveComponent("KInput");return e.openBlock(),e.createElementBlock("div",st,[e.createVNode(_,{"tooltip-attributes":{maxWidth:"320"}},{tooltip:e.withCtx(()=>[e.createElementVNode("span",{innerHTML:e.unref(c)("form.fields.sources.tooltip")},null,8,nt)]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(e.unref(c)("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,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"routing-rule-input"},[e.createVNode(u,{modelValue:r.value[p].ip,"onUpdate:modelValue":h=>r.value[p].ip=h,modelModifiers:{trim:!0},"data-testid":`route-form-sources-ip-input-${p+1}`,placeholder:e.unref(c)("form.fields.sources.ip.placeholder")},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(u,{modelValue:r.value[p].port,"onUpdate:modelValue":h=>r.value[p].port=h,modelModifiers:{number:!0},"data-testid":`route-form-sources-port-input-${p+1}`,max:"65535",min:"0",placeholder:e.unref(c)("form.fields.sources.port.placeholder"),type:"number"},null,8,["modelValue","onUpdate:modelValue","data-testid","placeholder"]),e.createVNode(le,{disabled:r.value.length===1,"routing-rules-entity":e.unref(o).SOURCES,onRemove:h=>a("remove",p)},null,8,["disabled","routing-rules-entity","onRemove"])]))),128))]),_:1}),e.createVNode(re,{"routing-rules-entity":e.unref(o).SOURCES,onAdd:n[0]||(n[0]=m=>a("add"))},null,8,["routing-rules-entity"])])}}}),[["__scopeId","data-v-448078c1"]]),it={class:"traditional-rules-hint"},dt={key:0},ct=["innerHTML"],pt={key:0,class:"route-form-fields-container route-form-advanced-fields-container"},ut=["innerHTML"],ft=["innerHTML"],mt=["innerHTML"],ht=["innerHTML"],gt=["innerHTML"],yt=["innerHTML"],Ie=U(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:V,i18n:c,i18n:{t:r}}=H.useI18n(),a=c.source.form.protocols,f=t,n=e.useModel(t,"fields"),_=e.useModel(t,"customMethods"),u=s=>{switch(s){case o.PATHS:Array.isArray(n.value.paths)?n.value.paths.push([...M[o.PATHS]][0]):n.value.paths=[...M[o.PATHS]];break;case o.SNIS:Array.isArray(n.value.snis)?n.value.snis.push([...M[o.SNIS]][0]):n.value.snis=[...M[o.SNIS]];break;case o.HOSTS:Array.isArray(n.value.hosts)?n.value.hosts.push([...M[o.HOSTS]][0]):n.value.hosts=[...M[o.HOSTS]];break;case o.METHODS:n.value.methods||(n.value.methods={...M[o.METHODS]});break;case o.HEADERS:Array.isArray(n.value.headers)?n.value.headers.push({...M[o.HEADERS][0]}):n.value.headers=[{...M[o.HEADERS][0]}];break;case o.SOURCES:Array.isArray(n.value.sources)?n.value.sources.push({...M[o.SOURCES][0]}):n.value.sources=[{...M[o.SOURCES][0]}];break;case o.DESTINATIONS:Array.isArray(n.value.destinations)?n.value.destinations.push({...M[o.DESTINATIONS][0]}):n.value.destinations=[{...M[o.DESTINATIONS][0]}];break}},m=async(s,d)=>{if(typeof d<"u"){const g=n.value[s];if(Array.isArray(g)&&(g.splice(d,1),g.length>0))return}await e.nextTick(()=>{delete n.value[s]})},p=s=>s.some(d=>f.protocols.includes(d)),h=e.computed(()=>new Set(fe[f.protocols])),I=e.computed(()=>{if(p(["tls_passthrough"]))return[R(o.SNIS)];const s=(f.configType==="basic"?[o.PATHS,o.METHODS,o.HOSTS]:fe[f.protocols]).map(d=>R(d));return[[...s].splice(0,s.length-1).join(", "),s[s.length-1]]}),R=s=>{var g;return((g=c.source.form.fields[s])==null?void 0:g.singular)||""};return(s,d)=>{const g=e.resolveComponent("KCheckbox"),w=e.resolveComponent("KSelect"),q=e.resolveComponent("KInput"),$=e.resolveComponent("KCard");return e.openBlock(),e.createBlock($,null,{default:e.withCtx(()=>{var E;return[e.createElementVNode("span",it,[e.createVNode(e.unref(V),{keypath:"form.hint.rules_message"},{protocol:e.withCtx(()=>[e.createElementVNode("b",null,e.toDisplayString(e.unref(a)[t.protocols]),1)]),routingRules:e.withCtx(()=>[e.createVNode(e.unref(V),{keypath:I.value[1]?"form.hint.multiple_rules":"form.hint.single_rule"},{routingRules:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(I.value[0]),1)]),lastRoutingRule:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(I.value[1]),1)]),_:1},8,["keypath"])]),_:1}),t.configType==="basic"?(e.openBlock(),e.createElementBlock("span",dt,e.toDisplayString(e.unref(r)("form.hint.advanced")),1)):e.createCommentVNode("",!0)]),e.createVNode(e.TransitionGroup,{name:"appear"},{default:e.withCtx(()=>{var S;return[n.value.paths&&h.value.has(e.unref(o).PATHS)?(e.openBlock(),e.createBlock(tt,{key:"paths-container",modelValue:n.value.paths,"onUpdate:modelValue":d[0]||(d[0]=b=>n.value.paths=b),onAdd:d[1]||(d[1]=b=>u(e.unref(o).PATHS)),onRemove:d[2]||(d[2]=b=>m(e.unref(o).PATHS,b))},null,8,["modelValue"])):e.createCommentVNode("",!0),p(["http","https","ws","wss"])?(e.openBlock(),e.createBlock(g,{key:1,modelValue:n.value.strip_path,"onUpdate:modelValue":d[3]||(d[3]=b=>n.value.strip_path=b),class:"route-form-strip-path","data-testid":"route-form-strip-path",disabled:!((S=n.value.paths)!=null&&S.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,ct)]),_:1},8,["modelValue","disabled","label"])):e.createCommentVNode("",!0),n.value.methods&&h.value.has(e.unref(o).METHODS)?(e.openBlock(),e.createBlock(Ze,{key:"methods-container","custom-methods":_.value,"onUpdate:customMethods":d[4]||(d[4]=b=>_.value=b),methods:n.value.methods,"onUpdate:methods":d[5]||(d[5]=b=>n.value.methods=b)},null,8,["custom-methods","methods"])):e.createCommentVNode("",!0),n.value.hosts&&h.value.has(e.unref(o).HOSTS)?(e.openBlock(),e.createBlock(ze,{key:"hosts-container",modelValue:n.value.hosts,"onUpdate:modelValue":d[6]||(d[6]=b=>n.value.hosts=b),onAdd:d[7]||(d[7]=b=>u(e.unref(o).HOSTS)),onRemove:d[8]||(d[8]=b=>m(e.unref(o).HOSTS,b))},null,8,["modelValue"])):e.createCommentVNode("",!0),n.value.headers&&t.configType==="advanced"&&h.value.has(e.unref(o).HEADERS)?(e.openBlock(),e.createBlock(je,{key:"headers-container",modelValue:n.value.headers,"onUpdate:modelValue":d[9]||(d[9]=b=>n.value.headers=b),onAdd:d[10]||(d[10]=b=>u(e.unref(o).HEADERS)),onRemove:d[11]||(d[11]=b=>m(e.unref(o).HEADERS,b))},null,8,["modelValue"])):e.createCommentVNode("",!0),n.value.sources&&h.value.has(e.unref(o).SOURCES)?(e.openBlock(),e.createBlock(at,{key:"sources-container",modelValue:n.value.sources,"onUpdate:modelValue":d[12]||(d[12]=b=>n.value.sources=b),onAdd:d[13]||(d[13]=b=>u(e.unref(o).SOURCES)),onRemove:d[14]||(d[14]=b=>m(e.unref(o).SOURCES,b))},null,8,["modelValue"])):e.createCommentVNode("",!0),n.value.destinations&&h.value.has(e.unref(o).DESTINATIONS)?(e.openBlock(),e.createBlock(Ke,{key:"destinations-container",modelValue:n.value.destinations,"onUpdate:modelValue":d[15]||(d[15]=b=>n.value.destinations=b),onAdd:d[16]||(d[16]=b=>u(e.unref(o).DESTINATIONS)),onRemove:d[17]||(d[17]=b=>m(e.unref(o).DESTINATIONS,b))},null,8,["modelValue"])):e.createCommentVNode("",!0),n.value.snis&&t.configType==="advanced"&&h.value.has(e.unref(o).SNIS)?(e.openBlock(),e.createBlock(lt,{key:"snis-container",modelValue:n.value.snis,"onUpdate:modelValue":d[18]||(d[18]=b=>n.value.snis=b),onAdd:d[19]||(d[19]=b=>u(e.unref(o).SNIS)),onRemove:d[20]||(d[20]=b=>m(e.unref(o).SNIS,b))},null,8,["modelValue"])):e.createCommentVNode("",!0)]}),_:1}),t.hideAdvanced?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",pt,[(E=n.value.paths)!=null&&E.some(Boolean)?(e.openBlock(),e.createBlock(w,{key:0,modelValue:n.value.path_handling,"onUpdate:modelValue":d[21]||(d[21]=S=>n.value.path_handling=S),"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,ut)]),_:1},8,["modelValue","items","label","readonly"])):e.createCommentVNode("",!0),e.createVNode(w,{modelValue:n.value.https_redirect_status_code,"onUpdate:modelValue":d[22]||(d[22]=S=>n.value.https_redirect_status_code=S),"data-testid":"route-form-http-redirect-status-code",items:e.unref(ye),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,ft)]),_:1},8,["modelValue","items","label","readonly"]),e.createVNode(q,{modelValue:n.value.regex_priority,"onUpdate:modelValue":d[23]||(d[23]=S=>n.value.regex_priority=S),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,mt)]),_:1},8,["modelValue","label","readonly"]),e.createVNode(g,{modelValue:n.value.preserve_host,"onUpdate:modelValue":d[24]||(d[24]=S=>n.value.preserve_host=S),"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,ht)]),_:1},8,["modelValue","label"]),e.createVNode(g,{modelValue:n.value.request_buffering,"onUpdate:modelValue":d[25]||(d[25]=S=>n.value.request_buffering=S),"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,gt)]),_:1},8,["modelValue","label"]),e.createVNode(g,{modelValue:n.value.response_buffering,"onUpdate:modelValue":d[26]||(d[26]=S=>n.value.response_buffering=S),"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,yt)]),_:1},8,["modelValue","label"])]))]}),_:1})}}}),[["__scopeId","data-v-0ade8d72"]]),St=e.defineComponent({__name:"RouteFormExpressionsEditorLoader",props:e.mergeModels({protocol:{},showExpressionsModalEntry:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["notify"],["update:modelValue"]),setup(t,{emit:V}){const{i18n:{t:c}}=H.useI18n(),r={render:()=>e.h("div",c("form.expressions_editor.loading"))},a={render:()=>e.h("div",c("form.expressions_editor.error"))},f=e.defineAsyncComponent({loader:async()=>Promise.resolve().then(()=>Ut),loadingComponent:r,errorComponent:a}),n=t,_=V,u=e.ref(Z.LOADING),m=e.useModel(t,"modelValue"),p=h=>{m.value=h};return e.onMounted(async()=>{try{await(await import("@kong-ui-public/expressions")).asyncInit,u.value=Z.READY}catch(h){u.value=Z.ERROR,console.error(h)}}),(h,I)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[u.value===e.unref(Z).ERROR?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a),{key:0,"data-testid":"route-form-expressions-editor-loader-error"})):u.value===e.unref(Z).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":I[0]||(I[0]=R=>m.value=R),protocol:n.protocol,"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:I[1]||(I[1]=R=>_("notify",R))},{default:e.withCtx(()=>[e.createVNode(e.unref(G.RocketIcon),{size:e.unref(Ue)},null,8,["size"]),e.createElementVNode("span",null,e.toDisplayString(e.unref(c)("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:p},state:u.value})],64))}}),bt={class:"route-form-routing-rules-title-container"},Tt={class:"routing-rules-title"},_t={class:"route-form-fields-container route-form-advanced-fields-container"},Et=U(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:V}){const{i18n:{t:c}}=H.useI18n(),r=t,a=e.useModel(t,"fields"),f=V,n=e.ref(!0),_=e.computed(()=>r.protocols.split(",")||[]),u=m=>m.some(p=>r.protocols.includes(p));return(m,p)=>{const h=e.resolveComponent("KCard"),I=e.resolveComponent("KSelect"),R=e.resolveComponent("KInput"),s=e.resolveComponent("KCheckbox"),d=e.resolveComponent("KCollapse");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(h,null,{title:e.withCtx(()=>[e.createElementVNode("div",bt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,g=>(e.openBlock(),e.createElementBlock("span",{key:g,class:"protocol-title"},e.toDisplayString(g.toUpperCase()),1))),128)),e.createElementVNode("span",Tt,e.toDisplayString(e.unref(c)("form.sections.routingExpression.title")),1)])]),default:e.withCtx(()=>[e.createVNode(St,{modelValue:a.value.expression,"onUpdate:modelValue":p[0]||(p[0]=g=>a.value.expression=g),protocol:_.value[0],"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:p[1]||(p[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(d,{modelValue:n.value,"onUpdate:modelValue":p[8]||(p[8]=g=>n.value=g),class:"route-form-advanced-fields-collapse","trigger-alignment":"leading","trigger-label":e.unref(c)("form.show_more")},{default:e.withCtx(()=>[e.createVNode(h,null,{default:e.withCtx(()=>[e.createElementVNode("div",_t,[e.createVNode(I,{modelValue:a.value.https_redirect_status_code,"onUpdate:modelValue":p[2]||(p[2]=g=>a.value.https_redirect_status_code=g),"data-testid":"route-form-http-redirect-status-code",items:e.unref(ye),label:e.unref(c)("form.fields.https_redirect_status_code.label"),readonly:t.readonly,width:"100%"},null,8,["modelValue","items","label","readonly"]),e.createVNode(R,{modelValue:a.value.priority,"onUpdate:modelValue":p[3]||(p[3]=g=>a.value.priority=g),autocomplete:"off","data-testid":"route-form-priority",label:e.unref(c)("form.fields.priority.label"),"label-attributes":{info:e.unref(c)("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(s,{key:0,modelValue:a.value.strip_path,"onUpdate:modelValue":p[4]||(p[4]=g=>a.value.strip_path=g),"data-testid":"route-form-strip-path",label:e.unref(c)("form.fields.strip_path.label")},null,8,["modelValue","label"])):e.createCommentVNode("",!0),e.createVNode(s,{modelValue:a.value.preserve_host,"onUpdate:modelValue":p[5]||(p[5]=g=>a.value.preserve_host=g),"data-testid":"route-form-preserve-host",label:e.unref(c)("form.fields.preserve_host.label")},null,8,["modelValue","label"]),e.createVNode(s,{modelValue:a.value.request_buffering,"onUpdate:modelValue":p[6]||(p[6]=g=>a.value.request_buffering=g),"data-testid":"route-form-request-buffering",label:e.unref(c)("form.fields.request_buffering.label")},null,8,["modelValue","label"]),e.createVNode(s,{modelValue:a.value.response_buffering,"onUpdate:modelValue":p[7]||(p[7]=g=>a.value.response_buffering=g),"data-testid":"route-form-response-buffering",label:e.unref(c)("form.fields.response_buffering.label")},null,8,["modelValue","label"])])]),_:1})]),_:1},8,["modelValue","trigger-label"])],64)}}}),[["__scopeId","data-v-e7571a47"]]),Ct={class:"config-type-container"},kt={key:0,class:"config-flavor"},xe=U(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({...de,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:V}){const c=t,r=e.useModel(t,"configType"),a=e.useModel(t,"configFlavor"),f=e.useModel(t,"fields"),n=e.useModel(t,"customMethods"),_=V,{i18n:{t:u}}=H.useI18n(),m=[{value:O.TRADITIONAL,label:u("form.flavors.traditional")},{value:O.EXPRESSIONS,label:u("form.flavors.expressions")}],p=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"},...c.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(()=>c.recordFlavor?c.recordFlavor:a.value),I=(E,S)=>{if(!new Set(fe[c.protocols]).has(E))return[];if([o.PATHS,o.HOSTS,o.METHODS,o.SNIS].includes(E))return[...S].filter(D=>!!D);if(E===o.SOURCES||E===o.DESTINATIONS)return[...S].filter(D=>!!D.ip||!!D.port).map(D=>({ip:D.ip||void 0,port:!D.port&&D.port!==0?void 0:D.port}));if(E===o.HEADERS)return[...S].filter(D=>!!D.header)},R=E=>E.some(S=>c.protocols.includes(S)),s=()=>{if(h.value!==O.TRADITIONAL)return null;const E=f.value,S=I(o.HEADERS,E.headers||[])||M[o.HEADERS];return S.length===0?null:S.reduce((b,D)=>(b[D.header]=D.values.split(","),b),{})},d=e.computed(()=>(f.value.methods||[]).filter(b=>Object.keys(v).includes(b)).concat(n.value.map(b=>b.label.toUpperCase()))),g=E=>E!=null&&E.length?E:null,w=e.computed(()=>({https_redirect_status_code:f.value.https_redirect_status_code,strip_path:R(["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})),q=e.computed(()=>{switch(h.value){case O.TRADITIONAL:{const E=f.value,S=g(I(o.PATHS,E.paths||[])),b=g(I(o.HOSTS,E.hosts||[])),D={...w.value,methods:g(I(o.METHODS,d.value)),hosts:r.value==="basic"&&b?b.slice(0,1):b,paths:r.value==="basic"&&S?S.slice(0,1):S,headers:r.value==="basic"?null:s(),regex_priority:Number(E.regex_priority),path_handling:E.path_handling,sources:g(I(o.SOURCES,E.sources||[])),destinations:g(I(o.DESTINATIONS,E.destinations||[])),snis:r.value==="basic"?null:g(I(o.SNIS,E.snis||[]))};return{type:h.value,payload:D}}case O.EXPRESSIONS:{const E=f.value;return{type:h.value,payload:{...w.value,expression:E.expression,priority:Number(E.priority)}}}default:return}}),$=E=>{E&&_("update:protocols",E)};return e.watch([()=>c.recordFlavor,()=>c.routeFlavors],([E,S])=>{if(E){a.value=E;return}a.value=!S.traditional&&S.expressions?O.EXPRESSIONS:O.TRADITIONAL},{immediate:!0,deep:!0}),e.watch(r,E=>{E==="basic"&&(a.value=O.TRADITIONAL,_("update:protocols",ce))}),e.watch(q,E=>{_("update:payload",E)},{deep:!0,immediate:!0}),(E,S)=>{const b=e.resolveComponent("KRadio"),D=e.resolveComponent("KLabel"),pe=e.resolveComponent("KTooltip"),z=e.resolveComponent("KSegmentedControl"),K=e.resolveComponent("KAlert"),se=e.resolveComponent("KSelect");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Ct,[e.createVNode(b,{modelValue:r.value,"onUpdate:modelValue":S[0]||(S[0]=B=>r.value=B),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(O).EXPRESSIONS,label:e.unref(u)("form.config_types.basic.label"),"selected-value":"basic"},null,8,["modelValue","description","disabled","label"]),e.createVNode(b,{modelValue:r.value,"onUpdate:modelValue":S[1]||(S[1]=B=>r.value=B),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(Ie,{key:0,"custom-methods":n.value,"onUpdate:customMethods":S[2]||(S[2]=B=>n.value=B),fields:f.value,"onUpdate:fields":S[3]||(S[3]=B=>f.value=B),"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",kt,[e.createVNode(D,{class:"config-flavor-label"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(u)("form.config_flavor.label")),1)]),_:1}),e.createVNode(z,{modelValue:a.value,"onUpdate:modelValue":S[4]||(S[4]=B=>a.value=B),class:"config-flavor-control","data-testid":"route-form-config-flavor",options:m},{"option-label":e.withCtx(({option:B})=>{var ee,J;return[e.createElementVNode("span",null,e.toDisplayString(B.label),1),(ee=t.tooltips)!=null&&ee[B.value]?(e.openBlock(),e.createBlock(pe,{key:0,class:"route-form-config-tabs-tooltip",text:(J=t.tooltips)==null?void 0:J[B.value],"tooltip-id":`route-form-config-tabs-tooltip-${B.value}`},{default:e.withCtx(()=>[e.createVNode(e.unref(G.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!==a.value)?(e.openBlock(),e.createBlock(K,{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!==a.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!==a.value)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.hideProtocols?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(se,{key:0,"data-testid":"route-form-protocols",items:p.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":$},null,8,["items","label","label-attributes","model-value","readonly"])),a.value===e.unref(O).TRADITIONAL?(e.openBlock(),e.createBlock(Ie,{key:1,"custom-methods":n.value,"onUpdate:customMethods":S[5]||(S[5]=B=>n.value=B),fields:f.value,"onUpdate:fields":S[6]||(S[6]=B=>f.value=B),"config-type":"advanced",protocols:t.protocols,readonly:t.readonly},null,8,["custom-methods","fields","protocols","readonly"])):(e.openBlock(),e.createBlock(Et,{key:2,fields:f.value,"onUpdate:fields":S[7]||(S[7]=B=>f.value=B),protocols:t.protocols,readonly:t.readonly,"show-expressions-modal-entry":t.showExpressionsModalEntry,onNotify:S[8]||(S[8]=B=>_("notify",B))},null,8,["fields","protocols","readonly","show-expressions-modal-entry"]))],64)):e.createCommentVNode("",!0)],64))],64)}}}),[["__scopeId","data-v-5c24422c"]]),Re=t=>{var c,r,a,f,n;return!(typeof t.expression=="string"&&t.expression.length>0||(t.protocols||[]).sort().join(",")!==ce||((c=t[o.PATHS])==null?void 0:c.length)>1||((r=t[o.HOSTS])==null?void 0:r.length)>1||t[o.HEADERS]&&typeof t[o.HEADERS]=="object"||((a=t[o.SNIS])==null?void 0:a.length)>0||((f=t[o.SOURCES])==null?void 0:f.length)>0||((n=t[o.DESTINATIONS])==null?void 0:n.length)>0||["path_handling","regex_priority","https_redirect_status_code","preserve_host","request_buffering","response_buffering"].some(_=>t[_]!==Ve[_]))},Nt={class:"kong-ui-entities-route-form"},Vt={key:1},It={"data-testid":"no-search-results"},xt={class:"route-form-service-dropdown-item"},Rt={class:"select-item-label"},wt={class:"select-item-description"},Bt=U(e.defineComponent({__name:"RouteForm",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t==null?void 0:t.app)||(t==null?void 0:t.app)==="konnect"&&!(t!=null&&t.controlPlaneId)||(t==null?void 0:t.app)==="kongManager"&&typeof(t==null?void 0:t.workspace)!="string"||!(t!=null&&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:V,emit:c}){var ae;const r=t,a=c,f=e.ref("basic"),n=e.ref(!r.routeFlavors.traditional&&r.routeFlavors.expressions?O.EXPRESSIONS:O.TRADITIONAL),_=e.ref(void 0),u=e.computed(()=>{if(_.value)return _.value;if(n.value)return n.value;if(r.routeFlavors.traditional)return O.TRADITIONAL;if(r.routeFlavors.expressions)return O.EXPRESSIONS}),{i18n:{t:m}}=H.useI18n(),p=Ce.useRouter(),{axiosInstance:h}=N.useAxios((ae=r.config)==null?void 0:ae.axiosRequestConfig),{getMessageFromError:I}=N.useErrors(),R=l=>l.name?`${l.name} - ${l.value}`:l.value,s=e.reactive({routeFlavors:r.routeFlavors,fields:{name:"",protocols:ce,tags:"",service_id:"",...de,paths:[""],snis:[""],hosts:[""],methods:[],headers:[{...M[o.HEADERS][0]}],sources:[{...M[o.SOURCES][0]}],destinations:[{...M[o.DESTINATIONS][0]}],regex_priority:0,path_handling:"v0",expression:"",priority:0},isReadonly:!1,errorMessage:""});e.watch(()=>r.routeFlavors,l=>{s.routeFlavors=l,l.traditional||(f.value="advanced")},{immediate:!0,deep:!0});const d=e.ref(),g=e.ref([]),w=e.ref([]),q=e.reactive({name:"",protocols:ce,tags:"",service_id:"",...de,path_handling:"v0",regex_priority:0,expression:"",priority:0}),$=r.config.app==="konnect"||N.useGatewayFeatureSupported({gatewayInfo:r.config.gatewayInfo,supportedRange:{enterprise:["3.0"]}}),E=e.computed(()=>r.routeId?N.EntityBaseFormType.Edit:N.EntityBaseFormType.Create);E.value===N.EntityBaseFormType.Create&&(s.fields.name=`new-route-${new Date().toISOString().replace(/\D/g,"").slice(0,17)}`);const S=e.computed(()=>{var l,i,y;return(y=(i=oe.form[(l=r.config)==null?void 0:l.app])==null?void 0:i.fetch)==null?void 0:y[r.serviceId?"forGatewayService":"all"].replace(/{serviceId}/gi,r.serviceId||"")}),b=()=>{var l;p.push((l=r.config)==null?void 0:l.cancelRoute)},D=l=>{a("loading",l)},pe=l=>{a("error",l)},z=l=>Object.entries(l).map(i=>{var y;return{header:i[0],values:(y=i[1])==null?void 0:y.join()}}),K=l=>l.some(i=>s.fields.protocols.includes(i)),se=l=>{var y,C;if(r.routeId){const T=typeof l.expression=="string"&&l.expression.length>0?O.EXPRESSIONS:O.TRADITIONAL;_.value=T,Re(l)||(f.value="advanced")}(y=l==null?void 0:l.service)!=null&&y.id&&(s.fields.service_id=l.service.id),s.fields.name=(l==null?void 0:l.name)||"";const i=(l==null?void 0:l.tags)||[];s.fields.tags=(i==null?void 0:i.join(", "))||"",s.fields.preserve_host=typeof(l==null?void 0:l.preserve_host)>"u"?!1:l==null?void 0:l.preserve_host,s.fields.https_redirect_status_code=(l==null?void 0:l.https_redirect_status_code)||426,(C=l==null?void 0:l.protocols)!=null&&C.length&&(l.protocols.length>1?s.fields.protocols=l.protocols.join():s.fields.protocols=l.protocols[0]),s.fields.request_buffering=typeof(l==null?void 0:l.request_buffering)>"u"?!0:l==null?void 0:l.request_buffering,s.fields.response_buffering=typeof(l==null?void 0:l.response_buffering)>"u"?!0:l==null?void 0:l.response_buffering,s.fields.strip_path=typeof(l==null?void 0:l.strip_path)>"u"?!0:l==null?void 0:l.strip_path,he(s)&&(s.fields.regex_priority=(l==null?void 0:l.regex_priority)||0,s.fields.path_handling=(l==null?void 0:l.path_handling)||"v0",l!=null&&l.paths&&(s.fields.paths=l.paths),l!=null&&l.snis&&(s.fields.snis=l.snis),l!=null&&l.hosts&&(s.fields.hosts=l.hosts),l!=null&&l.methods&&(s.fields.methods=l.methods.filter(T=>Object.keys(v).includes(T)),g.value=l.methods.filter(T=>!Object.keys(v).includes(T)).map(T=>({label:T,value:T})),w.value=[...g.value]),l!=null&&l.headers&&(s.fields.headers=z(l.headers)),l!=null&&l.sources&&(s.fields.sources=l.sources),l!=null&&l.destinations&&(s.fields.destinations=l.destinations)),ge(s)&&(s.fields.expression=(l==null?void 0:l.expression)||"",s.fields.priority=(l==null?void 0:l.priority)||0),Object.assign(q,JSON.parse(JSON.stringify(s.fields)))},B=e.computed(()=>{switch(u.value){case O.TRADITIONAL:{if(he(s)){const l=s.fields.hosts?!!s.fields.hosts.filter(Boolean).length:null,i=s.fields.paths?!!s.fields.paths.filter(Boolean).length:null,y=s.fields.headers?s.fields.headers.some(({header:P})=>!!P):null,C=s.fields.snis?!!s.fields.snis.filter(Boolean).length:null,T=s.fields.destinations?s.fields.destinations.some(({ip:P,port:Y})=>!!P||!!Y):null,W=s.fields.sources?s.fields.sources.some(({ip:P,port:Y})=>!!P||!!Y):null,X=s.fields.methods?!!s.fields.methods.filter(Boolean).length:null;return!!s.fields.protocols&&(K(["http"])&&!!(l||X||i||y)||K(["https"])&&!!(l||X||i||y||C)||K(["grpc"])&&!!(l||i||y)||K(["grpcs","wss"])&&!!(l||i||y||C)||K(["udp","tls"])&&!!(T||W||C)||K(["tcp"])&&!!(T||W)||K(["tls_passthrough"])&&!!C||K(["ws"])&&!!(l||i||y))}break}case O.EXPRESSIONS:{if(ge(s))return s.fields.expression.length>0;break}}return!0}),ee=e.computed(()=>!Ee(s.fields,q)||!Ee(g.value,w.value)),J=e.computed(()=>{var i,y;let l=`${r.config.apiBaseUrl}${oe.form[r.config.app][E.value][r.serviceId?"forGatewayService":"all"]}`;return r.config.app==="konnect"&&(l=l.replace(/{controlPlaneId}/gi,((i=r.config)==null?void 0:i.controlPlaneId)||"")),l.replace(/\/{workspace}/gi,(y=r.config)!=null&&y.workspace?`/${r.config.workspace}`:"").replace(/{serviceId}/gi,r.serviceId||"").replace(/{id}/gi,r.routeId??"")});e.watch(()=>s.fields,()=>{a("model-updated",te.value)},{deep:!0});const te=e.computed(()=>{var l,i,y;return{...!r.hideNameField&&{name:s.fields.name||null},protocols:s.fields.protocols.split(","),tags:(i=(l=s.fields.tags.split(","))==null?void 0:l.map(C=>String(C||"").trim()))==null?void 0:i.filter(C=>C!==""),service:s.fields.service_id?{id:s.fields.service_id}:null,...(y=d.value)==null?void 0:y.payload}}),j=l=>{switch(u.value){case O.TRADITIONAL:{if(!("regex_priority"in l&&"path_handling"in l))return!1;break}case O.EXPRESSIONS:{if(!("priority"in l))return!1;break}}return"service"in l&&"tags"in l&&"protocols"in l},Q=async l=>{var y;const i=l&&j(l)?l:te.value;try{s.isReadonly=!0;let C;E.value==="create"?C=await h.post(J.value,i):E.value==="edit"&&(C=((y=r.config)==null?void 0:y.app)==="konnect"?await h.put(J.value,i):await h.patch(J.value,i)),se(C==null?void 0:C.data),a("update",C==null?void 0:C.data)}catch(C){s.errorMessage=I(C),a("error",C)}finally{s.isReadonly=!1}},{debouncedQueryChange:ne,loading:me,error:Se,loadItems:be,results:Te}=N.useDebouncedFilter(r.config,oe.form[r.config.app].services,void 0,{fetchedItemsKey:"data",searchKeys:["id","name"]}),_e=e.computed(()=>Se.value?m("errors.services.fetch"):""),ue=e.computed(()=>{var l;return(l=Te.value)==null?void 0:l.map(i=>({label:i.id,name:i.name,value:i.id}))});return e.onBeforeMount(async()=>{r.hideServiceField||await be(),r.serviceId&&(s.fields.service_id=r.serviceId)}),e.onMounted(()=>{a("model-updated",te.value)}),V({saveFormData:Q,payload:te}),e.provide("configType",f),(l,i)=>{const y=e.resolveComponent("KInput"),C=e.resolveComponent("KSelect");return e.openBlock(),e.createElementBlock("div",Nt,[e.createVNode(e.unref(N.EntityBaseForm),{"can-submit":B.value&&ee.value,config:t.config,"edit-id":t.routeId,"entity-type":e.unref(N.SupportedEntityType).Route,"error-message":s.errorMessage||_e.value,"fetch-url":S.value,"form-fields":te.value,"is-readonly":s.isReadonly,onCancel:b,"onFetch:error":pe,"onFetch:success":se,onLoading:D,onSubmit:Q},{"form-actions":e.withCtx(()=>[e.renderSlot(l.$slots,"form-actions",{canSubmit:B.value&&ee.value,cancel:b,submit:Q},void 0,!0)]),default:e.withCtx(()=>[e.createVNode(e.unref(N.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(y,{key:0,modelValue:s.fields.name,"onUpdate:modelValue":i[0]||(i[0]=T=>s.fields.name=T),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:s.isReadonly,type:"text"},null,8,["modelValue","label","placeholder","readonly"])),t.hideServiceField?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Vt,[e.createVNode(C,{modelValue:s.fields.service_id,"onUpdate:modelValue":i[1]||(i[1]=T=>s.fields.service_id=T),clearable:"","data-testid":"route-form-service-id",disabled:!!t.serviceId,"enable-filtering":"","filter-function":()=>!0,items:ue.value,label:e.unref(m)("form.fields.service_id.label"),loading:e.unref(me),placeholder:e.unref(m)("form.fields.service_id.placeholder"),readonly:s.isReadonly,"reuse-item-template":"",width:"100%",onQueryChange:e.unref(ne)},{loading:e.withCtx(()=>[e.createElementVNode("div",null,e.toDisplayString(e.unref(m)("actions.loading")),1)]),empty:e.withCtx(()=>[e.createElementVNode("div",It,e.toDisplayString(e.unref(m)("search.no_results")),1)]),"selected-item-template":e.withCtx(({item:T})=>[e.createTextVNode(e.toDisplayString(R(T)),1)]),"item-template":e.withCtx(({item:T})=>[e.createElementVNode("div",xt,[e.createElementVNode("span",Rt,e.toDisplayString(T.name),1),e.createElementVNode("span",wt,e.toDisplayString(T.value),1)])]),_:1},8,["modelValue","disabled","items","label","loading","placeholder","readonly","onQueryChange"])])),e.createVNode(y,{modelValue:s.fields.tags,"onUpdate:modelValue":i[2]||(i[2]=T=>s.fields.tags=T),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:s.isReadonly,type:"text"},null,8,["modelValue","help","label","placeholder","readonly"])]),_:1},8,["description","hide-info-header","title"]),e.createVNode(e.unref(N.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(xe,{"config-flavor":n.value,"onUpdate:configFlavor":i[3]||(i[3]=T=>n.value=T),"config-type":f.value,"onUpdate:configType":i[4]||(i[4]=T=>f.value=T),"custom-methods":g.value,"onUpdate:customMethods":i[5]||(i[5]=T=>g.value=T),fields:s.fields,"onUpdate:fields":i[6]||(i[6]=T=>s.fields=T),"is-ws-supported":e.unref($),protocols:s.fields.protocols,readonly:s.isReadonly,"record-flavor":_.value,"route-flavors":t.routeFlavors,"show-expressions-modal-entry":t.showExpressionsModalEntry,tooltips:t.configTabTooltips,onNotify:i[7]||(i[7]=T=>a("notify",T)),"onUpdate:payload":i[8]||(i[8]=T=>d.value=T),"onUpdate:protocols":i[9]||(i[9]=T=>s.fields.protocols=T)},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"]]),At={class:"kong-ui-entities-routes-list"},Ot={class:"button-row"},Dt={key:1},Mt={key:1},Ht={key:1},$t={class:"route-list-cell-expression"},Pt=U(e.defineComponent({__name:"RouteList",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t==null?void 0: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:V}){var l;const c=V,r=t,{i18n:{t:a,formatUnixTimeStamp:f}}=H.useI18n(),n=Ce.useRouter(),{axiosInstance:_}=N.useAxios((l=r.config)==null?void 0:l.axiosRequestConfig),{handleStateChange:u,hasRecords:m}=N.useTableState(()=>w.value),p=e.computed(()=>m.value&&r.config.app==="konnect"),h=e.computed(()=>!!r.config.serviceId),I=e.computed(()=>r.config.app!=="kongManager"||!!r.config.disableSorting),R={name:{label:a("routes.list.table_headers.name"),searchable:!0,sortable:!0,hidable:!1},protocols:{label:a("routes.list.table_headers.protocols"),searchable:!0},...!r.hideTraditionalColumns&&{hosts:{label:a("routes.list.table_headers.hosts"),searchable:!0},methods:{label:a("routes.list.table_headers.methods"),searchable:!0},paths:{label:a("routes.list.table_headers.paths"),searchable:!0}},...r.hasExpressionColumn&&{expression:{label:a("routes.list.table_headers.expression"),tooltip:!0}},tags:{label:a("routes.list.table_headers.tags"),sortable:!1},updated_at:{label:a("routes.list.table_headers.updated_at"),sortable:!0},created_at:{label:a("routes.list.table_headers.created_at"),sortable:!0}},s={columnVisibility:{created_at:!1}},d=R,g=e.computed(()=>{var y,C,T;let i=`${r.config.apiBaseUrl}${oe.list[r.config.app][r.config.serviceId?"forGatewayService":"all"]}`;return r.config.app==="konnect"&&(i=i.replace(/{controlPlaneId}/gi,((y=r.config)==null?void 0:y.controlPlaneId)||"")),i.replace(/\/{workspace}/gi,(C=r.config)!=null&&C.workspace?`/${r.config.workspace}`:"").replace(/{serviceId}/gi,((T=r.config)==null?void 0:T.serviceId)||"")}),w=e.ref(""),q=e.computed(()=>{const i=r.config.app==="konnect"||r.config.isExactMatch;if(i)return{isExactMatch:i,placeholder:a(`search.placeholder.${r.config.isExactMatch?"exact":r.config.app}`)};const{name:y,protocols:C,hosts:T,methods:W,paths:X,expression:P}=R,Y={name:y,protocols:C,hosts:T,methods:W,paths:X,...r.hasExpressionColumn&&{expression:P}};return{isExactMatch:i,fields:Y,schema:r.config.filterSchema}}),{fetcher:$,fetcherState:E,fetcherCacheKey:S}=N.useFetcher(e.computed(()=>({...r.config,cacheIdentifier:r.cacheIdentifier})),g),b=i=>i.headerKey==="expression"?{style:{maxWidth:"250px",overflowX:"hidden",textOverflow:"ellipsis"}}:{},D=()=>{w.value=""},pe=()=>{S.value++},z=e.ref(null),K=async(i,y)=>{if(!await y(i.id)){c("copy:error",{entity:i,field:"id",message:a("errors.copy")});return}c("copy:success",{entity:i,field:"id",message:a("copy.success",{val:i.id})})},se=async(i,y)=>{const C=JSON.stringify(i);if(!await y(C)){c("copy:error",{entity:i,message:a("errors.copy")});return}c("copy:success",{entity:i,message:a("copy.success_brief")})},B=async i=>{var C;await((C=r.canRetrieve)==null?void 0:C.call(r,i))&&n.push(r.config.getViewRoute(i.id))},ee=i=>({label:a("actions.view"),to:r.config.getViewRoute(i)}),J=i=>({label:a("actions.edit"),to:r.config.getEditRoute(i)}),te=i=>{if(r.config.getDebugRoute)return{label:a("actions.debugger"),to:r.config.getDebugRoute(i)}},j=e.ref(void 0),Q=e.ref(!1),ne=e.ref(!1),me=e.ref(""),Se=N.useDeleteUrlBuilder(r.config,g.value),be=i=>{j.value=i,Q.value=!0},Te=()=>{Q.value=!1},_e=async()=>{var i,y,C;if((i=j.value)!=null&&i.id){ne.value=!0;try{await _.delete(Se(j.value.id)),ne.value=!1,Q.value=!1,S.value++,c("delete:success",j.value)}catch(T){me.value=((C=(y=T.response)==null?void 0:y.data)==null?void 0:C.message)||T.message||a("errors.delete"),c("error",T)}finally{ne.value=!1}}};e.watch(E,i=>{var y,C,T;if(i.status===N.FetcherStatus.Error){z.value={title:a("errors.general")},(T=(C=(y=i.error)==null?void 0:y.response)==null?void 0:C.data)!=null&&T.message&&(z.value.message=i.error.response.data.message),c("error",i.error);return}z.value=null});const ue=e.ref({ctaPath:r.config.createRoute,ctaText:void 0,message:`${a("routes.list.empty_state.description")}${r.config.additionMessageForEmptyState?` ${r.config.additionMessageForEmptyState}`:""}`,title:a("routes.title")}),ae=e.ref(!1);return e.onBeforeMount(async()=>{ae.value=await r.canCreate(),ae.value&&(ue.value.title=a("routes.list.empty_state.title"),ue.value.ctaText=a("actions.create"))}),(i,y)=>{const C=e.resolveComponent("KButton"),T=e.resolveComponent("KEmptyState"),W=e.resolveComponent("KBadge"),X=e.resolveComponent("KTruncate"),P=e.resolveComponent("KDropdownItem"),Y=e.resolveComponent("KClipboardProvider");return e.openBlock(),e.createElementBlock("div",At,[e.createVNode(e.unref(N.EntityBaseTable),{"cache-identifier":t.cacheIdentifier,"cell-attributes":b,"default-table-preferences":s,"disable-sorting":I.value,"empty-state-options":ue.value,"enable-entity-actions":"","error-message":z.value,fetcher:e.unref($),"fetcher-cache-key":e.unref(S),"pagination-type":"offset","preferences-storage-key":"kong-ui-entities-routes-list",query:w.value,"table-headers":e.unref(d),title:t.title,"title-tag":t.titleTag,onClearSearchInput:D,"onClick:row":y[7]||(y[7]=k=>B(k)),onSort:pe,onState:e.unref(u)},e.createSlots({"toolbar-filter":e.withCtx(()=>[e.createVNode(e.unref(N.EntityFilter),{modelValue:w.value,"onUpdate:modelValue":y[0]||(y[0]=k=>w.value=k),config:q.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",Ot,[!h.value&&p.value?(e.openBlock(),e.createBlock(C,{key:0,appearance:"secondary",class:"open-learning-hub","data-testid":"routes-learn-more-button",icon:"",onClick:y[1]||(y[1]=k=>i.$emit("click:learn-more"))},{default:e.withCtx(()=>[e.createVNode(e.unref(G.BookIcon),{decorative:""})]),_:1})):e.createCommentVNode("",!0),e.createVNode(e.unref(N.PermissionsWrapper),{"auth-function":()=>t.canCreate()},{default:e.withCtx(()=>[e.createVNode(C,{appearance:"primary","data-testid":"toolbar-add-route",size:t.useActionOutside?"medium":"large",to:t.config.createRoute},{default:e.withCtx(()=>[e.createVNode(e.unref(G.AddIcon)),e.createTextVNode(" "+e.toDisplayString(e.unref(a)("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(X,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,A=>(e.openBlock(),e.createBlock(W,{key:A,appearance:"neutral",onClick:y[3]||(y[3]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(A),1)]),_:2},1024))),128))]),_:2},1024)]),hosts:e.withCtx(({rowValue:k})=>[(k==null?void 0:k.length)>0?(e.openBlock(),e.createBlock(X,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,A=>(e.openBlock(),e.createBlock(W,{key:A,appearance:"neutral",tooltip:A,"truncation-tooltip":"",onClick:y[4]||(y[4]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(A),1)]),_:2},1032,["tooltip"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",Dt,"-"))]),methods:e.withCtx(({rowValue:k})=>[(k==null?void 0:k.length)>0?(e.openBlock(),e.createBlock(X,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,A=>(e.openBlock(),e.createBlock(W,{key:A,appearance:Object.values(e.unref(we.BadgeMethodAppearances)).includes(A.toLowerCase())?A.toLowerCase():"custom",onClick:y[5]||(y[5]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(A),1)]),_:2},1032,["appearance"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",Mt,"-"))]),paths:e.withCtx(({rowValue:k})=>[(k==null?void 0:k.length)>0?(e.openBlock(),e.createBlock(X,{key:0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,A=>(e.openBlock(),e.createBlock(W,{key:A,appearance:"neutral",tooltip:A,"truncation-tooltip":"",onClick:y[6]||(y[6]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(A),1)]),_:2},1032,["tooltip"]))),128))]),_:2},1024)):(e.openBlock(),e.createElementBlock("span",Ht,"-"))]),tags:e.withCtx(({rowValue:k})=>[e.createVNode(e.unref(N.TableTags),{tags:k},null,8,["tags"])]),expression:e.withCtx(({rowValue:k})=>[e.createElementVNode("span",$t,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:A})=>[e.createTextVNode(e.toDisplayString(e.unref(f)(A??k.created_at)),1)]),actions:e.withCtx(({row:k})=>[e.createVNode(Y,null,{default:e.withCtx(({copyToClipboard:A})=>[e.createVNode(P,{"data-testid":"action-entity-copy-id",onClick:Lt=>K(k,A)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("actions.copy_id")),1)]),_:1},8,["onClick"])]),_:2},1024),e.createVNode(Y,null,{default:e.withCtx(({copyToClipboard:A})=>[e.createVNode(P,{"data-testid":"action-entity-copy-json",onClick:Lt=>se(k,A)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("actions.copy_json")),1)]),_:1},8,["onClick"])]),_:2},1024),t.copyCurlEnabled?(e.openBlock(),e.createBlock(P,{key:0,"data-testid":"action-entity-copy-curl",onClick:A=>c("click:copy-as-curl",k)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("actions.copy_curl")),1)]),_:1},8,["onClick"])):e.createCommentVNode("",!0),e.createVNode(e.unref(N.PermissionsWrapper),{"auth-function":()=>t.canRetrieve(k)},{default:e.withCtx(()=>[e.createVNode(P,{"data-testid":"action-entity-view","has-divider":"",item:ee(k.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(N.PermissionsWrapper),{"auth-function":()=>t.canDebug(k)},{default:e.withCtx(()=>[t.config.getDebugRoute?(e.openBlock(),e.createBlock(P,{key:0,"data-testid":"action-entity-debug",item:te(k.id)},null,8,["item"])):e.createCommentVNode("",!0)]),_:2},1032,["auth-function"]),e.createVNode(e.unref(N.PermissionsWrapper),{"auth-function":()=>t.canEdit(k)},{default:e.withCtx(()=>[e.createVNode(P,{"data-testid":"action-entity-edit",item:J(k.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(N.PermissionsWrapper),{"auth-function":()=>t.canDelete(k)},{default:e.withCtx(()=>[e.createVNode(P,{danger:"","data-testid":"action-entity-delete","has-divider":"",onClick:A=>be(k)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("actions.delete")),1)]),_:1},8,["onClick"])]),_:2},1032,["auth-function"])]),_:2},[!w.value&&t.config.app==="konnect"?{name:"empty-state",fn:e.withCtx(()=>{var k;return[e.createVNode(T,{"data-testid":t.config.serviceId?"nested-routes-entity-empty-state":"routes-entity-empty-state","icon-background":"",message:e.unref(a)("routes.list.empty_state_v2.description"),title:e.unref(a)("routes.list.empty_state_v2.title")},e.createSlots({icon:e.withCtx(()=>[e.createVNode(e.unref(G.ForwardIcon),{decorative:""})]),action:e.withCtx(()=>[ae.value?(e.openBlock(),e.createBlock(C,{key:0,"data-testid":"entity-create-button",to:t.config.createRoute},{default:e.withCtx(()=>[e.createVNode(e.unref(G.AddIcon),{decorative:""}),e.createTextVNode(" "+e.toDisplayString(e.unref(a)("routes.list.toolbar_actions.new_route")),1)]),_:1},8,["to"])):e.createCommentVNode("",!0),e.createVNode(C,{appearance:"secondary","data-testid":"entity-learn-more-button",onClick:y[2]||(y[2]=A=>i.$emit("click:learn-more"))},{default:e.withCtx(()=>[e.createVNode(e.unref(G.BookIcon),{decorative:""}),e.createTextVNode(" "+e.toDisplayString(e.unref(a)("routes.list.empty_state_v2.learn_more")),1)]),_:1})]),_:2},[(k=t.config)!=null&&k.isControlPlaneGroup?{name:"default",fn:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(a)("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(N.EntityDeleteModal),{"action-pending":ne.value,description:e.unref(a)("delete.description"),"entity-name":j.value&&(j.value.name||j.value.id),"entity-type":e.unref(N.EntityTypes).Route,error:me.value,title:e.unref(a)("delete.title"),visible:Q.value,onCancel:Te,onProceed:_e},null,8,["action-pending","description","entity-name","entity-type","error","title","visible"])])}}}),[["__scopeId","data-v-22006578"]]),Ut=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:V}){const{i18n:{t:c}}=H.useI18n(),r=t,a=e.useModel(t,"modelValue"),f=V,n=e.ref(!1),_=e.computed(()=>ie.PROTOCOL_TO_SCHEMA[r.protocol]),u=e.computed(()=>ie.HTTP_BASED_PROTOCOLS.includes(r.protocol??"")),m=e.computed(()=>{if(!(!r.showExpressionsModalEntry||u.value))return c("form.expression_playground.supported_protocols_hint",{protocols:ie.HTTP_BASED_PROTOCOLS.join(", ")})}),p=R=>{a.value=R,n.value=!1},h=R=>{f("notify",R)},I=()=>{u.value&&(n.value=!0)};return(R,s)=>{const d=e.resolveComponent("KTooltip");return e.openBlock(),e.createElementBlock(e.Fragment,null,[_.value!==void 0?(e.openBlock(),e.createBlock(e.unref(ie.ExpressionsEditor),{key:0,modelValue:a.value,"onUpdate:modelValue":s[0]||(s[0]=g=>a.value=g),schema:_.value},null,8,["modelValue","schema"])):e.createCommentVNode("",!0),e.createVNode(d,{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:I},[e.renderSlot(R.$slots,"default")],2)):e.createCommentVNode("",!0)]),_:3},8,["text"]),t.showExpressionsModalEntry&&u.value?(e.openBlock(),e.createBlock(e.unref(ie.RouterPlaygroundModal),{key:1,"initial-expression":a.value,"is-visible":n.value,onCancel:s[1]||(s[1]=g=>n.value=!1),onCommit:p,onNotify:h},null,8,["initial-expression","is-visible"])):e.createCommentVNode("",!0)],64)}}})},Symbol.toStringTag,{value:"Module"}));x.DEFAULT_PROTOCOL=ce,x.ExpressionsEditorState=Z,x.HTTP_REDIRECT_STATUS_CODES=ye,x.INITIAL_ROUTE_RULES_FIELDS=Ve,x.INITIAL_SHARED_ROUTE_RULES_FIELDS=de,x.INITIAL_TRADITIONAL_ROUTE_RULES_VALUES=M,x.Methods=v,x.PATH_HANDLING_OPTIONS=Ne,x.PROTOCOLS_TO_ROUTE_RULES=fe,x.RouteConfigCard=Me,x.RouteFlavor=O,x.RouteForm=Bt,x.RouteFormRulesComposer=xe,x.RouteList=Pt,x.RoutingRulesEntities=o,x.isDefinedByBasic=Re,x.stateHasExpressionsFlavor=ge,x.stateHasTraditionalFlavor=he,Object.defineProperty(x,Symbol.toStringTag,{value:"Module"})});
|